@agent-native/core 0.112.0 → 0.113.0

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 (490) hide show
  1. package/corpus/README.md +4 -2
  2. package/corpus/core/CHANGELOG.md +22 -0
  3. package/corpus/core/docs/AGENTS.md +7 -0
  4. package/corpus/core/docs/content/integrations.mdx +63 -2
  5. package/corpus/core/docs/design/provider-integration-authority.md +117 -0
  6. package/corpus/core/package.json +6 -1
  7. package/corpus/core/scripts/materialize-source-corpus.mjs +9 -2
  8. package/corpus/core/src/cli/atomic-json-file.ts +324 -0
  9. package/corpus/core/src/cli/claude-code-participant.ts +515 -0
  10. package/corpus/core/src/cli/code-agent-executor.ts +18 -10
  11. package/corpus/core/src/cli/code-agent-runs.concurrent-worker.ts +33 -0
  12. package/corpus/core/src/cli/code-agent-runs.ts +55 -62
  13. package/corpus/core/src/cli/codex-cli-participant.ts +496 -0
  14. package/corpus/core/src/cli/multi-frontier-runs.ts +1246 -135
  15. package/corpus/core/src/client/chat/ChatHistoryList.tsx +7 -404
  16. package/corpus/core/src/integrations/index.ts +10 -0
  17. package/corpus/core/src/integrations/slack-oauth.ts +1 -0
  18. package/corpus/core/src/integrations/webhook-delivery.ts +55 -0
  19. package/corpus/core/src/notifications/channels.ts +4 -10
  20. package/corpus/core/src/provider-api/actions/custom-provider-registration.ts +197 -0
  21. package/corpus/core/src/provider-api/actions/delete-staged-dataset.ts +3 -42
  22. package/corpus/core/src/provider-api/actions/list-staged-datasets.ts +3 -45
  23. package/corpus/core/src/provider-api/actions/provider-api-audit.ts +88 -0
  24. package/corpus/core/src/provider-api/actions/provider-api.ts +460 -0
  25. package/corpus/core/src/provider-api/actions/query-staged-dataset.ts +3 -140
  26. package/corpus/core/src/provider-api/actions/staged-datasets.ts +359 -0
  27. package/corpus/core/src/provider-api/gong.ts +108 -0
  28. package/corpus/core/src/scripts/docs/source-search.ts +2 -1
  29. package/corpus/core/src/server/google-oauth-credentials.ts +80 -3
  30. package/corpus/core/src/server/index.ts +6 -0
  31. package/corpus/core/src/styles/chat-history-list.css +1 -313
  32. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +32 -12
  33. package/corpus/core/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  34. package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  35. package/corpus/core/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  36. package/corpus/core/src/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  37. package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  38. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  39. package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  40. package/corpus/core/src/templates/default/AGENTS.md +25 -18
  41. package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  42. package/corpus/core/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  43. package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  44. package/corpus/core/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  45. package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  46. package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  47. package/corpus/core/src/templates/headless/AGENTS.md +7 -0
  48. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  49. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  50. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  51. package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  52. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  53. package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  54. package/corpus/core/src/templates/workspace-core/AGENTS.md +4 -0
  55. package/corpus/core/src/templates/workspace-root/AGENTS.md +4 -0
  56. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +32 -12
  57. package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  58. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +11 -2
  59. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  60. package/corpus/templates/analytics/actions/delete-staged-dataset.ts +3 -23
  61. package/corpus/templates/analytics/actions/list-staged-datasets.ts +3 -27
  62. package/corpus/templates/analytics/actions/provider-api-catalog.ts +16 -19
  63. package/corpus/templates/analytics/actions/provider-api-docs.ts +3 -5
  64. package/corpus/templates/analytics/actions/provider-api-request.ts +162 -185
  65. package/corpus/templates/analytics/actions/query-staged-dataset.ts +3 -47
  66. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +52 -161
  67. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +32 -12
  68. package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  69. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +11 -2
  70. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  71. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +63 -160
  72. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +32 -12
  73. package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  74. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +11 -2
  75. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  76. package/corpus/templates/brain/actions/_schemas.ts +13 -7
  77. package/corpus/templates/brain/actions/delete-staged-dataset.ts +3 -24
  78. package/corpus/templates/brain/actions/list-staged-datasets.ts +3 -28
  79. package/corpus/templates/brain/actions/provider-api-catalog.ts +5 -11
  80. package/corpus/templates/brain/actions/provider-api-docs.ts +3 -5
  81. package/corpus/templates/brain/actions/provider-api-request.ts +3 -37
  82. package/corpus/templates/brain/actions/query-staged-dataset.ts +3 -48
  83. package/corpus/templates/brain/actions/update-source.ts +5 -1
  84. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +48 -154
  85. package/corpus/templates/brain/app/lib/brain.ts +55 -0
  86. package/corpus/templates/brain/app/lib/ingest-handoff.ts +35 -0
  87. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-can-now-join-configured-public-channels-befo.md +6 -0
  88. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-now-continue-across-the-configured-number-of.md +6 -0
  89. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-now-start-with-a-safe-four-week-window-and-r.md +6 -0
  90. package/corpus/templates/brain/server/lib/connectors.ts +53 -2
  91. package/corpus/templates/brain/server/lib/slack-channel-membership.ts +44 -0
  92. package/corpus/templates/brain/shared/slack-source-config.ts +60 -0
  93. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +32 -12
  94. package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  95. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +11 -2
  96. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  97. package/corpus/templates/calendar/actions/delete-staged-dataset.ts +3 -24
  98. package/corpus/templates/calendar/actions/list-staged-datasets.ts +3 -28
  99. package/corpus/templates/calendar/actions/provider-api-catalog.ts +5 -11
  100. package/corpus/templates/calendar/actions/provider-api-docs.ts +3 -5
  101. package/corpus/templates/calendar/actions/provider-api-request.ts +3 -37
  102. package/corpus/templates/calendar/actions/query-staged-dataset.ts +3 -48
  103. package/corpus/templates/calendar/server/handlers/gong.ts +6 -61
  104. package/corpus/templates/calendar/server/handlers/google-auth.ts +10 -8
  105. package/corpus/templates/calendar/server/lib/google-calendar.ts +7 -45
  106. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  107. package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  108. package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  109. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  110. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  111. package/corpus/templates/chat/AGENTS.md +5 -2
  112. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  113. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +32 -12
  114. package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  115. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +11 -2
  116. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  117. package/corpus/templates/clips/AGENTS.md +11 -0
  118. package/corpus/templates/clips/actions/export-to-brain.ts +505 -171
  119. package/corpus/templates/clips/changelog/2026-07-19-ready-clips-transcripts-can-be-backfilled-to-brain-for-a-bou.md +6 -0
  120. package/corpus/templates/clips/server/lib/calendar-event-meetings.ts +1 -1
  121. package/corpus/templates/clips/server/lib/google-calendar-client.ts +12 -22
  122. package/corpus/templates/clips/server/lib/google-calendar-oauth.ts +9 -6
  123. package/corpus/templates/clips/server/lib/slack-oauth.ts +12 -47
  124. package/corpus/templates/clips/server/routes/_agent-native/google/auth-url.get.ts +2 -6
  125. package/corpus/templates/clips/server/routes/api/auth/google-calendar.get.ts +4 -4
  126. package/corpus/templates/content/.agents/skills/actions/SKILL.md +32 -12
  127. package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  128. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +11 -2
  129. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  130. package/corpus/templates/content/actions/delete-staged-dataset.ts +3 -24
  131. package/corpus/templates/content/actions/list-staged-datasets.ts +3 -28
  132. package/corpus/templates/content/actions/provider-api-catalog.ts +5 -11
  133. package/corpus/templates/content/actions/provider-api-docs.ts +3 -5
  134. package/corpus/templates/content/actions/provider-api-request.ts +3 -37
  135. package/corpus/templates/content/actions/query-staged-dataset.ts +3 -48
  136. package/corpus/templates/design/.agents/skills/actions/SKILL.md +32 -12
  137. package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  138. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +11 -2
  139. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  140. package/corpus/templates/design/actions/delete-staged-dataset.ts +4 -23
  141. package/corpus/templates/design/actions/list-staged-datasets.ts +4 -27
  142. package/corpus/templates/design/actions/provider-api-catalog.ts +15 -18
  143. package/corpus/templates/design/actions/provider-api-docs.ts +57 -48
  144. package/corpus/templates/design/actions/provider-api-request.ts +140 -164
  145. package/corpus/templates/design/actions/query-staged-dataset.ts +4 -47
  146. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +32 -12
  147. package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  148. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +11 -2
  149. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  150. package/corpus/templates/dispatch/actions/delete-staged-dataset.ts +4 -23
  151. package/corpus/templates/dispatch/actions/list-staged-datasets.ts +4 -30
  152. package/corpus/templates/dispatch/actions/provider-api-catalog.ts +15 -18
  153. package/corpus/templates/dispatch/actions/provider-api-docs.ts +57 -48
  154. package/corpus/templates/dispatch/actions/provider-api-request.ts +138 -163
  155. package/corpus/templates/dispatch/actions/query-staged-dataset.ts +4 -47
  156. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +32 -12
  157. package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  158. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +11 -2
  159. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  160. package/corpus/templates/forms/server/lib/integrations.ts +23 -22
  161. package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  162. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  163. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +32 -12
  164. package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  165. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +11 -2
  166. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  167. package/corpus/templates/mail/actions/delete-staged-dataset.ts +4 -23
  168. package/corpus/templates/mail/actions/list-staged-datasets.ts +4 -27
  169. package/corpus/templates/mail/actions/provider-api-catalog.ts +15 -18
  170. package/corpus/templates/mail/actions/provider-api-docs.ts +57 -48
  171. package/corpus/templates/mail/actions/provider-api-request.ts +146 -173
  172. package/corpus/templates/mail/actions/query-staged-dataset.ts +4 -47
  173. package/corpus/templates/mail/server/handlers/gong.ts +6 -61
  174. package/corpus/templates/mail/server/lib/google-auth.ts +10 -13
  175. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +32 -12
  176. package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  177. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +11 -2
  178. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  179. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +47 -156
  180. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +32 -12
  181. package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  182. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +11 -2
  183. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  184. package/corpus/templates/slides/actions/delete-staged-dataset.ts +4 -23
  185. package/corpus/templates/slides/actions/list-staged-datasets.ts +4 -27
  186. package/corpus/templates/slides/actions/provider-api-catalog.ts +15 -18
  187. package/corpus/templates/slides/actions/provider-api-docs.ts +57 -48
  188. package/corpus/templates/slides/actions/provider-api-request.ts +145 -172
  189. package/corpus/templates/slides/actions/query-staged-dataset.ts +4 -47
  190. package/corpus/templates/slides/server/lib/google-docs-oauth.ts +11 -36
  191. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +32 -12
  192. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +10 -0
  193. package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  194. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +11 -2
  195. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  196. package/corpus/toolkit/CHANGELOG.md +125 -0
  197. package/corpus/toolkit/README.md +60 -0
  198. package/corpus/toolkit/export-snapshot.json +35 -0
  199. package/corpus/toolkit/migration-manifest.json +4 -0
  200. package/corpus/toolkit/package.json +281 -0
  201. package/corpus/toolkit/scripts/finalize-build.mjs +55 -0
  202. package/corpus/toolkit/src/app-shell/header-actions.tsx +84 -0
  203. package/corpus/toolkit/src/app-shell/index.ts +1 -0
  204. package/corpus/toolkit/src/chat-history/ChatHistoryList.tsx +469 -0
  205. package/corpus/toolkit/src/chat-history/index.ts +7 -0
  206. package/corpus/toolkit/src/chat-history.css +314 -0
  207. package/corpus/toolkit/src/collab-ui/AgentPresenceChip.tsx +69 -0
  208. package/corpus/toolkit/src/collab-ui/LiveCursorOverlay.tsx +241 -0
  209. package/corpus/toolkit/src/collab-ui/PresenceBar.tsx +346 -0
  210. package/corpus/toolkit/src/collab-ui/RecentEditHighlights.tsx +225 -0
  211. package/corpus/toolkit/src/collab-ui/RemoteSelectionRings.tsx +227 -0
  212. package/corpus/toolkit/src/collab-ui/agent-identity.ts +16 -0
  213. package/corpus/toolkit/src/collab-ui/index.ts +39 -0
  214. package/corpus/toolkit/src/collab-ui/lead-client.ts +32 -0
  215. package/corpus/toolkit/src/collab-ui/types.ts +96 -0
  216. package/corpus/toolkit/src/composer/AgentComposerFrame.tsx +59 -0
  217. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +983 -0
  218. package/corpus/toolkit/src/composer/MentionPopover.tsx +412 -0
  219. package/corpus/toolkit/src/composer/PastedTextChip.tsx +150 -0
  220. package/corpus/toolkit/src/composer/PromptComposer.tsx +718 -0
  221. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +856 -0
  222. package/corpus/toolkit/src/composer/TiptapComposer.tsx +2936 -0
  223. package/corpus/toolkit/src/composer/VoiceButton.tsx +255 -0
  224. package/corpus/toolkit/src/composer/asset-picker-url.ts +80 -0
  225. package/corpus/toolkit/src/composer/attachment-accept.ts +71 -0
  226. package/corpus/toolkit/src/composer/draft-key.ts +7 -0
  227. package/corpus/toolkit/src/composer/extensions/FileReference.tsx +55 -0
  228. package/corpus/toolkit/src/composer/extensions/MentionReference.tsx +93 -0
  229. package/corpus/toolkit/src/composer/extensions/SkillReference.tsx +56 -0
  230. package/corpus/toolkit/src/composer/index.ts +79 -0
  231. package/corpus/toolkit/src/composer/pasted-text.ts +160 -0
  232. package/corpus/toolkit/src/composer/prompt-attachments.ts +93 -0
  233. package/corpus/toolkit/src/composer/realtime-voice-audio-level.ts +64 -0
  234. package/corpus/toolkit/src/composer/realtime-voice-transcript.ts +134 -0
  235. package/corpus/toolkit/src/composer/runtime-adapters.tsx +343 -0
  236. package/corpus/toolkit/src/composer/types.ts +66 -0
  237. package/corpus/toolkit/src/composer/use-file-search.ts +64 -0
  238. package/corpus/toolkit/src/composer/use-mention-search.ts +90 -0
  239. package/corpus/toolkit/src/composer/use-skills.ts +45 -0
  240. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +2117 -0
  241. package/corpus/toolkit/src/composer/useVoiceDictation.ts +1191 -0
  242. package/corpus/toolkit/src/context-ui/ContextMeter.tsx +101 -0
  243. package/corpus/toolkit/src/context-ui/ContextSegmentRow.tsx +184 -0
  244. package/corpus/toolkit/src/context-ui/ContextTreemap.tsx +125 -0
  245. package/corpus/toolkit/src/context-ui/ContextXRayPanel.tsx +377 -0
  246. package/corpus/toolkit/src/context-ui/format.ts +42 -0
  247. package/corpus/toolkit/src/context-ui/index.ts +15 -0
  248. package/corpus/toolkit/src/context-ui/types.ts +43 -0
  249. package/corpus/toolkit/src/design-tweaks/index.ts +1 -0
  250. package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +1084 -0
  251. package/corpus/toolkit/src/editor/BubbleToolbar.tsx +253 -0
  252. package/corpus/toolkit/src/editor/CodeBlockNode.tsx +254 -0
  253. package/corpus/toolkit/src/editor/DragHandle.ts +1437 -0
  254. package/corpus/toolkit/src/editor/ImageExtension.ts +306 -0
  255. package/corpus/toolkit/src/editor/RegistryBlockContext.tsx +107 -0
  256. package/corpus/toolkit/src/editor/RegistryBlockNode.tsx +652 -0
  257. package/corpus/toolkit/src/editor/RichMarkdownEditor.tsx +81 -0
  258. package/corpus/toolkit/src/editor/RunId.ts +61 -0
  259. package/corpus/toolkit/src/editor/SharedRichEditor.tsx +321 -0
  260. package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +310 -0
  261. package/corpus/toolkit/src/editor/extensions.ts +402 -0
  262. package/corpus/toolkit/src/editor/gfmDoc.ts +92 -0
  263. package/corpus/toolkit/src/editor/index.ts +93 -0
  264. package/corpus/toolkit/src/editor/registrySlashCommands.ts +131 -0
  265. package/corpus/toolkit/src/editor/surgical-apply.ts +192 -0
  266. package/corpus/toolkit/src/editor/useCollabReconcile.ts +589 -0
  267. package/corpus/toolkit/src/editor.css +510 -0
  268. package/corpus/toolkit/src/hooks/index.ts +2 -0
  269. package/corpus/toolkit/src/hooks/use-mobile.tsx +21 -0
  270. package/corpus/toolkit/src/hooks/use-toast.ts +188 -0
  271. package/corpus/toolkit/src/index.ts +8 -0
  272. package/corpus/toolkit/src/onboarding/index.ts +1 -0
  273. package/corpus/toolkit/src/provider.tsx +47 -0
  274. package/corpus/toolkit/src/sharing/VisibilityBadge.tsx +37 -0
  275. package/corpus/toolkit/src/sharing/index.ts +4 -0
  276. package/corpus/toolkit/src/styles.css +21 -0
  277. package/corpus/toolkit/src/ui/accordion.tsx +56 -0
  278. package/corpus/toolkit/src/ui/alert-dialog.tsx +141 -0
  279. package/corpus/toolkit/src/ui/alert.tsx +59 -0
  280. package/corpus/toolkit/src/ui/aspect-ratio.tsx +5 -0
  281. package/corpus/toolkit/src/ui/avatar.tsx +48 -0
  282. package/corpus/toolkit/src/ui/badge.tsx +37 -0
  283. package/corpus/toolkit/src/ui/breadcrumb.tsx +115 -0
  284. package/corpus/toolkit/src/ui/button.tsx +78 -0
  285. package/corpus/toolkit/src/ui/calendar.tsx +214 -0
  286. package/corpus/toolkit/src/ui/card.tsx +86 -0
  287. package/corpus/toolkit/src/ui/carousel.tsx +260 -0
  288. package/corpus/toolkit/src/ui/chart.tsx +375 -0
  289. package/corpus/toolkit/src/ui/checkbox.tsx +28 -0
  290. package/corpus/toolkit/src/ui/collapsible.tsx +9 -0
  291. package/corpus/toolkit/src/ui/command.tsx +174 -0
  292. package/corpus/toolkit/src/ui/context-menu.tsx +202 -0
  293. package/corpus/toolkit/src/ui/date-picker.tsx +64 -0
  294. package/corpus/toolkit/src/ui/dialog.tsx +146 -0
  295. package/corpus/toolkit/src/ui/drawer.tsx +126 -0
  296. package/corpus/toolkit/src/ui/dropdown-menu.tsx +218 -0
  297. package/corpus/toolkit/src/ui/form.tsx +177 -0
  298. package/corpus/toolkit/src/ui/hover-card.tsx +27 -0
  299. package/corpus/toolkit/src/ui/index.ts +52 -0
  300. package/corpus/toolkit/src/ui/input-otp.tsx +69 -0
  301. package/corpus/toolkit/src/ui/input.tsx +22 -0
  302. package/corpus/toolkit/src/ui/label.tsx +24 -0
  303. package/corpus/toolkit/src/ui/logo.tsx +36 -0
  304. package/corpus/toolkit/src/ui/menubar.tsx +235 -0
  305. package/corpus/toolkit/src/ui/navigation-menu.tsx +128 -0
  306. package/corpus/toolkit/src/ui/pagination.tsx +121 -0
  307. package/corpus/toolkit/src/ui/popover.tsx +44 -0
  308. package/corpus/toolkit/src/ui/progress.tsx +26 -0
  309. package/corpus/toolkit/src/ui/radio-group.tsx +42 -0
  310. package/corpus/toolkit/src/ui/resizable.tsx +43 -0
  311. package/corpus/toolkit/src/ui/scroll-area.tsx +46 -0
  312. package/corpus/toolkit/src/ui/select.tsx +158 -0
  313. package/corpus/toolkit/src/ui/separator.tsx +29 -0
  314. package/corpus/toolkit/src/ui/sheet.tsx +160 -0
  315. package/corpus/toolkit/src/ui/sidebar.tsx +777 -0
  316. package/corpus/toolkit/src/ui/skeleton.tsx +18 -0
  317. package/corpus/toolkit/src/ui/slider.tsx +26 -0
  318. package/corpus/toolkit/src/ui/sonner.tsx +58 -0
  319. package/corpus/toolkit/src/ui/spinner.tsx +17 -0
  320. package/corpus/toolkit/src/ui/switch.tsx +27 -0
  321. package/corpus/toolkit/src/ui/table.tsx +117 -0
  322. package/corpus/toolkit/src/ui/tabs.tsx +53 -0
  323. package/corpus/toolkit/src/ui/textarea.tsx +23 -0
  324. package/corpus/toolkit/src/ui/toast.tsx +127 -0
  325. package/corpus/toolkit/src/ui/toaster.tsx +33 -0
  326. package/corpus/toolkit/src/ui/toggle-group.tsx +59 -0
  327. package/corpus/toolkit/src/ui/toggle.tsx +43 -0
  328. package/corpus/toolkit/src/ui/tooltip.tsx +53 -0
  329. package/corpus/toolkit/src/ui/use-toast.ts +3 -0
  330. package/corpus/toolkit/src/utils.ts +8 -0
  331. package/corpus/toolkit/tsconfig.json +23 -0
  332. package/dist/cli/atomic-json-file.d.ts +30 -0
  333. package/dist/cli/atomic-json-file.d.ts.map +1 -0
  334. package/dist/cli/atomic-json-file.js +240 -0
  335. package/dist/cli/atomic-json-file.js.map +1 -0
  336. package/dist/cli/claude-code-participant.d.ts +77 -0
  337. package/dist/cli/claude-code-participant.d.ts.map +1 -0
  338. package/dist/cli/claude-code-participant.js +355 -0
  339. package/dist/cli/claude-code-participant.js.map +1 -0
  340. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  341. package/dist/cli/code-agent-executor.js +18 -10
  342. package/dist/cli/code-agent-executor.js.map +1 -1
  343. package/dist/cli/code-agent-runs.concurrent-worker.d.ts +2 -0
  344. package/dist/cli/code-agent-runs.concurrent-worker.d.ts.map +1 -0
  345. package/dist/cli/code-agent-runs.concurrent-worker.js +32 -0
  346. package/dist/cli/code-agent-runs.concurrent-worker.js.map +1 -0
  347. package/dist/cli/code-agent-runs.d.ts.map +1 -1
  348. package/dist/cli/code-agent-runs.js +43 -56
  349. package/dist/cli/code-agent-runs.js.map +1 -1
  350. package/dist/cli/codex-cli-participant.d.ts +77 -0
  351. package/dist/cli/codex-cli-participant.d.ts.map +1 -0
  352. package/dist/cli/codex-cli-participant.js +354 -0
  353. package/dist/cli/codex-cli-participant.js.map +1 -0
  354. package/dist/cli/multi-frontier-runs.d.ts +115 -0
  355. package/dist/cli/multi-frontier-runs.d.ts.map +1 -1
  356. package/dist/cli/multi-frontier-runs.js +831 -113
  357. package/dist/cli/multi-frontier-runs.js.map +1 -1
  358. package/dist/client/chat/ChatHistoryList.d.ts +1 -87
  359. package/dist/client/chat/ChatHistoryList.d.ts.map +1 -1
  360. package/dist/client/chat/ChatHistoryList.js +1 -82
  361. package/dist/client/chat/ChatHistoryList.js.map +1 -1
  362. package/dist/integrations/index.d.ts +2 -1
  363. package/dist/integrations/index.d.ts.map +1 -1
  364. package/dist/integrations/index.js +2 -1
  365. package/dist/integrations/index.js.map +1 -1
  366. package/dist/integrations/slack-manifest.d.ts +1 -1
  367. package/dist/integrations/slack-oauth.d.ts +1 -1
  368. package/dist/integrations/slack-oauth.d.ts.map +1 -1
  369. package/dist/integrations/slack-oauth.js +1 -0
  370. package/dist/integrations/slack-oauth.js.map +1 -1
  371. package/dist/integrations/webhook-delivery.d.ts +23 -0
  372. package/dist/integrations/webhook-delivery.d.ts.map +1 -0
  373. package/dist/integrations/webhook-delivery.js +32 -0
  374. package/dist/integrations/webhook-delivery.js.map +1 -0
  375. package/dist/notifications/channels.d.ts.map +1 -1
  376. package/dist/notifications/channels.js +4 -9
  377. package/dist/notifications/channels.js.map +1 -1
  378. package/dist/notifications/routes.d.ts +3 -3
  379. package/dist/provider-api/actions/custom-provider-registration.d.ts +136 -0
  380. package/dist/provider-api/actions/custom-provider-registration.d.ts.map +1 -0
  381. package/dist/provider-api/actions/custom-provider-registration.js +154 -0
  382. package/dist/provider-api/actions/custom-provider-registration.js.map +1 -0
  383. package/dist/provider-api/actions/delete-staged-dataset.d.ts +1 -1
  384. package/dist/provider-api/actions/delete-staged-dataset.d.ts.map +1 -1
  385. package/dist/provider-api/actions/delete-staged-dataset.js +3 -34
  386. package/dist/provider-api/actions/delete-staged-dataset.js.map +1 -1
  387. package/dist/provider-api/actions/list-staged-datasets.d.ts +2 -3
  388. package/dist/provider-api/actions/list-staged-datasets.d.ts.map +1 -1
  389. package/dist/provider-api/actions/list-staged-datasets.js +3 -40
  390. package/dist/provider-api/actions/list-staged-datasets.js.map +1 -1
  391. package/dist/provider-api/actions/provider-api-audit.d.ts +7 -0
  392. package/dist/provider-api/actions/provider-api-audit.d.ts.map +1 -0
  393. package/dist/provider-api/actions/provider-api-audit.js +74 -0
  394. package/dist/provider-api/actions/provider-api-audit.js.map +1 -0
  395. package/dist/provider-api/actions/provider-api.d.ts +370 -0
  396. package/dist/provider-api/actions/provider-api.d.ts.map +1 -0
  397. package/dist/provider-api/actions/provider-api.js +280 -0
  398. package/dist/provider-api/actions/provider-api.js.map +1 -0
  399. package/dist/provider-api/actions/query-staged-dataset.d.ts +1 -1
  400. package/dist/provider-api/actions/query-staged-dataset.d.ts.map +1 -1
  401. package/dist/provider-api/actions/query-staged-dataset.js +3 -116
  402. package/dist/provider-api/actions/query-staged-dataset.js.map +1 -1
  403. package/dist/provider-api/actions/staged-datasets.d.ts +190 -0
  404. package/dist/provider-api/actions/staged-datasets.d.ts.map +1 -0
  405. package/dist/provider-api/actions/staged-datasets.js +210 -0
  406. package/dist/provider-api/actions/staged-datasets.js.map +1 -0
  407. package/dist/provider-api/gong.d.ts +44 -0
  408. package/dist/provider-api/gong.d.ts.map +1 -0
  409. package/dist/provider-api/gong.js +56 -0
  410. package/dist/provider-api/gong.js.map +1 -0
  411. package/dist/scripts/docs/source-search.d.ts +2 -1
  412. package/dist/scripts/docs/source-search.d.ts.map +1 -1
  413. package/dist/scripts/docs/source-search.js +2 -1
  414. package/dist/scripts/docs/source-search.js.map +1 -1
  415. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  416. package/dist/server/google-oauth-credentials.d.ts +35 -0
  417. package/dist/server/google-oauth-credentials.d.ts.map +1 -1
  418. package/dist/server/google-oauth-credentials.js +48 -2
  419. package/dist/server/google-oauth-credentials.js.map +1 -1
  420. package/dist/server/index.d.ts +1 -1
  421. package/dist/server/index.d.ts.map +1 -1
  422. package/dist/server/index.js +1 -1
  423. package/dist/server/index.js.map +1 -1
  424. package/dist/styles/chat-history-list.css +1 -313
  425. package/dist/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  426. package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  427. package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  428. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  429. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  430. package/dist/templates/chat/AGENTS.md +5 -2
  431. package/dist/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  432. package/dist/templates/default/.agents/skills/actions/SKILL.md +32 -12
  433. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  434. package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  435. package/dist/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  436. package/dist/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  437. package/dist/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  438. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  439. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  440. package/dist/templates/default/AGENTS.md +25 -18
  441. package/dist/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  442. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  443. package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  444. package/dist/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  445. package/dist/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  446. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  447. package/dist/templates/headless/AGENTS.md +7 -0
  448. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  449. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  450. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  451. package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  452. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  453. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  454. package/dist/templates/workspace-core/AGENTS.md +4 -0
  455. package/dist/templates/workspace-root/AGENTS.md +4 -0
  456. package/docs/AGENTS.md +7 -0
  457. package/docs/content/integrations.mdx +63 -2
  458. package/docs/design/provider-integration-authority.md +117 -0
  459. package/package.json +7 -2
  460. package/src/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  461. package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  462. package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  463. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  464. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  465. package/src/templates/chat/AGENTS.md +5 -2
  466. package/src/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  467. package/src/templates/default/.agents/skills/actions/SKILL.md +32 -12
  468. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  469. package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  470. package/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  471. package/src/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  472. package/src/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  473. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  474. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  475. package/src/templates/default/AGENTS.md +25 -18
  476. package/src/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  477. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  478. package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  479. package/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  480. package/src/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  481. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  482. package/src/templates/headless/AGENTS.md +7 -0
  483. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  484. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  485. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  486. package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  487. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  488. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  489. package/src/templates/workspace-core/AGENTS.md +4 -0
  490. package/src/templates/workspace-root/AGENTS.md +4 -0
@@ -0,0 +1,354 @@
1
+ import { execFile as execFileCallback, spawn } from "node:child_process";
2
+ import { isAbsolute } from "node:path";
3
+ import { StringDecoder } from "node:string_decoder";
4
+ import { promisify } from "node:util";
5
+ const execFile = promisify(execFileCallback);
6
+ const CODEX_CLI_VERSION = "0.144.3";
7
+ const DEFAULT_MAX_EVENTS = 2_000;
8
+ const DEFAULT_MAX_STREAM_BYTES = 8 * 1024 * 1024;
9
+ const DEFAULT_MAX_STDERR_BYTES = 128 * 1024;
10
+ const DEFAULT_TIMEOUT_MS = 30 * 60 * 1_000;
11
+ const DEFAULT_TERMINATION_GRACE_MS = 2_000;
12
+ const DEFAULT_FORCE_SETTLE_MS = 250;
13
+ const MAX_ERROR_MESSAGE_LENGTH = 200;
14
+ const SAFE_ENVIRONMENT_KEYS = [
15
+ "PATH",
16
+ "HOME",
17
+ "LANG",
18
+ "LC_ALL",
19
+ "LC_CTYPE",
20
+ "TMPDIR",
21
+ "TMP",
22
+ "TEMP",
23
+ "TERM",
24
+ "NO_COLOR",
25
+ "FORCE_COLOR",
26
+ "USER",
27
+ "LOGNAME",
28
+ "SHELL",
29
+ // Codex reads its subscription session from this config root (or HOME/.codex).
30
+ "CODEX_HOME",
31
+ ];
32
+ export class CodexCliSubscriptionRequiredError extends Error {
33
+ constructor() {
34
+ super("Codex CLI must be signed in with a ChatGPT subscription. API-key fallback is disabled.");
35
+ this.name = "CodexCliSubscriptionRequiredError";
36
+ }
37
+ }
38
+ export async function readCodexCliSubscriptionStatus(options = {}) {
39
+ try {
40
+ const execute = options.execute ?? execFile;
41
+ const { stdout, stderr } = await execute(resolveCommand(options.command, "codex"), ["login", "status"], {
42
+ encoding: "utf8",
43
+ maxBuffer: 128 * 1024,
44
+ timeout: 3_000,
45
+ windowsHide: true,
46
+ env: safeEnvironment(options.env ?? process.env),
47
+ });
48
+ const output = `${stdout}\n${stderr}`;
49
+ return {
50
+ loggedIn: /logged in using/i.test(output),
51
+ authMode: /logged in using\s+chatgpt/i.test(output)
52
+ ? "ChatGPT"
53
+ : /logged in using\s+(?:an?\s+)?api key/i.test(output)
54
+ ? "API key"
55
+ : "unknown",
56
+ };
57
+ }
58
+ catch {
59
+ return { loggedIn: false };
60
+ }
61
+ }
62
+ export async function runCodexCliParticipant(options) {
63
+ validateInput(options);
64
+ const env = safeEnvironment(options.env ?? process.env);
65
+ const command = resolveCommand(options.command, "codex");
66
+ const subscription = await (options.preflight
67
+ ? options.preflight({ command, env })
68
+ : readCodexCliSubscriptionStatus({ command, env }));
69
+ if (!subscription.loggedIn || subscription.authMode !== "ChatGPT") {
70
+ throw new CodexCliSubscriptionRequiredError();
71
+ }
72
+ if (options.signal?.aborted)
73
+ throw createAbortError();
74
+ const args = buildCodexCliParticipantArgs(options);
75
+ const spawnProcess = options.spawnProcess ??
76
+ ((command, commandArgs, spawnOptions) => spawn(command, commandArgs, spawnOptions));
77
+ const child = spawnProcess(command, args, {
78
+ cwd: options.cwd,
79
+ env,
80
+ shell: false,
81
+ stdio: ["pipe", "pipe", "pipe"],
82
+ });
83
+ return collectCodexCliParticipantResult(child, options);
84
+ }
85
+ export function buildCodexCliParticipantArgs(options) {
86
+ const sandbox = options.role === "driver" && options.allowWorkspaceWrite === true
87
+ ? "workspace-write"
88
+ : "read-only";
89
+ const args = [
90
+ "--ask-for-approval",
91
+ "never",
92
+ "--sandbox",
93
+ sandbox,
94
+ "--cd",
95
+ options.cwd,
96
+ "exec",
97
+ ];
98
+ const resumeSessionId = readString(options.session?.resumeSessionId);
99
+ if (resumeSessionId)
100
+ args.push("resume");
101
+ args.push("--json", "--skip-git-repo-check", "--ignore-user-config");
102
+ const model = readString(options.model);
103
+ if (model)
104
+ args.push("--model", model);
105
+ if (resumeSessionId)
106
+ args.push("--", resumeSessionId, "-");
107
+ else
108
+ args.push("-");
109
+ return args;
110
+ }
111
+ function collectCodexCliParticipantResult(child, options) {
112
+ const maxEvents = boundedLimit(options.maxEvents, DEFAULT_MAX_EVENTS);
113
+ const maxStreamBytes = boundedLimit(options.maxStreamBytes, DEFAULT_MAX_STREAM_BYTES);
114
+ const maxStderrBytes = boundedLimit(options.maxStderrBytes, DEFAULT_MAX_STDERR_BYTES);
115
+ const timeoutMs = boundedDuration(options.timeoutMs, DEFAULT_TIMEOUT_MS);
116
+ const terminationGraceMs = boundedDuration(options.terminationGraceMs, DEFAULT_TERMINATION_GRACE_MS);
117
+ const forceSettleMs = boundedDuration(options.forceSettleMs, DEFAULT_FORCE_SETTLE_MS);
118
+ const decoder = new StringDecoder("utf8");
119
+ const stderrDecoder = new StringDecoder("utf8");
120
+ const events = [];
121
+ let pending = "";
122
+ let streamBytes = 0;
123
+ let stderr = "";
124
+ let stderrBytes = 0;
125
+ let stderrTruncated = false;
126
+ let fatalError;
127
+ let resumeSessionId;
128
+ return new Promise((resolve, reject) => {
129
+ let settled = false;
130
+ let terminationTimer;
131
+ let forceSettleTimer;
132
+ const timeoutTimer = setTimeout(() => {
133
+ stopWithError(new Error(`Codex CLI timed out after ${timeoutMs}ms.`));
134
+ }, timeoutMs);
135
+ timeoutTimer.unref?.();
136
+ const cleanup = () => {
137
+ options.signal?.removeEventListener("abort", abort);
138
+ clearTimeout(timeoutTimer);
139
+ if (terminationTimer)
140
+ clearTimeout(terminationTimer);
141
+ if (forceSettleTimer)
142
+ clearTimeout(forceSettleTimer);
143
+ };
144
+ const finishError = (error) => {
145
+ if (settled)
146
+ return;
147
+ settled = true;
148
+ cleanup();
149
+ reject(safeError(error));
150
+ };
151
+ const stopWithError = (error) => {
152
+ if (fatalError)
153
+ return;
154
+ fatalError = error;
155
+ terminationTimer = setTimeout(() => {
156
+ if (settled)
157
+ return;
158
+ forceSettleTimer = setTimeout(() => {
159
+ finishError(fatalError ?? error);
160
+ }, forceSettleMs);
161
+ forceSettleTimer.unref?.();
162
+ child.kill("SIGKILL");
163
+ }, terminationGraceMs);
164
+ terminationTimer.unref?.();
165
+ child.kill("SIGTERM");
166
+ };
167
+ const abort = () => stopWithError(createAbortError());
168
+ const streamError = (error) => {
169
+ if (!settled)
170
+ stopWithError(error);
171
+ };
172
+ const consume = (line) => {
173
+ const event = consumeJsonLine(line, events, maxEvents, options.onEvent);
174
+ const threadId = readString(event?.thread_id);
175
+ if (event?.type === "thread.started" && threadId) {
176
+ resumeSessionId = threadId;
177
+ }
178
+ };
179
+ child.stdin.on("error", streamError);
180
+ child.stdout.on("error", streamError);
181
+ child.stderr.on("error", streamError);
182
+ if (options.signal) {
183
+ if (options.signal.aborted)
184
+ abort();
185
+ else
186
+ options.signal.addEventListener("abort", abort, { once: true });
187
+ }
188
+ child.stdout.on("data", (chunk) => {
189
+ if (fatalError)
190
+ return;
191
+ const bytes = Buffer.isBuffer(chunk)
192
+ ? chunk.length
193
+ : Buffer.byteLength(chunk);
194
+ streamBytes += bytes;
195
+ if (streamBytes > maxStreamBytes) {
196
+ stopWithError(new Error(`Codex CLI stream exceeded ${maxStreamBytes} bytes.`));
197
+ return;
198
+ }
199
+ pending += decoder.write(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
200
+ try {
201
+ let newline = pending.indexOf("\n");
202
+ while (newline !== -1) {
203
+ consume(pending.slice(0, newline));
204
+ pending = pending.slice(newline + 1);
205
+ newline = pending.indexOf("\n");
206
+ }
207
+ }
208
+ catch (error) {
209
+ stopWithError(toError(error));
210
+ }
211
+ });
212
+ child.stderr.on("data", (chunk) => {
213
+ const encoded = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
214
+ const remaining = Math.max(0, maxStderrBytes - stderrBytes);
215
+ if (remaining === 0) {
216
+ stderrTruncated = true;
217
+ return;
218
+ }
219
+ stderr += stderrDecoder.write(encoded.subarray(0, remaining));
220
+ stderrBytes += Math.min(encoded.length, remaining);
221
+ if (encoded.length > remaining)
222
+ stderrTruncated = true;
223
+ });
224
+ child.once("error", finishError);
225
+ child.once("close", (exitCode, exitSignal) => {
226
+ if (settled)
227
+ return;
228
+ try {
229
+ pending += decoder.end();
230
+ stderr += stderrDecoder.end();
231
+ if (pending.trim())
232
+ consume(pending);
233
+ }
234
+ catch (error) {
235
+ fatalError ??= toError(error);
236
+ }
237
+ if (fatalError) {
238
+ finishError(fatalError);
239
+ return;
240
+ }
241
+ if (exitCode !== 0) {
242
+ finishError(new Error(`Codex CLI exited with ${exitSignal ?? exitCode ?? "unknown"}${stderr ? `: ${summarizeStderr(stderr)}` : ""}`));
243
+ return;
244
+ }
245
+ settled = true;
246
+ cleanup();
247
+ resolve({
248
+ exitCode: 0,
249
+ events,
250
+ stderr: sanitizeStderr(stderr),
251
+ stderrTruncated,
252
+ ...(resumeSessionId ? { resumeSessionId } : {}),
253
+ });
254
+ });
255
+ try {
256
+ child.stdin.end(options.prompt);
257
+ }
258
+ catch (error) {
259
+ stopWithError(toError(error));
260
+ }
261
+ });
262
+ }
263
+ function consumeJsonLine(line, events, maxEvents, onEvent) {
264
+ const trimmed = line.trim();
265
+ if (!trimmed)
266
+ return undefined;
267
+ if (events.length >= maxEvents) {
268
+ throw new Error(`Codex CLI stream exceeded ${maxEvents} events.`);
269
+ }
270
+ const parsed = JSON.parse(trimmed);
271
+ const event = asRecord(parsed);
272
+ if (!event)
273
+ throw new Error("Codex CLI emitted a non-object JSON event.");
274
+ events.push(event);
275
+ onEvent?.(event);
276
+ return event;
277
+ }
278
+ function safeEnvironment(input) {
279
+ return Object.fromEntries(SAFE_ENVIRONMENT_KEYS.flatMap((key) => typeof input[key] === "string" ? [[key, input[key]]] : []));
280
+ }
281
+ function validateInput(options) {
282
+ if (!readString(options.prompt))
283
+ throw new Error("Codex CLI prompt is required.");
284
+ if (!readString(options.cwd))
285
+ throw new Error("Codex CLI cwd is required.");
286
+ if (options.allowWorkspaceWrite && options.role !== "driver") {
287
+ throw new Error("Only a Codex driver can receive workspace-write access.");
288
+ }
289
+ const model = readString(options.model);
290
+ if (model?.startsWith("-"))
291
+ throw new Error("Codex CLI model is invalid.");
292
+ const resumeSessionId = readString(options.session?.resumeSessionId);
293
+ if (resumeSessionId?.includes("\0")) {
294
+ throw new Error("Codex CLI resume state is invalid.");
295
+ }
296
+ resolveCommand(options.command, "codex");
297
+ }
298
+ function boundedLimit(value, maximum) {
299
+ return Number.isSafeInteger(value) && (value ?? 0) > 0
300
+ ? Math.min(value, maximum)
301
+ : maximum;
302
+ }
303
+ function boundedDuration(value, fallback) {
304
+ return Number.isSafeInteger(value) && (value ?? 0) > 0
305
+ ? Math.min(value, DEFAULT_TIMEOUT_MS)
306
+ : fallback;
307
+ }
308
+ function resolveCommand(command, defaultCommand) {
309
+ const value = readString(command) ?? defaultCommand;
310
+ if (value === defaultCommand)
311
+ return value;
312
+ if (value.includes("\0") || !isAbsolute(value)) {
313
+ throw new Error("Codex CLI command must be an absolute executable path.");
314
+ }
315
+ return value;
316
+ }
317
+ function createAbortError() {
318
+ const error = new Error("Codex CLI participant was canceled.");
319
+ error.name = "AbortError";
320
+ return error;
321
+ }
322
+ function toError(value) {
323
+ return value instanceof Error ? value : new Error(String(value));
324
+ }
325
+ function safeError(error) {
326
+ const safe = new Error(summarizeStderr(error.message));
327
+ safe.name = error.name;
328
+ return safe;
329
+ }
330
+ function summarizeStderr(value) {
331
+ return sanitizeStderr(value)
332
+ .replace(/\s+/g, " ")
333
+ .trim()
334
+ .slice(0, MAX_ERROR_MESSAGE_LENGTH);
335
+ }
336
+ function sanitizeStderr(value) {
337
+ return value
338
+ .replace(/\bBearer\s+\S+/gi, "Bearer <redacted>")
339
+ .replace(/(["']?)([A-Za-z_]*(?:token|key|secret|password)[A-Za-z_]*)\1\s*([=:])\s*(?:"[^"]*"|'[^']*'|[^\s,;}\]]+)/gi, '$1$2$1$3"<redacted>"')
340
+ .replace(/\b(?:sk|rk)-[A-Za-z0-9_-]{8,}\b/g, "<redacted>");
341
+ }
342
+ function readString(value) {
343
+ if (typeof value !== "string")
344
+ return undefined;
345
+ const trimmed = value.trim();
346
+ return trimmed || undefined;
347
+ }
348
+ function asRecord(value) {
349
+ return value !== null && typeof value === "object" && !Array.isArray(value)
350
+ ? value
351
+ : undefined;
352
+ }
353
+ export const CODEX_CLI_PARTICIPANT_TESTED_VERSION = CODEX_CLI_VERSION;
354
+ //# sourceMappingURL=codex-cli-participant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-cli-participant.js","sourceRoot":"","sources":["../../src/cli/codex-cli-participant.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile as execFileCallback, spawn } from \"node:child_process\";\nimport { isAbsolute } from \"node:path\";\nimport type { Readable, Writable } from \"node:stream\";\nimport { StringDecoder } from \"node:string_decoder\";\nimport { promisify } from \"node:util\";\n\nconst execFile = promisify(execFileCallback);\n\nconst CODEX_CLI_VERSION = \"0.144.3\";\nconst DEFAULT_MAX_EVENTS = 2_000;\nconst DEFAULT_MAX_STREAM_BYTES = 8 * 1024 * 1024;\nconst DEFAULT_MAX_STDERR_BYTES = 128 * 1024;\nconst DEFAULT_TIMEOUT_MS = 30 * 60 * 1_000;\nconst DEFAULT_TERMINATION_GRACE_MS = 2_000;\nconst DEFAULT_FORCE_SETTLE_MS = 250;\nconst MAX_ERROR_MESSAGE_LENGTH = 200;\n\nconst SAFE_ENVIRONMENT_KEYS = [\n \"PATH\",\n \"HOME\",\n \"LANG\",\n \"LC_ALL\",\n \"LC_CTYPE\",\n \"TMPDIR\",\n \"TMP\",\n \"TEMP\",\n \"TERM\",\n \"NO_COLOR\",\n \"FORCE_COLOR\",\n \"USER\",\n \"LOGNAME\",\n \"SHELL\",\n // Codex reads its subscription session from this config root (or HOME/.codex).\n \"CODEX_HOME\",\n] as const;\n\nexport type CodexCliParticipantRole = \"planning\" | \"watchdog\" | \"driver\";\n\nexport interface CodexCliSubscriptionStatus {\n loggedIn: boolean;\n authMode?: \"ChatGPT\" | \"API key\" | \"unknown\";\n}\n\nexport interface CodexCliParticipantSession {\n /** Codex owns and interprets this value; Agent Native only persists it. */\n resumeSessionId?: string;\n}\n\nexport interface CodexCliParticipantEvent {\n [key: string]: unknown;\n}\n\nexport interface CodexCliParticipantResult {\n exitCode: number;\n events: CodexCliParticipantEvent[];\n stderr: string;\n stderrTruncated: boolean;\n resumeSessionId?: string;\n}\n\nexport interface CodexCliParticipantChild {\n stdin: Writable;\n stdout: Readable;\n stderr: Readable;\n kill(signal?: NodeJS.Signals): boolean;\n once(event: \"error\", listener: (error: Error) => void): unknown;\n once(\n event: \"close\",\n listener: (code: number | null, signal: NodeJS.Signals | null) => void,\n ): unknown;\n}\n\nexport interface CodexCliParticipantSpawnOptions {\n cwd: string;\n env: NodeJS.ProcessEnv;\n shell: false;\n stdio: [\"pipe\", \"pipe\", \"pipe\"];\n}\n\nexport type CodexCliParticipantSpawn = (\n command: string,\n args: string[],\n options: CodexCliParticipantSpawnOptions,\n) => CodexCliParticipantChild;\n\nexport interface RunCodexCliParticipantOptions {\n role: CodexCliParticipantRole;\n prompt: string;\n cwd: string;\n model?: string;\n session?: CodexCliParticipantSession;\n /** Drivers remain read-only unless this explicit capability is true. */\n allowWorkspaceWrite?: boolean;\n /** Either the fixed CLI name or an absolute executable path for packaged apps. */\n command?: string;\n signal?: AbortSignal;\n env?: NodeJS.ProcessEnv;\n maxEvents?: number;\n maxStreamBytes?: number;\n maxStderrBytes?: number;\n timeoutMs?: number;\n terminationGraceMs?: number;\n forceSettleMs?: number;\n onEvent?: (event: CodexCliParticipantEvent) => void;\n preflight?: (\n context: CodexCliParticipantPreflightContext,\n ) => Promise<CodexCliSubscriptionStatus>;\n spawnProcess?: CodexCliParticipantSpawn;\n}\n\nexport interface CodexCliParticipantPreflightContext {\n command: string;\n env: NodeJS.ProcessEnv;\n}\n\nexport class CodexCliSubscriptionRequiredError extends Error {\n constructor() {\n super(\n \"Codex CLI must be signed in with a ChatGPT subscription. API-key fallback is disabled.\",\n );\n this.name = \"CodexCliSubscriptionRequiredError\";\n }\n}\n\nexport interface CodexCliSubscriptionStatusOptions {\n command?: string;\n env?: NodeJS.ProcessEnv;\n execute?: typeof execFile;\n}\n\nexport async function readCodexCliSubscriptionStatus(\n options: CodexCliSubscriptionStatusOptions = {},\n): Promise<CodexCliSubscriptionStatus> {\n try {\n const execute = options.execute ?? execFile;\n const { stdout, stderr } = await execute(\n resolveCommand(options.command, \"codex\"),\n [\"login\", \"status\"],\n {\n encoding: \"utf8\",\n maxBuffer: 128 * 1024,\n timeout: 3_000,\n windowsHide: true,\n env: safeEnvironment(options.env ?? process.env),\n },\n );\n const output = `${stdout}\\n${stderr}`;\n return {\n loggedIn: /logged in using/i.test(output),\n authMode: /logged in using\\s+chatgpt/i.test(output)\n ? \"ChatGPT\"\n : /logged in using\\s+(?:an?\\s+)?api key/i.test(output)\n ? \"API key\"\n : \"unknown\",\n };\n } catch {\n return { loggedIn: false };\n }\n}\n\nexport async function runCodexCliParticipant(\n options: RunCodexCliParticipantOptions,\n): Promise<CodexCliParticipantResult> {\n validateInput(options);\n const env = safeEnvironment(options.env ?? process.env);\n const command = resolveCommand(options.command, \"codex\");\n const subscription = await (options.preflight\n ? options.preflight({ command, env })\n : readCodexCliSubscriptionStatus({ command, env }));\n if (!subscription.loggedIn || subscription.authMode !== \"ChatGPT\") {\n throw new CodexCliSubscriptionRequiredError();\n }\n if (options.signal?.aborted) throw createAbortError();\n\n const args = buildCodexCliParticipantArgs(options);\n const spawnProcess =\n options.spawnProcess ??\n ((command, commandArgs, spawnOptions) =>\n spawn(command, commandArgs, spawnOptions));\n const child = spawnProcess(command, args, {\n cwd: options.cwd,\n env,\n shell: false,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return collectCodexCliParticipantResult(child, options);\n}\n\nexport function buildCodexCliParticipantArgs(\n options: Pick<\n RunCodexCliParticipantOptions,\n \"role\" | \"cwd\" | \"model\" | \"session\" | \"allowWorkspaceWrite\"\n >,\n): string[] {\n const sandbox =\n options.role === \"driver\" && options.allowWorkspaceWrite === true\n ? \"workspace-write\"\n : \"read-only\";\n const args = [\n \"--ask-for-approval\",\n \"never\",\n \"--sandbox\",\n sandbox,\n \"--cd\",\n options.cwd,\n \"exec\",\n ];\n const resumeSessionId = readString(options.session?.resumeSessionId);\n if (resumeSessionId) args.push(\"resume\");\n args.push(\"--json\", \"--skip-git-repo-check\", \"--ignore-user-config\");\n\n const model = readString(options.model);\n if (model) args.push(\"--model\", model);\n if (resumeSessionId) args.push(\"--\", resumeSessionId, \"-\");\n else args.push(\"-\");\n return args;\n}\n\nfunction collectCodexCliParticipantResult(\n child: CodexCliParticipantChild,\n options: RunCodexCliParticipantOptions,\n): Promise<CodexCliParticipantResult> {\n const maxEvents = boundedLimit(options.maxEvents, DEFAULT_MAX_EVENTS);\n const maxStreamBytes = boundedLimit(\n options.maxStreamBytes,\n DEFAULT_MAX_STREAM_BYTES,\n );\n const maxStderrBytes = boundedLimit(\n options.maxStderrBytes,\n DEFAULT_MAX_STDERR_BYTES,\n );\n const timeoutMs = boundedDuration(options.timeoutMs, DEFAULT_TIMEOUT_MS);\n const terminationGraceMs = boundedDuration(\n options.terminationGraceMs,\n DEFAULT_TERMINATION_GRACE_MS,\n );\n const forceSettleMs = boundedDuration(\n options.forceSettleMs,\n DEFAULT_FORCE_SETTLE_MS,\n );\n const decoder = new StringDecoder(\"utf8\");\n const stderrDecoder = new StringDecoder(\"utf8\");\n const events: CodexCliParticipantEvent[] = [];\n let pending = \"\";\n let streamBytes = 0;\n let stderr = \"\";\n let stderrBytes = 0;\n let stderrTruncated = false;\n let fatalError: Error | undefined;\n let resumeSessionId: string | undefined;\n\n return new Promise((resolve, reject) => {\n let settled = false;\n let terminationTimer: NodeJS.Timeout | undefined;\n let forceSettleTimer: NodeJS.Timeout | undefined;\n const timeoutTimer = setTimeout(() => {\n stopWithError(new Error(`Codex CLI timed out after ${timeoutMs}ms.`));\n }, timeoutMs);\n timeoutTimer.unref?.();\n const cleanup = () => {\n options.signal?.removeEventListener(\"abort\", abort);\n clearTimeout(timeoutTimer);\n if (terminationTimer) clearTimeout(terminationTimer);\n if (forceSettleTimer) clearTimeout(forceSettleTimer);\n };\n const finishError = (error: Error) => {\n if (settled) return;\n settled = true;\n cleanup();\n reject(safeError(error));\n };\n const stopWithError = (error: Error) => {\n if (fatalError) return;\n fatalError = error;\n terminationTimer = setTimeout(() => {\n if (settled) return;\n forceSettleTimer = setTimeout(() => {\n finishError(fatalError ?? error);\n }, forceSettleMs);\n forceSettleTimer.unref?.();\n child.kill(\"SIGKILL\");\n }, terminationGraceMs);\n terminationTimer.unref?.();\n child.kill(\"SIGTERM\");\n };\n const abort = () => stopWithError(createAbortError());\n const streamError = (error: Error) => {\n if (!settled) stopWithError(error);\n };\n const consume = (line: string) => {\n const event = consumeJsonLine(line, events, maxEvents, options.onEvent);\n const threadId = readString(event?.thread_id);\n if (event?.type === \"thread.started\" && threadId) {\n resumeSessionId = threadId;\n }\n };\n\n child.stdin.on(\"error\", streamError);\n child.stdout.on(\"error\", streamError);\n child.stderr.on(\"error\", streamError);\n\n if (options.signal) {\n if (options.signal.aborted) abort();\n else options.signal.addEventListener(\"abort\", abort, { once: true });\n }\n\n child.stdout.on(\"data\", (chunk: Buffer | string) => {\n if (fatalError) return;\n const bytes = Buffer.isBuffer(chunk)\n ? chunk.length\n : Buffer.byteLength(chunk);\n streamBytes += bytes;\n if (streamBytes > maxStreamBytes) {\n stopWithError(\n new Error(`Codex CLI stream exceeded ${maxStreamBytes} bytes.`),\n );\n return;\n }\n pending += decoder.write(\n Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk),\n );\n try {\n let newline = pending.indexOf(\"\\n\");\n while (newline !== -1) {\n consume(pending.slice(0, newline));\n pending = pending.slice(newline + 1);\n newline = pending.indexOf(\"\\n\");\n }\n } catch (error) {\n stopWithError(toError(error));\n }\n });\n child.stderr.on(\"data\", (chunk: Buffer | string) => {\n const encoded = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n const remaining = Math.max(0, maxStderrBytes - stderrBytes);\n if (remaining === 0) {\n stderrTruncated = true;\n return;\n }\n stderr += stderrDecoder.write(encoded.subarray(0, remaining));\n stderrBytes += Math.min(encoded.length, remaining);\n if (encoded.length > remaining) stderrTruncated = true;\n });\n child.once(\"error\", finishError);\n child.once(\"close\", (exitCode, exitSignal) => {\n if (settled) return;\n try {\n pending += decoder.end();\n stderr += stderrDecoder.end();\n if (pending.trim()) consume(pending);\n } catch (error) {\n fatalError ??= toError(error);\n }\n if (fatalError) {\n finishError(fatalError);\n return;\n }\n if (exitCode !== 0) {\n finishError(\n new Error(\n `Codex CLI exited with ${exitSignal ?? exitCode ?? \"unknown\"}${stderr ? `: ${summarizeStderr(stderr)}` : \"\"}`,\n ),\n );\n return;\n }\n settled = true;\n cleanup();\n resolve({\n exitCode: 0,\n events,\n stderr: sanitizeStderr(stderr),\n stderrTruncated,\n ...(resumeSessionId ? { resumeSessionId } : {}),\n });\n });\n try {\n child.stdin.end(options.prompt);\n } catch (error) {\n stopWithError(toError(error));\n }\n });\n}\n\nfunction consumeJsonLine(\n line: string,\n events: CodexCliParticipantEvent[],\n maxEvents: number,\n onEvent?: (event: CodexCliParticipantEvent) => void,\n): CodexCliParticipantEvent | undefined {\n const trimmed = line.trim();\n if (!trimmed) return undefined;\n if (events.length >= maxEvents) {\n throw new Error(`Codex CLI stream exceeded ${maxEvents} events.`);\n }\n const parsed = JSON.parse(trimmed) as unknown;\n const event = asRecord(parsed);\n if (!event) throw new Error(\"Codex CLI emitted a non-object JSON event.\");\n events.push(event);\n onEvent?.(event);\n return event;\n}\n\nfunction safeEnvironment(input: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n return Object.fromEntries(\n SAFE_ENVIRONMENT_KEYS.flatMap((key) =>\n typeof input[key] === \"string\" ? [[key, input[key]]] : [],\n ),\n );\n}\n\nfunction validateInput(options: RunCodexCliParticipantOptions): void {\n if (!readString(options.prompt))\n throw new Error(\"Codex CLI prompt is required.\");\n if (!readString(options.cwd)) throw new Error(\"Codex CLI cwd is required.\");\n if (options.allowWorkspaceWrite && options.role !== \"driver\") {\n throw new Error(\"Only a Codex driver can receive workspace-write access.\");\n }\n const model = readString(options.model);\n if (model?.startsWith(\"-\")) throw new Error(\"Codex CLI model is invalid.\");\n const resumeSessionId = readString(options.session?.resumeSessionId);\n if (resumeSessionId?.includes(\"\\0\")) {\n throw new Error(\"Codex CLI resume state is invalid.\");\n }\n resolveCommand(options.command, \"codex\");\n}\n\nfunction boundedLimit(value: number | undefined, maximum: number): number {\n return Number.isSafeInteger(value) && (value ?? 0) > 0\n ? Math.min(value as number, maximum)\n : maximum;\n}\n\nfunction boundedDuration(value: number | undefined, fallback: number): number {\n return Number.isSafeInteger(value) && (value ?? 0) > 0\n ? Math.min(value as number, DEFAULT_TIMEOUT_MS)\n : fallback;\n}\n\nfunction resolveCommand(\n command: string | undefined,\n defaultCommand: string,\n): string {\n const value = readString(command) ?? defaultCommand;\n if (value === defaultCommand) return value;\n if (value.includes(\"\\0\") || !isAbsolute(value)) {\n throw new Error(\"Codex CLI command must be an absolute executable path.\");\n }\n return value;\n}\n\nfunction createAbortError(): Error {\n const error = new Error(\"Codex CLI participant was canceled.\");\n error.name = \"AbortError\";\n return error;\n}\n\nfunction toError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value));\n}\n\nfunction safeError(error: Error): Error {\n const safe = new Error(summarizeStderr(error.message));\n safe.name = error.name;\n return safe;\n}\n\nfunction summarizeStderr(value: string): string {\n return sanitizeStderr(value)\n .replace(/\\s+/g, \" \")\n .trim()\n .slice(0, MAX_ERROR_MESSAGE_LENGTH);\n}\n\nfunction sanitizeStderr(value: string): string {\n return value\n .replace(/\\bBearer\\s+\\S+/gi, \"Bearer <redacted>\")\n .replace(\n /([\"']?)([A-Za-z_]*(?:token|key|secret|password)[A-Za-z_]*)\\1\\s*([=:])\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s,;}\\]]+)/gi,\n '$1$2$1$3\"<redacted>\"',\n )\n .replace(/\\b(?:sk|rk)-[A-Za-z0-9_-]{8,}\\b/g, \"<redacted>\");\n}\n\nfunction readString(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\nfunction asRecord(value: unknown): CodexCliParticipantEvent | undefined {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n ? (value as CodexCliParticipantEvent)\n : undefined;\n}\n\nexport const CODEX_CLI_PARTICIPANT_TESTED_VERSION = CODEX_CLI_VERSION;\n"]}
@@ -38,6 +38,8 @@ export interface MultiFrontierRecovery {
38
38
  export interface MultiFrontierRunState {
39
39
  schemaVersion: 1;
40
40
  collaborationId: string;
41
+ /** Opaque local workspace handle; never a filesystem path. */
42
+ workspaceId?: string;
41
43
  phase: MultiFrontierPhase;
42
44
  participants: MultiFrontierParticipantState[];
43
45
  driver: MultiFrontierDriverLease | null;
@@ -46,14 +48,18 @@ export interface MultiFrontierRunState {
46
48
  round: number;
47
49
  proposalIds: string[];
48
50
  reviewIds: string[];
51
+ /** Opt-in policy; explicit GO remains the durable default. */
52
+ autoContinueAfterAgreement: boolean;
49
53
  recovery?: MultiFrontierRecovery;
50
54
  }
51
55
  export interface CreateMultiFrontierRunInput {
52
56
  collaborationId: string;
57
+ workspaceId?: string;
53
58
  phase?: MultiFrontierPhase;
54
59
  participants: MultiFrontierParticipantState[];
55
60
  approval?: MultiFrontierApproval;
56
61
  checkpointIds?: string[];
62
+ autoContinueAfterAgreement?: boolean;
57
63
  }
58
64
  export interface RecoverMultiFrontierRunInput {
59
65
  now: string;
@@ -71,6 +77,76 @@ export interface PersistedMultiFrontierParticipantEvent extends MultiFrontierPar
71
77
  createdAt: string;
72
78
  status?: MultiFrontierParticipantStatus;
73
79
  }
80
+ export type MultiFrontierArtifactKind = "proposal" | "review" | "checkpoint";
81
+ export interface MultiFrontierArtifactTestSummary {
82
+ name: string;
83
+ status: "passed" | "failed" | "skipped";
84
+ summary?: string;
85
+ }
86
+ /** A bounded, redacted projection used only for Desktop orchestrator recovery. */
87
+ export interface MultiFrontierOrchestrationArtifact {
88
+ id: string;
89
+ kind: "proposal" | "cross_review" | "revision" | "synthesis" | "checkpoint" | "watchdog_review" | "finding_disposition" | "completion";
90
+ round: number;
91
+ participantId?: string;
92
+ text: string;
93
+ attribution: {
94
+ participantIds: string[];
95
+ sourceArtifactIds: string[];
96
+ };
97
+ supersedesArtifactId?: string;
98
+ metadata?: Record<string, unknown>;
99
+ }
100
+ /**
101
+ * A deliberately narrow coordination record. Full diffs, transcripts, and
102
+ * provider payloads stay in their owning runtime rather than this durable
103
+ * cross-provider index.
104
+ */
105
+ export interface PersistedMultiFrontierArtifact {
106
+ schemaVersion: 1;
107
+ id: string;
108
+ collaborationId: string;
109
+ kind: MultiFrontierArtifactKind;
110
+ createdAt: string;
111
+ participantId?: string;
112
+ title: string;
113
+ summary: string;
114
+ supersedesArtifactId?: string;
115
+ contentHash?: string;
116
+ fileRefs?: string[];
117
+ testSummary?: MultiFrontierArtifactTestSummary[];
118
+ orchestration?: MultiFrontierOrchestrationArtifact;
119
+ }
120
+ export interface AppendMultiFrontierArtifactInput {
121
+ id: string;
122
+ collaborationId: string;
123
+ kind: MultiFrontierArtifactKind;
124
+ createdAt?: string;
125
+ participantId?: string;
126
+ title: string;
127
+ summary: string;
128
+ supersedesArtifactId?: string;
129
+ contentHash?: string;
130
+ fileRefs?: string[];
131
+ testSummary?: MultiFrontierArtifactTestSummary[];
132
+ orchestration?: MultiFrontierOrchestrationArtifact;
133
+ }
134
+ export interface MultiFrontierParticipantEventRetention {
135
+ schemaVersion: 1;
136
+ retainedEventCount: number;
137
+ retainedByteCount: number;
138
+ droppedEventCount: number;
139
+ droppedByteCount: number;
140
+ truncated: boolean;
141
+ replay: {
142
+ requiresSnapshot: boolean;
143
+ firstRetainedEventId?: string;
144
+ };
145
+ }
146
+ export interface MultiFrontierParticipantEventRetentionLimits {
147
+ maxEventCount: number;
148
+ maxBytes: number;
149
+ }
74
150
  export interface AppendMultiFrontierParticipantEventInput extends MultiFrontierParticipantEvent {
75
151
  id: string;
76
152
  collaborationId: string;
@@ -81,6 +157,11 @@ export interface MultiFrontierStoredRun extends MultiFrontierRunState {
81
157
  createdAt: string;
82
158
  updatedAt: string;
83
159
  }
160
+ /**
161
+ * The desktop main-process coordinator is the sole caller of this transition
162
+ * boundary. Its callback receives a detached snapshot, never renderer input.
163
+ */
164
+ export type MultiFrontierCoordinatorTransition = (current: MultiFrontierStoredRun) => MultiFrontierRunState | MultiFrontierStoredRun | null;
84
165
  export type AppendMultiFrontierParticipantEventResult = {
85
166
  accepted: true;
86
167
  deduplicated: boolean;
@@ -91,10 +172,23 @@ export type AppendMultiFrontierParticipantEventResult = {
91
172
  reason: "missing-run" | "stale-driver" | "missing-participant" | "event-conflict" | "terminal-participant";
92
173
  run: MultiFrontierStoredRun | null;
93
174
  };
175
+ export type AppendMultiFrontierArtifactResult = {
176
+ accepted: true;
177
+ deduplicated: boolean;
178
+ artifact: PersistedMultiFrontierArtifact;
179
+ run: MultiFrontierStoredRun;
180
+ } | {
181
+ accepted: false;
182
+ reason: "missing-run" | "artifact-conflict" | "missing-participant" | "missing-superseded-artifact" | "artifact-limit-reached";
183
+ run: MultiFrontierStoredRun | null;
184
+ };
185
+ export declare const MAX_MULTI_FRONTIER_ARTIFACTS_PER_RUN = 200;
186
+ export declare const DEFAULT_MULTI_FRONTIER_PARTICIPANT_EVENT_RETENTION: MultiFrontierParticipantEventRetentionLimits;
94
187
  /** All multi-frontier state stays alongside the existing local Code store. */
95
188
  export declare function multiFrontierRunsStoreRoot(): string;
96
189
  export declare function multiFrontierRunsDir(): string;
97
190
  export declare function multiFrontierParticipantEventsDir(): string;
191
+ export declare function multiFrontierArtifactsDir(): string;
98
192
  export declare function createMultiFrontierRun(input: CreateMultiFrontierRunInput): MultiFrontierStoredRun;
99
193
  export declare function getMultiFrontierRun(collaborationId: string): MultiFrontierStoredRun | null;
100
194
  export declare function listMultiFrontierRuns(): MultiFrontierStoredRun[];
@@ -105,6 +199,13 @@ export declare function listMultiFrontierRuns(): MultiFrontierStoredRun[];
105
199
  export declare function recoverMultiFrontierRun(state: MultiFrontierRunState, input: RecoverMultiFrontierRunInput): MultiFrontierRunState;
106
200
  /** Persist the recovery decision made by the main-process coordinator. */
107
201
  export declare function recoverStoredMultiFrontierRun(collaborationId: string, input: RecoverMultiFrontierRunInput): MultiFrontierStoredRun | null;
202
+ /**
203
+ * Applies one durable coordinator-owned state transition under the run lock.
204
+ * A state-shaped result retains proposal and review references by default;
205
+ * returning a full stored record is the explicit escape hatch for a
206
+ * coordinator operation that intentionally changes those references.
207
+ */
208
+ export declare function transitionStoredMultiFrontierRun(collaborationId: string, updatedAt: string, transition: MultiFrontierCoordinatorTransition): MultiFrontierStoredRun | null;
108
209
  /**
109
210
  * Coordinators must call this before applying a participant event. Write
110
211
  * events are accepted only from the active driver generation.
@@ -127,5 +228,19 @@ export declare function reactivateStoredMultiFrontierDriver(collaborationId: str
127
228
  * coordinator entry point.
128
229
  */
129
230
  export declare function appendMultiFrontierParticipantEvent(input: AppendMultiFrontierParticipantEventInput): AppendMultiFrontierParticipantEventResult;
231
+ /**
232
+ * Appends a bounded proposal, review, or checkpoint index record. The
233
+ * coordinator owns both the artifact and its run-state reference under one
234
+ * run lock, so a reader never observes a durable reference without its record.
235
+ */
236
+ export declare function appendMultiFrontierArtifact(input: AppendMultiFrontierArtifactInput): AppendMultiFrontierArtifactResult;
237
+ export declare function getMultiFrontierArtifact(collaborationId: string, artifactId: string): PersistedMultiFrontierArtifact | null;
238
+ export declare function listMultiFrontierArtifacts(collaborationId: string): PersistedMultiFrontierArtifact[];
130
239
  export declare function listMultiFrontierParticipantEvents(collaborationId: string): PersistedMultiFrontierParticipantEvent[];
240
+ export declare function getMultiFrontierParticipantEventRetention(collaborationId: string): MultiFrontierParticipantEventRetention | null;
241
+ /**
242
+ * Coordinator maintenance for a bounded event journal. It deliberately keeps
243
+ * the newest contiguous tail and a replay marker instead of deleting run state.
244
+ */
245
+ export declare function compactMultiFrontierParticipantEvents(collaborationId: string, limits?: MultiFrontierParticipantEventRetentionLimits): MultiFrontierParticipantEventRetention | null;
131
246
  //# sourceMappingURL=multi-frontier-runs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi-frontier-runs.d.ts","sourceRoot":"","sources":["../../src/cli/multi-frontier-runs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multi-frontier-runs.d.ts","sourceRoot":"","sources":["../../src/cli/multi-frontier-runs.ts"],"names":[],"mappings":"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"}