@skilldrunk/brain-client 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.
- package/dist/activity.d.ts +19 -0
- package/dist/activity.d.ts.map +1 -0
- package/dist/activity.js +25 -0
- package/dist/activity.js.map +1 -0
- package/dist/archive.d.ts +8 -0
- package/dist/archive.d.ts.map +1 -0
- package/dist/archive.js +13 -0
- package/dist/archive.js.map +1 -0
- package/dist/ask-brain.d.ts +22 -0
- package/dist/ask-brain.d.ts.map +1 -0
- package/dist/ask-brain.js +30 -0
- package/dist/ask-brain.js.map +1 -0
- package/dist/catalog.d.ts +15 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +17 -0
- package/dist/catalog.js.map +1 -0
- package/dist/dashboard.d.ts +8 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +13 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/inventory.d.ts +8 -0
- package/dist/inventory.d.ts.map +1 -0
- package/dist/inventory.js +11 -0
- package/dist/inventory.js.map +1 -0
- package/dist/search.d.ts +12 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +15 -0
- package/dist/search.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -0
- package/dist/supabase-shim.d.ts +2 -0
- package/dist/supabase-shim.d.ts.map +1 -0
- package/dist/supabase-shim.js +2 -0
- package/dist/supabase-shim.js.map +1 -0
- package/dist/types.d.ts +96 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BrainSupabase as SupabaseClient } from "./supabase-shim";
|
|
2
|
+
import type { BrainActivity, BrainSource, Realm } from "./types";
|
|
3
|
+
export interface LogActivityInput {
|
|
4
|
+
realm: Realm;
|
|
5
|
+
source: BrainSource;
|
|
6
|
+
event_type: string;
|
|
7
|
+
title: string;
|
|
8
|
+
body?: string | null;
|
|
9
|
+
url?: string | null;
|
|
10
|
+
item_id?: string | null;
|
|
11
|
+
occurred_at?: string;
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Append a single row to brain_activity.
|
|
16
|
+
* Called by ingestion scripts (vercel webhook handler, github watcher, jax ledger).
|
|
17
|
+
*/
|
|
18
|
+
export declare function logActivity(supabase: SupabaseClient, input: LogActivityInput): Promise<BrainActivity>;
|
|
19
|
+
//# sourceMappingURL=activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC,CAkBxB"}
|
package/dist/activity.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append a single row to brain_activity.
|
|
3
|
+
* Called by ingestion scripts (vercel webhook handler, github watcher, jax ledger).
|
|
4
|
+
*/
|
|
5
|
+
export async function logActivity(supabase, input) {
|
|
6
|
+
const { data, error } = await supabase
|
|
7
|
+
.from("brain_activity")
|
|
8
|
+
.insert({
|
|
9
|
+
realm: input.realm,
|
|
10
|
+
source: input.source,
|
|
11
|
+
event_type: input.event_type,
|
|
12
|
+
item_id: input.item_id ?? null,
|
|
13
|
+
title: input.title,
|
|
14
|
+
body: input.body ?? null,
|
|
15
|
+
url: input.url ?? null,
|
|
16
|
+
occurred_at: input.occurred_at ?? new Date().toISOString(),
|
|
17
|
+
metadata: input.metadata ?? {},
|
|
18
|
+
})
|
|
19
|
+
.select()
|
|
20
|
+
.single();
|
|
21
|
+
if (error)
|
|
22
|
+
throw error;
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAwB,EACxB,KAAuB;IAEvB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;SACnC,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,CAAC;QACN,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC1D,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;KAC/B,CAAC;SACD,MAAM,EAAE;SACR,MAAM,EAAE,CAAC;IACZ,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IACvB,OAAO,IAAqB,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BrainSupabase as SupabaseClient } from "./supabase-shim";
|
|
2
|
+
import type { BrainItem } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Soft-delete a brain item — sets status='archived'.
|
|
5
|
+
* Goes through SECURITY DEFINER RPC because the table has no DELETE RLS policy.
|
|
6
|
+
*/
|
|
7
|
+
export declare function archiveItem(supabase: SupabaseClient, id: string): Promise<BrainItem>;
|
|
8
|
+
//# sourceMappingURL=archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,cAAc,EACxB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,CAAC,CAMpB"}
|
package/dist/archive.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Soft-delete a brain item — sets status='archived'.
|
|
3
|
+
* Goes through SECURITY DEFINER RPC because the table has no DELETE RLS policy.
|
|
4
|
+
*/
|
|
5
|
+
export async function archiveItem(supabase, id) {
|
|
6
|
+
const { data, error } = await supabase.rpc("brain_item_archive", {
|
|
7
|
+
p_id: id,
|
|
8
|
+
});
|
|
9
|
+
if (error)
|
|
10
|
+
throw error;
|
|
11
|
+
return data;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAwB,EACxB,EAAU;IAEV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE;QAC/D,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IACvB,OAAO,IAAiB,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { BrainSupabase as SupabaseClient } from "./supabase-shim";
|
|
2
|
+
import type { BrainItem, Realm } from "./types";
|
|
3
|
+
export interface AskBrainOpts {
|
|
4
|
+
realm?: Realm | "auto";
|
|
5
|
+
domain?: "skilldrunk" | "skimsoulfat";
|
|
6
|
+
limit?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface AskBrainResult {
|
|
9
|
+
answer: string;
|
|
10
|
+
sources: BrainItem[];
|
|
11
|
+
realm_resolved: Realm;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Stub for Faz 1 — Faz 4 will wire this to /api/brain/ask which uses
|
|
15
|
+
* embedding-based vector search + Claude Haiku synthesis.
|
|
16
|
+
*
|
|
17
|
+
* For now this falls back to FTS search via brain_search so dependent
|
|
18
|
+
* UI can render against a known shape (`searchBrain` results wrapped in
|
|
19
|
+
* an empty `answer`).
|
|
20
|
+
*/
|
|
21
|
+
export declare function askBrain(supabase: SupabaseClient, query: string, opts?: AskBrainOpts): Promise<AskBrainResult>;
|
|
22
|
+
//# sourceMappingURL=ask-brain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-brain.d.ts","sourceRoot":"","sources":["../src/ask-brain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,cAAc,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,cAAc,CAAC,CAuBzB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stub for Faz 1 — Faz 4 will wire this to /api/brain/ask which uses
|
|
3
|
+
* embedding-based vector search + Claude Haiku synthesis.
|
|
4
|
+
*
|
|
5
|
+
* For now this falls back to FTS search via brain_search so dependent
|
|
6
|
+
* UI can render against a known shape (`searchBrain` results wrapped in
|
|
7
|
+
* an empty `answer`).
|
|
8
|
+
*/
|
|
9
|
+
export async function askBrain(supabase, query, opts = {}) {
|
|
10
|
+
const realm = opts.realm && opts.realm !== "auto"
|
|
11
|
+
? opts.realm
|
|
12
|
+
: opts.domain === "skilldrunk"
|
|
13
|
+
? "work"
|
|
14
|
+
: opts.domain === "skimsoulfat"
|
|
15
|
+
? "personal"
|
|
16
|
+
: "shared";
|
|
17
|
+
const { data, error } = await supabase.rpc("brain_search", {
|
|
18
|
+
p_query: query,
|
|
19
|
+
p_realm: realm === "shared" ? null : realm,
|
|
20
|
+
p_limit: opts.limit ?? 8,
|
|
21
|
+
});
|
|
22
|
+
if (error)
|
|
23
|
+
throw error;
|
|
24
|
+
return {
|
|
25
|
+
answer: "[Faz 4 placeholder] AI sentezi henüz aktif değil — şu an FTS sonuçları döner.",
|
|
26
|
+
sources: (data ?? []),
|
|
27
|
+
realm_resolved: realm,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ask-brain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-brain.js","sourceRoot":"","sources":["../src/ask-brain.ts"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAwB,EACxB,KAAa,EACb,OAAqB,EAAE;IAEvB,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;QACjC,CAAC,CAAC,IAAI,CAAC,KAAK;QACZ,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa;gBAC7B,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,QAAQ,CAAC;IAEnB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE;QACzD,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;QAC1C,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;KACzB,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IAEvB,OAAO;QACL,MAAM,EACJ,+EAA+E;QACjF,OAAO,EAAE,CAAC,IAAI,IAAI,EAAE,CAAgB;QACpC,cAAc,EAAE,KAAK;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { BrainSupabase as SupabaseClient } from "./supabase-shim";
|
|
2
|
+
import type { BrainItem, Domain } from "./types";
|
|
3
|
+
export interface FetchCatalogOpts {
|
|
4
|
+
domain: Domain;
|
|
5
|
+
category?: string | null;
|
|
6
|
+
limit?: number;
|
|
7
|
+
offset?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Server-shuffled catalog feed for the /catalog page.
|
|
11
|
+
* Each call returns a different order (D-004) — set Cache-Control: no-store
|
|
12
|
+
* on the route that uses this.
|
|
13
|
+
*/
|
|
14
|
+
export declare function fetchCatalog(supabase: SupabaseClient, opts: FetchCatalogOpts): Promise<BrainItem[]>;
|
|
15
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,SAAS,EAAE,CAAC,CAStB"}
|
package/dist/catalog.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-shuffled catalog feed for the /catalog page.
|
|
3
|
+
* Each call returns a different order (D-004) — set Cache-Control: no-store
|
|
4
|
+
* on the route that uses this.
|
|
5
|
+
*/
|
|
6
|
+
export async function fetchCatalog(supabase, opts) {
|
|
7
|
+
const { data, error } = await supabase.rpc("brain_catalog_shuffle", {
|
|
8
|
+
p_domain: opts.domain,
|
|
9
|
+
p_category: opts.category ?? null,
|
|
10
|
+
p_limit: opts.limit ?? 24,
|
|
11
|
+
p_offset: opts.offset ?? 0,
|
|
12
|
+
});
|
|
13
|
+
if (error)
|
|
14
|
+
throw error;
|
|
15
|
+
return (data ?? []);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAwB,EACxB,IAAsB;IAEtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,uBAAuB,EAAE;QAClE,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QACjC,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACzB,QAAQ,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IACvB,OAAO,CAAC,IAAI,IAAI,EAAE,CAAgB,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BrainSupabase as SupabaseClient } from "./supabase-shim";
|
|
2
|
+
import type { DashboardPayload, Realm } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Single-call hydration for the /home dashboard.
|
|
5
|
+
* Returns kpi + today's digest + last 10 activity + 12-item catalog preview + counts.
|
|
6
|
+
*/
|
|
7
|
+
export declare function fetchDashboard(supabase: SupabaseClient, realm: Realm): Promise<DashboardPayload>;
|
|
8
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEvD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,gBAAgB,CAAC,CAM3B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single-call hydration for the /home dashboard.
|
|
3
|
+
* Returns kpi + today's digest + last 10 activity + 12-item catalog preview + counts.
|
|
4
|
+
*/
|
|
5
|
+
export async function fetchDashboard(supabase, realm) {
|
|
6
|
+
const { data, error } = await supabase.rpc("brain_dashboard_payload", {
|
|
7
|
+
p_realm: realm,
|
|
8
|
+
});
|
|
9
|
+
if (error)
|
|
10
|
+
throw error;
|
|
11
|
+
return data;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAwB,EACxB,KAAY;IAEZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,yBAAyB,EAAE;QACpE,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IACvB,OAAO,IAAwB,CAAC;AAClC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { askBrain } from "./ask-brain";
|
|
2
|
+
export { fetchCatalog } from "./catalog";
|
|
3
|
+
export { fetchDashboard } from "./dashboard";
|
|
4
|
+
export { logActivity } from "./activity";
|
|
5
|
+
export { searchBrain } from "./search";
|
|
6
|
+
export { fetchInventory } from "./inventory";
|
|
7
|
+
export { archiveItem } from "./archive";
|
|
8
|
+
export type { Realm, Domain, BrainKind, BrainSource, BrainStatus, BrainItem, BrainActivity, BrainDigest, BrainKpi, DashboardPayload, InventoryReport, } from "./types";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,YAAY,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,eAAe,GAChB,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// @skilldrunk/brain-client — Dual-Brain Web shared client.
|
|
2
|
+
// Faz 1 scope: typed wrappers around brain_* RPCs + tables.
|
|
3
|
+
// Consumers: skilldrunk apps (workspace alias), skimsoulfat-app (npm, after publish).
|
|
4
|
+
export { askBrain } from "./ask-brain";
|
|
5
|
+
export { fetchCatalog } from "./catalog";
|
|
6
|
+
export { fetchDashboard } from "./dashboard";
|
|
7
|
+
export { logActivity } from "./activity";
|
|
8
|
+
export { searchBrain } from "./search";
|
|
9
|
+
export { fetchInventory } from "./inventory";
|
|
10
|
+
export { archiveItem } from "./archive";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,4DAA4D;AAC5D,sFAAsF;AAEtF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BrainSupabase as SupabaseClient } from "./supabase-shim";
|
|
2
|
+
import type { InventoryReport } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Health snapshot — items per source/realm/status, stale items (>7d),
|
|
5
|
+
* embedding coverage. Used by /ops dashboards and CI smoke tests.
|
|
6
|
+
*/
|
|
7
|
+
export declare function fetchInventory(supabase: SupabaseClient): Promise<InventoryReport>;
|
|
8
|
+
//# sourceMappingURL=inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../src/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC,CAI1B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health snapshot — items per source/realm/status, stale items (>7d),
|
|
3
|
+
* embedding coverage. Used by /ops dashboards and CI smoke tests.
|
|
4
|
+
*/
|
|
5
|
+
export async function fetchInventory(supabase) {
|
|
6
|
+
const { data, error } = await supabase.rpc("brain_inventory_check");
|
|
7
|
+
if (error)
|
|
8
|
+
throw error;
|
|
9
|
+
return data;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../src/inventory.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAwB;IAExB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACpE,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IACvB,OAAO,IAAuB,CAAC;AACjC,CAAC"}
|
package/dist/search.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BrainSupabase as SupabaseClient } from "./supabase-shim";
|
|
2
|
+
import type { BrainItem, Realm } from "./types";
|
|
3
|
+
export interface SearchBrainOpts {
|
|
4
|
+
realm?: Realm | null;
|
|
5
|
+
limit?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* FTS + trigram fallback search across title/subtitle/description/category.
|
|
9
|
+
* Vector-based semantic search arrives in Faz 4 as `searchBrainVector`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function searchBrain(supabase: SupabaseClient, query: string, opts?: SearchBrainOpts): Promise<BrainItem[]>;
|
|
12
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC,CAQtB"}
|
package/dist/search.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FTS + trigram fallback search across title/subtitle/description/category.
|
|
3
|
+
* Vector-based semantic search arrives in Faz 4 as `searchBrainVector`.
|
|
4
|
+
*/
|
|
5
|
+
export async function searchBrain(supabase, query, opts = {}) {
|
|
6
|
+
const { data, error } = await supabase.rpc("brain_search", {
|
|
7
|
+
p_query: query,
|
|
8
|
+
p_realm: opts.realm ?? null,
|
|
9
|
+
p_limit: opts.limit ?? 20,
|
|
10
|
+
});
|
|
11
|
+
if (error)
|
|
12
|
+
throw error;
|
|
13
|
+
return (data ?? []);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAwB,EACxB,KAAa,EACb,OAAwB,EAAE;IAE1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE;QACzD,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;KAC1B,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IACvB,OAAO,CAAC,IAAI,IAAI,EAAE,CAAgB,CAAC;AACrC,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,oFAAoF;AACpF,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-shim.d.ts","sourceRoot":"","sources":["../src/supabase-shim.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-shim.js","sourceRoot":"","sources":["../src/supabase-shim.ts"],"names":[],"mappings":""}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export type Realm = "work" | "personal" | "shared";
|
|
2
|
+
export type BrainKind = "project" | "prototype" | "tool" | "bot" | "note" | "external_app" | "service";
|
|
3
|
+
export type BrainSource = "vercel" | "github" | "replit" | "lovable" | "google_ai_studio" | "obsidian" | "manual" | "admin_app";
|
|
4
|
+
export type BrainStatus = "active" | "archived" | "draft" | "broken";
|
|
5
|
+
export type Domain = "skilldrunk" | "skimsoulfat";
|
|
6
|
+
export interface BrainItem {
|
|
7
|
+
id: string;
|
|
8
|
+
realm: Realm;
|
|
9
|
+
kind: BrainKind;
|
|
10
|
+
source: BrainSource;
|
|
11
|
+
external_id: string | null;
|
|
12
|
+
slug: string | null;
|
|
13
|
+
title: string;
|
|
14
|
+
subtitle: string | null;
|
|
15
|
+
description: string | null;
|
|
16
|
+
category: string | null;
|
|
17
|
+
status: BrainStatus;
|
|
18
|
+
url: string | null;
|
|
19
|
+
cover_url: string | null;
|
|
20
|
+
icon_url: string | null;
|
|
21
|
+
visible_skilldrunk: boolean;
|
|
22
|
+
visible_skimsoulfat: boolean;
|
|
23
|
+
ingested_at: string;
|
|
24
|
+
last_synced_at: string | null;
|
|
25
|
+
metadata: Record<string, unknown>;
|
|
26
|
+
embedding: number[] | null;
|
|
27
|
+
created_at: string;
|
|
28
|
+
updated_at: string;
|
|
29
|
+
}
|
|
30
|
+
export interface BrainActivity {
|
|
31
|
+
id: string;
|
|
32
|
+
realm: Realm;
|
|
33
|
+
source: BrainSource;
|
|
34
|
+
event_type: string;
|
|
35
|
+
item_id: string | null;
|
|
36
|
+
title: string;
|
|
37
|
+
body: string | null;
|
|
38
|
+
url: string | null;
|
|
39
|
+
occurred_at: string;
|
|
40
|
+
metadata: Record<string, unknown>;
|
|
41
|
+
created_at: string;
|
|
42
|
+
}
|
|
43
|
+
export interface BrainDigest {
|
|
44
|
+
id: number;
|
|
45
|
+
realm: Realm;
|
|
46
|
+
digest_date: string;
|
|
47
|
+
summary: string;
|
|
48
|
+
highlights: Array<Record<string, unknown>>;
|
|
49
|
+
generated_at: string;
|
|
50
|
+
}
|
|
51
|
+
export interface BrainKpi {
|
|
52
|
+
key: string;
|
|
53
|
+
value: number;
|
|
54
|
+
delta_pct: number | null;
|
|
55
|
+
captured_at: string;
|
|
56
|
+
}
|
|
57
|
+
/** Shape returned by `brain_dashboard_payload(p_realm)` RPC. */
|
|
58
|
+
export interface DashboardPayload {
|
|
59
|
+
realm: Realm;
|
|
60
|
+
as_of: string;
|
|
61
|
+
kpi: BrainKpi[];
|
|
62
|
+
digest: {
|
|
63
|
+
date: string;
|
|
64
|
+
summary: string;
|
|
65
|
+
highlights: Array<Record<string, unknown>>;
|
|
66
|
+
generated_at: string;
|
|
67
|
+
} | null;
|
|
68
|
+
activity: BrainActivity[];
|
|
69
|
+
catalog_preview: Array<Pick<BrainItem, "id" | "slug" | "title" | "subtitle" | "url" | "cover_url" | "icon_url" | "kind" | "category" | "source" | "status">>;
|
|
70
|
+
counts: {
|
|
71
|
+
items_total: number;
|
|
72
|
+
activity_24h: number;
|
|
73
|
+
archived: number;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/** Shape returned by `brain_inventory_check()` RPC. */
|
|
77
|
+
export interface InventoryReport {
|
|
78
|
+
by_source: Array<{
|
|
79
|
+
source: BrainSource;
|
|
80
|
+
count: number;
|
|
81
|
+
last_synced_at: string | null;
|
|
82
|
+
}>;
|
|
83
|
+
by_realm: Array<{
|
|
84
|
+
realm: Realm;
|
|
85
|
+
count: number;
|
|
86
|
+
}>;
|
|
87
|
+
by_status: Array<{
|
|
88
|
+
status: BrainStatus;
|
|
89
|
+
count: number;
|
|
90
|
+
}>;
|
|
91
|
+
stale_items: number;
|
|
92
|
+
embedding_coverage_pct: number;
|
|
93
|
+
total_items: number;
|
|
94
|
+
generated_at: string;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6DAA6D;AAC7D,sDAAsD"}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@skilldrunk/brain-client",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./server": {
|
|
15
|
+
"types": "./dist/server.d.ts",
|
|
16
|
+
"import": "./dist/server.js",
|
|
17
|
+
"default": "./dist/server.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": ["dist", "README.md"],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc -p tsconfig.build.json",
|
|
23
|
+
"prepublishOnly": "pnpm run build"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"@supabase/supabase-js": "^2.x"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@supabase/supabase-js": "^2.103.0",
|
|
33
|
+
"typescript": "^5"
|
|
34
|
+
}
|
|
35
|
+
}
|