@dsh-cc/command-agents 0.8.2-rc.1 → 0.8.3-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm check:readme --write
5
- README.md: 990e1fe57934caabc4e282dd16f26b0cb2710ca8
6
- README.zh.md: e7feeaca85d787815cecc115455951d86d48b5b8
5
+ README.md: 08355d935658595df6455ff34f3d51d51837662f
6
+ README.zh.md: 0d66e875a65958d7a18a063e3f566ad0e01c9ec4
package/README.md CHANGED
@@ -12,9 +12,29 @@ Human-facing `/agents` command for continuable background agents (plan
12
12
  - `/agents <id>` — thin detail: pin provenance (path, definition, model
13
13
  selector, workspace, gate evaluation), residency, ids.
14
14
  - `/agents stop <id>` — one interrupt request on a running child (the child
15
- stays continuable/resumable); short no-op explanation otherwise.
15
+ stays continuable/resumable); short no-op explanation otherwise. A released
16
+ (or mid-release) child refuses with an explicit "cannot be continued here"
17
+ copy instead of the resumable wording.
18
+ - `/agents release <id>` — evict the child's resident activation (and its
19
+ resident descendants') through the harness drain seam; frees its capacity
20
+ slot when it was running; cooperative (a cancel-resistant turn keeps its
21
+ slot and the command reports the release as in flight); one-way in this
22
+ session (same-session continuation is unavailable — the upstream
23
+ cold-resume-after-drain gap); the persisted session survives on disk.
24
+ Released rows render a process-local `[released]` tag in the list and a
25
+ release line in the detail.
16
26
  - `/agents attach <id>` — namespace reserved, not implemented (P1).
17
27
 
28
+ ## Shared release core
29
+
30
+ `src/release.ts` is the single release operation shared by `/agents release`
31
+ and the model-facing `release_agent` tool (`@dsh-cc/subagent-task`): one
32
+ gate/drain/resolve/reject/timeout flow, one copy set, and one process-local
33
+ two-set marker (`releasing` / `released`), exported via the
34
+ `@dsh-cc/command-agents/release` entry. The `[released]` tag renders only
35
+ when a marker exists AND the row's residency is `ready` (registry-absent at
36
+ snapshot time) — never from the marker alone.
37
+
18
38
  ## Shared snapshot
19
39
 
20
40
  `src/snapshot.ts` is a pure snapshot provider over injected services
package/README.zh.md CHANGED
@@ -12,9 +12,25 @@
12
12
  - `/agents <id>` — 轻量详情:pin 来源(路径、定义、模型选择器、工作区、
13
13
  gate 评估结果)、驻留状态、ids。
14
14
  - `/agents stop <id>` — 对运行中的子代理发送一次中断请求(子代理仍可
15
- 延续/恢复);否则给出简短的无操作说明。
15
+ 延续/恢复);否则给出简短的无操作说明。已释放(或释放进行中)的子代理
16
+ 会以明确的"本会话内不可延续"文案拒绝,而不是可恢复的说法。
17
+ - `/agents release <id>` — 通过 harness 的 drain 缝隙逐出该子代理的常驻
18
+ activation(连同其常驻后代);当其为 running 时释放其容量槽位;驱逐是
19
+ 协作式的(一个拒绝取消的 turn 会保留其槽位,此时命令报告释放仍在进行);
20
+ 本会话内单向不可逆(同会话延续不可用——上游 cold-resume-after-drain 缺口);
21
+ 持久化的 session 保留在磁盘上。已释放的行在列表中渲染进程本地的
22
+ `[released]` 标签,在详情中渲染一行 release 说明。
16
23
  - `/agents attach <id>` — 命名空间已保留,尚未实现(P1)。
17
24
 
25
+ ## Shared release core
26
+
27
+ `src/release.ts` 是由 `/agents release` 与面向模型的 `release_agent` 工具
28
+ (`@dsh-cc/subagent-task`)共享的唯一释放操作:一套 gate/drain/resolve/
29
+ reject/timeout 流程、一套文案,以及一个进程本地的双集合标记
30
+ (`releasing` / `released`),经 `@dsh-cc/command-agents/release` 入口导出。
31
+ 只有当标记存在且该行的驻留状态为 `ready`(快照时刻注册表缺席)时,
32
+ `[released]` 标签才会渲染——绝不只凭标记。
33
+
18
34
  ## Shared snapshot
19
35
 
20
36
  `src/snapshot.ts` 是一个基于注入服务的纯快照提供者
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAkBlD,eAAO,MAAM,IAAI,mBAAmB,CAAA;AACpC,eAAO,MAAM,MAAM,UAAwD,CAAA;AAuE3E;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAqCxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA2BlD,eAAO,MAAM,IAAI,mBAAmB,CAAA;AACpC,eAAO,MAAM,MAAM,UAAwD,CAAA;AAsG3E;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAsCxC"}
package/lib/index.js CHANGED
@@ -10,7 +10,8 @@
10
10
  */
11
11
  import { SessionId } from '@deepseek-ai/dsh-session';
12
12
  import { helpable } from '@dsh-cc/command-usage';
13
- import { buildAgentsSnapshot, parseAgentsInput, renderAgentDetail, renderAgentsList, stopNotRunningCopy, stopRunningCopy, unknownAgentCopy, } from "./snapshot.js";
13
+ import { buildAgentsSnapshot, parseAgentsInput, renderAgentDetail, renderAgentsList, stopNotRunningCopy, stopReleasedCopy, stopRunningCopy, unknownAgentCopy, } from "./snapshot.js";
14
+ import { ReleaseFailure, renderReleaseOutcome, runRelease, isReleased, isReleasing, } from "./release.js";
14
15
  export const name = 'command-agents';
15
16
  export const inject = ['commands', 'subagents', 'agents', 'resumePinStore'];
16
17
  /** Adapt the injected services to the pure snapshot seam. */
@@ -27,22 +28,51 @@ function toSnapshotServices(subagents, agents, pinStore) {
27
28
  getAgent: id => agents.get(id),
28
29
  readPin: childId => pinStore.read(childId),
29
30
  pinPath: childId => pinStore.pathFor(childId),
31
+ isReleased: id => isReleased(id),
32
+ isReleasing: id => isReleasing(id),
30
33
  };
31
34
  }
32
35
  /** Execute one parsed `/agents` invocation against the snapshot. */
33
- async function executeAgents(snapshotServices, subagents, caller, rawInput) {
36
+ async function executeAgents(snapshotServices, subagents, agents, caller, rawInput, signal) {
34
37
  const parsed = parseAgentsInput(rawInput);
35
38
  if (parsed.kind === 'error')
36
39
  return { kind: 'error', text: parsed.text };
37
40
  const parentSessionId = String(caller.session.id);
41
+ // The release branch runs BEFORE rows.find / any snapshot fast path: the
42
+ // authoritative drain seam, not the snapshot, decides.
43
+ if (parsed.kind === 'release') {
44
+ try {
45
+ const outcome = await runRelease({
46
+ parent: caller,
47
+ id: parsed.id,
48
+ subagents,
49
+ agents: agents,
50
+ signal,
51
+ });
52
+ return { kind: 'success', text: renderReleaseOutcome(outcome) };
53
+ }
54
+ catch (failure) {
55
+ if (failure instanceof ReleaseFailure)
56
+ return { kind: 'error', text: failure.message };
57
+ throw failure;
58
+ }
59
+ }
38
60
  if (parsed.kind === 'stop') {
39
61
  const rows = await buildAgentsSnapshot(snapshotServices, parentSessionId);
40
62
  const row = rows.find(candidate => candidate.id === parsed.id);
41
63
  if (row === undefined)
42
64
  return { kind: 'error', text: unknownAgentCopy(parsed.id) };
65
+ // Symmetric stop-copy gates (D3): a released Ready row and a mid-drain
66
+ // (releasing) row must never read "stays resumable".
43
67
  if (row.residency !== 'running') {
68
+ if (row.released === true) {
69
+ return { kind: 'success', text: stopReleasedCopy(parsed.id) };
70
+ }
44
71
  return { kind: 'success', text: stopNotRunningCopy(parsed.id, row.residency) };
45
72
  }
73
+ if (snapshotServices.isReleasing?.(parsed.id) === true) {
74
+ return { kind: 'success', text: stopReleasedCopy(parsed.id) };
75
+ }
46
76
  subagents.interrupt(SessionId(parsed.id), { kind: 'ancestor', agent: caller });
47
77
  return { kind: 'success', text: stopRunningCopy(parsed.id) };
48
78
  }
@@ -90,13 +120,14 @@ export function apply(ctx) {
90
120
  }, 'command-agents: clear host-realm ccAgents publication on unload');
91
121
  ctx.commands.register(helpable({
92
122
  name: 'agents',
93
- description: 'list, inspect, or stop continuable background agents',
94
- handler: (invocation) => executeAgents(snapshotServices, subagents, invocation.agent, invocation.rawInput),
123
+ description: 'list, inspect, stop, or release continuable background agents',
124
+ handler: (invocation) => executeAgents(snapshotServices, subagents, agents, invocation.agent, invocation.rawInput, invocation.signal),
95
125
  }, {
96
126
  usage: ['[<id>]'],
97
127
  subcommands: [
98
128
  { word: 'detail', args: '<id>', summary: 'Show one background agent by id (the bare form lists all)' },
99
- { word: 'stop', args: '<id>', summary: 'Stop a running background agent by id' },
129
+ { word: 'stop', args: '<id>', summary: 'Interrupt a running agent\'s current turn (the activation stays resident; "/agents release <id>" evicts it)' },
130
+ { word: 'release', args: '<id>', summary: 'Evict an agent\'s resident activation (and resident descendants\'), freeing its capacity slot when it was running; cooperative; one-way in this session' },
100
131
  ],
101
132
  }));
102
133
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Shared release operation: the single source of truth for evicting a direct
3
+ * continuable child's resident activation via the harness
4
+ * `drainContinuableChildren` seam (plan
5
+ * docs/plans/2026-09-30-subagent-release-valve.md §4 D1). Consumed by the
6
+ * model-facing `release_agent` tool and the human-facing
7
+ * `/agents release <id>` command, so both surfaces render ONE copy set (§5)
8
+ * and share ONE process-local marker state (F14: released rows are not
9
+ * representable upstream — the durable catalog survives a drain and reads
10
+ * `ready`).
11
+ *
12
+ * Residency derivation cross-reference: this module's registry reads derive
13
+ * residency exactly like the sibling sites `snapshot.ts residencyOf` (live
14
+ * `status === 'running'` → running, live-not-running → idle, absent →
15
+ * settled/ready) and `background-start.ts assertLiveCapacity` (a slot is held
16
+ * only while the registry reports `status === 'running'`).
17
+ * @module @dsh-cc/command-agents/release
18
+ */
19
+ import { SessionId } from '@deepseek-ai/dsh-session';
20
+ import type { Agent } from '@deepseek-ai/dsh-agent';
21
+ /** The duck-typed subagents seam release needs (host duck compat). */
22
+ export interface ReleaseSubagentsLike {
23
+ listChildren?(parentSessionId: SessionId, signal?: AbortSignal): Promise<readonly {
24
+ id: string;
25
+ mode?: string;
26
+ }[]>;
27
+ drainContinuableChildren?(parent: Agent, ids: SessionId[]): Promise<void>;
28
+ }
29
+ /** The duck-typed live-agents registry slice release reads. */
30
+ export interface ReleaseRegistryLike {
31
+ get(id: string): {
32
+ status?: 'idle' | 'running' | string;
33
+ } | undefined;
34
+ }
35
+ type PreStatus = 'running' | 'idle' | 'unknown';
36
+ type CatalogNote = 'catalog' | 'registry-only' | 'catalog-unreadable';
37
+ export type ReleaseOutcome = {
38
+ kind: 'released';
39
+ id: string;
40
+ preStatus: PreStatus;
41
+ catalogNote: CatalogNote;
42
+ cause?: string;
43
+ } | {
44
+ kind: 'issued-unobservable';
45
+ id: string;
46
+ catalogNote: 'catalog';
47
+ } | {
48
+ kind: 'evicted-degraded';
49
+ id: string;
50
+ failure: string;
51
+ catalogNote: CatalogNote;
52
+ cause?: string;
53
+ } | {
54
+ kind: 'not-resident';
55
+ id: string;
56
+ releasedEarlier: boolean;
57
+ } | {
58
+ kind: 'still-resident';
59
+ id: string;
60
+ drainPending: boolean;
61
+ };
62
+ export type ReleaseFailureReason = 'unknown-id' | 'not-continuable' | 'no-drain-seam' | 'catalog-unreadable' | 'not-direct-child' | 'stale-parent';
63
+ /** A release gate error whose `message` IS the final §5 copy. */
64
+ export declare class ReleaseFailure extends Error {
65
+ readonly reason: ReleaseFailureReason;
66
+ constructor(reason: ReleaseFailureReason, message: string);
67
+ }
68
+ /** How long a drain may run before the caller reports still-resident (F4). */
69
+ export declare const DRAIN_OBSERVE_TIMEOUT_MS = 10000;
70
+ /** Enter the releasing state (pre-issuance; F12a). */
71
+ export declare function markReleasing(id: string): void;
72
+ /** Terminal success: move the id releasing → released. */
73
+ export declare function markReleased(id: string): void;
74
+ /** Withdraw a releasing mark; refused (no-op) while the id is released. */
75
+ export declare function clearReleasing(id: string): void;
76
+ export declare function isReleased(id: string): boolean;
77
+ export declare function isReleasing(id: string): boolean;
78
+ /** Test-only: clears BOTH sets. */
79
+ export declare function resetReleasedMarkers(): void;
80
+ /**
81
+ * Run one release against the authoritative drain seam. Gate errors precede
82
+ * any marking/drain; every transition is test-pinned (plan §4 D1 step list).
83
+ */
84
+ export declare function runRelease(deps: {
85
+ parent: Agent;
86
+ id: string;
87
+ subagents: ReleaseSubagentsLike | undefined;
88
+ agents: ReleaseRegistryLike | undefined;
89
+ signal?: AbortSignal;
90
+ }): Promise<ReleaseOutcome>;
91
+ /**
92
+ * Render a release outcome as the final user-facing text. Every §5 variant
93
+ * is a verbatim contract; the descendant clause rides on every
94
+ * eviction-claiming string.
95
+ */
96
+ export declare function renderReleaseOutcome(outcome: ReleaseOutcome): string;
97
+ export {};
98
+ //# sourceMappingURL=release.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"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"}
package/lib/release.js ADDED
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Shared release operation: the single source of truth for evicting a direct
3
+ * continuable child's resident activation via the harness
4
+ * `drainContinuableChildren` seam (plan
5
+ * docs/plans/2026-09-30-subagent-release-valve.md §4 D1). Consumed by the
6
+ * model-facing `release_agent` tool and the human-facing
7
+ * `/agents release <id>` command, so both surfaces render ONE copy set (§5)
8
+ * and share ONE process-local marker state (F14: released rows are not
9
+ * representable upstream — the durable catalog survives a drain and reads
10
+ * `ready`).
11
+ *
12
+ * Residency derivation cross-reference: this module's registry reads derive
13
+ * residency exactly like the sibling sites `snapshot.ts residencyOf` (live
14
+ * `status === 'running'` → running, live-not-running → idle, absent →
15
+ * settled/ready) and `background-start.ts assertLiveCapacity` (a slot is held
16
+ * only while the registry reports `status === 'running'`).
17
+ * @module @dsh-cc/command-agents/release
18
+ */
19
+ import { SessionId } from '@deepseek-ai/dsh-session';
20
+ /** A release gate error whose `message` IS the final §5 copy. */
21
+ export class ReleaseFailure extends Error {
22
+ reason;
23
+ constructor(reason, message) {
24
+ super(message);
25
+ this.reason = reason;
26
+ }
27
+ }
28
+ /** How long a drain may run before the caller reports still-resident (F4). */
29
+ export const DRAIN_OBSERVE_TIMEOUT_MS = 10_000;
30
+ // ---------------------------------------------------------------------------
31
+ // Process-local markers (F14) — TWO sets: `releasing` and `released`.
32
+ // markReleasing(id) adds releasing-membership AFTER the final throwIfAborted
33
+ // and BEFORE drain issuance (F12a: an armed first-epoch collect resolves
34
+ // DURING the drain, so the releasing mark must already be visible then).
35
+ // markReleased(id) moves the id releasing → released (removes releasing
36
+ // membership).
37
+ // clearReleasing(id) removes releasing membership ONLY and is refused while
38
+ // the id is released (a no-op then) — the invariant that makes a concurrent
39
+ // retry's mark clobber-proof against a stale attempt's late handlers
40
+ // (critic r5 #3). The timeout arm KEEPS the releasing mark and attaches a
41
+ // late completion continuation (step 5). Snapshot tagging rule:
42
+ // (isReleased(id) || isReleasing(id)) && registry-absent-at-snapshot-time —
43
+ // never from the marker alone.
44
+ // ---------------------------------------------------------------------------
45
+ const releasing = new Set();
46
+ const released = new Set();
47
+ /** Enter the releasing state (pre-issuance; F12a). */
48
+ export function markReleasing(id) {
49
+ releasing.add(id);
50
+ }
51
+ /** Terminal success: move the id releasing → released. */
52
+ export function markReleased(id) {
53
+ releasing.delete(id);
54
+ released.add(id);
55
+ }
56
+ /** Withdraw a releasing mark; refused (no-op) while the id is released. */
57
+ export function clearReleasing(id) {
58
+ if (released.has(id))
59
+ return;
60
+ releasing.delete(id);
61
+ }
62
+ export function isReleased(id) {
63
+ return released.has(id);
64
+ }
65
+ export function isReleasing(id) {
66
+ return releasing.has(id);
67
+ }
68
+ /** Test-only: clears BOTH sets. */
69
+ export function resetReleasedMarkers() {
70
+ releasing.clear();
71
+ released.clear();
72
+ }
73
+ // ---------------------------------------------------------------------------
74
+ // Copy helpers (F15 normalization).
75
+ // ---------------------------------------------------------------------------
76
+ function errorText(error) {
77
+ return error instanceof Error ? error.message : String(error);
78
+ }
79
+ function catalogUnreadableCopy(id, cause) {
80
+ return `Cannot verify ${id} against this session's child catalog (${cause}); refusing to release blind. Retry, or restart the session if listing stays broken.`;
81
+ }
82
+ function failureMessage(reason, id, detail) {
83
+ switch (reason) {
84
+ case 'unknown-id':
85
+ return `No agent ${id} among this session's continuable children; use list_agents or /agents for current ids.`;
86
+ case 'not-continuable':
87
+ return `Agent ${id} is not a continuable child (mode: ${detail ?? 'unknown'}); release only covers continuable children.`;
88
+ case 'no-drain-seam':
89
+ return `Cannot release ${id}: this composition's subagents seam exposes no drainContinuableChildren; free capacity by letting children settle or by restarting the session.`;
90
+ case 'catalog-unreadable':
91
+ return catalogUnreadableCopy(id, detail ?? '');
92
+ case 'not-direct-child':
93
+ return `Agent ${id} is not a direct child of this session (the drain seam refused with UNAUTHORIZED); release its direct parent instead — if that parent is one of this session's children. Releasing a parent evicts its whole resident subtree.`;
94
+ case 'stale-parent':
95
+ return `This session's agent handle is stale (the drain seam refused with UNAUTHORIZED against the parent identity); retry the release, or restart the turn if it persists.`;
96
+ }
97
+ }
98
+ const NO_LIST_CHILDREN_CAUSE = 'the subagents seam exposes no listChildren';
99
+ function sleep(ms) {
100
+ return new Promise(resolve => { setTimeout(resolve, ms); });
101
+ }
102
+ function guardedRegistryRead(agents, id) {
103
+ if (agents === undefined || typeof agents.get !== 'function')
104
+ return { kind: 'unobservable' };
105
+ try {
106
+ const row = agents.get(id);
107
+ return row === undefined ? { kind: 'absent' } : { kind: 'present', status: row.status };
108
+ }
109
+ catch {
110
+ return { kind: 'unobservable' };
111
+ }
112
+ }
113
+ function preStatusOf(status) {
114
+ if (status === 'running' || status === 'idle')
115
+ return status;
116
+ return 'unknown';
117
+ }
118
+ /**
119
+ * Run one release against the authoritative drain seam. Gate errors precede
120
+ * any marking/drain; every transition is test-pinned (plan §4 D1 step list).
121
+ */
122
+ export async function runRelease(deps) {
123
+ const { parent, id } = deps;
124
+ const subagents = deps.subagents;
125
+ const agents = deps.agents;
126
+ const signal = deps.signal ?? new AbortController().signal;
127
+ // Step 0: seam gates before any marking or drain.
128
+ if (subagents === undefined || typeof subagents.drainContinuableChildren !== 'function') {
129
+ throw new ReleaseFailure('no-drain-seam', failureMessage('no-drain-seam', id, undefined));
130
+ }
131
+ signal.throwIfAborted();
132
+ // Step 1: catalog read (guarded).
133
+ let catalog;
134
+ let catalogMode;
135
+ let catalogCause;
136
+ if (typeof subagents.listChildren !== 'function') {
137
+ catalog = 'unreadable';
138
+ catalogCause = NO_LIST_CHILDREN_CAUSE;
139
+ }
140
+ else {
141
+ try {
142
+ const rows = await subagents.listChildren(SessionId(parent.id), signal);
143
+ const row = rows.find(entry => String(entry.id) === id);
144
+ if (row === undefined) {
145
+ catalog = 'clean-miss';
146
+ }
147
+ else {
148
+ catalog = 'clean-hit';
149
+ catalogMode = row.mode;
150
+ }
151
+ }
152
+ catch (error) {
153
+ if (signal.aborted)
154
+ throw error; // cancellation is never catalog failure
155
+ catalog = 'unreadable';
156
+ catalogCause = errorText(error);
157
+ }
158
+ }
159
+ // Step 2: registry pre-read (guarded). `preStatus` is captured only on a hit.
160
+ const preRead = guardedRegistryRead(agents, id);
161
+ const preStatus = preRead.kind === 'present' ? preStatusOf(preRead.status) : undefined;
162
+ // Step 3: mode gate (clean catalog hit only).
163
+ if (catalog === 'clean-hit' && catalogMode !== 'continuable') {
164
+ throw new ReleaseFailure('not-continuable', failureMessage('not-continuable', id, catalogMode ?? 'unknown'));
165
+ }
166
+ // Step 4: the catalog × registry matrix.
167
+ if (catalog === 'clean-miss' && preRead.kind !== 'present') {
168
+ // miss × miss and miss × unobservable both refuse without a drain.
169
+ throw new ReleaseFailure('unknown-id', failureMessage('unknown-id', id, undefined));
170
+ }
171
+ if (catalog === 'unreadable' && preRead.kind !== 'present') {
172
+ // unreadable × miss and unreadable × unobservable refuse blind.
173
+ throw new ReleaseFailure('catalog-unreadable', catalogUnreadableCopy(id, catalogCause ?? ''));
174
+ }
175
+ if (catalog === 'clean-hit' && preRead.kind === 'absent') {
176
+ return { kind: 'not-resident', id, releasedEarlier: isReleased(id) };
177
+ }
178
+ // A drain row: catalogNote from the matrix.
179
+ const catalogNote = catalog === 'clean-hit' ? 'catalog'
180
+ : catalog === 'clean-miss' ? 'registry-only'
181
+ : 'catalog-unreadable';
182
+ // Step 5: the honored-cancellation checkpoint comes FIRST, then the mark,
183
+ // then issuance (critic r5 #1: an abort must never orphan a releasing mark
184
+ // on an unissued drain).
185
+ signal.throwIfAborted();
186
+ markReleasing(id);
187
+ const drain = subagents.drainContinuableChildren(parent, [SessionId(id)]);
188
+ const withCause = () => catalogNote === 'catalog-unreadable' && catalogCause !== undefined
189
+ ? { cause: catalogCause }
190
+ : {};
191
+ // Race the drain against the observe timeout; the timer is cleared on BOTH
192
+ // settle arms (grok r5 #6: a leftover rejecting timer is an unhandled
193
+ // rejection on the happy path).
194
+ let timer;
195
+ const timedOut = new Promise(resolve => {
196
+ timer = setTimeout(() => resolve('timeout'), DRAIN_OBSERVE_TIMEOUT_MS);
197
+ });
198
+ const settled = await Promise.race([
199
+ drain.then(() => 'resolved', error => ({ kind: 'rejected', error })),
200
+ timedOut,
201
+ ]).finally(() => { clearTimeout(timer); });
202
+ if (settled === 'timeout') {
203
+ // KEEP the releasing mark and attach a fully-total late continuation.
204
+ void drain.then(() => {
205
+ // Late resolve: absent ⇒ released (tag becomes visible); present ⇒
206
+ // clearReleasing (refused while released); unobservable ⇒ KEEP the
207
+ // releasing mark — a pure no-op, never a re-insert into releasing
208
+ // after markReleased (critic r6 #4 / grok r6 #6). Never throws.
209
+ try {
210
+ const read = guardedRegistryRead(agents, id);
211
+ if (read.kind === 'absent')
212
+ markReleased(id);
213
+ else if (read.kind === 'present')
214
+ clearReleasing(id);
215
+ // unobservable: keep the releasing mark (fail-open).
216
+ }
217
+ catch { /* total: swallow */ }
218
+ }, error => {
219
+ try {
220
+ const code = error?.code;
221
+ if (code === 'ACTIVATION_TEARDOWN_FAILED') {
222
+ // The seam's disposal order deletes the resident entry before
223
+ // throwing (F4) — the same evidence as the sync arm.
224
+ const read = guardedRegistryRead(agents, id);
225
+ if (read.kind !== 'present')
226
+ markReleased(id);
227
+ else
228
+ clearReleasing(id);
229
+ }
230
+ else {
231
+ clearReleasing(id);
232
+ }
233
+ }
234
+ catch { /* total: swallow */ }
235
+ });
236
+ return { kind: 'still-resident', id, drainPending: true };
237
+ }
238
+ if (typeof settled === 'object' && settled !== null && 'kind' in settled && settled.kind === 'rejected') {
239
+ const error = settled.error;
240
+ const message = errorText(error);
241
+ if (message.includes('not a direct child')) {
242
+ clearReleasing(id);
243
+ throw new ReleaseFailure('not-direct-child', failureMessage('not-direct-child', id, undefined));
244
+ }
245
+ if (message.includes('exact live parent')) {
246
+ clearReleasing(id);
247
+ throw new ReleaseFailure('stale-parent', failureMessage('stale-parent', id, undefined));
248
+ }
249
+ if (error?.code === 'ACTIVATION_TEARDOWN_FAILED') {
250
+ // F4's code-order pin: the resident entry is deleted BEFORE the throw,
251
+ // so absent-or-unobservable after this rejection is degraded success.
252
+ const read = guardedRegistryRead(agents, id);
253
+ if (read.kind !== 'present') {
254
+ markReleased(id);
255
+ return {
256
+ kind: 'evicted-degraded', id, failure: message, catalogNote, ...withCause(),
257
+ };
258
+ }
259
+ clearReleasing(id);
260
+ throw error;
261
+ }
262
+ clearReleasing(id);
263
+ throw error;
264
+ }
265
+ const preReadWasHit = preRead.kind === 'present';
266
+ if (!preReadWasHit) {
267
+ // Pre-read never observed residency — possible only on the catalog-hit
268
+ // row. Zero residency evidence means the released label is never
269
+ // claimable (orchestrator ruling on the unnamed cell, matching the r2/r3
270
+ // adultery guard class): post absent OR unobservable ⇒ issued (no mark,
271
+ // no slot claim); only a still-present read is evidence something was
272
+ // there, and then the bounded poll applies.
273
+ let post = guardedRegistryRead(agents, id);
274
+ for (let attempt = 1; attempt <= 10 && post.kind === 'present'; attempt++) {
275
+ await sleep(200);
276
+ post = guardedRegistryRead(agents, id);
277
+ }
278
+ clearReleasing(id);
279
+ return post.kind === 'present'
280
+ ? { kind: 'still-resident', id, drainPending: false }
281
+ : { kind: 'issued-unobservable', id, catalogNote: 'catalog' };
282
+ }
283
+ let read = guardedRegistryRead(agents, id);
284
+ if (read.kind === 'absent') {
285
+ markReleased(id);
286
+ return { kind: 'released', id, preStatus: preStatus ?? 'unknown', catalogNote, ...withCause() };
287
+ }
288
+ if (read.kind === 'unobservable') {
289
+ // Observability died between pre- and post-read (grok r6 #3): the drain's
290
+ // resolution plus the pre-read hit is the eviction evidence; the tag's
291
+ // render degrades per §5's contradictions entry.
292
+ markReleased(id);
293
+ return { kind: 'released', id, preStatus: preStatus ?? 'unknown', catalogNote, ...withCause() };
294
+ }
295
+ for (let attempt = 1; attempt <= 10; attempt++) {
296
+ await sleep(200);
297
+ read = guardedRegistryRead(agents, id);
298
+ if (read.kind !== 'present') {
299
+ // absent: the F4 causation rule (pre-hit + resolved + post-absent ⇒
300
+ // released). unobservable after a pre-read HIT: observability died
301
+ // mid-flight (grok r6 #3) — the drain resolution is still eviction
302
+ // evidence; the tag's render degrades per §5's contradictions entry.
303
+ markReleased(id);
304
+ return { kind: 'released', id, preStatus: preStatus ?? 'unknown', catalogNote, ...withCause() };
305
+ }
306
+ }
307
+ clearReleasing(id);
308
+ return { kind: 'still-resident', id, drainPending: false };
309
+ }
310
+ // ---------------------------------------------------------------------------
311
+ // §5 copy renderer — ONE renderer keyed by (kind, preStatus, catalogNote).
312
+ // Every string here is a full-equality-pinned contract (plan §5).
313
+ // ---------------------------------------------------------------------------
314
+ /** Provenance prepends for the eviction-claiming kinds. */
315
+ function provenancePrepend(outcome, id) {
316
+ if (outcome.catalogNote === 'registry-only') {
317
+ return `(Note: ${id} was absent from the readable child catalog — released via the live registry only.) `;
318
+ }
319
+ if (outcome.catalogNote === 'catalog-unreadable') {
320
+ return `(Note: the child catalog was unreadable (${outcome.cause}) — released via the live registry only.) `;
321
+ }
322
+ return '';
323
+ }
324
+ /**
325
+ * Render a release outcome as the final user-facing text. Every §5 variant
326
+ * is a verbatim contract; the descendant clause rides on every
327
+ * eviction-claiming string.
328
+ */
329
+ export function renderReleaseOutcome(outcome) {
330
+ const { id } = outcome;
331
+ switch (outcome.kind) {
332
+ case 'released': {
333
+ const prepend = provenancePrepend(outcome, id);
334
+ const body = outcome.preStatus === 'running'
335
+ ? `Released agent ${id}: its in-flight turn was aborted and its resident activation evicted — the capacity slot it held is free. Its resident descendants (if any) were evicted with it. The persisted session survives on disk. Within this session it cannot be continued (send_message resolves but runs no turn — upstream cold-resume-after-drain gap); /agents marks it [released] for the rest of this process.`
336
+ : outcome.preStatus === 'idle'
337
+ ? `Released agent ${id}: its resident (idle) activation was evicted; it held no capacity slot (only running children count toward the 25-child guard). Its resident descendants (if any) were evicted with it. The persisted session survives on disk; within this session it cannot be continued (upstream cold-resume-after-drain gap); /agents marks it [released] for the rest of this process.`
338
+ : `Released agent ${id}: its resident activation was evicted; any capacity slot it held is free (its running state could not be observed). Its resident descendants (if any) were evicted with it. The persisted session survives on disk; within this session it cannot be continued (upstream cold-resume-after-drain gap); /agents marks it [released] for the rest of this process.`;
339
+ return prepend + body;
340
+ }
341
+ case 'issued-unobservable':
342
+ return `Release of agent ${id} was issued against the authoritative drain seam; this composition cannot observe the registry, so residency after the drain could not be confirmed and the child is NOT marked released. Eviction, when it applies, also covers resident descendants. If it was resident, the drain evicts it by the seam's own contract; its continuation state here is unknown.`;
343
+ case 'evicted-degraded': {
344
+ const prepend = provenancePrepend(outcome, id);
345
+ return prepend + `Release of agent ${id} reported a teardown failure (${outcome.failure}), but the activation entry is removed before that failure surfaces per the seam's disposal order — any capacity slot is free. Its resident descendants (if any) were evicted with it. The persisted session survives on disk; within this session it cannot be continued; /agents marks it [released] for the rest of this process.`;
346
+ }
347
+ case 'not-resident':
348
+ return outcome.releasedEarlier
349
+ ? `Agent ${id} was released earlier in this process and has no resident activation; nothing was evicted.`
350
+ : `Agent ${id} has no resident activation (settled or released); nothing was evicted and no capacity slot is held by it.`;
351
+ case 'still-resident':
352
+ return outcome.drainPending
353
+ ? `Release of agent ${id} is in flight: its turn did not reach idle within 10s (a cancel-resistant turn). The release still completes by itself if the turn ever becomes idle — /agents then marks it [released] — but nothing locally force-evicts a cancel-resistant turn; a process restart is the only hard boundary.`
354
+ : `Release of agent ${id} was issued, but the registry still reports it resident after the drain; check /agents detail ${id} and retry if it persists.`;
355
+ }
356
+ }
357
+ //# sourceMappingURL=release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"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"}
package/lib/snapshot.d.ts CHANGED
@@ -27,6 +27,12 @@ export interface AgentRow {
27
27
  readonly hasChildren: boolean;
28
28
  /** Pin state; `undefined` when the child has no resume pin. */
29
29
  readonly pin?: AgentPinView;
30
+ /**
31
+ * Release-valve tag: the id sits in this process's released/releasing
32
+ * marker sets AND the row is `ready` (registry-absent at snapshot time) —
33
+ * per the D1 tagging rule, never from the marker alone.
34
+ */
35
+ readonly released?: boolean;
30
36
  /** The parent session id the listing was rooted at. */
31
37
  readonly parentId: string;
32
38
  }
@@ -94,6 +100,13 @@ export interface SnapshotServices {
94
100
  id: string;
95
101
  hasChildren?: boolean;
96
102
  }[]>;
103
+ /**
104
+ * Release-valve markers (process-local, F14): optional so compositions
105
+ * without the release module still snapshot; when present they gate the
106
+ * `[released]` tag and the stop-copy overrides.
107
+ */
108
+ isReleased?(id: string): boolean;
109
+ isReleasing?(id: string): boolean;
97
110
  }
98
111
  /**
99
112
  * Extract the stable bracketed gate deny code from a persisted deny reason
@@ -130,6 +143,9 @@ export type ParsedAgentsInput = {
130
143
  } | {
131
144
  readonly kind: 'stop';
132
145
  readonly id: string;
146
+ } | {
147
+ readonly kind: 'release';
148
+ readonly id: string;
133
149
  } | {
134
150
  readonly kind: 'error';
135
151
  readonly text: string;
@@ -138,6 +154,8 @@ export type ParsedAgentsInput = {
138
154
  export declare function stopRunningCopy(id: string): string;
139
155
  /** Copy for a stop request on an idle/ready child (shared no-op explanation). */
140
156
  export declare function stopNotRunningCopy(id: string, residency: string): string;
157
+ /** Copy for a stop request on a released (or releasing) child. */
158
+ export declare function stopReleasedCopy(id: string): string;
141
159
  /** Copy for a stop/detail on an id the snapshot does not know. */
142
160
  export declare function unknownAgentCopy(id: string): string;
143
161
  /** Copy for the reserved `attach` namespace (P1). */
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
package/lib/snapshot.js CHANGED
@@ -62,11 +62,18 @@ export async function buildAgentsSnapshot(services, parentSessionId) {
62
62
  if (entry.mode === 'one-shot')
63
63
  continue;
64
64
  const live = services.getAgent(String(entry.id));
65
+ const residency = residencyOf(live);
66
+ // Release-valve tagging rule (D1): the marker is process-local and the
67
+ // row must read registry-absent (`ready`) at snapshot time — never the
68
+ // marker alone (a live activation is not a released row).
69
+ const released = (services.isReleased?.(String(entry.id)) === true ||
70
+ services.isReleasing?.(String(entry.id)) === true) && residency === 'ready';
65
71
  list.push({
66
72
  id: String(entry.id),
67
73
  ...(entry.label !== undefined && entry.label.length > 0 ? { label: entry.label } : {}),
68
- residency: residencyOf(live),
74
+ residency,
69
75
  hasChildren: childHasChildren.has(String(entry.id)),
76
+ ...(released ? { released: true } : {}),
70
77
  ...(() => {
71
78
  const pin = pinViewOf(services.readPin(String(entry.id)));
72
79
  return pin === undefined ? {} : { pin };
@@ -117,7 +124,8 @@ export function renderAgentsList(rows) {
117
124
  ? ' [pin unreadable]'
118
125
  : ' [pinned]';
119
126
  const childrenTag = row.hasChildren ? ' [has children]' : '';
120
- lines.push(` ${MARKERS[row.residency]} ${name} · ${shortIdOf(row.id)}${tag}${childrenTag}`);
127
+ const releasedTag = row.released === true ? ' [released]' : '';
128
+ lines.push(` ${MARKERS[row.residency]} ${name} · ${shortIdOf(row.id)}${tag}${childrenTag}${releasedTag}`);
121
129
  }
122
130
  }
123
131
  return lines.join('\n');
@@ -134,6 +142,12 @@ export function renderAgentDetail(row, pin, pinPath, parentSessionId) {
134
142
  lines.push(` residency: ${row.residency}`);
135
143
  lines.push(` children: ${row.hasChildren ? 'present' : 'none'}`);
136
144
  lines.push(` parent session: ${parentSessionId}`);
145
+ // Release-valve detail line: BEFORE the pin early-return, so an unpinned
146
+ // released row still discloses its process-local state.
147
+ if (row.released === true) {
148
+ lines.push(' released: this process — resident activation evicted or release in flight; '
149
+ + 'same-session continuation unavailable (upstream gap)');
150
+ }
137
151
  if (pin === undefined) {
138
152
  lines.push(' pin: none (not pinnable or not background-spawned)');
139
153
  return lines.join('\n');
@@ -172,6 +186,10 @@ export function stopRunningCopy(id) {
172
186
  export function stopNotRunningCopy(id, residency) {
173
187
  return `Agent ${id} is not running (residency: ${residency}); nothing to stop — it is resumable.`;
174
188
  }
189
+ /** Copy for a stop request on a released (or releasing) child. */
190
+ export function stopReleasedCopy(id) {
191
+ return `Agent ${id} was released (or its release is in flight) in this process; it cannot be continued here — nothing to stop.`;
192
+ }
175
193
  /** Copy for a stop/detail on an id the snapshot does not know. */
176
194
  export function unknownAgentCopy(id) {
177
195
  return `No agent ${id} among this session's background agents; /agents lists current ids.`;
@@ -196,6 +214,12 @@ export function parseAgentsInput(raw) {
196
214
  }
197
215
  return { kind: 'stop', id: parts[1] };
198
216
  }
217
+ if (parts[0] === 'release') {
218
+ if (parts.length < 2 || parts[1].length === 0) {
219
+ return { kind: 'error', text: 'Usage: /agents release <id>' };
220
+ }
221
+ return { kind: 'release', id: parts[1] };
222
+ }
199
223
  if (parts[0] === 'attach') {
200
224
  return { kind: 'error', text: attachReservedCopy() };
201
225
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dsh-cc/command-agents",
3
3
  "description": "Human-facing slash command to list, inspect, and stop continuable background agents",
4
- "version": "0.8.2-rc.1",
4
+ "version": "0.8.3-rc.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/dsh-cc/dsh-cc.git",
@@ -17,6 +17,10 @@
17
17
  "types": "./lib/snapshot.d.ts",
18
18
  "default": "./lib/snapshot.js"
19
19
  },
20
+ "./release": {
21
+ "types": "./lib/release.d.ts",
22
+ "default": "./lib/release.js"
23
+ },
20
24
  "./invariant": {
21
25
  "types": "./lib/invariant.d.ts",
22
26
  "default": "./lib/invariant.js"
@@ -29,11 +33,11 @@
29
33
  ],
30
34
  "license": "Apache-2.0",
31
35
  "peerDependencies": {
32
- "@deepseek-ai/dsh-commands": ">=0.1.7-rc.2",
33
- "@deepseek-ai/dsh-invariants": ">=0.1.7-rc.2",
34
- "@deepseek-ai/dsh-session": ">=0.1.7-rc.2",
35
- "@deepseek-ai/cordis": ">=0.1.7-rc.2",
36
- "@dsh-cc/subagent-resume-pins": "^0.8.2-rc.1"
36
+ "@deepseek-ai/dsh-commands": ">=0.2.0-rc.2",
37
+ "@deepseek-ai/dsh-invariants": ">=0.2.0-rc.2",
38
+ "@deepseek-ai/dsh-session": ">=0.2.0-rc.2",
39
+ "@deepseek-ai/cordis": ">=0.2.0-rc.2",
40
+ "@dsh-cc/subagent-resume-pins": "^0.8.3-rc.1"
37
41
  },
38
42
  "devDependencies": {
39
43
  "@deepseek-ai/cordis-plugin-loader": "link:../../../../deepseek-harness/vendor/loader",
@@ -42,12 +46,12 @@
42
46
  "@deepseek-ai/dsh-invariants": "link:../../../../deepseek-harness/packages/runtime-diagnostics/invariants",
43
47
  "@deepseek-ai/dsh-session": "link:../../../../deepseek-harness/packages/core/session",
44
48
  "@deepseek-ai/cordis": "link:../../../../deepseek-harness/vendor/cordis",
45
- "@dsh-cc/subagent-resume-pins": "^0.8.2-rc.1"
49
+ "@dsh-cc/subagent-resume-pins": "^0.8.3-rc.1"
46
50
  },
47
51
  "publishConfig": {
48
52
  "access": "public"
49
53
  },
50
54
  "dependencies": {
51
- "@dsh-cc/command-usage": "^0.8.2-rc.1"
55
+ "@dsh-cc/command-usage": "^0.8.3-rc.1"
52
56
  }
53
57
  }