@zzzen/pyright-internal 1.2.0-dev.20260906 → 1.2.0-dev.20260920

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.
Files changed (135) hide show
  1. package/dist/analyzer/checker.d.ts +2 -1
  2. package/dist/analyzer/checker.js +80 -5
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/constraintSolver.js +10 -2
  5. package/dist/analyzer/constraintSolver.js.map +1 -1
  6. package/dist/analyzer/constructors.js +7 -18
  7. package/dist/analyzer/constructors.js.map +1 -1
  8. package/dist/analyzer/decorators.js +45 -2
  9. package/dist/analyzer/decorators.js.map +1 -1
  10. package/dist/analyzer/program.js +1 -0
  11. package/dist/analyzer/program.js.map +1 -1
  12. package/dist/analyzer/sourceFileInfo.d.ts +0 -1
  13. package/dist/analyzer/sourceFileInfo.js +0 -3
  14. package/dist/analyzer/sourceFileInfo.js.map +1 -1
  15. package/dist/analyzer/typeCacheUtils.d.ts +1 -0
  16. package/dist/analyzer/typeCacheUtils.js +28 -1
  17. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  18. package/dist/analyzer/typeEvaluator.d.ts +1 -1
  19. package/dist/analyzer/typeEvaluator.js +63 -389
  20. package/dist/analyzer/typeEvaluator.js.map +1 -1
  21. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
  22. package/dist/analyzer/typedDicts.js +3 -7
  23. package/dist/analyzer/typedDicts.js.map +1 -1
  24. package/dist/analyzer/types.js +7 -0
  25. package/dist/analyzer/types.js.map +1 -1
  26. package/dist/common/configOptions.d.ts +1 -0
  27. package/dist/common/configOptions.js +16 -0
  28. package/dist/common/configOptions.js.map +1 -1
  29. package/dist/common/envVarUtils.js +3 -3
  30. package/dist/common/envVarUtils.js.map +1 -1
  31. package/dist/common/extensibility.d.ts +0 -1
  32. package/dist/common/extensibility.js.map +1 -1
  33. package/dist/common/fileSystem.d.ts +1 -0
  34. package/dist/common/fileSystem.js.map +1 -1
  35. package/dist/common/realFileSystem.d.ts +1 -0
  36. package/dist/common/realFileSystem.js +12 -0
  37. package/dist/common/realFileSystem.js.map +1 -1
  38. package/dist/fileSystemMapping.d.ts +1 -1
  39. package/dist/fileSystemMapping.js +3 -0
  40. package/dist/fileSystemMapping.js.map +1 -1
  41. package/dist/languageService/completionProvider.d.ts +2 -1
  42. package/dist/languageService/completionProvider.js +4 -1
  43. package/dist/languageService/completionProvider.js.map +1 -1
  44. package/dist/localization/package.nls.cs.json +1 -0
  45. package/dist/localization/package.nls.de.json +1 -0
  46. package/dist/localization/package.nls.es.json +1 -0
  47. package/dist/localization/package.nls.fr.json +1 -0
  48. package/dist/localization/package.nls.it.json +1 -0
  49. package/dist/localization/package.nls.ja.json +1 -0
  50. package/dist/localization/package.nls.ko.json +1 -0
  51. package/dist/localization/package.nls.pl.json +1 -0
  52. package/dist/localization/package.nls.pt-br.json +1 -0
  53. package/dist/localization/package.nls.qps-ploc.json +1 -0
  54. package/dist/localization/package.nls.ru.json +1 -0
  55. package/dist/localization/package.nls.tr.json +1 -0
  56. package/dist/localization/package.nls.zh-cn.json +1 -0
  57. package/dist/localization/package.nls.zh-tw.json +1 -0
  58. package/dist/readonlyAugmentedFileSystem.d.ts +1 -0
  59. package/dist/readonlyAugmentedFileSystem.js +3 -0
  60. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  61. package/dist/tests/checker.test.js +8 -0
  62. package/dist/tests/checker.test.js.map +1 -1
  63. package/dist/tests/envVarUtils.test.js +16 -0
  64. package/dist/tests/envVarUtils.test.js.map +1 -1
  65. package/dist/tests/evaluationTrace.integration.test.d.ts +1 -0
  66. package/dist/tests/evaluationTrace.integration.test.js +266 -0
  67. package/dist/tests/evaluationTrace.integration.test.js.map +1 -0
  68. package/dist/tests/evaluationTrace.test.d.ts +1 -0
  69. package/dist/tests/evaluationTrace.test.js +422 -0
  70. package/dist/tests/evaluationTrace.test.js.map +1 -0
  71. package/dist/tests/evaluationTrace.viewer.test.d.ts +1 -0
  72. package/dist/tests/evaluationTrace.viewer.test.js +529 -0
  73. package/dist/tests/evaluationTrace.viewer.test.js.map +1 -0
  74. package/dist/tests/fileSystemMapping.test.js +3 -0
  75. package/dist/tests/fileSystemMapping.test.js.map +1 -1
  76. package/dist/tests/harness/vfs/filesystem.d.ts +1 -0
  77. package/dist/tests/harness/vfs/filesystem.js +3 -0
  78. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  79. package/dist/tests/importResolver.test.js +5 -0
  80. package/dist/tests/importResolver.test.js.map +1 -1
  81. package/dist/tests/mypyPrimerAnalysis.test.d.ts +1 -0
  82. package/dist/tests/mypyPrimerAnalysis.test.js +1779 -0
  83. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -0
  84. package/dist/tests/mypyPrimerMcp.test.d.ts +1 -0
  85. package/dist/tests/mypyPrimerMcp.test.js +186 -0
  86. package/dist/tests/mypyPrimerMcp.test.js.map +1 -0
  87. package/dist/tests/typeCacheUtils.test.js +15 -0
  88. package/dist/tests/typeCacheUtils.test.js.map +1 -1
  89. package/dist/tests/typeEvaluator1.test.js +2 -2
  90. package/dist/tests/typeEvaluator6.test.js +155 -3
  91. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  92. package/dist/tests/typeEvaluator7.test.js +4 -0
  93. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  94. package/dist/tests/typeUtils.test.js +15 -0
  95. package/dist/tests/typeUtils.test.js.map +1 -1
  96. package/dist/trace/capture.d.ts +31 -0
  97. package/dist/trace/capture.js +272 -0
  98. package/dist/trace/capture.js.map +1 -0
  99. package/dist/trace/cli.d.ts +1 -0
  100. package/dist/trace/cli.js +196 -0
  101. package/dist/trace/cli.js.map +1 -0
  102. package/dist/trace/nativeAdapter.d.ts +16 -0
  103. package/dist/trace/nativeAdapter.js +422 -0
  104. package/dist/trace/nativeAdapter.js.map +1 -0
  105. package/dist/trace/nativeBridge.d.ts +46 -0
  106. package/dist/trace/nativeBridge.js +416 -0
  107. package/dist/trace/nativeBridge.js.map +1 -0
  108. package/dist/trace/reader.d.ts +83 -0
  109. package/dist/trace/reader.js +296 -0
  110. package/dist/trace/reader.js.map +1 -0
  111. package/dist/trace/recorder.d.ts +59 -0
  112. package/dist/trace/recorder.js +303 -0
  113. package/dist/trace/recorder.js.map +1 -0
  114. package/dist/trace/runtimeLoader.d.ts +23 -0
  115. package/dist/trace/runtimeLoader.js +172 -0
  116. package/dist/trace/runtimeLoader.js.map +1 -0
  117. package/dist/trace/viewerAssets.d.ts +2 -0
  118. package/dist/trace/viewerAssets.js +76 -0
  119. package/dist/trace/viewerAssets.js.map +1 -0
  120. package/dist/trace/viewerClient.d.ts +1 -0
  121. package/dist/trace/viewerClient.js +485 -0
  122. package/dist/trace/viewerClient.js.map +1 -0
  123. package/dist/trace/viewerModel.d.ts +308 -0
  124. package/dist/trace/viewerModel.js +524 -0
  125. package/dist/trace/viewerModel.js.map +1 -0
  126. package/dist/trace/viewerServer.d.ts +7 -0
  127. package/dist/trace/viewerServer.js +185 -0
  128. package/dist/trace/viewerServer.js.map +1 -0
  129. package/dist/typeServer/typeServerFileSystem.d.ts +1 -0
  130. package/dist/typeServer/typeServerFileSystem.js +3 -0
  131. package/dist/typeServer/typeServerFileSystem.js.map +1 -1
  132. package/dist/typeServer/virtualFileOverlayFileSystem.d.ts +1 -0
  133. package/dist/typeServer/virtualFileOverlayFileSystem.js +3 -0
  134. package/dist/typeServer/virtualFileOverlayFileSystem.js.map +1 -1
  135. package/package.json +4 -2
@@ -0,0 +1,31 @@
1
+ import type { CancellationToken } from 'vscode-languageserver';
2
+ import { Selection } from './nativeBridge';
3
+ import { Json, Limits } from './recorder';
4
+ export interface CaptureOptions {
5
+ target: string;
6
+ runtime?: string;
7
+ input: string;
8
+ output?: string;
9
+ mode?: 'trace' | 'audit' | 'clean';
10
+ experimental?: boolean;
11
+ selection?: Selection;
12
+ limits?: Partial<Limits>;
13
+ cancellationToken?: CancellationToken;
14
+ }
15
+ export declare function capture(options: CaptureOptions): Record<string, Json>;
16
+ export declare function compareCaptures(options: CaptureOptions): {
17
+ paths: string[];
18
+ diagnosticsMatch: boolean;
19
+ liveSinksMatch: boolean;
20
+ workAndCallbacksMatchInObservedScope: boolean;
21
+ witness: {
22
+ events: number;
23
+ sha256: string;
24
+ };
25
+ durationsMs: {
26
+ clean: Json;
27
+ audit: Json;
28
+ trace: Json;
29
+ };
30
+ meaning: string;
31
+ };
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ /*
3
+ * capture.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.capture = capture;
9
+ exports.compareCaptures = compareCaptures;
10
+ const fs_1 = require("fs");
11
+ const path_1 = require("path");
12
+ const util_1 = require("util");
13
+ const nativeBridge_1 = require("./nativeBridge");
14
+ const recorder_1 = require("./recorder");
15
+ const runtimeLoader_1 = require("./runtimeLoader");
16
+ // Only use this for known native result records, after analysis. The recorder
17
+ // never invokes toJSON, getters, printType or an inferred-return evaluator.
18
+ function plain(value, seen = new Set()) {
19
+ if (value === null || typeof value === 'boolean' || typeof value === 'string') {
20
+ return value;
21
+ }
22
+ if (typeof value === 'number') {
23
+ return Number.isFinite(value) ? value : String(value);
24
+ }
25
+ if (!(0, recorder_1.isObject)(value)) {
26
+ return { special: typeof value };
27
+ }
28
+ if (seen.has(value)) {
29
+ return { special: 'cycle' };
30
+ }
31
+ seen.add(value);
32
+ let result;
33
+ if (Array.isArray(value)) {
34
+ result = value.map((child) => plain(child, seen));
35
+ }
36
+ else {
37
+ result = Object.fromEntries(Object.entries(Object.getOwnPropertyDescriptors(value)).map(([key, descriptor]) => [
38
+ key,
39
+ 'value' in descriptor ? plain(descriptor.value, seen) : { special: 'accessor-not-invoked' },
40
+ ]));
41
+ }
42
+ seen.delete(value);
43
+ return result;
44
+ }
45
+ function capture(options) {
46
+ const target = (0, path_1.resolve)(options.target);
47
+ const runtime = options.runtime
48
+ ? (0, path_1.resolve)(options.runtime)
49
+ : (0, path_1.resolve)(target, 'packages', 'pyright-internal', 'out', 'packages', 'pyright-internal', 'src');
50
+ const input = (0, path_1.resolve)(options.input);
51
+ const content = (0, fs_1.readFileSync)(input, 'utf8');
52
+ const selection = { file: input, ...options.selection };
53
+ if (selection.start !== undefined && selection.end !== undefined && selection.start >= selection.end) {
54
+ throw new Error('Selection start must be before end');
55
+ }
56
+ const mode = options.mode ?? 'trace';
57
+ if (mode === 'trace' && !options.output) {
58
+ throw new Error('Trace mode requires output');
59
+ }
60
+ const loader = new runtimeLoader_1.RuntimeLoader(runtime, !!options.experimental);
61
+ const sourceProvenance = [
62
+ ...loader.sites.map((site) => (0, path_1.resolve)(target, 'packages', 'pyright-internal', 'src', ...site.file.replace(/\.js$/, '.ts').split('/'))),
63
+ (0, path_1.resolve)(target, 'pnpm-lock.yaml'),
64
+ ...['recorder', 'reader', 'nativeAdapter', 'nativeBridge', 'runtimeLoader', 'capture', 'cli'].map((name) => (0, path_1.resolve)(__dirname, `${name}.js`)),
65
+ ]
66
+ .filter((path, index, all) => all.indexOf(path) === index)
67
+ .map((path) => ({
68
+ path,
69
+ sha256: (0, fs_1.existsSync)(path) ? (0, runtimeLoader_1.sha256)((0, fs_1.readFileSync)(path)) : null,
70
+ }));
71
+ let output;
72
+ let recorder;
73
+ const finish = (status, error = null) => {
74
+ const current = recorder;
75
+ recorder = undefined;
76
+ current?.finish(status, error);
77
+ };
78
+ if (options.output) {
79
+ (0, fs_1.mkdirSync)((0, path_1.dirname)((0, path_1.resolve)(options.output)), { recursive: true });
80
+ output = (0, fs_1.openSync)((0, path_1.resolve)(options.output), 'wx');
81
+ }
82
+ try {
83
+ if (mode === 'trace') {
84
+ recorder = new recorder_1.Recorder((record) => (0, fs_1.writeSync)(output, `${JSON.stringify(record)}\n`), {
85
+ ...loader.provenance(),
86
+ node: process.version,
87
+ target,
88
+ input: { path: input, sha256: (0, runtimeLoader_1.sha256)(content) },
89
+ configuration: {
90
+ pythonVersion: '3.12',
91
+ experimentalOverloadResults: !!options.experimental,
92
+ experimentalOptions: options.experimental ? { automatic: true, checkerHandoff: false } : null,
93
+ },
94
+ selection: { ...selection },
95
+ sourceProvenance,
96
+ sourceMeaning: 'source and runtime hashed separately; source maps do not establish build freshness',
97
+ tool: 'pyright-evaluation-trace',
98
+ }, options.limits);
99
+ }
100
+ const bridge = mode === 'clean' ? undefined : new nativeBridge_1.NativeBridge(loader.sites, recorder, selection);
101
+ loader.configure(bridge);
102
+ const result = analyze(loader, options, content, recorder);
103
+ loader.verifyUnchanged();
104
+ for (const source of sourceProvenance) {
105
+ if (source.sha256 !== null && (0, runtimeLoader_1.sha256)((0, fs_1.readFileSync)(source.path)) !== source.sha256) {
106
+ throw new Error(`Source changed during capture: ${source.path}`);
107
+ }
108
+ }
109
+ if ((0, runtimeLoader_1.sha256)((0, fs_1.readFileSync)(input)) !== (0, runtimeLoader_1.sha256)(content)) {
110
+ throw new Error('Input changed during capture');
111
+ }
112
+ const summary = {
113
+ ...result,
114
+ mode,
115
+ audit: bridge?.auditResult() ?? null,
116
+ activeFrames: bridge?.activeFrames ?? 0,
117
+ provenance: loader.provenance(),
118
+ sourceProvenance,
119
+ };
120
+ if (bridge?.failure) {
121
+ finish('recorder-failed', bridge.failure);
122
+ throw new Error(`Recorder failed; native analysis completed: ${bridge.failure}`);
123
+ }
124
+ recorder?.emit('summary', summary);
125
+ finish('completed');
126
+ if (mode !== 'trace' && output !== undefined) {
127
+ (0, fs_1.writeSync)(output, `${JSON.stringify(summary)}\n`);
128
+ }
129
+ return summary;
130
+ }
131
+ catch (error) {
132
+ try {
133
+ const message = (0, recorder_1.own)(error, 'message');
134
+ finish('threw', typeof message === 'string' ? message : 'Native operation threw');
135
+ }
136
+ catch (footerError) {
137
+ // Preserve the original native exception, but do not silently hide an
138
+ // I/O failure that makes the artifact unusable.
139
+ console.error('Trace footer could not be written:', footerError);
140
+ }
141
+ throw error;
142
+ }
143
+ finally {
144
+ loader.dispose();
145
+ if (output !== undefined) {
146
+ (0, fs_1.closeSync)(output);
147
+ }
148
+ }
149
+ }
150
+ function compareCaptures(options) {
151
+ if (!options.output) {
152
+ throw new Error('Comparison requires a new output path');
153
+ }
154
+ const paths = [options.output, `${options.output}.clean.json`, `${options.output}.audit.json`];
155
+ for (const path of paths) {
156
+ if ((0, fs_1.existsSync)(path)) {
157
+ throw new Error(`Comparison output already exists: ${path}`);
158
+ }
159
+ }
160
+ const clean = capture({ ...options, mode: 'clean', output: paths[1] });
161
+ const audit = capture({ ...options, mode: 'audit', output: paths[2] });
162
+ const traced = capture({ ...options, mode: 'trace', output: paths[0] });
163
+ for (const key of ['diagnostics', 'liveDiagnostics', 'work', 'automatic', 'analysisFiles']) {
164
+ if (!(0, util_1.isDeepStrictEqual)(clean[key], audit[key]) || !(0, util_1.isDeepStrictEqual)(clean[key], traced[key])) {
165
+ throw new Error(`Native ${key} differed between clean, audit and traced analysis; inspect ${paths.join(', ')}`);
166
+ }
167
+ }
168
+ if (!(0, util_1.isDeepStrictEqual)(audit.audit, traced.audit)) {
169
+ throw new Error('Native event/type/branch/callback witness differed between audit-only and full tracing');
170
+ }
171
+ const witness = traced.audit;
172
+ if (witness.events === 0) {
173
+ throw new Error('Selection matched no instrumented native work; analysis completed but comparison is inconclusive');
174
+ }
175
+ return {
176
+ paths,
177
+ diagnosticsMatch: true,
178
+ liveSinksMatch: true,
179
+ workAndCallbacksMatchInObservedScope: true,
180
+ witness,
181
+ durationsMs: { clean: clean.durationMs, audit: audit.durationMs, trace: traced.durationMs },
182
+ meaning: 'Scoped fidelity evidence, not a proof of zero overhead or universal equivalence',
183
+ };
184
+ }
185
+ function analyze(loader, options, content, recorder) {
186
+ const { Program } = loader.load('analyzer/program.js');
187
+ const { ImportResolver } = loader.load('analyzer/importResolver.js');
188
+ const { RealTempFile, createFromRealFileSystem } = loader.load('common/realFileSystem.js');
189
+ const { createServiceProvider } = loader.load('common/serviceProviderExtensions.js');
190
+ const { NullConsole } = loader.load('common/console.js');
191
+ const { FullAccessHost } = loader.load('common/fullAccessHost.js');
192
+ const { ConfigOptions } = loader.load('common/configOptions.js');
193
+ const { UriEx } = loader.load('common/uri/uriUtils.js');
194
+ const { pythonVersion3_12 } = loader.load('common/pythonVersion.js');
195
+ const { createAnalyzerNodeInfoAccessor } = loader.load('analyzer/analyzerNodeInfo.js');
196
+ const temp = new RealTempFile();
197
+ const sp = createServiceProvider(createFromRealFileSystem(temp), new NullConsole(), temp);
198
+ let program;
199
+ try {
200
+ const uri = UriEx.file((0, path_1.resolve)(options.input));
201
+ const config = new ConfigOptions(uri.getDirectory());
202
+ config.defaultPythonVersion = pythonVersion3_12;
203
+ config.typeshedPath = UriEx.file((0, path_1.resolve)(options.target, 'packages', 'pyright-internal', 'typeshed-fallback'));
204
+ if (options.experimental) {
205
+ Reflect.set(config, 'experimentalOverloadResults', true);
206
+ }
207
+ // The optional eighth parameter exists only in the experimental adapter's
208
+ // target. Keep the ordinary runner independent of that analyzer extension.
209
+ program = Reflect.construct(Program, [
210
+ new ImportResolver(sp, config, new FullAccessHost(sp)),
211
+ config,
212
+ sp,
213
+ undefined,
214
+ undefined,
215
+ undefined,
216
+ undefined,
217
+ options.experimental ? { automatic: true, checkerHandoff: false } : undefined,
218
+ ]);
219
+ recorder?.emit('program', { identity: recorder.atom(program), input: uri.toString(), phase: 'analysis' });
220
+ program.setTrackedFiles([uri]);
221
+ program.setFileOpened(uri, 1, content);
222
+ const started = performance.now();
223
+ while (program.analyze(undefined, options.cancellationToken)) {
224
+ // No tracing budget or iteration cutoff controls native analysis.
225
+ }
226
+ const durationMs = performance.now() - started;
227
+ const root = program.getParseResults(uri)?.parserOutput.parseTree;
228
+ if (!root) {
229
+ throw new Error('Analysis did not produce a parse tree');
230
+ }
231
+ const diagnostics = program.getSourceFile(uri)?.getDiagnostics(config);
232
+ const nodeInfo = createAnalyzerNodeInfoAccessor(program.analyzerNodeInfoReader);
233
+ const sink = nodeInfo.getFileInfo(root).diagnosticSink;
234
+ const controller = Reflect.get(program, 'experimentalOverloadResultController');
235
+ const invoke = (method, args) => {
236
+ if (!(0, recorder_1.isObject)(controller)) {
237
+ throw new Error('Experimental adapter requires a native overload controller');
238
+ }
239
+ const fn = Reflect.get(controller, method);
240
+ if (typeof fn !== 'function') {
241
+ throw new Error(`Experimental adapter drift: missing controller.${method}`);
242
+ }
243
+ return Reflect.apply(fn, controller, args);
244
+ };
245
+ return {
246
+ diagnostics: plain(diagnostics),
247
+ liveDiagnostics: plain((0, recorder_1.own)(sink, '_diagnosticList')),
248
+ work: options.experimental ? plain(invoke('getStats', [root])) : null,
249
+ automatic: options.experimental ? plain(invoke('getAutomaticStats', [])) : null,
250
+ analysisFiles: program.getSourceFileInfoList().map((info) => {
251
+ const file = info.sourceFile;
252
+ const data = file.getParseResults() ? file.getFileContent() : undefined;
253
+ return {
254
+ uri: file.getUri().toString(),
255
+ sha256: data === undefined ? null : (0, runtimeLoader_1.sha256)(data),
256
+ status: data === undefined ? 'not-parsed-content-unobserved' : 'parsed-content',
257
+ };
258
+ }),
259
+ durationMs,
260
+ timingMeaning: options.mode === 'clean' ? 'clean analysis' : 'observer-instrumented; not clean performance',
261
+ };
262
+ }
263
+ finally {
264
+ try {
265
+ program?.dispose();
266
+ }
267
+ finally {
268
+ sp.dispose();
269
+ }
270
+ }
271
+ }
272
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../../../src/trace/capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function main(argv?: string[]): Promise<void>;
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ /*
3
+ * cli.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.main = main;
9
+ const fs_1 = require("fs");
10
+ const capture_1 = require("./capture");
11
+ const reader_1 = require("./reader");
12
+ const viewerServer_1 = require("./viewerServer");
13
+ const help = `Pyright evaluation traces (developer-only, local unbundled builds)
14
+ capture --target <repo> --input <python> --output <new.ndjson>
15
+ [--runtime <unbundled src>] [--experimental]
16
+ [--mode trace|audit|clean] [--file <python> --start <offset> --end <offset>]
17
+ [--operation <native operation id>] [--events <n>] [--bytes <n>] [--depth <n>]
18
+ compare <same capture options> (writes clean/audit JSON alongside the trace)
19
+ query <artifact.ndjson> timeline [--kind <kind>] [--span <id>]
20
+ query <artifact.ndjson> history|latest --entity <id> [--at <sequence>]
21
+ query <artifact.ndjson> neighbors --entity <id> [--relation <relation>]
22
+ query <artifact.ndjson> pairs
23
+ query <artifact.ndjson> diff --baseline <span> --replay <span>
24
+ query <artifact.ndjson> summary|coverage
25
+ view <artifact.ndjson> [--port <0..65535>] (loopback-only; Ctrl+C stops)
26
+ All offsets are zero-based UTF-16 offsets. Output paths must not already exist.
27
+ An absent event is not proof of no effect; inspect coverage and the footer.`;
28
+ async function main(argv = process.argv.slice(2)) {
29
+ if (!argv.length || argv.includes('--help')) {
30
+ console.log(help);
31
+ return;
32
+ }
33
+ const positionals = [];
34
+ const flags = new Map();
35
+ const allowed = new Set([
36
+ 'target',
37
+ 'input',
38
+ 'output',
39
+ 'runtime',
40
+ 'experimental',
41
+ 'mode',
42
+ 'file',
43
+ 'start',
44
+ 'end',
45
+ 'operation',
46
+ 'events',
47
+ 'bytes',
48
+ 'depth',
49
+ 'kind',
50
+ 'span',
51
+ 'entity',
52
+ 'at',
53
+ 'relation',
54
+ 'baseline',
55
+ 'replay',
56
+ 'port',
57
+ ]);
58
+ for (let i = 0; i < argv.length; i++) {
59
+ const token = argv[i];
60
+ if (!token.startsWith('--')) {
61
+ positionals.push(token);
62
+ continue;
63
+ }
64
+ const name = token.slice(2);
65
+ if (!allowed.has(name) || flags.has(name)) {
66
+ throw new Error(`Unknown or repeated option ${token}`);
67
+ }
68
+ if (name === 'experimental') {
69
+ flags.set(name, 'true');
70
+ }
71
+ else {
72
+ const value = argv[++i];
73
+ if (!value || value.startsWith('--')) {
74
+ throw new Error(`Missing value for ${token}`);
75
+ }
76
+ flags.set(name, value);
77
+ }
78
+ }
79
+ const required = (name) => {
80
+ const value = flags.get(name);
81
+ if (!value) {
82
+ throw new Error(`--${name} is required`);
83
+ }
84
+ return value;
85
+ };
86
+ const number = (name) => {
87
+ const value = flags.get(name);
88
+ if (value === undefined) {
89
+ return undefined;
90
+ }
91
+ const parsed = Number(value);
92
+ if (!Number.isSafeInteger(parsed) || parsed < 0) {
93
+ throw new Error(`Invalid --${name}: ${value}`);
94
+ }
95
+ return parsed;
96
+ };
97
+ const [command, path, query] = positionals;
98
+ if (command === 'view') {
99
+ if (!path || positionals.length !== 2 || [...flags.keys()].some((flag) => flag !== 'port')) {
100
+ throw new Error('Usage: view <artifact.ndjson> [--port <0..65535>]');
101
+ }
102
+ const viewer = await (0, viewerServer_1.startViewer)((0, viewerServer_1.loadViewerModel)(path), number('port'));
103
+ console.log(`Pyright trace viewer: ${viewer.url}\nPID ${process.pid}. Local read-only artifact; Ctrl+C to stop.`);
104
+ let closing = false;
105
+ const stop = () => {
106
+ if (!closing) {
107
+ closing = true;
108
+ viewer
109
+ .close()
110
+ .catch((error) => {
111
+ console.error('Viewer shutdown failed:', error);
112
+ process.exitCode = 1;
113
+ })
114
+ .finally(() => {
115
+ process.removeListener('SIGINT', stop);
116
+ process.removeListener('SIGTERM', stop);
117
+ });
118
+ }
119
+ };
120
+ process.on('SIGINT', stop);
121
+ process.on('SIGTERM', stop);
122
+ return;
123
+ }
124
+ if (command === 'capture' || command === 'compare') {
125
+ const mode = flags.get('mode') ?? 'trace';
126
+ if (!['trace', 'audit', 'clean'].includes(mode)) {
127
+ throw new Error(`Invalid mode ${mode}`);
128
+ }
129
+ const options = {
130
+ target: required('target'),
131
+ input: required('input'),
132
+ output: required('output'),
133
+ runtime: flags.get('runtime'),
134
+ mode: mode,
135
+ experimental: flags.has('experimental'),
136
+ selection: {
137
+ file: flags.get('file') ?? required('input'),
138
+ start: number('start'),
139
+ end: number('end'),
140
+ operation: number('operation'),
141
+ },
142
+ limits: Object.fromEntries(['events', 'bytes', 'depth'].filter((name) => flags.has(name)).map((name) => [name, number(name)])),
143
+ };
144
+ if (command === 'compare') {
145
+ console.log(JSON.stringify((0, capture_1.compareCaptures)(options), null, 2));
146
+ return;
147
+ }
148
+ const result = (0, capture_1.capture)(options);
149
+ console.log(JSON.stringify({ mode, output: options.output, audit: result.audit, diagnostics: result.diagnostics }));
150
+ return;
151
+ }
152
+ if (command !== 'query' || !path) {
153
+ throw new Error(help);
154
+ }
155
+ if ((0, fs_1.statSync)(path).size > 128 * 1024 * 1024) {
156
+ throw new Error('Artifact exceeds reader byte limit');
157
+ }
158
+ const reader = new reader_1.TraceReader((0, reader_1.readTrace)((0, fs_1.readFileSync)(path, 'utf8')));
159
+ let result;
160
+ switch (query) {
161
+ case 'timeline':
162
+ result = reader.timeline(flags.get('kind'), flags.get('span'));
163
+ break;
164
+ case 'history':
165
+ result = reader.history(required('entity'), number('at'));
166
+ break;
167
+ case 'latest':
168
+ result = reader.latest(required('entity'), number('at'));
169
+ break;
170
+ case 'neighbors':
171
+ result = reader.neighborhood(required('entity'), flags.get('relation'));
172
+ break;
173
+ case 'pairs':
174
+ result = reader.pairs();
175
+ break;
176
+ case 'diff':
177
+ result = reader.diff(required('baseline'), required('replay'));
178
+ break;
179
+ case 'coverage':
180
+ result = [reader.records[0], reader.records[reader.records.length - 1]];
181
+ break;
182
+ case 'summary':
183
+ result = reader.records.filter((r) => r.kind === 'summary');
184
+ break;
185
+ default:
186
+ throw new Error(`Unknown query ${query}`);
187
+ }
188
+ console.log(JSON.stringify(result, null, 2));
189
+ }
190
+ if (require.main === module) {
191
+ main().catch((error) => {
192
+ console.error(error instanceof Error ? error.message : error);
193
+ process.exitCode = 1;
194
+ });
195
+ }
196
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../src/trace/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface HookSite {
2
+ id: string;
3
+ file: string;
4
+ label: string;
5
+ line: number;
6
+ start: number;
7
+ length: number;
8
+ text: string;
9
+ }
10
+ export declare const adapterVersion = "native-commonjs-v1";
11
+ export declare function adapterFiles(experimental: boolean): string[];
12
+ export declare function instrument(file: string, code: string, experimental?: boolean): {
13
+ code: string;
14
+ sites: HookSite[];
15
+ counts: Record<string, number>;
16
+ };