@opensip-cli/graph 0.1.14 → 0.1.16
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/README.md +2 -2
- package/dist/__tests__/internal-surface.test.js +10 -0
- package/dist/__tests__/internal-surface.test.js.map +1 -1
- package/dist/cache/invalidate.d.ts +13 -0
- package/dist/cache/invalidate.d.ts.map +1 -1
- package/dist/cache/invalidate.js +7 -0
- package/dist/cache/invalidate.js.map +1 -1
- package/dist/cli/symbol-index.d.ts +26 -3
- package/dist/cli/symbol-index.d.ts.map +1 -1
- package/dist/cli/symbol-index.js +31 -0
- package/dist/cli/symbol-index.js.map +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +18 -0
- package/dist/internal.js.map +1 -1
- package/dist/persistence/session-payload.d.ts +1 -3
- package/dist/persistence/session-payload.d.ts.map +1 -1
- package/dist/persistence/session-payload.js +2 -19
- package/dist/persistence/session-payload.js.map +1 -1
- package/package.json +10 -10
package/README.md
CHANGED
|
@@ -25,8 +25,8 @@ This package is published for the CLI and advanced plugin authors; most users sh
|
|
|
25
25
|
## Documentation
|
|
26
26
|
|
|
27
27
|
- 📚 Project docs: https://opensip.ai/docs/opensip-cli/
|
|
28
|
-
- 🧭 Package catalog (what every package does): https://github.com/opensip-ai/opensip-cli/blob/v0.1.
|
|
29
|
-
- 📦 Source: https://github.com/opensip-ai/opensip-cli/tree/v0.1.
|
|
28
|
+
- 🧭 Package catalog (what every package does): https://github.com/opensip-ai/opensip-cli/blob/v0.1.16/docs/public/70-reference/02-package-catalog.md
|
|
29
|
+
- 📦 Source: https://github.com/opensip-ai/opensip-cli/tree/v0.1.16/packages/graph/engine
|
|
30
30
|
|
|
31
31
|
## License
|
|
32
32
|
|
|
@@ -22,8 +22,18 @@ const EXPECTED_INTERNAL_EXPORTS = [
|
|
|
22
22
|
'HEAP_TARGETS',
|
|
23
23
|
'MemoryPressureError',
|
|
24
24
|
'alwaysThrowsBranchRule',
|
|
25
|
+
// Symbol-index builder surfaced for @opensip-cli/mcp's `search_symbols`
|
|
26
|
+
// (ADR-0084): MCP returns the same shape as `graph symbol-index`.
|
|
27
|
+
'buildArtifact',
|
|
28
|
+
// Feature derivation surfaced for @opensip-cli/mcp's `blast_radius`
|
|
29
|
+
// (ADR-0084): the single canonical `buildFeatures(['blast'])` scoring site.
|
|
30
|
+
'buildFeatures',
|
|
25
31
|
'buildIndexes',
|
|
32
|
+
'buildSymbolIndexEntries',
|
|
26
33
|
'buildUnifiedReportLines',
|
|
34
|
+
// Freshness helpers surfaced for @opensip-cli/mcp (ADR-0084).
|
|
35
|
+
'classifyCatalog',
|
|
36
|
+
'computeFilesFingerprint',
|
|
27
37
|
'decideHeapTargetMb',
|
|
28
38
|
'duplicatedFunctionBodyRule',
|
|
29
39
|
'executeGraph',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-surface.test.js","sourceRoot":"","sources":["../../src/__tests__/internal-surface.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,gFAAgF;AAChF,MAAM,yBAAyB,GAAG;IAChC,aAAa;IACb,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,wBAAwB;IACxB,cAAc;IACd,yBAAyB;IACzB,oBAAoB;IACpB,4BAA4B;IAC5B,cAAc;IACd,0EAA0E;IAC1E,4DAA4D;IAC5D,4BAA4B;IAC5B,sBAAsB;IACtB,mBAAmB;IACnB,UAAU;IACV,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;CACtB,CAAC,IAAI,EAAE,CAAC;AAET,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAA0B,CAAC,KAAK,SAAS,CAAC;aACjE,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal-surface.test.js","sourceRoot":"","sources":["../../src/__tests__/internal-surface.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,gFAAgF;AAChF,MAAM,yBAAyB,GAAG;IAChC,aAAa;IACb,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,wBAAwB;IACxB,wEAAwE;IACxE,kEAAkE;IAClE,eAAe;IACf,oEAAoE;IACpE,4EAA4E;IAC5E,eAAe;IACf,cAAc;IACd,yBAAyB;IACzB,yBAAyB;IACzB,8DAA8D;IAC9D,iBAAiB;IACjB,yBAAyB;IACzB,oBAAoB;IACpB,4BAA4B;IAC5B,cAAc;IACd,0EAA0E;IAC1E,4DAA4D;IAC5D,4BAA4B;IAC5B,sBAAsB;IACtB,mBAAmB;IACnB,UAAU;IACV,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;CACtB,CAAC,IAAI,EAAE,CAAC;AAET,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAA0B,CAAC,KAAK,SAAS,CAAC;aACjE,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -17,6 +17,12 @@
|
|
|
17
17
|
* and the orchestrator's incremental path.
|
|
18
18
|
*/
|
|
19
19
|
import type { Catalog } from '../types.js';
|
|
20
|
+
/**
|
|
21
|
+
* The current-run signals a cached {@link Catalog} is validated against:
|
|
22
|
+
* the active adapter language, its opaque per-adapter cache key, and the current
|
|
23
|
+
* source file set. {@link classifyCatalog} compares these against the cached
|
|
24
|
+
* catalog to decide valid / incremental / invalid.
|
|
25
|
+
*/
|
|
20
26
|
export interface ValidationContext {
|
|
21
27
|
readonly currentLanguage: string;
|
|
22
28
|
readonly currentCacheKey: string;
|
|
@@ -42,6 +48,13 @@ export type CatalogVerdict = {
|
|
|
42
48
|
readonly kind: 'invalid';
|
|
43
49
|
readonly reason: string;
|
|
44
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* Classify a cached catalog against the current run ({@link ValidationContext})
|
|
53
|
+
* into a {@link CatalogVerdict}: `valid` (reuse as-is), `incremental` (reuse but
|
|
54
|
+
* re-walk the listed changed files), or `invalid` (full rebuild). Language and
|
|
55
|
+
* cache-key mismatches force `invalid`; otherwise the per-file fingerprint
|
|
56
|
+
* decides between `valid` and `incremental`.
|
|
57
|
+
*/
|
|
45
58
|
export declare function classifyCatalog(cached: Catalog, ctx: ValidationContext): CatalogVerdict;
|
|
46
59
|
/**
|
|
47
60
|
* Compute a fingerprint over the project's source files. Uses mtime
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidate.d.ts","sourceRoot":"","sources":["../../src/cache/invalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,GAAG,cAAc,CAyCvF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAWxE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,GACzB,SAAS,MAAM,EAAE,CAYnB"}
|
|
1
|
+
{"version":3,"file":"invalidate.d.ts","sourceRoot":"","sources":["../../src/cache/invalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,GAAG,cAAc,CAyCvF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAWxE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,GACzB,SAAS,MAAM,EAAE,CAYnB"}
|
package/dist/cache/invalidate.js
CHANGED
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { statSync } from 'node:fs';
|
|
20
20
|
import { logger } from '@opensip-cli/core';
|
|
21
|
+
/**
|
|
22
|
+
* Classify a cached catalog against the current run ({@link ValidationContext})
|
|
23
|
+
* into a {@link CatalogVerdict}: `valid` (reuse as-is), `incremental` (reuse but
|
|
24
|
+
* re-walk the listed changed files), or `invalid` (full rebuild). Language and
|
|
25
|
+
* cache-key mismatches force `invalid`; otherwise the per-file fingerprint
|
|
26
|
+
* decides between `valid` and `incremental`.
|
|
27
|
+
*/
|
|
21
28
|
export function classifyCatalog(cached, ctx) {
|
|
22
29
|
if (cached.language !== ctx.currentLanguage) {
|
|
23
30
|
logger.info({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidate.js","sourceRoot":"","sources":["../../src/cache/invalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"invalidate.js","sourceRoot":"","sources":["../../src/cache/invalidate.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import type { Catalog } from '../types.js';
|
|
27
27
|
import type { ToolCliContext } from '@opensip-cli/core';
|
|
28
|
+
/** Options for {@link executeSymbolIndex} — the `opensip graph index` command. */
|
|
28
29
|
export interface SymbolIndexCommandOptions {
|
|
29
30
|
readonly cwd: string;
|
|
30
31
|
readonly out: string;
|
|
@@ -34,7 +35,8 @@ export interface SymbolIndexCommandOptions {
|
|
|
34
35
|
*/
|
|
35
36
|
readonly build?: boolean;
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
+
/** One symbol occurrence in the index — its location, kind, visibility, and body hash. */
|
|
39
|
+
export interface SymbolEntry {
|
|
38
40
|
readonly qualifiedName: string;
|
|
39
41
|
readonly filePath: string;
|
|
40
42
|
readonly line: number;
|
|
@@ -43,14 +45,35 @@ interface SymbolEntry {
|
|
|
43
45
|
readonly visibility: string;
|
|
44
46
|
readonly bodyHash: string;
|
|
45
47
|
}
|
|
46
|
-
|
|
48
|
+
/**
|
|
49
|
+
* The bidirectional symbol-index JSON artifact: `symbols` maps a simple name to
|
|
50
|
+
* its occurrences ({@link SymbolEntry}), `fileSymbols` maps a file path to the
|
|
51
|
+
* names it declares. Written to `--out` for agent / downstream-tool consumption.
|
|
52
|
+
*/
|
|
53
|
+
export interface SymbolIndexArtifact {
|
|
47
54
|
readonly version: '1.0';
|
|
48
55
|
readonly tool: 'graph';
|
|
49
56
|
readonly generatedAt: string;
|
|
50
57
|
readonly symbols: Record<string, readonly SymbolEntry[]>;
|
|
51
58
|
readonly fileSymbols: Record<string, readonly string[]>;
|
|
52
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Execute `opensip graph index`: resolve the catalog (optionally rebuilding it
|
|
62
|
+
* first when `opts.build` is set), serialize it to a {@link SymbolIndexArtifact}
|
|
63
|
+
* via {@link buildArtifact}, and write the JSON to `opts.out`.
|
|
64
|
+
*/
|
|
53
65
|
export declare function executeSymbolIndex(opts: SymbolIndexCommandOptions, cli: ToolCliContext): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* The pure symbol-entry core: flatten every non-`module-init` occurrence in the
|
|
68
|
+
* catalog into a flat {@link SymbolEntry} list (the keyless counterpart to
|
|
69
|
+
* {@link buildArtifact}). Shared with `@opensip-cli/mcp`'s `search_symbols` so
|
|
70
|
+
* MCP returns the SAME shape as `graph symbol-index` without re-deriving symbol
|
|
71
|
+
* metadata from raw AST (ADR-0084). No CLI side effects — data → data.
|
|
72
|
+
*/
|
|
73
|
+
export declare function buildSymbolIndexEntries(catalog: Catalog): SymbolEntry[];
|
|
74
|
+
/**
|
|
75
|
+
* Project a {@link Catalog} into the serializable {@link SymbolIndexArtifact},
|
|
76
|
+
* building both the name→occurrences and file→names maps in one pass.
|
|
77
|
+
*/
|
|
54
78
|
export declare function buildArtifact(catalog: Catalog): SymbolIndexArtifact;
|
|
55
|
-
export {};
|
|
56
79
|
//# sourceMappingURL=symbol-index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-index.d.ts","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,
|
|
1
|
+
{"version":3,"file":"symbol-index.d.ts","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,kFAAkF;AAClF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,0FAA0F;AAC1F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CACzD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAmDf;AAiBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAavE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAgBnE"}
|
package/dist/cli/symbol-index.js
CHANGED
|
@@ -29,6 +29,11 @@ import { createToolLogger, ConfigurationError, ToolError } from '@opensip-cli/co
|
|
|
29
29
|
import { CatalogRepo } from '../persistence/catalog-repo.js';
|
|
30
30
|
import { loadGraphConfig, runGraph } from './orchestrate.js';
|
|
31
31
|
const log = createToolLogger('graph:cli');
|
|
32
|
+
/**
|
|
33
|
+
* Execute `opensip graph index`: resolve the catalog (optionally rebuilding it
|
|
34
|
+
* first when `opts.build` is set), serialize it to a {@link SymbolIndexArtifact}
|
|
35
|
+
* via {@link buildArtifact}, and write the JSON to `opts.out`.
|
|
36
|
+
*/
|
|
32
37
|
export async function executeSymbolIndex(opts, cli) {
|
|
33
38
|
log.info({
|
|
34
39
|
evt: 'graph.cli.symbol-index.start',
|
|
@@ -88,6 +93,32 @@ async function resolveCatalogForIndex(opts, datastore) {
|
|
|
88
93
|
}
|
|
89
94
|
return new CatalogRepo(datastore).loadFullCatalog();
|
|
90
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* The pure symbol-entry core: flatten every non-`module-init` occurrence in the
|
|
98
|
+
* catalog into a flat {@link SymbolEntry} list (the keyless counterpart to
|
|
99
|
+
* {@link buildArtifact}). Shared with `@opensip-cli/mcp`'s `search_symbols` so
|
|
100
|
+
* MCP returns the SAME shape as `graph symbol-index` without re-deriving symbol
|
|
101
|
+
* metadata from raw AST (ADR-0084). No CLI side effects — data → data.
|
|
102
|
+
*/
|
|
103
|
+
export function buildSymbolIndexEntries(catalog) {
|
|
104
|
+
const entries = [];
|
|
105
|
+
// fileSymbols is the file→names index `buildArtifact` keeps; the flat-entry
|
|
106
|
+
// core does not need it, so collect into a throwaway map.
|
|
107
|
+
const fileSymbols = {};
|
|
108
|
+
for (const name of Object.keys(catalog.functions)) {
|
|
109
|
+
const bucket = catalog.functions[name];
|
|
110
|
+
if (!bucket)
|
|
111
|
+
continue;
|
|
112
|
+
for (const entry of collectEntriesForName(bucket, name, fileSymbols)) {
|
|
113
|
+
entries.push(entry);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return entries;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Project a {@link Catalog} into the serializable {@link SymbolIndexArtifact},
|
|
120
|
+
* building both the name→occurrences and file→names maps in one pass.
|
|
121
|
+
*/
|
|
91
122
|
export function buildArtifact(catalog) {
|
|
92
123
|
const symbols = {};
|
|
93
124
|
const fileSymbols = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-index.js","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAM7D,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"symbol-index.js","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAM7D,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAqC1C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAA+B,EAC/B,GAAmB;IAEnB,GAAG,CAAC,IAAI,CAAC;QACP,GAAG,EAAE,8BAA8B;QACnC,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,EAA2B,CAAC;QACjE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAAC,4DAA4D,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAC1B,IAAI,CAAC,KAAK,KAAK,IAAI;gBACjB,CAAC,CAAC,0CAA0C;gBAC5C,CAAC,CAAC,qFAAqF,CAC1F,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,MAAM,CAAC,WAAW,CAAC,qBAAqB,MAAM,CAAC,SAAS,CAAC,eAAe,OAAO,IAAI,CAC7F,CAAC;QACF,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC;YACP,GAAG,EAAE,iCAAiC;YACtC,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC;YACR,GAAG,EAAE,8BAA8B;YACnC,MAAM,EAAE,WAAW;YACnB,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC5D,CAAC,CAAC;QACH,MAAM,QAAQ,GACZ,KAAK,YAAY,kBAAkB;YACjC,CAAC,CAAC,UAAU,CAAC,mBAAmB;YAChC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;QAC/B,MAAM,GAAG,CAAC,aAAa,CAAC;YACtB,OAAO,EAAE,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACxF,QAAQ;YACR,GAAG,CAAC,KAAK,YAAY,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,IAA+B,EAC/B,SAAoB;IAEpB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS;YACT,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,KAAK,MAAM,KAAK,IAAI,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAClD,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO;QACP,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAQG,EACH,IAAY,EACZ,WAAqC;IAErC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa;YAAE,SAAS;QACzC,OAAO,CAAC,IAAI,CAAC;YACX,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC;QACH,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAC1B,WAAqC,EACrC,QAAgB,EAChB,IAAY;IAEZ,IAAI,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,CAAC;QACZ,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* need the raw rule object to call `.evaluate(...)` directly.
|
|
10
10
|
*/
|
|
11
11
|
export { buildIndexes } from './pipeline/indexes.js';
|
|
12
|
+
export { buildFeatures } from './pipeline/features.js';
|
|
12
13
|
export type { GraphConfig } from './types.js';
|
|
13
14
|
export { alwaysThrowsBranchRule } from './rules/always-throws-branch.js';
|
|
14
15
|
export { noSideEffectPathRule } from './rules/no-side-effect-path.js';
|
|
@@ -23,4 +24,8 @@ export { CatalogRepo } from './persistence/catalog-repo.js';
|
|
|
23
24
|
export { MemoryPressureError } from './cli/pressure-monitor.js';
|
|
24
25
|
export { HEAP_TARGETS, decideHeapTargetMb, systemHasMemoryFor, runHeapPreflight, totalSystemMemoryMb, } from './cli/heap-preflight.js';
|
|
25
26
|
export type { Shard, ShardBuildResult } from './cli/orchestrate/shard-model.js';
|
|
27
|
+
export { buildSymbolIndexEntries, buildArtifact } from './cli/symbol-index.js';
|
|
28
|
+
export type { SymbolEntry, SymbolIndexArtifact } from './cli/symbol-index.js';
|
|
29
|
+
export { classifyCatalog, computeFilesFingerprint } from './cache/invalidate.js';
|
|
30
|
+
export type { ValidationContext, CatalogVerdict } from './cache/invalidate.js';
|
|
26
31
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAOrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKvD,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAIzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAQ1E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAQhF,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM9E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACjF,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/internal.js
CHANGED
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
// indexes before invoking a rule's `.evaluate(...)`. The dashboard has its own
|
|
13
13
|
// index builder; nothing in production consumes the engine's.
|
|
14
14
|
export { buildIndexes } from './pipeline/indexes.js';
|
|
15
|
+
// Feature derivation (blast / reachability / coupling). Surfaced on the internal
|
|
16
|
+
// contract for `@opensip-cli/mcp` (ADR-0084): MCP's `blast_radius` reuses the
|
|
17
|
+
// single canonical `buildFeatures(['blast'])` scoring site so its numbers never
|
|
18
|
+
// diverge from `opensip graph` (NOT a re-implemented BFS). The dashboard has its
|
|
19
|
+
// own feature derivation; nothing else in production consumes the engine's.
|
|
20
|
+
export { buildFeatures } from './pipeline/features.js';
|
|
15
21
|
export { alwaysThrowsBranchRule } from './rules/always-throws-branch.js';
|
|
16
22
|
export { noSideEffectPathRule } from './rules/no-side-effect-path.js';
|
|
17
23
|
export { duplicatedFunctionBodyRule } from './rules/duplicated-function-body.js';
|
|
@@ -38,4 +44,16 @@ export { envelopeToLiveRunTableRows } from './cli/graph-envelope-view.js';
|
|
|
38
44
|
export { CatalogRepo } from './persistence/catalog-repo.js';
|
|
39
45
|
export { MemoryPressureError } from './cli/pressure-monitor.js';
|
|
40
46
|
export { HEAP_TARGETS, decideHeapTargetMb, systemHasMemoryFor, runHeapPreflight, totalSystemMemoryMb, } from './cli/heap-preflight.js';
|
|
47
|
+
// Symbol-index builder — surfaced on the internal contract for `@opensip-cli/mcp`
|
|
48
|
+
// (ADR-0084) so the MCP `search_symbols` tool returns the SAME shape as
|
|
49
|
+
// `graph symbol-index` without re-deriving symbol metadata from raw AST. The
|
|
50
|
+
// keyed-artifact builder + flat-entry core + their DTO types are CLI-handler
|
|
51
|
+
// symbols (the command runs via `graphTool.commandSpecs`), so they live here on
|
|
52
|
+
// the internal surface, not the public barrel.
|
|
53
|
+
export { buildSymbolIndexEntries, buildArtifact } from './cli/symbol-index.js';
|
|
54
|
+
// Catalog freshness/staleness classification — surfaced on the internal contract
|
|
55
|
+
// for `@opensip-cli/mcp` (ADR-0084) so the MCP server can report a stale/missing
|
|
56
|
+
// catalog with a warning. MCP's depcruise exception is scoped to this file, so
|
|
57
|
+
// these must live here (not reached directly in `cache/invalidate.ts`).
|
|
58
|
+
export { classifyCatalog, computeFilesFingerprint } from './cache/invalidate.js';
|
|
41
59
|
//# sourceMappingURL=internal.js.map
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,+EAA+E;AAC/E,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,+EAA+E;AAC/E,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,iFAAiF;AACjF,8EAA8E;AAC9E,gFAAgF;AAChF,iFAAiF;AACjF,4EAA4E;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAOvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,sEAAsE;AACtE,EAAE;AACF,wEAAwE;AACxE,2EAA2E;AAC3E,qFAAqF;AACrF,wEAAwE;AACxE,wEAAwE;AACxE,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGvE,8EAA8E;AAC9E,kEAAkE;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,6EAA6E;AAC7E,0EAA0E;AAC1E,gFAAgF;AAChF,0EAA0E;AAC1E,8EAA8E;AAC9E,kFAAkF;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,kFAAkF;AAClF,wEAAwE;AACxE,6EAA6E;AAC7E,6EAA6E;AAC7E,gFAAgF;AAChF,+CAA+C;AAC/C,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG/E,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -23,11 +23,9 @@
|
|
|
23
23
|
* so the session detail stays in engine vocabulary (built upstream of the
|
|
24
24
|
* envelope's Option-A remap).
|
|
25
25
|
*/
|
|
26
|
-
import type { Signal, SignalRepair } from '@opensip-cli/core';
|
|
26
|
+
import type { JsonScalar, Signal, SignalRepair } from '@opensip-cli/core';
|
|
27
27
|
/** Two-level severity the dashboard buckets on (`critical|high → error`). */
|
|
28
28
|
export type GraphFindingSeverity = 'error' | 'warning';
|
|
29
|
-
/** JSON-safe scalar — the metadata-value subset the persisted shape permits. */
|
|
30
|
-
export type JsonScalar = string | number | boolean;
|
|
31
29
|
/** A persisted finding row — the structural subset the dashboard renders. */
|
|
32
30
|
export interface GraphSessionFinding {
|
|
33
31
|
readonly ruleId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-payload.d.ts","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"session-payload.d.ts","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1E,6EAA6E;AAC7E,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvD,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACzD,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE;QAChB,6EAA6E;QAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,4EAA4E;QAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,2CAA2C;QAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,mDAAmD;QACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,kDAAkD;QAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,kBAAkB,GAAE,SAAS,MAAM,EAAO,GACzC,mBAAmB,CAsDrB"}
|
|
@@ -23,24 +23,7 @@
|
|
|
23
23
|
* so the session detail stays in engine vocabulary (built upstream of the
|
|
24
24
|
* envelope's Option-A remap).
|
|
25
25
|
*/
|
|
26
|
-
|
|
27
|
-
* Narrow a signal's open `metadata` bag to the JSON-safe scalar subset the
|
|
28
|
-
* persisted shape permits (string | number | boolean). Returns undefined when
|
|
29
|
-
* nothing survives, so findings without metric metadata stay clean.
|
|
30
|
-
*/
|
|
31
|
-
function projectMetadata(metadata) {
|
|
32
|
-
if (!metadata)
|
|
33
|
-
return undefined;
|
|
34
|
-
const out = {};
|
|
35
|
-
let any = false;
|
|
36
|
-
for (const [k, v] of Object.entries(metadata)) {
|
|
37
|
-
if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {
|
|
38
|
-
out[k] = v;
|
|
39
|
-
any = true;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return any ? out : undefined;
|
|
43
|
-
}
|
|
26
|
+
import { projectJsonScalarMetadata } from '@opensip-cli/core';
|
|
44
27
|
/**
|
|
45
28
|
* Build the graph session payload directly from the run's `Signal[]`.
|
|
46
29
|
*
|
|
@@ -64,7 +47,7 @@ function projectMetadata(metadata) {
|
|
|
64
47
|
export function buildGraphSessionPayload(signals, evaluatedRuleSlugs = []) {
|
|
65
48
|
const byRule = new Map();
|
|
66
49
|
for (const s of signals) {
|
|
67
|
-
const metadata =
|
|
50
|
+
const metadata = projectJsonScalarMetadata(s.metadata);
|
|
68
51
|
const finding = {
|
|
69
52
|
ruleId: s.ruleId,
|
|
70
53
|
message: s.message,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-payload.js","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"session-payload.js","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensip-cli/graph",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Static call-graph + dead-end analysis (seven-stage pipeline)",
|
|
6
6
|
"keywords": [
|
|
@@ -441,21 +441,21 @@
|
|
|
441
441
|
"glob": "^13.0.0",
|
|
442
442
|
"react": "^19.2.7",
|
|
443
443
|
"zod": "^4.4.3",
|
|
444
|
-
"@opensip-cli/cli-live": "0.1.
|
|
445
|
-
"@opensip-cli/
|
|
446
|
-
"@opensip-cli/
|
|
447
|
-
"@opensip-cli/
|
|
448
|
-
"@opensip-cli/
|
|
449
|
-
"@opensip-cli/
|
|
450
|
-
"@opensip-cli/
|
|
451
|
-
"@opensip-cli/
|
|
444
|
+
"@opensip-cli/cli-live": "0.1.16",
|
|
445
|
+
"@opensip-cli/clone-detection": "0.1.16",
|
|
446
|
+
"@opensip-cli/cli-ui": "0.1.16",
|
|
447
|
+
"@opensip-cli/core": "0.1.16",
|
|
448
|
+
"@opensip-cli/contracts": "0.1.16",
|
|
449
|
+
"@opensip-cli/datastore": "0.1.16",
|
|
450
|
+
"@opensip-cli/config": "0.1.16",
|
|
451
|
+
"@opensip-cli/session-store": "0.1.16"
|
|
452
452
|
},
|
|
453
453
|
"devDependencies": {
|
|
454
454
|
"@types/node": "^24.13.2",
|
|
455
455
|
"@types/react": "^19.2.17",
|
|
456
456
|
"typescript": "~6.0.3",
|
|
457
457
|
"vitest": "^4.1.8",
|
|
458
|
-
"@opensip-cli/output": "0.1.
|
|
458
|
+
"@opensip-cli/output": "0.1.16"
|
|
459
459
|
},
|
|
460
460
|
"scripts": {
|
|
461
461
|
"build": "tsc",
|