@coralai/sps-cli 0.90.0 → 0.90.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,15 @@ export interface ClaudeSdkBackendOpts {
3
3
  model: string;
4
4
  cwd: string;
5
5
  project: string;
6
+ /**
7
+ * 要注入这个 worker 的 Claude Code 插件目录(绝对路径)。
8
+ *
9
+ * 🔴 **claude 专属**,所以只出现在 claude 适配器的 opts 里,不进中立的
10
+ * `AgentBackend` 契约 —— openai/codex 没有对应概念,它们要等价能力时
11
+ * 各自在自己的适配器里解决。
12
+ * ⚠️ 由调用方从 `sps.memory` 之类的 seam 取;适配器只负责递给 SDK,不解析目录内容。
13
+ */
14
+ claudePlugins?: string[];
6
15
  }
7
16
  export declare class ClaudeSdkBackend implements AgentBackend {
8
17
  private readonly opts;
@@ -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;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;IAkC7C,2CAA2C;IAC3C,OAAO,CAAC,SAAS;IA0BX,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
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;IAChB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;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;IAuC7C,2CAA2C;IAC3C,OAAO,CAAC,SAAS;IA0BX,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
@@ -64,6 +64,11 @@ export class ClaudeSdkBackend {
64
64
  // 2026-08-27 实测:不传 ⇒ 插件表里多出一个用户级插件;给 `['local']` 或 `[]` ⇒ 干净。
65
65
  // `'project'` 是加载 CLAUDE.md 的必要条件,`'local'` 是 settings.local.json(模型/端点)。
66
66
  settingSources: ['project', 'local'],
67
+ // 后端自带的 claude 插件(hooks 做自动召回)。**没有就不传这个参数** ——
68
+ // 关掉记忆时零残留,不需要去任何目录里卸载。
69
+ ...(this.opts.claudePlugins?.length
70
+ ? { plugins: this.opts.claudePlugins.map((path) => ({ type: 'local', path })) }
71
+ : {}),
67
72
  // claude 自带编码工具;SPS 专属能力经共享 MCP(stdio)挂载。
68
73
  mcpServers: { sps: { type: 'stdio', command: sps.command, args: sps.args } },
69
74
  },
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeSdkBackend.js","sourceRoot":"","sources":["../../../src/core/agents/ClaudeSdkBackend.ts"],"names":[],"mappings":"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"}
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":"index.d.ts","sourceRoot":"","sources":["../../../src/seams/agents-builtin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,OAAO,EAAW,MAAM,qBAAqB,CAAC;AAO5D,6CAA6C;AAC7C,eAAO,MAAM,QAAQ,uBAAa,CAAC;AACnC,eAAO,MAAM,WAAW,uGAC2C,CAAC;AAgEpE,eAAO,MAAM,IAAI,uBAAuB,CAAC;AACzC,eAAO,MAAM,MAAM,UAAW,CAAC;AAE/B,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAKxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/seams/agents-builtin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,OAAO,EAAW,MAAM,qBAAqB,CAAC;AAQ5D,6CAA6C;AAC7C,eAAO,MAAM,QAAQ,uBAAa,CAAC;AACnC,eAAO,MAAM,WAAW,uGAC2C,CAAC;AA8EpE,eAAO,MAAM,IAAI,uBAAuB,CAAC;AACzC,eAAO,MAAM,MAAM,UAAW,CAAC;AAE/B,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAKxC"}
@@ -2,69 +2,84 @@ import { ClaudeSdkBackend } from '../../core/agents/ClaudeSdkBackend.js';
2
2
  import { DaemonBackend } from '../../core/agents/DaemonBackend.js';
3
3
  import { OpenAiAgentBackend } from '../../core/agents/OpenAiAgentBackend.js';
4
4
  import { AGENTS } from '../agents/index.js';
5
+ import { memoryOf } from '../memory/optional.js';
5
6
  /** 插件页展示用。**由插件自己声明** —— 前端写死的表对第三方永远是空的。 */
6
7
  export const category = 'Agent 后端';
7
8
  export const description = '内建四个后端:claude-sdk / claude-daemon / openai-sdk / openai-daemon。';
8
- const BUILTIN = [
9
- {
10
- id: 'claude-daemon',
11
- summary: '人才市场:委托共享 daemon(与 chat 同宿主,统一并发/监控)',
12
- create: (ctx) => new DaemonBackend({
13
- backend: 'claude',
14
- sessionName: ctx.sessionName,
15
- cwd: ctx.cwd,
16
- project: ctx.project,
17
- resumeSessionId: ctx.resumeSessionId,
18
- extraEnv: ctx.extraEnv,
19
- }),
20
- },
21
- {
22
- id: 'openai-daemon',
23
- summary: 'openai/codex 走共享 daemon;provider 传输按 providerId 推导',
24
- create: (ctx) => {
25
- const providerId = ctx.providerId ?? 'official';
26
- const transport = ctx.providerTransport ??
27
- (providerId === 'codex'
28
- ? 'codex'
29
- : providerId === 'official'
30
- ? 'responses'
31
- : 'chat_completions');
32
- return new DaemonBackend({
33
- backend: 'openai',
9
+ /**
10
+ * 🔴 收 `host`(Cordis ctx)而不是模块级常量:`claude-sdk` 要问 `sps.memory`
11
+ * 有没有自带的 claude 插件目录,而 `BackendCtx` 里没有装配上下文 ——
12
+ * 加到 `BackendCtx` 上会把一个 claude 专属的需要摊给所有后端。
13
+ */
14
+ function builtins(host) {
15
+ return [
16
+ {
17
+ id: 'claude-daemon',
18
+ summary: '人才市场:委托共享 daemon(与 chat 同宿主,统一并发/监控)',
19
+ create: (ctx) => new DaemonBackend({
20
+ backend: 'claude',
34
21
  sessionName: ctx.sessionName,
35
22
  cwd: ctx.cwd,
36
23
  project: ctx.project,
37
24
  resumeSessionId: ctx.resumeSessionId,
38
25
  extraEnv: ctx.extraEnv,
39
- provider: {
40
- providerId,
41
- model: ctx.modelName,
42
- transport,
43
- ...(ctx.providerBaseUrl ? { baseUrl: ctx.providerBaseUrl } : {}),
44
- },
45
- });
26
+ }),
46
27
  },
47
- },
48
- {
49
- id: 'openai-sdk',
50
- summary: '进程内 @openai/agents SDK',
51
- create: (ctx) => new OpenAiAgentBackend({
52
- model: ctx.makeModel(),
53
- cwd: ctx.cwd,
54
- project: ctx.project,
55
- sessionFile: ctx.sessionFile,
56
- }),
57
- },
58
- {
59
- id: 'claude-sdk',
60
- summary: '进程内 claude-agent-sdk',
61
- create: (ctx) => new ClaudeSdkBackend({ model: ctx.modelName, cwd: ctx.cwd, project: ctx.project }),
62
- },
63
- ];
28
+ {
29
+ id: 'openai-daemon',
30
+ summary: 'openai/codex 走共享 daemon;provider 传输按 providerId 推导',
31
+ create: (ctx) => {
32
+ const providerId = ctx.providerId ?? 'official';
33
+ const transport = ctx.providerTransport ??
34
+ (providerId === 'codex'
35
+ ? 'codex'
36
+ : providerId === 'official'
37
+ ? 'responses'
38
+ : 'chat_completions');
39
+ return new DaemonBackend({
40
+ backend: 'openai',
41
+ sessionName: ctx.sessionName,
42
+ cwd: ctx.cwd,
43
+ project: ctx.project,
44
+ resumeSessionId: ctx.resumeSessionId,
45
+ extraEnv: ctx.extraEnv,
46
+ provider: {
47
+ providerId,
48
+ model: ctx.modelName,
49
+ transport,
50
+ ...(ctx.providerBaseUrl ? { baseUrl: ctx.providerBaseUrl } : {}),
51
+ },
52
+ });
53
+ },
54
+ },
55
+ {
56
+ id: 'openai-sdk',
57
+ summary: '进程内 @openai/agents SDK',
58
+ create: (ctx) => new OpenAiAgentBackend({
59
+ model: ctx.makeModel(),
60
+ cwd: ctx.cwd,
61
+ project: ctx.project,
62
+ sessionFile: ctx.sessionFile,
63
+ }),
64
+ },
65
+ {
66
+ id: 'claude-sdk',
67
+ summary: '进程内 claude-agent-sdk',
68
+ create: (bctx) => new ClaudeSdkBackend({
69
+ model: bctx.modelName,
70
+ cwd: bctx.cwd,
71
+ project: bctx.project,
72
+ // 记忆后端可自带一个 claude 插件(hooks 做自动召回)。
73
+ // 🔴 没装记忆插件 ⇒ `[]` ⇒ 不传 plugins 参数 ⇒ 零残留。
74
+ claudePlugins: memoryOf(host)?.workerPlugins() ?? [],
75
+ }),
76
+ },
77
+ ];
78
+ }
64
79
  export const name = 'sps-agents-builtin';
65
80
  export const inject = [AGENTS];
66
81
  export function apply(ctx) {
67
- for (const f of BUILTIN) {
82
+ for (const f of builtins(ctx)) {
68
83
  // effect 作用域:插件卸载时这些后端跟着注销,不会留下"注册着但代码已不在"的条目。
69
84
  ctx.effect(() => ctx[AGENTS].register(f));
70
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/seams/agents-builtin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/seams/agents-builtin/index.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,14 @@ export declare abstract class MemorySeam extends Service {
89
89
  project?: string;
90
90
  all?: boolean;
91
91
  }): MemoryMigrateStats;
92
+ /**
93
+ * 要注入 worker 的 Claude Code 插件目录(绝对路径)。默认没有。
94
+ *
95
+ * 🔴 宿主**只拿路径,不解析目录内容** —— hooks.json / .mcp.json 是
96
+ * claude 运行时的格式,和"sps 不解析 claude transcript"同源:
97
+ * 一旦宿主开始读它,换个 claude 版本就要跟着改。
98
+ */
99
+ workerPlugins(): string[];
92
100
  promoteEntry(from: ScopeRef, id: string, to: ScopeRef, opts: {
93
101
  move?: boolean;
94
102
  }): MemoryEntry | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/seams/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,eAAe,IAAI,SAAS,EAClC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEpF,yCAAyC;AACzC,eAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8BAAsB,UAAW,SAAQ,OAAO;gBAClC,GAAG,EAAE,OAAO;IASxB,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAEzF,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,EAAE;IAClD,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IACjE,QAAQ,CAAC,aAAa,IAAI,QAAQ,EAAE;IAEpC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW;IAChE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxD;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAE3C;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE7B;;;OAGG;IACH;;;OAGG;IACH,YAAY,IAAI,IAAI;IAQpB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAM;IAE5D,uCAAuC;IACvC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1C,gDAAgD;IAChD,OAAO,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,kBAAkB;IAIzE,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,WAAW,GAAG,IAAI;CAerG;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,YAAY,EAAE,UAAU,CAAC;KAC1B;CACF;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAKrE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/seams/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,eAAe,IAAI,SAAS,EAClC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEpF,yCAAyC;AACzC,eAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8BAAsB,UAAW,SAAQ,OAAO;gBAClC,GAAG,EAAE,OAAO;IASxB,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAEzF,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,EAAE;IAClD,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IACjE,QAAQ,CAAC,aAAa,IAAI,QAAQ,EAAE;IAEpC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW;IAChE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxD;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAE3C;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE7B;;;OAGG;IACH;;;OAGG;IACH,YAAY,IAAI,IAAI;IAQpB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAM;IAE5D,uCAAuC;IACvC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1C,gDAAgD;IAChD,OAAO,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,kBAAkB;IAIzE;;;;;;OAMG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,WAAW,GAAG,IAAI;CAerG;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,YAAY,EAAE,UAAU,CAAC;KAC1B;CACF;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAKrE"}
@@ -84,6 +84,16 @@ export class MemorySeam extends Service {
84
84
  migrate(_target) {
85
85
  return {};
86
86
  }
87
+ /**
88
+ * 要注入 worker 的 Claude Code 插件目录(绝对路径)。默认没有。
89
+ *
90
+ * 🔴 宿主**只拿路径,不解析目录内容** —— hooks.json / .mcp.json 是
91
+ * claude 运行时的格式,和"sps 不解析 claude transcript"同源:
92
+ * 一旦宿主开始读它,换个 claude 版本就要跟着改。
93
+ */
94
+ workerPlugins() {
95
+ return [];
96
+ }
87
97
  promoteEntry(from, id, to, opts) {
88
98
  const e = this.readEntry(from, id);
89
99
  if (!e)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/seams/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,oBAAoB,GAIrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAgB,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG5D,yCAAyC;AACzC,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAQnC,MAAM,OAAgB,UAAW,SAAQ,OAAO;IAC9C,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrB,CAAC;IAiBD,+CAA+C;IAE/C;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,IAAc,EAAE,GAAW,IAAS,CAAC;IAE9C;;;OAGG;IACH,OAAO,CAAC,IAAc,IAAS,CAAC;IAEhC;;;OAGG;IACH;;;OAGG;IACH,YAAY,KAAU,CAAC;IAEvB,iBAAiB;IACjB,EAAE;IACF,gDAAgD;IAChD,2CAA2C;IAC3C,wBAAwB;IAExB,yBAAyB;IAChB,QAAQ,GAAwC,EAAE,CAAC;IAE5D,uCAAuC;IACvC,EAAE,CAAC,IAAc;QACf,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,gDAAgD;IAChD,OAAO,CAAC,OAA4C;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,YAAY,CAAC,IAAc,EAAE,EAAU,EAAE,EAAY,EAAE,IAAwB;QAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,IAAK,GAA0B,CAAC,IAAI,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IAC3E,MAAM,CAAC,GAAI,GAA6B,CAAC,OAAO,CAAC;IACjD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/seams/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,oBAAoB,GAIrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAgB,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG5D,yCAAyC;AACzC,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAQnC,MAAM,OAAgB,UAAW,SAAQ,OAAO;IAC9C,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrB,CAAC;IAiBD,+CAA+C;IAE/C;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,IAAc,EAAE,GAAW,IAAS,CAAC;IAE9C;;;OAGG;IACH,OAAO,CAAC,IAAc,IAAS,CAAC;IAEhC;;;OAGG;IACH;;;OAGG;IACH,YAAY,KAAU,CAAC;IAEvB,iBAAiB;IACjB,EAAE;IACF,gDAAgD;IAChD,2CAA2C;IAC3C,wBAAwB;IAExB,yBAAyB;IAChB,QAAQ,GAAwC,EAAE,CAAC;IAE5D,uCAAuC;IACvC,EAAE,CAAC,IAAc;QACf,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,gDAAgD;IAChD,OAAO,CAAC,OAA4C;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACH,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,YAAY,CAAC,IAAc,EAAE,EAAU,EAAE,EAAY,EAAE,IAAwB;QAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,IAAK,GAA0B,CAAC,IAAI,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IAC3E,MAAM,CAAC,GAAI,GAA6B,CAAC,OAAO,CAAC;IACjD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9D,CAAC"}
@@ -13,6 +13,11 @@
13
13
  * 而不声明 inject 直接读未注册的服务 ⇒ 返回 `undefined`,不抛错(实测)。
14
14
  * ⇒ 可选能力只能走"运行时探测",这个文件就是那道统一的探测口。
15
15
  *
16
+ * 🔴 **要惰性读,别在 apply 里读一次存起来。** 可选能力不声明 inject,
17
+ * 而 Cordis 不保证两个无依赖关系的插件谁先装 —— apply 时记忆可能还没到。
18
+ * 正确做法是在**真正要用的那一刻**调 `memoryOf()`(如后端工厂的 `create` 里),
19
+ * 那时装配早已完成。
20
+ *
16
21
  * 🔴 **别在调用点各写各的判断** —— 那是"靠每个消费方记得",本仓为这种形状
17
22
  * 付过多次代价。要么走 `memoryOf()` 拿到 null 后显式处理,
18
23
  * 要么走 `withMemory()` 表达"没有就跳过"。
@@ -1 +1 @@
1
- {"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../../../src/seams/memory/optional.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAE9D;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAI3F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAE5E"}
1
+ {"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../../../src/seams/memory/optional.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAQ9D;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAI3F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAE5E"}
@@ -7,7 +7,13 @@ import { buildMemoryInjection } from '../../core/memory2/inject.js';
7
7
  * 需要区分的调用点自己问 `enabled()`。
8
8
  */
9
9
  export function memoryOf(app) {
10
- return app['sps.memory'] ?? null;
10
+ // 🔴 必须走 `reflect.get` —— 直接 `app['sps.memory']` 在**插件的 apply 上下文**里
11
+ // 会抛 `cannot get property "sps.memory" without inject`。
12
+ // (在根 ctx 上读只是返回 undefined,所以只在插件里踩得到:
13
+ // 2026-08-27 实测,单元测试全绿而 agents-builtin 一装就炸。)
14
+ // reflect.get 的原话是 "Read a service from the store without the inject
15
+ // requirement" —— 这正是"可选能力"需要的读法。
16
+ return app.reflect.get('sps.memory') ?? null;
11
17
  }
12
18
  /** 记忆可用(装了 **且** 后端自己没关)时才做事;否则返回 `undefined`。 */
13
19
  export function withMemory(app, fn) {
@@ -1 +1 @@
1
- {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../../src/seams/memory/optional.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIpE;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAkB;IACzC,OAAQ,GAAyD,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;AAC1F,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,UAAU,CAAI,GAAkB,EAAE,EAA0B;IAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAkB,EAAE,IAAgB;IAClE,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../../src/seams/memory/optional.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIpE;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAkB;IACzC,qEAAqE;IACrE,2DAA2D;IAC3D,0CAA0C;IAC1C,kDAAkD;IAClD,wEAAwE;IACxE,qCAAqC;IACrC,OAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAA4B,IAAI,IAAI,CAAC;AAC3E,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,UAAU,CAAI,GAAkB,EAAE,EAA0B;IAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAkB,EAAE,IAAgB;IAClE,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACrE,CAAC"}
@@ -2,7 +2,7 @@
2
2
  title: 命令说明
3
3
  generated: true
4
4
  source: sps --help
5
- version: 0.90.0
5
+ version: 0.90.1
6
6
  ---
7
7
 
8
8
  # 命令说明
@@ -11,7 +11,7 @@ version: 0.90.0
11
11
  > 改命令说明请改命令自己的 help 文本,然后跑 `npm run gen:help`。
12
12
  > 门禁 `check:help` 会在两者不一致时报红。
13
13
 
14
- 当前版本 `0.90.0` 共 **27** 个命令。
14
+ 当前版本 `0.90.1` 共 **27** 个命令。
15
15
 
16
16
  ### `sps agent`
17
17
 
@@ -2,7 +2,7 @@
2
2
  title: 开放 API
3
3
  generated: true
4
4
  source: src/console/routes/*.ts
5
- version: 0.90.0
5
+ version: 0.90.1
6
6
  ---
7
7
 
8
8
  # 开放 API
@@ -10,7 +10,7 @@ version: 0.90.0
10
10
  > ⚠️ **本页由 `scripts/gen-help-api.mjs` 从路由代码扫出,不要手改。**
11
11
  > 门禁 `check:help` 会在代码与本页不一致时报红。
12
12
 
13
- 共 **175** 条路由(其中 110 条尚无说明)。版本 `0.90.0`。
13
+ 共 **175** 条路由(其中 110 条尚无说明)。版本 `0.90.1`。
14
14
 
15
15
  > ℹ️ 口径:这里**逐条列**(同一路径的不同方法算两条)。门禁 `check:api-docs` 报的是
16
16
  > **归一去重后的唯一路径数**,两个数字不相等是正常的 —— 别拿它们互相"对账"。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coralai/sps-cli",
3
- "version": "0.90.0",
3
+ "version": "0.90.1",
4
4
  "description": "SPS CLI — AI-driven development pipeline orchestrator",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",
@@ -82,7 +82,7 @@
82
82
  "dependencies": {
83
83
  "@anthropic-ai/claude-agent-sdk": "^0.3.196",
84
84
  "@colbymchenry/codegraph": "^1.2.0",
85
- "@coralai/sps-plugin-api": "^0.11.0",
85
+ "@coralai/sps-plugin-api": "^0.12.0",
86
86
  "@deepseek-ai/cordis": "^4.0.1",
87
87
  "@deepseek-ai/cordis-plugin-include": "^1.0.6",
88
88
  "@deepseek-ai/cordis-plugin-loader": "^1.0.2",