50c 2.14.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,13 +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
- labs: ['genius', 'mind_opener', 'idea_fold', 'agent_autopsy', 'prompt_fortress', 'context_health', 'context_compress', 'context_extract', 'context_reposition'],
105
- labs_plus: ['bcalc', 'genius_plus', 'bcalc_why', 'discovery_collision', 'cvi_loop', 'cvi_verify', 'chaos_fingerprint', 'resonance', 'prime_residue', 'echo_sequence', 'conversation_diagnostic', 'handoff'],
104
+ beacon: ['hints', 'hints_plus', 'roast', 'one_liner', 'name_it', 'price_it', 'ide_conversation', 'learning_stats',
105
+ 'beacon_scan', 'beacon_compress', 'beacon_extract', 'beacon_focus', 'beacon_rank'],
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'],
106
110
  prompt_engine: ['prompt_extract', 'prompt_phases', 'prompt_refine', 'prompt_expand', 'prompt_categorize'],
107
- grabr: ['grabr_scrape', 'grabr_contact', 'grabr_wayback', 'grabr_sitemap', 'grabr_batch', 'grabr_intel']
111
+ grabr: [] // Moved to labs_plus (Enterprise) - kept for backward compat
108
112
  };
109
113
 
110
114
  // Get all available tools based on enabled packs
@@ -144,8 +148,8 @@ async function getTools() {
144
148
  async function handleTool(name, args = {}) {
145
149
  const config = await loadConfig();
146
150
 
147
- // Core tools (FREE)
148
- 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)) {
149
153
  return core.handleTool(name, args);
150
154
  }
151
155
 
@@ -188,10 +192,10 @@ async function handleTool(name, args = {}) {
188
192
  return promptEngine.handleTool(name, args);
189
193
  }
190
194
 
191
- // Grabr tools (PRO)
192
- if (TOOL_PACKS.grabr.includes(name) || name.startsWith('grabr_')) {
193
- if (!config.packs.grabr) {
194
- 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/' };
195
199
  }
196
200
  return grabr.handleTool(name, args);
197
201
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "50c",
3
- "version": "2.14.0",
4
- "description": "AI toolkit. Fixed grabr apiRequest calls + web_search/page_fetch now working.",
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"