@dahch/muninn 0.0.0-stage → 0.2.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 (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +395 -2
  3. package/dist/cli.d.ts +23 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +186 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/check.d.ts +3 -0
  8. package/dist/commands/check.d.ts.map +1 -0
  9. package/dist/commands/check.js +56 -0
  10. package/dist/commands/check.js.map +1 -0
  11. package/dist/commands/memory.d.ts +6 -0
  12. package/dist/commands/memory.d.ts.map +1 -0
  13. package/dist/commands/memory.js +374 -0
  14. package/dist/commands/memory.js.map +1 -0
  15. package/dist/commands/setup.d.ts +3 -0
  16. package/dist/commands/setup.d.ts.map +1 -0
  17. package/dist/commands/setup.js +397 -0
  18. package/dist/commands/setup.js.map +1 -0
  19. package/dist/contracts/compiler.d.ts +71 -0
  20. package/dist/contracts/compiler.d.ts.map +1 -0
  21. package/dist/contracts/compiler.js +362 -0
  22. package/dist/contracts/compiler.js.map +1 -0
  23. package/dist/contracts/index.d.ts +2 -0
  24. package/dist/contracts/index.d.ts.map +1 -0
  25. package/dist/contracts/index.js +2 -0
  26. package/dist/contracts/index.js.map +1 -0
  27. package/dist/db/client.d.ts +100 -0
  28. package/dist/db/client.d.ts.map +1 -0
  29. package/dist/db/client.js +318 -0
  30. package/dist/db/client.js.map +1 -0
  31. package/dist/db/schema.sql +99 -0
  32. package/dist/index.d.ts +23 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +23 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/indexer/ast-indexer.d.ts +55 -0
  37. package/dist/indexer/ast-indexer.d.ts.map +1 -0
  38. package/dist/indexer/ast-indexer.js +445 -0
  39. package/dist/indexer/ast-indexer.js.map +1 -0
  40. package/dist/indexer/index.d.ts +2 -0
  41. package/dist/indexer/index.d.ts.map +1 -0
  42. package/dist/indexer/index.js +2 -0
  43. package/dist/indexer/index.js.map +1 -0
  44. package/dist/mcp/index.d.ts +2 -0
  45. package/dist/mcp/index.d.ts.map +1 -0
  46. package/dist/mcp/index.js +2 -0
  47. package/dist/mcp/index.js.map +1 -0
  48. package/dist/mcp/server.d.ts +254 -0
  49. package/dist/mcp/server.d.ts.map +1 -0
  50. package/dist/mcp/server.js +636 -0
  51. package/dist/mcp/server.js.map +1 -0
  52. package/dist/service/index.d.ts +2 -0
  53. package/dist/service/index.d.ts.map +1 -0
  54. package/dist/service/index.js +2 -0
  55. package/dist/service/index.js.map +1 -0
  56. package/dist/service/memory-service.d.ts +320 -0
  57. package/dist/service/memory-service.d.ts.map +1 -0
  58. package/dist/service/memory-service.js +1511 -0
  59. package/dist/service/memory-service.js.map +1 -0
  60. package/dist/setup/index.d.ts +6 -0
  61. package/dist/setup/index.d.ts.map +1 -0
  62. package/dist/setup/index.js +6 -0
  63. package/dist/setup/index.js.map +1 -0
  64. package/dist/setup/json-target.d.ts +30 -0
  65. package/dist/setup/json-target.d.ts.map +1 -0
  66. package/dist/setup/json-target.js +263 -0
  67. package/dist/setup/json-target.js.map +1 -0
  68. package/dist/setup/portable.d.ts +56 -0
  69. package/dist/setup/portable.d.ts.map +1 -0
  70. package/dist/setup/portable.js +365 -0
  71. package/dist/setup/portable.js.map +1 -0
  72. package/dist/setup/registry.d.ts +54 -0
  73. package/dist/setup/registry.d.ts.map +1 -0
  74. package/dist/setup/registry.js +225 -0
  75. package/dist/setup/registry.js.map +1 -0
  76. package/dist/setup/rules-target.d.ts +31 -0
  77. package/dist/setup/rules-target.d.ts.map +1 -0
  78. package/dist/setup/rules-target.js +270 -0
  79. package/dist/setup/rules-target.js.map +1 -0
  80. package/dist/setup/toml-target.d.ts +62 -0
  81. package/dist/setup/toml-target.d.ts.map +1 -0
  82. package/dist/setup/toml-target.js +869 -0
  83. package/dist/setup/toml-target.js.map +1 -0
  84. package/dist/util/path-safety.d.ts +94 -0
  85. package/dist/util/path-safety.d.ts.map +1 -0
  86. package/dist/util/path-safety.js +162 -0
  87. package/dist/util/path-safety.js.map +1 -0
  88. package/dist/util/text.d.ts +9 -0
  89. package/dist/util/text.d.ts.map +1 -0
  90. package/dist/util/text.js +19 -0
  91. package/dist/util/text.js.map +1 -0
  92. package/package.json +87 -4
@@ -0,0 +1,320 @@
1
+ import Database from "better-sqlite3";
2
+ import { type Project, type Observation, type Entity, type ObservationCategory, type EntityType, type ObservationEntity, type DependencyRelationType, type EntityDependency } from "../db/client.js";
3
+ export { type Project, type Observation, type Entity, type ObservationCategory, type EntityType, type ObservationEntity, type DependencyRelationType, type EntityDependency, };
4
+ export declare const VALID_CATEGORIES: ReadonlyArray<ObservationCategory>;
5
+ export declare const VALID_ENTITY_TYPES: ReadonlyArray<EntityType>;
6
+ export interface SymbolInput {
7
+ name?: string | null;
8
+ filePath?: string | null;
9
+ file_path?: string | null;
10
+ identifier?: string | null;
11
+ type?: EntityType | null;
12
+ entity_type?: EntityType | null;
13
+ id?: string | null;
14
+ }
15
+ export interface ObservationWithEntities extends Observation {
16
+ entities: Entity[];
17
+ }
18
+ export interface SaveObservationInput {
19
+ category: ObservationCategory | string;
20
+ title: string;
21
+ content: string;
22
+ topicKey?: string | null;
23
+ topic_key?: string | null;
24
+ supersedesTopicKey?: string | null;
25
+ supersedes_topic_key?: string | null;
26
+ projectId?: string;
27
+ project_id?: string;
28
+ symbols?: Array<SymbolInput | string> | null;
29
+ }
30
+ export interface SearchOptions {
31
+ query: string;
32
+ category?: ObservationCategory | string | null;
33
+ projectId?: string | null;
34
+ project_id?: string | null;
35
+ allProjects?: boolean | null;
36
+ includeSuperseded?: boolean | null;
37
+ include_superseded?: boolean | null;
38
+ limit?: number | null;
39
+ }
40
+ export interface SearchResult extends ObservationWithEntities {
41
+ rank: number;
42
+ }
43
+ export interface ContextOptions {
44
+ limit?: number | null;
45
+ category?: ObservationCategory | string | null;
46
+ topicKey?: string | null;
47
+ topic_key?: string | null;
48
+ projectId?: string | null;
49
+ project_id?: string | null;
50
+ allProjects?: boolean | null;
51
+ includeSuperseded?: boolean | null;
52
+ include_superseded?: boolean | null;
53
+ }
54
+ export interface SyncToDiskOptions {
55
+ projectId?: string;
56
+ allProjects?: boolean;
57
+ }
58
+ export interface LinkSymbolInput {
59
+ observationId?: string;
60
+ observation_id?: string;
61
+ symbol: SymbolInput | string;
62
+ projectId?: string;
63
+ }
64
+ export interface MemoryStats {
65
+ projects: number;
66
+ observations: number;
67
+ entities: number;
68
+ links: number;
69
+ }
70
+ export interface MemoryServiceOptions {
71
+ db?: Database.Database;
72
+ dbPath?: string;
73
+ projectRoot?: string;
74
+ }
75
+ export declare const DEFAULT_SESSION_BRIEF_BUDGET = 8000;
76
+ export declare const MAX_SESSION_BRIEF_BUDGET = 20000;
77
+ export declare const MAX_SESSION_BRIEF_PATHS = 20;
78
+ export declare const SESSION_BRIEF_RECENT_ACTIVITY_LIMIT = 20;
79
+ export declare const DEFAULT_NEIGHBOR_DEPTH = 1;
80
+ export declare const MAX_NEIGHBOR_DEPTH = 2;
81
+ export declare const DEFAULT_NEIGHBOR_LIMIT = 20;
82
+ export declare const MAX_NEIGHBOR_LIMIT = 50;
83
+ export declare const SESSION_BRIEF_RELATED_LIMIT = 50;
84
+ export type NeighborDirection = "outgoing" | "incoming";
85
+ export interface NeighborOptions {
86
+ depth?: number | null;
87
+ limit?: number | null;
88
+ }
89
+ export interface SymbolNeighbor {
90
+ entity: Entity;
91
+ relationType: DependencyRelationType;
92
+ direction: NeighborDirection;
93
+ /** BFS distance from the inspected entity, starting at 1. */
94
+ depth: number;
95
+ }
96
+ export interface SymbolNeighborGroup {
97
+ direction: NeighborDirection;
98
+ relationType: DependencyRelationType;
99
+ neighbors: SymbolNeighbor[];
100
+ }
101
+ export interface SymbolNeighbors {
102
+ entity: Entity;
103
+ depth: number;
104
+ limit: number;
105
+ groups: SymbolNeighborGroup[];
106
+ /** Flat, deterministically ordered view of `groups` without duplicate entities. */
107
+ neighbors: SymbolNeighbor[];
108
+ truncated: boolean;
109
+ }
110
+ export interface SessionBriefOptions {
111
+ paths?: string[] | null;
112
+ budgetChars?: number | null;
113
+ expandGraph?: boolean | null;
114
+ }
115
+ export interface SessionBriefRequest extends SessionBriefOptions {
116
+ dbPath?: string;
117
+ projectRoot?: string;
118
+ /** An already-open connection, used by the service method and test adapters. */
119
+ db?: Database.Database;
120
+ }
121
+ export interface SessionBriefProject {
122
+ id: string | null;
123
+ name: string;
124
+ rootPath: string;
125
+ gitRemote: string | null;
126
+ }
127
+ export interface SessionBriefDecisionGroup {
128
+ topicKey: string;
129
+ decisions: Observation[];
130
+ }
131
+ export interface SessionBriefCounts {
132
+ /** `null` means the count could not be read; zero is a real, successful count. */
133
+ observations: number | null;
134
+ entities: number | null;
135
+ links: number | null;
136
+ }
137
+ export interface SessionBriefContent {
138
+ project: SessionBriefProject;
139
+ activeDecisions: {
140
+ keyed: SessionBriefDecisionGroup[];
141
+ unkeyed: Observation[];
142
+ };
143
+ recentActivity: Observation[];
144
+ symbols: Entity[];
145
+ /** Deduplicated graph neighbors of the path-selected symbols. */
146
+ related: SymbolNeighbor[];
147
+ counts: SessionBriefCounts;
148
+ notes: string[];
149
+ budgetChars: number;
150
+ }
151
+ export interface SessionBrief extends SessionBriefContent {
152
+ truncated: boolean;
153
+ markdown: string;
154
+ }
155
+ export interface SymbolInspectionDependency {
156
+ entity: Entity;
157
+ relationType: DependencyRelationType;
158
+ }
159
+ export interface SymbolInspection {
160
+ entity: Entity;
161
+ dependencies: {
162
+ outgoing: SymbolInspectionDependency[];
163
+ incoming: SymbolInspectionDependency[];
164
+ };
165
+ /** Bounded depth-1 traversal over the same dependency graph as `neighbors`. */
166
+ neighbors: SymbolNeighbors;
167
+ observations: Observation[];
168
+ }
169
+ export interface IMemoryService {
170
+ readonly currentProject: Project;
171
+ readonly db: Database.Database;
172
+ saveObservation(input: SaveObservationInput): ObservationWithEntities;
173
+ search(options: SearchOptions): SearchResult[];
174
+ getContext(options?: ContextOptions): ObservationWithEntities[];
175
+ linkSymbol(inputOrObsId: LinkSymbolInput | string, symbol?: SymbolInput | string): {
176
+ observation: Observation;
177
+ entity: Entity;
178
+ };
179
+ inspectSymbol(symbol: string, projectId?: string): SymbolInspection | null;
180
+ neighbors(identifier: string, options?: NeighborOptions): SymbolNeighbors | null;
181
+ getStats(projectId?: string): MemoryStats;
182
+ getSessionBrief(options?: SessionBriefOptions): SessionBrief;
183
+ syncToDisk(targetPath?: string, options?: {
184
+ projectId?: string;
185
+ allProjects?: boolean;
186
+ }): {
187
+ path: string;
188
+ count: number;
189
+ };
190
+ importFromDisk(sourcePath?: string): {
191
+ imported: number;
192
+ skipped: number;
193
+ };
194
+ close?(force?: boolean): void;
195
+ }
196
+ /**
197
+ * Normalizes input symbols into canonical identifier, filePath, and entityType.
198
+ */
199
+ export declare function normalizeSymbol(symbol: SymbolInput | string): {
200
+ identifier: string;
201
+ filePath: string;
202
+ entityType: EntityType;
203
+ };
204
+ /**
205
+ * Safely format query terms for SQLite FTS5 syntax.
206
+ * Escapes special characters, wraps terms in quotes, and safely supports prefix queries.
207
+ * Returns an empty string if no valid search terms remain.
208
+ */
209
+ export declare function sanitizeFtsQuery(query: string): string;
210
+ /**
211
+ * Shared deterministic Markdown renderer used by the library, MCP and CLI.
212
+ * It measures the complete output, including headings, notes, and the marker,
213
+ * against `content.budgetChars`.
214
+ */
215
+ export declare function renderSessionBrief(content: SessionBriefContent): string;
216
+ /**
217
+ * Read-only bootstrap entry point for the CLI and MCP default server.
218
+ *
219
+ * It never uses `getDatabase()` or `ensureProject()`: an existing database is
220
+ * opened read-only, and any missing/inaccessible/corrupt/uninitialized file
221
+ * yields an empty brief with a cause in `notes` instead of throwing or creating
222
+ * state.
223
+ */
224
+ export declare function readSessionBrief(request?: SessionBriefRequest): SessionBrief;
225
+ export declare class MemoryService implements IMemoryService {
226
+ private readonly _db;
227
+ private readonly _currentProject;
228
+ private readonly isDbOwned;
229
+ constructor(options?: MemoryServiceOptions);
230
+ get db(): Database.Database;
231
+ get currentProject(): Project;
232
+ /**
233
+ * Screen the durable JSONL export path exactly like the database path
234
+ * (SEC-006): a `.huginn/memories.jsonl` a cloned repository ships as a symlink
235
+ * must be neither written through nor read from — either direction would move
236
+ * project content outside the project (or pull foreign content in, where the
237
+ * MCP memory tools would serve it to the agent).
238
+ */
239
+ private assertMemoryPath;
240
+ /**
241
+ * Closes the database connection if managed internally by the service.
242
+ */
243
+ close(force?: boolean): void;
244
+ /**
245
+ * Saves an observation and transactionally links any provided symbols.
246
+ */
247
+ saveObservation(input: SaveObservationInput): ObservationWithEntities;
248
+ /**
249
+ * Retrieves linked entities for observation IDs in chunks of at most 500
250
+ * to prevent exceeding SQLite parameter bounds.
251
+ */
252
+ private _fetchEntitiesForObservations;
253
+ /**
254
+ * Searches observations using FTS5 BM25 relevance ranking.
255
+ * Query terms are safely sanitized, rank ordering is ASC (lower BM25 = higher relevance),
256
+ * and linked entities are attached to each result.
257
+ */
258
+ search(options: SearchOptions): SearchResult[];
259
+ /**
260
+ * Retrieves recent observations ordered by updated_at DESC, created_at DESC.
261
+ */
262
+ getContext(options?: ContextOptions): ObservationWithEntities[];
263
+ /**
264
+ * Transactionally links an entity to an observation.
265
+ */
266
+ linkSymbol(inputOrObsId: LinkSymbolInput | string, symbolArg?: SymbolInput | string): {
267
+ observation: Observation;
268
+ entity: Entity;
269
+ };
270
+ /**
271
+ * Inspects a symbol in Muninn memory, returning its entity metadata,
272
+ * incoming and outgoing dependencies, and linked observations.
273
+ */
274
+ inspectSymbol(symbol: string, projectId?: string): SymbolInspection | null;
275
+ /**
276
+ * Returns bounded, deterministic graph neighbors for an indexed symbol.
277
+ *
278
+ * Traversal follows stored `entity_dependencies` edges in both directions,
279
+ * groups them by direction and relation, and never returns the same entity
280
+ * twice. Depth is clamped to 1–2 (default 1) and the result limit to 1–50
281
+ * (default 20).
282
+ */
283
+ neighbors(identifier: string, options?: NeighborOptions): SymbolNeighbors | null;
284
+ /**
285
+ * Builds the bounded, deterministic session brief from the already-initialized
286
+ * service database. This method itself only reads; the standalone
287
+ * {@link readSessionBrief} entry point is the one that opens a database
288
+ * read-only and fails open when it is missing or unusable.
289
+ */
290
+ getSessionBrief(options?: SessionBriefOptions): SessionBrief;
291
+ /**
292
+ * Retrieves aggregate counts of projects, observations, entities, and links.
293
+ */
294
+ getStats(projectId?: string): MemoryStats;
295
+ /**
296
+ * Exports all observations with linked entities to a JSON Lines (.jsonl) file.
297
+ */
298
+ syncToDisk(targetPath?: string, options?: {
299
+ projectId?: string;
300
+ allProjects?: boolean;
301
+ }): {
302
+ path: string;
303
+ count: number;
304
+ };
305
+ syncToDisk(options?: {
306
+ projectId?: string;
307
+ allProjects?: boolean;
308
+ }): {
309
+ path: string;
310
+ count: number;
311
+ };
312
+ /**
313
+ * Reads a JSON Lines (.jsonl) file and idempotently imports records into the database.
314
+ */
315
+ importFromDisk(sourcePath?: string): {
316
+ imported: number;
317
+ skipped: number;
318
+ };
319
+ }
320
+ //# sourceMappingURL=memory-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-service.d.ts","sourceRoot":"","sources":["../../src/service/memory-service.ts"],"names":[],"mappings":"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"}