@stigmer/react 3.2.2 → 3.3.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.
- package/agent/AgentDetailView.d.ts.map +1 -1
- package/agent/AgentDetailView.js +6 -3
- package/agent/AgentDetailView.js.map +1 -1
- package/agent/steps/ReviewStep.d.ts.map +1 -1
- package/agent/steps/ReviewStep.js +2 -3
- package/agent/steps/ReviewStep.js.map +1 -1
- package/billing/BaselineEditor.d.ts +9 -0
- package/billing/BaselineEditor.d.ts.map +1 -0
- package/billing/BaselineEditor.js +253 -0
- package/billing/BaselineEditor.js.map +1 -0
- package/billing/ModelCatalogPanel.d.ts +28 -0
- package/billing/ModelCatalogPanel.d.ts.map +1 -0
- package/billing/ModelCatalogPanel.js +102 -0
- package/billing/ModelCatalogPanel.js.map +1 -0
- package/billing/ModelGovernanceDetail.d.ts +8 -0
- package/billing/ModelGovernanceDetail.d.ts.map +1 -0
- package/billing/ModelGovernanceDetail.js +64 -0
- package/billing/ModelGovernanceDetail.js.map +1 -0
- package/billing/OperatorAccessNotice.d.ts +12 -0
- package/billing/OperatorAccessNotice.d.ts.map +1 -0
- package/billing/OperatorAccessNotice.js +15 -0
- package/billing/OperatorAccessNotice.js.map +1 -0
- package/billing/PricingGovernanceConsole.d.ts +57 -0
- package/billing/PricingGovernanceConsole.d.ts.map +1 -0
- package/billing/PricingGovernanceConsole.js +164 -0
- package/billing/PricingGovernanceConsole.js.map +1 -0
- package/billing/PricingGovernancePanel.d.ts +26 -0
- package/billing/PricingGovernancePanel.d.ts.map +1 -0
- package/billing/PricingGovernancePanel.js +64 -0
- package/billing/PricingGovernancePanel.js.map +1 -0
- package/billing/RetireConfirm.d.ts +9 -0
- package/billing/RetireConfirm.d.ts.map +1 -0
- package/billing/RetireConfirm.js +19 -0
- package/billing/RetireConfirm.js.map +1 -0
- package/billing/form-primitives.d.ts +18 -0
- package/billing/form-primitives.d.ts.map +1 -0
- package/billing/form-primitives.js +19 -0
- package/billing/form-primitives.js.map +1 -0
- package/billing/governance-primitives.d.ts +33 -0
- package/billing/governance-primitives.d.ts.map +1 -0
- package/billing/governance-primitives.js +43 -0
- package/billing/governance-primitives.js.map +1 -0
- package/billing/index.d.ts +18 -0
- package/billing/index.d.ts.map +1 -1
- package/billing/index.js +9 -0
- package/billing/index.js.map +1 -1
- package/billing/pricing-format.d.ts +12 -0
- package/billing/pricing-format.d.ts.map +1 -0
- package/billing/pricing-format.js +50 -0
- package/billing/pricing-format.js.map +1 -0
- package/billing/useDecidePricingOverride.d.ts +46 -0
- package/billing/useDecidePricingOverride.d.ts.map +1 -0
- package/billing/useDecidePricingOverride.js +44 -0
- package/billing/useDecidePricingOverride.js.map +1 -0
- package/billing/useModelGovernanceView.d.ts +103 -0
- package/billing/useModelGovernanceView.d.ts.map +1 -0
- package/billing/useModelGovernanceView.js +144 -0
- package/billing/useModelGovernanceView.js.map +1 -0
- package/billing/useModelPricingBaselines.d.ts +40 -0
- package/billing/useModelPricingBaselines.d.ts.map +1 -0
- package/billing/useModelPricingBaselines.js +32 -0
- package/billing/useModelPricingBaselines.js.map +1 -0
- package/billing/usePricingGovernance.d.ts +39 -0
- package/billing/usePricingGovernance.d.ts.map +1 -0
- package/billing/usePricingGovernance.js +31 -0
- package/billing/usePricingGovernance.js.map +1 -0
- package/billing/useRetireModelPricingBaseline.d.ts +31 -0
- package/billing/useRetireModelPricingBaseline.d.ts.map +1 -0
- package/billing/useRetireModelPricingBaseline.js +36 -0
- package/billing/useRetireModelPricingBaseline.js.map +1 -0
- package/billing/useUpsertModelPricingBaseline.d.ts +38 -0
- package/billing/useUpsertModelPricingBaseline.d.ts.map +1 -0
- package/billing/useUpsertModelPricingBaseline.js +37 -0
- package/billing/useUpsertModelPricingBaseline.js.map +1 -0
- package/channel/AgentChannelsPanel.d.ts.map +1 -1
- package/channel/AgentChannelsPanel.js +11 -5
- package/channel/AgentChannelsPanel.js.map +1 -1
- package/composer/SessionComposer.d.ts +1 -1
- package/cursor-accounts/CursorAccountEditor.d.ts +28 -0
- package/cursor-accounts/CursorAccountEditor.d.ts.map +1 -0
- package/cursor-accounts/CursorAccountEditor.js +51 -0
- package/cursor-accounts/CursorAccountEditor.js.map +1 -0
- package/cursor-accounts/CursorAccountsAccessNotice.d.ts +11 -0
- package/cursor-accounts/CursorAccountsAccessNotice.d.ts.map +1 -0
- package/cursor-accounts/CursorAccountsAccessNotice.js +14 -0
- package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -0
- package/cursor-accounts/CursorAccountsConsole.d.ts +28 -0
- package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -0
- package/cursor-accounts/CursorAccountsConsole.js +275 -0
- package/cursor-accounts/CursorAccountsConsole.js.map +1 -0
- package/cursor-accounts/cursor-account-format.d.ts +10 -0
- package/cursor-accounts/cursor-account-format.d.ts.map +1 -0
- package/cursor-accounts/cursor-account-format.js +26 -0
- package/cursor-accounts/cursor-account-format.js.map +1 -0
- package/cursor-accounts/index.d.ts +18 -0
- package/cursor-accounts/index.d.ts.map +1 -0
- package/cursor-accounts/index.js +13 -0
- package/cursor-accounts/index.js.map +1 -0
- package/cursor-accounts/useCursorAccountView.d.ts +30 -0
- package/cursor-accounts/useCursorAccountView.d.ts.map +1 -0
- package/cursor-accounts/useCursorAccountView.js +25 -0
- package/cursor-accounts/useCursorAccountView.js.map +1 -0
- package/cursor-accounts/useCursorAccounts.d.ts +33 -0
- package/cursor-accounts/useCursorAccounts.d.ts.map +1 -0
- package/cursor-accounts/useCursorAccounts.js +25 -0
- package/cursor-accounts/useCursorAccounts.js.map +1 -0
- package/cursor-accounts/useCursorMemberKeyActions.d.ts +49 -0
- package/cursor-accounts/useCursorMemberKeyActions.d.ts.map +1 -0
- package/cursor-accounts/useCursorMemberKeyActions.js +38 -0
- package/cursor-accounts/useCursorMemberKeyActions.js.map +1 -0
- package/cursor-accounts/useDeleteCursorAccount.d.ts +30 -0
- package/cursor-accounts/useDeleteCursorAccount.d.ts.map +1 -0
- package/cursor-accounts/useDeleteCursorAccount.js +32 -0
- package/cursor-accounts/useDeleteCursorAccount.js.map +1 -0
- package/cursor-accounts/useSyncCursorAccount.d.ts +23 -0
- package/cursor-accounts/useSyncCursorAccount.d.ts.map +1 -0
- package/cursor-accounts/useSyncCursorAccount.js +31 -0
- package/cursor-accounts/useSyncCursorAccount.js.map +1 -0
- package/cursor-accounts/useUpsertCursorAccount.d.ts +26 -0
- package/cursor-accounts/useUpsertCursorAccount.d.ts.map +1 -0
- package/cursor-accounts/useUpsertCursorAccount.js +34 -0
- package/cursor-accounts/useUpsertCursorAccount.js.map +1 -0
- package/datastore/CollectionRecordsBrowser.d.ts +34 -0
- package/datastore/CollectionRecordsBrowser.d.ts.map +1 -0
- package/datastore/CollectionRecordsBrowser.js +209 -0
- package/datastore/CollectionRecordsBrowser.js.map +1 -0
- package/datastore/CollectionSchemaView.d.ts +29 -0
- package/datastore/CollectionSchemaView.d.ts.map +1 -0
- package/datastore/CollectionSchemaView.js +93 -0
- package/datastore/CollectionSchemaView.js.map +1 -0
- package/datastore/DatastoreDetailView.d.ts +44 -0
- package/datastore/DatastoreDetailView.d.ts.map +1 -0
- package/datastore/DatastoreDetailView.js +76 -0
- package/datastore/DatastoreDetailView.js.map +1 -0
- package/datastore/DatastoreSyncReport.d.ts +19 -0
- package/datastore/DatastoreSyncReport.d.ts.map +1 -0
- package/datastore/DatastoreSyncReport.js +45 -0
- package/datastore/DatastoreSyncReport.js.map +1 -0
- package/datastore/DeleteDatastoreDialog.d.ts +35 -0
- package/datastore/DeleteDatastoreDialog.d.ts.map +1 -0
- package/datastore/DeleteDatastoreDialog.js +90 -0
- package/datastore/DeleteDatastoreDialog.js.map +1 -0
- package/datastore/FieldValueControl.d.ts +55 -0
- package/datastore/FieldValueControl.d.ts.map +1 -0
- package/datastore/FieldValueControl.js +138 -0
- package/datastore/FieldValueControl.js.map +1 -0
- package/datastore/RecordFilterBuilder.d.ts +30 -0
- package/datastore/RecordFilterBuilder.d.ts.map +1 -0
- package/datastore/RecordFilterBuilder.js +122 -0
- package/datastore/RecordFilterBuilder.js.map +1 -0
- package/datastore/RecordFormPanel.d.ts +45 -0
- package/datastore/RecordFormPanel.d.ts.map +1 -0
- package/datastore/RecordFormPanel.js +215 -0
- package/datastore/RecordFormPanel.js.map +1 -0
- package/datastore/index.d.ts +43 -0
- package/datastore/index.d.ts.map +1 -0
- package/datastore/index.js +22 -0
- package/datastore/index.js.map +1 -0
- package/datastore/recordFilter.d.ts +54 -0
- package/datastore/recordFilter.d.ts.map +1 -0
- package/datastore/recordFilter.js +93 -0
- package/datastore/recordFilter.js.map +1 -0
- package/datastore/recordValues.d.ts +85 -0
- package/datastore/recordValues.d.ts.map +1 -0
- package/datastore/recordValues.js +282 -0
- package/datastore/recordValues.js.map +1 -0
- package/datastore/useDatastore.d.ts +39 -0
- package/datastore/useDatastore.d.ts.map +1 -0
- package/datastore/useDatastore.js +44 -0
- package/datastore/useDatastore.js.map +1 -0
- package/datastore/useDatastoreCount.d.ts +48 -0
- package/datastore/useDatastoreCount.d.ts.map +1 -0
- package/datastore/useDatastoreCount.js +27 -0
- package/datastore/useDatastoreCount.js.map +1 -0
- package/datastore/useDatastoreDescription.d.ts +54 -0
- package/datastore/useDatastoreDescription.d.ts.map +1 -0
- package/datastore/useDatastoreDescription.js +50 -0
- package/datastore/useDatastoreDescription.js.map +1 -0
- package/datastore/useDatastoreList.d.ts +57 -0
- package/datastore/useDatastoreList.d.ts.map +1 -0
- package/datastore/useDatastoreList.js +29 -0
- package/datastore/useDatastoreList.js.map +1 -0
- package/datastore/useDatastoreSearch.d.ts +19 -0
- package/datastore/useDatastoreSearch.d.ts.map +1 -0
- package/datastore/useDatastoreSearch.js +22 -0
- package/datastore/useDatastoreSearch.js.map +1 -0
- package/datastore/useDeleteDatastore.d.ts +53 -0
- package/datastore/useDeleteDatastore.d.ts.map +1 -0
- package/datastore/useDeleteDatastore.js +40 -0
- package/datastore/useDeleteDatastore.js.map +1 -0
- package/datastore/useDeleteRecord.d.ts +34 -0
- package/datastore/useDeleteRecord.d.ts.map +1 -0
- package/datastore/useDeleteRecord.js +43 -0
- package/datastore/useDeleteRecord.js.map +1 -0
- package/datastore/useInsertRecord.d.ts +50 -0
- package/datastore/useInsertRecord.d.ts.map +1 -0
- package/datastore/useInsertRecord.js +55 -0
- package/datastore/useInsertRecord.js.map +1 -0
- package/datastore/useRecordCollection.d.ts +104 -0
- package/datastore/useRecordCollection.d.ts.map +1 -0
- package/datastore/useRecordCollection.js +136 -0
- package/datastore/useRecordCollection.js.map +1 -0
- package/datastore/useRecordList.d.ts +66 -0
- package/datastore/useRecordList.d.ts.map +1 -0
- package/datastore/useRecordList.js +58 -0
- package/datastore/useRecordList.js.map +1 -0
- package/datastore/useUpdateRecord.d.ts +52 -0
- package/datastore/useUpdateRecord.d.ts.map +1 -0
- package/datastore/useUpdateRecord.js +55 -0
- package/datastore/useUpdateRecord.js.map +1 -0
- package/environment/EnvironmentListPanel.d.ts.map +1 -1
- package/environment/EnvironmentListPanel.js +12 -7
- package/environment/EnvironmentListPanel.js.map +1 -1
- package/execution/index.d.ts +1 -2
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +0 -1
- package/execution/index.js.map +1 -1
- package/execution/useLiveAgentExecution.d.ts +17 -1
- package/execution/useLiveAgentExecution.d.ts.map +1 -1
- package/execution/useLiveAgentExecution.js +19 -4
- package/execution/useLiveAgentExecution.js.map +1 -1
- package/iam-policy/index.d.ts +1 -1
- package/iam-policy/index.d.ts.map +1 -1
- package/iam-policy/index.js.map +1 -1
- package/iam-policy/useCheckPermission.d.ts +32 -11
- package/iam-policy/useCheckPermission.d.ts.map +1 -1
- package/iam-policy/useCheckPermission.js +24 -19
- package/iam-policy/useCheckPermission.js.map +1 -1
- package/index.d.ts +16 -10
- package/index.d.ts.map +1 -1
- package/index.js +16 -5
- package/index.js.map +1 -1
- package/internal/useInViewport.d.ts +24 -0
- package/internal/useInViewport.d.ts.map +1 -0
- package/internal/useInViewport.js +49 -0
- package/internal/useInViewport.js.map +1 -0
- package/library/VisibilitySelector.d.ts +22 -6
- package/library/VisibilitySelector.d.ts.map +1 -1
- package/library/VisibilitySelector.js +12 -4
- package/library/VisibilitySelector.js.map +1 -1
- package/library/index.d.ts +1 -8
- package/library/index.d.ts.map +1 -1
- package/library/index.js +0 -4
- package/library/index.js.map +1 -1
- package/library/useApplyResource.d.ts +12 -12
- package/library/useApplyResource.d.ts.map +1 -1
- package/library/useApplyResource.js +16 -25
- package/library/useApplyResource.js.map +1 -1
- package/library/useExportResource.d.ts +13 -9
- package/library/useExportResource.d.ts.map +1 -1
- package/library/useExportResource.js +18 -36
- package/library/useExportResource.js.map +1 -1
- package/manifest/ApplyManifestDialog.d.ts +48 -0
- package/manifest/ApplyManifestDialog.d.ts.map +1 -0
- package/manifest/ApplyManifestDialog.js +135 -0
- package/manifest/ApplyManifestDialog.js.map +1 -0
- package/manifest/EditResourceYamlDialog.d.ts +51 -0
- package/manifest/EditResourceYamlDialog.d.ts.map +1 -0
- package/manifest/EditResourceYamlDialog.js +104 -0
- package/manifest/EditResourceYamlDialog.js.map +1 -0
- package/manifest/RedactedSecretsNotice.d.ts +14 -0
- package/manifest/RedactedSecretsNotice.d.ts.map +1 -0
- package/manifest/RedactedSecretsNotice.js +14 -0
- package/manifest/RedactedSecretsNotice.js.map +1 -0
- package/manifest/YamlEditor.d.ts +44 -0
- package/manifest/YamlEditor.d.ts.map +1 -0
- package/manifest/YamlEditor.js +216 -0
- package/manifest/YamlEditor.js.map +1 -0
- package/manifest/index.d.ts +13 -0
- package/manifest/index.d.ts.map +1 -0
- package/manifest/index.js +13 -0
- package/manifest/index.js.map +1 -0
- package/manifest/useApplyManifest.d.ts +82 -0
- package/manifest/useApplyManifest.d.ts.map +1 -0
- package/manifest/useApplyManifest.js +180 -0
- package/manifest/useApplyManifest.js.map +1 -0
- package/manifest/useEditResourceYaml.d.ts +106 -0
- package/manifest/useEditResourceYaml.d.ts.map +1 -0
- package/manifest/useEditResourceYaml.js +168 -0
- package/manifest/useEditResourceYaml.js.map +1 -0
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +4 -3
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/steps/ReviewStep.d.ts.map +1 -1
- package/mcp-server/steps/ReviewStep.js +2 -3
- package/mcp-server/steps/ReviewStep.js.map +1 -1
- package/package.json +4 -4
- package/resource-creation/templates/workflow-templates.js +4 -4
- package/session/SessionViewer.js +8 -1
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +6 -1
- package/session/audience.d.ts.map +1 -1
- package/session/useEditSessionPrep.js +3 -3
- package/session/useEditSessionPrep.js.map +1 -1
- package/settings/index.d.ts +2 -1
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +2 -1
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.d.ts +22 -0
- package/settings/settings-nav.d.ts.map +1 -1
- package/settings/settings-nav.js +32 -1
- package/settings/settings-nav.js.map +1 -1
- package/settings/useSettingsNavGroups.d.ts +29 -0
- package/settings/useSettingsNavGroups.d.ts.map +1 -0
- package/settings/useSettingsNavGroups.js +61 -0
- package/settings/useSettingsNavGroups.js.map +1 -0
- package/skill/SkillDetailView.d.ts.map +1 -1
- package/skill/SkillDetailView.js +4 -3
- package/skill/SkillDetailView.js.map +1 -1
- package/src/access/__tests__/useManageAccess.test.tsx +104 -0
- package/src/agent/AgentDetailView.tsx +9 -3
- package/src/agent/steps/ReviewStep.tsx +2 -3
- package/src/billing/BaselineEditor.tsx +619 -0
- package/src/billing/ModelCatalogPanel.tsx +283 -0
- package/src/billing/ModelGovernanceDetail.tsx +289 -0
- package/src/billing/OperatorAccessNotice.tsx +32 -0
- package/src/billing/PricingGovernanceConsole.tsx +465 -0
- package/src/billing/PricingGovernancePanel.tsx +166 -0
- package/src/billing/RetireConfirm.tsx +82 -0
- package/src/billing/__tests__/ModelCatalogPanel.test.tsx +253 -0
- package/src/billing/__tests__/PricingGovernanceConsole.test.tsx +410 -0
- package/src/billing/__tests__/useModelGovernanceView.test.tsx +308 -0
- package/src/billing/form-primitives.tsx +68 -0
- package/src/billing/governance-primitives.tsx +133 -0
- package/src/billing/index.ts +37 -0
- package/src/billing/pricing-format.ts +53 -0
- package/src/billing/useDecidePricingOverride.ts +78 -0
- package/src/billing/useModelGovernanceView.ts +290 -0
- package/src/billing/useModelPricingBaselines.ts +69 -0
- package/src/billing/usePricingGovernance.ts +57 -0
- package/src/billing/useRetireModelPricingBaseline.ts +65 -0
- package/src/billing/useUpsertModelPricingBaseline.ts +72 -0
- package/src/channel/AgentChannelsPanel.tsx +27 -1
- package/src/composer/SessionComposer.tsx +1 -1
- package/src/cursor-accounts/CursorAccountEditor.tsx +181 -0
- package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +36 -0
- package/src/cursor-accounts/CursorAccountsConsole.tsx +810 -0
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +384 -0
- package/src/cursor-accounts/cursor-account-format.ts +29 -0
- package/src/cursor-accounts/index.ts +29 -0
- package/src/cursor-accounts/useCursorAccountView.ts +49 -0
- package/src/cursor-accounts/useCursorAccounts.ts +49 -0
- package/src/cursor-accounts/useCursorMemberKeyActions.ts +106 -0
- package/src/cursor-accounts/useDeleteCursorAccount.ts +62 -0
- package/src/cursor-accounts/useSyncCursorAccount.ts +54 -0
- package/src/cursor-accounts/useUpsertCursorAccount.ts +57 -0
- package/src/datastore/CollectionRecordsBrowser.tsx +544 -0
- package/src/datastore/CollectionSchemaView.tsx +247 -0
- package/src/datastore/DatastoreDetailView.tsx +201 -0
- package/src/datastore/DatastoreSyncReport.tsx +105 -0
- package/src/datastore/DeleteDatastoreDialog.tsx +202 -0
- package/src/datastore/FieldValueControl.tsx +289 -0
- package/src/datastore/RecordFilterBuilder.tsx +411 -0
- package/src/datastore/RecordFormPanel.tsx +432 -0
- package/src/datastore/__tests__/CollectionRecordsBrowser.test.tsx +207 -0
- package/src/datastore/__tests__/DeleteDatastoreDialog.test.tsx +133 -0
- package/src/datastore/__tests__/FieldValueControl.test.tsx +160 -0
- package/src/datastore/__tests__/RecordFilterBuilder.test.tsx +141 -0
- package/src/datastore/__tests__/RecordFormPanel.test.tsx +227 -0
- package/src/datastore/__tests__/recordFilter.test.ts +156 -0
- package/src/datastore/__tests__/recordMutations.test.tsx +195 -0
- package/src/datastore/__tests__/recordValues.test.ts +359 -0
- package/src/datastore/__tests__/schemaAndSyncViews.test.tsx +142 -0
- package/src/datastore/__tests__/useDatastoreDescription.test.tsx +143 -0
- package/src/datastore/__tests__/useRecordCollection.test.tsx +250 -0
- package/src/datastore/__tests__/useRecordList.test.tsx +85 -0
- package/src/datastore/index.ts +111 -0
- package/src/datastore/recordFilter.ts +140 -0
- package/src/datastore/recordValues.ts +327 -0
- package/src/datastore/useDatastore.ts +67 -0
- package/src/datastore/useDatastoreCount.ts +67 -0
- package/src/datastore/useDatastoreDescription.ts +90 -0
- package/src/datastore/useDatastoreList.ts +79 -0
- package/src/datastore/useDatastoreSearch.ts +39 -0
- package/src/datastore/useDeleteDatastore.ts +87 -0
- package/src/datastore/useDeleteRecord.ts +77 -0
- package/src/datastore/useInsertRecord.ts +92 -0
- package/src/datastore/useRecordCollection.ts +256 -0
- package/src/datastore/useRecordList.ts +131 -0
- package/src/datastore/useUpdateRecord.ts +95 -0
- package/src/environment/EnvironmentListPanel.tsx +24 -0
- package/src/execution/__tests__/useArtifactInspection.test.tsx +12 -2
- package/src/execution/__tests__/useLiveAgentExecution.test.tsx +125 -0
- package/src/execution/index.ts +4 -7
- package/src/execution/useLiveAgentExecution.ts +41 -3
- package/src/iam-policy/__tests__/useCheckPermission.test.tsx +221 -0
- package/src/iam-policy/index.ts +1 -0
- package/src/iam-policy/useCheckPermission.ts +45 -19
- package/src/index.ts +167 -18
- package/src/internal/__tests__/useInViewport.test.tsx +115 -0
- package/src/internal/useInViewport.ts +63 -0
- package/src/library/VisibilitySelector.tsx +50 -9
- package/src/library/__tests__/VisibilitySelector.test.tsx +38 -0
- package/src/library/index.ts +4 -21
- package/src/library/useApplyResource.ts +27 -34
- package/src/library/useExportResource.ts +21 -40
- package/src/manifest/ApplyManifestDialog.tsx +315 -0
- package/src/manifest/EditResourceYamlDialog.tsx +265 -0
- package/src/manifest/RedactedSecretsNotice.tsx +30 -0
- package/src/manifest/YamlEditor.tsx +272 -0
- package/src/manifest/__tests__/EditResourceYamlDialog.test.tsx +118 -0
- package/src/manifest/__tests__/useApplyManifest.test.tsx +237 -0
- package/src/manifest/__tests__/useEditResourceYaml.test.tsx +252 -0
- package/src/manifest/index.ts +33 -0
- package/src/manifest/useApplyManifest.ts +270 -0
- package/src/manifest/useEditResourceYaml.ts +273 -0
- package/src/mcp-server/McpServerDetailView.tsx +7 -3
- package/src/mcp-server/steps/ReviewStep.tsx +2 -3
- package/src/resource-creation/templates/workflow-templates.ts +4 -4
- package/src/session/SessionViewer.tsx +7 -1
- package/src/session/__tests__/audienceWiring.test.tsx +31 -1
- package/src/session/audience.ts +6 -1
- package/src/session/useEditSessionPrep.ts +3 -3
- package/src/settings/__tests__/useSettingsNavGroups.test.tsx +138 -0
- package/src/settings/index.ts +5 -1
- package/src/settings/settings-nav.ts +43 -0
- package/src/settings/useSettingsNavGroups.ts +81 -0
- package/src/skill/SkillDetailView.tsx +7 -3
- package/src/workflow/WorkflowAgentCallTranscript.tsx +279 -0
- package/src/workflow/WorkflowDetailView.tsx +7 -3
- package/src/workflow/WorkflowExecutionViewer.tsx +20 -77
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +45 -8
- package/src/workflow/WorkflowYamlEditor.tsx +6 -270
- package/src/workflow/__tests__/WorkflowAgentCallTranscript.liveregion.test.tsx +124 -0
- package/src/workflow/__tests__/{WorkflowAgentExecutionDocument.test.tsx → WorkflowAgentCallTranscript.test.tsx} +146 -121
- package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +81 -220
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +17 -16
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +52 -2
- package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +168 -185
- package/src/workflow/__tests__/agent-call-live-experience.test.ts +4 -4
- package/src/workflow/__tests__/task-approval.test.ts +119 -0
- package/src/workflow/__tests__/task-presentation.test.ts +35 -1
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +0 -57
- package/src/workflow/index.ts +6 -3
- package/src/workflow/task-detail/index.ts +3 -0
- package/src/workflow/task-detail/task-approval.ts +95 -1
- package/src/workflow/thread/WorkflowTaskThread.tsx +96 -252
- package/src/workflow/thread/task-presentation.ts +8 -2
- package/src/workflow/useWorkflowExecutionPanel.ts +0 -47
- package/styles.css +1 -1
- package/workflow/CanvasTransitionEdge.d.ts +1 -1
- package/workflow/WorkflowAgentCallTranscript.d.ts +87 -0
- package/workflow/WorkflowAgentCallTranscript.d.ts.map +1 -0
- package/workflow/WorkflowAgentCallTranscript.js +98 -0
- package/workflow/WorkflowAgentCallTranscript.js.map +1 -0
- package/workflow/WorkflowDetailView.d.ts.map +1 -1
- package/workflow/WorkflowDetailView.js +4 -3
- package/workflow/WorkflowDetailView.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +23 -52
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +18 -1
- package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
- package/workflow/WorkflowYamlEditor.d.ts +2 -42
- package/workflow/WorkflowYamlEditor.d.ts.map +1 -1
- package/workflow/WorkflowYamlEditor.js +5 -214
- package/workflow/WorkflowYamlEditor.js.map +1 -1
- package/workflow/index.d.ts +2 -2
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js +2 -2
- package/workflow/index.js.map +1 -1
- package/workflow/task-detail/index.d.ts +1 -1
- package/workflow/task-detail/index.d.ts.map +1 -1
- package/workflow/task-detail/index.js +1 -1
- package/workflow/task-detail/index.js.map +1 -1
- package/workflow/task-detail/task-approval.d.ts +44 -1
- package/workflow/task-detail/task-approval.d.ts.map +1 -1
- package/workflow/task-detail/task-approval.js +47 -0
- package/workflow/task-detail/task-approval.js.map +1 -1
- package/workflow/thread/WorkflowTaskThread.d.ts +17 -25
- package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -1
- package/workflow/thread/WorkflowTaskThread.js +60 -105
- package/workflow/thread/WorkflowTaskThread.js.map +1 -1
- package/workflow/thread/task-presentation.d.ts.map +1 -1
- package/workflow/thread/task-presentation.js +7 -2
- package/workflow/thread/task-presentation.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +0 -12
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionPanel.js +0 -12
- package/workflow/useWorkflowExecutionPanel.js.map +1 -1
- package/execution/agent-execution-document.d.ts +0 -31
- package/execution/agent-execution-document.d.ts.map +0 -1
- package/execution/agent-execution-document.js +0 -48
- package/execution/agent-execution-document.js.map +0 -1
- package/library/ImportResourceDialog.d.ts +0 -43
- package/library/ImportResourceDialog.d.ts.map +0 -1
- package/library/ImportResourceDialog.js +0 -90
- package/library/ImportResourceDialog.js.map +0 -1
- package/library/parse-resource-yaml.d.ts +0 -63
- package/library/parse-resource-yaml.d.ts.map +0 -1
- package/library/parse-resource-yaml.js +0 -407
- package/library/parse-resource-yaml.js.map +0 -1
- package/library/serialize-resource-yaml.d.ts +0 -103
- package/library/serialize-resource-yaml.d.ts.map +0 -1
- package/library/serialize-resource-yaml.js +0 -565
- package/library/serialize-resource-yaml.js.map +0 -1
- package/library/useImportResource.d.ts +0 -84
- package/library/useImportResource.d.ts.map +0 -1
- package/library/useImportResource.js +0 -188
- package/library/useImportResource.js.map +0 -1
- package/src/execution/__tests__/agent-execution-document.test.ts +0 -45
- package/src/execution/agent-execution-document.ts +0 -54
- package/src/library/ImportResourceDialog.tsx +0 -227
- package/src/library/parse-resource-yaml.ts +0 -630
- package/src/library/serialize-resource-yaml.ts +0 -756
- package/src/library/useImportResource.ts +0 -253
- package/src/workflow/WorkflowAgentExecutionDocument.tsx +0 -283
- package/workflow/WorkflowAgentExecutionDocument.d.ts +0 -79
- package/workflow/WorkflowAgentExecutionDocument.d.ts.map +0 -1
- package/workflow/WorkflowAgentExecutionDocument.js +0 -87
- package/workflow/WorkflowAgentExecutionDocument.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useEffect,
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
4
|
import { create } from "@bufbuild/protobuf";
|
|
5
5
|
import {
|
|
6
6
|
CheckMyPermissionInputSchema,
|
|
@@ -18,6 +18,25 @@ export interface PermissionCheckResource {
|
|
|
18
18
|
readonly id: string;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
/** Options for {@link useCheckPermission}. */
|
|
22
|
+
export interface CheckPermissionOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Behavior when authorization cannot be confirmed — the check is in
|
|
25
|
+
* flight, the RPC failed, the resource is `null`, or the server does
|
|
26
|
+
* not implement authorization checks (OSS edition).
|
|
27
|
+
*
|
|
28
|
+
* - `"open"` (default): `allowed` is `true`. Right for gating
|
|
29
|
+
* *capabilities* (buttons, actions) — the server re-checks every
|
|
30
|
+
* request anyway, and all UI stays visible in single-user local
|
|
31
|
+
* mode.
|
|
32
|
+
* - `"closed"`: `allowed` is `false` until the server explicitly
|
|
33
|
+
* authorizes. Right for *discoverability* surfaces (navigation to
|
|
34
|
+
* operator-only areas) that must not appear on deployments where
|
|
35
|
+
* the feature does not exist.
|
|
36
|
+
*/
|
|
37
|
+
readonly fail?: "open" | "closed";
|
|
38
|
+
}
|
|
39
|
+
|
|
21
40
|
/** Return value of {@link useCheckPermission}. */
|
|
22
41
|
export interface UseCheckPermissionReturn {
|
|
23
42
|
/** Whether the current user has the specified permission. */
|
|
@@ -34,21 +53,24 @@ export interface UseCheckPermissionReturn {
|
|
|
34
53
|
*
|
|
35
54
|
* Wraps `iamPolicy.checkMyPermission()` — the dedicated self-check RPC
|
|
36
55
|
* where the server derives the principal from the authenticated token
|
|
37
|
-
* (the client never names a principal) — with caching and
|
|
38
|
-
* degradation.
|
|
39
|
-
* (OSS edition where the IAM service
|
|
40
|
-
* returns `allowed: true`
|
|
41
|
-
* local mode.
|
|
56
|
+
* (the client never names a principal) — with caching and configurable
|
|
57
|
+
* degradation. By default the hook *fails open*: when the server does
|
|
58
|
+
* not support authorization checks (OSS edition where the IAM service
|
|
59
|
+
* is not registered), it returns `allowed: true` so all UI remains
|
|
60
|
+
* visible in single-user local mode. Pass `{ fail: "closed" }` for
|
|
61
|
+
* surfaces that must stay hidden until authorization is confirmed
|
|
62
|
+
* (see {@link CheckPermissionOptions}).
|
|
42
63
|
*
|
|
43
|
-
* Pass `null` as `resource` to skip the check
|
|
44
|
-
*
|
|
45
|
-
* flashing hidden UI).
|
|
64
|
+
* Pass `null` as `resource` to skip the check — the result resolves
|
|
65
|
+
* through the fail mode (`allowed: true` under the default fail-open).
|
|
46
66
|
*
|
|
47
|
-
*
|
|
48
|
-
* of the component mount.
|
|
67
|
+
* Only genuine server verdicts are cached (per (kind, id, relation)
|
|
68
|
+
* triple, for the lifetime of the component mount). A failed check is
|
|
69
|
+
* never cached, so a transient error does not pin a wrong answer.
|
|
49
70
|
*
|
|
50
71
|
* @param resource - The resource to check, or `null` to skip.
|
|
51
72
|
* @param relation - The permission to check (e.g. "can_edit", "can_grant_access").
|
|
73
|
+
* @param options - Fail-mode configuration; see {@link CheckPermissionOptions}.
|
|
52
74
|
*
|
|
53
75
|
* @example
|
|
54
76
|
* ```tsx
|
|
@@ -63,9 +85,13 @@ export interface UseCheckPermissionReturn {
|
|
|
63
85
|
export function useCheckPermission(
|
|
64
86
|
resource: PermissionCheckResource | null,
|
|
65
87
|
relation: string,
|
|
88
|
+
options?: CheckPermissionOptions,
|
|
66
89
|
): UseCheckPermissionReturn {
|
|
67
90
|
const stigmer = useStigmer();
|
|
68
|
-
const
|
|
91
|
+
const failMode = options?.fail ?? "open";
|
|
92
|
+
const failValue = failMode === "open";
|
|
93
|
+
|
|
94
|
+
const [allowed, setAllowed] = useState(failValue);
|
|
69
95
|
const [isLoading, setIsLoading] = useState(false);
|
|
70
96
|
const [error, setError] = useState<Error | null>(null);
|
|
71
97
|
|
|
@@ -74,7 +100,7 @@ export function useCheckPermission(
|
|
|
74
100
|
|
|
75
101
|
useEffect(() => {
|
|
76
102
|
if (!resource || !cacheKey) {
|
|
77
|
-
setAllowed(
|
|
103
|
+
setAllowed(failValue);
|
|
78
104
|
setIsLoading(false);
|
|
79
105
|
return;
|
|
80
106
|
}
|
|
@@ -87,6 +113,7 @@ export function useCheckPermission(
|
|
|
87
113
|
}
|
|
88
114
|
|
|
89
115
|
let cancelled = false;
|
|
116
|
+
setAllowed(failValue);
|
|
90
117
|
setIsLoading(true);
|
|
91
118
|
|
|
92
119
|
const input = create(CheckMyPermissionInputSchema, {
|
|
@@ -108,11 +135,10 @@ export function useCheckPermission(
|
|
|
108
135
|
})
|
|
109
136
|
.catch((err: unknown) => {
|
|
110
137
|
if (cancelled) return;
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
setAllowed(true);
|
|
138
|
+
// Degradation is fail-mode-resolved and deliberately NOT cached:
|
|
139
|
+
// an error is not an authorization verdict, and caching it would
|
|
140
|
+
// pin a possibly-wrong answer for the mount's lifetime.
|
|
141
|
+
setAllowed(failValue);
|
|
116
142
|
setError(err instanceof Error ? err : new Error(String(err)));
|
|
117
143
|
})
|
|
118
144
|
.finally(() => {
|
|
@@ -122,7 +148,7 @@ export function useCheckPermission(
|
|
|
122
148
|
return () => {
|
|
123
149
|
cancelled = true;
|
|
124
150
|
};
|
|
125
|
-
}, [cacheKey, resource?.kind, resource?.id, relation, stigmer]);
|
|
151
|
+
}, [cacheKey, resource?.kind, resource?.id, relation, failValue, stigmer]);
|
|
126
152
|
|
|
127
153
|
return { allowed, isLoading, error };
|
|
128
154
|
}
|
package/src/index.ts
CHANGED
|
@@ -346,9 +346,6 @@ export {
|
|
|
346
346
|
toFileDiffEntry,
|
|
347
347
|
FILE_CHANGE_DOCUMENT_ENTRY_ID,
|
|
348
348
|
fileChangeTabPath,
|
|
349
|
-
AGENT_EXECUTION_DOCUMENT_ENTRY_ID,
|
|
350
|
-
agentExecutionTabPath,
|
|
351
|
-
parseAgentExecutionTabPath,
|
|
352
349
|
EmptyChangeNotice,
|
|
353
350
|
isTextArtifact,
|
|
354
351
|
formatArtifactSize,
|
|
@@ -363,6 +360,7 @@ export type {
|
|
|
363
360
|
SharedAgentExecutionFields,
|
|
364
361
|
UseCreateAgentExecutionReturn,
|
|
365
362
|
UseExecutionStreamReturn,
|
|
363
|
+
UseLiveAgentExecutionOptions,
|
|
366
364
|
UseLiveAgentExecutionReturn,
|
|
367
365
|
UseAgentExecutionActionsOptions,
|
|
368
366
|
UseAgentExecutionActionsReturn,
|
|
@@ -679,6 +677,88 @@ export type {
|
|
|
679
677
|
AgentWizardData,
|
|
680
678
|
} from "./agent/index.js";
|
|
681
679
|
|
|
680
|
+
// Datastore — data hooks (kind family + describe projection), record
|
|
681
|
+
// hooks (find/insert/update/delete + grid collection), guarded delete,
|
|
682
|
+
// the canonical value semantics of declared fields, the typed filter
|
|
683
|
+
// model, and the six styled components (detail view, records browser,
|
|
684
|
+
// filter builder, record form, schema view, sync report, delete dialog)
|
|
685
|
+
export {
|
|
686
|
+
useDatastore,
|
|
687
|
+
useDatastoreList,
|
|
688
|
+
useDatastoreCount,
|
|
689
|
+
useDatastoreSearch,
|
|
690
|
+
useDatastoreDescription,
|
|
691
|
+
DEFAULT_PARTITION,
|
|
692
|
+
useRecordList,
|
|
693
|
+
useInsertRecord,
|
|
694
|
+
useUpdateRecord,
|
|
695
|
+
useDeleteRecord,
|
|
696
|
+
useRecordCollection,
|
|
697
|
+
useDeleteDatastore,
|
|
698
|
+
buildUpdateFields,
|
|
699
|
+
coerceFieldValue,
|
|
700
|
+
formatFieldValue,
|
|
701
|
+
formatSystemTimestamp,
|
|
702
|
+
isListOperator,
|
|
703
|
+
isSortableField,
|
|
704
|
+
isValuelessOperator,
|
|
705
|
+
operatorsForField,
|
|
706
|
+
OPERATOR_LABELS,
|
|
707
|
+
RESERVED_FIELD_NAMES,
|
|
708
|
+
SYSTEM_FIELD_OPERATORS,
|
|
709
|
+
buildRecordFilter,
|
|
710
|
+
filterableFields,
|
|
711
|
+
formatConditionChip,
|
|
712
|
+
isConditionComplete,
|
|
713
|
+
FieldValueControl,
|
|
714
|
+
FIELD_INPUT_CLASSES,
|
|
715
|
+
CollectionSchemaView,
|
|
716
|
+
formatSubject,
|
|
717
|
+
DatastoreSyncReport,
|
|
718
|
+
RecordFilterBuilder,
|
|
719
|
+
RecordFormPanel,
|
|
720
|
+
CollectionRecordsBrowser,
|
|
721
|
+
DeleteDatastoreDialog,
|
|
722
|
+
DatastoreDetailView,
|
|
723
|
+
DatastoreIcon,
|
|
724
|
+
} from "./datastore/index.js";
|
|
725
|
+
export type {
|
|
726
|
+
UseDatastoreReturn,
|
|
727
|
+
UseDatastoreListOptions,
|
|
728
|
+
UseDatastoreListReturn,
|
|
729
|
+
UseDatastoreCountOptions,
|
|
730
|
+
UseDatastoreCountReturn,
|
|
731
|
+
UseDatastoreSearchOptions,
|
|
732
|
+
UseDatastoreSearchReturn,
|
|
733
|
+
UseDatastoreDescriptionReturn,
|
|
734
|
+
RecordScope,
|
|
735
|
+
UseRecordListParams,
|
|
736
|
+
UseRecordListReturn,
|
|
737
|
+
InsertRecordArgs,
|
|
738
|
+
UseInsertRecordReturn,
|
|
739
|
+
UpdateRecordArgs,
|
|
740
|
+
UseUpdateRecordReturn,
|
|
741
|
+
DeleteRecordArgs,
|
|
742
|
+
UseDeleteRecordReturn,
|
|
743
|
+
RecordColumnDef,
|
|
744
|
+
UseRecordCollectionOptions,
|
|
745
|
+
UseRecordCollectionReturn,
|
|
746
|
+
DeleteDatastoreArgs,
|
|
747
|
+
UseDeleteDatastoreReturn,
|
|
748
|
+
CoerceResult,
|
|
749
|
+
FilterableField,
|
|
750
|
+
RecordConditionDraft,
|
|
751
|
+
FieldValueControlProps,
|
|
752
|
+
CollectionSchemaViewProps,
|
|
753
|
+
DatastoreSyncReportProps,
|
|
754
|
+
RecordFilterBuilderProps,
|
|
755
|
+
RecordFormPanelProps,
|
|
756
|
+
CollectionRecordsBrowserProps,
|
|
757
|
+
DeleteDatastoreDialogProps,
|
|
758
|
+
DatastoreDetailTab,
|
|
759
|
+
DatastoreDetailViewProps,
|
|
760
|
+
} from "./datastore/index.js";
|
|
761
|
+
|
|
682
762
|
// Environment — data hooks, list hook, personal convenience hook, secret reveal, variable management, env var form, system env vars, and styled components
|
|
683
763
|
export {
|
|
684
764
|
useEnvironment,
|
|
@@ -772,6 +852,7 @@ export type {
|
|
|
772
852
|
UseShareFlowReturn,
|
|
773
853
|
ShareFlowResource,
|
|
774
854
|
UseCheckPermissionReturn,
|
|
855
|
+
CheckPermissionOptions,
|
|
775
856
|
PermissionCheckResource,
|
|
776
857
|
RoleSelectorProps,
|
|
777
858
|
PrincipalPickerProps,
|
|
@@ -834,9 +915,15 @@ export {
|
|
|
834
915
|
useCreditLedger,
|
|
835
916
|
useBillingUsageReport,
|
|
836
917
|
useCustomerModelPricing,
|
|
918
|
+
usePricingGovernance,
|
|
919
|
+
useModelPricingBaselines,
|
|
920
|
+
useModelGovernanceView,
|
|
837
921
|
useCreateCheckoutSession,
|
|
838
922
|
useCreateBillingPortalSession,
|
|
839
923
|
useSetAutoRechargeConfig,
|
|
924
|
+
useDecidePricingOverride,
|
|
925
|
+
useUpsertModelPricingBaseline,
|
|
926
|
+
useRetireModelPricingBaseline,
|
|
840
927
|
BillingSection,
|
|
841
928
|
CreditBalanceCard,
|
|
842
929
|
PaymentMethodCard,
|
|
@@ -844,6 +931,9 @@ export {
|
|
|
844
931
|
CreditPackGrid,
|
|
845
932
|
CreditLedgerTable,
|
|
846
933
|
LowBalanceBanner,
|
|
934
|
+
PricingGovernancePanel,
|
|
935
|
+
ModelCatalogPanel,
|
|
936
|
+
PricingGovernanceConsole,
|
|
847
937
|
CREDIT_PACKS,
|
|
848
938
|
formatPackPrice,
|
|
849
939
|
formatCreditCount,
|
|
@@ -860,11 +950,23 @@ export type {
|
|
|
860
950
|
UseCreditLedgerOptions,
|
|
861
951
|
UseBillingUsageReportReturn,
|
|
862
952
|
UseCustomerModelPricingReturn,
|
|
953
|
+
UsePricingGovernanceReturn,
|
|
954
|
+
UseModelPricingBaselinesOptions,
|
|
955
|
+
UseModelPricingBaselinesReturn,
|
|
956
|
+
GovernanceFlow,
|
|
957
|
+
ModelGovernanceRow,
|
|
958
|
+
UseModelGovernanceViewReturn,
|
|
863
959
|
CreateCheckoutSessionInput,
|
|
864
960
|
UseCreateCheckoutSessionReturn,
|
|
865
961
|
UseCreateBillingPortalSessionReturn,
|
|
866
962
|
SetAutoRechargeConfigInput,
|
|
867
963
|
UseSetAutoRechargeConfigReturn,
|
|
964
|
+
DecidePricingOverrideInput,
|
|
965
|
+
UseDecidePricingOverrideReturn,
|
|
966
|
+
UpsertModelPricingBaselineInput,
|
|
967
|
+
UseUpsertModelPricingBaselineReturn,
|
|
968
|
+
RetireModelPricingBaselineInput,
|
|
969
|
+
UseRetireModelPricingBaselineReturn,
|
|
868
970
|
BillingSectionProps,
|
|
869
971
|
CreditBalanceCardProps,
|
|
870
972
|
PaymentMethodCardProps,
|
|
@@ -872,11 +974,46 @@ export type {
|
|
|
872
974
|
CreditPackGridProps,
|
|
873
975
|
CreditLedgerTableProps,
|
|
874
976
|
LowBalanceBannerProps,
|
|
977
|
+
PricingGovernancePanelProps,
|
|
978
|
+
ModelCatalogPanelProps,
|
|
979
|
+
PricingGovernanceConsoleProps,
|
|
980
|
+
PricingGovernanceTab,
|
|
875
981
|
CreditPackInfo,
|
|
876
982
|
} from "./billing/index.js";
|
|
877
983
|
|
|
984
|
+
// Cursor accounts — platform-operator management of managed Cursor teams
|
|
985
|
+
// (admin keys, member execution keys, org assignments, roster/spend)
|
|
986
|
+
export {
|
|
987
|
+
useCursorAccounts,
|
|
988
|
+
useCursorAccountView,
|
|
989
|
+
useUpsertCursorAccount,
|
|
990
|
+
useDeleteCursorAccount,
|
|
991
|
+
useCursorMemberKeyActions,
|
|
992
|
+
useSyncCursorAccount,
|
|
993
|
+
CursorAccountsConsole,
|
|
994
|
+
CursorAccountEditor,
|
|
995
|
+
CursorAccountsAccessNotice,
|
|
996
|
+
} from "./cursor-accounts/index.js";
|
|
997
|
+
export type {
|
|
998
|
+
UseCursorAccountsReturn,
|
|
999
|
+
UseCursorAccountViewReturn,
|
|
1000
|
+
UseUpsertCursorAccountReturn,
|
|
1001
|
+
DeleteCursorAccountInput,
|
|
1002
|
+
UseDeleteCursorAccountReturn,
|
|
1003
|
+
AddCursorMemberKeyInput,
|
|
1004
|
+
RemoveCursorMemberKeyInput,
|
|
1005
|
+
UseCursorMemberKeyActionsReturn,
|
|
1006
|
+
UseSyncCursorAccountReturn,
|
|
1007
|
+
CursorAccountsConsoleProps,
|
|
1008
|
+
CursorAccountEditorProps,
|
|
1009
|
+
} from "./cursor-accounts/index.js";
|
|
1010
|
+
|
|
878
1011
|
// Settings — navigation structure + section components shared across app shells
|
|
879
|
-
export {
|
|
1012
|
+
export {
|
|
1013
|
+
SETTINGS_NAV_GROUPS,
|
|
1014
|
+
PLATFORM_SETTINGS_NAV_GROUP,
|
|
1015
|
+
useSettingsNavGroups,
|
|
1016
|
+
} from "./settings/index.js";
|
|
880
1017
|
export type { SettingsNavItem, SettingsNavGroup } from "./settings/index.js";
|
|
881
1018
|
export { ApiKeysSection } from "./settings/index.js";
|
|
882
1019
|
export { MembersSection } from "./settings/index.js";
|
|
@@ -1140,15 +1277,8 @@ export {
|
|
|
1140
1277
|
findStreamingPlan,
|
|
1141
1278
|
PLAN_ARTIFACT_NAME,
|
|
1142
1279
|
PLAN_ARTIFACT_SUFFIX,
|
|
1143
|
-
parseResourceYaml,
|
|
1144
|
-
serializeAgentYaml,
|
|
1145
|
-
serializeMcpServerYaml,
|
|
1146
|
-
serializeAgentInputYaml,
|
|
1147
|
-
serializeMcpServerInputYaml,
|
|
1148
1280
|
useApplyResource,
|
|
1149
1281
|
useExportResource,
|
|
1150
|
-
useImportResource,
|
|
1151
|
-
ImportResourceDialog,
|
|
1152
1282
|
VisibilitySelector,
|
|
1153
1283
|
VisibilityBadge,
|
|
1154
1284
|
blueprintVisibilityLevels,
|
|
@@ -1165,23 +1295,42 @@ export type {
|
|
|
1165
1295
|
SessionPlan,
|
|
1166
1296
|
StreamingPlan,
|
|
1167
1297
|
UseDetectSkillPackageReturn,
|
|
1168
|
-
ParsedResource,
|
|
1169
1298
|
UseApplyResourceReturn,
|
|
1170
1299
|
ApplyResourceResult,
|
|
1171
1300
|
PushSkillParams,
|
|
1172
1301
|
UseExportResourceOptions,
|
|
1173
1302
|
UseExportResourceReturn,
|
|
1174
|
-
ImportFormat,
|
|
1175
|
-
ImportPreview,
|
|
1176
|
-
UseImportResourceReturn,
|
|
1177
|
-
ImportResourceDialogProps,
|
|
1178
1303
|
VisibilitySelectorProps,
|
|
1304
|
+
VisibilityBadgeProps,
|
|
1179
1305
|
VisibilityLevelOption,
|
|
1180
1306
|
BlueprintVisibilityLevelsContext,
|
|
1181
1307
|
VisibilityResourceKind,
|
|
1182
1308
|
UseUpdateVisibilityReturn,
|
|
1183
1309
|
} from "./library/index.js";
|
|
1184
1310
|
|
|
1311
|
+
// Manifest — kind-agnostic YAML edit/apply (editor, hooks, dialogs)
|
|
1312
|
+
export {
|
|
1313
|
+
YamlEditor,
|
|
1314
|
+
useEditResourceYaml,
|
|
1315
|
+
useApplyManifest,
|
|
1316
|
+
EditResourceYamlDialog,
|
|
1317
|
+
ApplyManifestDialog,
|
|
1318
|
+
RedactedSecretsNotice,
|
|
1319
|
+
} from "./manifest/index.js";
|
|
1320
|
+
export type {
|
|
1321
|
+
YamlEditorProps,
|
|
1322
|
+
EditYamlTarget,
|
|
1323
|
+
EditYamlValidation,
|
|
1324
|
+
UseEditResourceYamlOptions,
|
|
1325
|
+
UseEditResourceYamlReturn,
|
|
1326
|
+
ManifestEntryStatus,
|
|
1327
|
+
ManifestPreviewEntry,
|
|
1328
|
+
UseApplyManifestReturn,
|
|
1329
|
+
EditResourceYamlDialogProps,
|
|
1330
|
+
ApplyManifestDialogProps,
|
|
1331
|
+
RedactedSecretsNoticeProps,
|
|
1332
|
+
} from "./manifest/index.js";
|
|
1333
|
+
|
|
1185
1334
|
// Action menu — compound component for resource item actions
|
|
1186
1335
|
export { ActionMenu } from "./action-menu/index.js";
|
|
1187
1336
|
export type {
|
|
@@ -1485,7 +1634,7 @@ export {
|
|
|
1485
1634
|
WorkflowChangesTab,
|
|
1486
1635
|
WorkflowUsageTab,
|
|
1487
1636
|
WorkflowArtifactDocument,
|
|
1488
|
-
|
|
1637
|
+
WorkflowAgentCallTranscript,
|
|
1489
1638
|
useWorkflowArtifactDownload,
|
|
1490
1639
|
useWorkflowExecutionFileChanges,
|
|
1491
1640
|
enumerateAgentCallChildren,
|
|
@@ -1627,7 +1776,7 @@ export type {
|
|
|
1627
1776
|
UseWorkflowExecutionFileChangesOptions,
|
|
1628
1777
|
UseWorkflowExecutionFileChangesReturn,
|
|
1629
1778
|
WorkflowArtifactDocumentProps,
|
|
1630
|
-
|
|
1779
|
+
WorkflowAgentCallTranscriptProps,
|
|
1631
1780
|
WorkflowAgentExecutionHitl,
|
|
1632
1781
|
UseWorkflowArtifactDownloadReturn,
|
|
1633
1782
|
WorkflowArtifactEntry,
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { render, act, screen, cleanup } from "@testing-library/react";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { useInViewport, type UseInViewportReturn } from "../useInViewport";
|
|
5
|
+
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Test harness — renders a real element so the ref gets populated
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
let latestResult: UseInViewportReturn;
|
|
11
|
+
|
|
12
|
+
function Harness() {
|
|
13
|
+
const result = useInViewport();
|
|
14
|
+
latestResult = result;
|
|
15
|
+
return <div ref={result.ref} data-testid="target" />;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Observer mock (the useAutoScroll.test pattern)
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
|
|
22
|
+
type IOCallback = IntersectionObserverCallback;
|
|
23
|
+
|
|
24
|
+
let ioCallback: IOCallback;
|
|
25
|
+
let ioDisconnect: ReturnType<typeof vi.fn>;
|
|
26
|
+
let ioObserve: ReturnType<typeof vi.fn>;
|
|
27
|
+
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
ioDisconnect = vi.fn();
|
|
30
|
+
ioObserve = vi.fn();
|
|
31
|
+
|
|
32
|
+
vi.stubGlobal(
|
|
33
|
+
"IntersectionObserver",
|
|
34
|
+
vi.fn((cb: IOCallback) => {
|
|
35
|
+
ioCallback = cb;
|
|
36
|
+
return {
|
|
37
|
+
observe: ioObserve,
|
|
38
|
+
unobserve: vi.fn(),
|
|
39
|
+
disconnect: ioDisconnect,
|
|
40
|
+
takeRecords: vi.fn(() => []),
|
|
41
|
+
root: null,
|
|
42
|
+
rootMargin: "",
|
|
43
|
+
thresholds: [0],
|
|
44
|
+
};
|
|
45
|
+
}),
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
afterEach(() => {
|
|
50
|
+
cleanup();
|
|
51
|
+
vi.restoreAllMocks();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
function fireIO(isIntersecting: boolean) {
|
|
55
|
+
act(() => {
|
|
56
|
+
ioCallback(
|
|
57
|
+
[{ isIntersecting } as IntersectionObserverEntry],
|
|
58
|
+
{} as IntersectionObserver,
|
|
59
|
+
);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Tests
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
|
|
67
|
+
describe("useInViewport", () => {
|
|
68
|
+
it("starts not-visible until the observer's first callback", () => {
|
|
69
|
+
render(<Harness />);
|
|
70
|
+
expect(latestResult.isVisible).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("observes the target element on mount", () => {
|
|
74
|
+
render(<Harness />);
|
|
75
|
+
expect(ioObserve).toHaveBeenCalledWith(screen.getByTestId("target"));
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it("uses the top-level viewport as root with the pre-warm margin", () => {
|
|
79
|
+
render(<Harness />);
|
|
80
|
+
const IOConstructor = vi.mocked(IntersectionObserver);
|
|
81
|
+
const options = IOConstructor.mock.calls[0]?.[1];
|
|
82
|
+
expect(options?.root).toBeNull();
|
|
83
|
+
expect(options?.rootMargin).toBe("200px 0px 200px 0px");
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("flips visible on enter and back on leave", () => {
|
|
87
|
+
render(<Harness />);
|
|
88
|
+
|
|
89
|
+
fireIO(true);
|
|
90
|
+
expect(latestResult.isVisible).toBe(true);
|
|
91
|
+
|
|
92
|
+
fireIO(false);
|
|
93
|
+
expect(latestResult.isVisible).toBe(false);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it("reads the LATEST entry when a batch carries several", () => {
|
|
97
|
+
render(<Harness />);
|
|
98
|
+
act(() => {
|
|
99
|
+
ioCallback(
|
|
100
|
+
[
|
|
101
|
+
{ isIntersecting: true } as IntersectionObserverEntry,
|
|
102
|
+
{ isIntersecting: false } as IntersectionObserverEntry,
|
|
103
|
+
],
|
|
104
|
+
{} as IntersectionObserver,
|
|
105
|
+
);
|
|
106
|
+
});
|
|
107
|
+
expect(latestResult.isVisible).toBe(false);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it("disconnects the observer on unmount", () => {
|
|
111
|
+
const { unmount } = render(<Harness />);
|
|
112
|
+
unmount();
|
|
113
|
+
expect(ioDisconnect).toHaveBeenCalled();
|
|
114
|
+
});
|
|
115
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Pre-warm margin in pixels. The element is reported visible while it is
|
|
7
|
+
* within this distance of the viewport, so consumers that attach expensive
|
|
8
|
+
* resources on visibility (e.g. a live stream subscription) connect just
|
|
9
|
+
* BEFORE the element scrolls into view and linger just after it leaves —
|
|
10
|
+
* a fast scroll past a row never thrashes connect/disconnect.
|
|
11
|
+
*/
|
|
12
|
+
const PREWARM_MARGIN_PX = 200;
|
|
13
|
+
|
|
14
|
+
export interface UseInViewportReturn {
|
|
15
|
+
/** Attach to the element whose viewport visibility is tracked. */
|
|
16
|
+
readonly ref: React.RefObject<HTMLDivElement | null>;
|
|
17
|
+
/** True while the element is within the pre-warmed viewport. */
|
|
18
|
+
readonly isVisible: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Headless viewport-visibility hook over `IntersectionObserver`.
|
|
23
|
+
*
|
|
24
|
+
* `root` is deliberately `null` (the top-level viewport): per the
|
|
25
|
+
* IntersectionObserver spec, an element clipped by any intervening
|
|
26
|
+
* scroll container (e.g. the workflow thread's own scroller) does not
|
|
27
|
+
* intersect the viewport either, so nested scroll contexts are handled
|
|
28
|
+
* without naming them. `display: none` subtrees report not-visible — a
|
|
29
|
+
* CSS-hidden center view correctly suspends its visibility-gated work.
|
|
30
|
+
*
|
|
31
|
+
* Starts `false` until the observer's first callback; consumers should
|
|
32
|
+
* treat visibility as an upgrade signal, not a render gate.
|
|
33
|
+
*
|
|
34
|
+
* @internal Not part of the public API (promote if a second consumer
|
|
35
|
+
* appears outside the workflow thread).
|
|
36
|
+
*/
|
|
37
|
+
export function useInViewport(): UseInViewportReturn {
|
|
38
|
+
const ref = useRef<HTMLDivElement | null>(null);
|
|
39
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
const el = ref.current;
|
|
43
|
+
if (!el) return;
|
|
44
|
+
|
|
45
|
+
const io = new IntersectionObserver(
|
|
46
|
+
(entries) => {
|
|
47
|
+
const entry = entries[entries.length - 1];
|
|
48
|
+
if (!entry) return;
|
|
49
|
+
setIsVisible(entry.isIntersecting);
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
root: null,
|
|
53
|
+
rootMargin: `${PREWARM_MARGIN_PX}px 0px ${PREWARM_MARGIN_PX}px 0px`,
|
|
54
|
+
threshold: 0,
|
|
55
|
+
},
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
io.observe(el);
|
|
59
|
+
return () => io.disconnect();
|
|
60
|
+
}, []);
|
|
61
|
+
|
|
62
|
+
return { ref, isVisible };
|
|
63
|
+
}
|
|
@@ -409,28 +409,69 @@ function CaretIcon() {
|
|
|
409
409
|
);
|
|
410
410
|
}
|
|
411
411
|
|
|
412
|
+
/** Props for {@link VisibilityBadge}. */
|
|
413
|
+
export interface VisibilityBadgeProps {
|
|
414
|
+
/** The visibility level to display. */
|
|
415
|
+
readonly visibility: ApiResourceVisibility;
|
|
416
|
+
/** Additional CSS classes applied to the chip. */
|
|
417
|
+
readonly className?: string;
|
|
418
|
+
/**
|
|
419
|
+
* When provided, the badge renders as a button and invokes this on
|
|
420
|
+
* activation. Detail headers use it as a shortcut into the Manage access
|
|
421
|
+
* dialog, so the at-a-glance chip is also the entry point to editing —
|
|
422
|
+
* the chip stays navigation-only (the dialog remains the single writer
|
|
423
|
+
* for both access axes). Omit it for a plain, non-interactive badge.
|
|
424
|
+
*/
|
|
425
|
+
readonly onClick?: () => void;
|
|
426
|
+
}
|
|
427
|
+
|
|
412
428
|
/**
|
|
413
|
-
*
|
|
414
|
-
*
|
|
429
|
+
* Visibility indicator with a matching icon, covering all four levels
|
|
430
|
+
* (Private / Organization / Platform / Public).
|
|
415
431
|
*
|
|
416
432
|
* Rendered wherever the interactive {@link VisibilitySelector} is not
|
|
417
433
|
* available — for viewers who lack `can_edit`, and while a permission check
|
|
418
434
|
* is in flight — so a resource's visibility is always legible rather than
|
|
419
435
|
* silently blank. Shares the chip styling with the selector trigger so the
|
|
420
436
|
* read-only and editable states are visually consistent.
|
|
437
|
+
*
|
|
438
|
+
* With {@link VisibilityBadgeProps.onClick} the chip becomes an accessible
|
|
439
|
+
* button (hover + focus affordances, "Manage access" label) that hosts wire
|
|
440
|
+
* to their access-management surface; the badge itself never edits.
|
|
421
441
|
*/
|
|
422
442
|
export function VisibilityBadge({
|
|
423
443
|
visibility,
|
|
424
444
|
className,
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
readonly className?: string;
|
|
428
|
-
}) {
|
|
445
|
+
onClick,
|
|
446
|
+
}: VisibilityBadgeProps) {
|
|
429
447
|
const option = visibilityOption(visibility);
|
|
430
|
-
|
|
431
|
-
|
|
448
|
+
const content = (
|
|
449
|
+
<>
|
|
432
450
|
<VisibilityIcon tone={option.tone} className="size-2.5" />
|
|
433
451
|
{option.label}
|
|
434
|
-
|
|
452
|
+
</>
|
|
453
|
+
);
|
|
454
|
+
|
|
455
|
+
if (onClick) {
|
|
456
|
+
return (
|
|
457
|
+
<button
|
|
458
|
+
type="button"
|
|
459
|
+
onClick={onClick}
|
|
460
|
+
title="Manage access"
|
|
461
|
+
aria-label={`${option.label} visibility — manage access`}
|
|
462
|
+
className={cn(
|
|
463
|
+
VISIBILITY_CHIP_CLASS,
|
|
464
|
+
"transition-colors hover:bg-accent-hover hover:text-foreground",
|
|
465
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
466
|
+
className,
|
|
467
|
+
)}
|
|
468
|
+
>
|
|
469
|
+
{content}
|
|
470
|
+
</button>
|
|
471
|
+
);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
return (
|
|
475
|
+
<span className={cn(VISIBILITY_CHIP_CLASS, className)}>{content}</span>
|
|
435
476
|
);
|
|
436
477
|
}
|