@tokenade/cli 0.7.4 → 0.7.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/README.md +2 -1
- package/install.js +18 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -160,7 +160,7 @@ When reporting, please include your OS, `tokenade --version`, your coding agent,
|
|
|
160
160
|
| **System & network** | `table` · `disk` · `netstat` · `dns` · `vmstat` · `filelist` · `grep` |
|
|
161
161
|
| **Web & docs** | `web` · `serp` (aliases `google`/`bing`/`ddg`) · `snapshot` · `stealth` · `curl` · `docs` · `pdf` · `notebook` |
|
|
162
162
|
|
|
163
|
-
**Your own compactors.** `add-compactor --file <rules.toml>` teaches Tokenade to fold output from a command it doesn't cover yet (alias `add-filter`); `add-compactor --list` shows the ones you've added, and `add-compactor --help` prints the file format.
|
|
163
|
+
**Your own compactors.** `add-compactor --file <rules.toml>` teaches Tokenade to fold output from a command it doesn't cover yet (alias `add-filter`); `add-compactor --list` shows the ones you've added, and `add-compactor --help` prints the file format. Filters shipped INSIDE a repo (`.tokenade/filters/`) apply only after you approve them once with `trust-filters` — a cloned project can't silently rewrite your outputs.
|
|
164
164
|
|
|
165
165
|
### Savings, receipts & reporting
|
|
166
166
|
|
|
@@ -362,6 +362,7 @@ some-noisy-cmd | tokenade auto - # …or pipe stdin
|
|
|
362
362
|
|
|
363
363
|
tokenade add-compactor --file my-rules.toml # teach Tokenade a new compactor
|
|
364
364
|
tokenade add-compactor --list # list the ones you've added
|
|
365
|
+
tokenade trust-filters # approve a repo's bundled filters
|
|
365
366
|
```
|
|
366
367
|
|
|
367
368
|
### Savings, receipts & reporting
|
package/install.js
CHANGED
|
@@ -171,19 +171,24 @@ function get(targetUrl, redirects = 0) {
|
|
|
171
171
|
err.httpStatus = res.statusCode;
|
|
172
172
|
return reject(err);
|
|
173
173
|
}
|
|
174
|
-
https
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
174
|
+
const tunneled = https.get(
|
|
175
|
+
{
|
|
176
|
+
host: t.hostname,
|
|
177
|
+
port,
|
|
178
|
+
path: `${t.pathname}${t.search}`,
|
|
179
|
+
socket,
|
|
180
|
+
agent: false,
|
|
181
|
+
servername: t.hostname,
|
|
182
|
+
},
|
|
183
|
+
onResponse,
|
|
184
|
+
);
|
|
185
|
+
tunneled.on("error", reject);
|
|
186
|
+
// The outer setTimeout only guards the CONNECT request — a
|
|
187
|
+
// stall AFTER the tunnel is established used to hang the
|
|
188
|
+
// attempt until the OS TCP timeout.
|
|
189
|
+
tunneled.setTimeout(REQUEST_TIMEOUT_MS, () => {
|
|
190
|
+
tunneled.destroy(new Error(`timeout after ${REQUEST_TIMEOUT_MS}ms (tunneled)`));
|
|
191
|
+
});
|
|
187
192
|
});
|
|
188
193
|
req = connectReq;
|
|
189
194
|
} else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tokenade/cli",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.6",
|
|
4
4
|
"description": "Tokenade — cut your AI coding agent's token bill. Installs the Tokenade CLI (a local, paid token-reduction tool; activate via your browser).",
|
|
5
5
|
"homepage": "https://tokenade.net",
|
|
6
6
|
"license": "UNLICENSED",
|