@kybernesis/brain-core 0.1.0

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 (129) hide show
  1. package/dist/claude-call.d.ts +37 -0
  2. package/dist/claude-call.d.ts.map +1 -0
  3. package/dist/claude-call.js +55 -0
  4. package/dist/claude-call.js.map +1 -0
  5. package/dist/entity-graph.d.ts +79 -0
  6. package/dist/entity-graph.d.ts.map +1 -0
  7. package/dist/entity-graph.js +611 -0
  8. package/dist/entity-graph.js.map +1 -0
  9. package/dist/fact-contradiction.d.ts +25 -0
  10. package/dist/fact-contradiction.d.ts.map +1 -0
  11. package/dist/fact-contradiction.js +109 -0
  12. package/dist/fact-contradiction.js.map +1 -0
  13. package/dist/fact-extractor.d.ts +26 -0
  14. package/dist/fact-extractor.d.ts.map +1 -0
  15. package/dist/fact-extractor.js +98 -0
  16. package/dist/fact-extractor.js.map +1 -0
  17. package/dist/fact-retrieval.d.ts +51 -0
  18. package/dist/fact-retrieval.d.ts.map +1 -0
  19. package/dist/fact-retrieval.js +401 -0
  20. package/dist/fact-retrieval.js.map +1 -0
  21. package/dist/fact-store.d.ts +26 -0
  22. package/dist/fact-store.d.ts.map +1 -0
  23. package/dist/fact-store.js +181 -0
  24. package/dist/fact-store.js.map +1 -0
  25. package/dist/fact-temporal.d.ts +20 -0
  26. package/dist/fact-temporal.d.ts.map +1 -0
  27. package/dist/fact-temporal.js +79 -0
  28. package/dist/fact-temporal.js.map +1 -0
  29. package/dist/fts-sanitizer.d.ts +32 -0
  30. package/dist/fts-sanitizer.d.ts.map +1 -0
  31. package/dist/fts-sanitizer.js +61 -0
  32. package/dist/fts-sanitizer.js.map +1 -0
  33. package/dist/hybrid-search.d.ts +44 -0
  34. package/dist/hybrid-search.d.ts.map +1 -0
  35. package/dist/hybrid-search.js +410 -0
  36. package/dist/hybrid-search.js.map +1 -0
  37. package/dist/index.d.ts +33 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +19 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/ops.d.ts +28 -0
  42. package/dist/ops.d.ts.map +1 -0
  43. package/dist/ops.js +307 -0
  44. package/dist/ops.js.map +1 -0
  45. package/dist/queue.d.ts +13 -0
  46. package/dist/queue.d.ts.map +1 -0
  47. package/dist/queue.js +28 -0
  48. package/dist/queue.js.map +1 -0
  49. package/dist/relationship-extractor.d.ts +38 -0
  50. package/dist/relationship-extractor.d.ts.map +1 -0
  51. package/dist/relationship-extractor.js +119 -0
  52. package/dist/relationship-extractor.js.map +1 -0
  53. package/dist/sleep/config.d.ts +47 -0
  54. package/dist/sleep/config.d.ts.map +1 -0
  55. package/dist/sleep/config.js +46 -0
  56. package/dist/sleep/config.js.map +1 -0
  57. package/dist/sleep/db.d.ts +16 -0
  58. package/dist/sleep/db.d.ts.map +1 -0
  59. package/dist/sleep/db.js +114 -0
  60. package/dist/sleep/db.js.map +1 -0
  61. package/dist/sleep/index.d.ts +69 -0
  62. package/dist/sleep/index.d.ts.map +1 -0
  63. package/dist/sleep/index.js +99 -0
  64. package/dist/sleep/index.js.map +1 -0
  65. package/dist/sleep/steps/consolidate.d.ts +19 -0
  66. package/dist/sleep/steps/consolidate.d.ts.map +1 -0
  67. package/dist/sleep/steps/consolidate.js +74 -0
  68. package/dist/sleep/steps/consolidate.js.map +1 -0
  69. package/dist/sleep/steps/decay.d.ts +19 -0
  70. package/dist/sleep/steps/decay.d.ts.map +1 -0
  71. package/dist/sleep/steps/decay.js +121 -0
  72. package/dist/sleep/steps/decay.js.map +1 -0
  73. package/dist/sleep/steps/entity-hygiene.d.ts +29 -0
  74. package/dist/sleep/steps/entity-hygiene.d.ts.map +1 -0
  75. package/dist/sleep/steps/entity-hygiene.js +452 -0
  76. package/dist/sleep/steps/entity-hygiene.js.map +1 -0
  77. package/dist/sleep/steps/link.d.ts +20 -0
  78. package/dist/sleep/steps/link.d.ts.map +1 -0
  79. package/dist/sleep/steps/link.js +216 -0
  80. package/dist/sleep/steps/link.js.map +1 -0
  81. package/dist/sleep/steps/observe.d.ts +17 -0
  82. package/dist/sleep/steps/observe.d.ts.map +1 -0
  83. package/dist/sleep/steps/observe.js +192 -0
  84. package/dist/sleep/steps/observe.js.map +1 -0
  85. package/dist/sleep/steps/profile.d.ts +15 -0
  86. package/dist/sleep/steps/profile.d.ts.map +1 -0
  87. package/dist/sleep/steps/profile.js +26 -0
  88. package/dist/sleep/steps/profile.js.map +1 -0
  89. package/dist/sleep/steps/reasoning.d.ts +19 -0
  90. package/dist/sleep/steps/reasoning.d.ts.map +1 -0
  91. package/dist/sleep/steps/reasoning.js +173 -0
  92. package/dist/sleep/steps/reasoning.js.map +1 -0
  93. package/dist/sleep/steps/summarize.d.ts +21 -0
  94. package/dist/sleep/steps/summarize.d.ts.map +1 -0
  95. package/dist/sleep/steps/summarize.js +206 -0
  96. package/dist/sleep/steps/summarize.js.map +1 -0
  97. package/dist/sleep/steps/tag.d.ts +16 -0
  98. package/dist/sleep/steps/tag.d.ts.map +1 -0
  99. package/dist/sleep/steps/tag.js +84 -0
  100. package/dist/sleep/steps/tag.js.map +1 -0
  101. package/dist/sleep/steps/tier.d.ts +18 -0
  102. package/dist/sleep/steps/tier.d.ts.map +1 -0
  103. package/dist/sleep/steps/tier.js +112 -0
  104. package/dist/sleep/steps/tier.js.map +1 -0
  105. package/dist/sleep/utils/checkpoint.d.ts +11 -0
  106. package/dist/sleep/utils/checkpoint.d.ts.map +1 -0
  107. package/dist/sleep/utils/checkpoint.js +26 -0
  108. package/dist/sleep/utils/checkpoint.js.map +1 -0
  109. package/dist/sleep/utils/jaccard.d.ts +7 -0
  110. package/dist/sleep/utils/jaccard.d.ts.map +1 -0
  111. package/dist/sleep/utils/jaccard.js +19 -0
  112. package/dist/sleep/utils/jaccard.js.map +1 -0
  113. package/dist/store-conversation.d.ts +29 -0
  114. package/dist/store-conversation.d.ts.map +1 -0
  115. package/dist/store-conversation.js +227 -0
  116. package/dist/store-conversation.js.map +1 -0
  117. package/dist/timeline.d.ts +50 -0
  118. package/dist/timeline.d.ts.map +1 -0
  119. package/dist/timeline.js +389 -0
  120. package/dist/timeline.js.map +1 -0
  121. package/dist/user-profile.d.ts +30 -0
  122. package/dist/user-profile.d.ts.map +1 -0
  123. package/dist/user-profile.js +147 -0
  124. package/dist/user-profile.js.map +1 -0
  125. package/dist/vectors.d.ts +56 -0
  126. package/dist/vectors.d.ts.map +1 -0
  127. package/dist/vectors.js +132 -0
  128. package/dist/vectors.js.map +1 -0
  129. package/package.json +53 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Brain LLM-call shim — port of KAD's claude-call.ts.
3
+ *
4
+ * Provides the single `callClaude` / `callClaudeJSON` interface used by
5
+ * fact-extractor, fact-contradiction, relationship-extractor, and the sleep
6
+ * pipeline. The provider is injectable for tests (ADR-0009):
7
+ *
8
+ * setLLMProvider(makeLLMStub({ '*': '[]' })); // in tests
9
+ * setLLMProvider(createSubprocessProvider()); // at app startup
10
+ * resetLLMProvider(); // in afterEach
11
+ */
12
+ export interface ClaudeCallOpts {
13
+ model?: string;
14
+ maxTokens?: number;
15
+ system?: string;
16
+ [key: string]: unknown;
17
+ }
18
+ export interface LLMProvider {
19
+ call(prompt: string, opts?: ClaudeCallOpts): Promise<string | null>;
20
+ }
21
+ export declare function setLLMProvider(p: LLMProvider): void;
22
+ export declare function resetLLMProvider(): void;
23
+ /** Returns true when a provider is wired in. */
24
+ export declare function llmAvailable(): boolean;
25
+ /**
26
+ * One-shot LLM call — returns full text or null on any failure.
27
+ * Callers must treat null as "best-effort unavailable" and degrade gracefully.
28
+ * Default model: haiku. Default maxTokens: 1024.
29
+ */
30
+ export declare function callClaude(prompt: string, opts?: ClaudeCallOpts): Promise<string | null>;
31
+ /**
32
+ * Like `callClaude` but parses JSON from the response using a provided
33
+ * validator. Returns null if the LLM returns null, the JSON is missing,
34
+ * or validation fails.
35
+ */
36
+ export declare function callClaudeJSON<T>(prompt: string, validate: (raw: unknown) => T | null, opts?: ClaudeCallOpts): Promise<T | null>;
37
+ //# sourceMappingURL=claude-call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-call.d.ts","sourceRoot":"","sources":["../src/claude-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACrE;AAKD,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAmB;AACvE,wBAAgB,gBAAgB,IAAI,IAAI,CAAsB;AAE9D,gDAAgD;AAChD,wBAAgB,YAAY,IAAI,OAAO,CAA+B;AAEtE;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQlG;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,IAAI,EACpC,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAcnB"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Brain LLM-call shim — port of KAD's claude-call.ts.
3
+ *
4
+ * Provides the single `callClaude` / `callClaudeJSON` interface used by
5
+ * fact-extractor, fact-contradiction, relationship-extractor, and the sleep
6
+ * pipeline. The provider is injectable for tests (ADR-0009):
7
+ *
8
+ * setLLMProvider(makeLLMStub({ '*': '[]' })); // in tests
9
+ * setLLMProvider(createSubprocessProvider()); // at app startup
10
+ * resetLLMProvider(); // in afterEach
11
+ */
12
+ // Module-level injectable provider (ADR-0009)
13
+ let _provider = null;
14
+ export function setLLMProvider(p) { _provider = p; }
15
+ export function resetLLMProvider() { _provider = null; }
16
+ /** Returns true when a provider is wired in. */
17
+ export function llmAvailable() { return _provider !== null; }
18
+ /**
19
+ * One-shot LLM call — returns full text or null on any failure.
20
+ * Callers must treat null as "best-effort unavailable" and degrade gracefully.
21
+ * Default model: haiku. Default maxTokens: 1024.
22
+ */
23
+ export async function callClaude(prompt, opts = {}) {
24
+ if (!_provider)
25
+ return null;
26
+ try {
27
+ return await _provider.call(prompt, opts);
28
+ }
29
+ catch (err) {
30
+ console.warn('[brain-core/claude-call] callClaude threw', { err: String(err) });
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * Like `callClaude` but parses JSON from the response using a provided
36
+ * validator. Returns null if the LLM returns null, the JSON is missing,
37
+ * or validation fails.
38
+ */
39
+ export async function callClaudeJSON(prompt, validate, opts = {}) {
40
+ const response = await callClaude(prompt, opts);
41
+ if (!response)
42
+ return null;
43
+ // Extract first JSON object or array from the response
44
+ const match = response.match(/(\{[\s\S]*\}|\[[\s\S]*\])/);
45
+ if (!match)
46
+ return null;
47
+ try {
48
+ const parsed = JSON.parse(match[0]);
49
+ return validate(parsed);
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ //# sourceMappingURL=claude-call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-call.js","sourceRoot":"","sources":["../src/claude-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,8CAA8C;AAC9C,IAAI,SAAS,GAAuB,IAAI,CAAC;AAEzC,MAAM,UAAU,cAAc,CAAC,CAAc,IAAU,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,MAAM,UAAU,gBAAgB,KAAW,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;AAE9D,gDAAgD;AAChD,MAAM,UAAU,YAAY,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,OAAuB,EAAE;IACxE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,QAAoC,EACpC,OAAuB,EAAE;IAEzB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,uDAAuD;IACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { TenantContext, EntityType, RelationshipType, Entity, EntityMention, EntityInsight, InsightType, Contradiction } from '@kybernesis/brain-contracts';
2
+ export declare function findOrCreateEntity(t: TenantContext, name: string, type: EntityType, timestamp: string): Promise<Entity>;
3
+ export declare function addEntityAlias(t: TenantContext, entityId: number, alias: string): Promise<void>;
4
+ export declare function addEntityMention(t: TenantContext, entityId: number, conversationId: string, sourcePath: string, context: string, timestamp: string, sourceType?: string, confidence?: number): Promise<void>;
5
+ export declare function linkEntities(t: TenantContext, sourceId: number, targetId: number, relationship?: RelationshipType): Promise<void>;
6
+ export declare function linkEntitiesWithType(t: TenantContext, sourceId: number, targetId: number, options: {
7
+ relationship: RelationshipType;
8
+ confidence?: number;
9
+ rationale?: string;
10
+ method?: string;
11
+ }): Promise<void>;
12
+ export declare function getTypedRelationships(t: TenantContext, entityId: number): Promise<Array<{
13
+ entity: Entity;
14
+ relationship: RelationshipType;
15
+ direction: 'outgoing' | 'incoming';
16
+ confidence: number;
17
+ rationale?: string;
18
+ }>>;
19
+ export interface ConversationEntity {
20
+ type: EntityType;
21
+ name: string;
22
+ context?: string;
23
+ }
24
+ export declare function linkEntitiesFromConversation(t: TenantContext, conversationId: string, sourcePath: string, timestamp: string, entities: ConversationEntity[]): Promise<void>;
25
+ export declare function getEntityContext(t: TenantContext, nameOrId: string | number): Promise<{
26
+ entity: Entity;
27
+ mentions: EntityMention[];
28
+ relatedEntities: Array<{
29
+ entity: Entity;
30
+ relationship: string;
31
+ strength: number;
32
+ }>;
33
+ } | null>;
34
+ export declare function searchEntities(t: TenantContext, query: string, options?: {
35
+ type?: EntityType;
36
+ limit?: number;
37
+ }): Promise<Entity[]>;
38
+ export declare function getRecentEntities(t: TenantContext, limit?: number): Promise<Entity[]>;
39
+ export declare function getMostMentionedEntities(t: TenantContext, options?: {
40
+ type?: EntityType;
41
+ limit?: number;
42
+ }): Promise<Entity[]>;
43
+ export declare function getEntityGraphStats(t: TenantContext): Promise<{
44
+ totalEntities: number;
45
+ totalMentions: number;
46
+ totalRelations: number;
47
+ byType: Record<EntityType, number>;
48
+ }>;
49
+ export declare function detectEntitiesInQuery(t: TenantContext, query: string): Promise<{
50
+ entities: string[];
51
+ remainingQuery: string;
52
+ }>;
53
+ export declare function mergeEntities(t: TenantContext, keepId: number, removeId: number, reason: string, confidence?: number, aiRationale?: string, mergedBy?: string): Promise<{
54
+ mentionsMoved: number;
55
+ relationsMoved: number;
56
+ }>;
57
+ export declare function deleteEntity(t: TenantContext, entityId: number, reason: string, mergedBy?: string): Promise<void>;
58
+ export declare function getEntityProfile(t: TenantContext, entityId: number): Promise<{
59
+ profile: string;
60
+ generatedAt: string;
61
+ factCount: number;
62
+ } | null>;
63
+ export declare function saveEntityProfile(t: TenantContext, entityId: number, profile: string, factCount: number): Promise<void>;
64
+ export declare function createContradiction(t: TenantContext, entityId: number, factAId: number, factBId: number, factA: string, factB: string, description: string): Promise<number>;
65
+ export declare function getOpenContradictions(t: TenantContext, entityId: number): Promise<Contradiction[]>;
66
+ export declare function resolveContradiction(t: TenantContext, contradictionId: number, resolvedBy: string): Promise<void>;
67
+ export declare function applyContradictions(t: TenantContext, entityId: number, factIds: number[]): Promise<void>;
68
+ export declare function saveEntityInsight(t: TenantContext, entityId: number, insightType: InsightType, insight: string, reasoning: string, confidence: number, sourceEntityIds?: number[], expiresAt?: string): Promise<number>;
69
+ export declare function getEntityInsights(t: TenantContext, entityId: number, minConfidence?: number): Promise<EntityInsight[]>;
70
+ export declare function markInsightsStale(t: TenantContext, entityId: number): Promise<void>;
71
+ export declare function getEntitiesForReasoning(t: TenantContext, limit?: number, staleDays?: number, recencyDays?: number): Promise<Array<{
72
+ id: number;
73
+ name: string;
74
+ type: string;
75
+ }>>;
76
+ export declare function markEntityReasoned(t: TenantContext, entityId: number): Promise<void>;
77
+ export declare function pinEntity(t: TenantContext, entityId: number, pinned?: boolean): Promise<void>;
78
+ export declare function listPinned(t: TenantContext, type?: EntityType): Promise<Entity[]>;
79
+ //# sourceMappingURL=entity-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-graph.d.ts","sourceRoot":"","sources":["../src/entity-graph.ts"],"names":[],"mappings":"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"}