dsh-diary-memory 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +71 -15
  2. package/cordis.patch.yml +0 -1
  3. package/lib/bailian-client.js +8 -3
  4. package/lib/bailian-client.js.map +1 -1
  5. package/lib/client/choices.d.ts +53 -0
  6. package/lib/client/choices.js +51 -0
  7. package/lib/client/choices.js.map +1 -0
  8. package/lib/client/controller.d.ts +40 -0
  9. package/lib/client/controller.js +130 -0
  10. package/lib/client/controller.js.map +1 -0
  11. package/lib/client/index.d.ts +5 -0
  12. package/lib/client/index.js +19 -0
  13. package/lib/client/index.js.map +1 -0
  14. package/lib/client/page.d.ts +5 -0
  15. package/lib/client/page.js +24 -0
  16. package/lib/client/page.js.map +1 -0
  17. package/lib/client.js +430 -0
  18. package/lib/client.js.map +7 -0
  19. package/lib/config.d.ts +63 -1
  20. package/lib/config.js +33 -4
  21. package/lib/config.js.map +1 -1
  22. package/lib/diary-runtime.d.ts +10 -0
  23. package/lib/diary-runtime.js +65 -0
  24. package/lib/diary-runtime.js.map +1 -0
  25. package/lib/index.d.ts +3 -3
  26. package/lib/index.js +7 -2
  27. package/lib/index.js.map +1 -1
  28. package/lib/memory-store.d.ts +6 -3
  29. package/lib/memory-store.js +6 -3
  30. package/lib/memory-store.js.map +1 -1
  31. package/lib/model-parameters.d.ts +7 -0
  32. package/lib/model-parameters.js +38 -0
  33. package/lib/model-parameters.js.map +1 -0
  34. package/lib/orchestrator.js +4 -66
  35. package/lib/orchestrator.js.map +1 -1
  36. package/lib/retrieval-service.d.ts +12 -3
  37. package/lib/retrieval-service.js +25 -13
  38. package/lib/retrieval-service.js.map +1 -1
  39. package/lib/session-memory.d.ts +20 -0
  40. package/lib/session-memory.js +161 -0
  41. package/lib/session-memory.js.map +1 -0
  42. package/lib/session-selection.d.ts +1 -0
  43. package/lib/session-selection.js +6 -0
  44. package/lib/session-selection.js.map +1 -0
  45. package/lib/sqlite.d.ts +25 -0
  46. package/lib/sqlite.js +64 -0
  47. package/lib/sqlite.js.map +1 -0
  48. package/lib/tools.d.ts +1 -0
  49. package/lib/tools.js +3 -0
  50. package/lib/tools.js.map +1 -1
  51. package/package.json +140 -26
  52. package/src/bailian-client.ts +7 -3
  53. package/src/client/choices.ts +66 -0
  54. package/src/client/controller.ts +108 -0
  55. package/src/client/index.ts +26 -0
  56. package/src/client/page.tsx +100 -0
  57. package/src/config.ts +41 -4
  58. package/src/diary-runtime.ts +62 -0
  59. package/src/index.ts +11 -5
  60. package/src/memory-store.ts +10 -6
  61. package/src/model-parameters.ts +32 -0
  62. package/src/orchestrator.ts +4 -57
  63. package/src/retrieval-service.ts +27 -14
  64. package/src/session-memory.ts +151 -0
  65. package/src/session-selection.ts +4 -0
  66. package/src/sqlite.ts +78 -0
  67. package/src/tools.ts +4 -0
@@ -33,16 +33,25 @@ export interface RecallHit {
33
33
  score: number;
34
34
  }
35
35
  export declare class RetrievalService extends Service {
36
- readonly config: ResolvedConfig;
37
- readonly client: BailianClient;
38
36
  readonly store: MemoryStore;
39
37
  readonly lifetime: AbortController;
40
38
  private readonly jobs;
41
39
  private readonly recovery;
42
- constructor(ctx: Context, config: ResolvedConfig, dependencies?: {
40
+ private readonly configuration;
41
+ private readonly fixedClient?;
42
+ private cachedClient?;
43
+ constructor(ctx: Context, config: ResolvedConfig | (() => ResolvedConfig), dependencies?: {
43
44
  store?: MemoryStore;
44
45
  client?: BailianClient;
45
46
  });
47
+ get config(): ResolvedConfig;
48
+ get client(): BailianClient;
49
+ /** One operation keeps its route and vector space even if settings change in flight. */
50
+ snapshot(): {
51
+ config: ResolvedConfig;
52
+ client: BailianClient;
53
+ store: MemoryStore;
54
+ };
46
55
  initialize(): Promise<void>;
47
56
  stateOf(session: Session): DiaryProjectionState;
48
57
  track<T>(operation: () => Promise<T>): Promise<T>;
@@ -5,21 +5,32 @@ import { MemoryStore } from './memory-store.js';
5
5
  import { renderDiary } from './diary.js';
6
6
  import { diaryProjection } from './projection.js';
7
7
  export class RetrievalService extends Service {
8
- config;
9
- client;
10
8
  store;
11
9
  lifetime = new AbortController();
12
10
  jobs = new Set();
13
11
  recovery = new WeakMap();
12
+ configuration;
13
+ fixedClient;
14
+ cachedClient;
14
15
  constructor(ctx, config, dependencies = {}) {
15
16
  super(ctx, 'diaryMemory');
16
- this.config = config;
17
- this.store = dependencies.store ?? new MemoryStore(config.databasePath);
18
- this.client = dependencies.client ?? new BailianClient(config, { signal: this.lifetime.signal });
17
+ this.configuration = typeof config === 'function' ? config : () => config;
18
+ this.store = dependencies.store ?? new MemoryStore(this.config.databasePath);
19
+ this.fixedClient = dependencies.client;
19
20
  ctx.effect(() => () => this.dispose(), 'diaryMemory.lifecycle()');
20
21
  }
22
+ get config() { return this.configuration(); }
23
+ get client() { return this.snapshot().client; }
24
+ /** One operation keeps its route and vector space even if settings change in flight. */
25
+ snapshot() {
26
+ const config = this.config;
27
+ const key = JSON.stringify([config.apiKey, config.baseUrl, config.embeddingModel, config.embeddingDimensions, config.embeddingParameters, config.rerankModel, config.rerankParameters, config.timeoutMs, config.retries]);
28
+ if (!this.fixedClient && this.cachedClient?.key !== key)
29
+ this.cachedClient = { key, client: new BailianClient(config, { signal: this.lifetime.signal }) };
30
+ return { config, client: this.fixedClient ?? this.cachedClient.client, store: this.store };
31
+ }
21
32
  async initialize() {
22
- this.ctx.sessionProjections.register(diaryProjection);
33
+ await this.ctx.sessionProjections.register(diaryProjection);
23
34
  this.ctx.on('session/created', session => {
24
35
  void this.track(() => this.reconcile(session)).catch(() => this.ctx.logger.warn('日记恢复未完成;保留待提交记录,下次使用时重试'));
25
36
  });
@@ -53,25 +64,26 @@ export class RetrievalService extends Service {
53
64
  }
54
65
  recall(query, options = {}) {
55
66
  return this.track(async () => {
67
+ const { config, client } = this.snapshot();
56
68
  const text = query.trim();
57
69
  if (!text || text.length > 8000)
58
70
  throw new TypeError('recall query 必须为 1–8000 字符');
59
- const limit = options.limit ?? this.config.recallCount;
60
- if (!Number.isInteger(limit) || limit < 1 || limit > this.config.candidateCount)
71
+ const limit = options.limit ?? config.recallCount;
72
+ if (!Number.isInteger(limit) || limit < 1 || limit > config.candidateCount)
61
73
  throw new TypeError('recall limit 超出候选数量');
62
74
  const signal = AbortSignal.any([this.lifetime.signal, ...options.signal ? [options.signal] : []]);
63
75
  signal.throwIfAborted();
64
- const namespace = this.config.namespace;
65
- if (!this.store.count(namespace, this.client.embeddingKey)) {
76
+ const namespace = config.namespace;
77
+ if (!this.store.count(namespace, client.embeddingKey)) {
66
78
  if (this.store.count(namespace))
67
79
  throw new Error('已有日记使用不同的 embedding 模型、维度或端点,请使用原向量配置或重新索引');
68
80
  return [];
69
81
  }
70
- const vector = await this.client.embed(text, { textType: 'query', signal });
71
- const candidates = this.store.search(vector, { namespace, embeddingKey: this.client.embeddingKey, limit: this.config.candidateCount, sessionId: options.sessionId });
82
+ const vector = await client.embed(text, { textType: 'query', signal });
83
+ const candidates = this.store.search(vector, { namespace, embeddingKey: client.embeddingKey, limit: config.candidateCount, sessionId: options.sessionId });
72
84
  if (!candidates.length)
73
85
  return [];
74
- const ranking = await this.client.rerank(text, candidates.map(item => item.search_text), { topN: Math.min(limit, candidates.length), signal });
86
+ const ranking = await client.rerank(text, candidates.map(item => item.search_text), { topN: Math.min(limit, candidates.length), signal });
75
87
  signal.throwIfAborted();
76
88
  return ranking.map(item => {
77
89
  const match = candidates[item.index];
@@ -1 +1 @@
1
- {"version":3,"file":"retrieval-service.js","sourceRoot":"","sources":["../src/retrieval-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retrieval-service.js","sourceRoot":"","sources":["../src/retrieval-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { Agent } from '@deepseek-ai/dsh-agent';
3
+ import type { BasicCompactionEngine } from '@deepseek-ai/dsh-compaction-basic';
4
+ import type { RetrievalService } from './retrieval-service.js';
5
+ /** Route the existing native engine by Session, without rebinding its preset. */
6
+ export declare class SessionMemory {
7
+ private readonly ctx;
8
+ private readonly memory;
9
+ private readonly restorers;
10
+ private readonly operations;
11
+ private readonly jobs;
12
+ private readonly lifetime;
13
+ private closed;
14
+ private readonly recallScopes;
15
+ constructor(ctx: Context, memory: RetrievalService);
16
+ private selected;
17
+ attach(agent: Agent): BasicCompactionEngine | undefined;
18
+ private run;
19
+ dispose(): Promise<void>;
20
+ }
@@ -0,0 +1,161 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { symbols } from '@deepseek-ai/cordis';
3
+ import { selectRoundRange } from './diary.js';
4
+ import { appendRecalledContext, prepareDiarySummary } from './diary-runtime.js';
5
+ import { DiaryOrchestrator } from './orchestrator.js';
6
+ import { registerRecall } from './tools.js';
7
+ import { createScope, scopeOf } from '@deepseek-ai/dsh-scope';
8
+ /** Route the existing native engine by Session, without rebinding its preset. */
9
+ export class SessionMemory {
10
+ ctx;
11
+ memory;
12
+ restorers = new Map();
13
+ operations = new AsyncLocalStorage();
14
+ jobs = new Set();
15
+ lifetime = new AbortController();
16
+ closed = false;
17
+ recallScopes = new Map();
18
+ constructor(ctx, memory) {
19
+ this.ctx = ctx;
20
+ this.memory = memory;
21
+ ctx.effect(() => () => this.dispose(), 'diary-memory: existing sessions');
22
+ ctx.on('agent/created', async ({ agent }) => { this.attach(agent); });
23
+ ctx.on('agent/disposed', async ({ agent }) => {
24
+ const scope = this.recallScopes.get(agent);
25
+ this.recallScopes.delete(agent);
26
+ await scope?.dispose();
27
+ });
28
+ ctx.on('agent/pre-step', async ({ agent, messages, signal }, next) => {
29
+ const enabled = this.selected(agent);
30
+ const engine = this.attach(agent);
31
+ if (enabled && engine && !(engine instanceof DiaryOrchestrator) && !this.recallScopes.has(agent)) {
32
+ const key = scopeOf(agent.ctx);
33
+ if (!key)
34
+ throw new Error('指定会话缺少原生 Agent scope');
35
+ const scope = createScope(ctx, key);
36
+ registerRecall(scope.ctx);
37
+ this.recallScopes.set(agent, scope);
38
+ }
39
+ if (!enabled) {
40
+ const scope = this.recallScopes.get(agent);
41
+ this.recallScopes.delete(agent);
42
+ await scope?.dispose();
43
+ }
44
+ const decision = await next();
45
+ // The companion preset already owns its recall middleware.
46
+ if (!enabled || engine instanceof DiaryOrchestrator)
47
+ return decision;
48
+ return appendRecalledContext(ctx, memory, decision, messages, signal);
49
+ }, { prepend: true });
50
+ for (const agent of ctx.agents.list())
51
+ this.attach(agent);
52
+ }
53
+ selected(agent) { return !this.closed && this.memory.config.sessionIds.includes(agent.session.id); }
54
+ attach(agent) {
55
+ const provider = this.ctx.agentPresets.serviceFor(agent, 'compaction');
56
+ if (!provider) {
57
+ if (this.selected(agent))
58
+ throw new Error('指定会话的预设没有原生压缩器,无法接入日记记忆');
59
+ return undefined;
60
+ }
61
+ if (this.closed)
62
+ return provider;
63
+ // Cordis proxies expose their original instance through this public symbol.
64
+ const engine = (provider[symbols.original] ?? provider);
65
+ if (engine instanceof DiaryOrchestrator || this.restorers.has(engine))
66
+ return provider;
67
+ const descriptors = new Map();
68
+ const replacements = new Map();
69
+ const bridge = this;
70
+ const enabled = (owner) => {
71
+ const operation = bridge.operations.getStore();
72
+ return operation?.agent === owner ? operation.enabled : bridge.selected(owner);
73
+ };
74
+ const replace = (name, method) => {
75
+ descriptors.set(name, Object.getOwnPropertyDescriptor(engine, name));
76
+ replacements.set(name, method);
77
+ Object.defineProperty(engine, name, { configurable: true, writable: true, value: method });
78
+ };
79
+ const summarize = engine.summarize;
80
+ replace('summarize', function (input, owner, signal) {
81
+ if (!enabled(owner))
82
+ return summarize.call(this, input, owner, signal);
83
+ return prepareDiarySummary(this.ctx, bridge.memory, input, owner, AbortSignal.any([bridge.lifetime.signal, ...signal ? [signal] : []]));
84
+ });
85
+ const compactIfNeeded = engine.compactIfNeeded;
86
+ replace('compactIfNeeded', function (owner, trigger, signal) {
87
+ const selected = enabled(owner);
88
+ return bridge.run(owner, selected, async () => {
89
+ if (!selected)
90
+ return compactIfNeeded.call(this, owner, trigger, signal);
91
+ await bridge.memory.reconcile(owner.session);
92
+ signal.throwIfAborted();
93
+ const config = bridge.memory.config;
94
+ if (trigger === 'pressure' && bridge.memory.stateOf(owner.session).completedRounds >= config.compressionRounds) {
95
+ const range = selectRoundRange(owner.session, config.retainRounds);
96
+ if (range)
97
+ return this.compactRegion(range.start, range.end, owner, signal);
98
+ }
99
+ return compactIfNeeded.call(this, owner, trigger, signal);
100
+ });
101
+ });
102
+ const compactRegion = engine.compactRegion;
103
+ replace('compactRegion', function (start, end, owner, signal) {
104
+ const selected = enabled(owner);
105
+ return bridge.run(owner, selected, async () => {
106
+ if (!selected)
107
+ return compactRegion.call(this, start, end, owner, signal);
108
+ try {
109
+ return await compactRegion.call(this, start, end, owner, signal);
110
+ }
111
+ finally {
112
+ await bridge.memory.reconcile(owner.session);
113
+ }
114
+ });
115
+ });
116
+ const compactNow = engine.compactNow;
117
+ replace('compactNow', function (owner, signal, sourceCommandId) {
118
+ const selected = enabled(owner);
119
+ return bridge.run(owner, selected, async () => {
120
+ if (!selected)
121
+ return compactNow.call(this, owner, signal, sourceCommandId);
122
+ try {
123
+ return await compactNow.call(this, owner, signal, sourceCommandId);
124
+ }
125
+ finally {
126
+ await bridge.memory.reconcile(owner.session);
127
+ }
128
+ });
129
+ });
130
+ this.restorers.set(engine, () => {
131
+ for (const [name, descriptor] of descriptors) {
132
+ if (Object.getOwnPropertyDescriptor(engine, name)?.value !== replacements.get(name))
133
+ continue;
134
+ if (descriptor)
135
+ Object.defineProperty(engine, name, descriptor);
136
+ else
137
+ Reflect.deleteProperty(engine, name);
138
+ }
139
+ });
140
+ return provider;
141
+ }
142
+ run(agent, enabled, operation) {
143
+ const job = this.memory.track(() => this.operations.run({ agent, enabled }, operation));
144
+ this.jobs.add(job);
145
+ void job.then(() => this.jobs.delete(job), () => this.jobs.delete(job));
146
+ return job;
147
+ }
148
+ async dispose() {
149
+ if (this.closed)
150
+ return;
151
+ this.closed = true;
152
+ this.lifetime.abort(new Error('指定会话的日记记忆已关闭'));
153
+ await Promise.allSettled([...this.jobs]);
154
+ for (const restore of this.restorers.values())
155
+ restore();
156
+ this.restorers.clear();
157
+ await Promise.allSettled([...this.recallScopes.values()].map(scope => scope.dispose()));
158
+ this.recallScopes.clear();
159
+ }
160
+ }
161
+ //# sourceMappingURL=session-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-memory.js","sourceRoot":"","sources":["../src/session-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function validateSessionIds(value: unknown): string[];
@@ -0,0 +1,6 @@
1
+ export function validateSessionIds(value) {
2
+ if (!Array.isArray(value) || value.length > 1000 || value.some(id => typeof id !== 'string' || !id.length || id.length > 256 || /[\r\n\0]/.test(id)))
3
+ throw new Error('指定会话必须是至多 1000 个有效会话 ID 的数组');
4
+ return [...new Set(value)];
5
+ }
6
+ //# sourceMappingURL=session-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-selection.js","sourceRoot":"","sources":["../src/session-selection.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACpM,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAiB,CAAC,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { SQLInputValue } from 'node:sqlite';
2
+ export type SqliteDriver = 'auto' | 'builtin' | 'native';
3
+ export interface SqliteStatement {
4
+ run(...parameters: SQLInputValue[]): {
5
+ changes: number | bigint;
6
+ lastInsertRowid: number | bigint;
7
+ };
8
+ get(...parameters: SQLInputValue[]): Record<string, unknown> | undefined;
9
+ all(...parameters: SQLInputValue[]): Record<string, unknown>[];
10
+ iterate(...parameters: SQLInputValue[]): IterableIterator<Record<string, unknown>>;
11
+ }
12
+ export interface SqliteConnection {
13
+ readonly open: boolean;
14
+ exec(sql: string): unknown;
15
+ prepare(sql: string): SqliteStatement;
16
+ pragma(sql: string, options?: {
17
+ simple: boolean;
18
+ }): unknown;
19
+ transaction<T>(operation: () => T): () => T;
20
+ close(): unknown;
21
+ }
22
+ export declare function openDatabase(filename: string, driver?: SqliteDriver): {
23
+ db: SqliteConnection;
24
+ backend: 'better-sqlite3' | 'node:sqlite';
25
+ };
package/lib/sqlite.js ADDED
@@ -0,0 +1,64 @@
1
+ import { createRequire } from 'node:module';
2
+ const require = createRequire(import.meta.url);
3
+ /** Use the same SQLite file format without requiring an Electron-specific addon. */
4
+ function builtinDatabase(filename) {
5
+ const { DatabaseSync: Database } = require('node:sqlite');
6
+ const database = new Database(filename);
7
+ let open = true;
8
+ let transactionId = 0;
9
+ const normalize = (row) => row === undefined ? undefined
10
+ : Object.fromEntries(Object.entries(row).map(([key, value]) => [key, value instanceof Uint8Array ? Buffer.from(value) : value]));
11
+ return {
12
+ get open() { return open; },
13
+ exec: sql => database.exec(sql),
14
+ prepare(sql) {
15
+ const statement = database.prepare(sql);
16
+ return {
17
+ run: (...parameters) => statement.run(...parameters),
18
+ get: (...parameters) => normalize(statement.get(...parameters)),
19
+ all: (...parameters) => statement.all(...parameters).map(row => normalize(row)),
20
+ *iterate(...parameters) { for (const row of statement.iterate(...parameters))
21
+ yield normalize(row); },
22
+ };
23
+ },
24
+ pragma(sql, options) {
25
+ const rows = database.prepare(`PRAGMA ${sql}`).all();
26
+ return options?.simple ? Object.values(rows[0] ?? {})[0] : rows;
27
+ },
28
+ transaction: operation => () => {
29
+ // Savepoints also give nested synchronous operations rollback isolation.
30
+ const point = `diary_${++transactionId}`;
31
+ database.exec(`SAVEPOINT ${point}`);
32
+ try {
33
+ const result = operation();
34
+ if (result instanceof Promise)
35
+ throw new TypeError('SQLite 事务必须同步完成');
36
+ database.exec(`RELEASE ${point}`);
37
+ return result;
38
+ }
39
+ catch (error) {
40
+ database.exec(`ROLLBACK TO ${point}; RELEASE ${point}`);
41
+ throw error;
42
+ }
43
+ },
44
+ close() { database.close(); open = false; },
45
+ };
46
+ }
47
+ export function openDatabase(filename, driver = 'auto') {
48
+ if (driver !== 'builtin') {
49
+ try {
50
+ const Database = require('better-sqlite3');
51
+ return { db: new Database(filename), backend: 'better-sqlite3' };
52
+ }
53
+ catch (error) {
54
+ const failure = error;
55
+ const unavailable = failure.code === 'MODULE_NOT_FOUND' || failure.code === 'ERR_DLOPEN_FAILED'
56
+ || failure.message.startsWith('Could not locate the bindings file.');
57
+ // Disk, SQL, permission and corruption failures must never select another backend.
58
+ if (driver === 'native' || !unavailable)
59
+ throw error;
60
+ }
61
+ }
62
+ return { db: builtinDatabase(filename), backend: 'node:sqlite' };
63
+ }
64
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"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"}
package/lib/tools.d.ts CHANGED
@@ -3,3 +3,4 @@ export declare const name = "diary-recall";
3
3
  export declare const inject: string[];
4
4
  /** Model-visible read-only recall, scoped by the companion preset and namespace. */
5
5
  export declare function apply(ctx: Context): void;
6
+ export declare function registerRecall(ctx: Context): void;
package/lib/tools.js CHANGED
@@ -2,6 +2,9 @@ export const name = 'diary-recall';
2
2
  export const inject = ['tools', 'diaryMemory'];
3
3
  /** Model-visible read-only recall, scoped by the companion preset and namespace. */
4
4
  export function apply(ctx) {
5
+ registerRecall(ctx);
6
+ }
7
+ export function registerRecall(ctx) {
5
8
  ctx.tools.register({
6
9
  name: 'diary_recall',
7
10
  description: '想起我们之前的经历、称呼、偏好、情绪变化、约定或我自己的反思。输入自然语言,会检索历史日记并按相关性重排。日记中的主观感受和不确定解释不等于已确认事实。',
package/lib/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAA;AAClC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;AAE9C,oFAAoF;AACpF,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,8EAA8E;QAC3F,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAC1J,MAAM,EAAE;YACN,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE;YACnL,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;SAC1E;QACD,KAAK,CAAC,OAAO,CAAC,IAAuB,EAAE,SAAS;YAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAA;QAC7F,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAA;AAClC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;AAE9C,oFAAoF;AACpF,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,cAAc,CAAC,GAAG,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,8EAA8E;QAC3F,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAC1J,MAAM,EAAE;YACN,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE;YACnL,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;SAC1E;QACD,KAAK,CAAC,OAAO,CAAC,IAAuB,EAAE,SAAS;YAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAA;QAC7F,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}