@once-agent/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -0
  3. package/dist/apply.d.ts +9 -0
  4. package/dist/apply.d.ts.map +1 -0
  5. package/dist/apply.js +265 -0
  6. package/dist/apply.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +191 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/index.d.ts +76 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +240 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/protect.d.ts +8 -0
  16. package/dist/protect.d.ts.map +1 -0
  17. package/dist/protect.js +563 -0
  18. package/dist/protect.js.map +1 -0
  19. package/dist/scan.d.ts +18 -0
  20. package/dist/scan.d.ts.map +1 -0
  21. package/dist/scan.js +632 -0
  22. package/dist/scan.js.map +1 -0
  23. package/dist/setup.d.ts +8 -0
  24. package/dist/setup.d.ts.map +1 -0
  25. package/dist/setup.js +558 -0
  26. package/dist/setup.js.map +1 -0
  27. package/dist/transformers/http-patch-plan-v1.d.ts +23 -0
  28. package/dist/transformers/http-patch-plan-v1.d.ts.map +1 -0
  29. package/dist/transformers/http-patch-plan-v1.js +149 -0
  30. package/dist/transformers/http-patch-plan-v1.js.map +1 -0
  31. package/dist/transformers/http-write-v1.d.ts +23 -0
  32. package/dist/transformers/http-write-v1.d.ts.map +1 -0
  33. package/dist/transformers/http-write-v1.js +134 -0
  34. package/dist/transformers/http-write-v1.js.map +1 -0
  35. package/dist/transformers/once-binding-v1.d.ts +17 -0
  36. package/dist/transformers/once-binding-v1.d.ts.map +1 -0
  37. package/dist/transformers/once-binding-v1.js +134 -0
  38. package/dist/transformers/once-binding-v1.js.map +1 -0
  39. package/package.json +56 -0
package/dist/scan.js ADDED
@@ -0,0 +1,632 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import readline from "node:readline/promises";
4
+ import { stdin as input, stdout as output } from "node:process";
5
+ const ignoredDirectories = new Set([
6
+ ".git",
7
+ ".hg",
8
+ ".svn",
9
+ "node_modules",
10
+ "dist",
11
+ "build",
12
+ "coverage",
13
+ ".next",
14
+ ".nuxt",
15
+ ".venv",
16
+ "venv",
17
+ "__pycache__",
18
+ ".pytest_cache",
19
+ ".mypy_cache",
20
+ ".idea",
21
+ ".vscode"
22
+ ]);
23
+ const sourceExtensions = new Set([
24
+ ".ts",
25
+ ".tsx",
26
+ ".js",
27
+ ".jsx",
28
+ ".mjs",
29
+ ".cjs",
30
+ ".py"
31
+ ]);
32
+ const sensitiveNames = new Set([
33
+ ".env",
34
+ ".env.local",
35
+ ".env.production",
36
+ ".env.development",
37
+ "id_rsa",
38
+ "id_ed25519"
39
+ ]);
40
+ const sensitiveExtensions = new Set([
41
+ ".pem",
42
+ ".key",
43
+ ".p12",
44
+ ".pfx",
45
+ ".crt",
46
+ ".cer"
47
+ ]);
48
+ const rules = [
49
+ {
50
+ confidence: "HIGH",
51
+ category: "PAYMENT",
52
+ reason: "Payment or money-movement operation detected.",
53
+ pattern: /\b(paymentIntents|charges|refunds|transfers|payouts)\.(create|update|cancel)\b|\b(charge|refund|capturePayment|createInvoice|sendPayment|createPayout)\w*\s*\(/i
54
+ },
55
+ {
56
+ confidence: "HIGH",
57
+ category: "MESSAGING",
58
+ reason: "External message/email/SMS send operation detected.",
59
+ pattern: /\b(sendEmail|sendMail|sendMessage|sendSms|sendSMS|postMessage)\w*\s*\(|chat\.postMessage/i
60
+ },
61
+ {
62
+ confidence: "HIGH",
63
+ category: "BOOKING",
64
+ reason: "Booking, reservation, appointment or order mutation detected.",
65
+ pattern: /\b(create|confirm|cancel|update)(Booking|Reservation|Appointment|Order)\w*\s*\(/i
66
+ },
67
+ {
68
+ confidence: "HIGH",
69
+ category: "HTTP_DELETE",
70
+ reason: "Outbound HTTP DELETE operation detected.",
71
+ pattern: /method\s*:\s*["']DELETE["']|(?:axios|requests)\.delete\s*\(/i
72
+ },
73
+ {
74
+ confidence: "MEDIUM",
75
+ category: "HTTP_WRITE",
76
+ reason: "Outbound HTTP POST/PUT/PATCH operation detected.",
77
+ pattern: /method\s*:\s*["'](?:POST|PUT|PATCH)["']|(?:axios|requests)\.(?:post|put|patch)\s*\(/i
78
+ },
79
+ {
80
+ confidence: "HIGH",
81
+ category: "DATABASE",
82
+ reason: "Database mutation operation detected.",
83
+ pattern: /\bprisma\.[A-Za-z0-9_]+\.(create|update|delete|upsert)\s*\(|\b(?:exec|query|execute)\s*\(\s*["'`][\s\S]{0,300}\b(?:INSERT\s+INTO|DELETE\s+FROM|UPDATE\s+[A-Za-z0-9_"`.]+\s+SET)\b/i
84
+ },
85
+ {
86
+ confidence: "MEDIUM",
87
+ category: "DATABASE",
88
+ reason: "Database insert/update/delete/upsert call detected.",
89
+ pattern: /\.(insert|upsert|update|delete)\s*\(/i
90
+ },
91
+ {
92
+ confidence: "MEDIUM",
93
+ category: "QUEUE",
94
+ reason: "Queue, topic or event publication operation detected.",
95
+ pattern: /\b(queue|topic|sqs|sns|pubsub|kafka|producer)[A-Za-z0-9_.$]*.*\.(send|publish|produce|enqueue)\s*\(/i
96
+ },
97
+ {
98
+ confidence: "MEDIUM",
99
+ category: "STORAGE",
100
+ reason: "External object-storage write/delete operation detected.",
101
+ pattern: /\b(putObject|deleteObject|uploadFile|uploadObject)\w*\s*\(/i
102
+ },
103
+ {
104
+ confidence: "LOW",
105
+ category: "FILE_WRITE",
106
+ reason: "Local filesystem mutation detected.",
107
+ pattern: /\b(writeFile|appendFile|unlink|rename|rm)\s*\(/i
108
+ },
109
+ {
110
+ confidence: "MEDIUM",
111
+ category: "ACCOUNT",
112
+ reason: "Account/user mutation operation detected.",
113
+ pattern: /\b(createUser|deleteUser|disableUser|enableUser|updateUser|inviteUser)\w*\s*\(/i
114
+ },
115
+ {
116
+ confidence: "MEDIUM",
117
+ category: "PUBLISH",
118
+ reason: "Publish/deploy/external creation operation detected.",
119
+ pattern: /\b(publishPost|publishArticle|createIssue|createTicket|deployService|createResource)\w*\s*\(|\boctokit\.issues\.create\s*\(/i
120
+ }
121
+ ];
122
+ function shouldSkipFile(filePath) {
123
+ const base = path.basename(filePath).toLowerCase();
124
+ const ext = path.extname(filePath).toLowerCase();
125
+ return (sensitiveNames.has(base) ||
126
+ sensitiveExtensions.has(ext));
127
+ }
128
+ function detectFunctionName(lines, lineIndex) {
129
+ const start = Math.max(0, lineIndex - 14);
130
+ for (let i = lineIndex; i >= start; i--) {
131
+ const line = lines[i] ?? "";
132
+ const matches = [
133
+ line.match(/\bfunction\s+([A-Za-z_$][A-Za-z0-9_$]*)\s*\(/),
134
+ line.match(/\b(?:const|let|var)\s+([A-Za-z_$][A-Za-z0-9_$]*)\s*=\s*(?:async\s*)?\(/),
135
+ line.match(/\b(?:async\s+)?([A-Za-z_$][A-Za-z0-9_$]*)\s*\([^)]*\)\s*\{/),
136
+ line.match(/^\s*def\s+([A-Za-z_][A-Za-z0-9_]*)\s*\(/)
137
+ ];
138
+ const reservedWords = new Set([
139
+ "if",
140
+ "for",
141
+ "while",
142
+ "switch",
143
+ "catch",
144
+ "with"
145
+ ]);
146
+ for (const match of matches) {
147
+ if (match?.[1] &&
148
+ !reservedWords.has(match[1].toLowerCase())) {
149
+ return match[1];
150
+ }
151
+ }
152
+ }
153
+ return undefined;
154
+ }
155
+ export async function detectProjectMetadata(root) {
156
+ const languages = new Set();
157
+ const tooling = new Set();
158
+ try {
159
+ const packagePath = path.join(root, "package.json");
160
+ const raw = await fs.readFile(packagePath, "utf8");
161
+ const pkg = JSON.parse(raw.replace(/^\uFEFF/, ""));
162
+ languages.add("JavaScript / TypeScript");
163
+ const dependencies = {
164
+ ...(pkg.dependencies ?? {}),
165
+ ...(pkg.devDependencies ?? {})
166
+ };
167
+ const dependencyNames = Object.keys(dependencies);
168
+ const knownTooling = [
169
+ ["openai", "OpenAI"],
170
+ [
171
+ "@anthropic-ai/sdk",
172
+ "Anthropic"
173
+ ],
174
+ [
175
+ "@openai/agents",
176
+ "OpenAI Agents SDK"
177
+ ],
178
+ [
179
+ "@modelcontextprotocol/sdk",
180
+ "MCP"
181
+ ],
182
+ ["langchain", "LangChain"],
183
+ ["@langchain/core", "LangChain"],
184
+ ["ai", "Vercel AI SDK"],
185
+ ["express", "Express"],
186
+ ["fastify", "Fastify"],
187
+ ["next", "Next.js"]
188
+ ];
189
+ for (const [dependency, label] of knownTooling) {
190
+ if (dependencyNames.includes(dependency)) {
191
+ tooling.add(label);
192
+ }
193
+ }
194
+ }
195
+ catch {
196
+ // package.json is optional
197
+ }
198
+ for (const metadataName of [
199
+ "requirements.txt",
200
+ "pyproject.toml"
201
+ ]) {
202
+ try {
203
+ const raw = (await fs.readFile(path.join(root, metadataName), "utf8")).toLowerCase();
204
+ languages.add("Python");
205
+ const pythonTools = [
206
+ ["openai", "OpenAI"],
207
+ ["anthropic", "Anthropic"],
208
+ ["langchain", "LangChain"],
209
+ ["crewai", "CrewAI"],
210
+ ["autogen", "AutoGen"],
211
+ ["fastapi", "FastAPI"]
212
+ ];
213
+ for (const [needle, label] of pythonTools) {
214
+ if (raw.includes(needle)) {
215
+ tooling.add(label);
216
+ }
217
+ }
218
+ }
219
+ catch {
220
+ // Python metadata is optional
221
+ }
222
+ }
223
+ return {
224
+ languages: [...languages],
225
+ tooling: [...tooling]
226
+ };
227
+ }
228
+ export async function collectSourceFiles(root) {
229
+ const files = [];
230
+ const maxFiles = 5000;
231
+ async function walk(current) {
232
+ if (files.length >= maxFiles) {
233
+ return;
234
+ }
235
+ let entries;
236
+ try {
237
+ entries =
238
+ await fs.readdir(current, {
239
+ withFileTypes: true
240
+ });
241
+ }
242
+ catch {
243
+ return;
244
+ }
245
+ for (const entry of entries) {
246
+ if (files.length >= maxFiles) {
247
+ break;
248
+ }
249
+ if (entry.isSymbolicLink()) {
250
+ continue;
251
+ }
252
+ const full = path.join(current, entry.name);
253
+ if (entry.isDirectory()) {
254
+ if (ignoredDirectories.has(entry.name)) {
255
+ continue;
256
+ }
257
+ await walk(full);
258
+ continue;
259
+ }
260
+ if (!entry.isFile()) {
261
+ continue;
262
+ }
263
+ if (shouldSkipFile(full)) {
264
+ continue;
265
+ }
266
+ const ext = path.extname(entry.name).toLowerCase();
267
+ if (!sourceExtensions.has(ext)) {
268
+ continue;
269
+ }
270
+ try {
271
+ const stat = await fs.stat(full);
272
+ if (stat.size >
273
+ 1_500_000) {
274
+ continue;
275
+ }
276
+ }
277
+ catch {
278
+ continue;
279
+ }
280
+ files.push(full);
281
+ }
282
+ }
283
+ await walk(root);
284
+ return files;
285
+ }
286
+ function isCommentOnlyLine(line) {
287
+ const value = line.trim();
288
+ return (value.startsWith("//") ||
289
+ value.startsWith("#") ||
290
+ value.startsWith("/*") ||
291
+ value.startsWith("*"));
292
+ }
293
+ function isInsideQuotedString(line, index) {
294
+ let quote = null;
295
+ let escaped = false;
296
+ for (let i = 0; i < index; i++) {
297
+ const char = line[i];
298
+ if (escaped) {
299
+ escaped = false;
300
+ continue;
301
+ }
302
+ if (quote !== null &&
303
+ char === "\\") {
304
+ escaped = true;
305
+ continue;
306
+ }
307
+ if (quote !== null) {
308
+ if (char === quote) {
309
+ quote = null;
310
+ }
311
+ continue;
312
+ }
313
+ if (char === "'" ||
314
+ char === '"' ||
315
+ char === "`") {
316
+ quote = char;
317
+ }
318
+ }
319
+ return quote !== null;
320
+ }
321
+ function isInFunctionDeclaration(line, index) {
322
+ /*
323
+ * A multiline declaration such as:
324
+ *
325
+ * export async function createOrder(
326
+ * ...
327
+ * ) {
328
+ *
329
+ * has no opening brace on the line containing
330
+ * createOrder(. Detect the explicit `function`
331
+ * keyword before falling back to the existing
332
+ * same-line brace logic.
333
+ */
334
+ const beforeMatch = line.slice(0, index);
335
+ if (/\bfunction\s*\*?\s*$/i.test(beforeMatch)) {
336
+ return true;
337
+ }
338
+ const brace = line.indexOf("{");
339
+ if (brace < 0 ||
340
+ index > brace) {
341
+ return false;
342
+ }
343
+ const beforeBrace = line.slice(0, brace + 1);
344
+ return (/\b(?:export\s+)?(?:async\s+)?function\s+[A-Za-z_$][A-Za-z0-9_$]*\s*\(/.test(beforeBrace));
345
+ }
346
+ function escapeRegex(value) {
347
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
348
+ }
349
+ export async function scanFile(root, filePath) {
350
+ let text;
351
+ try {
352
+ text =
353
+ await fs.readFile(filePath, "utf8");
354
+ }
355
+ catch {
356
+ return [];
357
+ }
358
+ const lines = text.split(/\r?\n/);
359
+ const findings = [];
360
+ const seen = new Set();
361
+ const httpAliases = new Set();
362
+ for (const aliasMatch of text.matchAll(/\b(?:const|let|var)\s+([A-Za-z_$][A-Za-z0-9_$]*)\s*=\s*axios\b/g)) {
363
+ if (aliasMatch[1]) {
364
+ httpAliases.add(aliasMatch[1]);
365
+ }
366
+ }
367
+ for (const importMatch of text.matchAll(/\bimport\s+([A-Za-z_$][A-Za-z0-9_$]*)\s+from\s+["']axios["']/g)) {
368
+ const name = importMatch[1];
369
+ if (name &&
370
+ name !== "axios") {
371
+ httpAliases.add(name);
372
+ }
373
+ }
374
+ const activeRules = [
375
+ ...rules
376
+ ];
377
+ if (httpAliases.size > 0) {
378
+ const aliases = [...httpAliases]
379
+ .map(escapeRegex)
380
+ .join("|");
381
+ activeRules.push({
382
+ confidence: "HIGH",
383
+ category: "HTTP_DELETE",
384
+ reason: "Outbound HTTP DELETE operation detected through an HTTP client alias.",
385
+ pattern: new RegExp(`\\b(?:${aliases})\\.delete\\s*\\(`, "i")
386
+ });
387
+ activeRules.push({
388
+ confidence: "MEDIUM",
389
+ category: "HTTP_WRITE",
390
+ reason: "Outbound HTTP POST/PUT/PATCH operation detected through an HTTP client alias.",
391
+ pattern: new RegExp(`\\b(?:${aliases})\\.(?:post|put|patch)\\s*\\(`, "i")
392
+ });
393
+ }
394
+ for (let i = 0; i < lines.length; i++) {
395
+ const windowText = lines
396
+ .slice(i, Math.min(lines.length, i + 4))
397
+ .join("\n");
398
+ for (const rule of activeRules) {
399
+ const match = windowText.match(rule.pattern);
400
+ if (!match ||
401
+ match.index === undefined) {
402
+ continue;
403
+ }
404
+ const linesBeforeMatch = windowText
405
+ .slice(0, match.index)
406
+ .split("\n")
407
+ .length - 1;
408
+ const matchedLineIndex = i + linesBeforeMatch;
409
+ const matchedSourceLine = lines[matchedLineIndex] ?? "";
410
+ const beforeMatch = windowText.slice(0, match.index);
411
+ const lastLineBreak = beforeMatch.lastIndexOf("\n");
412
+ const matchedColumn = match.index -
413
+ (lastLineBreak + 1);
414
+ if (isCommentOnlyLine(matchedSourceLine) ||
415
+ isInsideQuotedString(matchedSourceLine, matchedColumn) ||
416
+ isInFunctionDeclaration(matchedSourceLine, matchedColumn)) {
417
+ continue;
418
+ }
419
+ const knownHttpMutation = /\b(?:axios|got|superagent)\.(?:post|put|patch|delete)\s*\(/i
420
+ .test(matchedSourceLine);
421
+ if (rule.category ===
422
+ "DATABASE" &&
423
+ rule.confidence ===
424
+ "MEDIUM" &&
425
+ knownHttpMutation) {
426
+ continue;
427
+ }
428
+ const key = `${matchedLineIndex}:${rule.category}`;
429
+ if (seen.has(key)) {
430
+ continue;
431
+ }
432
+ seen.add(key);
433
+ findings.push({
434
+ file: path.relative(root, filePath) ||
435
+ path.basename(filePath),
436
+ line: matchedLineIndex + 1,
437
+ functionName: detectFunctionName(lines, matchedLineIndex),
438
+ confidence: rule.confidence,
439
+ category: rule.category,
440
+ reason: rule.reason
441
+ });
442
+ }
443
+ }
444
+ return findings;
445
+ }
446
+ function confidenceRank(value) {
447
+ switch (value) {
448
+ case "HIGH":
449
+ return 0;
450
+ case "MEDIUM":
451
+ return 1;
452
+ default:
453
+ return 2;
454
+ }
455
+ }
456
+ function printFindings(findings) {
457
+ if (findings.length === 0) {
458
+ console.log("");
459
+ console.log("No obvious consequential operations were detected.");
460
+ console.log("");
461
+ console.log("This does not prove the project has no side effects.");
462
+ return;
463
+ }
464
+ const sorted = [...findings].sort((a, b) => confidenceRank(a.confidence) -
465
+ confidenceRank(b.confidence) ||
466
+ a.file.localeCompare(b.file) ||
467
+ a.line - b.line);
468
+ const visible = sorted.slice(0, 60);
469
+ let current;
470
+ for (const finding of visible) {
471
+ if (finding.confidence !==
472
+ current) {
473
+ current =
474
+ finding.confidence;
475
+ console.log("");
476
+ console.log(current);
477
+ console.log("-".repeat(current.length));
478
+ }
479
+ const location = `${finding.file}:${finding.line}`;
480
+ const fn = finding.functionName
481
+ ? ` ${finding.functionName}()`
482
+ : "";
483
+ console.log(`${location}${fn}`);
484
+ console.log(` ${finding.category}: ${finding.reason}`);
485
+ }
486
+ if (sorted.length >
487
+ visible.length) {
488
+ console.log("");
489
+ console.log(`... ${sorted.length - visible.length} additional findings not shown.`);
490
+ }
491
+ }
492
+ function parsePositiveNumber(value) {
493
+ const normalized = value
494
+ .trim()
495
+ .replaceAll(",", "");
496
+ if (!normalized) {
497
+ return undefined;
498
+ }
499
+ const parsed = Number(normalized);
500
+ if (!Number.isFinite(parsed) ||
501
+ parsed < 0) {
502
+ return undefined;
503
+ }
504
+ return parsed;
505
+ }
506
+ function planForUsage(monthly) {
507
+ if (monthly <= 100_000) {
508
+ return "Pro capacity (100,000/month)";
509
+ }
510
+ if (monthly <= 500_000) {
511
+ return "Startup capacity (500,000/month)";
512
+ }
513
+ if (monthly <= 2_000_000) {
514
+ return "Scale capacity (2,000,000/month)";
515
+ }
516
+ return "Higher/custom capacity";
517
+ }
518
+ async function runEstimate() {
519
+ if (!process.stdin.isTTY ||
520
+ !process.stdout.isTTY) {
521
+ return;
522
+ }
523
+ const rl = readline.createInterface({
524
+ input,
525
+ output
526
+ });
527
+ try {
528
+ console.log("");
529
+ console.log("VALUE ESTIMATE");
530
+ console.log("--------------");
531
+ const answer = (await rl.question("Estimate expected Once usage/value? [Y/n] "))
532
+ .trim()
533
+ .toLowerCase();
534
+ if (answer === "n" ||
535
+ answer === "no") {
536
+ return;
537
+ }
538
+ const dailyInput = await rl.question("Expected UNIQUE protected operations per day: ");
539
+ const daily = parsePositiveNumber(dailyInput);
540
+ if (daily === undefined) {
541
+ console.log("");
542
+ console.log("Usage estimate skipped.");
543
+ return;
544
+ }
545
+ const monthly = Math.round(daily * 30);
546
+ console.log("");
547
+ console.log("ESTIMATED ONCE USAGE");
548
+ console.log("--------------------");
549
+ console.log(`[CUSTOMER INPUT] ${daily.toLocaleString()} protected operations/day`);
550
+ console.log(`[CALCULATED] ${monthly.toLocaleString()} protected operations/month`);
551
+ console.log(`[CALCULATED] Capacity fit: ${planForUsage(monthly)}`);
552
+ console.log("Retries of the same operation ID are not included as new unique operations.");
553
+ const incidentsInput = await rl.question("Estimated duplicate incidents/month today (Enter to skip): ");
554
+ const incidents = parsePositiveNumber(incidentsInput);
555
+ if (incidents === undefined) {
556
+ console.log("");
557
+ console.log("Financial estimate skipped.");
558
+ return;
559
+ }
560
+ const costInput = await rl.question("Average cost of one duplicate incident: ");
561
+ const cost = parsePositiveNumber(costInput);
562
+ if (cost === undefined) {
563
+ console.log("");
564
+ console.log("Financial estimate skipped.");
565
+ return;
566
+ }
567
+ const currencyInput = (await rl.question("Currency symbol/code [£]: ")).trim();
568
+ const currency = currencyInput || "£";
569
+ const monthlyExposure = incidents * cost;
570
+ const annualExposure = monthlyExposure * 12;
571
+ console.log("");
572
+ console.log("VALUE SCENARIO");
573
+ console.log("--------------");
574
+ console.log(`[CUSTOMER INPUT] ${incidents} duplicate incidents/month`);
575
+ console.log(`[CUSTOMER INPUT] ${currency}${cost.toLocaleString()} average cost/incident`);
576
+ console.log(`[CALCULATED] Potential duplicate-loss exposure: ${currency}${monthlyExposure.toLocaleString()}/month`);
577
+ console.log(`[CALCULATED] Potential duplicate-loss exposure: ${currency}${annualExposure.toLocaleString()}/year`);
578
+ console.log("");
579
+ console.log("These are scenario estimates, not measured savings.");
580
+ console.log("Once Observe can later replace assumptions with measured behaviour.");
581
+ }
582
+ finally {
583
+ rl.close();
584
+ }
585
+ }
586
+ export async function runScan(requestedPath, estimate = true) {
587
+ const root = path.resolve(requestedPath);
588
+ const stat = await fs.stat(root);
589
+ if (!stat.isDirectory()) {
590
+ throw new Error("Scan target must be a directory.");
591
+ }
592
+ console.log("");
593
+ console.log("Once Safety Scan");
594
+ console.log("----------------");
595
+ console.log(`Directory: ${root}`);
596
+ console.log("Mode: local + read-only");
597
+ console.log("Source uploaded: no");
598
+ console.log("Code changes: none");
599
+ const metadata = await detectProjectMetadata(root);
600
+ const files = await collectSourceFiles(root);
601
+ const findings = [];
602
+ for (const file of files) {
603
+ findings.push(...await scanFile(root, file));
604
+ }
605
+ console.log("");
606
+ console.log(`Files scanned: ${files.length}`);
607
+ if (metadata.languages.length) {
608
+ console.log(`Project: ${metadata.languages.join(", ")}`);
609
+ }
610
+ if (metadata.tooling.length) {
611
+ console.log(`Detected tooling: ${metadata.tooling.join(", ")}`);
612
+ }
613
+ const high = findings.filter(finding => finding.confidence ===
614
+ "HIGH").length;
615
+ const medium = findings.filter(finding => finding.confidence ===
616
+ "MEDIUM").length;
617
+ const low = findings.filter(finding => finding.confidence ===
618
+ "LOW").length;
619
+ console.log("");
620
+ console.log("DETECTED");
621
+ console.log("--------");
622
+ console.log(`Consequential-operation candidates: ${findings.length}`);
623
+ console.log(`HIGH ${high} MEDIUM ${medium} LOW ${low}`);
624
+ printFindings(findings);
625
+ console.log("");
626
+ console.log("Detection is heuristic. Review findings before protecting or changing code.");
627
+ if (estimate &&
628
+ findings.length > 0) {
629
+ await runEstimate();
630
+ }
631
+ }
632
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ type SetupOptions = {
2
+ autoConfirm?: boolean;
3
+ planOnly?: boolean;
4
+ skipInstall?: boolean;
5
+ };
6
+ export declare function runSetup(requestedPath: string, options?: SetupOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAkBA,KAAK,YAAY,GAAG;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAkuBF,wBAAsB,QAAQ,CAC5B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA0bf"}