@infilectai/aira 0.0.0-stage → 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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -2
  3. package/bin/aira-capture +0 -0
  4. package/dist/attribution.d.ts +118 -0
  5. package/dist/attribution.d.ts.map +1 -0
  6. package/dist/attribution.js +626 -0
  7. package/dist/attribution.js.map +1 -0
  8. package/dist/audio.d.ts +26 -0
  9. package/dist/audio.d.ts.map +1 -0
  10. package/dist/audio.js +172 -0
  11. package/dist/audio.js.map +1 -0
  12. package/dist/brain.d.ts +11 -0
  13. package/dist/brain.d.ts.map +1 -0
  14. package/dist/brain.js +70 -0
  15. package/dist/brain.js.map +1 -0
  16. package/dist/capture.d.ts +48 -0
  17. package/dist/capture.d.ts.map +1 -0
  18. package/dist/capture.js +195 -0
  19. package/dist/capture.js.map +1 -0
  20. package/dist/engine.d.ts +61 -0
  21. package/dist/engine.d.ts.map +1 -0
  22. package/dist/engine.js +471 -0
  23. package/dist/engine.js.map +1 -0
  24. package/dist/eyes.d.ts +60 -0
  25. package/dist/eyes.d.ts.map +1 -0
  26. package/dist/eyes.js +173 -0
  27. package/dist/eyes.js.map +1 -0
  28. package/dist/index.d.ts +11 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +9 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/lockfile.d.ts +14 -0
  33. package/dist/lockfile.d.ts.map +1 -0
  34. package/dist/lockfile.js +38 -0
  35. package/dist/lockfile.js.map +1 -0
  36. package/dist/providers.d.ts +162 -0
  37. package/dist/providers.d.ts.map +1 -0
  38. package/dist/providers.js +374 -0
  39. package/dist/providers.js.map +1 -0
  40. package/dist/transport.d.ts +14 -0
  41. package/dist/transport.d.ts.map +1 -0
  42. package/dist/transport.js +44 -0
  43. package/dist/transport.js.map +1 -0
  44. package/dist/types.d.ts +175 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +2 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/vectors.d.ts +10 -0
  49. package/dist/vectors.d.ts.map +1 -0
  50. package/dist/vectors.js +66 -0
  51. package/dist/vectors.js.map +1 -0
  52. package/native/AiraCapture.swift +1142 -0
  53. package/native/Info.plist +26 -0
  54. package/native/NativeMeetingScraper.swift +1277 -0
  55. package/package.json +84 -4
  56. package/scripts/build-capture.cjs +57 -0
  57. package/scripts/postinstall.cjs +29 -0
@@ -0,0 +1,10 @@
1
+ import type { VectorHit, VectorRecord, VectorsOptions } from './types.js';
2
+ export declare class Vectors {
3
+ private readonly db;
4
+ private readonly dim;
5
+ constructor(opts: VectorsOptions);
6
+ addVector(record: VectorRecord): void;
7
+ searchVector(query: Float32Array | number[], topK?: number): VectorHit[];
8
+ close(): void;
9
+ }
10
+ //# sourceMappingURL=vectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMzE,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEhB,IAAI,EAAE,cAAc;IAoBhC,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IA2BrC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,EAAE,IAAI,SAAK,GAAG,SAAS,EAAE;IA4BpE,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,66 @@
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ import * as sqliteVec from 'sqlite-vec';
3
+ const DEFAULT_DIM = 768;
4
+ // In-process vector store backed by SQLite + the sqlite-vec extension.
5
+ // Independent of AiraEngine — instantiate it wherever you need persistence.
6
+ export class Vectors {
7
+ db;
8
+ dim;
9
+ constructor(opts) {
10
+ this.dim = opts.dim ?? DEFAULT_DIM;
11
+ this.db = new DatabaseSync(opts.path, { allowExtension: true });
12
+ this.db.loadExtension(sqliteVec.getLoadablePath());
13
+ this.db.exec(`
14
+ CREATE VIRTUAL TABLE IF NOT EXISTS vec_items USING vec0(
15
+ embedding float[${this.dim}]
16
+ );
17
+ CREATE TABLE IF NOT EXISTS items (
18
+ rowid INTEGER PRIMARY KEY,
19
+ id TEXT UNIQUE NOT NULL,
20
+ metadata TEXT
21
+ );
22
+ `);
23
+ }
24
+ // Insert (or upsert by `id`) a single vector. Re-adding the same id
25
+ // replaces both the embedding and the metadata.
26
+ addVector(record) {
27
+ if (record.embedding.length !== this.dim) {
28
+ throw new Error(`embedding length ${record.embedding.length} does not match configured dim ${this.dim}`);
29
+ }
30
+ const blob = Buffer.from(new Float32Array(record.embedding).buffer);
31
+ const meta = record.metadata ? JSON.stringify(record.metadata) : null;
32
+ const upsertMeta = this.db.prepare(`INSERT INTO items(id, metadata) VALUES (?, ?)
33
+ ON CONFLICT(id) DO UPDATE SET metadata = excluded.metadata
34
+ RETURNING rowid`);
35
+ const row = upsertMeta.get(record.id, meta);
36
+ // vec0 virtual tables don't support ON CONFLICT upserts and reject JS
37
+ // floats for the rowid binding (node:sqlite passes plain numbers as
38
+ // REAL). Cast to BigInt and clear-then-reinsert.
39
+ const rowid = BigInt(row.rowid);
40
+ this.db.prepare(`DELETE FROM vec_items WHERE rowid = ?`).run(rowid);
41
+ this.db.prepare(`INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)`).run(rowid, blob);
42
+ }
43
+ // k-nearest-neighbour search. Returns up to `topK` hits ordered by
44
+ // ascending L2 distance.
45
+ searchVector(query, topK = 10) {
46
+ if (query.length !== this.dim) {
47
+ throw new Error(`query length ${query.length} does not match configured dim ${this.dim}`);
48
+ }
49
+ const blob = Buffer.from(new Float32Array(query).buffer);
50
+ const stmt = this.db.prepare(`SELECT items.id AS id, vec_items.distance AS distance, items.metadata AS metadata
51
+ FROM vec_items
52
+ JOIN items ON items.rowid = vec_items.rowid
53
+ WHERE vec_items.embedding MATCH ? AND k = ?
54
+ ORDER BY vec_items.distance`);
55
+ const rows = stmt.all(blob, topK);
56
+ return rows.map((r) => ({
57
+ id: r.id,
58
+ distance: r.distance,
59
+ metadata: r.metadata ? JSON.parse(r.metadata) : undefined,
60
+ }));
61
+ }
62
+ close() {
63
+ this.db.close();
64
+ }
65
+ }
66
+ //# sourceMappingURL=vectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectors.js","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"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"}