@onepointfour-packs/flaredeck-agent 0.2.87 → 0.2.89

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/dist/agent.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { query } from '@anthropic-ai/claude-agent-sdk';
2
+ import { cardEnv } from './cardmess.js';
2
3
  import { writeAutoModeSettings } from './automode.js';
3
4
  import { gitGuard } from './gitguard.js';
4
5
  import { limitFromMessage, usageFromMessage, windowsFromRateLimit } from './limits.js';
@@ -86,6 +87,13 @@ export const AGENT_BRIEF = [
86
87
  ' the script and approves it, the HARNESS runs it, and you get the output back in this same',
87
88
  ' turn. If what you need is a decision, a credential or access that does not exist, send it',
88
89
  ' without a script and stop.',
90
+ ' · What you START, you STOP. A scratch database or server you launch yourself is yours to',
91
+ ' shut down when you are done with it — before the turn that finishes with it ends. Stop',
92
+ ' the server BEFORE deleting its folder: one left running on a deleted folder wrote 110 GB',
93
+ ' of errors in an hour and filled the machine. Scratch — a throwaway database, a patch, a',
94
+ ' build log, a copy of the app — goes in $FLAREDECK_SCRATCH (it is also $TMPDIR), never',
95
+ ' straight into /tmp: that folder is this card\'s own, and the harness removes it, and',
96
+ ' stops whatever you left running, when the card\'s checkout is released.',
89
97
  ' · Something that needs DOING and is not yours to do — an email only a person can send, a',
90
98
  ' reply to a customer, a change in a console you cannot open — is not finished by noticing',
91
99
  ' it. In the SAME turn, put it in somebody\'s hands: say on the card exactly what has to be',
@@ -199,7 +207,9 @@ claudeToken) {
199
207
  // per-token key is a bill nobody agreed to — so the key is removed from the environment the
200
208
  // Claude process gets rather than merely warned about. `env` REPLACES the subprocess
201
209
  // environment, so everything else is passed through deliberately.
202
- env: subscriptionEnv(claudeToken),
210
+ // On a card: tagged with its checkout and given a scratch folder of its own, so what it
211
+ // starts and what it scatters can be found and cleared when the checkout goes. See cardmess.ts.
212
+ env: { ...subscriptionEnv(claudeToken), ...(sandbox ? cardEnv(sandbox) : {}) },
203
213
  // Isolation. Without this the agent inherits whatever Claude Code is configured with on this
204
214
  // box — on a developer's machine that meant ten other MCP servers and 473 tools, and Flaredeck
205
215
  // itself then timed out competing with them to connect. An agent must behave the same on every
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export declare const CHECKOUT_TAG = "FLAREDECK_CHECKOUT";
2
+ /**
3
+ * The card's scratch folder. Under /tmp and short on purpose: a database's socket path has a
4
+ * limit of about a hundred characters, and the system's own temp folder on a Mac is most of that.
5
+ */
6
+ export declare function scratchFor(checkout: string): string;
7
+ /** What a session on this checkout runs with. */
8
+ export declare function cardEnv(checkout: string): Record<string, string>;
9
+ export type Tagged = {
10
+ pid: number;
11
+ command: string;
12
+ env: string;
13
+ };
14
+ /** Does this process belong to the card? By its tag, or by naming the checkout or scratch folder. */
15
+ export declare function belongsTo(p: Tagged, checkout: string): boolean;
16
+ /** The agent's own session. While one is alive on the checkout, the card is in use: nothing is cleared. */
17
+ export declare function isSession(p: Tagged): boolean;
18
+ /**
19
+ * This user's processes with their environment. Linux gives it in /proc. macOS gives it through
20
+ * `ps e` for everything but Apple's own binaries (a bare /bin/sh hides it) — which is why the
21
+ * command line is matched as well, and why stopping a shell's children is enough to end it.
22
+ */
23
+ export declare function processes(): Promise<Tagged[]>;
24
+ /**
25
+ * Stop what the card left running and remove its scratch folder. Called just before the checkout
26
+ * itself is removed. Never throws. Returns what it did, for the log.
27
+ */
28
+ export declare function clearCardMess(checkout: string, onStep?: (text: string) => void, list?: () => Promise<Tagged[]>, kill?: (pids: number[]) => Promise<void>): Promise<{
29
+ stopped: number;
30
+ scratch: boolean;
31
+ inUse: boolean;
32
+ }>;
@@ -0,0 +1,130 @@
1
+ /**
2
+ * What a card leaves on the machine besides code — and taking it away when the card's checkout
3
+ * is released. General: it does not know what a project is, what its scratch is called, or what
4
+ * kind of server it runs.
5
+ *
6
+ * A TAG. Every session on a card runs with FLAREDECK_CHECKOUT=<its checkout>. Whatever the
7
+ * agent starts inherits it: a database, a dev server, a watcher, a script left in the
8
+ * background. That is how they are found later — not by name, not by guessing.
9
+ * A FOLDER. The session's TMPDIR is a folder of the card's own (scratchFor). Scratch goes there
10
+ * because that is where "temp" now is; the agent is told so.
11
+ *
12
+ * When the checkout is released (worktree.ts — idle, clean and pushed), everything carrying the
13
+ * tag is stopped FIRST and the folder is removed SECOND. That order is the point: a database left
14
+ * running on a deleted folder is what wrote 110 GB of errors in an hour (13 Oct).
15
+ *
16
+ * Code is never touched here. The checkout is git's and the release rules are worktree.ts's.
17
+ */
18
+ import { execFile } from 'node:child_process';
19
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync } from 'node:fs';
20
+ import { basename } from 'node:path';
21
+ export const CHECKOUT_TAG = 'FLAREDECK_CHECKOUT';
22
+ /**
23
+ * The card's scratch folder. Under /tmp and short on purpose: a database's socket path has a
24
+ * limit of about a hundred characters, and the system's own temp folder on a Mac is most of that.
25
+ */
26
+ export function scratchFor(checkout) {
27
+ return `/tmp/fd-${basename(checkout.replace(/\/+$/, ''))}`;
28
+ }
29
+ /** What a session on this checkout runs with. */
30
+ export function cardEnv(checkout) {
31
+ const scratch = scratchFor(checkout);
32
+ try {
33
+ mkdirSync(scratch, { recursive: true });
34
+ }
35
+ catch { /* the session still runs; scratch falls back to wherever it is put */ }
36
+ return { [CHECKOUT_TAG]: checkout, TMPDIR: scratch, FLAREDECK_SCRATCH: scratch };
37
+ }
38
+ /** Does this process belong to the card? By its tag, or by naming the checkout or scratch folder. */
39
+ export function belongsTo(p, checkout) {
40
+ const scratch = scratchFor(checkout);
41
+ const tagged = (text) => {
42
+ const i = text.indexOf(`${CHECKOUT_TAG}=${checkout}`);
43
+ // The whole path: agent-abc is not agent-abcdef.
44
+ return i >= 0 && !/[^\s\0]/.test(text[i + CHECKOUT_TAG.length + 1 + checkout.length] ?? '');
45
+ };
46
+ if (tagged(p.env) || tagged(p.command))
47
+ return true;
48
+ return [checkout, scratch, `/private${scratch}`].some((path) => {
49
+ const i = p.command.indexOf(path);
50
+ return i >= 0 && !/[A-Za-z0-9_-]/.test(p.command[i + path.length] ?? '');
51
+ });
52
+ }
53
+ /** The agent's own session. While one is alive on the checkout, the card is in use: nothing is cleared. */
54
+ export function isSession(p) {
55
+ return /claude-agent-sdk|flaredeck-agent/.test(p.command.split(/\s+/).slice(0, 2).join(' '));
56
+ }
57
+ const run = (file, args) => new Promise((resolve) => execFile(file, args, { maxBuffer: 64 * 1024 * 1024 }, (_e, stdout) => resolve(String(stdout ?? ''))));
58
+ /**
59
+ * This user's processes with their environment. Linux gives it in /proc. macOS gives it through
60
+ * `ps e` for everything but Apple's own binaries (a bare /bin/sh hides it) — which is why the
61
+ * command line is matched as well, and why stopping a shell's children is enough to end it.
62
+ */
63
+ export async function processes() {
64
+ const out = [];
65
+ if (process.platform === 'linux') {
66
+ for (const name of readdirSync('/proc')) {
67
+ if (!/^\d+$/.test(name))
68
+ continue;
69
+ try {
70
+ const env = readFileSync(`/proc/${name}/environ`, 'utf8');
71
+ const command = readFileSync(`/proc/${name}/cmdline`, 'utf8').replace(/\0/g, ' ').trim();
72
+ if (command)
73
+ out.push({ pid: Number(name), command, env });
74
+ }
75
+ catch { /* not ours, or gone */ }
76
+ }
77
+ return out;
78
+ }
79
+ const uid = String(process.getuid?.() ?? '');
80
+ const text = await run('ps', ['eww', '-U', uid, '-o', 'pid=,command=']);
81
+ for (const line of text.split('\n')) {
82
+ const m = /^\s*(\d+)\s+(.*)$/.exec(line);
83
+ // The environment follows the command on the same line; one string serves for both.
84
+ if (m)
85
+ out.push({ pid: Number(m[1]), command: m[2], env: m[2] });
86
+ }
87
+ return out;
88
+ }
89
+ async function stop(pids) {
90
+ for (const pid of pids) {
91
+ try {
92
+ process.kill(pid, 'SIGTERM');
93
+ }
94
+ catch { /* gone */ }
95
+ }
96
+ await new Promise((r) => setTimeout(r, 4000));
97
+ for (const pid of pids) {
98
+ try {
99
+ process.kill(pid, 0);
100
+ process.kill(pid, 'SIGKILL');
101
+ }
102
+ catch { /* it went */ }
103
+ }
104
+ }
105
+ /**
106
+ * Stop what the card left running and remove its scratch folder. Called just before the checkout
107
+ * itself is removed. Never throws. Returns what it did, for the log.
108
+ */
109
+ export async function clearCardMess(checkout, onStep = () => { }, list = processes, kill = stop) {
110
+ try {
111
+ const mine = (await list()).filter((p) => p.pid !== process.pid && belongsTo(p, checkout));
112
+ // A live session on it means the card is being worked this minute, whatever the clock says.
113
+ if (mine.some((p) => isSession(p) && new RegExp(`${CHECKOUT_TAG}=`).test(p.env)))
114
+ return { stopped: 0, scratch: false, inUse: true };
115
+ if (mine.length)
116
+ await kill(mine.map((p) => p.pid));
117
+ const scratch = scratchFor(checkout);
118
+ const had = existsSync(scratch);
119
+ if (had)
120
+ rmSync(scratch, { recursive: true, force: true });
121
+ if (mine.length || had) {
122
+ onStep(`cleared what ${basename(checkout)} left behind: ${mine.length} process${mine.length === 1 ? '' : 'es'} stopped${had ? ', its scratch folder removed' : ''}`);
123
+ }
124
+ return { stopped: mine.length, scratch: had, inUse: false };
125
+ }
126
+ catch {
127
+ return { stopped: 0, scratch: false, inUse: false };
128
+ }
129
+ }
130
+ //# sourceMappingURL=cardmess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cardmess.js","sourceRoot":"","sources":["../src/cardmess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export declare const LOG_LIMIT_BYTES: number;
2
+ export declare const SCRATCH_IDLE_MS: number;
3
+ export declare const SCRATCH_SWEEP_EVERY_MS: number;
4
+ export type Proc = {
5
+ pid: number;
6
+ ageSec: number;
7
+ command: string;
8
+ };
9
+ /** `ps -o pid=,etime=,command=` — etime is [[dd-]hh:]mm:ss on macOS and Linux alike. */
10
+ export declare function parsePs(text: string): Proc[];
11
+ /** The data folder a database server was started on, from its own command line. */
12
+ export declare function dataDirOf(command: string): string | null;
13
+ /** macOS answers /tmp as /private/tmp; a path is under the temp folder by either name. */
14
+ export declare function tempRoots(tmp?: string): string[];
15
+ /** Rule 1: servers on a temp data folder that is gone. */
16
+ export declare function orphanServers(procs: Proc[], exists: (path: string) => boolean, roots: string[]): Proc[];
17
+ /** Named after a card: kd1532-mysql, KD-1499-app, hr0710.sock, kd1442db.W5pa. A prefix, then digits. */
18
+ export declare function cardScratch(name: string, prefixes: Iterable<string>): boolean;
19
+ /** "KD" from "KD-1532": the part of a card code that scratch gets named after. */
20
+ export declare function codePrefix(code: string | undefined): string | null;
21
+ /** Rule 3, the processes: whatever names this temp entry in its command line and has run that long. */
22
+ export declare function runningFrom(entry: string, procs: Proc[], roots: string[]): Proc[];
23
+ export type Entry = {
24
+ name: string;
25
+ path: string;
26
+ file: boolean;
27
+ size: number;
28
+ touched: number;
29
+ };
30
+ /** Rule 2: logs that have run away. */
31
+ export declare function runawayLogs(entries: Entry[], limit?: number): Entry[];
32
+ /** Rule 3, the entries: card-named, untouched for two days, and nothing young running out of them. */
33
+ export declare function staleScratch(entries: Entry[], procs: Proc[], roots: string[], now: number, prefixes: Iterable<string>, idleMs?: number): {
34
+ entry: Entry;
35
+ stop: Proc[];
36
+ }[];
37
+ /** One pass of all three rules. Never throws; says what it did. */
38
+ export declare function sweepScratch(log: (text: string, warn?: boolean) => void, prefixes?: Iterable<string>, now?: number): Promise<void>;
@@ -0,0 +1,190 @@
1
+ /**
2
+ * What agents leave in the temp folder, cleaned up by the harness.
3
+ *
4
+ * An agent that needs a database for a card starts one by hand: `mysqld --datadir=/tmp/kd1532-mysql`.
5
+ * Nothing the harness starts, so nothing the harness stopped. On 13 Oct one of them had its folder
6
+ * deleted while it was still running; it could not open its own files and wrote that error as fast
7
+ * as the disk took it — 110 GB in an hour, a Mac from 121 GB free to 8. A second had been doing
8
+ * the same for three days. Ten more folders sat there from cards long finished.
9
+ *
10
+ * Three rules, each safe on its own evidence, run at start and every hour by every harness:
11
+ *
12
+ * 1. A database server whose data folder no longer exists is stopped. It has nothing to serve
13
+ * and nothing to lose, and it is the one that fills a disk.
14
+ * 2. A log in the temp folder past LOG_LIMIT is emptied — not removed, so whatever holds it
15
+ * open keeps a valid file. Ten gigabytes of log in /tmp is one line repeated.
16
+ * 3. A folder or file named after a card on this agent's own boards (kd1532-mysql,
17
+ * KD-1499-app) that nothing has touched for two days is removed, after stopping whatever has been running out of it that long.
18
+ *
19
+ * Only this user's processes, only under the temp folder, and never by guessing what a process
20
+ * is for: rule 1 reads the server's own --datadir, rule 3 the path in its own command line.
21
+ */
22
+ import { execFile } from 'node:child_process';
23
+ import { existsSync, readdirSync, rmSync, statSync, truncateSync } from 'node:fs';
24
+ import { tmpdir, userInfo } from 'node:os';
25
+ import { join } from 'node:path';
26
+ export const LOG_LIMIT_BYTES = 10 * 1024 ** 3;
27
+ export const SCRATCH_IDLE_MS = 48 * 60 * 60 * 1000;
28
+ export const SCRATCH_SWEEP_EVERY_MS = 60 * 60 * 1000;
29
+ /** `ps -o pid=,etime=,command=` — etime is [[dd-]hh:]mm:ss on macOS and Linux alike. */
30
+ export function parsePs(text) {
31
+ const out = [];
32
+ for (const line of text.split('\n')) {
33
+ const m = /^\s*(\d+)\s+(?:(\d+)-)?(?:(\d+):)?(\d+):(\d+)\s+(.*)$/.exec(line);
34
+ if (!m)
35
+ continue;
36
+ const age = Number(m[2] ?? 0) * 86400 + Number(m[3] ?? 0) * 3600 + Number(m[4]) * 60 + Number(m[5]);
37
+ out.push({ pid: Number(m[1]), ageSec: age, command: m[6] });
38
+ }
39
+ return out;
40
+ }
41
+ const SERVERS = /(^|\/)(mysqld|mariadbd|postgres|mongod|redis-server)(\s|$)/;
42
+ /** The data folder a database server was started on, from its own command line. */
43
+ export function dataDirOf(command) {
44
+ if (!SERVERS.test(command))
45
+ return null;
46
+ const m = /(?:--datadir|--dbpath|--dir)[= ](\S+)/.exec(command) ?? /\s-D\s+(\S+)/.exec(command);
47
+ return m ? m[1] : null;
48
+ }
49
+ /** macOS answers /tmp as /private/tmp; a path is under the temp folder by either name. */
50
+ export function tempRoots(tmp = tmpdir()) {
51
+ const roots = new Set(['/tmp', '/private/tmp', tmp.replace(/\/+$/, '')]);
52
+ return [...roots];
53
+ }
54
+ const under = (path, roots) => roots.some((r) => path === r || path.startsWith(`${r}/`));
55
+ /** Rule 1: servers on a temp data folder that is gone. */
56
+ export function orphanServers(procs, exists, roots) {
57
+ return procs.filter((p) => {
58
+ const dir = dataDirOf(p.command);
59
+ return !!dir && under(dir, roots) && !exists(dir);
60
+ });
61
+ }
62
+ /** Named after a card: kd1532-mysql, KD-1499-app, hr0710.sock, kd1442db.W5pa. A prefix, then digits. */
63
+ export function cardScratch(name, prefixes) {
64
+ const m = /^([a-z]{2,8})-?\d{3,5}(?![0-9])/i.exec(name);
65
+ if (!m)
66
+ return false;
67
+ // Only a prefix this agent's own boards use. "tmp12345" and "npm-4821" have the same shape,
68
+ // and they are somebody else's.
69
+ const want = m[1].toLowerCase();
70
+ for (const p of prefixes)
71
+ if (p.toLowerCase() === want)
72
+ return true;
73
+ return false;
74
+ }
75
+ /** "KD" from "KD-1532": the part of a card code that scratch gets named after. */
76
+ export function codePrefix(code) {
77
+ const m = /^([A-Za-z]{2,8})-\d+$/.exec((code ?? '').trim());
78
+ return m ? m[1].toUpperCase() : null;
79
+ }
80
+ /** Rule 3, the processes: whatever names this temp entry in its command line and has run that long. */
81
+ export function runningFrom(entry, procs, roots) {
82
+ const paths = roots.map((r) => `${r}/${entry}`);
83
+ return procs.filter((p) => paths.some((path) => {
84
+ const i = p.command.indexOf(path);
85
+ // The whole name, not a longer one that starts the same: /tmp/kd153 is not /tmp/kd1532-mysql.
86
+ return i >= 0 && !/[A-Za-z0-9_-]/.test(p.command[i + path.length] ?? '');
87
+ }));
88
+ }
89
+ /** Rule 2: logs that have run away. */
90
+ export function runawayLogs(entries, limit = LOG_LIMIT_BYTES) {
91
+ return entries.filter((e) => e.file && e.size > limit && /\.(err|log|out)$|(^|[-_.])log$/i.test(e.name));
92
+ }
93
+ /** Rule 3, the entries: card-named, untouched for two days, and nothing young running out of them. */
94
+ export function staleScratch(entries, procs, roots, now, prefixes, idleMs = SCRATCH_IDLE_MS) {
95
+ const out = [];
96
+ for (const e of entries) {
97
+ if (!cardScratch(e.name, prefixes) || now - e.touched < idleMs)
98
+ continue;
99
+ const using = runningFrom(e.name, procs, roots);
100
+ if (using.some((p) => p.ageSec * 1000 < idleMs))
101
+ continue; // somebody started on it today
102
+ out.push({ entry: e, stop: using });
103
+ }
104
+ return out;
105
+ }
106
+ const run = (file, args) => new Promise((resolve) => execFile(file, args, { maxBuffer: 16 * 1024 * 1024 }, (_e, stdout) => resolve(String(stdout ?? ''))));
107
+ function list(root) {
108
+ const out = [];
109
+ let names = [];
110
+ try {
111
+ names = readdirSync(root);
112
+ }
113
+ catch {
114
+ return out;
115
+ }
116
+ for (const name of names) {
117
+ const path = join(root, name);
118
+ try {
119
+ const st = statSync(path);
120
+ let touched = st.mtimeMs;
121
+ // A folder's own date is when something was last added to it; a database writes inside.
122
+ if (st.isDirectory()) {
123
+ try {
124
+ for (const c of readdirSync(path).slice(0, 200)) {
125
+ try {
126
+ touched = Math.max(touched, statSync(join(path, c)).mtimeMs);
127
+ }
128
+ catch { /* gone */ }
129
+ }
130
+ }
131
+ catch { /* unreadable */ }
132
+ }
133
+ out.push({ name, path, file: st.isFile(), size: st.size, touched });
134
+ }
135
+ catch { /* gone between the listing and the look */ }
136
+ }
137
+ return out;
138
+ }
139
+ async function stop(p) {
140
+ try {
141
+ process.kill(p.pid, 'SIGTERM');
142
+ }
143
+ catch {
144
+ return;
145
+ }
146
+ await new Promise((r) => setTimeout(r, 4000));
147
+ try {
148
+ process.kill(p.pid, 0);
149
+ process.kill(p.pid, 'SIGKILL');
150
+ }
151
+ catch { /* it went */ }
152
+ }
153
+ const gb = (n) => `${(n / 1024 ** 3).toFixed(1)} GB`;
154
+ /** One pass of all three rules. Never throws; says what it did. */
155
+ export async function sweepScratch(log, prefixes = [], now = Date.now()) {
156
+ if (process.env['FLAREDECK_AGENT_SCRATCH_SWEEP'] === '0')
157
+ return;
158
+ try {
159
+ const roots = tempRoots();
160
+ // One real folder, whichever of its names answers.
161
+ const root = existsSync('/private/tmp') ? '/private/tmp' : '/tmp';
162
+ const procs = parsePs(await run('ps', ['-U', String(userInfo().uid), '-o', 'pid=,etime=,command=']))
163
+ .filter((p) => p.pid !== process.pid);
164
+ for (const p of orphanServers(procs, existsSync, roots)) {
165
+ log(`stopped a database server whose data folder is gone (${dataDirOf(p.command)}, pid ${p.pid}) — it had nothing to serve and would only fill the disk with errors`, true);
166
+ await stop(p);
167
+ }
168
+ const entries = list(root);
169
+ for (const e of runawayLogs(entries)) {
170
+ try {
171
+ truncateSync(e.path, 0);
172
+ log(`emptied a runaway log in the temp folder: ${e.path} was ${gb(e.size)}`, true);
173
+ }
174
+ catch { /* not ours to empty */ }
175
+ }
176
+ for (const { entry, stop: using } of staleScratch(entries, procs, roots, now, prefixes)) {
177
+ for (const p of using)
178
+ await stop(p);
179
+ try {
180
+ rmSync(entry.path, { recursive: true, force: true });
181
+ log(`removed scratch left by a card: ${entry.path}${using.length ? ` (and stopped ${using.length} process${using.length === 1 ? '' : 'es'} running from it)` : ''}`);
182
+ }
183
+ catch { /* in use, or not ours */ }
184
+ }
185
+ }
186
+ catch (e) {
187
+ log(`scratch sweep: ${e instanceof Error ? e.message : String(e)}`, true);
188
+ }
189
+ }
190
+ //# sourceMappingURL=scratch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scratch.js","sourceRoot":"","sources":["../src/scratch.ts"],"names":[],"mappings":"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"}
package/dist/serve.js CHANGED
@@ -6,6 +6,7 @@ import { START_SCRIPT as START_SCRIPT_NAME, webPart, browserBrief, crossWired, e
6
6
  import { GIT_TOOL_NAMES, githubTools, publishBranch } from './github.js';
7
7
  import { freshGitHubToken } from './githubauth.js';
8
8
  import { answerFrom, createPresence, heldFor, modeCommand } from './presence.js';
9
+ import { codePrefix, SCRATCH_SWEEP_EVERY_MS, sweepScratch } from './scratch.js';
9
10
  import { loadBaseBranch, loadMergeConfig, preflight, preflightBrief } from './preflight.js';
10
11
  import { pushStatus, StatusTracker } from './status.js';
11
12
  import { dispatchDecision, fetchTeam, myTeam, teamTools, TEAM_TOOL_NAMES } from './team.js';
@@ -1019,6 +1020,12 @@ export async function serve(opts) {
1019
1020
  })();
1020
1021
  }, WORKTREE_SWEEP_EVERY_MS);
1021
1022
  worktreeTimer.unref();
1023
+ // What agents leave in the temp folder: see scratch.ts. Once shortly after start, then hourly.
1024
+ const scratchPrefixes = new Set();
1025
+ const sweepTemp = () => void sweepScratch((t, warn) => log(warn ? 'warn' : 'tool', t), scratchPrefixes);
1026
+ setTimeout(sweepTemp, 5 * 60 * 1000).unref();
1027
+ const scratchTimer = setInterval(sweepTemp, SCRATCH_SWEEP_EVERY_MS);
1028
+ scratchTimer.unref();
1022
1029
  /**
1023
1030
  * Paused: a wall this agent cannot get past by itself, so it does no work at all — no turns,
1024
1031
  * no tokens — until its lead resumes it. See flaredeck-mcp/src/mcp/pause.ts for the why.
@@ -2234,6 +2241,9 @@ export async function serve(opts) {
2234
2241
  }, reason, kind);
2235
2242
  };
2236
2243
  async function handle(event) {
2244
+ const prefix = codePrefix(event.cardCode);
2245
+ if (prefix)
2246
+ scratchPrefixes.add(prefix);
2237
2247
  // A scheduled run that sat in the queue past its window (this machine was off, the pane was
2238
2248
  // busy) is dropped, not run late: a "7am summary" at noon is worse than none. Acknowledged by
2239
2249
  // the caller, because skipping it is the finished outcome.