@scotthuang/agent-knock-knock 0.13.2 → 0.13.4

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.
Files changed (278) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +27 -6
  3. package/dist/src/callback-outbox-policy.js +27 -6
  4. package/dist/src/callback-outbox-policy.js.map +1 -1
  5. package/dist/src/callback-outbox-service.d.ts +4 -30
  6. package/dist/src/callback-outbox-service.js +21 -154
  7. package/dist/src/callback-outbox-service.js.map +1 -1
  8. package/dist/src/callback-outbox-settlement.js +13 -8
  9. package/dist/src/callback-outbox-settlement.js.map +1 -1
  10. package/dist/src/callback-route-service.d.ts +46 -0
  11. package/dist/src/callback-route-service.js +155 -0
  12. package/dist/src/callback-route-service.js.map +1 -0
  13. package/dist/src/claude-terminal-agent-adapter.js +4 -0
  14. package/dist/src/claude-terminal-agent-adapter.js.map +1 -1
  15. package/dist/src/cli-core.js +9 -1
  16. package/dist/src/cli-core.js.map +1 -1
  17. package/dist/src/codex-process-incarnation.d.ts +8 -0
  18. package/dist/src/codex-process-incarnation.js +36 -0
  19. package/dist/src/codex-process-incarnation.js.map +1 -0
  20. package/dist/src/codex-terminal-agent-adapter.js +4 -0
  21. package/dist/src/codex-terminal-agent-adapter.js.map +1 -1
  22. package/dist/src/deferred-foreground-conflict-policy.d.ts +22 -0
  23. package/dist/src/deferred-foreground-conflict-policy.js +52 -0
  24. package/dist/src/deferred-foreground-conflict-policy.js.map +1 -0
  25. package/dist/src/durable-notification-kernel.d.ts +94 -0
  26. package/dist/src/durable-notification-kernel.js +68 -0
  27. package/dist/src/durable-notification-kernel.js.map +1 -0
  28. package/dist/src/herdr-socket-transport.d.ts +43 -0
  29. package/dist/src/herdr-socket-transport.js +170 -0
  30. package/dist/src/herdr-socket-transport.js.map +1 -0
  31. package/dist/src/herdr-terminal-control-provider.d.ts +2 -45
  32. package/dist/src/herdr-terminal-control-provider.js +8 -173
  33. package/dist/src/herdr-terminal-control-provider.js.map +1 -1
  34. package/dist/src/host-adapter-capabilities.d.ts +35 -0
  35. package/dist/src/host-adapter-capabilities.js +146 -0
  36. package/dist/src/host-adapter-capabilities.js.map +1 -0
  37. package/dist/src/host-adapter.d.ts +9 -3
  38. package/dist/src/host-adapter.js +33 -9
  39. package/dist/src/host-adapter.js.map +1 -1
  40. package/dist/src/host-bridge-tools.d.ts +3 -4
  41. package/dist/src/host-bridge-tools.js +49 -92
  42. package/dist/src/host-bridge-tools.js.map +1 -1
  43. package/dist/src/host-bridge.js +5 -5
  44. package/dist/src/host-bridge.js.map +1 -1
  45. package/dist/src/host-monitor-reconciliation.d.ts +6 -0
  46. package/dist/src/host-monitor-reconciliation.js +96 -0
  47. package/dist/src/host-monitor-reconciliation.js.map +1 -0
  48. package/dist/src/managed-session.js +2 -18
  49. package/dist/src/managed-session.js.map +1 -1
  50. package/dist/src/native-thread-lifecycle-cli-adapter.d.ts +13 -0
  51. package/dist/src/native-thread-lifecycle-cli-adapter.js +635 -3
  52. package/dist/src/native-thread-lifecycle-cli-adapter.js.map +1 -1
  53. package/dist/src/openclaw-list-projection.d.ts +2 -0
  54. package/dist/src/openclaw-list-projection.js +3 -0
  55. package/dist/src/openclaw-list-projection.js.map +1 -0
  56. package/dist/src/openclaw-model-facing-field-policy.d.ts +2 -0
  57. package/dist/src/openclaw-model-facing-field-policy.js +3 -0
  58. package/dist/src/openclaw-model-facing-field-policy.js.map +1 -0
  59. package/dist/src/openclaw-plugin-command-adapter.d.ts +6 -29
  60. package/dist/src/openclaw-plugin-command-adapter.js +7 -2370
  61. package/dist/src/openclaw-plugin-command-adapter.js.map +1 -1
  62. package/dist/src/openclaw-plugin-helpers.d.ts +2 -121
  63. package/dist/src/openclaw-plugin-helpers.js +2 -1164
  64. package/dist/src/openclaw-plugin-helpers.js.map +1 -1
  65. package/dist/src/openclaw-plugin-schemas.d.ts +2 -510
  66. package/dist/src/openclaw-plugin-schemas.js +2 -519
  67. package/dist/src/openclaw-plugin-schemas.js.map +1 -1
  68. package/dist/src/openclaw-plugin-supervisor.d.ts +4 -5
  69. package/dist/src/openclaw-plugin-supervisor.js +5 -94
  70. package/dist/src/openclaw-plugin-supervisor.js.map +1 -1
  71. package/dist/src/openclaw-plugin-value-helpers.d.ts +2 -0
  72. package/dist/src/openclaw-plugin-value-helpers.js +3 -0
  73. package/dist/src/openclaw-plugin-value-helpers.js.map +1 -0
  74. package/dist/src/openclaw-private-authority-offers.d.ts +4 -39
  75. package/dist/src/openclaw-private-authority-offers.js +3 -258
  76. package/dist/src/openclaw-private-authority-offers.js.map +1 -1
  77. package/dist/src/semantic-private-authority-offers.d.ts +41 -0
  78. package/dist/src/semantic-private-authority-offers.js +261 -0
  79. package/dist/src/semantic-private-authority-offers.js.map +1 -0
  80. package/dist/src/semantic-tool-arguments.d.ts +9 -0
  81. package/dist/src/semantic-tool-arguments.js +64 -0
  82. package/dist/src/semantic-tool-arguments.js.map +1 -0
  83. package/dist/src/semantic-tool-catalog.d.ts +48 -0
  84. package/dist/src/semantic-tool-catalog.js +105 -0
  85. package/dist/src/semantic-tool-catalog.js.map +1 -0
  86. package/dist/src/semantic-tool-command-helpers.d.ts +145 -0
  87. package/dist/src/semantic-tool-command-helpers.js +1272 -0
  88. package/dist/src/semantic-tool-command-helpers.js.map +1 -0
  89. package/dist/src/semantic-tool-list-projection.d.ts +10 -0
  90. package/dist/src/semantic-tool-list-projection.js +497 -0
  91. package/dist/src/semantic-tool-list-projection.js.map +1 -0
  92. package/dist/src/semantic-tool-model-facing-field-policy.d.ts +3 -0
  93. package/dist/src/semantic-tool-model-facing-field-policy.js +66 -0
  94. package/dist/src/semantic-tool-model-facing-field-policy.js.map +1 -0
  95. package/dist/src/semantic-tool-presentation.d.ts +37 -0
  96. package/dist/src/semantic-tool-presentation.js +680 -0
  97. package/dist/src/semantic-tool-presentation.js.map +1 -0
  98. package/dist/src/semantic-tool-private-authority.d.ts +39 -0
  99. package/dist/src/semantic-tool-private-authority.js +602 -0
  100. package/dist/src/semantic-tool-private-authority.js.map +1 -0
  101. package/dist/src/semantic-tool-relay.d.ts +16 -0
  102. package/dist/src/semantic-tool-relay.js +175 -0
  103. package/dist/src/semantic-tool-relay.js.map +1 -0
  104. package/dist/src/semantic-tool-runtime.d.ts +10 -0
  105. package/dist/src/semantic-tool-runtime.js +1157 -0
  106. package/dist/src/semantic-tool-runtime.js.map +1 -0
  107. package/dist/src/semantic-tool-schemas.d.ts +563 -0
  108. package/dist/src/semantic-tool-schemas.js +573 -0
  109. package/dist/src/semantic-tool-schemas.js.map +1 -0
  110. package/dist/src/semantic-tool-value-helpers.d.ts +5 -0
  111. package/dist/src/semantic-tool-value-helpers.js +27 -0
  112. package/dist/src/semantic-tool-value-helpers.js.map +1 -0
  113. package/dist/src/store-event-presentation.d.ts +17 -0
  114. package/dist/src/store-event-presentation.js +33 -0
  115. package/dist/src/store-event-presentation.js.map +1 -0
  116. package/dist/src/store.d.ts +3 -16
  117. package/dist/src/store.js +2 -30
  118. package/dist/src/store.js.map +1 -1
  119. package/dist/src/terminal-action-projection.d.ts +3 -17
  120. package/dist/src/terminal-action-projection.js +13 -41
  121. package/dist/src/terminal-action-projection.js.map +1 -1
  122. package/dist/src/terminal-agent-adapter.d.ts +7 -0
  123. package/dist/src/terminal-agent-adapter.js +8 -0
  124. package/dist/src/terminal-agent-adapter.js.map +1 -1
  125. package/dist/src/terminal-agent-bridge.d.ts +35 -332
  126. package/dist/src/terminal-agent-bridge.js +293 -2798
  127. package/dist/src/terminal-agent-bridge.js.map +1 -1
  128. package/dist/src/terminal-approval-cli-adapter.d.ts +17 -0
  129. package/dist/src/terminal-approval-cli-adapter.js +921 -0
  130. package/dist/src/terminal-approval-cli-adapter.js.map +1 -0
  131. package/dist/src/terminal-command-cli-adapter.d.ts +2 -429
  132. package/dist/src/terminal-command-cli-adapter.js +344 -6061
  133. package/dist/src/terminal-command-cli-adapter.js.map +1 -1
  134. package/dist/src/terminal-command-cli-ports.d.ts +443 -0
  135. package/dist/src/terminal-command-cli-ports.js +2 -0
  136. package/dist/src/terminal-command-cli-ports.js.map +1 -0
  137. package/dist/src/terminal-command-dispatch-preparation.d.ts +81 -0
  138. package/dist/src/terminal-command-dispatch-preparation.js +209 -0
  139. package/dist/src/terminal-command-dispatch-preparation.js.map +1 -0
  140. package/dist/src/terminal-command-dispatch-transport.d.ts +35 -0
  141. package/dist/src/terminal-command-dispatch-transport.js +859 -0
  142. package/dist/src/terminal-command-dispatch-transport.js.map +1 -0
  143. package/dist/src/terminal-command-foreground-proof.d.ts +32 -0
  144. package/dist/src/terminal-command-foreground-proof.js +72 -0
  145. package/dist/src/terminal-command-foreground-proof.js.map +1 -0
  146. package/dist/src/terminal-command-send-preflight.d.ts +41 -0
  147. package/dist/src/terminal-command-send-preflight.js +86 -0
  148. package/dist/src/terminal-command-send-preflight.js.map +1 -0
  149. package/dist/src/terminal-composer-classifier.d.ts +55 -0
  150. package/dist/src/terminal-composer-classifier.js +638 -0
  151. package/dist/src/terminal-composer-classifier.js.map +1 -0
  152. package/dist/src/terminal-control-ref.d.ts +23 -0
  153. package/dist/src/terminal-control-ref.js +32 -0
  154. package/dist/src/terminal-control-ref.js.map +1 -1
  155. package/dist/src/terminal-dispatch-recovery-authority.d.ts +56 -0
  156. package/dist/src/terminal-dispatch-recovery-authority.js +251 -0
  157. package/dist/src/terminal-dispatch-recovery-authority.js.map +1 -0
  158. package/dist/src/terminal-dispatch-recovery-cli-adapter.d.ts +1 -9
  159. package/dist/src/terminal-dispatch-recovery-cli-adapter.js +5 -240
  160. package/dist/src/terminal-dispatch-recovery-cli-adapter.js.map +1 -1
  161. package/dist/src/terminal-handoff-cli-adapter.d.ts +1 -11
  162. package/dist/src/terminal-handoff-cli-adapter.js +2 -39
  163. package/dist/src/terminal-handoff-cli-adapter.js.map +1 -1
  164. package/dist/src/terminal-human-explicit-send-cli-adapter.d.ts +25 -0
  165. package/dist/src/terminal-human-explicit-send-cli-adapter.js +903 -0
  166. package/dist/src/terminal-human-explicit-send-cli-adapter.js.map +1 -0
  167. package/dist/src/terminal-identity-authority-cli-adapter.d.ts +1 -6
  168. package/dist/src/terminal-identity-authority-cli-adapter.js +3 -33
  169. package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -1
  170. package/dist/src/terminal-interaction-cli-adapter.js +209 -210
  171. package/dist/src/terminal-interaction-cli-adapter.js.map +1 -1
  172. package/dist/src/terminal-interaction-core.d.ts +0 -2
  173. package/dist/src/terminal-interaction-core.js +4 -3
  174. package/dist/src/terminal-interaction-core.js.map +1 -1
  175. package/dist/src/terminal-interaction-protocol.d.ts +21 -0
  176. package/dist/src/terminal-interaction-protocol.js +74 -0
  177. package/dist/src/terminal-interaction-protocol.js.map +1 -1
  178. package/dist/src/terminal-interaction-response-bridge.d.ts +126 -0
  179. package/dist/src/terminal-interaction-response-bridge.js +579 -0
  180. package/dist/src/terminal-interaction-response-bridge.js.map +1 -0
  181. package/dist/src/terminal-interaction-response-transaction.d.ts +44 -0
  182. package/dist/src/terminal-interaction-response-transaction.js +56 -0
  183. package/dist/src/terminal-interaction-response-transaction.js.map +1 -0
  184. package/dist/src/terminal-list-action-policy.d.ts +43 -0
  185. package/dist/src/terminal-list-action-policy.js +164 -0
  186. package/dist/src/terminal-list-action-policy.js.map +1 -0
  187. package/dist/src/terminal-list-cli-adapter.d.ts +6 -36
  188. package/dist/src/terminal-list-cli-adapter.js +314 -1711
  189. package/dist/src/terminal-list-cli-adapter.js.map +1 -1
  190. package/dist/src/terminal-list-facts.d.ts +129 -0
  191. package/dist/src/terminal-list-facts.js +179 -0
  192. package/dist/src/terminal-list-facts.js.map +1 -0
  193. package/dist/src/terminal-list-inventory.d.ts +59 -0
  194. package/dist/src/terminal-list-inventory.js +194 -0
  195. package/dist/src/terminal-list-inventory.js.map +1 -0
  196. package/dist/src/terminal-list-ownership-service.d.ts +118 -0
  197. package/dist/src/terminal-list-ownership-service.js +1003 -0
  198. package/dist/src/terminal-list-ownership-service.js.map +1 -0
  199. package/dist/src/terminal-list-projection-service.d.ts +49 -0
  200. package/dist/src/terminal-list-projection-service.js +407 -0
  201. package/dist/src/terminal-list-projection-service.js.map +1 -0
  202. package/dist/src/terminal-list-renderer.d.ts +12 -11
  203. package/dist/src/terminal-list-renderer.js +237 -104
  204. package/dist/src/terminal-list-renderer.js.map +1 -1
  205. package/dist/src/terminal-managed-send-cli-adapter.d.ts +33 -0
  206. package/dist/src/terminal-managed-send-cli-adapter.js +994 -0
  207. package/dist/src/terminal-managed-send-cli-adapter.js.map +1 -0
  208. package/dist/src/terminal-managed-turn-list-action-policy.d.ts +47 -0
  209. package/dist/src/terminal-managed-turn-list-action-policy.js +64 -0
  210. package/dist/src/terminal-managed-turn-list-action-policy.js.map +1 -0
  211. package/dist/src/terminal-model-control-action-policy.d.ts +60 -0
  212. package/dist/src/terminal-model-control-action-policy.js +96 -0
  213. package/dist/src/terminal-model-control-action-policy.js.map +1 -0
  214. package/dist/src/terminal-model-control-availability.d.ts +68 -0
  215. package/dist/src/terminal-model-control-availability.js +157 -0
  216. package/dist/src/terminal-model-control-availability.js.map +1 -0
  217. package/dist/src/terminal-model-control-bridge.d.ts +48 -0
  218. package/dist/src/terminal-model-control-bridge.js +259 -0
  219. package/dist/src/terminal-model-control-bridge.js.map +1 -0
  220. package/dist/src/terminal-model-control-profile.d.ts +55 -0
  221. package/dist/src/terminal-model-control-profile.js +137 -0
  222. package/dist/src/terminal-model-control-profile.js.map +1 -0
  223. package/dist/src/terminal-model-control-subject.d.ts +34 -0
  224. package/dist/src/terminal-model-control-subject.js +58 -0
  225. package/dist/src/terminal-model-control-subject.js.map +1 -0
  226. package/dist/src/terminal-model-control-transaction.d.ts +19 -0
  227. package/dist/src/terminal-model-control-transaction.js +39 -0
  228. package/dist/src/terminal-model-control-transaction.js.map +1 -0
  229. package/dist/src/terminal-model-control.d.ts +331 -0
  230. package/dist/src/terminal-model-control.js +1686 -0
  231. package/dist/src/terminal-model-control.js.map +1 -0
  232. package/dist/src/terminal-monitor-application-service.js +50 -17
  233. package/dist/src/terminal-monitor-application-service.js.map +1 -1
  234. package/dist/src/terminal-native-inspection-bridge.d.ts +211 -0
  235. package/dist/src/terminal-native-inspection-bridge.js +1127 -0
  236. package/dist/src/terminal-native-inspection-bridge.js.map +1 -0
  237. package/dist/src/terminal-runtime-cli-adapter.d.ts +2 -0
  238. package/dist/src/terminal-runtime-cli-adapter.js +59 -17
  239. package/dist/src/terminal-runtime-cli-adapter.js.map +1 -1
  240. package/dist/src/terminal-submission-retry-application.d.ts +24 -0
  241. package/dist/src/terminal-submission-retry-application.js +402 -0
  242. package/dist/src/terminal-submission-retry-application.js.map +1 -0
  243. package/dist/src/terminal-submission-retry-ports.d.ts +30 -0
  244. package/dist/src/terminal-submission-retry-ports.js +2 -0
  245. package/dist/src/terminal-submission-retry-ports.js.map +1 -0
  246. package/dist/src/terminal-submission-retry-reconciliation.d.ts +236 -0
  247. package/dist/src/terminal-submission-retry-reconciliation.js +1130 -0
  248. package/dist/src/terminal-submission-retry-reconciliation.js.map +1 -0
  249. package/dist/src/terminal-submission-retry-transport.d.ts +58 -0
  250. package/dist/src/terminal-submission-retry-transport.js +675 -0
  251. package/dist/src/terminal-submission-retry-transport.js.map +1 -0
  252. package/dist/src/terminal-text-submission-bridge.d.ts +200 -0
  253. package/dist/src/terminal-text-submission-bridge.js +632 -0
  254. package/dist/src/terminal-text-submission-bridge.js.map +1 -0
  255. package/dist/src/terminal-user-explicit-send-policy.d.ts +29 -0
  256. package/dist/src/terminal-user-explicit-send-policy.js +46 -0
  257. package/dist/src/terminal-user-explicit-send-policy.js.map +1 -0
  258. package/dist/src/terminal-watch-cli-adapter.js +91 -143
  259. package/dist/src/terminal-watch-cli-adapter.js.map +1 -1
  260. package/dist/src/terminal-watch-codec.d.ts +9 -0
  261. package/dist/src/terminal-watch-codec.js +1051 -0
  262. package/dist/src/terminal-watch-codec.js.map +1 -0
  263. package/dist/src/terminal-watch-interaction-response-store.d.ts +19 -0
  264. package/dist/src/terminal-watch-interaction-response-store.js +87 -0
  265. package/dist/src/terminal-watch-interaction-response-store.js.map +1 -0
  266. package/dist/src/terminal-watch-record.d.ts +319 -0
  267. package/dist/src/terminal-watch-record.js +742 -0
  268. package/dist/src/terminal-watch-record.js.map +1 -0
  269. package/dist/src/terminal-watch-service.js +48 -27
  270. package/dist/src/terminal-watch-service.js.map +1 -1
  271. package/dist/src/terminal-watch-store.d.ts +3 -279
  272. package/dist/src/terminal-watch-store.js +5 -1779
  273. package/dist/src/terminal-watch-store.js.map +1 -1
  274. package/docs/quickstart-herdr.md +1 -1
  275. package/docs/quickstart-tmux.md +27 -2
  276. package/openclaw.plugin.json +13 -1
  277. package/package.json +7 -2
  278. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +54 -11
@@ -0,0 +1,179 @@
1
+ import { isExactNativeThreadId } from "./managed-session.js";
2
+ import { terminalModelControlProfileFor } from "./terminal-model-control.js";
3
+ /**
4
+ * Collect the immutable observation facts for one already-discovered terminal.
5
+ *
6
+ * This boundary does not create action authority, generate tokens, render
7
+ * public JSON, write Store state, or send terminal input. Each observation port
8
+ * is invoked at most once. The status result is the single source for screen,
9
+ * activity, approval, and interaction facts; later styled-Composer and native
10
+ * model-control observations remain explicitly separate fail-closed captures.
11
+ */
12
+ export async function collectTerminalListTerminalFacts(input) {
13
+ const { session, terminalControl, terminalId, childPids, adapter, ports } = input;
14
+ const observedState = await ports.observeStatus();
15
+ const native = await ports.observeNativeIdentity(terminalId);
16
+ const effectiveState = ports.projectEffectiveState({
17
+ terminalState: observedState,
18
+ native
19
+ });
20
+ const rawSnapshot = effectiveState._terminal_status_snapshot;
21
+ const snapshot = rawSnapshot
22
+ ? ports.projectStatusSnapshot(rawSnapshot, effectiveState)
23
+ : undefined;
24
+ const statusCardNativeThreadId = observeStatusCardNativeThreadId(session, adapter, effectiveState);
25
+ const runtime = observeTerminalListRuntimeFacts(session, adapter, ports);
26
+ const latentClearResume = session.agent === "codex"
27
+ ? ports.observeLatentClearResume({
28
+ screen: effectiveState.screen_excerpt,
29
+ agentVersion: runtime.agentVersion
30
+ })
31
+ : undefined;
32
+ const terminalHasBlockingTurn = ports.observeTerminalHasBlockingTurn();
33
+ const composer = await ports.observeComposer(effectiveState);
34
+ const processIncarnation = ports.observePhysicalProcessIncarnation();
35
+ const zeroRolloutModelControlVerified = zeroRolloutModelControlFact({
36
+ session,
37
+ native,
38
+ processIncarnation
39
+ });
40
+ const terminalHasInteraction = snapshot?.interaction_state !== undefined;
41
+ const hasOrphanedDispatch = native.orphanedDispatch !== undefined;
42
+ const modelControlResidual = await ports.observeModelControlResidual({
43
+ agentVersion: runtime.agentVersion,
44
+ modelControlCapability: runtime.modelControlCapability,
45
+ modelControlProfile: runtime.modelControlProfile,
46
+ native,
47
+ zeroRolloutVerified: zeroRolloutModelControlVerified,
48
+ effectiveTerminalState: effectiveState,
49
+ terminalHasInteraction,
50
+ terminalHasBlockingTurn,
51
+ hasOrphanedDispatch
52
+ });
53
+ const modelControlSurfaceOpen = modelControlResidual?.state === "recoverable" &&
54
+ modelControlResidual.kind === "model_surface";
55
+ const projectedState = modelControlSurfaceOpen
56
+ ? terminalListStateWithOpenModelControlSurface(effectiveState)
57
+ : effectiveState;
58
+ return freezeTerminalListFacts({
59
+ terminalId,
60
+ childPids,
61
+ processIncarnation,
62
+ observedState,
63
+ effectiveState,
64
+ projectedState,
65
+ snapshot,
66
+ statusCardNativeThreadId,
67
+ terminalHasInteraction,
68
+ native,
69
+ runtime,
70
+ composer,
71
+ terminalHasBlockingTurn,
72
+ hasOrphanedDispatch,
73
+ latentClearResume,
74
+ zeroRolloutModelControlVerified,
75
+ modelControlResidual
76
+ });
77
+ }
78
+ function observeStatusCardNativeThreadId(session, adapter, state) {
79
+ const observation = session.agent === "codex" &&
80
+ typeof state.screen_excerpt === "string"
81
+ ? adapter.observeThreadLifecycle?.({
82
+ operation: { kind: "new_thread" },
83
+ phase: "before",
84
+ screen: state.screen_excerpt
85
+ })
86
+ : undefined;
87
+ return observation?.status === "observed" &&
88
+ state.activity_state === "idle" &&
89
+ state.approval_state.blocked !== true &&
90
+ isExactNativeThreadId(observation.nativeThreadId)
91
+ ? observation.nativeThreadId
92
+ : undefined;
93
+ }
94
+ function observeTerminalListRuntimeFacts(session, adapter, ports) {
95
+ const agentVersion = ports.observeAgentVersion();
96
+ const lifecycleCapability = adapter.probeThreadLifecycle?.(agentVersion) ?? {
97
+ status: "unsupported",
98
+ agentVersion,
99
+ newThread: false,
100
+ resumeExact: false,
101
+ reason: "native thread lifecycle is unavailable"
102
+ };
103
+ const nativeInspectionCapability = adapter.probeNativeInspection?.(agentVersion) ?? {
104
+ status: "unsupported",
105
+ agentVersion,
106
+ statusInspection: false,
107
+ reason: "native inspection is unavailable"
108
+ };
109
+ const modelControlCapability = adapter.probeModelControl?.(agentVersion) ?? {
110
+ status: "unsupported",
111
+ agentVersion,
112
+ modelSelection: false,
113
+ reasoningEffortSelection: false,
114
+ reason: "terminal model control is unavailable"
115
+ };
116
+ const compatibilityWarnings = Object.freeze([...new Set([
117
+ lifecycleCapability.compatibilityWarning,
118
+ nativeInspectionCapability.compatibilityWarning
119
+ ].filter((warning) => typeof warning === "string" && warning.trim().length > 0))]);
120
+ return Object.freeze({
121
+ agentVersion,
122
+ lifecycleCapability,
123
+ nativeInspectionCapability,
124
+ modelControlCapability,
125
+ modelControlProfile: terminalModelControlProfileFor(session.agent, agentVersion),
126
+ compatibilityWarnings
127
+ });
128
+ }
129
+ function zeroRolloutModelControlFact(input) {
130
+ const { session, native, processIncarnation } = input;
131
+ return session.agent === "codex" &&
132
+ native.nativeIdentityObservation.status === "verified_absent" &&
133
+ native.authorityNativeIdentityObservation.status === "verified_absent" &&
134
+ native.codexOpenRootRolloutInventory?.status === "verified_absent" &&
135
+ native.codexOpenRootRolloutInventory.pid === session.pid &&
136
+ native.codexOpenRootRolloutInventory.roots.length === 0 &&
137
+ native.codexOpenRootRolloutInventory.processBirth ===
138
+ processIncarnation?.processBirth;
139
+ }
140
+ function freezeTerminalListFacts(input) {
141
+ return Object.freeze({
142
+ physical: Object.freeze({
143
+ terminalId: input.terminalId,
144
+ childPids: Object.freeze([...input.childPids]),
145
+ processIncarnation: input.processIncarnation
146
+ }),
147
+ status: Object.freeze({
148
+ observed: input.observedState,
149
+ effective: input.effectiveState,
150
+ projected: input.projectedState,
151
+ snapshot: input.snapshot,
152
+ statusCardNativeThreadId: input.statusCardNativeThreadId,
153
+ hasInteraction: input.terminalHasInteraction
154
+ }),
155
+ native: Object.freeze({ ...input.native }),
156
+ runtime: input.runtime,
157
+ composer: Object.freeze({ ...input.composer }),
158
+ store: Object.freeze({
159
+ terminalHasBlockingTurn: input.terminalHasBlockingTurn,
160
+ hasOrphanedDispatch: input.hasOrphanedDispatch
161
+ }),
162
+ codex: Object.freeze({
163
+ latentClearResume: input.latentClearResume,
164
+ zeroRolloutModelControlVerified: input.zeroRolloutModelControlVerified
165
+ }),
166
+ modelControlResidual: input.modelControlResidual
167
+ });
168
+ }
169
+ function terminalListStateWithOpenModelControlSurface(state) {
170
+ const reason = "an exact native model-control surface is open";
171
+ return {
172
+ ...state,
173
+ activity_state: "unknown",
174
+ activity_reason: reason,
175
+ screen_state: "unknown",
176
+ screen_reason: reason
177
+ };
178
+ }
179
+ //# sourceMappingURL=terminal-list-facts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-list-facts.js","sourceRoot":"","sources":["../../src/terminal-list-facts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAe7D,OAAO,EACL,8BAA8B,EAI/B,MAAM,6BAA6B,CAAC;AAmIrC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,KAOtD;IACC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GACvE,KAAK,CAAC;IACR,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,KAAK,CAAC,qBAAqB,CAAC;QACjD,aAAa,EAAE,aAAa;QAC5B,MAAM;KACP,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,cAAc,CAAC,yBAAyB,CAAC;IAC7D,MAAM,QAAQ,GAAG,WAAW;QAC1B,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,WAAW,EAAE,cAAc,CAAC;QAC1D,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,wBAAwB,GAAG,+BAA+B,CAC9D,OAAO,EACP,OAAO,EACP,cAAc,CACf,CAAC;IACF,MAAM,OAAO,GAAG,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO;QACjD,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;YAC7B,MAAM,EAAE,cAAc,CAAC,cAAc;YACrC,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,uBAAuB,GAAG,KAAK,CAAC,8BAA8B,EAAE,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAC7D,MAAM,kBAAkB,GAAG,KAAK,CAAC,iCAAiC,EAAE,CAAC;IACrE,MAAM,+BAA+B,GAAG,2BAA2B,CAAC;QAClE,OAAO;QACP,MAAM;QACN,kBAAkB;KACnB,CAAC,CAAC;IACH,MAAM,sBAAsB,GAAG,QAAQ,EAAE,iBAAiB,KAAK,SAAS,CAAC;IACzE,MAAM,mBAAmB,GAAG,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAClE,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC;QACnE,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;QACtD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,MAAM;QACN,mBAAmB,EAAE,+BAA+B;QACpD,sBAAsB,EAAE,cAAc;QACtC,sBAAsB;QACtB,uBAAuB;QACvB,mBAAmB;KACpB,CAAC,CAAC;IACH,MAAM,uBAAuB,GAC3B,oBAAoB,EAAE,KAAK,KAAK,aAAa;QAC7C,oBAAoB,CAAC,IAAI,KAAK,eAAe,CAAC;IAChD,MAAM,cAAc,GAAG,uBAAuB;QAC5C,CAAC,CAAC,4CAA4C,CAAC,cAAc,CAAC;QAC9D,CAAC,CAAC,cAAc,CAAC;IAEnB,OAAO,uBAAuB,CAAC;QAC7B,UAAU;QACV,SAAS;QACT,kBAAkB;QAClB,aAAa;QACb,cAAc;QACd,cAAc;QACd,QAAQ;QACR,wBAAwB;QACxB,sBAAsB;QACtB,MAAM;QACN,OAAO;QACP,QAAQ;QACR,uBAAuB;QACvB,mBAAmB;QACnB,iBAAiB;QACjB,+BAA+B;QAC/B,oBAAoB;KACrB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,+BAA+B,CACtC,OAA8B,EAC9B,OAA6B,EAC7B,KAAiC;IAEjC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO;QACzC,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QAC1C,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;YAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;YACjC,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,KAAK,CAAC,cAAc;SAC7B,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,WAAW,EAAE,MAAM,KAAK,UAAU;QACrC,KAAK,CAAC,cAAc,KAAK,MAAM;QAC/B,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,IAAI;QACrC,qBAAqB,CAAC,WAAW,CAAC,cAAc,CAAC;QACnD,CAAC,CAAC,WAAW,CAAC,cAAc;QAC5B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,+BAA+B,CACtC,OAA8B,EAC9B,OAA6B,EAC7B,KAAoC;IAEpC,MAAM,YAAY,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;IACjD,MAAM,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,YAAY,CAAC,IAAI;QAC1E,MAAM,EAAE,aAAsB;QAC9B,YAAY;QACZ,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,wCAAwC;KACjD,CAAC;IACF,MAAM,0BAA0B,GAC9B,OAAO,CAAC,qBAAqB,EAAE,CAAC,YAAY,CAAC,IAAI;QAC/C,MAAM,EAAE,aAAsB;QAC9B,YAAY;QACZ,gBAAgB,EAAE,KAAK;QACvB,MAAM,EAAE,kCAAkC;KAC3C,CAAC;IACJ,MAAM,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC,IAAI;QAC1E,MAAM,EAAE,aAAsB;QAC9B,YAAY;QACZ,cAAc,EAAE,KAAK;QACrB,wBAAwB,EAAE,KAAK;QAC/B,MAAM,EAAE,uCAAuC;KAChD,CAAC;IACF,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;YACtD,mBAAmB,CAAC,oBAAoB;YACxC,0BAA0B,CAAC,oBAAoB;SAChD,CAAC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CACtC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACzD,CAAC,CAAC,CAAC,CAAC;IACL,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,YAAY;QACZ,mBAAmB;QACnB,0BAA0B;QAC1B,sBAAsB;QACtB,mBAAmB,EAAE,8BAA8B,CACjD,OAAO,CAAC,KAAK,EACb,YAAY,CACb;QACD,qBAAqB;KACtB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2BAA2B,CAAC,KAIpC;IACC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;IACtD,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO;QAC9B,MAAM,CAAC,yBAAyB,CAAC,MAAM,KAAK,iBAAiB;QAC7D,MAAM,CAAC,kCAAkC,CAAC,MAAM,KAAK,iBAAiB;QACtE,MAAM,CAAC,6BAA6B,EAAE,MAAM,KAAK,iBAAiB;QAClE,MAAM,CAAC,6BAA6B,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;QACxD,MAAM,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACvD,MAAM,CAAC,6BAA6B,CAAC,YAAY;YAC/C,kBAAkB,EAAE,YAAY,CAAC;AACvC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAkBhC;IACC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;SAC7C,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,QAAQ,EAAE,KAAK,CAAC,aAAa;YAC7B,SAAS,EAAE,KAAK,CAAC,cAAc;YAC/B,SAAS,EAAE,KAAK,CAAC,cAAc;YAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;YACxD,cAAc,EAAE,KAAK,CAAC,sBAAsB;SAC7C,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;YACtD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;SAC/C,CAAC;QACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,+BAA+B,EAC7B,KAAK,CAAC,+BAA+B;SACxC,CAAC;QACF,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;KACjD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4CAA4C,CACnD,KAAiC;IAEjC,MAAM,MAAM,GAAG,+CAA+C,CAAC;IAC/D,OAAO;QACL,GAAG,KAAK;QACR,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,MAAM;KACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { ExecutorKind } from "./executors.js";
2
+ import { type ActiveTerminalProcess, type TerminalAgentAdapterRegistry, type TerminalControlRef } from "./terminal-agent-adapter.js";
3
+ import type { TerminalAgentBridge } from "./terminal-agent-bridge.js";
4
+ import type { TerminalControlProvider } from "./terminal-control-provider.js";
5
+ import type { TerminalProcessSource } from "./terminal-process-source.js";
6
+ export interface TerminalListInventoryEntry {
7
+ agent?: string;
8
+ activity_state?: string;
9
+ durable_activity_reason?: string;
10
+ durable_activity_state?: string;
11
+ cwd?: string;
12
+ id?: string;
13
+ native_identity_state?: string;
14
+ screen_reason?: string;
15
+ screen_state?: string;
16
+ short_ref?: string;
17
+ terminal_control?: TerminalControlRef | {
18
+ target?: string;
19
+ [field: string]: unknown;
20
+ };
21
+ workspace?: string;
22
+ [field: string]: unknown;
23
+ }
24
+ export interface TerminalListInventoryScan {
25
+ terminalControlled: TerminalListInventoryEntry[];
26
+ summary: {
27
+ error?: string;
28
+ [field: string]: unknown;
29
+ };
30
+ }
31
+ export interface TerminalListInventoryOptions {
32
+ managedOnly?: boolean;
33
+ noApprovalScan?: boolean;
34
+ terminalDebug?: boolean;
35
+ }
36
+ export interface TerminalListInventoryPorts<Options extends TerminalListInventoryOptions> {
37
+ createRegistry(options: Options): TerminalAgentAdapterRegistry;
38
+ createBridge(options: Options, provider: TerminalControlProvider, registry: TerminalAgentAdapterRegistry): TerminalAgentBridge;
39
+ createProvider(options: Options): TerminalControlProvider;
40
+ createProcessSource(options: Options): TerminalProcessSource;
41
+ projectTerminal(input: {
42
+ session: ActiveTerminalProcess;
43
+ activeSessions: ActiveTerminalProcess[];
44
+ options: Options;
45
+ bridge: TerminalAgentBridge;
46
+ }): Promise<TerminalListInventoryEntry>;
47
+ log(level: "info", event: string, fields: Record<string, unknown>): void;
48
+ }
49
+ /**
50
+ * Collect one physical process/terminal inventory without consulting Store
51
+ * ownership or public action policy. Every selected process is projected by
52
+ * exactly one caller-supplied per-terminal observation operation.
53
+ */
54
+ export declare function collectTerminalListInventory<Options extends TerminalListInventoryOptions>(input: {
55
+ options: Options;
56
+ agentFilter?: ExecutorKind;
57
+ terminalId?: string;
58
+ ports: TerminalListInventoryPorts<Options>;
59
+ }): Promise<TerminalListInventoryScan>;
@@ -0,0 +1,194 @@
1
+ import { parseTerminalConversationId } from "./terminal-agent-adapter.js";
2
+ import { selectRootTerminalProcesses } from "./terminal-authority-policy.js";
3
+ /**
4
+ * Collect one physical process/terminal inventory without consulting Store
5
+ * ownership or public action policy. Every selected process is projected by
6
+ * exactly one caller-supplied per-terminal observation operation.
7
+ */
8
+ export async function collectTerminalListInventory(input) {
9
+ const { options, agentFilter, terminalId, ports } = input;
10
+ const empty = {
11
+ terminalControlled: [],
12
+ summary: {
13
+ enabled: false,
14
+ agents: [],
15
+ error: undefined
16
+ }
17
+ };
18
+ if (options.managedOnly)
19
+ return empty;
20
+ const registry = ports.createRegistry(options);
21
+ const adapters = agentFilter
22
+ ? [registry.get(agentFilter)].filter((adapter) => adapter !== undefined)
23
+ : registry.list();
24
+ if (agentFilter && adapters.length === 0) {
25
+ return {
26
+ ...empty,
27
+ summary: {
28
+ enabled: true,
29
+ agents: [],
30
+ skipped: `terminal agent adapter is not registered for ${agentFilter}`
31
+ }
32
+ };
33
+ }
34
+ const terminalProvider = ports.createProvider(options);
35
+ const bridge = ports.createBridge(options, terminalProvider, registry);
36
+ const terminalDiagnostics = options.terminalDebug
37
+ ? await terminalProvider.diagnostics()
38
+ : undefined;
39
+ const exactTarget = terminalId
40
+ ? exactTerminalTargetDiagnostic(terminalId)
41
+ : undefined;
42
+ if (terminalId) {
43
+ ports.log("info", "terminal_exact_scan", {
44
+ stage: "started",
45
+ terminal_id: terminalId,
46
+ target: exactTarget
47
+ });
48
+ }
49
+ const terminalControlled = [];
50
+ let activeCount = 0;
51
+ const errors = [];
52
+ try {
53
+ const processSource = ports.createProcessSource(options);
54
+ const snapshots = await processSource.listProcessSnapshots((snapshot) => adapters.some((adapter) => adapter.capabilities.processDiscovery &&
55
+ adapter.classifyProcess(snapshot) !== undefined), { includeAncestors: true });
56
+ logExactProcessInventory(ports, terminalId, exactTarget, snapshots);
57
+ const activeSessions = await bridge.listProcesses(snapshots, adapters.map((adapter) => adapter.agent));
58
+ const rootSessions = selectRootTerminalProcesses(activeSessions, snapshots);
59
+ const controlledSessions = rootSessions.filter((session) => session.terminalControl !== undefined);
60
+ logExactProcessAssociation({
61
+ ports,
62
+ terminalId,
63
+ exactTarget,
64
+ activeSessions,
65
+ rootSessions,
66
+ controlledSessions,
67
+ bridge
68
+ });
69
+ activeCount = controlledSessions.length;
70
+ const selectedSessions = terminalId
71
+ ? activeSessions.filter((session) => session.terminalControl !== undefined &&
72
+ bridge.terminalConversationId(session) === terminalId)
73
+ : controlledSessions;
74
+ for (const session of selectedSessions) {
75
+ try {
76
+ terminalControlled.push(await ports.projectTerminal({
77
+ session,
78
+ activeSessions,
79
+ options,
80
+ bridge
81
+ }));
82
+ }
83
+ catch (error) {
84
+ errors.push(`terminal process ${session.pid}: ` +
85
+ (error instanceof Error ? error.message : String(error)));
86
+ }
87
+ }
88
+ }
89
+ catch (error) {
90
+ errors.push(error instanceof Error ? error.message : String(error));
91
+ }
92
+ if (terminalId) {
93
+ ports.log("info", "terminal_exact_scan", {
94
+ stage: "complete",
95
+ terminal_id: terminalId,
96
+ controlled_process_count: activeCount,
97
+ terminal_row_count: terminalControlled.length,
98
+ terminal_row_ids: terminalControlled.map((terminal) => terminal.id),
99
+ errors
100
+ });
101
+ }
102
+ return {
103
+ terminalControlled,
104
+ summary: {
105
+ enabled: true,
106
+ agents: adapters.map((adapter) => adapter.agent),
107
+ active_count: activeCount,
108
+ terminal_count: terminalControlled.length,
109
+ approval_scan: options.noApprovalScan ? "disabled" : "enabled",
110
+ diagnostics: terminalDiagnostics,
111
+ error: errors.length > 0 ? errors.join("; ") : undefined
112
+ }
113
+ };
114
+ }
115
+ function logExactProcessInventory(ports, terminalId, exactTarget, snapshots) {
116
+ if (!terminalId)
117
+ return;
118
+ const targetPid = exactTarget?.pid;
119
+ ports.log("info", "terminal_exact_scan", {
120
+ stage: "process_inventory",
121
+ terminal_id: terminalId,
122
+ target_pid: targetPid,
123
+ snapshot_count: snapshots.length,
124
+ target_process_found: targetPid === undefined
125
+ ? undefined
126
+ : snapshots.some((snapshot) => snapshot.pid === targetPid),
127
+ target_process_snapshots: targetPid === undefined
128
+ ? []
129
+ : snapshots
130
+ .filter((snapshot) => snapshot.pid === targetPid)
131
+ .map((snapshot) => ({ pid: snapshot.pid, ppid: snapshot.ppid }))
132
+ });
133
+ }
134
+ function logExactProcessAssociation(input) {
135
+ if (!input.terminalId)
136
+ return;
137
+ const targetPid = input.exactTarget?.pid;
138
+ const targetSessions = targetPid === undefined
139
+ ? []
140
+ : input.activeSessions.filter((session) => session.pid === targetPid);
141
+ input.ports.log("info", "terminal_exact_scan", {
142
+ stage: "process_classification_and_association",
143
+ terminal_id: input.terminalId,
144
+ target_pid: targetPid,
145
+ classified_process_count: input.activeSessions.length,
146
+ root_process_count: input.rootSessions.length,
147
+ controlled_process_count: input.controlledSessions.length,
148
+ target_classified_count: targetSessions.length,
149
+ target_controlled_count: targetSessions.filter((session) => session.terminalControl !== undefined).length,
150
+ target_sessions: targetSessions.map((session) => ({
151
+ agent: session.agent,
152
+ pid: session.pid,
153
+ ppid: session.ppid,
154
+ kind: session.kind,
155
+ confidence: session.confidence,
156
+ selected_as_root: input.rootSessions.includes(session),
157
+ terminal_conversation_id: session.terminalControl
158
+ ? input.bridge.terminalConversationId(session)
159
+ : undefined,
160
+ terminal_control: terminalControlScanDiagnostic(session.terminalControl)
161
+ }))
162
+ });
163
+ }
164
+ function exactTerminalTargetDiagnostic(terminalId) {
165
+ try {
166
+ const parsed = parseTerminalConversationId(terminalId);
167
+ return parsed ? {
168
+ provider: parsed.kind,
169
+ agent: parsed.agent,
170
+ route: parsed.target,
171
+ pid: parsed.pid
172
+ } : undefined;
173
+ }
174
+ catch (error) {
175
+ return {
176
+ parse_error: error instanceof Error ? error.message : String(error)
177
+ };
178
+ }
179
+ }
180
+ function terminalControlScanDiagnostic(terminalControl) {
181
+ if (!terminalControl)
182
+ return undefined;
183
+ const control = terminalControl;
184
+ return {
185
+ kind: terminalControl.kind,
186
+ target: terminalControl.target,
187
+ pane_pid: control.panePid,
188
+ process_anchor_pid: control.processAnchorPid,
189
+ endpoint_key: control.endpointKey,
190
+ resource_key: control.resourceKey,
191
+ terminal_id: control.terminalId
192
+ };
193
+ }
194
+ //# sourceMappingURL=terminal-list-inventory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-list-inventory.js","sourceRoot":"","sources":["../../src/terminal-list-inventory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import type { CodexOpenRootRolloutInventory } from "./agent-session-provider.js";
2
+ import { listDeferredForegroundTransfers, type DeferredForegroundTransferSourceRolloutAuthority, type DeferredForegroundTransferSourceTurnAuthority } from "./deferred-foreground-transfer.js";
3
+ import type { ExecutorKind } from "./executors.js";
4
+ import { type HumanObservedHandoffTargetSnapshot, type ManagedSessionState } from "./managed-session.js";
5
+ import { type Conversation } from "./protocol.js";
6
+ import { type CodexSendAuthorityContext, type DeferredCodexForegroundDispatchSnapshot } from "./terminal-authority-policy.js";
7
+ import { type TerminalNativeIdentity } from "./terminal-binding-authority.js";
8
+ import { terminalScopedCodexApprovalPromptSnapshot, type TerminalScopedCodexApprovalBoundary } from "./terminal-scoped-approval-authority.js";
9
+ import { type TerminalDispatchLedgerDocument } from "./terminal-dispatch-ledger-codec.js";
10
+ import { type TerminalControlRef } from "./terminal-control-ref.js";
11
+ export interface DeferredCodexAuthorityObservation {
12
+ sourceRolloutAuthority: DeferredForegroundTransferSourceRolloutAuthority;
13
+ sourceTurnHistory?: DeferredForegroundTransferSourceTurnAuthority[];
14
+ dispatchSnapshot?: DeferredCodexForegroundDispatchSnapshot;
15
+ sourceAbandonmentFingerprint?: string;
16
+ exactSource: boolean;
17
+ }
18
+ export interface TerminalListOwnershipContext {
19
+ storeDir: string;
20
+ terminals: Record<string, any>[];
21
+ managedSessions: ManagedSessionState[];
22
+ allConversations: Conversation[];
23
+ displayedConversations: Conversation[];
24
+ mutationsAllowed: boolean;
25
+ nonterminalDeferredTransfers: ReturnType<typeof listDeferredForegroundTransfers>;
26
+ conversationHasNonterminalDeferredTransfer: (conversation: Conversation) => boolean;
27
+ }
28
+ export interface TerminalListOwnershipServicePorts {
29
+ activeTurnHandoffDecisionToken(request: {
30
+ handoffToken: string;
31
+ turn: Conversation;
32
+ ledger?: TerminalDispatchLedgerDocument;
33
+ }): string;
34
+ assertManagedTerminalDispatchOwner(request: {
35
+ storeDir: string;
36
+ conversation: Conversation;
37
+ terminalControl: TerminalControlRef;
38
+ action: "approve" | "cancel";
39
+ }): void;
40
+ codexLingeringBeforeIdentityMatchesSession(request: {
41
+ storeDir: string;
42
+ session: ManagedSessionState;
43
+ identity: TerminalNativeIdentity;
44
+ }): boolean;
45
+ codexProcessIncarnationForPid(pid: number): {
46
+ processUuid: string;
47
+ processBirth: string;
48
+ };
49
+ currentWorkingDirectory(): string;
50
+ isDiscoverableTmuxConversation(conversation: Conversation): boolean;
51
+ loadTerminalBridgeDispatchLedger(terminalControl: TerminalControlRef): TerminalDispatchLedgerDocument | undefined;
52
+ loadTerminalDispatchLedgerOwner(ledger: TerminalDispatchLedgerDocument): Conversation | undefined;
53
+ managedTurnsForSession(storeDir: string, sessionId: string): Conversation[];
54
+ matchesConfiguredWorkspace(configured: unknown, observed: unknown): boolean;
55
+ observeDeferredCodexAuthority(request: {
56
+ mode: "list";
57
+ storeDir: string;
58
+ context: CodexSendAuthorityContext;
59
+ sourceSession?: ManagedSessionState;
60
+ candidateInventory?: CodexOpenRootRolloutInventory;
61
+ abandonment: "never" | "missing_rollout";
62
+ requireUnclaimedCandidate: true;
63
+ }): DeferredCodexAuthorityObservation | undefined;
64
+ observedHandoffTargetResolution(request: {
65
+ storeDir: string;
66
+ agent: ExecutorKind;
67
+ workspace: string;
68
+ nativeThreadId: string;
69
+ sourceSessionId: string;
70
+ }): {
71
+ status: "eligible";
72
+ session?: ManagedSessionState;
73
+ snapshot: HumanObservedHandoffTargetSnapshot;
74
+ } | {
75
+ status: "blocked";
76
+ reason: string;
77
+ };
78
+ orphanedTerminalDispatchForRecovery(terminalControl: TerminalControlRef): TerminalDispatchLedgerDocument | undefined;
79
+ runtimeLog(level: "info" | "warn" | "error", event: string, details: Record<string, unknown>): void;
80
+ terminalControlFromTakeover(value: unknown): TerminalControlRef | undefined;
81
+ terminalDispatchRecordMatchesControl(ledger: TerminalDispatchLedgerDocument | undefined, terminalControl: TerminalControlRef, options?: {
82
+ requireProcessAnchor?: boolean;
83
+ }): boolean;
84
+ }
85
+ interface TerminalScopedBoundaryRequest {
86
+ storeDir: string;
87
+ terminal: unknown;
88
+ session: ManagedSessionState;
89
+ ledger?: TerminalDispatchLedgerDocument;
90
+ approval?: ReturnType<typeof terminalScopedCodexApprovalPromptSnapshot>;
91
+ owner?: Conversation;
92
+ }
93
+ type TerminalDispatchOwnershipResult = {
94
+ state: "none";
95
+ } | {
96
+ state: "current";
97
+ conversation: Conversation;
98
+ } | {
99
+ state: "conflict";
100
+ conflict: Record<string, any>;
101
+ };
102
+ export interface TerminalListOwnershipService {
103
+ assertTerminalIncarnationCanStartTurn(storeDir: string, terminalControl: TerminalControlRef): void;
104
+ managedSessionHasAnyNativeTransition(storeDir: string, session: ManagedSessionState): boolean;
105
+ managedSessionHasUnresolvedNativeTransition(storeDir: string, session: ManagedSessionState): boolean;
106
+ managedSessionMatchesLiveTerminalEntry(session: ManagedSessionState, terminal: Record<string, any>, storeDir: string): boolean;
107
+ managedTurnMatchesLiveTerminal(conversation: Conversation, terminal: Record<string, any>): boolean;
108
+ managedTurnNeedsAttention(conversation: Conversation): boolean;
109
+ observeActionAuthority(terminal: Record<string, any>, context: TerminalListOwnershipContext, binding: Record<string, any>): Record<string, any>;
110
+ observeBindingAuthority(terminal: Record<string, any>, context: TerminalListOwnershipContext): Record<string, any>;
111
+ provisionalManagedBindingTurnCount(storeDir: string, session: ManagedSessionState): number | undefined;
112
+ terminalControlForManagedConversation(conversation: Conversation): TerminalControlRef | undefined;
113
+ terminalDispatchOwnership(terminalControl: TerminalControlRef): TerminalDispatchOwnershipResult;
114
+ terminalIncarnationBlockingTurns(storeDir: string, terminalControl: TerminalControlRef, conversations?: Conversation[]): Conversation[];
115
+ terminalScopedCodexApprovalBoundary(request: TerminalScopedBoundaryRequest): TerminalScopedCodexApprovalBoundary;
116
+ }
117
+ export declare function createTerminalListOwnershipService(ports: TerminalListOwnershipServicePorts): TerminalListOwnershipService;
118
+ export {};