openlore 2.0.2 → 2.0.4
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 +32 -2
- package/dist/cli/commands/analyze.js +36 -23
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +18 -1
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/export/index.d.ts +10 -0
- package/dist/cli/export/index.d.ts.map +1 -0
- package/dist/cli/export/index.js +27 -0
- package/dist/cli/export/index.js.map +1 -0
- package/dist/cli/export/scip.d.ts +22 -0
- package/dist/cli/export/scip.d.ts.map +1 -0
- package/dist/cli/export/scip.js +95 -0
- package/dist/cli/export/scip.js.map +1 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/manifest/detect/events.d.ts +31 -0
- package/dist/cli/manifest/detect/events.d.ts.map +1 -0
- package/dist/cli/manifest/detect/events.js +22 -0
- package/dist/cli/manifest/detect/events.js.map +1 -0
- package/dist/cli/manifest/detect/http-routes.d.ts +22 -0
- package/dist/cli/manifest/detect/http-routes.d.ts.map +1 -0
- package/dist/cli/manifest/detect/http-routes.js +18 -0
- package/dist/cli/manifest/detect/http-routes.js.map +1 -0
- package/dist/cli/manifest/detect/public-symbols.d.ts +46 -0
- package/dist/cli/manifest/detect/public-symbols.d.ts.map +1 -0
- package/dist/cli/manifest/detect/public-symbols.js +144 -0
- package/dist/cli/manifest/detect/public-symbols.js.map +1 -0
- package/dist/cli/manifest/emit.d.ts +103 -0
- package/dist/cli/manifest/emit.d.ts.map +1 -0
- package/dist/cli/manifest/emit.js +272 -0
- package/dist/cli/manifest/emit.js.map +1 -0
- package/dist/cli/manifest/index.d.ts +11 -0
- package/dist/cli/manifest/index.d.ts.map +1 -0
- package/dist/cli/manifest/index.js +31 -0
- package/dist/cli/manifest/index.js.map +1 -0
- package/dist/cli/manifest/schema-validator.d.ts +18 -0
- package/dist/cli/manifest/schema-validator.d.ts.map +1 -0
- package/dist/cli/manifest/schema-validator.js +77 -0
- package/dist/cli/manifest/schema-validator.js.map +1 -0
- package/dist/cli/manifest/validate.d.ts +15 -0
- package/dist/cli/manifest/validate.d.ts.map +1 -0
- package/dist/cli/manifest/validate.js +51 -0
- package/dist/cli/manifest/validate.js.map +1 -0
- package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
- package/dist/core/analyzer/artifact-generator.js +37 -3
- package/dist/core/analyzer/artifact-generator.js.map +1 -1
- package/dist/core/analyzer/call-graph.d.ts +9 -2
- package/dist/core/analyzer/call-graph.d.ts.map +1 -1
- package/dist/core/analyzer/call-graph.js +534 -1
- package/dist/core/analyzer/call-graph.js.map +1 -1
- package/dist/core/analyzer/embedding-service.d.ts +2 -0
- package/dist/core/analyzer/embedding-service.d.ts.map +1 -1
- package/dist/core/analyzer/embedding-service.js +4 -0
- package/dist/core/analyzer/embedding-service.js.map +1 -1
- package/dist/core/analyzer/fixtures/regression/sample.d.ts +9 -0
- package/dist/core/analyzer/fixtures/regression/sample.d.ts.map +1 -0
- package/dist/core/analyzer/fixtures/regression/sample.js +26 -0
- package/dist/core/analyzer/fixtures/regression/sample.js.map +1 -0
- package/dist/core/analyzer/iac/ansible.d.ts +18 -0
- package/dist/core/analyzer/iac/ansible.d.ts.map +1 -0
- package/dist/core/analyzer/iac/ansible.js +219 -0
- package/dist/core/analyzer/iac/ansible.js.map +1 -0
- package/dist/core/analyzer/iac/cdk.d.ts +26 -0
- package/dist/core/analyzer/iac/cdk.d.ts.map +1 -0
- package/dist/core/analyzer/iac/cdk.js +204 -0
- package/dist/core/analyzer/iac/cdk.js.map +1 -0
- package/dist/core/analyzer/iac/classify-yaml.d.ts +20 -0
- package/dist/core/analyzer/iac/classify-yaml.d.ts.map +1 -0
- package/dist/core/analyzer/iac/classify-yaml.js +81 -0
- package/dist/core/analyzer/iac/classify-yaml.js.map +1 -0
- package/dist/core/analyzer/iac/cloudformation.d.ts +15 -0
- package/dist/core/analyzer/iac/cloudformation.d.ts.map +1 -0
- package/dist/core/analyzer/iac/cloudformation.js +189 -0
- package/dist/core/analyzer/iac/cloudformation.js.map +1 -0
- package/dist/core/analyzer/iac/helm.d.ts +20 -0
- package/dist/core/analyzer/iac/helm.d.ts.map +1 -0
- package/dist/core/analyzer/iac/helm.js +229 -0
- package/dist/core/analyzer/iac/helm.js.map +1 -0
- package/dist/core/analyzer/iac/index.d.ts +23 -0
- package/dist/core/analyzer/iac/index.d.ts.map +1 -0
- package/dist/core/analyzer/iac/index.js +40 -0
- package/dist/core/analyzer/iac/index.js.map +1 -0
- package/dist/core/analyzer/iac/kubernetes.d.ts +14 -0
- package/dist/core/analyzer/iac/kubernetes.d.ts.map +1 -0
- package/dist/core/analyzer/iac/kubernetes.js +226 -0
- package/dist/core/analyzer/iac/kubernetes.js.map +1 -0
- package/dist/core/analyzer/iac/project.d.ts +16 -0
- package/dist/core/analyzer/iac/project.d.ts.map +1 -0
- package/dist/core/analyzer/iac/project.js +97 -0
- package/dist/core/analyzer/iac/project.js.map +1 -0
- package/dist/core/analyzer/iac/pulumi.d.ts +21 -0
- package/dist/core/analyzer/iac/pulumi.d.ts.map +1 -0
- package/dist/core/analyzer/iac/pulumi.js +190 -0
- package/dist/core/analyzer/iac/pulumi.js.map +1 -0
- package/dist/core/analyzer/iac/terraform.d.ts +19 -0
- package/dist/core/analyzer/iac/terraform.d.ts.map +1 -0
- package/dist/core/analyzer/iac/terraform.js +546 -0
- package/dist/core/analyzer/iac/terraform.js.map +1 -0
- package/dist/core/analyzer/iac/types.d.ts +67 -0
- package/dist/core/analyzer/iac/types.d.ts.map +1 -0
- package/dist/core/analyzer/iac/types.js +39 -0
- package/dist/core/analyzer/iac/types.js.map +1 -0
- package/dist/core/analyzer/signature-extractor.d.ts +6 -0
- package/dist/core/analyzer/signature-extractor.d.ts.map +1 -1
- package/dist/core/analyzer/signature-extractor.js +112 -2
- package/dist/core/analyzer/signature-extractor.js.map +1 -1
- package/dist/core/analyzer/spec-vector-index.d.ts +9 -2
- package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -1
- package/dist/core/analyzer/spec-vector-index.js +111 -10
- package/dist/core/analyzer/spec-vector-index.js.map +1 -1
- package/dist/core/analyzer/vector-index.d.ts +33 -1
- package/dist/core/analyzer/vector-index.d.ts.map +1 -1
- package/dist/core/analyzer/vector-index.js +99 -10
- package/dist/core/analyzer/vector-index.js.map +1 -1
- package/dist/core/scip/index.d.ts +51 -0
- package/dist/core/scip/index.d.ts.map +1 -0
- package/dist/core/scip/index.js +210 -0
- package/dist/core/scip/index.js.map +1 -0
- package/dist/core/scip/moniker.d.ts +48 -0
- package/dist/core/scip/moniker.d.ts.map +1 -0
- package/dist/core/scip/moniker.js +109 -0
- package/dist/core/scip/moniker.js.map +1 -0
- package/dist/core/scip/schema.d.ts +34 -0
- package/dist/core/scip/schema.d.ts.map +1 -0
- package/dist/core/scip/schema.js +48 -0
- package/dist/core/scip/schema.js.map +1 -0
- package/dist/core/scip/vendor/scip.proto +910 -0
- package/dist/core/services/edge-store.d.ts +6 -0
- package/dist/core/services/edge-store.d.ts.map +1 -1
- package/dist/core/services/edge-store.js +8 -0
- package/dist/core/services/edge-store.js.map +1 -1
- package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/graph.js +12 -0
- package/dist/core/services/mcp-handlers/graph.js.map +1 -1
- package/dist/core/services/mcp-handlers/orient.js +2 -2
- package/dist/core/services/mcp-handlers/orient.js.map +1 -1
- package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/semantic.js +23 -30
- package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
- package/dist/core/services/mcp-watcher.d.ts.map +1 -1
- package/dist/core/services/mcp-watcher.js +14 -10
- package/dist/core/services/mcp-watcher.js.map +1 -1
- package/package.json +12 -1
- package/schemas/openlore-manifest-v1.json +191 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `openlore export scip` — emit an `index.scip` derived from the analysis graph.
|
|
3
|
+
*
|
|
4
|
+
* Loads the persisted call graph and projects it into SCIP (see
|
|
5
|
+
* src/core/scip/index.ts). The SQLite/JSON graph remains canonical; this is a
|
|
6
|
+
* one-way interop export for the Sourcegraph / Glean ecosystem.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
9
|
+
import { writeFile } from 'node:fs/promises';
|
|
10
|
+
import { basename, join, resolve } from 'node:path';
|
|
11
|
+
import { createRequire } from 'node:module';
|
|
12
|
+
import { logger } from '../../utils/logger.js';
|
|
13
|
+
import { readCachedContext } from '../../core/services/mcp-handlers/utils.js';
|
|
14
|
+
import { exportScip } from '../../core/scip/index.js';
|
|
15
|
+
const require = createRequire(import.meta.url);
|
|
16
|
+
/** openlore's own version, emitted as SCIP tool_info.version. */
|
|
17
|
+
function toolVersion() {
|
|
18
|
+
const pkg = require('../../../package.json');
|
|
19
|
+
return pkg.version;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Derive the SCIP `<package>` coordinates for the target project. Reads
|
|
23
|
+
* package.json when present (npm); otherwise infers the ecosystem from a
|
|
24
|
+
* manifest file and falls back to the directory name at version 0.0.0.
|
|
25
|
+
*/
|
|
26
|
+
export function derivePackageInfo(projectRoot) {
|
|
27
|
+
const pkgJsonPath = join(projectRoot, 'package.json');
|
|
28
|
+
if (existsSync(pkgJsonPath)) {
|
|
29
|
+
try {
|
|
30
|
+
const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
|
|
31
|
+
if (pkg.name) {
|
|
32
|
+
return { manager: 'npm', name: pkg.name, version: pkg.version ?? '0.0.0' };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// fall through to manifest inference
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const manifests = [
|
|
40
|
+
['Cargo.toml', 'cargo'],
|
|
41
|
+
['go.mod', 'gomod'],
|
|
42
|
+
['pyproject.toml', 'pip'],
|
|
43
|
+
['setup.py', 'pip'],
|
|
44
|
+
['Gemfile', 'gem'],
|
|
45
|
+
['pom.xml', 'maven'],
|
|
46
|
+
];
|
|
47
|
+
const manager = manifests.find(([f]) => existsSync(join(projectRoot, f)))?.[1] ?? 'npm';
|
|
48
|
+
return { manager, name: basename(projectRoot), version: '0.0.0' };
|
|
49
|
+
}
|
|
50
|
+
export async function runScipExport(opts) {
|
|
51
|
+
const projectRoot = resolve(opts.projectRoot ?? process.cwd());
|
|
52
|
+
const ctx = await readCachedContext(projectRoot);
|
|
53
|
+
const graph = ctx?.callGraph;
|
|
54
|
+
if (!graph || graph.nodes.length === 0) {
|
|
55
|
+
logger.error('No analysis graph found. Run `openlore analyze` first.');
|
|
56
|
+
return 2;
|
|
57
|
+
}
|
|
58
|
+
const report = {
|
|
59
|
+
documentCount: 0,
|
|
60
|
+
occurrenceCount: 0,
|
|
61
|
+
symbolCount: 0,
|
|
62
|
+
definitionCount: 0,
|
|
63
|
+
unspecifiedLanguageFiles: [],
|
|
64
|
+
warnings: [],
|
|
65
|
+
};
|
|
66
|
+
let buffer;
|
|
67
|
+
try {
|
|
68
|
+
buffer = exportScip(graph, {
|
|
69
|
+
projectRoot,
|
|
70
|
+
package: derivePackageInfo(projectRoot),
|
|
71
|
+
toolVersion: toolVersion(),
|
|
72
|
+
include: opts.include,
|
|
73
|
+
exclude: opts.exclude,
|
|
74
|
+
report,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
logger.error(err instanceof Error ? err.message : String(err));
|
|
79
|
+
return 2;
|
|
80
|
+
}
|
|
81
|
+
const outPath = resolve(opts.out ?? join(projectRoot, 'index.scip'));
|
|
82
|
+
await writeFile(outPath, buffer);
|
|
83
|
+
logger.success(`Wrote ${outPath} (${buffer.byteLength} bytes)`);
|
|
84
|
+
logger.info('documents', report.documentCount);
|
|
85
|
+
logger.info('symbols', report.symbolCount);
|
|
86
|
+
logger.info('occurrences', report.occurrenceCount);
|
|
87
|
+
logger.info('definitions', report.definitionCount);
|
|
88
|
+
if (report.unspecifiedLanguageFiles.length > 0) {
|
|
89
|
+
logger.warning(`${report.unspecifiedLanguageFiles.length} file(s) have no SCIP language enum and were tagged UnspecifiedLanguage.`);
|
|
90
|
+
}
|
|
91
|
+
for (const w of report.warnings)
|
|
92
|
+
logger.warning(w);
|
|
93
|
+
return 0;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=scip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scip.js","sourceRoot":"","sources":["../../../src/cli/export/scip.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -25,6 +25,8 @@ import { decisionsCommand } from './commands/decisions.js';
|
|
|
25
25
|
import { telemetryCommand } from './commands/telemetry.js';
|
|
26
26
|
import { installCommand } from './install/index.js';
|
|
27
27
|
import { preflightCommand } from './preflight/index.js';
|
|
28
|
+
import { exportCommand } from './export/index.js';
|
|
29
|
+
import { manifestCommand } from './manifest/index.js';
|
|
28
30
|
import { configureLogger } from '../utils/logger.js';
|
|
29
31
|
// Read version from package.json at runtime so it never drifts from the published version
|
|
30
32
|
const require = createRequire(import.meta.url);
|
|
@@ -122,5 +124,7 @@ program.addCommand(decisionsCommand);
|
|
|
122
124
|
program.addCommand(telemetryCommand);
|
|
123
125
|
program.addCommand(installCommand);
|
|
124
126
|
program.addCommand(preflightCommand);
|
|
127
|
+
program.addCommand(exportCommand);
|
|
128
|
+
program.addCommand(manifestCommand);
|
|
125
129
|
program.parse();
|
|
126
130
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,0FAA0F;AAC1F,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEzE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,mDAAmD;AACnD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAEhC,eAAe,CAAC;QACd,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;QAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;QAC9B,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK;QAC7B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;KAC9D,CAAC,CAAC;IAEH,qEAAqE;IACrE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAC;QAC/C,wCAAwC;QACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8EAA8E;gBAC9E,sCAAsC,CACvC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CACV,uEAAuE;IACrE,4EAA4E;IAC5E,iEAAiE,CACpE;KACA,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,aAAa,EAAE,8BAA8B,EAAE,KAAK,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC;KACxD,MAAM,CAAC,YAAY,EAAE,kDAAkD,CAAC;KACxE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC;KACzE,MAAM,CACL,kBAAkB,EAClB,0EAA0E,CAC3E;KACA,MAAM,CAAC,YAAY,EAAE,uEAAuE,CAAC;KAC7F,MAAM,CAAC,gBAAgB,EAAE,uDAAuD,EAAE,QAAQ,CAAC;KAC3F,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCH,CACE,CAAC;AAEJ,uBAAuB;AACvB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event emitter/consumer and RPC detection for the manifest.
|
|
3
|
+
*
|
|
4
|
+
* The current analyzer does not surface message-bus events or gRPC/RPC service
|
|
5
|
+
* definitions as structured data, so per spec-05's conservative rule these are
|
|
6
|
+
* emitted as empty arrays rather than guessed. The schema and federation index
|
|
7
|
+
* already accommodate them, so a later analyzer change can populate them
|
|
8
|
+
* without a manifest-schema bump.
|
|
9
|
+
*
|
|
10
|
+
* TODO(spec-05-followup): surface events_emitted / events_consumed from analyzer.
|
|
11
|
+
* TODO(spec-05-followup): surface rpc_endpoints (gRPC service/method) from analyzer.
|
|
12
|
+
*/
|
|
13
|
+
export interface ManifestEvent {
|
|
14
|
+
name: string;
|
|
15
|
+
schema_ref?: string | null;
|
|
16
|
+
emitter?: string | null;
|
|
17
|
+
}
|
|
18
|
+
export interface ManifestConsumedEvent {
|
|
19
|
+
name: string;
|
|
20
|
+
handler: string | null;
|
|
21
|
+
}
|
|
22
|
+
export interface ManifestRpcEndpoint {
|
|
23
|
+
kind: string;
|
|
24
|
+
service: string;
|
|
25
|
+
method: string;
|
|
26
|
+
handler: string | null;
|
|
27
|
+
}
|
|
28
|
+
export declare function deriveEventsEmitted(): ManifestEvent[];
|
|
29
|
+
export declare function deriveEventsConsumed(): ManifestConsumedEvent[];
|
|
30
|
+
export declare function deriveRpcEndpoints(): ManifestRpcEndpoint[];
|
|
31
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/cli/manifest/detect/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,mBAAmB,IAAI,aAAa,EAAE,CAErD;AAED,wBAAgB,oBAAoB,IAAI,qBAAqB,EAAE,CAE9D;AAED,wBAAgB,kBAAkB,IAAI,mBAAmB,EAAE,CAE1D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event emitter/consumer and RPC detection for the manifest.
|
|
3
|
+
*
|
|
4
|
+
* The current analyzer does not surface message-bus events or gRPC/RPC service
|
|
5
|
+
* definitions as structured data, so per spec-05's conservative rule these are
|
|
6
|
+
* emitted as empty arrays rather than guessed. The schema and federation index
|
|
7
|
+
* already accommodate them, so a later analyzer change can populate them
|
|
8
|
+
* without a manifest-schema bump.
|
|
9
|
+
*
|
|
10
|
+
* TODO(spec-05-followup): surface events_emitted / events_consumed from analyzer.
|
|
11
|
+
* TODO(spec-05-followup): surface rpc_endpoints (gRPC service/method) from analyzer.
|
|
12
|
+
*/
|
|
13
|
+
export function deriveEventsEmitted() {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
export function deriveEventsConsumed() {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
export function deriveRpcEndpoints() {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/cli/manifest/detect/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoBH,MAAM,UAAU,mBAAmB;IACjC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP routes for the manifest, taken verbatim from the route inventory the
|
|
3
|
+
* analyzer already produces (Express, Fastify, NestJS, FastAPI, … detectors
|
|
4
|
+
* live in the analyzer). We do not add framework parsers here (spec-05 scope).
|
|
5
|
+
*
|
|
6
|
+
* TODO(spec-05-followup): more framework detectors in the analyzer.
|
|
7
|
+
*/
|
|
8
|
+
export interface RouteInventoryEntry {
|
|
9
|
+
method: string;
|
|
10
|
+
path: string;
|
|
11
|
+
framework?: string;
|
|
12
|
+
file?: string;
|
|
13
|
+
handler?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ManifestRoute {
|
|
16
|
+
method: string;
|
|
17
|
+
path: string;
|
|
18
|
+
/** "<file>:<handler>" when both are known, else whichever is known, else null. */
|
|
19
|
+
handler: string | null;
|
|
20
|
+
}
|
|
21
|
+
export declare function deriveHttpRoutes(routes: RouteInventoryEntry[]): ManifestRoute[];
|
|
22
|
+
//# sourceMappingURL=http-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-routes.d.ts","sourceRoot":"","sources":["../../../../src/cli/manifest/detect/http-routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,aAAa,EAAE,CAY/E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP routes for the manifest, taken verbatim from the route inventory the
|
|
3
|
+
* analyzer already produces (Express, Fastify, NestJS, FastAPI, … detectors
|
|
4
|
+
* live in the analyzer). We do not add framework parsers here (spec-05 scope).
|
|
5
|
+
*
|
|
6
|
+
* TODO(spec-05-followup): more framework detectors in the analyzer.
|
|
7
|
+
*/
|
|
8
|
+
export function deriveHttpRoutes(routes) {
|
|
9
|
+
return routes
|
|
10
|
+
.map((r) => {
|
|
11
|
+
const handler = r.file && r.handler ? `${r.file}:${r.handler}` : r.handler ?? r.file ?? null;
|
|
12
|
+
return { method: r.method.toUpperCase(), path: r.path, handler };
|
|
13
|
+
})
|
|
14
|
+
.sort((a, b) => a.path.localeCompare(b.path) ||
|
|
15
|
+
a.method.localeCompare(b.method) ||
|
|
16
|
+
(a.handler ?? '').localeCompare(b.handler ?? ''));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=http-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-routes.js","sourceRoot":"","sources":["../../../../src/cli/manifest/detect/http-routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,CAAC,EAAiB,EAAE;QACxB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;QAC7F,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IACnE,CAAC,CAAC;SACD,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CACnD,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive the public API surface from data the analyzer already produced.
|
|
3
|
+
*
|
|
4
|
+
* Default (conservative, per spec-05): a symbol is "public" if it is exported
|
|
5
|
+
* from the *package entry point(s)* (TS/JS), following re-exports to their
|
|
6
|
+
* definition for an accurate kind/line. Public methods of an exported class are
|
|
7
|
+
* included too (e.g. `BillingService.refund`). For files in languages the
|
|
8
|
+
* export extractor does not cover, we fall back to "top-level non-underscore
|
|
9
|
+
* function" (matching the Python `__all__`/non-underscore convention).
|
|
10
|
+
*
|
|
11
|
+
* `--include-private` drops the public filter entirely and emits every
|
|
12
|
+
* file-level export plus every function/method node (a much larger list).
|
|
13
|
+
*
|
|
14
|
+
* Sources:
|
|
15
|
+
* - dependency-graph.json `exports[]` — name/kind/line/isReExport per file.
|
|
16
|
+
* - the call graph — public methods of exported classes, with lines.
|
|
17
|
+
*
|
|
18
|
+
* We do NOT add new language parsers here (spec-05 scope).
|
|
19
|
+
* TODO(spec-05-followup): surface exported types/interfaces with line numbers.
|
|
20
|
+
*/
|
|
21
|
+
import type { FunctionNode, ClassNode } from '../../../core/analyzer/call-graph.js';
|
|
22
|
+
export interface ExportEntry {
|
|
23
|
+
name: string;
|
|
24
|
+
kind: string;
|
|
25
|
+
line: number;
|
|
26
|
+
isType?: boolean;
|
|
27
|
+
isDefault?: boolean;
|
|
28
|
+
isReExport?: boolean;
|
|
29
|
+
reExportSource?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface PublicSymbol {
|
|
32
|
+
name: string;
|
|
33
|
+
kind: string;
|
|
34
|
+
file: string;
|
|
35
|
+
line: number;
|
|
36
|
+
}
|
|
37
|
+
export interface DerivePublicSymbolsArgs {
|
|
38
|
+
nodes: FunctionNode[];
|
|
39
|
+
classes: ClassNode[];
|
|
40
|
+
exportsByFile: Map<string, ExportEntry[]>;
|
|
41
|
+
/** Repo-relative entry-point source files (from package.json), TS/JS. */
|
|
42
|
+
entryFiles: string[];
|
|
43
|
+
includePrivate: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare function derivePublicSymbols(args: DerivePublicSymbolsArgs): PublicSymbol[];
|
|
46
|
+
//# sourceMappingURL=public-symbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-symbols.d.ts","sourceRoot":"","sources":["../../../../src/cli/manifest/detect/public-symbols.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAsDD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1C,yEAAyE;IACzE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,YAAY,EAAE,CAuEjF"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive the public API surface from data the analyzer already produced.
|
|
3
|
+
*
|
|
4
|
+
* Default (conservative, per spec-05): a symbol is "public" if it is exported
|
|
5
|
+
* from the *package entry point(s)* (TS/JS), following re-exports to their
|
|
6
|
+
* definition for an accurate kind/line. Public methods of an exported class are
|
|
7
|
+
* included too (e.g. `BillingService.refund`). For files in languages the
|
|
8
|
+
* export extractor does not cover, we fall back to "top-level non-underscore
|
|
9
|
+
* function" (matching the Python `__all__`/non-underscore convention).
|
|
10
|
+
*
|
|
11
|
+
* `--include-private` drops the public filter entirely and emits every
|
|
12
|
+
* file-level export plus every function/method node (a much larger list).
|
|
13
|
+
*
|
|
14
|
+
* Sources:
|
|
15
|
+
* - dependency-graph.json `exports[]` — name/kind/line/isReExport per file.
|
|
16
|
+
* - the call graph — public methods of exported classes, with lines.
|
|
17
|
+
*
|
|
18
|
+
* We do NOT add new language parsers here (spec-05 scope).
|
|
19
|
+
* TODO(spec-05-followup): surface exported types/interfaces with line numbers.
|
|
20
|
+
*/
|
|
21
|
+
/** A name is "public-looking" if it is not underscore/hash-prefixed. */
|
|
22
|
+
function isPublicName(name) {
|
|
23
|
+
return !/^[_#]/.test(name);
|
|
24
|
+
}
|
|
25
|
+
/** Resolve `./foo.js` (relative to `fromFile`) to a repo-relative `.ts` path. */
|
|
26
|
+
function resolveReExportTarget(fromFile, source) {
|
|
27
|
+
const dir = fromFile.includes('/') ? fromFile.slice(0, fromFile.lastIndexOf('/')) : '';
|
|
28
|
+
const parts = (dir ? `${dir}/${source}` : source).split('/');
|
|
29
|
+
const stack = [];
|
|
30
|
+
for (const p of parts) {
|
|
31
|
+
if (p === '.' || p === '')
|
|
32
|
+
continue;
|
|
33
|
+
if (p === '..')
|
|
34
|
+
stack.pop();
|
|
35
|
+
else
|
|
36
|
+
stack.push(p);
|
|
37
|
+
}
|
|
38
|
+
return stack.join('/').replace(/\.js$/, '.ts');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve an entry-point export to its defining {kind, file, line}, following
|
|
42
|
+
* re-export hops. Prefers the call graph for accurate lines; the export
|
|
43
|
+
* extractor does not always record a re-export target's own exports.
|
|
44
|
+
*/
|
|
45
|
+
function resolveExport(entry, file, exportsByFile, lookup, depth = 0) {
|
|
46
|
+
if (entry.isReExport && entry.reExportSource && depth <= 4) {
|
|
47
|
+
const target = resolveReExportTarget(file, entry.reExportSource);
|
|
48
|
+
const match = exportsByFile.get(target)?.find(e => e.name === entry.name);
|
|
49
|
+
if (match)
|
|
50
|
+
return resolveExport(match, target, exportsByFile, lookup, depth + 1);
|
|
51
|
+
const fromGraph = lookup(target, entry.name);
|
|
52
|
+
if (fromGraph)
|
|
53
|
+
return fromGraph;
|
|
54
|
+
return { name: entry.name, kind: 'symbol', file, line: entry.line };
|
|
55
|
+
}
|
|
56
|
+
// Direct export — prefer the call graph's line/kind when it knows the symbol.
|
|
57
|
+
return (lookup(file, entry.name) ?? {
|
|
58
|
+
name: entry.name,
|
|
59
|
+
kind: entry.kind === 'unknown' ? 'symbol' : entry.kind,
|
|
60
|
+
file,
|
|
61
|
+
line: entry.line,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function derivePublicSymbols(args) {
|
|
65
|
+
const { nodes, classes, exportsByFile, entryFiles, includePrivate } = args;
|
|
66
|
+
const byKey = new Map();
|
|
67
|
+
// Call-graph indices for resolving re-exported definitions to file+line.
|
|
68
|
+
const freeFnIndex = new Map();
|
|
69
|
+
for (const n of nodes) {
|
|
70
|
+
if (!n.isExternal && !n.isTest && !n.className)
|
|
71
|
+
freeFnIndex.set(`${n.filePath}::${n.name}`, n);
|
|
72
|
+
}
|
|
73
|
+
const classIndex = new Map();
|
|
74
|
+
for (const c of classes)
|
|
75
|
+
classIndex.set(`${c.filePath}::${c.name}`, c);
|
|
76
|
+
const lookup = (file, name) => {
|
|
77
|
+
const fn = freeFnIndex.get(`${file}::${name}`);
|
|
78
|
+
if (fn)
|
|
79
|
+
return { name, kind: 'function', file, line: fn.startLine ?? 0 };
|
|
80
|
+
const cls = classIndex.get(`${file}::${name}`);
|
|
81
|
+
if (cls)
|
|
82
|
+
return { name, kind: 'class', file, line: 0 };
|
|
83
|
+
return null;
|
|
84
|
+
};
|
|
85
|
+
const add = (s) => {
|
|
86
|
+
const key = `${s.file}::${s.name}`;
|
|
87
|
+
if (!byKey.has(key))
|
|
88
|
+
byKey.set(key, s);
|
|
89
|
+
};
|
|
90
|
+
// Methods of a class, keyed for the "expand exported class" step.
|
|
91
|
+
const methodsByClass = new Map();
|
|
92
|
+
for (const n of nodes) {
|
|
93
|
+
if (n.isExternal || n.isTest || !n.className)
|
|
94
|
+
continue;
|
|
95
|
+
const key = `${n.filePath}::${n.className}`;
|
|
96
|
+
(methodsByClass.get(key) ?? methodsByClass.set(key, []).get(key)).push(n);
|
|
97
|
+
}
|
|
98
|
+
const addPublicMethods = (className, file) => {
|
|
99
|
+
for (const m of methodsByClass.get(`${file}::${className}`) ?? []) {
|
|
100
|
+
if (isPublicName(m.name) && !/\bprivate\b/.test(m.signature ?? '')) {
|
|
101
|
+
add({ name: `${className}.${m.name}`, kind: 'method', file, line: m.startLine ?? 0 });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
if (includePrivate) {
|
|
106
|
+
// Everything: all file-level exports + all function/method nodes.
|
|
107
|
+
for (const [file, entries] of exportsByFile) {
|
|
108
|
+
for (const e of entries)
|
|
109
|
+
add({ name: e.name, kind: e.kind, file, line: e.line });
|
|
110
|
+
}
|
|
111
|
+
for (const n of nodes) {
|
|
112
|
+
if (n.isExternal || n.isTest)
|
|
113
|
+
continue;
|
|
114
|
+
const name = n.className ? `${n.className}.${n.name}` : n.name;
|
|
115
|
+
add({ name, kind: n.className ? 'method' : 'function', file: n.filePath, line: n.startLine ?? 0 });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Default: only the package entry point's exports (resolved), TS/JS.
|
|
120
|
+
const filesWithExports = new Set(exportsByFile.keys());
|
|
121
|
+
for (const entryFile of entryFiles) {
|
|
122
|
+
for (const e of exportsByFile.get(entryFile) ?? []) {
|
|
123
|
+
if (e.isType)
|
|
124
|
+
continue;
|
|
125
|
+
const resolved = resolveExport(e, entryFile, exportsByFile, lookup);
|
|
126
|
+
add(resolved);
|
|
127
|
+
if (resolved.kind === 'class')
|
|
128
|
+
addPublicMethods(resolved.name, resolved.file);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Fallback for languages/files without export info: top-level non-underscore
|
|
132
|
+
// free functions (covers Python etc. conservatively).
|
|
133
|
+
for (const n of nodes) {
|
|
134
|
+
if (n.isExternal || n.isTest || n.className)
|
|
135
|
+
continue;
|
|
136
|
+
if (filesWithExports.has(n.filePath))
|
|
137
|
+
continue;
|
|
138
|
+
if (isPublicName(n.name))
|
|
139
|
+
add({ name: n.name, kind: 'function', file: n.filePath, line: n.startLine ?? 0 });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return [...byKey.values()].sort((a, b) => a.file.localeCompare(b.file) || a.line - b.line || a.name.localeCompare(b.name));
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=public-symbols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-symbols.js","sourceRoot":"","sources":["../../../../src/cli/manifest/detect/public-symbols.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `openlore manifest emit` — write `.well-known/openlore.json`.
|
|
3
|
+
*
|
|
4
|
+
* A pure file-emission feature: it reads the analysis artifacts OpenLore has
|
|
5
|
+
* already produced plus local git state, and writes a small, public,
|
|
6
|
+
* deterministic self-description. No network, no graph-schema changes.
|
|
7
|
+
*
|
|
8
|
+
* Determinism: `generated_at` is the HEAD commit date (not wall-clock), and all
|
|
9
|
+
* arrays are sorted, so re-emitting on the same graph + commit is byte-stable.
|
|
10
|
+
*/
|
|
11
|
+
import type { SerializedCallGraph } from '../../core/analyzer/call-graph.js';
|
|
12
|
+
import { type ExportEntry, type PublicSymbol } from './detect/public-symbols.js';
|
|
13
|
+
import { type ManifestRoute, type RouteInventoryEntry } from './detect/http-routes.js';
|
|
14
|
+
import { type ManifestEvent, type ManifestConsumedEvent, type ManifestRpcEndpoint } from './detect/events.js';
|
|
15
|
+
export declare const MANIFEST_VERSION = 1;
|
|
16
|
+
export interface ManifestEmitOptions {
|
|
17
|
+
out?: string;
|
|
18
|
+
projectRoot?: string;
|
|
19
|
+
includePrivate?: boolean;
|
|
20
|
+
maxSymbols?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface Manifest {
|
|
23
|
+
$schema: string;
|
|
24
|
+
openlore_manifest_version: number;
|
|
25
|
+
generated_at: string;
|
|
26
|
+
generator: {
|
|
27
|
+
name: string;
|
|
28
|
+
version: string;
|
|
29
|
+
};
|
|
30
|
+
repo: {
|
|
31
|
+
name: string;
|
|
32
|
+
git_remote: string | null;
|
|
33
|
+
git_commit: string | null;
|
|
34
|
+
default_branch: string | null;
|
|
35
|
+
};
|
|
36
|
+
languages: Array<{
|
|
37
|
+
name: string;
|
|
38
|
+
files: number;
|
|
39
|
+
functions: number;
|
|
40
|
+
}>;
|
|
41
|
+
stats: {
|
|
42
|
+
functions: number;
|
|
43
|
+
files: number;
|
|
44
|
+
modules: number;
|
|
45
|
+
avg_mccabe: number;
|
|
46
|
+
clusters: number;
|
|
47
|
+
};
|
|
48
|
+
exports: {
|
|
49
|
+
truncated?: boolean;
|
|
50
|
+
public_symbols: PublicSymbol[];
|
|
51
|
+
http_routes: ManifestRoute[];
|
|
52
|
+
rpc_endpoints: ManifestRpcEndpoint[];
|
|
53
|
+
events_emitted: ManifestEvent[];
|
|
54
|
+
events_consumed: ManifestConsumedEvent[];
|
|
55
|
+
};
|
|
56
|
+
imports: {
|
|
57
|
+
external_packages: Array<{
|
|
58
|
+
name: string;
|
|
59
|
+
version_range: string | null;
|
|
60
|
+
}>;
|
|
61
|
+
};
|
|
62
|
+
specs: {
|
|
63
|
+
count: number;
|
|
64
|
+
drift_state: 'clean' | 'drifted' | 'unverified';
|
|
65
|
+
};
|
|
66
|
+
links: {
|
|
67
|
+
repo: string | null;
|
|
68
|
+
docs: string | null;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
interface PackageJson {
|
|
72
|
+
name?: string;
|
|
73
|
+
version?: string;
|
|
74
|
+
main?: string;
|
|
75
|
+
module?: string;
|
|
76
|
+
dependencies?: Record<string, string>;
|
|
77
|
+
peerDependencies?: Record<string, string>;
|
|
78
|
+
exports?: unknown;
|
|
79
|
+
}
|
|
80
|
+
declare function readPackageJson(projectRoot: string): PackageJson | null;
|
|
81
|
+
export interface ManifestInputs {
|
|
82
|
+
projectRoot: string;
|
|
83
|
+
graph: SerializedCallGraph;
|
|
84
|
+
exportsByFile: Map<string, ExportEntry[]>;
|
|
85
|
+
routes: RouteInventoryEntry[];
|
|
86
|
+
pkg: ReturnType<typeof readPackageJson>;
|
|
87
|
+
specCount: number;
|
|
88
|
+
git: {
|
|
89
|
+
remote: string | null;
|
|
90
|
+
commit: string | null;
|
|
91
|
+
defaultBranch: string | null;
|
|
92
|
+
committedAt: string | null;
|
|
93
|
+
};
|
|
94
|
+
toolVersion: string;
|
|
95
|
+
hasDocs: boolean;
|
|
96
|
+
}
|
|
97
|
+
/** Build the manifest object (pure — all I/O is done by the caller). */
|
|
98
|
+
export declare function buildManifest(inputs: ManifestInputs, opts: ManifestEmitOptions): Manifest;
|
|
99
|
+
/** Serialize a manifest to the exact bytes written to disk. */
|
|
100
|
+
export declare function serializeManifest(manifest: Manifest): string;
|
|
101
|
+
export declare function runManifestEmit(opts: ManifestEmitOptions): Promise<number>;
|
|
102
|
+
export {};
|
|
103
|
+
//# sourceMappingURL=emit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../src/cli/manifest/emit.ts"],"names":[],"mappings":"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"}
|