zames_pro 2.82.89 → 2.82.91
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 +12 -0
- package/dist/commands.js +17 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.82.91] - 2026-10-24
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **goal:** a goal cannot inject a second Current task section
|
|
15
|
+
|
|
16
|
+
## [2.82.90] - 2026-10-24
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **commands:** a dynamic hint name is normalized to a slash command
|
|
21
|
+
|
|
10
22
|
## [2.82.89] - 2026-10-24
|
|
11
23
|
|
|
12
24
|
### Fixed
|
package/dist/commands.js
CHANGED
|
@@ -709,9 +709,13 @@ export function withGoal(goal, task) {
|
|
|
709
709
|
if (!g)
|
|
710
710
|
return task;
|
|
711
711
|
const NL = String.fromCharCode(10);
|
|
712
|
+
// The goal is operator text and may itself contain a `Current task:` heading
|
|
713
|
+
// (a pasted prompt). That produced TWO sections and the model worked on the
|
|
714
|
+
// INJECTED task; re-indent such a heading so only OUR line is structural.
|
|
715
|
+
const safeGoal = g.replace(/^(\s*)Current task:/gim, '$1Session goal (continued):');
|
|
712
716
|
return ('Session goal (long-lived — keep it in mind for this and every following task):' +
|
|
713
717
|
NL +
|
|
714
|
-
|
|
718
|
+
safeGoal +
|
|
715
719
|
NL +
|
|
716
720
|
NL +
|
|
717
721
|
'Current task:' +
|
|
@@ -1213,15 +1217,23 @@ export function buildSlashCommandHints(opts) {
|
|
|
1213
1217
|
.filter((c) => !(hideModel && c.name === '/model'))
|
|
1214
1218
|
.map((c) => ({ name: c.name, description: t(c.key) }));
|
|
1215
1219
|
const known = new Set(base.map((c) => c.name.toLowerCase()));
|
|
1216
|
-
for (const
|
|
1217
|
-
|
|
1220
|
+
for (const raw of opts.dynamic ?? []) {
|
|
1221
|
+
// A slash hint must BE a slash command: a custom command whose name
|
|
1222
|
+
// omitted the leading `/` showed up as a bare word (`nosl`) that no
|
|
1223
|
+
// `/nosl` invocation ever matched, and an EMPTY name produced a blank row.
|
|
1224
|
+
const trimmed = String(raw.name ?? '').trim();
|
|
1225
|
+
if (!trimmed)
|
|
1226
|
+
continue;
|
|
1227
|
+
const name = trimmed.startsWith('/') ? trimmed : '/' + trimmed;
|
|
1228
|
+
const key = name.toLowerCase();
|
|
1229
|
+
if (known.has(key))
|
|
1218
1230
|
continue;
|
|
1219
1231
|
// Remember the DYNAMIC name too: two entries that differ only by case
|
|
1220
1232
|
// (`/foo` and `/FOO`) were both added, so the operator saw the same
|
|
1221
1233
|
// command twice and the second was unreachable (a slash command is
|
|
1222
1234
|
// resolved case-insensitively).
|
|
1223
|
-
known.add(
|
|
1224
|
-
base.push(
|
|
1235
|
+
known.add(key);
|
|
1236
|
+
base.push({ ...raw, name });
|
|
1225
1237
|
}
|
|
1226
1238
|
return base;
|
|
1227
1239
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zames_pro",
|
|
3
|
-
"version": "2.82.
|
|
3
|
+
"version": "2.82.91",
|
|
4
4
|
"description": "Terminal coding agent that drives a real browser to chat with DeepSeek, Qwen and other web LLMs — no API key required. Reads and edits files, runs commands, commits to git, like Claude Code / Codex CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|