@stigmer/react 0.3.4 → 0.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/billing/AutoRechargeCard.d.ts +38 -0
- package/billing/AutoRechargeCard.d.ts.map +1 -0
- package/billing/AutoRechargeCard.js +90 -0
- package/billing/AutoRechargeCard.js.map +1 -0
- package/billing/BillingSection.d.ts +32 -0
- package/billing/BillingSection.d.ts.map +1 -0
- package/billing/BillingSection.js +81 -0
- package/billing/BillingSection.js.map +1 -0
- package/billing/CreditBalanceCard.d.ts +25 -0
- package/billing/CreditBalanceCard.d.ts.map +1 -0
- package/billing/CreditBalanceCard.js +28 -0
- package/billing/CreditBalanceCard.js.map +1 -0
- package/billing/CreditLedgerTable.d.ts +22 -0
- package/billing/CreditLedgerTable.d.ts.map +1 -0
- package/billing/CreditLedgerTable.js +75 -0
- package/billing/CreditLedgerTable.js.map +1 -0
- package/billing/CreditPackGrid.d.ts +31 -0
- package/billing/CreditPackGrid.d.ts.map +1 -0
- package/billing/CreditPackGrid.js +35 -0
- package/billing/CreditPackGrid.js.map +1 -0
- package/billing/LowBalanceBanner.d.ts +26 -0
- package/billing/LowBalanceBanner.d.ts.map +1 -0
- package/billing/LowBalanceBanner.js +33 -0
- package/billing/LowBalanceBanner.js.map +1 -0
- package/billing/PaymentMethodCard.d.ts +35 -0
- package/billing/PaymentMethodCard.d.ts.map +1 -0
- package/billing/PaymentMethodCard.js +48 -0
- package/billing/PaymentMethodCard.js.map +1 -0
- package/billing/credit-packs.d.ts +25 -0
- package/billing/credit-packs.d.ts.map +1 -0
- package/billing/credit-packs.js +39 -0
- package/billing/credit-packs.js.map +1 -0
- package/billing/format.d.ts +39 -0
- package/billing/format.d.ts.map +1 -0
- package/billing/format.js +90 -0
- package/billing/format.js.map +1 -0
- package/billing/index.d.ts +32 -0
- package/billing/index.d.ts.map +1 -0
- package/billing/index.js +21 -0
- package/billing/index.js.map +1 -0
- package/billing/useBillingAccount.d.ts +40 -0
- package/billing/useBillingAccount.d.ts.map +1 -0
- package/billing/useBillingAccount.js +35 -0
- package/billing/useBillingAccount.js.map +1 -0
- package/billing/useBillingUsageReport.d.ts +42 -0
- package/billing/useBillingUsageReport.d.ts.map +1 -0
- package/billing/useBillingUsageReport.js +43 -0
- package/billing/useBillingUsageReport.js.map +1 -0
- package/billing/useCreateBillingPortalSession.d.ts +35 -0
- package/billing/useCreateBillingPortalSession.d.ts.map +1 -0
- package/billing/useCreateBillingPortalSession.js +50 -0
- package/billing/useCreateBillingPortalSession.js.map +1 -0
- package/billing/useCreateCheckoutSession.d.ts +54 -0
- package/billing/useCreateCheckoutSession.d.ts.map +1 -0
- package/billing/useCreateCheckoutSession.js +58 -0
- package/billing/useCreateCheckoutSession.js.map +1 -0
- package/billing/useCreditLedger.d.ts +48 -0
- package/billing/useCreditLedger.d.ts.map +1 -0
- package/billing/useCreditLedger.js +39 -0
- package/billing/useCreditLedger.js.map +1 -0
- package/billing/useCustomerModelPricing.d.ts +41 -0
- package/billing/useCustomerModelPricing.d.ts.map +1 -0
- package/billing/useCustomerModelPricing.js +37 -0
- package/billing/useCustomerModelPricing.js.map +1 -0
- package/billing/useSetAutoRechargeConfig.d.ts +50 -0
- package/billing/useSetAutoRechargeConfig.d.ts.map +1 -0
- package/billing/useSetAutoRechargeConfig.js +53 -0
- package/billing/useSetAutoRechargeConfig.js.map +1 -0
- package/composer/ComposerToolbar.js +1 -1
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +1 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +19 -4
- package/composer/SessionComposer.js.map +1 -1
- package/composer/__tests__/SessionComposer-memo.test.d.ts +2 -0
- package/composer/__tests__/SessionComposer-memo.test.d.ts.map +1 -0
- package/composer/__tests__/SessionComposer-memo.test.js +23 -0
- package/composer/__tests__/SessionComposer-memo.test.js.map +1 -0
- package/execution/ApprovalCard.d.ts +5 -1
- package/execution/ApprovalCard.d.ts.map +1 -1
- package/execution/ApprovalCard.js +7 -3
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/ExecutionPhaseBadge.d.ts +1 -1
- package/execution/ExecutionPhaseBadge.d.ts.map +1 -1
- package/execution/ExecutionPhaseBadge.js +3 -2
- package/execution/ExecutionPhaseBadge.js.map +1 -1
- package/execution/MessageEntry.d.ts +7 -3
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +19 -8
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +84 -3
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +113 -65
- package/execution/MessageThread.js.map +1 -1
- package/execution/SetupProgress.d.ts +1 -1
- package/execution/SetupProgress.d.ts.map +1 -1
- package/execution/SetupProgress.js +3 -3
- package/execution/SetupProgress.js.map +1 -1
- package/execution/SubAgentSection.d.ts +5 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +13 -7
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/ThreadSkeleton.d.ts +22 -0
- package/execution/ThreadSkeleton.d.ts.map +1 -0
- package/execution/ThreadSkeleton.js +26 -0
- package/execution/ThreadSkeleton.js.map +1 -0
- package/execution/ToolCallGroup.d.ts +16 -1
- package/execution/ToolCallGroup.d.ts.map +1 -1
- package/execution/ToolCallGroup.js +31 -3
- package/execution/ToolCallGroup.js.map +1 -1
- package/execution/UsageWidget.d.ts +1 -1
- package/execution/__tests__/message-entry.test.d.ts +2 -0
- package/execution/__tests__/message-entry.test.d.ts.map +1 -0
- package/execution/__tests__/message-entry.test.js +178 -0
- package/execution/__tests__/message-entry.test.js.map +1 -0
- package/execution/__tests__/thread-keys.test.d.ts +2 -0
- package/execution/__tests__/thread-keys.test.d.ts.map +1 -0
- package/execution/__tests__/thread-keys.test.js +289 -0
- package/execution/__tests__/thread-keys.test.js.map +1 -0
- package/execution/__tests__/thread-memoization.test.d.ts +2 -0
- package/execution/__tests__/thread-memoization.test.d.ts.map +1 -0
- package/execution/__tests__/thread-memoization.test.js +262 -0
- package/execution/__tests__/thread-memoization.test.js.map +1 -0
- package/execution/__tests__/thread-skeleton.test.d.ts +2 -0
- package/execution/__tests__/thread-skeleton.test.d.ts.map +1 -0
- package/execution/__tests__/thread-skeleton.test.js +35 -0
- package/execution/__tests__/thread-skeleton.test.js.map +1 -0
- package/execution/__tests__/useExecutionStream.test.js +73 -10
- package/execution/__tests__/useExecutionStream.test.js.map +1 -1
- package/execution/__tests__/useSessionVariables-stability.test.d.ts +2 -0
- package/execution/__tests__/useSessionVariables-stability.test.d.ts.map +1 -0
- package/execution/__tests__/useSessionVariables-stability.test.js +69 -0
- package/execution/__tests__/useSessionVariables-stability.test.js.map +1 -0
- package/execution/__tests__/virtualized-thread.test.d.ts +2 -0
- package/execution/__tests__/virtualized-thread.test.d.ts.map +1 -0
- package/execution/__tests__/virtualized-thread.test.js +274 -0
- package/execution/__tests__/virtualized-thread.test.js.map +1 -0
- package/execution/index.d.ts +2 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +1 -0
- package/execution/index.js.map +1 -1
- package/execution/useExecutionStream.d.ts +35 -10
- package/execution/useExecutionStream.d.ts.map +1 -1
- package/execution/useExecutionStream.js +79 -40
- package/execution/useExecutionStream.js.map +1 -1
- package/execution/useSessionVariables.d.ts.map +1 -1
- package/execution/useSessionVariables.js +4 -3
- package/execution/useSessionVariables.js.map +1 -1
- package/github/useGitHubConnection.d.ts.map +1 -1
- package/github/useGitHubConnection.js +5 -4
- package/github/useGitHubConnection.js.map +1 -1
- package/identity-account/index.d.ts +2 -0
- package/identity-account/index.d.ts.map +1 -0
- package/identity-account/index.js +2 -0
- package/identity-account/index.js.map +1 -0
- package/identity-account/useIdentityAccountGate.d.ts +81 -0
- package/identity-account/useIdentityAccountGate.d.ts.map +1 -0
- package/identity-account/useIdentityAccountGate.js +100 -0
- package/identity-account/useIdentityAccountGate.js.map +1 -0
- package/index.d.ts +10 -4
- package/index.d.ts.map +1 -1
- package/index.js +8 -2
- package/index.js.map +1 -1
- package/internal/FetchCacheProvider.d.ts +44 -0
- package/internal/FetchCacheProvider.d.ts.map +1 -0
- package/internal/FetchCacheProvider.js +61 -0
- package/internal/FetchCacheProvider.js.map +1 -0
- package/internal/JumpToLatestButton.d.ts +14 -0
- package/internal/JumpToLatestButton.d.ts.map +1 -0
- package/internal/JumpToLatestButton.js +19 -0
- package/internal/JumpToLatestButton.js.map +1 -0
- package/internal/ThreadItemWrapper.d.ts +20 -0
- package/internal/ThreadItemWrapper.d.ts.map +1 -0
- package/internal/ThreadItemWrapper.js +44 -0
- package/internal/ThreadItemWrapper.js.map +1 -0
- package/internal/VirtualizedThread.d.ts +25 -0
- package/internal/VirtualizedThread.d.ts.map +1 -0
- package/internal/VirtualizedThread.js +58 -0
- package/internal/VirtualizedThread.js.map +1 -0
- package/internal/__tests__/fetch-cache.test.d.ts +2 -0
- package/internal/__tests__/fetch-cache.test.d.ts.map +1 -0
- package/internal/__tests__/fetch-cache.test.js +182 -0
- package/internal/__tests__/fetch-cache.test.js.map +1 -0
- package/internal/__tests__/stream-controller.test.d.ts +2 -0
- package/internal/__tests__/stream-controller.test.d.ts.map +1 -0
- package/internal/__tests__/stream-controller.test.js +294 -0
- package/internal/__tests__/stream-controller.test.js.map +1 -0
- package/internal/__tests__/thread-animation.test.d.ts +2 -0
- package/internal/__tests__/thread-animation.test.d.ts.map +1 -0
- package/internal/__tests__/thread-animation.test.js +79 -0
- package/internal/__tests__/thread-animation.test.js.map +1 -0
- package/internal/__tests__/useAutoScroll.test.d.ts +2 -0
- package/internal/__tests__/useAutoScroll.test.d.ts.map +1 -0
- package/internal/__tests__/useAutoScroll.test.js +188 -0
- package/internal/__tests__/useAutoScroll.test.js.map +1 -0
- package/internal/__tests__/useFetch-cache.test.d.ts +2 -0
- package/internal/__tests__/useFetch-cache.test.d.ts.map +1 -0
- package/internal/__tests__/useFetch-cache.test.js +137 -0
- package/internal/__tests__/useFetch-cache.test.js.map +1 -0
- package/internal/dev/__tests__/use-key-stability.test.d.ts +2 -0
- package/internal/dev/__tests__/use-key-stability.test.d.ts.map +1 -0
- package/internal/dev/__tests__/use-key-stability.test.js +72 -0
- package/internal/dev/__tests__/use-key-stability.test.js.map +1 -0
- package/internal/dev/__tests__/use-render-tracer.test.d.ts +2 -0
- package/internal/dev/__tests__/use-render-tracer.test.d.ts.map +1 -0
- package/internal/dev/__tests__/use-render-tracer.test.js +55 -0
- package/internal/dev/__tests__/use-render-tracer.test.js.map +1 -0
- package/internal/dev/dom-counter.d.ts +14 -0
- package/internal/dev/dom-counter.d.ts.map +1 -0
- package/internal/dev/dom-counter.js +39 -0
- package/internal/dev/dom-counter.js.map +1 -0
- package/internal/dev/index.d.ts +6 -0
- package/internal/dev/index.d.ts.map +1 -0
- package/internal/dev/index.js +6 -0
- package/internal/dev/index.js.map +1 -0
- package/internal/dev/profiler-wrapper.d.ts +16 -0
- package/internal/dev/profiler-wrapper.d.ts.map +1 -0
- package/internal/dev/profiler-wrapper.js +31 -0
- package/internal/dev/profiler-wrapper.js.map +1 -0
- package/internal/dev/use-key-stability.d.ts +22 -0
- package/internal/dev/use-key-stability.d.ts.map +1 -0
- package/internal/dev/use-key-stability.js +67 -0
- package/internal/dev/use-key-stability.js.map +1 -0
- package/internal/dev/use-render-tracer.d.ts +13 -0
- package/internal/dev/use-render-tracer.d.ts.map +1 -0
- package/internal/dev/use-render-tracer.js +57 -0
- package/internal/dev/use-render-tracer.js.map +1 -0
- package/internal/dev/use-stream-rate.d.ts +23 -0
- package/internal/dev/use-stream-rate.d.ts.map +1 -0
- package/internal/dev/use-stream-rate.js +94 -0
- package/internal/dev/use-stream-rate.js.map +1 -0
- package/internal/fetch-cache.d.ts +72 -0
- package/internal/fetch-cache.d.ts.map +1 -0
- package/internal/fetch-cache.js +118 -0
- package/internal/fetch-cache.js.map +1 -0
- package/internal/store/__tests__/conversation-store.test.d.ts +2 -0
- package/internal/store/__tests__/conversation-store.test.d.ts.map +1 -0
- package/internal/store/__tests__/conversation-store.test.js +200 -0
- package/internal/store/__tests__/conversation-store.test.js.map +1 -0
- package/internal/store/__tests__/structural-share.test.d.ts +2 -0
- package/internal/store/__tests__/structural-share.test.d.ts.map +1 -0
- package/internal/store/__tests__/structural-share.test.js +368 -0
- package/internal/store/__tests__/structural-share.test.js.map +1 -0
- package/internal/store/conversation-store.d.ts +62 -0
- package/internal/store/conversation-store.d.ts.map +1 -0
- package/internal/store/conversation-store.js +95 -0
- package/internal/store/conversation-store.js.map +1 -0
- package/internal/store/index.d.ts +31 -0
- package/internal/store/index.d.ts.map +1 -0
- package/internal/store/index.js +54 -0
- package/internal/store/index.js.map +1 -0
- package/internal/store/structural-share.d.ts +13 -0
- package/internal/store/structural-share.d.ts.map +1 -0
- package/internal/store/structural-share.js +240 -0
- package/internal/store/structural-share.js.map +1 -0
- package/internal/stream-controller.d.ts +85 -0
- package/internal/stream-controller.d.ts.map +1 -0
- package/internal/stream-controller.js +146 -0
- package/internal/stream-controller.js.map +1 -0
- package/internal/useAutoScroll.d.ts +32 -0
- package/internal/useAutoScroll.d.ts.map +1 -0
- package/internal/useAutoScroll.js +97 -0
- package/internal/useAutoScroll.js.map +1 -0
- package/internal/useFetch.d.ts +14 -0
- package/internal/useFetch.d.ts.map +1 -1
- package/internal/useFetch.js +32 -2
- package/internal/useFetch.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +3 -3
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +37 -9
- package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
- package/package.json +7 -5
- package/session/__tests__/useNewSessionFlow.test.js +16 -0
- package/session/__tests__/useNewSessionFlow.test.js.map +1 -1
- package/session/__tests__/usePersistedModel.test.d.ts +2 -0
- package/session/__tests__/usePersistedModel.test.d.ts.map +1 -0
- package/session/__tests__/usePersistedModel.test.js +82 -0
- package/session/__tests__/usePersistedModel.test.js.map +1 -0
- package/session/__tests__/useSession.test.d.ts +2 -0
- package/session/__tests__/useSession.test.d.ts.map +1 -0
- package/session/__tests__/useSession.test.js +130 -0
- package/session/__tests__/useSession.test.js.map +1 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +12 -6
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/usePersistedModel.d.ts +3 -0
- package/session/usePersistedModel.d.ts.map +1 -1
- package/session/usePersistedModel.js +27 -2
- package/session/usePersistedModel.js.map +1 -1
- package/session/useSession.d.ts.map +1 -1
- package/session/useSession.js +1 -1
- package/session/useSession.js.map +1 -1
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +9 -1
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionExecutions.d.ts.map +1 -1
- package/session/useSessionExecutions.js +1 -1
- package/session/useSessionExecutions.js.map +1 -1
- package/session/useSessionPageFlow.js +1 -1
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionUsage.d.ts +24 -40
- package/session/useSessionUsage.d.ts.map +1 -1
- package/session/useSessionUsage.js +64 -97
- package/session/useSessionUsage.js.map +1 -1
- package/settings/BillingSection.d.ts +3 -0
- package/settings/BillingSection.d.ts.map +1 -0
- package/settings/BillingSection.js +3 -0
- package/settings/BillingSection.js.map +1 -0
- package/settings/index.d.ts +2 -0
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +1 -0
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.js +1 -1
- package/settings/settings-nav.js.map +1 -1
- package/src/billing/AutoRechargeCard.tsx +274 -0
- package/src/billing/BillingSection.tsx +255 -0
- package/src/billing/CreditBalanceCard.tsx +81 -0
- package/src/billing/CreditLedgerTable.tsx +281 -0
- package/src/billing/CreditPackGrid.tsx +132 -0
- package/src/billing/LowBalanceBanner.tsx +67 -0
- package/src/billing/PaymentMethodCard.tsx +133 -0
- package/src/billing/credit-packs.ts +54 -0
- package/src/billing/format.ts +97 -0
- package/src/billing/index.ts +51 -0
- package/src/billing/useBillingAccount.ts +64 -0
- package/src/billing/useBillingUsageReport.ts +73 -0
- package/src/billing/useCreateBillingPortalSession.ts +76 -0
- package/src/billing/useCreateCheckoutSession.ts +101 -0
- package/src/billing/useCreditLedger.ts +79 -0
- package/src/billing/useCustomerModelPricing.ts +67 -0
- package/src/billing/useSetAutoRechargeConfig.ts +90 -0
- package/src/composer/ComposerToolbar.tsx +1 -1
- package/src/composer/SessionComposer.tsx +22 -4
- package/src/composer/__tests__/SessionComposer-memo.test.ts +26 -0
- package/src/execution/ApprovalCard.tsx +7 -3
- package/src/execution/ExecutionPhaseBadge.tsx +3 -2
- package/src/execution/MessageEntry.tsx +27 -16
- package/src/execution/MessageThread.tsx +308 -131
- package/src/execution/SetupProgress.tsx +3 -3
- package/src/execution/SubAgentSection.tsx +14 -6
- package/src/execution/ThreadSkeleton.tsx +73 -0
- package/src/execution/ToolCallGroup.tsx +36 -3
- package/src/execution/UsageWidget.tsx +1 -1
- package/src/execution/__tests__/message-entry.test.tsx +236 -0
- package/src/execution/__tests__/thread-keys.test.ts +409 -0
- package/src/execution/__tests__/thread-memoization.test.ts +320 -0
- package/src/execution/__tests__/thread-skeleton.test.tsx +44 -0
- package/src/execution/__tests__/useExecutionStream.test.tsx +109 -12
- package/src/execution/__tests__/useSessionVariables-stability.test.ts +95 -0
- package/src/execution/__tests__/virtualized-thread.test.tsx +401 -0
- package/src/execution/index.ts +3 -0
- package/src/execution/useExecutionStream.ts +123 -48
- package/src/execution/useSessionVariables.ts +17 -12
- package/src/github/useGitHubConnection.ts +18 -13
- package/src/identity-account/index.ts +5 -0
- package/src/identity-account/useIdentityAccountGate.ts +163 -0
- package/src/index.ts +73 -0
- package/src/internal/FetchCacheProvider.tsx +74 -0
- package/src/internal/JumpToLatestButton.tsx +61 -0
- package/src/internal/ThreadItemWrapper.tsx +65 -0
- package/src/internal/VirtualizedThread.tsx +162 -0
- package/src/internal/__tests__/fetch-cache.test.ts +230 -0
- package/src/internal/__tests__/stream-controller.test.ts +395 -0
- package/src/internal/__tests__/thread-animation.test.tsx +121 -0
- package/src/internal/__tests__/useAutoScroll.test.tsx +261 -0
- package/src/internal/__tests__/useFetch-cache.test.ts +214 -0
- package/src/internal/dev/__tests__/use-key-stability.test.ts +124 -0
- package/src/internal/dev/__tests__/use-render-tracer.test.ts +78 -0
- package/src/internal/dev/dom-counter.ts +47 -0
- package/src/internal/dev/index.ts +5 -0
- package/src/internal/dev/profiler-wrapper.tsx +52 -0
- package/src/internal/dev/use-key-stability.ts +86 -0
- package/src/internal/dev/use-render-tracer.ts +70 -0
- package/src/internal/dev/use-stream-rate.ts +138 -0
- package/src/internal/fetch-cache.ts +155 -0
- package/src/internal/store/__tests__/conversation-store.test.ts +257 -0
- package/src/internal/store/__tests__/structural-share.test.ts +454 -0
- package/src/internal/store/conversation-store.ts +128 -0
- package/src/internal/store/index.ts +68 -0
- package/src/internal/store/structural-share.ts +318 -0
- package/src/internal/stream-controller.ts +201 -0
- package/src/internal/useAutoScroll.ts +121 -0
- package/src/internal/useFetch.ts +51 -2
- package/src/mcp-server/McpServerDetailView.tsx +15 -0
- package/src/mcp-server/useMcpServerOAuthConnect.ts +37 -9
- package/src/session/__tests__/useNewSessionFlow.test.tsx +22 -0
- package/src/session/__tests__/usePersistedModel.test.tsx +117 -0
- package/src/session/__tests__/useSession.test.tsx +187 -0
- package/src/session/useNewSessionFlow.ts +12 -6
- package/src/session/usePersistedModel.ts +28 -2
- package/src/session/useSession.ts +1 -0
- package/src/session/useSessionConversation.ts +11 -2
- package/src/session/useSessionExecutions.ts +1 -0
- package/src/session/useSessionPageFlow.ts +1 -1
- package/src/session/useSessionUsage.ts +102 -123
- package/src/settings/BillingSection.tsx +4 -0
- package/src/settings/index.ts +2 -0
- package/src/settings/settings-nav.ts +1 -1
- package/src/styles.css +31 -0
- package/src/usage/AgentBreakdownList.tsx +147 -0
- package/src/usage/CreditRunwayIndicator.tsx +71 -0
- package/src/usage/ExportButton.tsx +115 -0
- package/src/usage/HarnessSplitCard.tsx +103 -0
- package/src/usage/OrgUsagePanel.tsx +109 -45
- package/src/usage/index.ts +15 -0
- package/src/usage/useExportCSV.ts +115 -0
- package/src/usage/useOrgUsageReport.ts +2 -1
- package/src/workspace/__tests__/useWorkspaceEntries-stability.test.ts +76 -0
- package/src/workspace/useWorkspaceEntries.ts +16 -11
- package/styles.css +1 -1
- package/usage/AgentBreakdownList.d.ts +21 -0
- package/usage/AgentBreakdownList.d.ts.map +1 -0
- package/usage/AgentBreakdownList.js +44 -0
- package/usage/AgentBreakdownList.js.map +1 -0
- package/usage/CreditRunwayIndicator.d.ts +21 -0
- package/usage/CreditRunwayIndicator.d.ts.map +1 -0
- package/usage/CreditRunwayIndicator.js +38 -0
- package/usage/CreditRunwayIndicator.js.map +1 -0
- package/usage/ExportButton.d.ts +20 -0
- package/usage/ExportButton.d.ts.map +1 -0
- package/usage/ExportButton.js +36 -0
- package/usage/ExportButton.js.map +1 -0
- package/usage/HarnessSplitCard.d.ts +17 -0
- package/usage/HarnessSplitCard.d.ts.map +1 -0
- package/usage/HarnessSplitCard.js +38 -0
- package/usage/HarnessSplitCard.js.map +1 -0
- package/usage/OrgUsagePanel.d.ts.map +1 -1
- package/usage/OrgUsagePanel.js +30 -22
- package/usage/OrgUsagePanel.js.map +1 -1
- package/usage/index.d.ts +10 -0
- package/usage/index.d.ts.map +1 -1
- package/usage/index.js +5 -0
- package/usage/index.js.map +1 -1
- package/usage/useExportCSV.d.ts +23 -0
- package/usage/useExportCSV.d.ts.map +1 -0
- package/usage/useExportCSV.js +81 -0
- package/usage/useExportCSV.js.map +1 -0
- package/usage/useOrgUsageReport.d.ts +2 -1
- package/usage/useOrgUsageReport.d.ts.map +1 -1
- package/usage/useOrgUsageReport.js +2 -1
- package/usage/useOrgUsageReport.js.map +1 -1
- package/workspace/__tests__/useWorkspaceEntries-stability.test.d.ts +2 -0
- package/workspace/__tests__/useWorkspaceEntries-stability.test.d.ts.map +1 -0
- package/workspace/__tests__/useWorkspaceEntries-stability.test.js +57 -0
- package/workspace/__tests__/useWorkspaceEntries-stability.test.js.map +1 -0
- package/workspace/useWorkspaceEntries.d.ts.map +1 -1
- package/workspace/useWorkspaceEntries.js +5 -4
- package/workspace/useWorkspaceEntries.js.map +1 -1
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { create } from "@bufbuild/protobuf";
|
|
3
|
+
import { AgentExecutionSchema, AgentExecutionStatusSchema, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
4
|
+
import { AgentExecutionSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/spec_pb";
|
|
5
|
+
import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
|
|
6
|
+
import { AgentMessageSchema, ToolCallSchema, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
7
|
+
import { SubAgentExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/subagent_pb";
|
|
8
|
+
import { PendingApprovalSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/approval_pb";
|
|
9
|
+
import { ExecutionPhase, MessageType, ToolCallStatus, SubAgentStatus, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
10
|
+
import { structuralShare } from "../structural-share";
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Helpers
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
function msg(type, content, opts) {
|
|
15
|
+
const m = create(AgentMessageSchema);
|
|
16
|
+
m.type = type;
|
|
17
|
+
m.content = content;
|
|
18
|
+
if (opts?.toolCalls)
|
|
19
|
+
m.toolCalls = opts.toolCalls;
|
|
20
|
+
if (opts?.isStreaming)
|
|
21
|
+
m.isStreaming = true;
|
|
22
|
+
if (opts?.timestamp)
|
|
23
|
+
m.timestamp = opts.timestamp;
|
|
24
|
+
return m;
|
|
25
|
+
}
|
|
26
|
+
function tc(id, name, opts) {
|
|
27
|
+
const t = create(ToolCallSchema);
|
|
28
|
+
t.id = id;
|
|
29
|
+
t.name = name;
|
|
30
|
+
t.status = opts?.status ?? ToolCallStatus.TOOL_CALL_COMPLETED;
|
|
31
|
+
if (opts?.result)
|
|
32
|
+
t.result = opts.result;
|
|
33
|
+
if (opts?.isStreaming)
|
|
34
|
+
t.isStreaming = true;
|
|
35
|
+
return t;
|
|
36
|
+
}
|
|
37
|
+
function subAgent(id, opts) {
|
|
38
|
+
const sa = create(SubAgentExecutionSchema);
|
|
39
|
+
sa.id = id;
|
|
40
|
+
sa.name = `agent-${id}`;
|
|
41
|
+
sa.status = opts?.status ?? SubAgentStatus.SUB_AGENT_IN_PROGRESS;
|
|
42
|
+
if (opts?.messages)
|
|
43
|
+
sa.messages = opts.messages;
|
|
44
|
+
if (opts?.output)
|
|
45
|
+
sa.output = opts.output;
|
|
46
|
+
return sa;
|
|
47
|
+
}
|
|
48
|
+
function approval(toolCallId, toolName) {
|
|
49
|
+
const a = create(PendingApprovalSchema);
|
|
50
|
+
a.toolCallId = toolCallId;
|
|
51
|
+
a.toolName = toolName;
|
|
52
|
+
return a;
|
|
53
|
+
}
|
|
54
|
+
function exec(opts) {
|
|
55
|
+
const e = create(AgentExecutionSchema);
|
|
56
|
+
const meta = create(ApiResourceMetadataSchema);
|
|
57
|
+
meta.id = opts.id ?? "exec-1";
|
|
58
|
+
e.metadata = meta;
|
|
59
|
+
const spec = create(AgentExecutionSpecSchema);
|
|
60
|
+
e.spec = spec;
|
|
61
|
+
const status = create(AgentExecutionStatusSchema);
|
|
62
|
+
status.phase = opts.phase ?? ExecutionPhase.EXECUTION_IN_PROGRESS;
|
|
63
|
+
if (opts.messages)
|
|
64
|
+
status.messages = opts.messages;
|
|
65
|
+
if (opts.subAgents)
|
|
66
|
+
status.subAgentExecutions = opts.subAgents;
|
|
67
|
+
if (opts.approvals)
|
|
68
|
+
status.pendingApprovals = opts.approvals;
|
|
69
|
+
e.status = status;
|
|
70
|
+
return e;
|
|
71
|
+
}
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// Tests
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
describe("structuralShare", () => {
|
|
76
|
+
describe("first snapshot (prev is null)", () => {
|
|
77
|
+
it("returns next unchanged", () => {
|
|
78
|
+
const next = exec({ messages: [msg(MessageType.MESSAGE_HUMAN, "hi")] });
|
|
79
|
+
expect(structuralShare(null, next)).toBe(next);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe("identical snapshots", () => {
|
|
83
|
+
it("returns prev reference when nothing changed", () => {
|
|
84
|
+
const snapshot = exec({
|
|
85
|
+
messages: [
|
|
86
|
+
msg(MessageType.MESSAGE_HUMAN, "hello"),
|
|
87
|
+
msg(MessageType.MESSAGE_AI, "world"),
|
|
88
|
+
],
|
|
89
|
+
});
|
|
90
|
+
const next = exec({
|
|
91
|
+
messages: [
|
|
92
|
+
msg(MessageType.MESSAGE_HUMAN, "hello"),
|
|
93
|
+
msg(MessageType.MESSAGE_AI, "world"),
|
|
94
|
+
],
|
|
95
|
+
});
|
|
96
|
+
const result = structuralShare(snapshot, next);
|
|
97
|
+
expect(result).toBe(snapshot);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe("message-level sharing", () => {
|
|
101
|
+
it("reuses references for unchanged messages at the prefix", () => {
|
|
102
|
+
const m1 = msg(MessageType.MESSAGE_HUMAN, "hello");
|
|
103
|
+
const m2 = msg(MessageType.MESSAGE_AI, "complete response");
|
|
104
|
+
const prev = exec({ messages: [m1, m2] });
|
|
105
|
+
const m3 = msg(MessageType.MESSAGE_AI, "streaming...", {
|
|
106
|
+
isStreaming: true,
|
|
107
|
+
});
|
|
108
|
+
const next = exec({
|
|
109
|
+
messages: [
|
|
110
|
+
msg(MessageType.MESSAGE_HUMAN, "hello"),
|
|
111
|
+
msg(MessageType.MESSAGE_AI, "complete response"),
|
|
112
|
+
m3,
|
|
113
|
+
],
|
|
114
|
+
});
|
|
115
|
+
const result = structuralShare(prev, next);
|
|
116
|
+
expect(result).not.toBe(prev);
|
|
117
|
+
expect(result.status.messages[0]).toBe(m1);
|
|
118
|
+
expect(result.status.messages[1]).toBe(m2);
|
|
119
|
+
expect(result.status.messages[2]).toBe(m3);
|
|
120
|
+
});
|
|
121
|
+
it("produces new reference for a message whose content changed", () => {
|
|
122
|
+
const m1 = msg(MessageType.MESSAGE_HUMAN, "hello");
|
|
123
|
+
const prev = exec({
|
|
124
|
+
messages: [m1, msg(MessageType.MESSAGE_AI, "partial")],
|
|
125
|
+
});
|
|
126
|
+
const next = exec({
|
|
127
|
+
messages: [
|
|
128
|
+
msg(MessageType.MESSAGE_HUMAN, "hello"),
|
|
129
|
+
msg(MessageType.MESSAGE_AI, "partial text growing"),
|
|
130
|
+
],
|
|
131
|
+
});
|
|
132
|
+
const result = structuralShare(prev, next);
|
|
133
|
+
expect(result.status.messages[0]).toBe(m1);
|
|
134
|
+
expect(result.status.messages[1]).not.toBe(prev.status.messages[1]);
|
|
135
|
+
expect(result.status.messages[1].content).toBe("partial text growing");
|
|
136
|
+
});
|
|
137
|
+
it("produces new reference when isStreaming flag changes", () => {
|
|
138
|
+
const prev = exec({
|
|
139
|
+
messages: [
|
|
140
|
+
msg(MessageType.MESSAGE_AI, "done text", { isStreaming: true }),
|
|
141
|
+
],
|
|
142
|
+
});
|
|
143
|
+
const next = exec({
|
|
144
|
+
messages: [
|
|
145
|
+
msg(MessageType.MESSAGE_AI, "done text", { isStreaming: false }),
|
|
146
|
+
],
|
|
147
|
+
});
|
|
148
|
+
const result = structuralShare(prev, next);
|
|
149
|
+
expect(result).not.toBe(prev);
|
|
150
|
+
expect(result.status.messages[0]).not.toBe(prev.status.messages[0]);
|
|
151
|
+
});
|
|
152
|
+
it("handles empty to non-empty messages transition", () => {
|
|
153
|
+
const prev = exec({ messages: [] });
|
|
154
|
+
const next = exec({
|
|
155
|
+
messages: [msg(MessageType.MESSAGE_HUMAN, "first")],
|
|
156
|
+
});
|
|
157
|
+
const result = structuralShare(prev, next);
|
|
158
|
+
expect(result).not.toBe(prev);
|
|
159
|
+
expect(result.status.messages.length).toBe(1);
|
|
160
|
+
});
|
|
161
|
+
it("returns prev when both have empty messages", () => {
|
|
162
|
+
const prev = exec({ messages: [] });
|
|
163
|
+
const next = exec({ messages: [] });
|
|
164
|
+
expect(structuralShare(prev, next)).toBe(prev);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe("tool call sharing within messages", () => {
|
|
168
|
+
it("preserves unchanged tool call references by id", () => {
|
|
169
|
+
const tc1 = tc("tc-1", "read_file", { result: "file content" });
|
|
170
|
+
const tc2 = tc("tc-2", "write_file", {
|
|
171
|
+
status: ToolCallStatus.TOOL_CALL_RUNNING,
|
|
172
|
+
isStreaming: true,
|
|
173
|
+
});
|
|
174
|
+
const prev = exec({
|
|
175
|
+
messages: [
|
|
176
|
+
msg(MessageType.MESSAGE_AI, "using tools", { toolCalls: [tc1, tc2] }),
|
|
177
|
+
],
|
|
178
|
+
});
|
|
179
|
+
const tc2Updated = tc("tc-2", "write_file", {
|
|
180
|
+
status: ToolCallStatus.TOOL_CALL_COMPLETED,
|
|
181
|
+
result: "written",
|
|
182
|
+
});
|
|
183
|
+
const next = exec({
|
|
184
|
+
messages: [
|
|
185
|
+
msg(MessageType.MESSAGE_AI, "using tools", {
|
|
186
|
+
toolCalls: [
|
|
187
|
+
tc("tc-1", "read_file", { result: "file content" }),
|
|
188
|
+
tc2Updated,
|
|
189
|
+
],
|
|
190
|
+
}),
|
|
191
|
+
],
|
|
192
|
+
});
|
|
193
|
+
const result = structuralShare(prev, next);
|
|
194
|
+
const resultTcs = result.status.messages[0].toolCalls;
|
|
195
|
+
expect(resultTcs[0]).toBe(tc1);
|
|
196
|
+
expect(resultTcs[1]).not.toBe(tc2);
|
|
197
|
+
expect(resultTcs[1].status).toBe(ToolCallStatus.TOOL_CALL_COMPLETED);
|
|
198
|
+
});
|
|
199
|
+
it("handles new tool calls being appended", () => {
|
|
200
|
+
const tc1 = tc("tc-1", "read_file", { result: "ok" });
|
|
201
|
+
const prev = exec({
|
|
202
|
+
messages: [
|
|
203
|
+
msg(MessageType.MESSAGE_AI, "tools", { toolCalls: [tc1] }),
|
|
204
|
+
],
|
|
205
|
+
});
|
|
206
|
+
const next = exec({
|
|
207
|
+
messages: [
|
|
208
|
+
msg(MessageType.MESSAGE_AI, "tools", {
|
|
209
|
+
toolCalls: [
|
|
210
|
+
tc("tc-1", "read_file", { result: "ok" }),
|
|
211
|
+
tc("tc-2", "write_file"),
|
|
212
|
+
],
|
|
213
|
+
}),
|
|
214
|
+
],
|
|
215
|
+
});
|
|
216
|
+
const result = structuralShare(prev, next);
|
|
217
|
+
const resultTcs = result.status.messages[0].toolCalls;
|
|
218
|
+
expect(resultTcs[0]).toBe(tc1);
|
|
219
|
+
expect(resultTcs.length).toBe(2);
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
describe("sub-agent sharing", () => {
|
|
223
|
+
it("reuses unchanged sub-agent references by id", () => {
|
|
224
|
+
const sa1 = subAgent("sa-1", {
|
|
225
|
+
status: SubAgentStatus.SUB_AGENT_COMPLETED,
|
|
226
|
+
messages: [msg(MessageType.MESSAGE_AI, "sub done")],
|
|
227
|
+
output: "result",
|
|
228
|
+
});
|
|
229
|
+
const prev = exec({ subAgents: [sa1] });
|
|
230
|
+
const next = exec({
|
|
231
|
+
subAgents: [
|
|
232
|
+
subAgent("sa-1", {
|
|
233
|
+
status: SubAgentStatus.SUB_AGENT_COMPLETED,
|
|
234
|
+
messages: [msg(MessageType.MESSAGE_AI, "sub done")],
|
|
235
|
+
output: "result",
|
|
236
|
+
}),
|
|
237
|
+
],
|
|
238
|
+
});
|
|
239
|
+
const result = structuralShare(prev, next);
|
|
240
|
+
expect(result.status.subAgentExecutions[0]).toBe(sa1);
|
|
241
|
+
});
|
|
242
|
+
it("produces new reference for updated sub-agent but shares its inner messages", () => {
|
|
243
|
+
const innerMsg = msg(MessageType.MESSAGE_AI, "thinking");
|
|
244
|
+
const sa = subAgent("sa-1", {
|
|
245
|
+
status: SubAgentStatus.SUB_AGENT_IN_PROGRESS,
|
|
246
|
+
messages: [innerMsg],
|
|
247
|
+
});
|
|
248
|
+
const prev = exec({ subAgents: [sa] });
|
|
249
|
+
const next = exec({
|
|
250
|
+
subAgents: [
|
|
251
|
+
subAgent("sa-1", {
|
|
252
|
+
status: SubAgentStatus.SUB_AGENT_IN_PROGRESS,
|
|
253
|
+
messages: [
|
|
254
|
+
msg(MessageType.MESSAGE_AI, "thinking"),
|
|
255
|
+
msg(MessageType.MESSAGE_AI, "more thinking"),
|
|
256
|
+
],
|
|
257
|
+
}),
|
|
258
|
+
],
|
|
259
|
+
});
|
|
260
|
+
const result = structuralShare(prev, next);
|
|
261
|
+
const resultSa = result.status.subAgentExecutions[0];
|
|
262
|
+
expect(resultSa).not.toBe(sa);
|
|
263
|
+
expect(resultSa.messages[0]).toBe(innerMsg);
|
|
264
|
+
expect(resultSa.messages.length).toBe(2);
|
|
265
|
+
});
|
|
266
|
+
it("handles new sub-agent appearing", () => {
|
|
267
|
+
const sa1 = subAgent("sa-1", {
|
|
268
|
+
status: SubAgentStatus.SUB_AGENT_COMPLETED,
|
|
269
|
+
});
|
|
270
|
+
const prev = exec({ subAgents: [sa1] });
|
|
271
|
+
const next = exec({
|
|
272
|
+
subAgents: [
|
|
273
|
+
subAgent("sa-1", {
|
|
274
|
+
status: SubAgentStatus.SUB_AGENT_COMPLETED,
|
|
275
|
+
}),
|
|
276
|
+
subAgent("sa-2", {
|
|
277
|
+
status: SubAgentStatus.SUB_AGENT_IN_PROGRESS,
|
|
278
|
+
}),
|
|
279
|
+
],
|
|
280
|
+
});
|
|
281
|
+
const result = structuralShare(prev, next);
|
|
282
|
+
expect(result.status.subAgentExecutions[0]).toBe(sa1);
|
|
283
|
+
expect(result.status.subAgentExecutions.length).toBe(2);
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
describe("pending approvals sharing", () => {
|
|
287
|
+
it("reuses prev array when approvals are unchanged", () => {
|
|
288
|
+
const a1 = approval("tc-1", "dangerous_tool");
|
|
289
|
+
const prev = exec({ approvals: [a1] });
|
|
290
|
+
const next = exec({
|
|
291
|
+
approvals: [approval("tc-1", "dangerous_tool")],
|
|
292
|
+
});
|
|
293
|
+
const result = structuralShare(prev, next);
|
|
294
|
+
expect(result.status.pendingApprovals).toBe(prev.status.pendingApprovals);
|
|
295
|
+
});
|
|
296
|
+
it("uses new array when approvals change", () => {
|
|
297
|
+
const prev = exec({ approvals: [approval("tc-1", "tool1")] });
|
|
298
|
+
const next = exec({
|
|
299
|
+
approvals: [approval("tc-1", "tool1"), approval("tc-2", "tool2")],
|
|
300
|
+
});
|
|
301
|
+
const result = structuralShare(prev, next);
|
|
302
|
+
expect(result.status.pendingApprovals).not.toBe(prev.status.pendingApprovals);
|
|
303
|
+
});
|
|
304
|
+
it("uses new array when an approval is removed", () => {
|
|
305
|
+
const prev = exec({
|
|
306
|
+
approvals: [approval("tc-1", "tool1"), approval("tc-2", "tool2")],
|
|
307
|
+
});
|
|
308
|
+
const next = exec({ approvals: [approval("tc-1", "tool1")] });
|
|
309
|
+
const result = structuralShare(prev, next);
|
|
310
|
+
expect(result.status.pendingApprovals).not.toBe(prev.status.pendingApprovals);
|
|
311
|
+
});
|
|
312
|
+
});
|
|
313
|
+
describe("phase changes", () => {
|
|
314
|
+
it("produces new reference when phase changes", () => {
|
|
315
|
+
const prev = exec({ phase: ExecutionPhase.EXECUTION_IN_PROGRESS });
|
|
316
|
+
const next = exec({ phase: ExecutionPhase.EXECUTION_COMPLETED });
|
|
317
|
+
const result = structuralShare(prev, next);
|
|
318
|
+
expect(result).not.toBe(prev);
|
|
319
|
+
expect(result.status.phase).toBe(ExecutionPhase.EXECUTION_COMPLETED);
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
describe("realistic streaming scenario", () => {
|
|
323
|
+
it("only the streaming tail produces new references during token streaming", () => {
|
|
324
|
+
const humanMsg = msg(MessageType.MESSAGE_HUMAN, "Explain React hooks");
|
|
325
|
+
const completedAi = msg(MessageType.MESSAGE_AI, "React hooks are...", {
|
|
326
|
+
toolCalls: [tc("tc-1", "read_docs", { result: "hooks docs" })],
|
|
327
|
+
});
|
|
328
|
+
const prev = exec({
|
|
329
|
+
messages: [
|
|
330
|
+
humanMsg,
|
|
331
|
+
completedAi,
|
|
332
|
+
msg(MessageType.MESSAGE_AI, "Let me explain fur", {
|
|
333
|
+
isStreaming: true,
|
|
334
|
+
}),
|
|
335
|
+
],
|
|
336
|
+
});
|
|
337
|
+
const next = exec({
|
|
338
|
+
messages: [
|
|
339
|
+
msg(MessageType.MESSAGE_HUMAN, "Explain React hooks"),
|
|
340
|
+
msg(MessageType.MESSAGE_AI, "React hooks are...", {
|
|
341
|
+
toolCalls: [tc("tc-1", "read_docs", { result: "hooks docs" })],
|
|
342
|
+
}),
|
|
343
|
+
msg(MessageType.MESSAGE_AI, "Let me explain further. Hooks are", {
|
|
344
|
+
isStreaming: true,
|
|
345
|
+
}),
|
|
346
|
+
],
|
|
347
|
+
});
|
|
348
|
+
const result = structuralShare(prev, next);
|
|
349
|
+
expect(result.status.messages[0]).toBe(humanMsg);
|
|
350
|
+
expect(result.status.messages[1]).toBe(completedAi);
|
|
351
|
+
expect(result.status.messages[2]).not.toBe(prev.status.messages[2]);
|
|
352
|
+
expect(result.status.messages[2].content).toBe("Let me explain further. Hooks are");
|
|
353
|
+
});
|
|
354
|
+
});
|
|
355
|
+
describe("missing status", () => {
|
|
356
|
+
it("returns next when prev has no status", () => {
|
|
357
|
+
const prev = create(AgentExecutionSchema);
|
|
358
|
+
const next = exec({ messages: [msg(MessageType.MESSAGE_AI, "hi")] });
|
|
359
|
+
expect(structuralShare(prev, next)).toBe(next);
|
|
360
|
+
});
|
|
361
|
+
it("returns next when next has no status", () => {
|
|
362
|
+
const prev = exec({ messages: [msg(MessageType.MESSAGE_AI, "hi")] });
|
|
363
|
+
const next = create(AgentExecutionSchema);
|
|
364
|
+
expect(structuralShare(prev, next)).toBe(next);
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
});
|
|
368
|
+
//# sourceMappingURL=structural-share.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-share.test.js","sourceRoot":"","sources":["../../../../src/internal/store/__tests__/structural-share.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
2
|
+
export type StreamState = {
|
|
3
|
+
readonly stage: "idle";
|
|
4
|
+
} | {
|
|
5
|
+
readonly stage: "connecting";
|
|
6
|
+
readonly executionId: string;
|
|
7
|
+
} | {
|
|
8
|
+
readonly stage: "streaming";
|
|
9
|
+
readonly executionId: string;
|
|
10
|
+
} | {
|
|
11
|
+
readonly stage: "complete";
|
|
12
|
+
readonly executionId: string;
|
|
13
|
+
} | {
|
|
14
|
+
readonly stage: "error";
|
|
15
|
+
readonly executionId: string;
|
|
16
|
+
readonly error: Error;
|
|
17
|
+
};
|
|
18
|
+
type Listener = () => void;
|
|
19
|
+
/**
|
|
20
|
+
* Framework-agnostic store that holds the active execution snapshot
|
|
21
|
+
* with structural sharing. Implements the contract required by
|
|
22
|
+
* React's `useSyncExternalStore`.
|
|
23
|
+
*
|
|
24
|
+
* - `ingestSnapshot` applies structural sharing so unchanged nested
|
|
25
|
+
* entities keep their previous reference.
|
|
26
|
+
* - Listeners are notified only when state actually changes.
|
|
27
|
+
* - `getExecution` and `getStreamState` return stable references
|
|
28
|
+
* suitable as `useSyncExternalStore` snapshot selectors.
|
|
29
|
+
*/
|
|
30
|
+
export declare class ConversationStore {
|
|
31
|
+
private _execution;
|
|
32
|
+
private _streamState;
|
|
33
|
+
private _listeners;
|
|
34
|
+
/**
|
|
35
|
+
* Ingest a new execution snapshot. Applies structural sharing
|
|
36
|
+
* against the previous snapshot and notifies listeners only if
|
|
37
|
+
* the resulting reference changed.
|
|
38
|
+
*/
|
|
39
|
+
ingestSnapshot(snapshot: AgentExecution): void;
|
|
40
|
+
/**
|
|
41
|
+
* Transition the stream lifecycle state. Notifies listeners only
|
|
42
|
+
* when the stage or executionId actually changes.
|
|
43
|
+
*/
|
|
44
|
+
setStreamState(state: StreamState): void;
|
|
45
|
+
/**
|
|
46
|
+
* Reset to initial state. Used when the session identity changes
|
|
47
|
+
* or the hook unmounts.
|
|
48
|
+
*/
|
|
49
|
+
reset(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Subscribe a listener that is called whenever any store state
|
|
52
|
+
* changes. Returns an unsubscribe function.
|
|
53
|
+
*/
|
|
54
|
+
subscribe: (listener: Listener) => (() => void);
|
|
55
|
+
/** Stable snapshot selector for the current execution. */
|
|
56
|
+
getExecution: () => AgentExecution | null;
|
|
57
|
+
/** Stable snapshot selector for the stream lifecycle state. */
|
|
58
|
+
getStreamState: () => StreamState;
|
|
59
|
+
private _notify;
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=conversation-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-store.d.ts","sourceRoot":"","sources":["../../../src/internal/store/conversation-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAOlG,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5D;IACE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB,CAAC;AAQN,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,UAAU,CAAuB;IAIzC;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAO9C;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAMxC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAUb;;;OAGG;IACH,SAAS,GAAI,UAAU,QAAQ,KAAG,CAAC,MAAM,IAAI,CAAC,CAK5C;IAEF,0DAA0D;IAC1D,YAAY,QAAO,cAAc,GAAG,IAAI,CAEtC;IAEF,+DAA+D;IAC/D,cAAc,QAAO,WAAW,CAE9B;IAIF,OAAO,CAAC,OAAO;CAKhB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { structuralShare } from "./structural-share";
|
|
2
|
+
const IDLE_STATE = { stage: "idle" };
|
|
3
|
+
/**
|
|
4
|
+
* Framework-agnostic store that holds the active execution snapshot
|
|
5
|
+
* with structural sharing. Implements the contract required by
|
|
6
|
+
* React's `useSyncExternalStore`.
|
|
7
|
+
*
|
|
8
|
+
* - `ingestSnapshot` applies structural sharing so unchanged nested
|
|
9
|
+
* entities keep their previous reference.
|
|
10
|
+
* - Listeners are notified only when state actually changes.
|
|
11
|
+
* - `getExecution` and `getStreamState` return stable references
|
|
12
|
+
* suitable as `useSyncExternalStore` snapshot selectors.
|
|
13
|
+
*/
|
|
14
|
+
export class ConversationStore {
|
|
15
|
+
_execution = null;
|
|
16
|
+
_streamState = IDLE_STATE;
|
|
17
|
+
_listeners = new Set();
|
|
18
|
+
// -- Ingestion -----------------------------------------------------------
|
|
19
|
+
/**
|
|
20
|
+
* Ingest a new execution snapshot. Applies structural sharing
|
|
21
|
+
* against the previous snapshot and notifies listeners only if
|
|
22
|
+
* the resulting reference changed.
|
|
23
|
+
*/
|
|
24
|
+
ingestSnapshot(snapshot) {
|
|
25
|
+
const shared = structuralShare(this._execution, snapshot);
|
|
26
|
+
if (shared === this._execution)
|
|
27
|
+
return;
|
|
28
|
+
this._execution = shared;
|
|
29
|
+
this._notify();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Transition the stream lifecycle state. Notifies listeners only
|
|
33
|
+
* when the stage or executionId actually changes.
|
|
34
|
+
*/
|
|
35
|
+
setStreamState(state) {
|
|
36
|
+
if (streamStateEqual(this._streamState, state))
|
|
37
|
+
return;
|
|
38
|
+
this._streamState = state;
|
|
39
|
+
this._notify();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Reset to initial state. Used when the session identity changes
|
|
43
|
+
* or the hook unmounts.
|
|
44
|
+
*/
|
|
45
|
+
reset() {
|
|
46
|
+
const wasIdle = this._execution === null && this._streamState.stage === "idle";
|
|
47
|
+
this._execution = null;
|
|
48
|
+
this._streamState = IDLE_STATE;
|
|
49
|
+
if (!wasIdle)
|
|
50
|
+
this._notify();
|
|
51
|
+
}
|
|
52
|
+
// -- useSyncExternalStore contract ---------------------------------------
|
|
53
|
+
/**
|
|
54
|
+
* Subscribe a listener that is called whenever any store state
|
|
55
|
+
* changes. Returns an unsubscribe function.
|
|
56
|
+
*/
|
|
57
|
+
subscribe = (listener) => {
|
|
58
|
+
this._listeners.add(listener);
|
|
59
|
+
return () => {
|
|
60
|
+
this._listeners.delete(listener);
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
/** Stable snapshot selector for the current execution. */
|
|
64
|
+
getExecution = () => {
|
|
65
|
+
return this._execution;
|
|
66
|
+
};
|
|
67
|
+
/** Stable snapshot selector for the stream lifecycle state. */
|
|
68
|
+
getStreamState = () => {
|
|
69
|
+
return this._streamState;
|
|
70
|
+
};
|
|
71
|
+
// -- Internal ------------------------------------------------------------
|
|
72
|
+
_notify() {
|
|
73
|
+
for (const listener of this._listeners) {
|
|
74
|
+
listener();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
// Helpers
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
function streamStateEqual(a, b) {
|
|
82
|
+
if (a.stage !== b.stage)
|
|
83
|
+
return false;
|
|
84
|
+
if (a.stage === "idle")
|
|
85
|
+
return true;
|
|
86
|
+
if (a.stage === "error" &&
|
|
87
|
+
b.stage === "error" &&
|
|
88
|
+
a.executionId === b.executionId &&
|
|
89
|
+
a.error === b.error)
|
|
90
|
+
return true;
|
|
91
|
+
if ("executionId" in a && "executionId" in b)
|
|
92
|
+
return a.executionId === b.executionId;
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=conversation-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-store.js","sourceRoot":"","sources":["../../../src/internal/store/conversation-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAiBrD,MAAM,UAAU,GAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAQlD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,iBAAiB;IACpB,UAAU,GAA0B,IAAI,CAAC;IACzC,YAAY,GAAgB,UAAU,CAAC;IACvC,UAAU,GAAG,IAAI,GAAG,EAAY,CAAC;IAEzC,2EAA2E;IAE3E;;;;OAIG;IACH,cAAc,CAAC,QAAwB;QACrC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO;QACvC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,KAAkB;QAC/B,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;YAAE,OAAO;QACvD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,MAAM,OAAO,GACX,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,MAAM,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,2EAA2E;IAE3E;;;OAGG;IACH,SAAS,GAAG,CAAC,QAAkB,EAAgB,EAAE;QAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,0DAA0D;IAC1D,YAAY,GAAG,GAA0B,EAAE;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC,CAAC;IAEF,+DAA+D;IAC/D,cAAc,GAAG,GAAgB,EAAE;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC,CAAC;IAEF,2EAA2E;IAEnE,OAAO;QACb,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,CAAc,EAAE,CAAc;IACtD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,IACE,CAAC,CAAC,KAAK,KAAK,OAAO;QACnB,CAAC,CAAC,KAAK,KAAK,OAAO;QACnB,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;QAC/B,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAEnB,OAAO,IAAI,CAAC;IACd,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC;QAC1C,OAAO,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
2
|
+
import { ConversationStore, type StreamState } from "./conversation-store";
|
|
3
|
+
export { ConversationStore, type StreamState } from "./conversation-store";
|
|
4
|
+
export { structuralShare } from "./structural-share";
|
|
5
|
+
/**
|
|
6
|
+
* Internal context for the conversation store. Not exported from the
|
|
7
|
+
* public SDK barrel — used only within SDK hooks and components.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ConversationStoreContext: import("react").Context<ConversationStore | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Access the conversation store from context.
|
|
12
|
+
* Throws if called outside a `ConversationStoreContext.Provider`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useConversationStore(): ConversationStore;
|
|
15
|
+
/**
|
|
16
|
+
* Create or reuse a `ConversationStore` instance. The store is
|
|
17
|
+
* created once and preserved across re-renders via ref.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useConversationStoreRef(): ConversationStore;
|
|
20
|
+
/**
|
|
21
|
+
* Subscribe to the execution snapshot from the conversation store.
|
|
22
|
+
* Returns a stable reference when the execution is unchanged
|
|
23
|
+
* (structural sharing ensures this).
|
|
24
|
+
*/
|
|
25
|
+
export declare function useStoreExecution(store: ConversationStore): AgentExecution | null;
|
|
26
|
+
/**
|
|
27
|
+
* Subscribe to the stream lifecycle state from the conversation store.
|
|
28
|
+
* Returns a stable reference when the state is unchanged.
|
|
29
|
+
*/
|
|
30
|
+
export declare function useStoreStreamState(store: ConversationStore): StreamState;
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/internal/store/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMrD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,mDACU,CAAC;AAMhD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAQxD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAM3D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,GACvB,cAAc,GAAG,IAAI,CAEvB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAEzE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useContext, useRef, useSyncExternalStore } from "react";
|
|
3
|
+
import { ConversationStore } from "./conversation-store";
|
|
4
|
+
export { ConversationStore } from "./conversation-store";
|
|
5
|
+
export { structuralShare } from "./structural-share";
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Context
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
/**
|
|
10
|
+
* Internal context for the conversation store. Not exported from the
|
|
11
|
+
* public SDK barrel — used only within SDK hooks and components.
|
|
12
|
+
*/
|
|
13
|
+
export const ConversationStoreContext = createContext(null);
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Hooks
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
/**
|
|
18
|
+
* Access the conversation store from context.
|
|
19
|
+
* Throws if called outside a `ConversationStoreContext.Provider`.
|
|
20
|
+
*/
|
|
21
|
+
export function useConversationStore() {
|
|
22
|
+
const store = useContext(ConversationStoreContext);
|
|
23
|
+
if (!store) {
|
|
24
|
+
throw new Error("useConversationStore must be used within a ConversationStoreContext.Provider");
|
|
25
|
+
}
|
|
26
|
+
return store;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create or reuse a `ConversationStore` instance. The store is
|
|
30
|
+
* created once and preserved across re-renders via ref.
|
|
31
|
+
*/
|
|
32
|
+
export function useConversationStoreRef() {
|
|
33
|
+
const ref = useRef(null);
|
|
34
|
+
if (!ref.current) {
|
|
35
|
+
ref.current = new ConversationStore();
|
|
36
|
+
}
|
|
37
|
+
return ref.current;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Subscribe to the execution snapshot from the conversation store.
|
|
41
|
+
* Returns a stable reference when the execution is unchanged
|
|
42
|
+
* (structural sharing ensures this).
|
|
43
|
+
*/
|
|
44
|
+
export function useStoreExecution(store) {
|
|
45
|
+
return useSyncExternalStore(store.subscribe, store.getExecution);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Subscribe to the stream lifecycle state from the conversation store.
|
|
49
|
+
* Returns a stable reference when the state is unchanged.
|
|
50
|
+
*/
|
|
51
|
+
export function useStoreStreamState(store) {
|
|
52
|
+
return useSyncExternalStore(store.subscribe, store.getStreamState);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/store/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAoB,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAoB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,aAAa,CAA2B,IAAI,CAAC,CAAC;AAEhD,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,GAAG,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAwB;IAExB,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAwB;IAC1D,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;AACrE,CAAC"}
|