docuvia 1.0.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/ast-worker.js +3 -0
- package/dist/ast-worker.js.map +1 -0
- package/dist/chunk-HBKQ5KVB.js +62 -0
- package/dist/chunk-HBKQ5KVB.js.map +1 -0
- package/dist/chunk-KVOCOCYJ.js +3 -0
- package/dist/chunk-KVOCOCYJ.js.map +1 -0
- package/dist/chunk-OK2R2ETM.js +6 -0
- package/dist/chunk-OK2R2ETM.js.map +1 -0
- package/dist/chunk-QD6NQB77.js +87 -0
- package/dist/chunk-QD6NQB77.js.map +1 -0
- package/dist/chunk-W6H4BYG4.js +82 -0
- package/dist/chunk-W6H4BYG4.js.map +1 -0
- package/dist/cli.js +237 -0
- package/dist/cli.js.map +1 -0
- package/dist/fs-utils-7IBL2MS4.js +3 -0
- package/dist/fs-utils-7IBL2MS4.js.map +1 -0
- package/dist/init-templates-XIJBJEVL.js +3 -0
- package/dist/init-templates-XIJBJEVL.js.map +1 -0
- package/dist/js-yaml-LVDERDC6.js +52 -0
- package/dist/js-yaml-LVDERDC6.js.map +1 -0
- package/dist/migrations/0001_init.sql +155 -0
- package/dist/migrations/0002_l2_node_key.sql +9 -0
- package/dist/migrations/0003_docuvia_meta.sql +10 -0
- package/dist/migrations/0004_l3_provenance.sql +11 -0
- package/dist/migrations/0005_l3_initial_source_commits.sql +10 -0
- package/dist/migrations/0006_tier_b_file_status.sql +10 -0
- package/dist/migrations/0007_fts_porter_stemming.sql +33 -0
- package/dist/migrations/0008_ast_call_sites.sql +18 -0
- package/dist/migrations/0009_l2_node_key_lookup_index.sql +12 -0
- package/dist/tree-sitter.wasm +0 -0
- package/package.json +62 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
-- 0001_init.sql
|
|
2
|
+
-- Local-SQLite knowledge-graph schema (ported from old Docuvia's
|
|
3
|
+
-- lib/core/src/constants/schema.sql, plus the FTS5 virtual tables/triggers
|
|
4
|
+
-- from lib/core/src/services/sqlite-fts.ts folded into the same migration so
|
|
5
|
+
-- GraphStore.open() is the single place that guarantees full schema readiness).
|
|
6
|
+
--
|
|
7
|
+
-- Table shapes match old schema.sql's columns/types exactly. NOT NULL/DEFAULT
|
|
8
|
+
-- are applied wherever old schema.sql declared a DEFAULT (matching the
|
|
9
|
+
-- lib/db Drizzle sqlite schema's nullability, which the raw DDL never
|
|
10
|
+
-- formally captured) so the hand-written row types in ./types.ts can encode
|
|
11
|
+
-- accurate nullability instead of guessing.
|
|
12
|
+
|
|
13
|
+
CREATE TABLE IF NOT EXISTS projects (
|
|
14
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
15
|
+
name TEXT NOT NULL,
|
|
16
|
+
repo_url TEXT NOT NULL,
|
|
17
|
+
description TEXT,
|
|
18
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
19
|
+
vcs_type TEXT NOT NULL DEFAULT 'git',
|
|
20
|
+
svn_url TEXT,
|
|
21
|
+
last_git_ingested_at TEXT,
|
|
22
|
+
last_svn_revision INTEGER,
|
|
23
|
+
last_ast_ingested_at TEXT,
|
|
24
|
+
owner_id INTEGER NOT NULL DEFAULT 1,
|
|
25
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
26
|
+
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
CREATE TABLE IF NOT EXISTS project_files (
|
|
30
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
31
|
+
project_id INTEGER NOT NULL,
|
|
32
|
+
file_path TEXT NOT NULL,
|
|
33
|
+
content_hash TEXT,
|
|
34
|
+
last_parsed_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
|
35
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
36
|
+
UNIQUE(project_id, file_path)
|
|
37
|
+
);
|
|
38
|
+
CREATE INDEX IF NOT EXISTS project_files_project_id_idx ON project_files(project_id);
|
|
39
|
+
|
|
40
|
+
CREATE TABLE IF NOT EXISTS l1_tags (
|
|
41
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
42
|
+
name TEXT NOT NULL UNIQUE,
|
|
43
|
+
slug TEXT NOT NULL,
|
|
44
|
+
category TEXT NOT NULL DEFAULT 'Feature',
|
|
45
|
+
is_anchored INTEGER NOT NULL DEFAULT 0,
|
|
46
|
+
usage_count INTEGER NOT NULL DEFAULT 0,
|
|
47
|
+
description TEXT,
|
|
48
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
CREATE TABLE IF NOT EXISTS l2_nodes (
|
|
52
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
53
|
+
project_id INTEGER NOT NULL,
|
|
54
|
+
name TEXT NOT NULL,
|
|
55
|
+
type TEXT NOT NULL DEFAULT 'module',
|
|
56
|
+
is_system INTEGER NOT NULL DEFAULT 0,
|
|
57
|
+
description TEXT,
|
|
58
|
+
ai_generated INTEGER NOT NULL DEFAULT 1,
|
|
59
|
+
needs_review INTEGER NOT NULL DEFAULT 0,
|
|
60
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
61
|
+
last_verified_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
|
62
|
+
path_patterns TEXT,
|
|
63
|
+
reindex_required INTEGER NOT NULL DEFAULT 0,
|
|
64
|
+
is_bootstrap_confirmed INTEGER NOT NULL DEFAULT 0,
|
|
65
|
+
content_hash TEXT,
|
|
66
|
+
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
67
|
+
);
|
|
68
|
+
CREATE INDEX IF NOT EXISTS l2_nodes_project_id_idx ON l2_nodes(project_id);
|
|
69
|
+
CREATE INDEX IF NOT EXISTS l2_nodes_name_idx ON l2_nodes(name);
|
|
70
|
+
CREATE INDEX IF NOT EXISTS l2_nodes_content_hash_idx ON l2_nodes(content_hash);
|
|
71
|
+
|
|
72
|
+
CREATE TABLE IF NOT EXISTS node_links (
|
|
73
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
74
|
+
source_node_id INTEGER NOT NULL,
|
|
75
|
+
target_node_id INTEGER NOT NULL,
|
|
76
|
+
link_type TEXT NOT NULL DEFAULT 'depends_on',
|
|
77
|
+
commit_sha TEXT,
|
|
78
|
+
diff_summary TEXT,
|
|
79
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
80
|
+
);
|
|
81
|
+
CREATE INDEX IF NOT EXISTS node_links_source_node_idx ON node_links(source_node_id);
|
|
82
|
+
CREATE INDEX IF NOT EXISTS node_links_target_node_idx ON node_links(target_node_id);
|
|
83
|
+
|
|
84
|
+
CREATE TABLE IF NOT EXISTS l2_node_l1_tags (
|
|
85
|
+
l2_node_id INTEGER NOT NULL,
|
|
86
|
+
l1_tag_id INTEGER NOT NULL,
|
|
87
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
88
|
+
);
|
|
89
|
+
CREATE INDEX IF NOT EXISTS l2_node_l1_tags_l2_node_idx ON l2_node_l1_tags(l2_node_id);
|
|
90
|
+
CREATE INDEX IF NOT EXISTS l2_node_l1_tags_l1_tag_idx ON l2_node_l1_tags(l1_tag_id);
|
|
91
|
+
|
|
92
|
+
CREATE TABLE IF NOT EXISTS l3_nodes (
|
|
93
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
94
|
+
l2_node_id INTEGER NOT NULL,
|
|
95
|
+
title TEXT NOT NULL,
|
|
96
|
+
content TEXT,
|
|
97
|
+
node_type TEXT NOT NULL DEFAULT 'change',
|
|
98
|
+
source_commits TEXT NOT NULL DEFAULT '[]',
|
|
99
|
+
commit_hash TEXT,
|
|
100
|
+
ai_generated INTEGER NOT NULL DEFAULT 1,
|
|
101
|
+
confidence REAL,
|
|
102
|
+
noise_score REAL,
|
|
103
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
104
|
+
last_verified_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
|
105
|
+
occurrence_count INTEGER NOT NULL DEFAULT 1,
|
|
106
|
+
introduced_in_commit TEXT,
|
|
107
|
+
verified_until_commit TEXT,
|
|
108
|
+
validity_status TEXT NOT NULL DEFAULT 'pending',
|
|
109
|
+
source TEXT NOT NULL DEFAULT 'commit',
|
|
110
|
+
content_hash TEXT
|
|
111
|
+
);
|
|
112
|
+
CREATE INDEX IF NOT EXISTS l3_nodes_l2_node_id_idx ON l3_nodes(l2_node_id);
|
|
113
|
+
CREATE INDEX IF NOT EXISTS l3_nodes_content_hash_idx ON l3_nodes(content_hash);
|
|
114
|
+
|
|
115
|
+
-- FTS5 keyword indexes for the local-first natural-language fallback (ADR-029),
|
|
116
|
+
-- ported from lib/core/src/services/sqlite-fts.ts. External-content indexes
|
|
117
|
+
-- over l2_nodes / l3_nodes, kept in sync by triggers so ordinary writes to the
|
|
118
|
+
-- content tables require no separate "ensure FTS" step.
|
|
119
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS l2_nodes_fts USING fts5(
|
|
120
|
+
name, description, path_patterns,
|
|
121
|
+
content='l2_nodes', content_rowid='id'
|
|
122
|
+
);
|
|
123
|
+
CREATE TRIGGER IF NOT EXISTS l2_nodes_fts_ai AFTER INSERT ON l2_nodes BEGIN
|
|
124
|
+
INSERT INTO l2_nodes_fts(rowid, name, description, path_patterns)
|
|
125
|
+
VALUES (new.id, new.name, new.description, new.path_patterns);
|
|
126
|
+
END;
|
|
127
|
+
CREATE TRIGGER IF NOT EXISTS l2_nodes_fts_ad AFTER DELETE ON l2_nodes BEGIN
|
|
128
|
+
INSERT INTO l2_nodes_fts(l2_nodes_fts, rowid, name, description, path_patterns)
|
|
129
|
+
VALUES ('delete', old.id, old.name, old.description, old.path_patterns);
|
|
130
|
+
END;
|
|
131
|
+
CREATE TRIGGER IF NOT EXISTS l2_nodes_fts_au AFTER UPDATE ON l2_nodes BEGIN
|
|
132
|
+
INSERT INTO l2_nodes_fts(l2_nodes_fts, rowid, name, description, path_patterns)
|
|
133
|
+
VALUES ('delete', old.id, old.name, old.description, old.path_patterns);
|
|
134
|
+
INSERT INTO l2_nodes_fts(rowid, name, description, path_patterns)
|
|
135
|
+
VALUES (new.id, new.name, new.description, new.path_patterns);
|
|
136
|
+
END;
|
|
137
|
+
|
|
138
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS l3_nodes_fts USING fts5(
|
|
139
|
+
title, content,
|
|
140
|
+
content='l3_nodes', content_rowid='id'
|
|
141
|
+
);
|
|
142
|
+
CREATE TRIGGER IF NOT EXISTS l3_nodes_fts_ai AFTER INSERT ON l3_nodes BEGIN
|
|
143
|
+
INSERT INTO l3_nodes_fts(rowid, title, content)
|
|
144
|
+
VALUES (new.id, new.title, new.content);
|
|
145
|
+
END;
|
|
146
|
+
CREATE TRIGGER IF NOT EXISTS l3_nodes_fts_ad AFTER DELETE ON l3_nodes BEGIN
|
|
147
|
+
INSERT INTO l3_nodes_fts(l3_nodes_fts, rowid, title, content)
|
|
148
|
+
VALUES ('delete', old.id, old.title, old.content);
|
|
149
|
+
END;
|
|
150
|
+
CREATE TRIGGER IF NOT EXISTS l3_nodes_fts_au AFTER UPDATE ON l3_nodes BEGIN
|
|
151
|
+
INSERT INTO l3_nodes_fts(l3_nodes_fts, rowid, title, content)
|
|
152
|
+
VALUES ('delete', old.id, old.title, old.content);
|
|
153
|
+
INSERT INTO l3_nodes_fts(rowid, title, content)
|
|
154
|
+
VALUES (new.id, new.title, new.content);
|
|
155
|
+
END;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
-- 0002_l2_node_key.sql
|
|
2
|
+
-- STOR-005: deterministic, path-keyed node identity, separate from the SQLite AUTOINCREMENT
|
|
3
|
+
-- rowid. `node_key` is `<file_path>` for file nodes and `<file_path>#<symbolName>` for
|
|
4
|
+
-- function/class nodes — stable across machines and across a clean + re-analyze cycle, so
|
|
5
|
+
-- `nodes.jsonl`/`edges.jsonl` exports produce clean, deterministic diffs instead of exporting
|
|
6
|
+
-- effectively-random rowids.
|
|
7
|
+
|
|
8
|
+
ALTER TABLE l2_nodes ADD COLUMN node_key TEXT;
|
|
9
|
+
CREATE UNIQUE INDEX IF NOT EXISTS l2_nodes_project_id_node_key_idx ON l2_nodes(project_id, node_key);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- 0003_docuvia_meta.sql
|
|
2
|
+
-- STOR-002: small key/value store, currently used to remember the knowledge-branch tip sha
|
|
3
|
+
-- local.db was last hydrated from, so read commands can cheaply detect staleness without
|
|
4
|
+
-- re-parsing JSONL on every call. Disposable like the rest of local.db — Git remains the source
|
|
5
|
+
-- of truth this is rebuilt from.
|
|
6
|
+
|
|
7
|
+
CREATE TABLE IF NOT EXISTS docuvia_meta (
|
|
8
|
+
key TEXT PRIMARY KEY,
|
|
9
|
+
value TEXT NOT NULL
|
|
10
|
+
);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
-- 0004_l3_provenance.sql
|
|
2
|
+
-- phase1-decision-integration.md §3a / PLAT-007 Tier C point 1: `analyze <targetPath>`'s LLM
|
|
3
|
+
-- decision-extraction results are persisted to `l3_nodes` instead of print-only. Two additive
|
|
4
|
+
-- provenance columns beyond what 0001_init.sql already carries (commit_hash, source_commits,
|
|
5
|
+
-- confidence, content_hash, validity_status, source): the extraction model and the source file
|
|
6
|
+
-- list. `ALTER TABLE ... ADD COLUMN` only -- no table rebuild, no backfill (pre-existing rows
|
|
7
|
+
-- keep NULL for both).
|
|
8
|
+
|
|
9
|
+
ALTER TABLE l3_nodes ADD COLUMN extraction_model TEXT;
|
|
10
|
+
-- JSON array of workspace-relative source file paths the decision was extracted from.
|
|
11
|
+
ALTER TABLE l3_nodes ADD COLUMN source_files TEXT;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- 0005_l3_initial_source_commits.sql
|
|
2
|
+
-- phase2-l3-distribution.md L3DIST-002/003: `snapshot`'s L3 card renderer packs a JSON snapshot
|
|
3
|
+
-- of `source_commits` frozen at the row's first insert, never the current (mutable, growing on
|
|
4
|
+
-- every re-analysis) `source_commits` value -- otherwise re-running `snapshot` with no new
|
|
5
|
+
-- decision content would still produce a different git blob every time occurrence tracking
|
|
6
|
+
-- appended a commit sha, defeating the idempotency §5b relies on. `ALTER TABLE ... ADD COLUMN`
|
|
7
|
+
-- only -- no table rebuild, no backfill (pre-existing rows keep NULL; the L3 card renderer falls
|
|
8
|
+
-- back to `source_commits` for those).
|
|
9
|
+
|
|
10
|
+
ALTER TABLE l3_nodes ADD COLUMN initial_source_commits TEXT;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- 0006_tier_b_file_status.sql
|
|
2
|
+
-- docs/cli-test-analysis/typescript-cli-benchmark.md §5.3/§5.7 items 1-2 (Tier B full-resync gap):
|
|
3
|
+
-- `project_files` already tracks each file's last Tier A parse (`last_parsed_at`); this adds the
|
|
4
|
+
-- Tier B analogue so `query`/`impact` can distinguish "this file's calls have never been computed
|
|
5
|
+
-- by Tier B" from "confirmed zero calls". Additive `ALTER TABLE ... ADD COLUMN` only, matching
|
|
6
|
+
-- 0004/0005's precedent -- pre-existing rows keep NULL, which is exactly "never processed" (there
|
|
7
|
+
-- is no historical record to backfill: no per-file Tier B timestamp existed before this migration).
|
|
8
|
+
|
|
9
|
+
ALTER TABLE project_files ADD COLUMN last_tier_b_processed_at TEXT;
|
|
10
|
+
ALTER TABLE project_files ADD COLUMN last_tier_b_commit_sha TEXT;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
-- 0007_fts_porter_stemming.sql
|
|
2
|
+
-- docs/gitbook/analysis/roadmap-and-open-items.md item 25 ("query"'s FTS ranking has no
|
|
3
|
+
-- synonym/token-expansion step): the default FTS5 tokenizer (unicode61) does exact token
|
|
4
|
+
-- matching with no stemming, so a directory named "commands" (plural) and a query keyword
|
|
5
|
+
-- "command" (singular) are two different tokens that never match each other -- confirmed against
|
|
6
|
+
-- this repo's own data: `"query" AND "command"` matched 0 l2_nodes rows even though
|
|
7
|
+
-- artifacts/cli/src/commands/query.ts obviously matches both concepts. Switching to
|
|
8
|
+
-- tokenize='porter unicode61' folds English plurals/suffixes to a common stem
|
|
9
|
+
-- ("commands"/"command" -> "command", "query"/"queries" -> "queri") at both index and query time
|
|
10
|
+
-- (SQLite applies a table's configured tokenizer to MATCH text too), closing that gap with no
|
|
11
|
+
-- application-code change to how queries are issued.
|
|
12
|
+
--
|
|
13
|
+
-- FTS5 virtual tables can't ALTER their tokenizer in place -- drop and recreate, then rebuild the
|
|
14
|
+
-- index from the existing content tables (l2_nodes/l3_nodes), exactly like `withFtsSyncSuspended`
|
|
15
|
+
-- already does for bulk loads (graph-repo.ts). The AFTER INSERT/DELETE/UPDATE triggers live on
|
|
16
|
+
-- l2_nodes/l3_nodes (not on the virtual tables) and reference l2_nodes_fts/l3_nodes_fts only by
|
|
17
|
+
-- name in their body, so they keep working unchanged once the virtual tables are recreated below.
|
|
18
|
+
|
|
19
|
+
DROP TABLE IF EXISTS l2_nodes_fts;
|
|
20
|
+
CREATE VIRTUAL TABLE l2_nodes_fts USING fts5(
|
|
21
|
+
name, description, path_patterns,
|
|
22
|
+
content='l2_nodes', content_rowid='id',
|
|
23
|
+
tokenize='porter unicode61'
|
|
24
|
+
);
|
|
25
|
+
INSERT INTO l2_nodes_fts(l2_nodes_fts) VALUES('rebuild');
|
|
26
|
+
|
|
27
|
+
DROP TABLE IF EXISTS l3_nodes_fts;
|
|
28
|
+
CREATE VIRTUAL TABLE l3_nodes_fts USING fts5(
|
|
29
|
+
title, content,
|
|
30
|
+
content='l3_nodes', content_rowid='id',
|
|
31
|
+
tokenize='porter unicode61'
|
|
32
|
+
);
|
|
33
|
+
INSERT INTO l3_nodes_fts(l3_nodes_fts) VALUES('rebuild');
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- 0008_ast_call_sites.sql
|
|
2
|
+
-- issue #11 plan A, Slice 3 (docs/gitbook/analysis/forward-tier-b-edge-resolution-plan.md):
|
|
3
|
+
-- Tier A's ast-worker.ts computes each call site's source position (Slice 1) but never
|
|
4
|
+
-- persisted it -- this table is the missing read-back surface Tier B's forward resolution
|
|
5
|
+
-- pass seeds itself from. One row per call site (not one row per resolved edge -- unlike
|
|
6
|
+
-- node_links, a row here exists whether or not ScopeResolver could resolve the target
|
|
7
|
+
-- locally, since unresolved cross-file calls are exactly what Tier B needs to see).
|
|
8
|
+
|
|
9
|
+
CREATE TABLE IF NOT EXISTS ast_call_sites (
|
|
10
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
11
|
+
project_id INTEGER NOT NULL,
|
|
12
|
+
file_path TEXT NOT NULL,
|
|
13
|
+
target_function TEXT NOT NULL,
|
|
14
|
+
start_line INTEGER NOT NULL,
|
|
15
|
+
start_column INTEGER NOT NULL,
|
|
16
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
17
|
+
);
|
|
18
|
+
CREATE INDEX IF NOT EXISTS ast_call_sites_project_file_idx ON ast_call_sites(project_id, file_path);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
-- 0009_l2_node_key_lookup_index.sql
|
|
2
|
+
-- IMPT/perf: `findNodeIdByNodeKey`/Tier B edge application resolves an l2_node by its STOR-005
|
|
3
|
+
-- `node_key` alone (`SELECT id FROM l2_nodes WHERE node_key = ?`) -- a query SQLite cannot satisfy
|
|
4
|
+
-- with the existing composite `(project_id, node_key)` unique index, whose leading column makes
|
|
5
|
+
-- every such lookup a full covering-index SCAN over every row in the table. On a large repo
|
|
6
|
+
-- (vscode: ~293k nodes) that made `applyResolvedEdges` insert edges at ~20/sec during an
|
|
7
|
+
-- uncapped `--lsp-timeout=0` batch. A standalone single-column `node_key` index turns the lookup
|
|
8
|
+
-- into a SEARCH. Redundant with (not a replacement for) the composite unique index -- keys stay
|
|
9
|
+
-- unique *per project*, the composite still enforces that; this index is purely the lookup
|
|
10
|
+
-- accelerator.
|
|
11
|
+
|
|
12
|
+
CREATE INDEX IF NOT EXISTS l2_nodes_node_key_idx ON l2_nodes(node_key);
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "docuvia",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Codebase Knowledge Evolver — maintains a local knowledge graph of your workspace: modules, dependencies, blast radius, and recorded architectural decisions.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"docuvia": "./dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=20"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/dyphn1/Docuvia.git",
|
|
19
|
+
"directory": "artifacts/cli"
|
|
20
|
+
},
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"registry": "https://registry.npmjs.org/",
|
|
23
|
+
"access": "public",
|
|
24
|
+
"tag": "beta"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsup",
|
|
28
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
29
|
+
"test": "vitest run --fileParallelism false",
|
|
30
|
+
"test:unit": "vitest run test/unit",
|
|
31
|
+
"test:integration": "vitest run test/integration"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
35
|
+
"@types/node": "catalog:",
|
|
36
|
+
"execa": "^9.6.1",
|
|
37
|
+
"pino-pretty": "^13",
|
|
38
|
+
"tsup": "^8.5.1",
|
|
39
|
+
"tsx": "catalog:",
|
|
40
|
+
"vitest": "^1.6.1"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@inquirer/checkbox": "^5.2.1",
|
|
44
|
+
"@inquirer/prompts": "^8.5.2",
|
|
45
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
46
|
+
"@workspace/contracts": "workspace:^",
|
|
47
|
+
"@workspace/core": "workspace:^",
|
|
48
|
+
"@workspace/git-local": "workspace:^",
|
|
49
|
+
"@workspace/llm-api": "workspace:^",
|
|
50
|
+
"@workspace/remote-api": "workspace:^",
|
|
51
|
+
"@workspace/schema": "workspace:^",
|
|
52
|
+
"@workspace/ui-core": "workspace:^",
|
|
53
|
+
"better-sqlite3": "^12.11.1",
|
|
54
|
+
"dotenv": "^17.4.2",
|
|
55
|
+
"ora": "^9.4.1",
|
|
56
|
+
"picocolors": "^1.1.1",
|
|
57
|
+
"pino": "^9.14.0",
|
|
58
|
+
"tree-sitter-wasms": "^0.1.13",
|
|
59
|
+
"web-tree-sitter": "^0.25.9",
|
|
60
|
+
"zod": "^3.24.1"
|
|
61
|
+
}
|
|
62
|
+
}
|