@noyrax/5d-database-plugin 0.1.14-beta.4 → 0.1.14-beta.6
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/out/api/adr-api.d.ts.map +1 -1
- package/out/api/adr-api.js +12 -7
- package/out/api/adr-api.js.map +1 -1
- package/out/api/bootstrap-api.d.ts +3 -0
- package/out/api/bootstrap-api.d.ts.map +1 -1
- package/out/api/bootstrap-api.js +11 -1
- package/out/api/bootstrap-api.js.map +1 -1
- package/out/api/context-builder.d.ts.map +1 -1
- package/out/api/context-builder.js +21 -5
- package/out/api/context-builder.js.map +1 -1
- package/out/api/evidence-grader.d.ts +83 -0
- package/out/api/evidence-grader.d.ts.map +1 -0
- package/out/api/evidence-grader.js +161 -0
- package/out/api/evidence-grader.js.map +1 -0
- package/out/api/index.d.ts +5 -0
- package/out/api/index.d.ts.map +1 -1
- package/out/api/index.js +11 -1
- package/out/api/index.js.map +1 -1
- package/out/api/learning-path-api.d.ts +3 -0
- package/out/api/learning-path-api.d.ts.map +1 -1
- package/out/api/learning-path-api.js +15 -2
- package/out/api/learning-path-api.js.map +1 -1
- package/out/api/self-explanation-api.d.ts +4 -0
- package/out/api/self-explanation-api.d.ts.map +1 -1
- package/out/api/self-explanation-api.js +60 -2
- package/out/api/self-explanation-api.js.map +1 -1
- package/out/api/semantic-search-api.d.ts +3 -0
- package/out/api/semantic-search-api.d.ts.map +1 -1
- package/out/api/semantic-search-api.js +39 -2
- package/out/api/semantic-search-api.js.map +1 -1
- package/out/api/source-access-contract-api.d.ts +60 -0
- package/out/api/source-access-contract-api.d.ts.map +1 -0
- package/out/api/source-access-contract-api.js +192 -0
- package/out/api/source-access-contract-api.js.map +1 -0
- package/out/api/source-snippet-api.d.ts +58 -0
- package/out/api/source-snippet-api.d.ts.map +1 -0
- package/out/api/source-snippet-api.js +185 -0
- package/out/api/source-snippet-api.js.map +1 -0
- package/out/api/vector-backend-status-api.d.ts +68 -0
- package/out/api/vector-backend-status-api.d.ts.map +1 -0
- package/out/api/vector-backend-status-api.js +241 -0
- package/out/api/vector-backend-status-api.js.map +1 -0
- package/out/cli/debug-plugin-id.d.ts +9 -0
- package/out/cli/debug-plugin-id.d.ts.map +1 -0
- package/out/cli/debug-plugin-id.js +188 -0
- package/out/cli/debug-plugin-id.js.map +1 -0
- package/out/cli/tool-cli.js +1 -1
- package/out/cli/tool-cli.js.map +1 -1
- package/out/ingestors/module-ingestor.d.ts.map +1 -1
- package/out/ingestors/module-ingestor.js +17 -0
- package/out/ingestors/module-ingestor.js.map +1 -1
- package/out/ingestors/symbol-ingestor.d.ts.map +1 -1
- package/out/ingestors/symbol-ingestor.js +6 -0
- package/out/ingestors/symbol-ingestor.js.map +1 -1
- package/out/mcp/tools/gap-analysis.d.ts +13 -1
- package/out/mcp/tools/gap-analysis.d.ts.map +1 -1
- package/out/mcp/tools/gap-analysis.js +153 -26
- package/out/mcp/tools/gap-analysis.js.map +1 -1
- package/out/mcp/tools/learning-path.d.ts.map +1 -1
- package/out/mcp/tools/learning-path.js +19 -5
- package/out/mcp/tools/learning-path.js.map +1 -1
- package/out/mcp/tools/semantic-discovery.d.ts.map +1 -1
- package/out/mcp/tools/semantic-discovery.js +44 -4
- package/out/mcp/tools/semantic-discovery.js.map +1 -1
- package/out/mcp/tools/source-access-contract.d.ts +26 -0
- package/out/mcp/tools/source-access-contract.d.ts.map +1 -0
- package/out/mcp/tools/source-access-contract.js +43 -0
- package/out/mcp/tools/source-access-contract.js.map +1 -0
- package/out/mcp/tools/source-snippet.d.ts +71 -0
- package/out/mcp/tools/source-snippet.d.ts.map +1 -0
- package/out/mcp/tools/source-snippet.js +82 -0
- package/out/mcp/tools/source-snippet.js.map +1 -0
- package/out/models/action-hint.d.ts +36 -0
- package/out/models/action-hint.d.ts.map +1 -0
- package/out/models/action-hint.js +38 -0
- package/out/models/action-hint.js.map +1 -0
- package/out/models/evidence.d.ts +68 -0
- package/out/models/evidence.d.ts.map +1 -0
- package/out/models/evidence.js +91 -0
- package/out/models/evidence.js.map +1 -0
- package/out/models/module.d.ts +2 -0
- package/out/models/module.d.ts.map +1 -1
- package/out/models/reason-codes.d.ts +50 -0
- package/out/models/reason-codes.d.ts.map +1 -0
- package/out/models/reason-codes.js +80 -0
- package/out/models/reason-codes.js.map +1 -0
- package/out/models/symbol.d.ts +6 -0
- package/out/models/symbol.d.ts.map +1 -1
- package/out/repositories/module-repository.d.ts.map +1 -1
- package/out/repositories/module-repository.js +9 -3
- package/out/repositories/module-repository.js.map +1 -1
- package/out/repositories/symbol-repository.d.ts.map +1 -1
- package/out/repositories/symbol-repository.js +21 -3
- package/out/repositories/symbol-repository.js.map +1 -1
- package/package.json +3 -3
- package/schemas/sqlite/007_add_source_code_spans.sql +19 -0
- package/schemas/sqlite/008_add_source_access_config.sql +33 -0
|
@@ -5,6 +5,7 @@ const dependency_api_1 = require("./dependency-api");
|
|
|
5
5
|
const module_api_1 = require("./module-api");
|
|
6
6
|
const adr_api_1 = require("./adr-api");
|
|
7
7
|
const navigation_repository_1 = require("../repositories/navigation-repository");
|
|
8
|
+
const evidence_grader_1 = require("./evidence-grader");
|
|
8
9
|
/**
|
|
9
10
|
* Generates guided learning paths for agents.
|
|
10
11
|
* Provides step-by-step guidance based on topic/query.
|
|
@@ -16,6 +17,7 @@ class LearningPathApi {
|
|
|
16
17
|
this.dependencyApi = new dependency_api_1.DependencyApi(dbManager);
|
|
17
18
|
this.moduleApi = new module_api_1.ModuleApi(dbManager);
|
|
18
19
|
this.adrApi = new adr_api_1.AdrApi(dbManager);
|
|
20
|
+
this.evidenceGrader = new evidence_grader_1.EvidenceGrader();
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Generates a learning path for a topic.
|
|
@@ -25,7 +27,6 @@ class LearningPathApi {
|
|
|
25
27
|
* @returns Promise that resolves to a learning path
|
|
26
28
|
*/
|
|
27
29
|
async generateLearningPath(topic, pluginId) {
|
|
28
|
-
console.log(`[LearningPathApi] Generating learning path for topic: "${topic}"`);
|
|
29
30
|
// 1. Semantic search for topic
|
|
30
31
|
const relevantEntities = await this.semanticSearchApi.search(topic, pluginId, {
|
|
31
32
|
limit: 20
|
|
@@ -43,10 +44,22 @@ class LearningPathApi {
|
|
|
43
44
|
const path = await this.buildDependencyPath(entryPoints, relevantEntities, pluginId);
|
|
44
45
|
// 4. Estimate time (rough: 2-3 minutes per step)
|
|
45
46
|
const estimatedTime = path.length > 0 ? `${path.length * 2}-${path.length * 3} minutes` : '0 minutes';
|
|
47
|
+
// Create evidence: INFERRED from semantic search and dependency analysis
|
|
48
|
+
const evidence = this.evidenceGrader.gradeAsInferred([
|
|
49
|
+
{
|
|
50
|
+
type: 'DB_QUERY',
|
|
51
|
+
path: 'semantic_search'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'DB_QUERY',
|
|
55
|
+
path: 'dependency_analysis'
|
|
56
|
+
}
|
|
57
|
+
], 'Learning path derived from semantic search results and dependency analysis');
|
|
46
58
|
return {
|
|
47
59
|
topic,
|
|
48
60
|
path,
|
|
49
|
-
estimated_time: estimatedTime
|
|
61
|
+
estimated_time: estimatedTime,
|
|
62
|
+
evidence
|
|
50
63
|
};
|
|
51
64
|
}
|
|
52
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learning-path-api.js","sourceRoot":"","sources":["../../src/api/learning-path-api.ts"],"names":[],"mappings":";;;AAGA,qDAAiD;AACjD,6CAAyC;AACzC,uCAAmC;AACnC,iFAA6E;
|
|
1
|
+
{"version":3,"file":"learning-path-api.js","sourceRoot":"","sources":["../../src/api/learning-path-api.ts"],"names":[],"mappings":";;;AAGA,qDAAiD;AACjD,6CAAyC;AACzC,uCAAmC;AACnC,iFAA6E;AAK7E,uDAAmD;AAsBnD;;;GAGG;AACH,MAAa,eAAe;IAQxB,YACI,SAAyB,EACzB,iBAAoC;QAEpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAa,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACtB,KAAa,EACb,QAAgB;QAEhB,+BAA+B;QAC/B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;YAC1E,KAAK,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO;gBACH,KAAK;gBACL,IAAI,EAAE,EAAE;gBACR,cAAc,EAAE,WAAW;aAC9B,CAAC;QACN,CAAC;QAED,4CAA4C;QAC5C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAE3E,oEAAoE;QACpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAErF,iDAAiD;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;QAEtG,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAChD;YACI;gBACI,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,iBAAiB;aAC1B;YACD;gBACI,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,qBAAqB;aAC9B;SACJ,EACD,4EAA4E,CAC/E,CAAC;QAEF,OAAO;YACH,KAAK;YACL,IAAI;YACJ,cAAc,EAAE,aAAa;YAC7B,QAAQ;SACX,CAAC;IACN,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CACzB,QAAgC,EAChC,QAAgB;QAEhB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,4CAAoB,CAAC,EAAE,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAsB,EAAE,CAAC;QAE1C,yCAAyC;QACzC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC3E,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;oBACtC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;gBAClC,8BAA8B;gBAC9B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAED,0DAA0D;QAC1D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;YACzD,IAAI,QAAQ,EAAE,CAAC;gBACX,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACJ,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;gBAC5D,IAAI,WAAW,EAAE,CAAC;oBACd,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC7B,WAA8B,EAC9B,OAA+B,EAC/B,QAAgB;QAEhB,MAAM,IAAI,GAAuB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,uBAAuB;QACvB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAE9E,yBAAyB;QACzB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAuB,CAAC,CAAE,2BAA2B;QACpF,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7D,CAAC;QAED,6DAA6D;QAC7D,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;QACtE,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;QAEzE,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,uBAAuB;QACvB,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAC/E,IAAI,GAAG,EAAE,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC;wBACN,IAAI,EAAE,UAAU,EAAE;wBAClB,MAAM,EAAE,UAAU;wBAClB,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,0BAA0B,GAAG,CAAC,KAAK,EAAE;qBAChD,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC;YACL,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAClF,IAAI,MAAM,EAAE,CAAC;oBACT,IAAI,CAAC,IAAI,CAAC;wBACN,IAAI,EAAE,UAAU,EAAE;wBAClB,MAAM,EAAE,UAAU;wBAClB,MAAM,EAAE,OAAO;wBACf,MAAM,EAAE,gBAAgB,MAAM,CAAC,SAAS,EAAE;qBAC7C,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC;YACL,CAAC;QACL,CAAC;QAED,oDAAoD;QACpD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEhE,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,IAAI,MAAM,GAAgD,SAAS,CAAC;gBACpE,IAAI,MAAM,GAAG,mBAAmB,CAAC;gBAEjC,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;oBAC3B,MAAM,GAAG,MAAM,CAAC;oBAChB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;oBAC1E,IAAI,GAAG,EAAE,CAAC;wBACN,MAAM,GAAG,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjC,CAAC;gBACL,CAAC;qBAAM,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;oBAClC,MAAM,GAAG,OAAO,CAAC;oBACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC7E,IAAI,MAAM,EAAE,CAAC;wBACT,MAAM,GAAG,WAAW,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC3C,CAAC;gBACL,CAAC;qBAAM,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;oBAClC,MAAM,GAAG,SAAS,CAAC;oBACnB,MAAM,GAAG,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC5C,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC;oBACN,IAAI,EAAE,UAAU,EAAE;oBAClB,MAAM,EAAE,MAAM,CAAC,SAAS;oBACxB,MAAM;oBACN,MAAM;iBACT,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAvND,0CAuNC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MultiDbManager } from '../core/multi-db-manager';
|
|
2
2
|
import { EntityReference } from '../models/entity-reference';
|
|
3
|
+
import { Evidence } from '../models/evidence';
|
|
3
4
|
/**
|
|
4
5
|
* System explanation interface.
|
|
5
6
|
* Describes what the system is, how it works, and entry points.
|
|
@@ -21,6 +22,7 @@ export interface SystemExplanation {
|
|
|
21
22
|
title: string;
|
|
22
23
|
}>;
|
|
23
24
|
suggested_start: string;
|
|
25
|
+
evidence?: Evidence;
|
|
24
26
|
}
|
|
25
27
|
/**
|
|
26
28
|
* System overview interface.
|
|
@@ -38,6 +40,7 @@ export interface SystemOverview {
|
|
|
38
40
|
adr_number: string;
|
|
39
41
|
title: string;
|
|
40
42
|
}>;
|
|
43
|
+
evidence?: Evidence;
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
43
46
|
* API for system self-explanation.
|
|
@@ -50,6 +53,7 @@ export declare class SelfExplanationApi {
|
|
|
50
53
|
private symbolApi;
|
|
51
54
|
private dependencyApi;
|
|
52
55
|
private changeApi;
|
|
56
|
+
private evidenceGrader;
|
|
53
57
|
constructor(dbManager: MultiDbManager);
|
|
54
58
|
/**
|
|
55
59
|
* Gets system overview with statistics and entry points.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-explanation-api.d.ts","sourceRoot":"","sources":["../../src/api/self-explanation-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"self-explanation-api.d.ts","sourceRoot":"","sources":["../../src/api/self-explanation-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;IACH,YAAY,EAAE,KAAK,CAAC,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,iBAAiB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,iBAAiB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAiB;gBAE3B,SAAS,EAAE,cAAc;IAUrC;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAqDlE;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkGjE;;OAEG;YACW,cAAc;IAsB5B;;OAEG;YACW,mBAAmB;CAsBpC"}
|
|
@@ -7,6 +7,7 @@ const module_api_1 = require("./module-api");
|
|
|
7
7
|
const symbol_api_1 = require("./symbol-api");
|
|
8
8
|
const dependency_api_1 = require("./dependency-api");
|
|
9
9
|
const change_api_1 = require("./change-api");
|
|
10
|
+
const evidence_grader_1 = require("./evidence-grader");
|
|
10
11
|
/**
|
|
11
12
|
* API for system self-explanation.
|
|
12
13
|
* Provides meta-information about the system WITHOUT AI generation.
|
|
@@ -19,6 +20,7 @@ class SelfExplanationApi {
|
|
|
19
20
|
this.symbolApi = new symbol_api_1.SymbolApi(dbManager);
|
|
20
21
|
this.dependencyApi = new dependency_api_1.DependencyApi(dbManager);
|
|
21
22
|
this.changeApi = new change_api_1.ChangeApi(dbManager);
|
|
23
|
+
this.evidenceGrader = new evidence_grader_1.EvidenceGrader();
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
26
|
* Gets system overview with statistics and entry points.
|
|
@@ -34,6 +36,29 @@ class SelfExplanationApi {
|
|
|
34
36
|
const entryPoints = await this.getEntryPoints(pluginId);
|
|
35
37
|
// Get architecture ADRs
|
|
36
38
|
const architectureAdrs = await this.getArchitectureAdrs(pluginId);
|
|
39
|
+
// Create evidence: INFERRED from multiple DB queries
|
|
40
|
+
const evidence = this.evidenceGrader.gradeAsInferred([
|
|
41
|
+
{
|
|
42
|
+
type: 'DB_QUERY',
|
|
43
|
+
path: 'getAllModules'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'DB_QUERY',
|
|
47
|
+
path: 'getAllSymbols'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'DB_QUERY',
|
|
51
|
+
path: 'getAllDependencies'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'DB_QUERY',
|
|
55
|
+
path: 'getAllAdrs'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: 'DB_QUERY',
|
|
59
|
+
path: 'getAllChangeReports'
|
|
60
|
+
}
|
|
61
|
+
], 'System overview derived from multiple database queries across all dimensions');
|
|
37
62
|
return {
|
|
38
63
|
total_modules: modules.length,
|
|
39
64
|
total_symbols: symbols.length,
|
|
@@ -41,7 +66,8 @@ class SelfExplanationApi {
|
|
|
41
66
|
total_adrs: adrs.length,
|
|
42
67
|
total_change_reports: changeReports.length,
|
|
43
68
|
entry_points: entryPoints,
|
|
44
|
-
architecture_adrs: architectureAdrs
|
|
69
|
+
architecture_adrs: architectureAdrs,
|
|
70
|
+
evidence
|
|
45
71
|
};
|
|
46
72
|
}
|
|
47
73
|
/**
|
|
@@ -64,6 +90,37 @@ class SelfExplanationApi {
|
|
|
64
90
|
const firstAdr = architectureAdrs[0];
|
|
65
91
|
suggestedStart = `Start with ${firstAdr.adr_number} (${firstAdr.title})`;
|
|
66
92
|
}
|
|
93
|
+
// Create evidence: INFERRED from multiple DB queries (modules, symbols, dependencies, adrs, changes, navigation)
|
|
94
|
+
const evidence = this.evidenceGrader.gradeAsInferred([
|
|
95
|
+
{
|
|
96
|
+
type: 'DB_QUERY',
|
|
97
|
+
path: 'getAllModules'
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: 'DB_QUERY',
|
|
101
|
+
path: 'getAllSymbols'
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'DB_QUERY',
|
|
105
|
+
path: 'getAllDependencies'
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
type: 'DB_QUERY',
|
|
109
|
+
path: 'getAllAdrs'
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'DB_QUERY',
|
|
113
|
+
path: 'getAllChangeReports'
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'DB_QUERY',
|
|
117
|
+
path: 'getEntryPoints'
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'DB_QUERY',
|
|
121
|
+
path: 'getArchitectureAdrs'
|
|
122
|
+
}
|
|
123
|
+
], 'System explanation derived from multiple database queries across all dimensions');
|
|
67
124
|
return {
|
|
68
125
|
what_am_i: '5D Database Plugin - navigable code documentation system',
|
|
69
126
|
how_do_i_work: '5 dimensions (X,Y,Z,W,T) store different views of code: Modules (X), Symbols (Y), Dependencies (Z), ADRs (W), and Changes (T). Each dimension provides a different perspective on the codebase, enabling cross-dimensional navigation and analysis.',
|
|
@@ -101,7 +158,8 @@ class SelfExplanationApi {
|
|
|
101
158
|
],
|
|
102
159
|
entry_points: entryPoints,
|
|
103
160
|
architecture_adrs: architectureAdrs,
|
|
104
|
-
suggested_start: suggestedStart
|
|
161
|
+
suggested_start: suggestedStart,
|
|
162
|
+
evidence
|
|
105
163
|
};
|
|
106
164
|
}
|
|
107
165
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-explanation-api.js","sourceRoot":"","sources":["../../src/api/self-explanation-api.ts"],"names":[],"mappings":";;;AACA,iFAA6E;AAC7E,uCAAmC;AACnC,6CAAyC;AACzC,6CAAyC;AACzC,qDAAiD;AACjD,6CAAyC;
|
|
1
|
+
{"version":3,"file":"self-explanation-api.js","sourceRoot":"","sources":["../../src/api/self-explanation-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MultiDbManager } from '../core/multi-db-manager';
|
|
2
2
|
import { EmbeddingGenerator } from '../embedding/embedding-generator';
|
|
3
3
|
import { EntityReference } from '../models/entity-reference';
|
|
4
|
+
import { Evidence } from '../models/evidence';
|
|
4
5
|
/**
|
|
5
6
|
* Semantic search result
|
|
6
7
|
*/
|
|
@@ -12,6 +13,7 @@ export interface SemanticSearchResult {
|
|
|
12
13
|
vectorScore: number;
|
|
13
14
|
importanceScore: number;
|
|
14
15
|
entityRef: EntityReference;
|
|
16
|
+
evidence?: Evidence;
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* Options for semantic search
|
|
@@ -27,6 +29,7 @@ export interface SemanticSearchOptions {
|
|
|
27
29
|
export declare class SemanticSearchApi {
|
|
28
30
|
private dbManager;
|
|
29
31
|
private embeddingGenerator;
|
|
32
|
+
private evidenceGrader;
|
|
30
33
|
private readonly vectorWeight;
|
|
31
34
|
private readonly importanceWeight;
|
|
32
35
|
constructor(dbManager: MultiDbManager, embeddingGenerator: EmbeddingGenerator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-search-api.d.ts","sourceRoot":"","sources":["../../src/api/semantic-search-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAItE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic-search-api.d.ts","sourceRoot":"","sources":["../../src/api/semantic-search-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAItE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AAI9D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;gBAEpC,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB;IAM7E;;;;;;;OAOG;IACG,MAAM,CACR,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAsClC;;;OAGG;YACW,eAAe;IA2C7B;;OAEG;YACW,wBAAwB;IA8FtC;;OAEG;YACW,mBAAmB;IAoBjC;;OAEG;YACW,0BAA0B;IAkFxC;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAsB3B"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SemanticSearchApi = void 0;
|
|
4
4
|
const embedding_repository_1 = require("../repositories/embedding-repository");
|
|
5
5
|
const importance_repository_1 = require("../repositories/importance-repository");
|
|
6
|
+
const evidence_grader_1 = require("./evidence-grader");
|
|
6
7
|
/**
|
|
7
8
|
* API for semantic search over all dimensions using vector similarity.
|
|
8
9
|
*/
|
|
@@ -12,6 +13,7 @@ class SemanticSearchApi {
|
|
|
12
13
|
this.importanceWeight = 0.3;
|
|
13
14
|
this.dbManager = dbManager;
|
|
14
15
|
this.embeddingGenerator = embeddingGenerator;
|
|
16
|
+
this.evidenceGrader = new evidence_grader_1.EvidenceGrader();
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* Performs semantic search across all or specified dimensions.
|
|
@@ -103,6 +105,25 @@ class SemanticSearchApi {
|
|
|
103
105
|
// Combine scores
|
|
104
106
|
const combinedScore = this.vectorWeight * vectorScore + this.importanceWeight * importanceScore;
|
|
105
107
|
if (combinedScore >= minScore) {
|
|
108
|
+
// Create evidence: INFERRED from multiple DB queries (embedding lookup, importance score, vector search)
|
|
109
|
+
const evidenceSources = [
|
|
110
|
+
{
|
|
111
|
+
type: 'DB_QUERY',
|
|
112
|
+
path: 'embedding_repository.getById',
|
|
113
|
+
id: embeddingId
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'DB_QUERY',
|
|
117
|
+
path: 'importance_repository.getAllByDimension',
|
|
118
|
+
id: dimension
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'DB_QUERY',
|
|
122
|
+
path: 'vector_database.search',
|
|
123
|
+
id: dimension
|
|
124
|
+
}
|
|
125
|
+
];
|
|
126
|
+
const evidence = this.evidenceGrader.gradeAsInferred(evidenceSources, `Semantic search result derived from vector database search, embedding lookup, and importance scoring`);
|
|
106
127
|
results.push({
|
|
107
128
|
dimension,
|
|
108
129
|
entityId: embedding.entity_id,
|
|
@@ -114,7 +135,8 @@ class SemanticSearchApi {
|
|
|
114
135
|
dimension,
|
|
115
136
|
entity_id: embedding.entity_id,
|
|
116
137
|
external_id: embedding.external_id
|
|
117
|
-
}
|
|
138
|
+
},
|
|
139
|
+
evidence
|
|
118
140
|
});
|
|
119
141
|
}
|
|
120
142
|
}
|
|
@@ -162,6 +184,20 @@ class SemanticSearchApi {
|
|
|
162
184
|
// Combine scores
|
|
163
185
|
const combinedScore = this.vectorWeight * vectorScore + this.importanceWeight * importanceScore;
|
|
164
186
|
if (combinedScore >= minScore) {
|
|
187
|
+
// Create evidence: INFERRED from multiple DB queries (embedding lookup, importance score, cosine similarity)
|
|
188
|
+
const evidenceSources = [
|
|
189
|
+
{
|
|
190
|
+
type: 'DB_QUERY',
|
|
191
|
+
path: 'embedding_repository.getAllByDimension',
|
|
192
|
+
id: dimension
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'DB_QUERY',
|
|
196
|
+
path: 'importance_repository.getAllByDimension',
|
|
197
|
+
id: dimension
|
|
198
|
+
}
|
|
199
|
+
];
|
|
200
|
+
const evidence = this.evidenceGrader.gradeAsInferred(evidenceSources, `Semantic search result derived from cosine similarity calculation, embedding lookup, and importance scoring`);
|
|
165
201
|
results.push({
|
|
166
202
|
dimension,
|
|
167
203
|
entityId: embedding.entity_id,
|
|
@@ -173,7 +209,8 @@ class SemanticSearchApi {
|
|
|
173
209
|
dimension,
|
|
174
210
|
entity_id: embedding.entity_id,
|
|
175
211
|
external_id: embedding.external_id
|
|
176
|
-
}
|
|
212
|
+
},
|
|
213
|
+
evidence
|
|
177
214
|
});
|
|
178
215
|
}
|
|
179
216
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-search-api.js","sourceRoot":"","sources":["../../src/api/semantic-search-api.ts"],"names":[],"mappings":";;;AAEA,+EAA2E;AAC3E,iFAA6E;
|
|
1
|
+
{"version":3,"file":"semantic-search-api.js","sourceRoot":"","sources":["../../src/api/semantic-search-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { MultiDbManager } from '../core/multi-db-manager';
|
|
2
|
+
import { ReasonCode } from '../models/reason-codes';
|
|
3
|
+
import { Evidence } from '../models/evidence';
|
|
4
|
+
/**
|
|
5
|
+
* Source access contract.
|
|
6
|
+
* Determines whether source code is available and under what constraints.
|
|
7
|
+
*/
|
|
8
|
+
export interface SourceAccessContract {
|
|
9
|
+
/** Status of source code access */
|
|
10
|
+
status: 'AVAILABLE' | 'UNAVAILABLE' | 'PARTIAL';
|
|
11
|
+
/** Type of resolver (how source code is accessed) */
|
|
12
|
+
resolver_type: 'FILESYSTEM' | 'GIT' | 'REMOTE' | 'SNAPSHOT' | null;
|
|
13
|
+
/** Workspace root path */
|
|
14
|
+
workspace_root: string | null;
|
|
15
|
+
/** Access constraints */
|
|
16
|
+
constraints: {
|
|
17
|
+
max_bytes_per_request: number;
|
|
18
|
+
max_lines_per_request: number;
|
|
19
|
+
max_concurrent_requests: number;
|
|
20
|
+
redactions: string[];
|
|
21
|
+
} | null;
|
|
22
|
+
/** Reason codes (when UNAVAILABLE/PARTIAL) */
|
|
23
|
+
reason_codes?: ReasonCode[];
|
|
24
|
+
/** When this contract was verified */
|
|
25
|
+
verified_at: string;
|
|
26
|
+
/** Evidence grade */
|
|
27
|
+
evidence_grade: 'DETERMINISTIC' | 'INFERRED';
|
|
28
|
+
/** Evidence information */
|
|
29
|
+
evidence: Evidence;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* API for managing source access contract.
|
|
33
|
+
* Determines whether source code is available and provides runtime status.
|
|
34
|
+
*/
|
|
35
|
+
export declare class SourceAccessContractApi {
|
|
36
|
+
private dbManager;
|
|
37
|
+
constructor(dbManager: MultiDbManager);
|
|
38
|
+
/**
|
|
39
|
+
* Get current source access contract.
|
|
40
|
+
* Deterministically checks if workspace root is accessible.
|
|
41
|
+
*/
|
|
42
|
+
getContract(workspaceRoot?: string): Promise<SourceAccessContract>;
|
|
43
|
+
/**
|
|
44
|
+
* Initialize source access contract.
|
|
45
|
+
*/
|
|
46
|
+
initializeContract(workspaceRoot: string): Promise<SourceAccessContract>;
|
|
47
|
+
/**
|
|
48
|
+
* Update source access contract.
|
|
49
|
+
*/
|
|
50
|
+
private updateContract;
|
|
51
|
+
/**
|
|
52
|
+
* Helper method to execute a query and return a single row.
|
|
53
|
+
*/
|
|
54
|
+
private queryOne;
|
|
55
|
+
/**
|
|
56
|
+
* Helper method to execute a query.
|
|
57
|
+
*/
|
|
58
|
+
private execute;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=source-access-contract-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-access-contract-api.d.ts","sourceRoot":"","sources":["../../src/api/source-access-contract-api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAsB,MAAM,oBAAoB,CAAC;AAGlE;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC,mCAAmC;IACnC,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IAEhD,qDAAqD;IACrD,aAAa,EAAE,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IAEnE,0BAA0B;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,yBAAyB;IACzB,WAAW,EAAE;QACT,qBAAqB,EAAE,MAAM,CAAC;QAC9B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,uBAAuB,EAAE,MAAM,CAAC;QAChC,UAAU,EAAE,MAAM,EAAE,CAAC;KACxB,GAAG,IAAI,CAAC;IAET,8CAA8C;IAC9C,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAE5B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB;IACrB,cAAc,EAAE,eAAe,GAAG,UAAU,CAAC;IAE7C,2BAA2B;IAC3B,QAAQ,EAAE,QAAQ,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc;IAIrC;;;OAGG;IACG,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA4CxE;;OAEG;IACG,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2B9E;;OAEG;YACW,cAAc;IAmD5B;;OAEG;YACW,QAAQ;IAYtB;;OAEG;YACW,OAAO;CAWxB"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SourceAccessContractApi = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const reason_codes_1 = require("../models/reason-codes");
|
|
39
|
+
const evidence_1 = require("../models/evidence");
|
|
40
|
+
const evidence_2 = require("../models/evidence");
|
|
41
|
+
/**
|
|
42
|
+
* API for managing source access contract.
|
|
43
|
+
* Determines whether source code is available and provides runtime status.
|
|
44
|
+
*/
|
|
45
|
+
class SourceAccessContractApi {
|
|
46
|
+
constructor(dbManager) {
|
|
47
|
+
this.dbManager = dbManager;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get current source access contract.
|
|
51
|
+
* Deterministically checks if workspace root is accessible.
|
|
52
|
+
*/
|
|
53
|
+
async getContract(workspaceRoot) {
|
|
54
|
+
const db = await this.dbManager.getDatabase('V');
|
|
55
|
+
// Read from database
|
|
56
|
+
const row = await this.queryOne(db, `
|
|
57
|
+
SELECT * FROM source_access_config WHERE id = 'singleton'
|
|
58
|
+
`);
|
|
59
|
+
if (!row) {
|
|
60
|
+
// No config yet - initialize as UNAVAILABLE
|
|
61
|
+
return this.initializeContract(workspaceRoot || process.cwd());
|
|
62
|
+
}
|
|
63
|
+
const contract = {
|
|
64
|
+
status: row.status,
|
|
65
|
+
resolver_type: row.resolver_type,
|
|
66
|
+
workspace_root: row.workspace_root,
|
|
67
|
+
constraints: row.max_bytes_per_request ? {
|
|
68
|
+
max_bytes_per_request: row.max_bytes_per_request,
|
|
69
|
+
max_lines_per_request: row.max_lines_per_request,
|
|
70
|
+
max_concurrent_requests: row.max_concurrent_requests,
|
|
71
|
+
redactions: JSON.parse(row.redactions_json || '[]')
|
|
72
|
+
} : null,
|
|
73
|
+
reason_codes: row.reason_codes_json ? JSON.parse(row.reason_codes_json).map((code) => {
|
|
74
|
+
return reason_codes_1.ReasonCode[code] || reason_codes_1.ReasonCode.NOT_MOUNTED;
|
|
75
|
+
}) : [],
|
|
76
|
+
verified_at: row.verified_at,
|
|
77
|
+
evidence_grade: row.evidence_grade,
|
|
78
|
+
evidence: (0, evidence_1.createFactEvidence)([
|
|
79
|
+
(0, evidence_2.createEvidenceSource)('DB_QUERY', undefined, undefined, undefined, { table: 'source_access_config' })
|
|
80
|
+
], 'Source access contract retrieved from database')
|
|
81
|
+
};
|
|
82
|
+
// Verify current status (check if workspace still accessible)
|
|
83
|
+
if (contract.status === 'AVAILABLE' && contract.workspace_root) {
|
|
84
|
+
if (!fs.existsSync(contract.workspace_root)) {
|
|
85
|
+
// Workspace no longer accessible
|
|
86
|
+
return this.updateContract('UNAVAILABLE', [reason_codes_1.ReasonCode.NOT_MOUNTED], workspaceRoot);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return contract;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Initialize source access contract.
|
|
93
|
+
*/
|
|
94
|
+
async initializeContract(workspaceRoot) {
|
|
95
|
+
// Check if workspace is accessible
|
|
96
|
+
const isAccessible = fs.existsSync(workspaceRoot);
|
|
97
|
+
if (!isAccessible) {
|
|
98
|
+
return this.updateContract('UNAVAILABLE', [reason_codes_1.ReasonCode.NOT_MOUNTED], workspaceRoot);
|
|
99
|
+
}
|
|
100
|
+
// Check read permissions
|
|
101
|
+
try {
|
|
102
|
+
fs.accessSync(workspaceRoot, fs.constants.R_OK);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return this.updateContract('UNAVAILABLE', [reason_codes_1.ReasonCode.PERMISSION_DENIED], workspaceRoot);
|
|
106
|
+
}
|
|
107
|
+
// All good - set as AVAILABLE
|
|
108
|
+
return this.updateContract('AVAILABLE', [], workspaceRoot, {
|
|
109
|
+
resolver_type: 'FILESYSTEM',
|
|
110
|
+
constraints: {
|
|
111
|
+
max_bytes_per_request: 51200, // 50KB
|
|
112
|
+
max_lines_per_request: 500,
|
|
113
|
+
max_concurrent_requests: 5,
|
|
114
|
+
redactions: ['*.env', '.git/*', 'node_modules/*', '*.key', '*.pem']
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Update source access contract.
|
|
120
|
+
*/
|
|
121
|
+
async updateContract(status, reasonCodes, workspaceRoot, options) {
|
|
122
|
+
const db = await this.dbManager.getDatabase('V');
|
|
123
|
+
const now = new Date().toISOString();
|
|
124
|
+
const workspaceRootToUse = workspaceRoot || (status === 'AVAILABLE' ? process.cwd() : null);
|
|
125
|
+
await this.execute(db, `
|
|
126
|
+
INSERT OR REPLACE INTO source_access_config (
|
|
127
|
+
id, status, resolver_type, workspace_root,
|
|
128
|
+
max_bytes_per_request, max_lines_per_request, max_concurrent_requests,
|
|
129
|
+
redactions_json, reason_codes_json,
|
|
130
|
+
verified_at, evidence_grade, updated_at
|
|
131
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
132
|
+
`, [
|
|
133
|
+
'singleton',
|
|
134
|
+
status,
|
|
135
|
+
options?.resolver_type || null,
|
|
136
|
+
workspaceRootToUse,
|
|
137
|
+
options?.constraints?.max_bytes_per_request || null,
|
|
138
|
+
options?.constraints?.max_lines_per_request || null,
|
|
139
|
+
options?.constraints?.max_concurrent_requests || null,
|
|
140
|
+
JSON.stringify(options?.constraints?.redactions || []),
|
|
141
|
+
JSON.stringify(reasonCodes.map(code => code.toString())),
|
|
142
|
+
now,
|
|
143
|
+
'DETERMINISTIC',
|
|
144
|
+
now
|
|
145
|
+
]);
|
|
146
|
+
// Return contract directly without calling getContract (to avoid recursion)
|
|
147
|
+
return {
|
|
148
|
+
status,
|
|
149
|
+
resolver_type: options?.resolver_type || null,
|
|
150
|
+
workspace_root: workspaceRootToUse,
|
|
151
|
+
constraints: options?.constraints || null,
|
|
152
|
+
reason_codes: reasonCodes,
|
|
153
|
+
verified_at: now,
|
|
154
|
+
evidence_grade: 'DETERMINISTIC',
|
|
155
|
+
evidence: (0, evidence_1.createFactEvidence)([
|
|
156
|
+
(0, evidence_2.createEvidenceSource)('DB_QUERY', undefined, undefined, undefined, { table: 'source_access_config' })
|
|
157
|
+
], 'Source access contract updated')
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Helper method to execute a query and return a single row.
|
|
162
|
+
*/
|
|
163
|
+
async queryOne(db, sql, params = []) {
|
|
164
|
+
return new Promise((resolve, reject) => {
|
|
165
|
+
db.get(sql, params, (err, row) => {
|
|
166
|
+
if (err) {
|
|
167
|
+
reject(err);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
resolve(row);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Helper method to execute a query.
|
|
177
|
+
*/
|
|
178
|
+
async execute(db, sql, params = []) {
|
|
179
|
+
return new Promise((resolve, reject) => {
|
|
180
|
+
db.run(sql, params, (err) => {
|
|
181
|
+
if (err) {
|
|
182
|
+
reject(err);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
resolve();
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.SourceAccessContractApi = SourceAccessContractApi;
|
|
192
|
+
//# sourceMappingURL=source-access-contract-api.js.map
|