clawmoney 0.10.19 → 0.10.20

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.
@@ -97,7 +97,9 @@ async function executeRelayRequest(request, config) {
97
97
  const { request_id, max_budget_usd } = request;
98
98
  const cliType = request.cli_type ?? config.relay.cli_type;
99
99
  const model = request.model ?? config.relay.model;
100
- // Build prompt from messages (no --resume, full history as prompt)
100
+ const stateful = request.stateful ?? false;
101
+ const cliSessionId = request.cli_session_id ?? undefined;
102
+ // Build prompt from messages
101
103
  const prompt = request.messages
102
104
  ? messagesToPrompt(request.messages)
103
105
  : request.prompt ?? "";
@@ -107,14 +109,17 @@ async function executeRelayRequest(request, config) {
107
109
  const turns = request.messages
108
110
  ? request.messages.filter((m) => m.role === "user").length
109
111
  : 1;
112
+ const modeLabel = stateful
113
+ ? (cliSessionId ? `stateful[resume ${cliSessionId.slice(0, 8)}]` : "stateful[new]")
114
+ : "stateless";
110
115
  logger.info(` ┌─ Request ${request_id.slice(0, 8)}`);
111
- logger.info(` │ CLI: ${cliType} / ${model}`);
116
+ logger.info(` │ CLI: ${cliType} / ${model} (${modeLabel})`);
112
117
  logger.info(` │ Turns: ${turns}`);
113
118
  logger.info(` │ Prompt: ${String(lastUserMsg).slice(0, 80)}`);
114
119
  try {
115
- // No session_id — each request is stateless, full history in prompt
116
120
  const startMs = Date.now();
117
- const args = buildCliArgs(cliType, prompt, undefined, max_budget_usd, model);
121
+ // In stateful mode, pass cli_session_id so buildCliArgs adds --resume
122
+ const args = buildCliArgs(cliType, prompt, cliSessionId, max_budget_usd, model);
118
123
  const raw = await spawnCli(cliType, args);
119
124
  const elapsedMs = Date.now() - startMs;
120
125
  const parsed = parseCliOutput(cliType, raw);
@@ -132,7 +137,7 @@ async function executeRelayRequest(request, config) {
132
137
  event: "relay_response",
133
138
  request_id,
134
139
  content: parsed.text,
135
- session_id: parsed.sessionId || undefined,
140
+ cli_session_id: parsed.sessionId || undefined,
136
141
  usage: parsed.usage,
137
142
  model_used: parsed.model || model,
138
143
  cost_usd: parsed.costUsd || undefined,
@@ -8,6 +8,8 @@ export interface RelayRequest {
8
8
  }>;
9
9
  cli_type?: string;
10
10
  session_id?: string;
11
+ cli_session_id?: string | null;
12
+ stateful?: boolean;
11
13
  model?: string;
12
14
  max_budget_usd?: number;
13
15
  }
@@ -27,10 +29,12 @@ export interface RelayResponse {
27
29
  request_id: string;
28
30
  content: string;
29
31
  session_id?: string;
32
+ cli_session_id?: string;
30
33
  usage?: {
31
34
  input_tokens: number;
32
35
  output_tokens: number;
33
- cached_tokens?: number;
36
+ cache_creation_tokens?: number;
37
+ cache_read_tokens?: number;
34
38
  };
35
39
  model_used?: string;
36
40
  cost_usd?: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawmoney",
3
- "version": "0.10.19",
3
+ "version": "0.10.20",
4
4
  "description": "ClawMoney CLI -- Earn rewards with your AI agent",
5
5
  "type": "module",
6
6
  "bin": {