@vigil-guard/vge-cc-guard 0.9.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/LICENSE.md +37 -0
  2. package/README.md +441 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +61 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/_lib/install-paths.d.ts +16 -0
  8. package/dist/commands/_lib/install-paths.d.ts.map +1 -0
  9. package/dist/commands/_lib/install-paths.js +46 -0
  10. package/dist/commands/_lib/install-paths.js.map +1 -0
  11. package/dist/commands/_lib/parse-install-flags.d.ts +8 -0
  12. package/dist/commands/_lib/parse-install-flags.d.ts.map +1 -0
  13. package/dist/commands/_lib/parse-install-flags.js +15 -0
  14. package/dist/commands/_lib/parse-install-flags.js.map +1 -0
  15. package/dist/commands/config.d.ts +2 -0
  16. package/dist/commands/config.d.ts.map +1 -0
  17. package/dist/commands/config.js +41 -0
  18. package/dist/commands/config.js.map +1 -0
  19. package/dist/commands/daemon.d.ts +2 -0
  20. package/dist/commands/daemon.d.ts.map +1 -0
  21. package/dist/commands/daemon.js +116 -0
  22. package/dist/commands/daemon.js.map +1 -0
  23. package/dist/commands/doctor.d.ts +2 -0
  24. package/dist/commands/doctor.d.ts.map +1 -0
  25. package/dist/commands/doctor.js +53 -0
  26. package/dist/commands/doctor.js.map +1 -0
  27. package/dist/commands/install-wizard.d.ts +2 -0
  28. package/dist/commands/install-wizard.d.ts.map +1 -0
  29. package/dist/commands/install-wizard.js +85 -0
  30. package/dist/commands/install-wizard.js.map +1 -0
  31. package/dist/commands/install.d.ts +15 -0
  32. package/dist/commands/install.d.ts.map +1 -0
  33. package/dist/commands/install.js +136 -0
  34. package/dist/commands/install.js.map +1 -0
  35. package/dist/commands/reset-session.d.ts +2 -0
  36. package/dist/commands/reset-session.d.ts.map +1 -0
  37. package/dist/commands/reset-session.js +113 -0
  38. package/dist/commands/reset-session.js.map +1 -0
  39. package/dist/commands/uninstall.d.ts +2 -0
  40. package/dist/commands/uninstall.d.ts.map +1 -0
  41. package/dist/commands/uninstall.js +277 -0
  42. package/dist/commands/uninstall.js.map +1 -0
  43. package/dist/daemon/active-conversation-decisions.d.ts +9 -0
  44. package/dist/daemon/active-conversation-decisions.d.ts.map +1 -0
  45. package/dist/daemon/active-conversation-decisions.js +58 -0
  46. package/dist/daemon/active-conversation-decisions.js.map +1 -0
  47. package/dist/daemon/allowlist.d.ts +2 -0
  48. package/dist/daemon/allowlist.d.ts.map +1 -0
  49. package/dist/daemon/allowlist.js +118 -0
  50. package/dist/daemon/allowlist.js.map +1 -0
  51. package/dist/daemon/analysis-source.d.ts +17 -0
  52. package/dist/daemon/analysis-source.d.ts.map +1 -0
  53. package/dist/daemon/analysis-source.js +114 -0
  54. package/dist/daemon/analysis-source.js.map +1 -0
  55. package/dist/daemon/ask-dialog.d.ts +23 -0
  56. package/dist/daemon/ask-dialog.d.ts.map +1 -0
  57. package/dist/daemon/ask-dialog.js +114 -0
  58. package/dist/daemon/ask-dialog.js.map +1 -0
  59. package/dist/daemon/attachment-decision-escrow.d.ts +27 -0
  60. package/dist/daemon/attachment-decision-escrow.d.ts.map +1 -0
  61. package/dist/daemon/attachment-decision-escrow.js +34 -0
  62. package/dist/daemon/attachment-decision-escrow.js.map +1 -0
  63. package/dist/daemon/attachment-input-enforcement.d.ts +11 -0
  64. package/dist/daemon/attachment-input-enforcement.d.ts.map +1 -0
  65. package/dist/daemon/attachment-input-enforcement.js +434 -0
  66. package/dist/daemon/attachment-input-enforcement.js.map +1 -0
  67. package/dist/daemon/audit-decisions.d.ts +51 -0
  68. package/dist/daemon/audit-decisions.d.ts.map +1 -0
  69. package/dist/daemon/audit-decisions.js +178 -0
  70. package/dist/daemon/audit-decisions.js.map +1 -0
  71. package/dist/daemon/audit-logger.d.ts +6 -0
  72. package/dist/daemon/audit-logger.d.ts.map +1 -0
  73. package/dist/daemon/audit-logger.js +6 -0
  74. package/dist/daemon/audit-logger.js.map +1 -0
  75. package/dist/daemon/audit-posttool.d.ts +123 -0
  76. package/dist/daemon/audit-posttool.d.ts.map +1 -0
  77. package/dist/daemon/audit-posttool.js +173 -0
  78. package/dist/daemon/audit-posttool.js.map +1 -0
  79. package/dist/daemon/audit-pretool.d.ts +56 -0
  80. package/dist/daemon/audit-pretool.d.ts.map +1 -0
  81. package/dist/daemon/audit-pretool.js +77 -0
  82. package/dist/daemon/audit-pretool.js.map +1 -0
  83. package/dist/daemon/audit-userprompt.d.ts +113 -0
  84. package/dist/daemon/audit-userprompt.d.ts.map +1 -0
  85. package/dist/daemon/audit-userprompt.js +162 -0
  86. package/dist/daemon/audit-userprompt.js.map +1 -0
  87. package/dist/daemon/blocking-decision-triggers.d.ts +5 -0
  88. package/dist/daemon/blocking-decision-triggers.d.ts.map +1 -0
  89. package/dist/daemon/blocking-decision-triggers.js +40 -0
  90. package/dist/daemon/blocking-decision-triggers.js.map +1 -0
  91. package/dist/daemon/cc-contract-auto-probe.d.ts +40 -0
  92. package/dist/daemon/cc-contract-auto-probe.d.ts.map +1 -0
  93. package/dist/daemon/cc-contract-auto-probe.js +101 -0
  94. package/dist/daemon/cc-contract-auto-probe.js.map +1 -0
  95. package/dist/daemon/cc-contract-probe.d.ts +46 -0
  96. package/dist/daemon/cc-contract-probe.d.ts.map +1 -0
  97. package/dist/daemon/cc-contract-probe.js +138 -0
  98. package/dist/daemon/cc-contract-probe.js.map +1 -0
  99. package/dist/daemon/cc-contract-runtime.d.ts +8 -0
  100. package/dist/daemon/cc-contract-runtime.d.ts.map +1 -0
  101. package/dist/daemon/cc-contract-runtime.js +42 -0
  102. package/dist/daemon/cc-contract-runtime.js.map +1 -0
  103. package/dist/daemon/cc-contract-status.d.ts +40 -0
  104. package/dist/daemon/cc-contract-status.d.ts.map +1 -0
  105. package/dist/daemon/cc-contract-status.js +242 -0
  106. package/dist/daemon/cc-contract-status.js.map +1 -0
  107. package/dist/daemon/confidence-router.d.ts +3 -0
  108. package/dist/daemon/confidence-router.d.ts.map +1 -0
  109. package/dist/daemon/confidence-router.js +34 -0
  110. package/dist/daemon/confidence-router.js.map +1 -0
  111. package/dist/daemon/conversation-context.d.ts +28 -0
  112. package/dist/daemon/conversation-context.d.ts.map +1 -0
  113. package/dist/daemon/conversation-context.js +271 -0
  114. package/dist/daemon/conversation-context.js.map +1 -0
  115. package/dist/daemon/conversation-decision-cleanup.d.ts +2 -0
  116. package/dist/daemon/conversation-decision-cleanup.d.ts.map +1 -0
  117. package/dist/daemon/conversation-decision-cleanup.js +22 -0
  118. package/dist/daemon/conversation-decision-cleanup.js.map +1 -0
  119. package/dist/daemon/conversation-decision-escrow.d.ts +20 -0
  120. package/dist/daemon/conversation-decision-escrow.d.ts.map +1 -0
  121. package/dist/daemon/conversation-decision-escrow.js +78 -0
  122. package/dist/daemon/conversation-decision-escrow.js.map +1 -0
  123. package/dist/daemon/conversation-decision-prompt.d.ts +30 -0
  124. package/dist/daemon/conversation-decision-prompt.d.ts.map +1 -0
  125. package/dist/daemon/conversation-decision-prompt.js +250 -0
  126. package/dist/daemon/conversation-decision-prompt.js.map +1 -0
  127. package/dist/daemon/daemon-instance.d.ts +27 -0
  128. package/dist/daemon/daemon-instance.d.ts.map +1 -0
  129. package/dist/daemon/daemon-instance.js +41 -0
  130. package/dist/daemon/daemon-instance.js.map +1 -0
  131. package/dist/daemon/daemon-ipc.d.ts +29 -0
  132. package/dist/daemon/daemon-ipc.d.ts.map +1 -0
  133. package/dist/daemon/daemon-ipc.js +82 -0
  134. package/dist/daemon/daemon-ipc.js.map +1 -0
  135. package/dist/daemon/daemon-supersede.d.ts +3 -0
  136. package/dist/daemon/daemon-supersede.d.ts.map +1 -0
  137. package/dist/daemon/daemon-supersede.js +126 -0
  138. package/dist/daemon/daemon-supersede.js.map +1 -0
  139. package/dist/daemon/debug-logger.d.ts +5 -0
  140. package/dist/daemon/debug-logger.d.ts.map +1 -0
  141. package/dist/daemon/debug-logger.js +247 -0
  142. package/dist/daemon/debug-logger.js.map +1 -0
  143. package/dist/daemon/decision-broker.d.ts +58 -0
  144. package/dist/daemon/decision-broker.d.ts.map +1 -0
  145. package/dist/daemon/decision-broker.js +340 -0
  146. package/dist/daemon/decision-broker.js.map +1 -0
  147. package/dist/daemon/decision-metrics.d.ts +40 -0
  148. package/dist/daemon/decision-metrics.d.ts.map +1 -0
  149. package/dist/daemon/decision-metrics.js +116 -0
  150. package/dist/daemon/decision-metrics.js.map +1 -0
  151. package/dist/daemon/decision-owner.d.ts +10 -0
  152. package/dist/daemon/decision-owner.d.ts.map +1 -0
  153. package/dist/daemon/decision-owner.js +30 -0
  154. package/dist/daemon/decision-owner.js.map +1 -0
  155. package/dist/daemon/decision-routes.d.ts +7 -0
  156. package/dist/daemon/decision-routes.d.ts.map +1 -0
  157. package/dist/daemon/decision-routes.js +104 -0
  158. package/dist/daemon/decision-routes.js.map +1 -0
  159. package/dist/daemon/decision-timeout.d.ts +3 -0
  160. package/dist/daemon/decision-timeout.d.ts.map +1 -0
  161. package/dist/daemon/decision-timeout.js +5 -0
  162. package/dist/daemon/decision-timeout.js.map +1 -0
  163. package/dist/daemon/decision-transition.d.ts +12 -0
  164. package/dist/daemon/decision-transition.d.ts.map +1 -0
  165. package/dist/daemon/decision-transition.js +8 -0
  166. package/dist/daemon/decision-transition.js.map +1 -0
  167. package/dist/daemon/http-server.d.ts +4 -0
  168. package/dist/daemon/http-server.d.ts.map +1 -0
  169. package/dist/daemon/http-server.js +535 -0
  170. package/dist/daemon/http-server.js.map +1 -0
  171. package/dist/daemon/id-validation.d.ts +2 -0
  172. package/dist/daemon/id-validation.d.ts.map +1 -0
  173. package/dist/daemon/id-validation.js +5 -0
  174. package/dist/daemon/id-validation.js.map +1 -0
  175. package/dist/daemon/path-deny.d.ts +14 -0
  176. package/dist/daemon/path-deny.d.ts.map +1 -0
  177. package/dist/daemon/path-deny.js +88 -0
  178. package/dist/daemon/path-deny.js.map +1 -0
  179. package/dist/daemon/posttool-decision-escrow.d.ts +42 -0
  180. package/dist/daemon/posttool-decision-escrow.d.ts.map +1 -0
  181. package/dist/daemon/posttool-decision-escrow.js +349 -0
  182. package/dist/daemon/posttool-decision-escrow.js.map +1 -0
  183. package/dist/daemon/posttool-decision-state.d.ts +65 -0
  184. package/dist/daemon/posttool-decision-state.d.ts.map +1 -0
  185. package/dist/daemon/posttool-decision-state.js +223 -0
  186. package/dist/daemon/posttool-decision-state.js.map +1 -0
  187. package/dist/daemon/posttool-enforcement.d.ts +7 -0
  188. package/dist/daemon/posttool-enforcement.d.ts.map +1 -0
  189. package/dist/daemon/posttool-enforcement.js +511 -0
  190. package/dist/daemon/posttool-enforcement.js.map +1 -0
  191. package/dist/daemon/posttool-render.d.ts +48 -0
  192. package/dist/daemon/posttool-render.d.ts.map +1 -0
  193. package/dist/daemon/posttool-render.js +335 -0
  194. package/dist/daemon/posttool-render.js.map +1 -0
  195. package/dist/daemon/pretool-decision-escrow.d.ts +51 -0
  196. package/dist/daemon/pretool-decision-escrow.d.ts.map +1 -0
  197. package/dist/daemon/pretool-decision-escrow.js +295 -0
  198. package/dist/daemon/pretool-decision-escrow.js.map +1 -0
  199. package/dist/daemon/pretool-url-gate.d.ts +17 -0
  200. package/dist/daemon/pretool-url-gate.d.ts.map +1 -0
  201. package/dist/daemon/pretool-url-gate.js +60 -0
  202. package/dist/daemon/pretool-url-gate.js.map +1 -0
  203. package/dist/daemon/prompt-input-enforcement.d.ts +18 -0
  204. package/dist/daemon/prompt-input-enforcement.d.ts.map +1 -0
  205. package/dist/daemon/prompt-input-enforcement.js +248 -0
  206. package/dist/daemon/prompt-input-enforcement.js.map +1 -0
  207. package/dist/daemon/reply-parser.d.ts +10 -0
  208. package/dist/daemon/reply-parser.d.ts.map +1 -0
  209. package/dist/daemon/reply-parser.js +81 -0
  210. package/dist/daemon/reply-parser.js.map +1 -0
  211. package/dist/daemon/resolve-escalation-route.d.ts +5 -0
  212. package/dist/daemon/resolve-escalation-route.d.ts.map +1 -0
  213. package/dist/daemon/resolve-escalation-route.js +85 -0
  214. package/dist/daemon/resolve-escalation-route.js.map +1 -0
  215. package/dist/daemon/response-cache.d.ts +14 -0
  216. package/dist/daemon/response-cache.d.ts.map +1 -0
  217. package/dist/daemon/response-cache.js +38 -0
  218. package/dist/daemon/response-cache.js.map +1 -0
  219. package/dist/daemon/security-frame.d.ts +14 -0
  220. package/dist/daemon/security-frame.d.ts.map +1 -0
  221. package/dist/daemon/security-frame.js +96 -0
  222. package/dist/daemon/security-frame.js.map +1 -0
  223. package/dist/daemon/session-hook-routes.d.ts +3 -0
  224. package/dist/daemon/session-hook-routes.d.ts.map +1 -0
  225. package/dist/daemon/session-hook-routes.js +66 -0
  226. package/dist/daemon/session-hook-routes.js.map +1 -0
  227. package/dist/daemon/session-state.d.ts +52 -0
  228. package/dist/daemon/session-state.d.ts.map +1 -0
  229. package/dist/daemon/session-state.js +495 -0
  230. package/dist/daemon/session-state.js.map +1 -0
  231. package/dist/daemon/subagent-lifecycle.d.ts +8 -0
  232. package/dist/daemon/subagent-lifecycle.d.ts.map +1 -0
  233. package/dist/daemon/subagent-lifecycle.js +56 -0
  234. package/dist/daemon/subagent-lifecycle.js.map +1 -0
  235. package/dist/daemon/tool-output-redactor.d.ts +13 -0
  236. package/dist/daemon/tool-output-redactor.d.ts.map +1 -0
  237. package/dist/daemon/tool-output-redactor.js +82 -0
  238. package/dist/daemon/tool-output-redactor.js.map +1 -0
  239. package/dist/daemon/tool-policy.d.ts +16 -0
  240. package/dist/daemon/tool-policy.d.ts.map +1 -0
  241. package/dist/daemon/tool-policy.js +60 -0
  242. package/dist/daemon/tool-policy.js.map +1 -0
  243. package/dist/daemon/tool-response-normalizer.d.ts +11 -0
  244. package/dist/daemon/tool-response-normalizer.d.ts.map +1 -0
  245. package/dist/daemon/tool-response-normalizer.js +67 -0
  246. package/dist/daemon/tool-response-normalizer.js.map +1 -0
  247. package/dist/daemon/truncate.d.ts +3 -0
  248. package/dist/daemon/truncate.d.ts.map +1 -0
  249. package/dist/daemon/truncate.js +22 -0
  250. package/dist/daemon/truncate.js.map +1 -0
  251. package/dist/daemon/url-access-baseline.d.ts +46 -0
  252. package/dist/daemon/url-access-baseline.d.ts.map +1 -0
  253. package/dist/daemon/url-access-baseline.js +154 -0
  254. package/dist/daemon/url-access-baseline.js.map +1 -0
  255. package/dist/daemon/url-block-decisions.d.ts +27 -0
  256. package/dist/daemon/url-block-decisions.d.ts.map +1 -0
  257. package/dist/daemon/url-block-decisions.js +100 -0
  258. package/dist/daemon/url-block-decisions.js.map +1 -0
  259. package/dist/daemon/url-extractor.d.ts +7 -0
  260. package/dist/daemon/url-extractor.d.ts.map +1 -0
  261. package/dist/daemon/url-extractor.js +101 -0
  262. package/dist/daemon/url-extractor.js.map +1 -0
  263. package/dist/daemon/userprompt-decision-escrow.d.ts +45 -0
  264. package/dist/daemon/userprompt-decision-escrow.d.ts.map +1 -0
  265. package/dist/daemon/userprompt-decision-escrow.js +248 -0
  266. package/dist/daemon/userprompt-decision-escrow.js.map +1 -0
  267. package/dist/daemon/vge-client.d.ts +64 -0
  268. package/dist/daemon/vge-client.d.ts.map +1 -0
  269. package/dist/daemon/vge-client.js +453 -0
  270. package/dist/daemon/vge-client.js.map +1 -0
  271. package/dist/daemon/vge-connectivity.d.ts +27 -0
  272. package/dist/daemon/vge-connectivity.d.ts.map +1 -0
  273. package/dist/daemon/vge-connectivity.js +214 -0
  274. package/dist/daemon/vge-connectivity.js.map +1 -0
  275. package/dist/daemon/vge-health-route.d.ts +4 -0
  276. package/dist/daemon/vge-health-route.d.ts.map +1 -0
  277. package/dist/daemon/vge-health-route.js +107 -0
  278. package/dist/daemon/vge-health-route.js.map +1 -0
  279. package/dist/daemon/vge-overload-backpressure.d.ts +51 -0
  280. package/dist/daemon/vge-overload-backpressure.d.ts.map +1 -0
  281. package/dist/daemon/vge-overload-backpressure.js +79 -0
  282. package/dist/daemon/vge-overload-backpressure.js.map +1 -0
  283. package/dist/daemon/vge-scan-failure-policy.d.ts +8 -0
  284. package/dist/daemon/vge-scan-failure-policy.d.ts.map +1 -0
  285. package/dist/daemon/vge-scan-failure-policy.js +12 -0
  286. package/dist/daemon/vge-scan-failure-policy.js.map +1 -0
  287. package/dist/shared/audit-writer.d.ts +9 -0
  288. package/dist/shared/audit-writer.d.ts.map +1 -0
  289. package/dist/shared/audit-writer.js +72 -0
  290. package/dist/shared/audit-writer.js.map +1 -0
  291. package/dist/shared/blocking-decision-choices.d.ts +13 -0
  292. package/dist/shared/blocking-decision-choices.d.ts.map +1 -0
  293. package/dist/shared/blocking-decision-choices.js +40 -0
  294. package/dist/shared/blocking-decision-choices.js.map +1 -0
  295. package/dist/shared/blocking-decision-reply.d.ts +13 -0
  296. package/dist/shared/blocking-decision-reply.d.ts.map +1 -0
  297. package/dist/shared/blocking-decision-reply.js +78 -0
  298. package/dist/shared/blocking-decision-reply.js.map +1 -0
  299. package/dist/shared/build-stamp.d.ts +7 -0
  300. package/dist/shared/build-stamp.d.ts.map +1 -0
  301. package/dist/shared/build-stamp.js +23 -0
  302. package/dist/shared/build-stamp.js.map +1 -0
  303. package/dist/shared/config-io.d.ts +41 -0
  304. package/dist/shared/config-io.d.ts.map +1 -0
  305. package/dist/shared/config-io.js +105 -0
  306. package/dist/shared/config-io.js.map +1 -0
  307. package/dist/shared/config-schema.d.ts +467 -0
  308. package/dist/shared/config-schema.d.ts.map +1 -0
  309. package/dist/shared/config-schema.js +281 -0
  310. package/dist/shared/config-schema.js.map +1 -0
  311. package/dist/shared/daemon-token.d.ts +7 -0
  312. package/dist/shared/daemon-token.d.ts.map +1 -0
  313. package/dist/shared/daemon-token.js +45 -0
  314. package/dist/shared/daemon-token.js.map +1 -0
  315. package/dist/shared/detect-os-user.d.ts +8 -0
  316. package/dist/shared/detect-os-user.d.ts.map +1 -0
  317. package/dist/shared/detect-os-user.js +34 -0
  318. package/dist/shared/detect-os-user.js.map +1 -0
  319. package/dist/shared/effective-client-id.d.ts +6 -0
  320. package/dist/shared/effective-client-id.d.ts.map +1 -0
  321. package/dist/shared/effective-client-id.js +22 -0
  322. package/dist/shared/effective-client-id.js.map +1 -0
  323. package/dist/shared/ipc-address.d.ts +10 -0
  324. package/dist/shared/ipc-address.d.ts.map +1 -0
  325. package/dist/shared/ipc-address.js +33 -0
  326. package/dist/shared/ipc-address.js.map +1 -0
  327. package/dist/shared/ipc-protocol.d.ts +60 -0
  328. package/dist/shared/ipc-protocol.d.ts.map +1 -0
  329. package/dist/shared/ipc-protocol.js +2 -0
  330. package/dist/shared/ipc-protocol.js.map +1 -0
  331. package/dist/shared/path-match.d.ts +4 -0
  332. package/dist/shared/path-match.d.ts.map +1 -0
  333. package/dist/shared/path-match.js +15 -0
  334. package/dist/shared/path-match.js.map +1 -0
  335. package/dist/shared/private-file.d.ts +17 -0
  336. package/dist/shared/private-file.d.ts.map +1 -0
  337. package/dist/shared/private-file.js +144 -0
  338. package/dist/shared/private-file.js.map +1 -0
  339. package/dist/shared/runtime-lock.d.ts +30 -0
  340. package/dist/shared/runtime-lock.d.ts.map +1 -0
  341. package/dist/shared/runtime-lock.js +142 -0
  342. package/dist/shared/runtime-lock.js.map +1 -0
  343. package/dist/shared/system-ca.d.ts +2 -0
  344. package/dist/shared/system-ca.d.ts.map +1 -0
  345. package/dist/shared/system-ca.js +31 -0
  346. package/dist/shared/system-ca.js.map +1 -0
  347. package/dist/shared/types.d.ts +172 -0
  348. package/dist/shared/types.d.ts.map +1 -0
  349. package/dist/shared/types.js +2 -0
  350. package/dist/shared/types.js.map +1 -0
  351. package/dist/shared/url-allowlist.d.ts +4 -0
  352. package/dist/shared/url-allowlist.d.ts.map +1 -0
  353. package/dist/shared/url-allowlist.js +33 -0
  354. package/dist/shared/url-allowlist.js.map +1 -0
  355. package/dist/shared/url-patterns.d.ts +12 -0
  356. package/dist/shared/url-patterns.d.ts.map +1 -0
  357. package/dist/shared/url-patterns.js +165 -0
  358. package/dist/shared/url-patterns.js.map +1 -0
  359. package/dist/shared/vge-url.d.ts +16 -0
  360. package/dist/shared/vge-url.d.ts.map +1 -0
  361. package/dist/shared/vge-url.js +75 -0
  362. package/dist/shared/vge-url.js.map +1 -0
  363. package/dist/shared/vge-verification.d.ts +18 -0
  364. package/dist/shared/vge-verification.d.ts.map +1 -0
  365. package/dist/shared/vge-verification.js +24 -0
  366. package/dist/shared/vge-verification.js.map +1 -0
  367. package/dist/shim/daemon-start-lock.d.ts +13 -0
  368. package/dist/shim/daemon-start-lock.d.ts.map +1 -0
  369. package/dist/shim/daemon-start-lock.js +26 -0
  370. package/dist/shim/daemon-start-lock.js.map +1 -0
  371. package/dist/shim/index.d.ts +17 -0
  372. package/dist/shim/index.d.ts.map +1 -0
  373. package/dist/shim/index.js +180 -0
  374. package/dist/shim/index.js.map +1 -0
  375. package/dist/shim/inline-resolver-terminal.d.ts +12 -0
  376. package/dist/shim/inline-resolver-terminal.d.ts.map +1 -0
  377. package/dist/shim/inline-resolver-terminal.js +201 -0
  378. package/dist/shim/inline-resolver-terminal.js.map +1 -0
  379. package/dist/shim/inline-resolver-transport.d.ts +15 -0
  380. package/dist/shim/inline-resolver-transport.d.ts.map +1 -0
  381. package/dist/shim/inline-resolver-transport.js +68 -0
  382. package/dist/shim/inline-resolver-transport.js.map +1 -0
  383. package/dist/shim/inline-resolver.d.ts +18 -0
  384. package/dist/shim/inline-resolver.d.ts.map +1 -0
  385. package/dist/shim/inline-resolver.js +152 -0
  386. package/dist/shim/inline-resolver.js.map +1 -0
  387. package/dist/shim/lazy-start.d.ts +2 -0
  388. package/dist/shim/lazy-start.d.ts.map +1 -0
  389. package/dist/shim/lazy-start.js +68 -0
  390. package/dist/shim/lazy-start.js.map +1 -0
  391. package/dist/tui/App.d.ts +7 -0
  392. package/dist/tui/App.d.ts.map +1 -0
  393. package/dist/tui/App.js +62 -0
  394. package/dist/tui/App.js.map +1 -0
  395. package/dist/tui/components/Banner.d.ts +9 -0
  396. package/dist/tui/components/Banner.d.ts.map +1 -0
  397. package/dist/tui/components/Banner.js +29 -0
  398. package/dist/tui/components/Banner.js.map +1 -0
  399. package/dist/tui/components/BlockingDecisionModal.d.ts +11 -0
  400. package/dist/tui/components/BlockingDecisionModal.d.ts.map +1 -0
  401. package/dist/tui/components/BlockingDecisionModal.js +34 -0
  402. package/dist/tui/components/BlockingDecisionModal.js.map +1 -0
  403. package/dist/tui/components/ScreenChrome.d.ts +20 -0
  404. package/dist/tui/components/ScreenChrome.d.ts.map +1 -0
  405. package/dist/tui/components/ScreenChrome.js +30 -0
  406. package/dist/tui/components/ScreenChrome.js.map +1 -0
  407. package/dist/tui/components/SelectList.d.ts +14 -0
  408. package/dist/tui/components/SelectList.d.ts.map +1 -0
  409. package/dist/tui/components/SelectList.js +22 -0
  410. package/dist/tui/components/SelectList.js.map +1 -0
  411. package/dist/tui/components/TextField.d.ts +11 -0
  412. package/dist/tui/components/TextField.d.ts.map +1 -0
  413. package/dist/tui/components/TextField.js +34 -0
  414. package/dist/tui/components/TextField.js.map +1 -0
  415. package/dist/tui/lib/audit-log.d.ts +19 -0
  416. package/dist/tui/lib/audit-log.d.ts.map +1 -0
  417. package/dist/tui/lib/audit-log.js +49 -0
  418. package/dist/tui/lib/audit-log.js.map +1 -0
  419. package/dist/tui/lib/cc-permissions-audit.d.ts +24 -0
  420. package/dist/tui/lib/cc-permissions-audit.d.ts.map +1 -0
  421. package/dist/tui/lib/cc-permissions-audit.js +40 -0
  422. package/dist/tui/lib/cc-permissions-audit.js.map +1 -0
  423. package/dist/tui/lib/cc-permissions-defaults.d.ts +32 -0
  424. package/dist/tui/lib/cc-permissions-defaults.d.ts.map +1 -0
  425. package/dist/tui/lib/cc-permissions-defaults.js +171 -0
  426. package/dist/tui/lib/cc-permissions-defaults.js.map +1 -0
  427. package/dist/tui/lib/cc-permissions-io.d.ts +33 -0
  428. package/dist/tui/lib/cc-permissions-io.d.ts.map +1 -0
  429. package/dist/tui/lib/cc-permissions-io.js +165 -0
  430. package/dist/tui/lib/cc-permissions-io.js.map +1 -0
  431. package/dist/tui/lib/cc-permissions-ops.d.ts +19 -0
  432. package/dist/tui/lib/cc-permissions-ops.d.ts.map +1 -0
  433. package/dist/tui/lib/cc-permissions-ops.js +75 -0
  434. package/dist/tui/lib/cc-permissions-ops.js.map +1 -0
  435. package/dist/tui/lib/cc-permissions-scope.d.ts +15 -0
  436. package/dist/tui/lib/cc-permissions-scope.d.ts.map +1 -0
  437. package/dist/tui/lib/cc-permissions-scope.js +97 -0
  438. package/dist/tui/lib/cc-permissions-scope.js.map +1 -0
  439. package/dist/tui/lib/config-save.d.ts +14 -0
  440. package/dist/tui/lib/config-save.d.ts.map +1 -0
  441. package/dist/tui/lib/config-save.js +39 -0
  442. package/dist/tui/lib/config-save.js.map +1 -0
  443. package/dist/tui/lib/daemon-client.d.ts +67 -0
  444. package/dist/tui/lib/daemon-client.d.ts.map +1 -0
  445. package/dist/tui/lib/daemon-client.js +213 -0
  446. package/dist/tui/lib/daemon-client.js.map +1 -0
  447. package/dist/tui/lib/decision-stream.d.ts +29 -0
  448. package/dist/tui/lib/decision-stream.d.ts.map +1 -0
  449. package/dist/tui/lib/decision-stream.js +77 -0
  450. package/dist/tui/lib/decision-stream.js.map +1 -0
  451. package/dist/tui/lib/number-validate.d.ts +9 -0
  452. package/dist/tui/lib/number-validate.d.ts.map +1 -0
  453. package/dist/tui/lib/number-validate.js +12 -0
  454. package/dist/tui/lib/number-validate.js.map +1 -0
  455. package/dist/tui/lib/session-files.d.ts +9 -0
  456. package/dist/tui/lib/session-files.d.ts.map +1 -0
  457. package/dist/tui/lib/session-files.js +39 -0
  458. package/dist/tui/lib/session-files.js.map +1 -0
  459. package/dist/tui/lib/stats.d.ts +19 -0
  460. package/dist/tui/lib/stats.d.ts.map +1 -0
  461. package/dist/tui/lib/stats.js +72 -0
  462. package/dist/tui/lib/stats.js.map +1 -0
  463. package/dist/tui/lib/test-connection.d.ts +12 -0
  464. package/dist/tui/lib/test-connection.d.ts.map +1 -0
  465. package/dist/tui/lib/test-connection.js +59 -0
  466. package/dist/tui/lib/test-connection.js.map +1 -0
  467. package/dist/tui/lib/tools-policy-ops.d.ts +9 -0
  468. package/dist/tui/lib/tools-policy-ops.d.ts.map +1 -0
  469. package/dist/tui/lib/tools-policy-ops.js +30 -0
  470. package/dist/tui/lib/tools-policy-ops.js.map +1 -0
  471. package/dist/tui/lib/verified-at.d.ts +37 -0
  472. package/dist/tui/lib/verified-at.d.ts.map +1 -0
  473. package/dist/tui/lib/verified-at.js +47 -0
  474. package/dist/tui/lib/verified-at.js.map +1 -0
  475. package/dist/tui/screens/ApiKeys.d.ts +8 -0
  476. package/dist/tui/screens/ApiKeys.d.ts.map +1 -0
  477. package/dist/tui/screens/ApiKeys.js +250 -0
  478. package/dist/tui/screens/ApiKeys.js.map +1 -0
  479. package/dist/tui/screens/AuditViewer.d.ts +8 -0
  480. package/dist/tui/screens/AuditViewer.d.ts.map +1 -0
  481. package/dist/tui/screens/AuditViewer.js +56 -0
  482. package/dist/tui/screens/AuditViewer.js.map +1 -0
  483. package/dist/tui/screens/ContextIngressPolicy.d.ts +7 -0
  484. package/dist/tui/screens/ContextIngressPolicy.d.ts.map +1 -0
  485. package/dist/tui/screens/ContextIngressPolicy.js +145 -0
  486. package/dist/tui/screens/ContextIngressPolicy.js.map +1 -0
  487. package/dist/tui/screens/LiveEvents.d.ts +7 -0
  488. package/dist/tui/screens/LiveEvents.d.ts.map +1 -0
  489. package/dist/tui/screens/LiveEvents.js +72 -0
  490. package/dist/tui/screens/LiveEvents.js.map +1 -0
  491. package/dist/tui/screens/MainMenu.d.ts +11 -0
  492. package/dist/tui/screens/MainMenu.d.ts.map +1 -0
  493. package/dist/tui/screens/MainMenu.js +35 -0
  494. package/dist/tui/screens/MainMenu.js.map +1 -0
  495. package/dist/tui/screens/NativeCcPermissions.d.ts +7 -0
  496. package/dist/tui/screens/NativeCcPermissions.d.ts.map +1 -0
  497. package/dist/tui/screens/NativeCcPermissions.js +249 -0
  498. package/dist/tui/screens/NativeCcPermissions.js.map +1 -0
  499. package/dist/tui/screens/PendingEscalations.d.ts +7 -0
  500. package/dist/tui/screens/PendingEscalations.d.ts.map +1 -0
  501. package/dist/tui/screens/PendingEscalations.js +83 -0
  502. package/dist/tui/screens/PendingEscalations.js.map +1 -0
  503. package/dist/tui/screens/SecurityBaseline.d.ts +7 -0
  504. package/dist/tui/screens/SecurityBaseline.d.ts.map +1 -0
  505. package/dist/tui/screens/SecurityBaseline.js +272 -0
  506. package/dist/tui/screens/SecurityBaseline.js.map +1 -0
  507. package/dist/tui/screens/Stats.d.ts +7 -0
  508. package/dist/tui/screens/Stats.d.ts.map +1 -0
  509. package/dist/tui/screens/Stats.js +36 -0
  510. package/dist/tui/screens/Stats.js.map +1 -0
  511. package/dist/tui/screens/ToolsPolicy.d.ts +7 -0
  512. package/dist/tui/screens/ToolsPolicy.d.ts.map +1 -0
  513. package/dist/tui/screens/ToolsPolicy.js +87 -0
  514. package/dist/tui/screens/ToolsPolicy.js.map +1 -0
  515. package/dist/tui/screens/ViewConfig.d.ts +9 -0
  516. package/dist/tui/screens/ViewConfig.d.ts.map +1 -0
  517. package/dist/tui/screens/ViewConfig.js +117 -0
  518. package/dist/tui/screens/ViewConfig.js.map +1 -0
  519. package/dist/tui/strings.d.ts +97 -0
  520. package/dist/tui/strings.d.ts.map +1 -0
  521. package/dist/tui/strings.js +104 -0
  522. package/dist/tui/strings.js.map +1 -0
  523. package/dist/tui/types.d.ts +5 -0
  524. package/dist/tui/types.d.ts.map +1 -0
  525. package/dist/tui/types.js +2 -0
  526. package/dist/tui/types.js.map +1 -0
  527. package/package.json +74 -0
@@ -0,0 +1,250 @@
1
+ import { parseBlockingDecisionReply, } from '../shared/blocking-decision-reply.js';
2
+ import { decisionOwnerFromDecision, decisionOwnerLabel } from './decision-owner.js';
3
+ export function blockUserPromptWithReason(reason) {
4
+ return {
5
+ decision: 'block',
6
+ reason,
7
+ continue: false,
8
+ stopReason: reason,
9
+ };
10
+ }
11
+ function oneLine(value, maxLength = 220) {
12
+ const normalized = value
13
+ .replace(/\x1B\[[0-?]*[ -/]*[@-~]/g, '')
14
+ .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '')
15
+ .replace(/\s+/g, ' ')
16
+ .trim();
17
+ if (normalized.length <= maxLength)
18
+ return normalized;
19
+ return `${normalized.slice(0, maxLength - 3)}...`;
20
+ }
21
+ function branchScore(value) {
22
+ return value?.score ?? 0;
23
+ }
24
+ export function branchScores(vgeResult) {
25
+ return {
26
+ heuristics: branchScore(vgeResult.branches?.heuristics),
27
+ semantic: branchScore(vgeResult.branches?.semantic),
28
+ llmGuard: branchScore(vgeResult.branches?.llmGuard),
29
+ };
30
+ }
31
+ export function sanitizeUrlLabel(url) {
32
+ try {
33
+ const parsed = new URL(url);
34
+ return `${parsed.origin}${parsed.pathname}${parsed.search ? '?[redacted]' : ''}`;
35
+ }
36
+ catch {
37
+ return url.split('#')[0]?.split('?')[0]?.trim() ?? url;
38
+ }
39
+ }
40
+ export function sanitizeDecisionResourceLabel(label) {
41
+ const urlMatch = label.match(/https?:\/\/[^\s)>\]}]+/i);
42
+ if (!urlMatch)
43
+ return oneLine(label);
44
+ const sanitizedUrl = sanitizeUrlLabel(urlMatch[0]);
45
+ return oneLine(label.replace(urlMatch[0], sanitizedUrl));
46
+ }
47
+ export function parseConversationDecisionReply(prompt) {
48
+ return parseBlockingDecisionReply(prompt);
49
+ }
50
+ function stageLabel(kind) {
51
+ if (kind === 'pretool_url')
52
+ return 'PreTool URL';
53
+ if (kind === 'posttool_output')
54
+ return 'PostTool output';
55
+ if (kind === 'prompt_input')
56
+ return 'Prompt input';
57
+ return 'Attachment input';
58
+ }
59
+ function safetyLine(kind) {
60
+ if (kind === 'pretool_url') {
61
+ return 'Claude has not fetched this URL yet. Allow prepares an exact-resource retry; block keeps it denied.';
62
+ }
63
+ if (kind === 'posttool_output') {
64
+ return 'Raw tool output is quarantined. Claude sees only the safe placeholder until you allow it.';
65
+ }
66
+ if (kind === 'prompt_input') {
67
+ return 'Claude has not used this prompt yet. Allow prepares an exact-prompt retry; block keeps it out of model context.';
68
+ }
69
+ return 'Claude has not used this file attachment yet. Allow prepares an exact-attachment retry; block keeps it out of model context.';
70
+ }
71
+ function blockChoiceLine(kind) {
72
+ if (kind === 'pretool_url') {
73
+ return '1 = block. Keep this resource blocked. This is the default and safest choice.';
74
+ }
75
+ if (kind === 'posttool_output') {
76
+ return '1 = block. Keep this output out of model context. This is the default and safest choice.';
77
+ }
78
+ if (kind === 'prompt_input') {
79
+ return '1 = block. Keep this exact prompt out of model context. This is the default and safest choice.';
80
+ }
81
+ return '1 = block. Keep this file attachment out of model context. This is the default and safest choice.';
82
+ }
83
+ function allowOnceChoiceLine(kind) {
84
+ if (kind === 'prompt_input') {
85
+ return '2 = allow once. Allow only this exact prompt once, then continue from the original blocked prompt unless you add a replacement instruction.';
86
+ }
87
+ if (kind === 'attachment_input') {
88
+ return '2 = allow once. Allow only this exact resource once, then continue from the original blocked prompt unless you add a replacement instruction.';
89
+ }
90
+ return '2 = allow once. Allow only this exact resource once, then ask again next time.';
91
+ }
92
+ function allowSessionChoiceLine(kind) {
93
+ if (kind === 'prompt_input') {
94
+ return '3 = allow for session. Allow this exact prompt until SessionEnd, then continue from the original blocked prompt unless you add a replacement instruction.';
95
+ }
96
+ if (kind === 'attachment_input') {
97
+ return '3 = allow for session. Allow this exact resource until SessionEnd, then continue from the original blocked prompt unless you add a replacement instruction.';
98
+ }
99
+ return '3 = allow for session. Allow this exact resource until SessionEnd.';
100
+ }
101
+ function shortcutLine(kind) {
102
+ if (kind === 'attachment_input' || kind === 'prompt_input') {
103
+ return 'For the single active decision in this session, you can type: 1, 2, 2 <replacement instruction>, 3, or 3 <replacement instruction>.';
104
+ }
105
+ if (kind === 'posttool_output') {
106
+ return 'For the single active decision in this session, you can type: 1, 2, or 3.';
107
+ }
108
+ return 'For the single active decision in this session, you can type: 1, 2 <continue instruction>, or 3 <continue instruction>.';
109
+ }
110
+ function textAliasesLine(kind) {
111
+ if (kind === 'posttool_output') {
112
+ return 'Text aliases also work: block, allow once, allow for session.';
113
+ }
114
+ if (kind === 'prompt_input') {
115
+ return 'Text aliases also work: block, allow once <replacement instruction>, allow for session <replacement instruction>.';
116
+ }
117
+ return 'Text aliases also work: block, allow once <continue instruction>, allow for session <continue instruction>.';
118
+ }
119
+ function allowCommandLine(decision) {
120
+ if (decision.kind === 'posttool_output')
121
+ return `vge allow ${decision.decisionId}`;
122
+ if (decision.kind === 'prompt_input')
123
+ return `vge allow ${decision.decisionId} <replacement instruction>`;
124
+ return `vge allow ${decision.decisionId} <continue instruction>`;
125
+ }
126
+ function allowSessionCommandLine(decision) {
127
+ if (decision.kind === 'posttool_output')
128
+ return `vge allow-session ${decision.decisionId}`;
129
+ if (decision.kind === 'prompt_input')
130
+ return `vge allow-session ${decision.decisionId} <replacement instruction>`;
131
+ return `vge allow-session ${decision.decisionId} <continue instruction>`;
132
+ }
133
+ function localFallbackLine(decision) {
134
+ if (decision.vge.origin === 'local_fallback') {
135
+ return `Local sidecar fallback: ${decision.reason}. VGE did not return a block decision for this input.`;
136
+ }
137
+ return null;
138
+ }
139
+ function vgeDecisionLine(decision) {
140
+ const fallback = localFallbackLine(decision);
141
+ if (fallback)
142
+ return fallback;
143
+ return `VGE: score=${decision.vge.score}`
144
+ + (decision.vge.ruleAction ? ` | ruleAction=${decision.vge.ruleAction}` : '')
145
+ + (decision.vge.decision ? ` | decision=${decision.vge.decision}` : '')
146
+ + (decision.vge.arbiterSignal ? ` | arbiterSignal=${decision.vge.arbiterSignal}` : '');
147
+ }
148
+ export function renderConversationDecisionPrompt(decision) {
149
+ const resourceLabel = sanitizeDecisionResourceLabel(decision.resourceLabel);
150
+ const lines = [
151
+ 'VGE Agent Guard requires your decision.',
152
+ `Stage: ${stageLabel(decision.kind)}`,
153
+ `Decision ID: ${decision.decisionId}`,
154
+ `Owner: ${decisionOwnerLabel(decisionOwnerFromDecision(decision))}`,
155
+ `Tool: ${decision.toolName}`,
156
+ `Resource: ${resourceLabel}`,
157
+ `Reason: ${decision.reason}`,
158
+ vgeDecisionLine(decision),
159
+ '',
160
+ safetyLine(decision.kind),
161
+ '',
162
+ 'Reply in this same Claude Code session with one of these choices:',
163
+ blockChoiceLine(decision.kind),
164
+ allowOnceChoiceLine(decision.kind),
165
+ allowSessionChoiceLine(decision.kind),
166
+ '',
167
+ shortcutLine(decision.kind),
168
+ textAliasesLine(decision.kind),
169
+ 'Any other reply while this decision is active re-shows this prompt and is not sent to Claude.',
170
+ 'No final block is recorded until you choose block explicitly.',
171
+ '',
172
+ 'Exact commands, if you prefer copy/paste:',
173
+ allowCommandLine(decision),
174
+ allowSessionCommandLine(decision),
175
+ `vge block ${decision.decisionId}`,
176
+ ];
177
+ return lines.join('\n');
178
+ }
179
+ export function renderConversationDecisionReask(decision) {
180
+ return [
181
+ 'VGE Agent Guard requires a valid VGE decision before continuing.',
182
+ 'Your last reply did not choose allow or block, so it was not sent to Claude and no final block was recorded.',
183
+ '',
184
+ renderConversationDecisionPrompt(decision),
185
+ ].join('\n');
186
+ }
187
+ export function renderConversationApprovalContext(params) {
188
+ const { decision } = params;
189
+ const resourceLabel = sanitizeDecisionResourceLabel(decision.resourceLabel);
190
+ const stage = stageLabel(decision.kind);
191
+ const tag = decision.kind === 'pretool_url'
192
+ ? 'PRETOOL DECISION'
193
+ : decision.kind === 'posttool_output'
194
+ ? 'POSTTOOL DECISION'
195
+ : decision.kind === 'prompt_input'
196
+ ? 'PROMPT INPUT DECISION'
197
+ : 'ATTACHMENT INPUT DECISION';
198
+ const stageSpecific = (() => {
199
+ if (decision.kind === 'pretool_url') {
200
+ return [
201
+ 'The original PreTool call was stopped before execution.',
202
+ 'The exact resource is now approved. Retry the same tool call now if it is still needed.',
203
+ ];
204
+ }
205
+ if (decision.kind === 'posttool_output') {
206
+ return [
207
+ 'The user approved a quarantined PostToolUse result in this same session.',
208
+ 'Retry the original tool call now if it is still needed.',
209
+ 'Do not use Bash/sed/python/edit workarounds.',
210
+ ];
211
+ }
212
+ if (decision.kind === 'prompt_input') {
213
+ return [
214
+ 'The original prompt text was stopped before Claude used it.',
215
+ 'The exact prompt is now approved.',
216
+ 'Continue from the follow-up instruction below when one is present.',
217
+ ];
218
+ }
219
+ return [
220
+ 'The original prompt attachment was stopped before Claude used it.',
221
+ 'The exact attachment is now approved.',
222
+ 'Continue from the follow-up instruction below when one is present.',
223
+ ];
224
+ })();
225
+ const followUpInstruction = params.residual ||
226
+ ((decision.kind === 'attachment_input' || decision.kind === 'prompt_input') && params.originalPrompt
227
+ ? oneLine(params.originalPrompt, 1000)
228
+ : '');
229
+ return [
230
+ `[VGE APPROVED ${tag}]`,
231
+ ...stageSpecific,
232
+ 'The user\'s latest prompt is a VGE local decision token, not task content.',
233
+ `Treat it as: ${params.choice === 'allow_once' ? 'allow once' : 'allow for session'}.`,
234
+ 'Do not answer about the token itself.',
235
+ followUpInstruction ? `User follow-up instruction: ${followUpInstruction}` : null,
236
+ '',
237
+ `Decision ID: ${decision.decisionId}`,
238
+ `Choice: ${params.choice}`,
239
+ `Stage: ${stage}`,
240
+ `Owner: ${decisionOwnerLabel(decisionOwnerFromDecision(decision))}`,
241
+ `Tool: ${decision.toolName}`,
242
+ `Resource: ${resourceLabel}`,
243
+ params.routerOutcome ? `Router outcome: ${params.routerOutcome}` : null,
244
+ params.contentSizeBytes !== undefined ? `Original size bytes: ${params.contentSizeBytes}` : null,
245
+ params.contentHash ? `Original sha256: ${params.contentHash}` : null,
246
+ `VGE reason: ${decision.reason}`,
247
+ `[/VGE APPROVED ${tag}]`,
248
+ ].filter((line) => line !== null).join('\n');
249
+ }
250
+ //# sourceMappingURL=conversation-decision-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-decision-prompt.js","sourceRoot":"","sources":["../../src/daemon/conversation-decision-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type RuntimeLockAcquireResult, type RuntimeLockOwner } from '../shared/runtime-lock.js';
2
+ export interface DaemonOwner extends RuntimeLockOwner {
3
+ purpose: 'daemon-instance';
4
+ startedAt: string;
5
+ configDir: string;
6
+ socketPath: string;
7
+ tokenPath: string;
8
+ execPath: string;
9
+ argv: string[];
10
+ binaryPath: string;
11
+ binarySha256: string;
12
+ packageVersion: string;
13
+ }
14
+ export declare function resolveDaemonLockDir(configDir?: string): string;
15
+ export declare function buildDaemonOwner(args: {
16
+ configDir: string;
17
+ socketPath: string;
18
+ tokenPath: string;
19
+ }): DaemonOwner;
20
+ export declare function readDaemonOwner(configDir?: string): DaemonOwner | null;
21
+ export declare function acquireDaemonInstanceLock(args: {
22
+ configDir: string;
23
+ socketPath: string;
24
+ tokenPath: string;
25
+ }): RuntimeLockAcquireResult<DaemonOwner>;
26
+ export declare function isDaemonBuildStale(owner: DaemonOwner, current?: import("../shared/build-stamp.js").BuildStamp): boolean;
27
+ //# sourceMappingURL=daemon-instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-instance.d.ts","sourceRoot":"","sources":["../../src/daemon/daemon-instance.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,SAAS,SAAqB,GAAG,MAAM,CAE3E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,WAAW,CAkBd;AAED,wBAAgB,eAAe,CAAC,SAAS,SAAqB,GAAG,WAAW,GAAG,IAAI,CAElF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAGxC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,gDAAsB,GAAG,OAAO,CAE7F"}
@@ -0,0 +1,41 @@
1
+ import fs from 'fs';
2
+ import os from 'os';
3
+ import path from 'path';
4
+ import { currentBuildStamp } from '../shared/build-stamp.js';
5
+ import { acquireRuntimeLock, readRuntimeLockOwner, } from '../shared/runtime-lock.js';
6
+ export function resolveDaemonLockDir(configDir = resolveConfigDir()) {
7
+ return path.join(configDir, 'daemon-instance.lock');
8
+ }
9
+ export function buildDaemonOwner(args) {
10
+ const now = new Date().toISOString();
11
+ const stamp = currentBuildStamp();
12
+ return {
13
+ schemaVersion: 1,
14
+ pid: process.pid,
15
+ createdAt: now,
16
+ purpose: 'daemon-instance',
17
+ startedAt: now,
18
+ configDir: args.configDir,
19
+ socketPath: args.socketPath,
20
+ tokenPath: args.tokenPath,
21
+ execPath: process.execPath,
22
+ argv: [...process.argv],
23
+ binaryPath: stamp.binaryPath,
24
+ binarySha256: stamp.binarySha256,
25
+ packageVersion: stamp.packageVersion,
26
+ };
27
+ }
28
+ export function readDaemonOwner(configDir = resolveConfigDir()) {
29
+ return readRuntimeLockOwner(resolveDaemonLockDir(configDir));
30
+ }
31
+ export function acquireDaemonInstanceLock(args) {
32
+ fs.mkdirSync(args.configDir, { recursive: true });
33
+ return acquireRuntimeLock(resolveDaemonLockDir(args.configDir), buildDaemonOwner(args));
34
+ }
35
+ export function isDaemonBuildStale(owner, current = currentBuildStamp()) {
36
+ return owner.binarySha256 !== current.binarySha256;
37
+ }
38
+ function resolveConfigDir() {
39
+ return process.env['VGE_CC_GUARD_CONFIG_DIR'] ?? path.join(os.homedir(), '.vge-cc-guard');
40
+ }
41
+ //# sourceMappingURL=daemon-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-instance.js","sourceRoot":"","sources":["../../src/daemon/daemon-instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,2BAA2B,CAAC;AAenC,MAAM,UAAU,oBAAoB,CAAC,SAAS,GAAG,gBAAgB,EAAE;IACjE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAIhC;IACC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,iBAAiB;QAC1B,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACvB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAS,GAAG,gBAAgB,EAAE;IAC5D,OAAO,oBAAoB,CAAc,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAIzC;IACC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAkB,EAAE,OAAO,GAAG,iBAAiB,EAAE;IAClF,OAAO,KAAK,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,29 @@
1
+ import * as http from 'http';
2
+ import * as net from 'net';
3
+ type IpcSocket = Pick<net.Socket, 'destroy' | 'once' | 'setTimeout'>;
4
+ export type IpcConnector = (ipcAddress: string) => IpcSocket;
5
+ export type SocketProbeState = {
6
+ state: 'missing';
7
+ } | {
8
+ state: 'live';
9
+ } | {
10
+ state: 'refused';
11
+ code: 'ECONNREFUSED';
12
+ } | {
13
+ state: 'timeout';
14
+ } | {
15
+ state: 'error';
16
+ code?: string;
17
+ message: string;
18
+ };
19
+ export declare function isWindowsNamedPipeAddress(ipcAddress: string): boolean;
20
+ export declare function prepareDaemonIpcAddress(ipcAddress: string): void;
21
+ export declare function probeSocketState(ipcAddress: string, opts?: {
22
+ timeoutMs?: number;
23
+ createConnection?: IpcConnector;
24
+ }): Promise<SocketProbeState>;
25
+ export declare function removeStaleDaemonIpcAddress(ipcAddress: string, probe: SocketProbeState): boolean;
26
+ export declare function cleanupDaemonIpcAddress(ipcAddress: string): void;
27
+ export declare function hardenDaemonIpcAddress(ipcAddress: string, server: Pick<http.Server, 'close'>): Promise<void>;
28
+ export {};
29
+ //# sourceMappingURL=daemon-ipc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-ipc.d.ts","sourceRoot":"","sources":["../../src/daemon/daemon-ipc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAK3B,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAKhE;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,YAAY,CAAA;CAAO,GACjE,OAAO,CAAC,gBAAgB,CAAC,CAkB3B;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAShG;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAGhE;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,82 @@
1
+ import fs from 'fs';
2
+ import * as net from 'net';
3
+ import * as path from 'path';
4
+ import { chmodPrivateDirectorySync, chmodPrivateSync } from '../shared/private-file.js';
5
+ import { debugLogger } from './debug-logger.js';
6
+ export function isWindowsNamedPipeAddress(ipcAddress) {
7
+ return ipcAddress.toLowerCase().startsWith('\\\\.\\pipe\\');
8
+ }
9
+ export function prepareDaemonIpcAddress(ipcAddress) {
10
+ if (isWindowsNamedPipeAddress(ipcAddress))
11
+ return;
12
+ const socketDirectory = path.dirname(ipcAddress);
13
+ fs.mkdirSync(socketDirectory, { recursive: true, mode: 0o700 });
14
+ chmodPrivateDirectorySync(socketDirectory);
15
+ }
16
+ export function probeSocketState(ipcAddress, opts = {}) {
17
+ if (!isWindowsNamedPipeAddress(ipcAddress) && !fs.existsSync(ipcAddress)) {
18
+ return Promise.resolve({ state: 'missing' });
19
+ }
20
+ return new Promise((resolve) => {
21
+ let settled = false;
22
+ let socket;
23
+ const done = (probe) => {
24
+ if (settled)
25
+ return;
26
+ settled = true;
27
+ socket.destroy();
28
+ resolve(probe);
29
+ };
30
+ socket = (opts.createConnection ?? net.createConnection)(ipcAddress);
31
+ socket.once('connect', () => done({ state: 'live' }));
32
+ socket.once('error', (err) => done(probeFromSocketError(err)));
33
+ socket.setTimeout(opts.timeoutMs ?? 250, () => done({ state: 'timeout' }));
34
+ });
35
+ }
36
+ export function removeStaleDaemonIpcAddress(ipcAddress, probe) {
37
+ if (isWindowsNamedPipeAddress(ipcAddress))
38
+ return false;
39
+ if (probe.state !== 'refused')
40
+ return false;
41
+ try {
42
+ fs.unlinkSync(ipcAddress);
43
+ return true;
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ export function cleanupDaemonIpcAddress(ipcAddress) {
50
+ if (isWindowsNamedPipeAddress(ipcAddress))
51
+ return;
52
+ try {
53
+ fs.unlinkSync(ipcAddress);
54
+ }
55
+ catch { /* already gone */ }
56
+ }
57
+ export async function hardenDaemonIpcAddress(ipcAddress, server) {
58
+ if (isWindowsNamedPipeAddress(ipcAddress))
59
+ return;
60
+ try {
61
+ chmodPrivateSync(ipcAddress);
62
+ }
63
+ catch (err) {
64
+ debugLogger().error({ err: String(err), ipcKind: 'filesystem-socket', ipcAddress }, 'daemon socket chmod failed');
65
+ await closeServer(server);
66
+ cleanupDaemonIpcAddress(ipcAddress);
67
+ throw err;
68
+ }
69
+ }
70
+ function probeFromSocketError(err) {
71
+ if (err.code === 'ECONNREFUSED')
72
+ return { state: 'refused', code: 'ECONNREFUSED' };
73
+ if (err.code === 'EAGAIN' || err.code === 'EWOULDBLOCK')
74
+ return { state: 'timeout' };
75
+ if (err.code === 'ENOENT')
76
+ return { state: 'missing' };
77
+ return { state: 'error', code: err.code, message: err.message };
78
+ }
79
+ function closeServer(server) {
80
+ return new Promise((resolve) => server.close(() => resolve()));
81
+ }
82
+ //# sourceMappingURL=daemon-ipc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-ipc.js","sourceRoot":"","sources":["../../src/daemon/daemon-ipc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function resolveLiveDaemonBeforeStart(socketPath: string, configDir: string): Promise<'reuse' | 'stopped'>;
2
+ export declare function canReuseCurrentLockOwner(configDir: string): boolean;
3
+ //# sourceMappingURL=daemon-supersede.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-supersede.d.ts","sourceRoot":"","sources":["../../src/daemon/daemon-supersede.ts"],"names":[],"mappings":"AAiBA,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAqB9B;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGnE"}
@@ -0,0 +1,126 @@
1
+ import * as http from 'http';
2
+ import { currentBuildStamp } from '../shared/build-stamp.js';
3
+ import { readDaemonToken, tokenHeader } from '../shared/daemon-token.js';
4
+ import { isDaemonBuildStale, readDaemonOwner } from './daemon-instance.js';
5
+ import { probeSocketState } from './daemon-ipc.js';
6
+ export async function resolveLiveDaemonBeforeStart(socketPath, configDir) {
7
+ const status = await readLiveDaemonStatus(socketPath);
8
+ const owner = readDaemonOwner(configDir);
9
+ if (owner && status.pid !== owner.pid) {
10
+ throw new Error(`daemon status pid ${status.pid} does not match lock owner pid ${owner.pid}`);
11
+ }
12
+ if (!status.staleBuild)
13
+ return 'reuse';
14
+ if (status.pendingDecisionCount > 0) {
15
+ throw new Error(`stale daemon has ${status.pendingDecisionCount} pending decision(s)`);
16
+ }
17
+ try {
18
+ const stop = await postDaemonControl(socketPath, '/v1/control/stop', {});
19
+ if (stop.status < 200 || stop.status >= 300) {
20
+ throw new Error(`stale daemon stop failed with HTTP ${stop.status}`);
21
+ }
22
+ }
23
+ catch (err) {
24
+ if (!isControlStopTransportClose(err))
25
+ throw err;
26
+ }
27
+ await waitForStoppedDaemon(socketPath, configDir);
28
+ return 'stopped';
29
+ }
30
+ export function canReuseCurrentLockOwner(configDir) {
31
+ const owner = readDaemonOwner(configDir);
32
+ return owner !== null && !isDaemonBuildStale(owner, currentBuildStamp(owner.binaryPath));
33
+ }
34
+ async function readLiveDaemonStatus(socketPath) {
35
+ const response = await postDaemonControl(socketPath, '/v1/control/status', {});
36
+ if (response.status === 401) {
37
+ throw new Error('daemon control status could not be authenticated');
38
+ }
39
+ if (response.status < 200 || response.status >= 300) {
40
+ throw new Error(`daemon control status failed with HTTP ${response.status}`);
41
+ }
42
+ if (typeof response.json !== 'object' || response.json === null) {
43
+ throw new Error('daemon control status response was not JSON');
44
+ }
45
+ const body = response.json;
46
+ if (typeof body['pid'] !== 'number' || !Number.isInteger(body['pid'])) {
47
+ throw new Error('daemon control status did not include pid');
48
+ }
49
+ if (typeof body['staleBuild'] !== 'boolean') {
50
+ throw new Error('daemon control status did not include stale build state');
51
+ }
52
+ const pendingDecisionCount = body['pendingDecisionCount'];
53
+ return {
54
+ pid: body['pid'],
55
+ staleBuild: body['staleBuild'],
56
+ pendingDecisionCount: typeof pendingDecisionCount === 'number' ? pendingDecisionCount : 0,
57
+ };
58
+ }
59
+ function postDaemonControl(socketPath, route, body) {
60
+ return new Promise((resolve, reject) => {
61
+ const token = readDaemonToken();
62
+ if (!token) {
63
+ reject(new Error('daemon token is missing; cannot authenticate control request'));
64
+ return;
65
+ }
66
+ const payload = JSON.stringify(body);
67
+ let settled = false;
68
+ const finish = (outcome) => {
69
+ if (settled)
70
+ return;
71
+ settled = true;
72
+ resolve(outcome);
73
+ };
74
+ const fail = (err) => {
75
+ if (settled)
76
+ return;
77
+ settled = true;
78
+ reject(err);
79
+ };
80
+ const req = http.request({
81
+ socketPath,
82
+ path: route,
83
+ method: 'POST',
84
+ headers: {
85
+ 'Content-Type': 'application/json',
86
+ 'Content-Length': Buffer.byteLength(payload),
87
+ ...tokenHeader(token),
88
+ },
89
+ }, (res) => {
90
+ let raw = '';
91
+ res.on('data', (chunk) => { raw += chunk.toString(); });
92
+ res.on('end', () => {
93
+ try {
94
+ finish({ status: res.statusCode ?? 0, json: JSON.parse(raw) });
95
+ }
96
+ catch {
97
+ finish({ status: res.statusCode ?? 0, json: raw });
98
+ }
99
+ });
100
+ });
101
+ req.on('error', fail);
102
+ req.write(payload);
103
+ req.end();
104
+ });
105
+ }
106
+ async function waitForStoppedDaemon(socketPath, configDir) {
107
+ const deadline = Date.now() + 3_000;
108
+ let delayMs = 100;
109
+ let lastSocketState = 'unknown';
110
+ while (Date.now() < deadline) {
111
+ lastSocketState = (await probeSocketState(socketPath)).state;
112
+ const lockOwner = readDaemonOwner(configDir);
113
+ if (lastSocketState !== 'live' && lockOwner === null)
114
+ return;
115
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
116
+ delayMs = Math.min(250, delayMs + 50);
117
+ }
118
+ throw new Error(`stale daemon did not release socket and instance lock; last socket state: ${lastSocketState}`);
119
+ }
120
+ function isControlStopTransportClose(err) {
121
+ if (!(err instanceof Error) || !('code' in err))
122
+ return false;
123
+ const code = err.code;
124
+ return code === 'EPIPE' || code === 'ECONNRESET';
125
+ }
126
+ //# sourceMappingURL=daemon-supersede.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-supersede.js","sourceRoot":"","sources":["../../src/daemon/daemon-supersede.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Logger } from 'pino';
2
+ export declare function debugLogger(): Logger;
3
+ export declare function _resetForTests(configDirScope?: string): void;
4
+ export declare function _rotateDebugLogIfNeededForTests(): void;
5
+ //# sourceMappingURL=debug-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-logger.d.ts","sourceRoot":"","sources":["../../src/daemon/debug-logger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAqLnC,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAGD,wBAAgB,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CA6B5D;AA4BD,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD"}