clawmoney 0.10.13 → 0.10.15

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.
@@ -12,7 +12,7 @@ const DEFAULT_TIMEOUT_MS = 120_000;
12
12
  // ── Spawn CLI process ──
13
13
  export function spawnCli(cliType, args, timeoutMs = DEFAULT_TIMEOUT_MS) {
14
14
  return new Promise((resolve, reject) => {
15
- logger.info(`Spawning ${cliType} with args: ${args.join(" ").slice(0, 200)}`);
15
+ logger.info(` Exec: ${cliType} ${args.slice(0, 3).join(" ")}...`);
16
16
  const child = spawn(cliType, args, {
17
17
  stdio: ["ignore", "pipe", "pipe"],
18
18
  timeout: timeoutMs,
@@ -89,29 +89,51 @@ function loadRelayConfig(cliOverride) {
89
89
  };
90
90
  }
91
91
  // ── Request handler ──
92
+ function messagesToPrompt(messages) {
93
+ return messages.map((m) => String(m.content ?? "")).join("\n");
94
+ }
92
95
  async function executeRelayRequest(request, config) {
93
- const { request_id, prompt, session_id, max_budget_usd } = request;
94
- const cliType = config.relay.cli_type;
96
+ const { request_id, max_budget_usd } = request;
97
+ const cliType = request.cli_type ?? config.relay.cli_type;
98
+ const model = request.model ?? config.relay.model;
99
+ // Build prompt from messages (no --resume, full history as prompt)
100
+ const prompt = request.messages
101
+ ? messagesToPrompt(request.messages)
102
+ : request.prompt ?? "";
103
+ const lastUserMsg = request.messages
104
+ ? [...request.messages].reverse().find((m) => m.role === "user")?.content ?? ""
105
+ : prompt;
106
+ const turns = request.messages
107
+ ? request.messages.filter((m) => m.role === "user").length
108
+ : 1;
109
+ logger.info(` ┌─ Request ${request_id.slice(0, 8)}`);
110
+ logger.info(` │ CLI: ${cliType} / ${model}`);
111
+ logger.info(` │ Turns: ${turns}`);
112
+ logger.info(` │ Prompt: ${String(lastUserMsg).slice(0, 80)}`);
95
113
  try {
96
- const args = buildCliArgs(cliType, prompt, session_id, max_budget_usd);
114
+ // No session_id each request is stateless, full history in prompt
115
+ const args = buildCliArgs(cliType, prompt, undefined, max_budget_usd, model);
97
116
  const raw = await spawnCli(cliType, args);
98
117
  const parsed = parseCliOutput(cliType, raw);
118
+ const answer = parsed.text.replace(/\n/g, " ").slice(0, 80);
119
+ logger.info(` │ Answer: ${answer}`);
120
+ logger.info(` └─ Tokens: ${parsed.usage.input_tokens} in / ${parsed.usage.output_tokens} out`);
99
121
  return {
100
122
  event: "relay_response",
101
123
  request_id,
102
- result: parsed.text,
124
+ content: parsed.text,
103
125
  session_id: parsed.sessionId || undefined,
104
126
  usage: parsed.usage,
105
- model_used: parsed.model || config.relay.model,
127
+ model_used: parsed.model || model,
106
128
  cost_usd: parsed.costUsd || undefined,
107
129
  };
108
130
  }
109
131
  catch (err) {
110
- logger.error(`Relay request ${request_id} failed:`, err);
132
+ logger.error(` └─ ERROR: ${err instanceof Error ? err.message : err}`);
111
133
  return {
112
134
  event: "relay_response",
113
135
  request_id,
114
- result: "",
136
+ content: "",
115
137
  error: err instanceof Error ? err.message : "Unknown execution error",
116
138
  };
117
139
  }
@@ -152,7 +174,7 @@ export function runRelayProvider(cliOverride) {
152
174
  wsClient.send({
153
175
  event: "relay_response",
154
176
  request_id: request.request_id,
155
- result: "",
177
+ content: "",
156
178
  error: "Provider is at maximum capacity. Please try again later.",
157
179
  });
158
180
  return;
@@ -1,7 +1,12 @@
1
1
  export interface RelayRequest {
2
2
  event: "relay_request";
3
3
  request_id: string;
4
- prompt: string;
4
+ prompt?: string;
5
+ messages?: Array<{
6
+ role: string;
7
+ content: string;
8
+ }>;
9
+ cli_type?: string;
5
10
  session_id?: string;
6
11
  model?: string;
7
12
  max_budget_usd?: number;
@@ -20,7 +25,7 @@ export type RelayIncomingEvent = RelayRequest | RelayConnectedEvent | RelayError
20
25
  export interface RelayResponse {
21
26
  event: "relay_response";
22
27
  request_id: string;
23
- result: string;
28
+ content: string;
24
29
  session_id?: string;
25
30
  usage?: {
26
31
  input_tokens: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawmoney",
3
- "version": "0.10.13",
3
+ "version": "0.10.15",
4
4
  "description": "ClawMoney CLI -- Earn rewards with your AI agent",
5
5
  "type": "module",
6
6
  "bin": {