jobarbiter 0.3.4 → 0.3.6

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/dist/index.js CHANGED
@@ -745,7 +745,7 @@ program
745
745
  // ============================================================
746
746
  // observe (manage AI agent observers)
747
747
  // ============================================================
748
- const observe = program.command("observe").description("Manage AI agent proficiency observers");
748
+ const observe = program.command("observe").description("Manage AI tool proficiency observers");
749
749
  observe
750
750
  .command("status")
751
751
  .description("Show observer status and accumulated data")
@@ -1,5 +1,5 @@
1
1
  /**
2
- * JobArbiter Observer — Hook installer for AI agent CLIs
2
+ * JobArbiter Observer — Hook installer for AI tools
3
3
  *
4
4
  * Installs observation hooks that extract proficiency signals from
5
5
  * session transcripts. Uses detect-tools.ts for agent detection.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * JobArbiter Observer — Hook installer for AI agent CLIs
2
+ * JobArbiter Observer — Hook installer for AI tools
3
3
  *
4
4
  * Installs observation hooks that extract proficiency signals from
5
5
  * session transcripts. Uses detect-tools.ts for agent detection.
@@ -75,7 +75,7 @@ function getObserverScript() {
75
75
  return `#!/usr/bin/env node
76
76
  /**
77
77
  * JobArbiter Observer Hook
78
- * Extracts proficiency signals from AI agent sessions.
78
+ * Extracts proficiency signals from AI tool sessions.
79
79
  *
80
80
  * Reads JSON from stdin, writes observations to:
81
81
  * ~/.config/jobarbiter/observer/observations.json
@@ -105,7 +105,7 @@ process.stdin.on("end", () => {
105
105
  const observation = extractSignals(data);
106
106
  if (observation) appendObservation(observation);
107
107
  } catch (err) {
108
- // Silent failure — never block the AI agent
108
+ // Silent failure — never block the AI tool
109
109
  fs.appendFileSync(
110
110
  path.join(os.homedir(), ".config", "jobarbiter", "observer", "errors.log"),
111
111
  \`[\${new Date().toISOString()}] \${err.message}\\n\`
@@ -427,12 +427,19 @@ async function runToolDetectionStep(prompt, config) {
427
427
  // Observer installation for AI agents
428
428
  const needsObserver = codingAgents.filter((t) => t.observerAvailable && !t.observerActive);
429
429
  if (needsObserver.length > 0) {
430
- console.log(`\n ${c.bold("Observers")}`);
431
- console.log(` JobArbiter observes your AI sessions to build your`);
432
- console.log(` proficiency profile. ${c.bold("No code or prompts leave your machine")} —`);
433
- console.log(` only aggregate scores (tool usage, session counts, token volume).\n`);
430
+ console.log(`\n ${c.bold("Observers — How You Use AI, Not Just How Much")}`);
431
+ console.log(` JobArbiter observers go beyond token counts. We analyze ${c.bold("how")}`);
432
+ console.log(` you work with AI to build a rich proficiency profile:\n`);
433
+ console.log(` ${c.bold("Quantitative")} session frequency, token volume, tool diversity`);
434
+ console.log(` ${c.bold("Qualitative")} — orchestration complexity, problem-solving approach,`);
435
+ console.log(` communication clarity, iteration patterns, tool fluency\n`);
436
+ console.log(` This is what makes your profile ${c.bold("verified")} — not self-reported.`);
437
+ console.log(` Anyone can claim "advanced AI skills." Your observer ${c.bold("proves")} it.\n`);
438
+ console.log(` ${c.bold("Privacy:")} ${c.highlight("No code, prompts, or content leave your machine.")}`);
439
+ console.log(` Only derived proficiency signals (scores, patterns, dimensions)`);
440
+ console.log(` are submitted — never raw session data.\n`);
434
441
  console.log(c.dim(` Data stored locally: ~/.config/jobarbiter/observer/observations.json`));
435
- console.log(c.dim(` Review anytime: jobarbiter observe status\n`));
442
+ console.log(c.dim(` Review anytime: jobarbiter observe review\n`));
436
443
  const observerNames = needsObserver.map((t) => t.name).join(", ");
437
444
  const installAll = await prompt.confirm(` Install observers for detected tools? (${observerNames})`);
438
445
  if (installAll) {
@@ -561,17 +568,23 @@ async function connectProvider(prompt, providerId, providerName) {
561
568
  function showWorkerCompletion(state) {
562
569
  console.log(`${sym.done} ${c.bold("Step 7/7 — You're In!")}\n`);
563
570
  console.log(`Your profile is live. Here's what happens next:\n`);
564
- console.log(` 📊 Your proficiency score builds automatically from:`);
565
- console.log(` ${sym.bullet} Coding agent observation ${c.dim("(biggest factor 35%)")}`);
566
- console.log(` ${sym.bullet} GitHub contribution analysis ${c.dim("(20%)")}`);
567
- console.log(` ${sym.bullet} Token consumption patterns ${c.dim("(15%)")}`);
568
- console.log(` ${sym.bullet} Tool diversity & fluency ${c.dim("(15%)")}`);
569
- console.log(` ${sym.bullet} Outcome verification ${c.dim("(15%)")}\n`);
571
+ console.log(` 📊 Your proficiency profile builds automatically from:`);
572
+ console.log(` ${c.bold("How you use AI (qualitative):")}`);
573
+ console.log(` ${sym.bullet} Orchestration complexity ${c.dim("— single prompts vs multi-agent pipelines")}`);
574
+ console.log(` ${sym.bullet} Problem-solving approach ${c.dim("— how you break down and iterate")}`);
575
+ console.log(` ${sym.bullet} Communication clarity ${c.dim("— precision of your instructions")}`);
576
+ console.log(` ${sym.bullet} Tool fluency ${c.dim("— depth across different AI tools")}\n`);
577
+ console.log(` ${c.bold("How much you use AI (quantitative):")}`);
578
+ console.log(` ${sym.bullet} Session frequency & consistency over time`);
579
+ console.log(` ${sym.bullet} Token consumption patterns`);
580
+ console.log(` ${sym.bullet} GitHub AI-assisted contributions`);
581
+ console.log(` ${sym.bullet} Tool diversity across providers\n`);
570
582
  console.log(` 🎯 Your proficiency ${c.bold("track")} (Orchestrator, Systems Builder, or`);
571
583
  console.log(` Domain Translator) is determined automatically as we observe`);
572
- console.log(` how you work. No need to self-assess.\n`);
584
+ console.log(` how you work whether that's coding, research, automation,`);
585
+ console.log(` content creation, or anything else. No need to self-assess.\n`);
573
586
  console.log(` 🤖 For deeper attestation, install the ${c.highlight("jobarbiter-proficiency")}`);
574
- console.log(` skill in your AI agent (OpenClaw, Claude Code, etc.)\n`);
587
+ console.log(` skill in your AI tools (OpenClaw, Claude Code, etc.)\n`);
575
588
  console.log(` ${c.bold("Useful commands:")}`);
576
589
  console.log(` ${c.highlight("jobarbiter profile score")} — Check your proficiency score`);
577
590
  console.log(` ${c.highlight("jobarbiter observe status")} — See collected observation data`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jobarbiter",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "CLI for JobArbiter — the first AI Proficiency Marketplace",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * JobArbiter Observer — Hook installer for AI agent CLIs
2
+ * JobArbiter Observer — Hook installer for AI tools
3
3
  *
4
4
  * Installs observation hooks that extract proficiency signals from
5
5
  * session transcripts. Uses detect-tools.ts for agent detection.
@@ -109,7 +109,7 @@ function getObserverScript(): string {
109
109
  return `#!/usr/bin/env node
110
110
  /**
111
111
  * JobArbiter Observer Hook
112
- * Extracts proficiency signals from AI agent sessions.
112
+ * Extracts proficiency signals from AI tool sessions.
113
113
  *
114
114
  * Reads JSON from stdin, writes observations to:
115
115
  * ~/.config/jobarbiter/observer/observations.json
@@ -139,7 +139,7 @@ process.stdin.on("end", () => {
139
139
  const observation = extractSignals(data);
140
140
  if (observation) appendObservation(observation);
141
141
  } catch (err) {
142
- // Silent failure — never block the AI agent
142
+ // Silent failure — never block the AI tool
143
143
  fs.appendFileSync(
144
144
  path.join(os.homedir(), ".config", "jobarbiter", "observer", "errors.log"),
145
145
  \`[\${new Date().toISOString()}] \${err.message}\\n\`
@@ -521,12 +521,19 @@ async function runToolDetectionStep(
521
521
  const needsObserver = codingAgents.filter((t) => t.observerAvailable && !t.observerActive);
522
522
 
523
523
  if (needsObserver.length > 0) {
524
- console.log(`\n ${c.bold("Observers")}`);
525
- console.log(` JobArbiter observes your AI sessions to build your`);
526
- console.log(` proficiency profile. ${c.bold("No code or prompts leave your machine")} —`);
527
- console.log(` only aggregate scores (tool usage, session counts, token volume).\n`);
524
+ console.log(`\n ${c.bold("Observers — How You Use AI, Not Just How Much")}`);
525
+ console.log(` JobArbiter observers go beyond token counts. We analyze ${c.bold("how")}`);
526
+ console.log(` you work with AI to build a rich proficiency profile:\n`);
527
+ console.log(` ${c.bold("Quantitative")} session frequency, token volume, tool diversity`);
528
+ console.log(` ${c.bold("Qualitative")} — orchestration complexity, problem-solving approach,`);
529
+ console.log(` communication clarity, iteration patterns, tool fluency\n`);
530
+ console.log(` This is what makes your profile ${c.bold("verified")} — not self-reported.`);
531
+ console.log(` Anyone can claim "advanced AI skills." Your observer ${c.bold("proves")} it.\n`);
532
+ console.log(` ${c.bold("Privacy:")} ${c.highlight("No code, prompts, or content leave your machine.")}`);
533
+ console.log(` Only derived proficiency signals (scores, patterns, dimensions)`);
534
+ console.log(` are submitted — never raw session data.\n`);
528
535
  console.log(c.dim(` Data stored locally: ~/.config/jobarbiter/observer/observations.json`));
529
- console.log(c.dim(` Review anytime: jobarbiter observe status\n`));
536
+ console.log(c.dim(` Review anytime: jobarbiter observe review\n`));
530
537
 
531
538
  const observerNames = needsObserver.map((t) => t.name).join(", ");
532
539
  const installAll = await prompt.confirm(
@@ -674,19 +681,25 @@ function showWorkerCompletion(state: OnboardState): void {
674
681
  console.log(`${sym.done} ${c.bold("Step 7/7 — You're In!")}\n`);
675
682
  console.log(`Your profile is live. Here's what happens next:\n`);
676
683
 
677
- console.log(` 📊 Your proficiency score builds automatically from:`);
678
- console.log(` ${sym.bullet} Coding agent observation ${c.dim("(biggest factor 35%)")}`);
679
- console.log(` ${sym.bullet} GitHub contribution analysis ${c.dim("(20%)")}`);
680
- console.log(` ${sym.bullet} Token consumption patterns ${c.dim("(15%)")}`);
681
- console.log(` ${sym.bullet} Tool diversity & fluency ${c.dim("(15%)")}`);
682
- console.log(` ${sym.bullet} Outcome verification ${c.dim("(15%)")}\n`);
684
+ console.log(` 📊 Your proficiency profile builds automatically from:`);
685
+ console.log(` ${c.bold("How you use AI (qualitative):")}`);
686
+ console.log(` ${sym.bullet} Orchestration complexity ${c.dim("— single prompts vs multi-agent pipelines")}`);
687
+ console.log(` ${sym.bullet} Problem-solving approach ${c.dim("— how you break down and iterate")}`);
688
+ console.log(` ${sym.bullet} Communication clarity ${c.dim("— precision of your instructions")}`);
689
+ console.log(` ${sym.bullet} Tool fluency ${c.dim("— depth across different AI tools")}\n`);
690
+ console.log(` ${c.bold("How much you use AI (quantitative):")}`);
691
+ console.log(` ${sym.bullet} Session frequency & consistency over time`);
692
+ console.log(` ${sym.bullet} Token consumption patterns`);
693
+ console.log(` ${sym.bullet} GitHub AI-assisted contributions`);
694
+ console.log(` ${sym.bullet} Tool diversity across providers\n`);
683
695
 
684
696
  console.log(` 🎯 Your proficiency ${c.bold("track")} (Orchestrator, Systems Builder, or`);
685
697
  console.log(` Domain Translator) is determined automatically as we observe`);
686
- console.log(` how you work. No need to self-assess.\n`);
698
+ console.log(` how you work whether that's coding, research, automation,`);
699
+ console.log(` content creation, or anything else. No need to self-assess.\n`);
687
700
 
688
701
  console.log(` 🤖 For deeper attestation, install the ${c.highlight("jobarbiter-proficiency")}`);
689
- console.log(` skill in your AI agent (OpenClaw, Claude Code, etc.)\n`);
702
+ console.log(` skill in your AI tools (OpenClaw, Claude Code, etc.)\n`);
690
703
 
691
704
  console.log(` ${c.bold("Useful commands:")}`);
692
705
  console.log(` ${c.highlight("jobarbiter profile score")} — Check your proficiency score`);