@aroman22/codegraph-vba-darwin-arm64 1.15.0 → 1.17.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/lib/dist/bin/codegraph.js +13 -7
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/bin/daemon-release.d.ts +7 -0
- package/lib/dist/bin/daemon-release.d.ts.map +1 -0
- package/lib/dist/bin/daemon-release.js +18 -0
- package/lib/dist/bin/daemon-release.js.map +1 -0
- package/lib/dist/db/queries.d.ts +41 -0
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +78 -1
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/extraction/access-erd-extractor.d.ts +57 -0
- package/lib/dist/extraction/access-erd-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/access-erd-extractor.js +389 -0
- package/lib/dist/extraction/access-erd-extractor.js.map +1 -0
- package/lib/dist/extraction/extraction-version.d.ts +1 -1
- package/lib/dist/extraction/extraction-version.js +1 -1
- package/lib/dist/extraction/grammars.d.ts +20 -0
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +34 -0
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +1 -0
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +371 -351
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/parse-pool.d.ts +8 -3
- package/lib/dist/extraction/parse-pool.d.ts.map +1 -1
- package/lib/dist/extraction/parse-pool.js +1 -2
- package/lib/dist/extraction/parse-pool.js.map +1 -1
- package/lib/dist/extraction/parse-worker.js +7 -6
- package/lib/dist/extraction/parse-worker.js.map +1 -1
- package/lib/dist/extraction/sql-query-extractor.d.ts +16 -14
- package/lib/dist/extraction/sql-query-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/sql-query-extractor.js +43 -31
- package/lib/dist/extraction/sql-query-extractor.js.map +1 -1
- package/lib/dist/extraction/sql-table-scan.d.ts +184 -0
- package/lib/dist/extraction/sql-table-scan.d.ts.map +1 -0
- package/lib/dist/extraction/sql-table-scan.js +288 -0
- package/lib/dist/extraction/sql-table-scan.js.map +1 -0
- package/lib/dist/extraction/tree-sitter.d.ts +10 -1
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +34 -3
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.d.ts +2 -7
- package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.js +144 -90
- package/lib/dist/extraction/vba/call-sweep.js.map +1 -1
- package/lib/dist/extraction/vba/calls.d.ts +24 -4
- package/lib/dist/extraction/vba/calls.d.ts.map +1 -1
- package/lib/dist/extraction/vba/calls.js +42 -12
- package/lib/dist/extraction/vba/calls.js.map +1 -1
- package/lib/dist/extraction/vba/constants.d.ts +7 -14
- package/lib/dist/extraction/vba/constants.d.ts.map +1 -1
- package/lib/dist/extraction/vba/constants.js +8 -36
- package/lib/dist/extraction/vba/constants.js.map +1 -1
- package/lib/dist/extraction/vba/context.d.ts +443 -7
- package/lib/dist/extraction/vba/context.d.ts.map +1 -1
- package/lib/dist/extraction/vba/context.js +325 -29
- package/lib/dist/extraction/vba/context.js.map +1 -1
- package/lib/dist/extraction/vba/controls.d.ts +18 -1
- package/lib/dist/extraction/vba/controls.d.ts.map +1 -1
- package/lib/dist/extraction/vba/controls.js +99 -27
- package/lib/dist/extraction/vba/controls.js.map +1 -1
- package/lib/dist/extraction/vba/declarations.d.ts +1 -6
- package/lib/dist/extraction/vba/declarations.d.ts.map +1 -1
- package/lib/dist/extraction/vba/declarations.js +5 -39
- package/lib/dist/extraction/vba/declarations.js.map +1 -1
- package/lib/dist/extraction/vba/dims.d.ts +11 -7
- package/lib/dist/extraction/vba/dims.d.ts.map +1 -1
- package/lib/dist/extraction/vba/dims.js +265 -29
- package/lib/dist/extraction/vba/dims.js.map +1 -1
- package/lib/dist/extraction/vba/docmd.d.ts +29 -2
- package/lib/dist/extraction/vba/docmd.d.ts.map +1 -1
- package/lib/dist/extraction/vba/docmd.js +297 -18
- package/lib/dist/extraction/vba/docmd.js.map +1 -1
- package/lib/dist/extraction/vba/enums-consts.d.ts +7 -14
- package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -1
- package/lib/dist/extraction/vba/enums-consts.js +11 -45
- package/lib/dist/extraction/vba/enums-consts.js.map +1 -1
- package/lib/dist/extraction/vba/error-channel.d.ts +57 -0
- package/lib/dist/extraction/vba/error-channel.d.ts.map +1 -0
- package/lib/dist/extraction/vba/error-channel.js +128 -0
- package/lib/dist/extraction/vba/error-channel.js.map +1 -0
- package/lib/dist/extraction/vba/errors.d.ts +64 -0
- package/lib/dist/extraction/vba/errors.d.ts.map +1 -0
- package/lib/dist/extraction/vba/errors.js +775 -0
- package/lib/dist/extraction/vba/errors.js.map +1 -0
- package/lib/dist/extraction/vba/filesystem-statements.d.ts +23 -0
- package/lib/dist/extraction/vba/filesystem-statements.d.ts.map +1 -0
- package/lib/dist/extraction/vba/filesystem-statements.js +70 -0
- package/lib/dist/extraction/vba/filesystem-statements.js.map +1 -0
- package/lib/dist/extraction/vba/implements.d.ts +1 -6
- package/lib/dist/extraction/vba/implements.d.ts.map +1 -1
- package/lib/dist/extraction/vba/implements.js +1 -22
- package/lib/dist/extraction/vba/implements.js.map +1 -1
- package/lib/dist/extraction/vba/labels.d.ts +26 -0
- package/lib/dist/extraction/vba/labels.d.ts.map +1 -0
- package/lib/dist/extraction/vba/labels.js +180 -0
- package/lib/dist/extraction/vba/labels.js.map +1 -0
- package/lib/dist/extraction/vba/module-vars.d.ts +36 -0
- package/lib/dist/extraction/vba/module-vars.d.ts.map +1 -0
- package/lib/dist/extraction/vba/module-vars.js +145 -0
- package/lib/dist/extraction/vba/module-vars.js.map +1 -0
- package/lib/dist/extraction/vba/options.d.ts +88 -0
- package/lib/dist/extraction/vba/options.d.ts.map +1 -0
- package/lib/dist/extraction/vba/options.js +39 -0
- package/lib/dist/extraction/vba/options.js.map +1 -0
- package/lib/dist/extraction/vba/parameters.d.ts +35 -0
- package/lib/dist/extraction/vba/parameters.d.ts.map +1 -0
- package/lib/dist/extraction/vba/parameters.js +110 -0
- package/lib/dist/extraction/vba/parameters.js.map +1 -0
- package/lib/dist/extraction/vba/procedures.d.ts +1 -9
- package/lib/dist/extraction/vba/procedures.d.ts.map +1 -1
- package/lib/dist/extraction/vba/procedures.js +174 -112
- package/lib/dist/extraction/vba/procedures.js.map +1 -1
- package/lib/dist/extraction/vba/rules.d.ts +10 -5
- package/lib/dist/extraction/vba/rules.d.ts.map +1 -1
- package/lib/dist/extraction/vba/rules.js +19 -0
- package/lib/dist/extraction/vba/rules.js.map +1 -1
- package/lib/dist/extraction/vba/runtime-objects.d.ts +59 -0
- package/lib/dist/extraction/vba/runtime-objects.d.ts.map +1 -0
- package/lib/dist/extraction/vba/runtime-objects.js +106 -0
- package/lib/dist/extraction/vba/runtime-objects.js.map +1 -0
- package/lib/dist/extraction/vba/signature.d.ts +57 -0
- package/lib/dist/extraction/vba/signature.d.ts.map +1 -0
- package/lib/dist/extraction/vba/signature.js +164 -0
- package/lib/dist/extraction/vba/signature.js.map +1 -0
- package/lib/dist/extraction/vba/sql-wrapper.d.ts +76 -3
- package/lib/dist/extraction/vba/sql-wrapper.d.ts.map +1 -1
- package/lib/dist/extraction/vba/sql-wrapper.js +725 -151
- package/lib/dist/extraction/vba/sql-wrapper.js.map +1 -1
- package/lib/dist/extraction/vba/tempvars.d.ts.map +1 -1
- package/lib/dist/extraction/vba/tempvars.js +4 -0
- package/lib/dist/extraction/vba/tempvars.js.map +1 -1
- package/lib/dist/extraction/vba/text-utils.d.ts +62 -2
- package/lib/dist/extraction/vba/text-utils.d.ts.map +1 -1
- package/lib/dist/extraction/vba/text-utils.js +84 -6
- package/lib/dist/extraction/vba/text-utils.js.map +1 -1
- package/lib/dist/extraction/vba-extractor.d.ts +18 -1
- package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-extractor.js +111 -16
- package/lib/dist/extraction/vba-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.d.ts +28 -14
- package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.js +56 -21
- package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-preprocess.d.ts +89 -3
- package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
- package/lib/dist/extraction/vba-preprocess.js +221 -57
- package/lib/dist/extraction/vba-preprocess.js.map +1 -1
- package/lib/dist/extraction/vba-source.d.ts +0 -10
- package/lib/dist/extraction/vba-source.d.ts.map +1 -1
- package/lib/dist/extraction/vba-source.js +0 -13
- package/lib/dist/extraction/vba-source.js.map +1 -1
- package/lib/dist/extraction/vba-test-manifest-extractor.d.ts +0 -6
- package/lib/dist/extraction/vba-test-manifest-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-test-manifest-extractor.js +0 -1
- package/lib/dist/extraction/vba-test-manifest-extractor.js.map +1 -1
- package/lib/dist/graph/behavior-evidence.d.ts +162 -0
- package/lib/dist/graph/behavior-evidence.d.ts.map +1 -0
- package/lib/dist/graph/behavior-evidence.js +529 -0
- package/lib/dist/graph/behavior-evidence.js.map +1 -0
- package/lib/dist/index.d.ts +22 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +37 -1
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/mcp/daemon-manager.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-manager.js +7 -3
- package/lib/dist/mcp/daemon-manager.js.map +1 -1
- package/lib/dist/mcp/daemon-paths.d.ts +6 -0
- package/lib/dist/mcp/daemon-paths.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-paths.js +15 -0
- package/lib/dist/mcp/daemon-paths.js.map +1 -1
- package/lib/dist/mcp/daemon-registry.d.ts +82 -7
- package/lib/dist/mcp/daemon-registry.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-registry.js +557 -45
- package/lib/dist/mcp/daemon-registry.js.map +1 -1
- package/lib/dist/mcp/daemon-watchdog.d.ts +12 -0
- package/lib/dist/mcp/daemon-watchdog.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-watchdog.js +37 -7
- package/lib/dist/mcp/daemon-watchdog.js.map +1 -1
- package/lib/dist/mcp/daemon.d.ts +20 -1
- package/lib/dist/mcp/daemon.d.ts.map +1 -1
- package/lib/dist/mcp/daemon.js +123 -30
- package/lib/dist/mcp/daemon.js.map +1 -1
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +13 -2
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts +32 -0
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +163 -31
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/server-instructions.d.ts +1 -1
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +26 -4
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts +12 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +92 -1
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/project-config.d.ts +43 -2
- package/lib/dist/project-config.d.ts.map +1 -1
- package/lib/dist/project-config.js +86 -2
- package/lib/dist/project-config.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +47 -2
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +160 -5
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts +25 -0
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +59 -0
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/vba-runtime-objects.d.ts +11 -11
- package/lib/dist/resolution/vba-runtime-objects.d.ts.map +1 -1
- package/lib/dist/resolution/vba-runtime-objects.js +18 -38
- package/lib/dist/resolution/vba-runtime-objects.js.map +1 -1
- package/lib/dist/types.d.ts +13 -5
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +17 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/dist/utils/backtrace-helpers.d.ts +14 -2
- package/lib/dist/utils/backtrace-helpers.d.ts.map +1 -1
- package/lib/dist/utils/backtrace-helpers.js +81 -7
- package/lib/dist/utils/backtrace-helpers.js.map +1 -1
- package/lib/dist/utils/sql-impact-helpers.d.ts.map +1 -1
- package/lib/dist/utils/sql-impact-helpers.js +119 -30
- package/lib/dist/utils/sql-impact-helpers.js.map +1 -1
- package/lib/node_modules/.modules.yaml +1 -1
- package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
- package/lib/package.json +3 -1
- package/package.json +1 -1
|
@@ -0,0 +1,529 @@
|
|
|
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.BEHAVIOR_EVIDENCE_NOTES = exports.BEHAVIOR_EFFECT_VOCABULARY = void 0;
|
|
37
|
+
exports.buildBehaviorEvidence = buildBehaviorEvidence;
|
|
38
|
+
/**
|
|
39
|
+
* Behavior evidence — the bounded, typed answer to "what does this Access
|
|
40
|
+
* control actually do?", assembled from facts that are already indexed.
|
|
41
|
+
*
|
|
42
|
+
* Issue #299. Every other consumer surface returns prose keyed on a fuzzy
|
|
43
|
+
* symbol name; a machine consumer (Dysflow's behavior map) needs a typed
|
|
44
|
+
* array with deterministic call paths and an explicit account of what could
|
|
45
|
+
* NOT be answered. That is why this is its own operation rather than another
|
|
46
|
+
* mode of `codegraph_node` / `codegraph_impact`: those return agent-facing
|
|
47
|
+
* text and would have to grow a second, contradictory output shape.
|
|
48
|
+
*
|
|
49
|
+
* It is READ-ONLY. Nothing here parses source, opens Access, writes to the
|
|
50
|
+
* index or triggers a re-index.
|
|
51
|
+
*
|
|
52
|
+
* ## The graph contract it reads
|
|
53
|
+
*
|
|
54
|
+
* - An `event-handler` edge is stored HANDLER -> control/layout, for the
|
|
55
|
+
* `<Control>_<Event>` code-behind convention AND for `=Expression()`
|
|
56
|
+
* wiring. Reaching a handler from its control means following it backwards.
|
|
57
|
+
* - A call is a `calls` edge, or a `references` edge landing on a procedure:
|
|
58
|
+
* VBA's statement-form Sub call (`SaveRecord` on a line of its own) is
|
|
59
|
+
* ambiguous at parse time, so it stays `unqualified-ident` (#265) and
|
|
60
|
+
* resolves to `references`, not `calls`.
|
|
61
|
+
* - Data access is a `references` edge onto a table/query node, carrying
|
|
62
|
+
* `metadata.access` ('read' | 'write') when the extractor could tell. Those
|
|
63
|
+
* edges are sourced from the MODULE node by design (see
|
|
64
|
+
* `VbaExtractionContext.emitReference`), so they are attributed to a
|
|
65
|
+
* procedure by the edge's LINE falling inside that procedure's range — a
|
|
66
|
+
* fact the index already stores, not a name guess.
|
|
67
|
+
*
|
|
68
|
+
* ## What it deliberately does not do
|
|
69
|
+
*
|
|
70
|
+
* No effect is inferred. An empty `effects` or `tables` list means the index
|
|
71
|
+
* holds no such fact for that path — never that the code has no runtime
|
|
72
|
+
* effect. Dynamic dispatch, late binding and anything the extractor declined
|
|
73
|
+
* are reported in `context.unresolved` instead of being silently dropped.
|
|
74
|
+
*/
|
|
75
|
+
const path = __importStar(require("path"));
|
|
76
|
+
/**
|
|
77
|
+
* The closed vocabulary of `effects` strings. Anything outside this list is a
|
|
78
|
+
* bug, not a new fact.
|
|
79
|
+
*
|
|
80
|
+
* - `read:<name>` / `write:<name>` — a data reference the extractor typed.
|
|
81
|
+
* - `data-access:<name>` — a data reference whose direction is unknown.
|
|
82
|
+
* NOT a read and NOT a write; it means the index cannot say.
|
|
83
|
+
* - `opens-form:<Name>` / `opens-report:<Name>` — an Access object opened.
|
|
84
|
+
* - `raises-event:<Name>` — an event raised from the path.
|
|
85
|
+
*/
|
|
86
|
+
exports.BEHAVIOR_EFFECT_VOCABULARY = [
|
|
87
|
+
'read:<name>',
|
|
88
|
+
'write:<name>',
|
|
89
|
+
'data-access:<name>',
|
|
90
|
+
'opens-form:<Name>',
|
|
91
|
+
'opens-report:<Name>',
|
|
92
|
+
'raises-event:<Name>',
|
|
93
|
+
];
|
|
94
|
+
/**
|
|
95
|
+
* The closed vocabulary of `context.notes`.
|
|
96
|
+
*
|
|
97
|
+
* - `MISSING_TARGET_SELECTOR` — neither `nodeId` nor `name` was given.
|
|
98
|
+
* - `TARGET_NOT_FOUND` — nothing in the index matches. A lookup miss, not
|
|
99
|
+
* proof the control has no behavior.
|
|
100
|
+
* - `AMBIGUOUS_TARGET` — the name matches several nodes; see
|
|
101
|
+
* `context.ambiguous`. No evidence is returned, and nothing is guessed.
|
|
102
|
+
* - `NO_HANDLER_BOUND` — the target exists but no handler is wired to it in
|
|
103
|
+
* the index. Access macros and `[Event Procedure]` entries with no
|
|
104
|
+
* code-behind land here.
|
|
105
|
+
* - `STATIC_SOURCE_EVIDENCE` — always present. The answer comes from indexed
|
|
106
|
+
* exported source: it does not prove the code ran, and it says nothing
|
|
107
|
+
* about whether the `.accdb` binary matches the export.
|
|
108
|
+
*/
|
|
109
|
+
exports.BEHAVIOR_EVIDENCE_NOTES = [
|
|
110
|
+
'MISSING_TARGET_SELECTOR',
|
|
111
|
+
'TARGET_NOT_FOUND',
|
|
112
|
+
'AMBIGUOUS_TARGET',
|
|
113
|
+
'NO_HANDLER_BOUND',
|
|
114
|
+
'STATIC_SOURCE_EVIDENCE',
|
|
115
|
+
];
|
|
116
|
+
const UI_NODE_KINDS = new Set([
|
|
117
|
+
'form-instance-control',
|
|
118
|
+
'form-layout',
|
|
119
|
+
'report-layout',
|
|
120
|
+
]);
|
|
121
|
+
const LAYOUT_NODE_KINDS = new Set(['form-layout', 'report-layout']);
|
|
122
|
+
const PROCEDURE_KINDS = new Set(['function', 'method']);
|
|
123
|
+
/**
|
|
124
|
+
* Node kinds a data reference can land on. An Access table has no kind of its
|
|
125
|
+
* own — it is a placeholder `class` node, the same shape a VBA type gets —
|
|
126
|
+
* which is why {@link isDataReference} exists.
|
|
127
|
+
*/
|
|
128
|
+
const DATA_TARGET_KINDS = new Set(['class', 'query']);
|
|
129
|
+
/**
|
|
130
|
+
* The `metadata.synthesizedBy` channels that mean "this names a table or a
|
|
131
|
+
* saved query".
|
|
132
|
+
*
|
|
133
|
+
* An Access table is modelled as a placeholder `class` node, so the target's
|
|
134
|
+
* kind alone cannot tell a table apart from an ordinary type. Without this
|
|
135
|
+
* allowlist a `Dim rs As DAO.Recordset` — a TYPE reference emitted by
|
|
136
|
+
* `vba-name-resolution` — would be reported as a table the handler touches,
|
|
137
|
+
* which is exactly the kind of guessed evidence this contract forbids.
|
|
138
|
+
*/
|
|
139
|
+
const DATA_REFERENCE_CHANNELS = new Set([
|
|
140
|
+
'vba-sql-table',
|
|
141
|
+
'vba-record-source',
|
|
142
|
+
'vba-row-source',
|
|
143
|
+
'vba-row-source-dynamic',
|
|
144
|
+
'vba-control-source',
|
|
145
|
+
'vba-source-object',
|
|
146
|
+
'vba-query-name',
|
|
147
|
+
'vba-opens-query',
|
|
148
|
+
'vba-opens-table',
|
|
149
|
+
'sql-query-table',
|
|
150
|
+
]);
|
|
151
|
+
/**
|
|
152
|
+
* Is this `references` edge a data access, as opposed to a type, name or
|
|
153
|
+
* binding reference that happens to land on the same node shape?
|
|
154
|
+
*/
|
|
155
|
+
function isDataReference(edge, target) {
|
|
156
|
+
if (target.kind === 'query')
|
|
157
|
+
return true;
|
|
158
|
+
const access = edge.metadata?.access;
|
|
159
|
+
if (access === 'read' || access === 'write')
|
|
160
|
+
return true;
|
|
161
|
+
const via = metadataString(edge, 'synthesizedBy');
|
|
162
|
+
return via !== null && DATA_REFERENCE_CHANNELS.has(via);
|
|
163
|
+
}
|
|
164
|
+
const DEFAULT_MAX_CALL_DEPTH = 5;
|
|
165
|
+
const DEFAULT_MAX_RESULTS = 50;
|
|
166
|
+
function clamp(value, min, max) {
|
|
167
|
+
return Math.min(max, Math.max(min, value));
|
|
168
|
+
}
|
|
169
|
+
function locationOf(filePath, line) {
|
|
170
|
+
if (!filePath)
|
|
171
|
+
return 'unknown';
|
|
172
|
+
return line ? `${filePath}:${line}` : filePath;
|
|
173
|
+
}
|
|
174
|
+
function metadataString(edge, key) {
|
|
175
|
+
const value = edge.metadata?.[key];
|
|
176
|
+
return typeof value === 'string' ? value : null;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Assembles behavior evidence for one control, layout or handler.
|
|
180
|
+
*
|
|
181
|
+
* Pure read path over {@link QueryBuilder}: no new SQL, no second traversal
|
|
182
|
+
* implementation, no writes.
|
|
183
|
+
*/
|
|
184
|
+
function buildBehaviorEvidence(queries, request) {
|
|
185
|
+
const maxCallDepth = clamp(Math.trunc(request.maxCallDepth ?? DEFAULT_MAX_CALL_DEPTH), 1, 20);
|
|
186
|
+
const maxResults = clamp(Math.trunc(request.maxResults ?? DEFAULT_MAX_RESULTS), 1, 500);
|
|
187
|
+
const result = {
|
|
188
|
+
target: null,
|
|
189
|
+
evidence: [],
|
|
190
|
+
context: {
|
|
191
|
+
handlers: [],
|
|
192
|
+
data: [],
|
|
193
|
+
unresolved: [],
|
|
194
|
+
ambiguous: [],
|
|
195
|
+
truncated: { callDepth: false, results: false, cycle: false },
|
|
196
|
+
notes: ['STATIC_SOURCE_EVIDENCE'],
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
const owningLayout = (node) => {
|
|
200
|
+
if (LAYOUT_NODE_KINDS.has(node.kind))
|
|
201
|
+
return node.name;
|
|
202
|
+
for (const edge of queries.getIncomingEdges(node.id, ['contains'])) {
|
|
203
|
+
const owner = queries.getNodeById(edge.source);
|
|
204
|
+
if (owner && LAYOUT_NODE_KINDS.has(owner.kind))
|
|
205
|
+
return owner.name;
|
|
206
|
+
}
|
|
207
|
+
const base = path.basename(node.filePath ?? '');
|
|
208
|
+
const stripped = base.replace(/\.(form|report)\.txt$/i, '');
|
|
209
|
+
return stripped === base ? null : stripped;
|
|
210
|
+
};
|
|
211
|
+
// ---- 1. Resolve the target ------------------------------------------
|
|
212
|
+
let target = null;
|
|
213
|
+
if (request.nodeId) {
|
|
214
|
+
target = queries.getNodeById(request.nodeId);
|
|
215
|
+
if (!target)
|
|
216
|
+
result.context.notes.push('TARGET_NOT_FOUND');
|
|
217
|
+
}
|
|
218
|
+
else if (request.name) {
|
|
219
|
+
const wanted = request.name.toLowerCase();
|
|
220
|
+
const candidates = queries
|
|
221
|
+
.getNodesByLowerName(wanted)
|
|
222
|
+
.filter((node) => UI_NODE_KINDS.has(node.kind) || PROCEDURE_KINDS.has(node.kind));
|
|
223
|
+
const scoped = request.layout
|
|
224
|
+
? candidates.filter((node) => {
|
|
225
|
+
const layoutName = owningLayout(node);
|
|
226
|
+
const base = path.basename(node.filePath ?? '');
|
|
227
|
+
const wantedLayout = request.layout.toLowerCase();
|
|
228
|
+
return (layoutName?.toLowerCase() === wantedLayout ||
|
|
229
|
+
base.toLowerCase() === wantedLayout ||
|
|
230
|
+
base.toLowerCase().startsWith(`${wantedLayout}.`));
|
|
231
|
+
})
|
|
232
|
+
: candidates;
|
|
233
|
+
if (scoped.length === 0) {
|
|
234
|
+
result.context.notes.push('TARGET_NOT_FOUND');
|
|
235
|
+
}
|
|
236
|
+
else if (scoped.length > 1) {
|
|
237
|
+
result.context.notes.push('AMBIGUOUS_TARGET');
|
|
238
|
+
result.context.ambiguous.push({
|
|
239
|
+
name: request.name,
|
|
240
|
+
matches: scoped
|
|
241
|
+
.map((node) => ({
|
|
242
|
+
id: node.id,
|
|
243
|
+
kind: node.kind,
|
|
244
|
+
filePath: node.filePath,
|
|
245
|
+
layout: owningLayout(node),
|
|
246
|
+
}))
|
|
247
|
+
.sort((a, b) => a.id.localeCompare(b.id)),
|
|
248
|
+
});
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
target = scoped[0];
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
result.context.notes.push('MISSING_TARGET_SELECTOR');
|
|
257
|
+
}
|
|
258
|
+
if (!target)
|
|
259
|
+
return result;
|
|
260
|
+
result.target = {
|
|
261
|
+
id: target.id,
|
|
262
|
+
name: target.name,
|
|
263
|
+
kind: target.kind,
|
|
264
|
+
filePath: target.filePath,
|
|
265
|
+
layout: owningLayout(target),
|
|
266
|
+
};
|
|
267
|
+
const handlers = [];
|
|
268
|
+
if (UI_NODE_KINDS.has(target.kind)) {
|
|
269
|
+
const bindings = queries
|
|
270
|
+
.getIncomingEdges(target.id, ['event-handler'])
|
|
271
|
+
.sort((a, b) => a.source.localeCompare(b.source));
|
|
272
|
+
for (const edge of bindings) {
|
|
273
|
+
const handlerNode = queries.getNodeById(edge.source);
|
|
274
|
+
if (!handlerNode)
|
|
275
|
+
continue;
|
|
276
|
+
const wiredBy = metadataString(edge, 'synthesizedBy');
|
|
277
|
+
const scope = metadataString(edge, 'scope') === 'form'
|
|
278
|
+
? 'form'
|
|
279
|
+
: wiredBy === 'vba-expression-handler'
|
|
280
|
+
? 'expression'
|
|
281
|
+
: 'control';
|
|
282
|
+
handlers.push({
|
|
283
|
+
node: handlerNode,
|
|
284
|
+
context: {
|
|
285
|
+
handler: handlerNode.name,
|
|
286
|
+
handlerId: handlerNode.id,
|
|
287
|
+
event: metadataString(edge, 'eventName'),
|
|
288
|
+
scope,
|
|
289
|
+
provenance: edge.provenance ?? 'unknown',
|
|
290
|
+
location: locationOf(handlerNode.filePath, handlerNode.startLine),
|
|
291
|
+
wiredBy,
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
else if (PROCEDURE_KINDS.has(target.kind)) {
|
|
297
|
+
// The request named the procedure itself. Report the binding it carries,
|
|
298
|
+
// if any, instead of pretending it was reached through a control.
|
|
299
|
+
const binding = queries
|
|
300
|
+
.getOutgoingEdges(target.id, ['event-handler'])
|
|
301
|
+
.sort((a, b) => a.target.localeCompare(b.target))[0];
|
|
302
|
+
const wiredBy = binding ? metadataString(binding, 'synthesizedBy') : null;
|
|
303
|
+
handlers.push({
|
|
304
|
+
node: target,
|
|
305
|
+
context: {
|
|
306
|
+
handler: target.name,
|
|
307
|
+
handlerId: target.id,
|
|
308
|
+
event: binding ? metadataString(binding, 'eventName') : null,
|
|
309
|
+
scope: binding
|
|
310
|
+
? metadataString(binding, 'scope') === 'form'
|
|
311
|
+
? 'form'
|
|
312
|
+
: wiredBy === 'vba-expression-handler'
|
|
313
|
+
? 'expression'
|
|
314
|
+
: 'control'
|
|
315
|
+
: 'direct',
|
|
316
|
+
provenance: binding?.provenance ?? 'unknown',
|
|
317
|
+
location: locationOf(target.filePath, target.startLine),
|
|
318
|
+
wiredBy,
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
if (handlers.length === 0) {
|
|
323
|
+
result.context.notes.push('NO_HANDLER_BOUND');
|
|
324
|
+
return result;
|
|
325
|
+
}
|
|
326
|
+
result.context.handlers = handlers.map((h) => h.context);
|
|
327
|
+
// ---- 3. Walk each handler's call paths ------------------------------
|
|
328
|
+
const calleesOf = (nodeId) => {
|
|
329
|
+
const out = [];
|
|
330
|
+
const seen = new Set();
|
|
331
|
+
const edges = queries
|
|
332
|
+
.getOutgoingEdges(nodeId, ['calls', 'references'])
|
|
333
|
+
.sort((a, b) => a.target.localeCompare(b.target));
|
|
334
|
+
for (const edge of edges) {
|
|
335
|
+
if (seen.has(edge.target))
|
|
336
|
+
continue;
|
|
337
|
+
const node = queries.getNodeById(edge.target);
|
|
338
|
+
if (!node || !PROCEDURE_KINDS.has(node.kind))
|
|
339
|
+
continue;
|
|
340
|
+
seen.add(edge.target);
|
|
341
|
+
out.push(node);
|
|
342
|
+
}
|
|
343
|
+
return out;
|
|
344
|
+
};
|
|
345
|
+
const paths = [];
|
|
346
|
+
const walk = (chain) => {
|
|
347
|
+
const head = chain[chain.length - 1];
|
|
348
|
+
if (chain.length >= maxCallDepth) {
|
|
349
|
+
if (calleesOf(head.id).length > 0)
|
|
350
|
+
result.context.truncated.callDepth = true;
|
|
351
|
+
paths.push(chain);
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
const callees = calleesOf(head.id).filter((node) => {
|
|
355
|
+
if (chain.some((step) => step.id === node.id)) {
|
|
356
|
+
result.context.truncated.cycle = true;
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
return true;
|
|
360
|
+
});
|
|
361
|
+
if (callees.length === 0) {
|
|
362
|
+
paths.push(chain);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
for (const callee of callees)
|
|
366
|
+
walk([...chain, callee]);
|
|
367
|
+
};
|
|
368
|
+
for (const handler of handlers)
|
|
369
|
+
walk([handler.node]);
|
|
370
|
+
// ---- 4. Attribute data references and effects to each procedure -----
|
|
371
|
+
const dataCache = new Map();
|
|
372
|
+
const dataFor = (procedure) => {
|
|
373
|
+
const cached = dataCache.get(procedure.id);
|
|
374
|
+
if (cached)
|
|
375
|
+
return cached;
|
|
376
|
+
const collected = [];
|
|
377
|
+
const record = (edge, node, attributedBy) => {
|
|
378
|
+
const access = edge.metadata?.access;
|
|
379
|
+
const direction = access === 'read' || access === 'write' ? access : 'unknown';
|
|
380
|
+
collected.push({
|
|
381
|
+
procedure: procedure.name,
|
|
382
|
+
name: node.name,
|
|
383
|
+
targetKind: node.kind,
|
|
384
|
+
access: direction,
|
|
385
|
+
via: metadataString(edge, 'synthesizedBy'),
|
|
386
|
+
attributedBy,
|
|
387
|
+
location: locationOf(procedure.filePath, edge.line),
|
|
388
|
+
});
|
|
389
|
+
// A saved query is a stored fact about the tables it reads; follow it
|
|
390
|
+
// one hop so a procedure that only names the query still reports them.
|
|
391
|
+
if (node.kind === 'query') {
|
|
392
|
+
for (const tableEdge of queries
|
|
393
|
+
.getOutgoingEdges(node.id, ['references'])
|
|
394
|
+
.sort((a, b) => a.target.localeCompare(b.target))) {
|
|
395
|
+
const table = queries.getNodeById(tableEdge.target);
|
|
396
|
+
if (!table || !DATA_TARGET_KINDS.has(table.kind) || table.kind === 'query')
|
|
397
|
+
continue;
|
|
398
|
+
collected.push({
|
|
399
|
+
procedure: procedure.name,
|
|
400
|
+
name: table.name,
|
|
401
|
+
targetKind: table.kind,
|
|
402
|
+
access: direction,
|
|
403
|
+
via: metadataString(tableEdge, 'synthesizedBy'),
|
|
404
|
+
throughQuery: node.name,
|
|
405
|
+
attributedBy,
|
|
406
|
+
location: locationOf(node.filePath, tableEdge.line),
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
for (const edge of queries
|
|
412
|
+
.getOutgoingEdges(procedure.id, ['references'])
|
|
413
|
+
.sort((a, b) => a.target.localeCompare(b.target))) {
|
|
414
|
+
const node = queries.getNodeById(edge.target);
|
|
415
|
+
if (!node || !DATA_TARGET_KINDS.has(node.kind))
|
|
416
|
+
continue;
|
|
417
|
+
if (!isDataReference(edge, node))
|
|
418
|
+
continue;
|
|
419
|
+
record(edge, node, 'edge-source');
|
|
420
|
+
}
|
|
421
|
+
// Module-scoped data references, attributed by source line. See the file
|
|
422
|
+
// header: `emitReference` always sources these from the module node.
|
|
423
|
+
for (const container of queries.getIncomingEdges(procedure.id, ['contains'])) {
|
|
424
|
+
const owner = queries.getNodeById(container.source);
|
|
425
|
+
if (!owner || (owner.kind !== 'module' && owner.kind !== 'class'))
|
|
426
|
+
continue;
|
|
427
|
+
for (const edge of queries
|
|
428
|
+
.getOutgoingEdges(owner.id, ['references'])
|
|
429
|
+
.sort((a, b) => a.target.localeCompare(b.target))) {
|
|
430
|
+
if (edge.line === undefined ||
|
|
431
|
+
edge.line < procedure.startLine ||
|
|
432
|
+
edge.line > procedure.endLine) {
|
|
433
|
+
continue;
|
|
434
|
+
}
|
|
435
|
+
const node = queries.getNodeById(edge.target);
|
|
436
|
+
if (!node || !DATA_TARGET_KINDS.has(node.kind))
|
|
437
|
+
continue;
|
|
438
|
+
if (!isDataReference(edge, node))
|
|
439
|
+
continue;
|
|
440
|
+
record(edge, node, 'source-line');
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
dataCache.set(procedure.id, collected);
|
|
444
|
+
return collected;
|
|
445
|
+
};
|
|
446
|
+
const effectCache = new Map();
|
|
447
|
+
const objectEffectsFor = (procedure) => {
|
|
448
|
+
const cached = effectCache.get(procedure.id);
|
|
449
|
+
if (cached)
|
|
450
|
+
return cached;
|
|
451
|
+
const effects = [];
|
|
452
|
+
for (const edge of queries
|
|
453
|
+
.getOutgoingEdges(procedure.id, ['opens-form', 'opens-report', 'raises-event'])
|
|
454
|
+
.sort((a, b) => a.target.localeCompare(b.target))) {
|
|
455
|
+
const node = queries.getNodeById(edge.target);
|
|
456
|
+
if (!node)
|
|
457
|
+
continue;
|
|
458
|
+
effects.push(`${edge.kind}:${node.name}`);
|
|
459
|
+
}
|
|
460
|
+
effectCache.set(procedure.id, effects);
|
|
461
|
+
return effects;
|
|
462
|
+
};
|
|
463
|
+
// ---- 5. Build the compatibility payload -----------------------------
|
|
464
|
+
const seenEntries = new Set();
|
|
465
|
+
const seenData = new Set();
|
|
466
|
+
for (const chain of paths) {
|
|
467
|
+
const tables = new Set();
|
|
468
|
+
const effects = new Set();
|
|
469
|
+
for (const step of chain) {
|
|
470
|
+
for (const item of dataFor(step)) {
|
|
471
|
+
const key = `${item.procedure}|${item.name}|${item.access}|${item.attributedBy}|${item.location}`;
|
|
472
|
+
if (!seenData.has(key)) {
|
|
473
|
+
seenData.add(key);
|
|
474
|
+
result.context.data.push(item);
|
|
475
|
+
}
|
|
476
|
+
if (item.targetKind !== 'query')
|
|
477
|
+
tables.add(item.name);
|
|
478
|
+
effects.add(item.access === 'unknown'
|
|
479
|
+
? `data-access:${item.name}`
|
|
480
|
+
: `${item.access}:${item.name}`);
|
|
481
|
+
}
|
|
482
|
+
for (const effect of objectEffectsFor(step))
|
|
483
|
+
effects.add(effect);
|
|
484
|
+
}
|
|
485
|
+
const entry = {
|
|
486
|
+
handler: chain[0].name,
|
|
487
|
+
callPath: chain.map((step) => step.name),
|
|
488
|
+
tables: [...tables].sort(),
|
|
489
|
+
effects: [...effects].sort(),
|
|
490
|
+
};
|
|
491
|
+
const key = JSON.stringify(entry);
|
|
492
|
+
if (seenEntries.has(key))
|
|
493
|
+
continue;
|
|
494
|
+
seenEntries.add(key);
|
|
495
|
+
if (result.evidence.length >= maxResults) {
|
|
496
|
+
result.context.truncated.results = true;
|
|
497
|
+
break;
|
|
498
|
+
}
|
|
499
|
+
result.evidence.push(entry);
|
|
500
|
+
}
|
|
501
|
+
// ---- 6. Unresolved references inside the reported procedures --------
|
|
502
|
+
const reported = new Map();
|
|
503
|
+
for (const chain of paths)
|
|
504
|
+
for (const step of chain)
|
|
505
|
+
reported.set(step.id, step);
|
|
506
|
+
const byFile = new Map();
|
|
507
|
+
for (const node of reported.values()) {
|
|
508
|
+
if (!node.filePath)
|
|
509
|
+
continue;
|
|
510
|
+
const list = byFile.get(node.filePath) ?? [];
|
|
511
|
+
list.push(node);
|
|
512
|
+
byFile.set(node.filePath, list);
|
|
513
|
+
}
|
|
514
|
+
for (const [filePath, procedures] of [...byFile.entries()].sort((a, b) => a[0].localeCompare(b[0]))) {
|
|
515
|
+
for (const ref of queries.getUnresolvedReferencesForFile(filePath)) {
|
|
516
|
+
const owner = procedures.find((proc) => ref.line >= proc.startLine && ref.line <= proc.endLine);
|
|
517
|
+
if (!owner)
|
|
518
|
+
continue;
|
|
519
|
+
result.context.unresolved.push({
|
|
520
|
+
procedure: owner.name,
|
|
521
|
+
referenceName: ref.referenceName,
|
|
522
|
+
referenceKind: ref.referenceKind,
|
|
523
|
+
location: locationOf(filePath, ref.line),
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
return result;
|
|
528
|
+
}
|
|
529
|
+
//# sourceMappingURL=behavior-evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"behavior-evidence.js","sourceRoot":"","sources":["../../src/graph/behavior-evidence.ts"],"names":[],"mappings":"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"}
|
package/lib/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* knowledge graph from any codebase.
|
|
6
6
|
*/
|
|
7
7
|
import { Node, Edge, FileRecord, ExtractionResult, Subgraph, TraversalOptions, SearchOptions, SearchResult, SegmentMatch, Context, GraphStats, TaskInput, TaskContext, BuildContextOptions, FindRelevantContextOptions } from './types';
|
|
8
|
+
import { BehaviorEvidenceRequest, BehaviorEvidenceResult } from './graph/behavior-evidence';
|
|
8
9
|
import { IndexProgress, IndexResult, SyncResult } from './extraction';
|
|
9
10
|
import { ResolutionResult } from './resolution';
|
|
10
11
|
import { WatchOptions, PendingFile } from './sync';
|
|
@@ -16,6 +17,7 @@ export { IndexProgress, IndexResult, SyncResult } from './extraction';
|
|
|
16
17
|
export { detectLanguage, isLanguageSupported, isGrammarLoaded, getSupportedLanguages, initGrammars, loadGrammarsForLanguages, loadAllGrammars } from './extraction';
|
|
17
18
|
export { ResolutionResult } from './resolution';
|
|
18
19
|
export { CodeGraphError, FileError, ParseError, DatabaseError, SearchError, VectorError, ConfigError, Logger, setLogger, getLogger, silentLogger, defaultLogger, } from './errors';
|
|
20
|
+
export { buildBehaviorEvidence, BEHAVIOR_EFFECT_VOCABULARY, BEHAVIOR_EVIDENCE_NOTES, CodeGraphBehaviorEvidence, BehaviorEvidenceRequest, BehaviorEvidenceResult, BehaviorEvidenceTarget, BehaviorHandlerContext, BehaviorDataEvidence, BehaviorAmbiguity, BehaviorUnresolvedReference, BehaviorBindingScope, } from './graph/behavior-evidence';
|
|
19
21
|
export { Mutex, FileLock, processInBatches, debounce, throttle, MemoryMonitor } from './utils';
|
|
20
22
|
export { FileWatcher, WatchOptions, PendingFile, LockUnavailableError } from './sync';
|
|
21
23
|
export { MCPServer } from './mcp';
|
|
@@ -527,6 +529,26 @@ export declare class CodeGraph {
|
|
|
527
529
|
* @returns Subgraph containing potentially impacted nodes
|
|
528
530
|
*/
|
|
529
531
|
getImpactRadius(nodeId: string, maxDepth?: number): Subgraph;
|
|
532
|
+
/**
|
|
533
|
+
* Assemble bounded behavior evidence for an Access control, layout or
|
|
534
|
+
* handler (issue #299).
|
|
535
|
+
*
|
|
536
|
+
* Read-only: it joins facts that are already indexed — the event binding,
|
|
537
|
+
* the call paths under it, and the tables/effects those procedures reach —
|
|
538
|
+
* into one typed payload, so a consumer does not re-implement the graph
|
|
539
|
+
* semantics for itself. It never parses source, opens Access, or writes to
|
|
540
|
+
* the index.
|
|
541
|
+
*
|
|
542
|
+
* Identify the target by `nodeId` whenever you have one. A `name` needs a
|
|
543
|
+
* `layout` as soon as it is not unique: an ambiguous name is REFUSED with
|
|
544
|
+
* the candidates listed, never narrowed to an arbitrary first match.
|
|
545
|
+
*
|
|
546
|
+
* The answer is static evidence from exported source. An empty `tables` or
|
|
547
|
+
* `effects` list means the index holds no such fact — not that the code has
|
|
548
|
+
* no runtime effect. See {@link BehaviorEvidenceResult.context} for what
|
|
549
|
+
* could not be answered.
|
|
550
|
+
*/
|
|
551
|
+
getBehaviorEvidence(request: BehaviorEvidenceRequest): BehaviorEvidenceResult;
|
|
530
552
|
/**
|
|
531
553
|
* Find the shortest path between two nodes
|
|
532
554
|
*
|
package/lib/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|