@stigmer/react 3.3.0 → 3.4.1
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/useAgentCount.d.ts +2 -0
- package/agent/useAgentCount.d.ts.map +1 -1
- package/agent/useAgentCount.js.map +1 -1
- package/api-key/CreateApiKeyForm.d.ts +7 -1
- package/api-key/CreateApiKeyForm.d.ts.map +1 -1
- package/api-key/CreateApiKeyForm.js +2 -2
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/billing/index.d.ts +0 -18
- package/billing/index.d.ts.map +1 -1
- package/billing/index.js +4 -9
- package/billing/index.js.map +1 -1
- package/cursor-accounts/CursorAccountEditor.d.ts +7 -1
- package/cursor-accounts/CursorAccountEditor.d.ts.map +1 -1
- package/cursor-accounts/CursorAccountEditor.js +21 -5
- package/cursor-accounts/CursorAccountEditor.js.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.d.ts +9 -5
- package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.js +34 -140
- package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.d.ts +29 -0
- package/cursor-accounts/MemberCoverageTable.d.ts.map +1 -0
- package/cursor-accounts/MemberCoverageTable.js +150 -0
- package/cursor-accounts/MemberCoverageTable.js.map +1 -0
- package/cursor-accounts/MemberKeysPanel.d.ts +25 -0
- package/cursor-accounts/MemberKeysPanel.d.ts.map +1 -0
- package/cursor-accounts/MemberKeysPanel.js +115 -0
- package/cursor-accounts/MemberKeysPanel.js.map +1 -0
- package/cursor-accounts/badges.d.ts +9 -0
- package/cursor-accounts/badges.d.ts.map +1 -0
- package/cursor-accounts/badges.js +10 -0
- package/cursor-accounts/badges.js.map +1 -0
- package/cursor-accounts/cursor-account-coverage.d.ts +41 -0
- package/cursor-accounts/cursor-account-coverage.d.ts.map +1 -0
- package/cursor-accounts/cursor-account-coverage.js +26 -0
- package/cursor-accounts/cursor-account-coverage.js.map +1 -0
- package/cursor-accounts/cursor-account-format.d.ts +13 -0
- package/cursor-accounts/cursor-account-format.d.ts.map +1 -1
- package/cursor-accounts/cursor-account-format.js +16 -1
- package/cursor-accounts/cursor-account-format.js.map +1 -1
- package/datastore/CollectionRecordsBrowser.js +18 -4
- package/datastore/CollectionRecordsBrowser.js.map +1 -1
- package/datastore/RecordFilterBuilder.d.ts +8 -1
- package/datastore/RecordFilterBuilder.d.ts.map +1 -1
- package/datastore/RecordFilterBuilder.js +2 -2
- package/datastore/RecordFilterBuilder.js.map +1 -1
- package/datastore/recordFilter.d.ts +9 -1
- package/datastore/recordFilter.d.ts.map +1 -1
- package/datastore/recordFilter.js +12 -1
- package/datastore/recordFilter.js.map +1 -1
- package/datastore/useDatastoreCount.d.ts +2 -0
- package/datastore/useDatastoreCount.d.ts.map +1 -1
- package/datastore/useDatastoreCount.js.map +1 -1
- package/execution/ExecutionProgress.d.ts.map +1 -1
- package/execution/ExecutionProgress.js +13 -4
- package/execution/ExecutionProgress.js.map +1 -1
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +10 -2
- package/execution/MessageThread.js.map +1 -1
- package/execution/useCreateAgentExecution.d.ts +31 -1
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.js +2 -0
- package/execution/useCreateAgentExecution.js.map +1 -1
- package/index.d.ts +8 -6
- package/index.d.ts.map +1 -1
- package/index.js +8 -4
- package/index.js.map +1 -1
- package/internal/form-primitives.d.ts +10 -0
- package/internal/form-primitives.d.ts.map +1 -0
- package/{billing → internal}/form-primitives.js +5 -9
- package/internal/form-primitives.js.map +1 -0
- package/manifest/ApplyManifestDialog.d.ts +10 -5
- package/manifest/ApplyManifestDialog.d.ts.map +1 -1
- package/manifest/ApplyManifestDialog.js +30 -13
- package/manifest/ApplyManifestDialog.js.map +1 -1
- package/manifest/useApplyManifest.d.ts +6 -2
- package/manifest/useApplyManifest.d.ts.map +1 -1
- package/manifest/useApplyManifest.js +5 -5
- package/manifest/useApplyManifest.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts +38 -2
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +21 -5
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/index.d.ts +7 -0
- package/mcp-server/index.d.ts.map +1 -1
- package/mcp-server/index.js +9 -0
- package/mcp-server/index.js.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.d.ts +4 -0
- package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.js +4 -0
- package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.d.ts +6 -0
- package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.js +7 -1
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
- package/mcp-server/steps/ReviewStep.d.ts +5 -0
- package/mcp-server/steps/ReviewStep.d.ts.map +1 -1
- package/mcp-server/steps/ReviewStep.js +16 -2
- package/mcp-server/steps/ReviewStep.js.map +1 -1
- package/mcp-server/useMcpServerCount.d.ts +2 -0
- package/mcp-server/useMcpServerCount.d.ts.map +1 -1
- package/mcp-server/useMcpServerCount.js.map +1 -1
- package/package.json +4 -4
- package/pricing-governance/BaselineEditor.d.ts.map +1 -0
- package/{billing → pricing-governance}/BaselineEditor.js +19 -2
- package/pricing-governance/BaselineEditor.js.map +1 -0
- package/pricing-governance/ModelCatalogPanel.d.ts.map +1 -0
- package/pricing-governance/ModelCatalogPanel.js.map +1 -0
- package/pricing-governance/ModelGovernanceDetail.d.ts.map +1 -0
- package/pricing-governance/ModelGovernanceDetail.js.map +1 -0
- package/pricing-governance/OperatorAccessNotice.d.ts.map +1 -0
- package/pricing-governance/OperatorAccessNotice.js.map +1 -0
- package/pricing-governance/PricingGovernanceConsole.d.ts.map +1 -0
- package/{billing → pricing-governance}/PricingGovernanceConsole.js +1 -1
- package/pricing-governance/PricingGovernanceConsole.js.map +1 -0
- package/pricing-governance/PricingGovernancePanel.d.ts.map +1 -0
- package/pricing-governance/PricingGovernancePanel.js.map +1 -0
- package/pricing-governance/RetireConfirm.d.ts.map +1 -0
- package/{billing → pricing-governance}/RetireConfirm.js +1 -1
- package/pricing-governance/RetireConfirm.js.map +1 -0
- package/pricing-governance/governance-primitives.d.ts.map +1 -0
- package/pricing-governance/governance-primitives.js.map +1 -0
- package/pricing-governance/index.d.ts +19 -0
- package/pricing-governance/index.d.ts.map +1 -0
- package/pricing-governance/index.js +20 -0
- package/pricing-governance/index.js.map +1 -0
- package/pricing-governance/pricing-format.d.ts.map +1 -0
- package/pricing-governance/pricing-format.js.map +1 -0
- package/pricing-governance/useDecidePricingOverride.d.ts.map +1 -0
- package/pricing-governance/useDecidePricingOverride.js.map +1 -0
- package/pricing-governance/useModelGovernanceView.d.ts.map +1 -0
- package/pricing-governance/useModelGovernanceView.js.map +1 -0
- package/pricing-governance/useModelPricingBaselines.d.ts.map +1 -0
- package/pricing-governance/useModelPricingBaselines.js.map +1 -0
- package/pricing-governance/usePricingGovernance.d.ts.map +1 -0
- package/pricing-governance/usePricingGovernance.js.map +1 -0
- package/pricing-governance/useRetireModelPricingBaseline.d.ts.map +1 -0
- package/pricing-governance/useRetireModelPricingBaseline.js.map +1 -0
- package/pricing-governance/useUpsertModelPricingBaseline.d.ts.map +1 -0
- package/pricing-governance/useUpsertModelPricingBaseline.js.map +1 -0
- package/resource-creation/CreationPicker.d.ts.map +1 -1
- package/resource-creation/CreationPicker.js +3 -3
- package/resource-creation/CreationPicker.js.map +1 -1
- package/resource-creation/WizardNav.d.ts.map +1 -1
- package/resource-creation/WizardNav.js +1 -1
- package/resource-creation/WizardNav.js.map +1 -1
- package/resource-detail/Section.d.ts +8 -1
- package/resource-detail/Section.d.ts.map +1 -1
- package/resource-detail/Section.js +2 -2
- package/resource-detail/Section.js.map +1 -1
- package/resource-workbench/components/ResourceWorkbench.d.ts +9 -1
- package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -1
- package/resource-workbench/components/ResourceWorkbench.js +2 -1
- package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
- package/resource-workbench/hooks/useResourceCollection.d.ts +9 -0
- package/resource-workbench/hooks/useResourceCollection.d.ts.map +1 -1
- package/resource-workbench/hooks/useResourceCollection.js +2 -2
- package/resource-workbench/hooks/useResourceCollection.js.map +1 -1
- package/search/useResourceCount.d.ts +7 -0
- package/search/useResourceCount.d.ts.map +1 -1
- package/search/useResourceCount.js +2 -1
- package/search/useResourceCount.js.map +1 -1
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +17 -3
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionViewer.d.ts +2 -1
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +19 -11
- package/session/SessionViewer.js.map +1 -1
- package/session/SessionViewerLayout.d.ts +90 -0
- package/session/SessionViewerLayout.d.ts.map +1 -0
- package/session/SessionViewerLayout.js +32 -0
- package/session/SessionViewerLayout.js.map +1 -0
- package/session/index.d.ts +4 -0
- package/session/index.d.ts.map +1 -1
- package/session/index.js +10 -0
- package/session/index.js.map +1 -1
- package/session/useCreateSession.d.ts +28 -0
- package/session/useCreateSession.d.ts.map +1 -1
- package/session/useCreateSession.js +2 -1
- package/session/useCreateSession.js.map +1 -1
- package/session/useNewSessionFlow.d.ts +30 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +7 -1
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionRailViews.d.ts +2 -2
- package/session/useUpdateSession.d.ts +29 -10
- package/session/useUpdateSession.d.ts.map +1 -1
- package/session/useUpdateSession.js +29 -10
- package/session/useUpdateSession.js.map +1 -1
- package/skill/useSkillCount.d.ts +2 -0
- package/skill/useSkillCount.d.ts.map +1 -1
- package/skill/useSkillCount.js.map +1 -1
- package/src/agent/useAgentCount.ts +2 -0
- package/src/api-key/CreateApiKeyForm.tsx +8 -1
- package/src/api-key/__tests__/CreateApiKeyForm.test.tsx +58 -0
- package/src/billing/index.ts +5 -37
- package/src/cursor-accounts/CursorAccountEditor.tsx +61 -13
- package/src/cursor-accounts/CursorAccountsConsole.tsx +44 -400
- package/src/cursor-accounts/MemberCoverageTable.tsx +439 -0
- package/src/cursor-accounts/MemberKeysPanel.tsx +278 -0
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +306 -10
- package/src/cursor-accounts/__tests__/cursor-account-coverage.test.ts +73 -0
- package/src/cursor-accounts/badges.tsx +26 -0
- package/src/cursor-accounts/cursor-account-coverage.ts +71 -0
- package/src/cursor-accounts/cursor-account-format.ts +17 -1
- package/src/datastore/CollectionRecordsBrowser.tsx +29 -3
- package/src/datastore/RecordFilterBuilder.tsx +12 -1
- package/src/datastore/__tests__/CollectionRecordsBrowser.test.tsx +38 -0
- package/src/datastore/__tests__/RecordFilterBuilder.test.tsx +14 -0
- package/src/datastore/__tests__/recordFilter.test.ts +13 -0
- package/src/datastore/recordFilter.ts +15 -1
- package/src/datastore/useDatastoreCount.ts +2 -0
- package/src/execution/ExecutionProgress.tsx +14 -4
- package/src/execution/MessageThread.tsx +10 -2
- package/src/execution/__tests__/ExecutionProgress.test.tsx +67 -0
- package/src/execution/__tests__/MessageThread.test.tsx +44 -0
- package/src/execution/__tests__/useCreateAgentExecution.test.tsx +86 -0
- package/src/execution/useCreateAgentExecution.ts +41 -6
- package/src/index.ts +43 -24
- package/src/{billing → internal}/form-primitives.tsx +4 -32
- package/src/manifest/ApplyManifestDialog.tsx +40 -16
- package/src/manifest/__tests__/ApplyManifestDialog.test.tsx +147 -0
- package/src/manifest/__tests__/useApplyManifest.test.tsx +6 -6
- package/src/manifest/useApplyManifest.ts +12 -8
- package/src/mcp-server/McpServerDetailView.tsx +52 -4
- package/src/mcp-server/__tests__/McpServerDetailView.test.tsx +345 -0
- package/src/mcp-server/index.ts +13 -0
- package/src/mcp-server/steps/EnvironmentAuthStep.tsx +4 -0
- package/src/mcp-server/steps/IdentityTransportStep.tsx +9 -1
- package/src/mcp-server/steps/ReviewStep.tsx +18 -1
- package/src/mcp-server/useMcpServerCount.ts +2 -0
- package/src/{billing → pricing-governance}/BaselineEditor.tsx +36 -3
- package/src/{billing → pricing-governance}/PricingGovernanceConsole.tsx +1 -1
- package/src/{billing → pricing-governance}/RetireConfirm.tsx +1 -1
- package/src/pricing-governance/index.ts +50 -0
- package/src/resource-creation/CreationPicker.tsx +7 -0
- package/src/resource-creation/WizardNav.tsx +1 -0
- package/src/resource-detail/Section.tsx +9 -1
- package/src/resource-workbench/components/ResourceWorkbench.tsx +13 -0
- package/src/resource-workbench/hooks/useResourceCollection.ts +11 -1
- package/src/search/useResourceCount.ts +9 -1
- package/src/session/NewSessionViewer.tsx +48 -61
- package/src/session/SessionViewer.tsx +71 -86
- package/src/session/SessionViewerLayout.tsx +131 -0
- package/src/session/__tests__/SessionViewerLayout.test.tsx +140 -0
- package/src/session/__tests__/useCreateSession.test.tsx +94 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +33 -0
- package/src/session/index.ts +14 -0
- package/src/session/useCreateSession.ts +30 -0
- package/src/session/useNewSessionFlow.ts +45 -1
- package/src/session/useSessionRailViews.tsx +2 -2
- package/src/session/useUpdateSession.ts +29 -10
- package/src/skill/useSkillCount.ts +2 -0
- package/src/test/__tests__/samples.test.ts +159 -2
- package/src/test/index.ts +1 -1
- package/src/test/samples.ts +109 -14
- package/src/workflow/useWorkflowCount.ts +2 -0
- package/styles.css +1 -1
- package/test/index.d.ts +1 -1
- package/test/index.d.ts.map +1 -1
- package/test/index.js +1 -1
- package/test/index.js.map +1 -1
- package/test/samples.d.ts +79 -7
- package/test/samples.d.ts.map +1 -1
- package/test/samples.js +101 -14
- package/test/samples.js.map +1 -1
- package/workflow/useWorkflowCount.d.ts +2 -0
- package/workflow/useWorkflowCount.d.ts.map +1 -1
- package/workflow/useWorkflowCount.js.map +1 -1
- package/billing/BaselineEditor.d.ts.map +0 -1
- package/billing/BaselineEditor.js.map +0 -1
- package/billing/ModelCatalogPanel.d.ts.map +0 -1
- package/billing/ModelCatalogPanel.js.map +0 -1
- package/billing/ModelGovernanceDetail.d.ts.map +0 -1
- package/billing/ModelGovernanceDetail.js.map +0 -1
- package/billing/OperatorAccessNotice.d.ts.map +0 -1
- package/billing/OperatorAccessNotice.js.map +0 -1
- package/billing/PricingGovernanceConsole.d.ts.map +0 -1
- package/billing/PricingGovernanceConsole.js.map +0 -1
- package/billing/PricingGovernancePanel.d.ts.map +0 -1
- package/billing/PricingGovernancePanel.js.map +0 -1
- package/billing/RetireConfirm.d.ts.map +0 -1
- package/billing/RetireConfirm.js.map +0 -1
- package/billing/form-primitives.d.ts +0 -18
- package/billing/form-primitives.d.ts.map +0 -1
- package/billing/form-primitives.js.map +0 -1
- package/billing/governance-primitives.d.ts.map +0 -1
- package/billing/governance-primitives.js.map +0 -1
- package/billing/pricing-format.d.ts.map +0 -1
- package/billing/pricing-format.js.map +0 -1
- package/billing/useDecidePricingOverride.d.ts.map +0 -1
- package/billing/useDecidePricingOverride.js.map +0 -1
- package/billing/useModelGovernanceView.d.ts.map +0 -1
- package/billing/useModelGovernanceView.js.map +0 -1
- package/billing/useModelPricingBaselines.d.ts.map +0 -1
- package/billing/useModelPricingBaselines.js.map +0 -1
- package/billing/usePricingGovernance.d.ts.map +0 -1
- package/billing/usePricingGovernance.js.map +0 -1
- package/billing/useRetireModelPricingBaseline.d.ts.map +0 -1
- package/billing/useRetireModelPricingBaseline.js.map +0 -1
- package/billing/useUpsertModelPricingBaseline.d.ts.map +0 -1
- package/billing/useUpsertModelPricingBaseline.js.map +0 -1
- /package/{billing → pricing-governance}/BaselineEditor.d.ts +0 -0
- /package/{billing → pricing-governance}/ModelCatalogPanel.d.ts +0 -0
- /package/{billing → pricing-governance}/ModelCatalogPanel.js +0 -0
- /package/{billing → pricing-governance}/ModelGovernanceDetail.d.ts +0 -0
- /package/{billing → pricing-governance}/ModelGovernanceDetail.js +0 -0
- /package/{billing → pricing-governance}/OperatorAccessNotice.d.ts +0 -0
- /package/{billing → pricing-governance}/OperatorAccessNotice.js +0 -0
- /package/{billing → pricing-governance}/PricingGovernanceConsole.d.ts +0 -0
- /package/{billing → pricing-governance}/PricingGovernancePanel.d.ts +0 -0
- /package/{billing → pricing-governance}/PricingGovernancePanel.js +0 -0
- /package/{billing → pricing-governance}/RetireConfirm.d.ts +0 -0
- /package/{billing → pricing-governance}/governance-primitives.d.ts +0 -0
- /package/{billing → pricing-governance}/governance-primitives.js +0 -0
- /package/{billing → pricing-governance}/pricing-format.d.ts +0 -0
- /package/{billing → pricing-governance}/pricing-format.js +0 -0
- /package/{billing → pricing-governance}/useDecidePricingOverride.d.ts +0 -0
- /package/{billing → pricing-governance}/useDecidePricingOverride.js +0 -0
- /package/{billing → pricing-governance}/useModelGovernanceView.d.ts +0 -0
- /package/{billing → pricing-governance}/useModelGovernanceView.js +0 -0
- /package/{billing → pricing-governance}/useModelPricingBaselines.d.ts +0 -0
- /package/{billing → pricing-governance}/useModelPricingBaselines.js +0 -0
- /package/{billing → pricing-governance}/usePricingGovernance.d.ts +0 -0
- /package/{billing → pricing-governance}/usePricingGovernance.js +0 -0
- /package/{billing → pricing-governance}/useRetireModelPricingBaseline.d.ts +0 -0
- /package/{billing → pricing-governance}/useRetireModelPricingBaseline.js +0 -0
- /package/{billing → pricing-governance}/useUpsertModelPricingBaseline.d.ts +0 -0
- /package/{billing → pricing-governance}/useUpsertModelPricingBaseline.js +0 -0
- /package/src/{billing → pricing-governance}/ModelCatalogPanel.tsx +0 -0
- /package/src/{billing → pricing-governance}/ModelGovernanceDetail.tsx +0 -0
- /package/src/{billing → pricing-governance}/OperatorAccessNotice.tsx +0 -0
- /package/src/{billing → pricing-governance}/PricingGovernancePanel.tsx +0 -0
- /package/src/{billing → pricing-governance}/__tests__/ModelCatalogPanel.test.tsx +0 -0
- /package/src/{billing → pricing-governance}/__tests__/PricingGovernanceConsole.test.tsx +0 -0
- /package/src/{billing → pricing-governance}/__tests__/useModelGovernanceView.test.tsx +0 -0
- /package/src/{billing → pricing-governance}/governance-primitives.tsx +0 -0
- /package/src/{billing → pricing-governance}/pricing-format.ts +0 -0
- /package/src/{billing → pricing-governance}/useDecidePricingOverride.ts +0 -0
- /package/src/{billing → pricing-governance}/useModelGovernanceView.ts +0 -0
- /package/src/{billing → pricing-governance}/useModelPricingBaselines.ts +0 -0
- /package/src/{billing → pricing-governance}/usePricingGovernance.ts +0 -0
- /package/src/{billing → pricing-governance}/useRetireModelPricingBaseline.ts +0 -0
- /package/src/{billing → pricing-governance}/useUpsertModelPricingBaseline.ts +0 -0
|
@@ -11,7 +11,7 @@ import { RetireConfirm } from "./RetireConfirm.js";
|
|
|
11
11
|
import { ModelGovernanceDetail } from "./ModelGovernanceDetail.js";
|
|
12
12
|
import { OperatorAccessNotice } from "./OperatorAccessNotice.js";
|
|
13
13
|
import { GovernanceBadge, PendingOverrideCard, RateCell } from "./governance-primitives.js";
|
|
14
|
-
import { INPUT_CLASSES } from "
|
|
14
|
+
import { INPUT_CLASSES } from "../internal/form-primitives.js";
|
|
15
15
|
import { ZERO } from "./pricing-format.js";
|
|
16
16
|
import { useDecidePricingOverride } from "./useDecidePricingOverride.js";
|
|
17
17
|
import { useRetireModelPricingBaseline } from "./useRetireModelPricingBaseline.js";
|
|
@@ -4,7 +4,7 @@ import { useState } from "react";
|
|
|
4
4
|
import { getUserMessage } from "@stigmer/sdk";
|
|
5
5
|
import type { ModelPricingBaseline } from "@stigmer/protos/ai/stigmer/billing/v1/model_pricing_baseline_pb";
|
|
6
6
|
import { Button } from "../button/index.js";
|
|
7
|
-
import { INPUT_CLASSES } from "
|
|
7
|
+
import { INPUT_CLASSES } from "../internal/form-primitives.js";
|
|
8
8
|
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
// RetireConfirm — typed confirmation for retiring a catalog entry (a
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Pricing governance — the platform-operator surface for the model
|
|
2
|
+
// registry baseline and the reconciliation-driven pricing feedback loop.
|
|
3
|
+
// Every export here is gated on `can_manage_model_pricing` on
|
|
4
|
+
// `platform:stigmer`; nothing in this module is customer-facing (customer
|
|
5
|
+
// billing lives in ../billing). The module boundary is deliberate: the
|
|
6
|
+
// docs generator excludes operator-only domains wholesale, so operator
|
|
7
|
+
// exports must never be mixed into customer modules.
|
|
8
|
+
|
|
9
|
+
// Data hooks
|
|
10
|
+
export { usePricingGovernance } from "./usePricingGovernance.js";
|
|
11
|
+
export type { UsePricingGovernanceReturn } from "./usePricingGovernance.js";
|
|
12
|
+
export { useModelPricingBaselines } from "./useModelPricingBaselines.js";
|
|
13
|
+
export type {
|
|
14
|
+
UseModelPricingBaselinesOptions,
|
|
15
|
+
UseModelPricingBaselinesReturn,
|
|
16
|
+
} from "./useModelPricingBaselines.js";
|
|
17
|
+
export { useModelGovernanceView } from "./useModelGovernanceView.js";
|
|
18
|
+
export type {
|
|
19
|
+
GovernanceFlow,
|
|
20
|
+
ModelGovernanceRow,
|
|
21
|
+
UseModelGovernanceViewReturn,
|
|
22
|
+
} from "./useModelGovernanceView.js";
|
|
23
|
+
|
|
24
|
+
// Behavior hooks
|
|
25
|
+
export { useDecidePricingOverride } from "./useDecidePricingOverride.js";
|
|
26
|
+
export type {
|
|
27
|
+
DecidePricingOverrideInput,
|
|
28
|
+
UseDecidePricingOverrideReturn,
|
|
29
|
+
} from "./useDecidePricingOverride.js";
|
|
30
|
+
export { useUpsertModelPricingBaseline } from "./useUpsertModelPricingBaseline.js";
|
|
31
|
+
export type {
|
|
32
|
+
UpsertModelPricingBaselineInput,
|
|
33
|
+
UseUpsertModelPricingBaselineReturn,
|
|
34
|
+
} from "./useUpsertModelPricingBaseline.js";
|
|
35
|
+
export { useRetireModelPricingBaseline } from "./useRetireModelPricingBaseline.js";
|
|
36
|
+
export type {
|
|
37
|
+
RetireModelPricingBaselineInput,
|
|
38
|
+
UseRetireModelPricingBaselineReturn,
|
|
39
|
+
} from "./useRetireModelPricingBaseline.js";
|
|
40
|
+
|
|
41
|
+
// Styled components
|
|
42
|
+
export { PricingGovernancePanel } from "./PricingGovernancePanel.js";
|
|
43
|
+
export type { PricingGovernancePanelProps } from "./PricingGovernancePanel.js";
|
|
44
|
+
export { ModelCatalogPanel } from "./ModelCatalogPanel.js";
|
|
45
|
+
export type { ModelCatalogPanelProps } from "./ModelCatalogPanel.js";
|
|
46
|
+
export { PricingGovernanceConsole } from "./PricingGovernanceConsole.js";
|
|
47
|
+
export type {
|
|
48
|
+
PricingGovernanceConsoleProps,
|
|
49
|
+
PricingGovernanceTab,
|
|
50
|
+
} from "./PricingGovernanceConsole.js";
|
|
@@ -140,6 +140,7 @@ export function CreationPicker<TData>({
|
|
|
140
140
|
description={`Create a blank ${resourceLabel} and configure it step by step.`}
|
|
141
141
|
icon={<BlankPageIcon />}
|
|
142
142
|
onClick={() => onSelect({ kind: "scratch" })}
|
|
143
|
+
cursorTarget="creation-path-scratch"
|
|
143
144
|
/>
|
|
144
145
|
|
|
145
146
|
{/* Browse templates */}
|
|
@@ -150,6 +151,7 @@ export function CreationPicker<TData>({
|
|
|
150
151
|
icon={<GridIcon />}
|
|
151
152
|
onClick={() => setView("gallery")}
|
|
152
153
|
badge={`${templates.length} available`}
|
|
154
|
+
cursorTarget="creation-path-template"
|
|
153
155
|
/>
|
|
154
156
|
)}
|
|
155
157
|
|
|
@@ -159,6 +161,7 @@ export function CreationPicker<TData>({
|
|
|
159
161
|
description="Upload a YAML or JSON configuration file."
|
|
160
162
|
icon={<UploadIcon />}
|
|
161
163
|
onClick={() => onSelect({ kind: "import" })}
|
|
164
|
+
cursorTarget="creation-path-import"
|
|
162
165
|
/>
|
|
163
166
|
</div>
|
|
164
167
|
</div>
|
|
@@ -175,17 +178,21 @@ function OptionCard({
|
|
|
175
178
|
icon,
|
|
176
179
|
onClick,
|
|
177
180
|
badge,
|
|
181
|
+
cursorTarget,
|
|
178
182
|
}: {
|
|
179
183
|
readonly title: string;
|
|
180
184
|
readonly description: string;
|
|
181
185
|
readonly icon: React.ReactNode;
|
|
182
186
|
readonly onClick: () => void;
|
|
183
187
|
readonly badge?: string;
|
|
188
|
+
/** `data-cursor-target` hook for guided tours and demo playbacks. */
|
|
189
|
+
readonly cursorTarget?: string;
|
|
184
190
|
}) {
|
|
185
191
|
return (
|
|
186
192
|
<button
|
|
187
193
|
type="button"
|
|
188
194
|
onClick={onClick}
|
|
195
|
+
data-cursor-target={cursorTarget}
|
|
189
196
|
className={cn(
|
|
190
197
|
"group flex flex-col items-center gap-3 rounded-lg border border-border bg-card p-6 text-center",
|
|
191
198
|
"transition-colors hover:border-primary hover:bg-accent",
|
|
@@ -90,6 +90,7 @@ export function WizardNav({
|
|
|
90
90
|
type="button"
|
|
91
91
|
onClick={onNext}
|
|
92
92
|
disabled={nextDisabled || isSubmitting}
|
|
93
|
+
data-cursor-target="wizard-next"
|
|
93
94
|
className={cn(
|
|
94
95
|
"inline-flex items-center gap-1.5 rounded-md bg-primary px-4 py-1.5 text-sm font-medium text-primary-foreground transition-colors",
|
|
95
96
|
"hover:bg-primary-hover",
|
|
@@ -9,6 +9,13 @@ export interface SectionProps {
|
|
|
9
9
|
/** Arbitrary action elements rendered in the header row (e.g. expand, share). */
|
|
10
10
|
readonly headerActions?: ReactNode;
|
|
11
11
|
readonly onEdit?: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Stable id emitted as `data-scroll-target` on the section element, so
|
|
14
|
+
* guided tours and demos can scroll the section into view by name (the
|
|
15
|
+
* same convention as `data-cursor-target`). Purely an annotation — no
|
|
16
|
+
* behavior attaches to it here.
|
|
17
|
+
*/
|
|
18
|
+
readonly scrollTarget?: string;
|
|
12
19
|
readonly children: ReactNode;
|
|
13
20
|
readonly className?: string;
|
|
14
21
|
}
|
|
@@ -26,11 +33,12 @@ export function Section({
|
|
|
26
33
|
count,
|
|
27
34
|
headerActions,
|
|
28
35
|
onEdit,
|
|
36
|
+
scrollTarget,
|
|
29
37
|
children,
|
|
30
38
|
className,
|
|
31
39
|
}: SectionProps) {
|
|
32
40
|
return (
|
|
33
|
-
<section className={className}>
|
|
41
|
+
<section className={className} data-scroll-target={scrollTarget}>
|
|
34
42
|
<div className="mb-2 flex items-center gap-2">
|
|
35
43
|
<h3 className="text-xs font-medium uppercase tracking-wider text-muted-foreground">
|
|
36
44
|
{title}
|
|
@@ -112,6 +112,17 @@ export interface ResourceWorkbenchProps<TData = SearchResult> {
|
|
|
112
112
|
/** Extracts a unique ID from an item (for selection tracking). */
|
|
113
113
|
readonly getItemId?: (item: TData) => string;
|
|
114
114
|
|
|
115
|
+
// --- Refresh -----------------------------------------------------------
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Opaque token that forces a background refetch of the list whenever
|
|
119
|
+
* its value changes — the current view stays rendered with a refetch
|
|
120
|
+
* shimmer (no remount flash), and pagination and sort are preserved.
|
|
121
|
+
* Bump it after an out-of-band mutation (applying a manifest, deleting
|
|
122
|
+
* a row) so the change appears without a reload.
|
|
123
|
+
*/
|
|
124
|
+
readonly refetchToken?: unknown;
|
|
125
|
+
|
|
115
126
|
// --- Empty & error states ----------------------------------------------
|
|
116
127
|
|
|
117
128
|
/** Icon for the empty state. */
|
|
@@ -210,6 +221,7 @@ export function ResourceWorkbench<TData = SearchResult>({
|
|
|
210
221
|
onStateChange,
|
|
211
222
|
enableSelection = false,
|
|
212
223
|
getItemId = defaultGetId as (item: TData) => string,
|
|
224
|
+
refetchToken,
|
|
213
225
|
emptyIcon,
|
|
214
226
|
emptyTitle = "No resources found",
|
|
215
227
|
emptyDescription = "Try adjusting your search or filters.",
|
|
@@ -255,6 +267,7 @@ export function ResourceWorkbench<TData = SearchResult>({
|
|
|
255
267
|
onSortChange: filtersHook.setSort,
|
|
256
268
|
columns: columns as WorkbenchColumnDef<TData>[],
|
|
257
269
|
enableSelection,
|
|
270
|
+
refetchToken,
|
|
258
271
|
});
|
|
259
272
|
|
|
260
273
|
// --- Selection ---------------------------------------------------------
|
|
@@ -57,6 +57,15 @@ export interface UseResourceCollectionOptions<TData = SearchResult> {
|
|
|
57
57
|
readonly columns?: readonly WorkbenchColumnDef<TData>[];
|
|
58
58
|
/** Enable row selection state tracking. @default false */
|
|
59
59
|
readonly enableSelection?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Opaque token that forces a background refetch whenever its value
|
|
62
|
+
* changes. Use it to re-read the list after an out-of-band mutation
|
|
63
|
+
* (e.g. applying a manifest or deleting a row) without remounting:
|
|
64
|
+
* bump a counter and pass it here. The current page stays rendered
|
|
65
|
+
* with an `isRefetching` shimmer — no full-list flash. A change to
|
|
66
|
+
* this token alone never resets pagination or sort.
|
|
67
|
+
*/
|
|
68
|
+
readonly refetchToken?: unknown;
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
// ---------------------------------------------------------------------------
|
|
@@ -148,6 +157,7 @@ export function useResourceCollection<TData = SearchResult>(
|
|
|
148
157
|
onSortChange,
|
|
149
158
|
columns = [],
|
|
150
159
|
enableSelection = false,
|
|
160
|
+
refetchToken,
|
|
151
161
|
} = options;
|
|
152
162
|
|
|
153
163
|
// --- Data fetching via useFetch -----------------------------------------
|
|
@@ -169,7 +179,7 @@ export function useResourceCollection<TData = SearchResult>(
|
|
|
169
179
|
};
|
|
170
180
|
}
|
|
171
181
|
: null,
|
|
172
|
-
[listFn, org, query, scope, page, pageSize],
|
|
182
|
+
[listFn, org, query, scope, page, pageSize, refetchToken],
|
|
173
183
|
INITIAL_DATA,
|
|
174
184
|
);
|
|
175
185
|
|
|
@@ -16,6 +16,13 @@ export interface UseResourceCountOptions {
|
|
|
16
16
|
* @default "org"
|
|
17
17
|
*/
|
|
18
18
|
readonly scope?: ResourceListScope;
|
|
19
|
+
/**
|
|
20
|
+
* Opaque token that forces a recount whenever its value changes. Use
|
|
21
|
+
* it to refresh the count after an out-of-band mutation (e.g. applying
|
|
22
|
+
* a manifest) without remounting. Mirrors the `refetchToken` on
|
|
23
|
+
* {@link useResourceCollection}.
|
|
24
|
+
*/
|
|
25
|
+
readonly refetchToken?: unknown;
|
|
19
26
|
}
|
|
20
27
|
|
|
21
28
|
export interface UseResourceCountReturn {
|
|
@@ -52,6 +59,7 @@ export function useResourceCount(
|
|
|
52
59
|
): UseResourceCountReturn {
|
|
53
60
|
const query = options?.query;
|
|
54
61
|
const scope = options?.scope ?? "org";
|
|
62
|
+
const refetchToken = options?.refetchToken;
|
|
55
63
|
|
|
56
64
|
const { data: count, isLoading, isRefetching, error, refetch } = useFetch<number | undefined>(
|
|
57
65
|
org
|
|
@@ -66,7 +74,7 @@ export function useResourceCount(
|
|
|
66
74
|
return result.totalCount;
|
|
67
75
|
}
|
|
68
76
|
: null,
|
|
69
|
-
[listFn, org, query, scope],
|
|
77
|
+
[listFn, org, query, scope, refetchToken],
|
|
70
78
|
undefined,
|
|
71
79
|
);
|
|
72
80
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useState, type ReactNode } from "react";
|
|
4
|
-
import { cn } from "@stigmer/theme";
|
|
5
4
|
import type { ResourceRef } from "@stigmer/sdk";
|
|
6
5
|
import type { UseGitHubConnectionReturn } from "../github/useGitHubConnection.js";
|
|
7
6
|
import type { WorkspaceFileLister } from "../workspace/WorkspaceFileLister.js";
|
|
@@ -10,7 +9,7 @@ import type { WorkspaceContentSearcher } from "../workspace/WorkspaceContentSear
|
|
|
10
9
|
import type { InteractionModeOption } from "../composer/index.js";
|
|
11
10
|
import { SessionComposer } from "../composer/index.js";
|
|
12
11
|
import type { HarnessOption } from "../models/harness.js";
|
|
13
|
-
import {
|
|
12
|
+
import { SessionViewerLayout } from "./SessionViewerLayout.js";
|
|
14
13
|
import { useWorkspaceEditors } from "../internal/store/index.js";
|
|
15
14
|
import { WorkspaceSurface } from "../workspace/WorkspaceSurface.js";
|
|
16
15
|
import type { SetupTabProps } from "./facets/SetupTab.js";
|
|
@@ -383,68 +382,56 @@ export function NewSessionViewer({
|
|
|
383
382
|
);
|
|
384
383
|
|
|
385
384
|
return (
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
385
|
+
// The launcher renders the same SessionViewerLayout as SessionViewer
|
|
386
|
+
// (DD-016) — the shared frame is what makes "the two viewers behave
|
|
387
|
+
// identically" structural rather than hand-synchronized.
|
|
388
|
+
<SessionViewerLayout
|
|
389
|
+
className={className}
|
|
390
|
+
resizeAriaLabel="Resize composer panel"
|
|
391
|
+
splitStorageKey="stgm-new-session-chat-width"
|
|
392
|
+
// Persistent chrome: the chip is always mounted, matching SessionViewer
|
|
393
|
+
// (DD-016) rather than the launcher's earlier progressively-revealed
|
|
394
|
+
// inspector. A toggle that appears/disappears with attached context
|
|
395
|
+
// reads as instability and, worse, unmounts the open panel's only
|
|
396
|
+
// collapse control when the last context item is removed. Always-on is
|
|
397
|
+
// the predictable, discoverable shape; opening homes on the Config
|
|
398
|
+
// facet, which carries useful defaults (harness/model) pre-session.
|
|
399
|
+
// Guests are the exception: the panel exposes configuration a visitor
|
|
400
|
+
// has no business with, so the chip (the panel's only toggle) is
|
|
401
|
+
// simply absent and the panel can never open.
|
|
402
|
+
chip={
|
|
403
|
+
!isGuest ? (
|
|
399
404
|
<SessionPanelChip
|
|
400
405
|
isOpen={panel.isOpen}
|
|
401
406
|
onToggle={panel.isOpen ? panel.closePanel : panel.openPanel}
|
|
402
407
|
/>
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
{
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
onViewChange={panel.setView}
|
|
432
|
-
extraViews={railViews}
|
|
433
|
-
onRemoveEntry={flow.workspace.remove}
|
|
434
|
-
onAddLocalFolder={canAddLocalFolder ? handleAddLocalFolder : undefined}
|
|
435
|
-
editors={editors}
|
|
436
|
-
selectedFile={activeFile}
|
|
437
|
-
onOpenFile={panel.openFile}
|
|
438
|
-
onActivateEditor={panel.activateEditor}
|
|
439
|
-
onPinEditor={panel.pinEditor}
|
|
440
|
-
onCloseEditor={panel.closeEditor}
|
|
441
|
-
onCollapse={panel.closePanel}
|
|
442
|
-
reveal={activeReveal}
|
|
443
|
-
className="h-full"
|
|
444
|
-
/>
|
|
445
|
-
) : null
|
|
446
|
-
}
|
|
447
|
-
/>
|
|
448
|
-
</div>
|
|
408
|
+
) : undefined
|
|
409
|
+
}
|
|
410
|
+
conversation={composerNode}
|
|
411
|
+
panel={
|
|
412
|
+
panel.isOpen ? (
|
|
413
|
+
<WorkspaceSurface
|
|
414
|
+
entries={flow.workspace.entries}
|
|
415
|
+
lister={workspaceFileLister}
|
|
416
|
+
reader={workspaceFileReader}
|
|
417
|
+
searcher={workspaceContentSearcher}
|
|
418
|
+
view={panel.view}
|
|
419
|
+
onViewChange={panel.setView}
|
|
420
|
+
extraViews={railViews}
|
|
421
|
+
onRemoveEntry={flow.workspace.remove}
|
|
422
|
+
onAddLocalFolder={canAddLocalFolder ? handleAddLocalFolder : undefined}
|
|
423
|
+
editors={editors}
|
|
424
|
+
selectedFile={activeFile}
|
|
425
|
+
onOpenFile={panel.openFile}
|
|
426
|
+
onActivateEditor={panel.activateEditor}
|
|
427
|
+
onPinEditor={panel.pinEditor}
|
|
428
|
+
onCloseEditor={panel.closeEditor}
|
|
429
|
+
onCollapse={panel.closePanel}
|
|
430
|
+
reveal={activeReveal}
|
|
431
|
+
className="h-full"
|
|
432
|
+
/>
|
|
433
|
+
) : null
|
|
434
|
+
}
|
|
435
|
+
/>
|
|
449
436
|
);
|
|
450
437
|
}
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "../workspace/WorkspaceSurface.js";
|
|
20
20
|
import type { InteractionModeOption, SessionComposerHandle, SessionComposerSubmitContext } from "../composer/index.js";
|
|
21
21
|
import type { ApplyResourceResult } from "../library/useApplyResource.js";
|
|
22
|
-
import {
|
|
22
|
+
import { SessionViewerLayout } from "./SessionViewerLayout.js";
|
|
23
23
|
import { useWorkspaceEditors, isVirtualEntryId } from "../internal/store/index.js";
|
|
24
24
|
import { isTerminalPhase } from "../execution/execution-phases.js";
|
|
25
25
|
import { MessageThread, type MessageThreadSlots } from "../execution/MessageThread.js";
|
|
@@ -267,7 +267,8 @@ export interface SessionViewerProps {
|
|
|
267
267
|
* to a top-right chip; opening a file (tree, search, or a transcript path)
|
|
268
268
|
* expands it.
|
|
269
269
|
*
|
|
270
|
-
*
|
|
270
|
+
* Both regions render inside {@link SessionViewerLayout} — the frame shared
|
|
271
|
+
* with {@link NewSessionViewer} — with the chat width persisted per viewer.
|
|
271
272
|
*
|
|
272
273
|
* Framework-agnostic — no Next.js, no Tauri, no routing deps. Host
|
|
273
274
|
* apps inject platform-specific values via props (DD-004/DD-016).
|
|
@@ -552,101 +553,85 @@ export function SessionViewer({
|
|
|
552
553
|
}
|
|
553
554
|
|
|
554
555
|
return (
|
|
555
|
-
<
|
|
556
|
-
{
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
556
|
+
<SessionViewerLayout
|
|
557
|
+
className={className}
|
|
558
|
+
// Top-right controls: host actions + the panel chip. The chip is the
|
|
559
|
+
// panel's always-mounted toggle; while collapsed it carries only the
|
|
560
|
+
// pending-item count. Execution status is never surfaced as header
|
|
561
|
+
// chrome — the thread itself communicates run state. Guests get no
|
|
562
|
+
// chip: the panel exposes session configuration a visitor has no
|
|
563
|
+
// business with, so its only toggle is simply absent.
|
|
564
|
+
headerActions={headerActions}
|
|
565
|
+
chip={
|
|
566
|
+
!isGuest ? (
|
|
565
567
|
<SessionPanelChip
|
|
566
568
|
isOpen={panel.isOpen}
|
|
567
569
|
onToggle={panel.isOpen ? panel.closePanel : panel.openPanel}
|
|
568
570
|
badgeCount={writeBackCount + artifactCount}
|
|
569
571
|
/>
|
|
570
|
-
)
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
{
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
572
|
+
) : undefined
|
|
573
|
+
}
|
|
574
|
+
splitStorageKey="stgm-session-chat-width"
|
|
575
|
+
conversation={
|
|
576
|
+
<ConversationColumn
|
|
577
|
+
flow={flow}
|
|
578
|
+
modelId={modelId}
|
|
579
|
+
setModelId={setModelId}
|
|
580
|
+
interactionMode={interactionMode}
|
|
581
|
+
setInteractionMode={setInteractionMode}
|
|
582
|
+
composerRef={composerRef}
|
|
583
|
+
org={org}
|
|
584
|
+
gitHubConnection={gitHubConnection}
|
|
585
|
+
enableGitHub={enableGitHub}
|
|
586
|
+
enableLocal={enableLocal}
|
|
587
|
+
onBrowseLocalFolder={onBrowseLocalFolder}
|
|
588
|
+
onBuildFromPlan={handleBuildFromPlan}
|
|
589
|
+
onOpenPlan={handleOpenPlan}
|
|
590
|
+
isBuildingFromPlan={isBuildingFromPlan}
|
|
591
|
+
planAttachFailed={planAttachFailed}
|
|
592
|
+
onDismissPlanAttachFailed={() => setPlanAttachFailed(false)}
|
|
593
|
+
onFilePathClick={handleTranscriptFilePathClick}
|
|
594
|
+
isCurated={isCurated}
|
|
595
|
+
isGuest={isGuest}
|
|
596
|
+
isObserver={isObserver}
|
|
597
|
+
threadSlots={threadSlots}
|
|
598
|
+
/>
|
|
599
|
+
}
|
|
600
|
+
panel={
|
|
601
|
+
panel.isOpen && !isGuest ? (
|
|
602
|
+
<SessionPanelRegion
|
|
591
603
|
flow={flow}
|
|
592
|
-
modelId={modelId}
|
|
593
|
-
setModelId={setModelId}
|
|
594
|
-
interactionMode={interactionMode}
|
|
595
|
-
setInteractionMode={setInteractionMode}
|
|
596
|
-
composerRef={composerRef}
|
|
597
604
|
org={org}
|
|
598
|
-
|
|
599
|
-
|
|
605
|
+
panel={panel}
|
|
606
|
+
// Observers cannot manage access (no can_grant_access /
|
|
607
|
+
// can_view_access on a channel session) — the control is
|
|
608
|
+
// withheld rather than left to fail server-side.
|
|
609
|
+
accessSlot={isObserver ? undefined : accessSlot}
|
|
610
|
+
onApplied={onApplied}
|
|
611
|
+
// Implementing a plan submits an execution — a write an
|
|
612
|
+
// observer cannot make (can_create_execution_in is
|
|
613
|
+
// owner/viewer-only).
|
|
614
|
+
onImplementPlan={isObserver ? undefined : handleBuildFromPlan}
|
|
615
|
+
implementPlanDisabled={
|
|
616
|
+
isObserver || !conv.canSendFollowUp || isBuildingFromPlan
|
|
617
|
+
}
|
|
618
|
+
sessionPlan={sessionPlan}
|
|
619
|
+
streamingPlan={streamingPlan}
|
|
620
|
+
planDraft={planDraft}
|
|
621
|
+
openPlanExecutionId={openPlanExecutionId}
|
|
622
|
+
onOpenPlan={handleOpenPlan}
|
|
623
|
+
onOpenArtifact={handleOpenArtifact}
|
|
624
|
+
onActivateArtifact={handleActivateArtifact}
|
|
600
625
|
enableLocal={enableLocal}
|
|
601
626
|
onBrowseLocalFolder={onBrowseLocalFolder}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
planAttachFailed={planAttachFailed}
|
|
606
|
-
onDismissPlanAttachFailed={() => setPlanAttachFailed(false)}
|
|
607
|
-
onFilePathClick={handleTranscriptFilePathClick}
|
|
627
|
+
workspaceFileLister={workspaceFileLister}
|
|
628
|
+
workspaceFileReader={workspaceFileReader}
|
|
629
|
+
workspaceContentSearcher={workspaceContentSearcher}
|
|
608
630
|
isCurated={isCurated}
|
|
609
|
-
isGuest={isGuest}
|
|
610
|
-
isObserver={isObserver}
|
|
611
|
-
threadSlots={threadSlots}
|
|
612
631
|
/>
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
<SessionPanelRegion
|
|
617
|
-
flow={flow}
|
|
618
|
-
org={org}
|
|
619
|
-
panel={panel}
|
|
620
|
-
// Observers cannot manage access (no can_grant_access /
|
|
621
|
-
// can_view_access on a channel session) — the control is
|
|
622
|
-
// withheld rather than left to fail server-side.
|
|
623
|
-
accessSlot={isObserver ? undefined : accessSlot}
|
|
624
|
-
onApplied={onApplied}
|
|
625
|
-
// Implementing a plan submits an execution — a write an
|
|
626
|
-
// observer cannot make (can_create_execution_in is
|
|
627
|
-
// owner/viewer-only).
|
|
628
|
-
onImplementPlan={isObserver ? undefined : handleBuildFromPlan}
|
|
629
|
-
implementPlanDisabled={
|
|
630
|
-
isObserver || !conv.canSendFollowUp || isBuildingFromPlan
|
|
631
|
-
}
|
|
632
|
-
sessionPlan={sessionPlan}
|
|
633
|
-
streamingPlan={streamingPlan}
|
|
634
|
-
planDraft={planDraft}
|
|
635
|
-
openPlanExecutionId={openPlanExecutionId}
|
|
636
|
-
onOpenPlan={handleOpenPlan}
|
|
637
|
-
onOpenArtifact={handleOpenArtifact}
|
|
638
|
-
onActivateArtifact={handleActivateArtifact}
|
|
639
|
-
enableLocal={enableLocal}
|
|
640
|
-
onBrowseLocalFolder={onBrowseLocalFolder}
|
|
641
|
-
workspaceFileLister={workspaceFileLister}
|
|
642
|
-
workspaceFileReader={workspaceFileReader}
|
|
643
|
-
workspaceContentSearcher={workspaceContentSearcher}
|
|
644
|
-
isCurated={isCurated}
|
|
645
|
-
/>
|
|
646
|
-
) : null
|
|
647
|
-
}
|
|
648
|
-
/>
|
|
649
|
-
</div>
|
|
632
|
+
) : null
|
|
633
|
+
}
|
|
634
|
+
/>
|
|
650
635
|
);
|
|
651
636
|
}
|
|
652
637
|
|