@blockrun/franklin 3.15.103 → 3.16.1

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.
@@ -188,7 +188,7 @@ Franklin stores wallet keys in ~/.blockrun/. When the user asks about wallet loc
188
188
  - Spending data:
189
189
  - ~/.blockrun/franklin-stats.json — rolling totals + per-model breakdown (what \`franklin stats\` reads).
190
190
  - ~/.blockrun/franklin-audit.jsonl — append-only forensic ledger of every LLM call.
191
- - ~/.blockrun/cost_log.jsonl — append-only ledger of every settled x402 payment (written by @blockrun/llm SDK).
191
+ - ~/.blockrun/cost_log.jsonl — append-only ledger of every settled x402 payment. Both Franklin (via AgentClient in src/agent/llm.ts) and the @blockrun/llm SDK (>= 2.0.0, via its chatCompletion / raw payment paths) append to the same file with the canonical schema.
192
192
  - Use \`franklin stats\` / \`franklin content list\` instead of parsing files when the user asks "how much did I spend".
193
193
  - Programmatic access: import { getWalletAddress, getOrCreateWallet, getOrCreateSolanaWallet } from '@blockrun/llm'
194
194
 
@@ -818,9 +818,15 @@ export async function interactiveSession(config, getUserInput, onEvent, onAbortR
818
818
  // running data-engineering on GCS logs: 15 distinct gsutil/bq calls,
819
819
  // each producing new insights, would have been cut off at call 6.
820
820
  // 3.15.30 detects ACTUAL loops by tracking the (tool, input)
821
- // signature: only break when the model calls the SAME signature 3
822
- // times in one turn. Different inputs → exploration, allowed.
823
- const SAME_SIGNATURE_HARD_STOP = 3;
821
+ // signature: only break when the model calls the SAME signature
822
+ // repeatedly in one turn. Different inputs → exploration, allowed.
823
+ //
824
+ // 3.16.1 bumps the threshold 3 → 5. The "3" rule was killing real
825
+ // sessions at 25-40 productive distinct calls when the model
826
+ // legitimately re-ran the same Read/Bash twice for polling or
827
+ // verification. Real infinite loops still trigger well before
828
+ // HARD_TOOL_CAP (50) bails out as a safety net.
829
+ const SAME_SIGNATURE_HARD_STOP = 5;
824
830
  // Tracks which tool names have already had a warn injected this turn.
825
831
  // Without it, every call past threshold pushes another [SYSTEM] STOP
826
832
  // tool_result into the model's context — same shape bug as the cap
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockrun/franklin",
3
- "version": "3.15.103",
3
+ "version": "3.16.1",
4
4
  "description": "Franklin Agent — The AI agent with a wallet. Spends USDC autonomously to get real work done. Pay per action, no subscriptions.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -66,7 +66,7 @@
66
66
  "node": ">=20"
67
67
  },
68
68
  "dependencies": {
69
- "@blockrun/llm": "^1.13.0",
69
+ "@blockrun/llm": "^2.0.0",
70
70
  "@modelcontextprotocol/sdk": "^1.29.0",
71
71
  "@solana/spl-token": "^0.4.14",
72
72
  "@solana/web3.js": "^1.98.4",