instar 1.3.1649 → 1.3.1650
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/dashboard/console/accounts.js +2 -1
- package/dashboard/console/agents-model.js +3 -3
- package/dashboard/console/agents.js +7 -4
- package/dashboard/console/console.css +1 -0
- package/dashboard/console/console.js +35 -4
- package/dashboard/console/costs-model.js +12 -0
- package/dashboard/console/costs.js +6 -3
- package/dashboard/console/development-model.js +9 -3
- package/dashboard/console/development.js +7 -4
- package/dashboard/console/home-model.js +30 -14
- package/dashboard/console/mandates.js +3 -3
- package/dashboard/console/needs-model.js +105 -0
- package/dashboard/console/plans.js +2 -1
- package/dashboard/console/secrets.js +2 -2
- package/dashboard/console/ticket-model.js +36 -0
- package/dashboard/console/ui.js +3 -0
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/install.d.ts +9 -7
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +2 -19
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/reflect.d.ts.map +1 -1
- package/dist/commands/reflect.js +2 -0
- package/dist/commands/reflect.js.map +1 -1
- package/dist/commands/route.d.ts.map +1 -1
- package/dist/commands/route.js +2 -0
- package/dist/commands/route.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +315 -14
- package/dist/commands/server.js.map +1 -1
- package/dist/commands/setClaudeKey.d.ts +8 -0
- package/dist/commands/setClaudeKey.d.ts.map +1 -0
- package/dist/commands/setClaudeKey.js +35 -0
- package/dist/commands/setClaudeKey.js.map +1 -0
- package/dist/core/AccountFollowMeOrchestrator.d.ts.map +1 -1
- package/dist/core/AccountFollowMeOrchestrator.js +4 -0
- package/dist/core/AccountFollowMeOrchestrator.js.map +1 -1
- package/dist/core/AppMediaStore.d.ts.map +1 -1
- package/dist/core/AppMediaStore.js +3 -0
- package/dist/core/AppMediaStore.js.map +1 -1
- package/dist/core/BackupManager.d.ts.map +1 -1
- package/dist/core/BackupManager.js +2 -0
- package/dist/core/BackupManager.js.map +1 -1
- package/dist/core/ClaudeCliIntelligenceProvider.d.ts.map +1 -1
- package/dist/core/ClaudeCliIntelligenceProvider.js +11 -3
- package/dist/core/ClaudeCliIntelligenceProvider.js.map +1 -1
- package/dist/core/ClaudeKeyHealth.d.ts +141 -0
- package/dist/core/ClaudeKeyHealth.d.ts.map +1 -0
- package/dist/core/ClaudeKeyHealth.js +467 -0
- package/dist/core/ClaudeKeyHealth.js.map +1 -0
- package/dist/core/CodexTaskContinuationStore.d.ts.map +1 -1
- package/dist/core/CodexTaskContinuationStore.js +7 -0
- package/dist/core/CodexTaskContinuationStore.js.map +1 -1
- package/dist/core/CoherenceJournal.d.ts +1 -1
- package/dist/core/CoherenceJournal.d.ts.map +1 -1
- package/dist/core/CoherenceJournal.js +11 -2
- package/dist/core/CoherenceJournal.js.map +1 -1
- package/dist/core/Config.d.ts +8 -0
- package/dist/core/Config.d.ts.map +1 -1
- package/dist/core/Config.js +26 -0
- package/dist/core/Config.js.map +1 -1
- package/dist/core/CredentialSwapExecutor.d.ts.map +1 -1
- package/dist/core/CredentialSwapExecutor.js +10 -0
- package/dist/core/CredentialSwapExecutor.js.map +1 -1
- package/dist/core/DecisionQualityRecorderImpl.d.ts.map +1 -1
- package/dist/core/DecisionQualityRecorderImpl.js +6 -0
- package/dist/core/DecisionQualityRecorderImpl.js.map +1 -1
- package/dist/core/DiscoveryEvaluator.d.ts.map +1 -1
- package/dist/core/DiscoveryEvaluator.js +4 -0
- package/dist/core/DiscoveryEvaluator.js.map +1 -1
- package/dist/core/IdentityReannounceClaimant.d.ts.map +1 -1
- package/dist/core/IdentityReannounceClaimant.js +4 -0
- package/dist/core/IdentityReannounceClaimant.js.map +1 -1
- package/dist/core/IntelligenceRouter.d.ts.map +1 -1
- package/dist/core/IntelligenceRouter.js +9 -0
- package/dist/core/IntelligenceRouter.js.map +1 -1
- package/dist/core/JournalSyncApplier.d.ts +1 -0
- package/dist/core/JournalSyncApplier.d.ts.map +1 -1
- package/dist/core/JournalSyncApplier.js +48 -0
- package/dist/core/JournalSyncApplier.js.map +1 -1
- package/dist/core/LeaseCoordinator.d.ts +4 -0
- package/dist/core/LeaseCoordinator.d.ts.map +1 -1
- package/dist/core/LeaseCoordinator.js +64 -1
- package/dist/core/LeaseCoordinator.js.map +1 -1
- package/dist/core/MessagingToneGate.d.ts +11 -7
- package/dist/core/MessagingToneGate.d.ts.map +1 -1
- package/dist/core/MessagingToneGate.js +15 -1
- package/dist/core/MessagingToneGate.js.map +1 -1
- package/dist/core/MobileDeviceKeys.d.ts +10 -0
- package/dist/core/MobileDeviceKeys.d.ts.map +1 -1
- package/dist/core/MobileDeviceKeys.js +17 -0
- package/dist/core/MobileDeviceKeys.js.map +1 -1
- package/dist/core/MultiMachineCoordinator.d.ts +12 -0
- package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
- package/dist/core/MultiMachineCoordinator.js +115 -3
- package/dist/core/MultiMachineCoordinator.js.map +1 -1
- package/dist/core/MutualSshRuntime.d.ts +1 -0
- package/dist/core/MutualSshRuntime.d.ts.map +1 -1
- package/dist/core/MutualSshRuntime.js +17 -1
- package/dist/core/MutualSshRuntime.js.map +1 -1
- package/dist/core/ObservedEndpointTracker.d.ts +1 -0
- package/dist/core/ObservedEndpointTracker.d.ts.map +1 -1
- package/dist/core/ObservedEndpointTracker.js +17 -0
- package/dist/core/ObservedEndpointTracker.js.map +1 -1
- package/dist/core/OverloadShedPlanner.d.ts.map +1 -1
- package/dist/core/OverloadShedPlanner.js +9 -0
- package/dist/core/OverloadShedPlanner.js.map +1 -1
- package/dist/core/OwnershipApplier.d.ts.map +1 -1
- package/dist/core/OwnershipApplier.js +7 -0
- package/dist/core/OwnershipApplier.js.map +1 -1
- package/dist/core/OwnershipReconciler.d.ts.map +1 -1
- package/dist/core/OwnershipReconciler.js +5 -0
- package/dist/core/OwnershipReconciler.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +8 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +76 -2
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/PrHandLease.d.ts.map +1 -1
- package/dist/core/PrHandLease.js +2 -0
- package/dist/core/PrHandLease.js.map +1 -1
- package/dist/core/ProactiveSwapMonitor.d.ts.map +1 -1
- package/dist/core/ProactiveSwapMonitor.js +7 -0
- package/dist/core/ProactiveSwapMonitor.js.map +1 -1
- package/dist/core/ProjectRoundExecution.d.ts.map +1 -1
- package/dist/core/ProjectRoundExecution.js +3 -2
- package/dist/core/ProjectRoundExecution.js.map +1 -1
- package/dist/core/QueueDrainLoop.d.ts +7 -0
- package/dist/core/QueueDrainLoop.d.ts.map +1 -1
- package/dist/core/QueueDrainLoop.js +37 -1
- package/dist/core/QueueDrainLoop.js.map +1 -1
- package/dist/core/RemoteAckStore.d.ts.map +1 -1
- package/dist/core/RemoteAckStore.js +4 -0
- package/dist/core/RemoteAckStore.js.map +1 -1
- package/dist/core/ReplicatedStoreReconcilerWiring.d.ts.map +1 -1
- package/dist/core/ReplicatedStoreReconcilerWiring.js +1 -0
- package/dist/core/ReplicatedStoreReconcilerWiring.js.map +1 -1
- package/dist/core/SecretSync.d.ts +1 -0
- package/dist/core/SecretSync.d.ts.map +1 -1
- package/dist/core/SecretSync.js +16 -0
- package/dist/core/SecretSync.js.map +1 -1
- package/dist/core/SessionManager.d.ts +11 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +125 -14
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/SessionPoolFailoverRunner.d.ts.map +1 -1
- package/dist/core/SessionPoolFailoverRunner.js +4 -0
- package/dist/core/SessionPoolFailoverRunner.js.map +1 -1
- package/dist/core/SleepWakeDetector.d.ts.map +1 -1
- package/dist/core/SleepWakeDetector.js +10 -0
- package/dist/core/SleepWakeDetector.js.map +1 -1
- package/dist/core/SubscriptionReloginStore.d.ts.map +1 -1
- package/dist/core/SubscriptionReloginStore.js +10 -1
- package/dist/core/SubscriptionReloginStore.js.map +1 -1
- package/dist/core/TopicPinMutation.d.ts.map +1 -1
- package/dist/core/TopicPinMutation.js +5 -0
- package/dist/core/TopicPinMutation.js.map +1 -1
- package/dist/core/UnjustifiedStopGate.d.ts.map +1 -1
- package/dist/core/UnjustifiedStopGate.js +22 -0
- package/dist/core/UnjustifiedStopGate.js.map +1 -1
- package/dist/core/WindowRunCadenceExecutor.d.ts.map +1 -1
- package/dist/core/WindowRunCadenceExecutor.js +20 -0
- package/dist/core/WindowRunCadenceExecutor.js.map +1 -1
- package/dist/core/claudeChildAuth.d.ts +68 -0
- package/dist/core/claudeChildAuth.d.ts.map +1 -0
- package/dist/core/claudeChildAuth.js +173 -0
- package/dist/core/claudeChildAuth.js.map +1 -0
- package/dist/core/claudeKeyProbe.d.ts +23 -0
- package/dist/core/claudeKeyProbe.d.ts.map +1 -0
- package/dist/core/claudeKeyProbe.js +68 -0
- package/dist/core/claudeKeyProbe.js.map +1 -0
- package/dist/core/codexDeviceLimitWiring.d.ts.map +1 -1
- package/dist/core/codexDeviceLimitWiring.js +12 -0
- package/dist/core/codexDeviceLimitWiring.js.map +1 -1
- package/dist/core/deliverToConversation.d.ts.map +1 -1
- package/dist/core/deliverToConversation.js +11 -0
- package/dist/core/deliverToConversation.js.map +1 -1
- package/dist/core/meteredCallEntry.d.ts.map +1 -1
- package/dist/core/meteredCallEntry.js +21 -0
- package/dist/core/meteredCallEntry.js.map +1 -1
- package/dist/core/nobodyPollingActuator.d.ts.map +1 -1
- package/dist/core/nobodyPollingActuator.js +5 -0
- package/dist/core/nobodyPollingActuator.js.map +1 -1
- package/dist/core/operatorSurfaceReferral.d.ts +18 -0
- package/dist/core/operatorSurfaceReferral.d.ts.map +1 -0
- package/dist/core/operatorSurfaceReferral.js +32 -0
- package/dist/core/operatorSurfaceReferral.js.map +1 -0
- package/dist/core/ownershipFollowsLiveWork.d.ts.map +1 -1
- package/dist/core/ownershipFollowsLiveWork.js +10 -1
- package/dist/core/ownershipFollowsLiveWork.js.map +1 -1
- package/dist/core/types.d.ts +15 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worktreeDirtyCheck.d.ts.map +1 -1
- package/dist/core/worktreeDirtyCheck.js +2 -0
- package/dist/core/worktreeDirtyCheck.js.map +1 -1
- package/dist/data/stageBCertifiedSet.d.ts +9 -0
- package/dist/data/stageBCertifiedSet.d.ts.map +1 -1
- package/dist/data/stageBCertifiedSet.js +12 -0
- package/dist/data/stageBCertifiedSet.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/lifeline/TelegramLifeline.d.ts.map +1 -1
- package/dist/lifeline/TelegramLifeline.js +17 -3
- package/dist/lifeline/TelegramLifeline.js.map +1 -1
- package/dist/messaging/attentionHubPolicy.d.ts.map +1 -1
- package/dist/messaging/attentionHubPolicy.js +1 -0
- package/dist/messaging/attentionHubPolicy.js.map +1 -1
- package/dist/monitoring/AgentWorktreeReaper.d.ts.map +1 -1
- package/dist/monitoring/AgentWorktreeReaper.js +15 -0
- package/dist/monitoring/AgentWorktreeReaper.js.map +1 -1
- package/dist/monitoring/ApprenticeshipCycleSlaMonitor.d.ts.map +1 -1
- package/dist/monitoring/ApprenticeshipCycleSlaMonitor.js +18 -9
- package/dist/monitoring/ApprenticeshipCycleSlaMonitor.js.map +1 -1
- package/dist/monitoring/CodexArmSessionSweeper.d.ts.map +1 -1
- package/dist/monitoring/CodexArmSessionSweeper.js +11 -0
- package/dist/monitoring/CodexArmSessionSweeper.js.map +1 -1
- package/dist/monitoring/CrashLoopPauser.d.ts.map +1 -1
- package/dist/monitoring/CrashLoopPauser.js +8 -0
- package/dist/monitoring/CrashLoopPauser.js.map +1 -1
- package/dist/monitoring/DegradationReporter.d.ts.map +1 -1
- package/dist/monitoring/DegradationReporter.js +7 -1
- package/dist/monitoring/DegradationReporter.js.map +1 -1
- package/dist/monitoring/DegradedTmuxGuard.d.ts +2 -0
- package/dist/monitoring/DegradedTmuxGuard.d.ts.map +1 -1
- package/dist/monitoring/DegradedTmuxGuard.js +14 -0
- package/dist/monitoring/DegradedTmuxGuard.js.map +1 -1
- package/dist/monitoring/DurableOutputScrubber.d.ts.map +1 -1
- package/dist/monitoring/DurableOutputScrubber.js +7 -0
- package/dist/monitoring/DurableOutputScrubber.js.map +1 -1
- package/dist/monitoring/DurableVaultSession.d.ts.map +1 -1
- package/dist/monitoring/DurableVaultSession.js +15 -0
- package/dist/monitoring/DurableVaultSession.js.map +1 -1
- package/dist/monitoring/ExternalHogSentinel.d.ts +2 -0
- package/dist/monitoring/ExternalHogSentinel.d.ts.map +1 -1
- package/dist/monitoring/ExternalHogSentinel.js +27 -1
- package/dist/monitoring/ExternalHogSentinel.js.map +1 -1
- package/dist/monitoring/FailureLedger.d.ts.map +1 -1
- package/dist/monitoring/FailureLedger.js +38 -1
- package/dist/monitoring/FailureLedger.js.map +1 -1
- package/dist/monitoring/FeatureEvidenceLog.d.ts +5 -0
- package/dist/monitoring/FeatureEvidenceLog.d.ts.map +1 -1
- package/dist/monitoring/FeatureEvidenceLog.js +25 -0
- package/dist/monitoring/FeatureEvidenceLog.js.map +1 -1
- package/dist/monitoring/GeminiCapacityEscalationMonitor.d.ts.map +1 -1
- package/dist/monitoring/GeminiCapacityEscalationMonitor.js +20 -2
- package/dist/monitoring/GeminiCapacityEscalationMonitor.js.map +1 -1
- package/dist/monitoring/GeminiLoopRunner.d.ts.map +1 -1
- package/dist/monitoring/GeminiLoopRunner.js +11 -1
- package/dist/monitoring/GeminiLoopRunner.js.map +1 -1
- package/dist/monitoring/GreenPrAutoMerger.d.ts.map +1 -1
- package/dist/monitoring/GreenPrAutoMerger.js +11 -0
- package/dist/monitoring/GreenPrAutoMerger.js.map +1 -1
- package/dist/monitoring/GrowthDigestPublisher.d.ts.map +1 -1
- package/dist/monitoring/GrowthDigestPublisher.js +16 -0
- package/dist/monitoring/GrowthDigestPublisher.js.map +1 -1
- package/dist/monitoring/GrowthMilestoneAnalyst.d.ts +3 -0
- package/dist/monitoring/GrowthMilestoneAnalyst.d.ts.map +1 -1
- package/dist/monitoring/GrowthMilestoneAnalyst.js +45 -1
- package/dist/monitoring/GrowthMilestoneAnalyst.js.map +1 -1
- package/dist/monitoring/McpProcessReaper.d.ts +2 -0
- package/dist/monitoring/McpProcessReaper.d.ts.map +1 -1
- package/dist/monitoring/McpProcessReaper.js +32 -0
- package/dist/monitoring/McpProcessReaper.js.map +1 -1
- package/dist/monitoring/MissingLoginSessionDetector.d.ts +2 -1
- package/dist/monitoring/MissingLoginSessionDetector.d.ts.map +1 -1
- package/dist/monitoring/MissingLoginSessionDetector.js +23 -0
- package/dist/monitoring/MissingLoginSessionDetector.js.map +1 -1
- package/dist/monitoring/OrchestratorPoller.d.ts +1 -0
- package/dist/monitoring/OrchestratorPoller.d.ts.map +1 -1
- package/dist/monitoring/OrchestratorPoller.js +13 -0
- package/dist/monitoring/OrchestratorPoller.js.map +1 -1
- package/dist/monitoring/OrphanedWorkSentinel.d.ts.map +1 -1
- package/dist/monitoring/OrphanedWorkSentinel.js +7 -0
- package/dist/monitoring/OrphanedWorkSentinel.js.map +1 -1
- package/dist/monitoring/PresenceProxy.d.ts.map +1 -1
- package/dist/monitoring/PresenceProxy.js +9 -1
- package/dist/monitoring/PresenceProxy.js.map +1 -1
- package/dist/monitoring/ProcessFootprintMonitor.d.ts.map +1 -1
- package/dist/monitoring/ProcessFootprintMonitor.js +20 -2
- package/dist/monitoring/ProcessFootprintMonitor.js.map +1 -1
- package/dist/monitoring/PromiseBeacon.d.ts.map +1 -1
- package/dist/monitoring/PromiseBeacon.js +20 -0
- package/dist/monitoring/PromiseBeacon.js.map +1 -1
- package/dist/monitoring/ReleaseReadinessSentinel.d.ts +2 -0
- package/dist/monitoring/ReleaseReadinessSentinel.d.ts.map +1 -1
- package/dist/monitoring/ReleaseReadinessSentinel.js +26 -0
- package/dist/monitoring/ReleaseReadinessSentinel.js.map +1 -1
- package/dist/monitoring/RopeHealthMonitor.d.ts.map +1 -1
- package/dist/monitoring/RopeHealthMonitor.js +35 -1
- package/dist/monitoring/RopeHealthMonitor.js.map +1 -1
- package/dist/monitoring/SentinelNotifier.d.ts.map +1 -1
- package/dist/monitoring/SentinelNotifier.js +16 -0
- package/dist/monitoring/SentinelNotifier.js.map +1 -1
- package/dist/monitoring/SessionReaper.d.ts.map +1 -1
- package/dist/monitoring/SessionReaper.js +11 -2
- package/dist/monitoring/SessionReaper.js.map +1 -1
- package/dist/monitoring/SingleMachineFailoverGapDetector.d.ts +2 -0
- package/dist/monitoring/SingleMachineFailoverGapDetector.d.ts.map +1 -1
- package/dist/monitoring/SingleMachineFailoverGapDetector.js +20 -0
- package/dist/monitoring/SingleMachineFailoverGapDetector.js.map +1 -1
- package/dist/monitoring/SpeakerElection.d.ts.map +1 -1
- package/dist/monitoring/SpeakerElection.js +8 -0
- package/dist/monitoring/SpeakerElection.js.map +1 -1
- package/dist/monitoring/StrandedTopicSentinel.d.ts +3 -0
- package/dist/monitoring/StrandedTopicSentinel.d.ts.map +1 -1
- package/dist/monitoring/StrandedTopicSentinel.js +33 -0
- package/dist/monitoring/StrandedTopicSentinel.js.map +1 -1
- package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
- package/dist/native/instar-desktop-host +0 -0
- package/dist/providers/adapters/anthropic-headless/transport/oneShotCompletion.d.ts.map +1 -1
- package/dist/providers/adapters/anthropic-headless/transport/oneShotCompletion.js +5 -2
- package/dist/providers/adapters/anthropic-headless/transport/oneShotCompletion.js.map +1 -1
- package/dist/recommended/RecommendedServicesLedger.d.ts +91 -0
- package/dist/recommended/RecommendedServicesLedger.d.ts.map +1 -0
- package/dist/recommended/RecommendedServicesLedger.js +193 -0
- package/dist/recommended/RecommendedServicesLedger.js.map +1 -0
- package/dist/recommended/RecommendedServicesReplicatedStore.d.ts +14 -0
- package/dist/recommended/RecommendedServicesReplicatedStore.d.ts.map +1 -0
- package/dist/recommended/RecommendedServicesReplicatedStore.js +34 -0
- package/dist/recommended/RecommendedServicesReplicatedStore.js.map +1 -0
- package/dist/recommended/legacyDeclines.d.ts +11 -0
- package/dist/recommended/legacyDeclines.d.ts.map +1 -0
- package/dist/recommended/legacyDeclines.js +17 -0
- package/dist/recommended/legacyDeclines.js.map +1 -0
- package/dist/recommended/serviceIds.d.ts +3 -0
- package/dist/recommended/serviceIds.d.ts.map +1 -0
- package/dist/recommended/serviceIds.js +6 -0
- package/dist/recommended/serviceIds.js.map +1 -0
- package/dist/scaffold/templates.d.ts +2 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +8 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/scheduler/JobResultTriage.d.ts.map +1 -1
- package/dist/scheduler/JobResultTriage.js +10 -0
- package/dist/scheduler/JobResultTriage.js.map +1 -1
- package/dist/scheduler/JobScheduler.d.ts.map +1 -1
- package/dist/scheduler/JobScheduler.js +12 -0
- package/dist/scheduler/JobScheduler.js.map +1 -1
- package/dist/scheduler/MentorOnboardingRunner.d.ts +3 -0
- package/dist/scheduler/MentorOnboardingRunner.d.ts.map +1 -1
- package/dist/scheduler/MentorOnboardingRunner.js +24 -2
- package/dist/scheduler/MentorOnboardingRunner.js.map +1 -1
- package/dist/server/AgentServer.d.ts +2 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +76 -15
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/BootHealthBeacon.d.ts +3 -0
- package/dist/server/BootHealthBeacon.d.ts.map +1 -1
- package/dist/server/BootHealthBeacon.js +9 -0
- package/dist/server/BootHealthBeacon.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +10 -1
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/LifelineIngressGuard.d.ts.map +1 -1
- package/dist/server/LifelineIngressGuard.js +11 -0
- package/dist/server/LifelineIngressGuard.js.map +1 -1
- package/dist/server/PoolPollCache.d.ts +4 -0
- package/dist/server/PoolPollCache.d.ts.map +1 -1
- package/dist/server/PoolPollCache.js +33 -0
- package/dist/server/PoolPollCache.js.map +1 -1
- package/dist/server/machineRoutes.d.ts.map +1 -1
- package/dist/server/machineRoutes.js +6 -0
- package/dist/server/machineRoutes.js.map +1 -1
- package/dist/server/middleware.d.ts.map +1 -1
- package/dist/server/middleware.js +6 -0
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/mobileConsoleTicket.d.ts +113 -0
- package/dist/server/mobileConsoleTicket.d.ts.map +1 -0
- package/dist/server/mobileConsoleTicket.js +405 -0
- package/dist/server/mobileConsoleTicket.js.map +1 -0
- package/dist/server/mobileConversationRoutes.d.ts.map +1 -1
- package/dist/server/mobileConversationRoutes.js +20 -1
- package/dist/server/mobileConversationRoutes.js.map +1 -1
- package/dist/server/mobileMediaRoutes.d.ts.map +1 -1
- package/dist/server/mobileMediaRoutes.js +3 -0
- package/dist/server/mobileMediaRoutes.js.map +1 -1
- package/dist/server/mobilePairingRoutes.d.ts +8 -2
- package/dist/server/mobilePairingRoutes.d.ts.map +1 -1
- package/dist/server/mobilePairingRoutes.js +67 -6
- package/dist/server/mobilePairingRoutes.js.map +1 -1
- package/dist/server/mobileSessionTerminalRoutes.d.ts +128 -0
- package/dist/server/mobileSessionTerminalRoutes.d.ts.map +1 -0
- package/dist/server/mobileSessionTerminalRoutes.js +389 -0
- package/dist/server/mobileSessionTerminalRoutes.js.map +1 -0
- package/dist/server/recommendedServiceRoutes.d.ts +13 -0
- package/dist/server/recommendedServiceRoutes.d.ts.map +1 -0
- package/dist/server/recommendedServiceRoutes.js +49 -0
- package/dist/server/recommendedServiceRoutes.js.map +1 -0
- package/dist/server/routes.d.ts +2 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +170 -4
- package/dist/server/routes.js.map +1 -1
- package/dist/testing/selfActionRegistry.d.ts.map +1 -1
- package/dist/testing/selfActionRegistry.js +36 -0
- package/dist/testing/selfActionRegistry.js.map +1 -1
- package/dist/threadline/A2ACheckInProxy.d.ts.map +1 -1
- package/dist/threadline/A2ACheckInProxy.js +26 -15
- package/dist/threadline/A2ACheckInProxy.js.map +1 -1
- package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
- package/dist/threadline/AgentTrustManager.js +3 -0
- package/dist/threadline/AgentTrustManager.js.map +1 -1
- package/dist/threadline/InboundIdLedger.d.ts.map +1 -1
- package/dist/threadline/InboundIdLedger.js +18 -1
- package/dist/threadline/InboundIdLedger.js.map +1 -1
- package/dist/threadline/NegotiatorGate.d.ts.map +1 -1
- package/dist/threadline/NegotiatorGate.js +11 -0
- package/dist/threadline/NegotiatorGate.js.map +1 -1
- package/dist/threadline/PipeSessionSpawner.d.ts.map +1 -1
- package/dist/threadline/PipeSessionSpawner.js +8 -0
- package/dist/threadline/PipeSessionSpawner.js.map +1 -1
- package/dist/threadline/ThreadlineRouter.d.ts.map +1 -1
- package/dist/threadline/ThreadlineRouter.js +13 -0
- package/dist/threadline/ThreadlineRouter.js.map +1 -1
- package/dist/threadline/pairingReplicationWiring.d.ts.map +1 -1
- package/dist/threadline/pairingReplicationWiring.js +9 -0
- package/dist/threadline/pairingReplicationWiring.js.map +1 -1
- package/dist/threadline/relayForward.d.ts.map +1 -1
- package/dist/threadline/relayForward.js +13 -2
- package/dist/threadline/relayForward.js.map +1 -1
- package/dist/threadline/relayUnknownSenderTrust.d.ts +0 -9
- package/dist/threadline/relayUnknownSenderTrust.d.ts.map +1 -1
- package/dist/threadline/relayUnknownSenderTrust.js +16 -0
- package/dist/threadline/relayUnknownSenderTrust.js.map +1 -1
- package/package.json +1 -1
- package/scripts/check-constitution-pairing.mjs +273 -0
- package/scripts/safe-merge.mjs +9 -0
- package/src/data/builtin-manifest.json +103 -103
- package/src/data/feature-ladders.json +113 -113
- package/src/data/stageBCertifiedSet.ts +12 -0
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/data/state-coherence-registry.json +18 -0
- package/src/scaffold/templates.ts +9 -0
- package/upgrades/1.3.1650.md +105 -0
- package/upgrades/mobile-console-device-signin.eli16.md +5 -0
- package/upgrades/side-effects/cloud-key-internal-calls.md +116 -0
- package/upgrades/side-effects/constitution-alignment.eli16.md +11 -0
- package/upgrades/side-effects/constitution-alignment.md +69 -0
- package/upgrades/side-effects/feature-evidence-recording.eli16.md +3 -0
- package/upgrades/side-effects/feature-evidence-recording.md +66 -0
- package/upgrades/side-effects/feedback-reroute-admission-parity.md +77 -0
- package/upgrades/side-effects/mobile-console-device-signin.md +102 -0
- package/upgrades/side-effects/mobile-native-session-screen.md +88 -0
- package/upgrades/side-effects/operator-needs-first-screen.md +87 -0
- package/upgrades/side-effects/recommended-services-choices.md +50 -0
- package/upgrades/side-effects/rerouted-lifetime-active-process.md +63 -0
- package/upgrades/side-effects/undated-resurfacer-e2e-wait.eli16.md +5 -0
- package/upgrades/side-effects/undated-resurfacer-e2e-wait.md +9 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClaudeKeyHealth — notices when the agent's configured Claude sign-in key stops working, tells the
|
|
3
|
+
* operator plainly, and recovers stuck conversations once a working key is proven
|
|
4
|
+
* (spec cloud-key-internal-calls, fb-1dc4a0ca-260).
|
|
5
|
+
*
|
|
6
|
+
* Active only on an agent with an oauth-token configured. Elsewhere every method is a no-op.
|
|
7
|
+
*
|
|
8
|
+
* Signals (a failed internal call, a session at the login screen) only ask for a probe. The probe is
|
|
9
|
+
* the authority: a real authenticated call where only Anthropic's own 401, seen twice, makes a key
|
|
10
|
+
* dead. A changed key proves nothing until a probe of it succeeds.
|
|
11
|
+
*
|
|
12
|
+
* Never holds the key in persisted state or logs: only a short fingerprint.
|
|
13
|
+
*/
|
|
14
|
+
export type ClaudeKeyStatus = 'ok' | 'suspect' | 'dead';
|
|
15
|
+
export type ClaudeKeyProbeResult = 'ok' | 'rejected' | 'no-auth' | 'inconclusive';
|
|
16
|
+
export declare const CONFIRM_DELAY_MS = 30000;
|
|
17
|
+
export declare const TICK_MS = 60000;
|
|
18
|
+
export declare const OK_MIN_PROBE_INTERVAL_MS: number;
|
|
19
|
+
export declare const DEAD_PROBE_START_MS: number;
|
|
20
|
+
export declare const NEW_KEY_RETRY_START_MS = 60000;
|
|
21
|
+
export declare const PROBE_CEILING_MS: number;
|
|
22
|
+
export declare const PROBE_BREAKER_MS: number;
|
|
23
|
+
export declare const NOTICE_MAX_ATTEMPTS = 5;
|
|
24
|
+
export declare const REFRESH_MAX_ATTEMPTS = 3;
|
|
25
|
+
export declare const REFRESH_BATCH = 10;
|
|
26
|
+
export declare const OPERATOR_DEAD_TEXT: string;
|
|
27
|
+
export declare const OPERATOR_OK_TEXT = "Your agent's Claude sign-in key is working again. Open conversations are picking up.";
|
|
28
|
+
export declare const PERSON_TEXT = "I can't reply right now because my sign-in key stopped working. I'll pick this conversation up once it's fixed.";
|
|
29
|
+
export declare const PERSON_TOLD_SUFFIX = " My operator has been told.";
|
|
30
|
+
export declare const RECOVERY_PROMPT: string;
|
|
31
|
+
export declare function claudeKeyFingerprint(key: string): string;
|
|
32
|
+
/** The refresh brake, pure (shared with the self-action convergence ratchet). */
|
|
33
|
+
export declare function decideKeyRefresh(input: {
|
|
34
|
+
attempts: number;
|
|
35
|
+
maxAttempts: number;
|
|
36
|
+
}): 'attempt' | 'gave-up';
|
|
37
|
+
/** Next probe delay: doubles to the ceiling. */
|
|
38
|
+
export declare function nextProbeDelay(currentMs: number): number;
|
|
39
|
+
export interface ClaudeKeyHealthDeps {
|
|
40
|
+
stateFile: string;
|
|
41
|
+
/** The key in memory now (oauth-token only), or undefined when there is none or the feature is off. */
|
|
42
|
+
currentKey: () => string | undefined;
|
|
43
|
+
/** The key in memory now, of any kind. Compared with disk so an API key isn't seen as "changed". */
|
|
44
|
+
currentRawKey: () => string | undefined;
|
|
45
|
+
/** The key on disk: string, null for none, undefined when unreadable (keep the last key). */
|
|
46
|
+
readKeyFromDisk: () => string | null | undefined;
|
|
47
|
+
/** Put what disk says into every live config copy. Null removes the key. */
|
|
48
|
+
applyKey: (key: string | null) => void;
|
|
49
|
+
/** A real authenticated call with exactly this key. Must not raise signals of its own. */
|
|
50
|
+
probe: (key: string) => Promise<ClaudeKeyProbeResult>;
|
|
51
|
+
/** True only on confirmed delivery to at least one channel. */
|
|
52
|
+
notifyOperator: (text: string) => Promise<boolean>;
|
|
53
|
+
/** True only on confirmed delivery. A session with no channel returns false. */
|
|
54
|
+
notifyPerson: (sessionName: string, text: string) => Promise<boolean>;
|
|
55
|
+
/** Live, channel-bound, unprotected claude-code sessions showing the login screen now. */
|
|
56
|
+
listStuckSessions: () => Promise<string[]>;
|
|
57
|
+
/** Fingerprint of the key the session was launched with, or null when it has none. */
|
|
58
|
+
sessionLaunchFingerprint: (tmuxSession: string) => string | null;
|
|
59
|
+
/** Through SessionRefresh, ordinary work gate. */
|
|
60
|
+
refresh: (sessionName: string, prompt: string) => Promise<{
|
|
61
|
+
ok: boolean;
|
|
62
|
+
reason?: string;
|
|
63
|
+
newSessionName?: string;
|
|
64
|
+
}>;
|
|
65
|
+
/** Forget the monitor's report marks so a stuck session is offered again promptly. */
|
|
66
|
+
clearLoginReports: () => void;
|
|
67
|
+
report: (input: {
|
|
68
|
+
reason: string;
|
|
69
|
+
impact: string;
|
|
70
|
+
}) => void;
|
|
71
|
+
now?: () => number;
|
|
72
|
+
logger?: {
|
|
73
|
+
log: (m: string) => void;
|
|
74
|
+
warn: (m: string) => void;
|
|
75
|
+
};
|
|
76
|
+
/** Tests drive ticks by hand. */
|
|
77
|
+
manualTimers?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/** The running instance, for /health. */
|
|
80
|
+
export declare function activeClaudeKeyHealth(): ClaudeKeyHealth | null;
|
|
81
|
+
export declare function setActiveClaudeKeyHealth(instance: ClaudeKeyHealth | null): void;
|
|
82
|
+
export declare class ClaudeKeyHealth {
|
|
83
|
+
private readonly deps;
|
|
84
|
+
private state;
|
|
85
|
+
private probing;
|
|
86
|
+
private working;
|
|
87
|
+
private timer;
|
|
88
|
+
private confirmTimer;
|
|
89
|
+
private lastProbeAt;
|
|
90
|
+
private lastOkFingerprint;
|
|
91
|
+
private noAuthReported;
|
|
92
|
+
private readonly now;
|
|
93
|
+
private readonly logger;
|
|
94
|
+
constructor(deps: ClaudeKeyHealthDeps);
|
|
95
|
+
/** What /health shows. */
|
|
96
|
+
status(): {
|
|
97
|
+
status: ClaudeKeyStatus;
|
|
98
|
+
since: string | null;
|
|
99
|
+
} | null;
|
|
100
|
+
/** Load persisted state and pick up anything a restart interrupted. */
|
|
101
|
+
boot(): Promise<void>;
|
|
102
|
+
/** A signal from an internal call. Asks for a probe, decides nothing. */
|
|
103
|
+
noteCallOutcome(outcome: 'ok' | 'rejected' | 'no-auth'): void;
|
|
104
|
+
/**
|
|
105
|
+
* A session has sat at the login screen past the dwell. Returns true on a key agent, where the
|
|
106
|
+
* pool swap cannot help because the env key overrides any pool account.
|
|
107
|
+
*/
|
|
108
|
+
handle(signal: {
|
|
109
|
+
session: string;
|
|
110
|
+
protected: boolean;
|
|
111
|
+
}): Promise<boolean>;
|
|
112
|
+
/** One timer pass. Runs only while dead or while recovery work is pending. */
|
|
113
|
+
tick(): Promise<void>;
|
|
114
|
+
stop(): void;
|
|
115
|
+
private syncKeyFromDisk;
|
|
116
|
+
private startTestingNewKey;
|
|
117
|
+
/** The key was removed or the feature switched off: there is nothing left to be dead. */
|
|
118
|
+
private dropStateWithoutKey;
|
|
119
|
+
private background;
|
|
120
|
+
private runProbe;
|
|
121
|
+
private applyResult;
|
|
122
|
+
private suspect;
|
|
123
|
+
/** The confirming probe, exempt from the interval limit. Public for tests. */
|
|
124
|
+
confirm(): Promise<void>;
|
|
125
|
+
private declareDead;
|
|
126
|
+
private backOff;
|
|
127
|
+
private recovered;
|
|
128
|
+
private collectStuck;
|
|
129
|
+
private safeListStuck;
|
|
130
|
+
private enqueue;
|
|
131
|
+
private workPending;
|
|
132
|
+
private workBatch;
|
|
133
|
+
private drop;
|
|
134
|
+
private sendOperatorNotice;
|
|
135
|
+
private tellPerson;
|
|
136
|
+
private reset;
|
|
137
|
+
private ensureTimer;
|
|
138
|
+
private load;
|
|
139
|
+
private save;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=ClaudeKeyHealth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeKeyHealth.d.ts","sourceRoot":"","sources":["../../src/core/ClaudeKeyHealth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClaudeKeyHealth — notices when the agent's configured Claude sign-in key stops working, tells the
|
|
3
|
+
* operator plainly, and recovers stuck conversations once a working key is proven
|
|
4
|
+
* (spec cloud-key-internal-calls, fb-1dc4a0ca-260).
|
|
5
|
+
*
|
|
6
|
+
* Active only on an agent with an oauth-token configured. Elsewhere every method is a no-op.
|
|
7
|
+
*
|
|
8
|
+
* Signals (a failed internal call, a session at the login screen) only ask for a probe. The probe is
|
|
9
|
+
* the authority: a real authenticated call where only Anthropic's own 401, seen twice, makes a key
|
|
10
|
+
* dead. A changed key proves nothing until a probe of it succeeds.
|
|
11
|
+
*
|
|
12
|
+
* Never holds the key in persisted state or logs: only a short fingerprint.
|
|
13
|
+
*/
|
|
14
|
+
import crypto from 'node:crypto';
|
|
15
|
+
import fs from 'node:fs';
|
|
16
|
+
import path from 'node:path';
|
|
17
|
+
export const CONFIRM_DELAY_MS = 30_000;
|
|
18
|
+
export const TICK_MS = 60_000;
|
|
19
|
+
export const OK_MIN_PROBE_INTERVAL_MS = 5 * 60_000;
|
|
20
|
+
export const DEAD_PROBE_START_MS = 10 * 60_000;
|
|
21
|
+
export const NEW_KEY_RETRY_START_MS = 60_000;
|
|
22
|
+
export const PROBE_CEILING_MS = 60 * 60_000;
|
|
23
|
+
export const PROBE_BREAKER_MS = 24 * 60 * 60_000;
|
|
24
|
+
export const NOTICE_MAX_ATTEMPTS = 5;
|
|
25
|
+
export const REFRESH_MAX_ATTEMPTS = 3;
|
|
26
|
+
export const REFRESH_BATCH = 10;
|
|
27
|
+
export const OPERATOR_DEAD_TEXT = "Your agent can't reach Claude because its sign-in key was rejected. It can't reply to anyone until this is fixed. " +
|
|
28
|
+
'Create a new key with `claude setup-token` on any computer, then run `instar set-claude-key` on the server and paste it. ' +
|
|
29
|
+
'Open conversations will pick up by themselves once the key works.';
|
|
30
|
+
export const OPERATOR_OK_TEXT = "Your agent's Claude sign-in key is working again. Open conversations are picking up.";
|
|
31
|
+
export const PERSON_TEXT = "I can't reply right now because my sign-in key stopped working. I'll pick this conversation up once it's fixed.";
|
|
32
|
+
export const PERSON_TOLD_SUFFIX = ' My operator has been told.';
|
|
33
|
+
export const RECOVERY_PROMPT = 'Your sign-in key stopped working for a while and has now been fixed. Messages sent during that time were not answered. ' +
|
|
34
|
+
'Read the conversation and answer anything still unanswered.';
|
|
35
|
+
export function claudeKeyFingerprint(key) {
|
|
36
|
+
return crypto.createHash('sha256').update(key).digest('hex').slice(0, 16);
|
|
37
|
+
}
|
|
38
|
+
/** The refresh brake, pure (shared with the self-action convergence ratchet). */
|
|
39
|
+
export function decideKeyRefresh(input) {
|
|
40
|
+
return input.attempts >= input.maxAttempts ? 'gave-up' : 'attempt';
|
|
41
|
+
}
|
|
42
|
+
/** Next probe delay: doubles to the ceiling. */
|
|
43
|
+
export function nextProbeDelay(currentMs) {
|
|
44
|
+
return Math.min(currentMs * 2, PROBE_CEILING_MS);
|
|
45
|
+
}
|
|
46
|
+
const initialState = () => ({
|
|
47
|
+
status: 'ok', fingerprint: null, since: null, probeDelayMs: DEAD_PROBE_START_MS, nextProbeAt: 0, keySeenAt: null,
|
|
48
|
+
operatorTold: false, noticeAttempts: 0, peopleTold: [], sweepPending: false, pending: [], refreshed: {},
|
|
49
|
+
});
|
|
50
|
+
let active = null;
|
|
51
|
+
/** The running instance, for /health. */
|
|
52
|
+
export function activeClaudeKeyHealth() { return active; }
|
|
53
|
+
export function setActiveClaudeKeyHealth(instance) { active = instance; }
|
|
54
|
+
/* @self-action-controller: claude-key-session-refresh */
|
|
55
|
+
export class ClaudeKeyHealth {
|
|
56
|
+
deps;
|
|
57
|
+
state = initialState();
|
|
58
|
+
probing = null;
|
|
59
|
+
working = false;
|
|
60
|
+
timer = null;
|
|
61
|
+
confirmTimer = null;
|
|
62
|
+
lastProbeAt = 0;
|
|
63
|
+
lastOkFingerprint = null;
|
|
64
|
+
noAuthReported = null;
|
|
65
|
+
now;
|
|
66
|
+
logger;
|
|
67
|
+
constructor(deps) {
|
|
68
|
+
this.deps = deps;
|
|
69
|
+
this.now = deps.now ?? (() => Date.now());
|
|
70
|
+
this.logger = deps.logger ?? { log: () => { }, warn: () => { } };
|
|
71
|
+
}
|
|
72
|
+
/** What /health shows. */
|
|
73
|
+
status() {
|
|
74
|
+
if (!this.deps.currentKey())
|
|
75
|
+
return null;
|
|
76
|
+
return { status: this.state.status, since: this.state.since ? new Date(this.state.since).toISOString() : null };
|
|
77
|
+
}
|
|
78
|
+
/** Load persisted state and pick up anything a restart interrupted. */
|
|
79
|
+
async boot() {
|
|
80
|
+
this.load();
|
|
81
|
+
this.syncKeyFromDisk();
|
|
82
|
+
if (this.state.status === 'suspect')
|
|
83
|
+
this.reset(); // its confirming timer did not survive
|
|
84
|
+
if (this.state.sweepPending)
|
|
85
|
+
await this.collectStuck();
|
|
86
|
+
this.dropStateWithoutKey();
|
|
87
|
+
if (this.state.status === 'dead') {
|
|
88
|
+
const key = this.deps.currentKey();
|
|
89
|
+
if (key && claudeKeyFingerprint(key) !== this.state.fingerprint)
|
|
90
|
+
this.startTestingNewKey();
|
|
91
|
+
}
|
|
92
|
+
this.save();
|
|
93
|
+
this.ensureTimer();
|
|
94
|
+
if (this.state.status === 'dead')
|
|
95
|
+
await this.tick();
|
|
96
|
+
}
|
|
97
|
+
/** A signal from an internal call. Asks for a probe, decides nothing. */
|
|
98
|
+
noteCallOutcome(outcome) {
|
|
99
|
+
if (!this.deps.currentKey())
|
|
100
|
+
return;
|
|
101
|
+
if (outcome === 'ok') {
|
|
102
|
+
// Only worth a probe while dead: this is the fast way back from a false alarm.
|
|
103
|
+
if (this.state.status === 'dead')
|
|
104
|
+
this.background(this.runProbe({ force: true }));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this.background(this.runProbe({ force: false }));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* A session has sat at the login screen past the dwell. Returns true on a key agent, where the
|
|
111
|
+
* pool swap cannot help because the env key overrides any pool account.
|
|
112
|
+
*/
|
|
113
|
+
async handle(signal) {
|
|
114
|
+
this.syncKeyFromDisk();
|
|
115
|
+
const key = this.deps.currentKey();
|
|
116
|
+
if (!key)
|
|
117
|
+
return false;
|
|
118
|
+
const fp = claudeKeyFingerprint(key);
|
|
119
|
+
if (this.state.status === 'dead') {
|
|
120
|
+
await this.tellPerson(signal.session);
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
await this.runProbe({ force: false });
|
|
124
|
+
if (this.state.status === 'dead') {
|
|
125
|
+
await this.tellPerson(signal.session);
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
// The key is good. A session launched on a different key is stuck on the old one. A matching
|
|
129
|
+
// key never refreshes, so login text printed in a working session cannot cause a kill.
|
|
130
|
+
if (signal.protected || this.lastOkFingerprint !== fp)
|
|
131
|
+
return true;
|
|
132
|
+
const launched = this.deps.sessionLaunchFingerprint(signal.session);
|
|
133
|
+
if (launched && launched !== fp && this.state.refreshed[signal.session] !== fp) {
|
|
134
|
+
this.enqueue(signal.session);
|
|
135
|
+
this.save();
|
|
136
|
+
this.ensureTimer();
|
|
137
|
+
await this.workPending();
|
|
138
|
+
}
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
/** One timer pass. Runs only while dead or while recovery work is pending. */
|
|
142
|
+
async tick() {
|
|
143
|
+
this.syncKeyFromDisk();
|
|
144
|
+
this.dropStateWithoutKey();
|
|
145
|
+
if (this.state.status === 'dead') {
|
|
146
|
+
await this.sendOperatorNotice();
|
|
147
|
+
const brokenOut = this.state.keySeenAt !== null && this.now() - this.state.keySeenAt >= PROBE_BREAKER_MS;
|
|
148
|
+
if (!brokenOut && this.now() >= this.state.nextProbeAt)
|
|
149
|
+
await this.runProbe({ force: true });
|
|
150
|
+
}
|
|
151
|
+
await this.workPending();
|
|
152
|
+
this.ensureTimer();
|
|
153
|
+
}
|
|
154
|
+
stop() {
|
|
155
|
+
if (this.timer)
|
|
156
|
+
clearInterval(this.timer);
|
|
157
|
+
if (this.confirmTimer)
|
|
158
|
+
clearTimeout(this.confirmTimer);
|
|
159
|
+
this.timer = null;
|
|
160
|
+
this.confirmTimer = null;
|
|
161
|
+
}
|
|
162
|
+
syncKeyFromDisk() {
|
|
163
|
+
const onDisk = this.deps.readKeyFromDisk();
|
|
164
|
+
if (onDisk === undefined || (onDisk ?? undefined) === this.deps.currentRawKey())
|
|
165
|
+
return;
|
|
166
|
+
this.deps.applyKey(onDisk);
|
|
167
|
+
this.logger.log('[ClaudeKeyHealth] the configured key changed');
|
|
168
|
+
if (this.state.status === 'dead') {
|
|
169
|
+
this.startTestingNewKey();
|
|
170
|
+
this.save();
|
|
171
|
+
}
|
|
172
|
+
else if (this.state.status === 'suspect') {
|
|
173
|
+
this.reset();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
startTestingNewKey() {
|
|
177
|
+
this.state.nextProbeAt = 0;
|
|
178
|
+
this.state.probeDelayMs = NEW_KEY_RETRY_START_MS;
|
|
179
|
+
this.state.keySeenAt = this.now();
|
|
180
|
+
}
|
|
181
|
+
/** The key was removed or the feature switched off: there is nothing left to be dead. */
|
|
182
|
+
dropStateWithoutKey() {
|
|
183
|
+
if (this.deps.currentKey() || (this.state.status === 'ok' && this.state.pending.length === 0))
|
|
184
|
+
return;
|
|
185
|
+
this.reset();
|
|
186
|
+
this.state.pending = [];
|
|
187
|
+
this.save();
|
|
188
|
+
}
|
|
189
|
+
background(work) {
|
|
190
|
+
work.catch((err) => this.logger.warn(`[ClaudeKeyHealth] ${err instanceof Error ? err.message : String(err)}`));
|
|
191
|
+
}
|
|
192
|
+
runProbe(opts) {
|
|
193
|
+
if (this.probing)
|
|
194
|
+
return this.probing;
|
|
195
|
+
// First, so a key already put on disk is what gets tested: never page about a replaced key.
|
|
196
|
+
this.syncKeyFromDisk();
|
|
197
|
+
const key = this.deps.currentKey();
|
|
198
|
+
if (!key)
|
|
199
|
+
return Promise.resolve();
|
|
200
|
+
// Signals only start a probe from `ok`. `suspect` waits for its confirming delay, and `dead` for
|
|
201
|
+
// its backoff, however many calls fail meanwhile.
|
|
202
|
+
if (!opts.force && (this.state.status !== 'ok' || this.now() - this.lastProbeAt < OK_MIN_PROBE_INTERVAL_MS)) {
|
|
203
|
+
return Promise.resolve();
|
|
204
|
+
}
|
|
205
|
+
this.lastProbeAt = this.now();
|
|
206
|
+
this.probing = (async () => {
|
|
207
|
+
let result;
|
|
208
|
+
try {
|
|
209
|
+
result = await this.deps.probe(key);
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
result = 'inconclusive';
|
|
213
|
+
} // @silent-fallback-ok: a probe that could not run concludes nothing, by design
|
|
214
|
+
// The key changed while this ran: the answer is about a key no longer in use.
|
|
215
|
+
if (this.deps.currentKey() !== key)
|
|
216
|
+
return;
|
|
217
|
+
await this.applyResult(claudeKeyFingerprint(key), result);
|
|
218
|
+
})().finally(() => { this.probing = null; });
|
|
219
|
+
return this.probing;
|
|
220
|
+
}
|
|
221
|
+
async applyResult(fp, result) {
|
|
222
|
+
if (result === 'ok') {
|
|
223
|
+
this.lastOkFingerprint = fp;
|
|
224
|
+
if (this.state.status === 'dead')
|
|
225
|
+
await this.recovered();
|
|
226
|
+
else if (this.state.status === 'suspect')
|
|
227
|
+
this.reset();
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (result === 'rejected') {
|
|
231
|
+
if (this.state.status === 'dead' && this.state.fingerprint === fp) {
|
|
232
|
+
this.backOff();
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
if (this.state.status === 'suspect' && this.state.fingerprint === fp) {
|
|
236
|
+
await this.declareDead(fp);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (this.state.status === 'dead') {
|
|
240
|
+
await this.declareDead(fp);
|
|
241
|
+
return;
|
|
242
|
+
} // a new key, also refused
|
|
243
|
+
this.suspect(fp);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
if (result === 'no-auth' && this.noAuthReported !== fp) {
|
|
247
|
+
// The CLI had nothing to send, so the key never reached it. Telling the operator to replace
|
|
248
|
+
// a key that may be fine would be the wrong instruction.
|
|
249
|
+
this.noAuthReported = fp;
|
|
250
|
+
this.deps.report({
|
|
251
|
+
reason: 'A configured Claude sign-in key did not reach the claude process.',
|
|
252
|
+
impact: 'Internal model calls may be failing. This is an Instar fault, not a bad key.',
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
if (this.state.status === 'suspect')
|
|
256
|
+
this.reset();
|
|
257
|
+
else if (this.state.status === 'dead')
|
|
258
|
+
this.backOff();
|
|
259
|
+
}
|
|
260
|
+
suspect(fp) {
|
|
261
|
+
this.state.status = 'suspect';
|
|
262
|
+
this.state.fingerprint = fp;
|
|
263
|
+
this.save();
|
|
264
|
+
if (this.deps.manualTimers)
|
|
265
|
+
return;
|
|
266
|
+
this.confirmTimer = setTimeout(() => this.background(this.confirm()), CONFIRM_DELAY_MS);
|
|
267
|
+
this.confirmTimer.unref?.();
|
|
268
|
+
}
|
|
269
|
+
/** The confirming probe, exempt from the interval limit. Public for tests. */
|
|
270
|
+
async confirm() {
|
|
271
|
+
if (this.state.status === 'suspect')
|
|
272
|
+
await this.runProbe({ force: true });
|
|
273
|
+
}
|
|
274
|
+
async declareDead(fp) {
|
|
275
|
+
const sameEpisode = this.state.status === 'dead';
|
|
276
|
+
this.state = {
|
|
277
|
+
...this.state, status: 'dead', fingerprint: fp, since: sameEpisode ? this.state.since : this.now(),
|
|
278
|
+
probeDelayMs: DEAD_PROBE_START_MS, nextProbeAt: this.now() + DEAD_PROBE_START_MS, keySeenAt: this.now(),
|
|
279
|
+
operatorTold: false, noticeAttempts: 0, peopleTold: [],
|
|
280
|
+
};
|
|
281
|
+
this.save();
|
|
282
|
+
this.logger.warn('[ClaudeKeyHealth] Anthropic rejected the configured sign-in key');
|
|
283
|
+
this.deps.report({
|
|
284
|
+
reason: 'Anthropic rejected the configured Claude sign-in key.',
|
|
285
|
+
impact: 'The agent cannot reply or run internal model calls until a working key is set.',
|
|
286
|
+
});
|
|
287
|
+
await this.sendOperatorNotice();
|
|
288
|
+
for (const session of await this.safeListStuck())
|
|
289
|
+
await this.tellPerson(session);
|
|
290
|
+
this.ensureTimer();
|
|
291
|
+
}
|
|
292
|
+
backOff() {
|
|
293
|
+
this.state.nextProbeAt = this.now() + this.state.probeDelayMs;
|
|
294
|
+
this.state.probeDelayMs = nextProbeDelay(this.state.probeDelayMs);
|
|
295
|
+
this.save();
|
|
296
|
+
}
|
|
297
|
+
async recovered() {
|
|
298
|
+
// Written first: a crash before the sweep finishes resumes it at boot.
|
|
299
|
+
this.state = { ...initialState(), sweepPending: true, pending: this.state.pending, refreshed: this.state.refreshed };
|
|
300
|
+
this.save();
|
|
301
|
+
this.logger.log('[ClaudeKeyHealth] the sign-in key works again');
|
|
302
|
+
this.deps.clearLoginReports();
|
|
303
|
+
await this.collectStuck();
|
|
304
|
+
this.save();
|
|
305
|
+
try {
|
|
306
|
+
await this.deps.notifyOperator(OPERATOR_OK_TEXT);
|
|
307
|
+
}
|
|
308
|
+
catch (err) {
|
|
309
|
+
this.logger.warn(`[ClaudeKeyHealth] all-clear send failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
310
|
+
}
|
|
311
|
+
this.ensureTimer(); // the next tick works the list, one batch at a time
|
|
312
|
+
}
|
|
313
|
+
async collectStuck() {
|
|
314
|
+
const key = this.deps.currentKey();
|
|
315
|
+
if (key) {
|
|
316
|
+
const fp = claudeKeyFingerprint(key);
|
|
317
|
+
// Once per session per key: a session already moved onto this key holds a good key now.
|
|
318
|
+
for (const session of await this.safeListStuck()) {
|
|
319
|
+
if (this.state.refreshed[session] !== fp)
|
|
320
|
+
this.enqueue(session);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
this.state.sweepPending = false;
|
|
324
|
+
}
|
|
325
|
+
async safeListStuck() {
|
|
326
|
+
try {
|
|
327
|
+
return await this.deps.listStuckSessions();
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
this.logger.warn(`[ClaudeKeyHealth] could not list stuck sessions: ${err instanceof Error ? err.message : String(err)}`);
|
|
331
|
+
// @silent-fallback-ok: reported just below, so a skipped sweep is never silent
|
|
332
|
+
this.deps.report({
|
|
333
|
+
reason: 'Could not list conversations stuck at the login screen.',
|
|
334
|
+
impact: 'Those conversations recover on their next message instead of by themselves.',
|
|
335
|
+
});
|
|
336
|
+
return [];
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
enqueue(session) {
|
|
340
|
+
if (!this.state.pending.some((p) => p.session === session))
|
|
341
|
+
this.state.pending.push({ session, attempts: 0 });
|
|
342
|
+
}
|
|
343
|
+
async workPending() {
|
|
344
|
+
if (this.working || this.state.status !== 'ok' || this.state.pending.length === 0 || !this.deps.currentKey())
|
|
345
|
+
return;
|
|
346
|
+
this.working = true;
|
|
347
|
+
try {
|
|
348
|
+
await this.workBatch();
|
|
349
|
+
}
|
|
350
|
+
finally {
|
|
351
|
+
this.working = false;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
async workBatch() {
|
|
355
|
+
const key = this.deps.currentKey();
|
|
356
|
+
const fp = key ? claudeKeyFingerprint(key) : '';
|
|
357
|
+
for (const item of this.state.pending.slice(0, REFRESH_BATCH)) {
|
|
358
|
+
if (!this.state.pending.includes(item))
|
|
359
|
+
continue;
|
|
360
|
+
if (decideKeyRefresh({ attempts: item.attempts, maxAttempts: REFRESH_MAX_ATTEMPTS }) === 'gave-up') {
|
|
361
|
+
this.drop(item.session);
|
|
362
|
+
this.deps.report({
|
|
363
|
+
reason: `Session "${item.session}" could not be restarted after the sign-in key was fixed.`,
|
|
364
|
+
impact: 'It will pick up on its next message.',
|
|
365
|
+
});
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
item.attempts += 1;
|
|
369
|
+
let done = false;
|
|
370
|
+
let newName;
|
|
371
|
+
try {
|
|
372
|
+
const result = await this.deps.refresh(item.session, RECOVERY_PROMPT);
|
|
373
|
+
done = result.ok;
|
|
374
|
+
newName = result.newSessionName;
|
|
375
|
+
}
|
|
376
|
+
catch (err) {
|
|
377
|
+
this.logger.warn(`[ClaudeKeyHealth] refresh of "${item.session}" failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
378
|
+
}
|
|
379
|
+
if (done) {
|
|
380
|
+
this.drop(item.session);
|
|
381
|
+
// A Slack respawn gets a new name, and that is the name the next sweep will see.
|
|
382
|
+
this.state.refreshed[newName ?? item.session] = fp;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
this.save();
|
|
386
|
+
}
|
|
387
|
+
drop(session) {
|
|
388
|
+
this.state.pending = this.state.pending.filter((p) => p.session !== session);
|
|
389
|
+
}
|
|
390
|
+
async sendOperatorNotice() {
|
|
391
|
+
if (this.state.operatorTold || this.state.noticeAttempts >= NOTICE_MAX_ATTEMPTS)
|
|
392
|
+
return;
|
|
393
|
+
this.state.noticeAttempts += 1;
|
|
394
|
+
let delivered = false;
|
|
395
|
+
try {
|
|
396
|
+
delivered = await this.deps.notifyOperator(OPERATOR_DEAD_TEXT);
|
|
397
|
+
}
|
|
398
|
+
catch (err) {
|
|
399
|
+
this.logger.warn(`[ClaudeKeyHealth] operator notice failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
400
|
+
}
|
|
401
|
+
this.state.operatorTold = delivered;
|
|
402
|
+
if (!delivered && this.state.noticeAttempts >= NOTICE_MAX_ATTEMPTS) {
|
|
403
|
+
this.deps.report({
|
|
404
|
+
reason: 'The operator could not be told that the Claude sign-in key was rejected.',
|
|
405
|
+
impact: 'The rejected key shows in /health only.',
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
this.save();
|
|
409
|
+
}
|
|
410
|
+
async tellPerson(sessionName) {
|
|
411
|
+
if (this.state.peopleTold.includes(sessionName))
|
|
412
|
+
return;
|
|
413
|
+
const text = this.state.operatorTold ? `${PERSON_TEXT}${PERSON_TOLD_SUFFIX}` : PERSON_TEXT;
|
|
414
|
+
let delivered = false;
|
|
415
|
+
try {
|
|
416
|
+
delivered = await this.deps.notifyPerson(sessionName, text);
|
|
417
|
+
}
|
|
418
|
+
catch (err) { /* @silent-fallback-ok: undelivered stays untold, so the next report of this session tries again */
|
|
419
|
+
this.logger.warn(`[ClaudeKeyHealth] person notice failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
420
|
+
}
|
|
421
|
+
if (delivered) {
|
|
422
|
+
this.state.peopleTold.push(sessionName);
|
|
423
|
+
this.save();
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
reset() {
|
|
427
|
+
if (this.confirmTimer)
|
|
428
|
+
clearTimeout(this.confirmTimer);
|
|
429
|
+
this.confirmTimer = null;
|
|
430
|
+
this.state = { ...initialState(), pending: this.state.pending, refreshed: this.state.refreshed };
|
|
431
|
+
this.save();
|
|
432
|
+
}
|
|
433
|
+
ensureTimer() {
|
|
434
|
+
const needed = this.state.status === 'dead' || this.state.pending.length > 0;
|
|
435
|
+
if (this.deps.manualTimers)
|
|
436
|
+
return;
|
|
437
|
+
if (needed && !this.timer) {
|
|
438
|
+
this.timer = setInterval(() => this.background(this.tick()), TICK_MS);
|
|
439
|
+
this.timer.unref?.();
|
|
440
|
+
}
|
|
441
|
+
else if (!needed && this.timer) {
|
|
442
|
+
clearInterval(this.timer);
|
|
443
|
+
this.timer = null;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
load() {
|
|
447
|
+
try {
|
|
448
|
+
const raw = JSON.parse(fs.readFileSync(this.deps.stateFile, 'utf-8'));
|
|
449
|
+
this.state = { ...initialState(), ...raw };
|
|
450
|
+
}
|
|
451
|
+
catch {
|
|
452
|
+
this.state = initialState();
|
|
453
|
+
} // @silent-fallback-ok: no file or a bad one means nothing was in progress
|
|
454
|
+
}
|
|
455
|
+
save() {
|
|
456
|
+
try {
|
|
457
|
+
fs.mkdirSync(path.dirname(this.deps.stateFile), { recursive: true });
|
|
458
|
+
const tmp = `${this.deps.stateFile}.${process.pid}.tmp`;
|
|
459
|
+
fs.writeFileSync(tmp, JSON.stringify(this.state, null, 2), { mode: 0o600 });
|
|
460
|
+
fs.renameSync(tmp, this.deps.stateFile);
|
|
461
|
+
}
|
|
462
|
+
catch (err) {
|
|
463
|
+
this.logger.warn(`[ClaudeKeyHealth] could not save state: ${err instanceof Error ? err.message : String(err)}`);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
//# sourceMappingURL=ClaudeKeyHealth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeKeyHealth.js","sourceRoot":"","sources":["../../src/core/ClaudeKeyHealth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodexTaskContinuationStore.d.ts","sourceRoot":"","sources":["../../src/core/CodexTaskContinuationStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CodexTaskContinuationStore.d.ts","sourceRoot":"","sources":["../../src/core/CodexTaskContinuationStore.ts"],"names":[],"mappings":"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"}
|