docuvia 1.3.2 → 1.4.1
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 +1 -1
- package/dist/ast-worker.js.map +1 -1
- package/dist/{chunk-EUTMBLVT.js → chunk-3MA6VRSW.js} +2 -2
- package/dist/chunk-IBEPJPOA.js +87 -0
- package/dist/chunk-IBEPJPOA.js.map +1 -0
- package/dist/{chunk-KZYHFZZS.js → chunk-PSNENIBX.js} +2 -2
- package/dist/chunk-RW5E5QDF.js +62 -0
- package/dist/chunk-RW5E5QDF.js.map +1 -0
- package/dist/cli.js +135 -135
- package/dist/cli.js.map +1 -1
- package/dist/fs-utils-77O7EMR6.js +3 -0
- package/dist/{init-templates-VHTM5VWK.js → init-templates-IWHMR4XT.js} +2 -2
- package/dist/migrations/0012_ast_call_sites_callee_fields.sql +28 -0
- package/package.json +1 -1
- package/dist/chunk-3WFKL5P6.js +0 -87
- package/dist/chunk-3WFKL5P6.js.map +0 -1
- package/dist/chunk-BR2RIZZU.js +0 -62
- package/dist/chunk-BR2RIZZU.js.map +0 -1
- package/dist/fs-utils-4AOXK4SJ.js +0 -3
- /package/dist/{chunk-EUTMBLVT.js.map → chunk-3MA6VRSW.js.map} +0 -0
- /package/dist/{chunk-KZYHFZZS.js.map → chunk-PSNENIBX.js.map} +0 -0
- /package/dist/{fs-utils-4AOXK4SJ.js.map → fs-utils-77O7EMR6.js.map} +0 -0
- /package/dist/{init-templates-VHTM5VWK.js.map → init-templates-IWHMR4XT.js.map} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{e as a,f as b,g as c}from"./chunk-3MA6VRSW.js";import"./chunk-IBEPJPOA.js";import"./chunk-KVOCOCYJ.js";export{b as createBackup,c as removeBlock,a as writeOrAppend};
|
|
3
|
+
//# sourceMappingURL=fs-utils-77O7EMR6.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{A as E,B as F,C as G,D as H,E as I,F as J,G as K,H as L,I as M,J as N,K as O,L as P,M as Q,N as R,O as S,P as T,a as e,b as f,c as g,d as h,e as i,f as j,g as k,h as l,i as m,j as n,k as o,l as p,m as q,n as r,o as s,p as t,q as u,r as v,s as w,t as x,u as y,v as z,w as A,x as B,y as C,z as D}from"./chunk-
|
|
3
|
-
//# sourceMappingURL=init-templates-
|
|
2
|
+
import{A as E,B as F,C as G,D as H,E as I,F as J,G as K,H as L,I as M,J as N,K as O,L as P,M as Q,N as R,O as S,P as T,a as e,b as f,c as g,d as h,e as i,f as j,g as k,h as l,i as m,j as n,k as o,l as p,m as q,n as r,o as s,p as t,q as u,r as v,s as w,t as x,u as y,v as z,w as A,x as B,y as C,z as D}from"./chunk-PSNENIBX.js";import{Fa as a,Ga as b,Ha as c,Ia as d}from"./chunk-IBEPJPOA.js";import"./chunk-KVOCOCYJ.js";export{s as AGENTS_MD_FILENAME,T as AGENT_INSTRUCTIONS,p as AGENT_INSTRUCTIONS_END_MARKER,o as AGENT_INSTRUCTIONS_MARKER,j as CLAUDE_DESKTOP_CONFIG_FILENAME,f as CLAUDE_DIR,a as CLAUDE_HOOKS_DIR,m as CLAUDE_MD_FILENAME,I as CLAUDE_PLUGIN_HOOKS_DIR,K as CLAUDE_PROJECT_HOOKS_DIR,u as CONTINUE_RULES_DIR,v as CONTINUE_RULES_FILENAME,l as COPILOT_INSTRUCTIONS_FILENAME,b as CURSOR_HOOKS_DIR,i as CURSOR_MCP_CONFIG_PATH,J as CURSOR_PLUGIN_HOOKS_DIR,n as CURSOR_RULES_FILENAME,d as DOCUVIA_HOOK_CJS_FILENAME,Q as DOCUVIA_HOOK_JS,c as DOCUVIA_HOOK_JS_FILENAME,O as DOCUVIA_MCP_LAUNCH_ARGS,P as DOCUVIA_WORKSPACE_ROOT_ENV_VAR,e as GITHUB_DIR,t as HERMES_MD_FILENAME,g as HOOKS_CONFIG_FILENAME,S as HOOKS_JSON,R as HOOK_EVENT_PRE_TOOL_USE,r as LLMS_TXT_FILENAME,k as MCP_SERVER_ALIAS,L as NPX_COMMAND,N as NPX_NO_INSTALL_FLAG,M as NPX_YES_FLAG,x as PLATFORM_NAME_CLAUDE,z as PLATFORM_NAME_CODEX,A as PLATFORM_NAME_CONTINUE,y as PLATFORM_NAME_COPILOT,w as PLATFORM_NAME_CURSOR,B as PLATFORM_NAME_HERMES,D as PLATFORM_SLUG_CLAUDE,F as PLATFORM_SLUG_CODEX,G as PLATFORM_SLUG_CONTINUE,E as PLATFORM_SLUG_COPILOT,C as PLATFORM_SLUG_CURSOR,H as PLATFORM_SLUG_HERMES,h as SETTINGS_JSON_FILENAME,q as WINDSURF_RULES_FILENAME};
|
|
3
|
+
//# sourceMappingURL=init-templates-IWHMR4XT.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-- Issue #192 (root-cause fix, phase 1 "extractor surgery"): `target_function` stores the raw
|
|
2
|
+
-- callee expression text (`service.doSomething`, `vi.fn().mockResolvedValue`), which
|
|
3
|
+
-- ScopeResolver's bare-name model could never match -- the single largest cause of the ~12.8%
|
|
4
|
+
-- distinct-target resolution rate. These columns decompose that evidence without changing the
|
|
5
|
+
-- raw column's semantics (Tier B seeding uses positions, not the string; #217's impact fallback
|
|
6
|
+
-- matches target_function and gains an OR-match on callee_name):
|
|
7
|
+
--
|
|
8
|
+
-- callee_name — the terminal callee identifier (`doSomething`), what bare-name resolution
|
|
9
|
+
-- actually needs. NULL for pre-migration rows and for shapes with no clean
|
|
10
|
+
-- terminal identifier.
|
|
11
|
+
-- receiver_text — the receiver expression text (`service`, `this.logger`) kept as evidence for
|
|
12
|
+
-- import-binding receiver resolution and future receiver-type work. NULL for
|
|
13
|
+
-- bare calls.
|
|
14
|
+
-- callee_kind — shape classifier: 'bare' | 'member' | 'this' | 'arg-chain' | 'computed'.
|
|
15
|
+
-- 'arg-chain' (receiver is itself an invocation result, e.g.
|
|
16
|
+
-- `expect(x).toEqual`) and 'computed' (`obj[expr]()`) are structurally
|
|
17
|
+
-- unresolvable by name matching, so the health-rate denominators exclude them
|
|
18
|
+
-- instead of counting them as failures. NULL = unknown (pre-migration row).
|
|
19
|
+
--
|
|
20
|
+
-- No backfill: persist is delete-then-reinsert per file on reparse, so a full re-analysis
|
|
21
|
+
-- repopulates all rows under the new semantics.
|
|
22
|
+
|
|
23
|
+
ALTER TABLE ast_call_sites ADD COLUMN callee_name TEXT;
|
|
24
|
+
ALTER TABLE ast_call_sites ADD COLUMN receiver_text TEXT;
|
|
25
|
+
ALTER TABLE ast_call_sites ADD COLUMN callee_kind TEXT;
|
|
26
|
+
|
|
27
|
+
CREATE INDEX IF NOT EXISTS ast_call_sites_callee_name_idx
|
|
28
|
+
ON ast_call_sites(project_id, callee_name);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docuvia",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Codebase Knowledge Evolver — maintains a local knowledge graph of your workspace: modules, dependencies, blast radius, and recorded architectural decisions.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
package/dist/chunk-3WFKL5P6.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
var a={DEBUG:"debug",INFO:"info",WARN:"warn",ERROR:"error"};var u="ipc-log";function I(t){return typeof t=="object"&&t!==null&&t.type===u}var S=class{constructor(e){this.postMessageFn=e}postMessageFn;debug(e,o){this.send(a.DEBUG,e,o)}info(e,o){this.send(a.INFO,e,o)}warn(e,o){this.send(a.WARN,e,o)}error(e,o){this.send(a.ERROR,e,o)}onLog(){return()=>{}}send(e,o,r){let s=r?{type:u,level:e,message:o,context:r}:{type:u,level:e,message:o};this.postMessageFn(s)}};var _={CONTEXT_INJECTION:"context-injection",COMMIT_L3_WRITE:"commit-l3-write",TIER_B_C_PREPUSH:"tier-b-c-prepush"},Q={[_.CONTEXT_INJECTION]:!0,[_.COMMIT_L3_WRITE]:!0,[_.TIER_B_C_PREPUSH]:!0};var J=".docuvia",q="logs",z="init.log",Z="clean.log",$="status.log",ee="sync.log",te="analyze.log",oe="review.log",re="impact.log",ne="query.log",se="export-topology.log",ie="snapshot.log",ae="hydrate.log",ce="sync-knowledge.log",le="node_modules",pe="local.db",ge="init.lock",de="tierC.lock",ue="sync-state.json",me="hooks-config.json",Ee="pending-l3-decisions.json";var R="utf8";var _e="sha256";var i={TYPESCRIPT:"typescript",JAVASCRIPT:"javascript",PYTHON:"python",RUST:"rust",GO:"go",JAVA:"java",C:"c",CPP:"cpp",RUBY:"ruby",PHP:"php",CSHARP:"csharp"};var fe=".claude/hooks",ye=".cursor/hooks",Te="docuvia-hook.js",Le="docuvia-hook.cjs";var m=class{listeners=new Set;debug(e,o){this.emit(a.DEBUG,e,o)}info(e,o){this.emit(a.INFO,e,o)}warn(e,o){this.emit(a.WARN,e,o)}error(e,o){this.emit(a.ERROR,e,o)}onLog(e){return this.listeners.add(e),()=>this.listeners.delete(e)}emit(e,o,r){let s=r?{level:e,message:o,context:r}:{level:e,message:o};for(let l of this.listeners)l(s)}};function Ie(){return new m}var h=class{constructor(e){this.logger=e}logger;handleMessage(e){return I(e)?(this.logger[e.level](e.message,e.context),!0):!1}};var g={GIT_COMMAND_FAILED:"GIT_COMMAND_FAILED",GIT_NETWORK_TIMEOUT:"GIT_NETWORK_TIMEOUT",GIT_NOT_A_REPOSITORY:"GIT_NOT_A_REPOSITORY",GIT_BRANCH_CREATE_FAILED:"GIT_BRANCH_CREATE_FAILED",GIT_HOOK_INSTALL_FAILED:"GIT_HOOK_INSTALL_FAILED",GIT_FAST_IMPORT_FAILED:"GIT_FAST_IMPORT_FAILED",DB_OPEN_FAILED:"DB_OPEN_FAILED",DB_NOT_FOUND:"DB_NOT_FOUND",DB_MIGRATION_FAILED:"DB_MIGRATION_FAILED",DB_QUERY_FAILED:"DB_QUERY_FAILED",DB_LOCKED:"DB_LOCKED",AST_WORKER_CRASHED:"AST_WORKER_CRASHED",AST_PARSE_FAILED:"AST_PARSE_FAILED",FS_READ_FAILED:"FS_READ_FAILED",FS_PATH_TRAVERSAL:"FS_PATH_TRAVERSAL",FACTORY_TOKEN_NOT_REGISTERED:"FACTORY_TOKEN_NOT_REGISTERED",FACTORY_LOCKED:"FACTORY_LOCKED",MEMORY_SCOPE_NOT_FOUND:"MEMORY_SCOPE_NOT_FOUND",SYNC_FETCH_FAILED:"SYNC_FETCH_FAILED",SYNC_PUSH_FAILED:"SYNC_PUSH_FAILED",LLM_NOT_INITIALIZED:"LLM_NOT_INITIALIZED",LLM_CHAT_COMPLETION_FAILED:"LLM_CHAT_COMPLETION_FAILED",LLM_STREAM_FAILED:"LLM_STREAM_FAILED",LLM_INVALID_RESPONSE:"LLM_INVALID_RESPONSE",INIT_WORKFLOW_FAILED:"INIT_WORKFLOW_FAILED",CLEAN_WORKFLOW_FAILED:"CLEAN_WORKFLOW_FAILED",INVALID_INPUT:"INVALID_INPUT"};var Se="DocuviaError",c=class t extends Error{code;cause;constructor(e,o,r){super(o),this.name=Se,this.code=e,this.cause=r}static wrap(e,o,r){if(r instanceof t)return r;let s=r instanceof Error?r.message:String(r);return new t(e,`${o}: ${s}`,r)}};var Re={WORKSPACE_ROOT:"workspaceRoot",API_URL:"apiUrl",PAT:"pat",PROJECT_ID:"projectId",COMMIT_SHA:"commitSha",TARGET_PATH:"targetPath",LLM_BASE_URL:"llmBaseUrl",LLM_MODEL:"llmModel",BASE_REF:"baseRef",TARGET:"target",ESCALATE_TO_LSP:"escalateToLsp",TIER_B_FULL_RESYNC:"tierBFullResync",LIMIT:"limit",COLLAPSE:"collapse",KEEP_DB:"keepDb",LSP_BINARY_OVERRIDE:"lspBinaryOverride",LSP_ARGS_OVERRIDE:"lspArgsOverride",LSP_TIMEOUT_MS:"lspTimeoutMs",LSP_MAX_PROCESSES:"lspMaxProcesses",TIER_B_COMMIT_CAP:"tierBCommitCap",TIER_C_DAILY_CALL_CAP:"tierCDailyCallCap",TIER_C_DAILY_TOKEN_CAP:"tierCDailyTokenCap",TIER_C_WALL_CLOCK_MS:"tierCWallClockMs",TIER_C_ITEM_CAP:"tierCItemCap",TIER_C_LOAD_THRESHOLD:"tierCLoadThreshold",GIT_NETWORK_TIMEOUT_MS:"gitNetworkTimeoutMs",FORCE:"force",AGENT_AUTHORED_DECISIONS:"agentAuthoredDecisions",HOOK_NAME:"hookName",HOOK_ENABLED:"hookEnabled",FLUSH_STAGED_L3:"flushStagedL3"},he={SCOPE_NOT_FOUND:(t,e)=>`Cannot set "${t}": memory scope "${e}" was never created`},f=class{scopes=new Map;createScope(e){this.scopes.has(e)||this.scopes.set(e,new Map)}set(e,o,r){let s=this.scopes.get(e);if(!s)throw new c(g.MEMORY_SCOPE_NOT_FOUND,he.SCOPE_NOT_FOUND(o,e));s.set(o,r)}get(e,o){return this.scopes.get(e)?.get(o)}deleteScope(e){this.scopes.delete(e)}hasScope(e){return this.scopes.has(e)}},Ce=new f;var x={REGISTER_LOCKED:t=>`Cannot register "${t}": factory is locked (test isolation)`,PROVIDER_NOT_REGISTERED:t=>`No provider registered for "${t}" \u2014 the implementation library that owns it was never imported for its registration side effect`},y=class{providers=new Map;locked=!1;register(e,o){if(this.locked)throw new c(g.FACTORY_LOCKED,x.REGISTER_LOCKED(String(e.description)));this.providers.set(e,o)}resolve(e,o){let r=this.providers.get(e);if(!r)throw new c(g.FACTORY_TOKEN_NOT_REGISTERED,x.PROVIDER_NOT_REGISTERED(String(e.description)));return r(this,o)}has(e){return this.providers.has(e)}lock(){this.locked=!0}unlock(){this.locked=!1}reset(){this.providers.clear(),this.locked=!1}},D=new y;function n(t){return Symbol(t)}var Ae={GitProvider:n("IGitProvider"),LineBlameProvider:n("ILineBlameProvider"),KnowledgeGitService:n("IKnowledgeGitService"),FileDiscovery:n("IFileDiscovery"),ConfigScanner:n("IConfigScanner"),VcsScanner:n("IVcsScanner"),AstProcessor:n("IAstProcessor"),GraphPersister:n("IGraphPersister"),TempFileManager:n("TempFileManager"),GraphStoreOpener:n("GraphStoreOpener"),RemoteSyncClient:n("RemoteSyncClient"),LlmClient:n("LlmClient"),QueryService:n("IQueryService"),TierBCoverageHintProvider:n("ITierBCoverageHintProvider"),ImpactService:n("IImpactService"),ChangeDetectionService:n("IChangeDetectionService"),TopologyBuilder:n("ITopologyBuilder"),SnapshotRenderer:n("ISnapshotRenderer"),HydrationService:n("IHydrationService"),DiagnosticRunnerDb:n("DiagnosticRunnerDb"),DiagnosticRunnerGit:n("DiagnosticRunnerGit"),SemanticDiffAnalyzer:n("ISemanticDiffAnalyzer"),EdgeResolutionProviders:n("EdgeResolutionProviders")};var Ne={ADDED:"added",MODIFIED:"modified",DELETED:"deleted",RENAMED:"renamed"};var Oe={LSP:"lsp",LLM_INFERRED:"llm-inferred"},Pe={TYPESCRIPT:"typescript",PYTHON:"python",GO:"go",RUST:"rust",JAVA:"java",CPP:"cpp",CSHARP:"csharp",PHP:"php",RUBY:"ruby"};var ve={NO_REMOTE:"no-remote",UP_TO_DATE:"up-to-date",FAST_FORWARDED_LOCAL:"fast-forwarded-local",PUSHED_LOCAL:"pushed-local",MERGED:"merged"};var xe={MODULE:"module",PACKAGE:"package",PCD:"pcd"},De={CONTAINS:"contains",CALLS:"calls",IMPLEMENTS:"implements",EXTENDS:"extends",IMPORTS:"imports",DEPENDS_ON:"depends_on",DECISION:"decision"};var Me={PENDING:"pending",ACTIVE:"active",DRAFT:"draft",GARBAGE:"garbage"},be={ANALYZE:"analyze",AGENT_AUTHORED:"agent-authored"};var ke={CREATE_L3:"CREATE_L3"};var Fe={SYSTEM:"system",USER:"user",ASSISTANT:"assistant",TOOL:"tool"};var we={LOW:"LOW",MEDIUM:"MEDIUM",HIGH:"HIGH",CRITICAL:"CRITICAL",UNKNOWN:"UNKNOWN"},Ge={EXACT:"exact",LOWER_BOUND:"lower-bound"},He={LSP_FALLBACK:"lsp-fallback"};var Be={L2:"l2",L3:"l3"};var Ke={FILE:"file",SYMBOL:"symbol",DECISION:"decision"},Ue={AUTO:"auto",FILE:"file",SYMBOL:"symbol"},je={L1_TAG:"l1_tag",DIRECTORY:"directory"};var Ye={TYPESCRIPT:"typescript",REACT:"react",EXPRESS:"express",VUE:"vue"},Ve={UNKNOWN:"unknown",JAVASCRIPT:"javascript",GENERIC:"generic",RUST:"rust",PYTHON:"python",GO:"go"},We="general",Xe={FRONTEND:"frontend",BACKEND:"backend",NEXTJS:"nextjs",SSR:"ssr",DRIZZLE:"drizzle",DATABASE:"database",TAILWINDCSS:"tailwindcss",CSS:"css",JEST:"jest",TESTING:"testing",VITEST:"vitest",POSTGRES:"postgres",MONOREPO:"monorepo",TOKIO:"tokio",ASYNC:"async",ACTIX:"actix",SERDE:"serde",TAURI:"tauri",DESKTOP:"desktop",DJANGO:"django",FASTAPI:"fastapi",PANDAS:"pandas",DATA:"data",GIN:"gin",STRICT_TS:"strict-ts",VITE:"vite",BUILD_TOOL:"build-tool"};var M="origin",C={KNOWLEDGE_ROOT:"docuvia-knowledge",KNOWLEDGE_DIR_NAME:"knowledge",GRAPH_DIR_NAME:"graph",L3_DIR_NAME:"_l3",NODES_JSONL_NAME:"nodes.jsonl",EDGES_JSONL_NAME:"edges.jsonl",SOURCE_COMMIT_TRAILER_KEY:"Docuvia-Source",POST_COMMIT_HOOK_NAME:"post-commit",POST_COMMIT_HOOK_MARKER:"docuvia analyze",POST_COMMIT_FLUSH_L3_MARKER:"docuvia analyze --flush-staged-l3",POST_COMMIT_NOHUP_MARKER:"nohup npx --no-install docuvia analyze",DOCUVIA_HOOK_HEADER_COMMENT:"# Docuvia Knowledge Graph Evolver Hook",POST_COMMIT_HOOK_CONTENT:`#!/bin/bash
|
|
3
|
-
# Docuvia Knowledge Graph Evolver Hook
|
|
4
|
-
# Non-intrusively extracts AST deltas in the background
|
|
5
|
-
if command -v npx > /dev/null 2>&1; then
|
|
6
|
-
mkdir -p .docuvia/logs
|
|
7
|
-
# Fire and forget (do not block commit) -- nohup keeps the process alive after this hook's
|
|
8
|
-
# shell exits; output goes to a log file (not /dev/null) so failures are visible (issue #58).
|
|
9
|
-
nohup npx --no-install docuvia analyze >> .docuvia/logs/post-commit-hook.log 2>&1 &
|
|
10
|
-
# Flush any staged agent-authored L3 decisions for this commit (roadmap items 32-34, issue #42).
|
|
11
|
-
# Self-gated internally on the commit-l3-write toggle -- see run-flush-staged-l3.ts.
|
|
12
|
-
nohup npx --no-install docuvia analyze --flush-staged-l3 >> .docuvia/logs/post-commit-hook.log 2>&1 &
|
|
13
|
-
fi
|
|
14
|
-
`,PRE_FLUSH_L3_POST_COMMIT_HOOK_CONTENT:`#!/bin/bash
|
|
15
|
-
# Docuvia Knowledge Graph Evolver Hook
|
|
16
|
-
# Non-intrusively extracts AST deltas in the background
|
|
17
|
-
if command -v npx > /dev/null 2>&1; then
|
|
18
|
-
# Fire and forget (do not block commit)
|
|
19
|
-
npx --no-install docuvia analyze > /dev/null 2>&1 &
|
|
20
|
-
fi
|
|
21
|
-
`,PRE_NOHUP_POST_COMMIT_HOOK_CONTENT:`#!/bin/bash
|
|
22
|
-
# Docuvia Knowledge Graph Evolver Hook
|
|
23
|
-
# Non-intrusively extracts AST deltas in the background
|
|
24
|
-
if command -v npx > /dev/null 2>&1; then
|
|
25
|
-
# Fire and forget (do not block commit)
|
|
26
|
-
npx --no-install docuvia analyze > /dev/null 2>&1 &
|
|
27
|
-
# Flush any staged agent-authored L3 decisions for this commit (roadmap items 32-34, issue #42).
|
|
28
|
-
# Self-gated internally on the commit-l3-write toggle -- see run-flush-staged-l3.ts.
|
|
29
|
-
npx --no-install docuvia analyze --flush-staged-l3 > /dev/null 2>&1 &
|
|
30
|
-
fi
|
|
31
|
-
`,LEGACY_POST_COMMIT_HOOK_MARKER:"docuvia snapshot",LEGACY_POST_COMMIT_HOOK_CONTENT:`#!/bin/bash
|
|
32
|
-
# Docuvia Knowledge Graph Evolver Hook
|
|
33
|
-
# Non-intrusively extracts AST deltas in the background
|
|
34
|
-
if command -v npx &> /dev/null; then
|
|
35
|
-
# Fire and forget (do not block commit)
|
|
36
|
-
npx --no-install docuvia snapshot > /dev/null 2>&1 &
|
|
37
|
-
fi
|
|
38
|
-
`,LOCAL_REMOTE_URL_SCHEME:"file://",DEFAULT_REMOTE_NAME:M,REMOTE_REF_PREFIX:"refs/remotes/",HEAD_REF:"HEAD",DEFAULT_LOCAL_PROJECT_ID:1,META_KEY_KNOWLEDGE_TIP_SHA:"hydratedKnowledgeSha",META_KEY_LAST_INGESTED_SOURCE_SHA:"lastIngestedSourceSha",META_KEY_NODE_KEY_FORMAT_VERSION:"nodeKeyFormatVersion",META_KEY_TIER_B_QUEUE:"tierBQueue",EMPTY_KNOWLEDGE_TEMP_DIR_PREFIX:"docuvia-empty-knowledge-",META_KEY_LAST_TIER_B_BATCH_SHA:"lastTierBBatchSha",META_KEY_TIER_B_BATCH_PENDING:"tierBBatchPending",META_KEY_KNOWLEDGE_PACK_PENDING:"knowledgePackPending",META_KEY_TIER_B_CHANGED_BYTES:"tierBChangedBytes",DEFAULT_TIER_B_COMMIT_CAP_BYTES:512e3,DEFAULT_TIER_B_COVERAGE_FAIL_THRESHOLD:.5,DEFAULT_L2_SEMANTIC_COVERAGE_FAIL_THRESHOLD:.1,META_KEY_TIER_B_ZERO_PROGRESS_BATCHES:"tierBZeroProgressBatches",DEFAULT_TIER_B_ZERO_PROGRESS_MAX_BATCHES:3,DEFAULT_POST_COMMIT_INGESTION_GRACE_MS:6e5,PRE_PUSH_HOOK_NAME:"pre-push",PRE_PUSH_HOOK_MARKER:"docuvia analyze --escalate-to-lsp",PRE_PUSH_SYNC_KNOWLEDGE_MARKER:"docuvia sync-knowledge",PRE_PUSH_ENV_GATE_MARKER:"--fallback-ast",PRE_PUSH_HOOKS_CHECK_MARKER:"docuvia hooks check",PRE_PUSH_HOOK_CONTENT:`#!/bin/bash
|
|
39
|
-
# Docuvia Tier B Batch Hook (LSP escalation + snapshot + knowledge sync)
|
|
40
|
-
# Runs synchronously (generous timeout) so pushed code carries corrected knowledge -- see
|
|
41
|
-
# docs/gitbook/analysis/phase1-decision-integration.md \xA78h and
|
|
42
|
-
# docs/gitbook/analysis/phase2-sync-knowledge-scheduling.md.
|
|
43
|
-
if command -v npx > /dev/null 2>&1; then
|
|
44
|
-
npx --no-install docuvia hooks check tier-b-c-prepush && npx --no-install docuvia analyze --escalate-to-lsp --fallback-ast && npx --no-install docuvia snapshot && npx --no-install docuvia sync-knowledge
|
|
45
|
-
fi
|
|
46
|
-
# Never blocks the push on a Tier B/sync-knowledge failure -- PLAT-007's reliability
|
|
47
|
-
# requirement (failures only ever surface via JSONL logs / doctor, never to the pushing
|
|
48
|
-
# developer).
|
|
49
|
-
exit 0
|
|
50
|
-
`,ENV_GATE_PRE_PUSH_HOOK_CONTENT:`#!/bin/bash
|
|
51
|
-
# Docuvia Tier B Batch Hook (LSP escalation + snapshot + knowledge sync)
|
|
52
|
-
# Runs synchronously (generous timeout) so pushed code carries corrected knowledge -- see
|
|
53
|
-
# docs/gitbook/analysis/phase1-decision-integration.md \xA78h and
|
|
54
|
-
# docs/gitbook/analysis/phase2-sync-knowledge-scheduling.md.
|
|
55
|
-
if command -v npx > /dev/null 2>&1; then
|
|
56
|
-
npx --no-install docuvia analyze --escalate-to-lsp --fallback-ast && npx --no-install docuvia snapshot && npx --no-install docuvia sync-knowledge
|
|
57
|
-
fi
|
|
58
|
-
# Never blocks the push on a Tier B/sync-knowledge failure -- PLAT-007's reliability
|
|
59
|
-
# requirement (failures only ever surface via JSONL logs / doctor, never to the pushing
|
|
60
|
-
# developer).
|
|
61
|
-
exit 0
|
|
62
|
-
`,SYNC_KNOWLEDGE_PRE_PUSH_HOOK_CONTENT:`#!/bin/bash
|
|
63
|
-
# Docuvia Tier B Batch Hook (LSP escalation + snapshot + knowledge sync)
|
|
64
|
-
# Runs synchronously (generous timeout) so pushed code carries corrected knowledge -- see
|
|
65
|
-
# docs/gitbook/analysis/phase1-decision-integration.md \xA78h and
|
|
66
|
-
# docs/gitbook/analysis/phase2-sync-knowledge-scheduling.md.
|
|
67
|
-
if command -v npx > /dev/null 2>&1; then
|
|
68
|
-
npx --no-install docuvia analyze --escalate-to-lsp && npx --no-install docuvia snapshot && npx --no-install docuvia sync-knowledge
|
|
69
|
-
fi
|
|
70
|
-
# Never blocks the push on a Tier B/sync-knowledge failure -- PLAT-007's reliability
|
|
71
|
-
# requirement (failures only ever surface via JSONL logs / doctor, never to the pushing
|
|
72
|
-
# developer).
|
|
73
|
-
exit 0
|
|
74
|
-
`,LEGACY_PRE_PUSH_HOOK_CONTENT:`#!/bin/bash
|
|
75
|
-
# Docuvia Tier B Batch Hook (LSP escalation + snapshot)
|
|
76
|
-
# Runs synchronously (generous timeout) so pushed code carries corrected knowledge -- see
|
|
77
|
-
# docs/gitbook/analysis/phase1-decision-integration.md \xA78h.
|
|
78
|
-
if command -v npx &> /dev/null; then
|
|
79
|
-
npx --no-install docuvia analyze --escalate-to-lsp && npx --no-install docuvia snapshot
|
|
80
|
-
# Phase 2: a sync-knowledge step composes here -- must not double-fetch (see \xA77a-5).
|
|
81
|
-
fi
|
|
82
|
-
# Never blocks the push on a Tier B failure -- PLAT-007's reliability requirement (failures
|
|
83
|
-
# only ever surface via JSONL logs / doctor, never to the pushing developer).
|
|
84
|
-
exit 0
|
|
85
|
-
`,META_KEY_TIER_C_QUEUE:"tierCQueue",META_KEY_TIER_C_BUDGET:"tierCBudget",DEFAULT_TIER_C_DAILY_CALL_CAP:50,DEFAULT_TIER_C_DAILY_TOKEN_CAP:1e5,DEFAULT_TIER_C_WALL_CLOCK_MS:12e3,DEFAULT_TIER_C_ITEM_CAP:20,DEFAULT_TIER_C_LOAD_THRESHOLD:.8,DEFAULT_TIER_C_MAX_ITEM_FAILURES:3};import T from"path";var b=[".ts",".tsx",".mts",".cts"],k=[".js",".jsx",".mjs",".cjs"],F=[".py"],w=[".rs"],G=[".go"],H=[".java"],B=[".c",".h"],K=[".cpp",".cxx",".cc",".hpp",".hxx",".hh",".cu",".cuh"],U=[".rb",".rake",".gemspec"],j=[".php",".phtml",".php3",".php4",".php5",".phps"],Y=[".cs"],A=new Set(["Rakefile","Gemfile","Guardfile","Vagrantfile","Brewfile"]),N=(()=>{let t=new Map,e=[[i.TYPESCRIPT,b],[i.JAVASCRIPT,k],[i.PYTHON,F],[i.RUST,w],[i.GO,G],[i.JAVA,H],[i.C,B],[i.CPP,K],[i.RUBY,U],[i.PHP,j],[i.CSHARP,Y]];for(let[o,r]of e)for(let s of r)t.set(s,o);return t})();function Qe(t){let e=N.get(T.extname(t).toLowerCase());return e||(A.has(T.basename(t))?i.RUBY:void 0)}function Je(t){return N.has(T.extname(t).toLowerCase())?!0:A.has(T.basename(t))}function qe(){return Array.from(N.keys()).map(t=>t.replace(/^\./,""))}var O="EEXIST",L="EPERM",P="EACCES",v="EBUSY";import d from"fs/promises";var ze={TIMED_OUT_WAITING:t=>`Timed out waiting for the lock at ${t} \u2014 another process may be stuck`},Ze={maxWaitMs:1e4,retryIntervalMs:100,heartbeatIntervalMs:1e4,staleAfterMs:3e4};function $e(t){return new Promise(e=>setTimeout(e,t))}function et(t){try{return process.kill(t,0),!0}catch(e){return e.code===L}}async function tt(t){try{let e=Number.parseInt(await d.readFile(t,R),10);return Number.isFinite(e)?e:void 0}catch{return}}async function ot(t,e){let o=await d.stat(t).catch(()=>{});if(!o||Date.now()-o.mtimeMs<=e)return!1;let r=await tt(t);return r!==void 0&&et(r)?!1:(await d.rm(t,{force:!0}).catch(()=>{}),!0)}function rt(t){let e=t.code;return e===O||e===L||e===P||e===v}async function nt(t){try{let e=await d.open(t,"wx");return await e.writeFile(String(process.pid)),await e.close(),!0}catch(e){if(!rt(e))throw e;return!1}}async function st(t,e={}){let o={...Ze,...e},r=Date.now()+o.maxWaitMs,s=!1;for(;!await nt(t);)if(s||(s=!0,e.onWaiting?.()),!await ot(t,o.staleAfterMs)){if(Date.now()>r)throw new Error(ze.TIMED_OUT_WAITING(t));await $e(o.retryIntervalMs)}let l=setInterval(()=>{let p=new Date;d.utimes(t,p,p).catch(()=>{})},o.heartbeatIntervalMs);l.unref?.();let E=!1;return{async release(){E||(E=!0,clearInterval(l),await d.rm(t,{force:!0}).catch(()=>{}))}}}var W=`${C.SOURCE_COMMIT_TRAILER_KEY}: `;function it(t){for(let e of t.split(`
|
|
86
|
-
`)){let o=e.trim();if(o.startsWith(W))return o.slice(W.length).trim()}}function at(t,e,o,r){if(!o&&!r)return;let l=(e?t.files.getTierBFileStatus(e):void 0)?.lastProcessedAt??null,E=r&&l===null,p=t.files.getTierBCoverage(),X=o&&p.processedFiles<p.totalFiles;if(!(!E&&!X))return{ownFileLastProcessedAt:l,workspaceFilesProcessed:p.processedFiles,workspaceFilesTotal:p.totalFiles}}var ct={PASS:"pass",FAIL:"fail"};export{a,m as b,Ie as c,S as d,h as e,g as f,c as g,Re as h,Ce as i,D as j,Ae as k,Ne as l,Oe as m,Pe as n,ve as o,xe as p,De as q,Me as r,be as s,ke as t,Fe as u,we as v,Ge as w,He as x,Be as y,Ke as z,Ue as A,je as B,_ as C,Q as D,J as E,q as F,z as G,Z as H,$ as I,ee as J,te as K,oe as L,re as M,ne as N,se as O,ie as P,ae as Q,ce as R,le as S,pe as T,ge as U,de as V,ue as W,me as X,Ee as Y,Ye as Z,Ve as _,We as $,Xe as aa,R as ba,_e as ca,M as da,C as ea,i as fa,b as ga,k as ha,F as ia,w as ja,G as ka,H as la,B as ma,K as na,U as oa,j as pa,Y as qa,A as ra,Qe as sa,Je as ta,qe as ua,O as va,L as wa,P as xa,v as ya,st as za,it as Aa,at as Ba,ct as Ca,fe as Da,ye as Ea,Te as Fa,Le as Ga};
|
|
87
|
-
//# sourceMappingURL=chunk-3WFKL5P6.js.map
|