@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,253 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import { useCallback, useMemo, useRef, useState } from "react";
|
|
4
|
-
import { stringify as stringifyYaml } from "yaml";
|
|
5
|
-
import { useStigmer } from "../hooks.js";
|
|
6
|
-
import { toError } from "../internal/toError.js";
|
|
7
|
-
import { parseResourceYaml, type ParsedResource } from "./parse-resource-yaml.js";
|
|
8
|
-
import type { ApplyResourceResult } from "./useApplyResource.js";
|
|
9
|
-
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
// Types
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
|
|
14
|
-
/** Detected format of the imported file content. */
|
|
15
|
-
export type ImportFormat = "yaml" | "json";
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Validated preview of an imported resource, shown to the user before
|
|
19
|
-
* they confirm the apply operation.
|
|
20
|
-
*/
|
|
21
|
-
export interface ImportPreview {
|
|
22
|
-
/** The detected resource kind. */
|
|
23
|
-
readonly kind: "Agent" | "McpServer";
|
|
24
|
-
/** The resource name from `metadata.name`. */
|
|
25
|
-
readonly name: string;
|
|
26
|
-
/** The resource slug from `metadata.slug`, if present. */
|
|
27
|
-
readonly slug?: string;
|
|
28
|
-
/** The detected file format. */
|
|
29
|
-
readonly format: ImportFormat;
|
|
30
|
-
/** The raw file content (for potential display or debugging). */
|
|
31
|
-
readonly rawContent: string;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/** Return value of {@link useImportResource}. */
|
|
35
|
-
export interface UseImportResourceReturn {
|
|
36
|
-
/**
|
|
37
|
-
* Read and validate a file selected by the user. On success, populates
|
|
38
|
-
* `preview`. On failure, populates `error`. In both cases, clears the
|
|
39
|
-
* previous state first.
|
|
40
|
-
*/
|
|
41
|
-
readonly readFile: (file: File) => Promise<void>;
|
|
42
|
-
/** The validation preview, or `null` when no file has been validated. */
|
|
43
|
-
readonly preview: ImportPreview | null;
|
|
44
|
-
/** Validation or apply error message, or `null` when healthy. */
|
|
45
|
-
readonly error: string | null;
|
|
46
|
-
/** Clear all state (preview, error, internal content). */
|
|
47
|
-
readonly reset: () => void;
|
|
48
|
-
/**
|
|
49
|
-
* Apply the previewed resource to the given organization.
|
|
50
|
-
* Only callable when `preview` is non-null.
|
|
51
|
-
*
|
|
52
|
-
* @throws Re-throws the original error after setting `error` state.
|
|
53
|
-
*/
|
|
54
|
-
readonly apply: (org: string) => Promise<ApplyResourceResult>;
|
|
55
|
-
/** `true` while the apply RPC is in-flight. */
|
|
56
|
-
readonly isApplying: boolean;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
// Hook
|
|
61
|
-
// ---------------------------------------------------------------------------
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Headless import hook for Stigmer resources.
|
|
65
|
-
*
|
|
66
|
-
* Orchestrates the file import workflow:
|
|
67
|
-
* 1. User selects a `.yaml`, `.yml`, or `.json` file
|
|
68
|
-
* 2. `readFile` reads the content, detects the format, and validates
|
|
69
|
-
* the structure via `parseResourceYaml`
|
|
70
|
-
* 3. On success, `preview` is populated with kind, name, slug, format
|
|
71
|
-
* 4. On validation error, `error` is populated with a user-facing message
|
|
72
|
-
* 5. User confirms → `apply(org)` calls the appropriate SDK `apply()` method
|
|
73
|
-
*
|
|
74
|
-
* Follows the established mutation-hook pattern: `isApplying` + `error` +
|
|
75
|
-
* `reset`. The `preview` state enables a confirmation step before committing
|
|
76
|
-
* (Nielsen heuristic #3: user control, #5: error prevention).
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* ```tsx
|
|
80
|
-
* const { readFile, preview, error, reset, apply, isApplying } = useImportResource();
|
|
81
|
-
*
|
|
82
|
-
* const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
83
|
-
* const file = e.target.files?.[0];
|
|
84
|
-
* if (file) readFile(file);
|
|
85
|
-
* };
|
|
86
|
-
*
|
|
87
|
-
* if (preview) {
|
|
88
|
-
* return (
|
|
89
|
-
* <div>
|
|
90
|
-
* <p>Import {preview.kind}: {preview.name}</p>
|
|
91
|
-
* <button onClick={() => apply(org)} disabled={isApplying}>
|
|
92
|
-
* Confirm
|
|
93
|
-
* </button>
|
|
94
|
-
* </div>
|
|
95
|
-
* );
|
|
96
|
-
* }
|
|
97
|
-
* ```
|
|
98
|
-
*
|
|
99
|
-
* @see {@link parseResourceYaml} for the validation logic
|
|
100
|
-
* @see {@link ImportResourceDialog} for the styled component that composes this hook
|
|
101
|
-
*/
|
|
102
|
-
export function useImportResource(): UseImportResourceReturn {
|
|
103
|
-
const stigmer = useStigmer();
|
|
104
|
-
const [preview, setPreview] = useState<ImportPreview | null>(null);
|
|
105
|
-
const [error, setError] = useState<string | null>(null);
|
|
106
|
-
const [isApplying, setIsApplying] = useState(false);
|
|
107
|
-
|
|
108
|
-
const contentRef = useRef<string | null>(null);
|
|
109
|
-
const parsedRef = useRef<ParsedResource | null>(null);
|
|
110
|
-
|
|
111
|
-
const reset = useCallback(() => {
|
|
112
|
-
setPreview(null);
|
|
113
|
-
setError(null);
|
|
114
|
-
setIsApplying(false);
|
|
115
|
-
contentRef.current = null;
|
|
116
|
-
parsedRef.current = null;
|
|
117
|
-
}, []);
|
|
118
|
-
|
|
119
|
-
const readFile = useCallback(async (file: File) => {
|
|
120
|
-
setPreview(null);
|
|
121
|
-
setError(null);
|
|
122
|
-
contentRef.current = null;
|
|
123
|
-
parsedRef.current = null;
|
|
124
|
-
|
|
125
|
-
let text: string;
|
|
126
|
-
try {
|
|
127
|
-
text = await file.text();
|
|
128
|
-
} catch {
|
|
129
|
-
setError("Failed to read the selected file.");
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (!text.trim()) {
|
|
134
|
-
setError("The selected file is empty.");
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
const format = detectFormat(file.name, text);
|
|
139
|
-
|
|
140
|
-
// For JSON files, convert to YAML-parseable content first.
|
|
141
|
-
// parseResourceYaml expects YAML, but since YAML is a superset of JSON,
|
|
142
|
-
// we can pass JSON directly. However for cleaner error messages, we
|
|
143
|
-
// normalize JSON → plain object → YAML string if needed.
|
|
144
|
-
let yamlContent: string;
|
|
145
|
-
if (format === "json") {
|
|
146
|
-
try {
|
|
147
|
-
const parsed = JSON.parse(text) as unknown;
|
|
148
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
149
|
-
setError("JSON file must contain a single object (not an array or primitive).");
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
yamlContent = stringifyYaml(parsed);
|
|
153
|
-
} catch {
|
|
154
|
-
setError("The file does not contain valid JSON.");
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
} else {
|
|
158
|
-
yamlContent = text;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// Validate structure using the existing parser. We use a dummy org
|
|
162
|
-
// here — the real org is provided at apply time.
|
|
163
|
-
let parsed: ParsedResource;
|
|
164
|
-
try {
|
|
165
|
-
parsed = parseResourceYaml(yamlContent, "__preview__");
|
|
166
|
-
} catch (err) {
|
|
167
|
-
setError(err instanceof Error ? err.message : "Failed to validate resource file.");
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
contentRef.current = yamlContent;
|
|
172
|
-
parsedRef.current = parsed;
|
|
173
|
-
|
|
174
|
-
setPreview({
|
|
175
|
-
kind: parsed.kind,
|
|
176
|
-
name: parsed.input.name,
|
|
177
|
-
slug: "slug" in parsed.input ? (parsed.input.slug as string | undefined) : undefined,
|
|
178
|
-
format,
|
|
179
|
-
rawContent: text,
|
|
180
|
-
});
|
|
181
|
-
}, []);
|
|
182
|
-
|
|
183
|
-
const apply = useCallback(async (org: string): Promise<ApplyResourceResult> => {
|
|
184
|
-
const content = contentRef.current;
|
|
185
|
-
if (!content) {
|
|
186
|
-
throw new Error("No file has been validated. Call readFile first.");
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
setIsApplying(true);
|
|
190
|
-
setError(null);
|
|
191
|
-
|
|
192
|
-
try {
|
|
193
|
-
const parsed = parseResourceYaml(content, org);
|
|
194
|
-
|
|
195
|
-
switch (parsed.kind) {
|
|
196
|
-
case "Agent": {
|
|
197
|
-
const agent = await stigmer.agent.apply(parsed.input);
|
|
198
|
-
return {
|
|
199
|
-
kind: "Agent",
|
|
200
|
-
name: agent.metadata?.name ?? parsed.input.name,
|
|
201
|
-
org: agent.metadata?.org ?? org,
|
|
202
|
-
slug: agent.metadata?.slug ?? parsed.input.name,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
case "McpServer": {
|
|
206
|
-
const mcpServer = await stigmer.mcpServer.apply(parsed.input);
|
|
207
|
-
return {
|
|
208
|
-
kind: "McpServer",
|
|
209
|
-
name: mcpServer.metadata?.name ?? parsed.input.name,
|
|
210
|
-
org: mcpServer.metadata?.org ?? org,
|
|
211
|
-
slug: mcpServer.metadata?.slug ?? parsed.input.name,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
} catch (err) {
|
|
216
|
-
const message = toError(err).message;
|
|
217
|
-
setError(message);
|
|
218
|
-
throw err;
|
|
219
|
-
} finally {
|
|
220
|
-
setIsApplying(false);
|
|
221
|
-
}
|
|
222
|
-
}, [stigmer]);
|
|
223
|
-
|
|
224
|
-
return useMemo(
|
|
225
|
-
() => ({ readFile, preview, error, reset, apply, isApplying }),
|
|
226
|
-
[readFile, preview, error, reset, apply, isApplying],
|
|
227
|
-
);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// ---------------------------------------------------------------------------
|
|
231
|
-
// Format detection
|
|
232
|
-
// ---------------------------------------------------------------------------
|
|
233
|
-
|
|
234
|
-
const JSON_EXTENSIONS = new Set([".json"]);
|
|
235
|
-
const YAML_EXTENSIONS = new Set([".yaml", ".yml"]);
|
|
236
|
-
|
|
237
|
-
function detectFormat(filename: string, content: string): ImportFormat {
|
|
238
|
-
const lowerName = filename.toLowerCase();
|
|
239
|
-
const dotIndex = lowerName.lastIndexOf(".");
|
|
240
|
-
if (dotIndex >= 0) {
|
|
241
|
-
const ext = lowerName.slice(dotIndex);
|
|
242
|
-
if (JSON_EXTENSIONS.has(ext)) return "json";
|
|
243
|
-
if (YAML_EXTENSIONS.has(ext)) return "yaml";
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// Fallback: try parsing as JSON. If it parses, treat as JSON.
|
|
247
|
-
try {
|
|
248
|
-
JSON.parse(content);
|
|
249
|
-
return "json";
|
|
250
|
-
} catch {
|
|
251
|
-
return "yaml";
|
|
252
|
-
}
|
|
253
|
-
}
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// Editor-area document rendering one child AgentExecution's full transcript.
|
|
4
|
-
// Domain: workflow (the AGENT_CALL counterpart of WorkflowArtifactDocument).
|
|
5
|
-
|
|
6
|
-
import { memo, useCallback, useMemo } from "react";
|
|
7
|
-
import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
8
|
-
import {
|
|
9
|
-
FileChangeSetStatus,
|
|
10
|
-
type FileDecisionAction,
|
|
11
|
-
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
12
|
-
import type { FileChangeSet } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/filereview_pb";
|
|
13
|
-
import { displayFileChangeSets } from "@stigmer/sdk";
|
|
14
|
-
import { cn } from "@stigmer/theme";
|
|
15
|
-
import { useLiveAgentExecution } from "../execution/useLiveAgentExecution.js";
|
|
16
|
-
import { MessageThread } from "../execution/MessageThread.js";
|
|
17
|
-
import { ThreadSkeleton } from "../execution/ThreadSkeleton.js";
|
|
18
|
-
import { ExecutionPhaseBadge } from "../execution/ExecutionPhaseBadge.js";
|
|
19
|
-
import { FileReviewDock } from "../execution/FileReviewDock.js";
|
|
20
|
-
import type { FileDecisionOptions } from "../execution/useFileReview.js";
|
|
21
|
-
import { isTerminalPhase } from "../execution/execution-phases.js";
|
|
22
|
-
import type { UseWorkflowExecutionActionsReturn } from "./useWorkflowExecutionActions.js";
|
|
23
|
-
|
|
24
|
-
/** Stable empty list so the thread's memoized rows keep identity (DD-010). */
|
|
25
|
-
const EMPTY_EXECUTIONS: readonly AgentExecution[] = [];
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* The HITL wiring for a child transcript: the slice of
|
|
29
|
-
* {@link UseWorkflowExecutionActionsReturn} the document needs to submit
|
|
30
|
-
* child-gate decisions at the WORKFLOW level.
|
|
31
|
-
*
|
|
32
|
-
* A `Pick` (not a new shape) so the bundle can never drift from the actions
|
|
33
|
-
* hook — the viewer builds it from its single `useWorkflowExecutionActions`
|
|
34
|
-
* instance, which is the same keyed in-flight/error state the bottom
|
|
35
|
-
* Approvals tab renders. One instance, two surfaces: a spinner or failure on
|
|
36
|
-
* a gate is identical wherever that gate is shown.
|
|
37
|
-
*/
|
|
38
|
-
export type WorkflowAgentExecutionHitl = Pick<
|
|
39
|
-
UseWorkflowExecutionActionsReturn,
|
|
40
|
-
| "submitApproval"
|
|
41
|
-
| "approvalSubmittingToolCallIds"
|
|
42
|
-
| "approvalErrorsByToolCallId"
|
|
43
|
-
| "submitFileDecision"
|
|
44
|
-
| "fileDecisionSubmittingKeys"
|
|
45
|
-
| "fileDecisionErrorsByKey"
|
|
46
|
-
>;
|
|
47
|
-
|
|
48
|
-
/** Props for {@link WorkflowAgentExecutionDocument}. */
|
|
49
|
-
export interface WorkflowAgentExecutionDocumentProps {
|
|
50
|
-
/** ID of the child AgentExecution whose transcript to render. */
|
|
51
|
-
readonly childExecutionId: string;
|
|
52
|
-
/** The AGENT_CALL task that spawned the child — the document's title. */
|
|
53
|
-
readonly taskName: string;
|
|
54
|
-
/** Slug of the agent the task called, when known (subtitle context). */
|
|
55
|
-
readonly agentSlug?: string;
|
|
56
|
-
/**
|
|
57
|
-
* Open the child execution as a standalone page — the pop-out escape hatch
|
|
58
|
-
* preserved from the inspector's Agent tab. Host-routed (DD-004).
|
|
59
|
-
*/
|
|
60
|
-
readonly onNavigateToAgentExecution?: (agentExecutionId: string) => void;
|
|
61
|
-
/**
|
|
62
|
-
* Workflow-level HITL handlers (S5 of the UX-parity project). When
|
|
63
|
-
* provided, the transcript becomes interactive: tool-approval gates render
|
|
64
|
-
* their decision cards inline on the gated rows, and pending file reviews
|
|
65
|
-
* dock at the bottom of the document. When omitted, the transcript is
|
|
66
|
-
* read-only — gates show status only (backward compatible, DD-011).
|
|
67
|
-
*/
|
|
68
|
-
readonly hitl?: WorkflowAgentExecutionHitl;
|
|
69
|
-
/** Additional CSS classes for the root element. */
|
|
70
|
-
readonly className?: string;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* The editor-pane rendering of a child AgentExecution's transcript — the
|
|
75
|
-
* `SurfaceVirtualDocument` body the workflow execution panel mounts when an
|
|
76
|
-
* AGENT_CALL task is opened in place (S4 of the UX-parity project). This is
|
|
77
|
-
* the full session-grade experience — streaming `MessageThread` with tool
|
|
78
|
-
* calls, sub-agents, plan cards, and (with {@link
|
|
79
|
-
* WorkflowAgentExecutionDocumentProps.hitl | hitl}) in-place HITL —
|
|
80
|
-
* replacing the inspector's cramped `max-h-[50vh]` thumbnail.
|
|
81
|
-
*
|
|
82
|
-
* HITL ROUTING. Child gates are decided through the WORKFLOW-level RPCs
|
|
83
|
-
* (`WorkflowExecution.submitApproval` / `submitFileDecision`), never the
|
|
84
|
-
* child's own `agentExecution.*` submit path. The two paths are
|
|
85
|
-
* server-equivalent (the workflow RPC forwards to the child — see
|
|
86
|
-
* workflowexecution command.proto), but they differ in authorization: the
|
|
87
|
-
* workflow RPC checks `can_edit` on the workflow execution — the resource
|
|
88
|
-
* the operator owns — while the child path checks the runner-spawned
|
|
89
|
-
* AgentExecution, which the operator may not. Every workflow HITL surface
|
|
90
|
-
* (bottom Approvals tab, inspector) routes this way; the transcript joins
|
|
91
|
-
* them via the same actions instance, so in-flight/error state never forks.
|
|
92
|
-
*
|
|
93
|
-
* FILE-REVIEW DOCK. Pending (AWAITING_REVIEW) sets derive from the CHILD's
|
|
94
|
-
* own live stream — the freshest source this document already holds — not
|
|
95
|
-
* from the parent's `status.pending_file_reviews`: the parent snapshot is
|
|
96
|
-
* fetched once at mount and may lag a mid-run gate, which would blank the
|
|
97
|
-
* dock exactly when the reviewer is watching live. The server validates
|
|
98
|
-
* routing against its own (fresh) stored status at submit time, so a
|
|
99
|
-
* too-early decision degrades to a retryable in-card error, the same
|
|
100
|
-
* treatment tool approvals get. Docked below the thread (mirroring the
|
|
101
|
-
* session's composer dock) so a decision the agent is blocked on can never
|
|
102
|
-
* scroll out of view; settled sets render as read-only records in-thread
|
|
103
|
-
* (`showFileReviewRecords`), never in the dock — the two surfaces partition
|
|
104
|
-
* by the same pending test `MessageThread` uses.
|
|
105
|
-
*
|
|
106
|
-
* Lifecycle: the surface's editor area mounts only the ACTIVE virtual
|
|
107
|
-
* document, so `useLiveAgentExecution` fetches/streams only while this tab
|
|
108
|
-
* is foregrounded (DD-LIVE-006 — at most one child stream is ever live) and
|
|
109
|
-
* a tab-return re-renders instantly from the DD-014 fetch cache.
|
|
110
|
-
*
|
|
111
|
-
* All visual properties flow through `--stgm-*` tokens (DD-005).
|
|
112
|
-
*/
|
|
113
|
-
export const WorkflowAgentExecutionDocument = memo(
|
|
114
|
-
function WorkflowAgentExecutionDocument({
|
|
115
|
-
childExecutionId,
|
|
116
|
-
taskName,
|
|
117
|
-
agentSlug,
|
|
118
|
-
onNavigateToAgentExecution,
|
|
119
|
-
hitl,
|
|
120
|
-
className,
|
|
121
|
-
}: WorkflowAgentExecutionDocumentProps) {
|
|
122
|
-
const { execution, phase, isLoading, isStreaming, isReconnecting, error, reconnect } =
|
|
123
|
-
useLiveAgentExecution(childExecutionId);
|
|
124
|
-
|
|
125
|
-
// Pending file reviews from the child's own (streamed) status — see the
|
|
126
|
-
// component doc for why the parent's pending_file_reviews is not the
|
|
127
|
-
// source. Terminal executions never dock: their AWAITING_REVIEW sets are
|
|
128
|
-
// settled history ("not reviewed") and render as in-thread records — the
|
|
129
|
-
// exact complement of MessageThread's pending test, so no set ever
|
|
130
|
-
// appears in both surfaces.
|
|
131
|
-
const terminal = isTerminalPhase(phase);
|
|
132
|
-
const pendingReviewSets = useMemo<readonly FileChangeSet[]>(() => {
|
|
133
|
-
if (terminal) return [];
|
|
134
|
-
return displayFileChangeSets(execution?.status).filter(
|
|
135
|
-
(cs) =>
|
|
136
|
-
cs.status === FileChangeSetStatus.AWAITING_REVIEW &&
|
|
137
|
-
cs.changes.length > 0,
|
|
138
|
-
);
|
|
139
|
-
}, [execution?.status, terminal]);
|
|
140
|
-
|
|
141
|
-
// Bind the child id into the dock's card-level submit signature. Deps are
|
|
142
|
-
// the specific method (DD-010), so the callback survives unrelated
|
|
143
|
-
// in-flight churn on the actions instance.
|
|
144
|
-
const submitFileDecision = hitl?.submitFileDecision;
|
|
145
|
-
const handleFileDecision = useCallback(
|
|
146
|
-
(changeSetId: string, action: FileDecisionAction, options?: FileDecisionOptions) => {
|
|
147
|
-
submitFileDecision?.(childExecutionId, changeSetId, action, options);
|
|
148
|
-
},
|
|
149
|
-
[submitFileDecision, childExecutionId],
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
return (
|
|
153
|
-
<div
|
|
154
|
-
role="article"
|
|
155
|
-
aria-label={`Agent execution for task ${taskName}`}
|
|
156
|
-
className={cn("flex h-full min-w-0 flex-col", className)}
|
|
157
|
-
>
|
|
158
|
-
{/* Slim identity header: task name (the DAG node this transcript
|
|
159
|
-
belongs to), agent slug, live/phase state, and the standalone
|
|
160
|
-
pop-out. Wraps on narrow panes rather than overflowing. */}
|
|
161
|
-
<div className="flex min-w-0 shrink-0 flex-wrap items-center gap-x-3 gap-y-1 border-b border-border bg-background px-4 py-2">
|
|
162
|
-
<span className="truncate text-sm font-medium text-foreground">
|
|
163
|
-
{taskName}
|
|
164
|
-
</span>
|
|
165
|
-
{agentSlug && (
|
|
166
|
-
<span className="shrink-0 text-xs text-muted-foreground">
|
|
167
|
-
{agentSlug}
|
|
168
|
-
</span>
|
|
169
|
-
)}
|
|
170
|
-
|
|
171
|
-
<span className="shrink-0">
|
|
172
|
-
{isStreaming ? (
|
|
173
|
-
<span className="inline-flex items-center gap-1.5 text-xs font-medium text-primary">
|
|
174
|
-
<span className="inline-block size-1.5 animate-pulse rounded-full bg-primary" aria-hidden="true" />
|
|
175
|
-
Live
|
|
176
|
-
</span>
|
|
177
|
-
) : isReconnecting ? (
|
|
178
|
-
<span className="text-xs text-muted-foreground">Reconnecting…</span>
|
|
179
|
-
) : isTerminalPhase(phase) ? (
|
|
180
|
-
<ExecutionPhaseBadge phase={phase} />
|
|
181
|
-
) : null}
|
|
182
|
-
</span>
|
|
183
|
-
|
|
184
|
-
{onNavigateToAgentExecution && (
|
|
185
|
-
<button
|
|
186
|
-
type="button"
|
|
187
|
-
onClick={() => onNavigateToAgentExecution(childExecutionId)}
|
|
188
|
-
className="ml-auto inline-flex shrink-0 items-center gap-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:rounded-sm"
|
|
189
|
-
>
|
|
190
|
-
<PopOutIcon />
|
|
191
|
-
Open standalone
|
|
192
|
-
</button>
|
|
193
|
-
)}
|
|
194
|
-
</div>
|
|
195
|
-
|
|
196
|
-
{/* The thread owns the scrolling (its auto-scroll machine + jump-to-
|
|
197
|
-
latest need the scroll container); h-full keeps the surrounding
|
|
198
|
-
editor-pane wrapper inert, so there is exactly one scrollbar. */}
|
|
199
|
-
<div className="min-h-0 min-w-0 flex-1">
|
|
200
|
-
{execution ? (
|
|
201
|
-
<MessageThread
|
|
202
|
-
executions={EMPTY_EXECUTIONS}
|
|
203
|
-
activeStreamExecution={execution}
|
|
204
|
-
onApprovalSubmit={hitl?.submitApproval}
|
|
205
|
-
submittingApprovalIds={hitl?.approvalSubmittingToolCallIds}
|
|
206
|
-
approvalErrors={hitl?.approvalErrorsByToolCallId}
|
|
207
|
-
showFileReviewRecords={hitl != null}
|
|
208
|
-
className="h-full"
|
|
209
|
-
/>
|
|
210
|
-
) : isLoading ? (
|
|
211
|
-
<ThreadSkeleton className="px-4 py-4" />
|
|
212
|
-
) : error ? (
|
|
213
|
-
<div
|
|
214
|
-
role="alert"
|
|
215
|
-
className="mx-auto flex w-full max-w-3xl flex-col items-center gap-2 px-4 py-8 text-center"
|
|
216
|
-
>
|
|
217
|
-
<p className="text-xs text-destructive">{error.message}</p>
|
|
218
|
-
<button
|
|
219
|
-
type="button"
|
|
220
|
-
onClick={reconnect}
|
|
221
|
-
className="rounded border border-border px-3 py-1.5 text-xs font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
222
|
-
>
|
|
223
|
-
Retry
|
|
224
|
-
</button>
|
|
225
|
-
</div>
|
|
226
|
-
) : (
|
|
227
|
-
<div
|
|
228
|
-
role="status"
|
|
229
|
-
className="mx-auto flex w-full max-w-3xl flex-col items-center gap-1 px-4 py-8 text-center"
|
|
230
|
-
>
|
|
231
|
-
<p className="text-xs font-medium text-foreground">
|
|
232
|
-
This agent execution is no longer available.
|
|
233
|
-
</p>
|
|
234
|
-
<p className="text-xs text-muted-foreground">
|
|
235
|
-
It may have been removed, or the workflow run predates
|
|
236
|
-
transcript retention.
|
|
237
|
-
</p>
|
|
238
|
-
</div>
|
|
239
|
-
)}
|
|
240
|
-
</div>
|
|
241
|
-
|
|
242
|
-
{/* Pending file reviews dock here — pinned below the thread (the
|
|
243
|
-
document has no composer, so the panel bottom is the fixed strip)
|
|
244
|
-
where the decision the child is blocked on can never scroll out
|
|
245
|
-
of view. Same shape as the session's composer dock. */}
|
|
246
|
-
{hitl && pendingReviewSets.length > 0 && (
|
|
247
|
-
<FileReviewDock
|
|
248
|
-
changeSets={pendingReviewSets}
|
|
249
|
-
onSubmit={handleFileDecision}
|
|
250
|
-
submittingDecisionKeys={hitl.fileDecisionSubmittingKeys}
|
|
251
|
-
decisionErrors={hitl.fileDecisionErrorsByKey}
|
|
252
|
-
className="shrink-0"
|
|
253
|
-
/>
|
|
254
|
-
)}
|
|
255
|
-
</div>
|
|
256
|
-
);
|
|
257
|
-
},
|
|
258
|
-
);
|
|
259
|
-
|
|
260
|
-
// ---------------------------------------------------------------------------
|
|
261
|
-
// Inline SVG icons (SDK independence — no lucide dependency)
|
|
262
|
-
// ---------------------------------------------------------------------------
|
|
263
|
-
|
|
264
|
-
function PopOutIcon() {
|
|
265
|
-
return (
|
|
266
|
-
<svg
|
|
267
|
-
width="12"
|
|
268
|
-
height="12"
|
|
269
|
-
viewBox="0 0 12 12"
|
|
270
|
-
fill="none"
|
|
271
|
-
stroke="currentColor"
|
|
272
|
-
strokeWidth="1.3"
|
|
273
|
-
strokeLinecap="round"
|
|
274
|
-
strokeLinejoin="round"
|
|
275
|
-
className="shrink-0"
|
|
276
|
-
aria-hidden="true"
|
|
277
|
-
>
|
|
278
|
-
<path d="M10.5 4.5V1.5H7.5" />
|
|
279
|
-
<path d="M10.5 1.5L6 6" />
|
|
280
|
-
<path d="M8.5 7v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3" />
|
|
281
|
-
</svg>
|
|
282
|
-
);
|
|
283
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { UseWorkflowExecutionActionsReturn } from "./useWorkflowExecutionActions.js";
|
|
2
|
-
/**
|
|
3
|
-
* The HITL wiring for a child transcript: the slice of
|
|
4
|
-
* {@link UseWorkflowExecutionActionsReturn} the document needs to submit
|
|
5
|
-
* child-gate decisions at the WORKFLOW level.
|
|
6
|
-
*
|
|
7
|
-
* A `Pick` (not a new shape) so the bundle can never drift from the actions
|
|
8
|
-
* hook — the viewer builds it from its single `useWorkflowExecutionActions`
|
|
9
|
-
* instance, which is the same keyed in-flight/error state the bottom
|
|
10
|
-
* Approvals tab renders. One instance, two surfaces: a spinner or failure on
|
|
11
|
-
* a gate is identical wherever that gate is shown.
|
|
12
|
-
*/
|
|
13
|
-
export type WorkflowAgentExecutionHitl = Pick<UseWorkflowExecutionActionsReturn, "submitApproval" | "approvalSubmittingToolCallIds" | "approvalErrorsByToolCallId" | "submitFileDecision" | "fileDecisionSubmittingKeys" | "fileDecisionErrorsByKey">;
|
|
14
|
-
/** Props for {@link WorkflowAgentExecutionDocument}. */
|
|
15
|
-
export interface WorkflowAgentExecutionDocumentProps {
|
|
16
|
-
/** ID of the child AgentExecution whose transcript to render. */
|
|
17
|
-
readonly childExecutionId: string;
|
|
18
|
-
/** The AGENT_CALL task that spawned the child — the document's title. */
|
|
19
|
-
readonly taskName: string;
|
|
20
|
-
/** Slug of the agent the task called, when known (subtitle context). */
|
|
21
|
-
readonly agentSlug?: string;
|
|
22
|
-
/**
|
|
23
|
-
* Open the child execution as a standalone page — the pop-out escape hatch
|
|
24
|
-
* preserved from the inspector's Agent tab. Host-routed (DD-004).
|
|
25
|
-
*/
|
|
26
|
-
readonly onNavigateToAgentExecution?: (agentExecutionId: string) => void;
|
|
27
|
-
/**
|
|
28
|
-
* Workflow-level HITL handlers (S5 of the UX-parity project). When
|
|
29
|
-
* provided, the transcript becomes interactive: tool-approval gates render
|
|
30
|
-
* their decision cards inline on the gated rows, and pending file reviews
|
|
31
|
-
* dock at the bottom of the document. When omitted, the transcript is
|
|
32
|
-
* read-only — gates show status only (backward compatible, DD-011).
|
|
33
|
-
*/
|
|
34
|
-
readonly hitl?: WorkflowAgentExecutionHitl;
|
|
35
|
-
/** Additional CSS classes for the root element. */
|
|
36
|
-
readonly className?: string;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* The editor-pane rendering of a child AgentExecution's transcript — the
|
|
40
|
-
* `SurfaceVirtualDocument` body the workflow execution panel mounts when an
|
|
41
|
-
* AGENT_CALL task is opened in place (S4 of the UX-parity project). This is
|
|
42
|
-
* the full session-grade experience — streaming `MessageThread` with tool
|
|
43
|
-
* calls, sub-agents, plan cards, and (with {@link
|
|
44
|
-
* WorkflowAgentExecutionDocumentProps.hitl | hitl}) in-place HITL —
|
|
45
|
-
* replacing the inspector's cramped `max-h-[50vh]` thumbnail.
|
|
46
|
-
*
|
|
47
|
-
* HITL ROUTING. Child gates are decided through the WORKFLOW-level RPCs
|
|
48
|
-
* (`WorkflowExecution.submitApproval` / `submitFileDecision`), never the
|
|
49
|
-
* child's own `agentExecution.*` submit path. The two paths are
|
|
50
|
-
* server-equivalent (the workflow RPC forwards to the child — see
|
|
51
|
-
* workflowexecution command.proto), but they differ in authorization: the
|
|
52
|
-
* workflow RPC checks `can_edit` on the workflow execution — the resource
|
|
53
|
-
* the operator owns — while the child path checks the runner-spawned
|
|
54
|
-
* AgentExecution, which the operator may not. Every workflow HITL surface
|
|
55
|
-
* (bottom Approvals tab, inspector) routes this way; the transcript joins
|
|
56
|
-
* them via the same actions instance, so in-flight/error state never forks.
|
|
57
|
-
*
|
|
58
|
-
* FILE-REVIEW DOCK. Pending (AWAITING_REVIEW) sets derive from the CHILD's
|
|
59
|
-
* own live stream — the freshest source this document already holds — not
|
|
60
|
-
* from the parent's `status.pending_file_reviews`: the parent snapshot is
|
|
61
|
-
* fetched once at mount and may lag a mid-run gate, which would blank the
|
|
62
|
-
* dock exactly when the reviewer is watching live. The server validates
|
|
63
|
-
* routing against its own (fresh) stored status at submit time, so a
|
|
64
|
-
* too-early decision degrades to a retryable in-card error, the same
|
|
65
|
-
* treatment tool approvals get. Docked below the thread (mirroring the
|
|
66
|
-
* session's composer dock) so a decision the agent is blocked on can never
|
|
67
|
-
* scroll out of view; settled sets render as read-only records in-thread
|
|
68
|
-
* (`showFileReviewRecords`), never in the dock — the two surfaces partition
|
|
69
|
-
* by the same pending test `MessageThread` uses.
|
|
70
|
-
*
|
|
71
|
-
* Lifecycle: the surface's editor area mounts only the ACTIVE virtual
|
|
72
|
-
* document, so `useLiveAgentExecution` fetches/streams only while this tab
|
|
73
|
-
* is foregrounded (DD-LIVE-006 — at most one child stream is ever live) and
|
|
74
|
-
* a tab-return re-renders instantly from the DD-014 fetch cache.
|
|
75
|
-
*
|
|
76
|
-
* All visual properties flow through `--stgm-*` tokens (DD-005).
|
|
77
|
-
*/
|
|
78
|
-
export declare const WorkflowAgentExecutionDocument: import("react").NamedExoticComponent<WorkflowAgentExecutionDocumentProps>;
|
|
79
|
-
//# sourceMappingURL=WorkflowAgentExecutionDocument.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowAgentExecutionDocument.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowAgentExecutionDocument.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAK1F;;;;;;;;;;GAUG;AACH,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,iCAAiC,EAC/B,gBAAgB,GAChB,+BAA+B,GAC/B,4BAA4B,GAC5B,oBAAoB,GACpB,4BAA4B,GAC5B,yBAAyB,CAC5B,CAAC;AAEF,wDAAwD;AACxD,MAAM,WAAW,mCAAmC;IAClD,iEAAiE;IACjE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,0BAA0B,CAAC;IAC3C,mDAAmD;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,8BAA8B,2EAiJ1C,CAAC"}
|