@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,402 @@
1
+ import path from "node:path";
2
+ import { validateCodexRolloutAcceptanceAnchor } from "./terminal-submission-acceptance.js";
3
+ import { isRecord, nonBlankString as stringValue } from "./value-guards.js";
4
+ import { executorForConversation, turnIdForConversation } from "./protocol.js";
5
+ import { pathsForConversationDir } from "./store.js";
6
+ import { terminalControlsShareIncarnation } from "./terminal-authority-policy.js";
7
+ import { withCanonicalMutationLocks } from "./mutation-transaction.js";
8
+ import * as deferredRecoveryAdapter from "./deferred-foreground-recovery-cli-adapter.js";
9
+ import { decideTerminalSubmissionRetry } from "./terminal-submission-retry-service.js";
10
+ import { cliNow } from "./cli-runtime-context.js";
11
+ export class TerminalSubmissionRetryApplication {
12
+ ports;
13
+ reconciliation;
14
+ transport;
15
+ constructor(ports, reconciliation, transport) {
16
+ this.ports = ports;
17
+ this.reconciliation = reconciliation;
18
+ this.transport = transport;
19
+ }
20
+ assertTerminalSubmissionRetryOptions(options) {
21
+ const turnId = this.ports.required(stringValue(options.turn), "--turn is required");
22
+ const allowed = new Set(["turn", "storeDir"]);
23
+ const conflicts = Object.keys(options).filter((option) => options[option] !== undefined && !allowed.has(option));
24
+ if (conflicts.length > 0) {
25
+ throw new Error("send --turn is an exact submission recovery form and cannot be " +
26
+ `combined with ${conflicts.map((option) => `--${option}`).join(", ")}; ` +
27
+ "no terminal input was sent");
28
+ }
29
+ return turnId;
30
+ }
31
+ terminalSubmissionRetryIsEligible(context, state) {
32
+ const legacyEligible = !state.attempt &&
33
+ state.conversation.status === "stalled" &&
34
+ state.submission.status === "uncertain" &&
35
+ state.submission.last_proven_stage === "text_injected" &&
36
+ context.currentMessageId === context.originalMessageId;
37
+ if (legacyEligible || (state.attempt && state.attempt.state !== "agent_accepted")) {
38
+ return true;
39
+ }
40
+ this.reconciliation.printTerminalSubmissionRetryOutcome({
41
+ conversation: state.conversation,
42
+ terminalControl: context.invocation.terminalControl,
43
+ attempt: state.attempt,
44
+ outcome: "refused",
45
+ terminalInputSent: false,
46
+ reason: "The Turn is not an eligible incomplete submission recovery; no terminal input was sent."
47
+ });
48
+ return false;
49
+ }
50
+ async recoverTerminalSubmissionRetryAcceptance(context, state) {
51
+ const { options, terminalControl, live, statePath, logPath, storeDir } = context.invocation;
52
+ const deferredAccepted = context.deferred
53
+ ? await deferredRecoveryAdapter.recoverAcceptedDeferredForegroundDispatch(this.ports.deferredForegroundRecoveryAdapterPorts(), {
54
+ options,
55
+ scope: context.deferred.scope,
56
+ storeDir,
57
+ terminal: live,
58
+ transfer: context.deferred.transfer,
59
+ boundary: context.deferred.boundary
60
+ })
61
+ : false;
62
+ this.reconciliation.assertTerminalSubmissionRetryTurnOpen({
63
+ statePath,
64
+ exactTurnId: context.invocation.exactTurnId
65
+ });
66
+ if (deferredAccepted) {
67
+ const finalized = this.reconciliation.finalizeDeferredTerminalSubmissionRetryAccepted({
68
+ statePath,
69
+ scopes: context.scopes,
70
+ resources: context.resources,
71
+ attempt: state.attempt
72
+ });
73
+ state.conversation = finalized.conversation;
74
+ state.attempt = finalized.attempt;
75
+ this.ports.startTerminalBridgeMonitorForConversation({
76
+ conversation: state.conversation,
77
+ statePath,
78
+ logPath,
79
+ options
80
+ });
81
+ this.reconciliation.printTerminalSubmissionRetryOutcome({
82
+ conversation: state.conversation,
83
+ terminalControl,
84
+ attempt: state.attempt,
85
+ outcome: "agent_accepted",
86
+ terminalInputSent: false,
87
+ reason: "Deferred native acceptance and source/target Session bindings were reconciled without terminal input."
88
+ });
89
+ return true;
90
+ }
91
+ const acceptedEvidence = context.deferred
92
+ ? undefined
93
+ : await context.execution.detectAcceptance({
94
+ executor: "codex",
95
+ conversation: state.conversation,
96
+ terminalControl,
97
+ ...this.ports.terminalAcceptanceCompanionFences(state.conversation, terminalControl)
98
+ });
99
+ this.reconciliation.assertTerminalSubmissionRetryTurnOpen({
100
+ statePath,
101
+ exactTurnId: context.invocation.exactTurnId
102
+ });
103
+ if (!acceptedEvidence)
104
+ return false;
105
+ const repaired = this.reconciliation.terminalSubmissionRetryAccepted({
106
+ conversation: state.conversation,
107
+ submission: state.submission,
108
+ ledger: state.ledger,
109
+ evidence: acceptedEvidence,
110
+ requestText: context.requestText,
111
+ at: cliNow().toISOString(),
112
+ statePath,
113
+ logPath,
114
+ scopes: context.scopes,
115
+ resources: context.resources,
116
+ attempt: state.attempt,
117
+ terminalInputSent: false
118
+ });
119
+ state.conversation = repaired.conversation;
120
+ state.attempt = repaired.attempt;
121
+ this.ports.startTerminalBridgeMonitorForConversation({
122
+ conversation: state.conversation,
123
+ statePath,
124
+ logPath,
125
+ options
126
+ });
127
+ this.reconciliation.printTerminalSubmissionRetryOutcome({
128
+ conversation: state.conversation,
129
+ terminalControl,
130
+ attempt: state.attempt,
131
+ outcome: "agent_accepted",
132
+ terminalInputSent: false,
133
+ reason: "Native Codex acceptance was reconciled; no terminal input was sent."
134
+ });
135
+ return true;
136
+ }
137
+ finishPendingTerminalSubmissionRetry(context, state, alreadyReconciled) {
138
+ if (state.attempt?.state !== "enter_dispatched")
139
+ return false;
140
+ this.reconciliation.assertTerminalSubmissionRetryTurnOpen({
141
+ statePath: context.invocation.statePath,
142
+ exactTurnId: context.invocation.exactTurnId
143
+ });
144
+ if (!alreadyReconciled) {
145
+ state.conversation = this.reconciliation.reconcileTerminalSubmissionRetryPending({
146
+ conversation: state.conversation,
147
+ submission: state.submission,
148
+ ledger: state.ledger,
149
+ attempt: state.attempt,
150
+ requestText: context.requestText,
151
+ statePath: context.invocation.statePath,
152
+ logPath: context.invocation.logPath,
153
+ scopes: context.scopes,
154
+ resources: context.resources,
155
+ deferred: context.deferred
156
+ });
157
+ }
158
+ this.ports.startTerminalBridgeMonitorForConversation({
159
+ conversation: state.conversation,
160
+ statePath: context.invocation.statePath,
161
+ logPath: context.invocation.logPath,
162
+ options: context.invocation.options
163
+ });
164
+ this.reconciliation.printTerminalSubmissionRetryOutcome({
165
+ conversation: state.conversation,
166
+ terminalControl: context.invocation.terminalControl,
167
+ attempt: state.attempt,
168
+ outcome: "enter_dispatched",
169
+ terminalInputSent: false,
170
+ reason: "The durable retry Enter was reconciled without additional terminal input; native acceptance remains pending."
171
+ });
172
+ return true;
173
+ }
174
+ terminalSubmissionRetryHasInputAuthority(context, state) {
175
+ if (!context.deferred ||
176
+ validateCodexRolloutAcceptanceAnchor(context.takeover?.codex_rollout_acceptance_anchor)?.version === 3) {
177
+ return true;
178
+ }
179
+ this.reconciliation.printTerminalSubmissionRetryOutcome({
180
+ conversation: state.conversation,
181
+ terminalControl: context.invocation.terminalControl,
182
+ attempt: state.attempt,
183
+ outcome: "refused",
184
+ terminalInputSent: false,
185
+ reason: "Deferred submission retry requires a candidate-set Codex acceptance anchor before any terminal input; no terminal input was sent."
186
+ });
187
+ return false;
188
+ }
189
+ async runTerminalSubmissionRetryNoInputRecovery(context, state) {
190
+ const pendingRetryReconciled = this.reconciliation.reconcileTerminalSubmissionRetryDeferredPending(context, state);
191
+ if (await this.reconciliation.recoverPartialTerminalSubmissionRetryAcceptance(context, state)) {
192
+ return true;
193
+ }
194
+ if (!this.terminalSubmissionRetryIsEligible(context, state))
195
+ return true;
196
+ if (await this.recoverTerminalSubmissionRetryAcceptance(context, state)) {
197
+ return true;
198
+ }
199
+ if (this.finishPendingTerminalSubmissionRetry(context, state, pendingRetryReconciled)) {
200
+ return true;
201
+ }
202
+ return !this.terminalSubmissionRetryHasInputAuthority(context, state);
203
+ }
204
+ async runTerminalSubmissionRetryDecision(context, state) {
205
+ const { options, bridge, terminalControl, storeDir, statePath, logPath } = context.invocation;
206
+ if (context.deferred) {
207
+ await this.ports.assertDeferredCodexForegroundBindingBoundary({
208
+ options,
209
+ scope: context.deferred.scope,
210
+ boundary: context.deferred.boundary,
211
+ expectedSourceStatus: "transitioning",
212
+ requireNoDispatch: false,
213
+ requireEmptyComposer: false
214
+ });
215
+ }
216
+ const observation = await bridge.observeCodexComposer(terminalControl, context.requestText, { runtime: this.ports.terminalRuntimeIdentityForConversation(state.conversation, terminalControl) });
217
+ this.reconciliation.assertTerminalSubmissionRetryTurnOpen({
218
+ statePath,
219
+ exactTurnId: context.invocation.exactTurnId
220
+ });
221
+ const decision = decideTerminalSubmissionRetry({
222
+ agent: "codex",
223
+ exactTurnTarget: true,
224
+ accepted: false,
225
+ composer: observation.state,
226
+ submissionStatus: stringValue(state.submission.status),
227
+ lastProvenStage: stringValue(state.submission.last_proven_stage),
228
+ submissionTextInjectedAt: stringValue(state.submission.text_injected_at),
229
+ enterDispatchedAt: stringValue(state.submission.enter_dispatched_at),
230
+ enterNotAttemptedAt: stringValue(state.submission.enter_not_attempted_at),
231
+ enterNotAttemptedReason: stringValue(state.submission.enter_not_attempted_reason),
232
+ ledgerStatus: stringValue(state.ledger.status),
233
+ ledgerTextInjectedAt: stringValue(state.ledger.text_injected_at),
234
+ ledgerEnterDispatchedAt: stringValue(state.ledger.enter_dispatched_at),
235
+ ledgerEnterNotAttemptedAt: stringValue(state.ledger.enter_not_attempted_at),
236
+ ledgerEnterNotAttemptedReason: stringValue(state.ledger.enter_not_attempted_reason),
237
+ ledgerAgentAcceptedAt: stringValue(state.ledger.agent_accepted_at),
238
+ originalMessageId: context.originalMessageId,
239
+ currentMessageId: stringValue(context.takeover?.terminal_bridge_message_id),
240
+ attempt: state.attempt
241
+ });
242
+ if (decision.action === "refuse") {
243
+ this.reconciliation.printTerminalSubmissionRetryOutcome({
244
+ conversation: state.conversation,
245
+ terminalControl,
246
+ attempt: state.attempt,
247
+ outcome: "refused",
248
+ terminalInputSent: false,
249
+ reason: `${decision.reason}; no terminal input was sent.`
250
+ });
251
+ return;
252
+ }
253
+ if (decision.action === "repair_accepted") {
254
+ throw new Error("retry metadata claims acceptance without native evidence; no terminal input was sent");
255
+ }
256
+ if (decision.action === "start_replacement" ||
257
+ decision.action === "resume_replacement") {
258
+ await this.transport.runTerminalSubmissionReplacement({
259
+ options,
260
+ bridge,
261
+ execution: context.execution,
262
+ observation,
263
+ decision,
264
+ conversation: state.conversation,
265
+ submission: state.submission,
266
+ ledger: state.ledger,
267
+ requestText: context.requestText,
268
+ requestHash: context.requestHash,
269
+ originalMessageId: context.originalMessageId,
270
+ terminalControl,
271
+ storeDir,
272
+ statePath,
273
+ logPath,
274
+ scopes: context.scopes,
275
+ resources: context.resources,
276
+ attempt: state.attempt,
277
+ deferred: context.deferred
278
+ });
279
+ return;
280
+ }
281
+ await this.transport.runTerminalSubmissionExactDraftEnter({
282
+ options,
283
+ bridge,
284
+ execution: context.execution,
285
+ conversation: state.conversation,
286
+ submission: state.submission,
287
+ ledger: state.ledger,
288
+ requestText: context.requestText,
289
+ requestHash: context.requestHash,
290
+ originalMessageId: context.originalMessageId,
291
+ activeMessageId: decision.activeMessageId,
292
+ terminalControl,
293
+ storeDir,
294
+ statePath,
295
+ logPath,
296
+ scopes: context.scopes,
297
+ resources: context.resources,
298
+ attempt: state.attempt,
299
+ deferred: context.deferred
300
+ });
301
+ }
302
+ async runTerminalSubmissionRetryLocked(input) {
303
+ const freshConversation = this.reconciliation.loadExactTerminalSubmissionRetryTurn({
304
+ statePath: input.invocation.statePath,
305
+ exactTurnId: input.invocation.exactTurnId
306
+ });
307
+ if (freshConversation.status === "closed") {
308
+ this.reconciliation.printTerminalSubmissionRetryOutcome({
309
+ conversation: freshConversation,
310
+ terminalControl: input.invocation.terminalControl,
311
+ outcome: "refused",
312
+ terminalInputSent: false,
313
+ reason: "The Turn was explicitly closed; no terminal input was sent and no " +
314
+ "retry state was changed."
315
+ });
316
+ return;
317
+ }
318
+ const authority = this.reconciliation.loadTerminalSubmissionRetryLockedAuthority(input);
319
+ if (authority.lifecycleSettled) {
320
+ this.reconciliation.printTerminalSubmissionRetryOutcome({
321
+ conversation: authority.conversation,
322
+ terminalControl: input.invocation.terminalControl,
323
+ attempt: authority.attempt,
324
+ outcome: "refused",
325
+ terminalInputSent: false,
326
+ reason: "The Turn lifecycle is already settled; no terminal input was sent."
327
+ });
328
+ return;
329
+ }
330
+ const prepared = this.reconciliation.prepareTerminalSubmissionRetryDeferredContext({
331
+ invocation: input.invocation,
332
+ authority,
333
+ scopes: input.scopes,
334
+ resources: input.resources
335
+ });
336
+ const state = {
337
+ conversation: authority.conversation,
338
+ submission: authority.submission,
339
+ ledger: prepared.ledger,
340
+ attempt: authority.attempt
341
+ };
342
+ const context = {
343
+ invocation: input.invocation,
344
+ scopes: input.scopes,
345
+ resources: input.resources,
346
+ execution: this.ports.terminalDispatchExecution(input.invocation.options, input.invocation.bridge),
347
+ deferred: prepared.deferred,
348
+ takeover: authority.takeover,
349
+ currentMessageId: authority.currentMessageId,
350
+ originalMessageId: authority.originalMessageId,
351
+ requestText: authority.requestText,
352
+ requestHash: authority.requestHash
353
+ };
354
+ if (await this.runTerminalSubmissionRetryNoInputRecovery(context, state))
355
+ return;
356
+ await this.runTerminalSubmissionRetryDecision(context, state);
357
+ }
358
+ async runTerminalSubmissionRetry(options) {
359
+ const exactTurnId = this.assertTerminalSubmissionRetryOptions(options);
360
+ const loaded = this.ports.loadConversationFromOptions(options);
361
+ const { statePath, logPath } = loaded;
362
+ const storePaths = pathsForConversationDir(path.dirname(statePath));
363
+ const storeDir = storePaths.storeDir;
364
+ if (path.resolve(storePaths.statePath) !== path.resolve(statePath) ||
365
+ path.basename(storePaths.conversationDir) !== exactTurnId ||
366
+ turnIdForConversation(loaded.conversation) !== exactTurnId) {
367
+ throw new Error("send --turn did not resolve one canonical Turn; no terminal input was sent");
368
+ }
369
+ const initialTakeover = isRecord(loaded.conversation.native_session_takeover)
370
+ ? loaded.conversation.native_session_takeover
371
+ : undefined;
372
+ const storedControl = this.ports.terminalControlFromTakeover(initialTakeover);
373
+ const pid = Number(initialTakeover?.terminal_agent_pid);
374
+ if (!storedControl || !Number.isSafeInteger(pid) || pid <= 1) {
375
+ throw new Error(`turn ${exactTurnId} is not attached to a live terminal; no terminal input was sent`);
376
+ }
377
+ if (executorForConversation(loaded.conversation).kind !== "codex") {
378
+ throw new Error("terminal submission retry is supported only for Codex; no terminal input was sent");
379
+ }
380
+ const bridge = this.ports.createTerminalAgentBridge(options);
381
+ const live = await bridge.resolveStoredTerminal("codex", pid, storedControl, this.ports.terminalRuntimeIdentityForConversation(loaded.conversation, storedControl));
382
+ if (!terminalControlsShareIncarnation(live.terminalControl, storedControl)) {
383
+ throw new Error("terminal control changed before submission retry; no terminal input was sent");
384
+ }
385
+ const terminalControl = live.terminalControl;
386
+ await withCanonicalMutationLocks(this.ports.terminalWriterMutationLocks(storeDir, terminalControl), async (scopes, resources) => this.ports.withTerminalDispatchStateScope(scopes, resources, statePath, logPath, async (dispatchScopes, dispatchResources) => this.runTerminalSubmissionRetryLocked({
387
+ invocation: {
388
+ options,
389
+ exactTurnId,
390
+ statePath,
391
+ logPath,
392
+ storeDir,
393
+ bridge,
394
+ live,
395
+ terminalControl
396
+ },
397
+ scopes: dispatchScopes,
398
+ resources: dispatchResources
399
+ })));
400
+ }
401
+ }
402
+ //# sourceMappingURL=terminal-submission-retry-application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-submission-retry-application.js","sourceRoot":"","sources":["../../src/terminal-submission-retry-application.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,oCAAoC,EAAE,MAC7C,qCAAqC,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,cAAc,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,gCAAgC,EAAE,MACzC,gCAAgC,CAAC;AACnC,OAAO,EACL,0BAA0B,EAG3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,uBAAuB,MACjC,+CAA+C,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MACtC,wCAAwC,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAclD,MAAM,OAAO,kCAAkC;IAE1B,KAAK;IACL,cAAc;IACd,SAAS;IAH5B,YACmB,KAA8C,EAC9C,cAAqD,EACrD,SAA2C;qBAF3C,KAAK;8BACL,cAAc;yBACd,SAAS;IACzB,CAAC;IAEJ,oCAAoC,CAClC,OAAkC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAChC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EACzB,oBAAoB,CACrB,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAC3C,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAClE,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,iEAAiE;gBACjE,iBAAiB,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACxE,4BAA4B,CAC7B,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iCAAiC,CAC/B,OAA2C,EAC3C,KAAuC;QAEvC,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,OAAO;YACnC,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,SAAS;YACvC,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW;YACvC,KAAK,CAAC,UAAU,CAAC,iBAAiB,KAAK,eAAe;YACtD,OAAO,CAAC,gBAAgB,KAAK,OAAO,CAAC,iBAAiB,CAAC;QACzD,IAAI,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC;YACtD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,eAAe;YACnD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,SAAS;YAClB,iBAAiB,EAAE,KAAK;YACxB,MAAM,EAAE,yFAAyF;SAClG,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,wCAAwC,CAC5C,OAA2C,EAC3C,KAAuC;QAEvC,MAAM,EACJ,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAC7D,GAAG,OAAO,CAAC,UAAU,CAAC;QACvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ;YACvC,CAAC,CAAC,MAAM,uBAAuB,CAAC,yCAAyC,CACrE,IAAI,CAAC,KAAK,CAAC,sCAAsC,EAAE,EACnD;gBACE,OAAO;gBACP,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAC7B,QAAQ;gBACR,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACpC,CACF;YACH,CAAC,CAAC,KAAK,CAAC;QACV,IAAI,CAAC,cAAc,CAAC,qCAAqC,CAAC;YACxD,SAAS;YACT,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;SAC5C,CAAC,CAAC;QACH,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,+CAA+C,CAAC;gBACpF,SAAS;gBACT,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YACH,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;YAC5C,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC;gBACnD,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,SAAS;gBACT,OAAO;gBACP,OAAO;aACR,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC;gBACtD,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,eAAe;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,gBAAgB;gBACzB,iBAAiB,EAAE,KAAK;gBACxB,MAAM,EAAE,uGAAuG;aAChH,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ;YACvC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBACvC,QAAQ,EAAE,OAAO;gBACjB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,eAAe;gBACf,GAAG,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAC7C,KAAK,CAAC,YAAY,EAClB,eAAe,CAChB;aACF,CAAC,CAAC;QACP,IAAI,CAAC,cAAc,CAAC,qCAAqC,CAAC;YACxD,SAAS;YACT,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;SAC5C,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,+BAA+B,CAAC;YACnE,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,gBAAgB;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,EAAE,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE;YAC1B,SAAS;YACT,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAC;QACH,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC3C,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC;YACnD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,SAAS;YACT,OAAO;YACP,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC;YACtD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,eAAe;YACf,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,gBAAgB;YACzB,iBAAiB,EAAE,KAAK;YACxB,MAAM,EAAE,qEAAqE;SAC9E,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAoC,CAClC,OAA2C,EAC3C,KAAuC,EACvC,iBAA0B;QAE1B,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,kBAAkB;YAAE,OAAO,KAAK,CAAC;QAC9D,IAAI,CAAC,cAAc,CAAC,qCAAqC,CAAC;YACxD,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;YACvC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;SAC5C,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,uCAAuC,CAAC;gBAC/E,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;gBACvC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;gBACnC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC;YACnD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;YACvC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;YACnC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC;YACtD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,eAAe;YACnD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,kBAAkB;YAC3B,iBAAiB,EAAE,KAAK;YACxB,MAAM,EAAE,8GAA8G;SACvH,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wCAAwC,CACtC,OAA2C,EAC3C,KAAuC;QAEvC,IACE,CAAC,OAAO,CAAC,QAAQ;YACjB,oCAAoC,CAClC,OAAO,CAAC,QAAQ,EAAE,+BAA+B,CAClD,EAAE,OAAO,KAAK,CAAC,EAChB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC;YACtD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,eAAe;YACnD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,SAAS;YAClB,iBAAiB,EAAE,KAAK;YACxB,MAAM,EAAE,mIAAmI;SAC5I,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,yCAAyC,CAC7C,OAA2C,EAC3C,KAAuC;QAEvC,MAAM,sBAAsB,GAC1B,IAAI,CAAC,cAAc,CAAC,+CAA+C,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtF,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,+CAA+C,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC9F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzE,IAAI,MAAM,IAAI,CAAC,wCAAwC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,oCAAoC,CAC3C,OAAO,EACP,KAAK,EACL,sBAAsB,CACvB,EAAE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,kCAAkC,CACtC,OAA2C,EAC3C,KAAuC;QAEvC,MAAM,EACJ,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAC/D,GAAG,OAAO,CAAC,UAAU,CAAC;QACvB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,KAAK,CAAC,4CAA4C,CAAC;gBAC5D,OAAO;gBACP,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBACnC,oBAAoB,EAAE,eAAe;gBACrC,iBAAiB,EAAE,KAAK;gBACxB,oBAAoB,EAAE,KAAK;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,oBAAoB,CACnD,eAAe,EACf,OAAO,CAAC,WAAW,EACnB,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAC1D,KAAK,CAAC,YAAY,EAClB,eAAe,CAChB,EAAE,CACJ,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,qCAAqC,CAAC;YACxD,SAAS;YACT,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;SAC5C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,6BAA6B,CAAC;YAC7C,KAAK,EAAE,OAAO;YACd,eAAe,EAAE,IAAI;YACrB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,WAAW,CAAC,KAAK;YAC3B,gBAAgB,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YACtD,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAChE,wBAAwB,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;YACxE,iBAAiB,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC;YACpE,mBAAmB,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC;YACzE,uBAAuB,EAAE,WAAW,CAClC,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAC5C;YACD,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,oBAAoB,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAChE,uBAAuB,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACtE,yBAAyB,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAC3E,6BAA6B,EAAE,WAAW,CACxC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CACxC;YACD,qBAAqB,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAClE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,gBAAgB,EAAE,WAAW,CAC3B,OAAO,CAAC,QAAQ,EAAE,0BAA0B,CAC7C;YACD,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC;gBACtD,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,eAAe;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,SAAS;gBAClB,iBAAiB,EAAE,KAAK;gBACxB,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,+BAA+B;aAC1D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,IACE,QAAQ,CAAC,MAAM,KAAK,mBAAmB;YACvC,QAAQ,CAAC,MAAM,KAAK,oBAAoB,EACxC,CAAC;YACD,MAAM,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC;gBACpD,OAAO;gBACP,MAAM;gBACN,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW;gBACX,QAAQ;gBACR,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,eAAe;gBACf,QAAQ;gBACR,SAAS;gBACT,OAAO;gBACP,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,oCAAoC,CAAC;YACxD,OAAO;YACP,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,eAAe;YACf,QAAQ;YACR,SAAS;YACT,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,KAItC;QACC,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,oCAAoC,CAAC;YACjF,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS;YACrC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;SAC1C,CAAC,CAAC;QACH,IAAI,iBAAiB,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC;gBACtD,YAAY,EAAE,iBAAiB;gBAC/B,eAAe,EAAE,KAAK,CAAC,UAAU,CAAC,eAAe;gBACjD,OAAO,EAAE,SAAS;gBAClB,iBAAiB,EAAE,KAAK;gBACxB,MAAM,EACJ,oEAAoE;oBACpE,0BAA0B;aAC7B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC;QACxF,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC;gBACtD,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,eAAe,EAAE,KAAK,CAAC,UAAU,CAAC,eAAe;gBACjD,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,OAAO,EAAE,SAAS;gBAClB,iBAAiB,EAAE,KAAK;gBACxB,MAAM,EAAE,oEAAoE;aAC7E,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,6CAA6C,CAAC;YACjF,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS;YACT,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,MAAM,KAAK,GAAqC;YAC9C,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC;QACF,MAAM,OAAO,GAAuC;YAClD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAC7C,KAAK,CAAC,UAAU,CAAC,OAAO,EACxB,KAAK,CAAC,UAAU,CAAC,MAAM,CACxB;YACD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;YAC5C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC;QACF,IAAI,MAAM,IAAI,CAAC,yCAAyC,CAAC,OAAO,EAAE,KAAK,CAAC;YAAE,OAAO;QACjF,MAAM,IAAI,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,OAAkC;QAElC,MAAM,WAAW,GAAG,IAAI,CAAC,oCAAoC,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QACtC,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,IACE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,WAAW;YACzD,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,WAAW,EAC1D,CAAC;YACD,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QACD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC;YAC3E,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB;YAC7C,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,QAAQ,WAAW,iEAAiE,CACrF,CAAC;QACJ,CAAC;QACD,IAAI,uBAAuB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAC7C,OAAO,EACP,GAAG,EACH,aAAa,EACb,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CACtF,CAAC;QACF,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,MAAM,0BAA0B,CAC9B,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,QAAQ,EAAE,eAAe,CAAC,EACjE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,8BAA8B,CACpE,MAAM,EACN,SAAS,EACT,SAAS,EACT,OAAO,EACP,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,EAAE,CAC1C,IAAI,CAAC,gCAAgC,CAAC;YACpC,UAAU,EAAE;gBACV,OAAO;gBACP,WAAW;gBACX,SAAS;gBACT,OAAO;gBACP,QAAQ;gBACR,MAAM;gBACN,IAAI;gBACJ,eAAe;aAChB;YACD,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,iBAAiB;SAC7B,CAAC,CACL,CACF,CAAC;IACJ,CAAC;CAEF"}
@@ -0,0 +1,30 @@
1
+ import type { Conversation } from "./protocol.js";
2
+ import type { CodexPreMaterializationIdentity } from "./terminal-authority-policy.js";
3
+ import type { TerminalControlRef } from "./terminal-agent-adapter.js";
4
+ import type { TerminalCommandCliPorts } from "./terminal-command-cli-ports.js";
5
+ type RetryPort<Name extends keyof TerminalCommandCliPorts> = Pick<TerminalCommandCliPorts, Name>;
6
+ interface TerminalSubmissionRetryLocalPorts {
7
+ durableTerminalInputDispatched(conversation: Conversation): boolean;
8
+ terminalAcceptanceCompanionFences(conversation: Conversation, terminalControl: TerminalControlRef): {
9
+ allowedCompanionIdentity?: CodexPreMaterializationIdentity;
10
+ allowedAdditionalIdentities?: CodexPreMaterializationIdentity[];
11
+ };
12
+ validateStoredTerminalSubmissionMatch(input: {
13
+ owner: Conversation;
14
+ receipt: Record<string, any>;
15
+ options: Record<string, any>;
16
+ terminalControl: TerminalControlRef;
17
+ requestText: string;
18
+ requestHash: string;
19
+ expectedStoreDir: string;
20
+ expectedSessionId?: string;
21
+ expectedTurnId?: string;
22
+ expectedMessageType: "task" | "answer";
23
+ expectedStatePath?: string;
24
+ }): Record<string, any> | undefined;
25
+ }
26
+ export type TerminalSubmissionRetryReconciliationPorts = RetryPort<"deferredForegroundApplication" | "deferredForegroundRecoveryAdapterPorts" | "required" | "startTerminalBridgeMonitorForConversation" | "terminalBridgeRequestFingerprint" | "terminalBridgeRuntimeKey" | "terminalControlFromTakeover" | "terminalDispatchRecordMatchesControl" | "withTerminalBridgeSubmission" | "mutationDispatchLedger"> & TerminalSubmissionRetryLocalPorts;
27
+ export type TerminalSubmissionRetryApplicationPorts = RetryPort<"assertDeferredCodexForegroundBindingBoundary" | "createTerminalAgentBridge" | "deferredForegroundRecoveryAdapterPorts" | "loadConversationFromOptions" | "required" | "startTerminalBridgeMonitorForConversation" | "terminalControlFromTakeover" | "terminalDispatchExecution" | "terminalRuntimeIdentityForConversation" | "terminalWriterMutationLocks" | "withTerminalDispatchStateScope"> & Pick<TerminalSubmissionRetryLocalPorts, "terminalAcceptanceCompanionFences">;
28
+ export type TerminalSubmissionRetryTransportPorts = RetryPort<"deferredForegroundApplication" | "deferredForegroundRecoveryAdapterPorts" | "required" | "startTerminalBridgeMonitorForConversation" | "terminalRuntimeIdentityForConversation" | "withTerminalBridgeSubmission" | "mutationDispatchLedger"> & Pick<TerminalSubmissionRetryLocalPorts, "terminalAcceptanceCompanionFences">;
29
+ export type TerminalSubmissionRetryPorts = TerminalSubmissionRetryReconciliationPorts & TerminalSubmissionRetryApplicationPorts & TerminalSubmissionRetryTransportPorts;
30
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=terminal-submission-retry-ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-submission-retry-ports.js","sourceRoot":"","sources":["../../src/terminal-submission-retry-ports.ts"],"names":[],"mappings":""}