pilotswarm-sdk 0.3.0 → 0.3.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sweeper-tools.d.ts","sourceRoot":"","sources":["../src/sweeper-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"sweeper-tools.d.ts","sourceRoot":"","sources":["../src/sweeper-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CA0ed"}
|
package/dist/sweeper-tools.js
CHANGED
|
@@ -20,10 +20,76 @@ import { defineTool } from "@github/copilot-sdk";
|
|
|
20
20
|
*/
|
|
21
21
|
export function createSweeperTools(opts) {
|
|
22
22
|
const { catalog, duroxideClient, factStore } = opts;
|
|
23
|
+
const TERMINAL_ORCH = new Set(["Completed", "Failed", "Terminated", "NotFound"]);
|
|
24
|
+
/**
|
|
25
|
+
* Re-derive whether a session is independently cleanable, mirroring the
|
|
26
|
+
* eligibility rules used by scan_completed_sessions. This is the guardrail
|
|
27
|
+
* that stops cleanup_session from deleting a LIVE root just because the model
|
|
28
|
+
* inferred it from a cluster of stale children: a root is only cleanable when
|
|
29
|
+
* its OWN orchestration is terminal, and a non-terminal session is only
|
|
30
|
+
* cleanable when it is an idle or orphaned child.
|
|
31
|
+
*/
|
|
32
|
+
async function evaluateCleanupEligibility(session, graceMinutes) {
|
|
33
|
+
let orchStatus = "NotFound";
|
|
34
|
+
let customStatus = {};
|
|
35
|
+
try {
|
|
36
|
+
const st = await duroxideClient.getStatus(`session-${session.sessionId}`);
|
|
37
|
+
orchStatus = st?.status ?? "NotFound";
|
|
38
|
+
if (st?.customStatus) {
|
|
39
|
+
customStatus = typeof st.customStatus === "string"
|
|
40
|
+
? JSON.parse(st.customStatus)
|
|
41
|
+
: st.customStatus;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
orchStatus = "NotFound";
|
|
46
|
+
}
|
|
47
|
+
const isRoot = !session.parentSessionId;
|
|
48
|
+
const terminal = TERMINAL_ORCH.has(orchStatus);
|
|
49
|
+
const stale = session.updatedAt.getTime() < Date.now() - graceMinutes * 60 * 1000;
|
|
50
|
+
// Rule A: terminal orchestration (Completed/Failed/Terminated/NotFound).
|
|
51
|
+
if (terminal) {
|
|
52
|
+
if (!stale) {
|
|
53
|
+
return {
|
|
54
|
+
eligible: false,
|
|
55
|
+
status: orchStatus,
|
|
56
|
+
reason: `Target orchestration is ${orchStatus} but was updated within the last ${graceMinutes}m; not yet stale.`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return { eligible: true, status: orchStatus, reason: `Orchestration ${orchStatus.toLowerCase()}` };
|
|
60
|
+
}
|
|
61
|
+
// Non-terminal (live orchestration): only idle or orphaned CHILDREN qualify.
|
|
62
|
+
if (!isRoot && customStatus?.status === "idle" && stale) {
|
|
63
|
+
return { eligible: true, status: "zombie", reason: "Sub-agent idle (zombie)" };
|
|
64
|
+
}
|
|
65
|
+
if (!isRoot && stale) {
|
|
66
|
+
const parent = await catalog.getSession(session.parentSessionId);
|
|
67
|
+
if (!parent || parent.deletedAt != null) {
|
|
68
|
+
return { eligible: true, status: "orphan", reason: "Parent session no longer exists" };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (isRoot) {
|
|
72
|
+
return {
|
|
73
|
+
eligible: false,
|
|
74
|
+
status: orchStatus,
|
|
75
|
+
reason: `Refusing to clean a ROOT session with a live (${orchStatus}) orchestration. ` +
|
|
76
|
+
`A root is only cleanable when its OWN orchestration is Completed/Failed/Terminated/NotFound. ` +
|
|
77
|
+
`Never infer a parent's status from stale children — clean each stale child by its own sessionId, never the parent.`,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
eligible: false,
|
|
82
|
+
status: orchStatus,
|
|
83
|
+
reason: `Target is not terminal, idle, or orphaned (orchestration ${orchStatus}); not eligible for cleanup.`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
23
86
|
// ── scan_completed_sessions ───────────────────────────────
|
|
24
87
|
const scanTool = defineTool("scan_completed_sessions", {
|
|
25
88
|
description: "Scan for completed, failed, or orphaned sessions that are eligible for cleanup. " +
|
|
26
|
-
"Returns
|
|
89
|
+
"Returns CHILD/leaf candidates that have been idle/completed longer than the specified grace period. " +
|
|
90
|
+
"IMPORTANT: the parentSessionId on each result is diagnostic CONTEXT ONLY — it is NOT a cleanup target. " +
|
|
91
|
+
"Never infer that a parent/root is stale because its children are. Pass only sessionId values from sessions[] " +
|
|
92
|
+
"to cleanup_session — including stale children, which are cleaned by their own sessionId (singly or as a sessionIds[] batch).",
|
|
27
93
|
parameters: {
|
|
28
94
|
type: "object",
|
|
29
95
|
properties: {
|
|
@@ -117,6 +183,9 @@ export function createSweeperTools(opts) {
|
|
|
117
183
|
found: results.length,
|
|
118
184
|
graceMinutes,
|
|
119
185
|
sessions: results,
|
|
186
|
+
guidance: "parentSessionId on each result is context only. Never pass a parentSessionId to cleanup_session " +
|
|
187
|
+
"and never infer a parent's status from its children. Clean the returned sessions by their own sessionId — " +
|
|
188
|
+
"batch them via cleanup_session(sessionIds=[...]) or clean one at a time — never the parent.",
|
|
120
189
|
};
|
|
121
190
|
}
|
|
122
191
|
catch (err) {
|
|
@@ -125,76 +194,123 @@ export function createSweeperTools(opts) {
|
|
|
125
194
|
},
|
|
126
195
|
});
|
|
127
196
|
// ── cleanup_session ──────────────────────────────────────
|
|
197
|
+
/**
|
|
198
|
+
* Clean a single session (target + descendants) after independently
|
|
199
|
+
* re-verifying it is itself eligible. Returns a per-session result; shared
|
|
200
|
+
* by the single and batch forms of cleanup_session.
|
|
201
|
+
*/
|
|
202
|
+
async function cleanupOne(sessionId, graceMinutes, deleteReason) {
|
|
203
|
+
const session = await catalog.getSession(sessionId);
|
|
204
|
+
if (!session) {
|
|
205
|
+
return { ok: false, sessionId, error: "Session not found" };
|
|
206
|
+
}
|
|
207
|
+
if (session.isSystem) {
|
|
208
|
+
return { ok: false, sessionId, error: "Cannot delete system session" };
|
|
209
|
+
}
|
|
210
|
+
// Guardrail: independently re-verify the target is actually cleanable.
|
|
211
|
+
// Prevents deleting a live root that the model inferred from stale
|
|
212
|
+
// children (see evaluateCleanupEligibility).
|
|
213
|
+
const eligibility = await evaluateCleanupEligibility(session, graceMinutes);
|
|
214
|
+
if (!eligibility.eligible) {
|
|
215
|
+
return { ok: false, sessionId, refused: true, status: eligibility.status, error: eligibility.reason };
|
|
216
|
+
}
|
|
217
|
+
// Delete all descendants first, then the session itself.
|
|
218
|
+
const descendants = await catalog.getDescendantSessionIds(sessionId);
|
|
219
|
+
let deletedCount = 0;
|
|
220
|
+
for (const descId of descendants) {
|
|
221
|
+
try {
|
|
222
|
+
await catalog.softDeleteSession(descId);
|
|
223
|
+
if (factStore) {
|
|
224
|
+
try {
|
|
225
|
+
await factStore.deleteSessionFactsForSession(descId);
|
|
226
|
+
}
|
|
227
|
+
catch { }
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
await duroxideClient.deleteInstance(`session-${descId}`, true);
|
|
231
|
+
}
|
|
232
|
+
catch { }
|
|
233
|
+
deletedCount++;
|
|
234
|
+
}
|
|
235
|
+
catch { }
|
|
236
|
+
}
|
|
237
|
+
await catalog.softDeleteSession(sessionId);
|
|
238
|
+
if (factStore) {
|
|
239
|
+
try {
|
|
240
|
+
await factStore.deleteSessionFactsForSession(sessionId);
|
|
241
|
+
}
|
|
242
|
+
catch { }
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
await duroxideClient.deleteInstance(`session-${sessionId}`, true);
|
|
246
|
+
}
|
|
247
|
+
catch { }
|
|
248
|
+
deletedCount++;
|
|
249
|
+
return { ok: true, sessionId, deletedCount, reason: deleteReason, descendants: descendants.length };
|
|
250
|
+
}
|
|
128
251
|
const cleanupTool = defineTool("cleanup_session", {
|
|
129
|
-
description: "Delete
|
|
252
|
+
description: "Delete completed/zombie/orphaned session(s) and all their descendants. " +
|
|
253
|
+
"Accepts a single sessionId OR a batch sessionIds[] — clean many stale sessions (e.g. all the children a scan returned) in one call. " +
|
|
130
254
|
"Removes from CMS (soft-delete) and deletes the duroxide orchestration instance. " +
|
|
131
|
-
"
|
|
255
|
+
"Independently re-verifies EACH target is itself cleanable and REFUSES system sessions, live root sessions, " +
|
|
256
|
+
"and any target that is not terminal/idle/orphaned (refused targets are reported, not deleted). " +
|
|
257
|
+
"Only pass sessionIds that scan_completed_sessions returned in sessions[] — never a parentSessionId.",
|
|
132
258
|
parameters: {
|
|
133
259
|
type: "object",
|
|
134
260
|
properties: {
|
|
135
261
|
sessionId: {
|
|
136
262
|
type: "string",
|
|
137
|
-
description: "
|
|
263
|
+
description: "A single session ID to clean up (must be a scan candidate, never an inferred parent). Use this OR sessionIds.",
|
|
264
|
+
},
|
|
265
|
+
sessionIds: {
|
|
266
|
+
type: "array",
|
|
267
|
+
items: { type: "string" },
|
|
268
|
+
description: "A batch of session IDs to clean up in one call (e.g. all stale children a scan returned). Each is gated independently; live roots / non-terminal targets are refused and reported, not deleted.",
|
|
138
269
|
},
|
|
139
270
|
reason: {
|
|
140
271
|
type: "string",
|
|
141
272
|
description: "Reason for cleanup (logged for auditing)",
|
|
142
273
|
},
|
|
274
|
+
graceMinutes: {
|
|
275
|
+
type: "number",
|
|
276
|
+
description: "Staleness threshold used to re-verify eligibility. Default: 5",
|
|
277
|
+
},
|
|
143
278
|
},
|
|
144
|
-
required: ["sessionId"],
|
|
145
279
|
},
|
|
146
280
|
handler: async (args) => {
|
|
147
|
-
const
|
|
148
|
-
const deleteReason = reason ?? "Cleaned up by Sweeper Agent";
|
|
281
|
+
const graceMinutes = args.graceMinutes ?? 5;
|
|
282
|
+
const deleteReason = args.reason ?? "Cleaned up by Sweeper Agent";
|
|
149
283
|
try {
|
|
150
|
-
//
|
|
151
|
-
|
|
152
|
-
if (
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
// Find and delete all descendants first
|
|
159
|
-
const descendants = await catalog.getDescendantSessionIds(sessionId);
|
|
160
|
-
let deletedCount = 0;
|
|
161
|
-
for (const descId of descendants) {
|
|
162
|
-
try {
|
|
163
|
-
await catalog.softDeleteSession(descId);
|
|
164
|
-
if (factStore) {
|
|
165
|
-
try {
|
|
166
|
-
await factStore.deleteSessionFactsForSession(descId);
|
|
167
|
-
}
|
|
168
|
-
catch { }
|
|
169
|
-
}
|
|
170
|
-
try {
|
|
171
|
-
await duroxideClient.deleteInstance(`session-${descId}`, true);
|
|
172
|
-
}
|
|
173
|
-
catch { }
|
|
174
|
-
deletedCount++;
|
|
175
|
-
}
|
|
176
|
-
catch { }
|
|
177
|
-
}
|
|
178
|
-
// Delete the session itself
|
|
179
|
-
await catalog.softDeleteSession(sessionId);
|
|
180
|
-
if (factStore) {
|
|
181
|
-
try {
|
|
182
|
-
await factStore.deleteSessionFactsForSession(sessionId);
|
|
284
|
+
// Batch mode: an explicit list of session ids. Each is gated and
|
|
285
|
+
// cleaned independently so one bad id never blocks the rest.
|
|
286
|
+
if (Array.isArray(args.sessionIds) && args.sessionIds.length > 0) {
|
|
287
|
+
const seen = new Set();
|
|
288
|
+
const unique = args.sessionIds.filter((id) => typeof id === "string" && id !== "" && !seen.has(id) && (seen.add(id), true));
|
|
289
|
+
const results = [];
|
|
290
|
+
for (const id of unique) {
|
|
291
|
+
results.push(await cleanupOne(id, graceMinutes, deleteReason));
|
|
183
292
|
}
|
|
184
|
-
|
|
293
|
+
const cleaned = results.filter((r) => r.ok);
|
|
294
|
+
const refused = results.filter((r) => r.refused);
|
|
295
|
+
const failed = results.filter((r) => !r.ok && !r.refused);
|
|
296
|
+
const totalDeleted = cleaned.reduce((n, r) => n + (r.deletedCount ?? 0), 0);
|
|
297
|
+
return {
|
|
298
|
+
ok: true,
|
|
299
|
+
batch: true,
|
|
300
|
+
requested: unique.length,
|
|
301
|
+
cleanedCount: cleaned.length,
|
|
302
|
+
refusedCount: refused.length,
|
|
303
|
+
failedCount: failed.length,
|
|
304
|
+
totalDeleted,
|
|
305
|
+
reason: deleteReason,
|
|
306
|
+
results,
|
|
307
|
+
};
|
|
185
308
|
}
|
|
186
|
-
|
|
187
|
-
|
|
309
|
+
// Single mode (backward-compatible result shape).
|
|
310
|
+
if (typeof args.sessionId === "string" && args.sessionId) {
|
|
311
|
+
return await cleanupOne(args.sessionId, graceMinutes, deleteReason);
|
|
188
312
|
}
|
|
189
|
-
|
|
190
|
-
deletedCount++;
|
|
191
|
-
return {
|
|
192
|
-
ok: true,
|
|
193
|
-
sessionId,
|
|
194
|
-
deletedCount,
|
|
195
|
-
reason: deleteReason,
|
|
196
|
-
descendants: descendants.length,
|
|
197
|
-
};
|
|
313
|
+
return { ok: false, error: "Provide either sessionId (string) or a non-empty sessionIds array" };
|
|
198
314
|
}
|
|
199
315
|
catch (err) {
|
|
200
316
|
return { ok: false, error: err.message };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sweeper-tools.js","sourceRoot":"","sources":["../src/sweeper-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sweeper-tools.js","sourceRoot":"","sources":["../src/sweeper-tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pilotswarm-sdk",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "A durable execution runtime for GitHub Copilot SDK agents. Crash recovery, durable timers, session dehydration, and multi-node scaling — powered by duroxide.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"test:local:contracts": "node --env-file=../../.env ../../node_modules/vitest/vitest.mjs run test/local/contracts.test.js",
|
|
28
28
|
"test:local:chaos": "node --env-file=../../.env ../../node_modules/vitest/vitest.mjs run test/local/chaos.test.js",
|
|
29
29
|
"test:local:system-agents": "node --env-file=../../.env ../../node_modules/vitest/vitest.mjs run test/local/system-agents.test.js test/local/system-session-restart.test.js",
|
|
30
|
+
"test:local:sweeper": "node --env-file=../../.env ../../node_modules/vitest/vitest.mjs run test/local/sweeper-cleanup-guard.test.js",
|
|
30
31
|
"test:local:session-policy": "node --env-file=../../.env ../../node_modules/vitest/vitest.mjs run test/local/session-policy-*.test.js",
|
|
31
32
|
"test:local:reliability": "node --env-file=../../.env ../../node_modules/vitest/vitest.mjs run test/local/reliability-*.test.js",
|
|
32
33
|
"test:local:knowledge-pipeline": "node --env-file=../../.env ../../node_modules/vitest/vitest.mjs run test/local/knowledge-pipeline.test.js test/local/facts.test.js",
|
|
@@ -74,7 +75,7 @@
|
|
|
74
75
|
"pg": "^8.18.0"
|
|
75
76
|
},
|
|
76
77
|
"peerDependencies": {
|
|
77
|
-
"pilotswarm-horizon-store": "^0.3.
|
|
78
|
+
"pilotswarm-horizon-store": "^0.3.1"
|
|
78
79
|
},
|
|
79
80
|
"peerDependenciesMeta": {
|
|
80
81
|
"pilotswarm-horizon-store": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
schemaVersion: 1
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.1.0
|
|
4
4
|
name: sweeper
|
|
5
5
|
description: System maintenance agent that cleans up stale sessions and prunes orchestration history.
|
|
6
6
|
system: true
|
|
@@ -53,14 +53,17 @@ you resume the maintenance loop.
|
|
|
53
53
|
|
|
54
54
|
## Maintenance Loop (Background Behavior)
|
|
55
55
|
1. Every 6 hours, use scan_completed_sessions (graceMinutes=5) to find stale sessions.
|
|
56
|
-
2.
|
|
56
|
+
2. Clean the stale sessions found. Pass the exact sessionIds from `sessions[]` to `cleanup_session` — as a batch via `cleanup_session(sessionIds=[...])`, or one at a time via `cleanup_session(sessionId)`. Stale children are cleaned the same way (by their own sessionId). NEVER pass a `parentSessionId`; it is context only.
|
|
57
57
|
3. Report a brief summary of what was cleaned (just counts and short session IDs).
|
|
58
58
|
4. Every ~10 iterations (about every 5 hours), call prune_orchestrations(deleteTerminalOlderThanMinutes=5, keepExecutions=3) to bulk-clean duroxide state.
|
|
59
59
|
5. Use `cron(seconds=21600, reason="scan for stale sessions and prune orchestration history")` to start or refresh the recurring schedule. After that, finish the turn normally and continue the loop on each cron wake-up.
|
|
60
60
|
|
|
61
61
|
## Rules
|
|
62
62
|
- Never delete system sessions.
|
|
63
|
-
-
|
|
63
|
+
- NEVER infer a parent/root session's status from its children. A cluster of stale children under the same `parentSessionId` does NOT mean the parent is stale — `scan_completed_sessions` returns children, and `parentSessionId` is context only.
|
|
64
|
+
- NEVER pass a `parentSessionId` to `cleanup_session`. Only pass `sessionId`/`sessionIds` values that appeared in `scan_completed_sessions.sessions[]`. Clean stale children that share a parent by their own ids (batch them with `cleanup_session(sessionIds=[...])`) — never the parent.
|
|
65
|
+
- `cleanup_session` independently re-verifies eligibility per target and will REFUSE live roots and non-terminal targets (in a batch, refused ids are reported, not deleted). Treat a refusal as expected — do not retry or route around it.
|
|
66
|
+
- For the stale sessions a scan returns, call `cleanup_session` with their own ids — batch many via `sessionIds=[...]` (children included).
|
|
64
67
|
- NEVER use `delete_agent` for general cleanup — that tool only works for sub-agents spawned by the current session.
|
|
65
68
|
- Never delete sessions that are actively running with recent activity.
|
|
66
69
|
- If the user asks about stale or abandoned sessions for a specific owner, use `list_all_sessions(owner_query=..., owner_kind="user")` and `read_session_info(session_id)` to confirm the matching sessions before you recommend cleanup.
|
|
@@ -13,7 +13,7 @@ and deleting completed, failed, or orphaned sessions.
|
|
|
13
13
|
## Default Behavior
|
|
14
14
|
|
|
15
15
|
1. Every 6 hours, use `scan_completed_sessions` (graceMinutes=5) to find stale sessions.
|
|
16
|
-
2.
|
|
16
|
+
2. Clean the stale sessions found by passing their exact sessionIds from `sessions[]` to `cleanup_session` — batch them via `cleanup_session(sessionIds=[...])` or clean one at a time (stale children included). Never pass a `parentSessionId`.
|
|
17
17
|
3. Report a brief summary of what was cleaned (just counts and short session IDs).
|
|
18
18
|
4. Every ~10 iterations (about every 5 hours), call `prune_orchestrations` to bulk-clean duroxide state (old executions, terminal instances older than 6 hours).
|
|
19
19
|
5. Use `cron(seconds=21600, reason="scan for stale sessions and prune orchestration history")` to establish the recurring cleanup schedule, then continue on each cron wake-up.
|
|
@@ -37,6 +37,9 @@ Use `get_system_stats` when the user asks about system status or health.
|
|
|
37
37
|
## Rules
|
|
38
38
|
|
|
39
39
|
- **Never** delete system sessions (the cleanup_session tool will refuse anyway).
|
|
40
|
+
- **Never** infer a parent/root session's status from its children. Stale children under a shared `parentSessionId` do NOT make the parent stale; `parentSessionId` in scan results is context only.
|
|
41
|
+
- **Never** pass a `parentSessionId` to `cleanup_session`. Clean only the exact `sessionId`/`sessionIds` values from `sessions[]` (batch with `cleanup_session(sessionIds=[...])`) — stale children are cleaned by their own ids, never via the parent.
|
|
42
|
+
- `cleanup_session` re-verifies eligibility and will refuse live roots and non-terminal targets — treat refusals as expected, not errors to work around.
|
|
40
43
|
- **Never** delete sessions that are actively running with recent activity.
|
|
41
44
|
- Always log what you delete so the user can audit your actions.
|
|
42
45
|
- Be concise in periodic logs — counts and 8-char session ID fragments only.
|