projscan 3.0.7 → 3.0.9

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.
@@ -0,0 +1,442 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs/promises';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ export const DEFAULT_TELEMETRY_ENDPOINT = 'https://www.baseframelabs.com/api/projscan/telemetry';
6
+ export const TELEMETRY_HOME_ENV = 'PROJSCAN_TELEMETRY_HOME';
7
+ export const TELEMETRY_ENDPOINT_ENV = 'PROJSCAN_TELEMETRY_ENDPOINT';
8
+ export const TELEMETRY_DISABLED_ENV = 'PROJSCAN_TELEMETRY_DISABLED';
9
+ export const TELEMETRY_NO_NETWORK_ENV = 'PROJSCAN_TELEMETRY_NO_NETWORK';
10
+ const CONFIG_FILE = 'telemetry.json';
11
+ const QUEUE_FILE = 'telemetry-queue.jsonl';
12
+ const SCHEMA_VERSION = 1;
13
+ const REQUEST_TIMEOUT_MS = 750;
14
+ export const TELEMETRY_COLLECTED = [
15
+ 'command_category',
16
+ 'command_name',
17
+ 'success_or_failure',
18
+ 'duration_bucket',
19
+ 'projscan_version',
20
+ 'node_major',
21
+ 'platform',
22
+ 'ci_boolean',
23
+ 'setup_booleans',
24
+ 'repeat_use_buckets',
25
+ 'optional_feedback_buckets',
26
+ ];
27
+ export const TELEMETRY_NEVER_COLLECTED = [
28
+ 'source_code',
29
+ 'file_paths',
30
+ 'repo_names',
31
+ 'branch_names',
32
+ 'package_names',
33
+ 'usernames',
34
+ 'emails',
35
+ 'raw_findings',
36
+ 'secrets',
37
+ 'environment_variables',
38
+ ];
39
+ export function explainTelemetryPolicy() {
40
+ return {
41
+ schemaVersion: 1,
42
+ default: 'off',
43
+ prompt: getTelemetryOptInPrompt(),
44
+ endpoint: getDefaultEndpoint(),
45
+ collected: [...TELEMETRY_COLLECTED],
46
+ neverCollected: [...TELEMETRY_NEVER_COLLECTED],
47
+ controls: ['projscan telemetry status', 'projscan telemetry enable', 'projscan telemetry disable', 'projscan telemetry explain'],
48
+ notes: [
49
+ 'Telemetry is never enabled silently.',
50
+ 'Events are anonymous product-health signals, not scan data.',
51
+ 'Disabling telemetry clears the local queue and removes the anonymous id.',
52
+ 'Reviewer outcome feedback remains explicit through projscan feedback add; telemetry only buckets those answers when enabled.',
53
+ ],
54
+ };
55
+ }
56
+ export function getTelemetryOptInPrompt() {
57
+ return 'Share anonymous usage metrics to improve projscan? No code, paths, package names, branch names, or secrets are collected. [y/N] ';
58
+ }
59
+ export async function getTelemetryStatus(options = {}) {
60
+ const paths = resolveTelemetryPaths(options);
61
+ const loaded = await readConfig(paths.configPath, options.now);
62
+ const queueLength = await countQueue(paths.queuePath);
63
+ const enabled = isRuntimeTelemetryDisabled() ? false : loaded.config.enabled === true;
64
+ return buildStatus(paths, loaded.config, queueLength, enabled);
65
+ }
66
+ export async function enableTelemetry(options = {}) {
67
+ const paths = resolveTelemetryPaths(options);
68
+ const loaded = await readConfig(paths.configPath, options.now);
69
+ const now = toIso(options.now);
70
+ const config = {
71
+ ...loaded.config,
72
+ enabled: true,
73
+ anonymousId: loaded.config.anonymousId ?? generateAnonymousId(),
74
+ endpoint: options.endpoint ?? loaded.config.endpoint ?? getDefaultEndpoint(),
75
+ updatedAt: now,
76
+ };
77
+ await writeConfig(paths.configPath, config);
78
+ return buildStatus(paths, config, await countQueue(paths.queuePath), !isRuntimeTelemetryDisabled());
79
+ }
80
+ export async function disableTelemetry(options = {}) {
81
+ const paths = resolveTelemetryPaths(options);
82
+ const loaded = await readConfig(paths.configPath, options.now);
83
+ const now = toIso(options.now);
84
+ const config = {
85
+ ...loaded.config,
86
+ enabled: false,
87
+ anonymousId: undefined,
88
+ updatedAt: now,
89
+ };
90
+ await writeConfig(paths.configPath, config);
91
+ await fs.rm(paths.queuePath, { force: true });
92
+ return buildStatus(paths, config, 0, false);
93
+ }
94
+ export function buildFeedbackTelemetry(input) {
95
+ const result = {};
96
+ if (typeof input.useful === 'boolean')
97
+ result.useful = input.useful;
98
+ if (typeof input.minutesSaved === 'number' && Number.isFinite(input.minutesSaved)) {
99
+ result.minutesSavedBucket = bucketMinutes(input.minutesSaved);
100
+ }
101
+ if (typeof input.preventedBadEdit === 'boolean')
102
+ result.preventedBadEdit = input.preventedBadEdit;
103
+ const ruleCount = Array.isArray(input.falsePositiveRules) ? input.falsePositiveRules.length : 0;
104
+ if (typeof input.falsePositiveReported === 'boolean' || ruleCount > 0) {
105
+ result.falsePositiveReported = input.falsePositiveReported === true || ruleCount > 0;
106
+ }
107
+ return result;
108
+ }
109
+ export async function recordCommandTelemetry(input, options = {}) {
110
+ if (isRuntimeTelemetryDisabled())
111
+ return { status: 'skipped', reason: TELEMETRY_DISABLED_ENV };
112
+ const paths = resolveTelemetryPaths(options);
113
+ const loaded = await readConfig(paths.configPath, options.now);
114
+ if (!loaded.config.enabled || !loaded.config.anonymousId)
115
+ return { status: 'skipped', reason: 'disabled' };
116
+ const config = updateUsage(loaded.config, options.now);
117
+ await writeConfig(paths.configPath, config);
118
+ const event = await buildCommandEvent(input, config, options.now);
119
+ await appendQueue(paths.queuePath, event);
120
+ if (options.flush === false || process.env[TELEMETRY_NO_NETWORK_ENV] === '1') {
121
+ return { status: 'queued', queued: await countQueue(paths.queuePath) };
122
+ }
123
+ const flushed = await flushTelemetry({ ...options, configDir: paths.configDir });
124
+ if (flushed.status === 'sent')
125
+ return flushed;
126
+ return { status: 'queued', reason: flushed.reason, queued: await countQueue(paths.queuePath) };
127
+ }
128
+ export async function recordFeedbackTelemetry(input, options = {}) {
129
+ return recordCommandTelemetry({
130
+ commandName: 'feedback add',
131
+ status: 'success',
132
+ durationMs: 0,
133
+ rootPath: options.rootPath,
134
+ version: options.version,
135
+ feedback: buildFeedbackTelemetry(input),
136
+ }, options);
137
+ }
138
+ export async function flushTelemetry(options = {}) {
139
+ if (isRuntimeTelemetryDisabled())
140
+ return { status: 'skipped', reason: TELEMETRY_DISABLED_ENV };
141
+ if (process.env[TELEMETRY_NO_NETWORK_ENV] === '1')
142
+ return { status: 'queued', reason: TELEMETRY_NO_NETWORK_ENV };
143
+ const paths = resolveTelemetryPaths(options);
144
+ const loaded = await readConfig(paths.configPath, options.now);
145
+ if (!loaded.config.enabled || !loaded.config.anonymousId)
146
+ return { status: 'skipped', reason: 'disabled' };
147
+ const events = await readQueue(paths.queuePath);
148
+ if (events.length === 0)
149
+ return { status: 'skipped', reason: 'empty' };
150
+ const sender = options.sender ?? defaultSender;
151
+ try {
152
+ const result = await sender(events, loaded.config.endpoint);
153
+ if (!result.ok)
154
+ return { status: 'failed', reason: 'http_' + result.status, queued: events.length };
155
+ await fs.rm(paths.queuePath, { force: true });
156
+ return { status: 'sent', queued: 0 };
157
+ }
158
+ catch (error) {
159
+ return { status: 'failed', reason: error instanceof Error ? error.message : String(error), queued: events.length };
160
+ }
161
+ }
162
+ async function buildCommandEvent(input, config, nowValue) {
163
+ const now = nowValue ?? new Date();
164
+ const rootPath = input.rootPath ?? process.cwd();
165
+ return {
166
+ schemaVersion: SCHEMA_VERSION,
167
+ eventId: 'evt_' + crypto.randomUUID(),
168
+ eventType: input.feedback ? 'feedback_outcome' : 'command_run',
169
+ anonymousId: config.anonymousId ?? generateAnonymousId(),
170
+ occurredAt: toIso(now),
171
+ commandCategory: categorizeCommand(input.commandName),
172
+ commandName: sanitizeCommandName(input.commandName),
173
+ status: input.status,
174
+ durationBucket: bucketDuration(input.durationMs),
175
+ version: sanitizeVersion(input.version),
176
+ nodeMajor: Number.parseInt(process.versions.node.split('.')[0] ?? '0', 10) || 0,
177
+ platform: process.platform,
178
+ ci: process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true',
179
+ setup: await detectSetup(rootPath),
180
+ repeatUse: {
181
+ runCountBucket: bucketCount(config.usage.runCount),
182
+ activeDaysBucket: bucketCount(config.usage.activeDays.length),
183
+ },
184
+ ...(input.feedback ? { feedback: input.feedback } : {}),
185
+ };
186
+ }
187
+ function categorizeCommand(commandName) {
188
+ const name = sanitizeCommandName(commandName);
189
+ const first = name.split(' ')[0] ?? 'other';
190
+ if (first === 'doctor')
191
+ return 'doctor';
192
+ if (first === 'review')
193
+ return 'review';
194
+ if (first === 'preflight')
195
+ return 'preflight';
196
+ if (first === 'dogfood')
197
+ return 'dogfood';
198
+ if (first === 'feedback')
199
+ return 'feedback';
200
+ if (first === 'trial')
201
+ return 'trial';
202
+ if (first === 'init')
203
+ return 'init';
204
+ if (first === 'mcp')
205
+ return 'mcp';
206
+ if (first === 'evidence-pack')
207
+ return 'evidence';
208
+ if (first === 'start' || first === 'first-run' || first === 'recipes')
209
+ return 'start';
210
+ return 'other';
211
+ }
212
+ function sanitizeCommandName(commandName) {
213
+ return commandName
214
+ .toLowerCase()
215
+ .replace(/[^a-z0-9:_-]+/g, ' ')
216
+ .trim()
217
+ .split(/\s+/)
218
+ .slice(0, 3)
219
+ .join(' ') || 'unknown';
220
+ }
221
+ function sanitizeVersion(value) {
222
+ if (!value)
223
+ return 'unknown';
224
+ return /^\d+\.\d+\.\d+(?:[-+][a-zA-Z0-9.-]+)?$/.test(value) ? value : 'unknown';
225
+ }
226
+ function bucketDuration(durationMs) {
227
+ if (!Number.isFinite(durationMs) || durationMs < 1000)
228
+ return '<1s';
229
+ if (durationMs < 5000)
230
+ return '1-5s';
231
+ if (durationMs < 30000)
232
+ return '5-30s';
233
+ if (durationMs < 120000)
234
+ return '30s-2m';
235
+ return '2m+';
236
+ }
237
+ function bucketMinutes(value) {
238
+ if (value <= 0)
239
+ return '0';
240
+ if (value <= 5)
241
+ return '1-5';
242
+ if (value <= 10)
243
+ return '6-10';
244
+ if (value <= 20)
245
+ return '10-20';
246
+ return '20+';
247
+ }
248
+ function bucketCount(value) {
249
+ if (value <= 0)
250
+ return '0';
251
+ if (value === 1)
252
+ return '1';
253
+ if (value <= 5)
254
+ return '2-5';
255
+ if (value <= 20)
256
+ return '6-20';
257
+ if (value <= 100)
258
+ return '21-100';
259
+ return '100+';
260
+ }
261
+ async function detectSetup(rootPath) {
262
+ const githubActionConfigured = await exists(path.join(rootPath, '.github', 'workflows', 'projscan.yml'));
263
+ const teamInitConfigured = (await exists(path.join(rootPath, '.projscan-baseline.json'))) ||
264
+ (await exists(path.join(rootPath, '.github', 'CODEOWNERS')));
265
+ const mcpConfigured = await anyExists([
266
+ path.join(rootPath, '.codex', 'config.toml'),
267
+ path.join(rootPath, '.cursor', 'mcp.json'),
268
+ path.join(rootPath, '.continue', 'config.json'),
269
+ ]);
270
+ return { githubActionConfigured, mcpConfigured, teamInitConfigured };
271
+ }
272
+ async function anyExists(paths) {
273
+ for (const candidate of paths) {
274
+ if (await exists(candidate))
275
+ return true;
276
+ }
277
+ return false;
278
+ }
279
+ async function exists(file) {
280
+ try {
281
+ await fs.access(file);
282
+ return true;
283
+ }
284
+ catch {
285
+ return false;
286
+ }
287
+ }
288
+ function updateUsage(config, nowValue) {
289
+ const day = toDay(nowValue);
290
+ const activeDays = new Set(config.usage.activeDays ?? []);
291
+ activeDays.add(day);
292
+ return {
293
+ ...config,
294
+ updatedAt: toIso(nowValue),
295
+ usage: {
296
+ firstSeenDay: config.usage.firstSeenDay ?? day,
297
+ lastSeenDay: day,
298
+ runCount: (config.usage.runCount ?? 0) + 1,
299
+ activeDays: [...activeDays].sort(),
300
+ },
301
+ };
302
+ }
303
+ function buildStatus(paths, config, queueLength, enabledOverride) {
304
+ const enabled = enabledOverride && config.enabled === true;
305
+ return {
306
+ schemaVersion: SCHEMA_VERSION,
307
+ enabled,
308
+ mode: enabled ? 'enabled' : 'disabled',
309
+ anonymousId: enabled ? (config.anonymousId ?? null) : null,
310
+ endpoint: config.endpoint,
311
+ configPath: paths.configPath,
312
+ queuePath: paths.queuePath,
313
+ queueLength: enabled ? queueLength : 0,
314
+ collected: [...TELEMETRY_COLLECTED],
315
+ neverCollected: [...TELEMETRY_NEVER_COLLECTED],
316
+ controls: ['projscan telemetry status', 'projscan telemetry enable', 'projscan telemetry disable', 'projscan telemetry explain'],
317
+ nextCommands: enabled
318
+ ? ['projscan telemetry disable', 'projscan telemetry explain']
319
+ : ['projscan telemetry explain', 'projscan telemetry enable'],
320
+ };
321
+ }
322
+ function resolveTelemetryPaths(options) {
323
+ const configDir = options.configDir ?? defaultConfigDir();
324
+ return {
325
+ configDir,
326
+ configPath: path.join(configDir, CONFIG_FILE),
327
+ queuePath: path.join(configDir, QUEUE_FILE),
328
+ };
329
+ }
330
+ function defaultConfigDir() {
331
+ if (process.env[TELEMETRY_HOME_ENV])
332
+ return path.resolve(process.env[TELEMETRY_HOME_ENV]);
333
+ if (process.env.XDG_CONFIG_HOME)
334
+ return path.join(process.env.XDG_CONFIG_HOME, 'projscan');
335
+ return path.join(os.homedir(), '.config', 'projscan');
336
+ }
337
+ function getDefaultEndpoint() {
338
+ return process.env[TELEMETRY_ENDPOINT_ENV] || DEFAULT_TELEMETRY_ENDPOINT;
339
+ }
340
+ async function readConfig(configPath, nowValue) {
341
+ try {
342
+ const raw = await fs.readFile(configPath, 'utf-8');
343
+ const parsed = JSON.parse(raw);
344
+ return { exists: true, config: normalizeConfig(parsed, nowValue) };
345
+ }
346
+ catch {
347
+ return { exists: false, config: defaultConfig(nowValue) };
348
+ }
349
+ }
350
+ function normalizeConfig(value, nowValue) {
351
+ const fallback = defaultConfig(nowValue);
352
+ return {
353
+ schemaVersion: SCHEMA_VERSION,
354
+ enabled: value.enabled === true,
355
+ anonymousId: typeof value.anonymousId === 'string' ? value.anonymousId : undefined,
356
+ endpoint: typeof value.endpoint === 'string' ? value.endpoint : getDefaultEndpoint(),
357
+ createdAt: typeof value.createdAt === 'string' ? value.createdAt : fallback.createdAt,
358
+ updatedAt: typeof value.updatedAt === 'string' ? value.updatedAt : fallback.updatedAt,
359
+ usage: {
360
+ firstSeenDay: typeof value.usage?.firstSeenDay === 'string' ? value.usage.firstSeenDay : undefined,
361
+ lastSeenDay: typeof value.usage?.lastSeenDay === 'string' ? value.usage.lastSeenDay : undefined,
362
+ runCount: Number.isFinite(value.usage?.runCount) ? Number(value.usage?.runCount) : 0,
363
+ activeDays: Array.isArray(value.usage?.activeDays)
364
+ ? value.usage.activeDays.filter((item) => typeof item === 'string')
365
+ : [],
366
+ },
367
+ };
368
+ }
369
+ function defaultConfig(nowValue) {
370
+ const now = toIso(nowValue);
371
+ return {
372
+ schemaVersion: SCHEMA_VERSION,
373
+ enabled: false,
374
+ endpoint: getDefaultEndpoint(),
375
+ createdAt: now,
376
+ updatedAt: now,
377
+ usage: { runCount: 0, activeDays: [] },
378
+ };
379
+ }
380
+ async function writeConfig(configPath, config) {
381
+ await fs.mkdir(path.dirname(configPath), { recursive: true });
382
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
383
+ }
384
+ async function appendQueue(queuePath, event) {
385
+ await fs.mkdir(path.dirname(queuePath), { recursive: true });
386
+ await fs.appendFile(queuePath, JSON.stringify(event) + '\n', 'utf-8');
387
+ }
388
+ async function readQueue(queuePath) {
389
+ try {
390
+ const raw = await fs.readFile(queuePath, 'utf-8');
391
+ return raw
392
+ .split('\n')
393
+ .map((line) => line.trim())
394
+ .filter(Boolean)
395
+ .map((line) => JSON.parse(line));
396
+ }
397
+ catch {
398
+ return [];
399
+ }
400
+ }
401
+ async function countQueue(queuePath) {
402
+ try {
403
+ const raw = await fs.readFile(queuePath, 'utf-8');
404
+ return raw.split('\n').filter((line) => line.trim().length > 0).length;
405
+ }
406
+ catch {
407
+ return 0;
408
+ }
409
+ }
410
+ async function defaultSender(batch, endpoint) {
411
+ const controller = new AbortController();
412
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
413
+ try {
414
+ const response = await fetch(endpoint, {
415
+ method: 'POST',
416
+ headers: {
417
+ 'content-type': 'application/json',
418
+ 'user-agent': 'projscan-telemetry',
419
+ },
420
+ body: JSON.stringify({ schemaVersion: SCHEMA_VERSION, events: batch }),
421
+ signal: controller.signal,
422
+ });
423
+ return { ok: response.ok, status: response.status };
424
+ }
425
+ finally {
426
+ clearTimeout(timeout);
427
+ }
428
+ }
429
+ function generateAnonymousId() {
430
+ return 'psn_' + crypto.randomUUID();
431
+ }
432
+ function isRuntimeTelemetryDisabled() {
433
+ const value = process.env[TELEMETRY_DISABLED_ENV];
434
+ return value === '1' || value === 'true';
435
+ }
436
+ function toIso(value) {
437
+ return (value ?? new Date()).toISOString();
438
+ }
439
+ function toDay(value) {
440
+ return toIso(value).slice(0, 10);
441
+ }
442
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -45,6 +45,7 @@ export { computeStartReport } from './core/start.js';
45
45
  export { computeDogfoodReport } from './core/dogfood.js';
46
46
  export { computeTrialReport } from './core/trial.js';
47
47
  export { addFeedbackResponse, createFeedbackTemplate, readFeedbackFile, summarizeFeedback, summarizeFeedbackFile } from './core/feedback.js';
48
+ export { buildFeedbackTelemetry, disableTelemetry, enableTelemetry, explainTelemetryPolicy, flushTelemetry, getTelemetryOptInPrompt, getTelemetryStatus, recordCommandTelemetry, recordFeedbackTelemetry, } from './core/telemetry.js';
48
49
  export { computeFirstRunDiagnostics, computeMcpSetupDoctor, getGithubActionStarter, getMcpConfigGuide, getPolicyStarterKit, getWorkflowRecipes, isPolicyStarterTeam, writeGithubActionStarter, writePolicyStarterKit, writeTeamStarterKit, } from './core/adoption.js';
49
50
  export type { AgentWorkflowRecipe, FirstRunDiagnostic, FirstRunReport, McpConfigCatalog, McpConfigGuide, McpClientId, McpSetupDoctorCheck, McpSetupDoctorReport, TeamStarterKit, TeamOnboardingStep, WorkflowRecipeCatalog, GithubActionStarter, PolicyStarterKit, PolicyStarterTeam, WriteGithubActionStarterResult, WritePolicyStarterResult, } from './core/adoption.js';
50
51
  export { suggestFixForIssue, previewSuggestionForIssue, syntheticIssue, findIssue } from './core/fixSuggest.js';
package/dist/index.js CHANGED
@@ -43,6 +43,7 @@ export { computeStartReport } from './core/start.js';
43
43
  export { computeDogfoodReport } from './core/dogfood.js';
44
44
  export { computeTrialReport } from './core/trial.js';
45
45
  export { addFeedbackResponse, createFeedbackTemplate, readFeedbackFile, summarizeFeedback, summarizeFeedbackFile } from './core/feedback.js';
46
+ export { buildFeedbackTelemetry, disableTelemetry, enableTelemetry, explainTelemetryPolicy, flushTelemetry, getTelemetryOptInPrompt, getTelemetryStatus, recordCommandTelemetry, recordFeedbackTelemetry, } from './core/telemetry.js';
46
47
  export { computeFirstRunDiagnostics, computeMcpSetupDoctor, getGithubActionStarter, getMcpConfigGuide, getPolicyStarterKit, getWorkflowRecipes, isPolicyStarterTeam, writeGithubActionStarter, writePolicyStarterKit, writeTeamStarterKit, } from './core/adoption.js';
47
48
  export { suggestFixForIssue, previewSuggestionForIssue, syntheticIssue, findIssue } from './core/fixSuggest.js';
48
49
  export { explainIssue } from './core/explainIssue.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:1ffa9356-04fc-4a36-8369-3e7918f6ffb6",
4
+ "serialNumber": "urn:uuid:98810eab-44c4-4d84-b109-08f6b65e55d8",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2026-05-31T21:39:35.637Z",
7
+ "timestamp": "2026-06-01T13:23:47.070Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "projscan",
11
11
  "name": "projscan-sbom-generator",
12
- "version": "3.0.7"
12
+ "version": "3.0.9"
13
13
  }
14
14
  ],
15
15
  "component": {
16
16
  "type": "application",
17
- "bom-ref": "pkg:npm/projscan@3.0.7",
17
+ "bom-ref": "pkg:npm/projscan@3.0.9",
18
18
  "name": "projscan",
19
- "version": "3.0.7",
20
- "purl": "pkg:npm/projscan@3.0.7"
19
+ "version": "3.0.9",
20
+ "purl": "pkg:npm/projscan@3.0.9"
21
21
  }
22
22
  },
23
23
  "components": [
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "projscan",
3
- "version": "3.0.7",
3
+ "version": "3.0.9",
4
4
  "mcpProtocolVersion": "2025-03-26",
5
- "generatedAt": "2026-06-01T04:01:07.722Z",
5
+ "generatedAt": "2026-06-01T13:23:52.571Z",
6
6
  "toolCount": 40,
7
7
  "tools": [
8
8
  {
@@ -65,6 +65,11 @@ export declare const COMMAND_FORMAT_SUPPORT: {
65
65
  readonly structure: readonly ["console", "json", "markdown"];
66
66
  readonly taint: readonly ["console", "json"];
67
67
  readonly trial: readonly ["console", "json"];
68
+ readonly telemetry: readonly ["console", "json"];
69
+ readonly 'telemetry status': readonly ["console", "json"];
70
+ readonly 'telemetry enable': readonly ["console", "json"];
71
+ readonly 'telemetry disable': readonly ["console", "json"];
72
+ readonly 'telemetry explain': readonly ["console", "json"];
68
73
  readonly upgrade: readonly ["console", "json", "markdown"];
69
74
  readonly watch: readonly ["console"];
70
75
  readonly 'workspace list': readonly ["console", "json"];
@@ -64,6 +64,11 @@ export const COMMAND_FORMAT_SUPPORT = {
64
64
  structure: ['console', 'json', 'markdown'],
65
65
  taint: ['console', 'json'],
66
66
  trial: ['console', 'json'],
67
+ telemetry: ['console', 'json'],
68
+ 'telemetry status': ['console', 'json'],
69
+ 'telemetry enable': ['console', 'json'],
70
+ 'telemetry disable': ['console', 'json'],
71
+ 'telemetry explain': ['console', 'json'],
67
72
  upgrade: ['console', 'json', 'markdown'],
68
73
  watch: ['console'],
69
74
  'workspace list': ['console', 'json'],
@@ -1 +1 @@
1
- {"version":3,"file":"formatSupport.js","sourceRoot":"","sources":["../../src/utils/formatSupport.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAA4C,CAAC;AAE1H,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC;IACzD,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAChC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;IAC/C,KAAK,EAAE,CAAC,SAAS,CAAC;IAClB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;IAC5C,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;IACjD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;IACjD,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IAC7C,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IACxC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IACrC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC;IACxD,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACnC,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IACxC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IAChD,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IACrC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAChC,GAAG,EAAE,CAAC,SAAS,CAAC;IAChB,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IAC9C,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,CAAC,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,SAAS,CAAC;IACjB,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACzC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC/B,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,CAAC,SAAS,CAAC;IAC3B,GAAG,EAAE,CAAC,SAAS,CAAC;IAChB,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,CAAC,SAAS,CAAC;IAC5B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;IAClD,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACtC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;IAClD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACxC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IACvC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACtC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IAC1C,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IACxC,KAAK,EAAE,CAAC,SAAS,CAAC;IAClB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,eAAe,EAAE,CAAC,SAAS,CAAC;IAC5B,kBAAkB,EAAE,CAAC,SAAS,CAAC;IAC/B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IAC3C,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;CAC6B,CAAC;AAI7D,MAAM,UAAU,UAAU,CAAC,UAAmC,cAAc;IAC1E,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAQ,sBAAkE,CAAC,WAAW,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,OAAO,EAAE,OAA4B;QACrC,OAAO;KACR,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"formatSupport.js","sourceRoot":"","sources":["../../src/utils/formatSupport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "projscan",
3
3
  "mcpName": "io.github.abhiyoheswaran1/projscan",
4
- "version": "3.0.7",
4
+ "version": "3.0.9",
5
5
  "description": "Agent-first code intelligence. MCP server (2025-03-26) with AST parsing for JavaScript, TypeScript, Python, Go, Java, Ruby, Rust, PHP, C#, Kotlin, Swift, and C++; stable v3 semantic graph (projscan_semantic_graph), dataflow risk engine with bridge-helper detection (projscan_dataflow), code graph, file + per-function AST cyclomatic complexity, per-function fan-in + fan-out, coupling + cycle detection, structural PR diff with HTML reporter, coverage report with HTML reporter, intent-grounded one-call PR review (projscan_review with optional `intent` arg, new taint flows, contract changes, and newDataflowRisks) and long-running PR-watch mode with structured per-bucket deltas (projscan_review_watch), first-60-seconds workflow orientation (projscan_start), agent workplans (projscan_workplan), bug-hunt queues (projscan_bug_hunt), product-line planning (projscan_release_train), evidence packs (projscan_evidence_pack), regression planning (projscan_regression_plan), agent briefs (projscan_agent_brief), quality scorecards (projscan_quality_scorecard), and preflight with supply-chain IOC evidence, rule-driven fix suggestions + mechanical apply layer with rollback (projscan_apply_fix, projscan_fix_suggest, projscan_explain_issue), source-to-sink taint analysis (projscan_taint) with truncation reporting, transitive blast-radius analysis with cross-repo mode (projscan_impact for files and symbols), cross-repo workspace registration + intelligence (projscan_workspace_graph), per-function semantic search chunks (sub-file embeddings), per-rule confidence + severity drift + cost-summary analytics with live streaming (projscan_cost_summary), stable local analyzer + reporter plugin API (projscan_plugin, CLI --reporter, opt-in via PROJSCAN_PLUGINS_PREVIEW=1), monorepo workspace awareness with cross-package import policy + per-package dependencies / outdated / audit, BM25 + optional semantic search, cursor pagination, progress notifications, context-budgeted output, and a stable-surface CI guard. CLI on the side.",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -18,7 +18,15 @@
18
18
  "docs/plugin.schema.json",
19
19
  "docs/examples/plugins",
20
20
  "public/brand/baseframe-labs",
21
- "public/.well-known/security.txt"
21
+ "public/.well-known/security.txt",
22
+ "CONTRIBUTING.md",
23
+ "SECURITY.md",
24
+ "PRIVACY.md",
25
+ "TELEMETRY.md",
26
+ "DISCLAIMER.md",
27
+ "TRADEMARKS.md",
28
+ "THIRD-PARTY-NOTICES.md",
29
+ "public/projscan-icon.svg"
22
30
  ],
23
31
  "scripts": {
24
32
  "build": "tsc && node scripts/copy-wasm.mjs && node scripts/generate-tool-manifest.mjs",