@flanksource/clicky-ui 0.3.26 → 0.3.28

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 (725) hide show
  1. package/NOTICE.md +14 -0
  2. package/dist/ai.cjs +52 -6
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +53 -7
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.cjs +24 -39
  7. package/dist/comments/CommentCard.cjs.map +1 -1
  8. package/dist/comments/CommentCard.d.ts +9 -2
  9. package/dist/comments/CommentCard.d.ts.map +1 -1
  10. package/dist/comments/CommentCard.js +24 -39
  11. package/dist/comments/CommentCard.js.map +1 -1
  12. package/dist/comments/CommentProvider.cjs +4 -3
  13. package/dist/comments/CommentProvider.cjs.map +1 -1
  14. package/dist/comments/CommentProvider.d.ts +6 -1
  15. package/dist/comments/CommentProvider.d.ts.map +1 -1
  16. package/dist/comments/CommentProvider.js +4 -3
  17. package/dist/comments/CommentProvider.js.map +1 -1
  18. package/dist/comments/CommentSidePanel.cjs +65 -52
  19. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  20. package/dist/comments/CommentSidePanel.d.ts.map +1 -1
  21. package/dist/comments/CommentSidePanel.js +67 -54
  22. package/dist/comments/CommentSidePanel.js.map +1 -1
  23. package/dist/comments/CommentThread.cjs +2 -2
  24. package/dist/comments/CommentThread.cjs.map +1 -1
  25. package/dist/comments/CommentThread.d.ts +3 -3
  26. package/dist/comments/CommentThread.d.ts.map +1 -1
  27. package/dist/comments/CommentThread.js +2 -2
  28. package/dist/comments/CommentThread.js.map +1 -1
  29. package/dist/comments/CommentThreadList.cjs +85 -37
  30. package/dist/comments/CommentThreadList.cjs.map +1 -1
  31. package/dist/comments/CommentThreadList.d.ts +3 -3
  32. package/dist/comments/CommentThreadList.d.ts.map +1 -1
  33. package/dist/comments/CommentThreadList.js +86 -38
  34. package/dist/comments/CommentThreadList.js.map +1 -1
  35. package/dist/comments/comment-utils.cjs +26 -0
  36. package/dist/comments/comment-utils.cjs.map +1 -1
  37. package/dist/comments/comment-utils.d.ts +11 -0
  38. package/dist/comments/comment-utils.d.ts.map +1 -1
  39. package/dist/comments/comment-utils.js +26 -0
  40. package/dist/comments/comment-utils.js.map +1 -1
  41. package/dist/comments.cjs +2 -0
  42. package/dist/comments.cjs.map +1 -1
  43. package/dist/comments.js +3 -1
  44. package/dist/components/AccordionList.cjs +3 -0
  45. package/dist/components/AccordionList.cjs.map +1 -1
  46. package/dist/components/AccordionList.d.ts +3 -1
  47. package/dist/components/AccordionList.d.ts.map +1 -1
  48. package/dist/components/AccordionList.js +3 -0
  49. package/dist/components/AccordionList.js.map +1 -1
  50. package/dist/components/CopyButton.cjs +35 -0
  51. package/dist/components/CopyButton.cjs.map +1 -0
  52. package/dist/components/CopyButton.d.ts +20 -0
  53. package/dist/components/CopyButton.d.ts.map +1 -0
  54. package/dist/components/CopyButton.js +35 -0
  55. package/dist/components/CopyButton.js.map +1 -0
  56. package/dist/components/FilterBar.cjs +29 -6
  57. package/dist/components/FilterBar.cjs.map +1 -1
  58. package/dist/components/FilterBar.d.ts +10 -1
  59. package/dist/components/FilterBar.d.ts.map +1 -1
  60. package/dist/components/FilterBar.js +29 -6
  61. package/dist/components/FilterBar.js.map +1 -1
  62. package/dist/components/ListMenu.cjs +4 -1
  63. package/dist/components/ListMenu.cjs.map +1 -1
  64. package/dist/components/ListMenu.d.ts +5 -1
  65. package/dist/components/ListMenu.d.ts.map +1 -1
  66. package/dist/components/ListMenu.js +4 -1
  67. package/dist/components/ListMenu.js.map +1 -1
  68. package/dist/components/SegmentedControl.cjs +4 -2
  69. package/dist/components/SegmentedControl.cjs.map +1 -1
  70. package/dist/components/SegmentedControl.d.ts +4 -0
  71. package/dist/components/SegmentedControl.d.ts.map +1 -1
  72. package/dist/components/SegmentedControl.js +4 -2
  73. package/dist/components/SegmentedControl.js.map +1 -1
  74. package/dist/components/clipboard.cjs +60 -0
  75. package/dist/components/clipboard.cjs.map +1 -0
  76. package/dist/components/clipboard.d.ts +13 -0
  77. package/dist/components/clipboard.d.ts.map +1 -0
  78. package/dist/components/clipboard.js +60 -0
  79. package/dist/components/clipboard.js.map +1 -0
  80. package/dist/components/json-schema-form-array.cjs +15 -1
  81. package/dist/components/json-schema-form-array.cjs.map +1 -1
  82. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  83. package/dist/components/json-schema-form-array.js +15 -1
  84. package/dist/components/json-schema-form-array.js.map +1 -1
  85. package/dist/components/json-schema-form-list-array.cjs +113 -0
  86. package/dist/components/json-schema-form-list-array.cjs.map +1 -0
  87. package/dist/components/json-schema-form-list-array.d.ts +7 -0
  88. package/dist/components/json-schema-form-list-array.d.ts.map +1 -0
  89. package/dist/components/json-schema-form-list-array.js +113 -0
  90. package/dist/components/json-schema-form-list-array.js.map +1 -0
  91. package/dist/components/json-schema-form-resolve.cjs +1 -1
  92. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  93. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  94. package/dist/components/json-schema-form-resolve.js +1 -1
  95. package/dist/components/json-schema-form-resolve.js.map +1 -1
  96. package/dist/components/json-schema-form-types.d.ts +1 -1
  97. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  98. package/dist/components.cjs +5 -0
  99. package/dist/components.cjs.map +1 -1
  100. package/dist/components.d.ts +2 -0
  101. package/dist/components.d.ts.map +1 -1
  102. package/dist/components.js +5 -0
  103. package/dist/components.js.map +1 -1
  104. package/dist/data/Clicky.cjs +4 -1
  105. package/dist/data/Clicky.cjs.map +1 -1
  106. package/dist/data/Clicky.js +4 -1
  107. package/dist/data/Clicky.js.map +1 -1
  108. package/dist/data/DataTable.cjs +202 -40
  109. package/dist/data/DataTable.cjs.map +1 -1
  110. package/dist/data/DataTable.d.ts +163 -3
  111. package/dist/data/DataTable.d.ts.map +1 -1
  112. package/dist/data/DataTable.js +202 -40
  113. package/dist/data/DataTable.js.map +1 -1
  114. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs +1 -1
  115. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs.map +1 -1
  116. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js +1 -1
  117. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js.map +1 -1
  118. package/dist/data/FixtureEditor/fixture-frontmatter.cjs +8 -6
  119. package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -1
  120. package/dist/data/FixtureEditor/fixture-frontmatter.js +8 -6
  121. package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -1
  122. package/dist/data/SelectionActionBar.cjs +242 -0
  123. package/dist/data/SelectionActionBar.cjs.map +1 -0
  124. package/dist/data/SelectionActionBar.d.ts +28 -0
  125. package/dist/data/SelectionActionBar.d.ts.map +1 -0
  126. package/dist/data/SelectionActionBar.js +242 -0
  127. package/dist/data/SelectionActionBar.js.map +1 -0
  128. package/dist/data/TaskManager.cjs +34 -12
  129. package/dist/data/TaskManager.cjs.map +1 -1
  130. package/dist/data/TaskManager.d.ts.map +1 -1
  131. package/dist/data/TaskManager.js +34 -12
  132. package/dist/data/TaskManager.js.map +1 -1
  133. package/dist/data/TaskManagerButton.cjs +11 -7
  134. package/dist/data/TaskManagerButton.cjs.map +1 -1
  135. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  136. package/dist/data/TaskManagerButton.js +11 -7
  137. package/dist/data/TaskManagerButton.js.map +1 -1
  138. package/dist/data/TaskProgress.cjs +55 -11
  139. package/dist/data/TaskProgress.cjs.map +1 -1
  140. package/dist/data/TaskProgress.d.ts.map +1 -1
  141. package/dist/data/TaskProgress.js +53 -9
  142. package/dist/data/TaskProgress.js.map +1 -1
  143. package/dist/data/ai/ChatWindow.cjs +2 -4
  144. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  145. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  146. package/dist/data/ai/ChatWindow.js +2 -4
  147. package/dist/data/ai/ChatWindow.js.map +1 -1
  148. package/dist/data/ai/ChatWindow.runtime.cjs +1 -2
  149. package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -1
  150. package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -1
  151. package/dist/data/ai/ChatWindow.runtime.js +1 -2
  152. package/dist/data/ai/ChatWindow.runtime.js.map +1 -1
  153. package/dist/data/ai/PromptCatalog/PromptCatalogTable.cjs +262 -0
  154. package/dist/data/ai/PromptCatalog/PromptCatalogTable.cjs.map +1 -0
  155. package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts +16 -0
  156. package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts.map +1 -0
  157. package/dist/data/ai/PromptCatalog/PromptCatalogTable.js +262 -0
  158. package/dist/data/ai/PromptCatalog/PromptCatalogTable.js.map +1 -0
  159. package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs +77 -0
  160. package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs.map +1 -0
  161. package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts +8 -0
  162. package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts.map +1 -0
  163. package/dist/data/ai/PromptCatalog/PromptLayerStrip.js +77 -0
  164. package/dist/data/ai/PromptCatalog/PromptLayerStrip.js.map +1 -0
  165. package/dist/data/ai/PromptCatalog/PromptPage.cjs +332 -0
  166. package/dist/data/ai/PromptCatalog/PromptPage.cjs.map +1 -0
  167. package/dist/data/ai/PromptCatalog/PromptPage.d.ts +17 -0
  168. package/dist/data/ai/PromptCatalog/PromptPage.d.ts.map +1 -0
  169. package/dist/data/ai/PromptCatalog/PromptPage.js +332 -0
  170. package/dist/data/ai/PromptCatalog/PromptPage.js.map +1 -0
  171. package/dist/data/ai/PromptCatalog/PromptPageEditor.cjs +102 -0
  172. package/dist/data/ai/PromptCatalog/PromptPageEditor.cjs.map +1 -0
  173. package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts +16 -0
  174. package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts.map +1 -0
  175. package/dist/data/ai/PromptCatalog/PromptPageEditor.js +102 -0
  176. package/dist/data/ai/PromptCatalog/PromptPageEditor.js.map +1 -0
  177. package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs +102 -0
  178. package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs.map +1 -0
  179. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +10 -0
  180. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts.map +1 -0
  181. package/dist/data/ai/PromptCatalog/PromptPageHeader.js +102 -0
  182. package/dist/data/ai/PromptCatalog/PromptPageHeader.js.map +1 -0
  183. package/dist/data/ai/PromptCatalog/PromptPagePreview.cjs +90 -0
  184. package/dist/data/ai/PromptCatalog/PromptPagePreview.cjs.map +1 -0
  185. package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts +8 -0
  186. package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts.map +1 -0
  187. package/dist/data/ai/PromptCatalog/PromptPagePreview.js +90 -0
  188. package/dist/data/ai/PromptCatalog/PromptPagePreview.js.map +1 -0
  189. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs +168 -0
  190. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs.map +1 -0
  191. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts +17 -0
  192. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts.map +1 -0
  193. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js +168 -0
  194. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js.map +1 -0
  195. package/dist/data/ai/PromptCatalog/PromptSourceBadge.cjs +36 -0
  196. package/dist/data/ai/PromptCatalog/PromptSourceBadge.cjs.map +1 -0
  197. package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts +7 -0
  198. package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts.map +1 -0
  199. package/dist/data/ai/PromptCatalog/PromptSourceBadge.js +36 -0
  200. package/dist/data/ai/PromptCatalog/PromptSourceBadge.js.map +1 -0
  201. package/dist/data/ai/PromptCatalog/index.d.ts +9 -0
  202. package/dist/data/ai/PromptCatalog/index.d.ts.map +1 -0
  203. package/dist/data/ai/PromptCatalog/prompt-catalog-model.cjs +137 -0
  204. package/dist/data/ai/PromptCatalog/prompt-catalog-model.cjs.map +1 -0
  205. package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts +28 -0
  206. package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts.map +1 -0
  207. package/dist/data/ai/PromptCatalog/prompt-catalog-model.js +137 -0
  208. package/dist/data/ai/PromptCatalog/prompt-catalog-model.js.map +1 -0
  209. package/dist/data/ai/PromptCatalog/prompt-page-model.cjs +114 -0
  210. package/dist/data/ai/PromptCatalog/prompt-page-model.cjs.map +1 -0
  211. package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts +45 -0
  212. package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts.map +1 -0
  213. package/dist/data/ai/PromptCatalog/prompt-page-model.js +114 -0
  214. package/dist/data/ai/PromptCatalog/prompt-page-model.js.map +1 -0
  215. package/dist/data/ai/PromptCatalog/types.d.ts +70 -0
  216. package/dist/data/ai/PromptCatalog/types.d.ts.map +1 -0
  217. package/dist/data/ai/PromptPicker/PromptPicker.cjs +9 -12
  218. package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
  219. package/dist/data/ai/PromptPicker/PromptPicker.js +9 -12
  220. package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
  221. package/dist/data/ai/PromptPicker/index.d.ts +1 -1
  222. package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
  223. package/dist/data/ai/PromptPicker/types.cjs.map +1 -1
  224. package/dist/data/ai/PromptPicker/types.d.ts +9 -0
  225. package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
  226. package/dist/data/ai/PromptPicker/types.js.map +1 -1
  227. package/dist/data/ai/PromptRunEditor/index.cjs +4 -5
  228. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  229. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  230. package/dist/data/ai/PromptRunEditor/index.js +5 -6
  231. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  232. package/dist/data/ai/PromptRunEditor/model.cjs +1 -1
  233. package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -1
  234. package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
  235. package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -1
  236. package/dist/data/ai/PromptRunEditor/model.js +1 -1
  237. package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
  238. package/dist/data/ai/RuntimeModePicker.cjs +25 -14
  239. package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
  240. package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
  241. package/dist/data/ai/RuntimeModePicker.js +26 -15
  242. package/dist/data/ai/RuntimeModePicker.js.map +1 -1
  243. package/dist/data/ai/SessionInspector.collection-types.d.ts +1 -1
  244. package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -1
  245. package/dist/data/ai/SessionInspector.collection.cjs +3 -3
  246. package/dist/data/ai/SessionInspector.collection.cjs.map +1 -1
  247. package/dist/data/ai/SessionInspector.collection.js +3 -3
  248. package/dist/data/ai/SessionInspector.collection.js.map +1 -1
  249. package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
  250. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
  251. package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
  252. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
  253. package/dist/data/ai/SessionInspector.model.cjs +3 -3
  254. package/dist/data/ai/SessionInspector.model.cjs.map +1 -1
  255. package/dist/data/ai/SessionInspector.model.d.ts +1 -1
  256. package/dist/data/ai/SessionInspector.model.d.ts.map +1 -1
  257. package/dist/data/ai/SessionInspector.model.js +3 -3
  258. package/dist/data/ai/SessionInspector.model.js.map +1 -1
  259. package/dist/data/ai/SessionInspector.panels.cjs +1 -1
  260. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  261. package/dist/data/ai/SessionInspector.panels.js +1 -1
  262. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  263. package/dist/data/ai/SessionInspector.summary.cjs +3 -3
  264. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
  265. package/dist/data/ai/SessionInspector.summary.js +3 -3
  266. package/dist/data/ai/SessionInspector.summary.js.map +1 -1
  267. package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
  268. package/dist/data/ai/SessionViewer.unified.d.ts +3 -2
  269. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  270. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +18 -30
  271. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  272. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  273. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +19 -31
  274. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  275. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs +71 -86
  276. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs.map +1 -1
  277. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts.map +1 -1
  278. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js +72 -87
  279. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js.map +1 -1
  280. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.cjs +99 -0
  281. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.cjs.map +1 -0
  282. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts +13 -0
  283. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts.map +1 -0
  284. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.js +99 -0
  285. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.js.map +1 -0
  286. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +37 -21
  287. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  288. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +6 -2
  289. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  290. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +38 -22
  291. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  292. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs +114 -0
  293. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs.map +1 -0
  294. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts +10 -0
  295. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts.map +1 -0
  296. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js +114 -0
  297. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js.map +1 -0
  298. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.cjs +160 -0
  299. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.cjs.map +1 -0
  300. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts +9 -0
  301. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts.map +1 -0
  302. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.js +160 -0
  303. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.js.map +1 -0
  304. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +27 -241
  305. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -1
  306. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +5 -6
  307. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts.map +1 -1
  308. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +25 -239
  309. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -1
  310. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +21 -8
  311. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  312. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +4 -1
  313. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
  314. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +22 -9
  315. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  316. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs +207 -164
  317. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs.map +1 -1
  318. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts +4 -3
  319. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts.map +1 -1
  320. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js +210 -167
  321. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js.map +1 -1
  322. package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs +15 -15
  323. package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs.map +1 -1
  324. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts.map +1 -1
  325. package/dist/data/ai/SpecRuntimeEditor/SectionCard.js +15 -15
  326. package/dist/data/ai/SpecRuntimeEditor/SectionCard.js.map +1 -1
  327. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +120 -42
  328. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
  329. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +4 -1
  330. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
  331. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +123 -45
  332. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
  333. package/dist/data/ai/SpecRuntimeEditor/env-model.cjs.map +1 -1
  334. package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts.map +1 -1
  335. package/dist/data/ai/SpecRuntimeEditor/env-model.js.map +1 -1
  336. package/dist/data/ai/SpecRuntimeEditor/index.cjs +136 -48
  337. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  338. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +13 -3
  339. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  340. package/dist/data/ai/SpecRuntimeEditor/index.js +137 -49
  341. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  342. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +93 -0
  343. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs.map +1 -0
  344. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts +6 -0
  345. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts.map +1 -0
  346. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +93 -0
  347. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js.map +1 -0
  348. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.cjs +35 -0
  349. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.cjs.map +1 -0
  350. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.d.ts +5 -0
  351. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.d.ts.map +1 -0
  352. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.js +35 -0
  353. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.js.map +1 -0
  354. package/dist/data/ai/SpecRuntimeEditor/presets.cjs +2 -9
  355. package/dist/data/ai/SpecRuntimeEditor/presets.cjs.map +1 -1
  356. package/dist/data/ai/SpecRuntimeEditor/presets.d.ts +1 -2
  357. package/dist/data/ai/SpecRuntimeEditor/presets.d.ts.map +1 -1
  358. package/dist/data/ai/SpecRuntimeEditor/presets.js +2 -9
  359. package/dist/data/ai/SpecRuntimeEditor/presets.js.map +1 -1
  360. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  361. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +1 -1
  362. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  363. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  364. package/dist/data/ai/SpecRuntimeEditor/types.cjs +2 -7
  365. package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -1
  366. package/dist/data/ai/SpecRuntimeEditor/types.d.ts +0 -1
  367. package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -1
  368. package/dist/data/ai/SpecRuntimeEditor/types.js +3 -8
  369. package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -1
  370. package/dist/data/ai/SpecRuntimeEditor/update.cjs +43 -33
  371. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  372. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +7 -13
  373. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  374. package/dist/data/ai/SpecRuntimeEditor/update.js +43 -33
  375. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  376. package/dist/data/ai/SpecRuntimeEditor.model.cjs +33 -45
  377. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  378. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +54 -29
  379. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  380. package/dist/data/ai/SpecRuntimeEditor.model.js +33 -44
  381. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  382. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.cjs +276 -0
  383. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.cjs.map +1 -0
  384. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.d.ts +58 -0
  385. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.d.ts.map +1 -0
  386. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.js +276 -0
  387. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.js.map +1 -0
  388. package/dist/data/ai/ThreadPicker.cjs +55 -42
  389. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  390. package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
  391. package/dist/data/ai/ThreadPicker.js +56 -43
  392. package/dist/data/ai/ThreadPicker.js.map +1 -1
  393. package/dist/data/ai/ToolPreferences.cjs +9 -1
  394. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  395. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  396. package/dist/data/ai/ToolPreferences.js +9 -1
  397. package/dist/data/ai/ToolPreferences.js.map +1 -1
  398. package/dist/data/ai/ToolSchemaBrowser.cjs +41 -487
  399. package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -1
  400. package/dist/data/ai/ToolSchemaBrowser.d.ts +7 -2
  401. package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -1
  402. package/dist/data/ai/ToolSchemaBrowser.detail.cjs +238 -0
  403. package/dist/data/ai/ToolSchemaBrowser.detail.cjs.map +1 -0
  404. package/dist/data/ai/ToolSchemaBrowser.detail.d.ts +8 -0
  405. package/dist/data/ai/ToolSchemaBrowser.detail.d.ts.map +1 -0
  406. package/dist/data/ai/ToolSchemaBrowser.detail.js +238 -0
  407. package/dist/data/ai/ToolSchemaBrowser.detail.js.map +1 -0
  408. package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs +57 -0
  409. package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs.map +1 -0
  410. package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts +9 -0
  411. package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts.map +1 -0
  412. package/dist/data/ai/ToolSchemaBrowser.directory-header.js +57 -0
  413. package/dist/data/ai/ToolSchemaBrowser.directory-header.js.map +1 -0
  414. package/dist/data/ai/ToolSchemaBrowser.js +42 -488
  415. package/dist/data/ai/ToolSchemaBrowser.js.map +1 -1
  416. package/dist/data/ai/ToolSchemaBrowser.model.cjs +130 -0
  417. package/dist/data/ai/ToolSchemaBrowser.model.cjs.map +1 -0
  418. package/dist/data/ai/ToolSchemaBrowser.model.d.ts +35 -0
  419. package/dist/data/ai/ToolSchemaBrowser.model.d.ts.map +1 -0
  420. package/dist/data/ai/ToolSchemaBrowser.model.js +130 -0
  421. package/dist/data/ai/ToolSchemaBrowser.model.js.map +1 -0
  422. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs +57 -0
  423. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs.map +1 -0
  424. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +7 -0
  425. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts.map +1 -0
  426. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js +57 -0
  427. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js.map +1 -0
  428. package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs +389 -0
  429. package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs.map +1 -0
  430. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +23 -0
  431. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts.map +1 -0
  432. package/dist/data/ai/ToolSchemaBrowser.sidebar.js +389 -0
  433. package/dist/data/ai/ToolSchemaBrowser.sidebar.js.map +1 -0
  434. package/dist/data/ai/agent-action-icons.cjs +14 -6
  435. package/dist/data/ai/agent-action-icons.cjs.map +1 -1
  436. package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
  437. package/dist/data/ai/agent-action-icons.js +14 -6
  438. package/dist/data/ai/agent-action-icons.js.map +1 -1
  439. package/dist/data/ai/examples/sessions/claude-complete.cjs +17 -9
  440. package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -1
  441. package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -1
  442. package/dist/data/ai/examples/sessions/claude-complete.js +17 -9
  443. package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -1
  444. package/dist/data/ai/examples/sessions/claude.cjs +7 -4
  445. package/dist/data/ai/examples/sessions/claude.cjs.map +1 -1
  446. package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -1
  447. package/dist/data/ai/examples/sessions/claude.js +7 -4
  448. package/dist/data/ai/examples/sessions/claude.js.map +1 -1
  449. package/dist/data/ai/examples/sessions/codex-complete.cjs +17 -10
  450. package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -1
  451. package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -1
  452. package/dist/data/ai/examples/sessions/codex-complete.js +17 -10
  453. package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -1
  454. package/dist/data/ai/examples/sessions/codex.cjs +7 -4
  455. package/dist/data/ai/examples/sessions/codex.cjs.map +1 -1
  456. package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -1
  457. package/dist/data/ai/examples/sessions/codex.js +7 -4
  458. package/dist/data/ai/examples/sessions/codex.js.map +1 -1
  459. package/dist/data/ai/index.d.ts +6 -3
  460. package/dist/data/ai/index.d.ts.map +1 -1
  461. package/dist/data/ai/runtime-profile.cjs +93 -0
  462. package/dist/data/ai/runtime-profile.cjs.map +1 -0
  463. package/dist/data/ai/runtime-profile.d.ts +73 -0
  464. package/dist/data/ai/runtime-profile.d.ts.map +1 -0
  465. package/dist/data/ai/runtime-profile.js +93 -0
  466. package/dist/data/ai/runtime-profile.js.map +1 -0
  467. package/dist/data/ai/sandbox-kind-meta.cjs +38 -4
  468. package/dist/data/ai/sandbox-kind-meta.cjs.map +1 -1
  469. package/dist/data/ai/sandbox-kind-meta.d.ts +3 -0
  470. package/dist/data/ai/sandbox-kind-meta.d.ts.map +1 -1
  471. package/dist/data/ai/sandbox-kind-meta.js +38 -4
  472. package/dist/data/ai/sandbox-kind-meta.js.map +1 -1
  473. package/dist/data/chat/Chat.cjs +17 -5
  474. package/dist/data/chat/Chat.cjs.map +1 -1
  475. package/dist/data/chat/Chat.d.ts.map +1 -1
  476. package/dist/data/chat/Chat.fixtures.cjs +3 -3
  477. package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
  478. package/dist/data/chat/Chat.fixtures.js +3 -3
  479. package/dist/data/chat/Chat.fixtures.js.map +1 -1
  480. package/dist/data/chat/Chat.js +18 -6
  481. package/dist/data/chat/Chat.js.map +1 -1
  482. package/dist/data/chat/Chat.runtime.cjs +15 -9
  483. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  484. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  485. package/dist/data/chat/Chat.runtime.js +16 -10
  486. package/dist/data/chat/Chat.runtime.js.map +1 -1
  487. package/dist/data/chat/ChatRuntimeToolbar.cjs +5 -5
  488. package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
  489. package/dist/data/chat/ChatRuntimeToolbar.js +5 -5
  490. package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
  491. package/dist/data/chat/ContextMeter.cjs +3 -3
  492. package/dist/data/chat/ContextMeter.cjs.map +1 -1
  493. package/dist/data/chat/ContextMeter.d.ts +3 -3
  494. package/dist/data/chat/ContextMeter.d.ts.map +1 -1
  495. package/dist/data/chat/ContextMeter.js +3 -3
  496. package/dist/data/chat/ContextMeter.js.map +1 -1
  497. package/dist/data/chat/approval.cjs.map +1 -1
  498. package/dist/data/chat/approval.d.ts +21 -1
  499. package/dist/data/chat/approval.d.ts.map +1 -1
  500. package/dist/data/chat/approval.js.map +1 -1
  501. package/dist/data/chat/clickyOperationsToTools.cjs +5 -0
  502. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
  503. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
  504. package/dist/data/chat/clickyOperationsToTools.js +5 -0
  505. package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
  506. package/dist/data/chat/types.cjs.map +1 -1
  507. package/dist/data/chat/types.d.ts +7 -5
  508. package/dist/data/chat/types.d.ts.map +1 -1
  509. package/dist/data/chat/types.js.map +1 -1
  510. package/dist/data/chat/usage-snapshot.cjs +21 -1
  511. package/dist/data/chat/usage-snapshot.cjs.map +1 -1
  512. package/dist/data/chat/usage-snapshot.d.ts +2 -0
  513. package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
  514. package/dist/data/chat/usage-snapshot.js +22 -2
  515. package/dist/data/chat/usage-snapshot.js.map +1 -1
  516. package/dist/data/runtime/RuntimeBar.cjs +49 -51
  517. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  518. package/dist/data/runtime/RuntimeBar.d.ts +10 -2
  519. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  520. package/dist/data/runtime/RuntimeBar.js +51 -53
  521. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  522. package/dist/data/runtime/RuntimeBar.model.cjs +55 -0
  523. package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -1
  524. package/dist/data/runtime/RuntimeBar.model.d.ts +11 -3
  525. package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -1
  526. package/dist/data/runtime/RuntimeBar.model.js +55 -0
  527. package/dist/data/runtime/RuntimeBar.model.js.map +1 -1
  528. package/dist/data/runtime/RuntimeBarCombo.cjs +11 -6
  529. package/dist/data/runtime/RuntimeBarCombo.cjs.map +1 -1
  530. package/dist/data/runtime/RuntimeBarCombo.d.ts +3 -1
  531. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +1 -1
  532. package/dist/data/runtime/RuntimeBarCombo.js +11 -6
  533. package/dist/data/runtime/RuntimeBarCombo.js.map +1 -1
  534. package/dist/data/runtime/RuntimeBarSegments.cjs +7 -5
  535. package/dist/data/runtime/RuntimeBarSegments.cjs.map +1 -1
  536. package/dist/data/runtime/RuntimeBarSegments.d.ts +4 -2
  537. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +1 -1
  538. package/dist/data/runtime/RuntimeBarSegments.js +7 -5
  539. package/dist/data/runtime/RuntimeBarSegments.js.map +1 -1
  540. package/dist/data/runtime/model-capabilities.cjs +6 -6
  541. package/dist/data/runtime/model-capabilities.cjs.map +1 -1
  542. package/dist/data/runtime/model-capabilities.d.ts +5 -1
  543. package/dist/data/runtime/model-capabilities.d.ts.map +1 -1
  544. package/dist/data/runtime/model-capabilities.js +6 -6
  545. package/dist/data/runtime/model-capabilities.js.map +1 -1
  546. package/dist/data/runtime/provider-status.cjs +1 -1
  547. package/dist/data/runtime/provider-status.cjs.map +1 -1
  548. package/dist/data/runtime/provider-status.js +1 -1
  549. package/dist/data/runtime/provider-status.js.map +1 -1
  550. package/dist/data/runtime/runtime-field-support.cjs +63 -0
  551. package/dist/data/runtime/runtime-field-support.cjs.map +1 -0
  552. package/dist/data/runtime/runtime-field-support.d.ts +13 -0
  553. package/dist/data/runtime/runtime-field-support.d.ts.map +1 -0
  554. package/dist/data/runtime/runtime-field-support.js +63 -0
  555. package/dist/data/runtime/runtime-field-support.js.map +1 -0
  556. package/dist/data/runtime/runtime-mode.cjs +170 -111
  557. package/dist/data/runtime/runtime-mode.cjs.map +1 -1
  558. package/dist/data/runtime/runtime-mode.d.ts +58 -14
  559. package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
  560. package/dist/data/runtime/runtime-mode.js +170 -111
  561. package/dist/data/runtime/runtime-mode.js.map +1 -1
  562. package/dist/data/selectionActionSplit.cjs +33 -0
  563. package/dist/data/selectionActionSplit.cjs.map +1 -0
  564. package/dist/data/selectionActionSplit.d.ts +36 -0
  565. package/dist/data/selectionActionSplit.d.ts.map +1 -0
  566. package/dist/data/selectionActionSplit.js +33 -0
  567. package/dist/data/selectionActionSplit.js.map +1 -0
  568. package/dist/data/task-copy.cjs +76 -0
  569. package/dist/data/task-copy.cjs.map +1 -0
  570. package/dist/data/task-copy.d.ts +12 -0
  571. package/dist/data/task-copy.d.ts.map +1 -0
  572. package/dist/data/task-copy.js +76 -0
  573. package/dist/data/task-copy.js.map +1 -0
  574. package/dist/data/version-info.cjs +3 -3
  575. package/dist/data/version-info.js +3 -3
  576. package/dist/data.cjs +34 -0
  577. package/dist/data.cjs.map +1 -1
  578. package/dist/data.d.ts +4 -1
  579. package/dist/data.d.ts.map +1 -1
  580. package/dist/data.js +34 -0
  581. package/dist/data.js.map +1 -1
  582. package/dist/hooks/use-task-run.cjs +24 -17
  583. package/dist/hooks/use-task-run.cjs.map +1 -1
  584. package/dist/hooks/use-task-run.d.ts +3 -1
  585. package/dist/hooks/use-task-run.d.ts.map +1 -1
  586. package/dist/hooks/use-task-run.js +25 -18
  587. package/dist/hooks/use-task-run.js.map +1 -1
  588. package/dist/icons/components/UiCalendarCheck.cjs +15 -0
  589. package/dist/icons/components/UiCalendarCheck.cjs.map +1 -0
  590. package/dist/icons/components/UiCalendarCheck.d.ts +15 -0
  591. package/dist/icons/components/UiCalendarCheck.d.ts.map +1 -0
  592. package/dist/icons/components/UiCalendarCheck.js +15 -0
  593. package/dist/icons/components/UiCalendarCheck.js.map +1 -0
  594. package/dist/icons/components/UiChartLineUp.cjs +15 -0
  595. package/dist/icons/components/UiChartLineUp.cjs.map +1 -0
  596. package/dist/icons/components/UiChartLineUp.d.ts +15 -0
  597. package/dist/icons/components/UiChartLineUp.d.ts.map +1 -0
  598. package/dist/icons/components/UiChartLineUp.js +15 -0
  599. package/dist/icons/components/UiChartLineUp.js.map +1 -0
  600. package/dist/icons/components/UiClockCountdown.cjs +15 -0
  601. package/dist/icons/components/UiClockCountdown.cjs.map +1 -0
  602. package/dist/icons/components/UiClockCountdown.d.ts +15 -0
  603. package/dist/icons/components/UiClockCountdown.d.ts.map +1 -0
  604. package/dist/icons/components/UiClockCountdown.js +15 -0
  605. package/dist/icons/components/UiClockCountdown.js.map +1 -0
  606. package/dist/icons/components/UiFactory.cjs +15 -0
  607. package/dist/icons/components/UiFactory.cjs.map +1 -0
  608. package/dist/icons/components/UiFactory.d.ts +15 -0
  609. package/dist/icons/components/UiFactory.d.ts.map +1 -0
  610. package/dist/icons/components/UiFactory.js +15 -0
  611. package/dist/icons/components/UiFactory.js.map +1 -0
  612. package/dist/icons/components/UiHandCoins.cjs +15 -0
  613. package/dist/icons/components/UiHandCoins.cjs.map +1 -0
  614. package/dist/icons/components/UiHandCoins.d.ts +15 -0
  615. package/dist/icons/components/UiHandCoins.d.ts.map +1 -0
  616. package/dist/icons/components/UiHandCoins.js +15 -0
  617. package/dist/icons/components/UiHandCoins.js.map +1 -0
  618. package/dist/icons/components/UiInvoice.cjs +15 -0
  619. package/dist/icons/components/UiInvoice.cjs.map +1 -0
  620. package/dist/icons/components/UiInvoice.d.ts +15 -0
  621. package/dist/icons/components/UiInvoice.d.ts.map +1 -0
  622. package/dist/icons/components/UiInvoice.js +15 -0
  623. package/dist/icons/components/UiInvoice.js.map +1 -0
  624. package/dist/icons/components/UiTax.cjs +15 -0
  625. package/dist/icons/components/UiTax.cjs.map +1 -0
  626. package/dist/icons/components/UiTax.d.ts +15 -0
  627. package/dist/icons/components/UiTax.d.ts.map +1 -0
  628. package/dist/icons/components/UiTax.js +15 -0
  629. package/dist/icons/components/UiTax.js.map +1 -0
  630. package/dist/icons/index.d.ts +14 -0
  631. package/dist/icons/index.d.ts.map +1 -1
  632. package/dist/icons/registry.cjs +14 -0
  633. package/dist/icons/registry.cjs.map +1 -1
  634. package/dist/icons/registry.d.ts.map +1 -1
  635. package/dist/icons/registry.js +14 -0
  636. package/dist/icons/registry.js.map +1 -1
  637. package/dist/icons.cjs +21 -0
  638. package/dist/icons.cjs.map +1 -1
  639. package/dist/icons.js +21 -0
  640. package/dist/icons.js.map +1 -1
  641. package/dist/index.cjs +43 -0
  642. package/dist/index.cjs.map +1 -1
  643. package/dist/index.js +44 -1
  644. package/dist/index.js.map +1 -1
  645. package/dist/layout/AppShell.cjs +17 -3
  646. package/dist/layout/AppShell.cjs.map +1 -1
  647. package/dist/layout/AppShell.d.ts.map +1 -1
  648. package/dist/layout/AppShell.js +17 -3
  649. package/dist/layout/AppShell.js.map +1 -1
  650. package/dist/overlay/DropdownMenu.cjs +46 -35
  651. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  652. package/dist/overlay/DropdownMenu.js +46 -35
  653. package/dist/overlay/DropdownMenu.js.map +1 -1
  654. package/dist/rpc/FilterForm.cjs +26 -11
  655. package/dist/rpc/FilterForm.cjs.map +1 -1
  656. package/dist/rpc/FilterForm.d.ts +4 -1
  657. package/dist/rpc/FilterForm.d.ts.map +1 -1
  658. package/dist/rpc/FilterForm.js +26 -11
  659. package/dist/rpc/FilterForm.js.map +1 -1
  660. package/dist/rpc/FilterFormFields.cjs +3 -2
  661. package/dist/rpc/FilterFormFields.cjs.map +1 -1
  662. package/dist/rpc/FilterFormFields.d.ts +2 -1
  663. package/dist/rpc/FilterFormFields.d.ts.map +1 -1
  664. package/dist/rpc/FilterFormFields.js +3 -2
  665. package/dist/rpc/FilterFormFields.js.map +1 -1
  666. package/dist/rpc/OperationActionBar.cjs +67 -15
  667. package/dist/rpc/OperationActionBar.cjs.map +1 -1
  668. package/dist/rpc/OperationActionBar.d.ts +11 -3
  669. package/dist/rpc/OperationActionBar.d.ts.map +1 -1
  670. package/dist/rpc/OperationActionBar.js +68 -16
  671. package/dist/rpc/OperationActionBar.js.map +1 -1
  672. package/dist/rpc/OperationCatalog.cjs +69 -76
  673. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  674. package/dist/rpc/OperationCatalog.d.ts +3 -1
  675. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  676. package/dist/rpc/OperationCatalog.js +69 -76
  677. package/dist/rpc/OperationCatalog.js.map +1 -1
  678. package/dist/rpc/OperationCatalogActions.cjs +69 -0
  679. package/dist/rpc/OperationCatalogActions.cjs.map +1 -0
  680. package/dist/rpc/OperationCatalogActions.d.ts +17 -0
  681. package/dist/rpc/OperationCatalogActions.d.ts.map +1 -0
  682. package/dist/rpc/OperationCatalogActions.js +69 -0
  683. package/dist/rpc/OperationCatalogActions.js.map +1 -0
  684. package/dist/rpc/OperationEntityContextPicker.cjs +129 -116
  685. package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
  686. package/dist/rpc/OperationEntityContextPicker.d.ts +18 -1
  687. package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
  688. package/dist/rpc/OperationEntityContextPicker.js +130 -117
  689. package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
  690. package/dist/rpc/OperationResultView.cjs +7 -4
  691. package/dist/rpc/OperationResultView.cjs.map +1 -1
  692. package/dist/rpc/OperationResultView.d.ts +4 -2
  693. package/dist/rpc/OperationResultView.d.ts.map +1 -1
  694. package/dist/rpc/OperationResultView.js +7 -4
  695. package/dist/rpc/OperationResultView.js.map +1 -1
  696. package/dist/rpc/operationCatalogUrl.cjs +28 -0
  697. package/dist/rpc/operationCatalogUrl.cjs.map +1 -0
  698. package/dist/rpc/operationCatalogUrl.d.ts +3 -0
  699. package/dist/rpc/operationCatalogUrl.d.ts.map +1 -0
  700. package/dist/rpc/operationCatalogUrl.js +28 -0
  701. package/dist/rpc/operationCatalogUrl.js.map +1 -0
  702. package/dist/rpc/rowNavigation.cjs +4 -3
  703. package/dist/rpc/rowNavigation.cjs.map +1 -1
  704. package/dist/rpc/rowNavigation.d.ts +1 -1
  705. package/dist/rpc/rowNavigation.d.ts.map +1 -1
  706. package/dist/rpc/rowNavigation.js +4 -3
  707. package/dist/rpc/rowNavigation.js.map +1 -1
  708. package/dist/rpc/types.cjs.map +1 -1
  709. package/dist/rpc/types.d.ts +2 -2
  710. package/dist/rpc/types.d.ts.map +1 -1
  711. package/dist/rpc/types.js.map +1 -1
  712. package/dist/rpc.cjs +2 -0
  713. package/dist/rpc.cjs.map +1 -1
  714. package/dist/rpc.d.ts +2 -1
  715. package/dist/rpc.d.ts.map +1 -1
  716. package/dist/rpc.js +2 -0
  717. package/dist/rpc.js.map +1 -1
  718. package/dist/runtime-profile.cjs +7 -0
  719. package/dist/runtime-profile.cjs.map +1 -0
  720. package/dist/runtime-profile.d.ts +2 -0
  721. package/dist/runtime-profile.d.ts.map +1 -0
  722. package/dist/runtime-profile.js +7 -0
  723. package/dist/runtime-profile.js.map +1 -0
  724. package/dist/styles.css +1 -1
  725. package/package.json +6 -1
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const SPEC_PERMISSION_MODES = [
4
- "default",
5
- "acceptEdits",
6
- "auto",
7
- "bypassPermissions",
8
- "dontAsk",
9
- "plan"
10
- ];
3
+ const toolPolicy = require("../chat/tool-policy.cjs");
4
+ const SpecRuntimeEditor_sandboxModel = require("./SpecRuntimeEditor.sandbox-model.cjs");
11
5
  const SPEC_CHECKOUT_MODES = ["none", "remote", "local"];
12
6
  const SPEC_WORKTREE_MODES = ["none", "new", "existing"];
7
+ const SPEC_CLONE_MODES = ["clone", "skip"];
13
8
  const SPEC_STASH_MODES = [
14
9
  "none",
15
10
  "untracked",
@@ -41,8 +36,8 @@ function compactAISpecRuntime(value) {
41
36
  if (model) spec.model = model;
42
37
  const id = cleanString(value.id);
43
38
  if (id) spec.id = id;
44
- const backend = cleanString(value.backend);
45
- if (backend) spec.backend = backend;
39
+ const specMode = cleanString(value.mode);
40
+ if (specMode) spec.mode = specMode;
46
41
  if (value.temperature != null && Number.isFinite(value.temperature)) {
47
42
  spec.temperature = value.temperature;
48
43
  }
@@ -62,43 +57,19 @@ function compactAISpecRuntime(value) {
62
57
  (_a = value.memory) == null ? void 0 : _a.skills
63
58
  );
64
59
  if (permissions) spec.permissions = permissions;
60
+ const toolPolicy$1 = toolPolicy.normalizeToolPolicyRules(value.toolPolicy);
61
+ if (toolPolicy$1.length > 0) spec.toolPolicy = toolPolicy$1;
65
62
  const setup = compactSetup(value.setup);
66
63
  if (setup) spec.setup = setup;
67
64
  const workflow = compactWorkflow(value.workflow);
68
65
  if (workflow) spec.workflow = workflow;
69
66
  const sessionId = cleanString(value.sessionId);
70
67
  if (sessionId) spec.sessionId = sessionId;
71
- const sandbox = compactSandbox(value.sandbox);
68
+ const sandbox = SpecRuntimeEditor_sandboxModel.compactRuntimeSandbox(value.sandbox);
72
69
  if (sandbox !== void 0) spec.sandbox = sandbox;
73
70
  if (value.cliArgs && hasKeys(value.cliArgs)) spec.cliArgs = value.cliArgs;
74
71
  return spec;
75
72
  }
76
- function compactSandbox(value) {
77
- if (value == null) return void 0;
78
- if (typeof value === "string") {
79
- return cleanString(value) || void 0;
80
- }
81
- const backend = cleanString(value.backend);
82
- if (!backend) return void 0;
83
- const agent = cleanString(value.agent);
84
- const policy = compactSandboxPolicy(value.policy);
85
- if (!agent && !policy) return backend;
86
- const sandbox = { backend };
87
- if (agent) sandbox.agent = agent;
88
- if (policy) sandbox.policy = policy;
89
- return sandbox;
90
- }
91
- function compactSandboxPolicy(value) {
92
- var _a;
93
- if (!value) return void 0;
94
- const policy = {};
95
- const paths = (_a = value.paths) == null ? void 0 : _a.map((path) => cleanString(path)).filter((path) => path !== "");
96
- if (paths == null ? void 0 : paths.length) policy.paths = paths;
97
- if (value.maxAttempts != null && Number.isFinite(value.maxAttempts) && value.maxAttempts > 0) {
98
- policy.maxAttempts = Math.floor(value.maxAttempts);
99
- }
100
- return hasKeys(policy) ? policy : void 0;
101
- }
102
73
  function compactWorkflow(value) {
103
74
  if (!value) return void 0;
104
75
  const workflow = {};
@@ -194,8 +165,8 @@ function compactFallbacks(value) {
194
165
  const fallback = { model };
195
166
  const id = cleanString(item.id);
196
167
  if (id) fallback.id = id;
197
- const backend = cleanString(item.backend);
198
- if (backend) fallback.backend = backend;
168
+ const itemMode = cleanString(item.mode);
169
+ if (itemMode) fallback.mode = itemMode;
199
170
  if (item.temperature != null && Number.isFinite(item.temperature)) {
200
171
  fallback.temperature = item.temperature;
201
172
  }
@@ -235,7 +206,8 @@ function compactMemory(value) {
235
206
  function compactPermissions(value, legacySkills) {
236
207
  if (!value && !(legacySkills == null ? void 0 : legacySkills.length)) return void 0;
237
208
  const permissions = {};
238
- if ((value == null ? void 0 : value.mode) && value.mode !== "default") permissions.mode = value.mode;
209
+ const mode = cleanString(value == null ? void 0 : value.mode);
210
+ if (mode) permissions.mode = mode;
239
211
  const presets = compactList(value == null ? void 0 : value.presets);
240
212
  if (presets) permissions.presets = presets;
241
213
  const tools = compactToolPolicies(value == null ? void 0 : value.tools);
@@ -259,6 +231,9 @@ function compactSetup(value) {
259
231
  if (dotenv) setup.dotenv = dotenv;
260
232
  const envVars = compactEnvVars(value.envVars);
261
233
  if (envVars) setup.envVars = envVars;
234
+ if (value.connections && hasKeys(value.connections)) {
235
+ setup.connections = structuredClone(value.connections);
236
+ }
262
237
  const checkout = compactSetupCheckout(value.checkout);
263
238
  if (checkout) setup.checkout = checkout;
264
239
  return hasKeys(setup) ? setup : void 0;
@@ -288,6 +263,7 @@ function compactEnvVarSource(value) {
288
263
  if (kind === "configmap" && key) return { configMapKeyRef: { name, key } };
289
264
  if (kind === "serviceaccount") return { serviceAccount: name };
290
265
  if (kind === "helm" && key) return { helmRef: { name, key } };
266
+ if (kind === "op" && rest) return { onePassword: source };
291
267
  return void 0;
292
268
  }
293
269
  function compactStructuredEnvVarSource(value) {
@@ -308,10 +284,12 @@ function compactStructuredEnvVarSource(value) {
308
284
  const helmName = cleanString((_e = value.helmRef) == null ? void 0 : _e.name);
309
285
  const helmKey = cleanString((_f = value.helmRef) == null ? void 0 : _f.key);
310
286
  if (helmName && helmKey) source.helmRef = { name: helmName, key: helmKey };
287
+ const onePassword = cleanString(value.onePassword);
288
+ if (onePassword) source.onePassword = onePassword;
311
289
  return hasKeys(source) ? source : void 0;
312
290
  }
313
291
  function compactSetupCheckout(value) {
314
- var _a, _b, _c, _d, _e, _f, _g;
292
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
315
293
  if (!value) return void 0;
316
294
  const checkout = {};
317
295
  if (value.mode === "remote" || value.mode === "local")
@@ -327,6 +305,8 @@ function compactSetupCheckout(value) {
327
305
  if (value.depth != null && Number.isFinite(value.depth) && value.depth > 0) {
328
306
  checkout.depth = Math.trunc(value.depth);
329
307
  }
308
+ const since = cleanString(value.since);
309
+ if (since) checkout.since = since;
330
310
  const worktree = {};
331
311
  const worktreeMode = (_a = value.worktree) == null ? void 0 : _a.mode;
332
312
  if (worktreeMode === "new" || worktreeMode === "existing") {
@@ -339,14 +319,20 @@ function compactSetupCheckout(value) {
339
319
  const worktreePath = cleanString((_d = value.worktree) == null ? void 0 : _d.path);
340
320
  if (worktreePath) worktree.path = worktreePath;
341
321
  if (worktree.mode === "new" && ((_e = value.worktree) == null ? void 0 : _e.keep)) worktree.keep = true;
322
+ if (((_f = value.worktree) == null ? void 0 : _f.uncommitted) === "clone" || ((_g = value.worktree) == null ? void 0 : _g.uncommitted) === "skip") {
323
+ worktree.uncommitted = value.worktree.uncommitted;
324
+ }
325
+ if (((_h = value.worktree) == null ? void 0 : _h.ignored) === "clone" || ((_i = value.worktree) == null ? void 0 : _i.ignored) === "skip") {
326
+ worktree.ignored = value.worktree.ignored;
327
+ }
342
328
  if (hasKeys(worktree)) checkout.worktree = worktree;
343
329
  const dirty = {};
344
- const stash = (_f = value.dirty) == null ? void 0 : _f.stash;
330
+ const stash = (_j = value.dirty) == null ? void 0 : _j.stash;
345
331
  if (stash === "untracked" || stash === "unstaged" || stash === "staged" || stash === "all") {
346
332
  dirty.stash = stash;
347
333
  }
348
- const since = cleanString((_g = value.dirty) == null ? void 0 : _g.since);
349
- if (since) dirty.since = since;
334
+ const dirtySince = cleanString((_k = value.dirty) == null ? void 0 : _k.since);
335
+ if (dirtySince) dirty.since = dirtySince;
350
336
  if (hasKeys(dirty)) checkout.dirty = dirty;
351
337
  return hasKeys(checkout) ? checkout : void 0;
352
338
  }
@@ -464,13 +450,15 @@ function isSpecToolPolicy(value) {
464
450
  function isSpecResourceMode(value) {
465
451
  return value === "enabled" || value === "disabled";
466
452
  }
453
+ exports.SPEC_PERMISSION_MODES = SpecRuntimeEditor_sandboxModel.SPEC_PERMISSION_MODES;
454
+ exports.SPEC_SANDBOX_MODES = SpecRuntimeEditor_sandboxModel.SPEC_SANDBOX_MODES;
467
455
  exports.SPEC_CHECKOUT_MODES = SPEC_CHECKOUT_MODES;
456
+ exports.SPEC_CLONE_MODES = SPEC_CLONE_MODES;
468
457
  exports.SPEC_COMMIT_CONDITIONS = SPEC_COMMIT_CONDITIONS;
469
458
  exports.SPEC_COMMIT_GATES = SPEC_COMMIT_GATES;
470
459
  exports.SPEC_COMMIT_MODES = SPEC_COMMIT_MODES;
471
460
  exports.SPEC_COMMIT_PHASES = SPEC_COMMIT_PHASES;
472
461
  exports.SPEC_COMMIT_STAGES = SPEC_COMMIT_STAGES;
473
- exports.SPEC_PERMISSION_MODES = SPEC_PERMISSION_MODES;
474
462
  exports.SPEC_SCHEMA_STRICTNESS = SPEC_SCHEMA_STRICTNESS;
475
463
  exports.SPEC_STASH_MODES = SPEC_STASH_MODES;
476
464
  exports.SPEC_VERIFY_SCOPES = SPEC_VERIFY_SCOPES;
@@ -1 +1 @@
1
- {"version":3,"file":"SpecRuntimeEditor.model.cjs","sources":["../../../src/data/ai/SpecRuntimeEditor.model.ts"],"sourcesContent":["import type { ChatBudgetConfig } from \"../chat/types\";\n\nexport const SPEC_PERMISSION_MODES = [\n \"default\",\n \"acceptEdits\",\n \"auto\",\n \"bypassPermissions\",\n \"dontAsk\",\n \"plan\",\n] as const;\n\nexport type SpecPermissionMode = (typeof SPEC_PERMISSION_MODES)[number];\n\nexport const SPEC_TOOL_POLICIES = [\"auto\", \"ask\", \"allow\", \"deny\"] as const;\nexport type SpecToolPolicy = (typeof SPEC_TOOL_POLICIES)[number];\n\nexport const SPEC_RESOURCE_MODES = [\"enabled\", \"disabled\"] as const;\nexport type SpecResourceMode = (typeof SPEC_RESOURCE_MODES)[number];\n\nexport const SPEC_CHECKOUT_MODES = [\"none\", \"remote\", \"local\"] as const;\nexport type SpecCheckoutMode = (typeof SPEC_CHECKOUT_MODES)[number];\n\n/**\n * Sandbox capabilities an adapter may declare. Mirrors captain's\n * registry.SandboxCapability: the editor reads these to decide what to offer —\n * an agent picker needs `remote-exec`, and `isolate-workspace` conflicts with a\n * worktree or setup checkout.\n */\nexport const SPEC_SANDBOX_CAPABILITIES = [\n \"wrap-command\",\n \"remote-exec\",\n \"isolate-workspace\",\n \"egress-proxy\",\n] as const;\nexport type SpecSandboxCapability = (typeof SPEC_SANDBOX_CAPABILITIES)[number];\n\nexport const SPEC_WORKTREE_MODES = [\"none\", \"new\", \"existing\"] as const;\nexport type SpecWorktreeMode = (typeof SPEC_WORKTREE_MODES)[number];\n\nexport const SPEC_STASH_MODES = [\n \"none\",\n \"untracked\",\n \"unstaged\",\n \"staged\",\n \"all\",\n] as const;\nexport type SpecStashMode = (typeof SPEC_STASH_MODES)[number];\n\nexport const SPEC_VERIFY_SCOPES = [\"all\", \"changed\"] as const;\nexport type SpecVerifyScope = (typeof SPEC_VERIFY_SCOPES)[number];\n\n// The lifecycle boundary a commit fires on, mirroring captain's api.CommitPhase:\n// \"turn\" after every loop iteration, \"agent\" once the generate/verify loop ends,\n// \"run\" after the worktree is merged away.\nexport const SPEC_COMMIT_PHASES = [\"turn\", \"agent\", \"run\"] as const;\nexport type SpecCommitPhase = (typeof SPEC_COMMIT_PHASES)[number];\n\nexport const SPEC_COMMIT_MODES = [\"commit\", \"fixup\", \"amend\"] as const;\nexport type SpecCommitMode = (typeof SPEC_COMMIT_MODES)[number];\n\nexport const SPEC_COMMIT_CONDITIONS = [\n \"always\",\n \"onSuccess\",\n \"onVerify\",\n] as const;\nexport type SpecCommitCondition = (typeof SPEC_COMMIT_CONDITIONS)[number];\n\nexport const SPEC_COMMIT_STAGES = [\"worktree\", \"changed\"] as const;\nexport type SpecCommitStage = (typeof SPEC_COMMIT_STAGES)[number];\n\nexport const SPEC_COMMIT_GATES = [\"none\", \"cheap\", \"full\"] as const;\nexport type SpecCommitGates = (typeof SPEC_COMMIT_GATES)[number];\n\nexport const SPEC_SCHEMA_STRICTNESS = [\"warning\", \"error\", \"retry\"] as const;\nexport type SpecSchemaStrictness = (typeof SPEC_SCHEMA_STRICTNESS)[number];\n\nexport type AISpecRuntimePrompt = {\n user?: string;\n system?: string;\n appendSystem?: string;\n schemaJSON?: unknown;\n schemaStrictness?: SpecSchemaStrictness | \"\";\n attachments?: AISpecRuntimeAttachment[];\n};\n\nexport type AISpecRuntimeAttachment = {\n id?: string;\n path?: string;\n url?: string;\n filename?: string;\n mediaType?: string;\n size?: number;\n sha256?: string;\n};\n\nexport type AISpecRuntimeModelFallback = {\n model?: string;\n id?: string;\n backend?: string;\n temperature?: number;\n effort?: string;\n noCache?: boolean;\n};\n\nexport type AISpecRuntimeMemory = {\n skills?: string[];\n skipProject?: boolean;\n skipUser?: boolean;\n skipSkills?: boolean;\n skipHooks?: boolean;\n skipMemory?: boolean;\n bare?: boolean;\n};\n\nexport type AISpecRuntimeToolPolicies = Record<string, SpecToolPolicy>;\n\nexport type AISpecRuntimeLegacyToolPermissions = {\n allow?: string[];\n deny?: string[];\n modes?: Record<string, string>;\n};\n\nexport type AISpecRuntimeResourcePolicies = Record<string, SpecResourceMode>;\n\nexport type AISpecRuntimeMCPPermissions = {\n disabled?: boolean;\n servers?: string[];\n [name: string]: SpecResourceMode | string[] | boolean | undefined;\n};\n\nexport type AISpecRuntimePermissions = {\n mode?: SpecPermissionMode | \"\";\n presets?: string[];\n tools?: AISpecRuntimeToolPolicies | AISpecRuntimeLegacyToolPermissions;\n mcp?: AISpecRuntimeMCPPermissions;\n plugins?: AISpecRuntimeResourcePolicies | string[];\n skills?: AISpecRuntimeResourcePolicies | string[];\n};\n\nexport type AISpecRuntimePermissionCatalogItem = {\n id: string;\n label?: string;\n group?: string;\n description?: string;\n source?: string;\n sourcePath?: string;\n configured?: boolean;\n available?: boolean;\n defaultMode?: string;\n};\n\nexport type AISpecRuntimePermissionCatalog = {\n tools?: AISpecRuntimePermissionCatalogItem[];\n mcp?: AISpecRuntimePermissionCatalogItem[];\n plugins?: AISpecRuntimePermissionCatalogItem[];\n skills?: AISpecRuntimePermissionCatalogItem[];\n};\n\nexport type AISpecRuntimeBudget = ChatBudgetConfig & {\n maxTurns?: number;\n timeout?: string;\n};\n\n/**\n * Bounds what a dispatched run may touch. Mirrors captain's api.SandboxPolicy;\n * zero values inherit the backend's configured policy.\n */\nexport type AISpecRuntimeSandboxPolicy = {\n /** Path allow/deny list, gitignore syntax with `!` negating. */\n paths?: string[];\n /** Bound on submit cycles per task. */\n maxAttempts?: number;\n};\n\n/**\n * The object form of captain's api.SandboxRef. `backend` names a configured\n * sandbox backend or a bare adapter kind; `agent` pins one enrolled agent of a\n * git-agent backend.\n */\nexport type AISpecRuntimeSandbox = {\n backend?: string;\n agent?: string;\n policy?: AISpecRuntimeSandboxPolicy;\n};\n\nexport type AISpecRuntimeSpec = {\n model?: string;\n id?: string;\n backend?: string;\n /**\n * Sandbox the run executes under. Accepts a bare selector or the object form,\n * exactly as api.SandboxRef marshals: a ref carrying only a backend\n * round-trips as a scalar so `sandbox: git-agent` in a .prompt is not\n * rewritten into a mapping on save.\n */\n sandbox?: string | AISpecRuntimeSandbox;\n temperature?: number;\n effort?: string;\n noCache?: boolean;\n fallbacks?: AISpecRuntimeModelFallback[];\n prompt?: AISpecRuntimePrompt;\n budget?: AISpecRuntimeBudget;\n memory?: AISpecRuntimeMemory;\n permissions?: AISpecRuntimePermissions;\n setup?: AISpecRuntimeSetup;\n workflow?: AISpecRuntimeWorkflow;\n sessionId?: string;\n /** Extra cmux CLI args (api.Spec.cliArgs), keyed by option json name. */\n cliArgs?: Record<string, unknown>;\n};\n\nexport type AISpecRuntimeEnvVarSource = {\n secretKeyRef?: { name?: string; key?: string };\n configMapKeyRef?: { name?: string; key?: string };\n serviceAccount?: string;\n helmRef?: { name?: string; key?: string };\n};\n\nexport type AISpecRuntimeEnvVar = {\n name?: string;\n value?: string;\n valueFrom?: string | AISpecRuntimeEnvVarSource;\n};\n\nexport type AISpecRuntimeSetup = {\n cwd?: string;\n baseDir?: string;\n dotenv?: string[];\n envVars?: AISpecRuntimeEnvVar[];\n checkout?: {\n mode?: SpecCheckoutMode | \"\";\n url?: string;\n path?: string;\n connection?: string;\n ref?: string;\n depth?: number;\n worktree?: {\n mode?: SpecWorktreeMode | \"\";\n prefix?: string;\n base?: string;\n path?: string;\n keep?: boolean;\n };\n dirty?: {\n stash?: SpecStashMode | \"\";\n since?: string;\n };\n };\n};\n\nexport type AISpecRuntimeVerify = {\n fixture?: string;\n scope?: SpecVerifyScope | \"\";\n maxIterations?: number;\n};\n\n// Mirrors captain's api.Commit: one commit policy keyed to a lifecycle phase.\n// Every field is optional because an omitted field means \"captain's default\",\n// which is why an empty stanza is still meaningful — see compactCommits.\nexport type AISpecRuntimeCommit = {\n on?: SpecCommitPhase | \"\";\n mode?: SpecCommitMode | \"\";\n when?: SpecCommitCondition | \"\";\n message?: string;\n anchor?: string;\n squash?: boolean;\n base?: string;\n stage?: SpecCommitStage | \"\";\n gates?: SpecCommitGates | \"\";\n dryRun?: boolean;\n};\n\n// Mirrors captain's api.Workflow (verify + commits) so the SpecRuntimeEditor's\n// Verify/Commit sections round-trip through the spec frontmatter. Unlike the\n// prior client-only shape, this is part of the compacted spec.\nexport type AISpecRuntimeWorkflow = {\n verify?: AISpecRuntimeVerify;\n commits?: AISpecRuntimeCommit[];\n};\n\nexport type AISpecRuntimeValue = AISpecRuntimeSpec;\n\nexport type AISpecRuntimePayload = {\n spec?: AISpecRuntimeSpec;\n};\n\nexport function buildAISpecRuntimePayload(\n value: AISpecRuntimeValue,\n): AISpecRuntimePayload {\n const payload: AISpecRuntimePayload = {};\n const spec = compactAISpecRuntime(value);\n if (hasKeys(spec)) payload.spec = spec;\n return payload;\n}\n\nexport function compactAISpecRuntime(\n value: AISpecRuntimeValue,\n): AISpecRuntimeSpec {\n const spec: AISpecRuntimeSpec = {};\n\n const model = cleanString(value.model);\n if (model) spec.model = model;\n const id = cleanString(value.id);\n if (id) spec.id = id;\n const backend = cleanString(value.backend);\n if (backend) spec.backend = backend;\n if (value.temperature != null && Number.isFinite(value.temperature)) {\n spec.temperature = value.temperature;\n }\n const effort = cleanString(value.effort);\n if (effort) spec.effort = effort;\n if (value.noCache) spec.noCache = true;\n const fallbacks = compactFallbacks(value.fallbacks);\n if (fallbacks) spec.fallbacks = fallbacks;\n\n const prompt = compactPrompt(value.prompt);\n if (prompt) spec.prompt = prompt;\n const budget = compactBudget(value.budget);\n if (budget) spec.budget = budget;\n const memory = compactMemory(value.memory);\n if (memory) spec.memory = memory;\n const permissions = compactPermissions(\n value.permissions,\n value.memory?.skills,\n );\n if (permissions) spec.permissions = permissions;\n const setup = compactSetup(value.setup);\n if (setup) spec.setup = setup;\n const workflow = compactWorkflow(value.workflow);\n if (workflow) spec.workflow = workflow;\n const sessionId = cleanString(value.sessionId);\n if (sessionId) spec.sessionId = sessionId;\n const sandbox = compactSandbox(value.sandbox);\n if (sandbox !== undefined) spec.sandbox = sandbox;\n if (value.cliArgs && hasKeys(value.cliArgs)) spec.cliArgs = value.cliArgs;\n return spec;\n}\n\n/**\n * Narrows a sandbox ref to what the Go side will accept, and collapses it back\n * to the scalar form when only a backend is set — the same rule as\n * api.SandboxRef.isScalar. Emitting `{backend: \"git-agent\"}` for a prompt\n * written as `sandbox: git-agent` would rewrite the user's frontmatter on every\n * save, so the shorthand has to survive the round-trip.\n *\n * An overrides-only ref (agent/policy with no backend) resolves to nothing and\n * is dropped: api.SandboxRef.Validate rejects it outright.\n */\nfunction compactSandbox(\n value: string | AISpecRuntimeSandbox | undefined,\n): string | AISpecRuntimeSandbox | undefined {\n if (value == null) return undefined;\n if (typeof value === \"string\") {\n return cleanString(value) || undefined;\n }\n const backend = cleanString(value.backend);\n if (!backend) return undefined;\n const agent = cleanString(value.agent);\n const policy = compactSandboxPolicy(value.policy);\n if (!agent && !policy) return backend;\n const sandbox: AISpecRuntimeSandbox = { backend };\n if (agent) sandbox.agent = agent;\n if (policy) sandbox.policy = policy;\n return sandbox;\n}\n\nfunction compactSandboxPolicy(\n value: AISpecRuntimeSandboxPolicy | undefined,\n): AISpecRuntimeSandboxPolicy | undefined {\n if (!value) return undefined;\n const policy: AISpecRuntimeSandboxPolicy = {};\n const paths = value.paths\n ?.map((path) => cleanString(path))\n .filter((path) => path !== \"\");\n if (paths?.length) policy.paths = paths;\n // Validate rejects a negative bound, and 0 means \"inherit the backend's\".\n if (\n value.maxAttempts != null &&\n Number.isFinite(value.maxAttempts) &&\n value.maxAttempts > 0\n ) {\n policy.maxAttempts = Math.floor(value.maxAttempts);\n }\n return hasKeys(policy) ? policy : undefined;\n}\n\nfunction compactWorkflow(\n value: AISpecRuntimeWorkflow | undefined,\n): AISpecRuntimeWorkflow | undefined {\n if (!value) return undefined;\n const workflow: AISpecRuntimeWorkflow = {};\n const verify = compactVerify(value.verify);\n if (verify) workflow.verify = verify;\n const commits = compactCommits(value.commits);\n if (commits) workflow.commits = commits;\n return hasKeys(workflow) ? workflow : undefined;\n}\n\nfunction compactVerify(\n value: AISpecRuntimeVerify | undefined,\n): AISpecRuntimeVerify | undefined {\n if (!value) return undefined;\n const verify: AISpecRuntimeVerify = {};\n const fixture = cleanString(value.fixture);\n if (fixture) verify.fixture = fixture;\n if (value.scope === \"all\" || value.scope === \"changed\")\n verify.scope = value.scope;\n if (\n value.maxIterations != null &&\n Number.isFinite(value.maxIterations) &&\n value.maxIterations > 0\n ) {\n verify.maxIterations = Math.trunc(value.maxIterations);\n }\n return hasKeys(verify) ? verify : undefined;\n}\n\n// Presence in the list is what turns committing on, so an empty stanza survives\n// compaction: `commits: [{}]` reads as \"one commit at the end of the run with\n// every default\". Committing nothing is an absent list, not a stanza of falses.\nfunction compactCommits(\n value: AISpecRuntimeCommit[] | undefined,\n): AISpecRuntimeCommit[] | undefined {\n if (!value?.length) return undefined;\n return value.map(compactCommit);\n}\n\nfunction compactCommit(value: AISpecRuntimeCommit): AISpecRuntimeCommit {\n const commit: AISpecRuntimeCommit = {};\n const on = pickEnum(SPEC_COMMIT_PHASES, value.on);\n if (on) commit.on = on;\n const mode = pickEnum(SPEC_COMMIT_MODES, value.mode);\n if (mode) commit.mode = mode;\n const when = pickEnum(SPEC_COMMIT_CONDITIONS, value.when);\n if (when) commit.when = when;\n const message = cleanString(value.message);\n if (message) commit.message = message;\n const anchor = cleanString(value.anchor);\n if (anchor) commit.anchor = anchor;\n // Squash is a *bool in captain: `squash: false` is the instruction to keep the\n // fixup chain for review, so it cannot be pruned the way a plain flag is.\n if (value.squash != null) commit.squash = value.squash;\n const base = cleanString(value.base);\n if (base) commit.base = base;\n const stage = pickEnum(SPEC_COMMIT_STAGES, value.stage);\n if (stage) commit.stage = stage;\n const gates = pickEnum(SPEC_COMMIT_GATES, value.gates);\n if (gates) commit.gates = gates;\n if (value.dryRun) commit.dryRun = true;\n return commit;\n}\n\nfunction compactPrompt(\n value: AISpecRuntimePrompt | undefined,\n): AISpecRuntimePrompt | undefined {\n if (!value) return undefined;\n const prompt: AISpecRuntimePrompt = {};\n const user = cleanString(value.user);\n if (user) prompt.user = user;\n const system = cleanString(value.system);\n if (system) prompt.system = system;\n const appendSystem = cleanString(value.appendSystem);\n if (appendSystem) prompt.appendSystem = appendSystem;\n const schemaJSON = compactJSONValue(value.schemaJSON);\n if (schemaJSON !== undefined) prompt.schemaJSON = schemaJSON;\n if (\n value.schemaStrictness === \"warning\" ||\n value.schemaStrictness === \"error\" ||\n value.schemaStrictness === \"retry\"\n ) {\n prompt.schemaStrictness = value.schemaStrictness;\n }\n const attachments = value.attachments\n ?.map((attachment) => compactAttachment(attachment))\n .filter(\n (attachment): attachment is AISpecRuntimeAttachment =>\n attachment !== undefined,\n );\n if (attachments && attachments.length > 0) prompt.attachments = attachments;\n return hasKeys(prompt) ? prompt : undefined;\n}\n\nfunction compactAttachment(\n value: AISpecRuntimeAttachment,\n): AISpecRuntimeAttachment | undefined {\n const attachment: AISpecRuntimeAttachment = {};\n for (const key of [\n \"id\",\n \"path\",\n \"url\",\n \"filename\",\n \"mediaType\",\n \"sha256\",\n ] as const) {\n const text = cleanString(value[key]);\n if (text) attachment[key] = text;\n }\n if (value.size != null && Number.isFinite(value.size) && value.size >= 0) {\n attachment.size = value.size;\n }\n return attachment.id || attachment.path || attachment.url\n ? attachment\n : undefined;\n}\n\nfunction compactFallbacks(\n value: AISpecRuntimeModelFallback[] | undefined,\n): AISpecRuntimeModelFallback[] | undefined {\n if (!value) return undefined;\n const out: AISpecRuntimeModelFallback[] = [];\n for (const item of value) {\n const model = cleanString(item.model);\n if (!model) continue;\n const fallback: AISpecRuntimeModelFallback = { model };\n const id = cleanString(item.id);\n if (id) fallback.id = id;\n const backend = cleanString(item.backend);\n if (backend) fallback.backend = backend;\n if (item.temperature != null && Number.isFinite(item.temperature)) {\n fallback.temperature = item.temperature;\n }\n const effort = cleanString(item.effort);\n if (effort) fallback.effort = effort;\n if (item.noCache) fallback.noCache = true;\n out.push(fallback);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction compactBudget(\n value: AISpecRuntimeBudget | undefined,\n): AISpecRuntimeBudget | undefined {\n if (!value) return undefined;\n const budget: AISpecRuntimeBudget = {};\n if (value.cost != null && Number.isFinite(value.cost) && value.cost > 0) {\n budget.cost = value.cost;\n }\n if (\n value.maxTokens != null &&\n Number.isFinite(value.maxTokens) &&\n value.maxTokens > 0\n ) {\n budget.maxTokens = Math.trunc(value.maxTokens);\n }\n if (\n value.maxTurns != null &&\n Number.isFinite(value.maxTurns) &&\n value.maxTurns > 0\n ) {\n budget.maxTurns = Math.trunc(value.maxTurns);\n }\n const timeout = cleanString(value.timeout);\n if (timeout) budget.timeout = timeout;\n return hasKeys(budget) ? budget : undefined;\n}\n\nfunction compactMemory(\n value: AISpecRuntimeMemory | undefined,\n): AISpecRuntimeMemory | undefined {\n if (!value) return undefined;\n const memory: AISpecRuntimeMemory = {};\n if (value.skipProject) memory.skipProject = true;\n if (value.skipUser) memory.skipUser = true;\n if (value.skipHooks) memory.skipHooks = true;\n if (value.skipMemory) memory.skipMemory = true;\n if (value.bare) memory.bare = true;\n return hasKeys(memory) ? memory : undefined;\n}\n\nfunction compactPermissions(\n value: AISpecRuntimePermissions | undefined,\n legacySkills?: string[] | undefined,\n): AISpecRuntimePermissions | undefined {\n if (!value && !legacySkills?.length) return undefined;\n const permissions: AISpecRuntimePermissions = {};\n if (value?.mode && value.mode !== \"default\") permissions.mode = value.mode;\n const presets = compactList(value?.presets);\n if (presets) permissions.presets = presets;\n\n const tools = compactToolPolicies(value?.tools);\n if (tools) permissions.tools = tools;\n\n const mcp = compactMCPPermissions(value?.mcp);\n if (mcp) permissions.mcp = mcp;\n\n const plugins = compactResourcePolicies(value?.plugins);\n if (plugins) permissions.plugins = plugins;\n const skills = compactResourcePolicies(value?.skills, legacySkills);\n if (skills) permissions.skills = skills;\n return hasKeys(permissions) ? permissions : undefined;\n}\n\nfunction compactSetup(\n value: AISpecRuntimeSetup | undefined,\n): AISpecRuntimeSetup | undefined {\n if (!value) return undefined;\n const setup: AISpecRuntimeSetup = {};\n const cwd = cleanString(value.cwd);\n if (cwd) setup.cwd = cwd;\n const baseDir = cleanString(value.baseDir);\n if (baseDir) setup.baseDir = baseDir;\n const dotenv = compactList(value.dotenv);\n if (dotenv) setup.dotenv = dotenv;\n const envVars = compactEnvVars(value.envVars);\n if (envVars) setup.envVars = envVars;\n const checkout = compactSetupCheckout(value.checkout);\n if (checkout) setup.checkout = checkout;\n return hasKeys(setup) ? setup : undefined;\n}\n\nfunction compactEnvVars(value: AISpecRuntimeEnvVar[] | undefined) {\n if (!value) return undefined;\n const out: AISpecRuntimeEnvVar[] = [];\n for (const item of value) {\n const name = cleanString(item.name);\n if (!name) continue;\n const env: AISpecRuntimeEnvVar = { name };\n const literal = cleanString(item.value);\n const valueFrom =\n typeof item.valueFrom === \"string\"\n ? compactEnvVarSource(item.valueFrom)\n : compactStructuredEnvVarSource(item.valueFrom);\n if (literal) env.value = literal;\n if (valueFrom) env.valueFrom = valueFrom;\n if (env.value || env.valueFrom) out.push(env);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction compactEnvVarSource(\n value: string | undefined,\n): AISpecRuntimeEnvVarSource | undefined {\n const source = cleanString(value);\n if (!source) return undefined;\n const [kind, rest = \"\"] = source.split(\"://\", 2);\n const [name = \"\", key = \"\"] = rest.split(\"/\", 2).map((part) => part.trim());\n if (!name) return undefined;\n if (kind === \"secret\" && key) return { secretKeyRef: { name, key } };\n if (kind === \"configmap\" && key) return { configMapKeyRef: { name, key } };\n if (kind === \"serviceaccount\") return { serviceAccount: name };\n if (kind === \"helm\" && key) return { helmRef: { name, key } };\n return undefined;\n}\n\nfunction compactStructuredEnvVarSource(\n value: AISpecRuntimeEnvVarSource | undefined,\n): AISpecRuntimeEnvVarSource | undefined {\n if (!value) return undefined;\n const source: AISpecRuntimeEnvVarSource = {};\n const secretName = cleanString(value.secretKeyRef?.name);\n const secretKey = cleanString(value.secretKeyRef?.key);\n if (secretName && secretKey)\n source.secretKeyRef = { name: secretName, key: secretKey };\n const configMapName = cleanString(value.configMapKeyRef?.name);\n const configMapKey = cleanString(value.configMapKeyRef?.key);\n if (configMapName && configMapKey) {\n source.configMapKeyRef = { name: configMapName, key: configMapKey };\n }\n const serviceAccount = cleanString(value.serviceAccount);\n if (serviceAccount) source.serviceAccount = serviceAccount;\n const helmName = cleanString(value.helmRef?.name);\n const helmKey = cleanString(value.helmRef?.key);\n if (helmName && helmKey) source.helmRef = { name: helmName, key: helmKey };\n return hasKeys(source) ? source : undefined;\n}\n\nfunction compactSetupCheckout(\n value: AISpecRuntimeSetup[\"checkout\"] | undefined,\n): NonNullable<AISpecRuntimeSetup[\"checkout\"]> | undefined {\n if (!value) return undefined;\n const checkout: NonNullable<AISpecRuntimeSetup[\"checkout\"]> = {};\n if (value.mode === \"remote\" || value.mode === \"local\")\n checkout.mode = value.mode;\n const url = cleanString(value.url);\n if (url) checkout.url = url;\n const path = cleanString(value.path);\n if (path) checkout.path = path;\n const connection = cleanString(value.connection);\n if (connection) checkout.connection = connection;\n const ref = cleanString(value.ref);\n if (ref) checkout.ref = ref;\n if (value.depth != null && Number.isFinite(value.depth) && value.depth > 0) {\n checkout.depth = Math.trunc(value.depth);\n }\n\n const worktree: NonNullable<\n NonNullable<AISpecRuntimeSetup[\"checkout\"]>[\"worktree\"]\n > = {};\n const worktreeMode = value.worktree?.mode;\n if (worktreeMode === \"new\" || worktreeMode === \"existing\") {\n worktree.mode = worktreeMode;\n }\n const worktreePrefix = cleanString(value.worktree?.prefix);\n if (worktreePrefix) worktree.prefix = worktreePrefix;\n const worktreeBase = cleanString(value.worktree?.base);\n if (worktreeBase) worktree.base = worktreeBase;\n const worktreePath = cleanString(value.worktree?.path);\n if (worktreePath) worktree.path = worktreePath;\n if (worktree.mode === \"new\" && value.worktree?.keep) worktree.keep = true;\n if (hasKeys(worktree)) checkout.worktree = worktree;\n\n const dirty: NonNullable<\n NonNullable<AISpecRuntimeSetup[\"checkout\"]>[\"dirty\"]\n > = {};\n const stash = value.dirty?.stash;\n if (\n stash === \"untracked\" ||\n stash === \"unstaged\" ||\n stash === \"staged\" ||\n stash === \"all\"\n ) {\n dirty.stash = stash;\n }\n const since = cleanString(value.dirty?.since);\n if (since) dirty.since = since;\n if (hasKeys(dirty)) checkout.dirty = dirty;\n\n return hasKeys(checkout) ? checkout : undefined;\n}\n\nfunction compactToolPolicies(\n value: AISpecRuntimePermissions[\"tools\"] | undefined,\n) {\n const normalized = normalizeToolPolicies(value);\n return hasKeys(normalized) ? normalized : undefined;\n}\n\nfunction compactResourcePolicies(\n value: AISpecRuntimePermissions[\"plugins\"] | undefined,\n legacyEnabled?: string[] | undefined,\n) {\n const normalized = normalizeResourcePolicies(value, legacyEnabled);\n return hasKeys(normalized) ? normalized : undefined;\n}\n\nfunction compactMCPPermissions(\n value: AISpecRuntimeMCPPermissions | undefined,\n): AISpecRuntimeMCPPermissions | undefined {\n if (!value) return undefined;\n const out: AISpecRuntimeMCPPermissions = {};\n for (const [rawKey, rawValue] of Object.entries(value)) {\n const key = rawKey.trim();\n if (!key) continue;\n if (key === \"servers\") {\n const servers = Array.isArray(rawValue)\n ? compactList(\n rawValue.filter((item): item is string => typeof item === \"string\"),\n )\n : undefined;\n if (servers) out.servers = servers;\n continue;\n }\n if (key === \"disabled\") {\n if (rawValue === true) out.disabled = true;\n continue;\n }\n if (isSpecResourceMode(rawValue)) out[key] = rawValue;\n }\n return hasKeys(out) ? out : undefined;\n}\n\nexport function normalizeToolPolicies(\n value: AISpecRuntimePermissions[\"tools\"] | undefined,\n): AISpecRuntimeToolPolicies {\n const out: AISpecRuntimeToolPolicies = {};\n if (!value) return out;\n const legacy = value as AISpecRuntimeLegacyToolPermissions;\n for (const tool of compactList(legacy.allow) ?? []) out[tool] = \"allow\";\n for (const tool of compactList(legacy.deny) ?? []) out[tool] = \"deny\";\n for (const [rawKey, rawMode] of Object.entries(legacy.modes ?? {})) {\n const key = rawKey.trim();\n if (!key) continue;\n if (rawMode === \"enabled\") out[key] = \"auto\";\n if (rawMode === \"ask\") out[key] = \"ask\";\n if (rawMode === \"disabled\") out[key] = \"deny\";\n }\n for (const [rawKey, policy] of Object.entries(value)) {\n const key = rawKey.trim();\n if (!key || key === \"allow\" || key === \"deny\" || key === \"modes\") {\n continue;\n }\n if (isSpecToolPolicy(policy)) out[key] = policy;\n }\n return out;\n}\n\nexport function normalizeResourcePolicies(\n value: AISpecRuntimePermissions[\"plugins\"] | undefined,\n legacyEnabled?: string[] | undefined,\n): AISpecRuntimeResourcePolicies {\n const out: AISpecRuntimeResourcePolicies = {};\n for (const id of compactList(legacyEnabled) ?? []) out[id] = \"enabled\";\n if (!value) return out;\n if (Array.isArray(value)) {\n for (const id of compactList(value) ?? []) out[id] = \"enabled\";\n return out;\n }\n for (const [rawKey, rawMode] of Object.entries(value)) {\n const key = rawKey.trim();\n if (!key) continue;\n if (isSpecResourceMode(rawMode)) out[key] = rawMode;\n }\n return out;\n}\n\nexport function normalizeMCPPermissions(\n value: AISpecRuntimeMCPPermissions | undefined,\n): AISpecRuntimeMCPPermissions {\n const out: AISpecRuntimeMCPPermissions = {};\n if (!value) return out;\n const servers = compactList(value.servers);\n if (servers) out.servers = servers;\n if (value.disabled) out.disabled = true;\n for (const [rawKey, rawMode] of Object.entries(value)) {\n const key = rawKey.trim();\n if (!key || key === \"servers\" || key === \"disabled\") continue;\n if (isSpecResourceMode(rawMode)) out[key] = rawMode;\n }\n return out;\n}\n\nfunction compactJSONValue(value: unknown) {\n if (value == null) return undefined;\n if (typeof value === \"string\") {\n const raw = value.trim();\n if (!raw) return undefined;\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n }\n return value;\n}\n\nfunction compactList(value: string[] | undefined) {\n if (!value) return undefined;\n const out = Array.from(\n new Set(value.map((item) => item.trim()).filter(Boolean)),\n );\n return out.length > 0 ? out : undefined;\n}\n\nfunction cleanString(value: string | undefined) {\n return value?.trim() ?? \"\";\n}\n\n// Narrows an editor-held string (which may be \"\" while unset) to a member of an\n// enum, dropping anything the Go side would reject.\nfunction pickEnum<T extends string>(\n options: readonly T[],\n value: string | undefined,\n): T | undefined {\n return options.find((option) => option === value);\n}\n\nfunction hasKeys(value: object) {\n return Object.keys(value).length > 0;\n}\n\nfunction isSpecToolPolicy(value: unknown): value is SpecToolPolicy {\n return (\n value === \"auto\" || value === \"ask\" || value === \"allow\" || value === \"deny\"\n );\n}\n\nfunction isSpecResourceMode(value: unknown): value is SpecResourceMode {\n return value === \"enabled\" || value === \"disabled\";\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpecRuntimeEditor.model.cjs","sources":["../../../src/data/ai/SpecRuntimeEditor.model.ts"],"sourcesContent":["import type { ChatBudgetConfig } from \"../chat/types\";\nimport {\n normalizeToolPolicyRules,\n type PermissionPolicy,\n} from \"../chat/tool-policy\";\nimport {\n compactRuntimeSandbox,\n type AISpecRuntimeSandbox,\n type SpecPermissionMode,\n} from \"./SpecRuntimeEditor.sandbox-model\";\n\nexport {\n SPEC_PERMISSION_MODES,\n SPEC_SANDBOX_MODES,\n} from \"./SpecRuntimeEditor.sandbox-model\";\nexport type {\n AISpecRuntimeSandbox,\n AISpecRuntimeSandboxDispatch,\n AISpecRuntimeSandboxFilesystemPolicy,\n AISpecRuntimeSandboxNetworkPolicy,\n AISpecRuntimeSandboxPolicy,\n SpecPermissionMode,\n SpecSandboxFilesystemAccess,\n SpecSandboxMode,\n SpecSandboxNetworkAccess,\n} from \"./SpecRuntimeEditor.sandbox-model\";\n\nexport const SPEC_TOOL_POLICIES = [\"auto\", \"ask\", \"allow\", \"deny\"] as const;\nexport type SpecToolPolicy = (typeof SPEC_TOOL_POLICIES)[number];\n\nexport const SPEC_RESOURCE_MODES = [\"enabled\", \"disabled\"] as const;\nexport type SpecResourceMode = (typeof SPEC_RESOURCE_MODES)[number];\n\nexport const SPEC_CHECKOUT_MODES = [\"none\", \"remote\", \"local\"] as const;\nexport type SpecCheckoutMode = (typeof SPEC_CHECKOUT_MODES)[number];\n\n/**\n * Sandbox capabilities an adapter may declare. Mirrors captain's\n * registry.SandboxCapability: the editor reads these to decide what to offer —\n * an agent picker needs `remote-exec`, and `isolate-workspace` conflicts with a\n * worktree or setup checkout.\n */\nexport const SPEC_SANDBOX_CAPABILITIES = [\n \"wrap-command\",\n \"remote-exec\",\n \"isolate-workspace\",\n \"egress-proxy\",\n] as const;\nexport type SpecSandboxCapability = (typeof SPEC_SANDBOX_CAPABILITIES)[number];\n\nexport const SPEC_WORKTREE_MODES = [\"none\", \"new\", \"existing\"] as const;\nexport type SpecWorktreeMode = (typeof SPEC_WORKTREE_MODES)[number];\n\nexport const SPEC_CLONE_MODES = [\"clone\", \"skip\"] as const;\nexport type SpecCloneMode = (typeof SPEC_CLONE_MODES)[number];\n\nexport const SPEC_STASH_MODES = [\n \"none\",\n \"untracked\",\n \"unstaged\",\n \"staged\",\n \"all\",\n] as const;\nexport type SpecStashMode = (typeof SPEC_STASH_MODES)[number];\n\nexport const SPEC_VERIFY_SCOPES = [\"all\", \"changed\"] as const;\nexport type SpecVerifyScope = (typeof SPEC_VERIFY_SCOPES)[number];\n\n// The lifecycle boundary a commit fires on, mirroring captain's api.CommitPhase:\n// \"turn\" after every loop iteration, \"agent\" once the generate/verify loop ends,\n// \"run\" after the worktree is merged away.\nexport const SPEC_COMMIT_PHASES = [\"turn\", \"agent\", \"run\"] as const;\nexport type SpecCommitPhase = (typeof SPEC_COMMIT_PHASES)[number];\n\nexport const SPEC_COMMIT_MODES = [\"commit\", \"fixup\", \"amend\"] as const;\nexport type SpecCommitMode = (typeof SPEC_COMMIT_MODES)[number];\n\nexport const SPEC_COMMIT_CONDITIONS = [\n \"always\",\n \"onSuccess\",\n \"onVerify\",\n] as const;\nexport type SpecCommitCondition = (typeof SPEC_COMMIT_CONDITIONS)[number];\n\nexport const SPEC_COMMIT_STAGES = [\"worktree\", \"changed\"] as const;\nexport type SpecCommitStage = (typeof SPEC_COMMIT_STAGES)[number];\n\nexport const SPEC_COMMIT_GATES = [\"none\", \"cheap\", \"full\"] as const;\nexport type SpecCommitGates = (typeof SPEC_COMMIT_GATES)[number];\n\nexport const SPEC_SCHEMA_STRICTNESS = [\"warning\", \"error\", \"retry\"] as const;\nexport type SpecSchemaStrictness = (typeof SPEC_SCHEMA_STRICTNESS)[number];\n\nexport type AISpecRuntimePrompt = {\n user?: string;\n system?: string;\n appendSystem?: string;\n schemaJSON?: unknown;\n schemaStrictness?: SpecSchemaStrictness | \"\";\n attachments?: AISpecRuntimeAttachment[];\n};\n\nexport type AISpecRuntimeAttachment = {\n id?: string;\n path?: string;\n url?: string;\n filename?: string;\n mediaType?: string;\n size?: number;\n sha256?: string;\n};\n\nexport type AISpecRuntimeModelFallback = {\n model?: string;\n id?: string;\n /** The canonical runtime mode: api | agent | cli | cmux. */\n mode?: string;\n temperature?: number;\n effort?: string;\n noCache?: boolean;\n};\n\nexport type AISpecRuntimeMemory = {\n skills?: string[];\n skipProject?: boolean;\n skipUser?: boolean;\n skipSkills?: boolean;\n skipHooks?: boolean;\n skipMemory?: boolean;\n bare?: boolean;\n};\n\nexport type AISpecRuntimeToolPolicies = Record<string, SpecToolPolicy>;\n\nexport type AISpecRuntimeLegacyToolPermissions = {\n allow?: string[];\n deny?: string[];\n modes?: Record<string, string>;\n};\n\nexport type AISpecRuntimeResourcePolicies = Record<string, SpecResourceMode>;\n\nexport type AISpecRuntimeMCPPermissions = {\n disabled?: boolean;\n servers?: string[];\n [name: string]: SpecResourceMode | string[] | boolean | undefined;\n};\n\nexport type AISpecRuntimePermissions = {\n // The base posture, independent of the sandbox: isolation bounds what the\n // process can reach, while the mode decides whether the agent asks before\n // acting. A run can ask for `plan` with no sandbox at all.\n mode?: SpecPermissionMode;\n presets?: string[];\n tools?: AISpecRuntimeToolPolicies | AISpecRuntimeLegacyToolPermissions;\n mcp?: AISpecRuntimeMCPPermissions;\n plugins?: AISpecRuntimeResourcePolicies | string[];\n skills?: AISpecRuntimeResourcePolicies | string[];\n};\n\nexport type AISpecRuntimePermissionCatalogItem = {\n id: string;\n label?: string;\n group?: string;\n description?: string;\n source?: string;\n sourcePath?: string;\n configured?: boolean;\n available?: boolean;\n defaultMode?: string;\n};\n\nexport type AISpecRuntimePermissionCatalog = {\n tools?: AISpecRuntimePermissionCatalogItem[];\n mcp?: AISpecRuntimePermissionCatalogItem[];\n plugins?: AISpecRuntimePermissionCatalogItem[];\n skills?: AISpecRuntimePermissionCatalogItem[];\n};\n\nexport type AISpecRuntimeBudget = ChatBudgetConfig & {\n maxTurns?: number;\n timeout?: string;\n};\n\nexport type AISpecRuntimeSpec = {\n model?: string;\n id?: string;\n /** The canonical runtime mode: api | agent | cli | cmux. */\n mode?: string;\n /**\n * Unified sandbox settings. A mode-only ref round-trips as a scalar.\n */\n sandbox?: string | AISpecRuntimeSandbox;\n temperature?: number;\n effort?: string;\n noCache?: boolean;\n fallbacks?: AISpecRuntimeModelFallback[];\n prompt?: AISpecRuntimePrompt;\n budget?: AISpecRuntimeBudget;\n memory?: AISpecRuntimeMemory;\n permissions?: AISpecRuntimePermissions;\n /** Ordered, last-match-wins Captain tool authority rules. */\n toolPolicy?: PermissionPolicy;\n setup?: AISpecRuntimeSetup;\n workflow?: AISpecRuntimeWorkflow;\n sessionId?: string;\n /** Extra cmux CLI args (api.Spec.cliArgs), keyed by option json name. */\n cliArgs?: Record<string, unknown>;\n};\n\nexport type AISpecRuntimeEnvVarSource = {\n secretKeyRef?: { name?: string; key?: string };\n configMapKeyRef?: { name?: string; key?: string };\n serviceAccount?: string;\n helmRef?: { name?: string; key?: string };\n onePassword?: string;\n};\n\nexport type AISpecRuntimeEnvVar = {\n name?: string;\n value?: string;\n valueFrom?: string | AISpecRuntimeEnvVarSource;\n};\n\nexport type AISpecRuntimeConnections = {\n fromConfigItem?: string;\n eksPodIdentity?: boolean;\n serviceAccount?: boolean;\n aws?: {\n connection?: string;\n accessKey?: AISpecRuntimeEnvVar;\n secretKey?: AISpecRuntimeEnvVar;\n sessionToken?: AISpecRuntimeEnvVar;\n assumeRole?: string;\n region?: string;\n endpoint?: string;\n skipTLSVerify?: boolean;\n };\n gcp?: {\n connection?: string;\n credentials?: AISpecRuntimeEnvVar;\n endpoint?: string;\n project?: string;\n skipTLSVerify?: boolean;\n };\n azure?: {\n connection?: string;\n clientID?: AISpecRuntimeEnvVar;\n clientSecret?: AISpecRuntimeEnvVar;\n tenantID?: string;\n };\n kubernetes?: {\n connection?: string;\n kubeconfig?: AISpecRuntimeEnvVar;\n eks?: Record<string, unknown>;\n gke?: Record<string, unknown>;\n cnrm?: Record<string, unknown>;\n };\n};\n\nexport type AISpecRuntimeSetup = {\n cwd?: string;\n baseDir?: string;\n dotenv?: string[];\n envVars?: AISpecRuntimeEnvVar[];\n connections?: AISpecRuntimeConnections;\n checkout?: {\n mode?: SpecCheckoutMode | \"\";\n url?: string;\n path?: string;\n connection?: string;\n ref?: string;\n depth?: number;\n since?: string;\n worktree?: {\n mode?: SpecWorktreeMode | \"\";\n prefix?: string;\n base?: string;\n path?: string;\n keep?: boolean;\n uncommitted?: SpecCloneMode | \"\";\n ignored?: SpecCloneMode | \"\";\n };\n dirty?: {\n stash?: SpecStashMode | \"\";\n since?: string;\n };\n };\n};\n\nexport type AISpecRuntimeVerify = {\n fixture?: string;\n scope?: SpecVerifyScope | \"\";\n maxIterations?: number;\n};\n\n// Mirrors captain's api.Commit: one commit policy keyed to a lifecycle phase.\n// Every field is optional because an omitted field means \"captain's default\",\n// which is why an empty stanza is still meaningful — see compactCommits.\nexport type AISpecRuntimeCommit = {\n on?: SpecCommitPhase | \"\";\n mode?: SpecCommitMode | \"\";\n when?: SpecCommitCondition | \"\";\n message?: string;\n anchor?: string;\n squash?: boolean;\n base?: string;\n stage?: SpecCommitStage | \"\";\n gates?: SpecCommitGates | \"\";\n dryRun?: boolean;\n};\n\n// Mirrors captain's api.Workflow (verify + commits) so the SpecRuntimeEditor's\n// Verify/Commit sections round-trip through the spec frontmatter. Unlike the\n// prior client-only shape, this is part of the compacted spec.\nexport type AISpecRuntimeWorkflow = {\n verify?: AISpecRuntimeVerify;\n commits?: AISpecRuntimeCommit[];\n};\n\nexport type AISpecRuntimeValue = AISpecRuntimeSpec;\n\nexport type AISpecRuntimePayload = {\n spec?: AISpecRuntimeSpec;\n};\n\nexport function buildAISpecRuntimePayload(\n value: AISpecRuntimeValue,\n): AISpecRuntimePayload {\n const payload: AISpecRuntimePayload = {};\n const spec = compactAISpecRuntime(value);\n if (hasKeys(spec)) payload.spec = spec;\n return payload;\n}\n\nexport function compactAISpecRuntime(\n value: AISpecRuntimeValue,\n): AISpecRuntimeSpec {\n const spec: AISpecRuntimeSpec = {};\n\n const model = cleanString(value.model);\n if (model) spec.model = model;\n const id = cleanString(value.id);\n if (id) spec.id = id;\n const specMode = cleanString(value.mode);\n if (specMode) spec.mode = specMode;\n if (value.temperature != null && Number.isFinite(value.temperature)) {\n spec.temperature = value.temperature;\n }\n const effort = cleanString(value.effort);\n if (effort) spec.effort = effort;\n if (value.noCache) spec.noCache = true;\n const fallbacks = compactFallbacks(value.fallbacks);\n if (fallbacks) spec.fallbacks = fallbacks;\n\n const prompt = compactPrompt(value.prompt);\n if (prompt) spec.prompt = prompt;\n const budget = compactBudget(value.budget);\n if (budget) spec.budget = budget;\n const memory = compactMemory(value.memory);\n if (memory) spec.memory = memory;\n const permissions = compactPermissions(\n value.permissions,\n value.memory?.skills,\n );\n if (permissions) spec.permissions = permissions;\n const toolPolicy = normalizeToolPolicyRules(value.toolPolicy);\n if (toolPolicy.length > 0) spec.toolPolicy = toolPolicy;\n const setup = compactSetup(value.setup);\n if (setup) spec.setup = setup;\n const workflow = compactWorkflow(value.workflow);\n if (workflow) spec.workflow = workflow;\n const sessionId = cleanString(value.sessionId);\n if (sessionId) spec.sessionId = sessionId;\n const sandbox = compactRuntimeSandbox(value.sandbox);\n if (sandbox !== undefined) spec.sandbox = sandbox;\n if (value.cliArgs && hasKeys(value.cliArgs)) spec.cliArgs = value.cliArgs;\n return spec;\n}\n\nfunction compactWorkflow(\n value: AISpecRuntimeWorkflow | undefined,\n): AISpecRuntimeWorkflow | undefined {\n if (!value) return undefined;\n const workflow: AISpecRuntimeWorkflow = {};\n const verify = compactVerify(value.verify);\n if (verify) workflow.verify = verify;\n const commits = compactCommits(value.commits);\n if (commits) workflow.commits = commits;\n return hasKeys(workflow) ? workflow : undefined;\n}\n\nfunction compactVerify(\n value: AISpecRuntimeVerify | undefined,\n): AISpecRuntimeVerify | undefined {\n if (!value) return undefined;\n const verify: AISpecRuntimeVerify = {};\n const fixture = cleanString(value.fixture);\n if (fixture) verify.fixture = fixture;\n if (value.scope === \"all\" || value.scope === \"changed\")\n verify.scope = value.scope;\n if (\n value.maxIterations != null &&\n Number.isFinite(value.maxIterations) &&\n value.maxIterations > 0\n ) {\n verify.maxIterations = Math.trunc(value.maxIterations);\n }\n return hasKeys(verify) ? verify : undefined;\n}\n\n// Presence in the list is what turns committing on, so an empty stanza survives\n// compaction: `commits: [{}]` reads as \"one commit at the end of the run with\n// every default\". Committing nothing is an absent list, not a stanza of falses.\nfunction compactCommits(\n value: AISpecRuntimeCommit[] | undefined,\n): AISpecRuntimeCommit[] | undefined {\n if (!value?.length) return undefined;\n return value.map(compactCommit);\n}\n\nfunction compactCommit(value: AISpecRuntimeCommit): AISpecRuntimeCommit {\n const commit: AISpecRuntimeCommit = {};\n const on = pickEnum(SPEC_COMMIT_PHASES, value.on);\n if (on) commit.on = on;\n const mode = pickEnum(SPEC_COMMIT_MODES, value.mode);\n if (mode) commit.mode = mode;\n const when = pickEnum(SPEC_COMMIT_CONDITIONS, value.when);\n if (when) commit.when = when;\n const message = cleanString(value.message);\n if (message) commit.message = message;\n const anchor = cleanString(value.anchor);\n if (anchor) commit.anchor = anchor;\n // Squash is a *bool in captain: `squash: false` is the instruction to keep the\n // fixup chain for review, so it cannot be pruned the way a plain flag is.\n if (value.squash != null) commit.squash = value.squash;\n const base = cleanString(value.base);\n if (base) commit.base = base;\n const stage = pickEnum(SPEC_COMMIT_STAGES, value.stage);\n if (stage) commit.stage = stage;\n const gates = pickEnum(SPEC_COMMIT_GATES, value.gates);\n if (gates) commit.gates = gates;\n if (value.dryRun) commit.dryRun = true;\n return commit;\n}\n\nfunction compactPrompt(\n value: AISpecRuntimePrompt | undefined,\n): AISpecRuntimePrompt | undefined {\n if (!value) return undefined;\n const prompt: AISpecRuntimePrompt = {};\n const user = cleanString(value.user);\n if (user) prompt.user = user;\n const system = cleanString(value.system);\n if (system) prompt.system = system;\n const appendSystem = cleanString(value.appendSystem);\n if (appendSystem) prompt.appendSystem = appendSystem;\n const schemaJSON = compactJSONValue(value.schemaJSON);\n if (schemaJSON !== undefined) prompt.schemaJSON = schemaJSON;\n if (\n value.schemaStrictness === \"warning\" ||\n value.schemaStrictness === \"error\" ||\n value.schemaStrictness === \"retry\"\n ) {\n prompt.schemaStrictness = value.schemaStrictness;\n }\n const attachments = value.attachments\n ?.map((attachment) => compactAttachment(attachment))\n .filter(\n (attachment): attachment is AISpecRuntimeAttachment =>\n attachment !== undefined,\n );\n if (attachments && attachments.length > 0) prompt.attachments = attachments;\n return hasKeys(prompt) ? prompt : undefined;\n}\n\nfunction compactAttachment(\n value: AISpecRuntimeAttachment,\n): AISpecRuntimeAttachment | undefined {\n const attachment: AISpecRuntimeAttachment = {};\n for (const key of [\n \"id\",\n \"path\",\n \"url\",\n \"filename\",\n \"mediaType\",\n \"sha256\",\n ] as const) {\n const text = cleanString(value[key]);\n if (text) attachment[key] = text;\n }\n if (value.size != null && Number.isFinite(value.size) && value.size >= 0) {\n attachment.size = value.size;\n }\n return attachment.id || attachment.path || attachment.url\n ? attachment\n : undefined;\n}\n\nfunction compactFallbacks(\n value: AISpecRuntimeModelFallback[] | undefined,\n): AISpecRuntimeModelFallback[] | undefined {\n if (!value) return undefined;\n const out: AISpecRuntimeModelFallback[] = [];\n for (const item of value) {\n const model = cleanString(item.model);\n if (!model) continue;\n const fallback: AISpecRuntimeModelFallback = { model };\n const id = cleanString(item.id);\n if (id) fallback.id = id;\n const itemMode = cleanString(item.mode);\n if (itemMode) fallback.mode = itemMode;\n if (item.temperature != null && Number.isFinite(item.temperature)) {\n fallback.temperature = item.temperature;\n }\n const effort = cleanString(item.effort);\n if (effort) fallback.effort = effort;\n if (item.noCache) fallback.noCache = true;\n out.push(fallback);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction compactBudget(\n value: AISpecRuntimeBudget | undefined,\n): AISpecRuntimeBudget | undefined {\n if (!value) return undefined;\n const budget: AISpecRuntimeBudget = {};\n if (value.cost != null && Number.isFinite(value.cost) && value.cost > 0) {\n budget.cost = value.cost;\n }\n if (\n value.maxTokens != null &&\n Number.isFinite(value.maxTokens) &&\n value.maxTokens > 0\n ) {\n budget.maxTokens = Math.trunc(value.maxTokens);\n }\n if (\n value.maxTurns != null &&\n Number.isFinite(value.maxTurns) &&\n value.maxTurns > 0\n ) {\n budget.maxTurns = Math.trunc(value.maxTurns);\n }\n const timeout = cleanString(value.timeout);\n if (timeout) budget.timeout = timeout;\n return hasKeys(budget) ? budget : undefined;\n}\n\nfunction compactMemory(\n value: AISpecRuntimeMemory | undefined,\n): AISpecRuntimeMemory | undefined {\n if (!value) return undefined;\n const memory: AISpecRuntimeMemory = {};\n if (value.skipProject) memory.skipProject = true;\n if (value.skipUser) memory.skipUser = true;\n if (value.skipHooks) memory.skipHooks = true;\n if (value.skipMemory) memory.skipMemory = true;\n if (value.bare) memory.bare = true;\n return hasKeys(memory) ? memory : undefined;\n}\n\nfunction compactPermissions(\n value: AISpecRuntimePermissions | undefined,\n legacySkills?: string[] | undefined,\n): AISpecRuntimePermissions | undefined {\n if (!value && !legacySkills?.length) return undefined;\n const permissions: AISpecRuntimePermissions = {};\n const mode = cleanString(value?.mode) as SpecPermissionMode | undefined;\n if (mode) permissions.mode = mode;\n const presets = compactList(value?.presets);\n if (presets) permissions.presets = presets;\n\n const tools = compactToolPolicies(value?.tools);\n if (tools) permissions.tools = tools;\n\n const mcp = compactMCPPermissions(value?.mcp);\n if (mcp) permissions.mcp = mcp;\n\n const plugins = compactResourcePolicies(value?.plugins);\n if (plugins) permissions.plugins = plugins;\n const skills = compactResourcePolicies(value?.skills, legacySkills);\n if (skills) permissions.skills = skills;\n return hasKeys(permissions) ? permissions : undefined;\n}\n\nfunction compactSetup(\n value: AISpecRuntimeSetup | undefined,\n): AISpecRuntimeSetup | undefined {\n if (!value) return undefined;\n const setup: AISpecRuntimeSetup = {};\n const cwd = cleanString(value.cwd);\n if (cwd) setup.cwd = cwd;\n const baseDir = cleanString(value.baseDir);\n if (baseDir) setup.baseDir = baseDir;\n const dotenv = compactList(value.dotenv);\n if (dotenv) setup.dotenv = dotenv;\n const envVars = compactEnvVars(value.envVars);\n if (envVars) setup.envVars = envVars;\n if (value.connections && hasKeys(value.connections)) {\n setup.connections = structuredClone(value.connections);\n }\n const checkout = compactSetupCheckout(value.checkout);\n if (checkout) setup.checkout = checkout;\n return hasKeys(setup) ? setup : undefined;\n}\n\nfunction compactEnvVars(value: AISpecRuntimeEnvVar[] | undefined) {\n if (!value) return undefined;\n const out: AISpecRuntimeEnvVar[] = [];\n for (const item of value) {\n const name = cleanString(item.name);\n if (!name) continue;\n const env: AISpecRuntimeEnvVar = { name };\n const literal = cleanString(item.value);\n const valueFrom =\n typeof item.valueFrom === \"string\"\n ? compactEnvVarSource(item.valueFrom)\n : compactStructuredEnvVarSource(item.valueFrom);\n if (literal) env.value = literal;\n if (valueFrom) env.valueFrom = valueFrom;\n if (env.value || env.valueFrom) out.push(env);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction compactEnvVarSource(\n value: string | undefined,\n): AISpecRuntimeEnvVarSource | undefined {\n const source = cleanString(value);\n if (!source) return undefined;\n const [kind, rest = \"\"] = source.split(\"://\", 2);\n const [name = \"\", key = \"\"] = rest.split(\"/\", 2).map((part) => part.trim());\n if (!name) return undefined;\n if (kind === \"secret\" && key) return { secretKeyRef: { name, key } };\n if (kind === \"configmap\" && key) return { configMapKeyRef: { name, key } };\n if (kind === \"serviceaccount\") return { serviceAccount: name };\n if (kind === \"helm\" && key) return { helmRef: { name, key } };\n if (kind === \"op\" && rest) return { onePassword: source };\n return undefined;\n}\n\nfunction compactStructuredEnvVarSource(\n value: AISpecRuntimeEnvVarSource | undefined,\n): AISpecRuntimeEnvVarSource | undefined {\n if (!value) return undefined;\n const source: AISpecRuntimeEnvVarSource = {};\n const secretName = cleanString(value.secretKeyRef?.name);\n const secretKey = cleanString(value.secretKeyRef?.key);\n if (secretName && secretKey)\n source.secretKeyRef = { name: secretName, key: secretKey };\n const configMapName = cleanString(value.configMapKeyRef?.name);\n const configMapKey = cleanString(value.configMapKeyRef?.key);\n if (configMapName && configMapKey) {\n source.configMapKeyRef = { name: configMapName, key: configMapKey };\n }\n const serviceAccount = cleanString(value.serviceAccount);\n if (serviceAccount) source.serviceAccount = serviceAccount;\n const helmName = cleanString(value.helmRef?.name);\n const helmKey = cleanString(value.helmRef?.key);\n if (helmName && helmKey) source.helmRef = { name: helmName, key: helmKey };\n const onePassword = cleanString(value.onePassword);\n if (onePassword) source.onePassword = onePassword;\n return hasKeys(source) ? source : undefined;\n}\n\nfunction compactSetupCheckout(\n value: AISpecRuntimeSetup[\"checkout\"] | undefined,\n): NonNullable<AISpecRuntimeSetup[\"checkout\"]> | undefined {\n if (!value) return undefined;\n const checkout: NonNullable<AISpecRuntimeSetup[\"checkout\"]> = {};\n if (value.mode === \"remote\" || value.mode === \"local\")\n checkout.mode = value.mode;\n const url = cleanString(value.url);\n if (url) checkout.url = url;\n const path = cleanString(value.path);\n if (path) checkout.path = path;\n const connection = cleanString(value.connection);\n if (connection) checkout.connection = connection;\n const ref = cleanString(value.ref);\n if (ref) checkout.ref = ref;\n if (value.depth != null && Number.isFinite(value.depth) && value.depth > 0) {\n checkout.depth = Math.trunc(value.depth);\n }\n const since = cleanString(value.since);\n if (since) checkout.since = since;\n\n const worktree: NonNullable<\n NonNullable<AISpecRuntimeSetup[\"checkout\"]>[\"worktree\"]\n > = {};\n const worktreeMode = value.worktree?.mode;\n if (worktreeMode === \"new\" || worktreeMode === \"existing\") {\n worktree.mode = worktreeMode;\n }\n const worktreePrefix = cleanString(value.worktree?.prefix);\n if (worktreePrefix) worktree.prefix = worktreePrefix;\n const worktreeBase = cleanString(value.worktree?.base);\n if (worktreeBase) worktree.base = worktreeBase;\n const worktreePath = cleanString(value.worktree?.path);\n if (worktreePath) worktree.path = worktreePath;\n if (worktree.mode === \"new\" && value.worktree?.keep) worktree.keep = true;\n if (\n value.worktree?.uncommitted === \"clone\" ||\n value.worktree?.uncommitted === \"skip\"\n ) {\n worktree.uncommitted = value.worktree.uncommitted;\n }\n if (\n value.worktree?.ignored === \"clone\" ||\n value.worktree?.ignored === \"skip\"\n ) {\n worktree.ignored = value.worktree.ignored;\n }\n if (hasKeys(worktree)) checkout.worktree = worktree;\n\n const dirty: NonNullable<\n NonNullable<AISpecRuntimeSetup[\"checkout\"]>[\"dirty\"]\n > = {};\n const stash = value.dirty?.stash;\n if (\n stash === \"untracked\" ||\n stash === \"unstaged\" ||\n stash === \"staged\" ||\n stash === \"all\"\n ) {\n dirty.stash = stash;\n }\n const dirtySince = cleanString(value.dirty?.since);\n if (dirtySince) dirty.since = dirtySince;\n if (hasKeys(dirty)) checkout.dirty = dirty;\n\n return hasKeys(checkout) ? checkout : undefined;\n}\n\nfunction compactToolPolicies(\n value: AISpecRuntimePermissions[\"tools\"] | undefined,\n) {\n const normalized = normalizeToolPolicies(value);\n return hasKeys(normalized) ? normalized : undefined;\n}\n\nfunction compactResourcePolicies(\n value: AISpecRuntimePermissions[\"plugins\"] | undefined,\n legacyEnabled?: string[] | undefined,\n) {\n const normalized = normalizeResourcePolicies(value, legacyEnabled);\n return hasKeys(normalized) ? normalized : undefined;\n}\n\nfunction compactMCPPermissions(\n value: AISpecRuntimeMCPPermissions | undefined,\n): AISpecRuntimeMCPPermissions | undefined {\n if (!value) return undefined;\n const out: AISpecRuntimeMCPPermissions = {};\n for (const [rawKey, rawValue] of Object.entries(value)) {\n const key = rawKey.trim();\n if (!key) continue;\n if (key === \"servers\") {\n const servers = Array.isArray(rawValue)\n ? compactList(\n rawValue.filter((item): item is string => typeof item === \"string\"),\n )\n : undefined;\n if (servers) out.servers = servers;\n continue;\n }\n if (key === \"disabled\") {\n if (rawValue === true) out.disabled = true;\n continue;\n }\n if (isSpecResourceMode(rawValue)) out[key] = rawValue;\n }\n return hasKeys(out) ? out : undefined;\n}\n\nexport function normalizeToolPolicies(\n value: AISpecRuntimePermissions[\"tools\"] | undefined,\n): AISpecRuntimeToolPolicies {\n const out: AISpecRuntimeToolPolicies = {};\n if (!value) return out;\n const legacy = value as AISpecRuntimeLegacyToolPermissions;\n for (const tool of compactList(legacy.allow) ?? []) out[tool] = \"allow\";\n for (const tool of compactList(legacy.deny) ?? []) out[tool] = \"deny\";\n for (const [rawKey, rawMode] of Object.entries(legacy.modes ?? {})) {\n const key = rawKey.trim();\n if (!key) continue;\n if (rawMode === \"enabled\") out[key] = \"auto\";\n if (rawMode === \"ask\") out[key] = \"ask\";\n if (rawMode === \"disabled\") out[key] = \"deny\";\n }\n for (const [rawKey, policy] of Object.entries(value)) {\n const key = rawKey.trim();\n if (!key || key === \"allow\" || key === \"deny\" || key === \"modes\") {\n continue;\n }\n if (isSpecToolPolicy(policy)) out[key] = policy;\n }\n return out;\n}\n\nexport function normalizeResourcePolicies(\n value: AISpecRuntimePermissions[\"plugins\"] | undefined,\n legacyEnabled?: string[] | undefined,\n): AISpecRuntimeResourcePolicies {\n const out: AISpecRuntimeResourcePolicies = {};\n for (const id of compactList(legacyEnabled) ?? []) out[id] = \"enabled\";\n if (!value) return out;\n if (Array.isArray(value)) {\n for (const id of compactList(value) ?? []) out[id] = \"enabled\";\n return out;\n }\n for (const [rawKey, rawMode] of Object.entries(value)) {\n const key = rawKey.trim();\n if (!key) continue;\n if (isSpecResourceMode(rawMode)) out[key] = rawMode;\n }\n return out;\n}\n\nexport function normalizeMCPPermissions(\n value: AISpecRuntimeMCPPermissions | undefined,\n): AISpecRuntimeMCPPermissions {\n const out: AISpecRuntimeMCPPermissions = {};\n if (!value) return out;\n const servers = compactList(value.servers);\n if (servers) out.servers = servers;\n if (value.disabled) out.disabled = true;\n for (const [rawKey, rawMode] of Object.entries(value)) {\n const key = rawKey.trim();\n if (!key || key === \"servers\" || key === \"disabled\") continue;\n if (isSpecResourceMode(rawMode)) out[key] = rawMode;\n }\n return out;\n}\n\nfunction compactJSONValue(value: unknown) {\n if (value == null) return undefined;\n if (typeof value === \"string\") {\n const raw = value.trim();\n if (!raw) return undefined;\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n }\n return value;\n}\n\nfunction compactList(value: string[] | undefined) {\n if (!value) return undefined;\n const out = Array.from(\n new Set(value.map((item) => item.trim()).filter(Boolean)),\n );\n return out.length > 0 ? out : undefined;\n}\n\nfunction cleanString(value: string | undefined) {\n return value?.trim() ?? \"\";\n}\n\n// Narrows an editor-held string (which may be \"\" while unset) to a member of an\n// enum, dropping anything the Go side would reject.\nfunction pickEnum<T extends string>(\n options: readonly T[],\n value: string | undefined,\n): T | undefined {\n return options.find((option) => option === value);\n}\n\nfunction hasKeys(value: object) {\n return Object.keys(value).length > 0;\n}\n\nfunction isSpecToolPolicy(value: unknown): value is SpecToolPolicy {\n return (\n value === \"auto\" || value === \"ask\" || value === \"allow\" || value === \"deny\"\n );\n}\n\nfunction isSpecResourceMode(value: unknown): value is SpecResourceMode {\n return value === \"enabled\" || value === \"disabled\";\n}\n"],"names":["toolPolicy","normalizeToolPolicyRules","compactRuntimeSandbox"],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { ChatBudgetConfig } from '../chat/types';
2
- export declare const SPEC_PERMISSION_MODES: readonly ["default", "acceptEdits", "auto", "bypassPermissions", "dontAsk", "plan"];
3
- export type SpecPermissionMode = (typeof SPEC_PERMISSION_MODES)[number];
2
+ import { PermissionPolicy } from '../chat/tool-policy';
3
+ import { AISpecRuntimeSandbox, SpecPermissionMode } from './SpecRuntimeEditor.sandbox-model';
4
+ export { SPEC_PERMISSION_MODES, SPEC_SANDBOX_MODES, } from './SpecRuntimeEditor.sandbox-model';
5
+ export type { AISpecRuntimeSandbox, AISpecRuntimeSandboxDispatch, AISpecRuntimeSandboxFilesystemPolicy, AISpecRuntimeSandboxNetworkPolicy, AISpecRuntimeSandboxPolicy, SpecPermissionMode, SpecSandboxFilesystemAccess, SpecSandboxMode, SpecSandboxNetworkAccess, } from './SpecRuntimeEditor.sandbox-model';
4
6
  export declare const SPEC_TOOL_POLICIES: readonly ["auto", "ask", "allow", "deny"];
5
7
  export type SpecToolPolicy = (typeof SPEC_TOOL_POLICIES)[number];
6
8
  export declare const SPEC_RESOURCE_MODES: readonly ["enabled", "disabled"];
@@ -17,6 +19,8 @@ export declare const SPEC_SANDBOX_CAPABILITIES: readonly ["wrap-command", "remot
17
19
  export type SpecSandboxCapability = (typeof SPEC_SANDBOX_CAPABILITIES)[number];
18
20
  export declare const SPEC_WORKTREE_MODES: readonly ["none", "new", "existing"];
19
21
  export type SpecWorktreeMode = (typeof SPEC_WORKTREE_MODES)[number];
22
+ export declare const SPEC_CLONE_MODES: readonly ["clone", "skip"];
23
+ export type SpecCloneMode = (typeof SPEC_CLONE_MODES)[number];
20
24
  export declare const SPEC_STASH_MODES: readonly ["none", "untracked", "unstaged", "staged", "all"];
21
25
  export type SpecStashMode = (typeof SPEC_STASH_MODES)[number];
22
26
  export declare const SPEC_VERIFY_SCOPES: readonly ["all", "changed"];
@@ -53,7 +57,8 @@ export type AISpecRuntimeAttachment = {
53
57
  export type AISpecRuntimeModelFallback = {
54
58
  model?: string;
55
59
  id?: string;
56
- backend?: string;
60
+ /** The canonical runtime mode: api | agent | cli | cmux. */
61
+ mode?: string;
57
62
  temperature?: number;
58
63
  effort?: string;
59
64
  noCache?: boolean;
@@ -80,7 +85,7 @@ export type AISpecRuntimeMCPPermissions = {
80
85
  [name: string]: SpecResourceMode | string[] | boolean | undefined;
81
86
  };
82
87
  export type AISpecRuntimePermissions = {
83
- mode?: SpecPermissionMode | "";
88
+ mode?: SpecPermissionMode;
84
89
  presets?: string[];
85
90
  tools?: AISpecRuntimeToolPolicies | AISpecRuntimeLegacyToolPermissions;
86
91
  mcp?: AISpecRuntimeMCPPermissions;
@@ -108,35 +113,13 @@ export type AISpecRuntimeBudget = ChatBudgetConfig & {
108
113
  maxTurns?: number;
109
114
  timeout?: string;
110
115
  };
111
- /**
112
- * Bounds what a dispatched run may touch. Mirrors captain's api.SandboxPolicy;
113
- * zero values inherit the backend's configured policy.
114
- */
115
- export type AISpecRuntimeSandboxPolicy = {
116
- /** Path allow/deny list, gitignore syntax with `!` negating. */
117
- paths?: string[];
118
- /** Bound on submit cycles per task. */
119
- maxAttempts?: number;
120
- };
121
- /**
122
- * The object form of captain's api.SandboxRef. `backend` names a configured
123
- * sandbox backend or a bare adapter kind; `agent` pins one enrolled agent of a
124
- * git-agent backend.
125
- */
126
- export type AISpecRuntimeSandbox = {
127
- backend?: string;
128
- agent?: string;
129
- policy?: AISpecRuntimeSandboxPolicy;
130
- };
131
116
  export type AISpecRuntimeSpec = {
132
117
  model?: string;
133
118
  id?: string;
134
- backend?: string;
119
+ /** The canonical runtime mode: api | agent | cli | cmux. */
120
+ mode?: string;
135
121
  /**
136
- * Sandbox the run executes under. Accepts a bare selector or the object form,
137
- * exactly as api.SandboxRef marshals: a ref carrying only a backend
138
- * round-trips as a scalar so `sandbox: git-agent` in a .prompt is not
139
- * rewritten into a mapping on save.
122
+ * Unified sandbox settings. A mode-only ref round-trips as a scalar.
140
123
  */
141
124
  sandbox?: string | AISpecRuntimeSandbox;
142
125
  temperature?: number;
@@ -147,6 +130,8 @@ export type AISpecRuntimeSpec = {
147
130
  budget?: AISpecRuntimeBudget;
148
131
  memory?: AISpecRuntimeMemory;
149
132
  permissions?: AISpecRuntimePermissions;
133
+ /** Ordered, last-match-wins Captain tool authority rules. */
134
+ toolPolicy?: PermissionPolicy;
150
135
  setup?: AISpecRuntimeSetup;
151
136
  workflow?: AISpecRuntimeWorkflow;
152
137
  sessionId?: string;
@@ -167,17 +152,54 @@ export type AISpecRuntimeEnvVarSource = {
167
152
  name?: string;
168
153
  key?: string;
169
154
  };
155
+ onePassword?: string;
170
156
  };
171
157
  export type AISpecRuntimeEnvVar = {
172
158
  name?: string;
173
159
  value?: string;
174
160
  valueFrom?: string | AISpecRuntimeEnvVarSource;
175
161
  };
162
+ export type AISpecRuntimeConnections = {
163
+ fromConfigItem?: string;
164
+ eksPodIdentity?: boolean;
165
+ serviceAccount?: boolean;
166
+ aws?: {
167
+ connection?: string;
168
+ accessKey?: AISpecRuntimeEnvVar;
169
+ secretKey?: AISpecRuntimeEnvVar;
170
+ sessionToken?: AISpecRuntimeEnvVar;
171
+ assumeRole?: string;
172
+ region?: string;
173
+ endpoint?: string;
174
+ skipTLSVerify?: boolean;
175
+ };
176
+ gcp?: {
177
+ connection?: string;
178
+ credentials?: AISpecRuntimeEnvVar;
179
+ endpoint?: string;
180
+ project?: string;
181
+ skipTLSVerify?: boolean;
182
+ };
183
+ azure?: {
184
+ connection?: string;
185
+ clientID?: AISpecRuntimeEnvVar;
186
+ clientSecret?: AISpecRuntimeEnvVar;
187
+ tenantID?: string;
188
+ };
189
+ kubernetes?: {
190
+ connection?: string;
191
+ kubeconfig?: AISpecRuntimeEnvVar;
192
+ eks?: Record<string, unknown>;
193
+ gke?: Record<string, unknown>;
194
+ cnrm?: Record<string, unknown>;
195
+ };
196
+ };
176
197
  export type AISpecRuntimeSetup = {
177
198
  cwd?: string;
178
199
  baseDir?: string;
179
200
  dotenv?: string[];
180
201
  envVars?: AISpecRuntimeEnvVar[];
202
+ connections?: AISpecRuntimeConnections;
181
203
  checkout?: {
182
204
  mode?: SpecCheckoutMode | "";
183
205
  url?: string;
@@ -185,12 +207,15 @@ export type AISpecRuntimeSetup = {
185
207
  connection?: string;
186
208
  ref?: string;
187
209
  depth?: number;
210
+ since?: string;
188
211
  worktree?: {
189
212
  mode?: SpecWorktreeMode | "";
190
213
  prefix?: string;
191
214
  base?: string;
192
215
  path?: string;
193
216
  keep?: boolean;
217
+ uncommitted?: SpecCloneMode | "";
218
+ ignored?: SpecCloneMode | "";
194
219
  };
195
220
  dirty?: {
196
221
  stash?: SpecStashMode | "";
@@ -1 +1 @@
1
- {"version":3,"file":"SpecRuntimeEditor.model.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SpecRuntimeEditor.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,eAAO,MAAM,qBAAqB,qFAOxB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,eAAO,MAAM,kBAAkB,2CAA4C,CAAC;AAC5E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,mBAAmB,kCAAmC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,mBAAmB,sCAAuC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,+EAK5B,CAAC;AACX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,eAAO,MAAM,mBAAmB,sCAAuC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,gBAAgB,6DAMnB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,eAAO,MAAM,kBAAkB,6BAA8B,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAKlE,eAAO,MAAM,kBAAkB,mCAAoC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,iBAAiB,uCAAwC,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,eAAO,MAAM,sBAAsB,8CAIzB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,kBAAkB,kCAAmC,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,iBAAiB,oCAAqC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,sBAAsB,wCAAyC,CAAC;AAC7E,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,oBAAoB,GAAG,EAAE,CAAC;IAC7C,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAEvE,MAAM,MAAM,kCAAkC,GAAG;IAC/C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE7E,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,CAAC,EAAE,kBAAkB,GAAG,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,yBAAyB,GAAG,kCAAkC,CAAC;IACvE,GAAG,CAAC,EAAE,2BAA2B,CAAC;IAClC,OAAO,CAAC,EAAE,6BAA6B,GAAG,MAAM,EAAE,CAAC;IACnD,MAAM,CAAC,EAAE,6BAA6B,GAAG,MAAM,EAAE,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,CAAC,EAAE,kCAAkC,EAAE,CAAC;IAC7C,GAAG,CAAC,EAAE,kCAAkC,EAAE,CAAC;IAC3C,OAAO,CAAC,EAAE,kCAAkC,EAAE,CAAC;IAC/C,MAAM,CAAC,EAAE,kCAAkC,EAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACzC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,eAAe,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,yBAAyB,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,gBAAgB,GAAG,EAAE,CAAC;QAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,gBAAgB,GAAG,EAAE,CAAC;YAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,OAAO,CAAC;SAChB,CAAC;QACF,KAAK,CAAC,EAAE;YACN,KAAK,CAAC,EAAE,aAAa,GAAG,EAAE,CAAC;YAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,GAAG,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAKF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,eAAe,GAAG,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,cAAc,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,mBAAmB,GAAG,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,eAAe,GAAG,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,eAAe,GAAG,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAKF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,kBAAkB,GACxB,oBAAoB,CAKtB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,kBAAkB,GACxB,iBAAiB,CAuCnB;AAyaD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,GAAG,SAAS,GACnD,yBAAyB,CAqB3B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,wBAAwB,CAAC,SAAS,CAAC,GAAG,SAAS,EACtD,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,GACnC,6BAA6B,CAc/B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,2BAA2B,GAAG,SAAS,GAC7C,2BAA2B,CAY7B"}
1
+ {"version":3,"file":"SpecRuntimeEditor.model.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SpecRuntimeEditor.model.ts"],"names":[],"mappings":"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"}