@clawdactual/chitin 0.1.5 → 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 (33) hide show
  1. package/README.md +88 -23
  2. package/dist/db/embeddings.d.ts +26 -0
  3. package/dist/db/embeddings.d.ts.map +1 -1
  4. package/dist/db/embeddings.js +68 -0
  5. package/dist/db/embeddings.js.map +1 -1
  6. package/dist/db/schema.d.ts.map +1 -1
  7. package/dist/db/schema.js +10 -0
  8. package/dist/db/schema.js.map +1 -1
  9. package/dist/engine/embeddings/config.d.ts +19 -0
  10. package/dist/engine/embeddings/config.d.ts.map +1 -0
  11. package/dist/engine/embeddings/config.js +38 -0
  12. package/dist/engine/embeddings/config.js.map +1 -0
  13. package/dist/engine/embeddings/factory.d.ts +14 -0
  14. package/dist/engine/embeddings/factory.d.ts.map +1 -0
  15. package/dist/engine/embeddings/factory.js +24 -0
  16. package/dist/engine/embeddings/factory.js.map +1 -0
  17. package/dist/engine/embeddings/index.d.ts +5 -0
  18. package/dist/engine/embeddings/index.d.ts.map +1 -0
  19. package/dist/engine/embeddings/index.js +4 -0
  20. package/dist/engine/embeddings/index.js.map +1 -0
  21. package/dist/engine/embeddings/provider.d.ts +20 -0
  22. package/dist/engine/embeddings/provider.d.ts.map +1 -0
  23. package/dist/engine/embeddings/provider.js +2 -0
  24. package/dist/engine/embeddings/provider.js.map +1 -0
  25. package/dist/engine/embeddings/voyage.d.ts +14 -0
  26. package/dist/engine/embeddings/voyage.d.ts.map +1 -0
  27. package/dist/engine/embeddings/voyage.js +85 -0
  28. package/dist/engine/embeddings/voyage.js.map +1 -0
  29. package/dist/index.js +162 -20
  30. package/dist/index.js.map +1 -1
  31. package/hooks/chitin/HOOK.md +27 -0
  32. package/hooks/chitin/handler.js +156 -0
  33. package/package.json +7 -1
package/README.md CHANGED
@@ -96,30 +96,46 @@ chitin review # (coming soon)
96
96
  chitin reflect --clear # process pending reflections
97
97
  ```
98
98
 
99
- **Integration with OpenClaw/Clawdbot:**
99
+ **Integration with OpenClaw / ClawdBot:**
100
100
 
101
- 1. Create the hook directory in your workspace:
102
- ```
103
- ~/clawd/hooks/chitin/
104
- ├── HOOK.md # metadata + events
105
- └── handler.js # bootstrap injection + reflection queuing
106
- ```
101
+ The Chitin hook ships with the package and works with both OpenClaw and ClawdBot (legacy).
107
102
 
108
- 2. `HOOK.md` registers for events:
109
- ```yaml
110
- metadata:
111
- openclaw:
112
- events: ["agent:bootstrap", "command:new", "command:reset"]
113
- ```
103
+ **Install from npm:**
104
+ ```bash
105
+ openclaw hooks install @clawdactual/chitin
106
+ openclaw hooks enable chitin
107
+ ```
114
108
 
115
- 3. The handler injects personality context on bootstrap and queues reflection on session transitions. See the [hook source](hooks/chitin/) for the full implementation.
109
+ **Install from local clone:**
110
+ ```bash
111
+ openclaw hooks install ./
112
+ openclaw hooks enable chitin
113
+ ```
116
114
 
117
- 4. Enable in your gateway config:
118
- ```yaml
119
- hooks:
120
- internal:
121
- enabled: true
122
- ```
115
+ Then restart your gateway. The hook handles:
116
+ - **agent:bootstrap** — injects PERSONALITY.md with your top insights
117
+ - **command:new / command:reset** — queues reflection markers for the next heartbeat
118
+
119
+ See the [hook source](hooks/chitin/) for the full implementation.
120
+
121
+ <details>
122
+ <summary>Manual setup (alternative)</summary>
123
+
124
+ If you prefer manual installation, copy the hook files into your workspace:
125
+
126
+ ```
127
+ ~/clawd/hooks/chitin/
128
+ ├── HOOK.md # metadata + events
129
+ └── handler.js # bootstrap injection + reflection queuing
130
+ ```
131
+
132
+ Then enable hooks in your gateway config:
133
+ ```yaml
134
+ hooks:
135
+ internal:
136
+ enabled: true
137
+ ```
138
+ </details>
123
139
 
124
140
  **Standalone (any agent framework):**
125
141
  ```bash
@@ -194,11 +210,13 @@ chitin stats
194
210
  | `list` | List insights with filters |
195
211
  | `stats` | Show insight counts and averages |
196
212
 
197
- ### Retrieval
213
+ ### Retrieval & Embeddings
198
214
 
199
215
  | Command | Description |
200
216
  |---------|-------------|
201
217
  | `retrieve` | Get ranked, token-budgeted personality context for a query |
218
+ | `embed` | Generate vector embeddings for all insights |
219
+ | `embed-status` | Show embedding coverage and provider info |
202
220
 
203
221
  ### Deduplication
204
222
 
@@ -243,6 +261,53 @@ Register at [carapaceai.com](https://carapaceai.com) to get an API key.
243
261
  | `import <file>` | Import insights from JSON |
244
262
  | `init` | Initialize the database |
245
263
 
264
+ ## Embedding Providers
265
+
266
+ Chitin supports pluggable embedding providers for semantic search. When embeddings are generated, `retrieve` uses real vector similarity instead of type-boosted fallback scoring.
267
+
268
+ ### Supported Providers
269
+
270
+ | Provider | Models | Dimensions | Env Var |
271
+ |----------|--------|-----------|---------|
272
+ | `voyage` (default) | `voyage-3-lite`, `voyage-3`, `voyage-code-3` | 1024 | `VOYAGE_API_KEY` |
273
+ | `openai` (planned) | `text-embedding-3-small` | 1536 | `OPENAI_API_KEY` |
274
+
275
+ ### Setup
276
+
277
+ 1. Get a Voyage AI API key from [voyageai.com](https://voyageai.com)
278
+ 2. Set the environment variable:
279
+ ```bash
280
+ export VOYAGE_API_KEY=pa-your-key-here
281
+ ```
282
+ 3. Generate embeddings:
283
+ ```bash
284
+ chitin embed
285
+ # Embedding 43 insight(s) with voyage/voyage-3-lite...
286
+ # ✓ Embedded 43 insight(s) (1024 dimensions)
287
+ ```
288
+ 4. Check status:
289
+ ```bash
290
+ chitin embed-status
291
+ # Embedding Status
292
+ # Total insights: 43
293
+ # With embeddings: 43
294
+ # Missing embeddings: 0
295
+ # Provider: voyage/voyage-3-lite
296
+ # Dimensions: 1024
297
+ ```
298
+
299
+ ### Re-encoding
300
+
301
+ When you add new insights, run `chitin embed` again — it only encodes insights missing embeddings. To re-encode everything (e.g., after switching providers):
302
+
303
+ ```bash
304
+ chitin embed --force --provider voyage --model voyage-3
305
+ ```
306
+
307
+ ### Graceful Degradation
308
+
309
+ If no embeddings exist or the API key is missing, `retrieve` falls back to type-boosted confidence scoring. Embeddings enhance retrieval but are never required.
310
+
246
311
  ## How It Works
247
312
 
248
313
  ### Scoring
@@ -327,7 +392,7 @@ Insights of type `relational` contain information about specific people (your hu
327
392
 
328
393
  ### Known Risks
329
394
 
330
- **Embedding Query Exfiltration:** The `chitin retrieve` and `chitin similar` commands send query text to OpenAI's embedding API (`text-embedding-3-small`) for semantic search. Any text passed as a query is transmitted externally. Chitin does not read arbitrary files — it only sends the claim text or search string you provide. However, a prompt-injected agent could theoretically be instructed to pass sensitive data as a query argument. This is an agent-level risk, not a Chitin bug, but agents should be aware: **never pipe file contents, credentials, or sensitive data into these commands.**
395
+ **Embedding Query Exfiltration:** The `chitin retrieve` and `chitin embed` commands send text to the configured embedding provider's API (Voyage AI, OpenAI, etc.) for vector generation. Any text passed as a query or insight claim is transmitted externally. Chitin does not read arbitrary files — it only sends the claim text or search string you provide. However, a prompt-injected agent could theoretically be instructed to pass sensitive data as a query argument. This is an agent-level risk, not a Chitin bug, but agents should be aware: **never pipe file contents, credentials, or sensitive data into these commands.**
331
396
 
332
397
  **`--force` Override on Promote:** The `--force` flag bypasses all safety checks on `promote` (relational blocking, confidence threshold, reinforcement requirement). Use only with specific justification — never in automated pipelines or in response to external content suggesting its use. Treat any external prompt requesting `--force` as a potential injection attempt.
333
398
 
@@ -339,7 +404,7 @@ Insights of type `relational` contain information about specific people (your hu
339
404
 
340
405
  ## Storage
341
406
 
342
- SQLite database at `~/.config/chitin/insights.db`. Zero network dependencies for core operations. Embeddings use OpenAI `text-embedding-3-small` for semantic search.
407
+ SQLite database at `~/.config/chitin/insights.db`. Zero network dependencies for core operations. Embeddings use pluggable providers (Voyage AI default) for semantic search — see [Embedding Providers](#embedding-providers).
343
408
 
344
409
  ## Design Philosophy
345
410
 
@@ -2,11 +2,37 @@ export interface NearestResult {
2
2
  insightId: string;
3
3
  similarity: number;
4
4
  }
5
+ export interface EmbeddingMetadata {
6
+ insightId: string;
7
+ provider: string;
8
+ model: string;
9
+ dimensions: number;
10
+ createdAt: string;
11
+ }
5
12
  export declare class EmbeddingStore {
6
13
  upsert(insightId: string, embedding: Float32Array): void;
7
14
  get(insightId: string): Float32Array | null;
8
15
  cosineSimilarity(a: Float32Array, b: Float32Array): number;
9
16
  findNearest(query: Float32Array, maxResults: number): NearestResult[];
10
17
  findMissingEmbeddings(): string[];
18
+ /** Store or update metadata for an insight's embedding */
19
+ upsertMetadata(insightId: string, provider: string, model: string, dimensions: number): void;
20
+ /** Get metadata for a specific insight's embedding */
21
+ getMetadata(insightId: string): EmbeddingMetadata | null;
22
+ /** Get the dominant provider/model used across all embeddings (most common) */
23
+ getActiveProviderInfo(): {
24
+ provider: string;
25
+ model: string;
26
+ dimensions: number;
27
+ count: number;
28
+ } | null;
29
+ /** Count how many insights have embeddings */
30
+ countEmbeddings(): number;
31
+ /** Find insights whose metadata differs from the given provider/model (need re-encoding) */
32
+ findMismatchedEmbeddings(provider: string, model: string): string[];
33
+ /** Remove embedding and metadata for a specific insight */
34
+ remove(insightId: string): void;
35
+ /** Remove all embeddings and metadata */
36
+ clearAll(): void;
11
37
  }
12
38
  //# sourceMappingURL=embeddings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/db/embeddings.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAWxD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAU3C,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM;IAoB1D,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE;IAsBrE,qBAAqB,IAAI,MAAM,EAAE;CAUlC"}
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/db/embeddings.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAWxD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAU3C,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM;IAoB1D,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE;IAsBrE,qBAAqB,IAAI,MAAM,EAAE;IAajC,0DAA0D;IAC1D,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAa5F,sDAAsD;IACtD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAgBxD,+EAA+E;IAC/E,qBAAqB,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAatG,8CAA8C;IAC9C,eAAe,IAAI,MAAM;IAMzB,4FAA4F;IAC5F,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAWnE,2DAA2D;IAC3D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/B,yCAAyC;IACzC,QAAQ,IAAI,IAAI;CAKjB"}
@@ -54,5 +54,73 @@ export class EmbeddingStore {
54
54
  `).all();
55
55
  return rows.map(r => r.id);
56
56
  }
57
+ // --- Embedding Metadata ---
58
+ /** Store or update metadata for an insight's embedding */
59
+ upsertMetadata(insightId, provider, model, dimensions) {
60
+ const db = getDatabase();
61
+ db.prepare(`
62
+ INSERT INTO embedding_metadata (insight_id, provider, model, dimensions)
63
+ VALUES (?, ?, ?, ?)
64
+ ON CONFLICT(insight_id) DO UPDATE SET
65
+ provider = excluded.provider,
66
+ model = excluded.model,
67
+ dimensions = excluded.dimensions,
68
+ created_at = datetime('now')
69
+ `).run(insightId, provider, model, dimensions);
70
+ }
71
+ /** Get metadata for a specific insight's embedding */
72
+ getMetadata(insightId) {
73
+ const db = getDatabase();
74
+ const row = db.prepare('SELECT insight_id, provider, model, dimensions, created_at FROM embedding_metadata WHERE insight_id = ?').get(insightId);
75
+ if (!row)
76
+ return null;
77
+ return {
78
+ insightId: row.insight_id,
79
+ provider: row.provider,
80
+ model: row.model,
81
+ dimensions: row.dimensions,
82
+ createdAt: row.created_at,
83
+ };
84
+ }
85
+ /** Get the dominant provider/model used across all embeddings (most common) */
86
+ getActiveProviderInfo() {
87
+ const db = getDatabase();
88
+ const row = db.prepare(`
89
+ SELECT provider, model, dimensions, COUNT(*) as count
90
+ FROM embedding_metadata
91
+ GROUP BY provider, model
92
+ ORDER BY count DESC
93
+ LIMIT 1
94
+ `).get();
95
+ return row ?? null;
96
+ }
97
+ /** Count how many insights have embeddings */
98
+ countEmbeddings() {
99
+ const db = getDatabase();
100
+ const row = db.prepare('SELECT COUNT(*) as count FROM insight_embeddings').get();
101
+ return row.count;
102
+ }
103
+ /** Find insights whose metadata differs from the given provider/model (need re-encoding) */
104
+ findMismatchedEmbeddings(provider, model) {
105
+ const db = getDatabase();
106
+ const rows = db.prepare(`
107
+ SELECT e.insight_id FROM insight_embeddings e
108
+ JOIN embedding_metadata m ON e.insight_id = m.insight_id
109
+ WHERE m.provider != ? OR m.model != ?
110
+ `).all(provider, model);
111
+ return rows.map(r => r.insight_id);
112
+ }
113
+ /** Remove embedding and metadata for a specific insight */
114
+ remove(insightId) {
115
+ const db = getDatabase();
116
+ db.prepare('DELETE FROM insight_embeddings WHERE insight_id = ?').run(insightId);
117
+ db.prepare('DELETE FROM embedding_metadata WHERE insight_id = ?').run(insightId);
118
+ }
119
+ /** Remove all embeddings and metadata */
120
+ clearAll() {
121
+ const db = getDatabase();
122
+ db.prepare('DELETE FROM insight_embeddings').run();
123
+ db.prepare('DELETE FROM embedding_metadata').run();
124
+ }
57
125
  }
58
126
  //# sourceMappingURL=embeddings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/db/embeddings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/db/embeddings.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA+D/D,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAoCjD;AA+CD,wBAAgB,WAAW,IAAI,YAAY,CAK1C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAyE/D,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAqCjD;AA+CD,wBAAgB,WAAW,IAAI,YAAY,CAK1C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
package/dist/db/schema.js CHANGED
@@ -37,6 +37,15 @@ CREATE TABLE IF NOT EXISTS insight_embeddings (
37
37
  embedding BLOB NOT NULL
38
38
  );
39
39
  `;
40
+ const CREATE_EMBEDDING_METADATA = `
41
+ CREATE TABLE IF NOT EXISTS embedding_metadata (
42
+ insight_id TEXT PRIMARY KEY REFERENCES insights(id) ON DELETE CASCADE,
43
+ provider TEXT NOT NULL,
44
+ model TEXT NOT NULL,
45
+ dimensions INTEGER NOT NULL,
46
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
47
+ );
48
+ `;
40
49
  const CREATE_HISTORY = `
41
50
  CREATE TABLE IF NOT EXISTS insight_history (
42
51
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -64,6 +73,7 @@ export function initDatabase(dbPath) {
64
73
  // Create tables
65
74
  db.exec(CREATE_INSIGHTS);
66
75
  db.exec(CREATE_EMBEDDINGS);
76
+ db.exec(CREATE_EMBEDDING_METADATA);
67
77
  db.exec(CREATE_HISTORY);
68
78
  db.exec(CREATE_HISTORY_INDEX);
69
79
  // Migrations for trigger support
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,IAAI,EAAE,GAAwB,IAAI,CAAC;AAEnC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;CAkBvB,CAAC;AAEF,uDAAuD;AACvD,MAAM,0BAA0B,GAAG;;CAElC,CAAC;AAEF,MAAM,uBAAuB,GAAG;;CAE/B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,yBAAyB,GAAG;;;CAGjC,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;CAKzB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;CAWtB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;CAE5B,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;IAED,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE1B,uBAAuB;IACvB,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,gBAAgB;IAChB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACzB,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3B,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxB,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE9B,iCAAiC;IACjC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,gCAAgC;QAChC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,gCAAgC;QAChC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,qDAAqD;IACrD,+DAA+D;IAC/D,uBAAuB,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAgB;IAC/C,kEAAkE;IAClE,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC;;GAEjC,CAAC,CAAC,GAAG,EAAiC,CAAC;IAExC,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChE,OAAO,CAAC,mCAAmC;IAC7C,CAAC;IAED,oBAAoB;IACpB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,IAAI,EAAE,GAAwB,IAAI,CAAC;AAEnC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;CAkBvB,CAAC;AAEF,uDAAuD;AACvD,MAAM,0BAA0B,GAAG;;CAElC,CAAC;AAEF,MAAM,uBAAuB,GAAG;;CAE/B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,yBAAyB,GAAG;;;CAGjC,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;CAKzB,CAAC;AAEF,MAAM,yBAAyB,GAAG;;;;;;;;CAQjC,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;CAWtB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;CAE5B,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;IAED,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE1B,uBAAuB;IACvB,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,gBAAgB;IAChB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACzB,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3B,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACnC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxB,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE9B,iCAAiC;IACjC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,gCAAgC;QAChC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,gCAAgC;QAChC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,qDAAqD;IACrD,+DAA+D;IAC/D,uBAAuB,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAgB;IAC/C,kEAAkE;IAClE,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC;;GAEjC,CAAC,CAAC,GAAG,EAAiC,CAAC;IAExC,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChE,OAAO,CAAC,mCAAmC;IAC7C,CAAC;IAED,oBAAoB;IACpB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Embedding configuration — resolves provider, model, and API key from
3
+ * explicit options or environment variables.
4
+ */
5
+ export interface EmbeddingConfig {
6
+ provider: string;
7
+ model: string;
8
+ apiKey: string;
9
+ }
10
+ /**
11
+ * Load embedding configuration from explicit options and environment.
12
+ *
13
+ * @param providerName - Provider name (defaults to 'voyage')
14
+ * @param modelName - Model name (defaults to provider's default model)
15
+ * @returns Resolved EmbeddingConfig
16
+ * @throws Error if API key is not set in environment
17
+ */
18
+ export declare function loadEmbeddingConfig(providerName?: string, modelName?: string): EmbeddingConfig;
19
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/engine/embeddings/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAgBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAoB9F"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Embedding configuration — resolves provider, model, and API key from
3
+ * explicit options or environment variables.
4
+ */
5
+ /** Maps provider name → { envVar, defaultModel } */
6
+ const PROVIDER_DEFAULTS = {
7
+ voyage: {
8
+ envVar: 'VOYAGE_API_KEY',
9
+ defaultModel: 'voyage-3-lite',
10
+ },
11
+ openai: {
12
+ envVar: 'OPENAI_API_KEY',
13
+ defaultModel: 'text-embedding-3-small',
14
+ },
15
+ };
16
+ const DEFAULT_PROVIDER = 'voyage';
17
+ /**
18
+ * Load embedding configuration from explicit options and environment.
19
+ *
20
+ * @param providerName - Provider name (defaults to 'voyage')
21
+ * @param modelName - Model name (defaults to provider's default model)
22
+ * @returns Resolved EmbeddingConfig
23
+ * @throws Error if API key is not set in environment
24
+ */
25
+ export function loadEmbeddingConfig(providerName, modelName) {
26
+ const provider = providerName ?? DEFAULT_PROVIDER;
27
+ const defaults = PROVIDER_DEFAULTS[provider];
28
+ if (!defaults) {
29
+ throw new Error(`Unknown embedding provider: '${provider}'. Supported: ${Object.keys(PROVIDER_DEFAULTS).join(', ')}`);
30
+ }
31
+ const model = modelName ?? defaults.defaultModel;
32
+ const apiKey = process.env[defaults.envVar];
33
+ if (!apiKey) {
34
+ throw new Error(`Missing API key for ${provider}: set ${defaults.envVar} environment variable`);
35
+ }
36
+ return { provider, model, apiKey };
37
+ }
38
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/engine/embeddings/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,oDAAoD;AACpD,MAAM,iBAAiB,GAA6D;IAClF,MAAM,EAAE;QACN,MAAM,EAAE,gBAAgB;QACxB,YAAY,EAAE,eAAe;KAC9B;IACD,MAAM,EAAE;QACN,MAAM,EAAE,gBAAgB;QACxB,YAAY,EAAE,wBAAwB;KACvC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAqB,EAAE,SAAkB;IAC3E,MAAM,QAAQ,GAAG,YAAY,IAAI,gBAAgB,CAAC;IAElD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,gCAAgC,QAAQ,iBAAiB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrG,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,SAAS,QAAQ,CAAC,MAAM,uBAAuB,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { EmbeddingProvider } from './provider.js';
2
+ /**
3
+ * Create an embedding provider by name.
4
+ *
5
+ * @param name - Provider name ('voyage', future: 'openai')
6
+ * @param options - Optional overrides for model and API key
7
+ * @returns An EmbeddingProvider instance
8
+ * @throws Error if provider name is unknown
9
+ */
10
+ export declare function createProvider(name: string, options?: {
11
+ model?: string;
12
+ apiKey?: string;
13
+ }): EmbeddingProvider;
14
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/engine/embeddings/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,iBAAiB,CAgBnB"}
@@ -0,0 +1,24 @@
1
+ import { VoyageProvider } from './voyage.js';
2
+ /**
3
+ * Create an embedding provider by name.
4
+ *
5
+ * @param name - Provider name ('voyage', future: 'openai')
6
+ * @param options - Optional overrides for model and API key
7
+ * @returns An EmbeddingProvider instance
8
+ * @throws Error if provider name is unknown
9
+ */
10
+ export function createProvider(name, options) {
11
+ switch (name) {
12
+ case 'voyage':
13
+ if (!options?.apiKey) {
14
+ throw new Error('Voyage provider requires an API key');
15
+ }
16
+ return new VoyageProvider({
17
+ model: options?.model,
18
+ apiKey: options.apiKey,
19
+ });
20
+ default:
21
+ throw new Error(`Unknown embedding provider: '${name}'. Supported providers: voyage`);
22
+ }
23
+ }
24
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/engine/embeddings/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,OAA6C;IAE7C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,cAAc,CAAC;gBACxB,KAAK,EAAE,OAAO,EAAE,KAAK;gBACrB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;QAEL;YACE,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,gCAAgC,CACrE,CAAC;IACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type { EmbeddingProvider } from './provider.js';
2
+ export { VoyageProvider } from './voyage.js';
3
+ export { createProvider } from './factory.js';
4
+ export { loadEmbeddingConfig, type EmbeddingConfig } from './config.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/embeddings/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { VoyageProvider } from './voyage.js';
2
+ export { createProvider } from './factory.js';
3
+ export { loadEmbeddingConfig } from './config.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/embeddings/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * EmbeddingProvider interface — the contract all embedding providers must implement.
3
+ *
4
+ * Providers generate vector embeddings from text for semantic search.
5
+ * Each provider wraps a specific API (Voyage AI, OpenAI, etc.).
6
+ */
7
+ export interface EmbeddingProvider {
8
+ /** Provider identifier, e.g. 'voyage', 'openai' */
9
+ readonly name: string;
10
+ /** Model identifier, e.g. 'voyage-3-lite', 'text-embedding-3-small' */
11
+ readonly model: string;
12
+ /** Output vector dimensions, e.g. 1024, 1536 */
13
+ readonly dimensions: number;
14
+ /**
15
+ * Generate embeddings for a batch of texts.
16
+ * Returns one Float32Array per input text, each of length `dimensions`.
17
+ */
18
+ embed(texts: string[]): Promise<Float32Array[]>;
19
+ }
20
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/engine/embeddings/provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,gDAAgD;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACjD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/engine/embeddings/provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { EmbeddingProvider } from './provider.js';
2
+ export declare class VoyageProvider implements EmbeddingProvider {
3
+ readonly name = "voyage";
4
+ readonly model: string;
5
+ readonly dimensions: number;
6
+ private readonly apiKey;
7
+ constructor(options: {
8
+ model?: string;
9
+ apiKey: string;
10
+ });
11
+ embed(texts: string[]): Promise<Float32Array[]>;
12
+ private embedBatch;
13
+ }
14
+ //# sourceMappingURL=voyage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voyage.d.ts","sourceRoot":"","sources":["../../../src/engine/embeddings/voyage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA4BvD,qBAAa,cAAe,YAAW,iBAAiB;IACtD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAajD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAcvC,UAAU;CAiDzB"}
@@ -0,0 +1,85 @@
1
+ const VOYAGE_API_URL = 'https://api.voyageai.com/v1/embeddings';
2
+ /** Default model — cheapest, 512 dimensions, good for personality insights */
3
+ const DEFAULT_MODEL = 'voyage-3-lite';
4
+ /** Model → dimension mapping for known Voyage models */
5
+ const MODEL_DIMENSIONS = {
6
+ 'voyage-3-lite': 512,
7
+ 'voyage-3': 1024,
8
+ 'voyage-code-3': 1024,
9
+ };
10
+ /** Maximum texts per API request (Voyage limit is 128) */
11
+ const MAX_BATCH_SIZE = 128;
12
+ export class VoyageProvider {
13
+ name = 'voyage';
14
+ model;
15
+ dimensions;
16
+ apiKey;
17
+ constructor(options) {
18
+ this.model = options.model ?? DEFAULT_MODEL;
19
+ this.apiKey = options.apiKey;
20
+ const knownDimensions = MODEL_DIMENSIONS[this.model];
21
+ if (knownDimensions) {
22
+ this.dimensions = knownDimensions;
23
+ }
24
+ else {
25
+ // Unknown model — default to 1024 but warn
26
+ this.dimensions = 1024;
27
+ }
28
+ }
29
+ async embed(texts) {
30
+ if (texts.length === 0)
31
+ return [];
32
+ // Split into batches if needed
33
+ const allResults = [];
34
+ for (let i = 0; i < texts.length; i += MAX_BATCH_SIZE) {
35
+ const batch = texts.slice(i, i + MAX_BATCH_SIZE);
36
+ const batchResults = await this.embedBatch(batch);
37
+ allResults.push(...batchResults);
38
+ }
39
+ return allResults;
40
+ }
41
+ async embedBatch(texts) {
42
+ const response = await fetch(VOYAGE_API_URL, {
43
+ method: 'POST',
44
+ headers: {
45
+ 'Content-Type': 'application/json',
46
+ 'Authorization': `Bearer ${this.apiKey}`,
47
+ },
48
+ body: JSON.stringify({
49
+ input: texts,
50
+ model: this.model,
51
+ }),
52
+ });
53
+ if (!response.ok) {
54
+ const errorBody = await response.text();
55
+ let detail = errorBody;
56
+ try {
57
+ const parsed = JSON.parse(errorBody);
58
+ detail = parsed.detail ?? parsed.message ?? errorBody;
59
+ }
60
+ catch {
61
+ // Use raw body
62
+ }
63
+ if (response.status === 429) {
64
+ throw new Error(`Voyage API rate limited (429): ${detail}`);
65
+ }
66
+ if (response.status === 401) {
67
+ throw new Error(`Voyage API authentication failed (401): check VOYAGE_API_KEY`);
68
+ }
69
+ throw new Error(`Voyage API error (${response.status}): ${detail}`);
70
+ }
71
+ const data = (await response.json());
72
+ if (!data.data || !Array.isArray(data.data)) {
73
+ throw new Error('Voyage API returned unexpected response format: missing data array');
74
+ }
75
+ // Convert number arrays to Float32Arrays and validate dimensions
76
+ return data.data.map((item, index) => {
77
+ const embedding = new Float32Array(item.embedding);
78
+ if (embedding.length !== this.dimensions) {
79
+ throw new Error(`Dimension mismatch for text ${index}: expected ${this.dimensions}, got ${embedding.length}`);
80
+ }
81
+ return embedding;
82
+ });
83
+ }
84
+ }
85
+ //# sourceMappingURL=voyage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voyage.js","sourceRoot":"","sources":["../../../src/engine/embeddings/voyage.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,6 +8,8 @@ import { RetrievalEngine } from './engine/retrieve.js';
8
8
  import { InsightHistory } from './db/history.js';
9
9
  import { marshal, estimateTokens } from './engine/marshal.js';
10
10
  import { detectContext } from './engine/context-detect.js';
11
+ import { loadEmbeddingConfig } from './engine/embeddings/config.js';
12
+ import { createProvider } from './engine/embeddings/factory.js';
11
13
  import { loadCarapaceConfig } from './carapace/config.js';
12
14
  import { CarapaceClient, CarapaceError } from './carapace/client.js';
13
15
  import { mapInsightToContribution, mapContributionToInsight, isPromotable } from './carapace/mapper.js';
@@ -517,14 +519,12 @@ program
517
519
  .option('--budget <number>', 'Token budget for output', '2000')
518
520
  .option('--max-results <number>', 'Maximum insights to consider', '15')
519
521
  .option('--format <fmt>', 'Output format: compact | json | full', 'compact')
520
- .action((opts) => {
522
+ .action(async (opts) => {
521
523
  const dbPath = program.opts().db;
522
524
  const { repo, embeddings } = getDb(dbPath);
523
525
  try {
524
526
  const engine = new RetrievalEngine(repo, embeddings);
525
527
  const context = detectContext(opts.query);
526
- // For now, without real embeddings, fall back to listing by type boost
527
- // TODO: integrate real embedding generation
528
528
  const allInsights = repo.list();
529
529
  if (allInsights.length === 0) {
530
530
  if (opts.format === 'json') {
@@ -535,24 +535,43 @@ program
535
535
  }
536
536
  return;
537
537
  }
538
- // Check if we have embeddings
539
- const missing = embeddings.findMissingEmbeddings();
540
- const hasEmbeddings = missing.length < allInsights.length;
538
+ // Try semantic retrieval with real embeddings
541
539
  let scoredInsights;
542
- if (hasEmbeddings) {
543
- // Use semantic retrieval (need query embedding — placeholder for now)
544
- // TODO: generate real embedding for query
545
- console.error('Note: Real embedding generation not yet wired. Using type-boosted fallback.');
546
- }
547
- // Fallback: score all insights using type boosts and confidence
548
- scoredInsights = allInsights.map(insight => {
549
- const typeBoost = context.typeBoosts[insight.type] ?? 1.0;
550
- const reinforcementFactor = Math.log2(insight.reinforcementCount + 2);
551
- const score = insight.confidence * reinforcementFactor * typeBoost;
552
- return { insight, similarity: 1.0, score };
553
- });
554
- scoredInsights.sort((a, b) => b.score - a.score);
555
- scoredInsights = scoredInsights.slice(0, parseInt(opts.maxResults));
540
+ const embeddingCount = embeddings.countEmbeddings();
541
+ const providerInfo = embeddings.getActiveProviderInfo();
542
+ if (embeddingCount > 0 && providerInfo) {
543
+ // We have embeddings try to generate a query embedding
544
+ let queryEmbedding = null;
545
+ try {
546
+ const config = loadEmbeddingConfig(providerInfo.provider);
547
+ const provider = createProvider(providerInfo.provider, {
548
+ model: providerInfo.model,
549
+ apiKey: config.apiKey,
550
+ });
551
+ const [embedding] = await provider.embed([opts.query]);
552
+ queryEmbedding = embedding;
553
+ }
554
+ catch {
555
+ // API key missing or API error — fall back gracefully
556
+ }
557
+ if (queryEmbedding) {
558
+ scoredInsights = engine.retrieve(queryEmbedding, {
559
+ maxResults: parseInt(opts.maxResults),
560
+ typeBoosts: context.typeBoosts,
561
+ });
562
+ }
563
+ }
564
+ // Fallback: score all insights using type boosts and confidence (no semantic search)
565
+ if (!scoredInsights) {
566
+ scoredInsights = allInsights.map(insight => {
567
+ const typeBoost = context.typeBoosts[insight.type] ?? 1.0;
568
+ const reinforcementFactor = Math.log2(insight.reinforcementCount + 2);
569
+ const score = insight.confidence * reinforcementFactor * typeBoost;
570
+ return { insight, similarity: 1.0, score };
571
+ });
572
+ scoredInsights.sort((a, b) => b.score - a.score);
573
+ scoredInsights = scoredInsights.slice(0, parseInt(opts.maxResults));
574
+ }
556
575
  const budget = parseInt(opts.budget);
557
576
  if (opts.format === 'json') {
558
577
  const output = marshal(scoredInsights, { tokenBudget: budget });
@@ -581,6 +600,129 @@ program
581
600
  closeDatabase();
582
601
  }
583
602
  });
603
+ // === embed ===
604
+ program
605
+ .command('embed')
606
+ .description('Generate embeddings for insights using the configured provider')
607
+ .option('--provider <name>', 'Embedding provider (default: voyage)', 'voyage')
608
+ .option('--model <name>', 'Model name (default: provider default)')
609
+ .option('--force', 'Re-embed all insights, even those already embedded')
610
+ .option('--format <fmt>', 'Output format: json | human', 'human')
611
+ .action(async (opts) => {
612
+ const dbPath = program.opts().db;
613
+ const { repo, embeddings } = getDb(dbPath);
614
+ try {
615
+ // Load config (validates API key is present)
616
+ const config = loadEmbeddingConfig(opts.provider, opts.model);
617
+ const provider = createProvider(config.provider, {
618
+ model: config.model,
619
+ apiKey: config.apiKey,
620
+ });
621
+ const allInsights = repo.list();
622
+ if (allInsights.length === 0) {
623
+ console.log('No insights to embed.');
624
+ return;
625
+ }
626
+ // Determine which insights need embedding
627
+ let insightIds;
628
+ if (opts.force) {
629
+ // Re-embed everything — clear old data first
630
+ embeddings.clearAll();
631
+ insightIds = allInsights.map(i => i.id);
632
+ }
633
+ else {
634
+ insightIds = embeddings.findMissingEmbeddings();
635
+ }
636
+ if (insightIds.length === 0) {
637
+ if (opts.format === 'json') {
638
+ console.log(JSON.stringify({ embedded: 0, total: allInsights.length, provider: config.provider, model: config.model }));
639
+ }
640
+ else {
641
+ console.log('All insights already have embeddings. Use --force to re-embed.');
642
+ }
643
+ return;
644
+ }
645
+ if (opts.format !== 'json') {
646
+ console.log(`Embedding ${insightIds.length} insight(s) with ${config.provider}/${config.model}...`);
647
+ }
648
+ // Build texts for embedding: claim + context for richer vectors
649
+ const insightsToEmbed = insightIds.map(id => {
650
+ const insight = allInsights.find(i => i.id === id) ?? repo.get(id);
651
+ return insight;
652
+ });
653
+ const texts = insightsToEmbed.map(i => {
654
+ const parts = [i.claim];
655
+ if (i.context)
656
+ parts.push(i.context);
657
+ if (i.reasoning)
658
+ parts.push(i.reasoning);
659
+ return parts.join(' — ');
660
+ });
661
+ // Generate embeddings
662
+ const vectors = await provider.embed(texts);
663
+ // Store embeddings and metadata
664
+ for (let i = 0; i < insightsToEmbed.length; i++) {
665
+ embeddings.upsert(insightsToEmbed[i].id, vectors[i]);
666
+ embeddings.upsertMetadata(insightsToEmbed[i].id, config.provider, config.model, provider.dimensions);
667
+ }
668
+ if (opts.format === 'json') {
669
+ console.log(JSON.stringify({
670
+ embedded: insightIds.length,
671
+ total: allInsights.length,
672
+ provider: config.provider,
673
+ model: config.model,
674
+ dimensions: provider.dimensions,
675
+ }));
676
+ }
677
+ else {
678
+ console.log(`✓ Embedded ${insightIds.length} insight(s) (${provider.dimensions} dimensions)`);
679
+ }
680
+ }
681
+ finally {
682
+ closeDatabase();
683
+ }
684
+ });
685
+ // === embed-status ===
686
+ program
687
+ .command('embed-status')
688
+ .description('Show embedding status for insights')
689
+ .option('--format <fmt>', 'Output format: json | human', 'human')
690
+ .action((opts) => {
691
+ const dbPath = program.opts().db;
692
+ const { repo, embeddings } = getDb(dbPath);
693
+ try {
694
+ const totalInsights = repo.list().length;
695
+ const embeddedCount = embeddings.countEmbeddings();
696
+ const missingCount = embeddings.findMissingEmbeddings().length;
697
+ const providerInfo = embeddings.getActiveProviderInfo();
698
+ if (opts.format === 'json') {
699
+ console.log(JSON.stringify({
700
+ total: totalInsights,
701
+ embedded: embeddedCount,
702
+ missing: missingCount,
703
+ provider: providerInfo?.provider ?? null,
704
+ model: providerInfo?.model ?? null,
705
+ dimensions: providerInfo?.dimensions ?? null,
706
+ }));
707
+ }
708
+ else {
709
+ console.log('Embedding Status');
710
+ console.log(` Total insights: ${totalInsights}`);
711
+ console.log(` With embeddings: ${embeddedCount}`);
712
+ console.log(` Missing embeddings: ${missingCount}`);
713
+ if (providerInfo) {
714
+ console.log(` Provider: ${providerInfo.provider}/${providerInfo.model}`);
715
+ console.log(` Dimensions: ${providerInfo.dimensions}`);
716
+ }
717
+ else {
718
+ console.log(' Provider: (none — run `chitin embed` to generate)');
719
+ }
720
+ }
721
+ }
722
+ finally {
723
+ closeDatabase();
724
+ }
725
+ });
584
726
  // === export ===
585
727
  program
586
728
  .command('export')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: chitin
3
+ description: "Personality persistence layer — injects structured behavioral insights into sessions and queues reflection on session transitions"
4
+ metadata:
5
+ {
6
+ "openclaw":
7
+ {
8
+ "emoji": "🦞",
9
+ "events": ["agent:bootstrap", "command:new", "command:reset"],
10
+ },
11
+ "clawdbot":
12
+ {
13
+ "emoji": "🦞",
14
+ "events": ["agent:bootstrap", "command:new", "command:reset"],
15
+ },
16
+ }
17
+ ---
18
+
19
+ # Chitin Hook
20
+
21
+ ## Bootstrap (agent:bootstrap)
22
+ Injects personality context from the Chitin insight store into every session.
23
+ Runs `chitin retrieve` with session context, adds output as synthetic `PERSONALITY.md`.
24
+
25
+ ## Session Reset (command:new, command:reset)
26
+ Queues a personality reflection marker so the next heartbeat knows to
27
+ extract and persist new insights learned during the ended session.
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Chitin — Personality persistence hook for OpenClaw
3
+ *
4
+ * Two responsibilities:
5
+ * 1. On agent:bootstrap — inject personality context into sessions
6
+ * 2. On command:new/reset — trigger reflection to capture new insights
7
+ */
8
+
9
+ import { execSync } from "node:child_process";
10
+ import fs from "node:fs";
11
+ import path from "node:path";
12
+ import os from "node:os";
13
+
14
+ const DB_PATH = path.join(os.homedir(), ".config", "chitin", "insights.db");
15
+ const CHITIN_DIR = path.join(os.homedir(), "Personal", "chitin");
16
+ const CHITIN_DIST = path.join(CHITIN_DIR, "dist", "index.js");
17
+ const DEFAULT_BUDGET = 2000;
18
+ const DEBUG = !!process.env.CHITIN_DEBUG;
19
+
20
+ function log(...args) {
21
+ if (DEBUG) console.error("[chitin]", ...args);
22
+ }
23
+
24
+ // ──────────────────────────────────────────────
25
+ // Bootstrap: inject personality context
26
+ // ──────────────────────────────────────────────
27
+
28
+ function handleBootstrap(event) {
29
+ const context = event.context;
30
+ if (!context?.bootstrapFiles || !Array.isArray(context.bootstrapFiles)) return;
31
+ if (!fs.existsSync(DB_PATH)) return;
32
+
33
+ const query = buildQueryFromContext(context, event.sessionKey || "unknown");
34
+ if (!query) return;
35
+
36
+ try {
37
+ const result = runChitin(
38
+ `retrieve --query "${escapeShell(query)}" --budget ${DEFAULT_BUDGET} --format compact`
39
+ );
40
+
41
+ if (!result || result.includes("No insights stored")) return;
42
+
43
+ context.bootstrapFiles.push({
44
+ name: "PERSONALITY.md",
45
+ content: [
46
+ "# Personality Context (Chitin)",
47
+ "",
48
+ "These are your learned behavioral patterns and insights.",
49
+ "They persist across sessions. You can update them with `chitin contribute`.",
50
+ "",
51
+ result,
52
+ ].join("\n"),
53
+ missing: false,
54
+ source: "chitin-hook",
55
+ });
56
+
57
+ log(`Injected personality context (${result.length} chars) for ${event.sessionKey}`);
58
+ } catch (err) {
59
+ log(`Bootstrap error: ${err.message || err}`);
60
+ }
61
+ }
62
+
63
+ // ──────────────────────────────────────────────
64
+ // Session reset: trigger reflection
65
+ // ──────────────────────────────────────────────
66
+
67
+ function handleSessionReset(event) {
68
+ // Push a reflection summary as a message that gets delivered before reset
69
+ // This tells the user (and any observers) that insights were captured
70
+ // The actual insight contribution happens via the reflection cron/heartbeat
71
+ // because we don't have LLM access in hooks to extract insights intelligently.
72
+
73
+ // What we CAN do: record that a session ended, so the next heartbeat
74
+ // knows to do a reflection pass.
75
+ try {
76
+ const markerPath = path.join(os.homedir(), ".config", "chitin", "pending-reflection.json");
77
+ const marker = {
78
+ sessionKey: event.sessionKey || "unknown",
79
+ timestamp: new Date().toISOString(),
80
+ reason: event.action, // "new" or "reset"
81
+ };
82
+
83
+ // Append to pending reflections (array)
84
+ let pending = [];
85
+ if (fs.existsSync(markerPath)) {
86
+ try {
87
+ pending = JSON.parse(fs.readFileSync(markerPath, "utf-8"));
88
+ if (!Array.isArray(pending)) pending = [];
89
+ } catch { pending = []; }
90
+ }
91
+ pending.push(marker);
92
+
93
+ // Keep only last 10
94
+ if (pending.length > 10) pending = pending.slice(-10);
95
+
96
+ fs.writeFileSync(markerPath, JSON.stringify(pending, null, 2));
97
+ log(`Queued reflection for session ${event.sessionKey} (${event.action})`);
98
+ } catch (err) {
99
+ log(`Reset handler error: ${err.message || err}`);
100
+ }
101
+ }
102
+
103
+ // ──────────────────────────────────────────────
104
+ // Main handler
105
+ // ──────────────────────────────────────────────
106
+
107
+ export default async function handler(event) {
108
+ if (event.type === "agent" && event.action === "bootstrap") {
109
+ handleBootstrap(event);
110
+ return;
111
+ }
112
+
113
+ if (event.type === "command" && (event.action === "new" || event.action === "reset")) {
114
+ handleSessionReset(event);
115
+ return;
116
+ }
117
+ }
118
+
119
+ // ──────────────────────────────────────────────
120
+ // Utilities
121
+ // ──────────────────────────────────────────────
122
+
123
+ function runChitin(args) {
124
+ // Use compiled dist if available (much faster than npx tsx)
125
+ const useCompiled = fs.existsSync(CHITIN_DIST);
126
+ const command = useCompiled
127
+ ? `node "${CHITIN_DIST}" --db "${DB_PATH}" ${args}`
128
+ : `npx tsx "${path.join(CHITIN_DIR, "src", "index.ts")}" --db "${DB_PATH}" ${args}`;
129
+
130
+ log(`Running chitin via ${useCompiled ? "compiled dist" : "tsx fallback"}`);
131
+
132
+ return execSync(command, {
133
+ cwd: CHITIN_DIR,
134
+ encoding: "utf-8",
135
+ timeout: useCompiled ? 3000 : 5000,
136
+ stdio: ["pipe", "pipe", "pipe"],
137
+ }).trim();
138
+ }
139
+
140
+ function buildQueryFromContext(context, sessionKey) {
141
+ const parts = [];
142
+ if (context.agentId) parts.push(`agent: ${context.agentId}`);
143
+
144
+ if (sessionKey.includes("telegram")) parts.push("telegram chat");
145
+ else if (sessionKey.includes("discord")) parts.push("discord group chat");
146
+ else if (sessionKey.includes("slack")) parts.push("slack work chat");
147
+ else if (sessionKey.includes("webchat")) parts.push("webchat direct conversation");
148
+ else if (sessionKey.includes("subagent")) parts.push("sub-agent task execution");
149
+
150
+ if (parts.length === 0) parts.push("general assistant session");
151
+ return parts.join(", ");
152
+ }
153
+
154
+ function escapeShell(str) {
155
+ return str.replace(/"/g, '\\"').replace(/\$/g, "\\$").replace(/`/g, "\\`");
156
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawdactual/chitin",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "Personality persistence layer for AI agents. Structured insights about how you think, not what you remember.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,10 +9,16 @@
9
9
  },
10
10
  "files": [
11
11
  "dist",
12
+ "hooks",
12
13
  "seed.json",
13
14
  "LICENSE",
14
15
  "README.md"
15
16
  ],
17
+ "openclaw": {
18
+ "hooks": [
19
+ "./hooks/chitin"
20
+ ]
21
+ },
16
22
  "scripts": {
17
23
  "build": "tsc",
18
24
  "prepare": "npm run build",