specweave 3.0.10 → 3.0.11
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/.claude-plugin/marketplace.json +2 -2
- package/bin/specweave.js +9 -7
- package/dist/src/cli/commands/auto-handoff.d.ts +21 -11
- package/dist/src/cli/commands/auto-handoff.d.ts.map +1 -1
- package/dist/src/cli/commands/auto-handoff.js +59 -30
- package/dist/src/cli/commands/auto-handoff.js.map +1 -1
- package/dist/src/core/session/usage-guard.d.ts +79 -19
- package/dist/src/core/session/usage-guard.d.ts.map +1 -1
- package/dist/src/core/session/usage-guard.js +143 -32
- package/dist/src/core/session/usage-guard.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave/skills/handoff/SKILL.md +13 -9
- package/src/templates/AGENTS.md.template +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.11",
|
|
4
4
|
"description": "Portable intent, specifications, task evidence, and handoffs across AI coding tools.",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "Anton Abyzov",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"description": "SpecWeave unified plugin — increment lifecycle (plan, work the ledger, verify, review, complete), cross-tool handoff, GitHub/Jira/ADO sync",
|
|
13
13
|
"source": "./plugins/specweave",
|
|
14
14
|
"category": "development",
|
|
15
|
-
"version": "3.0.
|
|
15
|
+
"version": "3.0.11",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Anton Abyzov",
|
|
18
18
|
"email": "anton.abyzov@gmail.com"
|
package/bin/specweave.js
CHANGED
|
@@ -249,16 +249,18 @@ program
|
|
|
249
249
|
process.exitCode = await noteCommand(text, { incrementId });
|
|
250
250
|
});
|
|
251
251
|
|
|
252
|
-
// Auto-handoff -
|
|
252
|
+
// Auto-handoff - suggest or make a handoff near the plan's usage limit, with local checkpoints (Claude Code, Codex, Grok Build)
|
|
253
253
|
program
|
|
254
254
|
.command('auto-handoff [action]')
|
|
255
|
-
.description('on | off | status:
|
|
256
|
-
.option('--
|
|
257
|
-
.option('--
|
|
258
|
-
.option('--
|
|
255
|
+
.description('on | off | status: near the usage limit, suggest a handoff (default) or hand off by itself, and save local checkpoints')
|
|
256
|
+
.option('--mode <mode>', 'suggest (default): tell you once at the threshold and keep working; enforce: hand off and stop; checkpoint: only save local checkpoints')
|
|
257
|
+
.option('--at <percent>', 'Threshold in percent of any usage window (default 95)', (v) => Number(v))
|
|
258
|
+
.option('--wait-under <minutes>', 'Do nothing at the threshold when the limit resets sooner than this (default 30; 0 turns it off)', (v) => Number(v))
|
|
259
|
+
.option('--checkpoint-only', 'Same as --mode checkpoint')
|
|
260
|
+
.option('--handoff', 'Same as --mode enforce')
|
|
259
261
|
.action(async (action, options) => {
|
|
260
262
|
const { autoHandoffCommand } = await import('../dist/src/cli/commands/auto-handoff.js');
|
|
261
|
-
process.exitCode = await autoHandoffCommand(action, { at: options.at, checkpointOnly: options.checkpointOnly === true, handoff: options.handoff === true });
|
|
263
|
+
process.exitCode = await autoHandoffCommand(action, { at: options.at, mode: options.mode, waitUnder: options.waitUnder, checkpointOnly: options.checkpointOnly === true, handoff: options.handoff === true });
|
|
262
264
|
});
|
|
263
265
|
|
|
264
266
|
program
|
|
@@ -272,7 +274,7 @@ program
|
|
|
272
274
|
|
|
273
275
|
program
|
|
274
276
|
.command('usage-guard')
|
|
275
|
-
.description('Stop hook: save a local checkpoint; at the auto-handoff threshold,
|
|
277
|
+
.description('Stop hook: save a local checkpoint; at the auto-handoff threshold, suggest or ask for a handoff once')
|
|
276
278
|
.option('--limit-hit', 'StopFailure hook: the turn hit the rate limit, so hand off now (or only save, in checkpoint-only mode)')
|
|
277
279
|
.action(async (options) => {
|
|
278
280
|
const { usageGuardCommand } = await import('../dist/src/cli/commands/auto-handoff.js');
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Commands: auto-handoff, statusline, usage-guard
|
|
3
3
|
*
|
|
4
|
-
* specweave auto-handoff [on|off|status] [--at
|
|
4
|
+
* specweave auto-handoff [on|off|status] [--mode suggest|enforce|checkpoint] [--at 95] [--wait-under 30]
|
|
5
5
|
* specweave statusline [--wrap "<your status line command>"] (Claude Code status line)
|
|
6
6
|
* specweave usage-guard (Stop hook, Claude Code and Codex)
|
|
7
7
|
* specweave usage-guard --limit-hit (StopFailure hook, Claude Code and Grok Build)
|
|
8
8
|
*
|
|
9
9
|
* `auto-handoff on` wires the tools once, in the user's own settings. Every
|
|
10
|
-
* hook saves a local checkpoint.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* the limit
|
|
16
|
-
*
|
|
17
|
-
*
|
|
10
|
+
* hook saves a local checkpoint. When any window reaches the threshold, the
|
|
11
|
+
* Stop hook acts once per usage window: in the default `suggest` mode the
|
|
12
|
+
* session tells the user a handoff is available and keeps working; in
|
|
13
|
+
* `enforce` mode it runs `specweave handoff` and stops. Neither happens when
|
|
14
|
+
* every full window resets within `--wait-under` minutes. A turn that fails on
|
|
15
|
+
* the rate limit hands off from the StopFailure hook itself in both modes.
|
|
16
|
+
* `checkpoint` mode keeps only the checkpoints, for plans where credits or a
|
|
17
|
+
* proxy keep working past the limit. Inside SpecWeave Studio the hooks only
|
|
18
|
+
* save the checkpoint: Studio switches provider between turns. The Stop hook
|
|
19
|
+
* also stays quiet outside a SpecWeave project and for a Codex plan whose
|
|
20
|
+
* credits will last.
|
|
18
21
|
*
|
|
19
22
|
* @module cli/commands/auto-handoff
|
|
20
23
|
*/
|
|
24
|
+
import { type AutoHandoffSettings } from '../../core/session/usage-guard.js';
|
|
21
25
|
/** Claude Code status line: record usage, then print a line (or the wrapped command's). */
|
|
22
26
|
export declare function statuslineCommand(opts?: {
|
|
23
27
|
wrap?: string;
|
|
@@ -57,12 +61,18 @@ type Settings = Record<string, unknown> & {
|
|
|
57
61
|
export declare function grokHook(): Settings;
|
|
58
62
|
export interface AutoHandoffOptions {
|
|
59
63
|
at?: number;
|
|
60
|
-
/**
|
|
64
|
+
/** `suggest`, `enforce` or `checkpoint`. */
|
|
65
|
+
mode?: string;
|
|
66
|
+
/** Minutes; when every full window resets sooner, nothing is suggested or enforced. 0 turns it off. */
|
|
67
|
+
waitUnder?: number;
|
|
68
|
+
/** Same as `--mode checkpoint`. */
|
|
61
69
|
checkpointOnly?: boolean;
|
|
62
|
-
/**
|
|
70
|
+
/** Same as `--mode enforce` (the only mode before 3.0.11). */
|
|
63
71
|
handoff?: boolean;
|
|
64
72
|
home?: string;
|
|
65
73
|
}
|
|
74
|
+
/** What `on` says about the mode it set. */
|
|
75
|
+
export declare function modeSummary(settings: AutoHandoffSettings): string;
|
|
66
76
|
export declare function autoHandoffCommand(action?: string, opts?: AutoHandoffOptions): Promise<number>;
|
|
67
77
|
/**
|
|
68
78
|
* Codex runs a user hook only after the user trusts it, and records that in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-handoff.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auto-handoff.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auto-handoff.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auto-handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,EAE6D,KAAK,mBAAmB,EAC3F,MAAM,mCAAmC,CAAC;AAyB3C,2FAA2F;AAC3F,wBAAsB,iBAAiB,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBpG;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBlJ;AAED,UAAU,SAAS;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AACvG,UAAU,SAAS;IAAG,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;CAAE;AAC7D,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AA0CpI,0EAA0E;AAC1E,wBAAgB,QAAQ,IAAI,QAAQ,CASnC;AAMD,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAMjE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,SAAW,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E1G;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAe,GAAG,OAAO,CAsB7D;AAcD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,SAAe,EAAE,GAAG,SAAa,GAAG,MAAM,EAAE,CAmEjF"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Commands: auto-handoff, statusline, usage-guard
|
|
3
3
|
*
|
|
4
|
-
* specweave auto-handoff [on|off|status] [--at
|
|
4
|
+
* specweave auto-handoff [on|off|status] [--mode suggest|enforce|checkpoint] [--at 95] [--wait-under 30]
|
|
5
5
|
* specweave statusline [--wrap "<your status line command>"] (Claude Code status line)
|
|
6
6
|
* specweave usage-guard (Stop hook, Claude Code and Codex)
|
|
7
7
|
* specweave usage-guard --limit-hit (StopFailure hook, Claude Code and Grok Build)
|
|
8
8
|
*
|
|
9
9
|
* `auto-handoff on` wires the tools once, in the user's own settings. Every
|
|
10
|
-
* hook saves a local checkpoint.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* the limit
|
|
16
|
-
*
|
|
17
|
-
*
|
|
10
|
+
* hook saves a local checkpoint. When any window reaches the threshold, the
|
|
11
|
+
* Stop hook acts once per usage window: in the default `suggest` mode the
|
|
12
|
+
* session tells the user a handoff is available and keeps working; in
|
|
13
|
+
* `enforce` mode it runs `specweave handoff` and stops. Neither happens when
|
|
14
|
+
* every full window resets within `--wait-under` minutes. A turn that fails on
|
|
15
|
+
* the rate limit hands off from the StopFailure hook itself in both modes.
|
|
16
|
+
* `checkpoint` mode keeps only the checkpoints, for plans where credits or a
|
|
17
|
+
* proxy keep working past the limit. Inside SpecWeave Studio the hooks only
|
|
18
|
+
* save the checkpoint: Studio switches provider between turns. The Stop hook
|
|
19
|
+
* also stays quiet outside a SpecWeave project and for a Codex plan whose
|
|
20
|
+
* credits will last.
|
|
18
21
|
*
|
|
19
22
|
* @module cli/commands/auto-handoff
|
|
20
23
|
*/
|
|
@@ -22,7 +25,7 @@ import * as fs from 'fs';
|
|
|
22
25
|
import * as os from 'os';
|
|
23
26
|
import * as path from 'path';
|
|
24
27
|
import { spawnSync } from 'child_process';
|
|
25
|
-
import { DEFAULT_THRESHOLD, readSettings, writeSettings, recordClaudeUsage, usageGuard, usageSummary, fullest, limitHitTarget, handsOff, studioThreadId, codexCreditsLast, CREDIT_MINUTES_LOW, CREDIT_BURN_WINDOW_MS, latestClaudeReading, latestCodexReading, claudeCachedReading, desktopUsageReading, } from '../../core/session/usage-guard.js';
|
|
28
|
+
import { DEFAULT_THRESHOLD, DEFAULT_WAIT_UNDER_MINUTES, AUTO_HANDOFF_MODES, readSettings, writeSettings, recordClaudeUsage, usageGuard, usageSummary, fullest, limitHitTarget, handsOff, enforces, usageDecision, minutesPhrase, studioThreadId, codexCreditsLast, CREDIT_MINUTES_LOW, CREDIT_BURN_WINDOW_MS, latestClaudeReading, latestCodexReading, claudeCachedReading, desktopUsageReading, } from '../../core/session/usage-guard.js';
|
|
26
29
|
import { queueSessionCheckpoint } from '../../core/session/session-checkpoint.js';
|
|
27
30
|
import { detectTool } from '../../core/tasks/ledger.js';
|
|
28
31
|
import { findProjectRoot } from '../../utils/find-project-root.js';
|
|
@@ -58,11 +61,12 @@ export async function statuslineCommand(opts = {}) {
|
|
|
58
61
|
}
|
|
59
62
|
const cwd = input.workspace?.current_dir ?? input.cwd ?? process.cwd();
|
|
60
63
|
const model = input.model?.display_name;
|
|
61
|
-
const settings = readSettings(opts.home);
|
|
62
|
-
const top = fullest(windows);
|
|
63
64
|
// Same rule as the Stop hook: outside a project nothing is handed off, so nothing is announced.
|
|
64
|
-
const
|
|
65
|
-
|
|
65
|
+
const decision = findProjectRoot(cwd) ? usageDecision(readSettings(opts.home), windows) : { kind: 'none' };
|
|
66
|
+
const note = decision.kind === 'enforce' ? 'hand off'
|
|
67
|
+
: decision.kind === 'suggest' ? 'handoff available'
|
|
68
|
+
: decision.kind === 'wait' && decision.resetMinutes !== undefined ? `resets in ${minutesPhrase(decision.resetMinutes)}` : '';
|
|
69
|
+
process.stdout.write([path.basename(cwd), model, windows.length ? usageSummary(windows) : '', note]
|
|
66
70
|
.filter(Boolean).join(' · ') + '\n');
|
|
67
71
|
return 0;
|
|
68
72
|
}
|
|
@@ -151,6 +155,16 @@ export function grokHook() {
|
|
|
151
155
|
function shellQuote(s) {
|
|
152
156
|
return `'${s.replace(/'/g, `'\\''`)}'`;
|
|
153
157
|
}
|
|
158
|
+
/** What `on` says about the mode it set. */
|
|
159
|
+
export function modeSummary(settings) {
|
|
160
|
+
const wait = settings.waitUnder ?? DEFAULT_WAIT_UNDER_MINUTES;
|
|
161
|
+
const waitRule = wait > 0 ? ` Nothing is said when every full window resets within ${wait} min: waiting is cheaper than moving the work.` : '';
|
|
162
|
+
if (settings.mode === 'checkpoint')
|
|
163
|
+
return 'Auto-handoff is on in checkpoint-only mode: local checkpoints refresh after turns, at most once every five minutes, and usage never stops work. Run `specweave auto-handoff on --mode suggest` (or `enforce`) to act at the threshold again.';
|
|
164
|
+
if (enforces(settings))
|
|
165
|
+
return `Auto-handoff is on at ${settings.at}% in enforce mode: the first time a session reaches ${settings.at}% of any usage window, it runs \`specweave handoff\` and stops, and tells you to say "pick up" in another tool or account.${waitRule} Local checkpoints are saved after turns in between.`;
|
|
166
|
+
return `Auto-handoff is on at ${settings.at}% in suggest mode: the first time a session reaches ${settings.at}% of any usage window, it tells you once that you can say "hand off", and keeps working. A turn that hits the limit still hands off by itself.${waitRule} Run \`specweave auto-handoff on --mode enforce\` to stop at the threshold instead.`;
|
|
167
|
+
}
|
|
154
168
|
export async function autoHandoffCommand(action = 'status', opts = {}) {
|
|
155
169
|
const home = opts.home ?? os.homedir();
|
|
156
170
|
const claudeFile = path.join(home, '.claude', 'settings.json');
|
|
@@ -158,17 +172,27 @@ export async function autoHandoffCommand(action = 'status', opts = {}) {
|
|
|
158
172
|
const grokFile = path.join(home, '.grok', 'hooks', GROK_HOOK_FILE);
|
|
159
173
|
const say = (line) => process.stdout.write(line + '\n');
|
|
160
174
|
if (action === 'on') {
|
|
161
|
-
const
|
|
175
|
+
const previous = readSettings(home);
|
|
176
|
+
const at = opts.at ?? previous?.at ?? DEFAULT_THRESHOLD;
|
|
162
177
|
if (!(at > 0 && at <= 100)) {
|
|
163
178
|
process.stderr.write('--at takes a percentage from 1 to 100\n');
|
|
164
179
|
return 2;
|
|
165
180
|
}
|
|
166
|
-
|
|
167
|
-
|
|
181
|
+
const waitUnder = opts.waitUnder ?? previous?.waitUnder ?? DEFAULT_WAIT_UNDER_MINUTES;
|
|
182
|
+
if (!(Number.isFinite(waitUnder) && waitUnder >= 0)) {
|
|
183
|
+
process.stderr.write('--wait-under takes minutes, 0 or more\n');
|
|
168
184
|
return 2;
|
|
169
185
|
}
|
|
170
|
-
|
|
171
|
-
|
|
186
|
+
if (opts.mode !== undefined && !AUTO_HANDOFF_MODES.includes(opts.mode)) {
|
|
187
|
+
process.stderr.write(`--mode takes one of ${AUTO_HANDOFF_MODES.join(', ')}\n`);
|
|
188
|
+
return 2;
|
|
189
|
+
}
|
|
190
|
+
const asked = new Set([opts.mode, opts.checkpointOnly ? 'checkpoint' : undefined, opts.handoff ? 'enforce' : undefined].filter(Boolean));
|
|
191
|
+
if (asked.size > 1) {
|
|
192
|
+
process.stderr.write('Choose one mode: --mode, --checkpoint-only or --handoff\n');
|
|
193
|
+
return 2;
|
|
194
|
+
}
|
|
195
|
+
const mode = [...asked][0] ?? previous?.mode ?? 'suggest';
|
|
172
196
|
const claude = readJson(claudeFile);
|
|
173
197
|
let previousStatusLine = previous?.previousStatusLine;
|
|
174
198
|
if (!claude) {
|
|
@@ -197,12 +221,11 @@ export async function autoHandoffCommand(action = 'status', opts = {}) {
|
|
|
197
221
|
}
|
|
198
222
|
if (fs.existsSync(path.join(home, '.grok'))) {
|
|
199
223
|
writeJson(grokFile, grokHook());
|
|
200
|
-
say(`Grok Build: StopFailure hook added in ${grokFile}; ${mode
|
|
224
|
+
say(`Grok Build: StopFailure hook added in ${grokFile}; ${mode !== 'checkpoint' ? 'it hands off right after a turn hits the rate limit, since Grok shows no usage percentage' : 'it saves a local checkpoint after a rate-limit failure'}`);
|
|
201
225
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
: 'Auto-handoff is on in checkpoint-only mode: local checkpoints refresh after turns, at most once every five minutes, and usage never stops work. Run `specweave auto-handoff on --handoff` to hand off at the threshold again.');
|
|
226
|
+
const settings = { at, mode, waitUnder, since: new Date().toISOString(), ...(previousStatusLine ? { previousStatusLine } : {}) };
|
|
227
|
+
writeSettings(settings, home);
|
|
228
|
+
say(modeSummary(settings));
|
|
206
229
|
return 0;
|
|
207
230
|
}
|
|
208
231
|
if (action === 'off') {
|
|
@@ -289,9 +312,14 @@ export function autoHandoffStatus(home = os.homedir(), now = Date.now()) {
|
|
|
289
312
|
const settings = readSettings(home);
|
|
290
313
|
if (!settings)
|
|
291
314
|
return ['Auto-handoff is off. Turn it on with `specweave auto-handoff on`.'];
|
|
292
|
-
const
|
|
293
|
-
|
|
294
|
-
|
|
315
|
+
const wait = settings.waitUnder ?? DEFAULT_WAIT_UNDER_MINUTES;
|
|
316
|
+
const waitRule = wait > 0 ? `; nothing when every full window resets within ${wait} min` : '';
|
|
317
|
+
const since = `since ${settings.since ?? 'unknown'}`;
|
|
318
|
+
const lines = [settings.mode === 'checkpoint'
|
|
319
|
+
? `Auto-handoff is on in checkpoint-only mode (${since}): local background checkpoints every five minutes after turns; usage never stops work.`
|
|
320
|
+
: enforces(settings)
|
|
321
|
+
? `Auto-handoff is on at ${settings.at}% in enforce mode (${since}): a session hands off and stops once per usage window at the threshold${waitRule}, and saves local checkpoints in between.`
|
|
322
|
+
: `Auto-handoff is on at ${settings.at}% in suggest mode (${since}): a session tells you once per usage window at the threshold that you can say "hand off", and keeps working${waitRule}. A turn that hits the limit hands off by itself.`];
|
|
295
323
|
let broken = false;
|
|
296
324
|
const claude = readJson(path.join(home, '.claude', 'settings.json'));
|
|
297
325
|
if (claude) {
|
|
@@ -328,9 +356,10 @@ export function autoHandoffStatus(home = os.homedir(), now = Date.now()) {
|
|
|
328
356
|
const top = fullest(codexReading.windows, now);
|
|
329
357
|
// Same two conditions as the Stop hook: a window at the threshold, and credits about to run out.
|
|
330
358
|
const due = !!top && top.percent >= settings.at && !codexCreditsLast({ windows: codexReading.windows, credits: true, creditMinutesLeft: left });
|
|
359
|
+
const asked = enforces(settings) ? 'asked to hand off' : 'told a handoff is available';
|
|
331
360
|
lines.push(due
|
|
332
|
-
? ` This Codex plan's credits are running out: about ${Math.max(1, Math.round(left ?? 0))} min left at the current rate, so a session in a project is asked
|
|
333
|
-
: ` This Codex plan has credits, which keep it working past the limit. A session in a project at ${settings.at}% or more is asked
|
|
361
|
+
? ` This Codex plan's credits are running out: about ${Math.max(1, Math.round(left ?? 0))} min left at the current rate, so a session in a project is ${asked} at its next stop.`
|
|
362
|
+
: ` This Codex plan has credits, which keep it working past the limit. A session in a project at ${settings.at}% or more is ${asked} only when its log shows under ${CREDIT_MINUTES_LOW} minutes of credits left at the rate they are being spent${left !== undefined ? ` (about ${span(Math.round(left))} now)` : ''}; checkpoints are saved either way.`);
|
|
334
363
|
}
|
|
335
364
|
if (ok && !trusted)
|
|
336
365
|
lines.push(' Codex skips a hook until you trust it: open `codex` in a terminal and approve the hook when it asks. It asks again whenever the hook changes, for example after `auto-handoff on` with a new SpecWeave version.');
|
|
@@ -342,7 +371,7 @@ export function autoHandoffStatus(home = os.homedir(), now = Date.now()) {
|
|
|
342
371
|
}
|
|
343
372
|
lines.push(`Local checkpoints: ${path.join(home, '.specweave', 'checkpoints')} (per worktree and session; current.json points to the latest complete save).`);
|
|
344
373
|
lines.push(handsOff(settings)
|
|
345
|
-
? 'Checkpoints never push or release claims;
|
|
374
|
+
? 'Checkpoints never push or release claims; a handoff does, so the next tool can `specweave pickup`.'
|
|
346
375
|
: 'To transfer work to another tool or machine, run `specweave handoff` explicitly. Automatic checkpoints never push or release claims.');
|
|
347
376
|
if (studioThreadId())
|
|
348
377
|
lines.push('Running inside SpecWeave Studio: hooks only save checkpoints here, and Studio switches provider between turns.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-handoff.js","sourceRoot":"","sources":["../../../../src/cli/commands/auto-handoff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auto-handoff.js","sourceRoot":"","sources":["../../../../src/cli/commands/auto-handoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,13 @@
|
|
|
12
12
|
* `rate_limits.primary` / `secondary` `.used_percent` to the
|
|
13
13
|
* rollout file the hook's `transcript_path` points at.
|
|
14
14
|
*
|
|
15
|
-
* The Stop hook (`specweave usage-guard`)
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* The Stop hook (`specweave usage-guard`) acts once per session and usage
|
|
16
|
+
* window when any window is at or past the threshold (95% by default). In the
|
|
17
|
+
* default `suggest` mode it only tells the user, and the work goes on; in
|
|
18
|
+
* `enforce` mode it stops the session and the agent runs `specweave handoff`.
|
|
19
|
+
* When every full window resets within `waitUnder` minutes (30 by default) it
|
|
20
|
+
* does neither: waiting for the reset costs less than moving the work. Under
|
|
21
|
+
* the threshold it prints `{}`: no tokens, no files.
|
|
19
22
|
*
|
|
20
23
|
* It only asks inside a SpecWeave project (the hook's `cwd` is in one), since
|
|
21
24
|
* `specweave handoff` has nothing to hand off anywhere else. A Codex plan with
|
|
@@ -29,7 +32,11 @@
|
|
|
29
32
|
*
|
|
30
33
|
* @module core/session/usage-guard
|
|
31
34
|
*/
|
|
32
|
-
export declare const DEFAULT_THRESHOLD =
|
|
35
|
+
export declare const DEFAULT_THRESHOLD = 95;
|
|
36
|
+
/** When every full window resets sooner than this many minutes, waiting beats a handoff. */
|
|
37
|
+
export declare const DEFAULT_WAIT_UNDER_MINUTES = 30;
|
|
38
|
+
/** Settings files without this version were written before 3.0.11, when the only mode stopped the session. */
|
|
39
|
+
export declare const SETTINGS_VERSION = 2;
|
|
33
40
|
/** The shortest usage window; a session that hit the limit may hit it again after this. */
|
|
34
41
|
export declare const LIMIT_HIT_REARM_MS: number;
|
|
35
42
|
export interface UsageWindow {
|
|
@@ -40,20 +47,35 @@ export interface UsageWindow {
|
|
|
40
47
|
/** Unix seconds, when known. */
|
|
41
48
|
resetsAt?: number;
|
|
42
49
|
}
|
|
43
|
-
/**
|
|
44
|
-
|
|
50
|
+
/**
|
|
51
|
+
* `suggest`: at the threshold, tell the user once that a handoff is available and keep working.
|
|
52
|
+
* `enforce`: at the threshold, stop once and hand off.
|
|
53
|
+
* `checkpoint`: only save local checkpoints; usage never steers the model.
|
|
54
|
+
*/
|
|
55
|
+
export type AutoHandoffMode = 'suggest' | 'enforce' | 'checkpoint';
|
|
56
|
+
export declare const AUTO_HANDOFF_MODES: readonly AutoHandoffMode[];
|
|
45
57
|
export interface AutoHandoffSettings {
|
|
46
58
|
at: number;
|
|
47
|
-
/** Missing means `
|
|
59
|
+
/** Missing means `suggest`. Files written before 3.0.11 read as `suggest` unless they say `checkpoint`. */
|
|
48
60
|
mode?: AutoHandoffMode;
|
|
61
|
+
/** Minutes. When every window at the threshold resets sooner, nothing is suggested or enforced; 0 turns the rule off. */
|
|
62
|
+
waitUnder?: number;
|
|
63
|
+
version?: number;
|
|
49
64
|
since?: string;
|
|
50
65
|
/** Status line command that was there before `auto-handoff on`, restored by `off`. */
|
|
51
66
|
previousStatusLine?: unknown;
|
|
52
67
|
}
|
|
53
68
|
export declare function specweaveHome(home?: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* The stored settings, with defaults filled in. A file written before 3.0.11
|
|
71
|
+
* (no `version`) had one mode that stopped the session at 90%; it now reads as
|
|
72
|
+
* `suggest` at 95%, keeping `checkpoint` and any threshold the user chose.
|
|
73
|
+
*/
|
|
54
74
|
export declare function readSettings(home?: string): AutoHandoffSettings | undefined;
|
|
55
|
-
/** Whether these settings
|
|
75
|
+
/** Whether these settings let usage steer the model at all (suggest or enforce), not only save checkpoints. */
|
|
56
76
|
export declare function handsOff(settings: AutoHandoffSettings | undefined): boolean;
|
|
77
|
+
/** Whether these settings stop the session and hand off at the threshold. */
|
|
78
|
+
export declare function enforces(settings: AutoHandoffSettings | undefined): boolean;
|
|
57
79
|
/**
|
|
58
80
|
* The Studio thread this hook runs in, when SpecWeave Studio started the provider session.
|
|
59
81
|
* Any non-empty value counts: delegated worker ids carry `%` and `:` and must still
|
|
@@ -98,7 +120,11 @@ export declare function desktopUsageReading(opts?: {
|
|
|
98
120
|
now?: number;
|
|
99
121
|
platform?: NodeJS.Platform;
|
|
100
122
|
}): UsageReading | undefined;
|
|
101
|
-
/**
|
|
123
|
+
/**
|
|
124
|
+
* The freshest reading for a Claude Code session that runs no status line.
|
|
125
|
+
* Desktop samples carry no reset times; a window's reset does not move until
|
|
126
|
+
* it passes, so one still ahead in the usage cache is borrowed for it.
|
|
127
|
+
*/
|
|
102
128
|
export declare function claudeFallbackReading(opts?: {
|
|
103
129
|
env?: NodeJS.ProcessEnv;
|
|
104
130
|
home?: string;
|
|
@@ -152,8 +178,30 @@ export declare function latestClaudeReading(home?: string): UsageReading | undef
|
|
|
152
178
|
export declare function latestCodexReading(home?: string): UsageReading | undefined;
|
|
153
179
|
/** The fullest window that has not reset yet. */
|
|
154
180
|
export declare function fullest(windows: UsageWindow[], now?: number): UsageWindow | undefined;
|
|
181
|
+
/** "25 min", "2 h 10 min", "4 days". */
|
|
182
|
+
export declare function minutesPhrase(minutes: number): string;
|
|
183
|
+
/**
|
|
184
|
+
* What the guard does about the usage it read:
|
|
185
|
+
* `none` under the threshold, or usage never steers the model (checkpoint mode);
|
|
186
|
+
* `wait` at the threshold, but every full window resets within `waitUnder` minutes;
|
|
187
|
+
* `suggest` tell the user once that a handoff is available, keep working;
|
|
188
|
+
* `enforce` stop once and hand off.
|
|
189
|
+
* `resetMinutes` is when the last of the full windows resets, when every one of them says.
|
|
190
|
+
*/
|
|
191
|
+
export type UsageDecision = {
|
|
192
|
+
kind: 'none';
|
|
193
|
+
} | {
|
|
194
|
+
kind: 'wait' | 'suggest' | 'enforce';
|
|
195
|
+
window: UsageWindow;
|
|
196
|
+
resetMinutes?: number;
|
|
197
|
+
};
|
|
198
|
+
/** Minutes until every given window has reset, or undefined when one of them has no reset time. */
|
|
199
|
+
export declare function minutesUntilReset(windows: UsageWindow[], now?: number): number | undefined;
|
|
200
|
+
export declare function usageDecision(settings: AutoHandoffSettings | undefined, windows: UsageWindow[], now?: number): UsageDecision;
|
|
155
201
|
/** `creditMinutes`: a Codex plan that got this far on credits, with about that many minutes of them left. */
|
|
156
|
-
export declare function handoffInstruction(w: UsageWindow, creditMinutes?: number): string;
|
|
202
|
+
export declare function handoffInstruction(w: UsageWindow, creditMinutes?: number, resetMinutes?: number): string;
|
|
203
|
+
/** The `suggest` mode note: the model tells the user once and does not stop on its own account. */
|
|
204
|
+
export declare function suggestionInstruction(w: UsageWindow, creditMinutes?: number, resetMinutes?: number): string;
|
|
157
205
|
export interface GuardInput {
|
|
158
206
|
session_id?: string;
|
|
159
207
|
/** Where the session runs; both tools send it. */
|
|
@@ -178,10 +226,12 @@ export interface GuardOutput {
|
|
|
178
226
|
}
|
|
179
227
|
/**
|
|
180
228
|
* Stop-hook output. The first time a session is at or past the threshold in a
|
|
181
|
-
* usage window, it keeps the agent going
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
229
|
+
* usage window, it keeps the agent going for one more reply: to tell the user
|
|
230
|
+
* a handoff is available (`suggest`) or to hand off (`enforce`); otherwise `{}`.
|
|
231
|
+
* Also `{}` when every full window resets within `waitUnder` minutes, outside
|
|
232
|
+
* a SpecWeave project (a plain chat has nothing to hand off) and for a Codex
|
|
233
|
+
* plan whose credits keep it working past the limit, until they are about to
|
|
234
|
+
* run out.
|
|
185
235
|
*/
|
|
186
236
|
export declare function usageGuard(input: GuardInput, opts?: {
|
|
187
237
|
home?: string;
|
|
@@ -205,17 +255,27 @@ export interface LimitHitInput {
|
|
|
205
255
|
workspaceRoot?: string;
|
|
206
256
|
error?: string;
|
|
207
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* Minutes until a session that just hit the limit can go on: when the last
|
|
260
|
+
* full window resets. The reading may predate the jump to 100%, so with no
|
|
261
|
+
* window at the threshold the fullest one counts. Undefined when unknown.
|
|
262
|
+
*/
|
|
263
|
+
export declare function limitResetMinutes(windows: UsageWindow[], at: number, now?: number): number | undefined;
|
|
208
264
|
/**
|
|
209
265
|
* Where a rate-limited turn should hand off, or undefined when it should not:
|
|
210
266
|
* auto-handoff is off or checkpoint-only, the session runs inside Studio, the
|
|
211
|
-
* failure is not a rate limit, the
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
267
|
+
* failure is not a rate limit, the limit resets within `waitUnder` minutes
|
|
268
|
+
* (the session can wait it out), the session already wrote one in the last
|
|
269
|
+
* five hours, or the directory is not a SpecWeave project. Both `suggest` and
|
|
270
|
+
* `enforce` hand off here: the session cannot go on, so this is the last
|
|
271
|
+
* moment to write the handoff. Writes its marker before returning, so a retry
|
|
272
|
+
* storm hands off once. The marker is separate from the Stop hook's: a session
|
|
273
|
+
* that was asked at the threshold and still ran out writes a fresh handoff.
|
|
215
274
|
*/
|
|
216
275
|
export declare function limitHitTarget(input: LimitHitInput, opts?: {
|
|
217
276
|
home?: string;
|
|
218
277
|
now?: number;
|
|
219
278
|
env?: NodeJS.ProcessEnv;
|
|
279
|
+
platform?: NodeJS.Platform;
|
|
220
280
|
}): string | undefined;
|
|
221
281
|
//# sourceMappingURL=usage-guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-guard.d.ts","sourceRoot":"","sources":["../../../../src/core/session/usage-guard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"usage-guard.d.ts","sourceRoot":"","sources":["../../../../src/core/session/usage-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,13 @@
|
|
|
12
12
|
* `rate_limits.primary` / `secondary` `.used_percent` to the
|
|
13
13
|
* rollout file the hook's `transcript_path` points at.
|
|
14
14
|
*
|
|
15
|
-
* The Stop hook (`specweave usage-guard`)
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* The Stop hook (`specweave usage-guard`) acts once per session and usage
|
|
16
|
+
* window when any window is at or past the threshold (95% by default). In the
|
|
17
|
+
* default `suggest` mode it only tells the user, and the work goes on; in
|
|
18
|
+
* `enforce` mode it stops the session and the agent runs `specweave handoff`.
|
|
19
|
+
* When every full window resets within `waitUnder` minutes (30 by default) it
|
|
20
|
+
* does neither: waiting for the reset costs less than moving the work. Under
|
|
21
|
+
* the threshold it prints `{}`: no tokens, no files.
|
|
19
22
|
*
|
|
20
23
|
* It only asks inside a SpecWeave project (the hook's `cwd` is in one), since
|
|
21
24
|
* `specweave handoff` has nothing to hand off anywhere else. A Codex plan with
|
|
@@ -33,9 +36,16 @@ import * as fs from 'fs';
|
|
|
33
36
|
import * as os from 'os';
|
|
34
37
|
import * as path from 'path';
|
|
35
38
|
import { findProjectRoot } from '../../utils/find-project-root.js';
|
|
36
|
-
export const DEFAULT_THRESHOLD =
|
|
39
|
+
export const DEFAULT_THRESHOLD = 95;
|
|
40
|
+
/** The default before 3.0.11; a settings file from then that still holds it moves to the new one. */
|
|
41
|
+
const LEGACY_THRESHOLD = 90;
|
|
42
|
+
/** When every full window resets sooner than this many minutes, waiting beats a handoff. */
|
|
43
|
+
export const DEFAULT_WAIT_UNDER_MINUTES = 30;
|
|
44
|
+
/** Settings files without this version were written before 3.0.11, when the only mode stopped the session. */
|
|
45
|
+
export const SETTINGS_VERSION = 2;
|
|
37
46
|
/** The shortest usage window; a session that hit the limit may hit it again after this. */
|
|
38
47
|
export const LIMIT_HIT_REARM_MS = 5 * 60 * 60 * 1000;
|
|
48
|
+
export const AUTO_HANDOFF_MODES = ['suggest', 'enforce', 'checkpoint'];
|
|
39
49
|
export function specweaveHome(home = os.homedir()) {
|
|
40
50
|
return path.join(home, '.specweave');
|
|
41
51
|
}
|
|
@@ -45,20 +55,39 @@ function usageDir(home) {
|
|
|
45
55
|
function safeId(sessionId) {
|
|
46
56
|
return /^[\w.-]{1,128}$/.test(sessionId) && !sessionId.includes('..') ? sessionId : undefined;
|
|
47
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* The stored settings, with defaults filled in. A file written before 3.0.11
|
|
60
|
+
* (no `version`) had one mode that stopped the session at 90%; it now reads as
|
|
61
|
+
* `suggest` at 95%, keeping `checkpoint` and any threshold the user chose.
|
|
62
|
+
*/
|
|
48
63
|
export function readSettings(home) {
|
|
64
|
+
let raw;
|
|
49
65
|
try {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
66
|
+
raw = JSON.parse(fs.readFileSync(path.join(specweaveHome(home), 'auto-handoff.json'), 'utf8'));
|
|
67
|
+
if (!raw || typeof raw !== 'object')
|
|
68
|
+
return undefined;
|
|
53
69
|
}
|
|
54
70
|
catch {
|
|
55
71
|
return undefined;
|
|
56
72
|
}
|
|
73
|
+
const legacy = raw.version !== SETTINGS_VERSION;
|
|
74
|
+
let at = Number(raw.at);
|
|
75
|
+
if (!(at > 0 && at <= 100) || (legacy && at === LEGACY_THRESHOLD))
|
|
76
|
+
at = DEFAULT_THRESHOLD;
|
|
77
|
+
const mode = raw.mode === 'checkpoint' ? 'checkpoint'
|
|
78
|
+
: !legacy && (raw.mode === 'enforce' || raw.mode === 'handoff') ? 'enforce' : 'suggest';
|
|
79
|
+
const wait = Number(raw.waitUnder);
|
|
80
|
+
const waitUnder = raw.waitUnder !== undefined && raw.waitUnder !== null && Number.isFinite(wait) && wait >= 0 ? wait : DEFAULT_WAIT_UNDER_MINUTES;
|
|
81
|
+
return { ...raw, at, mode, waitUnder, version: SETTINGS_VERSION };
|
|
57
82
|
}
|
|
58
|
-
/** Whether these settings
|
|
83
|
+
/** Whether these settings let usage steer the model at all (suggest or enforce), not only save checkpoints. */
|
|
59
84
|
export function handsOff(settings) {
|
|
60
85
|
return !!settings && settings.mode !== 'checkpoint';
|
|
61
86
|
}
|
|
87
|
+
/** Whether these settings stop the session and hand off at the threshold. */
|
|
88
|
+
export function enforces(settings) {
|
|
89
|
+
return !!settings && settings.mode === 'enforce';
|
|
90
|
+
}
|
|
62
91
|
/**
|
|
63
92
|
* The Studio thread this hook runs in, when SpecWeave Studio started the provider session.
|
|
64
93
|
* Any non-empty value counts: delegated worker ids carry `%` and `:` and must still
|
|
@@ -74,7 +103,7 @@ export function writeSettings(settings, home) {
|
|
|
74
103
|
return;
|
|
75
104
|
}
|
|
76
105
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
77
|
-
fs.writeFileSync(file, JSON.stringify(settings, null, 2) + '\n');
|
|
106
|
+
fs.writeFileSync(file, JSON.stringify({ ...settings, version: SETTINGS_VERSION }, null, 2) + '\n');
|
|
78
107
|
}
|
|
79
108
|
/** Windows from Claude Code's status line input (`rate_limits`). */
|
|
80
109
|
export function claudeWindows(input) {
|
|
@@ -207,10 +236,24 @@ export function desktopUsageReading(opts = {}) {
|
|
|
207
236
|
windows.push({ name: 'weekly', percent: newest.u.sd });
|
|
208
237
|
return windows.length ? { tool: 'Claude Code', at, windows } : undefined;
|
|
209
238
|
}
|
|
210
|
-
/**
|
|
239
|
+
/**
|
|
240
|
+
* The freshest reading for a Claude Code session that runs no status line.
|
|
241
|
+
* Desktop samples carry no reset times; a window's reset does not move until
|
|
242
|
+
* it passes, so one still ahead in the usage cache is borrowed for it.
|
|
243
|
+
*/
|
|
211
244
|
export function claudeFallbackReading(opts = {}) {
|
|
212
245
|
const readings = [desktopUsageReading(opts), claudeCachedReading(opts)].filter((r) => !!r);
|
|
213
|
-
|
|
246
|
+
const [best, other] = readings.sort((a, b) => b.at - a.at);
|
|
247
|
+
if (!best || !other)
|
|
248
|
+
return best;
|
|
249
|
+
const now = opts.now ?? Date.now();
|
|
250
|
+
const windows = best.windows.map((w) => {
|
|
251
|
+
if (w.resetsAt)
|
|
252
|
+
return w;
|
|
253
|
+
const resetsAt = other.windows.find((o) => o.name === w.name)?.resetsAt;
|
|
254
|
+
return resetsAt && resetsAt * 1000 > now ? { ...w, resetsAt } : w;
|
|
255
|
+
});
|
|
256
|
+
return { ...best, windows };
|
|
214
257
|
}
|
|
215
258
|
/** A rollout is read from its end in chunks of this size. */
|
|
216
259
|
const CODEX_CHUNK_BYTES = 1024 * 1024;
|
|
@@ -440,21 +483,60 @@ function rearmed(marker, now) {
|
|
|
440
483
|
return false;
|
|
441
484
|
}
|
|
442
485
|
}
|
|
443
|
-
/**
|
|
444
|
-
export function
|
|
486
|
+
/** "25 min", "2 h 10 min", "4 days". */
|
|
487
|
+
export function minutesPhrase(minutes) {
|
|
488
|
+
const m = Math.max(1, Math.round(minutes));
|
|
489
|
+
if (m < 60)
|
|
490
|
+
return `${m} min`;
|
|
491
|
+
if (m < 48 * 60)
|
|
492
|
+
return `${Math.floor(m / 60)} h${m % 60 ? ` ${m % 60} min` : ''}`;
|
|
493
|
+
return `${Math.round(m / 1440)} days`;
|
|
494
|
+
}
|
|
495
|
+
/** Minutes until every given window has reset, or undefined when one of them has no reset time. */
|
|
496
|
+
export function minutesUntilReset(windows, now = Date.now()) {
|
|
497
|
+
if (!windows.length || windows.some((w) => !w.resetsAt))
|
|
498
|
+
return undefined;
|
|
499
|
+
return Math.max(0, (Math.max(...windows.map((w) => w.resetsAt)) * 1000 - now) / 60000);
|
|
500
|
+
}
|
|
501
|
+
export function usageDecision(settings, windows, now = Date.now()) {
|
|
502
|
+
if (!settings || !handsOff(settings))
|
|
503
|
+
return { kind: 'none' };
|
|
504
|
+
const top = fullest(windows, now);
|
|
505
|
+
if (!top || top.percent < settings.at)
|
|
506
|
+
return { kind: 'none' };
|
|
507
|
+
const full = windows.filter((w) => w.percent >= settings.at && (!w.resetsAt || w.resetsAt * 1000 > now));
|
|
508
|
+
const resetMinutes = minutesUntilReset(full, now);
|
|
509
|
+
const known = resetMinutes !== undefined ? { resetMinutes } : {};
|
|
510
|
+
if (resetMinutes !== undefined && resetMinutes < (settings.waitUnder ?? DEFAULT_WAIT_UNDER_MINUTES))
|
|
511
|
+
return { kind: 'wait', window: top, ...known };
|
|
512
|
+
return { kind: enforces(settings) ? 'enforce' : 'suggest', window: top, ...known };
|
|
513
|
+
}
|
|
514
|
+
function usageState(w, resetMinutes, creditMinutes) {
|
|
445
515
|
const pct = Math.round(w.percent);
|
|
446
516
|
const low = creditMinutes !== undefined;
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
517
|
+
return `Usage is at ${pct}% of the ${w.name} limit${low ? ` and credits are running out (about ${Math.max(1, Math.round(creditMinutes))} min left at the current rate)` : ''}.` +
|
|
518
|
+
(resetMinutes !== undefined ? ` It resets in ${minutesPhrase(resetMinutes)}.` : '');
|
|
519
|
+
}
|
|
520
|
+
/** `creditMinutes`: a Codex plan that got this far on credits, with about that many minutes of them left. */
|
|
521
|
+
export function handoffInstruction(w, creditMinutes, resetMinutes) {
|
|
522
|
+
const pct = Math.round(w.percent);
|
|
523
|
+
const reason = `usage at ${pct}% of the ${w.name} limit${creditMinutes !== undefined ? ', credits running out' : ''}`;
|
|
524
|
+
return `${usageState(w, resetMinutes, creditMinutes)} Hand off now so no work is lost: run \`specweave handoff --reason "${reason}"\`, ` +
|
|
450
525
|
`then tell the user in one line that they can say "pick up" in another tool or account to continue, and stop.`;
|
|
451
526
|
}
|
|
527
|
+
/** The `suggest` mode note: the model tells the user once and does not stop on its own account. */
|
|
528
|
+
export function suggestionInstruction(w, creditMinutes, resetMinutes) {
|
|
529
|
+
return `${usageState(w, resetMinutes, creditMinutes)} This is a heads-up, not a stop: do not hand off or stop because of it. ` +
|
|
530
|
+
`Add one line to your reply telling the user, and that they can say "hand off" to continue in another tool or account; then finish as you were about to.`;
|
|
531
|
+
}
|
|
452
532
|
/**
|
|
453
533
|
* Stop-hook output. The first time a session is at or past the threshold in a
|
|
454
|
-
* usage window, it keeps the agent going
|
|
455
|
-
*
|
|
456
|
-
*
|
|
457
|
-
*
|
|
534
|
+
* usage window, it keeps the agent going for one more reply: to tell the user
|
|
535
|
+
* a handoff is available (`suggest`) or to hand off (`enforce`); otherwise `{}`.
|
|
536
|
+
* Also `{}` when every full window resets within `waitUnder` minutes, outside
|
|
537
|
+
* a SpecWeave project (a plain chat has nothing to hand off) and for a Codex
|
|
538
|
+
* plan whose credits keep it working past the limit, until they are about to
|
|
539
|
+
* run out.
|
|
458
540
|
*/
|
|
459
541
|
export function usageGuard(input, opts = {}) {
|
|
460
542
|
const settings = readSettings(opts.home);
|
|
@@ -479,37 +561,60 @@ export function usageGuard(input, opts = {}) {
|
|
|
479
561
|
let windows = codex ? codex.windows : readClaudeUsage(id, opts.home);
|
|
480
562
|
if (!rollout && !windows.length)
|
|
481
563
|
windows = claudeFallbackReading({ env: opts.env, home: opts.home, now, platform: opts.platform })?.windows ?? [];
|
|
482
|
-
const
|
|
483
|
-
|
|
564
|
+
const decision = usageDecision(settings, windows, now);
|
|
565
|
+
// `wait` writes no marker: the reset only gets closer, and after it the window starts fresh.
|
|
566
|
+
if (decision.kind === 'none' || decision.kind === 'wait')
|
|
484
567
|
return {};
|
|
568
|
+
const { window: top, resetMinutes } = decision;
|
|
485
569
|
try {
|
|
486
570
|
fs.mkdirSync(path.dirname(marker), { recursive: true });
|
|
487
|
-
fs.writeFileSync(marker, JSON.stringify({ at: new Date(now).toISOString(), window: top.name, percent: top.percent, ...(top.resetsAt ? { resetsAt: top.resetsAt } : {}) }) + '\n');
|
|
571
|
+
fs.writeFileSync(marker, JSON.stringify({ at: new Date(now).toISOString(), mode: decision.kind, window: top.name, percent: top.percent, ...(top.resetsAt ? { resetsAt: top.resetsAt } : {}) }) + '\n');
|
|
488
572
|
}
|
|
489
573
|
catch {
|
|
490
574
|
return {}; // without the marker it would fire every turn; stay quiet instead
|
|
491
575
|
}
|
|
576
|
+
const creditMinutes = codex?.credits ? codex.creditMinutesLeft : undefined;
|
|
577
|
+
const instruction = (decision.kind === 'enforce' ? handoffInstruction : suggestionInstruction)(top, creditMinutes, resetMinutes);
|
|
492
578
|
if (codex)
|
|
493
|
-
return { decision: 'block', reason:
|
|
579
|
+
return { decision: 'block', reason: instruction };
|
|
580
|
+
const pct = Math.round(top.percent);
|
|
581
|
+
const resets = resetMinutes !== undefined ? `, which resets in ${minutesPhrase(resetMinutes)}` : '';
|
|
494
582
|
return {
|
|
495
|
-
hookSpecificOutput: { hookEventName: 'Stop', additionalContext:
|
|
496
|
-
systemMessage:
|
|
583
|
+
hookSpecificOutput: { hookEventName: 'Stop', additionalContext: instruction },
|
|
584
|
+
systemMessage: decision.kind === 'enforce'
|
|
585
|
+
? `Auto-handoff: usage is at ${pct}% of the ${top.name} limit${resets}, so this session is handing off. Say "pick up" in another tool or account to continue.`
|
|
586
|
+
: `Auto-handoff: usage is at ${pct}% of the ${top.name} limit${resets}. Work continues; say "hand off" to move it to another tool or account.`,
|
|
497
587
|
};
|
|
498
588
|
}
|
|
499
589
|
/** One short status line: the fullest windows, e.g. "5-hour 42% · weekly 12%". */
|
|
500
590
|
export function usageSummary(windows) {
|
|
501
591
|
return windows.map((w) => `${w.name} ${Math.round(w.percent)}%`).join(' · ');
|
|
502
592
|
}
|
|
593
|
+
/**
|
|
594
|
+
* Minutes until a session that just hit the limit can go on: when the last
|
|
595
|
+
* full window resets. The reading may predate the jump to 100%, so with no
|
|
596
|
+
* window at the threshold the fullest one counts. Undefined when unknown.
|
|
597
|
+
*/
|
|
598
|
+
export function limitResetMinutes(windows, at, now = Date.now()) {
|
|
599
|
+
const live = windows.filter((w) => !w.resetsAt || w.resetsAt * 1000 > now);
|
|
600
|
+
const full = live.filter((w) => w.percent >= at);
|
|
601
|
+
const top = fullest(live, now);
|
|
602
|
+
return minutesUntilReset(full.length ? full : top ? [top] : [], now);
|
|
603
|
+
}
|
|
503
604
|
/**
|
|
504
605
|
* Where a rate-limited turn should hand off, or undefined when it should not:
|
|
505
606
|
* auto-handoff is off or checkpoint-only, the session runs inside Studio, the
|
|
506
|
-
* failure is not a rate limit, the
|
|
507
|
-
*
|
|
508
|
-
*
|
|
509
|
-
*
|
|
607
|
+
* failure is not a rate limit, the limit resets within `waitUnder` minutes
|
|
608
|
+
* (the session can wait it out), the session already wrote one in the last
|
|
609
|
+
* five hours, or the directory is not a SpecWeave project. Both `suggest` and
|
|
610
|
+
* `enforce` hand off here: the session cannot go on, so this is the last
|
|
611
|
+
* moment to write the handoff. Writes its marker before returning, so a retry
|
|
612
|
+
* storm hands off once. The marker is separate from the Stop hook's: a session
|
|
613
|
+
* that was asked at the threshold and still ran out writes a fresh handoff.
|
|
510
614
|
*/
|
|
511
615
|
export function limitHitTarget(input, opts = {}) {
|
|
512
|
-
|
|
616
|
+
const settings = readSettings(opts.home);
|
|
617
|
+
if (!settings || !handsOff(settings) || studioThreadId(opts.env))
|
|
513
618
|
return undefined;
|
|
514
619
|
if (input.error !== 'rate_limit')
|
|
515
620
|
return undefined;
|
|
@@ -521,6 +626,12 @@ export function limitHitTarget(input, opts = {}) {
|
|
|
521
626
|
if (!root)
|
|
522
627
|
return undefined;
|
|
523
628
|
const now = opts.now ?? Date.now();
|
|
629
|
+
let windows = readClaudeUsage(id, opts.home);
|
|
630
|
+
if (!windows.length)
|
|
631
|
+
windows = claudeFallbackReading({ env: opts.env, home: opts.home, now, platform: opts.platform })?.windows ?? [];
|
|
632
|
+
const reset = limitResetMinutes(windows, settings.at, now);
|
|
633
|
+
if (reset !== undefined && reset < (settings.waitUnder ?? DEFAULT_WAIT_UNDER_MINUTES))
|
|
634
|
+
return undefined;
|
|
524
635
|
const marker = path.join(usageDir(opts.home), `${id}.limit-hit`);
|
|
525
636
|
try {
|
|
526
637
|
if (now - fs.statSync(marker).mtimeMs < LIMIT_HIT_REARM_MS)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-guard.js","sourceRoot":"","sources":["../../../../src/core/session/usage-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usage-guard.js","sourceRoot":"","sources":["../../../../src/core/session/usage-guard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.11",
|
|
4
4
|
"description": "Keep intent, specifications, and verified progress portable across AI coding tools. A local live work board, append-only task evidence, explicit handoffs, and optional GitHub/Jira/Azure DevOps integrations.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sw",
|
|
3
3
|
"description": "Portable intent and verified progress across coding tools. Eleven focused workflow skills, two default lifecycle hooks, and a deterministic CLI and live local dashboard.",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.11",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SpecWeave Team",
|
|
7
7
|
"url": "https://spec-weave.com"
|
|
@@ -63,17 +63,21 @@ Text between `<!-- keep -->` and `<!-- /keep -->` in a generated doc survives th
|
|
|
63
63
|
|
|
64
64
|
## Hand off by itself
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
The user runs `specweave auto-handoff on` once (Claude Code, Codex and Grok Build, on
|
|
67
|
+
their own machine; not in cloud sessions). By default (`--mode suggest`) a session that
|
|
68
|
+
reaches 95% of the 5-hour or weekly limit gets a heads-up from the Stop hook: tell the
|
|
69
|
+
user in one line that they can say "hand off", and keep working. Do not hand off on a
|
|
70
|
+
heads-up. With `--mode enforce` the Stop hook instead asks you to hand off: run the
|
|
71
|
+
handoff it names and stop. Neither happens when the full windows reset within 30 minutes
|
|
72
|
+
(`--wait-under`), since waiting is cheaper. In both modes a Claude Code or Grok turn that
|
|
73
|
+
hits the limit outright hands off from a hook. `auto-handoff status` shows the mode, the
|
|
74
|
+
hooks and the last usage reading.
|
|
72
75
|
|
|
73
76
|
Claude Code also warns the model itself near and at the 5-hour limit, with a note that
|
|
74
|
-
starts "[Usage limit approaching" or "[Usage limit reached".
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
starts "[Usage limit approaching" or "[Usage limit reached". "Approaching" is a
|
|
78
|
+
heads-up: mention it in one line and keep working. "Reached" is the handoff moment:
|
|
79
|
+
finish the current edit, run `specweave handoff --reason "usage limit"` (one command; it
|
|
80
|
+
needs no summary from you) and stop.
|
|
77
81
|
|
|
78
82
|
Between handoffs every hook also saves a local checkpoint under
|
|
79
83
|
`~/.specweave/checkpoints/` (no model, network, push or claim change; `pickup` does
|
|
@@ -13,7 +13,7 @@ This project uses SpecWeave. Work is planned in increments: `.specweave/incremen
|
|
|
13
13
|
4. `specweave verify`, a review in a fresh session for anything that ships, then `specweave complete NNNN`.
|
|
14
14
|
5. Stopping for any reason (out of tokens, switching tool or account): `specweave handoff --reason "<why>"`.
|
|
15
15
|
|
|
16
|
-
**Handoff.** When the user says "hand off", "out of tokens" or "switching accounts", or a "[Usage limit
|
|
16
|
+
**Handoff.** When the user says "hand off", "out of tokens" or "switching accounts", or a "[Usage limit reached" note appears (outside SpecWeave Studio), run `specweave handoff --reason "<why>"` and tell the user to say "pick up" in the other tool. A "[Usage limit approaching" note or a usage heads-up is not a stop: say so in one line and keep working. When the user says "pick up", run `specweave pickup` and continue with the task it names. `specweave report` writes an HTML timeline.
|
|
17
17
|
|
|
18
18
|
Tasks live in spec.md as `### T-01 Title` followed by `- AC: AC-01 | Files: src/a.ts, src/a.test.ts | Test: npm test -- a`. An AC is met when the tasks covering it are done. Leave a message for whoever works on an increment next with `specweave note "<text>"`. Each step is a skill in `.agents/skills/sw-*` and `.claude/skills/sw-*`; other tools: `npx vskill install anton-abyzov/specweave/sw-do`.
|
|
19
19
|
<!-- /SECTION -->
|