@undefineds.co/linx 0.3.25 → 0.3.27

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 (362) hide show
  1. package/README.md +4 -3
  2. package/dist/index.js +3 -832
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/agent-stream-bridge-contract.js +2 -0
  5. package/dist/lib/agent-stream-bridge-contract.js.map +1 -0
  6. package/dist/lib/auto-mode/auth.js +100 -2
  7. package/dist/lib/auto-mode/auth.js.map +1 -1
  8. package/dist/lib/auto-mode/backend-kind.js +13 -0
  9. package/dist/lib/auto-mode/backend-kind.js.map +1 -0
  10. package/dist/lib/auto-mode/display.js +1 -1
  11. package/dist/lib/auto-mode/display.js.map +1 -1
  12. package/dist/lib/auto-mode/format.js +1 -1
  13. package/dist/lib/auto-mode/format.js.map +1 -1
  14. package/dist/lib/auto-mode/hooks/{index.js → registry.js} +1 -1
  15. package/dist/lib/auto-mode/hooks/registry.js.map +1 -0
  16. package/dist/lib/auto-mode/pod-ai.js +1 -14
  17. package/dist/lib/auto-mode/pod-ai.js.map +1 -1
  18. package/dist/lib/auto-mode/pod-approval-store.js +596 -0
  19. package/dist/lib/auto-mode/pod-approval-store.js.map +1 -0
  20. package/dist/lib/auto-mode/pod-approval.js +4 -607
  21. package/dist/lib/auto-mode/pod-approval.js.map +1 -1
  22. package/dist/lib/auto-mode/pod-persistence-builders.js +266 -0
  23. package/dist/lib/auto-mode/pod-persistence-builders.js.map +1 -0
  24. package/dist/lib/auto-mode/pod-persistence.js +1 -281
  25. package/dist/lib/auto-mode/pod-persistence.js.map +1 -1
  26. package/dist/lib/auto-mode/runner.js +41 -378
  27. package/dist/lib/auto-mode/runner.js.map +1 -1
  28. package/dist/lib/auto-mode/runtime.js +25 -0
  29. package/dist/lib/auto-mode/runtime.js.map +1 -0
  30. package/dist/lib/auto-mode/secretary-reaction-window.js +12 -0
  31. package/dist/lib/auto-mode/secretary-reaction-window.js.map +1 -0
  32. package/dist/lib/auto-mode/secretary-runtime-config.js +66 -0
  33. package/dist/lib/auto-mode/secretary-runtime-config.js.map +1 -0
  34. package/dist/lib/auto-mode/secretary.js +2 -64
  35. package/dist/lib/auto-mode/secretary.js.map +1 -1
  36. package/dist/lib/auto-mode/session-log.js +25 -0
  37. package/dist/lib/auto-mode/session-log.js.map +1 -0
  38. package/dist/lib/auto-mode/shell-command.js +172 -0
  39. package/dist/lib/auto-mode/shell-command.js.map +1 -0
  40. package/dist/lib/auto-mode-command.js +2 -1
  41. package/dist/lib/auto-mode-command.js.map +1 -1
  42. package/dist/lib/backend-command-router-contract.js +2 -0
  43. package/dist/lib/backend-command-router-contract.js.map +1 -0
  44. package/dist/lib/{pi-adapter/backend-credentials.js → backend-credentials.js} +8 -8
  45. package/dist/lib/backend-credentials.js.map +1 -0
  46. package/dist/lib/linx-ai-connect-command.js +201 -0
  47. package/dist/lib/linx-ai-connect-command.js.map +1 -0
  48. package/dist/lib/linx-assistant-message-rendering.js +33 -0
  49. package/dist/lib/linx-assistant-message-rendering.js.map +1 -0
  50. package/dist/lib/linx-auto-command-routing.js +53 -0
  51. package/dist/lib/linx-auto-command-routing.js.map +1 -0
  52. package/dist/lib/linx-auto-editor-indicator-host.js +15 -0
  53. package/dist/lib/linx-auto-editor-indicator-host.js.map +1 -0
  54. package/dist/lib/linx-auto-editor-indicator.js +56 -0
  55. package/dist/lib/linx-auto-editor-indicator.js.map +1 -0
  56. package/dist/lib/linx-auto-mode-cli-admission.js +16 -0
  57. package/dist/lib/linx-auto-mode-cli-admission.js.map +1 -0
  58. package/dist/lib/linx-backend-command-router.js +64 -0
  59. package/dist/lib/linx-backend-command-router.js.map +1 -0
  60. package/dist/lib/linx-backend-event-source.js +32 -0
  61. package/dist/lib/linx-backend-event-source.js.map +1 -0
  62. package/dist/lib/linx-chat-completion-projection.js +276 -0
  63. package/dist/lib/linx-chat-completion-projection.js.map +1 -0
  64. package/dist/lib/linx-cloud-errors.js +1 -0
  65. package/dist/lib/linx-cloud-errors.js.map +1 -1
  66. package/dist/lib/linx-cloud-models.js +75 -0
  67. package/dist/lib/linx-cloud-models.js.map +1 -0
  68. package/dist/lib/linx-cloud-runtime-auth.js +146 -0
  69. package/dist/lib/linx-cloud-runtime-auth.js.map +1 -0
  70. package/dist/lib/linx-cloud-runtime-coordinator.js +102 -0
  71. package/dist/lib/linx-cloud-runtime-coordinator.js.map +1 -0
  72. package/dist/lib/linx-codex-plugin-command.js +56 -0
  73. package/dist/lib/linx-codex-plugin-command.js.map +1 -0
  74. package/dist/lib/linx-command-autocomplete.js +123 -0
  75. package/dist/lib/linx-command-autocomplete.js.map +1 -0
  76. package/dist/lib/linx-completion-backend.js +2 -0
  77. package/dist/lib/linx-completion-backend.js.map +1 -0
  78. package/dist/lib/linx-config-command.js +12 -0
  79. package/dist/lib/linx-config-command.js.map +1 -0
  80. package/dist/lib/linx-editor-component-router.js +83 -0
  81. package/dist/lib/linx-editor-component-router.js.map +1 -0
  82. package/dist/lib/linx-extension-ui-context-router.js +43 -0
  83. package/dist/lib/linx-extension-ui-context-router.js.map +1 -0
  84. package/dist/lib/linx-external-open-host.js +8 -0
  85. package/dist/lib/linx-external-open-host.js.map +1 -0
  86. package/dist/lib/linx-external-url.js +16 -0
  87. package/dist/lib/linx-external-url.js.map +1 -0
  88. package/dist/lib/linx-footer-patch.js +52 -0
  89. package/dist/lib/linx-footer-patch.js.map +1 -0
  90. package/dist/lib/linx-input-command-routing.js +65 -0
  91. package/dist/lib/linx-input-command-routing.js.map +1 -0
  92. package/dist/lib/linx-interactive-auth-state-host.js +50 -0
  93. package/dist/lib/linx-interactive-auth-state-host.js.map +1 -0
  94. package/dist/lib/linx-interactive-autocomplete-host.js +32 -0
  95. package/dist/lib/linx-interactive-autocomplete-host.js.map +1 -0
  96. package/dist/lib/linx-interactive-bootstrap.js +66 -0
  97. package/dist/lib/linx-interactive-bootstrap.js.map +1 -0
  98. package/dist/lib/linx-interactive-branding.js +24 -0
  99. package/dist/lib/linx-interactive-branding.js.map +1 -0
  100. package/dist/lib/linx-interactive-chat-text-host.js +16 -0
  101. package/dist/lib/linx-interactive-chat-text-host.js.map +1 -0
  102. package/dist/lib/linx-interactive-command-routing-host.js +31 -0
  103. package/dist/lib/linx-interactive-command-routing-host.js.map +1 -0
  104. package/dist/lib/linx-interactive-command-routing.js +75 -0
  105. package/dist/lib/linx-interactive-command-routing.js.map +1 -0
  106. package/dist/lib/linx-interactive-command-surface.js +16 -0
  107. package/dist/lib/linx-interactive-command-surface.js.map +1 -0
  108. package/dist/lib/linx-interactive-editor-text-host.js +16 -0
  109. package/dist/lib/linx-interactive-editor-text-host.js.map +1 -0
  110. package/dist/lib/linx-interactive-error-display.js +8 -0
  111. package/dist/lib/linx-interactive-error-display.js.map +1 -0
  112. package/dist/lib/linx-interactive-event-router.js +91 -0
  113. package/dist/lib/linx-interactive-event-router.js.map +1 -0
  114. package/dist/lib/linx-interactive-extension-input-host.js +7 -0
  115. package/dist/lib/linx-interactive-extension-input-host.js.map +1 -0
  116. package/dist/lib/linx-interactive-extension-selector-host.js +12 -0
  117. package/dist/lib/linx-interactive-extension-selector-host.js.map +1 -0
  118. package/dist/lib/linx-interactive-header-host.js +14 -0
  119. package/dist/lib/linx-interactive-header-host.js.map +1 -0
  120. package/dist/lib/linx-interactive-lifecycle-host.js +4 -0
  121. package/dist/lib/linx-interactive-lifecycle-host.js.map +1 -0
  122. package/dist/lib/linx-interactive-login-ui-router.js +81 -0
  123. package/dist/lib/linx-interactive-login-ui-router.js.map +1 -0
  124. package/dist/lib/linx-interactive-model-registry-host.js +14 -0
  125. package/dist/lib/linx-interactive-model-registry-host.js.map +1 -0
  126. package/dist/lib/linx-interactive-post-init.js +60 -0
  127. package/dist/lib/linx-interactive-post-init.js.map +1 -0
  128. package/dist/lib/linx-interactive-provider-count-host.js +4 -0
  129. package/dist/lib/linx-interactive-provider-count-host.js.map +1 -0
  130. package/dist/lib/linx-interactive-run-router.js +43 -0
  131. package/dist/lib/linx-interactive-run-router.js.map +1 -0
  132. package/dist/lib/linx-interactive-runtime-host.js +113 -0
  133. package/dist/lib/linx-interactive-runtime-host.js.map +1 -0
  134. package/dist/lib/linx-interactive-selector-host.js +12 -0
  135. package/dist/lib/linx-interactive-selector-host.js.map +1 -0
  136. package/dist/lib/linx-interactive-shell-state.js +215 -0
  137. package/dist/lib/linx-interactive-shell-state.js.map +1 -0
  138. package/dist/lib/linx-interactive-status-display.js +9 -0
  139. package/dist/lib/linx-interactive-status-display.js.map +1 -0
  140. package/dist/lib/linx-interactive-stop-router.js +85 -0
  141. package/dist/lib/linx-interactive-stop-router.js.map +1 -0
  142. package/dist/lib/linx-interactive-streaming-message-host.js +11 -0
  143. package/dist/lib/linx-interactive-streaming-message-host.js.map +1 -0
  144. package/dist/lib/linx-interactive-submit-router.js +63 -0
  145. package/dist/lib/linx-interactive-submit-router.js.map +1 -0
  146. package/dist/lib/linx-interactive-update-router.js +78 -0
  147. package/dist/lib/linx-interactive-update-router.js.map +1 -0
  148. package/dist/lib/linx-interactive-update-state-host.js +43 -0
  149. package/dist/lib/linx-interactive-update-state-host.js.map +1 -0
  150. package/dist/lib/linx-interactive-warning-display.js +4 -0
  151. package/dist/lib/linx-interactive-warning-display.js.map +1 -0
  152. package/dist/lib/linx-interrupt-control-host.js +22 -0
  153. package/dist/lib/linx-interrupt-control-host.js.map +1 -0
  154. package/dist/lib/linx-interrupt-control.js +96 -0
  155. package/dist/lib/linx-interrupt-control.js.map +1 -0
  156. package/dist/lib/linx-login-flow.js +566 -0
  157. package/dist/lib/linx-login-flow.js.map +1 -0
  158. package/dist/lib/linx-models-command.js +71 -0
  159. package/dist/lib/linx-models-command.js.map +1 -0
  160. package/dist/lib/linx-package-command.js +117 -0
  161. package/dist/lib/linx-package-command.js.map +1 -0
  162. package/dist/lib/linx-peer-command-routing.js +20 -0
  163. package/dist/lib/linx-peer-command-routing.js.map +1 -0
  164. package/dist/lib/linx-pi-cli-command.js +121 -0
  165. package/dist/lib/linx-pi-cli-command.js.map +1 -0
  166. package/dist/lib/linx-pi-completion-events.js +101 -0
  167. package/dist/lib/linx-pi-completion-events.js.map +1 -0
  168. package/dist/lib/linx-pi-normalized-event-stream.js +41 -0
  169. package/dist/lib/linx-pi-normalized-event-stream.js.map +1 -0
  170. package/dist/lib/linx-pi-resume-cli-admission.js +21 -0
  171. package/dist/lib/linx-pi-resume-cli-admission.js.map +1 -0
  172. package/dist/lib/linx-pi-runtime-execution.js +67 -0
  173. package/dist/lib/linx-pi-runtime-execution.js.map +1 -0
  174. package/dist/lib/linx-pi-startup-control.js +49 -0
  175. package/dist/lib/linx-pi-startup-control.js.map +1 -0
  176. package/dist/lib/linx-pi-startup-plan.js +103 -0
  177. package/dist/lib/linx-pi-startup-plan.js.map +1 -0
  178. package/dist/lib/linx-pi-stream-errors.js +10 -0
  179. package/dist/lib/linx-pi-stream-errors.js.map +1 -0
  180. package/dist/lib/linx-pod-backed-extension-ui.js +29 -0
  181. package/dist/lib/linx-pod-backed-extension-ui.js.map +1 -0
  182. package/dist/lib/linx-pod-data-session-factory.js +19 -0
  183. package/dist/lib/linx-pod-data-session-factory.js.map +1 -0
  184. package/dist/lib/linx-pod-mirror-runtime-host.js +50 -0
  185. package/dist/lib/linx-pod-mirror-runtime-host.js.map +1 -0
  186. package/dist/lib/linx-pod-mirror-sync-cli-admission.js +18 -0
  187. package/dist/lib/linx-pod-mirror-sync-cli-admission.js.map +1 -0
  188. package/dist/lib/linx-pod-mirror-sync-command.js +30 -0
  189. package/dist/lib/linx-pod-mirror-sync-command.js.map +1 -0
  190. package/dist/lib/{pi-adapter/sync-recovery.js → linx-pod-mirror-sync-recovery.js} +13 -13
  191. package/dist/lib/linx-pod-mirror-sync-recovery.js.map +1 -0
  192. package/dist/lib/{pi-adapter/pod-mirror.js → linx-pod-mirror.js} +63 -40
  193. package/dist/lib/linx-pod-mirror.js.map +1 -0
  194. package/dist/lib/linx-restored-auto-startup.js +21 -0
  195. package/dist/lib/linx-restored-auto-startup.js.map +1 -0
  196. package/dist/lib/linx-resume-output.js +209 -0
  197. package/dist/lib/linx-resume-output.js.map +1 -0
  198. package/dist/lib/linx-retired-command.js +22 -0
  199. package/dist/lib/linx-retired-command.js.map +1 -0
  200. package/dist/lib/linx-rewind-command.js +209 -0
  201. package/dist/lib/linx-rewind-command.js.map +1 -0
  202. package/dist/lib/linx-runtime-adapter-contract.js +2 -0
  203. package/dist/lib/linx-runtime-adapter-contract.js.map +1 -0
  204. package/dist/lib/linx-runtime-adapter-defaults.js +17 -0
  205. package/dist/lib/linx-runtime-adapter-defaults.js.map +1 -0
  206. package/dist/lib/linx-runtime-adapter-dependencies.js +2 -0
  207. package/dist/lib/linx-runtime-adapter-dependencies.js.map +1 -0
  208. package/dist/lib/linx-runtime-agent-session.js +130 -0
  209. package/dist/lib/linx-runtime-agent-session.js.map +1 -0
  210. package/dist/lib/linx-runtime-auth.js +5 -0
  211. package/dist/lib/linx-runtime-auth.js.map +1 -0
  212. package/dist/lib/linx-runtime-backend-composition.js +73 -0
  213. package/dist/lib/linx-runtime-backend-composition.js.map +1 -0
  214. package/dist/lib/linx-runtime-coding-tools.js +58 -0
  215. package/dist/lib/linx-runtime-coding-tools.js.map +1 -0
  216. package/dist/lib/linx-runtime-completion-backend.js +27 -0
  217. package/dist/lib/linx-runtime-completion-backend.js.map +1 -0
  218. package/dist/lib/linx-runtime-oauth-provider.js +57 -0
  219. package/dist/lib/linx-runtime-oauth-provider.js.map +1 -0
  220. package/dist/lib/linx-runtime-provider-registration.js +33 -0
  221. package/dist/lib/linx-runtime-provider-registration.js.map +1 -0
  222. package/dist/lib/linx-runtime-resources.js +167 -0
  223. package/dist/lib/linx-runtime-resources.js.map +1 -0
  224. package/dist/lib/linx-runtime-system-prompt.js +27 -0
  225. package/dist/lib/linx-runtime-system-prompt.js.map +1 -0
  226. package/dist/lib/linx-runtime-thinking.js +21 -0
  227. package/dist/lib/linx-runtime-thinking.js.map +1 -0
  228. package/dist/lib/linx-selector-choice.js +38 -0
  229. package/dist/lib/linx-selector-choice.js.map +1 -0
  230. package/dist/lib/linx-self-update.js +113 -0
  231. package/dist/lib/linx-self-update.js.map +1 -0
  232. package/dist/lib/linx-session-command-routing-host.js +24 -0
  233. package/dist/lib/linx-session-command-routing-host.js.map +1 -0
  234. package/dist/lib/linx-session-command-routing.js +68 -0
  235. package/dist/lib/linx-session-command-routing.js.map +1 -0
  236. package/dist/lib/linx-session-cwd-router.js +15 -0
  237. package/dist/lib/linx-session-cwd-router.js.map +1 -0
  238. package/dist/lib/linx-session-history.js +388 -0
  239. package/dist/lib/linx-session-history.js.map +1 -0
  240. package/dist/lib/{pi-adapter/session.js → linx-session-manager.js} +94 -46
  241. package/dist/lib/linx-session-manager.js.map +1 -0
  242. package/dist/lib/linx-session-metadata.js +55 -0
  243. package/dist/lib/linx-session-metadata.js.map +1 -0
  244. package/dist/lib/linx-session-selector-ui.js +32 -0
  245. package/dist/lib/linx-session-selector-ui.js.map +1 -0
  246. package/dist/lib/linx-session-thinking-capability-router.js +55 -0
  247. package/dist/lib/linx-session-thinking-capability-router.js.map +1 -0
  248. package/dist/lib/linx-session-work-control.js +163 -0
  249. package/dist/lib/linx-session-work-control.js.map +1 -0
  250. package/dist/lib/linx-shell-command-executor.js +41 -0
  251. package/dist/lib/linx-shell-command-executor.js.map +1 -0
  252. package/dist/lib/linx-shell-command-router.js +151 -0
  253. package/dist/lib/linx-shell-command-router.js.map +1 -0
  254. package/dist/lib/{pi-adapter/control-state.js → linx-startup-control-state.js} +6 -6
  255. package/dist/lib/linx-startup-control-state.js.map +1 -0
  256. package/dist/lib/linx-startup-login-policy.js +48 -0
  257. package/dist/lib/linx-startup-login-policy.js.map +1 -0
  258. package/dist/lib/linx-status-line-command.js +382 -0
  259. package/dist/lib/linx-status-line-command.js.map +1 -0
  260. package/dist/lib/{status-line-command.js → linx-status-line-config-command.js} +2 -12
  261. package/dist/lib/linx-status-line-config-command.js.map +1 -0
  262. package/dist/lib/linx-status-line.js +12 -4
  263. package/dist/lib/linx-status-line.js.map +1 -1
  264. package/dist/lib/linx-stream-abort.js +12 -0
  265. package/dist/lib/linx-stream-abort.js.map +1 -0
  266. package/dist/lib/linx-stream-error-formatting.js +54 -0
  267. package/dist/lib/linx-stream-error-formatting.js.map +1 -0
  268. package/dist/lib/linx-submitted-user-message-recording.js +16 -0
  269. package/dist/lib/linx-submitted-user-message-recording.js.map +1 -0
  270. package/dist/lib/linx-symphony-interactive-command.js +493 -0
  271. package/dist/lib/linx-symphony-interactive-command.js.map +1 -0
  272. package/dist/lib/linx-terminal-title-router.js +49 -0
  273. package/dist/lib/linx-terminal-title-router.js.map +1 -0
  274. package/dist/lib/{pi-adapter/theme.js → linx-theme.js} +2 -2
  275. package/dist/lib/linx-theme.js.map +1 -0
  276. package/dist/lib/linx-top-level-command-admission.js +27 -0
  277. package/dist/lib/linx-top-level-command-admission.js.map +1 -0
  278. package/dist/lib/linx-update-notification.js +176 -0
  279. package/dist/lib/linx-update-notification.js.map +1 -0
  280. package/dist/lib/linx-welcome-header.js +148 -0
  281. package/dist/lib/linx-welcome-header.js.map +1 -0
  282. package/dist/lib/linx-workspace-command.js +45 -0
  283. package/dist/lib/linx-workspace-command.js.map +1 -0
  284. package/dist/lib/native-backend-command-router.js +25 -0
  285. package/dist/lib/native-backend-command-router.js.map +1 -0
  286. package/dist/lib/native-backend-proxy.js +2 -0
  287. package/dist/lib/native-backend-proxy.js.map +1 -0
  288. package/dist/lib/native-backend-stream-backend.js +15 -0
  289. package/dist/lib/native-backend-stream-backend.js.map +1 -0
  290. package/dist/lib/oidc-auth.js +2 -4
  291. package/dist/lib/oidc-auth.js.map +1 -1
  292. package/dist/lib/pi-adapter/runtime.js +32 -841
  293. package/dist/lib/pi-adapter/runtime.js.map +1 -1
  294. package/dist/lib/pi-adapter/stream.js +17 -516
  295. package/dist/lib/pi-adapter/stream.js.map +1 -1
  296. package/dist/lib/{pi-adapter/pod-approval.js → pod-backed-extension-ui-context.js} +2 -2
  297. package/dist/lib/pod-backed-extension-ui-context.js.map +1 -0
  298. package/dist/lib/pod-chat-store-runtime.js +38 -0
  299. package/dist/lib/pod-chat-store-runtime.js.map +1 -0
  300. package/dist/lib/pod-chat-store.js +15 -65
  301. package/dist/lib/pod-chat-store.js.map +1 -1
  302. package/dist/lib/{pi-adapter/pod-mirror-mapping.js → pod-mirror-mapping.js} +8 -18
  303. package/dist/lib/pod-mirror-mapping.js.map +1 -0
  304. package/dist/lib/{pi-adapter/pod-native.js → pod-native.js} +1 -1
  305. package/dist/lib/pod-native.js.map +1 -0
  306. package/dist/lib/pod-status-output.js.map +1 -0
  307. package/dist/lib/{pi-adapter/auto-input-controller.js → secretary-auto-input-controller.js} +62 -77
  308. package/dist/lib/secretary-auto-input-controller.js.map +1 -0
  309. package/dist/lib/{pi-adapter/session-control.js → session-control.js} +80 -29
  310. package/dist/lib/session-control.js.map +1 -0
  311. package/dist/lib/shell-lifecycle.js +179 -0
  312. package/dist/lib/shell-lifecycle.js.map +1 -0
  313. package/dist/lib/solid-local-store.js +3 -3
  314. package/dist/lib/solid-local-store.js.map +1 -1
  315. package/dist/lib/symphony/pod-projection.js +1 -31
  316. package/dist/lib/symphony/pod-projection.js.map +1 -1
  317. package/dist/lib/{symphony-command.js → symphony/run.js} +11 -16
  318. package/dist/lib/symphony/run.js.map +1 -0
  319. package/dist/lib/symphony/runtime.js +30 -0
  320. package/dist/lib/symphony/runtime.js.map +1 -0
  321. package/dist/lib/symphony/status.js +242 -0
  322. package/dist/lib/symphony/status.js.map +1 -0
  323. package/dist/linx-cli-app.js +70 -0
  324. package/dist/linx-cli-app.js.map +1 -0
  325. package/dist/linx-cli-runtime-adapter-factory.js +12 -0
  326. package/dist/linx-cli-runtime-adapter-factory.js.map +1 -0
  327. package/dist/plugins/linx-symphony-codex/.codex-plugin/plugin.json +1 -1
  328. package/package.json +1 -1
  329. package/dist/lib/auto-mode/hooks/index.js.map +0 -1
  330. package/dist/lib/auto-mode/index.js +0 -10
  331. package/dist/lib/auto-mode/index.js.map +0 -1
  332. package/dist/lib/codex-plugin/index.js +0 -5
  333. package/dist/lib/codex-plugin/index.js.map +0 -1
  334. package/dist/lib/pi-adapter/auth.js +0 -68
  335. package/dist/lib/pi-adapter/auth.js.map +0 -1
  336. package/dist/lib/pi-adapter/auto-input-controller.js.map +0 -1
  337. package/dist/lib/pi-adapter/backend-command.js +0 -2
  338. package/dist/lib/pi-adapter/backend-command.js.map +0 -1
  339. package/dist/lib/pi-adapter/backend-credentials.js.map +0 -1
  340. package/dist/lib/pi-adapter/branding.js +0 -1188
  341. package/dist/lib/pi-adapter/branding.js.map +0 -1
  342. package/dist/lib/pi-adapter/control-state.js.map +0 -1
  343. package/dist/lib/pi-adapter/index.js +0 -4
  344. package/dist/lib/pi-adapter/index.js.map +0 -1
  345. package/dist/lib/pi-adapter/interactive.js +0 -3186
  346. package/dist/lib/pi-adapter/interactive.js.map +0 -1
  347. package/dist/lib/pi-adapter/pod-approval.js.map +0 -1
  348. package/dist/lib/pi-adapter/pod-mirror-mapping.js.map +0 -1
  349. package/dist/lib/pi-adapter/pod-mirror.js.map +0 -1
  350. package/dist/lib/pi-adapter/pod-native.js.map +0 -1
  351. package/dist/lib/pi-adapter/pod-status-output.js.map +0 -1
  352. package/dist/lib/pi-adapter/pod-tools.js +0 -140
  353. package/dist/lib/pi-adapter/pod-tools.js.map +0 -1
  354. package/dist/lib/pi-adapter/session-control.js.map +0 -1
  355. package/dist/lib/pi-adapter/session.js.map +0 -1
  356. package/dist/lib/pi-adapter/sync-recovery.js.map +0 -1
  357. package/dist/lib/pi-adapter/theme.js.map +0 -1
  358. package/dist/lib/pi-adapter/web-fetch.js +0 -170
  359. package/dist/lib/pi-adapter/web-fetch.js.map +0 -1
  360. package/dist/lib/status-line-command.js.map +0 -1
  361. package/dist/lib/symphony-command.js.map +0 -1
  362. /package/dist/lib/{pi-adapter/pod-status-output.js → pod-status-output.js} +0 -0
@@ -1,20 +1,16 @@
1
1
  import { setTimeout as delay } from 'node:timers/promises';
2
2
  import { parsePodResourceRef, resolvePodBaseUrl } from '@undefineds.co/drizzle-solid';
3
3
  import { getDefaultPodDataSession } from '../pod-data-session.js';
4
- import { agentResource, approvalResource, auditResource, chatResource, claimApprovalRequest, claimInputRequest, drizzle, grantResource, inboxNotificationResource, inputRequestResource, solidResources, threadRepository, } from '../models.js';
5
- import { AS, ODRL, UDFS } from '@undefineds.co/models/namespaces';
6
- import { ApprovalVocab, AuditVocab, GrantReadVocab, GrantVocab, InboxNotificationVocab } from '@undefineds.co/models/vocab/sidecar';
7
- import { autoModeApprovalActionUri, autoModeApprovalDecisionForStoredApproval, autoModeApprovalRequestMessage, autoModeApprovalRisk, autoModeApprovalToolName, buildAutoModeApprovalDecisionReason, encodeAutoModeApprovalOptions, parseAutoModeApprovalDecisionReason, parseAutoModeApprovalOptions, shouldMaterializeAutoModeGrant, } from '../../../vendor/agent-runtime/dist/auto-mode.js';
4
+ import { agentResource, approvalResource, chatResource, claimApprovalRequest, claimInputRequest, drizzle, inboxNotificationResource, inputRequestResource, solidResources, threadRepository, } from '../models.js';
5
+ import { autoModeApprovalActionUri, autoModeApprovalDecisionForStoredApproval, autoModeApprovalRequestMessage, autoModeApprovalRisk, autoModeApprovalToolName, buildAutoModeApprovalDecisionReason, encodeAutoModeApprovalOptions, parseAutoModeApprovalOptions, shouldMaterializeAutoModeGrant, } from '../../../vendor/agent-runtime/dist/auto-mode.js';
8
6
  import { resolveAutoModeGrantCoverage } from './secretary.js';
9
- import { buildApprovalDocumentUrl, RDF_TYPE, buildApprovalResourceUrl, buildAuditDocumentUrl, buildAuditResourceUrl, buildGrantResourceUrl, buildInboxResourceUrl, firstIri, firstLiteral, iri, listTurtleResources, listTurtleResourcesRecursive, literal, parseManagedTurtleBlocks, readTurtleResource, subjectIdFromResourceUrl, upsertManagedTurtleBlock, } from '../pi-adapter/pod-native.js';
7
+ import { buildGrantResourceUrl } from '../pod-native.js';
8
+ import { MAX_APPROVAL_CONTEXT_LENGTH, MAX_GRANT_POLICY_LENGTH, approvalIriForCreatedAt, createNativeRemoteApprovalStore, createSharedModelRemoteApprovalStore, normalizeString, toIsoString, } from './pod-approval-store.js';
10
9
  const AUTO_MODE_CHAT_ID_PREFIX = 'linx-auto-mode';
11
10
  const AUTO_MODE_AGENT_ID = '__secretary__';
12
11
  const REMOTE_APPROVAL_POLICY_VERSION = 'linx-auto-mode-remote-approval/v1';
13
12
  const DEFAULT_REMOTE_APPROVAL_POLL_MS = 1000;
14
13
  const DEFAULT_WARN_ONLY_TIMEOUT_MS = 5000;
15
- const DEFAULT_APPROVAL_LIST_DAYS = 7;
16
- const MAX_GRANT_POLICY_LENGTH = 1200;
17
- const MAX_APPROVAL_CONTEXT_LENGTH = 1400;
18
14
  const MIN_GRANT_COVERAGE_CONFIDENCE = 0.75;
19
15
  const MAX_GRANT_COVERAGE_CANDIDATES = 5;
20
16
  const remoteApprovalClientCache = new WeakMap();
@@ -24,21 +20,9 @@ function createAbortError() {
24
20
  error.name = 'AbortError';
25
21
  return error;
26
22
  }
27
- function normalizeString(value) {
28
- return typeof value === 'string' && value.trim() ? value.trim() : undefined;
29
- }
30
23
  function isRecord(value) {
31
24
  return typeof value === 'object' && value !== null && !Array.isArray(value);
32
25
  }
33
- function toIsoString(value, fallback) {
34
- if (value instanceof Date) {
35
- return value.toISOString();
36
- }
37
- if (typeof value === 'string' && value.trim()) {
38
- return value;
39
- }
40
- return fallback;
41
- }
42
26
  function buildAutoModeChatId(record) {
43
27
  return `${AUTO_MODE_CHAT_ID_PREFIX}-${record.backend}`;
44
28
  }
@@ -48,15 +32,6 @@ function buildAutoModeChatUri(webId, record) {
48
32
  function autoModeThreadUri(webId, record) {
49
33
  return threadRepository.iriForChat(webId, buildAutoModeChatId(record), record.id);
50
34
  }
51
- function approvalIriForCreatedAt(webIdOrUri, approvalId, createdAt) {
52
- return approvalResource.buildIri(webIdOrUri, {
53
- id: approvalId,
54
- createdAt,
55
- });
56
- }
57
- function documentUrlFromResourceUri(resourceUri) {
58
- return resourceUri.split('#', 1)[0] ?? resourceUri;
59
- }
60
35
  function grantIri(webIdOrUri, grantId) {
61
36
  return buildGrantResourceUrl(webIdOrUri, grantId);
62
37
  }
@@ -214,29 +189,6 @@ function grantContextFromApproval(row) {
214
189
  approvalContext: row.context,
215
190
  }, MAX_APPROVAL_CONTEXT_LENGTH);
216
191
  }
217
- function literalValues(predicates, predicate) {
218
- return (predicates.get(predicate) ?? [])
219
- .map((object) => isRecord(object) && object.type === 'literal' && typeof object.value === 'string' ? object.value : '')
220
- .filter(Boolean);
221
- }
222
- function firstLiteralValue(predicates, predicatesToTry) {
223
- for (const predicate of predicatesToTry) {
224
- const [value] = literalValues(predicates, predicate);
225
- if (value) {
226
- return value;
227
- }
228
- }
229
- return undefined;
230
- }
231
- function iriValues(predicates, predicate) {
232
- return (predicates.get(predicate) ?? [])
233
- .map((object) => isRecord(object) && object.type === 'iri' && typeof object.value === 'string' ? object.value : '')
234
- .filter(Boolean);
235
- }
236
- function iriValuesFrom(predicates, predicatesToTry) {
237
- const values = predicatesToTry.flatMap((predicate) => iriValues(predicates, predicate));
238
- return [...new Set(values)];
239
- }
240
192
  function grantSourceHash(row) {
241
193
  return `approval:${row.id}:${row.toolCallId}:${row.risk}`;
242
194
  }
@@ -406,65 +358,6 @@ function createOrmRemoteApprovalStore(podSession) {
406
358
  };
407
359
  return createSharedModelRemoteApprovalStore(podSession.webId, getDb);
408
360
  }
409
- function createSharedModelRemoteApprovalStore(webId, getDb) {
410
- const listApprovals = async () => {
411
- const rows = await modelList(getDb, approvalResource);
412
- return rows.map((row) => enrichApprovalRow(webId, row));
413
- };
414
- return {
415
- listApprovals,
416
- findApproval: async (id, options = {}) => {
417
- if (options.resourceUri) {
418
- const row = await modelFindByIri(getDb, approvalResource, options.resourceUri);
419
- return row ? enrichApprovalRow(webId, row, options.resourceUri) : null;
420
- }
421
- if (options.createdAt) {
422
- const createdAt = new Date(toIsoString(options.createdAt, new Date().toISOString()));
423
- const iri = approvalIriForCreatedAt(webId, id, createdAt);
424
- const row = await modelFindByIri(getDb, approvalResource, iri);
425
- return row ? enrichApprovalRow(webId, row, iri) : null;
426
- }
427
- const row = await modelFindById(getDb, approvalResource, id);
428
- return row ? enrichApprovalRow(webId, row) : null;
429
- },
430
- insertApproval: async (row) => {
431
- await modelInsert(getDb, approvalResource, omitInternalFields(row));
432
- },
433
- updateApproval: async (id, patch, options = {}) => {
434
- const explicitIri = options.resourceUri
435
- ?? normalizeString(patch.approvalUri)
436
- ?? (options.createdAt ? approvalIriForCreatedAt(webId, id, new Date(toIsoString(options.createdAt, new Date().toISOString()))) : undefined);
437
- if (explicitIri) {
438
- await modelUpdateByIri(getDb, approvalResource, explicitIri, omitInternalFields(patch));
439
- return;
440
- }
441
- const updated = await modelUpdateById(getDb, approvalResource, id, omitInternalFields(patch));
442
- if (!updated) {
443
- throw new Error(`Remote approval not found: ${id}`);
444
- }
445
- },
446
- claimApproval: async (input) => {
447
- const db = await getDb();
448
- return claimApprovalRequest(db, {
449
- approval: input.approvalUri,
450
- leaseOwner: input.leaseOwner,
451
- leaseDurationMs: input.leaseDurationMs,
452
- now: input.now,
453
- });
454
- },
455
- listAudits: () => modelList(getDb, auditResource),
456
- insertAudit: async (row) => {
457
- await modelInsert(getDb, auditResource, omitInternalFields(row));
458
- },
459
- listGrants: () => modelList(getDb, grantResource),
460
- insertGrant: async (row) => {
461
- await modelInsert(getDb, grantResource, omitInternalFields(row));
462
- },
463
- insertInboxNotification: async (row) => {
464
- await modelInsert(getDb, inboxNotificationResource, omitInternalFields(row));
465
- },
466
- };
467
- }
468
361
  export function createInboxNotificationControlResourceClaimHandler(input) {
469
362
  return async (request) => claimInboxNotificationControlResource({
470
363
  controlResourceUri: request.controlResource,
@@ -563,481 +456,6 @@ function mapModelsControlClaimStatus(status) {
563
456
  }
564
457
  return 'display_only';
565
458
  }
566
- async function modelList(getDb, resource) {
567
- const db = await getDb();
568
- return await db.select().from(resource).execute();
569
- }
570
- async function modelFindByIri(getDb, resource, iri) {
571
- const db = await getDb();
572
- return await db.findByIri(resource, iri);
573
- }
574
- async function modelFindById(getDb, resource, id) {
575
- const db = await getDb();
576
- return await db.findById(resource, id);
577
- }
578
- async function modelInsert(getDb, resource, row) {
579
- const db = await getDb();
580
- await db.insert(resource).values(stripUndefined(row)).execute();
581
- }
582
- async function modelUpdateByIri(getDb, resource, iri, patch) {
583
- const db = await getDb();
584
- const update = stripUndefined(patch);
585
- delete update.id;
586
- delete update.approvalUri;
587
- await db.updateByIri(resource, iri, update);
588
- }
589
- async function modelUpdateById(getDb, resource, id, patch) {
590
- const db = await getDb();
591
- const update = stripUndefined(patch);
592
- delete update.id;
593
- delete update.approvalUri;
594
- return await db.updateById(resource, id, update);
595
- }
596
- function stripUndefined(row) {
597
- const next = {};
598
- for (const [key, value] of Object.entries(row)) {
599
- if (value !== undefined) {
600
- next[key] = value;
601
- }
602
- }
603
- return next;
604
- }
605
- function omitInternalFields(row) {
606
- const next = stripUndefined(row);
607
- delete next.approvalUri;
608
- delete next['@id'];
609
- delete next.subject;
610
- delete next.uri;
611
- return next;
612
- }
613
- function rowSubject(row) {
614
- return normalizeString(row['@id'])
615
- ?? normalizeString(row.subject)
616
- ?? normalizeString(row.uri);
617
- }
618
- function enrichApprovalRow(webId, row, explicitIri) {
619
- const createdAt = new Date(toIsoString(row.createdAt, new Date().toISOString()));
620
- return {
621
- ...row,
622
- approvalUri: explicitIri
623
- ?? normalizeString(row.approvalUri)
624
- ?? rowSubject(row)
625
- ?? approvalIriForCreatedAt(webId, row.id, createdAt),
626
- };
627
- }
628
- function createNativeRemoteApprovalStore(webId, fetcher) {
629
- return {
630
- listApprovals: () => listApprovalRows(webId, fetcher),
631
- findApproval: (id, options) => findApprovalRow(webId, fetcher, id, options),
632
- insertApproval: (row) => writeApprovalRow(webId, fetcher, row),
633
- async updateApproval(id, patch, options = {}) {
634
- const explicitIri = options.resourceUri
635
- ?? normalizeString(patch.approvalUri)
636
- ?? (options.createdAt ? buildApprovalResourceUrl(webId, id, new Date(toIsoString(options.createdAt, new Date().toISOString()))) : undefined);
637
- const existing = explicitIri
638
- ? await readApprovalRowFromResource(fetcher, explicitIri)
639
- : (await listApprovalRows(webId, fetcher)).find((row) => row.id === id);
640
- if (!existing) {
641
- throw new Error(`Remote approval not found: ${id}`);
642
- }
643
- await writeApprovalRow(webId, fetcher, { ...existing, ...patch });
644
- },
645
- claimApproval: async (input) => claimNativeApproval(webId, fetcher, input),
646
- listAudits: () => listAuditRows(webId, fetcher),
647
- insertAudit: (row) => writeAuditRow(webId, fetcher, row),
648
- listGrants: () => listGrantRows(webId, fetcher),
649
- insertGrant: (row) => writeGrantRow(webId, fetcher, row),
650
- insertInboxNotification: (row) => writeInboxNotificationRow(webId, fetcher, row),
651
- };
652
- }
653
- async function claimNativeApproval(webId, fetcher, input) {
654
- const now = normalizeClaimDate(input.now);
655
- const leaseDurationMs = input.leaseDurationMs ?? 60_000;
656
- if (!Number.isFinite(leaseDurationMs) || leaseDurationMs <= 0) {
657
- throw new Error('Approval claim leaseDurationMs must be a positive finite number.');
658
- }
659
- const leaseExpiresAt = new Date(now.getTime() + leaseDurationMs);
660
- const missingResult = {
661
- status: 'not_found',
662
- approval: null,
663
- leaseOwner: input.leaseOwner,
664
- leaseExpiresAt: leaseExpiresAt.toISOString(),
665
- reason: 'Approval request was not found.',
666
- };
667
- const existing = await readApprovalRowFromResource(fetcher, input.approvalUri);
668
- if (!existing) {
669
- return missingResult;
670
- }
671
- if (!isClaimableControlStatus(existing.status)) {
672
- return {
673
- status: 'not_actionable',
674
- approval: existing,
675
- leaseOwner: input.leaseOwner,
676
- leaseExpiresAt: leaseExpiresAt.toISOString(),
677
- reason: `Approval request status is ${String(existing.status || 'empty')}.`,
678
- };
679
- }
680
- if (isPastDate(existing.expiresAt, now)) {
681
- return {
682
- status: 'not_actionable',
683
- approval: existing,
684
- leaseOwner: input.leaseOwner,
685
- leaseExpiresAt: leaseExpiresAt.toISOString(),
686
- reason: 'Approval request is past expiresAt.',
687
- };
688
- }
689
- if (hasActiveForeignLease(existing, input.leaseOwner, now)) {
690
- return {
691
- status: 'lost',
692
- approval: existing,
693
- leaseOwner: input.leaseOwner,
694
- leaseExpiresAt: leaseExpiresAt.toISOString(),
695
- reason: 'Approval request is leased by another client.',
696
- };
697
- }
698
- await writeApprovalRow(webId, fetcher, {
699
- ...existing,
700
- status: 'handling',
701
- leaseOwner: input.leaseOwner,
702
- leaseExpiresAt,
703
- });
704
- const claimed = await readApprovalRowFromResource(fetcher, input.approvalUri);
705
- if (claimed?.leaseOwner === input.leaseOwner && !isPastDate(claimed.leaseExpiresAt, now)) {
706
- return {
707
- status: 'claimed',
708
- approval: claimed,
709
- leaseOwner: input.leaseOwner,
710
- leaseExpiresAt: leaseExpiresAt.toISOString(),
711
- };
712
- }
713
- return {
714
- status: 'lost',
715
- approval: (claimed ?? existing),
716
- leaseOwner: input.leaseOwner,
717
- leaseExpiresAt: leaseExpiresAt.toISOString(),
718
- reason: 'Approval request lease was not retained after update.',
719
- };
720
- }
721
- function normalizeClaimDate(value) {
722
- const date = value instanceof Date ? value : new Date(value ?? Date.now());
723
- if (Number.isNaN(date.getTime())) {
724
- throw new Error('Invalid approval claim timestamp.');
725
- }
726
- return date;
727
- }
728
- function isClaimableControlStatus(status) {
729
- if (typeof status !== 'string' || !status.trim()) {
730
- return true;
731
- }
732
- const normalized = status.trim();
733
- return normalized === 'pending' || normalized === 'handling';
734
- }
735
- function hasActiveForeignLease(row, leaseOwner, now) {
736
- if (row.leaseOwner === leaseOwner) {
737
- return false;
738
- }
739
- const currentOwner = normalizeString(row.leaseOwner);
740
- if (!currentOwner) {
741
- return false;
742
- }
743
- return !isPastDate(row.leaseExpiresAt, now);
744
- }
745
- function isPastDate(value, now) {
746
- if (!value) {
747
- return false;
748
- }
749
- const date = value instanceof Date ? value : new Date(value);
750
- return !Number.isNaN(date.getTime()) && date.getTime() <= now.getTime();
751
- }
752
- async function findApprovalRow(webId, fetcher, id, options = {}) {
753
- if (options.resourceUri) {
754
- return readApprovalRowFromResource(fetcher, options.resourceUri);
755
- }
756
- if (options.createdAt) {
757
- const createdAt = new Date(toIsoString(options.createdAt, new Date().toISOString()));
758
- return readApprovalRowFromResource(fetcher, buildApprovalResourceUrl(webId, id, createdAt));
759
- }
760
- return (await listApprovalRows(webId, fetcher)).find((row) => row.id === id) ?? null;
761
- }
762
- async function readApprovalRowFromResource(fetcher, resourceUri) {
763
- const turtle = await readTurtleResource(fetcher, documentUrlFromResourceUri(resourceUri));
764
- if (!turtle) {
765
- return null;
766
- }
767
- for (const [subject, predicates] of parseManagedTurtleBlocks(turtle, documentUrlFromResourceUri(resourceUri))) {
768
- if (subject !== resourceUri) {
769
- continue;
770
- }
771
- const row = approvalRowFromPredicates(subject, predicates);
772
- if (row) {
773
- return row;
774
- }
775
- }
776
- return null;
777
- }
778
- async function listApprovalRows(webId, fetcher) {
779
- const urls = [
780
- ...recentApprovalDocumentUrls(webId),
781
- ...await listTurtleResources(fetcher, `${resolvePodBaseUrl(webId)}/.data/approvals/`).catch(() => []),
782
- ];
783
- const rows = [];
784
- for (const url of [...new Set(urls)].filter((entry) => entry.endsWith('.ttl'))) {
785
- const turtle = await readTurtleResource(fetcher, url).catch(() => null);
786
- if (!turtle)
787
- continue;
788
- for (const [subject, predicates] of parseManagedTurtleBlocks(turtle, url)) {
789
- const row = approvalRowFromPredicates(subject, predicates);
790
- if (row)
791
- rows.push(row);
792
- }
793
- }
794
- return rows;
795
- }
796
- function recentApprovalDocumentUrls(webId, days = DEFAULT_APPROVAL_LIST_DAYS) {
797
- const urls = [];
798
- const base = Date.now();
799
- for (let offset = 0; offset < days; offset += 1) {
800
- const date = new Date(base - offset * 24 * 60 * 60 * 1000);
801
- urls.push(buildApprovalDocumentUrl(webId, date));
802
- }
803
- return urls;
804
- }
805
- async function writeApprovalRow(webId, fetcher, row) {
806
- const createdAt = new Date(toIsoString(row.createdAt, new Date().toISOString()));
807
- const documentUrl = buildApprovalDocumentUrl(webId, createdAt);
808
- const subjectUrl = buildApprovalResourceUrl(webId, row.id, createdAt);
809
- await upsertManagedTurtleBlock(fetcher, documentUrl, {
810
- subject: subjectUrl,
811
- triples: [
812
- { predicate: RDF_TYPE, object: iri(UDFS.ApprovalRequest) },
813
- { predicate: ApprovalVocab.session, object: iri(row.session) },
814
- { predicate: ApprovalVocab.toolCallId, object: literal(row.toolCallId) },
815
- { predicate: ApprovalVocab.toolName, object: literal(row.toolName) },
816
- { predicate: ApprovalVocab.target, object: iri(row.target) },
817
- { predicate: ApprovalVocab.action, object: iri(row.action) },
818
- { predicate: ApprovalVocab.risk, object: literal(row.risk) },
819
- { predicate: ApprovalVocab.status, object: literal(row.status) },
820
- ...(row.leaseOwner ? [{ predicate: ApprovalVocab.leaseOwner, object: literal(row.leaseOwner) }] : []),
821
- ...(row.leaseExpiresAt ? [{ predicate: ApprovalVocab.leaseExpiresAt, object: literal(toIsoString(row.leaseExpiresAt, new Date().toISOString())) }] : []),
822
- ...(row.assignedTo ? [{ predicate: ApprovalVocab.assignedTo, object: iri(row.assignedTo) }] : []),
823
- ...(row.decisionBy ? [{ predicate: ApprovalVocab.decisionBy, object: iri(row.decisionBy) }] : []),
824
- ...(row.decisionRole ? [{ predicate: ApprovalVocab.decisionRole, object: literal(row.decisionRole) }] : []),
825
- ...(row.onBehalfOf ? [{ predicate: ApprovalVocab.onBehalfOf, object: iri(row.onBehalfOf) }] : []),
826
- ...(row.reason ? [{ predicate: ApprovalVocab.reason, object: literal(row.reason) }] : []),
827
- ...(row.context ? [{ predicate: ApprovalVocab.context, object: literal(row.context) }] : []),
828
- ...(row.approvalOptions ? [{ predicate: ApprovalVocab.approvalOptions, object: literal(row.approvalOptions) }] : []),
829
- ...(row.policyVersion ? [{ predicate: ApprovalVocab.policyVersion, object: literal(row.policyVersion) }] : []),
830
- { predicate: ApprovalVocab.createdAt, object: literal(toIsoString(row.createdAt, new Date().toISOString())) },
831
- ...(row.expiresAt ? [{ predicate: ApprovalVocab.expiresAt, object: literal(toIsoString(row.expiresAt, new Date().toISOString())) }] : []),
832
- ...(row.resolvedAt ? [{ predicate: ApprovalVocab.resolvedAt, object: literal(toIsoString(row.resolvedAt, new Date().toISOString())) }] : []),
833
- ],
834
- });
835
- }
836
- async function listAuditRows(webId, fetcher) {
837
- const urls = await listTurtleResourcesRecursive(fetcher, `${resolvePodBaseUrl(webId)}/.data/audits/`);
838
- const rows = [];
839
- for (const url of urls.filter((entry) => entry.endsWith('.ttl'))) {
840
- const turtle = await readTurtleResource(fetcher, url).catch(() => null);
841
- if (!turtle)
842
- continue;
843
- for (const [subject, predicates] of parseManagedTurtleBlocks(turtle, url)) {
844
- const row = auditRowFromPredicates(subject, predicates);
845
- if (row)
846
- rows.push(row);
847
- }
848
- }
849
- return rows;
850
- }
851
- async function writeAuditRow(webId, fetcher, row) {
852
- const createdAt = new Date(toIsoString(row.createdAt, new Date().toISOString()));
853
- const documentUrl = buildAuditDocumentUrl(webId, createdAt);
854
- const subjectUrl = buildAuditResourceUrl(webId, row.id, createdAt);
855
- await upsertManagedTurtleBlock(fetcher, documentUrl, {
856
- subject: subjectUrl,
857
- triples: [
858
- { predicate: RDF_TYPE, object: iri(UDFS.AuditEntry) },
859
- { predicate: AuditVocab.action, object: literal(row.action) },
860
- { predicate: AuditVocab.actor, object: iri(row.actor) },
861
- { predicate: AuditVocab.actorRole, object: literal(row.actorRole) },
862
- ...(row.onBehalfOf ? [{ predicate: AuditVocab.onBehalfOf, object: iri(row.onBehalfOf) }] : []),
863
- ...(row.session ? [{ predicate: AuditVocab.session, object: iri(row.session) }] : []),
864
- ...(row.entry ? [{ predicate: AuditVocab.entry, object: iri(row.entry) }] : []),
865
- ...(row.toolCallId ? [{ predicate: AuditVocab.toolCallId, object: literal(row.toolCallId) }] : []),
866
- ...(row.toolName ? [{ predicate: AuditVocab.toolName, object: literal(row.toolName) }] : []),
867
- ...(row.approval ? [{ predicate: AuditVocab.approval, object: iri(row.approval) }] : []),
868
- ...(row.policyVersion ? [{ predicate: AuditVocab.policyVersion, object: literal(row.policyVersion) }] : []),
869
- { predicate: AuditVocab.createdAt, object: literal(toIsoString(row.createdAt, new Date().toISOString())) },
870
- ],
871
- });
872
- }
873
- async function listGrantRows(webId, fetcher) {
874
- const urls = [
875
- ...await listTurtleResources(fetcher, `${resolvePodBaseUrl(webId)}/settings/autonomy/grants/`).catch(() => []),
876
- ];
877
- const rows = [];
878
- for (const url of urls.filter((entry) => entry.endsWith('.ttl'))) {
879
- const turtle = await readTurtleResource(fetcher, url).catch(() => null);
880
- if (!turtle)
881
- continue;
882
- for (const [subject, predicates] of parseManagedTurtleBlocks(turtle, url)) {
883
- const row = grantRowFromPredicates(subject, predicates);
884
- if (row)
885
- rows.push(row);
886
- }
887
- }
888
- return rows;
889
- }
890
- async function writeGrantRow(webId, fetcher, row) {
891
- const id = normalizeString(row.id) ?? crypto.randomUUID();
892
- const subjectUrl = buildGrantResourceUrl(webId, id);
893
- const documentUrl = subjectUrl;
894
- const target = normalizeString(row.target);
895
- const action = normalizeString(row.action);
896
- const effect = normalizeString(row.effect);
897
- const decisionBy = normalizeString(row.decisionBy);
898
- const decisionRole = normalizeString(row.decisionRole);
899
- if (!target || !action || !effect || !decisionBy || !decisionRole) {
900
- throw new Error(`Invalid remote approval grant row: ${id}`);
901
- }
902
- await upsertManagedTurtleBlock(fetcher, documentUrl, {
903
- subject: subjectUrl,
904
- triples: [
905
- { predicate: RDF_TYPE, object: iri(ODRL.Policy) },
906
- { predicate: RDF_TYPE, object: iri(UDFS.AutonomyGrant) },
907
- { predicate: GrantVocab.target, object: iri(target) },
908
- { predicate: GrantVocab.action, object: iri(action) },
909
- ...(normalizeString(row.title) ? [{ predicate: GrantVocab.title, object: literal(truncatePodLiteral(normalizeString(row.title), 160)) }] : []),
910
- ...(normalizeString(row.summary) ? [{ predicate: GrantVocab.summary, object: literal(truncatePodLiteral(normalizeString(row.summary), 500)) }] : []),
911
- ...(normalizeString(row.body) ? [{ predicate: GrantVocab.description, object: literal(truncatePodLiteral(normalizeString(row.body), MAX_GRANT_POLICY_LENGTH)) }] : []),
912
- ...(normalizeString(row.schema) ? [{ predicate: GrantVocab.schema, object: iri(normalizeString(row.schema)) }] : []),
913
- ...(normalizeString(row.pageKind) ? [{ predicate: GrantVocab.pageKind, object: literal(normalizeString(row.pageKind)) }] : []),
914
- ...(normalizeString(row.wikiStatus) ? [{ predicate: GrantVocab.wikiStatus, object: literal(normalizeString(row.wikiStatus)) }] : []),
915
- ...(normalizeString(row.tags) ? [{ predicate: GrantVocab.tags, object: literal(truncatePodLiteral(normalizeString(row.tags), 500)) }] : []),
916
- ...(normalizeString(row.source) ? [{ predicate: GrantVocab.source, object: literal(normalizeString(row.source)) }] : []),
917
- ...(normalizeString(row.sourceHash) ? [{ predicate: GrantVocab.sourceHash, object: literal(normalizeString(row.sourceHash)) }] : []),
918
- ...(row.compiledAt ? [{ predicate: GrantVocab.compiledAt, object: literal(toIsoString(row.compiledAt, new Date().toISOString())) }] : []),
919
- ...(row.compiledFrom ?? []).map((value) => ({ predicate: GrantVocab.compiledFrom, object: iri(value) })),
920
- ...(row.related ?? []).map((value) => ({ predicate: GrantVocab.related, object: iri(value) })),
921
- { predicate: GrantVocab.effect, object: literal(effect) },
922
- ...(normalizeString(row.riskCeiling) ? [{ predicate: GrantVocab.riskCeiling, object: literal(normalizeString(row.riskCeiling)) }] : []),
923
- ...(normalizeString(row.policy) ? [{ predicate: GrantVocab.policy, object: literal(truncatePodLiteral(normalizeString(row.policy), MAX_GRANT_POLICY_LENGTH)) }] : []),
924
- ...(normalizeString(row.context) ? [{ predicate: GrantVocab.context, object: literal(truncatePodLiteral(normalizeString(row.context), MAX_APPROVAL_CONTEXT_LENGTH)) }] : []),
925
- { predicate: GrantVocab.decisionBy, object: iri(decisionBy) },
926
- { predicate: GrantVocab.decisionRole, object: literal(decisionRole) },
927
- ...(normalizeString(row.onBehalfOf) ? [{ predicate: GrantVocab.onBehalfOf, object: iri(normalizeString(row.onBehalfOf)) }] : []),
928
- { predicate: GrantVocab.createdAt, object: literal(toIsoString(row.createdAt, new Date().toISOString())) },
929
- ...(normalizeString(row.revokedAt) ? [{ predicate: GrantVocab.revokedAt, object: literal(normalizeString(row.revokedAt)) }] : []),
930
- ],
931
- });
932
- }
933
- async function writeInboxNotificationRow(webId, fetcher, row) {
934
- const url = buildInboxResourceUrl(webId, row.id);
935
- await upsertManagedTurtleBlock(fetcher, url, {
936
- subject: url,
937
- triples: [
938
- { predicate: RDF_TYPE, object: iri(AS.Announce) },
939
- ...(row.actor ? [{ predicate: InboxNotificationVocab.actor, object: iri(row.actor) }] : []),
940
- { predicate: InboxNotificationVocab.object, object: iri(row.object) },
941
- { predicate: InboxNotificationVocab.createdAt, object: literal(toIsoString(row.createdAt, new Date().toISOString())) },
942
- ],
943
- });
944
- }
945
- function approvalRowFromPredicates(url, predicates) {
946
- const session = firstIri(predicates, ApprovalVocab.session);
947
- const toolCallId = firstLiteral(predicates, ApprovalVocab.toolCallId);
948
- const toolName = firstLiteral(predicates, ApprovalVocab.toolName);
949
- const target = firstIri(predicates, ApprovalVocab.target);
950
- const action = firstIri(predicates, ApprovalVocab.action);
951
- const risk = firstLiteral(predicates, ApprovalVocab.risk);
952
- const status = firstLiteral(predicates, ApprovalVocab.status);
953
- const createdAt = firstLiteral(predicates, ApprovalVocab.createdAt);
954
- if (!session || !toolCallId || !toolName || !target || !action || !risk || !status || !createdAt) {
955
- return null;
956
- }
957
- return {
958
- id: subjectIdFromResourceUrl(url),
959
- session,
960
- toolCallId,
961
- toolName,
962
- target,
963
- action,
964
- risk,
965
- status,
966
- leaseOwner: firstLiteral(predicates, ApprovalVocab.leaseOwner),
967
- leaseExpiresAt: firstLiteral(predicates, ApprovalVocab.leaseExpiresAt),
968
- assignedTo: firstIri(predicates, ApprovalVocab.assignedTo),
969
- decisionBy: firstIri(predicates, ApprovalVocab.decisionBy),
970
- decisionRole: firstLiteral(predicates, ApprovalVocab.decisionRole),
971
- onBehalfOf: firstIri(predicates, ApprovalVocab.onBehalfOf),
972
- reason: firstLiteral(predicates, ApprovalVocab.reason),
973
- context: firstLiteral(predicates, ApprovalVocab.context),
974
- approvalOptions: firstLiteral(predicates, ApprovalVocab.approvalOptions),
975
- policyVersion: firstLiteral(predicates, ApprovalVocab.policyVersion),
976
- createdAt,
977
- expiresAt: firstLiteral(predicates, ApprovalVocab.expiresAt),
978
- resolvedAt: firstLiteral(predicates, ApprovalVocab.resolvedAt),
979
- };
980
- }
981
- function auditRowFromPredicates(url, predicates) {
982
- const action = firstLiteral(predicates, AuditVocab.action);
983
- const actor = firstIri(predicates, AuditVocab.actor);
984
- const actorRole = firstLiteral(predicates, AuditVocab.actorRole);
985
- const createdAt = firstLiteral(predicates, AuditVocab.createdAt);
986
- if (!action || !actor || !actorRole || !createdAt) {
987
- return null;
988
- }
989
- return {
990
- id: subjectIdFromResourceUrl(url),
991
- action,
992
- actor,
993
- actorRole,
994
- onBehalfOf: firstIri(predicates, AuditVocab.onBehalfOf),
995
- session: firstIri(predicates, AuditVocab.session),
996
- entry: firstIri(predicates, AuditVocab.entry),
997
- toolCallId: firstLiteral(predicates, AuditVocab.toolCallId),
998
- toolName: firstLiteral(predicates, AuditVocab.toolName),
999
- approval: firstIri(predicates, AuditVocab.approval),
1000
- policyVersion: firstLiteral(predicates, AuditVocab.policyVersion),
1001
- createdAt,
1002
- };
1003
- }
1004
- function grantRowFromPredicates(url, predicates) {
1005
- const target = firstIri(predicates, GrantVocab.target);
1006
- const action = firstIri(predicates, GrantVocab.action);
1007
- const effect = firstLiteral(predicates, GrantVocab.effect);
1008
- const decisionBy = firstIri(predicates, GrantVocab.decisionBy);
1009
- const decisionRole = firstLiteral(predicates, GrantVocab.decisionRole);
1010
- const createdAt = firstLiteral(predicates, GrantVocab.createdAt);
1011
- if (!target || !action || !effect || !decisionBy || !decisionRole || !createdAt) {
1012
- return null;
1013
- }
1014
- return {
1015
- id: subjectIdFromResourceUrl(url),
1016
- target,
1017
- action,
1018
- title: firstLiteral(predicates, GrantVocab.title),
1019
- summary: firstLiteralValue(predicates, GrantReadVocab.summary),
1020
- body: firstLiteralValue(predicates, GrantReadVocab.description),
1021
- schema: firstIri(predicates, GrantVocab.schema),
1022
- pageKind: firstLiteral(predicates, GrantVocab.pageKind),
1023
- wikiStatus: firstLiteral(predicates, GrantVocab.wikiStatus),
1024
- tags: firstLiteral(predicates, GrantVocab.tags),
1025
- source: firstLiteralValue(predicates, GrantReadVocab.source),
1026
- sourceHash: firstLiteral(predicates, GrantVocab.sourceHash),
1027
- compiledAt: firstLiteral(predicates, GrantVocab.compiledAt),
1028
- compiledFrom: iriValues(predicates, GrantVocab.compiledFrom),
1029
- related: iriValuesFrom(predicates, GrantReadVocab.related),
1030
- effect,
1031
- riskCeiling: firstLiteral(predicates, GrantVocab.riskCeiling),
1032
- policy: firstLiteral(predicates, GrantVocab.policy),
1033
- context: firstLiteral(predicates, GrantVocab.context),
1034
- decisionBy,
1035
- decisionRole,
1036
- onBehalfOf: firstIri(predicates, GrantVocab.onBehalfOf),
1037
- createdAt,
1038
- revokedAt: firstLiteral(predicates, GrantVocab.revokedAt),
1039
- };
1040
- }
1041
459
  function isActiveAllowGrant(grant) {
1042
460
  return grant.effect === 'allow' && !grant.revokedAt && !!(normalizeString(grant.body) || normalizeString(grant.policy));
1043
461
  }
@@ -1482,25 +900,4 @@ async function readRemoteApprovalRow(store, options) {
1482
900
  const approvals = await store.listApprovals();
1483
901
  return approvals.find((entry) => entry.id === options.approvalId) ?? null;
1484
902
  }
1485
- export const __podApprovalInternal = {
1486
- createAbortError,
1487
- createDefaultRuntime,
1488
- buildActionUri,
1489
- buildRisk,
1490
- buildToolName,
1491
- claimInboxNotificationControlResource,
1492
- createInboxNotificationControlResourceClaimHandler,
1493
- createSharedModelRemoteApprovalStore,
1494
- createNativeRemoteApprovalStore,
1495
- classifyInboxNotificationControlResource,
1496
- extractToolCallId,
1497
- decisionFromApprovalRow,
1498
- encodeDecisionReason: buildAutoModeApprovalDecisionReason,
1499
- formatSummaryHeadline,
1500
- grantSourceHash,
1501
- readRemoteApprovalRow,
1502
- isRemoteApprovalAbortError,
1503
- normalizeApprovalSummary,
1504
- parseDecisionReason: parseAutoModeApprovalDecisionReason,
1505
- };
1506
903
  //# sourceMappingURL=pod-approval.js.map