clawmoney 0.17.12 → 0.17.14

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.
@@ -3,19 +3,32 @@ import chalk from "chalk";
3
3
  import { apiPost } from "../utils/api.js";
4
4
  import { loadConfig } from "../utils/config.js";
5
5
  import { setupCommand } from "./setup.js";
6
+ // Routing kept in sync with bnbot-api app/core/market_skill_routing.py.
7
+ // Data analyses, code generation, and code reviews are escrow because the
8
+ // caller usually wants to inspect the deliverable before releasing funds.
9
+ //
10
+ // Backend SkillCategory enum has more entries than this wizard shows. We
11
+ // intentionally HIDE the following because they offer no differentiated
12
+ // value in an agent marketplace today:
13
+ // - search/web — every provider can hit Tavily/Brave/SerpAPI direct
14
+ // at the same prices; nothing to arbitrage
15
+ // - transformation/translate — modern LLMs translate inline, no need to
16
+ // outsource the call
17
+ // - transformation/stt — whisper.cpp is free and local; whisper API
18
+ // is $0.006/min, almost no margin
19
+ //
20
+ // Those backend enum values are still valid — high-end providers who really
21
+ // want to list them can use `clawmoney market register --category <value>`.
6
22
  const CATEGORIES = [
7
23
  { value: "generation/image", routing: "instant", timeoutS: 120, suggestedPrice: 0.02, priceRange: [0.01, 0.50], defaultName: "gen-image", placeholderDesc: "Generate a 1024x1024 image from a text prompt" },
8
24
  { value: "generation/video", routing: "instant", timeoutS: 300, suggestedPrice: 0.10, priceRange: [0.05, 1.00], defaultName: "gen-video", placeholderDesc: "Generate a short AI video clip from a text prompt" },
9
- { value: "generation/video_long", routing: "escrow", timeoutS: null, suggestedPrice: 5.00, priceRange: [1.00, 50.00], defaultName: "gen-video-long", placeholderDesc: "Generate long-form narrated video (escrow)" },
10
25
  { value: "generation/text", routing: "instant", timeoutS: 120, suggestedPrice: 0.01, priceRange: [0.005, 0.20], defaultName: "gen-text", placeholderDesc: "Generate text from a prompt" },
11
26
  { value: "generation/audio", routing: "instant", timeoutS: 180, suggestedPrice: 0.05, priceRange: [0.02, 0.50], defaultName: "gen-audio", placeholderDesc: "Generate music or sound effects from a prompt" },
12
- { value: "transformation/translate", routing: "instant", timeoutS: 60, suggestedPrice: 0.01, priceRange: [0.005, 0.10], defaultName: "translate", placeholderDesc: "Translate text between languages" },
13
27
  { value: "transformation/tts", routing: "instant", timeoutS: 120, suggestedPrice: 0.02, priceRange: [0.01, 0.20], defaultName: "tts", placeholderDesc: "Convert text to natural-sounding speech" },
14
- { value: "transformation/stt", routing: "instant", timeoutS: 120, suggestedPrice: 0.02, priceRange: [0.01, 0.20], defaultName: "stt", placeholderDesc: "Transcribe speech to text" },
15
- { value: "search/web", routing: "instant", timeoutS: 60, suggestedPrice: 0.01, priceRange: [0.005, 0.10], defaultName: "web-search", placeholderDesc: "Search the web and return relevant results" },
16
- { value: "analysis/data", routing: "instant", timeoutS: 180, suggestedPrice: 0.05, priceRange: [0.02, 0.50], defaultName: "data-analysis", placeholderDesc: "Analyze a dataset and return insights" },
17
- { value: "coding/generation", routing: "instant", timeoutS: 240, suggestedPrice: 0.05, priceRange: [0.02, 0.50], defaultName: "code-gen", placeholderDesc: "Generate code from a natural-language spec" },
18
- { value: "coding/review", routing: "instant", timeoutS: 180, suggestedPrice: 0.05, priceRange: [0.02, 0.50], defaultName: "code-review", placeholderDesc: "Review a diff or PR for bugs and style issues" },
28
+ { value: "generation/video_long", routing: "escrow", timeoutS: null, suggestedPrice: 5.00, priceRange: [1.00, 50.00], defaultName: "gen-video-long", placeholderDesc: "Generate long-form narrated video (escrow)" },
29
+ { value: "analysis/data", routing: "escrow", timeoutS: null, suggestedPrice: 0.50, priceRange: [0.10, 5.00], defaultName: "data-analysis", placeholderDesc: "Analyze a dataset and deliver a report" },
30
+ { value: "coding/generation", routing: "escrow", timeoutS: null, suggestedPrice: 1.00, priceRange: [0.20, 10.00], defaultName: "code-gen", placeholderDesc: "Generate code or a small project from a spec" },
31
+ { value: "coding/review", routing: "escrow", timeoutS: null, suggestedPrice: 0.50, priceRange: [0.10, 5.00], defaultName: "code-review", placeholderDesc: "Review a diff or PR for bugs and style issues" },
19
32
  { value: "other", routing: "auto", timeoutS: null, suggestedPrice: 0.02, priceRange: [0.01, 1.00], defaultName: "", placeholderDesc: "Describe what this skill does" },
20
33
  ];
21
34
  const PRICE_THRESHOLD_FOR_ESCROW = 1.0; // mirrors backend constant
@@ -29,13 +29,8 @@ export async function providerSetupWizard() {
29
29
  console.log(chalk.red("\n No agent config found. Run `clawmoney setup` first to register.\n"));
30
30
  process.exit(1);
31
31
  }
32
- // Render the full role catalog as a note before the multiselect, so the
33
- // user has a stable reference even after clack collapses the prompt to
34
- // its selected-items summary. Without this, the user only sees what they
35
- // ticked and can be left wondering "did I miss other roles?".
36
- note(ROLES.map((r) => `${chalk.bold(r.label.padEnd(16, " "))}${chalk.dim(r.hint)}`).join("\n"), "Three provider roles — pick any combination");
37
32
  const picked = await multiselect({
38
- message: "Toggle roles with SPACE, confirm with ENTER (you can skip all to register no role):",
33
+ message: "Provider roles — toggle with SPACE, confirm with ENTER (skip all to register no role):",
39
34
  options: ROLES.map((r) => ({
40
35
  value: r.value,
41
36
  label: r.label,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawmoney",
3
- "version": "0.17.12",
3
+ "version": "0.17.14",
4
4
  "description": "ClawMoney CLI -- Earn rewards with your AI agent",
5
5
  "type": "module",
6
6
  "bin": {