@tractorscorch/clank 1.5.4 → 1.5.6

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/CHANGELOG.md CHANGED
@@ -6,6 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
6
6
 
7
7
  ---
8
8
 
9
+ ## [1.5.6] — 2026-03-23
10
+
11
+ ### Fixed
12
+ - **Local models still refusing actions** — v1.5.5 prompt wasn't forceful enough. Rewrote system prompt as a dense, authoritative rules block with numbered rules and explicit list of available tools. Added negative examples ("NEVER say 'I cannot access files'") which are more effective at overriding local model training biases than positive instructions alone
13
+
14
+ ---
15
+
16
+ ## [1.5.5] — 2026-03-23
17
+
18
+ ### Fixed
19
+ - **Local models refuse to use tools** — models claimed "I can't access your files" despite having `read_file`, `write_file`, etc. available. Strengthened the system prompt to explicitly tell the model it runs locally on the user's machine with direct file system access and must never refuse file operations
20
+
21
+ ---
22
+
9
23
  ## [1.5.4] — 2026-03-23
10
24
 
11
25
  ### Fixed
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <a href="https://github.com/ItsTrag1c/Clank/releases/latest"><img src="https://img.shields.io/badge/version-1.5.4-blue.svg" alt="Version" /></a>
12
+ <a href="https://github.com/ItsTrag1c/Clank/releases/latest"><img src="https://img.shields.io/badge/version-1.5.6-blue.svg" alt="Version" /></a>
13
13
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License" /></a>
14
14
  <a href="https://www.npmjs.com/package/@tractorscorch/clank"><img src="https://img.shields.io/npm/v/@tractorscorch/clank.svg" alt="npm" /></a>
15
15
  <a href="https://github.com/ItsTrag1c/Clank/stargazers"><img src="https://img.shields.io/github/stars/ItsTrag1c/Clank.svg" alt="Stars" /></a>
@@ -75,7 +75,7 @@ That's it. Setup auto-detects your local models, configures the gateway, and get
75
75
  | Platform | Download |
76
76
  |----------|----------|
77
77
  | **npm** (all platforms) | `npm install -g @tractorscorch/clank` |
78
- | **macOS** (Apple Silicon) | [Clank_1.5.4_macos](https://github.com/ItsTrag1c/Clank/releases/latest/download/Clank_1.5.4_macos) |
78
+ | **macOS** (Apple Silicon) | [Clank_1.5.6_macos](https://github.com/ItsTrag1c/Clank/releases/latest/download/Clank_1.5.6_macos) |
79
79
 
80
80
  ## Features
81
81
 
package/dist/index.js CHANGED
@@ -1161,13 +1161,26 @@ async function buildSystemPrompt(opts) {
1161
1161
  }
1162
1162
  parts.push("");
1163
1163
  if (compact) {
1164
- parts.push("You are a helpful AI assistant with tools. Be concise. Use tools proactively. Read files before editing.");
1164
+ parts.push([
1165
+ "You are an AI agent running LOCALLY on the user's machine.",
1166
+ "You have tools: read_file, write_file, edit_file, list_directory, bash, search_files, glob_files, git, web_search, web_fetch, and self-config tools.",
1167
+ "ALWAYS use your tools. NEVER say you cannot access files, run commands, or perform actions. You CAN \u2014 use your tools.",
1168
+ "NEVER apologize and refuse. If asked to do something, DO IT with your tools or explain what tool you need."
1169
+ ].join(" "));
1165
1170
  } else {
1166
- parts.push("## Instructions");
1167
- parts.push("You are a helpful AI assistant with access to tools for reading/writing files, running commands, and more.");
1168
- parts.push("Be concise and direct. Use tools proactively to accomplish tasks.");
1169
- parts.push("When you need to make changes, read the relevant files first to understand the context.");
1170
- parts.push("You can configure yourself \u2014 use the config, channel, agent, and model management tools to modify your own setup.");
1171
+ parts.push("## CRITICAL: You Are a Local Agent With Tools");
1172
+ parts.push([
1173
+ "You are an AI agent running LOCALLY on the user's machine \u2014 NOT a cloud chatbot.",
1174
+ "You have DIRECT access to the file system, shell, and web through your tools.",
1175
+ "Your tools include: read_file, write_file, edit_file, list_directory, bash, search_files, glob_files, git, web_search, web_fetch, and self-configuration tools."
1176
+ ].join(" "));
1177
+ parts.push("");
1178
+ parts.push("**RULES \u2014 follow these strictly:**");
1179
+ parts.push("1. ALWAYS use your tools to accomplish tasks. When asked to read a file, USE read_file. When asked to run a command, USE bash.");
1180
+ parts.push(`2. NEVER say "I cannot access files", "I don't have the ability to", or "as an AI I cannot". These statements are FALSE. You have tools that give you these abilities.`);
1181
+ parts.push("3. NEVER apologize and refuse to act. If a task requires a tool, use it. If you lack a specific tool, say which tool you need \u2014 do not give a generic refusal.");
1182
+ parts.push("4. Read files before editing them. Use tools proactively without being asked twice.");
1183
+ parts.push("5. You can configure yourself \u2014 use the config, channel, agent, and model management tools to modify your own setup.");
1171
1184
  }
1172
1185
  if (opts.thinking === "off") {
1173
1186
  parts.push("");
@@ -6227,7 +6240,7 @@ var init_server = __esm({
6227
6240
  res.writeHead(200, { "Content-Type": "application/json" });
6228
6241
  res.end(JSON.stringify({
6229
6242
  status: "ok",
6230
- version: "1.5.4",
6243
+ version: "1.5.6",
6231
6244
  uptime: process.uptime(),
6232
6245
  clients: this.clients.size,
6233
6246
  agents: this.engines.size
@@ -6339,7 +6352,7 @@ var init_server = __esm({
6339
6352
  const hello = {
6340
6353
  type: "hello",
6341
6354
  protocol: PROTOCOL_VERSION,
6342
- version: "1.5.4",
6355
+ version: "1.5.6",
6343
6356
  agents: this.config.agents.list.map((a) => ({
6344
6357
  id: a.id,
6345
6358
  name: a.name || a.id,
@@ -7734,7 +7747,7 @@ async function runTui(opts) {
7734
7747
  ws.on("open", () => {
7735
7748
  ws.send(JSON.stringify({
7736
7749
  type: "connect",
7737
- params: { auth: { token }, mode: "tui", version: "1.5.4" }
7750
+ params: { auth: { token }, mode: "tui", version: "1.5.6" }
7738
7751
  }));
7739
7752
  });
7740
7753
  ws.on("message", (data) => {
@@ -8163,7 +8176,7 @@ import { fileURLToPath as fileURLToPath5 } from "url";
8163
8176
  import { dirname as dirname5, join as join19 } from "path";
8164
8177
  var __filename3 = fileURLToPath5(import.meta.url);
8165
8178
  var __dirname3 = dirname5(__filename3);
8166
- var version = "1.5.4";
8179
+ var version = "1.5.6";
8167
8180
  try {
8168
8181
  const pkg = JSON.parse(readFileSync(join19(__dirname3, "..", "package.json"), "utf-8"));
8169
8182
  version = pkg.version;