sork-queb 1.0.0 → 1.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.
- package/README.md +160 -105
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/orchestrator.d.ts.map +1 -1
- package/dist/lib/orchestrator.js +14 -1
- package/dist/lib/orchestrator.js.map +1 -1
- package/dist/lib/utils/scaffolder.d.ts +13 -0
- package/dist/lib/utils/scaffolder.d.ts.map +1 -0
- package/dist/lib/utils/scaffolder.js +321 -0
- package/dist/lib/utils/scaffolder.js.map +1 -0
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
## What is SORK?
|
|
2
2
|
|
|
3
|
-
SORK automates your entire vulnerability lifecycle
|
|
3
|
+
SORK automates your entire vulnerability lifecycle. Three AI agents work in sequence — **Triage** analyzes and dismisses false positives, **Remediation** generates code fixes, **Keeper** verifies fixes passed security scans. Hours of manual work, done in minutes.
|
|
4
4
|
|
|
5
|
-
> *"SORK turns every
|
|
5
|
+
> *"SORK turns every security scan from a to-do list into a done list."*
|
|
6
6
|
|
|
7
7
|
---> Made by Bhargav Kalambhe
|
|
8
8
|
|
|
@@ -380,89 +380,156 @@ The verifier. Watches the fix pipeline and confirms vulnerabilities are resolved
|
|
|
380
380
|
|
|
381
381
|
### Prerequisites
|
|
382
382
|
|
|
383
|
-
-
|
|
384
|
-
-
|
|
385
|
-
-
|
|
386
|
-
- VS Code with [GitLab extension](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow) (v6.15.1+) or JetBrains IDE with GitLab plugin
|
|
383
|
+
- Node.js 18+ installed
|
|
384
|
+
- npm installed globally
|
|
385
|
+
- A Node.js project with security scanning enabled (ESLint, etc.)
|
|
387
386
|
|
|
388
|
-
###
|
|
387
|
+
### Installation & Setup
|
|
389
388
|
|
|
390
|
-
|
|
389
|
+
```bash
|
|
390
|
+
# Install globally
|
|
391
|
+
npm install -g sork-queb
|
|
391
392
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
- template: Security/Dependency-Scanning.gitlab-ci.yml
|
|
396
|
-
- template: Security/Secret-Detection.gitlab-ci.yml
|
|
393
|
+
# Initialize in your project
|
|
394
|
+
cd your-project
|
|
395
|
+
sork init
|
|
397
396
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
- test
|
|
401
|
-
- security
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
### Step 2 — Enable SORK Agents
|
|
397
|
+
# Run security scan
|
|
398
|
+
sork scan
|
|
405
399
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
3. Repeat for `SORK Remediation` and `SORK Keeper`
|
|
409
|
-
4. In your project: **Automate → Agents** → enable all three
|
|
400
|
+
# Auto-fix vulnerabilities
|
|
401
|
+
sork fix
|
|
410
402
|
|
|
411
|
-
|
|
403
|
+
# Setup pre-commit hooks (optional)
|
|
404
|
+
sork setup-hooks
|
|
405
|
+
```
|
|
412
406
|
|
|
413
|
-
|
|
407
|
+
### Usage
|
|
414
408
|
|
|
415
|
-
|
|
416
|
-
|
|
409
|
+
**Run Security Scan:**
|
|
410
|
+
```bash
|
|
411
|
+
sork scan
|
|
412
|
+
```
|
|
417
413
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
- Prefer patched dependency versions over workarounds
|
|
422
|
-
- Fixes should be minimal — don't refactor unrelated code
|
|
423
|
-
- Hardcoded secrets must be replaced with environment variables
|
|
424
|
-
- Input validation must use allowlists, not blocklists
|
|
414
|
+
**Auto-Fix Issues:**
|
|
415
|
+
```bash
|
|
416
|
+
sork fix
|
|
425
417
|
```
|
|
426
418
|
|
|
427
|
-
|
|
419
|
+
**Pre-Commit Checks:**
|
|
420
|
+
```bash
|
|
421
|
+
sork pre-commit
|
|
422
|
+
```
|
|
428
423
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
fileFilters:
|
|
433
|
-
- "**/*.py"
|
|
434
|
-
- "**/*.js"
|
|
435
|
-
- "**/*.ts"
|
|
436
|
-
- "**/*.rb"
|
|
437
|
-
- "**/*.go"
|
|
438
|
-
- "**/*.java"
|
|
439
|
-
instructions: |
|
|
440
|
-
1. Security fixes must include inline comments referencing CWE IDs
|
|
441
|
-
2. Never suppress security warnings without documentation
|
|
442
|
-
3. Prefer patched dependency versions over workarounds
|
|
443
|
-
4. All fixes should be minimal — don't refactor unrelated code
|
|
444
|
-
5. Hardcoded secrets must be replaced with environment variables
|
|
445
|
-
6. Input validation must use allowlists, not blocklists
|
|
424
|
+
**View Status:**
|
|
425
|
+
```bash
|
|
426
|
+
sork status
|
|
446
427
|
```
|
|
447
428
|
|
|
448
|
-
|
|
429
|
+
---
|
|
449
430
|
|
|
450
|
-
|
|
431
|
+
## 🎯 Automatic Code Quality Setup
|
|
451
432
|
|
|
452
|
-
|
|
433
|
+
When you run `sork init`, SORK automatically configures a **complete development environment** with no additional setup required.
|
|
453
434
|
|
|
454
|
-
|
|
435
|
+
### What Gets Installed
|
|
455
436
|
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
437
|
+
| Tool | Purpose | Auto-Setup |
|
|
438
|
+
| --- | --- | --- |
|
|
439
|
+
| **Prettier** | Code formatting | ✅ Creates `.prettierrc.json` |
|
|
440
|
+
| **ESLint** | Code linting & best practices | ✅ Creates `.eslintrc.json` |
|
|
441
|
+
| **Zod** | Runtime type validation | ✅ Creates `src/validators/index.ts` |
|
|
442
|
+
| **npm Scripts** | Quality automation | ✅ Adds `npm run qa:fix` and more |
|
|
443
|
+
| **Documentation** | Best practices guide | ✅ Creates `CODE_QUALITY.md` |
|
|
444
|
+
|
|
445
|
+
### Available Commands
|
|
446
|
+
|
|
447
|
+
After `sork init`, you have:
|
|
448
|
+
|
|
449
|
+
```bash
|
|
450
|
+
npm run lint # Check code quality
|
|
451
|
+
npm run lint:fix # Auto-fix linting issues
|
|
452
|
+
npm run format # Format code with Prettier
|
|
453
|
+
npm run format:check # Verify formatting
|
|
454
|
+
npm run qa # Run full quality checks (lint + format)
|
|
455
|
+
npm run qa:fix # Fix all issues automatically ⭐
|
|
456
|
+
npm run type-check # Validate TypeScript types
|
|
459
457
|
```
|
|
460
458
|
|
|
461
|
-
|
|
459
|
+
### Example Setup Flow
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
# 1. Install SORK globally
|
|
463
|
+
npm install -g sork-queb
|
|
464
|
+
|
|
465
|
+
# 2. Create or navigate to a project
|
|
466
|
+
cd my-nodejs-project
|
|
467
|
+
|
|
468
|
+
# 3. One command sets up everything
|
|
469
|
+
sork init
|
|
470
|
+
# Output:
|
|
471
|
+
# ✅ Prettier configured (.prettierrc.json)
|
|
472
|
+
# ✅ ESLint configured (.eslintrc.json)
|
|
473
|
+
# ✅ Zod validators created (src/validators/index.ts)
|
|
474
|
+
# ✅ Package.json scripts updated
|
|
475
|
+
# ✅ Code quality guide created (CODE_QUALITY.md)
|
|
476
|
+
|
|
477
|
+
# 4. Auto-fix all code issues (optional but recommended)
|
|
478
|
+
npm run qa:fix
|
|
479
|
+
|
|
480
|
+
# 5. Enable security pre-commit checks
|
|
481
|
+
sork setup-hooks
|
|
482
|
+
|
|
483
|
+
# ✨ Done! Fully configured, production-ready development environment
|
|
462
484
|
```
|
|
463
|
-
|
|
485
|
+
|
|
486
|
+
### Runtime Validation with Zod
|
|
487
|
+
|
|
488
|
+
The auto-generated validators provide type-safe error handling:
|
|
489
|
+
|
|
490
|
+
```typescript
|
|
491
|
+
// src/validators/index.ts (auto-created)
|
|
492
|
+
import { validateEnv } from './validators';
|
|
493
|
+
|
|
494
|
+
// Validate environment variables at startup
|
|
495
|
+
const env = validateEnv();
|
|
496
|
+
|
|
497
|
+
if (env.NODE_ENV === 'production') {
|
|
498
|
+
console.log('Running in production mode');
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// Type errors caught at runtime with clear messages:
|
|
502
|
+
// ❌ Environment validation failed:
|
|
503
|
+
// - API_KEY: Required
|
|
504
|
+
// - LOG_LEVEL: Expected 'debug' | 'info' | 'warn' | 'error'
|
|
464
505
|
```
|
|
465
506
|
|
|
507
|
+
### Quality Checks Included
|
|
508
|
+
|
|
509
|
+
**Prettier Rules:**
|
|
510
|
+
|
|
511
|
+
- 2-space indentation
|
|
512
|
+
- Single quotes
|
|
513
|
+
- 100-character line width
|
|
514
|
+
- Trailing commas in multiline structures
|
|
515
|
+
- Consistent formatting across the project
|
|
516
|
+
|
|
517
|
+
**ESLint Rules:**
|
|
518
|
+
|
|
519
|
+
- No unused variables
|
|
520
|
+
- No console.log in production
|
|
521
|
+
- Strict equality (===)
|
|
522
|
+
- Proper error handling
|
|
523
|
+
- TypeScript best practices
|
|
524
|
+
- Security-focused rules
|
|
525
|
+
|
|
526
|
+
**Pre-Commit Hooks:**
|
|
527
|
+
|
|
528
|
+
- Runs before every git commit
|
|
529
|
+
- Blocks commits with CRITICAL vulnerabilities
|
|
530
|
+
- Scans only staged changes (fast!)
|
|
531
|
+
- Auto-suggests fixes via `npm run qa:fix`
|
|
532
|
+
|
|
466
533
|
---
|
|
467
534
|
|
|
468
535
|
## Tech Stack
|
|
@@ -471,19 +538,19 @@ SORK activates automatically on your next pipeline security scan.
|
|
|
471
538
|
|
|
472
539
|
```
|
|
473
540
|
┌──────────────────────────────────────────────────────────────────┐
|
|
474
|
-
│
|
|
541
|
+
│ NODE.JS PROJECT │
|
|
475
542
|
│ │
|
|
476
543
|
│ ┌────────────────┐ ┌──────────────────────────────────┐ │
|
|
477
|
-
│ │ │ │
|
|
478
|
-
│ │
|
|
479
|
-
│ │
|
|
480
|
-
│ │
|
|
481
|
-
│ │
|
|
482
|
-
│ │
|
|
483
|
-
│ │ │
|
|
484
|
-
│ │ │
|
|
544
|
+
│ │ │ │ SORK System │ │
|
|
545
|
+
│ │ Security │ │ │ │
|
|
546
|
+
│ │ Scanning │ │ ┌──────────┐ ┌────────────┐ │ │
|
|
547
|
+
│ │ (ESLint, │ │ │ Anthropic │ │ SORK Core │ │ │
|
|
548
|
+
│ │ etc.) │ │ │ Claude │ │ Agents │ │ │
|
|
549
|
+
│ │ ┌─────────┐ │ │ └─────┬────┘ └─────┬──────┘ │ │
|
|
550
|
+
│ │ │ Scanner │──│──────▶│ │ │ │ │
|
|
551
|
+
│ │ │ Tools │ │ │ ▼ ▼ │ │
|
|
485
552
|
│ │ └─────────┘ │ │ ┌──────────────────────────┐ │ │
|
|
486
|
-
│ │ │ │ │
|
|
553
|
+
│ │ │ │ │ SORK AGENT FLOW │ │ │
|
|
487
554
|
│ └────────────────┘ │ │ │ │ │
|
|
488
555
|
│ │ │ ┌────────┐ │ │ │
|
|
489
556
|
│ │ │ │Triage │ │ │ │
|
|
@@ -509,9 +576,10 @@ SORK activates automatically on your next pipeline security scan.
|
|
|
509
576
|
│ ▼ │
|
|
510
577
|
│ ┌────────────────┐ ┌──────────────────────────────────┐ │
|
|
511
578
|
│ │ │ │ │ │
|
|
512
|
-
│ │
|
|
513
|
-
│ │
|
|
514
|
-
│ │
|
|
579
|
+
│ │ Logs & │ │ Fixed Code │ │
|
|
580
|
+
│ │ Reports │ │ (Auto-patched files) │ │
|
|
581
|
+
│ │ (Triage │ │ │ │
|
|
582
|
+
│ │ Reports) │ │ + Verification Reports │ │
|
|
515
583
|
│ │ │ │ │ │
|
|
516
584
|
│ └────────────────┘ └──────────────────────────────────┘ │
|
|
517
585
|
│ │
|
|
@@ -522,18 +590,18 @@ SORK activates automatically on your next pipeline security scan.
|
|
|
522
590
|
|
|
523
591
|
| Layer | Technology | Role |
|
|
524
592
|
|-------|-----------|------|
|
|
525
|
-
| **
|
|
526
|
-
| **
|
|
527
|
-
| **
|
|
528
|
-
| **
|
|
529
|
-
| **
|
|
530
|
-
| **
|
|
531
|
-
| **
|
|
532
|
-
| **Security
|
|
533
|
-
| **
|
|
534
|
-
| **
|
|
535
|
-
| **
|
|
536
|
-
| **
|
|
593
|
+
| **Runtime** | Node.js 18+ | Executes SORK agents and scanning |
|
|
594
|
+
| **Language** | TypeScript | Full type safety for all agents |
|
|
595
|
+
| **AI Model** | Anthropic Claude | Powers all 3 agents with security insights |
|
|
596
|
+
| **Package Manager** | npm | Distributes SORK globally |
|
|
597
|
+
| **Orchestration** | TypeScript Classes | Chains agents: Triage → Remediation → Keeper |
|
|
598
|
+
| **CLI Tool** | minimist | Command-line argument parsing |
|
|
599
|
+
| **Scanning** | Custom Scanner | JavaScript/TypeScript vulnerability detection |
|
|
600
|
+
| **Security Patterns** | RegEx + AST | Pattern matching for SQLi, XSS, secrets, etc. |
|
|
601
|
+
| **Code Fixing** | File API + Prettier | Applies fixes, formats, and lints code |
|
|
602
|
+
| **Version Control** | Git Hooks | Pre-commit integration for automation |
|
|
603
|
+
| **Configuration** | JSON | .sorkrc.json configuration file |
|
|
604
|
+
| **Logging** | chalk + Console | Colored output with severity levels |
|
|
537
605
|
|
|
538
606
|
### Tools Usage Map
|
|
539
607
|
|
|
@@ -699,25 +767,9 @@ Junior dev pushes code with a security flaw. SORK catches it immediately, genera
|
|
|
699
767
|
|
|
700
768
|
---
|
|
701
769
|
|
|
702
|
-
## Hackathon
|
|
703
|
-
|
|
704
|
-
**Competition:** [GitLab Duo Agent Platform Challenge](https://gitlab.devpost.com)
|
|
705
|
-
|
|
706
|
-
**Category:** Most Impactful on GitLab & Anthropic
|
|
707
|
-
|
|
708
|
-
**Team:**
|
|
709
|
-
|
|
710
|
-
| Member | Role | Responsibility |
|
|
711
|
-
|--------|------|---------------|
|
|
712
|
-
| [Your Name] | Architect | Agent design, flow orchestration, system prompts |
|
|
713
|
-
| [Teammate A] | Lab Builder | Test infrastructure, vulnerability scenarios, demo video |
|
|
714
|
-
| [Teammate B] | Documenter | README, Devpost submission, compliance, documentation |
|
|
715
|
-
|
|
716
|
-
---
|
|
717
|
-
|
|
718
770
|
## Built With
|
|
719
771
|
|
|
720
|
-
`
|
|
772
|
+
`Node.js` · `TypeScript` · `Anthropic Claude` · `npm` · `ESLint` · `Prettier` · `minimist` · `chalk` · `GitHub` · `JavaScript`
|
|
721
773
|
|
|
722
774
|
---
|
|
723
775
|
|
|
@@ -754,4 +806,7 @@ SOFTWARE.
|
|
|
754
806
|
<p align="center">
|
|
755
807
|
<strong>S O R K</strong><br>
|
|
756
808
|
Security Orchestration, Remediation & Keeping<br><br>
|
|
757
|
-
<em>Keeping your code secure — automatically
|
|
809
|
+
<em>Keeping your Node.js code secure — automatically.</em><br><br>
|
|
810
|
+
Install: <code>npm install -g sork-queb</code><br>
|
|
811
|
+
GitHub: <a href="https://github.com/Atofinite5/SORK-Security-Orchestration-Remediation-Keeping-">Atofinite5/SORK</a><br>
|
|
812
|
+
npm: <a href="https://www.npmjs.com/package/sork-queb">sork-queb</a>
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -5,5 +5,6 @@ export { KeeperAgent } from './agents/keeper.js';
|
|
|
5
5
|
export { SecurityScanner } from './security/scanner.js';
|
|
6
6
|
export { CodeFixer } from './fixers/codeFixer.js';
|
|
7
7
|
export { Logger } from './utils/logger.js';
|
|
8
|
+
export { ProjectScaffolder } from './utils/scaffolder.js';
|
|
8
9
|
export type { Vulnerability, VulnerabilityType, CodeFix, TriageResult, VerificationResult, AuditLogEntry, SorkSession, SorkConfig, SorkOptions, } from './types/index.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,kBAAkB,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -5,4 +5,5 @@ export { KeeperAgent } from './agents/keeper.js';
|
|
|
5
5
|
export { SecurityScanner } from './security/scanner.js';
|
|
6
6
|
export { CodeFixer } from './fixers/codeFixer.js';
|
|
7
7
|
export { Logger } from './utils/logger.js';
|
|
8
|
+
export { ProjectScaffolder } from './utils/scaffolder.js';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../lib/orchestrator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../lib/orchestrator.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,GAAE,WAAgB;IAoB/B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCrB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CpB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IA2B7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B9B"}
|
package/dist/lib/orchestrator.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { promises as fs } from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { Logger } from './utils/logger.js';
|
|
4
|
+
import { ProjectScaffolder } from './utils/scaffolder.js';
|
|
4
5
|
import { TriageAgent } from './agents/triage.js';
|
|
5
6
|
import { RemediationAgent } from './agents/remediation.js';
|
|
6
7
|
import { KeeperAgent } from './agents/keeper.js';
|
|
@@ -33,6 +34,7 @@ export class SorkOrchestrator {
|
|
|
33
34
|
}
|
|
34
35
|
async initialize() {
|
|
35
36
|
this.logger.section('SORK Initialization');
|
|
37
|
+
// Setup SORK configuration
|
|
36
38
|
const sorkConfig = {
|
|
37
39
|
version: '1.0.0',
|
|
38
40
|
initialized: new Date().toISOString(),
|
|
@@ -53,9 +55,20 @@ export class SorkOrchestrator {
|
|
|
53
55
|
const hooksDir = path.join(this.projectPath, '.sork', 'hooks');
|
|
54
56
|
await fs.mkdir(hooksDir, { recursive: true });
|
|
55
57
|
this.logger.success(`Hooks directory created`);
|
|
58
|
+
// Setup development environment with Prettier, ESLint, Zod
|
|
59
|
+
this.logger.info('');
|
|
60
|
+
const scaffolder = new ProjectScaffolder(this.projectPath, this.logger);
|
|
61
|
+
await scaffolder.scaffoldAll();
|
|
62
|
+
this.logger.info('');
|
|
56
63
|
this.logger.info('✓ Connected to Anthropic model');
|
|
57
64
|
this.logger.info('✓ 3 agents registered: READY');
|
|
58
|
-
this.logger.info('
|
|
65
|
+
this.logger.info('✓ Prettier configured for code formatting');
|
|
66
|
+
this.logger.info('✓ ESLint configured for code quality');
|
|
67
|
+
this.logger.info('✓ Zod configured for runtime validation');
|
|
68
|
+
this.logger.info('\nNext steps:');
|
|
69
|
+
this.logger.info(' 1. npm run qa:fix (Fix all code quality issues)');
|
|
70
|
+
this.logger.info(' 2. sork setup-hooks (Enable security pre-commit checks)');
|
|
71
|
+
this.logger.info(' 3. Read CODE_QUALITY.md (Learn best practices)');
|
|
59
72
|
}
|
|
60
73
|
async scan() {
|
|
61
74
|
this.logger.section('SORK Security Scan');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../lib/orchestrator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../lib/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Logger } from './logger.js';
|
|
2
|
+
export declare class ProjectScaffolder {
|
|
3
|
+
private projectPath;
|
|
4
|
+
private logger;
|
|
5
|
+
constructor(projectPath: string, logger: Logger);
|
|
6
|
+
setupPrettier(): Promise<void>;
|
|
7
|
+
setupESLint(): Promise<void>;
|
|
8
|
+
setupZodValidation(): Promise<void>;
|
|
9
|
+
setupScripts(): Promise<void>;
|
|
10
|
+
createQualityGuide(): Promise<void>;
|
|
11
|
+
scaffoldAll(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=scaffolder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffolder.d.ts","sourceRoot":"","sources":["../../../lib/utils/scaffolder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qBAAa,iBAAiB;IAChB,OAAO,CAAC,WAAW;IAAU,OAAO,CAAC,MAAM;gBAAnC,WAAW,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM;IAEzD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC9B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAoE5B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0EnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD7B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoFnC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BnC"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export class ProjectScaffolder {
|
|
4
|
+
projectPath;
|
|
5
|
+
logger;
|
|
6
|
+
constructor(projectPath, logger) {
|
|
7
|
+
this.projectPath = projectPath;
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
}
|
|
10
|
+
async setupPrettier() {
|
|
11
|
+
this.logger.info('Setting up Prettier...');
|
|
12
|
+
const prettierConfig = {
|
|
13
|
+
semi: true,
|
|
14
|
+
trailingComma: 'es5',
|
|
15
|
+
singleQuote: true,
|
|
16
|
+
printWidth: 100,
|
|
17
|
+
tabWidth: 2,
|
|
18
|
+
useTabs: false,
|
|
19
|
+
bracketSpacing: true,
|
|
20
|
+
arrowParens: 'always',
|
|
21
|
+
endOfLine: 'lf',
|
|
22
|
+
};
|
|
23
|
+
const configPath = path.join(this.projectPath, '.prettierrc.json');
|
|
24
|
+
await fs.writeFile(configPath, JSON.stringify(prettierConfig, null, 2));
|
|
25
|
+
this.logger.success('✓ Prettier configured (.prettierrc.json)');
|
|
26
|
+
// Create .prettierignore
|
|
27
|
+
const prettierIgnore = `node_modules/
|
|
28
|
+
dist/
|
|
29
|
+
build/
|
|
30
|
+
coverage/
|
|
31
|
+
.next/
|
|
32
|
+
out/
|
|
33
|
+
.env*
|
|
34
|
+
*.log
|
|
35
|
+
`;
|
|
36
|
+
const ignorePath = path.join(this.projectPath, '.prettierignore');
|
|
37
|
+
await fs.writeFile(ignorePath, prettierIgnore);
|
|
38
|
+
this.logger.success('✓ Prettier ignore file created');
|
|
39
|
+
}
|
|
40
|
+
async setupESLint() {
|
|
41
|
+
this.logger.info('Setting up ESLint...');
|
|
42
|
+
const eslintConfig = {
|
|
43
|
+
env: {
|
|
44
|
+
node: true,
|
|
45
|
+
es2022: true,
|
|
46
|
+
},
|
|
47
|
+
extends: ['eslint:recommended'],
|
|
48
|
+
parserOptions: {
|
|
49
|
+
ecmaVersion: 'latest',
|
|
50
|
+
sourceType: 'module',
|
|
51
|
+
},
|
|
52
|
+
rules: {
|
|
53
|
+
'no-console': ['warn', { allow: ['warn', 'error'] }],
|
|
54
|
+
'no-unused-vars': 'error',
|
|
55
|
+
'prefer-const': 'error',
|
|
56
|
+
'no-var': 'error',
|
|
57
|
+
'eqeqeq': ['error', 'always'],
|
|
58
|
+
'curly': 'error',
|
|
59
|
+
'semi': ['error', 'always'],
|
|
60
|
+
'quotes': ['error', 'single'],
|
|
61
|
+
'indent': ['error', 2],
|
|
62
|
+
'comma-dangle': ['error', 'always-multiline'],
|
|
63
|
+
'space-before-function-paren': ['error', 'never'],
|
|
64
|
+
'keyword-spacing': 'error',
|
|
65
|
+
'space-infix-ops': 'error',
|
|
66
|
+
'object-curly-spacing': ['error', 'always'],
|
|
67
|
+
},
|
|
68
|
+
overrides: [
|
|
69
|
+
{
|
|
70
|
+
files: ['*.ts', '*.tsx'],
|
|
71
|
+
parser: '@typescript-eslint/parser',
|
|
72
|
+
extends: [
|
|
73
|
+
'eslint:recommended',
|
|
74
|
+
'plugin:@typescript-eslint/recommended',
|
|
75
|
+
],
|
|
76
|
+
plugins: ['@typescript-eslint'],
|
|
77
|
+
rules: {
|
|
78
|
+
'@typescript-eslint/explicit-function-return-types': 'off',
|
|
79
|
+
'@typescript-eslint/no-unused-vars': [
|
|
80
|
+
'error',
|
|
81
|
+
{ argsIgnorePattern: '^_' },
|
|
82
|
+
],
|
|
83
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
84
|
+
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
const configPath = path.join(this.projectPath, '.eslintrc.json');
|
|
90
|
+
await fs.writeFile(configPath, JSON.stringify(eslintConfig, null, 2));
|
|
91
|
+
this.logger.success('✓ ESLint configured (.eslintrc.json)');
|
|
92
|
+
// Create .eslintignore
|
|
93
|
+
const eslintIgnore = `node_modules/
|
|
94
|
+
dist/
|
|
95
|
+
build/
|
|
96
|
+
coverage/
|
|
97
|
+
.next/
|
|
98
|
+
*.config.js
|
|
99
|
+
`;
|
|
100
|
+
const ignorePath = path.join(this.projectPath, '.eslintignore');
|
|
101
|
+
await fs.writeFile(ignorePath, eslintIgnore);
|
|
102
|
+
this.logger.success('✓ ESLint ignore file created');
|
|
103
|
+
}
|
|
104
|
+
async setupZodValidation() {
|
|
105
|
+
this.logger.info('Setting up Zod validation schemas...');
|
|
106
|
+
const zodValidatorCode = `import { z } from 'zod';
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Environment Variable Validation Schema
|
|
110
|
+
* Validates all environment variables at startup
|
|
111
|
+
*/
|
|
112
|
+
export const envSchema = z.object({
|
|
113
|
+
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
|
|
114
|
+
LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
|
|
115
|
+
// Add your env vars here
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
export type Env = z.infer<typeof envSchema>;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Validate environment variables
|
|
122
|
+
* Throws ZodError if validation fails
|
|
123
|
+
*/
|
|
124
|
+
export function validateEnv(): Env {
|
|
125
|
+
try {
|
|
126
|
+
return envSchema.parse(process.env);
|
|
127
|
+
} catch (error) {
|
|
128
|
+
if (error instanceof z.ZodError) {
|
|
129
|
+
console.error('❌ Environment validation failed:');
|
|
130
|
+
error.errors.forEach((err) => {
|
|
131
|
+
console.error(\` - \${err.path.join('.')}: \${err.message}\`);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Generic API Response Validator
|
|
140
|
+
* Use this for validating API responses
|
|
141
|
+
*/
|
|
142
|
+
export const apiResponseSchema = z.object({
|
|
143
|
+
success: z.boolean(),
|
|
144
|
+
message: z.string(),
|
|
145
|
+
data: z.any().optional(),
|
|
146
|
+
error: z.string().optional(),
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
export type ApiResponse = z.infer<typeof apiResponseSchema>;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Validate API responses with proper error messages
|
|
153
|
+
*/
|
|
154
|
+
export function validateApiResponse(data: unknown): ApiResponse {
|
|
155
|
+
try {
|
|
156
|
+
return apiResponseSchema.parse(data);
|
|
157
|
+
} catch (error) {
|
|
158
|
+
if (error instanceof z.ZodError) {
|
|
159
|
+
const messages = error.errors
|
|
160
|
+
.map((err) => \`\${err.path.join('.')}: \${err.message}\`)
|
|
161
|
+
.join(', ');
|
|
162
|
+
throw new Error(\`Invalid API response: \${messages}\`);
|
|
163
|
+
}
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
`;
|
|
168
|
+
const validatorsDir = path.join(this.projectPath, 'src', 'validators');
|
|
169
|
+
await fs.mkdir(validatorsDir, { recursive: true });
|
|
170
|
+
const validatorPath = path.join(validatorsDir, 'index.ts');
|
|
171
|
+
await fs.writeFile(validatorPath, zodValidatorCode);
|
|
172
|
+
this.logger.success('✓ Zod validators created (src/validators/index.ts)');
|
|
173
|
+
}
|
|
174
|
+
async setupScripts() {
|
|
175
|
+
this.logger.info('Updating package.json scripts...');
|
|
176
|
+
try {
|
|
177
|
+
const packageJsonPath = path.join(this.projectPath, 'package.json');
|
|
178
|
+
const packageContent = await fs.readFile(packageJsonPath, 'utf-8');
|
|
179
|
+
const packageJson = JSON.parse(packageContent);
|
|
180
|
+
if (!packageJson.scripts) {
|
|
181
|
+
packageJson.scripts = {};
|
|
182
|
+
}
|
|
183
|
+
// Add quality assurance scripts
|
|
184
|
+
packageJson.scripts.lint = 'eslint . --ext .ts,.tsx,.js,.jsx';
|
|
185
|
+
packageJson.scripts['lint:fix'] = 'eslint . --ext .ts,.tsx,.js,.jsx --fix';
|
|
186
|
+
packageJson.scripts.format = 'prettier --write .';
|
|
187
|
+
packageJson.scripts['format:check'] = 'prettier --check .';
|
|
188
|
+
packageJson.scripts['qa'] = 'npm run format:check && npm run lint && npm run type-check';
|
|
189
|
+
packageJson.scripts['qa:fix'] = 'npm run format && npm run lint:fix';
|
|
190
|
+
// Add Zod if not present
|
|
191
|
+
if (!packageJson.dependencies?.zod && !packageJson.devDependencies?.zod) {
|
|
192
|
+
if (!packageJson.dependencies) {
|
|
193
|
+
packageJson.dependencies = {};
|
|
194
|
+
}
|
|
195
|
+
packageJson.dependencies.zod = '^3.22.0';
|
|
196
|
+
}
|
|
197
|
+
// Ensure Prettier and ESLint are in devDependencies
|
|
198
|
+
if (!packageJson.devDependencies) {
|
|
199
|
+
packageJson.devDependencies = {};
|
|
200
|
+
}
|
|
201
|
+
packageJson.devDependencies.prettier = '^3.0.0';
|
|
202
|
+
packageJson.devDependencies.eslint = '^8.50.0';
|
|
203
|
+
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
204
|
+
this.logger.success('✓ Package.json scripts updated');
|
|
205
|
+
this.logger.info(' Available commands:');
|
|
206
|
+
this.logger.info(' npm run lint - Check code quality');
|
|
207
|
+
this.logger.info(' npm run lint:fix - Auto-fix linting issues');
|
|
208
|
+
this.logger.info(' npm run format - Format code with Prettier');
|
|
209
|
+
this.logger.info(' npm run qa - Run full quality checks');
|
|
210
|
+
this.logger.info(' npm run qa:fix - Auto-fix all quality issues');
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
this.logger.warn(`Could not update package.json: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async createQualityGuide() {
|
|
217
|
+
this.logger.info('Creating quality guide...');
|
|
218
|
+
const guideContent = `# Code Quality Guide
|
|
219
|
+
|
|
220
|
+
This project uses **SORK** with **Prettier**, **ESLint**, and **Zod** for maximum code quality.
|
|
221
|
+
|
|
222
|
+
## 🎯 Quality Standards
|
|
223
|
+
|
|
224
|
+
### Formatting (Prettier)
|
|
225
|
+
- 2 space indentation
|
|
226
|
+
- Single quotes
|
|
227
|
+
- Trailing commas in multiline
|
|
228
|
+
- 100 character line width
|
|
229
|
+
- Auto-formatted on every commit (via SORK)
|
|
230
|
+
|
|
231
|
+
### Linting (ESLint)
|
|
232
|
+
- No unused variables
|
|
233
|
+
- No console.log (except warnings/errors)
|
|
234
|
+
- Const-first variable declarations
|
|
235
|
+
- Strict equality (===)
|
|
236
|
+
- Explicit error handling
|
|
237
|
+
|
|
238
|
+
### Validation (Zod)
|
|
239
|
+
- Runtime type validation for all external data
|
|
240
|
+
- Environment variable validation at startup
|
|
241
|
+
- API response validation
|
|
242
|
+
- Custom validation schemas in \`src/validators/\`
|
|
243
|
+
|
|
244
|
+
## 🚀 Workflow
|
|
245
|
+
|
|
246
|
+
### Before Committing
|
|
247
|
+
\`\`\`bash
|
|
248
|
+
npm run qa:fix # Auto-fix all issues
|
|
249
|
+
git add .
|
|
250
|
+
git commit -m "message" # SORK pre-commit hook runs automatically
|
|
251
|
+
\`\`\`
|
|
252
|
+
|
|
253
|
+
### Quality Checks
|
|
254
|
+
\`\`\`bash
|
|
255
|
+
npm run lint # Check linting
|
|
256
|
+
npm run format:check # Check formatting
|
|
257
|
+
npm run type-check # Check TypeScript types
|
|
258
|
+
npm run qa # Run all checks
|
|
259
|
+
\`\`\`
|
|
260
|
+
|
|
261
|
+
## 📋 Validation Examples
|
|
262
|
+
|
|
263
|
+
### Environment Variables
|
|
264
|
+
\`\`\`typescript
|
|
265
|
+
import { validateEnv } from './validators';
|
|
266
|
+
|
|
267
|
+
const env = validateEnv(); // Throws ZodError if invalid
|
|
268
|
+
console.log(env.NODE_ENV); // Type-safe!
|
|
269
|
+
\`\`\`
|
|
270
|
+
|
|
271
|
+
### API Responses
|
|
272
|
+
\`\`\`typescript
|
|
273
|
+
import { validateApiResponse } from './validators';
|
|
274
|
+
|
|
275
|
+
const response = await fetch('/api/user');
|
|
276
|
+
const data = validateApiResponse(await response.json()); // Validated!
|
|
277
|
+
\`\`\`
|
|
278
|
+
|
|
279
|
+
## 🔍 SORK Integration
|
|
280
|
+
|
|
281
|
+
When you run \`sork init && sork setup-hooks\`:
|
|
282
|
+
1. Security vulnerabilities are automatically detected
|
|
283
|
+
2. Prettier & ESLint run before every commit
|
|
284
|
+
3. Zod validates all data flows
|
|
285
|
+
4. Pre-commit hook blocks unsafe commits
|
|
286
|
+
|
|
287
|
+
## ❓ Need Help?
|
|
288
|
+
|
|
289
|
+
- \`sork --help\` - See SORK commands
|
|
290
|
+
- \`npm run qa:fix\` - Auto-fix all issues
|
|
291
|
+
- Check \`src/validators/\` for validation schemas
|
|
292
|
+
`;
|
|
293
|
+
const guidePath = path.join(this.projectPath, 'CODE_QUALITY.md');
|
|
294
|
+
await fs.writeFile(guidePath, guideContent);
|
|
295
|
+
this.logger.success('✓ Code quality guide created (CODE_QUALITY.md)');
|
|
296
|
+
}
|
|
297
|
+
async scaffoldAll() {
|
|
298
|
+
this.logger.section('Setting Up Complete Development Environment');
|
|
299
|
+
try {
|
|
300
|
+
await this.setupPrettier();
|
|
301
|
+
await this.setupESLint();
|
|
302
|
+
await this.setupZodValidation();
|
|
303
|
+
await this.setupScripts();
|
|
304
|
+
await this.createQualityGuide();
|
|
305
|
+
this.logger.section('✅ Development Environment Ready!');
|
|
306
|
+
this.logger.success('Your project now has:');
|
|
307
|
+
this.logger.info(' ✓ Prettier - Code formatting');
|
|
308
|
+
this.logger.info(' ✓ ESLint - Code linting & best practices');
|
|
309
|
+
this.logger.info(' ✓ Zod - Runtime type validation');
|
|
310
|
+
this.logger.info(' ✓ SORK - Security orchestration');
|
|
311
|
+
this.logger.info(' ✓ Pre-commit hooks - Automatic checks');
|
|
312
|
+
this.logger.info('\nRun: npm run qa:fix to auto-fix all issues');
|
|
313
|
+
this.logger.info('Then: sork setup-hooks to enable security checks');
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
this.logger.error(`Setup failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
317
|
+
throw error;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=scaffolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../../../lib/utils/scaffolder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sork-queb",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "SORK - Security Orchestration, Remediation & Keeping. Global AI security brain for Node projects.",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "SORK - Security Orchestration, Remediation & Keeping. Global AI security brain for Node projects with Prettier, ESLint & Zod validation.",
|
|
5
5
|
"main": "dist/lib/index.js",
|
|
6
6
|
"types": "dist/lib/index.d.ts",
|
|
7
7
|
"bin": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"README.md"
|
|
13
13
|
],
|
|
14
14
|
"type": "module",
|
|
15
|
-
"keywords": ["security", "orchestration", "remediation", "linting", "auto-fix", "pre-commit"],
|
|
15
|
+
"keywords": ["security", "orchestration", "remediation", "linting", "auto-fix", "pre-commit", "prettier", "eslint", "zod", "validation", "code-quality"],
|
|
16
16
|
"author": "Bhargav Kalambhe",
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"scripts": {
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
"axios": "^1.6.0",
|
|
31
31
|
"chalk": "^5.3.0",
|
|
32
32
|
"dotenv": "^16.0.0",
|
|
33
|
-
"minimist": "^1.2.8"
|
|
33
|
+
"minimist": "^1.2.8",
|
|
34
|
+
"zod": "^3.22.0"
|
|
34
35
|
},
|
|
35
36
|
"optionalDependencies": {
|
|
36
37
|
"@anthropic-ai/sdk": "^0.20.0"
|