@powerhousedao/knowledge-note 1.0.1 → 1.0.3
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/editors/health-report-editor/editor.d.ts.map +1 -1
- package/dist/editors/health-report-editor/editor.js +100 -17
- package/dist/editors/knowledge-note-editor/editor.d.ts.map +1 -1
- package/dist/editors/knowledge-note-editor/editor.js +12 -3
- package/dist/editors/knowledge-vault/components/DriveExplorer.d.ts.map +1 -1
- package/dist/editors/knowledge-vault/components/GettingStarted.js +26 -7
- package/dist/editors/knowledge-vault/components/GraphView.d.ts +1 -1
- package/dist/editors/knowledge-vault/components/GraphView.d.ts.map +1 -1
- package/dist/editors/knowledge-vault/components/GraphView.js +211 -33
- package/dist/editors/knowledge-vault/components/HealthDashboard.d.ts.map +1 -1
- package/dist/editors/knowledge-vault/components/HealthDashboard.js +16 -4
- package/dist/editors/knowledge-vault/components/NoteList.d.ts.map +1 -1
- package/dist/editors/knowledge-vault/components/NoteList.js +13 -16
- package/dist/editors/knowledge-vault/hooks/use-drive-init.d.ts.map +1 -1
- package/dist/editors/knowledge-vault/hooks/use-drive-init.js +14 -6
- package/dist/editors/moc-editor/editor.d.ts.map +1 -1
- package/dist/editors/moc-editor/editor.js +13 -4
- package/dist/editors/tension-editor/editor.d.ts.map +1 -1
- package/dist/editors/tension-editor/editor.js +60 -9
- package/dist/package.json +2 -2
- package/dist/processors/factory.d.ts.map +1 -1
- package/dist/processors/factory.js +0 -3
- package/dist/processors/graph-indexer/index.d.ts.map +1 -1
- package/dist/processors/graph-indexer/index.js +5 -8
- package/dist/processors/graph-indexer/query.d.ts.map +1 -1
- package/dist/processors/graph-indexer/query.js +2 -1
- package/dist/style.css +82 -0
- package/dist/subgraphs/index.d.ts +0 -1
- package/dist/subgraphs/index.d.ts.map +1 -1
- package/dist/subgraphs/index.js +0 -1
- package/dist/subgraphs/knowledge-graph/subgraph.d.ts +28 -13
- package/dist/subgraphs/knowledge-graph/subgraph.d.ts.map +1 -1
- package/dist/subgraphs/knowledge-graph/subgraph.js +144 -22
- package/dist/tests/processor/graph-indexer.test.js +8 -2
- package/dist/tests/unit/knowledge-note-reducers.test.js +4 -1
- package/dist/tests/unit/lifecycle-state-machine.test.js +16 -4
- package/dist/tests/unit/moc-reducers.test.js +1 -1
- package/dist/tests/unit/pipeline-queue-reducers.test.js +10 -2
- package/package.json +3 -3
- package/dist/processors/methodology-indexer/factory.d.ts +0 -4
- package/dist/processors/methodology-indexer/factory.d.ts.map +0 -1
- package/dist/processors/methodology-indexer/factory.js +0 -23
- package/dist/processors/methodology-indexer/index.d.ts +0 -11
- package/dist/processors/methodology-indexer/index.d.ts.map +0 -1
- package/dist/processors/methodology-indexer/index.js +0 -118
- package/dist/processors/methodology-indexer/migrations.d.ts +0 -4
- package/dist/processors/methodology-indexer/migrations.d.ts.map +0 -1
- package/dist/processors/methodology-indexer/migrations.js +0 -39
- package/dist/processors/methodology-indexer/query.d.ts +0 -35
- package/dist/processors/methodology-indexer/query.d.ts.map +0 -1
- package/dist/processors/methodology-indexer/query.js +0 -102
- package/dist/processors/methodology-indexer/schema.d.ts +0 -22
- package/dist/processors/methodology-indexer/schema.d.ts.map +0 -1
- package/dist/processors/methodology-indexer/schema.js +0 -1
- package/dist/subgraphs/methodology/index.d.ts +0 -2
- package/dist/subgraphs/methodology/index.d.ts.map +0 -1
- package/dist/subgraphs/methodology/index.js +0 -1
- package/dist/subgraphs/methodology/subgraph.d.ts +0 -47
- package/dist/subgraphs/methodology/subgraph.d.ts.map +0 -1
- package/dist/subgraphs/methodology/subgraph.js +0 -87
|
@@ -24,28 +24,79 @@ export default function Editor() {
|
|
|
24
24
|
const involvedNotes = (state.involvedRefs ?? []).map((ref) => {
|
|
25
25
|
const doc = (allDocs ?? []).find((d) => d.header.id === ref);
|
|
26
26
|
const title = doc
|
|
27
|
-
? (doc.state.global
|
|
27
|
+
? (doc.state.global
|
|
28
|
+
.title ?? doc.header.name)
|
|
28
29
|
: ref.slice(0, 12);
|
|
29
30
|
return { ref, title, exists: !!doc };
|
|
30
31
|
});
|
|
31
|
-
return (_jsx("div", { className: "min-h-screen", style: { backgroundColor: "var(--bai-bg)", color: "var(--bai-text)" }, children: _jsxs("div", { className: "mx-auto max-w-3xl", children: [_jsx(DocumentToolbar, { className: TOOLBAR_CLASS }), _jsxs("div", { className: "p-6 space-y-6", children: [_jsxs("div", { className: "rounded-xl p-6", style: {
|
|
32
|
+
return (_jsx("div", { className: "min-h-screen", style: { backgroundColor: "var(--bai-bg)", color: "var(--bai-text)" }, children: _jsxs("div", { className: "mx-auto max-w-3xl", children: [_jsx(DocumentToolbar, { className: TOOLBAR_CLASS }), _jsxs("div", { className: "p-6 space-y-6", children: [_jsxs("div", { className: "rounded-xl p-6", style: {
|
|
33
|
+
backgroundColor: "var(--bai-surface)",
|
|
34
|
+
border: "1px solid var(--bai-border)",
|
|
35
|
+
}, children: [_jsxs("div", { className: "flex items-center gap-3 mb-3", children: [_jsx("span", { className: `rounded-full border px-3 py-1 text-xs font-semibold ${STATUS_COLORS[state.status ?? "OPEN"]}`, children: state.status }), state.observedBy && (_jsxs("span", { className: "text-xs", style: { color: "var(--bai-text-faint)" }, children: ["by ", state.observedBy] })), state.observedAt && (_jsx("span", { className: "text-xs", style: { color: "var(--bai-text-faint)" }, children: new Date(state.observedAt).toLocaleDateString() }))] }), _jsx("h1", { className: "text-xl font-bold", style: { color: "var(--bai-text)" }, children: state.title }), state.description && (_jsx("p", { className: "mt-2 text-sm", style: { color: "var(--bai-text-tertiary)" }, children: state.description }))] }), state.content && (_jsxs("div", { className: "rounded-xl p-6", style: {
|
|
36
|
+
backgroundColor: "var(--bai-surface)",
|
|
37
|
+
border: "1px solid var(--bai-border)",
|
|
38
|
+
}, children: [_jsx("h3", { className: "mb-2 text-xs font-semibold uppercase tracking-wider", style: { color: "var(--bai-text-muted)" }, children: "Analysis" }), _jsx("div", { className: "rounded-lg px-4 py-3", style: {
|
|
39
|
+
backgroundColor: "var(--bai-deep)",
|
|
40
|
+
border: "1px solid var(--bai-border)",
|
|
41
|
+
}, children: _jsx("pre", { className: "whitespace-pre-wrap text-sm leading-relaxed", style: { color: "var(--bai-text-secondary)" }, children: state.content }) })] })), _jsxs("div", { className: "rounded-xl p-6", style: {
|
|
42
|
+
backgroundColor: "var(--bai-surface)",
|
|
43
|
+
border: "1px solid var(--bai-border)",
|
|
44
|
+
}, children: [_jsxs("h3", { className: "mb-3 text-xs font-semibold uppercase tracking-wider", style: { color: "var(--bai-text-muted)" }, children: ["Involved Notes (", involvedNotes.length, ")"] }), _jsx("div", { className: "space-y-2", children: involvedNotes.map((note) => (_jsxs("div", { className: "flex items-center gap-3 rounded-lg px-4 py-3", style: {
|
|
45
|
+
backgroundColor: "var(--bai-bg)",
|
|
46
|
+
border: "1px solid var(--bai-border)",
|
|
47
|
+
}, children: [_jsx("span", { className: "h-2 w-2 shrink-0 rounded-full bg-red-400" }), note.exists ? (_jsx("button", { type: "button", onClick: () => setSelectedNode(note.ref), className: "flex-1 text-left text-xs transition-colors truncate", style: { color: "var(--bai-accent)" }, children: note.title })) : (_jsx("span", { className: "flex-1 text-xs font-mono truncate", style: { color: "var(--bai-text-faint)" }, children: note.ref }))] }, note.ref))) })] }), state.resolution && (_jsxs("div", { className: "rounded-xl p-6", style: {
|
|
48
|
+
backgroundColor: "var(--bai-surface)",
|
|
49
|
+
border: "1px solid var(--bai-border)",
|
|
50
|
+
}, children: [_jsx("h3", { className: "mb-2 text-xs font-semibold uppercase tracking-wider", style: { color: "var(--bai-text-muted)" }, children: "Resolution" }), _jsx("p", { className: "text-sm leading-relaxed", style: { color: "var(--bai-text-secondary)" }, children: state.resolution }), state.resolvedAt && (_jsxs("p", { className: "mt-2 text-[10px]", style: { color: "var(--bai-text-faint)" }, children: ["Resolved ", new Date(state.resolvedAt).toLocaleString()] }))] })), state.status === "OPEN" && (_jsxs("div", { className: "flex gap-3", children: [_jsx("button", { type: "button", onClick: () => {
|
|
32
51
|
const resolution = prompt("How was this resolved? (one side is correct)");
|
|
33
52
|
if (resolution)
|
|
34
53
|
dispatch(actions.resolveTension({ resolution, resolvedAt: ts() }));
|
|
35
|
-
}, className: "rounded-lg px-4 py-2 text-sm font-medium", style: {
|
|
54
|
+
}, className: "rounded-lg px-4 py-2 text-sm font-medium", style: {
|
|
55
|
+
backgroundColor: "var(--bai-accent)",
|
|
56
|
+
color: "var(--bai-accent-text)",
|
|
57
|
+
}, children: "Resolve" }), _jsx("button", { type: "button", onClick: () => {
|
|
36
58
|
const resolution = prompt("Why is this tension apparent, not real?");
|
|
37
59
|
if (resolution)
|
|
38
60
|
dispatch(actions.dissolveTension({ resolution, resolvedAt: ts() }));
|
|
39
|
-
}, className: "rounded-lg px-4 py-2 text-sm font-medium", style: {
|
|
61
|
+
}, className: "rounded-lg px-4 py-2 text-sm font-medium", style: {
|
|
62
|
+
backgroundColor: "var(--bai-hover)",
|
|
63
|
+
color: "var(--bai-text-secondary)",
|
|
64
|
+
}, children: "Dissolve" })] }))] })] }) }));
|
|
40
65
|
}
|
|
41
|
-
function CreateForm({ dispatch }) {
|
|
66
|
+
function CreateForm({ dispatch, }) {
|
|
42
67
|
const [title, setTitle] = useState("");
|
|
43
68
|
const [desc, setDesc] = useState("");
|
|
44
69
|
const [content, setContent] = useState("");
|
|
45
70
|
const [observer, setObserver] = useState("");
|
|
46
71
|
const INPUT = "w-full rounded-lg px-3 py-2 text-sm outline-none focus:border-[#cba6f7]/50";
|
|
47
|
-
return (_jsx("div", { className: "min-h-screen", style: { backgroundColor: "var(--bai-bg)", color: "var(--bai-text)" }, children: _jsxs("div", { className: "mx-auto max-w-2xl", children: [_jsx(DocumentToolbar, { className: TOOLBAR_CLASS }), _jsx("div", { className: "p-6", children: _jsxs("div", { className: "rounded-xl p-8 space-y-4", style: {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
72
|
+
return (_jsx("div", { className: "min-h-screen", style: { backgroundColor: "var(--bai-bg)", color: "var(--bai-text)" }, children: _jsxs("div", { className: "mx-auto max-w-2xl", children: [_jsx(DocumentToolbar, { className: TOOLBAR_CLASS }), _jsx("div", { className: "p-6", children: _jsxs("div", { className: "rounded-xl p-8 space-y-4", style: {
|
|
73
|
+
backgroundColor: "var(--bai-surface)",
|
|
74
|
+
border: "1px solid var(--bai-border)",
|
|
75
|
+
}, children: [_jsx("h2", { className: "text-lg font-bold", style: { color: "var(--bai-text)" }, children: "Identify Tension" }), _jsx("p", { className: "text-xs", style: { color: "var(--bai-text-muted)" }, children: "Record a contradiction between two or more claims in the vault" }), _jsx("input", { type: "text", value: title, onChange: (e) => setTitle(e.target.value), placeholder: "What's the contradiction? (e.g., 'vault as tool vs vault as cognitive infrastructure')", className: INPUT, style: {
|
|
76
|
+
backgroundColor: "var(--bai-bg)",
|
|
77
|
+
color: "var(--bai-text-secondary)",
|
|
78
|
+
border: "1px solid var(--bai-border)",
|
|
79
|
+
} }), _jsx("input", { type: "text", value: desc, onChange: (e) => setDesc(e.target.value), placeholder: "Brief summary of the conflict", className: INPUT, style: {
|
|
80
|
+
backgroundColor: "var(--bai-bg)",
|
|
81
|
+
color: "var(--bai-text-secondary)",
|
|
82
|
+
border: "1px solid var(--bai-border)",
|
|
83
|
+
} }), _jsx("textarea", { value: content, onChange: (e) => setContent(e.target.value), placeholder: "Full analysis of the contradiction \u2014 why it matters, what's at stake...", rows: 6, className: INPUT, style: {
|
|
84
|
+
backgroundColor: "var(--bai-deep)",
|
|
85
|
+
color: "var(--bai-text-secondary)",
|
|
86
|
+
border: "1px solid var(--bai-border)",
|
|
87
|
+
} }), _jsx("input", { type: "text", value: observer, onChange: (e) => setObserver(e.target.value), placeholder: "Observed by (optional)", className: INPUT, style: {
|
|
88
|
+
backgroundColor: "var(--bai-bg)",
|
|
89
|
+
color: "var(--bai-text-secondary)",
|
|
90
|
+
border: "1px solid var(--bai-border)",
|
|
91
|
+
} }), _jsx("button", { type: "button", disabled: !title.trim() || !desc.trim(), onClick: () => dispatch(actions.createTension({
|
|
92
|
+
title,
|
|
93
|
+
description: desc,
|
|
94
|
+
content: content || undefined,
|
|
95
|
+
involvedRefs: [],
|
|
96
|
+
observedAt: ts(),
|
|
97
|
+
observedBy: observer || undefined,
|
|
98
|
+
})), className: "rounded-lg px-4 py-2 text-sm font-medium hover:opacity-80 disabled:opacity-40", style: {
|
|
99
|
+
backgroundColor: "var(--bai-accent)",
|
|
100
|
+
color: "var(--bai-accent-text)",
|
|
101
|
+
}, children: "Create Tension" })] }) })] }) }));
|
|
51
102
|
}
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/knowledge-note",
|
|
3
3
|
"description": "Knowledge Note document model package for Powerhouse",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.3",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"files": [
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"@powerhousedao/document-engineering": "1.40.1",
|
|
114
114
|
"@powerhousedao/vetra": "6.0.0-dev.105",
|
|
115
115
|
"cytoscape": "^3.33.1",
|
|
116
|
-
"cytoscape-
|
|
116
|
+
"cytoscape-fcose": "^2.2.0",
|
|
117
117
|
"document-model": "6.0.0-dev.105",
|
|
118
118
|
"graphql": "16.12.0",
|
|
119
119
|
"graphql-tag": "^2.12.6",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../processors/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EAErB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../processors/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EAErB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,eAAO,MAAM,gBAAgB,GAAI,QAAQ,oBAAoB,MAa7C,aAAa,gBAAgB,KAAG,OAAO,CAAC,eAAe,EAAE,CAUxE,CAAC"}
|
|
@@ -2,14 +2,11 @@
|
|
|
2
2
|
* This file aggregates all processor factories
|
|
3
3
|
*/
|
|
4
4
|
import { graphIndexerProcessorFactory } from "./graph-indexer/factory.js";
|
|
5
|
-
import { methodologyIndexerProcessorFactory } from "./methodology-indexer/factory.js";
|
|
6
5
|
export const processorFactory = (module) => {
|
|
7
6
|
console.log(`[processorFactory] Initializing with processorApp: ${module.processorApp}`);
|
|
8
7
|
const factories = [];
|
|
9
8
|
// Register graph indexer (watches bai/knowledge-note)
|
|
10
9
|
factories.push(graphIndexerProcessorFactory(module));
|
|
11
|
-
// Register methodology indexer (watches bai/research-claim)
|
|
12
|
-
factories.push(methodologyIndexerProcessorFactory(module));
|
|
13
10
|
console.log(`[processorFactory] Loaded ${factories.length} factories`);
|
|
14
11
|
// Return the inner function that will be called for each drive
|
|
15
12
|
return async (driveHeader) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../processors/graph-indexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,qBAAa,qBAAsB,SAAQ,qBAAqB,CAAC,EAAE,CAAC;WAClD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAItC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,YAAY,CACzB,UAAU,EAAE,oBAAoB,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../processors/graph-indexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,qBAAa,qBAAsB,SAAQ,qBAAqB,CAAC,EAAE,CAAC;WAClD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAItC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,YAAY,CACzB,UAAU,EAAE,oBAAoB,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAqGV,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAQrB,UAAU;CAoBzB"}
|
|
@@ -89,14 +89,11 @@ export class GraphIndexerProcessor extends RelationalDbProcessor {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
async onDisconnect() {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
catch (err) {
|
|
98
|
-
console.error(`[GraphIndexer] Error cleaning up:`, err);
|
|
99
|
-
}
|
|
92
|
+
// Intentionally no-op: preserve indexed data across restarts.
|
|
93
|
+
// The reactor does not replay historical operations on reconnect,
|
|
94
|
+
// so wiping tables here would leave the index permanently empty
|
|
95
|
+
// until new operations arrive. Use knowledgeGraphReindex mutation
|
|
96
|
+
// to rebuild if needed.
|
|
100
97
|
}
|
|
101
98
|
async deleteNode(documentId) {
|
|
102
99
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../processors/graph-indexer/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,EAAwB,MAAM,aAAa,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAyBD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;gBAEzB,OAAO,CAAC,eAAe,EAAE,CAAC;gBAK1B,OAAO,CAAC,eAAe,EAAE,CAAC;iCAM9B,MAAM,GACjB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;0BASX,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;mBAS1C,OAAO,CAAC,eAAe,EAAE,CAAC;aAchC,OAAO,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../processors/graph-indexer/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,EAAwB,MAAM,aAAa,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAyBD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;gBAEzB,OAAO,CAAC,eAAe,EAAE,CAAC;gBAK1B,OAAO,CAAC,eAAe,EAAE,CAAC;iCAM9B,MAAM,GACjB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;0BASX,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;mBAS1C,OAAO,CAAC,eAAe,EAAE,CAAC;aAchC,OAAO,CAAC,gBAAgB,CAAC;4BAiB1B,MAAM,sBAEjB,OAAO,CAAC,gBAAgB,EAAE,CAAC;0BA4CF,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;eAS9C,OAAO,CAAC,MAAM,CAAC;uBAOP,MAAM,mBAAe,OAAO,CAAC,eAAe,EAAE,CAAC;6BAgBzC,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;+BASrC,OAAO,CAClC,KAAK,CAAC;QACJ,CAAC,EAAE,eAAe,CAAC;QACnB,CAAC,EAAE,eAAe,CAAC;QACnB,YAAY,EAAE,eAAe,CAAC;KAC/B,CAAC,CACH;eAuDgB,OAAO,CAAC,eAAe,EAAE,CAAC;EA6D9C"}
|
|
@@ -163,7 +163,8 @@ export function createGraphQuery(db) {
|
|
|
163
163
|
const aId = sources[i];
|
|
164
164
|
const bId = sources[j];
|
|
165
165
|
// Check if A→B or B→A exists
|
|
166
|
-
if (!edgeSet.has(`${aId}->${bId}`) &&
|
|
166
|
+
if (!edgeSet.has(`${aId}->${bId}`) &&
|
|
167
|
+
!edgeSet.has(`${bId}->${aId}`)) {
|
|
167
168
|
const a = nodeMap.get(aId);
|
|
168
169
|
const b = nodeMap.get(bId);
|
|
169
170
|
if (a && b) {
|
package/dist/style.css
CHANGED
|
@@ -73,6 +73,7 @@
|
|
|
73
73
|
--font-weight-semibold: 600;
|
|
74
74
|
--font-weight-bold: 700;
|
|
75
75
|
--tracking-wider: 0.05em;
|
|
76
|
+
--leading-snug: 1.375;
|
|
76
77
|
--leading-relaxed: 1.625;
|
|
77
78
|
--radius-md: 0.375rem;
|
|
78
79
|
--radius-lg: 0.5rem;
|
|
@@ -238,6 +239,9 @@
|
|
|
238
239
|
.pointer-events-none {
|
|
239
240
|
pointer-events: none;
|
|
240
241
|
}
|
|
242
|
+
.collapse {
|
|
243
|
+
visibility: collapse;
|
|
244
|
+
}
|
|
241
245
|
.invisible {
|
|
242
246
|
visibility: hidden;
|
|
243
247
|
}
|
|
@@ -256,6 +260,9 @@
|
|
|
256
260
|
.static {
|
|
257
261
|
position: static;
|
|
258
262
|
}
|
|
263
|
+
.sticky {
|
|
264
|
+
position: sticky;
|
|
265
|
+
}
|
|
259
266
|
.inset-0 {
|
|
260
267
|
inset: calc(var(--spacing) * 0);
|
|
261
268
|
}
|
|
@@ -286,6 +293,9 @@
|
|
|
286
293
|
.left-4 {
|
|
287
294
|
left: calc(var(--spacing) * 4);
|
|
288
295
|
}
|
|
296
|
+
.isolate {
|
|
297
|
+
isolation: isolate;
|
|
298
|
+
}
|
|
289
299
|
.z-10 {
|
|
290
300
|
z-index: 10;
|
|
291
301
|
}
|
|
@@ -601,6 +611,9 @@
|
|
|
601
611
|
.max-w-\[120px\] {
|
|
602
612
|
max-width: 120px;
|
|
603
613
|
}
|
|
614
|
+
.max-w-full {
|
|
615
|
+
max-width: 100%;
|
|
616
|
+
}
|
|
604
617
|
.min-w-0 {
|
|
605
618
|
min-width: calc(var(--spacing) * 0);
|
|
606
619
|
}
|
|
@@ -610,9 +623,15 @@
|
|
|
610
623
|
.flex-shrink-0 {
|
|
611
624
|
flex-shrink: 0;
|
|
612
625
|
}
|
|
626
|
+
.shrink {
|
|
627
|
+
flex-shrink: 1;
|
|
628
|
+
}
|
|
613
629
|
.shrink-0 {
|
|
614
630
|
flex-shrink: 0;
|
|
615
631
|
}
|
|
632
|
+
.grow {
|
|
633
|
+
flex-grow: 1;
|
|
634
|
+
}
|
|
616
635
|
.border-collapse {
|
|
617
636
|
border-collapse: collapse;
|
|
618
637
|
}
|
|
@@ -852,6 +871,9 @@
|
|
|
852
871
|
.border-\[\#cba6f7\]\/20 {
|
|
853
872
|
border-color: color-mix(in oklab, #cba6f7 20%, transparent);
|
|
854
873
|
}
|
|
874
|
+
.border-\[var\(--bai-border\)\] {
|
|
875
|
+
border-color: var(--bai-border);
|
|
876
|
+
}
|
|
855
877
|
.border-amber-500\/30 {
|
|
856
878
|
border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 30%, transparent);
|
|
857
879
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -942,6 +964,9 @@
|
|
|
942
964
|
.bg-\[\#cba6f7\]\/10 {
|
|
943
965
|
background-color: color-mix(in oklab, #cba6f7 10%, transparent);
|
|
944
966
|
}
|
|
967
|
+
.bg-\[var\(--bai-surface\)\] {
|
|
968
|
+
background-color: var(--bai-surface);
|
|
969
|
+
}
|
|
945
970
|
.bg-amber-400 {
|
|
946
971
|
background-color: var(--color-amber-400);
|
|
947
972
|
}
|
|
@@ -1222,6 +1247,10 @@
|
|
|
1222
1247
|
--tw-leading: var(--leading-relaxed);
|
|
1223
1248
|
line-height: var(--leading-relaxed);
|
|
1224
1249
|
}
|
|
1250
|
+
.leading-snug {
|
|
1251
|
+
--tw-leading: var(--leading-snug);
|
|
1252
|
+
line-height: var(--leading-snug);
|
|
1253
|
+
}
|
|
1225
1254
|
.font-bold {
|
|
1226
1255
|
--tw-font-weight: var(--font-weight-bold);
|
|
1227
1256
|
font-weight: var(--font-weight-bold);
|
|
@@ -1257,6 +1286,9 @@
|
|
|
1257
1286
|
.text-\[\#cba6f7\]\/40 {
|
|
1258
1287
|
color: color-mix(in oklab, #cba6f7 40%, transparent);
|
|
1259
1288
|
}
|
|
1289
|
+
.text-\[var\(--bai-text\)\] {
|
|
1290
|
+
color: var(--bai-text);
|
|
1291
|
+
}
|
|
1260
1292
|
.text-amber-300 {
|
|
1261
1293
|
color: var(--color-amber-300);
|
|
1262
1294
|
}
|
|
@@ -1348,6 +1380,10 @@
|
|
|
1348
1380
|
.opacity-60 {
|
|
1349
1381
|
opacity: 60%;
|
|
1350
1382
|
}
|
|
1383
|
+
.shadow {
|
|
1384
|
+
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
1385
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1386
|
+
}
|
|
1351
1387
|
.shadow-2xl {
|
|
1352
1388
|
--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
|
|
1353
1389
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -1356,6 +1392,10 @@
|
|
|
1356
1392
|
--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
1357
1393
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1358
1394
|
}
|
|
1395
|
+
.ring {
|
|
1396
|
+
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
1397
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1398
|
+
}
|
|
1359
1399
|
.ring-1 {
|
|
1360
1400
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
1361
1401
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -1372,6 +1412,14 @@
|
|
|
1372
1412
|
--tw-ring-color: color-mix(in oklab, var(--color-white) 5%, transparent);
|
|
1373
1413
|
}
|
|
1374
1414
|
}
|
|
1415
|
+
.outline {
|
|
1416
|
+
outline-style: var(--tw-outline-style);
|
|
1417
|
+
outline-width: 1px;
|
|
1418
|
+
}
|
|
1419
|
+
.blur {
|
|
1420
|
+
--tw-blur: blur(8px);
|
|
1421
|
+
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
|
1422
|
+
}
|
|
1375
1423
|
.filter {
|
|
1376
1424
|
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
|
1377
1425
|
}
|
|
@@ -1416,6 +1464,13 @@
|
|
|
1416
1464
|
}
|
|
1417
1465
|
}
|
|
1418
1466
|
}
|
|
1467
|
+
.group-hover\:text-\[var\(--bai-accent\)\] {
|
|
1468
|
+
&:is(:where(.group):hover *) {
|
|
1469
|
+
@media (hover: hover) {
|
|
1470
|
+
color: var(--bai-accent);
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
}
|
|
1419
1474
|
.group-hover\:opacity-100 {
|
|
1420
1475
|
&:is(:where(.group):hover *) {
|
|
1421
1476
|
@media (hover: hover) {
|
|
@@ -1445,6 +1500,13 @@
|
|
|
1445
1500
|
}
|
|
1446
1501
|
}
|
|
1447
1502
|
}
|
|
1503
|
+
.hover\:border-\[var\(--bai-accent\)\] {
|
|
1504
|
+
&:hover {
|
|
1505
|
+
@media (hover: hover) {
|
|
1506
|
+
border-color: var(--bai-accent);
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1448
1510
|
.hover\:border-gray-600 {
|
|
1449
1511
|
&:hover {
|
|
1450
1512
|
@media (hover: hover) {
|
|
@@ -1466,6 +1528,13 @@
|
|
|
1466
1528
|
}
|
|
1467
1529
|
}
|
|
1468
1530
|
}
|
|
1531
|
+
.hover\:bg-\[var\(--bai-hover\)\] {
|
|
1532
|
+
&:hover {
|
|
1533
|
+
@media (hover: hover) {
|
|
1534
|
+
background-color: var(--bai-hover);
|
|
1535
|
+
}
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1469
1538
|
.hover\:bg-amber-700 {
|
|
1470
1539
|
&:hover {
|
|
1471
1540
|
@media (hover: hover) {
|
|
@@ -1559,6 +1628,13 @@
|
|
|
1559
1628
|
}
|
|
1560
1629
|
}
|
|
1561
1630
|
}
|
|
1631
|
+
.hover\:underline {
|
|
1632
|
+
&:hover {
|
|
1633
|
+
@media (hover: hover) {
|
|
1634
|
+
text-decoration-line: underline;
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1637
|
+
}
|
|
1562
1638
|
.hover\:opacity-80 {
|
|
1563
1639
|
&:hover {
|
|
1564
1640
|
@media (hover: hover) {
|
|
@@ -1913,6 +1989,11 @@
|
|
|
1913
1989
|
inherits: false;
|
|
1914
1990
|
initial-value: 0 0 #0000;
|
|
1915
1991
|
}
|
|
1992
|
+
@property --tw-outline-style {
|
|
1993
|
+
syntax: "*";
|
|
1994
|
+
inherits: false;
|
|
1995
|
+
initial-value: solid;
|
|
1996
|
+
}
|
|
1916
1997
|
@property --tw-blur {
|
|
1917
1998
|
syntax: "*";
|
|
1918
1999
|
inherits: false;
|
|
@@ -2039,6 +2120,7 @@
|
|
|
2039
2120
|
--tw-ring-offset-width: 0px;
|
|
2040
2121
|
--tw-ring-offset-color: #fff;
|
|
2041
2122
|
--tw-ring-offset-shadow: 0 0 #0000;
|
|
2123
|
+
--tw-outline-style: solid;
|
|
2042
2124
|
--tw-blur: initial;
|
|
2043
2125
|
--tw-brightness: initial;
|
|
2044
2126
|
--tw-contrast: initial;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../subgraphs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,4BAA4B,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../subgraphs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,4BAA4B,CAAC"}
|
package/dist/subgraphs/index.js
CHANGED
|
@@ -3,6 +3,15 @@ export declare class KnowledgeGraphSubgraph extends BaseSubgraph {
|
|
|
3
3
|
name: string;
|
|
4
4
|
typeDefs: import("graphql").DocumentNode;
|
|
5
5
|
resolvers: {
|
|
6
|
+
Mutation: {
|
|
7
|
+
knowledgeGraphReindex: (_: unknown, args: {
|
|
8
|
+
driveId: string;
|
|
9
|
+
}) => Promise<{
|
|
10
|
+
indexedNodes: number;
|
|
11
|
+
indexedEdges: number;
|
|
12
|
+
errors: string[];
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
6
15
|
Query: {
|
|
7
16
|
knowledgeGraphNodes: (_: unknown, args: {
|
|
8
17
|
driveId: string;
|
|
@@ -62,27 +71,32 @@ export declare class KnowledgeGraphSubgraph extends BaseSubgraph {
|
|
|
62
71
|
rawNodeCount: number;
|
|
63
72
|
rawEdgeCount: number;
|
|
64
73
|
rawNodes: {
|
|
65
|
-
id:
|
|
66
|
-
documentId:
|
|
67
|
-
title:
|
|
68
|
-
description:
|
|
69
|
-
noteType:
|
|
70
|
-
status:
|
|
71
|
-
updatedAt:
|
|
74
|
+
id: string;
|
|
75
|
+
documentId: string;
|
|
76
|
+
title: string | null;
|
|
77
|
+
description: string | null;
|
|
78
|
+
noteType: string | null;
|
|
79
|
+
status: string | null;
|
|
80
|
+
updatedAt: string;
|
|
72
81
|
}[];
|
|
73
82
|
rawEdges: {
|
|
74
|
-
id:
|
|
75
|
-
sourceDocumentId:
|
|
76
|
-
targetDocumentId:
|
|
77
|
-
linkType:
|
|
78
|
-
targetTitle:
|
|
79
|
-
updatedAt:
|
|
83
|
+
id: string;
|
|
84
|
+
sourceDocumentId: string;
|
|
85
|
+
targetDocumentId: string;
|
|
86
|
+
linkType: string | null;
|
|
87
|
+
targetTitle: string | null;
|
|
88
|
+
updatedAt: string;
|
|
80
89
|
}[];
|
|
81
90
|
processorNamespace: string;
|
|
82
91
|
}>;
|
|
83
92
|
};
|
|
84
93
|
};
|
|
85
94
|
constructor(args: SubgraphArgs);
|
|
95
|
+
/**
|
|
96
|
+
* Returns a Kysely<DB> instance scoped to the processor's namespace
|
|
97
|
+
* for the given drive. Centralizes the Legacy → IRelationalDb cast.
|
|
98
|
+
*/
|
|
99
|
+
private getDb;
|
|
86
100
|
private getQuery;
|
|
87
101
|
/**
|
|
88
102
|
* Ensures a bai/knowledge-graph document exists in the given drive.
|
|
@@ -90,6 +104,7 @@ export declare class KnowledgeGraphSubgraph extends BaseSubgraph {
|
|
|
90
104
|
* requiring the Connect UI to have initialized the drive first.
|
|
91
105
|
*/
|
|
92
106
|
private ensuredDrives;
|
|
107
|
+
private reindexDrive;
|
|
93
108
|
private ensureGraphDoc;
|
|
94
109
|
}
|
|
95
110
|
//# sourceMappingURL=subgraph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraph.d.ts","sourceRoot":"","sources":["../../../subgraphs/knowledge-graph/subgraph.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"subgraph.d.ts","sourceRoot":"","sources":["../../../subgraphs/knowledge-graph/subgraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAO7E,qBAAa,sBAAuB,SAAQ,YAAY;IAC7C,IAAI,SAAoB;IAExB,QAAQ,iCAqGf;IAEO,SAAS;;uCAEa,OAAO,QAAQ;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE;8BAiLtC,MAAM;8BAAgB,MAAM;wBAAU,MAAM,EAAE;;;;qCA7KtC,OAAO,QAAQ;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE;qCAMlC,OAAO,QAAQ;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE;qCAMlC,OAAO,QAAQ;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE;gDAO5D,OAAO,QACJ;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,UAAU,EAAE,MAAM,CAAA;aAAE;uCAMd,OAAO,QAAQ;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE;2CAM9D,OAAO,QACJ;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,UAAU,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE;6CAO1D,OAAO,QACJ;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE;yCAOtC,OAAO,QACJ;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,UAAU,EAAE,MAAM,CAAA;aAAE;uCAMd,OAAO,QAAQ;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE;sCAM9D,OAAO,QACJ;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE;yCAOrD,OAAO,QACJ;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE;;;;;uCAWV,OAAO,QAAQ;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE;4CAM9D,OAAO,QACJ;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,UAAU,EAAE,MAAM,CAAA;aAAE;qCAMhB,OAAO,QAAQ;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE;;;;;;;;;;;;;;;;;;;;;;;MAiDnE;gBAEU,IAAI,EAAE,YAAY;IAI9B;;;OAGG;IACH,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,QAAQ;IAIhB;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAqB;YAE5B,YAAY;YAqGZ,cAAc;CAmD7B"}
|