@stigmer/react 3.2.3 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/agent/steps/ReviewStep.d.ts.map +1 -1
  2. package/agent/steps/ReviewStep.js +2 -3
  3. package/agent/steps/ReviewStep.js.map +1 -1
  4. package/billing/index.d.ts.map +1 -1
  5. package/billing/index.js +4 -0
  6. package/billing/index.js.map +1 -1
  7. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  8. package/channel/AgentChannelsPanel.js +11 -5
  9. package/channel/AgentChannelsPanel.js.map +1 -1
  10. package/composer/SessionComposer.d.ts +1 -1
  11. package/cursor-accounts/CursorAccountEditor.d.ts +34 -0
  12. package/cursor-accounts/CursorAccountEditor.d.ts.map +1 -0
  13. package/cursor-accounts/CursorAccountEditor.js +67 -0
  14. package/cursor-accounts/CursorAccountEditor.js.map +1 -0
  15. package/cursor-accounts/CursorAccountsAccessNotice.d.ts +11 -0
  16. package/cursor-accounts/CursorAccountsAccessNotice.d.ts.map +1 -0
  17. package/cursor-accounts/CursorAccountsAccessNotice.js +14 -0
  18. package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -0
  19. package/cursor-accounts/CursorAccountsConsole.d.ts +32 -0
  20. package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -0
  21. package/cursor-accounts/CursorAccountsConsole.js +169 -0
  22. package/cursor-accounts/CursorAccountsConsole.js.map +1 -0
  23. package/cursor-accounts/MemberCoverageTable.d.ts +29 -0
  24. package/cursor-accounts/MemberCoverageTable.d.ts.map +1 -0
  25. package/cursor-accounts/MemberCoverageTable.js +150 -0
  26. package/cursor-accounts/MemberCoverageTable.js.map +1 -0
  27. package/cursor-accounts/MemberKeysPanel.d.ts +25 -0
  28. package/cursor-accounts/MemberKeysPanel.d.ts.map +1 -0
  29. package/cursor-accounts/MemberKeysPanel.js +115 -0
  30. package/cursor-accounts/MemberKeysPanel.js.map +1 -0
  31. package/cursor-accounts/badges.d.ts +9 -0
  32. package/cursor-accounts/badges.d.ts.map +1 -0
  33. package/cursor-accounts/badges.js +10 -0
  34. package/cursor-accounts/badges.js.map +1 -0
  35. package/cursor-accounts/cursor-account-coverage.d.ts +41 -0
  36. package/cursor-accounts/cursor-account-coverage.d.ts.map +1 -0
  37. package/cursor-accounts/cursor-account-coverage.js +26 -0
  38. package/cursor-accounts/cursor-account-coverage.js.map +1 -0
  39. package/cursor-accounts/cursor-account-format.d.ts +23 -0
  40. package/cursor-accounts/cursor-account-format.d.ts.map +1 -0
  41. package/cursor-accounts/cursor-account-format.js +41 -0
  42. package/cursor-accounts/cursor-account-format.js.map +1 -0
  43. package/cursor-accounts/index.d.ts +18 -0
  44. package/cursor-accounts/index.d.ts.map +1 -0
  45. package/cursor-accounts/index.js +13 -0
  46. package/cursor-accounts/index.js.map +1 -0
  47. package/cursor-accounts/useCursorAccountView.d.ts +30 -0
  48. package/cursor-accounts/useCursorAccountView.d.ts.map +1 -0
  49. package/cursor-accounts/useCursorAccountView.js +25 -0
  50. package/cursor-accounts/useCursorAccountView.js.map +1 -0
  51. package/cursor-accounts/useCursorAccounts.d.ts +33 -0
  52. package/cursor-accounts/useCursorAccounts.d.ts.map +1 -0
  53. package/cursor-accounts/useCursorAccounts.js +25 -0
  54. package/cursor-accounts/useCursorAccounts.js.map +1 -0
  55. package/cursor-accounts/useCursorMemberKeyActions.d.ts +49 -0
  56. package/cursor-accounts/useCursorMemberKeyActions.d.ts.map +1 -0
  57. package/cursor-accounts/useCursorMemberKeyActions.js +38 -0
  58. package/cursor-accounts/useCursorMemberKeyActions.js.map +1 -0
  59. package/cursor-accounts/useDeleteCursorAccount.d.ts +30 -0
  60. package/cursor-accounts/useDeleteCursorAccount.d.ts.map +1 -0
  61. package/cursor-accounts/useDeleteCursorAccount.js +32 -0
  62. package/cursor-accounts/useDeleteCursorAccount.js.map +1 -0
  63. package/cursor-accounts/useSyncCursorAccount.d.ts +23 -0
  64. package/cursor-accounts/useSyncCursorAccount.d.ts.map +1 -0
  65. package/cursor-accounts/useSyncCursorAccount.js +31 -0
  66. package/cursor-accounts/useSyncCursorAccount.js.map +1 -0
  67. package/cursor-accounts/useUpsertCursorAccount.d.ts +26 -0
  68. package/cursor-accounts/useUpsertCursorAccount.d.ts.map +1 -0
  69. package/cursor-accounts/useUpsertCursorAccount.js +34 -0
  70. package/cursor-accounts/useUpsertCursorAccount.js.map +1 -0
  71. package/datastore/CollectionRecordsBrowser.d.ts +34 -0
  72. package/datastore/CollectionRecordsBrowser.d.ts.map +1 -0
  73. package/datastore/CollectionRecordsBrowser.js +223 -0
  74. package/datastore/CollectionRecordsBrowser.js.map +1 -0
  75. package/datastore/CollectionSchemaView.d.ts +29 -0
  76. package/datastore/CollectionSchemaView.d.ts.map +1 -0
  77. package/datastore/CollectionSchemaView.js +93 -0
  78. package/datastore/CollectionSchemaView.js.map +1 -0
  79. package/datastore/DatastoreDetailView.d.ts +44 -0
  80. package/datastore/DatastoreDetailView.d.ts.map +1 -0
  81. package/datastore/DatastoreDetailView.js +76 -0
  82. package/datastore/DatastoreDetailView.js.map +1 -0
  83. package/datastore/DatastoreSyncReport.d.ts +19 -0
  84. package/datastore/DatastoreSyncReport.d.ts.map +1 -0
  85. package/datastore/DatastoreSyncReport.js +45 -0
  86. package/datastore/DatastoreSyncReport.js.map +1 -0
  87. package/datastore/DeleteDatastoreDialog.d.ts +35 -0
  88. package/datastore/DeleteDatastoreDialog.d.ts.map +1 -0
  89. package/datastore/DeleteDatastoreDialog.js +90 -0
  90. package/datastore/DeleteDatastoreDialog.js.map +1 -0
  91. package/datastore/FieldValueControl.d.ts +55 -0
  92. package/datastore/FieldValueControl.d.ts.map +1 -0
  93. package/datastore/FieldValueControl.js +138 -0
  94. package/datastore/FieldValueControl.js.map +1 -0
  95. package/datastore/RecordFilterBuilder.d.ts +37 -0
  96. package/datastore/RecordFilterBuilder.d.ts.map +1 -0
  97. package/datastore/RecordFilterBuilder.js +122 -0
  98. package/datastore/RecordFilterBuilder.js.map +1 -0
  99. package/datastore/RecordFormPanel.d.ts +45 -0
  100. package/datastore/RecordFormPanel.d.ts.map +1 -0
  101. package/datastore/RecordFormPanel.js +215 -0
  102. package/datastore/RecordFormPanel.js.map +1 -0
  103. package/datastore/index.d.ts +43 -0
  104. package/datastore/index.d.ts.map +1 -0
  105. package/datastore/index.js +22 -0
  106. package/datastore/index.js.map +1 -0
  107. package/datastore/recordFilter.d.ts +62 -0
  108. package/datastore/recordFilter.d.ts.map +1 -0
  109. package/datastore/recordFilter.js +104 -0
  110. package/datastore/recordFilter.js.map +1 -0
  111. package/datastore/recordValues.d.ts +85 -0
  112. package/datastore/recordValues.d.ts.map +1 -0
  113. package/datastore/recordValues.js +282 -0
  114. package/datastore/recordValues.js.map +1 -0
  115. package/datastore/useDatastore.d.ts +39 -0
  116. package/datastore/useDatastore.d.ts.map +1 -0
  117. package/datastore/useDatastore.js +44 -0
  118. package/datastore/useDatastore.js.map +1 -0
  119. package/datastore/useDatastoreCount.d.ts +48 -0
  120. package/datastore/useDatastoreCount.d.ts.map +1 -0
  121. package/datastore/useDatastoreCount.js +27 -0
  122. package/datastore/useDatastoreCount.js.map +1 -0
  123. package/datastore/useDatastoreDescription.d.ts +54 -0
  124. package/datastore/useDatastoreDescription.d.ts.map +1 -0
  125. package/datastore/useDatastoreDescription.js +50 -0
  126. package/datastore/useDatastoreDescription.js.map +1 -0
  127. package/datastore/useDatastoreList.d.ts +57 -0
  128. package/datastore/useDatastoreList.d.ts.map +1 -0
  129. package/datastore/useDatastoreList.js +29 -0
  130. package/datastore/useDatastoreList.js.map +1 -0
  131. package/datastore/useDatastoreSearch.d.ts +19 -0
  132. package/datastore/useDatastoreSearch.d.ts.map +1 -0
  133. package/datastore/useDatastoreSearch.js +22 -0
  134. package/datastore/useDatastoreSearch.js.map +1 -0
  135. package/datastore/useDeleteDatastore.d.ts +53 -0
  136. package/datastore/useDeleteDatastore.d.ts.map +1 -0
  137. package/datastore/useDeleteDatastore.js +40 -0
  138. package/datastore/useDeleteDatastore.js.map +1 -0
  139. package/datastore/useDeleteRecord.d.ts +34 -0
  140. package/datastore/useDeleteRecord.d.ts.map +1 -0
  141. package/datastore/useDeleteRecord.js +43 -0
  142. package/datastore/useDeleteRecord.js.map +1 -0
  143. package/datastore/useInsertRecord.d.ts +50 -0
  144. package/datastore/useInsertRecord.d.ts.map +1 -0
  145. package/datastore/useInsertRecord.js +55 -0
  146. package/datastore/useInsertRecord.js.map +1 -0
  147. package/datastore/useRecordCollection.d.ts +104 -0
  148. package/datastore/useRecordCollection.d.ts.map +1 -0
  149. package/datastore/useRecordCollection.js +136 -0
  150. package/datastore/useRecordCollection.js.map +1 -0
  151. package/datastore/useRecordList.d.ts +66 -0
  152. package/datastore/useRecordList.d.ts.map +1 -0
  153. package/datastore/useRecordList.js +58 -0
  154. package/datastore/useRecordList.js.map +1 -0
  155. package/datastore/useUpdateRecord.d.ts +52 -0
  156. package/datastore/useUpdateRecord.d.ts.map +1 -0
  157. package/datastore/useUpdateRecord.js +55 -0
  158. package/datastore/useUpdateRecord.js.map +1 -0
  159. package/environment/EnvironmentListPanel.d.ts.map +1 -1
  160. package/environment/EnvironmentListPanel.js +12 -7
  161. package/environment/EnvironmentListPanel.js.map +1 -1
  162. package/execution/ExecutionProgress.d.ts.map +1 -1
  163. package/execution/ExecutionProgress.js +13 -4
  164. package/execution/ExecutionProgress.js.map +1 -1
  165. package/execution/MessageThread.d.ts.map +1 -1
  166. package/execution/MessageThread.js +10 -2
  167. package/execution/MessageThread.js.map +1 -1
  168. package/execution/useCreateAgentExecution.d.ts +31 -1
  169. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  170. package/execution/useCreateAgentExecution.js +2 -0
  171. package/execution/useCreateAgentExecution.js.map +1 -1
  172. package/iam-policy/index.d.ts +1 -1
  173. package/iam-policy/index.d.ts.map +1 -1
  174. package/iam-policy/index.js.map +1 -1
  175. package/iam-policy/useCheckPermission.d.ts +32 -11
  176. package/iam-policy/useCheckPermission.d.ts.map +1 -1
  177. package/iam-policy/useCheckPermission.js +24 -19
  178. package/iam-policy/useCheckPermission.js.map +1 -1
  179. package/index.d.ts +12 -4
  180. package/index.d.ts.map +1 -1
  181. package/index.js +18 -3
  182. package/index.js.map +1 -1
  183. package/internal/form-primitives.d.ts +10 -0
  184. package/internal/form-primitives.d.ts.map +1 -0
  185. package/internal/form-primitives.js +15 -0
  186. package/internal/form-primitives.js.map +1 -0
  187. package/library/index.d.ts +0 -7
  188. package/library/index.d.ts.map +1 -1
  189. package/library/index.js +0 -4
  190. package/library/index.js.map +1 -1
  191. package/library/useApplyResource.d.ts +12 -12
  192. package/library/useApplyResource.d.ts.map +1 -1
  193. package/library/useApplyResource.js +16 -25
  194. package/library/useApplyResource.js.map +1 -1
  195. package/library/useExportResource.d.ts +13 -9
  196. package/library/useExportResource.d.ts.map +1 -1
  197. package/library/useExportResource.js +18 -36
  198. package/library/useExportResource.js.map +1 -1
  199. package/manifest/ApplyManifestDialog.d.ts +48 -0
  200. package/manifest/ApplyManifestDialog.d.ts.map +1 -0
  201. package/manifest/ApplyManifestDialog.js +135 -0
  202. package/manifest/ApplyManifestDialog.js.map +1 -0
  203. package/manifest/EditResourceYamlDialog.d.ts +51 -0
  204. package/manifest/EditResourceYamlDialog.d.ts.map +1 -0
  205. package/manifest/EditResourceYamlDialog.js +104 -0
  206. package/manifest/EditResourceYamlDialog.js.map +1 -0
  207. package/manifest/RedactedSecretsNotice.d.ts +14 -0
  208. package/manifest/RedactedSecretsNotice.d.ts.map +1 -0
  209. package/manifest/RedactedSecretsNotice.js +14 -0
  210. package/manifest/RedactedSecretsNotice.js.map +1 -0
  211. package/manifest/YamlEditor.d.ts +44 -0
  212. package/manifest/YamlEditor.d.ts.map +1 -0
  213. package/manifest/YamlEditor.js +216 -0
  214. package/manifest/YamlEditor.js.map +1 -0
  215. package/manifest/index.d.ts +13 -0
  216. package/manifest/index.d.ts.map +1 -0
  217. package/manifest/index.js +13 -0
  218. package/manifest/index.js.map +1 -0
  219. package/manifest/useApplyManifest.d.ts +82 -0
  220. package/manifest/useApplyManifest.d.ts.map +1 -0
  221. package/manifest/useApplyManifest.js +180 -0
  222. package/manifest/useApplyManifest.js.map +1 -0
  223. package/manifest/useEditResourceYaml.d.ts +106 -0
  224. package/manifest/useEditResourceYaml.d.ts.map +1 -0
  225. package/manifest/useEditResourceYaml.js +168 -0
  226. package/manifest/useEditResourceYaml.js.map +1 -0
  227. package/mcp-server/steps/ReviewStep.d.ts.map +1 -1
  228. package/mcp-server/steps/ReviewStep.js +2 -3
  229. package/mcp-server/steps/ReviewStep.js.map +1 -1
  230. package/package.json +4 -4
  231. package/pricing-governance/BaselineEditor.d.ts +9 -0
  232. package/pricing-governance/BaselineEditor.d.ts.map +1 -0
  233. package/pricing-governance/BaselineEditor.js +270 -0
  234. package/pricing-governance/BaselineEditor.js.map +1 -0
  235. package/pricing-governance/ModelCatalogPanel.d.ts +28 -0
  236. package/pricing-governance/ModelCatalogPanel.d.ts.map +1 -0
  237. package/pricing-governance/ModelCatalogPanel.js +102 -0
  238. package/pricing-governance/ModelCatalogPanel.js.map +1 -0
  239. package/pricing-governance/ModelGovernanceDetail.d.ts +8 -0
  240. package/pricing-governance/ModelGovernanceDetail.d.ts.map +1 -0
  241. package/pricing-governance/ModelGovernanceDetail.js +64 -0
  242. package/pricing-governance/ModelGovernanceDetail.js.map +1 -0
  243. package/pricing-governance/OperatorAccessNotice.d.ts +12 -0
  244. package/pricing-governance/OperatorAccessNotice.d.ts.map +1 -0
  245. package/pricing-governance/OperatorAccessNotice.js +15 -0
  246. package/pricing-governance/OperatorAccessNotice.js.map +1 -0
  247. package/pricing-governance/PricingGovernanceConsole.d.ts +57 -0
  248. package/pricing-governance/PricingGovernanceConsole.d.ts.map +1 -0
  249. package/pricing-governance/PricingGovernanceConsole.js +164 -0
  250. package/pricing-governance/PricingGovernanceConsole.js.map +1 -0
  251. package/pricing-governance/PricingGovernancePanel.d.ts +26 -0
  252. package/pricing-governance/PricingGovernancePanel.d.ts.map +1 -0
  253. package/pricing-governance/PricingGovernancePanel.js +64 -0
  254. package/pricing-governance/PricingGovernancePanel.js.map +1 -0
  255. package/pricing-governance/RetireConfirm.d.ts +9 -0
  256. package/pricing-governance/RetireConfirm.d.ts.map +1 -0
  257. package/pricing-governance/RetireConfirm.js +19 -0
  258. package/pricing-governance/RetireConfirm.js.map +1 -0
  259. package/pricing-governance/governance-primitives.d.ts +33 -0
  260. package/pricing-governance/governance-primitives.d.ts.map +1 -0
  261. package/pricing-governance/governance-primitives.js +43 -0
  262. package/pricing-governance/governance-primitives.js.map +1 -0
  263. package/pricing-governance/index.d.ts +19 -0
  264. package/pricing-governance/index.d.ts.map +1 -0
  265. package/pricing-governance/index.js +20 -0
  266. package/pricing-governance/index.js.map +1 -0
  267. package/pricing-governance/pricing-format.d.ts +12 -0
  268. package/pricing-governance/pricing-format.d.ts.map +1 -0
  269. package/pricing-governance/pricing-format.js +50 -0
  270. package/pricing-governance/pricing-format.js.map +1 -0
  271. package/pricing-governance/useDecidePricingOverride.d.ts +46 -0
  272. package/pricing-governance/useDecidePricingOverride.d.ts.map +1 -0
  273. package/pricing-governance/useDecidePricingOverride.js +44 -0
  274. package/pricing-governance/useDecidePricingOverride.js.map +1 -0
  275. package/pricing-governance/useModelGovernanceView.d.ts +103 -0
  276. package/pricing-governance/useModelGovernanceView.d.ts.map +1 -0
  277. package/pricing-governance/useModelGovernanceView.js +144 -0
  278. package/pricing-governance/useModelGovernanceView.js.map +1 -0
  279. package/pricing-governance/useModelPricingBaselines.d.ts +40 -0
  280. package/pricing-governance/useModelPricingBaselines.d.ts.map +1 -0
  281. package/pricing-governance/useModelPricingBaselines.js +32 -0
  282. package/pricing-governance/useModelPricingBaselines.js.map +1 -0
  283. package/pricing-governance/usePricingGovernance.d.ts +39 -0
  284. package/pricing-governance/usePricingGovernance.d.ts.map +1 -0
  285. package/pricing-governance/usePricingGovernance.js +31 -0
  286. package/pricing-governance/usePricingGovernance.js.map +1 -0
  287. package/pricing-governance/useRetireModelPricingBaseline.d.ts +31 -0
  288. package/pricing-governance/useRetireModelPricingBaseline.d.ts.map +1 -0
  289. package/pricing-governance/useRetireModelPricingBaseline.js +36 -0
  290. package/pricing-governance/useRetireModelPricingBaseline.js.map +1 -0
  291. package/pricing-governance/useUpsertModelPricingBaseline.d.ts +38 -0
  292. package/pricing-governance/useUpsertModelPricingBaseline.d.ts.map +1 -0
  293. package/pricing-governance/useUpsertModelPricingBaseline.js +37 -0
  294. package/pricing-governance/useUpsertModelPricingBaseline.js.map +1 -0
  295. package/resource-creation/templates/workflow-templates.js +4 -4
  296. package/session/useCreateSession.d.ts +28 -0
  297. package/session/useCreateSession.d.ts.map +1 -1
  298. package/session/useCreateSession.js +2 -1
  299. package/session/useCreateSession.js.map +1 -1
  300. package/session/useEditSessionPrep.js +3 -3
  301. package/session/useEditSessionPrep.js.map +1 -1
  302. package/session/useNewSessionFlow.d.ts +30 -0
  303. package/session/useNewSessionFlow.d.ts.map +1 -1
  304. package/session/useNewSessionFlow.js +7 -1
  305. package/session/useNewSessionFlow.js.map +1 -1
  306. package/session/useUpdateSession.d.ts +29 -10
  307. package/session/useUpdateSession.d.ts.map +1 -1
  308. package/session/useUpdateSession.js +29 -10
  309. package/session/useUpdateSession.js.map +1 -1
  310. package/settings/index.d.ts +2 -1
  311. package/settings/index.d.ts.map +1 -1
  312. package/settings/index.js +2 -1
  313. package/settings/index.js.map +1 -1
  314. package/settings/settings-nav.d.ts +22 -0
  315. package/settings/settings-nav.d.ts.map +1 -1
  316. package/settings/settings-nav.js +32 -1
  317. package/settings/settings-nav.js.map +1 -1
  318. package/settings/useSettingsNavGroups.d.ts +29 -0
  319. package/settings/useSettingsNavGroups.d.ts.map +1 -0
  320. package/settings/useSettingsNavGroups.js +61 -0
  321. package/settings/useSettingsNavGroups.js.map +1 -0
  322. package/src/agent/steps/ReviewStep.tsx +2 -3
  323. package/src/billing/index.ts +5 -0
  324. package/src/channel/AgentChannelsPanel.tsx +27 -1
  325. package/src/composer/SessionComposer.tsx +1 -1
  326. package/src/cursor-accounts/CursorAccountEditor.tsx +229 -0
  327. package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +36 -0
  328. package/src/cursor-accounts/CursorAccountsConsole.tsx +454 -0
  329. package/src/cursor-accounts/MemberCoverageTable.tsx +439 -0
  330. package/src/cursor-accounts/MemberKeysPanel.tsx +278 -0
  331. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +680 -0
  332. package/src/cursor-accounts/__tests__/cursor-account-coverage.test.ts +73 -0
  333. package/src/cursor-accounts/badges.tsx +26 -0
  334. package/src/cursor-accounts/cursor-account-coverage.ts +71 -0
  335. package/src/cursor-accounts/cursor-account-format.ts +45 -0
  336. package/src/cursor-accounts/index.ts +29 -0
  337. package/src/cursor-accounts/useCursorAccountView.ts +49 -0
  338. package/src/cursor-accounts/useCursorAccounts.ts +49 -0
  339. package/src/cursor-accounts/useCursorMemberKeyActions.ts +106 -0
  340. package/src/cursor-accounts/useDeleteCursorAccount.ts +62 -0
  341. package/src/cursor-accounts/useSyncCursorAccount.ts +54 -0
  342. package/src/cursor-accounts/useUpsertCursorAccount.ts +57 -0
  343. package/src/datastore/CollectionRecordsBrowser.tsx +570 -0
  344. package/src/datastore/CollectionSchemaView.tsx +247 -0
  345. package/src/datastore/DatastoreDetailView.tsx +201 -0
  346. package/src/datastore/DatastoreSyncReport.tsx +105 -0
  347. package/src/datastore/DeleteDatastoreDialog.tsx +202 -0
  348. package/src/datastore/FieldValueControl.tsx +289 -0
  349. package/src/datastore/RecordFilterBuilder.tsx +422 -0
  350. package/src/datastore/RecordFormPanel.tsx +432 -0
  351. package/src/datastore/__tests__/CollectionRecordsBrowser.test.tsx +245 -0
  352. package/src/datastore/__tests__/DeleteDatastoreDialog.test.tsx +133 -0
  353. package/src/datastore/__tests__/FieldValueControl.test.tsx +160 -0
  354. package/src/datastore/__tests__/RecordFilterBuilder.test.tsx +155 -0
  355. package/src/datastore/__tests__/RecordFormPanel.test.tsx +227 -0
  356. package/src/datastore/__tests__/recordFilter.test.ts +169 -0
  357. package/src/datastore/__tests__/recordMutations.test.tsx +195 -0
  358. package/src/datastore/__tests__/recordValues.test.ts +359 -0
  359. package/src/datastore/__tests__/schemaAndSyncViews.test.tsx +142 -0
  360. package/src/datastore/__tests__/useDatastoreDescription.test.tsx +143 -0
  361. package/src/datastore/__tests__/useRecordCollection.test.tsx +250 -0
  362. package/src/datastore/__tests__/useRecordList.test.tsx +85 -0
  363. package/src/datastore/index.ts +111 -0
  364. package/src/datastore/recordFilter.ts +154 -0
  365. package/src/datastore/recordValues.ts +327 -0
  366. package/src/datastore/useDatastore.ts +67 -0
  367. package/src/datastore/useDatastoreCount.ts +67 -0
  368. package/src/datastore/useDatastoreDescription.ts +90 -0
  369. package/src/datastore/useDatastoreList.ts +79 -0
  370. package/src/datastore/useDatastoreSearch.ts +39 -0
  371. package/src/datastore/useDeleteDatastore.ts +87 -0
  372. package/src/datastore/useDeleteRecord.ts +77 -0
  373. package/src/datastore/useInsertRecord.ts +92 -0
  374. package/src/datastore/useRecordCollection.ts +256 -0
  375. package/src/datastore/useRecordList.ts +131 -0
  376. package/src/datastore/useUpdateRecord.ts +95 -0
  377. package/src/environment/EnvironmentListPanel.tsx +24 -0
  378. package/src/execution/ExecutionProgress.tsx +14 -4
  379. package/src/execution/MessageThread.tsx +10 -2
  380. package/src/execution/__tests__/ExecutionProgress.test.tsx +67 -0
  381. package/src/execution/__tests__/MessageThread.test.tsx +44 -0
  382. package/src/execution/__tests__/useArtifactInspection.test.tsx +12 -2
  383. package/src/execution/__tests__/useCreateAgentExecution.test.tsx +86 -0
  384. package/src/execution/useCreateAgentExecution.ts +41 -6
  385. package/src/iam-policy/__tests__/useCheckPermission.test.tsx +221 -0
  386. package/src/iam-policy/index.ts +1 -0
  387. package/src/iam-policy/useCheckPermission.ts +45 -19
  388. package/src/index.ts +172 -14
  389. package/src/internal/form-primitives.tsx +40 -0
  390. package/src/library/index.ts +0 -20
  391. package/src/library/useApplyResource.ts +27 -34
  392. package/src/library/useExportResource.ts +21 -40
  393. package/src/manifest/ApplyManifestDialog.tsx +315 -0
  394. package/src/manifest/EditResourceYamlDialog.tsx +265 -0
  395. package/src/manifest/RedactedSecretsNotice.tsx +30 -0
  396. package/src/manifest/YamlEditor.tsx +272 -0
  397. package/src/manifest/__tests__/EditResourceYamlDialog.test.tsx +118 -0
  398. package/src/manifest/__tests__/useApplyManifest.test.tsx +237 -0
  399. package/src/manifest/__tests__/useEditResourceYaml.test.tsx +252 -0
  400. package/src/manifest/index.ts +33 -0
  401. package/src/manifest/useApplyManifest.ts +270 -0
  402. package/src/manifest/useEditResourceYaml.ts +273 -0
  403. package/src/mcp-server/steps/ReviewStep.tsx +2 -3
  404. package/src/pricing-governance/BaselineEditor.tsx +652 -0
  405. package/src/pricing-governance/ModelCatalogPanel.tsx +283 -0
  406. package/src/pricing-governance/ModelGovernanceDetail.tsx +289 -0
  407. package/src/pricing-governance/OperatorAccessNotice.tsx +32 -0
  408. package/src/pricing-governance/PricingGovernanceConsole.tsx +465 -0
  409. package/src/pricing-governance/PricingGovernancePanel.tsx +166 -0
  410. package/src/pricing-governance/RetireConfirm.tsx +82 -0
  411. package/src/pricing-governance/__tests__/ModelCatalogPanel.test.tsx +253 -0
  412. package/src/pricing-governance/__tests__/PricingGovernanceConsole.test.tsx +410 -0
  413. package/src/pricing-governance/__tests__/useModelGovernanceView.test.tsx +308 -0
  414. package/src/pricing-governance/governance-primitives.tsx +133 -0
  415. package/src/pricing-governance/index.ts +50 -0
  416. package/src/pricing-governance/pricing-format.ts +53 -0
  417. package/src/pricing-governance/useDecidePricingOverride.ts +78 -0
  418. package/src/pricing-governance/useModelGovernanceView.ts +290 -0
  419. package/src/pricing-governance/useModelPricingBaselines.ts +69 -0
  420. package/src/pricing-governance/usePricingGovernance.ts +57 -0
  421. package/src/pricing-governance/useRetireModelPricingBaseline.ts +65 -0
  422. package/src/pricing-governance/useUpsertModelPricingBaseline.ts +72 -0
  423. package/src/resource-creation/templates/workflow-templates.ts +4 -4
  424. package/src/session/__tests__/useCreateSession.test.tsx +94 -0
  425. package/src/session/__tests__/useNewSessionFlow.test.tsx +33 -0
  426. package/src/session/useCreateSession.ts +30 -0
  427. package/src/session/useEditSessionPrep.ts +3 -3
  428. package/src/session/useNewSessionFlow.ts +45 -1
  429. package/src/session/useUpdateSession.ts +29 -10
  430. package/src/settings/__tests__/useSettingsNavGroups.test.tsx +138 -0
  431. package/src/settings/index.ts +5 -1
  432. package/src/settings/settings-nav.ts +43 -0
  433. package/src/settings/useSettingsNavGroups.ts +81 -0
  434. package/src/workflow/WorkflowYamlEditor.tsx +6 -270
  435. package/styles.css +1 -1
  436. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  437. package/workflow/WorkflowYamlEditor.d.ts +2 -42
  438. package/workflow/WorkflowYamlEditor.d.ts.map +1 -1
  439. package/workflow/WorkflowYamlEditor.js +5 -214
  440. package/workflow/WorkflowYamlEditor.js.map +1 -1
  441. package/library/ImportResourceDialog.d.ts +0 -43
  442. package/library/ImportResourceDialog.d.ts.map +0 -1
  443. package/library/ImportResourceDialog.js +0 -90
  444. package/library/ImportResourceDialog.js.map +0 -1
  445. package/library/parse-resource-yaml.d.ts +0 -63
  446. package/library/parse-resource-yaml.d.ts.map +0 -1
  447. package/library/parse-resource-yaml.js +0 -407
  448. package/library/parse-resource-yaml.js.map +0 -1
  449. package/library/serialize-resource-yaml.d.ts +0 -103
  450. package/library/serialize-resource-yaml.d.ts.map +0 -1
  451. package/library/serialize-resource-yaml.js +0 -565
  452. package/library/serialize-resource-yaml.js.map +0 -1
  453. package/library/useImportResource.d.ts +0 -84
  454. package/library/useImportResource.d.ts.map +0 -1
  455. package/library/useImportResource.js +0 -188
  456. package/library/useImportResource.js.map +0 -1
  457. package/src/library/ImportResourceDialog.tsx +0 -227
  458. package/src/library/parse-resource-yaml.ts +0 -630
  459. package/src/library/serialize-resource-yaml.ts +0 -756
  460. package/src/library/useImportResource.ts +0 -253
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn } from "@stigmer/theme";
4
+ /**
5
+ * The access-denied state for platform-operator pricing surfaces
6
+ * (governance + catalog panels). Server-side authorization
7
+ * (`can_manage_model_pricing` on `platform:stigmer`) is the real gate —
8
+ * this is the honest, designed face of that denial for anyone who
9
+ * navigates to an operator route without the permission, instead of a
10
+ * raw RPC error string.
11
+ */
12
+ export function OperatorAccessNotice({ className }) {
13
+ return (_jsxs("div", { className: cn("rounded-lg border border-border bg-card px-4 py-6 text-center", className), role: "status", children: [_jsx("p", { className: "text-xs font-semibold text-foreground", children: "Platform operator access required" }), _jsx("p", { className: "mx-auto mt-1 max-w-md text-xs text-muted-foreground", children: "Model pricing governance is a Stigmer-internal surface. It needs the platform operator role \u2014 organization roles do not grant it. If you believe you should have access, contact a platform operator." })] }));
14
+ }
15
+ //# sourceMappingURL=OperatorAccessNotice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperatorAccessNotice.js","sourceRoot":"","sources":["../../src/pricing-governance/OperatorAccessNotice.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,SAAS,EAAmC;IACjF,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,EACD,IAAI,EAAC,QAAQ,aAEb,YAAG,SAAS,EAAC,uCAAuC,kDAEhD,EACJ,YAAG,SAAS,EAAC,qDAAqD,2NAI9D,IACA,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Tab ids of {@link PricingGovernanceConsole}, accepted by
3
+ * {@link PricingGovernanceConsoleProps.defaultTab}.
4
+ *
5
+ * These ids are deep-link targets: consumers wire them from their own
6
+ * routing (e.g. a `?tab=sign-offs` query param), and external surfaces
7
+ * compose URLs against them. Renaming a member is a breaking change to
8
+ * every link in the wild, not just to this component's props.
9
+ */
10
+ export type PricingGovernanceTab = "models" | "sign-offs";
11
+ /** Props for {@link PricingGovernanceConsole}. */
12
+ export interface PricingGovernanceConsoleProps {
13
+ /** Additional CSS class names. */
14
+ readonly className?: string;
15
+ /**
16
+ * The tab shown on first render. Defaults to `"models"`.
17
+ *
18
+ * Read once at mount, like a form field's `defaultValue` — changing
19
+ * it afterwards has no effect, and the user's tab choice stays local
20
+ * (the console never writes it back anywhere). Wire it from routing
21
+ * to make the tab URL-addressable:
22
+ *
23
+ * ```tsx
24
+ * // e.g. honoring a ?tab=sign-offs deep link
25
+ * const tab = new URLSearchParams(window.location.search).get("tab");
26
+ * <PricingGovernanceConsole
27
+ * defaultTab={tab === "sign-offs" ? "sign-offs" : undefined}
28
+ * />
29
+ * ```
30
+ */
31
+ readonly defaultTab?: PricingGovernanceTab;
32
+ }
33
+ /**
34
+ * The platform-operator pricing console: a tabbed surface over the
35
+ * model registry baseline and the pricing feedback loop.
36
+ *
37
+ * - **Models** — every catalog entry joined with its governance state
38
+ * (effective vs baseline rates, ledger verification), searchable.
39
+ * Selecting a row opens a read-only detail record; editing (with an
40
+ * explicit old→new rate confirmation) and typed-confirmation
41
+ * retirement are deliberate steps from there.
42
+ * - **Sign-Offs** — pricing overrides proposed by reconciliation and
43
+ * awaiting a human decision, searchable; the tab badge shows the
44
+ * pending count from anywhere in the console.
45
+ *
46
+ * Requires `can_manage_model_pricing` on `platform:stigmer` — render it
47
+ * only in operator-scoped surfaces (non-operators see the designed
48
+ * access notice). Rates shown are raw provider prices (pre-markup),
49
+ * not customer prices.
50
+ *
51
+ * @example
52
+ * ```tsx
53
+ * <PricingGovernanceConsole />
54
+ * ```
55
+ */
56
+ export declare function PricingGovernanceConsole({ className, defaultTab, }: PricingGovernanceConsoleProps): import("react/jsx-runtime").JSX.Element;
57
+ //# sourceMappingURL=PricingGovernanceConsole.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingGovernanceConsole.d.ts","sourceRoot":"","sources":["../../src/pricing-governance/PricingGovernanceConsole.tsx"],"names":[],"mappings":"AAuBA;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE1D,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;CAC5C;AAOD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,UAAU,GACX,EAAE,6BAA6B,2CA+H/B"}
@@ -0,0 +1,164 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useState } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import { getUserMessage, isPermissionDenied } from "@stigmer/sdk";
6
+ import { Button } from "../button/index.js";
7
+ import { Tabs } from "../tabs/Tabs.js";
8
+ import { BaselineEditor } from "./BaselineEditor.js";
9
+ import { RetireConfirm } from "./RetireConfirm.js";
10
+ import { ModelGovernanceDetail } from "./ModelGovernanceDetail.js";
11
+ import { OperatorAccessNotice } from "./OperatorAccessNotice.js";
12
+ import { GovernanceBadge, PendingOverrideCard, RateCell } from "./governance-primitives.js";
13
+ import { INPUT_CLASSES } from "../internal/form-primitives.js";
14
+ import { ZERO } from "./pricing-format.js";
15
+ import { useDecidePricingOverride } from "./useDecidePricingOverride.js";
16
+ import { useRetireModelPricingBaseline } from "./useRetireModelPricingBaseline.js";
17
+ import { useUpsertModelPricingBaseline } from "./useUpsertModelPricingBaseline.js";
18
+ import { useModelGovernanceView, } from "./useModelGovernanceView.js";
19
+ const TABS = [
20
+ { id: "models", label: "Models" },
21
+ { id: "sign-offs", label: "Sign-Offs" },
22
+ ];
23
+ /**
24
+ * The platform-operator pricing console: a tabbed surface over the
25
+ * model registry baseline and the pricing feedback loop.
26
+ *
27
+ * - **Models** — every catalog entry joined with its governance state
28
+ * (effective vs baseline rates, ledger verification), searchable.
29
+ * Selecting a row opens a read-only detail record; editing (with an
30
+ * explicit old→new rate confirmation) and typed-confirmation
31
+ * retirement are deliberate steps from there.
32
+ * - **Sign-Offs** — pricing overrides proposed by reconciliation and
33
+ * awaiting a human decision, searchable; the tab badge shows the
34
+ * pending count from anywhere in the console.
35
+ *
36
+ * Requires `can_manage_model_pricing` on `platform:stigmer` — render it
37
+ * only in operator-scoped surfaces (non-operators see the designed
38
+ * access notice). Rates shown are raw provider prices (pre-markup),
39
+ * not customer prices.
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * <PricingGovernanceConsole />
44
+ * ```
45
+ */
46
+ export function PricingGovernanceConsole({ className, defaultTab, }) {
47
+ const view = useModelGovernanceView();
48
+ // Seeded once from `defaultTab`, then owned locally (see the prop's
49
+ // JSDoc). The membership check is a public-API boundary guard: a JS
50
+ // consumer passing an out-of-union string must land on Models, not on
51
+ // a tabless surface.
52
+ const [activeTab, setActiveTab] = useState(() => defaultTab !== undefined && TABS.some((t) => t.id === defaultTab)
53
+ ? defaultTab
54
+ : "models");
55
+ const { decide, isSubmitting: isDeciding, error: decisionError } = useDecidePricingOverride();
56
+ const { upsert, isSubmitting: isUpserting, error: upsertError, clearError: clearUpsertError } = useUpsertModelPricingBaseline();
57
+ const { retire, isSubmitting: isRetiring, error: retireError, clearError: clearRetireError } = useRetireModelPricingBaseline();
58
+ const handleDecide = useCallback(async (overrideId, approve) => {
59
+ try {
60
+ await decide({ overrideId, approve });
61
+ // A decision changes both the pending queue and (on approval)
62
+ // the effective rates — reload the whole view.
63
+ view.refetch();
64
+ }
65
+ catch {
66
+ // Surfaced via decisionError below.
67
+ }
68
+ }, [decide, view.refetch]);
69
+ const handleUpsert = useCallback(async (baseline, revisionNote) => {
70
+ await upsert({ baseline, revisionNote: revisionNote || undefined });
71
+ view.refetch();
72
+ // An edit lands back on the (refreshed) detail; a create lands on
73
+ // the list — the new row's key is derivable but focusing it before
74
+ // the refetch resolves would show stale data.
75
+ if (view.flow.phase === "detail")
76
+ view.backToDetail();
77
+ else
78
+ view.backToList();
79
+ }, [upsert, view.refetch, view.flow.phase, view.backToDetail, view.backToList]);
80
+ const handleCancelEdit = useCallback(() => {
81
+ clearUpsertError();
82
+ if (view.flow.phase === "detail")
83
+ view.backToDetail();
84
+ else
85
+ view.backToList();
86
+ }, [clearUpsertError, view.flow.phase, view.backToDetail, view.backToList]);
87
+ const handleRetire = useCallback(async (target, revisionNote) => {
88
+ await retire({
89
+ modelId: target.modelId,
90
+ provider: target.provider,
91
+ harness: target.harness,
92
+ revisionNote: revisionNote || undefined,
93
+ });
94
+ view.refetch();
95
+ view.backToList();
96
+ }, [retire, view.refetch, view.backToList]);
97
+ const handleCancelRetire = useCallback(() => {
98
+ clearRetireError();
99
+ view.backToDetail();
100
+ }, [clearRetireError, view.backToDetail]);
101
+ if (view.isLoading) {
102
+ return (_jsxs("div", { className: cn("space-y-2", className), "aria-busy": "true", children: [_jsx("div", { className: "h-4 w-40 animate-pulse rounded bg-muted-subtle" }), Array.from({ length: 4 }, (_, i) => (_jsx("div", { className: "h-10 animate-pulse rounded-lg bg-muted-subtle" }, i)))] }));
103
+ }
104
+ if (view.error) {
105
+ // A non-operator landing here is expected (the route is reachable by
106
+ // URL) — show the designed access notice, not a raw RPC error.
107
+ if (isPermissionDenied(view.error)) {
108
+ return _jsx(OperatorAccessNotice, { className: className });
109
+ }
110
+ return (_jsx("p", { className: cn("text-destructive text-xs", className), role: "alert", children: getUserMessage(view.error) }));
111
+ }
112
+ return (_jsx(Tabs, { className: className, tabs: [
113
+ TABS[0],
114
+ { ...TABS[1], badge: view.pendingCount },
115
+ ], activeTab: activeTab, onTabChange: (id) => setActiveTab(id), "aria-label": "Pricing governance sections", children: activeTab === "models" ? (_jsx(ModelsTab, { view: view, isUpserting: isUpserting, upsertError: upsertError, onUpsert: handleUpsert, onCancelEdit: handleCancelEdit, isRetiring: isRetiring, retireError: retireError, onRetire: handleRetire, onCancelRetire: handleCancelRetire })) : (_jsx(SignOffsTab, { view: view, isDeciding: isDeciding, decisionError: decisionError, onDecide: handleDecide })) }));
116
+ }
117
+ // ---------------------------------------------------------------------------
118
+ // ModelsTab (internal)
119
+ // ---------------------------------------------------------------------------
120
+ function ModelsTab({ view, isUpserting, upsertError, onUpsert, onCancelEdit, isRetiring, retireError, onRetire, onCancelRetire, }) {
121
+ const { flow, selected } = view;
122
+ if (flow.phase === "create") {
123
+ return (_jsx(BaselineEditor, { initial: null, isSubmitting: isUpserting, submitError: upsertError, onSubmit: onUpsert, onCancel: onCancelEdit }));
124
+ }
125
+ // A stale detail key (e.g. the model was just retired) falls through
126
+ // to the list rather than rendering an empty record.
127
+ if (flow.phase === "detail" && selected) {
128
+ if (flow.mode === "edit") {
129
+ return (_jsx(BaselineEditor, { initial: selected.baseline, isSubmitting: isUpserting, submitError: upsertError, onSubmit: onUpsert, onCancel: onCancelEdit }));
130
+ }
131
+ if (flow.mode === "retire") {
132
+ return (_jsx(RetireConfirm, { target: selected.baseline, isSubmitting: isRetiring, submitError: retireError, onConfirm: onRetire, onCancel: onCancelRetire }));
133
+ }
134
+ return (_jsx(ModelGovernanceDetail, { row: selected, onEdit: view.openEdit, onRetire: view.openRetire, onBack: view.backToList }));
135
+ }
136
+ return (_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsx("input", { type: "search", className: cn(INPUT_CLASSES, "max-w-xs"), value: view.modelQuery, onChange: (e) => view.setModelQuery(e.target.value), placeholder: "Search models\u2026", "aria-label": "Search models" }), _jsx(Button, { size: "sm", onClick: view.openCreate, children: "Add model" })] }), _jsxs("div", { className: "rounded-lg border border-border bg-card", children: [_jsxs("div", { "aria-hidden": "true", className: "grid grid-cols-[2fr_1fr_1fr_1fr_0.7fr_1fr] gap-2 border-b border-border px-3 py-2 text-[11px] font-medium text-muted-foreground", children: [_jsx("span", { children: "Model" }), _jsx("span", { children: "Harness" }), _jsx("span", { className: "text-right", children: "Input" }), _jsx("span", { className: "text-right", children: "Output" }), _jsx("span", { className: "text-right", children: "Variants" }), _jsx("span", { className: "text-right", children: "Governance" })] }), view.models.length === 0 ? (_jsx("p", { className: "px-3 py-2 text-xs text-muted-foreground", children: view.modelQuery.trim() !== ""
137
+ ? `No models match "${view.modelQuery.trim()}".`
138
+ : "The catalog is empty — has the baseline seed migration run?" })) : (_jsx("ul", { role: "list", "aria-label": "Models", className: "m-0 list-none p-0", children: view.models.map((row) => (_jsx(ModelRow, { row: row, onOpen: () => view.openDetail(row.key) }, row.key))) }))] })] }));
139
+ }
140
+ /**
141
+ * One model row: a real button (keyboard + AT support for "open the
142
+ * record" for free) laid out on the shared column grid. Its full text
143
+ * content is its accessible name, so AT users hear the same facts the
144
+ * columns show.
145
+ */
146
+ function ModelRow({ row, onOpen, }) {
147
+ const { baseline, governance } = row;
148
+ const variantCount = Object.keys(baseline.pricingVariants).length;
149
+ const hasOverrides = (governance?.activeOverrides.length ?? 0) > 0;
150
+ return (_jsx("li", { className: "border-b border-border last:border-b-0", children: _jsxs("button", { type: "button", onClick: onOpen, className: cn("grid w-full grid-cols-[2fr_1fr_1fr_1fr_0.7fr_1fr] items-center gap-2 px-3 py-2 text-left text-xs", "transition-colors hover:bg-accent", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"), children: [_jsxs("span", { className: "min-w-0", children: [_jsx("span", { className: "block truncate font-medium text-foreground", title: baseline.modelId, children: baseline.displayName || baseline.modelId }), _jsxs("span", { className: "block truncate text-[11px] text-muted-foreground", children: [baseline.modelId, baseline.featured ? " · featured" : ""] })] }), _jsx("span", { className: "text-muted-foreground", children: baseline.harness }), _jsx(RateCell, { baseline: baseline.pricing?.inputPriceMicrosPerMillion ?? ZERO, effective: governance?.effectiveInputMicrosPerMillion ??
151
+ baseline.pricing?.inputPriceMicrosPerMillion ??
152
+ ZERO }), _jsx(RateCell, { baseline: baseline.pricing?.outputPriceMicrosPerMillion ?? ZERO, effective: governance?.effectiveOutputMicrosPerMillion ??
153
+ baseline.pricing?.outputPriceMicrosPerMillion ??
154
+ ZERO }), _jsx("span", { className: "text-right text-muted-foreground", children: variantCount > 0 ? variantCount : "—" }), _jsx("span", { className: "text-right", children: governance ? (_jsx(GovernanceBadge, { ledgerReconcilable: governance.ledgerReconcilable, hasOverrides: hasOverrides })) : (_jsx("span", { className: "text-[10px] text-muted-foreground", children: "\u2014" })) })] }) }));
155
+ }
156
+ // ---------------------------------------------------------------------------
157
+ // SignOffsTab (internal)
158
+ // ---------------------------------------------------------------------------
159
+ function SignOffsTab({ view, isDeciding, decisionError, onDecide, }) {
160
+ return (_jsxs("div", { className: "space-y-3", children: [_jsx("input", { type: "search", className: cn(INPUT_CLASSES, "max-w-xs"), value: view.signOffQuery, onChange: (e) => view.setSignOffQuery(e.target.value), placeholder: "Search sign-offs\u2026", "aria-label": "Search sign-offs" }), decisionError && (_jsx("p", { className: "text-destructive text-xs", role: "alert", children: getUserMessage(decisionError) })), view.pendingOverrides.length === 0 ? (_jsx("p", { className: "text-xs text-muted-foreground", children: view.signOffQuery.trim() !== ""
161
+ ? `No pending sign-offs match "${view.signOffQuery.trim()}".`
162
+ : "No pricing overrides awaiting a decision." })) : (_jsx("div", { className: "space-y-2", children: view.pendingOverrides.map((override) => (_jsx(PendingOverrideCard, { override: override, isSubmitting: isDeciding, onDecide: onDecide }, override.overrideId))) }))] }));
163
+ }
164
+ //# sourceMappingURL=PricingGovernanceConsole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingGovernanceConsole.js","sourceRoot":"","sources":["../../src/pricing-governance/PricingGovernanceConsole.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /** Props for {@link PricingGovernancePanel}. */
2
+ export interface PricingGovernancePanelProps {
3
+ /** Additional CSS class names. */
4
+ readonly className?: string;
5
+ }
6
+ /**
7
+ * Platform-operator panel for the pricing feedback loop: pending
8
+ * override sign-offs (approve/reject) and the effective-vs-baseline
9
+ * pricing state of every model.
10
+ *
11
+ * Prefer {@link PricingGovernanceConsole} for new surfaces — it
12
+ * composes this panel's content with the model catalog into one tabbed
13
+ * console. This standalone panel remains for consumers embedding just
14
+ * the governance view.
15
+ *
16
+ * Requires `can_manage_model_pricing` on `platform:stigmer` — render it
17
+ * only in operator-scoped surfaces. Rates shown are raw provider prices
18
+ * (pre-markup), not customer prices.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * <PricingGovernancePanel />
23
+ * ```
24
+ */
25
+ export declare function PricingGovernancePanel({ className }: PricingGovernancePanelProps): import("react/jsx-runtime").JSX.Element | null;
26
+ //# sourceMappingURL=PricingGovernancePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingGovernancePanel.d.ts","sourceRoot":"","sources":["../../src/pricing-governance/PricingGovernancePanel.tsx"],"names":[],"mappings":"AAYA,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,EAAE,2BAA2B,kDA8FhF"}
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn } from "@stigmer/theme";
4
+ import { getUserMessage, isPermissionDenied } from "@stigmer/sdk";
5
+ import { OperatorAccessNotice } from "./OperatorAccessNotice.js";
6
+ import { GovernanceBadge, PendingOverrideCard, RateCell } from "./governance-primitives.js";
7
+ import { usePricingGovernance } from "./usePricingGovernance.js";
8
+ import { useDecidePricingOverride } from "./useDecidePricingOverride.js";
9
+ /**
10
+ * Platform-operator panel for the pricing feedback loop: pending
11
+ * override sign-offs (approve/reject) and the effective-vs-baseline
12
+ * pricing state of every model.
13
+ *
14
+ * Prefer {@link PricingGovernanceConsole} for new surfaces — it
15
+ * composes this panel's content with the model catalog into one tabbed
16
+ * console. This standalone panel remains for consumers embedding just
17
+ * the governance view.
18
+ *
19
+ * Requires `can_manage_model_pricing` on `platform:stigmer` — render it
20
+ * only in operator-scoped surfaces. Rates shown are raw provider prices
21
+ * (pre-markup), not customer prices.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * <PricingGovernancePanel />
26
+ * ```
27
+ */
28
+ export function PricingGovernancePanel({ className }) {
29
+ const { governance, isLoading, error, refetch } = usePricingGovernance();
30
+ const { decide, isSubmitting, error: decisionError } = useDecidePricingOverride();
31
+ if (isLoading) {
32
+ return (_jsxs("div", { className: cn("space-y-2", className), "aria-busy": "true", children: [_jsx("div", { className: "h-4 w-40 animate-pulse rounded bg-muted-subtle" }), Array.from({ length: 4 }, (_, i) => (_jsx("div", { className: "h-10 animate-pulse rounded-lg bg-muted-subtle" }, i)))] }));
33
+ }
34
+ if (error) {
35
+ // A non-operator landing here is expected (the route is reachable by
36
+ // URL) — show the designed access notice, not a raw RPC error.
37
+ if (isPermissionDenied(error)) {
38
+ return _jsx(OperatorAccessNotice, { className: className });
39
+ }
40
+ return (_jsx("p", { className: cn("text-destructive text-xs", className), role: "alert", children: getUserMessage(error) }));
41
+ }
42
+ if (!governance)
43
+ return null;
44
+ const onDecide = async (overrideId, approve) => {
45
+ try {
46
+ await decide({ overrideId, approve });
47
+ // A decision changes both the pending queue and (on approval) the
48
+ // effective rates — reload the whole view.
49
+ refetch();
50
+ }
51
+ catch {
52
+ // Surfaced via decisionError below.
53
+ }
54
+ };
55
+ return (_jsxs("div", { className: cn("space-y-6", className), children: [_jsxs("section", { "aria-label": "Pending pricing override proposals", children: [_jsx("h3", { className: "mb-2 text-xs font-semibold text-foreground", children: "Pending Sign-Offs" }), decisionError && (_jsx("p", { className: "mb-2 text-destructive text-xs", role: "alert", children: getUserMessage(decisionError) })), governance.pendingOverrides.length === 0 ? (_jsx("p", { className: "text-xs text-muted-foreground", children: "No pricing overrides awaiting a decision." })) : (_jsx("div", { className: "space-y-2", children: governance.pendingOverrides.map((override) => (_jsx(PendingOverrideCard, { override: override, isSubmitting: isSubmitting, onDecide: onDecide }, override.overrideId))) }))] }), _jsxs("section", { "aria-label": "Model pricing state", children: [_jsx("h3", { className: "mb-2 text-xs font-semibold text-foreground", children: "Model Pricing" }), _jsxs("div", { className: "rounded-lg border border-border bg-card", role: "table", "aria-label": "Model pricing governance", children: [_jsxs("div", { role: "row", className: "grid grid-cols-[2fr_1fr_1fr_1fr_1fr] gap-2 border-b border-border px-3 py-2 text-[11px] font-medium text-muted-foreground", children: [_jsx("span", { role: "columnheader", children: "Model" }), _jsx("span", { role: "columnheader", children: "Harness" }), _jsx("span", { role: "columnheader", className: "text-right", children: "Input" }), _jsx("span", { role: "columnheader", className: "text-right", children: "Output" }), _jsx("span", { role: "columnheader", className: "text-right", children: "Governance" })] }), governance.entries.map((entry) => (_jsx(GovernanceRow, { entry: entry }, `${entry.modelId}-${entry.harness}-${entry.variant}`)))] })] })] }));
56
+ }
57
+ // ---------------------------------------------------------------------------
58
+ // GovernanceRow (internal)
59
+ // ---------------------------------------------------------------------------
60
+ function GovernanceRow({ entry }) {
61
+ const hasOverrides = entry.activeOverrides.length > 0;
62
+ return (_jsxs("div", { role: "row", className: "grid grid-cols-[2fr_1fr_1fr_1fr_1fr] items-center gap-2 border-b border-border px-3 py-2 text-xs last:border-b-0", children: [_jsx("span", { role: "cell", className: "truncate font-medium text-foreground", title: entry.modelId, children: entry.displayName || entry.modelId }), _jsx("span", { role: "cell", className: "text-muted-foreground", children: entry.harness }), _jsx(RateCell, { role: "cell", baseline: entry.baselineInputMicrosPerMillion, effective: entry.effectiveInputMicrosPerMillion }), _jsx(RateCell, { role: "cell", baseline: entry.baselineOutputMicrosPerMillion, effective: entry.effectiveOutputMicrosPerMillion }), _jsx("span", { role: "cell", className: "text-right", children: _jsx(GovernanceBadge, { ledgerReconcilable: entry.ledgerReconcilable, hasOverrides: hasOverrides }) })] }));
63
+ }
64
+ //# sourceMappingURL=PricingGovernancePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingGovernancePanel.js","sourceRoot":"","sources":["../../src/pricing-governance/PricingGovernancePanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ModelPricingBaseline } from "@stigmer/protos/ai/stigmer/billing/v1/model_pricing_baseline_pb";
2
+ export declare function RetireConfirm({ target, isSubmitting, submitError, onConfirm, onCancel, }: {
3
+ readonly target: ModelPricingBaseline;
4
+ readonly isSubmitting: boolean;
5
+ readonly submitError: Error | null;
6
+ readonly onConfirm: (target: ModelPricingBaseline, revisionNote: string) => Promise<void>;
7
+ readonly onCancel: () => void;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=RetireConfirm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetireConfirm.d.ts","sourceRoot":"","sources":["../../src/pricing-governance/RetireConfirm.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAC;AAW5G,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,YAAY,EACZ,WAAW,EACX,SAAS,EACT,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC/B,2CAsDA"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import { getUserMessage } from "@stigmer/sdk";
5
+ import { Button } from "../button/index.js";
6
+ import { INPUT_CLASSES } from "../internal/form-primitives.js";
7
+ // ---------------------------------------------------------------------------
8
+ // RetireConfirm — typed confirmation for retiring a catalog entry (a
9
+ // destructive, billing-visible action). Internal to the billing module:
10
+ // rendered by PricingGovernanceConsole and ModelCatalogPanel, never
11
+ // exported from the barrel.
12
+ // ---------------------------------------------------------------------------
13
+ export function RetireConfirm({ target, isSubmitting, submitError, onConfirm, onCancel, }) {
14
+ const [typed, setTyped] = useState("");
15
+ const [note, setNote] = useState("");
16
+ const confirmed = typed === target.modelId;
17
+ return (_jsxs("div", { className: "space-y-2 rounded-lg border border-destructive bg-card px-3 py-3", children: [_jsxs("h4", { className: "text-xs font-semibold text-foreground", children: ["Retire ", target.displayName || target.modelId, "?"] }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["The model disappears from every price surface (billing lookups, model pickers, the served registry) and any active pricing overrides on it are archived. The revision history is kept, and the key can be revived by a later upsert. Type ", _jsx("span", { className: "font-medium text-foreground", children: target.modelId }), " ", "to confirm."] }), _jsxs("div", { className: "grid grid-cols-2 gap-2", children: [_jsx("input", { className: INPUT_CLASSES, value: typed, onChange: (e) => setTyped(e.target.value), placeholder: target.modelId, disabled: isSubmitting, "aria-label": "Type the model id to confirm retirement" }), _jsx("input", { className: INPUT_CLASSES, value: note, onChange: (e) => setNote(e.target.value), placeholder: "Reason (audit trail)", disabled: isSubmitting })] }), submitError && (_jsx("p", { className: "text-destructive text-xs", role: "alert", children: getUserMessage(submitError) })), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { size: "sm", variant: "destructive", disabled: !confirmed || isSubmitting, onClick: () => onConfirm(target, note.trim()).catch(() => undefined), children: isSubmitting ? "Retiring…" : "Retire model" }), _jsx(Button, { size: "sm", variant: "outline", disabled: isSubmitting, onClick: onCancel, children: "Cancel" })] })] }));
18
+ }
19
+ //# sourceMappingURL=RetireConfirm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetireConfirm.js","sourceRoot":"","sources":["../../src/pricing-governance/RetireConfirm.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,8EAA8E;AAC9E,qEAAqE;AACrE,wEAAwE;AACxE,oEAAoE;AACpE,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,YAAY,EACZ,WAAW,EACX,SAAS,EACT,QAAQ,GAOT;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,KAAK,MAAM,CAAC,OAAO,CAAC;IAE3C,OAAO,CACL,eAAK,SAAS,EAAC,kEAAkE,aAC/E,cAAI,SAAS,EAAC,uCAAuC,wBAC3C,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,SACzC,EACL,aAAG,SAAS,EAAC,+BAA+B,2PAIvB,eAAM,SAAS,EAAC,6BAA6B,YAAE,MAAM,CAAC,OAAO,GAAQ,EAAC,GAAG,mBAE1F,EACJ,eAAK,SAAS,EAAC,wBAAwB,aACrC,gBACE,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,WAAW,EAAE,MAAM,CAAC,OAAO,EAC3B,QAAQ,EAAE,YAAY,gBACX,yCAAyC,GACpD,EACF,gBACE,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxC,WAAW,EAAC,sBAAsB,EAClC,QAAQ,EAAE,YAAY,GACtB,IACE,EACL,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,0BAA0B,EAAC,IAAI,EAAC,OAAO,YACjD,cAAc,CAAC,WAAW,CAAC,GAC1B,CACL,EACD,eAAK,SAAS,EAAC,YAAY,aACzB,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,aAAa,EACrB,QAAQ,EAAE,CAAC,SAAS,IAAI,YAAY,EACpC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,YAEnE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,GACrC,EACT,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,uBAEpE,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { ModelPricingOverride } from "@stigmer/protos/ai/stigmer/billing/v1/pricing_override_pb";
2
+ /**
3
+ * One PENDING_SIGNOFF pricing override with approve/reject actions and
4
+ * its ledger provenance (what was observed, against what, over which
5
+ * window) so the operator decides from evidence, not a bare number.
6
+ */
7
+ export declare function PendingOverrideCard({ override, isSubmitting, onDecide, }: {
8
+ readonly override: ModelPricingOverride;
9
+ readonly isSubmitting: boolean;
10
+ readonly onDecide: (overrideId: string, approve: boolean) => void;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ /**
13
+ * Effective rate; when an override moved it, the baseline shows
14
+ * struck-through. Pass `role="cell"` when rendered inside an ARIA
15
+ * table row; leave unset inside interactive list rows (a `<button>`
16
+ * row cannot contain table cells).
17
+ */
18
+ export declare function RateCell({ baseline, effective, role, }: {
19
+ readonly baseline: bigint;
20
+ readonly effective: bigint;
21
+ readonly role?: "cell";
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ /**
24
+ * Governance state chip: how this entry's rates are governed —
25
+ * ledger-verified (reconcilable, no overrides), ledger-corrected
26
+ * (reconcilable with active overrides), or manually governed (no
27
+ * external ledger can verify it).
28
+ */
29
+ export declare function GovernanceBadge({ ledgerReconcilable, hasOverrides, }: {
30
+ readonly ledgerReconcilable: boolean;
31
+ readonly hasOverrides: boolean;
32
+ }): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=governance-primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-primitives.d.ts","sourceRoot":"","sources":["../../src/pricing-governance/governance-primitives.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2DAA2D,CAAC;AAStG;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACnE,2CA6CA;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,SAAS,EACT,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,2CAYA;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,kBAAkB,EAClB,YAAY,GACb,EAAE;IACD,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC,2CAoBA"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { jsxs as _jsxs, Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
3
+ import { cn } from "@stigmer/theme";
4
+ import { Button } from "../button/index.js";
5
+ import { RATE_FIELD_LABELS, formatDeltaBp, formatRate } from "./pricing-format.js";
6
+ // ---------------------------------------------------------------------------
7
+ // Shared display primitives for the operator pricing surfaces. Internal —
8
+ // not exported from the billing barrel.
9
+ // ---------------------------------------------------------------------------
10
+ /**
11
+ * One PENDING_SIGNOFF pricing override with approve/reject actions and
12
+ * its ledger provenance (what was observed, against what, over which
13
+ * window) so the operator decides from evidence, not a bare number.
14
+ */
15
+ export function PendingOverrideCard({ override, isSubmitting, onDecide, }) {
16
+ const provenance = override.provenance;
17
+ return (_jsx("div", { className: "rounded-lg border border-border bg-card px-3 py-2", children: _jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("p", { className: "truncate text-xs font-medium text-foreground", children: [override.modelId, override.variant ? ` (${override.variant})` : "", " · ", RATE_FIELD_LABELS[override.rateField] ?? "Rate"] }), _jsx("p", { className: "text-[11px] text-muted-foreground", children: provenance ? (_jsxs(_Fragment, { children: ["Ledger observed ", formatRate(provenance.observedRateMicrosPerMillion), " vs effective ", formatRate(provenance.effectiveRateAtDerivationMicrosPerMillion), " ", "(", formatDeltaBp(provenance.deltaBasisPoints), ") over", " ", provenance.windowFrom, "..", provenance.windowTo] })) : (_jsxs(_Fragment, { children: ["Proposed rate ", formatRate(override.rateMicrosPerMillion)] })) })] }), _jsxs("div", { className: "flex shrink-0 gap-2", children: [_jsx(Button, { size: "sm", disabled: isSubmitting, onClick: () => onDecide(override.overrideId, true), children: "Approve" }), _jsx(Button, { size: "sm", variant: "outline", disabled: isSubmitting, onClick: () => onDecide(override.overrideId, false), children: "Reject" })] })] }) }));
18
+ }
19
+ /**
20
+ * Effective rate; when an override moved it, the baseline shows
21
+ * struck-through. Pass `role="cell"` when rendered inside an ARIA
22
+ * table row; leave unset inside interactive list rows (a `<button>`
23
+ * row cannot contain table cells).
24
+ */
25
+ export function RateCell({ baseline, effective, role, }) {
26
+ const overridden = baseline !== effective;
27
+ return (_jsxs("span", { role: role, className: "text-right text-foreground", children: [overridden && (_jsx("span", { className: "mr-1 text-[10px] text-muted-foreground line-through", children: formatRate(baseline) })), formatRate(effective)] }));
28
+ }
29
+ /**
30
+ * Governance state chip: how this entry's rates are governed —
31
+ * ledger-verified (reconcilable, no overrides), ledger-corrected
32
+ * (reconcilable with active overrides), or manually governed (no
33
+ * external ledger can verify it).
34
+ */
35
+ export function GovernanceBadge({ ledgerReconcilable, hasOverrides, }) {
36
+ if (!ledgerReconcilable) {
37
+ return (_jsx("span", { className: "rounded bg-muted-subtle px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: "Manually governed" }));
38
+ }
39
+ return (_jsx("span", { className: cn("rounded px-1.5 py-0.5 text-[10px] font-medium", hasOverrides
40
+ ? "bg-accent text-primary"
41
+ : "bg-muted-subtle text-muted-foreground"), children: hasOverrides ? "Ledger-corrected" : "Ledger-verified" }));
42
+ }
43
+ //# sourceMappingURL=governance-primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-primitives.js","sourceRoot":"","sources":["../../src/pricing-governance/governance-primitives.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnF,8EAA8E;AAC9E,0EAA0E;AAC1E,wCAAwC;AACxC,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,QAAQ,EACR,YAAY,EACZ,QAAQ,GAKT;IACC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,OAAO,CACL,cAAK,SAAS,EAAC,mDAAmD,YAChE,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAK,SAAS,EAAC,SAAS,aACtB,aAAG,SAAS,EAAC,8CAA8C,aACxD,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAChD,KAAK,EACL,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,IAC9C,EACJ,YAAG,SAAS,EAAC,mCAAmC,YAC7C,UAAU,CAAC,CAAC,CAAC,CACZ,kDACmB,UAAU,CAAC,UAAU,CAAC,4BAA4B,CAAC,oBACzD,UAAU,CAAC,UAAU,CAAC,yCAAyC,CAAC,EAC1E,GAAG,OAAG,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAQ,GAAG,EAC3D,UAAU,CAAC,UAAU,QAAI,UAAU,CAAC,QAAQ,IAC5C,CACJ,CAAC,CAAC,CAAC,CACF,gDAAiB,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAC/D,GACC,IACA,EACN,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,wBAG3C,EACT,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,uBAG5C,IACL,IACF,GACF,CACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,SAAS,EACT,IAAI,GAKL;IACC,MAAM,UAAU,GAAG,QAAQ,KAAK,SAAS,CAAC;IAC1C,OAAO,CACL,gBAAM,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,4BAA4B,aACrD,UAAU,IAAI,CACb,eAAM,SAAS,EAAC,qDAAqD,YAClE,UAAU,CAAC,QAAQ,CAAC,GAChB,CACR,EACA,UAAU,CAAC,SAAS,CAAC,IACjB,CACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,kBAAkB,EAClB,YAAY,GAIb;IACC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,CACL,eAAM,SAAS,EAAC,qFAAqF,kCAE9F,CACR,CAAC;IACJ,CAAC;IACD,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,+CAA+C,EAC/C,YAAY;YACV,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,uCAAuC,CAC5C,YAEA,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,GACjD,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ export { usePricingGovernance } from "./usePricingGovernance.js";
2
+ export type { UsePricingGovernanceReturn } from "./usePricingGovernance.js";
3
+ export { useModelPricingBaselines } from "./useModelPricingBaselines.js";
4
+ export type { UseModelPricingBaselinesOptions, UseModelPricingBaselinesReturn, } from "./useModelPricingBaselines.js";
5
+ export { useModelGovernanceView } from "./useModelGovernanceView.js";
6
+ export type { GovernanceFlow, ModelGovernanceRow, UseModelGovernanceViewReturn, } from "./useModelGovernanceView.js";
7
+ export { useDecidePricingOverride } from "./useDecidePricingOverride.js";
8
+ export type { DecidePricingOverrideInput, UseDecidePricingOverrideReturn, } from "./useDecidePricingOverride.js";
9
+ export { useUpsertModelPricingBaseline } from "./useUpsertModelPricingBaseline.js";
10
+ export type { UpsertModelPricingBaselineInput, UseUpsertModelPricingBaselineReturn, } from "./useUpsertModelPricingBaseline.js";
11
+ export { useRetireModelPricingBaseline } from "./useRetireModelPricingBaseline.js";
12
+ export type { RetireModelPricingBaselineInput, UseRetireModelPricingBaselineReturn, } from "./useRetireModelPricingBaseline.js";
13
+ export { PricingGovernancePanel } from "./PricingGovernancePanel.js";
14
+ export type { PricingGovernancePanelProps } from "./PricingGovernancePanel.js";
15
+ export { ModelCatalogPanel } from "./ModelCatalogPanel.js";
16
+ export type { ModelCatalogPanelProps } from "./ModelCatalogPanel.js";
17
+ export { PricingGovernanceConsole } from "./PricingGovernanceConsole.js";
18
+ export type { PricingGovernanceConsoleProps, PricingGovernanceTab, } from "./PricingGovernanceConsole.js";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pricing-governance/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EACV,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,GACpC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,GACpC,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EACV,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,20 @@
1
+ // Pricing governance — the platform-operator surface for the model
2
+ // registry baseline and the reconciliation-driven pricing feedback loop.
3
+ // Every export here is gated on `can_manage_model_pricing` on
4
+ // `platform:stigmer`; nothing in this module is customer-facing (customer
5
+ // billing lives in ../billing). The module boundary is deliberate: the
6
+ // docs generator excludes operator-only domains wholesale, so operator
7
+ // exports must never be mixed into customer modules.
8
+ // Data hooks
9
+ export { usePricingGovernance } from "./usePricingGovernance.js";
10
+ export { useModelPricingBaselines } from "./useModelPricingBaselines.js";
11
+ export { useModelGovernanceView } from "./useModelGovernanceView.js";
12
+ // Behavior hooks
13
+ export { useDecidePricingOverride } from "./useDecidePricingOverride.js";
14
+ export { useUpsertModelPricingBaseline } from "./useUpsertModelPricingBaseline.js";
15
+ export { useRetireModelPricingBaseline } from "./useRetireModelPricingBaseline.js";
16
+ // Styled components
17
+ export { PricingGovernancePanel } from "./PricingGovernancePanel.js";
18
+ export { ModelCatalogPanel } from "./ModelCatalogPanel.js";
19
+ export { PricingGovernanceConsole } from "./PricingGovernanceConsole.js";
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pricing-governance/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,yEAAyE;AACzE,8DAA8D;AAC9D,0EAA0E;AAC1E,uEAAuE;AACvE,uEAAuE;AACvE,qDAAqD;AAErD,aAAa;AACb,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAOrE,iBAAiB;AACjB,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAKnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAMnF,oBAAoB;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare const ZERO: bigint;
2
+ /** Human labels for {@link PricingRateField} values. */
3
+ export declare const RATE_FIELD_LABELS: Record<number, string>;
4
+ /** Micro-USD per million tokens → "$X.XX/M" (raw provider rate). */
5
+ export declare function formatRate(microsPerMillion: bigint): string;
6
+ /** Basis points → signed percentage, e.g. 530n → "+5.30%". */
7
+ export declare function formatDeltaBp(deltaBp: bigint): string;
8
+ /** Micro-USD → editable dollar string, trailing zeros trimmed ("0.075"). */
9
+ export declare function microsToDollarString(micros: bigint): string;
10
+ /** Parse a dollar input; returns null for anything that is not a finite, non-negative number. */
11
+ export declare function dollarsToMicros(value: string): bigint | null;
12
+ //# sourceMappingURL=pricing-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing-format.d.ts","sourceRoot":"","sources":["../../src/pricing-governance/pricing-format.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,IAAI,QAAY,CAAC;AAE9B,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMpD,CAAC;AAEF,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5D"}