@rosh100yx/outlier 0.4.2 → 0.4.4

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 CHANGED
@@ -4,36 +4,37 @@
4
4
  <p><b>The Governance & Policy Engine for AI Engineering</b></p>
5
5
  <p><i>Measure AI adoption. Enforce Zero-Trust. Protect Human Mastery.</i></p>
6
6
  <br/>
7
- <a href="https://github.com/rosh100yx/outlier/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.md&title=%5BFEATURE%5D+">
8
- <img src="https://img.shields.io/badge/%E2%9C%A8_Feature_Request-Submit_an_idea-blueviolet?style=for-the-badge&logo=github" alt="Feature Request" />
9
- </a>
10
7
 
11
8
  <p>
12
9
  <img src="https://img.shields.io/badge/Compliance-Strict-blue?style=for-the-badge" />
13
10
  <img src="https://img.shields.io/badge/AI_Safety-Enabled-green?style=for-the-badge" />
14
11
  <img src="https://img.shields.io/badge/Zero_Trust-Verified-orange?style=for-the-badge" />
15
- <img src="https://img.shields.io/badge/Carbon_Footprint-Tracked-lightgrey?style=for-the-badge" />
16
12
  </p>
17
13
 
18
14
  <p>
19
15
  <b>Get Started Instantly:</b><br/>
20
- <code>npx @rosh100yx/outlier status</code>
16
+ <code>npm install -g @rosh100yx/outlier</code><br/>
17
+ <code>outlier status</code>
21
18
  </p>
19
+ </div>
22
20
 
23
- <br/>
24
- <img src="https://raw.githubusercontent.com/rosh100yx/outlier/main/assets/cli-demo.png" alt="Outlier CLI Demo" width="800" />
25
- <br/>
21
+ ## The Compounding Value of Outlier (Why This Matters)
22
+ Software engineering is undergoing a catastrophic shift in skill acquisition. If you only look at today, AI saves you 30 minutes of writing regex. But if you look at the **compounding horizon of the next 5-10 years**, the value exchange flips.
23
+
24
+ <div align="center">
25
+ <img src="https://raw.githubusercontent.com/rosh100yx/outlier/main/assets/metr-long-tasks.png" alt="METR Graph" width="800" />
26
+ <p><i>Source: METR (Measuring AI Ability to Complete Long Tasks)</i></p>
26
27
  </div>
27
28
 
28
- `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.
29
+ ### What Do We Lose and Gain?
30
+ - **Today (The 5-minute task):** You use AI to scaffold a component. You **gain** velocity. You **lose** syntax recall.
31
+ - **Tomorrow (The 5-hour task):** Models like Claude Opus 4.5 will autonomously resolve multi-file architectural tickets (as proven by the METR graph). You **gain** massive scale and leverage. You **lose** granular intimacy with your own system architecture. You transition from a *Creator* to a *Reviewer*.
32
+ - **The Next 5-10 Years:** Unchecked AI reliance leads to **Deskilling**. When an agent introduces a fatal state bug in a 1M+ LOC codebase, the human reviewers will lack the muscle memory and "systems thinking" required to debug it.
29
33
 
30
- **Our Moat:**
31
- 1. **Zero-Trust & Local-First:** No API keys, no telemetry sent to the cloud. `outlier` reads your native `~/.claude/` session logs and `.git/` history directly on your machine.
32
- 2. **Actionable Policy Engine:** We don't just build dashboards. `outlier` lives in your terminal and CI/CD pipelines (via pre-commit hooks and GitHub Actions), physically blocking risky or overly AI-reliant commits.
33
- 3. **Counterfactual Carbon Accounting:** The only observability tool mapping token cache waste directly to your local energy grid (e.g., Global South vs EU), proving true environmental impacts.
34
- 4. **Anti-Deskilling Guardrails:** Built to prevent developers from becoming mere spectators in their own codebase.
34
+ ### How The Paper and Project Complement Each Other
35
+ `outlier` is the technical circuit breaker that forces developers to remain High-Agency. The **Paper** maps the trajectory of global skill atrophy and the geographic carbon tax of AI. The **Project (CLI)** is the empirical instrument that gathers this data safely, proving the literature while simultaneously protecting the developer's sovereignty.
35
36
 
36
- > *"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.*
37
+ We measure the exact cost of AI for humans—not just in API tokens, but in cognitive load and lost mastery.
37
38
 
38
39
  <div align="center">
39
40
  <img src="https://raw.githubusercontent.com/rosh100yx/outlier/main/assets/codecore.gif" alt="Codecore Aesthetic" width="300" />
package/bin/outlier.js CHANGED
@@ -1943,7 +1943,9 @@ COMMANDS:`));
1943
1943
  console.log(` ${import_picocolors.default.cyan("outlier authorship")} Scan git history for AI co-authorship ratio`);
1944
1944
  console.log(` ${import_picocolors.default.cyan("outlier carbon")} Scan local logs for token waste & carbon cost`);
1945
1945
  console.log(` ${import_picocolors.default.cyan("outlier policy")} Configure CI/CD guardrails and thresholds`);
1946
- console.log(` ${import_picocolors.default.cyan("outlier confessional")} Submit qualitative feedback or feature requests`);
1946
+ console.log(` ${import_picocolors.default.cyan("outlier impact")} See the compounding horizon of AI Deskilling`);
1947
+ console.log(` ${import_picocolors.default.cyan("outlier knowledge")} Explore references, graphs, and the core literature`);
1948
+ console.log(` ${import_picocolors.default.cyan("outlier participate")} Help build the academic literature on AI deskilling`);
1947
1949
  console.log(`
1948
1950
  ` + import_picocolors.default.dim("Run without arguments to start the interactive wizard."));
1949
1951
  process.exit(0);
@@ -1964,7 +1966,9 @@ COMMANDS:`));
1964
1966
  { value: "authorship", label: "Code Durability", hint: "Scan git history for AI Code Reliance & Hallucination Risk" },
1965
1967
  { value: "carbon", label: "Cache Bloat", hint: "Scan local logs for context waste & token costs" },
1966
1968
  { value: "policy", label: "Policy Profiles", hint: "Set Personal, Team, or Enterprise guardrails in CI" },
1967
- { value: "confessional", label: "Confessional", hint: "Tell us how AI is really affecting your job (Feature Requests)" }
1969
+ { value: "impact", label: "Impact Horizon", hint: "What do you lose and gain in the next 5-10 years?" },
1970
+ { value: "knowledge", label: "Literature Base", hint: "Explore references and the core academic foundation" },
1971
+ { value: "participate", label: "Participate", hint: "Contribute to the literature on AI deskilling" }
1968
1972
  ]
1969
1973
  });
1970
1974
  if (isCancel(action)) {
@@ -2217,8 +2221,8 @@ Status: ${import_picocolors.default.green("Compliant - Human oversight log
2217
2221
  Privacy: ${import_picocolors.default.green("Preserved - No citizen data exported")}
2218
2222
  Artifact: ${import_picocolors.default.cyan(reportPath)}`, "Regulatory Compliance");
2219
2223
  }
2220
- } else if (action === "confessional") {
2221
- s.start("Connecting to the human element...");
2224
+ } else if (action === "participate") {
2225
+ s.start("Connecting to the Outlier research project...");
2222
2226
  await new Promise((resolve) => setTimeout(resolve, 600));
2223
2227
  s.stop("Secure connection established.");
2224
2228
  const q1 = await select({
@@ -2230,7 +2234,7 @@ Artifact: ${import_picocolors.default.cyan(reportPath)}`, "Regulatory Compli
2230
2234
  ]
2231
2235
  });
2232
2236
  if (isCancel(q1)) {
2233
- cancel("Confession aborted.");
2237
+ cancel("Survey aborted.");
2234
2238
  process.exit(0);
2235
2239
  }
2236
2240
  const q2 = await select({
@@ -2242,7 +2246,7 @@ Artifact: ${import_picocolors.default.cyan(reportPath)}`, "Regulatory Compli
2242
2246
  ]
2243
2247
  });
2244
2248
  if (isCancel(q2)) {
2245
- cancel("Confession aborted.");
2249
+ cancel("Survey aborted.");
2246
2250
  process.exit(0);
2247
2251
  }
2248
2252
  const feedback = await text({
@@ -2251,25 +2255,51 @@ Artifact: ${import_picocolors.default.cyan(reportPath)}`, "Regulatory Compli
2251
2255
  placeholder: "Honestly, I just let the agent write the regex...",
2252
2256
  validate(value) {
2253
2257
  if (!value || value.length === 0)
2254
- return `C'mon, confess something!`;
2258
+ return `C'mon, say something!`;
2255
2259
  }
2256
2260
  });
2257
2261
  if (isCancel(feedback)) {
2258
- cancel("Confession aborted.");
2262
+ cancel("Survey aborted.");
2259
2263
  process.exit(0);
2260
2264
  }
2261
2265
  note(`${import_picocolors.default.italic(`"${feedback}"`)}
2262
2266
 
2263
- Your confession is safe with us. But if you want to make it official (and help us build what you need for the literature), we've generated a secure transmission link for you.`, "The Confessional");
2267
+ Your input is invaluable. To make it official and contribute to the literature, we've generated a secure transmission link for you.`, "Outlier Research");
2264
2268
  const surveyData = `**Engineering Reality:** ${q1}
2265
2269
  **Deskilling Impact:** ${q2}
2266
2270
  **Thoughts:**
2267
2271
  ${feedback}`;
2268
- const url = `https://github.com/rosh100yx/outlier/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.md&title=%5BConfessional%5D+Feedback&body=${encodeURIComponent(`Drop a screenshot of your Thermal Receipt here!
2272
+ const url = `https://github.com/rosh100yx/outlier/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.md&title=%5BOutlier+Research%5D+Feedback&body=${encodeURIComponent(`Drop a screenshot of your Thermal Receipt here!
2269
2273
 
2270
2274
  ` + surveyData)}`;
2271
2275
  console.log(`
2272
2276
  ${import_picocolors.default.bold("Submit here (and drop your screenshot!):")} ${import_picocolors.default.underline(import_picocolors.default.cyan(url))}
2277
+ `);
2278
+ } else if (action === "impact") {
2279
+ console.log(`
2280
+ ` + import_picocolors.default.bold(import_picocolors.default.bgMagenta(" THE COMPOUNDING HORIZON OF DESKILLING ")) + `
2281
+ `);
2282
+ console.log(import_picocolors.default.bold("What Do We Lose and Gain?"));
2283
+ console.log(import_picocolors.default.cyan("■ Today (The 5-minute task)"));
2284
+ console.log(` ${import_picocolors.default.green("Gain:")} Velocity. AI scaffolds your components.`);
2285
+ console.log(` ${import_picocolors.default.red("Lose:")} Syntax recall. Memory of the low-level pipes.`);
2286
+ console.log(import_picocolors.default.cyan(`
2287
+ ■ Tomorrow (The 5-hour task - e.g. Claude Opus 4.5)`));
2288
+ console.log(` ${import_picocolors.default.green("Gain:")} Massive scale. You are a systems orchestrator.`);
2289
+ console.log(` ${import_picocolors.default.red("Lose:")} Architectural intimacy. You become a reviewer.`);
2290
+ console.log(import_picocolors.default.cyan(`
2291
+ ■ Next 5-10 Years (The 1M+ LOC Crisis)`));
2292
+ console.log(` When an agent introduces a fatal state bug in a monolithic architecture, human reviewers will lack the muscle memory to debug it. Outlier measures this exact sovereignty erosion.
2293
+ `);
2294
+ } else if (action === "knowledge") {
2295
+ console.log(`
2296
+ ` + import_picocolors.default.bold(import_picocolors.default.bgBlue(" CORE LITERATURE & REFERENCES ")) + `
2297
+ `);
2298
+ console.log(`1. ${import_picocolors.default.cyan("METR (Measuring AI Ability)")} - Evaluating AI on long-horizon software tasks.`);
2299
+ console.log(`2. ${import_picocolors.default.cyan('The "NPC" vs "High-Agency" Paradigm')} - Remaining sovereign in a room full of agents.`);
2300
+ console.log(`3. ${import_picocolors.default.cyan("Proof of Human Mastery")} - The cryptoeconomic necessity of proving human architectural understanding.`);
2301
+ console.log(`
2302
+ Read the full academic foundation at: ${import_picocolors.default.underline("https://github.com/rosh100yx/outlier")}
2273
2303
  `);
2274
2304
  }
2275
2305
  outro("Local telemetry run completed. No data left your machine.");
@@ -2305,8 +2335,10 @@ ${import_picocolors.default.dim("-------------------------")} ${import_picocolor
2305
2335
  }
2306
2336
  console.log(import_picocolors.default.dim(`└ Share your audit: https://x.com/intent/tweet?text=${encodeURIComponent(`I just audited my codebase for AI reliance and deskilling risk. What does your repo score?
2307
2337
 
2308
- \uD83D\uDCCF npx @rosh100yx/outlier`)}`));
2309
- console.log(import_picocolors.default.dim(`└ Have thoughts on AI deskilling? Tell us: `) + import_picocolors.default.cyan(`npx @rosh100yx/outlier confessional`));
2310
- console.log(import_picocolors.default.dim(`└ Keep your local policies updated: `) + import_picocolors.default.cyan(`npx @rosh100yx/outlier@latest`));
2338
+ \uD83D\uDCCF #Outlier`)}`));
2339
+ if (action === "status") {
2340
+ console.log(import_picocolors.default.dim(`└ Have thoughts on AI deskilling? Tell us: `) + import_picocolors.default.cyan(`outlier participate`));
2341
+ console.log(import_picocolors.default.dim(`└ Keep your local policies updated: `) + import_picocolors.default.cyan(`outlier update`));
2342
+ }
2311
2343
  }
2312
2344
  main().catch(console.error);
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+
3
+ const cyan = (text) => `\x1b[36m${text}\x1b[0m`;
4
+ const dim = (text) => `\x1b[2m${text}\x1b[0m`;
5
+ const bold = (text) => `\x1b[1m${text}\x1b[0m`;
6
+
7
+ console.log('\n' + bold('Welcome to Outlier') + ' - AI Code Governance for the Terminal');
8
+ console.log(dim('────────────────────────────────────────────────────────────'));
9
+ console.log('To start the interactive wizard and audit your codebase, type:\n');
10
+ console.log(` ${cyan('outlier')}\n`);
11
+ console.log('Available Commands:');
12
+ console.log(` ${cyan('outlier status')} Print your Thermal Audit Receipt`);
13
+ console.log(` ${cyan('outlier impact')} See the compounding horizon of AI Deskilling (What you lose/gain)`);
14
+ console.log(` ${cyan('outlier knowledge')} Explore core literature and METR references`);
15
+ console.log(` ${cyan('outlier participate')} Help build the literature on AI deskilling`);
16
+ console.log(` ${cyan('outlier help')} See all available commands`);
17
+ console.log(dim('────────────────────────────────────────────────────────────\n'));
package/package.json CHANGED
@@ -1,19 +1,21 @@
1
1
  {
2
2
  "name": "@rosh100yx/outlier",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
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"
7
7
  },
8
8
  "files": [
9
9
  "bin/outlier.js",
10
+ "bin/postinstall.js",
10
11
  "src",
11
12
  "data"
12
13
  ],
13
14
  "scripts": {
14
15
  "build": "bun build ./src/cli.ts --target=node --outfile bin/outlier.js",
15
16
  "test": "bun test",
16
- "start": "bun run src/cli.ts"
17
+ "start": "bun run src/cli.ts",
18
+ "postinstall": "node bin/postinstall.js"
17
19
  },
18
20
  "type": "module",
19
21
  "private": false,
package/src/cli.ts CHANGED
@@ -90,7 +90,9 @@ async function main() {
90
90
  console.log(` ${pc.cyan('outlier authorship')} Scan git history for AI co-authorship ratio`);
91
91
  console.log(` ${pc.cyan('outlier carbon')} Scan local logs for token waste & carbon cost`);
92
92
  console.log(` ${pc.cyan('outlier policy')} Configure CI/CD guardrails and thresholds`);
93
- console.log(` ${pc.cyan('outlier confessional')} Submit qualitative feedback or feature requests`);
93
+ console.log(` ${pc.cyan('outlier impact')} See the compounding horizon of AI Deskilling`);
94
+ console.log(` ${pc.cyan('outlier knowledge')} Explore references, graphs, and the core literature`);
95
+ console.log(` ${pc.cyan('outlier participate')} Help build the academic literature on AI deskilling`);
94
96
  console.log('\n' + pc.dim('Run without arguments to start the interactive wizard.'));
95
97
  process.exit(0);
96
98
  }
@@ -113,7 +115,9 @@ async function main() {
113
115
  { value: 'authorship', label: 'Code Durability', hint: 'Scan git history for AI Code Reliance & Hallucination Risk' },
114
116
  { value: 'carbon', label: 'Cache Bloat', hint: 'Scan local logs for context waste & token costs' },
115
117
  { value: 'policy', label: 'Policy Profiles', hint: 'Set Personal, Team, or Enterprise guardrails in CI' },
116
- { value: 'confessional', label: 'Confessional', hint: 'Tell us how AI is really affecting your job (Feature Requests)' }
118
+ { value: 'impact', label: 'Impact Horizon', hint: 'What do you lose and gain in the next 5-10 years?' },
119
+ { value: 'knowledge', label: 'Literature Base', hint: 'Explore references and the core academic foundation' },
120
+ { value: 'participate', label: 'Participate', hint: 'Contribute to the literature on AI deskilling' }
117
121
  ],
118
122
  });
119
123
 
@@ -410,8 +414,8 @@ Artifact: ${pc.cyan(reportPath)}`,
410
414
  'Regulatory Compliance'
411
415
  );
412
416
  }
413
- } else if (action === 'confessional') {
414
- s.start('Connecting to the human element...');
417
+ } else if (action === 'participate') {
418
+ s.start('Connecting to the Outlier research project...');
415
419
  await new Promise(resolve => setTimeout(resolve, 600));
416
420
  s.stop('Secure connection established.');
417
421
 
@@ -424,7 +428,7 @@ Artifact: ${pc.cyan(reportPath)}`,
424
428
  ]
425
429
  });
426
430
 
427
- if (isCancel(q1)) { cancel('Confession aborted.'); process.exit(0); }
431
+ if (isCancel(q1)) { cancel('Survey aborted.'); process.exit(0); }
428
432
 
429
433
  const q2 = await select({
430
434
  message: pc.cyan('Do you feel you are losing your deep architectural mastery? (Deskilling)'),
@@ -435,30 +439,47 @@ Artifact: ${pc.cyan(reportPath)}`,
435
439
  ]
436
440
  });
437
441
 
438
- if (isCancel(q2)) { cancel('Confession aborted.'); process.exit(0); }
442
+ if (isCancel(q2)) { cancel('Survey aborted.'); process.exit(0); }
439
443
 
440
444
  const feedback = await text({
441
445
  message: pc.cyan('In your own words, what is AI actually doing to your codebase or your job?\n(Note: This will draft a public GitHub issue)'),
442
446
  placeholder: 'Honestly, I just let the agent write the regex...',
443
447
  validate(value) {
444
- if (!value || value.length === 0) return `C'mon, confess something!`;
448
+ if (!value || value.length === 0) return `C'mon, say something!`;
445
449
  },
446
450
  });
447
451
 
448
452
  if (isCancel(feedback)) {
449
- cancel('Confession aborted.');
453
+ cancel('Survey aborted.');
450
454
  process.exit(0);
451
455
  }
452
456
 
453
457
  note(
454
- `${pc.italic(`"${feedback}"`)}\n\nYour confession is safe with us. But if you want to make it official (and help us build what you need for the literature), we've generated a secure transmission link for you.`,
455
- 'The Confessional'
458
+ `${pc.italic(`"${feedback}"`)}\n\nYour input is invaluable. To make it official and contribute to the literature, we've generated a secure transmission link for you.`,
459
+ 'Outlier Research'
456
460
  );
457
461
 
458
462
  const surveyData = `**Engineering Reality:** ${q1}\n**Deskilling Impact:** ${q2}\n**Thoughts:**\n${feedback}`;
459
463
 
460
- const url = `https://github.com/rosh100yx/outlier/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.md&title=%5BConfessional%5D+Feedback&body=${encodeURIComponent("Drop a screenshot of your Thermal Receipt here! \n\n" + surveyData)}`;
464
+ const url = `https://github.com/rosh100yx/outlier/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.md&title=%5BOutlier+Research%5D+Feedback&body=${encodeURIComponent("Drop a screenshot of your Thermal Receipt here! \n\n" + surveyData)}`;
461
465
  console.log(`\n${pc.bold('Submit here (and drop your screenshot!):')} ${pc.underline(pc.cyan(url))}\n`);
466
+ } else if (action === 'impact') {
467
+ console.log('\n' + pc.bold(pc.bgMagenta(' THE COMPOUNDING HORIZON OF DESKILLING ')) + '\n');
468
+ console.log(pc.bold('What Do We Lose and Gain?'));
469
+ console.log(pc.cyan('■ Today (The 5-minute task)'));
470
+ console.log(` ${pc.green('Gain:')} Velocity. AI scaffolds your components.`);
471
+ console.log(` ${pc.red('Lose:')} Syntax recall. Memory of the low-level pipes.`);
472
+ console.log(pc.cyan('\n■ Tomorrow (The 5-hour task - e.g. Claude Opus 4.5)'));
473
+ console.log(` ${pc.green('Gain:')} Massive scale. You are a systems orchestrator.`);
474
+ console.log(` ${pc.red('Lose:')} Architectural intimacy. You become a reviewer.`);
475
+ console.log(pc.cyan('\n■ Next 5-10 Years (The 1M+ LOC Crisis)'));
476
+ console.log(` When an agent introduces a fatal state bug in a monolithic architecture, human reviewers will lack the muscle memory to debug it. Outlier measures this exact sovereignty erosion.\n`);
477
+ } else if (action === 'knowledge') {
478
+ console.log('\n' + pc.bold(pc.bgBlue(' CORE LITERATURE & REFERENCES ')) + '\n');
479
+ console.log(`1. ${pc.cyan('METR (Measuring AI Ability)')} - Evaluating AI on long-horizon software tasks.`);
480
+ console.log(`2. ${pc.cyan('The "NPC" vs "High-Agency" Paradigm')} - Remaining sovereign in a room full of agents.`);
481
+ console.log(`3. ${pc.cyan('Proof of Human Mastery')} - The cryptoeconomic necessity of proving human architectural understanding.`);
482
+ console.log(`\nRead the full academic foundation at: ${pc.underline('https://github.com/rosh100yx/outlier')}\n`);
462
483
  }
463
484
 
464
485
  outro('Local telemetry run completed. No data left your machine.');
@@ -494,18 +515,19 @@ Artifact: ${pc.cyan(reportPath)}`,
494
515
  console.log(
495
516
  pc.dim(
496
517
  `└ Share your audit: https://x.com/intent/tweet?text=${encodeURIComponent(
497
- 'I just audited my codebase for AI reliance and deskilling risk. What does your repo score?\n\n📏 npx @rosh100yx/outlier'
518
+ 'I just audited my codebase for AI reliance and deskilling risk. What does your repo score?\n\n📏 #Outlier'
498
519
  )}`
499
520
  )
500
521
  );
501
-
502
- console.log(
503
- pc.dim(`└ Have thoughts on AI deskilling? Tell us: `) + pc.cyan(`npx @rosh100yx/outlier confessional`)
504
- );
505
522
 
506
- console.log(
507
- pc.dim(`└ Keep your local policies updated: `) + pc.cyan(`npx @rosh100yx/outlier@latest`)
508
- );
523
+ if (action === 'status') {
524
+ console.log(
525
+ pc.dim(`└ Have thoughts on AI deskilling? Tell us: `) + pc.cyan(`outlier participate`)
526
+ );
527
+ console.log(
528
+ pc.dim(`└ Keep your local policies updated: `) + pc.cyan(`outlier update`)
529
+ );
530
+ }
509
531
  }
510
532
 
511
533
  main().catch(console.error);