@scotthuang/agent-knock-knock 0.13.3 → 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 (259) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +13 -5
  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/codex-process-incarnation.d.ts +8 -0
  14. package/dist/src/codex-process-incarnation.js +36 -0
  15. package/dist/src/codex-process-incarnation.js.map +1 -0
  16. package/dist/src/deferred-foreground-conflict-policy.d.ts +22 -0
  17. package/dist/src/deferred-foreground-conflict-policy.js +52 -0
  18. package/dist/src/deferred-foreground-conflict-policy.js.map +1 -0
  19. package/dist/src/durable-notification-kernel.d.ts +94 -0
  20. package/dist/src/durable-notification-kernel.js +68 -0
  21. package/dist/src/durable-notification-kernel.js.map +1 -0
  22. package/dist/src/herdr-socket-transport.d.ts +43 -0
  23. package/dist/src/herdr-socket-transport.js +170 -0
  24. package/dist/src/herdr-socket-transport.js.map +1 -0
  25. package/dist/src/herdr-terminal-control-provider.d.ts +2 -45
  26. package/dist/src/herdr-terminal-control-provider.js +2 -172
  27. package/dist/src/herdr-terminal-control-provider.js.map +1 -1
  28. package/dist/src/host-adapter-capabilities.d.ts +35 -0
  29. package/dist/src/host-adapter-capabilities.js +146 -0
  30. package/dist/src/host-adapter-capabilities.js.map +1 -0
  31. package/dist/src/host-adapter.d.ts +9 -3
  32. package/dist/src/host-adapter.js +33 -9
  33. package/dist/src/host-adapter.js.map +1 -1
  34. package/dist/src/host-bridge-tools.d.ts +3 -4
  35. package/dist/src/host-bridge-tools.js +49 -92
  36. package/dist/src/host-bridge-tools.js.map +1 -1
  37. package/dist/src/host-bridge.js +5 -5
  38. package/dist/src/host-bridge.js.map +1 -1
  39. package/dist/src/host-monitor-reconciliation.d.ts +6 -0
  40. package/dist/src/host-monitor-reconciliation.js +96 -0
  41. package/dist/src/host-monitor-reconciliation.js.map +1 -0
  42. package/dist/src/native-thread-lifecycle-cli-adapter.js +116 -60
  43. package/dist/src/native-thread-lifecycle-cli-adapter.js.map +1 -1
  44. package/dist/src/openclaw-list-projection.d.ts +2 -0
  45. package/dist/src/openclaw-list-projection.js +3 -0
  46. package/dist/src/openclaw-list-projection.js.map +1 -0
  47. package/dist/src/openclaw-model-facing-field-policy.d.ts +2 -0
  48. package/dist/src/openclaw-model-facing-field-policy.js +3 -0
  49. package/dist/src/openclaw-model-facing-field-policy.js.map +1 -0
  50. package/dist/src/openclaw-plugin-command-adapter.d.ts +6 -29
  51. package/dist/src/openclaw-plugin-command-adapter.js +7 -2660
  52. package/dist/src/openclaw-plugin-command-adapter.js.map +1 -1
  53. package/dist/src/openclaw-plugin-helpers.d.ts +2 -148
  54. package/dist/src/openclaw-plugin-helpers.js +2 -1844
  55. package/dist/src/openclaw-plugin-helpers.js.map +1 -1
  56. package/dist/src/openclaw-plugin-schemas.d.ts +2 -563
  57. package/dist/src/openclaw-plugin-schemas.js +2 -572
  58. package/dist/src/openclaw-plugin-schemas.js.map +1 -1
  59. package/dist/src/openclaw-plugin-supervisor.d.ts +4 -5
  60. package/dist/src/openclaw-plugin-supervisor.js +5 -94
  61. package/dist/src/openclaw-plugin-supervisor.js.map +1 -1
  62. package/dist/src/openclaw-plugin-value-helpers.d.ts +2 -0
  63. package/dist/src/openclaw-plugin-value-helpers.js +3 -0
  64. package/dist/src/openclaw-plugin-value-helpers.js.map +1 -0
  65. package/dist/src/openclaw-private-authority-offers.d.ts +4 -39
  66. package/dist/src/openclaw-private-authority-offers.js +3 -258
  67. package/dist/src/openclaw-private-authority-offers.js.map +1 -1
  68. package/dist/src/semantic-private-authority-offers.d.ts +41 -0
  69. package/dist/src/semantic-private-authority-offers.js +261 -0
  70. package/dist/src/semantic-private-authority-offers.js.map +1 -0
  71. package/dist/src/semantic-tool-arguments.d.ts +9 -0
  72. package/dist/src/semantic-tool-arguments.js +64 -0
  73. package/dist/src/semantic-tool-arguments.js.map +1 -0
  74. package/dist/src/semantic-tool-catalog.d.ts +48 -0
  75. package/dist/src/semantic-tool-catalog.js +105 -0
  76. package/dist/src/semantic-tool-catalog.js.map +1 -0
  77. package/dist/src/semantic-tool-command-helpers.d.ts +145 -0
  78. package/dist/src/semantic-tool-command-helpers.js +1272 -0
  79. package/dist/src/semantic-tool-command-helpers.js.map +1 -0
  80. package/dist/src/semantic-tool-list-projection.d.ts +10 -0
  81. package/dist/src/semantic-tool-list-projection.js +497 -0
  82. package/dist/src/semantic-tool-list-projection.js.map +1 -0
  83. package/dist/src/semantic-tool-model-facing-field-policy.d.ts +3 -0
  84. package/dist/src/semantic-tool-model-facing-field-policy.js +66 -0
  85. package/dist/src/semantic-tool-model-facing-field-policy.js.map +1 -0
  86. package/dist/src/semantic-tool-presentation.d.ts +37 -0
  87. package/dist/src/semantic-tool-presentation.js +680 -0
  88. package/dist/src/semantic-tool-presentation.js.map +1 -0
  89. package/dist/src/semantic-tool-private-authority.d.ts +39 -0
  90. package/dist/src/semantic-tool-private-authority.js +602 -0
  91. package/dist/src/semantic-tool-private-authority.js.map +1 -0
  92. package/dist/src/semantic-tool-relay.d.ts +16 -0
  93. package/dist/src/semantic-tool-relay.js +175 -0
  94. package/dist/src/semantic-tool-relay.js.map +1 -0
  95. package/dist/src/semantic-tool-runtime.d.ts +10 -0
  96. package/dist/src/semantic-tool-runtime.js +1157 -0
  97. package/dist/src/semantic-tool-runtime.js.map +1 -0
  98. package/dist/src/semantic-tool-schemas.d.ts +563 -0
  99. package/dist/src/semantic-tool-schemas.js +573 -0
  100. package/dist/src/semantic-tool-schemas.js.map +1 -0
  101. package/dist/src/semantic-tool-value-helpers.d.ts +5 -0
  102. package/dist/src/semantic-tool-value-helpers.js +27 -0
  103. package/dist/src/semantic-tool-value-helpers.js.map +1 -0
  104. package/dist/src/store-event-presentation.d.ts +17 -0
  105. package/dist/src/store-event-presentation.js +33 -0
  106. package/dist/src/store-event-presentation.js.map +1 -0
  107. package/dist/src/store.d.ts +3 -16
  108. package/dist/src/store.js +2 -30
  109. package/dist/src/store.js.map +1 -1
  110. package/dist/src/terminal-action-projection.d.ts +2 -98
  111. package/dist/src/terminal-action-projection.js +13 -215
  112. package/dist/src/terminal-action-projection.js.map +1 -1
  113. package/dist/src/terminal-agent-bridge.d.ts +14 -340
  114. package/dist/src/terminal-agent-bridge.js +155 -3226
  115. package/dist/src/terminal-agent-bridge.js.map +1 -1
  116. package/dist/src/terminal-approval-cli-adapter.d.ts +17 -0
  117. package/dist/src/terminal-approval-cli-adapter.js +921 -0
  118. package/dist/src/terminal-approval-cli-adapter.js.map +1 -0
  119. package/dist/src/terminal-command-cli-adapter.d.ts +2 -429
  120. package/dist/src/terminal-command-cli-adapter.js +344 -6061
  121. package/dist/src/terminal-command-cli-adapter.js.map +1 -1
  122. package/dist/src/terminal-command-cli-ports.d.ts +443 -0
  123. package/dist/src/terminal-command-cli-ports.js +2 -0
  124. package/dist/src/terminal-command-cli-ports.js.map +1 -0
  125. package/dist/src/terminal-command-dispatch-preparation.d.ts +81 -0
  126. package/dist/src/terminal-command-dispatch-preparation.js +209 -0
  127. package/dist/src/terminal-command-dispatch-preparation.js.map +1 -0
  128. package/dist/src/terminal-command-dispatch-transport.d.ts +35 -0
  129. package/dist/src/terminal-command-dispatch-transport.js +859 -0
  130. package/dist/src/terminal-command-dispatch-transport.js.map +1 -0
  131. package/dist/src/terminal-command-foreground-proof.d.ts +32 -0
  132. package/dist/src/terminal-command-foreground-proof.js +72 -0
  133. package/dist/src/terminal-command-foreground-proof.js.map +1 -0
  134. package/dist/src/terminal-command-send-preflight.d.ts +41 -0
  135. package/dist/src/terminal-command-send-preflight.js +86 -0
  136. package/dist/src/terminal-command-send-preflight.js.map +1 -0
  137. package/dist/src/terminal-composer-classifier.d.ts +55 -0
  138. package/dist/src/terminal-composer-classifier.js +638 -0
  139. package/dist/src/terminal-composer-classifier.js.map +1 -0
  140. package/dist/src/terminal-dispatch-recovery-authority.d.ts +56 -0
  141. package/dist/src/terminal-dispatch-recovery-authority.js +251 -0
  142. package/dist/src/terminal-dispatch-recovery-authority.js.map +1 -0
  143. package/dist/src/terminal-dispatch-recovery-cli-adapter.d.ts +1 -9
  144. package/dist/src/terminal-dispatch-recovery-cli-adapter.js +5 -240
  145. package/dist/src/terminal-dispatch-recovery-cli-adapter.js.map +1 -1
  146. package/dist/src/terminal-handoff-cli-adapter.d.ts +1 -11
  147. package/dist/src/terminal-handoff-cli-adapter.js +2 -39
  148. package/dist/src/terminal-handoff-cli-adapter.js.map +1 -1
  149. package/dist/src/terminal-human-explicit-send-cli-adapter.d.ts +25 -0
  150. package/dist/src/terminal-human-explicit-send-cli-adapter.js +903 -0
  151. package/dist/src/terminal-human-explicit-send-cli-adapter.js.map +1 -0
  152. package/dist/src/terminal-identity-authority-cli-adapter.d.ts +1 -6
  153. package/dist/src/terminal-identity-authority-cli-adapter.js +3 -33
  154. package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -1
  155. package/dist/src/terminal-interaction-cli-adapter.js +209 -210
  156. package/dist/src/terminal-interaction-cli-adapter.js.map +1 -1
  157. package/dist/src/terminal-interaction-core.d.ts +0 -2
  158. package/dist/src/terminal-interaction-core.js +4 -3
  159. package/dist/src/terminal-interaction-core.js.map +1 -1
  160. package/dist/src/terminal-interaction-protocol.d.ts +21 -0
  161. package/dist/src/terminal-interaction-protocol.js +74 -0
  162. package/dist/src/terminal-interaction-protocol.js.map +1 -1
  163. package/dist/src/terminal-interaction-response-bridge.d.ts +126 -0
  164. package/dist/src/terminal-interaction-response-bridge.js +579 -0
  165. package/dist/src/terminal-interaction-response-bridge.js.map +1 -0
  166. package/dist/src/terminal-interaction-response-transaction.d.ts +44 -0
  167. package/dist/src/terminal-interaction-response-transaction.js +56 -0
  168. package/dist/src/terminal-interaction-response-transaction.js.map +1 -0
  169. package/dist/src/terminal-list-action-policy.d.ts +43 -0
  170. package/dist/src/terminal-list-action-policy.js +164 -0
  171. package/dist/src/terminal-list-action-policy.js.map +1 -0
  172. package/dist/src/terminal-list-cli-adapter.d.ts +6 -36
  173. package/dist/src/terminal-list-cli-adapter.js +241 -1946
  174. package/dist/src/terminal-list-cli-adapter.js.map +1 -1
  175. package/dist/src/terminal-list-facts.d.ts +129 -0
  176. package/dist/src/terminal-list-facts.js +179 -0
  177. package/dist/src/terminal-list-facts.js.map +1 -0
  178. package/dist/src/terminal-list-inventory.d.ts +59 -0
  179. package/dist/src/terminal-list-inventory.js +194 -0
  180. package/dist/src/terminal-list-inventory.js.map +1 -0
  181. package/dist/src/terminal-list-ownership-service.d.ts +118 -0
  182. package/dist/src/terminal-list-ownership-service.js +1003 -0
  183. package/dist/src/terminal-list-ownership-service.js.map +1 -0
  184. package/dist/src/terminal-list-projection-service.d.ts +49 -0
  185. package/dist/src/terminal-list-projection-service.js +407 -0
  186. package/dist/src/terminal-list-projection-service.js.map +1 -0
  187. package/dist/src/terminal-list-renderer.d.ts +11 -11
  188. package/dist/src/terminal-list-renderer.js +168 -119
  189. package/dist/src/terminal-list-renderer.js.map +1 -1
  190. package/dist/src/terminal-managed-send-cli-adapter.d.ts +33 -0
  191. package/dist/src/terminal-managed-send-cli-adapter.js +994 -0
  192. package/dist/src/terminal-managed-send-cli-adapter.js.map +1 -0
  193. package/dist/src/terminal-managed-turn-list-action-policy.d.ts +47 -0
  194. package/dist/src/terminal-managed-turn-list-action-policy.js +64 -0
  195. package/dist/src/terminal-managed-turn-list-action-policy.js.map +1 -0
  196. package/dist/src/terminal-model-control-action-policy.d.ts +60 -0
  197. package/dist/src/terminal-model-control-action-policy.js +96 -0
  198. package/dist/src/terminal-model-control-action-policy.js.map +1 -0
  199. package/dist/src/terminal-model-control-availability.d.ts +68 -0
  200. package/dist/src/terminal-model-control-availability.js +157 -0
  201. package/dist/src/terminal-model-control-availability.js.map +1 -0
  202. package/dist/src/terminal-model-control-bridge.d.ts +48 -0
  203. package/dist/src/terminal-model-control-bridge.js +259 -0
  204. package/dist/src/terminal-model-control-bridge.js.map +1 -0
  205. package/dist/src/terminal-model-control-profile.d.ts +55 -0
  206. package/dist/src/terminal-model-control-profile.js +137 -0
  207. package/dist/src/terminal-model-control-profile.js.map +1 -0
  208. package/dist/src/terminal-model-control-subject.d.ts +34 -0
  209. package/dist/src/terminal-model-control-subject.js +58 -0
  210. package/dist/src/terminal-model-control-subject.js.map +1 -0
  211. package/dist/src/terminal-model-control-transaction.d.ts +19 -0
  212. package/dist/src/terminal-model-control-transaction.js +39 -0
  213. package/dist/src/terminal-model-control-transaction.js.map +1 -0
  214. package/dist/src/terminal-model-control.d.ts +37 -18
  215. package/dist/src/terminal-model-control.js +285 -194
  216. package/dist/src/terminal-model-control.js.map +1 -1
  217. package/dist/src/terminal-monitor-application-service.js +50 -17
  218. package/dist/src/terminal-monitor-application-service.js.map +1 -1
  219. package/dist/src/terminal-native-inspection-bridge.d.ts +211 -0
  220. package/dist/src/terminal-native-inspection-bridge.js +1127 -0
  221. package/dist/src/terminal-native-inspection-bridge.js.map +1 -0
  222. package/dist/src/terminal-runtime-cli-adapter.d.ts +2 -2
  223. package/dist/src/terminal-runtime-cli-adapter.js.map +1 -1
  224. package/dist/src/terminal-submission-retry-application.d.ts +24 -0
  225. package/dist/src/terminal-submission-retry-application.js +402 -0
  226. package/dist/src/terminal-submission-retry-application.js.map +1 -0
  227. package/dist/src/terminal-submission-retry-ports.d.ts +30 -0
  228. package/dist/src/terminal-submission-retry-ports.js +2 -0
  229. package/dist/src/terminal-submission-retry-ports.js.map +1 -0
  230. package/dist/src/terminal-submission-retry-reconciliation.d.ts +236 -0
  231. package/dist/src/terminal-submission-retry-reconciliation.js +1130 -0
  232. package/dist/src/terminal-submission-retry-reconciliation.js.map +1 -0
  233. package/dist/src/terminal-submission-retry-transport.d.ts +58 -0
  234. package/dist/src/terminal-submission-retry-transport.js +675 -0
  235. package/dist/src/terminal-submission-retry-transport.js.map +1 -0
  236. package/dist/src/terminal-text-submission-bridge.d.ts +200 -0
  237. package/dist/src/terminal-text-submission-bridge.js +632 -0
  238. package/dist/src/terminal-text-submission-bridge.js.map +1 -0
  239. package/dist/src/terminal-user-explicit-send-policy.d.ts +29 -0
  240. package/dist/src/terminal-user-explicit-send-policy.js +46 -0
  241. package/dist/src/terminal-user-explicit-send-policy.js.map +1 -0
  242. package/dist/src/terminal-watch-cli-adapter.js +91 -143
  243. package/dist/src/terminal-watch-cli-adapter.js.map +1 -1
  244. package/dist/src/terminal-watch-codec.d.ts +9 -0
  245. package/dist/src/terminal-watch-codec.js +1051 -0
  246. package/dist/src/terminal-watch-codec.js.map +1 -0
  247. package/dist/src/terminal-watch-interaction-response-store.d.ts +19 -0
  248. package/dist/src/terminal-watch-interaction-response-store.js +87 -0
  249. package/dist/src/terminal-watch-interaction-response-store.js.map +1 -0
  250. package/dist/src/terminal-watch-record.d.ts +319 -0
  251. package/dist/src/terminal-watch-record.js +742 -0
  252. package/dist/src/terminal-watch-record.js.map +1 -0
  253. package/dist/src/terminal-watch-service.js +48 -27
  254. package/dist/src/terminal-watch-service.js.map +1 -1
  255. package/dist/src/terminal-watch-store.d.ts +3 -279
  256. package/dist/src/terminal-watch-store.js +5 -1779
  257. package/dist/src/terminal-watch-store.js.map +1 -1
  258. package/package.json +7 -2
  259. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +1 -1
@@ -0,0 +1,602 @@
1
+ import { isTerminalApprovalDecision } from "./terminal-agent-adapter.js";
2
+ import { isRecord, nonBlankString as stringValue } from "./value-guards.js";
3
+ import { buildAkkCommandCliArgs, resolvePluginStoreDir } from "./semantic-tool-command-helpers.js";
4
+ import { consumeSemanticPrivateAuthorityOffer, invalidateSemanticInteractionAuthorityOffersForSubject, rememberSemanticPrivateAuthorityOffer, semanticApprovalAuthorityOfferKey, semanticInteractionAuthorityOfferKey } from "./semantic-private-authority-offers.js";
5
+ import { TERMINAL_INTERACTION_SUBJECT_VERSION, terminalInteractionSubjectId, validateAnyTerminalInteractionProjection, validateAnyTerminalInteractionResponse } from "./terminal-interaction-protocol.js";
6
+ import { runHostAwareCli } from "./semantic-tool-relay.js";
7
+ import { publicTurnIdentity } from "./semantic-tool-presentation.js";
8
+ import { numberString, pushOptional, requiredControllerSessionId, requiredControllerSessionKey, requiredString, requiredTerminalInteractionIdentifier } from "./semantic-tool-arguments.js";
9
+ const HANDOFF_AUTHORITY_KIND = "handoff";
10
+ export const RECONCILE_BINDING_AUTHORITY_KIND = "reconcile_binding";
11
+ const MODEL_OPTIONS_AUTHORITY_KIND = "model_options";
12
+ async function privateList(api, options = {}) {
13
+ const config = isRecord(api.pluginConfig) ? api.pluginConfig : {};
14
+ const args = ["list"];
15
+ if (options.reconcile !== false)
16
+ args.push("--reconcile");
17
+ pushOptional(args, "--store-dir", resolvePluginStoreDir(config));
18
+ pushOptional(args, "--idle-timeout-minutes", numberString(config.idleTimeoutMinutes));
19
+ return runHostAwareCli(api, args);
20
+ }
21
+ export async function privateThreadDiscovery(api, terminalId) {
22
+ const config = isRecord(api.pluginConfig) ? api.pluginConfig : {};
23
+ const args = [
24
+ "list-resumable-threads",
25
+ "--terminal",
26
+ terminalId
27
+ ];
28
+ pushOptional(args, "--store-dir", resolvePluginStoreDir(config));
29
+ pushOptional(args, "--codex-home", stringValue(config.codexHome));
30
+ return runHostAwareCli(api, args);
31
+ }
32
+ export function rememberDisplayedModelOptionsOffer(api, sessionKeyValue, sessionIdValue, requestedTerminalIdValue, result) {
33
+ const sessionKey = requiredControllerSessionKey(sessionKeyValue);
34
+ const sessionId = requiredControllerSessionId(sessionIdValue);
35
+ const requestedTerminalId = requiredString(requestedTerminalIdValue, "terminal_id");
36
+ if (!isRecord(result)) {
37
+ throw new Error("model-options returned an invalid result");
38
+ }
39
+ const terminalId = requiredString(result.terminal_id, "model-options terminal_id");
40
+ if (terminalId !== requestedTerminalId) {
41
+ throw new Error("model-options returned a different terminal");
42
+ }
43
+ const scope = requiredModelSwitchScope(result.agent, result.scope);
44
+ const models = modelOptionsCatalog(result.models);
45
+ const args = setModelActionArguments(result);
46
+ if (stringValue(args.terminal ?? args.terminal_id) !== terminalId) {
47
+ throw new Error("set-model action belongs to a different terminal");
48
+ }
49
+ const catalogFingerprint = requiredString(args.expected_catalog_fingerprint, "current internal model catalog authority");
50
+ if (catalogFingerprint !== stringValue(result.catalog_fingerprint)) {
51
+ throw new Error("set-model action does not match the displayed catalog");
52
+ }
53
+ const key = modelOptionsOfferKey(sessionKey, sessionId, terminalId);
54
+ consumeSemanticPrivateAuthorityOffer(api, key);
55
+ rememberSemanticPrivateAuthorityOffer(api, key, {
56
+ fingerprint: catalogFingerprint,
57
+ args,
58
+ scope,
59
+ models
60
+ });
61
+ }
62
+ function modelOptionsCatalog(value) {
63
+ if (!Array.isArray(value) || value.length === 0) {
64
+ throw new Error("model-options returned no semantic model choices");
65
+ }
66
+ const models = value.map((entry) => {
67
+ if (!isRecord(entry))
68
+ throw new Error("model-options returned an invalid model");
69
+ const id = requiredModelSemanticValue(entry.id, "model id", 160);
70
+ if (!Array.isArray(entry.reasoning_efforts)) {
71
+ throw new Error(`model ${id} has no reasoning-effort catalog`);
72
+ }
73
+ const reasoningEfforts = entry.reasoning_efforts.map((effort) => requiredReasoningEffort(effort, `reasoning effort for ${id}`));
74
+ if (new Set(reasoningEfforts).size !== reasoningEfforts.length) {
75
+ throw new Error(`model ${id} has duplicate reasoning efforts`);
76
+ }
77
+ return { id, reasoning_efforts: reasoningEfforts };
78
+ });
79
+ const ids = models.map((model) => String(model.id));
80
+ if (new Set(ids).size !== ids.length) {
81
+ throw new Error("model-options returned duplicate model ids");
82
+ }
83
+ return models;
84
+ }
85
+ function setModelActionArguments(result) {
86
+ const availableActions = isRecord(result.available_actions)
87
+ ? result.available_actions
88
+ : undefined;
89
+ const action = isRecord(availableActions?.set_model)
90
+ ? availableActions.set_model
91
+ : undefined;
92
+ if (action?.tool !== "agent_knock_knock_set_model" ||
93
+ !isRecord(action.arguments)) {
94
+ throw new Error("model-options did not advertise a typed set-model action");
95
+ }
96
+ requiredString(action.arguments.expected_binding_token, "current internal set-model binding authority");
97
+ return action.arguments;
98
+ }
99
+ function requiredModelSwitchScope(agentValue, scopeValue) {
100
+ const agent = requiredString(agentValue, "model-options agent");
101
+ const scope = requiredString(scopeValue, "model-options scope");
102
+ const expected = agent === "codex"
103
+ ? "current_and_new_sessions"
104
+ : agent === "claude"
105
+ ? "current_session"
106
+ : undefined;
107
+ if (!expected || scope !== expected) {
108
+ throw new Error("model-options returned an unsupported agent or mutation scope");
109
+ }
110
+ return scope;
111
+ }
112
+ function modelOptionsOfferKey(sessionKey, sessionId, terminalId) {
113
+ return privateAuthorityOfferKey(sessionKey, sessionId, MODEL_OPTIONS_AUTHORITY_KIND, { type: "terminal_id", id: terminalId });
114
+ }
115
+ export function buildPrivateSetModelArgs(api, params, context) {
116
+ assertOnlyModelControlParameters(params, ["terminal_id", "model", "reasoning_effort"], "set_model");
117
+ const terminalId = requiredString(params.terminal_id, "terminal_id");
118
+ const model = requiredModelSemanticValue(params.model, "model", 160);
119
+ const reasoningEffort = requiredReasoningEffort(params.reasoning_effort, "reasoning_effort");
120
+ const offered = consumeSemanticPrivateAuthorityOffer(api, modelOptionsOfferKey(context.sessionKey, context.sessionId, terminalId));
121
+ if (!offered || !isRecord(offered.args) || !Array.isArray(offered.models)) {
122
+ throw new Error("set_model requires current choices shown by agent_knock_knock_model_options in this controller conversation; refresh model options and choose one exact semantic tuple");
123
+ }
124
+ assertOfferedModelTuple(offered.models, model, reasoningEffort);
125
+ const offeredTerminalId = stringValue(offered.args.terminal ?? offered.args.terminal_id);
126
+ if (offeredTerminalId !== terminalId) {
127
+ throw new Error("the displayed set-model action belongs to another terminal");
128
+ }
129
+ const fingerprint = requiredString(offered.args.expected_catalog_fingerprint, "current internal model catalog authority");
130
+ if (fingerprint !== offered.fingerprint) {
131
+ throw new Error("the displayed model catalog authority changed");
132
+ }
133
+ const config = isRecord(api.pluginConfig) ? api.pluginConfig : {};
134
+ const args = buildAkkCommandCliArgs({
135
+ action: "set-model",
136
+ terminalId,
137
+ model,
138
+ reasoningEffort
139
+ }, config, {
140
+ expectedBindingToken: offered.args.expected_binding_token,
141
+ expectedCatalogFingerprint: fingerprint
142
+ });
143
+ if (!args)
144
+ throw new Error("could not build set-model command");
145
+ return args;
146
+ }
147
+ export function assertOnlyModelControlParameters(params, allowed, label) {
148
+ const unexpected = Object.keys(params).filter((key) => !allowed.includes(key));
149
+ if (unexpected.length > 0) {
150
+ throw new Error(`${label} accepts only typed semantic fields; raw commands, keys, menu indexes, scope, labels, tokens, and fingerprints are forbidden`);
151
+ }
152
+ }
153
+ function assertOfferedModelTuple(modelEntries, model, reasoningEffort) {
154
+ const entry = modelEntries.find((candidate) => isRecord(candidate) && candidate.id === model);
155
+ if (!isRecord(entry) || !Array.isArray(entry.reasoning_efforts)) {
156
+ throw new Error("model was not advertised by the current native catalog");
157
+ }
158
+ if (!entry.reasoning_efforts.includes(reasoningEffort)) {
159
+ throw new Error("reasoning_effort was not advertised for this model by the current native catalog");
160
+ }
161
+ }
162
+ function requiredModelSemanticValue(value, label, maxLength) {
163
+ const text = requiredString(value, label);
164
+ if (text.length > maxLength ||
165
+ !/^[A-Za-z0-9][A-Za-z0-9._:/+\-]*$/u.test(text)) {
166
+ throw new Error(`${label} must be one exact advertised semantic id`);
167
+ }
168
+ return text;
169
+ }
170
+ function requiredReasoningEffort(value, label) {
171
+ const text = requiredString(value, label);
172
+ if (text.length > 64 || !/^[a-z][a-z0-9_-]*$/u.test(text)) {
173
+ throw new Error(`${label} must be one exact advertised semantic value`);
174
+ }
175
+ return text;
176
+ }
177
+ export async function privateTerminalActionArguments(api, terminalId, tool, options = {}) {
178
+ return privateActionArguments(api, {
179
+ tool,
180
+ terminalId,
181
+ reconcile: options.reconcile,
182
+ matches: (argumentsValue) => stringValue(argumentsValue.terminal_id) === terminalId
183
+ });
184
+ }
185
+ export async function privateActionArguments(api, input) {
186
+ const result = await privateList(api, { reconcile: input.reconcile });
187
+ const terminals = input.terminalId
188
+ ? terminalRows(result).filter((terminal) => stringValue(terminal.id) === input.terminalId)
189
+ : terminalRows(result);
190
+ if (input.terminalId && terminals.length !== 1) {
191
+ throw new Error(`terminal ${input.terminalId} is not uniquely present in the current AKK list`);
192
+ }
193
+ const candidates = (input.tool === "agent_knock_knock_close"
194
+ ? authoritativeHandoffActionArguments(terminals)
195
+ : terminals.flatMap((terminal) => authoritativeTerminalActionArguments(terminal, input.tool))).filter(input.matches);
196
+ const uniqueCandidates = [...new Map(candidates.map((candidate) => [
197
+ JSON.stringify(candidate),
198
+ candidate
199
+ ])).values()];
200
+ if (uniqueCandidates.length !== 1) {
201
+ throw new Error(`the current AKK list does not advertise one exact ${input.tool} action for the requested semantic target`);
202
+ }
203
+ return uniqueCandidates[0];
204
+ }
205
+ export function rememberDisplayedPrivateAuthorityOffers(api, sessionKeyValue, sessionIdValue, result) {
206
+ const sessionKey = stringValue(sessionKeyValue);
207
+ const sessionId = stringValue(sessionIdValue);
208
+ if (!sessionKey || !sessionId || !isRecord(result))
209
+ return;
210
+ rememberDisplayedHandoffActions(api, sessionKey, sessionId, result);
211
+ rememberDisplayedReconcileActions(api, sessionKey, sessionId, result);
212
+ }
213
+ function rememberDisplayedHandoffActions(api, sessionKey, sessionId, result) {
214
+ for (const args of uniqueArgumentObjects(authoritativeHandoffActionArguments(terminalRows(result)))) {
215
+ const turnId = stringValue(args.turn_id ?? args.conversation_id);
216
+ if (!turnId ||
217
+ stringValue(args.reason) !== "superseded_by_human_context_switch" ||
218
+ !stringValue(args.expected_handoff_token)) {
219
+ continue;
220
+ }
221
+ rememberSemanticPrivateAuthorityOffer(api, privateAuthorityOfferKey(sessionKey, sessionId, HANDOFF_AUTHORITY_KIND, { type: "turn_id", id: turnId }), { args });
222
+ }
223
+ }
224
+ function rememberDisplayedReconcileActions(api, sessionKey, sessionId, result) {
225
+ for (const args of uniqueArgumentObjects(terminalRows(result).flatMap((terminal) => authoritativeTerminalActionArguments(terminal, "agent_knock_knock_reconcile_binding")))) {
226
+ const terminalId = stringValue(args.terminal_id);
227
+ const conflictingSessionId = stringValue(args.conflicting_session_id);
228
+ if (!terminalId || !conflictingSessionId)
229
+ continue;
230
+ rememberSemanticPrivateAuthorityOffer(api, privateAuthorityOfferKey(sessionKey, sessionId, RECONCILE_BINDING_AUTHORITY_KIND, { type: "terminal_id", id: terminalId }), { args });
231
+ }
232
+ }
233
+ export function rememberDisplayedApprovalOffer(api, sessionKeyValue, sessionIdValue, result) {
234
+ const sessionKey = stringValue(sessionKeyValue);
235
+ const sessionId = stringValue(sessionIdValue);
236
+ if (!sessionKey || !sessionId || !isRecord(result))
237
+ return;
238
+ const decisionFingerprints = currentApprovalDecisionFingerprints(result);
239
+ const fingerprint = decisionFingerprints.approve_once;
240
+ if (!fingerprint)
241
+ return;
242
+ const target = approvalTargetFromStatus(result);
243
+ if (!target)
244
+ return;
245
+ rememberSemanticPrivateAuthorityOffer(api, semanticApprovalAuthorityOfferKey(sessionKey, sessionId, target), {
246
+ fingerprint,
247
+ decision_fingerprints: decisionFingerprints
248
+ });
249
+ }
250
+ export function rememberDisplayedInteractionOffer(api, sessionKeyValue, sessionIdValue, result) {
251
+ const sessionKey = stringValue(sessionKeyValue);
252
+ const sessionId = stringValue(sessionIdValue);
253
+ if (!sessionKey || !sessionId || !isRecord(result))
254
+ return;
255
+ const displayed = displayedInteractionStatus(result);
256
+ if (!displayed)
257
+ return;
258
+ const expectedSubjectId = stringValue(displayed.expectedSubjectId);
259
+ if (!expectedSubjectId || expectedSubjectId === "unknown")
260
+ return;
261
+ invalidateSemanticInteractionAuthorityOffersForSubject(api, sessionKey, sessionId, displayed.expectedSubjectKind, expectedSubjectId);
262
+ const fingerprint = stringValue(displayed.fields.interaction_prompt_fingerprint);
263
+ if (!isExactInteractionFingerprint(fingerprint))
264
+ return;
265
+ let interactionState;
266
+ try {
267
+ interactionState = validateAnyTerminalInteractionProjection(displayed.fields.interaction_state);
268
+ }
269
+ catch {
270
+ return;
271
+ }
272
+ const subject = interactionProjectionSubject(interactionState);
273
+ if (interactionState.state !== "pending" ||
274
+ interactionState.capabilities.respond !== true ||
275
+ subject.kind !== displayed.expectedSubjectKind ||
276
+ subject.id !== expectedSubjectId ||
277
+ (interactionState.version === TERMINAL_INTERACTION_SUBJECT_VERSION &&
278
+ (interactionState.response_authority !== "executable" ||
279
+ interactionState.prompt_fingerprint !== fingerprint))) {
280
+ return;
281
+ }
282
+ rememberSemanticPrivateAuthorityOffer(api, semanticInteractionAuthorityOfferKey(sessionKey, sessionId, subject.kind, subject.id, interactionState.interaction_id), {
283
+ fingerprint,
284
+ interaction_state: interactionState
285
+ });
286
+ }
287
+ export function invalidateRequestedInteractionOffers(api, sessionKeyValue, sessionIdValue, params) {
288
+ const sessionKey = stringValue(sessionKeyValue);
289
+ const sessionId = stringValue(sessionIdValue);
290
+ if (!sessionKey || !sessionId)
291
+ return;
292
+ const watchId = stringValue(params.watch_id);
293
+ if (watchId) {
294
+ invalidateSemanticInteractionAuthorityOffersForSubject(api, sessionKey, sessionId, "terminal_watch", watchId);
295
+ return;
296
+ }
297
+ const turnId = stringValue(params.turn_id);
298
+ if (!turnId)
299
+ return;
300
+ invalidateSemanticInteractionAuthorityOffersForSubject(api, sessionKey, sessionId, "managed_turn", turnId);
301
+ }
302
+ function displayedInteractionStatus(result) {
303
+ const watch = isRecord(result.watch) ? result.watch : undefined;
304
+ if (watch) {
305
+ return {
306
+ fields: watch,
307
+ expectedSubjectKind: "terminal_watch",
308
+ expectedSubjectId: stringValue(watch.watch_id)
309
+ };
310
+ }
311
+ const terminalStatus = isRecord(result.terminal_status)
312
+ ? result.terminal_status
313
+ : undefined;
314
+ if (terminalStatus) {
315
+ return {
316
+ fields: terminalStatus,
317
+ expectedSubjectKind: "managed_turn",
318
+ expectedSubjectId: publicTurnIdentity(result).turnId
319
+ };
320
+ }
321
+ if (result.interaction_state === undefined)
322
+ return undefined;
323
+ const watchId = stringValue(result.watch_id);
324
+ return {
325
+ fields: result,
326
+ expectedSubjectKind: watchId ? "terminal_watch" : "managed_turn",
327
+ expectedSubjectId: watchId ?? publicTurnIdentity(result).turnId
328
+ };
329
+ }
330
+ function interactionProjectionSubject(projection) {
331
+ if (projection.version === TERMINAL_INTERACTION_SUBJECT_VERSION) {
332
+ return {
333
+ kind: projection.subject.kind,
334
+ id: terminalInteractionSubjectId(projection.subject)
335
+ };
336
+ }
337
+ return { kind: "managed_turn", id: projection.turn_id };
338
+ }
339
+ function approvalTargetFromStatus(result) {
340
+ const conversationId = stringValue(result.conversation_id);
341
+ if (stringValue(result.source) === "terminal_control" ||
342
+ conversationId?.startsWith("terminal:")) {
343
+ return conversationId
344
+ ? { type: "terminal_id", id: conversationId }
345
+ : undefined;
346
+ }
347
+ const { turnId } = publicTurnIdentity(result);
348
+ return turnId && turnId !== "unknown"
349
+ ? { type: "turn_id", id: turnId }
350
+ : undefined;
351
+ }
352
+ function uniqueArgumentObjects(candidates) {
353
+ return [...new Map(candidates.map((args) => [
354
+ JSON.stringify(args),
355
+ args
356
+ ])).values()];
357
+ }
358
+ function privateAuthorityOfferKey(sessionKey, sessionId, kind, target) {
359
+ return { sessionKey, sessionId, kind, target };
360
+ }
361
+ export async function consumeDisplayedPrivateAction(api, input) {
362
+ const offered = consumeSemanticPrivateAuthorityOffer(api, {
363
+ sessionKey: input.sessionKey,
364
+ sessionId: input.sessionId,
365
+ kind: input.kind,
366
+ target: input.target
367
+ });
368
+ if (!offered || !isRecord(offered.args)) {
369
+ throw new Error(`${input.tool} requires a current action shown by AKK list in this controller session; refresh list, review it, and explicitly confirm again`);
370
+ }
371
+ const current = await privateActionArguments(api, input);
372
+ if (JSON.stringify(current) !== JSON.stringify(offered.args)) {
373
+ throw new Error(`${input.tool} authority changed after it was shown; refresh AKK list, review the current action, and explicitly confirm again`);
374
+ }
375
+ return current;
376
+ }
377
+ function terminalRows(result) {
378
+ return Array.isArray(result.terminals)
379
+ ? result.terminals.filter(isRecord)
380
+ : [];
381
+ }
382
+ function authoritativeTerminalActionArguments(terminal, tool) {
383
+ const availableActions = isRecord(terminal.available_actions)
384
+ ? terminal.available_actions
385
+ : undefined;
386
+ if (!availableActions)
387
+ return [];
388
+ return Object.values(availableActions).flatMap((action) => isRecord(action) && action.tool === tool && isRecord(action.arguments)
389
+ ? [action.arguments]
390
+ : []);
391
+ }
392
+ function authoritativeHandoffActionArguments(terminals) {
393
+ return terminals.flatMap((terminal) => {
394
+ const decision = isRecord(terminal.handoff_decision)
395
+ ? terminal.handoff_decision
396
+ : undefined;
397
+ const choices = isRecord(decision?.choices) ? decision.choices : undefined;
398
+ const takeOver = isRecord(choices?.take_over_current)
399
+ ? choices.take_over_current
400
+ : undefined;
401
+ const action = isRecord(takeOver?.action) ? takeOver.action : undefined;
402
+ return decision?.kind === "active_turn_requires_decision" &&
403
+ action?.tool === "agent_knock_knock_close" &&
404
+ action.requires_explicit_user_confirmation === true &&
405
+ isRecord(action.arguments)
406
+ ? [action.arguments]
407
+ : [];
408
+ });
409
+ }
410
+ function currentApprovalFingerprint(result, decision) {
411
+ const fingerprint = isRecord(result)
412
+ ? currentApprovalDecisionFingerprints(result)[decision]
413
+ : undefined;
414
+ if (!fingerprint) {
415
+ throw new Error(`the current status does not contain one exact ${decision} choice; refresh status and ask the user to review it again`);
416
+ }
417
+ return fingerprint;
418
+ }
419
+ export async function buildPrivateApprovalArgs(api, params, { sessionKey, sessionId }) {
420
+ const config = isRecord(api.pluginConfig) ? api.pluginConfig : {};
421
+ const turnId = stringValue(params.turn_id);
422
+ const terminalId = stringValue(params.terminal_id);
423
+ const decisionValue = params.decision ?? "approve_once";
424
+ if (!isTerminalApprovalDecision(decisionValue)) {
425
+ throw new Error("decision must be one of: approve_once, reject");
426
+ }
427
+ const decision = decisionValue;
428
+ if (Boolean(turnId) === Boolean(terminalId)) {
429
+ throw new Error("approve requires exactly one of turn_id or terminal_id");
430
+ }
431
+ if (terminalId && decision !== "approve_once") {
432
+ throw new Error("terminal-scoped approval supports approve_once only; reject requires an exact managed Turn");
433
+ }
434
+ const target = terminalId
435
+ ? { type: "terminal_id", id: terminalId }
436
+ : { type: "turn_id", id: requiredString(turnId, "turn_id") };
437
+ const offered = consumeSemanticPrivateAuthorityOffer(api, semanticApprovalAuthorityOfferKey(sessionKey, sessionId, target));
438
+ const offeredDecisions = isRecord(offered?.decision_fingerprints)
439
+ ? offered.decision_fingerprints
440
+ : undefined;
441
+ const offeredFingerprint = stringValue(offeredDecisions?.[decision]) ??
442
+ (decision === "approve_once" ? stringValue(offered?.fingerprint) : undefined) ??
443
+ (isRecord(offered?.args)
444
+ ? decision === "approve_once"
445
+ ? stringValue(offered.args.expected_approval_fingerprint)
446
+ : undefined
447
+ : undefined);
448
+ if (!isExactApprovalFingerprint(offeredFingerprint)) {
449
+ throw new Error("approve requires a current approval request shown by agent_knock_knock_status in this controller conversation; refresh status, ask the user to review it, and explicitly confirm again");
450
+ }
451
+ const action = terminalId
452
+ ? await privateActionArguments(api, {
453
+ tool: "agent_knock_knock_approve",
454
+ terminalId,
455
+ matches: (argumentsValue) => stringValue(argumentsValue.terminal_id ?? argumentsValue.conversation_id) === terminalId
456
+ })
457
+ : undefined;
458
+ const statusArgs = ["status", "--reconcile"];
459
+ if (terminalId) {
460
+ statusArgs.push("--conversation", terminalId);
461
+ }
462
+ else {
463
+ statusArgs.push("--turn", requiredString(turnId, "turn_id"));
464
+ }
465
+ pushOptional(statusArgs, "--store-dir", resolvePluginStoreDir(config));
466
+ const args = ["approve"];
467
+ if (terminalId) {
468
+ args.push("--conversation", terminalId);
469
+ }
470
+ else {
471
+ args.push("--turn", requiredString(turnId, "turn_id"));
472
+ }
473
+ const currentFingerprint = currentApprovalFingerprint(await runHostAwareCli(api, statusArgs), decision);
474
+ if (currentFingerprint !== offeredFingerprint) {
475
+ throw new Error("the approval request changed after it was shown; refresh AKK status, ask the user to review the current request, and explicitly confirm again");
476
+ }
477
+ args.push("--decision", decision);
478
+ args.push("--expected-approval-fingerprint", currentFingerprint);
479
+ if (terminalId) {
480
+ args.push("--expected-terminal-token", requiredString(action?.expected_terminal_token, "current internal terminal approval authority"));
481
+ }
482
+ pushOptional(args, "--store-dir", resolvePluginStoreDir(config));
483
+ return args;
484
+ }
485
+ export function buildPrivateInteractionResponseArgs(api, params, { sessionKey, sessionId }) {
486
+ const config = isRecord(api.pluginConfig) ? api.pluginConfig : {};
487
+ const requestedSubject = requestedInteractionSubject(params);
488
+ const interactionId = requiredTerminalInteractionIdentifier(params.interaction_id, "interaction_id");
489
+ const offered = consumeSemanticPrivateAuthorityOffer(api, semanticInteractionAuthorityOfferKey(sessionKey, sessionId, requestedSubject.kind, requestedSubject.id, interactionId));
490
+ const fingerprint = stringValue(offered?.fingerprint);
491
+ if (!isExactInteractionFingerprint(fingerprint) ||
492
+ offered?.interaction_state === undefined) {
493
+ throw new Error("respond_interaction requires a current pending interaction shown by agent_knock_knock_status in this controller conversation; refresh status, review the current questions, and respond again");
494
+ }
495
+ const projection = validateAnyTerminalInteractionProjection(offered.interaction_state);
496
+ assertInteractionSubjectMatchesProjection(requestedSubject, projection);
497
+ const responseInput = interactionResponseForProjection(params, projection);
498
+ const response = validateAnyTerminalInteractionResponse(responseInput, projection, {
499
+ // This consumes a still-live, session/incarnation-bound private offer.
500
+ // The CLI/bridge path always performs exact live terminal recaptures
501
+ // before it can reserve or dispatch input, so projection expiry is a
502
+ // recheck trigger rather than proof that the questionnaire disappeared.
503
+ allowExpiredForLiveRecapture: true
504
+ });
505
+ const args = [
506
+ "respond-interaction",
507
+ requestedSubject.cliOption,
508
+ requestedSubject.id,
509
+ "--interaction",
510
+ response.interaction_id,
511
+ "--response-json",
512
+ JSON.stringify(response),
513
+ "--expected-interaction-fingerprint",
514
+ fingerprint,
515
+ "--expected-interaction-expires-at",
516
+ projection.expires_at,
517
+ "--openclaw-session",
518
+ sessionKey
519
+ ];
520
+ pushOptional(args, "--store-dir", resolvePluginStoreDir(config));
521
+ return args;
522
+ }
523
+ function requestedInteractionSubject(params) {
524
+ const hasTurn = Object.hasOwn(params, "turn_id");
525
+ const hasWatch = Object.hasOwn(params, "watch_id");
526
+ if (hasTurn === hasWatch) {
527
+ throw new Error("respond_interaction requires exactly one of turn_id or watch_id");
528
+ }
529
+ return hasTurn
530
+ ? {
531
+ kind: "managed_turn",
532
+ id: requiredTerminalInteractionIdentifier(params.turn_id, "turn_id"),
533
+ cliOption: "--turn"
534
+ }
535
+ : {
536
+ kind: "terminal_watch",
537
+ id: requiredTerminalInteractionIdentifier(params.watch_id, "watch_id"),
538
+ cliOption: "--watch"
539
+ };
540
+ }
541
+ function assertInteractionSubjectMatchesProjection(requested, projection) {
542
+ const projected = interactionProjectionSubject(projection);
543
+ if (requested.kind !== projected.kind || requested.id !== projected.id) {
544
+ throw new Error("respond_interaction target does not match the displayed interaction subject; refresh status and respond to its exact turn_id or watch_id");
545
+ }
546
+ }
547
+ function interactionResponseForProjection(params, projection) {
548
+ if (projection.version !== TERMINAL_INTERACTION_SUBJECT_VERSION) {
549
+ return params;
550
+ }
551
+ return {
552
+ interaction_id: params.interaction_id,
553
+ subject: projection.subject,
554
+ ...(projection.subject.kind === "managed_turn"
555
+ ? { turn_id: params.turn_id }
556
+ : {}),
557
+ answers: params.answers
558
+ };
559
+ }
560
+ function isExactApprovalFingerprint(value) {
561
+ return typeof value === "string" && /^[a-f0-9]{64}$/u.test(value);
562
+ }
563
+ function isExactInteractionFingerprint(value) {
564
+ return typeof value === "string" && /^[a-f0-9]{64}$/u.test(value);
565
+ }
566
+ function currentApprovalDecisionFingerprints(result) {
567
+ const terminalStatus = isRecord(result.terminal_status)
568
+ ? result.terminal_status
569
+ : undefined;
570
+ const states = [
571
+ isRecord(result.approval_state) ? result.approval_state : undefined,
572
+ isRecord(terminalStatus?.approval_state)
573
+ ? terminalStatus.approval_state
574
+ : undefined
575
+ ];
576
+ const found = new Map();
577
+ const remember = (decision, value) => {
578
+ if (!isExactApprovalFingerprint(value))
579
+ return;
580
+ const fingerprints = found.get(decision) ?? new Set();
581
+ fingerprints.add(value);
582
+ found.set(decision, fingerprints);
583
+ };
584
+ for (const state of states) {
585
+ const fingerprint = state?.approvable === true
586
+ ? stringValue(state.fingerprint)
587
+ : undefined;
588
+ remember("approve_once", fingerprint);
589
+ if (state?.approvable !== true || !Array.isArray(state.choices))
590
+ continue;
591
+ for (const choice of state.choices) {
592
+ if (isRecord(choice) &&
593
+ isTerminalApprovalDecision(choice.decision)) {
594
+ remember(choice.decision, choice.fingerprint);
595
+ }
596
+ }
597
+ }
598
+ return Object.fromEntries([...found.entries()].flatMap(([decision, fingerprints]) => fingerprints.size === 1
599
+ ? [[decision, [...fingerprints][0]]]
600
+ : []));
601
+ }
602
+ //# sourceMappingURL=semantic-tool-private-authority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-tool-private-authority.js","sourceRoot":"","sources":["../../src/semantic-tool-private-authority.ts"],"names":[],"mappings":"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"}