@rosh100yx/outlier 0.3.0 → 0.3.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.
Files changed (3) hide show
  1. package/README.md +13 -16
  2. package/package.json +1 -1
  3. package/src/cli.ts +103 -6
package/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  <div align="center">
2
+ <img src="assets/cover.jpg" alt="Outlier Cover" width="100%" />
2
3
  <h1>outlier</h1>
3
4
  <p><b>The Governance & Policy Engine for AI Engineering</b></p>
4
5
  <p><i>Measure AI adoption. Enforce Zero-Trust. Protect Human Mastery.</i></p>
@@ -9,6 +10,15 @@
9
10
  <img src="https://img.shields.io/badge/Zero_Trust-Verified-orange?style=for-the-badge" />
10
11
  <img src="https://img.shields.io/badge/Carbon_Footprint-Tracked-lightgrey?style=for-the-badge" />
11
12
  </p>
13
+
14
+ <p>
15
+ <b>Get Started Instantly:</b><br/>
16
+ <code>npx @rosh100yx/outlier status</code>
17
+ </p>
18
+
19
+ <br/>
20
+ <img src="assets/cli-demo.png" alt="Outlier CLI Demo" width="800" />
21
+ <br/>
12
22
  </div>
13
23
 
14
24
  `outlier` is an open-source, local-first policy engine and governance framework designed to measure the true cost and risk of AI code generation. As teams accelerate with LLM agents (Cursor, Copilot, Claude Code), `outlier` acts as the definitive **Bouncer**—auditing AI authorship, mitigating deskilling risks, and tracking regional carbon footprints entirely locally.
@@ -21,22 +31,9 @@
21
31
 
22
32
  > *"In a room full of agents" shifts the perspective. It acknowledges that the developer is no longer a solo coder; they are a manager of bots. The product exists to make sure the human doesn't get lazy while managing them. We all want our time back, but we don't want to lose control of the craft.*
23
33
 
24
- ```text
25
- ┌ outlier
26
-
27
- ◇ [outlier] 4/5 policies • ✓ safe surface • Local CI ───────╮
28
- │ │
29
- │ [1] Capability Engine ▰▰▰▰▰▰▱▱▱▱ Active │
30
- │ status: ✓ Configured │
31
- │ (=^・ω・^=) [2] AI Code Reliance ▰▰▰▰▰▰▰▰▱▱ 85.0% Reliance │
32
- │ vibe: Did you write any of this, or are you just the manager now? (ФДФ)
33
- │ gate: (=ಠᆽಠ=) Deskilling Risk Detected ⚠ Security Audit Required
34
- │ [3] Tokenomics & Cost ▰▰▰▰▰▰▰▰▰▱ 96.5% Cache Bloat │
35
- │ waste: ⚠ 96.5% of tokens are redundant context reads │
36
- │ Governance: (=ಠᆽಠ=) 1 policy failures │
37
- │ │
38
- ├────────────────────────────────────────────────────────────╯
39
- ```
34
+ <div align="center">
35
+ <img src="assets/codecore.gif" alt="Codecore Aesthetic" width="300" />
36
+ </div>
40
37
 
41
38
  ## How It Works
42
39
  ```text
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rosh100yx/outlier",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "AI Code Governance & Capability Auditing for the Terminal. Measures AI reliance, context waste, and enforces local CI/CD policies.",
5
5
  "bin": {
6
6
  "outlier": "bin/outlier.js"
package/src/cli.ts CHANGED
@@ -16,14 +16,80 @@ const ASCII_LOGO = `
16
16
  \\____/|_| |_| |_| |_| |_|___|_____|_| \\_\\
17
17
  `;
18
18
 
19
+ import os from 'os';
20
+ import { confirm } from '@clack/prompts';
21
+
22
+ async function runOnboarding() {
23
+ console.clear();
24
+ console.log(pc.cyan(ASCII_LOGO));
25
+ intro(pc.inverse(' outlier: Welcome '));
26
+
27
+ note(
28
+ `Outlier is a local-first Policy Engine & Governance Framework for AI Engineering.
29
+
30
+ Our mission is AI Safety for developers:
31
+ As agents (Cursor, Copilot, Claude) write more of our code, we lose visibility into:
32
+ 1. Deskilling Risk (Are we becoming spectators in our own codebase?)
33
+ 2. Carbon Cost (What is the true regional energy cost of token caching?)
34
+ 3. Capability Drift (What hidden skills and external tools are our agents using?)
35
+
36
+ We built Outlier to enforce Zero-Trust and protect Human Mastery. You are in control.`,
37
+ 'The Problem: AI Safety in Development'
38
+ );
39
+
40
+ note(
41
+ `Outlier operates entirely on your machine.
42
+ - Local Only: No API keys. No cloud telemetry. No data leaves your machine.
43
+ - Native Auditing: We only read your local \`~/.claude\` logs and \`.git/\` commit history.
44
+ - Actionable Policies: We enforce rules locally via terminal or Git pre-commit hooks.`,
45
+ 'Privacy & Zero-Trust Principles'
46
+ );
47
+
48
+ note(
49
+ `Available Commands:
50
+ - status: Run a full system audit (Reliance, Carbon, Capabilities)
51
+ - policy: Configure team/enterprise guardrails and CLI blockers
52
+ - carbon: View isolated token caching metrics and regional counterfactuals
53
+ - authorship: View Git authorship ratio (Human vs AI)`,
54
+ 'How it is used'
55
+ );
56
+
57
+ note(
58
+ `When you start the audit, Outlier will locally parse your Git commits to identify AI co-authorship and cross-reference your agent logs to calculate token waste.
59
+
60
+ The results will assign you a "vibe" and evaluate if you are at risk of deskilling.`,
61
+ 'What to Expect'
62
+ );
63
+
64
+ const ready = await confirm({
65
+ message: 'Are you ready to run your first Governance Audit and measure your AI reliance?',
66
+ initialValue: true,
67
+ });
68
+
69
+ if (isCancel(ready) || !ready) {
70
+ cancel('Onboarding paused. Run outlier again when you are ready.');
71
+ process.exit(0);
72
+ }
73
+
74
+ const configPath = join(os.homedir(), '.outlier_config');
75
+ writeFileSync(configPath, JSON.stringify({ onboarded: true, date: new Date().toISOString() }));
76
+ }
77
+
19
78
  async function main() {
20
79
  console.clear();
21
80
  console.log(pc.cyan(ASCII_LOGO));
22
- console.log(pc.dim(' Outlier v0.3.0 · AI Code Reliance & Telemetry Engine\n'));
81
+ console.log(pc.dim(' Outlier v0.3.1 · AI Code Reliance & Telemetry Engine\n'));
82
+
83
+ let action = process.argv[2] as any;
23
84
 
85
+ const configPath = join(os.homedir(), '.outlier_config');
86
+ if (!existsSync(configPath) && !action) {
87
+ await runOnboarding();
88
+ action = 'status'; // auto-run status after onboarding
89
+ }
90
+
24
91
  intro(pc.inverse(' outlier '));
25
92
 
26
- let action = process.argv[2] as any;
27
93
  if (!action || action === 'audit') {
28
94
  if (action !== 'audit') {
29
95
  action = await select({
@@ -295,12 +361,43 @@ Artifact: ${pc.cyan(reportPath)}`,
295
361
  }
296
362
  }
297
363
 
298
- let shareText = 'Local telemetry run completed. No data left your machine.';
299
- if (action === 'status') {
300
- shareText += `\n\n${pc.dim('└')} ${pc.cyan('Share your audit:')} https://x.com/intent/tweet?text=I%20just%20audited%20my%20codebase%20for%20AI%20reliance%20and%20deskilling%20risk.%20What%20does%20your%20repo%20score%3F%0A%0A%F0%9F%93%8F%20npx%20%40rosh100yx%2Foutlier`;
364
+ outro('Local telemetry run completed. No data left your machine.');
365
+
366
+ // Artifact Level Storytelling: Dither Garden style thermal receipt
367
+ if (action === 'status' || action === 'authorship' || action === 'carbon') {
368
+ const d = new Date();
369
+ const dateStr = d.toLocaleDateString('en-US', { month: 'short', day: '2-digit', year: 'numeric' }).toUpperCase();
370
+ const timeStr = d.toLocaleTimeString('en-US', { hour12: false });
371
+
372
+ let repoName = process.cwd().split('/').pop() || 'Unknown';
373
+
374
+ console.log(`\n${pc.dim('-------------------------')} ${pc.bold('AUDIT RECEIPT')} ${pc.dim('-------------------------')}`);
375
+ console.log(`\n Project ${pc.bold(repoName.padEnd(16).substring(0,16))}`);
376
+ console.log(` Timestamp ${pc.dim(`${dateStr} ${timeStr}`)}\n`);
377
+
378
+ console.log(` 01x Authorship Policy ${process.argv.includes('--strict') ? 'Strict Mode' : 'Vibe Check'}`);
379
+ console.log(` 02x AI Reliance Risk ${action === 'carbon' ? 'N/A' : 'Assessed'}`);
380
+ console.log(` 03x Cache Bloat Tokens ${action === 'authorship' ? 'N/A' : 'Audited'}`);
381
+ console.log(` 04x Regional Grid Check ${action === 'authorship' ? 'N/A' : 'Completed'}\n`);
382
+
383
+ console.log(pc.dim(' **********************************************************'));
384
+ console.log(`\n ${pc.italic('patterns emerge in the commit history,')}`);
385
+ console.log(` ${pc.italic('code becomes commoditized by algorithms.')}`);
386
+ console.log(` ${pc.italic('human mastery is the only true moat.')}\n`);
387
+ console.log(pc.dim(' **********************************************************\n'));
388
+
389
+ console.log(' Outlier Governance Engine');
390
+ console.log(pc.bold('\n ***AUDIT COMPLETE***'));
391
+ console.log(pc.bold(' ***STAY VIGILANT***\n'));
301
392
  }
302
393
 
303
- outro(shareText);
394
+ console.log(
395
+ pc.dim(
396
+ `└ Share your audit: https://x.com/intent/tweet?text=${encodeURIComponent(
397
+ 'I just audited my codebase for AI reliance and deskilling risk. What does your repo score?\n\n📏 npx @rosh100yx/outlier'
398
+ )}`
399
+ )
400
+ );
304
401
  }
305
402
 
306
403
  main().catch(console.error);