sork-queb 1.0.0 → 1.1.1
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 +172 -104
- 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,169 @@ 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
|
+
#### Option 1: Global Installation (Recommended)
|
|
391
390
|
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
- template: Security/Dependency-Scanning.gitlab-ci.yml
|
|
396
|
-
- template: Security/Secret-Detection.gitlab-ci.yml
|
|
391
|
+
```bash
|
|
392
|
+
# Install globally (one-time)
|
|
393
|
+
npm install -g sork-queb
|
|
397
394
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
- security
|
|
402
|
-
```
|
|
395
|
+
# Initialize in your project
|
|
396
|
+
cd your-project
|
|
397
|
+
sork init
|
|
403
398
|
|
|
404
|
-
|
|
399
|
+
# Run security scan
|
|
400
|
+
sork scan
|
|
405
401
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
3. Repeat for `SORK Remediation` and `SORK Keeper`
|
|
409
|
-
4. In your project: **Automate → Agents** → enable all three
|
|
402
|
+
# Auto-fix vulnerabilities
|
|
403
|
+
sork fix
|
|
410
404
|
|
|
411
|
-
|
|
405
|
+
# Setup pre-commit hooks (optional)
|
|
406
|
+
sork setup-hooks
|
|
407
|
+
```
|
|
412
408
|
|
|
413
|
-
|
|
409
|
+
#### Option 2: Use npx (No Installation)
|
|
414
410
|
|
|
415
|
-
```
|
|
416
|
-
#
|
|
411
|
+
```bash
|
|
412
|
+
# Run without installing globally - always latest version
|
|
413
|
+
cd your-project
|
|
414
|
+
npx sork-queb init
|
|
415
|
+
npx sork-queb scan
|
|
416
|
+
npx sork-queb fix
|
|
417
|
+
npx sork-queb setup-hooks
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### Usage
|
|
417
421
|
|
|
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
|
|
422
|
+
**Run Security Scan:**
|
|
423
|
+
```bash
|
|
424
|
+
sork scan
|
|
425
425
|
```
|
|
426
426
|
|
|
427
|
-
|
|
427
|
+
**Auto-Fix Issues:**
|
|
428
|
+
```bash
|
|
429
|
+
sork fix
|
|
430
|
+
```
|
|
428
431
|
|
|
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
|
|
432
|
+
**Pre-Commit Checks:**
|
|
433
|
+
```bash
|
|
434
|
+
sork pre-commit
|
|
446
435
|
```
|
|
447
436
|
|
|
448
|
-
|
|
437
|
+
**View Status:**
|
|
438
|
+
```bash
|
|
439
|
+
sork status
|
|
440
|
+
```
|
|
449
441
|
|
|
450
|
-
|
|
442
|
+
---
|
|
451
443
|
|
|
452
|
-
|
|
444
|
+
## 🎯 Automatic Code Quality Setup
|
|
453
445
|
|
|
454
|
-
|
|
446
|
+
When you run `sork init`, SORK automatically configures a **complete development environment** with no additional setup required.
|
|
455
447
|
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
448
|
+
### What Gets Installed
|
|
449
|
+
|
|
450
|
+
| Tool | Purpose | Auto-Setup |
|
|
451
|
+
| --- | --- | --- |
|
|
452
|
+
| **Prettier** | Code formatting | ✅ Creates `.prettierrc.json` |
|
|
453
|
+
| **ESLint** | Code linting & best practices | ✅ Creates `.eslintrc.json` |
|
|
454
|
+
| **Zod** | Runtime type validation | ✅ Creates `src/validators/index.ts` |
|
|
455
|
+
| **npm Scripts** | Quality automation | ✅ Adds `npm run qa:fix` and more |
|
|
456
|
+
| **Documentation** | Best practices guide | ✅ Creates `CODE_QUALITY.md` |
|
|
457
|
+
|
|
458
|
+
### Available Commands
|
|
459
|
+
|
|
460
|
+
After `sork init`, you have:
|
|
461
|
+
|
|
462
|
+
```bash
|
|
463
|
+
npm run lint # Check code quality
|
|
464
|
+
npm run lint:fix # Auto-fix linting issues
|
|
465
|
+
npm run format # Format code with Prettier
|
|
466
|
+
npm run format:check # Verify formatting
|
|
467
|
+
npm run qa # Run full quality checks (lint + format)
|
|
468
|
+
npm run qa:fix # Fix all issues automatically ⭐
|
|
469
|
+
npm run type-check # Validate TypeScript types
|
|
459
470
|
```
|
|
460
471
|
|
|
461
|
-
|
|
472
|
+
### Example Setup Flow
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
# 1. Install SORK globally
|
|
476
|
+
npm install -g sork-queb
|
|
477
|
+
|
|
478
|
+
# 2. Create or navigate to a project
|
|
479
|
+
cd my-nodejs-project
|
|
480
|
+
|
|
481
|
+
# 3. One command sets up everything
|
|
482
|
+
sork init
|
|
483
|
+
# Output:
|
|
484
|
+
# ✅ Prettier configured (.prettierrc.json)
|
|
485
|
+
# ✅ ESLint configured (.eslintrc.json)
|
|
486
|
+
# ✅ Zod validators created (src/validators/index.ts)
|
|
487
|
+
# ✅ Package.json scripts updated
|
|
488
|
+
# ✅ Code quality guide created (CODE_QUALITY.md)
|
|
489
|
+
|
|
490
|
+
# 4. Auto-fix all code issues (optional but recommended)
|
|
491
|
+
npm run qa:fix
|
|
492
|
+
|
|
493
|
+
# 5. Enable security pre-commit checks
|
|
494
|
+
sork setup-hooks
|
|
495
|
+
|
|
496
|
+
# ✨ Done! Fully configured, production-ready development environment
|
|
462
497
|
```
|
|
463
|
-
|
|
498
|
+
|
|
499
|
+
### Runtime Validation with Zod
|
|
500
|
+
|
|
501
|
+
The auto-generated validators provide type-safe error handling:
|
|
502
|
+
|
|
503
|
+
```typescript
|
|
504
|
+
// src/validators/index.ts (auto-created)
|
|
505
|
+
import { validateEnv } from './validators';
|
|
506
|
+
|
|
507
|
+
// Validate environment variables at startup
|
|
508
|
+
const env = validateEnv();
|
|
509
|
+
|
|
510
|
+
if (env.NODE_ENV === 'production') {
|
|
511
|
+
console.log('Running in production mode');
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
// Type errors caught at runtime with clear messages:
|
|
515
|
+
// ❌ Environment validation failed:
|
|
516
|
+
// - API_KEY: Required
|
|
517
|
+
// - LOG_LEVEL: Expected 'debug' | 'info' | 'warn' | 'error'
|
|
464
518
|
```
|
|
465
519
|
|
|
520
|
+
### Quality Checks Included
|
|
521
|
+
|
|
522
|
+
**Prettier Rules:**
|
|
523
|
+
|
|
524
|
+
- 2-space indentation
|
|
525
|
+
- Single quotes
|
|
526
|
+
- 100-character line width
|
|
527
|
+
- Trailing commas in multiline structures
|
|
528
|
+
- Consistent formatting across the project
|
|
529
|
+
|
|
530
|
+
**ESLint Rules:**
|
|
531
|
+
|
|
532
|
+
- No unused variables
|
|
533
|
+
- No console.log in production
|
|
534
|
+
- Strict equality (===)
|
|
535
|
+
- Proper error handling
|
|
536
|
+
- TypeScript best practices
|
|
537
|
+
- Security-focused rules
|
|
538
|
+
|
|
539
|
+
**Pre-Commit Hooks:**
|
|
540
|
+
|
|
541
|
+
- Runs before every git commit
|
|
542
|
+
- Blocks commits with CRITICAL vulnerabilities
|
|
543
|
+
- Scans only staged changes (fast!)
|
|
544
|
+
- Auto-suggests fixes via `npm run qa:fix`
|
|
545
|
+
|
|
466
546
|
---
|
|
467
547
|
|
|
468
548
|
## Tech Stack
|
|
@@ -471,19 +551,19 @@ SORK activates automatically on your next pipeline security scan.
|
|
|
471
551
|
|
|
472
552
|
```
|
|
473
553
|
┌──────────────────────────────────────────────────────────────────┐
|
|
474
|
-
│
|
|
554
|
+
│ NODE.JS PROJECT │
|
|
475
555
|
│ │
|
|
476
556
|
│ ┌────────────────┐ ┌──────────────────────────────────┐ │
|
|
477
|
-
│ │ │ │
|
|
478
|
-
│ │
|
|
479
|
-
│ │
|
|
480
|
-
│ │
|
|
481
|
-
│ │
|
|
482
|
-
│ │
|
|
483
|
-
│ │ │
|
|
484
|
-
│ │ │
|
|
557
|
+
│ │ │ │ SORK System │ │
|
|
558
|
+
│ │ Security │ │ │ │
|
|
559
|
+
│ │ Scanning │ │ ┌──────────┐ ┌────────────┐ │ │
|
|
560
|
+
│ │ (ESLint, │ │ │ Anthropic │ │ SORK Core │ │ │
|
|
561
|
+
│ │ etc.) │ │ │ Claude │ │ Agents │ │ │
|
|
562
|
+
│ │ ┌─────────┐ │ │ └─────┬────┘ └─────┬──────┘ │ │
|
|
563
|
+
│ │ │ Scanner │──│──────▶│ │ │ │ │
|
|
564
|
+
│ │ │ Tools │ │ │ ▼ ▼ │ │
|
|
485
565
|
│ │ └─────────┘ │ │ ┌──────────────────────────┐ │ │
|
|
486
|
-
│ │ │ │ │
|
|
566
|
+
│ │ │ │ │ SORK AGENT FLOW │ │ │
|
|
487
567
|
│ └────────────────┘ │ │ │ │ │
|
|
488
568
|
│ │ │ ┌────────┐ │ │ │
|
|
489
569
|
│ │ │ │Triage │ │ │ │
|
|
@@ -509,9 +589,10 @@ SORK activates automatically on your next pipeline security scan.
|
|
|
509
589
|
│ ▼ │
|
|
510
590
|
│ ┌────────────────┐ ┌──────────────────────────────────┐ │
|
|
511
591
|
│ │ │ │ │ │
|
|
512
|
-
│ │
|
|
513
|
-
│ │
|
|
514
|
-
│ │
|
|
592
|
+
│ │ Logs & │ │ Fixed Code │ │
|
|
593
|
+
│ │ Reports │ │ (Auto-patched files) │ │
|
|
594
|
+
│ │ (Triage │ │ │ │
|
|
595
|
+
│ │ Reports) │ │ + Verification Reports │ │
|
|
515
596
|
│ │ │ │ │ │
|
|
516
597
|
│ └────────────────┘ └──────────────────────────────────┘ │
|
|
517
598
|
│ │
|
|
@@ -522,18 +603,18 @@ SORK activates automatically on your next pipeline security scan.
|
|
|
522
603
|
|
|
523
604
|
| Layer | Technology | Role |
|
|
524
605
|
|-------|-----------|------|
|
|
525
|
-
| **
|
|
526
|
-
| **
|
|
527
|
-
| **
|
|
528
|
-
| **
|
|
529
|
-
| **
|
|
530
|
-
| **
|
|
531
|
-
| **
|
|
532
|
-
| **Security
|
|
533
|
-
| **
|
|
534
|
-
| **
|
|
535
|
-
| **
|
|
536
|
-
| **
|
|
606
|
+
| **Runtime** | Node.js 18+ | Executes SORK agents and scanning |
|
|
607
|
+
| **Language** | TypeScript | Full type safety for all agents |
|
|
608
|
+
| **AI Model** | Anthropic Claude | Powers all 3 agents with security insights |
|
|
609
|
+
| **Package Manager** | npm | Distributes SORK globally |
|
|
610
|
+
| **Orchestration** | TypeScript Classes | Chains agents: Triage → Remediation → Keeper |
|
|
611
|
+
| **CLI Tool** | minimist | Command-line argument parsing |
|
|
612
|
+
| **Scanning** | Custom Scanner | JavaScript/TypeScript vulnerability detection |
|
|
613
|
+
| **Security Patterns** | RegEx + AST | Pattern matching for SQLi, XSS, secrets, etc. |
|
|
614
|
+
| **Code Fixing** | File API + Prettier | Applies fixes, formats, and lints code |
|
|
615
|
+
| **Version Control** | Git Hooks | Pre-commit integration for automation |
|
|
616
|
+
| **Configuration** | JSON | .sorkrc.json configuration file |
|
|
617
|
+
| **Logging** | chalk + Console | Colored output with severity levels |
|
|
537
618
|
|
|
538
619
|
### Tools Usage Map
|
|
539
620
|
|
|
@@ -699,25 +780,9 @@ Junior dev pushes code with a security flaw. SORK catches it immediately, genera
|
|
|
699
780
|
|
|
700
781
|
---
|
|
701
782
|
|
|
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
783
|
## Built With
|
|
719
784
|
|
|
720
|
-
`
|
|
785
|
+
`Node.js` · `TypeScript` · `Anthropic Claude` · `npm` · `ESLint` · `Prettier` · `minimist` · `chalk` · `GitHub` · `JavaScript`
|
|
721
786
|
|
|
722
787
|
---
|
|
723
788
|
|
|
@@ -754,4 +819,7 @@ SOFTWARE.
|
|
|
754
819
|
<p align="center">
|
|
755
820
|
<strong>S O R K</strong><br>
|
|
756
821
|
Security Orchestration, Remediation & Keeping<br><br>
|
|
757
|
-
<em>Keeping your code secure — automatically
|
|
822
|
+
<em>Keeping your Node.js code secure — automatically.</em><br><br>
|
|
823
|
+
Install: <code>npm install -g sork-queb</code><br>
|
|
824
|
+
GitHub: <a href="https://github.com/Atofinite5/SORK-Security-Orchestration-Remediation-Keeping-">Atofinite5/SORK</a><br>
|
|
825
|
+
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":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,OAAO,iBAAiB;IACR;IAA6B;IAAjD,YAAoB,WAAmB,EAAU,MAAc;QAA3C,gBAAW,GAAX,WAAW,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEnE,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAE3C,MAAM,cAAc,GAAG;YACrB,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,QAAQ;YACrB,SAAS,EAAE,IAAI;SAChB,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACnE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QAEhE,yBAAyB;QACzB,MAAM,cAAc,GAAG;;;;;;;;CAQ1B,CAAC;QACE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEzC,MAAM,YAAY,GAAG;YACnB,GAAG,EAAE;gBACH,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAI;aACb;YACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;YAC/B,aAAa,EAAE;gBACb,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE,QAAQ;aACrB;YACD,KAAK,EAAE;gBACL,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;gBACpD,gBAAgB,EAAE,OAAO;gBACzB,cAAc,EAAE,OAAO;gBACvB,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAC7B,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAC7B,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtB,cAAc,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAC7C,6BAA6B,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACjD,iBAAiB,EAAE,OAAO;gBAC1B,iBAAiB,EAAE,OAAO;gBAC1B,sBAAsB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;aAC5C;YACD,SAAS,EAAE;gBACT;oBACE,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;oBACxB,MAAM,EAAE,2BAA2B;oBACnC,OAAO,EAAE;wBACP,oBAAoB;wBACpB,uCAAuC;qBACxC;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,KAAK,EAAE;wBACL,mDAAmD,EAAE,KAAK;wBAC1D,mCAAmC,EAAE;4BACnC,OAAO;4BACP,EAAE,iBAAiB,EAAE,IAAI,EAAE;yBAC5B;wBACD,oCAAoC,EAAE,MAAM;wBAC5C,mDAAmD,EAAE,KAAK;qBAC3D;iBACF;aACF;SACF,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QACjE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QAE5D,uBAAuB;QACvB,MAAM,YAAY,GAAG;;;;;;CAMxB,CAAC;QACE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAChE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAEzD,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6D5B,CAAC;QAEE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAE/C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,WAAW,CAAC,OAAO,GAAG,EAAE,CAAC;YAC3B,CAAC;YAED,gCAAgC;YAChC,WAAW,CAAC,OAAO,CAAC,IAAI,GAAG,kCAAkC,CAAC;YAC9D,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,wCAAwC,CAAC;YAC3E,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,oBAAoB,CAAC;YAClD,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;YAC3D,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,4DAA4D,CAAC;YACzF,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,oCAAoC,CAAC;YAErE,yBAAyB;YACzB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC;gBACxE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;oBAC9B,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;gBAChC,CAAC;gBACD,WAAW,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;YAC3C,CAAC;YAED,oDAAoD;YACpD,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;gBACjC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC;YACnC,CAAC;YACD,WAAW,CAAC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAChD,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC;YAE/C,MAAM,EAAE,CAAC,SAAS,CAChB,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CACrC,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE9C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ExB,CAAC;QAEE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACjE,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,iBAAiB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC5E,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
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.1",
|
|
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"
|