zames_pro 2.36.0 → 2.37.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.
- package/README.md +22 -10
- package/dist/commands.js +8 -0
- package/dist/index.js +13 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -139,22 +139,35 @@ Codex CLI:
|
|
|
139
139
|
|
|
140
140
|
- /diff [--staged] — show the working-tree git diff (--staged for the index).
|
|
141
141
|
- /cost (alias /usage) — session stats: tasks, tool calls, duration, and the
|
|
142
|
-
|
|
142
|
+
context size in tokens (DeepSeek's `accumulated_token_usage`).
|
|
143
143
|
- /export [file] — write the session transcript to a Markdown file
|
|
144
|
-
|
|
144
|
+
(zames-export-<stamp>.md by default).
|
|
145
145
|
- /doctor — diagnose node, git, config, browser, clipboard and MCP.
|
|
146
146
|
- /permissions — show the confirmation settings (Write/Edit/Bash + the
|
|
147
|
-
|
|
147
|
+
alwaysConfirm regex list).
|
|
148
148
|
- /add-dir <path> — validate an extra directory (the sandbox is fixed at
|
|
149
|
-
|
|
149
|
+
startup; relaunch with --dir to write there).
|
|
150
150
|
- /resume <n> (after /chats) and /resume-id <id> — open a chat and PRINT its
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
dialogue into the terminal, so the restored context is visible. Only the
|
|
152
|
+
last 20 messages are shown (`RESTORED_HISTORY_LIMIT`).
|
|
153
153
|
- /review [focus] [--staged] — ask the agent to review uncommitted changes
|
|
154
|
-
|
|
154
|
+
and report findings (no code changes).
|
|
155
155
|
- /compact — ask DeepSeek to compress the current chat into a handover
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
summary, then open a NEW chat, resend the system prompt and post the summary
|
|
157
|
+
as the carried-over context. Use it when the context gets long.
|
|
158
|
+
- /goal [text|clear] — set a long-lived session goal. It is prepended to every
|
|
159
|
+
task message, so the model keeps the big picture across many turns. Stored in
|
|
160
|
+
`<project>/.zames-goal` (git-ignored) and restored on the next launch.
|
|
161
|
+
- /loop <interval> <task> — repeat a task periodically (e.g. `/loop 10m run the
|
|
162
|
+
tests`). /cron "<min> <hour> <dom> <month> <dow>" <task> — run on a schedule.
|
|
163
|
+
/jobs [rm <id>|clear] lists and stops them. A fired job is put into the same
|
|
164
|
+
message queue you type into, so it runs when the agent is free (never mid-
|
|
165
|
+
generation) and still respects the send throttle.
|
|
166
|
+
- /thinking [on|off] and /web [on|off] — toggle Deep thinking / Smart search.
|
|
167
|
+
These (and /queue, /jobs, /goal, `/config <sub>`) can be used WHILE the agent
|
|
168
|
+
is working — they do not touch the in-flight generation.
|
|
169
|
+
- /queue [clear] — list or clear the messages waiting to be sent after the
|
|
170
|
+
current task.
|
|
158
171
|
|
|
159
172
|
The token context is also shown live: the status line above the input has the
|
|
160
173
|
spinner/text on the left and the context on the right (e.g. `125k · 13%`,
|
|
@@ -162,7 +175,6 @@ percent of a 1M context). It is COLORED by fill level: green below 50%,
|
|
|
162
175
|
yellow 50-80%, red above 80%. It comes from DeepSeek's
|
|
163
176
|
`accumulated_token_usage` and is hidden until the first answer delivers it.
|
|
164
177
|
|
|
165
|
-
|
|
166
178
|
## Project context, skills and memory
|
|
167
179
|
|
|
168
180
|
Like Codex / Claude Code, zames reads project instructions and reusable
|
package/dist/commands.js
CHANGED
|
@@ -444,6 +444,14 @@ export function buildCompactCarryover(summary, task) {
|
|
|
444
444
|
export function ctrlCEscalation(sinceLastMs, windowMs = 2000) {
|
|
445
445
|
return sinceLastMs < windowMs ? 'run' : 'tool';
|
|
446
446
|
}
|
|
447
|
+
// True when a scheduled job already has a message waiting in the queue. The
|
|
448
|
+
// scheduler ticker uses this to avoid piling many copies of the SAME job while
|
|
449
|
+
// the agent is busy (a 1-minute loop would otherwise queue a task every minute
|
|
450
|
+
// during one long task, and they would all run back-to-back). Pure, so the
|
|
451
|
+
// guard is unit-tested without a live scheduler.
|
|
452
|
+
export function hasQueuedJob(queue, jobId) {
|
|
453
|
+
return queue.some((m) => m.jobId === jobId);
|
|
454
|
+
}
|
|
447
455
|
// True when the queued message is a slash-command. It must NOT be merged into
|
|
448
456
|
// a task: the main loop has to execute it (e.g. /compact, /new).
|
|
449
457
|
export function isSlashCommand(text) {
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ import { translate, normalizeLocale, localeDisplayName, isLocale, } from './i18n
|
|
|
16
16
|
import { Transcript } from './transcript.js';
|
|
17
17
|
import { UndoStore } from './undo.js';
|
|
18
18
|
import { selfReview, selfDiff, selfApply, selfList } from './self-review.js';
|
|
19
|
-
import { formatDiff, diffGitArgs, parseTranscript, summarizeTranscript, renderCost, formatExport, defaultExportPath, renderDoctor, renderPermissions, resolveExtraDir, buildReviewPrompt, formatDuration, trimRestoredMessages, RESTORED_HISTORY_LIMIT, mergeMessages, isSlashCommand, parseQueueCommand, parseLiveToggle, parseGoalCommand, isLiveConfigCommand, withGoal, formatQueueList, ctrlCEscalation, } from './commands.js';
|
|
19
|
+
import { formatDiff, diffGitArgs, parseTranscript, summarizeTranscript, renderCost, formatExport, defaultExportPath, renderDoctor, renderPermissions, resolveExtraDir, buildReviewPrompt, formatDuration, trimRestoredMessages, RESTORED_HISTORY_LIMIT, mergeMessages, hasQueuedJob, isSlashCommand, parseQueueCommand, parseLiveToggle, parseGoalCommand, isLiveConfigCommand, withGoal, formatQueueList, ctrlCEscalation, } from './commands.js';
|
|
20
20
|
import { performCompact } from './compact.js';
|
|
21
21
|
import { Scheduler, parseInterval, formatInterval, parseCron, } from './scheduler.js';
|
|
22
22
|
import { renderMarkdown } from './markdown.js';
|
|
@@ -1343,7 +1343,18 @@ async function main() {
|
|
|
1343
1343
|
scheduleTimer = setInterval(() => {
|
|
1344
1344
|
const due = scheduler.due(Date.now());
|
|
1345
1345
|
for (const job of due) {
|
|
1346
|
-
|
|
1346
|
+
// Do not pile MANY copies of the same job while the agent is busy: if
|
|
1347
|
+
// this job already has a pending message in the queue, skip this fire.
|
|
1348
|
+
// Otherwise a 1-minute loop would add a new task every minute while a
|
|
1349
|
+
// long task is in flight, and they would all run back-to-back.
|
|
1350
|
+
if (hasQueuedJob(pendingQueue, job.id)) {
|
|
1351
|
+
transcript.log('scheduled_skip_queued', {
|
|
1352
|
+
id: job.id,
|
|
1353
|
+
task: job.task,
|
|
1354
|
+
});
|
|
1355
|
+
continue;
|
|
1356
|
+
}
|
|
1357
|
+
pendingQueue.push({ text: job.task, jobId: job.id });
|
|
1347
1358
|
transcript.log('scheduled_fire', { id: job.id, task: job.task });
|
|
1348
1359
|
if (editor) {
|
|
1349
1360
|
editor.printAbove(theme.system(t('sched.fired', { id: String(job.id), task: job.task })));
|