@mrc2204/agent-smart-memo 4.0.9 → 4.0.11

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 (37) hide show
  1. package/dist/config.js +2 -2
  2. package/dist/config.js.map +1 -1
  3. package/dist/hooks/auto-capture.d.ts.map +1 -1
  4. package/dist/hooks/auto-capture.js +19 -34
  5. package/dist/hooks/auto-capture.js.map +1 -1
  6. package/dist/hooks/auto-recall.d.ts.map +1 -1
  7. package/dist/hooks/auto-recall.js +16 -8
  8. package/dist/hooks/auto-recall.js.map +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +39 -4
  11. package/dist/index.js.map +1 -1
  12. package/dist/services/embedding-capability-registry.d.ts +23 -0
  13. package/dist/services/embedding-capability-registry.d.ts.map +1 -0
  14. package/dist/services/embedding-capability-registry.js +56 -0
  15. package/dist/services/embedding-capability-registry.js.map +1 -0
  16. package/dist/services/embedding.d.ts +30 -11
  17. package/dist/services/embedding.d.ts.map +1 -1
  18. package/dist/services/embedding.js +316 -87
  19. package/dist/services/embedding.js.map +1 -1
  20. package/dist/services/llm-extractor.d.ts.map +1 -1
  21. package/dist/services/llm-extractor.js +7 -3
  22. package/dist/services/llm-extractor.js.map +1 -1
  23. package/dist/services/qdrant.d.ts +6 -4
  24. package/dist/services/qdrant.d.ts.map +1 -1
  25. package/dist/services/qdrant.js +43 -8
  26. package/dist/services/qdrant.js.map +1 -1
  27. package/dist/shared/memory-config.d.ts +30 -74
  28. package/dist/shared/memory-config.d.ts.map +1 -1
  29. package/dist/shared/memory-config.js +129 -134
  30. package/dist/shared/memory-config.js.map +1 -1
  31. package/dist/tools/memory_search.d.ts.map +1 -1
  32. package/dist/tools/memory_search.js +16 -3
  33. package/dist/tools/memory_search.js.map +1 -1
  34. package/dist/tools/memory_store.d.ts.map +1 -1
  35. package/dist/tools/memory_store.js +26 -5
  36. package/dist/tools/memory_store.js.map +1 -1
  37. package/package.json +7 -4
@@ -0,0 +1,23 @@
1
+ export type CapabilitySource = "docs" | "probe" | "error-feedback";
2
+ export interface EmbeddingModelCapability {
3
+ seedMaxTokens: number;
4
+ discoveredMaxTokens: number;
5
+ safeRatio: number;
6
+ reserveTokens: number;
7
+ vectorDim: number;
8
+ updatedAt: string;
9
+ source: CapabilitySource;
10
+ }
11
+ export declare class EmbeddingCapabilityRegistry {
12
+ private readonly filePath;
13
+ private readonly logger;
14
+ private loaded;
15
+ private data;
16
+ constructor(stateDir: string, logger?: any);
17
+ getPath(): string;
18
+ load(): Promise<void>;
19
+ get(modelKey: string): Promise<EmbeddingModelCapability | null>;
20
+ set(modelKey: string, capability: EmbeddingModelCapability): Promise<void>;
21
+ private persist;
22
+ }
23
+ //# sourceMappingURL=embedding-capability-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-capability-registry.d.ts","sourceRoot":"","sources":["../../src/services/embedding-capability-registry.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAEnE,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAYD,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAM;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAA6C;gBAE7C,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG;IAK1C,OAAO,IAAI,MAAM;IAIX,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAK/D,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;YAMlE,OAAO;CAQtB"}
@@ -0,0 +1,56 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ const EMPTY_REGISTRY = {
4
+ version: 1,
5
+ capabilities: {},
6
+ };
7
+ export class EmbeddingCapabilityRegistry {
8
+ filePath;
9
+ logger;
10
+ loaded = false;
11
+ data = { ...EMPTY_REGISTRY };
12
+ constructor(stateDir, logger) {
13
+ this.filePath = join(stateDir, "plugin-data", "agent-smart-memo", "embedding-capabilities.json");
14
+ this.logger = logger || console;
15
+ }
16
+ getPath() {
17
+ return this.filePath;
18
+ }
19
+ async load() {
20
+ if (this.loaded)
21
+ return;
22
+ try {
23
+ const raw = await readFile(this.filePath, "utf8");
24
+ const parsed = JSON.parse(raw);
25
+ if (parsed && parsed.version === 1 && parsed.capabilities && typeof parsed.capabilities === "object") {
26
+ this.data = parsed;
27
+ }
28
+ else {
29
+ this.data = { ...EMPTY_REGISTRY };
30
+ }
31
+ }
32
+ catch {
33
+ this.data = { ...EMPTY_REGISTRY };
34
+ }
35
+ this.loaded = true;
36
+ }
37
+ async get(modelKey) {
38
+ await this.load();
39
+ return this.data.capabilities[modelKey] || null;
40
+ }
41
+ async set(modelKey, capability) {
42
+ await this.load();
43
+ this.data.capabilities[modelKey] = capability;
44
+ await this.persist();
45
+ }
46
+ async persist() {
47
+ try {
48
+ await mkdir(dirname(this.filePath), { recursive: true });
49
+ await writeFile(this.filePath, JSON.stringify(this.data, null, 2), "utf8");
50
+ }
51
+ catch (error) {
52
+ this.logger.warn?.(`[EmbeddingCapabilityRegistry] persist failed: ${error.message}`);
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=embedding-capability-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-capability-registry.js","sourceRoot":"","sources":["../../src/services/embedding-capability-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAmB1C,MAAM,cAAc,GAAuB;IACzC,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,OAAO,2BAA2B;IACrB,QAAQ,CAAS;IACjB,MAAM,CAAM;IACrB,MAAM,GAAG,KAAK,CAAC;IACf,IAAI,GAAuB,EAAE,GAAG,cAAc,EAAE,CAAC;IAEzD,YAAY,QAAgB,EAAE,MAAY;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;QACjG,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC;IAClC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;YACrD,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAgB;QACxB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAgB,EAAE,UAAoC;QAC9D,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;QAC9C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,iDAAiD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;CACF"}
@@ -1,44 +1,66 @@
1
+ import { type CapabilitySource } from "./embedding-capability-registry.js";
1
2
  export interface EmbeddingMetadata {
2
3
  embedding_chunked: boolean;
3
4
  embedding_chunks_count: number;
4
5
  embedding_chunking_strategy: "array_batch_weighted_avg";
5
6
  embedding_model: string;
7
+ embedding_model_key: string;
8
+ embedding_provider: "openai" | "ollama" | "auto";
6
9
  embedding_max_tokens: number;
7
10
  embedding_safe_chunk_tokens: number;
11
+ embedding_source: CapabilitySource;
12
+ embedding_fallback_hash: boolean;
8
13
  }
9
14
  export interface EmbeddingResult {
10
15
  vector: number[];
11
16
  metadata: EmbeddingMetadata;
12
17
  }
13
18
  /**
14
- * Embedding service client
19
+ * Embedding service client with runtime capability calibration + persistence
15
20
  */
16
21
  export declare class EmbeddingClient {
17
22
  private config;
18
23
  private logger;
19
- private dimensions;
20
- private readonly modelMaxTokens;
24
+ private registry;
25
+ private capability;
26
+ private activeEndpoint;
27
+ private provider;
28
+ private modelKey;
29
+ private readonly ready;
21
30
  constructor(config: {
22
31
  embeddingApiUrl?: string;
23
32
  timeout?: number;
24
33
  dimensions?: number;
25
34
  model?: string;
35
+ stateDir?: string;
26
36
  }, logger?: any);
27
37
  private resolveEmbeddingEndpoints;
28
- private isOpenAIEmbeddingEndpoint;
29
- private getModelMaxTokens;
30
- private getSafeChunkTokens;
38
+ private detectProvider;
39
+ private getDefaults;
40
+ private buildModelKey;
41
+ private tokenBudget;
31
42
  private estimateTokens;
32
43
  private normalizeInput;
33
- private chunkTextBySafeTokens;
44
+ private splitIntoSentences;
45
+ private chunkTextByTokenBudget;
34
46
  private l2Normalize;
35
47
  private weightedAverage;
48
+ private isContextLengthError;
49
+ private extractTokenLimitFromError;
50
+ private updateCapabilityFromContextError;
51
+ private initializeCapabilities;
52
+ private readEndpointMetadata;
53
+ private probeWithinBudget;
54
+ private probeContextWindow;
55
+ calibrateRuntimeCapability(force?: boolean): Promise<void>;
56
+ getVectorDimensionHint(): Promise<number>;
57
+ getModelKey(): Promise<string>;
36
58
  /**
37
59
  * Backward-compatible method
38
60
  */
39
61
  embed(text: string | string[]): Promise<number[]>;
40
62
  /**
41
- * New method with chunking + metadata
63
+ * New method with calibration-aware adaptive chunking + metadata
42
64
  */
43
65
  embedDetailed(text: string | string[]): Promise<EmbeddingResult>;
44
66
  private embedChunksFromApi;
@@ -48,9 +70,6 @@ export declare class EmbeddingClient {
48
70
  * Fallback: Generate embedding from text hash (deterministic)
49
71
  */
50
72
  private embedFromHash;
51
- /**
52
- * Calculate cosine similarity
53
- */
54
73
  cosineSimilarity(a: number[], b: number[]): number;
55
74
  }
56
75
  //# sourceMappingURL=embedding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/services/embedding.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,2BAA2B,EAAE,0BAA0B,CAAC;IACxD,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAcD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAwE;IACtF,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI7B;gBAEU,MAAM,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,GAAG;IAUrH,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKvD;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;YA0FxD,kBAAkB;YAkElB,UAAU;YA+DV,WAAW;IAMzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;CAiBnD"}
1
+ {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/services/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEvI,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,2BAA2B,EAAE,0BAA0B,CAAC;IACxD,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,MAAM,CAAC;IACpC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AA4BD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,MAAM,CAAM;IAEpB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;gBAE1B,MAAM,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,GAAG;IAgBxI,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,sBAAsB;IAgD9B,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,0BAA0B;YAmBpB,gCAAgC;YAkBhC,sBAAsB;YAgCtB,oBAAoB;YAwBpB,iBAAiB;YAWjB,kBAAkB;IAmC1B,0BAA0B,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCxD,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKzC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKvD;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;YA8GxD,kBAAkB;YAuDlB,UAAU;YA6DV,WAAW;IAMzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;CAiBnD"}