50c 2.15.0 → 2.16.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/lib/core/tools.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * 50c Core Tools - Always Free
3
- * search, fetch, domain_check, balance
3
+ * search, fetch, domain_check, balance, quick_vibe
4
4
  */
5
5
 
6
6
  const https = require('https');
@@ -30,6 +30,11 @@ async function checkBalance() {
30
30
  return apiRequest('GET', '/user/balance');
31
31
  }
32
32
 
33
+ // Quick Vibe - 3 unconventional ideas (moved to FREE tier 2026-01-31)
34
+ async function quickVibe(working_on) {
35
+ return apiRequest('POST', '/tools/quick_vibe', { working_on });
36
+ }
37
+
33
38
  // Tool definitions
34
39
  const CORE_TOOLS = [
35
40
  {
@@ -74,6 +79,17 @@ const CORE_TOOLS = [
74
79
  type: 'object',
75
80
  properties: {}
76
81
  }
82
+ },
83
+ {
84
+ name: 'quick_vibe',
85
+ description: '3 unconventional ideas. FREE.',
86
+ inputSchema: {
87
+ type: 'object',
88
+ properties: {
89
+ working_on: { type: 'string', description: 'What you\'re working on' }
90
+ },
91
+ required: ['working_on']
92
+ }
77
93
  }
78
94
  ];
79
95
 
@@ -89,6 +105,8 @@ async function handleTool(name, args) {
89
105
  return await domainCheck(args.domain);
90
106
  case 'check_balance':
91
107
  return await checkBalance();
108
+ case 'quick_vibe':
109
+ return await quickVibe(args.working_on);
92
110
  default:
93
111
  return { error: `Unknown core tool: ${name}` };
94
112
  }
package/lib/index.js CHANGED
@@ -98,14 +98,17 @@ async function checkVersion() {
98
98
  }
99
99
  }
100
100
 
101
- // Tool name mappings by pack
101
+ // Tool name mappings by pack (optimized per 50c genius analysis 2026-01-31)
102
+ // Changes: quick_vibe→FREE, compute→PRO, grabr→ENTERPRISE, cvi_loop/cvi_verify→PRO
102
103
  const TOOL_PACKS = {
103
- beacon: ['hints', 'hints_plus', 'roast', 'quick_vibe', 'one_liner', 'name_it', 'price_it', 'compute', 'ide_conversation', 'learning_stats',
104
+ beacon: ['hints', 'hints_plus', 'roast', 'one_liner', 'name_it', 'price_it', 'ide_conversation', 'learning_stats',
104
105
  'beacon_scan', 'beacon_compress', 'beacon_extract', 'beacon_focus', 'beacon_rank'],
105
- labs: ['genius', 'mind_opener', 'idea_fold', 'agent_autopsy', 'prompt_fortress', 'context_health', 'context_compress', 'context_extract', 'context_reposition'],
106
- labs_plus: ['bcalc', 'genius_plus', 'bcalc_why', 'discovery_collision', 'cvi_loop', 'cvi_verify', 'chaos_fingerprint', 'resonance', 'prime_residue', 'echo_sequence', 'conversation_diagnostic', 'handoff'],
106
+ labs: ['genius', 'mind_opener', 'idea_fold', 'agent_autopsy', 'prompt_fortress', 'context_health', 'context_compress', 'context_extract', 'context_reposition',
107
+ 'compute', 'cvi_loop', 'cvi_verify'],
108
+ labs_plus: ['bcalc', 'genius_plus', 'bcalc_why', 'discovery_collision', 'chaos_fingerprint', 'resonance', 'prime_residue', 'echo_sequence', 'conversation_diagnostic', 'handoff',
109
+ 'grabr_scrape', 'grabr_contact', 'grabr_wayback', 'grabr_sitemap', 'grabr_batch', 'grabr_intel'],
107
110
  prompt_engine: ['prompt_extract', 'prompt_phases', 'prompt_refine', 'prompt_expand', 'prompt_categorize'],
108
- grabr: ['grabr_scrape', 'grabr_contact', 'grabr_wayback', 'grabr_sitemap', 'grabr_batch', 'grabr_intel']
111
+ grabr: [] // Moved to labs_plus (Enterprise) - kept for backward compat
109
112
  };
110
113
 
111
114
  // Get all available tools based on enabled packs
@@ -145,8 +148,8 @@ async function getTools() {
145
148
  async function handleTool(name, args = {}) {
146
149
  const config = await loadConfig();
147
150
 
148
- // Core tools (FREE)
149
- if (['web_search', 'page_fetch', 'domain_check', 'check_balance'].includes(name)) {
151
+ // Core tools (FREE) - includes quick_vibe now
152
+ if (['web_search', 'page_fetch', 'domain_check', 'check_balance', 'quick_vibe'].includes(name)) {
150
153
  return core.handleTool(name, args);
151
154
  }
152
155
 
@@ -189,10 +192,10 @@ async function handleTool(name, args = {}) {
189
192
  return promptEngine.handleTool(name, args);
190
193
  }
191
194
 
192
- // Grabr tools (PRO)
193
- if (TOOL_PACKS.grabr.includes(name) || name.startsWith('grabr_')) {
194
- if (!config.packs.grabr) {
195
- return { error: 'Requires Pro tier ($99/mo). Enable grabr pack or upgrade at sales.50c.ai/50c-pro/' };
195
+ // Grabr tools (ENTERPRISE - moved from PRO for legal/compliance)
196
+ if (TOOL_PACKS.labs_plus.includes(name) && name.startsWith('grabr_')) {
197
+ if (!config.packs.labs_plus) {
198
+ return { error: 'Grabr web scraping requires Enterprise tier ($499/mo). Upgrade at sales.50c.ai/50c-enterprise/' };
196
199
  }
197
200
  return grabr.handleTool(name, args);
198
201
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "50c",
3
- "version": "2.15.0",
4
- "description": "AI toolkit. Added beacon_* tools to TOOL_PACKS routing.",
3
+ "version": "2.16.0",
4
+ "description": "AI toolkit. Tier optimization: quick_vibe→FREE, compute→PRO, grabr→ENTERPRISE, cvi_loop→PRO",
5
5
  "main": "lib/index.js",
6
6
  "bin": {
7
7
  "50c": "./bin/50c.js"