@soleri/core 2.0.0 → 2.0.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.
- package/dist/brain/brain.d.ts +3 -12
- package/dist/brain/brain.d.ts.map +1 -1
- package/dist/brain/brain.js +13 -245
- package/dist/brain/brain.js.map +1 -1
- package/dist/curator/curator.d.ts +28 -0
- package/dist/curator/curator.d.ts.map +1 -0
- package/dist/curator/curator.js +523 -0
- package/dist/curator/curator.js.map +1 -0
- package/dist/curator/types.d.ts +87 -0
- package/dist/curator/types.d.ts.map +1 -0
- package/dist/curator/types.js +3 -0
- package/dist/curator/types.js.map +1 -0
- package/dist/facades/types.d.ts +1 -1
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/llm/llm-client.d.ts +28 -0
- package/dist/llm/llm-client.d.ts.map +1 -0
- package/dist/llm/llm-client.js +219 -0
- package/dist/llm/llm-client.js.map +1 -0
- package/dist/runtime/core-ops.d.ts +17 -0
- package/dist/runtime/core-ops.d.ts.map +1 -0
- package/dist/runtime/core-ops.js +448 -0
- package/dist/runtime/core-ops.js.map +1 -0
- package/dist/runtime/domain-ops.d.ts +25 -0
- package/dist/runtime/domain-ops.d.ts.map +1 -0
- package/dist/runtime/domain-ops.js +130 -0
- package/dist/runtime/domain-ops.js.map +1 -0
- package/dist/runtime/runtime.d.ts +19 -0
- package/dist/runtime/runtime.d.ts.map +1 -0
- package/dist/runtime/runtime.js +62 -0
- package/dist/runtime/runtime.js.map +1 -0
- package/dist/runtime/types.d.ts +39 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/{cognee → runtime}/types.js.map +1 -1
- package/dist/text/similarity.d.ts +8 -0
- package/dist/text/similarity.d.ts.map +1 -0
- package/dist/text/similarity.js +161 -0
- package/dist/text/similarity.js.map +1 -0
- package/package.json +6 -2
- package/src/__tests__/brain.test.ts +27 -222
- package/src/__tests__/core-ops.test.ts +190 -0
- package/src/__tests__/curator.test.ts +479 -0
- package/src/__tests__/domain-ops.test.ts +124 -0
- package/src/__tests__/llm-client.test.ts +69 -0
- package/src/__tests__/runtime.test.ts +93 -0
- package/src/brain/brain.ts +19 -275
- package/src/curator/curator.ts +662 -0
- package/src/curator/types.ts +114 -0
- package/src/index.ts +40 -11
- package/src/llm/llm-client.ts +316 -0
- package/src/runtime/core-ops.ts +472 -0
- package/src/runtime/domain-ops.ts +144 -0
- package/src/runtime/runtime.ts +71 -0
- package/src/runtime/types.ts +37 -0
- package/src/text/similarity.ts +168 -0
- package/dist/cognee/client.d.ts +0 -35
- package/dist/cognee/client.d.ts.map +0 -1
- package/dist/cognee/client.js +0 -289
- package/dist/cognee/client.js.map +0 -1
- package/dist/cognee/types.d.ts +0 -46
- package/dist/cognee/types.d.ts.map +0 -1
- package/dist/cognee/types.js +0 -3
- package/src/__tests__/cognee-client.test.ts +0 -524
- package/src/cognee/client.ts +0 -350
- package/src/cognee/types.ts +0 -62
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CA0C3E"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent runtime factory — one call to initialize all modules.
|
|
3
|
+
*
|
|
4
|
+
* ```ts
|
|
5
|
+
* const runtime = createAgentRuntime({ agentId: 'my-agent' });
|
|
6
|
+
* // runtime.vault, runtime.brain, runtime.planner, etc. all ready
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { Vault } from '../vault/vault.js';
|
|
12
|
+
import { Brain } from '../brain/brain.js';
|
|
13
|
+
import { Planner } from '../planning/planner.js';
|
|
14
|
+
import { Curator } from '../curator/curator.js';
|
|
15
|
+
import { KeyPool, loadKeyPoolConfig } from '../llm/key-pool.js';
|
|
16
|
+
import { loadIntelligenceData } from '../intelligence/loader.js';
|
|
17
|
+
import { LLMClient } from '../llm/llm-client.js';
|
|
18
|
+
/**
|
|
19
|
+
* Create a fully initialized agent runtime.
|
|
20
|
+
*
|
|
21
|
+
* All modules (vault, brain, planner, curator, key pools, LLM client)
|
|
22
|
+
* are initialized and wired together. New modules added to core in
|
|
23
|
+
* future versions will be included automatically — existing agents
|
|
24
|
+
* just `npm update @soleri/core`.
|
|
25
|
+
*/
|
|
26
|
+
export function createAgentRuntime(config) {
|
|
27
|
+
const { agentId } = config;
|
|
28
|
+
const agentHome = join(homedir(), `.${agentId}`);
|
|
29
|
+
const vaultPath = config.vaultPath ?? join(agentHome, 'vault.db');
|
|
30
|
+
const plansPath = config.plansPath ?? join(agentHome, 'plans.json');
|
|
31
|
+
// Vault — persistent SQLite knowledge store
|
|
32
|
+
const vault = new Vault(vaultPath);
|
|
33
|
+
// Seed intelligence data if dataDir provided
|
|
34
|
+
if (config.dataDir) {
|
|
35
|
+
const entries = loadIntelligenceData(config.dataDir);
|
|
36
|
+
if (entries.length > 0) {
|
|
37
|
+
vault.seed(entries);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Planner — multi-step task tracking
|
|
41
|
+
const planner = new Planner(plansPath);
|
|
42
|
+
// Brain — intelligence layer (TF-IDF scoring, auto-tagging, dedup)
|
|
43
|
+
const brain = new Brain(vault);
|
|
44
|
+
// Curator — vault self-maintenance (dedup, contradictions, grooming, health)
|
|
45
|
+
const curator = new Curator(vault);
|
|
46
|
+
// LLM key pools and client
|
|
47
|
+
const keyPoolFiles = loadKeyPoolConfig(agentId);
|
|
48
|
+
const openaiKeyPool = new KeyPool(keyPoolFiles.openai);
|
|
49
|
+
const anthropicKeyPool = new KeyPool(keyPoolFiles.anthropic);
|
|
50
|
+
const llmClient = new LLMClient(openaiKeyPool, anthropicKeyPool, agentId);
|
|
51
|
+
return {
|
|
52
|
+
config,
|
|
53
|
+
vault,
|
|
54
|
+
brain,
|
|
55
|
+
planner,
|
|
56
|
+
curator,
|
|
57
|
+
keyPool: { openai: openaiKeyPool, anthropic: anthropicKeyPool },
|
|
58
|
+
llmClient,
|
|
59
|
+
close: () => vault.close(),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEpE,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAEnC,6CAA6C;IAC7C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvC,mEAAmE;IACnE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAE/B,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC,2BAA2B;IAC3B,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAE1E,OAAO;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,OAAO;QACP,OAAO;QACP,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE;QAC/D,SAAS;QACT,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;KAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Vault } from '../vault/vault.js';
|
|
2
|
+
import type { Brain } from '../brain/brain.js';
|
|
3
|
+
import type { Planner } from '../planning/planner.js';
|
|
4
|
+
import type { Curator } from '../curator/curator.js';
|
|
5
|
+
import type { KeyPool } from '../llm/key-pool.js';
|
|
6
|
+
import type { LLMClient } from '../llm/llm-client.js';
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for creating an agent runtime.
|
|
9
|
+
* Only `agentId` is required — everything else has sensible defaults.
|
|
10
|
+
*/
|
|
11
|
+
export interface AgentRuntimeConfig {
|
|
12
|
+
/** Agent identifier (kebab-case), e.g. 'my-agent'. Used for paths: ~/.{agentId}/ */
|
|
13
|
+
agentId: string;
|
|
14
|
+
/** Path to vault database. Default: ~/.{agentId}/vault.db */
|
|
15
|
+
vaultPath?: string;
|
|
16
|
+
/** Path to plans JSON store. Default: ~/.{agentId}/plans.json */
|
|
17
|
+
plansPath?: string;
|
|
18
|
+
/** Intelligence data directory to seed vault from. Optional. */
|
|
19
|
+
dataDir?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Fully initialized agent runtime — all modules ready.
|
|
23
|
+
* Created by `createAgentRuntime(config)`.
|
|
24
|
+
*/
|
|
25
|
+
export interface AgentRuntime {
|
|
26
|
+
config: AgentRuntimeConfig;
|
|
27
|
+
vault: Vault;
|
|
28
|
+
brain: Brain;
|
|
29
|
+
planner: Planner;
|
|
30
|
+
curator: Curator;
|
|
31
|
+
keyPool: {
|
|
32
|
+
openai: KeyPool;
|
|
33
|
+
anthropic: KeyPool;
|
|
34
|
+
};
|
|
35
|
+
llmClient: LLMClient;
|
|
36
|
+
/** Close the vault database connection. Call on shutdown. */
|
|
37
|
+
close(): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IACjD,SAAS,EAAE,SAAS,CAAC;IACrB,6DAA6D;IAC7D,KAAK,IAAI,IAAI,CAAC;CACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type SparseVector = Map<string, number>;
|
|
2
|
+
export declare const STOPWORDS: Set<string>;
|
|
3
|
+
export declare function tokenize(text: string): string[];
|
|
4
|
+
export declare function calculateTf(tokens: string[]): SparseVector;
|
|
5
|
+
export declare function calculateTfIdf(tokens: string[], vocabulary: Map<string, number>): SparseVector;
|
|
6
|
+
export declare function cosineSimilarity(a: SparseVector, b: SparseVector): number;
|
|
7
|
+
export declare function jaccardSimilarity(a: string[], b: string[]): number;
|
|
8
|
+
//# sourceMappingURL=similarity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"similarity.d.ts","sourceRoot":"","sources":["../../src/text/similarity.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAI/C,eAAO,MAAM,SAAS,aAgGpB,CAAC;AAIH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM/C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAU1D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,CAU9F;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAgBzE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAUlE"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// ─── Shared Text Processing & Similarity Utilities ──────────────────
|
|
2
|
+
// Pure functions used by Brain (ranked search) and Curator (dedup, contradictions).
|
|
3
|
+
// ─── Stopwords ─────────────────────────────────────────────────────
|
|
4
|
+
export const STOPWORDS = new Set([
|
|
5
|
+
'a',
|
|
6
|
+
'an',
|
|
7
|
+
'the',
|
|
8
|
+
'and',
|
|
9
|
+
'or',
|
|
10
|
+
'but',
|
|
11
|
+
'in',
|
|
12
|
+
'on',
|
|
13
|
+
'at',
|
|
14
|
+
'to',
|
|
15
|
+
'for',
|
|
16
|
+
'of',
|
|
17
|
+
'with',
|
|
18
|
+
'by',
|
|
19
|
+
'from',
|
|
20
|
+
'as',
|
|
21
|
+
'is',
|
|
22
|
+
'was',
|
|
23
|
+
'are',
|
|
24
|
+
'were',
|
|
25
|
+
'been',
|
|
26
|
+
'be',
|
|
27
|
+
'have',
|
|
28
|
+
'has',
|
|
29
|
+
'had',
|
|
30
|
+
'do',
|
|
31
|
+
'does',
|
|
32
|
+
'did',
|
|
33
|
+
'will',
|
|
34
|
+
'would',
|
|
35
|
+
'could',
|
|
36
|
+
'should',
|
|
37
|
+
'may',
|
|
38
|
+
'might',
|
|
39
|
+
'shall',
|
|
40
|
+
'can',
|
|
41
|
+
'need',
|
|
42
|
+
'must',
|
|
43
|
+
'it',
|
|
44
|
+
'its',
|
|
45
|
+
'this',
|
|
46
|
+
'that',
|
|
47
|
+
'these',
|
|
48
|
+
'those',
|
|
49
|
+
'i',
|
|
50
|
+
'you',
|
|
51
|
+
'he',
|
|
52
|
+
'she',
|
|
53
|
+
'we',
|
|
54
|
+
'they',
|
|
55
|
+
'me',
|
|
56
|
+
'him',
|
|
57
|
+
'her',
|
|
58
|
+
'us',
|
|
59
|
+
'them',
|
|
60
|
+
'my',
|
|
61
|
+
'your',
|
|
62
|
+
'his',
|
|
63
|
+
'our',
|
|
64
|
+
'their',
|
|
65
|
+
'what',
|
|
66
|
+
'which',
|
|
67
|
+
'who',
|
|
68
|
+
'whom',
|
|
69
|
+
'when',
|
|
70
|
+
'where',
|
|
71
|
+
'why',
|
|
72
|
+
'how',
|
|
73
|
+
'all',
|
|
74
|
+
'each',
|
|
75
|
+
'every',
|
|
76
|
+
'both',
|
|
77
|
+
'few',
|
|
78
|
+
'more',
|
|
79
|
+
'most',
|
|
80
|
+
'other',
|
|
81
|
+
'some',
|
|
82
|
+
'such',
|
|
83
|
+
'no',
|
|
84
|
+
'not',
|
|
85
|
+
'only',
|
|
86
|
+
'same',
|
|
87
|
+
'so',
|
|
88
|
+
'than',
|
|
89
|
+
'too',
|
|
90
|
+
'very',
|
|
91
|
+
'just',
|
|
92
|
+
'because',
|
|
93
|
+
'if',
|
|
94
|
+
'then',
|
|
95
|
+
'else',
|
|
96
|
+
'about',
|
|
97
|
+
'up',
|
|
98
|
+
'out',
|
|
99
|
+
'into',
|
|
100
|
+
]);
|
|
101
|
+
// ─── Text Processing ───────────────────────────────────────────────
|
|
102
|
+
export function tokenize(text) {
|
|
103
|
+
return text
|
|
104
|
+
.toLowerCase()
|
|
105
|
+
.replace(/[^a-z0-9\s-]/g, ' ')
|
|
106
|
+
.split(/\s+/)
|
|
107
|
+
.filter((t) => t.length > 2 && !STOPWORDS.has(t));
|
|
108
|
+
}
|
|
109
|
+
export function calculateTf(tokens) {
|
|
110
|
+
const tf = new Map();
|
|
111
|
+
for (const token of tokens) {
|
|
112
|
+
tf.set(token, (tf.get(token) ?? 0) + 1);
|
|
113
|
+
}
|
|
114
|
+
const len = tokens.length || 1;
|
|
115
|
+
for (const [term, count] of tf) {
|
|
116
|
+
tf.set(term, count / len);
|
|
117
|
+
}
|
|
118
|
+
return tf;
|
|
119
|
+
}
|
|
120
|
+
export function calculateTfIdf(tokens, vocabulary) {
|
|
121
|
+
const tf = calculateTf(tokens);
|
|
122
|
+
const tfidf = new Map();
|
|
123
|
+
for (const [term, tfValue] of tf) {
|
|
124
|
+
const idf = vocabulary.get(term) ?? 0;
|
|
125
|
+
if (idf > 0) {
|
|
126
|
+
tfidf.set(term, tfValue * idf);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return tfidf;
|
|
130
|
+
}
|
|
131
|
+
export function cosineSimilarity(a, b) {
|
|
132
|
+
let dot = 0;
|
|
133
|
+
let normA = 0;
|
|
134
|
+
let normB = 0;
|
|
135
|
+
for (const [term, valA] of a) {
|
|
136
|
+
normA += valA * valA;
|
|
137
|
+
const valB = b.get(term);
|
|
138
|
+
if (valB !== undefined) {
|
|
139
|
+
dot += valA * valB;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
for (const [, valB] of b) {
|
|
143
|
+
normB += valB * valB;
|
|
144
|
+
}
|
|
145
|
+
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
146
|
+
return denom === 0 ? 0 : dot / denom;
|
|
147
|
+
}
|
|
148
|
+
export function jaccardSimilarity(a, b) {
|
|
149
|
+
if (a.length === 0 && b.length === 0)
|
|
150
|
+
return 0;
|
|
151
|
+
const setA = new Set(a);
|
|
152
|
+
const setB = new Set(b);
|
|
153
|
+
let intersection = 0;
|
|
154
|
+
for (const item of setA) {
|
|
155
|
+
if (setB.has(item))
|
|
156
|
+
intersection++;
|
|
157
|
+
}
|
|
158
|
+
const union = new Set([...a, ...b]).size;
|
|
159
|
+
return union === 0 ? 0 : intersection / union;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=similarity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"similarity.js","sourceRoot":"","sources":["../../src/text/similarity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soleri/core",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "Shared engine for Soleri agents — vault, brain, planner, LLM utilities, and facade infrastructure.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
@@ -49,11 +49,15 @@
|
|
|
49
49
|
"@vitest/coverage-v8": "^4.0.18"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@modelcontextprotocol/sdk": "^1.12.1"
|
|
52
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
53
|
+
"@anthropic-ai/sdk": ">=0.30.0"
|
|
53
54
|
},
|
|
54
55
|
"peerDependenciesMeta": {
|
|
55
56
|
"@modelcontextprotocol/sdk": {
|
|
56
57
|
"optional": true
|
|
58
|
+
},
|
|
59
|
+
"@anthropic-ai/sdk": {
|
|
60
|
+
"optional": true
|
|
57
61
|
}
|
|
58
62
|
},
|
|
59
63
|
"engines": {
|