instar 0.28.76 → 0.28.78
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/index.html +486 -0
- package/dist/cli.js +5 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/discovery.d.ts.map +1 -1
- package/dist/commands/discovery.js +2 -2
- package/dist/commands/discovery.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +22 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/job.d.ts.map +1 -1
- package/dist/commands/job.js +2 -2
- package/dist/commands/job.js.map +1 -1
- package/dist/commands/ledgerCleanup.d.ts.map +1 -1
- package/dist/commands/ledgerCleanup.js +2 -2
- package/dist/commands/ledgerCleanup.js.map +1 -1
- package/dist/commands/listener.d.ts.map +1 -1
- package/dist/commands/listener.js +7 -12
- package/dist/commands/listener.js.map +1 -1
- package/dist/commands/nuke.d.ts.map +1 -1
- package/dist/commands/nuke.js +11 -21
- package/dist/commands/nuke.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +79 -5
- package/dist/commands/server.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +11 -15
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/slack-cli.d.ts.map +1 -1
- package/dist/commands/slack-cli.js +5 -8
- package/dist/commands/slack-cli.js.map +1 -1
- package/dist/commands/whatsapp.d.ts.map +1 -1
- package/dist/commands/whatsapp.js +2 -2
- package/dist/commands/whatsapp.js.map +1 -1
- package/dist/commands/worktree.d.ts.map +1 -1
- package/dist/commands/worktree.js +2 -2
- package/dist/commands/worktree.js.map +1 -1
- package/dist/core/AgentConnector.d.ts.map +1 -1
- package/dist/core/AgentConnector.js +9 -10
- package/dist/core/AgentConnector.js.map +1 -1
- package/dist/core/AgentRegistry.d.ts.map +1 -1
- package/dist/core/AgentRegistry.js +3 -4
- package/dist/core/AgentRegistry.js.map +1 -1
- package/dist/core/AutoDispatcher.d.ts.map +1 -1
- package/dist/core/AutoDispatcher.js +2 -2
- package/dist/core/AutoDispatcher.js.map +1 -1
- package/dist/core/AutoUpdater.d.ts.map +1 -1
- package/dist/core/AutoUpdater.js +2 -2
- package/dist/core/AutoUpdater.js.map +1 -1
- package/dist/core/AutonomousEvolution.d.ts.map +1 -1
- package/dist/core/AutonomousEvolution.js +2 -2
- package/dist/core/AutonomousEvolution.js.map +1 -1
- package/dist/core/BackupManager.d.ts.map +1 -1
- package/dist/core/BackupManager.js +2 -2
- package/dist/core/BackupManager.js.map +1 -1
- package/dist/core/BranchManager.d.ts.map +1 -1
- package/dist/core/BranchManager.js +3 -3
- package/dist/core/BranchManager.js.map +1 -1
- package/dist/core/CaffeinateManager.d.ts.map +1 -1
- package/dist/core/CaffeinateManager.js +2 -2
- package/dist/core/CaffeinateManager.js.map +1 -1
- package/dist/core/DeferredDispatchTracker.d.ts.map +1 -1
- package/dist/core/DeferredDispatchTracker.js +2 -2
- package/dist/core/DeferredDispatchTracker.js.map +1 -1
- package/dist/core/DispatchManager.d.ts.map +1 -1
- package/dist/core/DispatchManager.js +3 -4
- package/dist/core/DispatchManager.js.map +1 -1
- package/dist/core/EvolutionManager.d.ts.map +1 -1
- package/dist/core/EvolutionManager.js +2 -2
- package/dist/core/EvolutionManager.js.map +1 -1
- package/dist/core/ExecutionJournal.d.ts.map +1 -1
- package/dist/core/ExecutionJournal.js +2 -2
- package/dist/core/ExecutionJournal.js.map +1 -1
- package/dist/core/FeedbackManager.d.ts.map +1 -1
- package/dist/core/FeedbackManager.js +2 -2
- package/dist/core/FeedbackManager.js.map +1 -1
- package/dist/core/FileClassifier.d.ts.map +1 -1
- package/dist/core/FileClassifier.js +8 -17
- package/dist/core/FileClassifier.js.map +1 -1
- package/dist/core/ForegroundRestartWatcher.d.ts.map +1 -1
- package/dist/core/ForegroundRestartWatcher.js +3 -4
- package/dist/core/ForegroundRestartWatcher.js.map +1 -1
- package/dist/core/GitStateManager.d.ts.map +1 -1
- package/dist/core/GitStateManager.js +3 -12
- package/dist/core/GitStateManager.js.map +1 -1
- package/dist/core/GitSync.d.ts.map +1 -1
- package/dist/core/GitSync.js +6 -6
- package/dist/core/GitSync.js.map +1 -1
- package/dist/core/GlobalInstallCleanup.d.ts.map +1 -1
- package/dist/core/GlobalInstallCleanup.js +3 -4
- package/dist/core/GlobalInstallCleanup.js.map +1 -1
- package/dist/core/GlobalSecretStore.d.ts.map +1 -1
- package/dist/core/GlobalSecretStore.js +3 -4
- package/dist/core/GlobalSecretStore.js.map +1 -1
- package/dist/core/HandoffManager.d.ts.map +1 -1
- package/dist/core/HandoffManager.js +5 -5
- package/dist/core/HandoffManager.js.map +1 -1
- package/dist/core/JargonDetector.d.ts +28 -0
- package/dist/core/JargonDetector.d.ts.map +1 -0
- package/dist/core/JargonDetector.js +59 -0
- package/dist/core/JargonDetector.js.map +1 -0
- package/dist/core/LedgerSessionRegistry.d.ts.map +1 -1
- package/dist/core/LedgerSessionRegistry.js +2 -2
- package/dist/core/LedgerSessionRegistry.js.map +1 -1
- package/dist/core/MachineIdentity.d.ts.map +1 -1
- package/dist/core/MachineIdentity.js +2 -2
- package/dist/core/MachineIdentity.js.map +1 -1
- package/dist/core/MessagingToneGate.d.ts +42 -5
- package/dist/core/MessagingToneGate.d.ts.map +1 -1
- package/dist/core/MessagingToneGate.js +40 -6
- package/dist/core/MessagingToneGate.js.map +1 -1
- package/dist/core/ParallelDevWiring.d.ts.map +1 -1
- package/dist/core/ParallelDevWiring.js +3 -6
- package/dist/core/ParallelDevWiring.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +26 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +249 -46
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/ProjectMapper.d.ts.map +1 -1
- package/dist/core/ProjectMapper.js +5 -11
- package/dist/core/ProjectMapper.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +4 -5
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/core/SafeGitExecutor.d.ts +11 -5
- package/dist/core/SafeGitExecutor.d.ts.map +1 -1
- package/dist/core/SafeGitExecutor.js +87 -1
- package/dist/core/SafeGitExecutor.js.map +1 -1
- package/dist/core/ScopeVerifier.d.ts.map +1 -1
- package/dist/core/ScopeVerifier.js +3 -6
- package/dist/core/ScopeVerifier.js.map +1 -1
- package/dist/core/SecretStore.d.ts.map +1 -1
- package/dist/core/SecretStore.js +2 -2
- package/dist/core/SecretStore.js.map +1 -1
- package/dist/core/SharedStateLedger.d.ts.map +1 -1
- package/dist/core/SharedStateLedger.js +2 -2
- package/dist/core/SharedStateLedger.js.map +1 -1
- package/dist/core/SoulManager.d.ts.map +1 -1
- package/dist/core/SoulManager.js +3 -4
- package/dist/core/SoulManager.js.map +1 -1
- package/dist/core/StateManager.d.ts.map +1 -1
- package/dist/core/StateManager.js +4 -6
- package/dist/core/StateManager.js.map +1 -1
- package/dist/core/SyncOrchestrator.d.ts.map +1 -1
- package/dist/core/SyncOrchestrator.js +6 -7
- package/dist/core/SyncOrchestrator.js.map +1 -1
- package/dist/core/UpdateChecker.d.ts.map +1 -1
- package/dist/core/UpdateChecker.js +3 -4
- package/dist/core/UpdateChecker.js.map +1 -1
- package/dist/core/UpgradeGuideProcessor.d.ts.map +1 -1
- package/dist/core/UpgradeGuideProcessor.js +3 -4
- package/dist/core/UpgradeGuideProcessor.js.map +1 -1
- package/dist/core/WorktreeManager.d.ts.map +1 -1
- package/dist/core/WorktreeManager.js +9 -14
- package/dist/core/WorktreeManager.js.map +1 -1
- package/dist/knowledge/KnowledgeManager.d.ts.map +1 -1
- package/dist/knowledge/KnowledgeManager.js +2 -2
- package/dist/knowledge/KnowledgeManager.js.map +1 -1
- package/dist/lifeline/ServerSupervisor.d.ts +28 -0
- package/dist/lifeline/ServerSupervisor.d.ts.map +1 -1
- package/dist/lifeline/ServerSupervisor.js +171 -73
- package/dist/lifeline/ServerSupervisor.js.map +1 -1
- package/dist/lifeline/TelegramLifeline.d.ts.map +1 -1
- package/dist/lifeline/TelegramLifeline.js +10 -4
- package/dist/lifeline/TelegramLifeline.js.map +1 -1
- package/dist/lifeline/detectLaunchdSupervised.d.ts +43 -0
- package/dist/lifeline/detectLaunchdSupervised.d.ts.map +1 -0
- package/dist/lifeline/detectLaunchdSupervised.js +106 -0
- package/dist/lifeline/detectLaunchdSupervised.js.map +1 -0
- package/dist/lifeline/droppedMessages.d.ts.map +1 -1
- package/dist/lifeline/droppedMessages.js +2 -2
- package/dist/lifeline/droppedMessages.js.map +1 -1
- package/dist/memory/EpisodicMemory.d.ts.map +1 -1
- package/dist/memory/EpisodicMemory.js +2 -2
- package/dist/memory/EpisodicMemory.js.map +1 -1
- package/dist/memory/TopicMemory.d.ts.map +1 -1
- package/dist/memory/TopicMemory.js +5 -8
- package/dist/memory/TopicMemory.js.map +1 -1
- package/dist/messaging/AgentTokenManager.d.ts.map +1 -1
- package/dist/messaging/AgentTokenManager.js +2 -2
- package/dist/messaging/AgentTokenManager.js.map +1 -1
- package/dist/messaging/DropPickup.d.ts.map +1 -1
- package/dist/messaging/DropPickup.js +2 -2
- package/dist/messaging/DropPickup.js.map +1 -1
- package/dist/messaging/GitSyncTransport.d.ts.map +1 -1
- package/dist/messaging/GitSyncTransport.js +4 -6
- package/dist/messaging/GitSyncTransport.js.map +1 -1
- package/dist/messaging/MessageStore.d.ts.map +1 -1
- package/dist/messaging/MessageStore.js +3 -4
- package/dist/messaging/MessageStore.js.map +1 -1
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
- package/dist/messaging/TelegramAdapter.js +5 -8
- package/dist/messaging/TelegramAdapter.js.map +1 -1
- package/dist/messaging/backends/BaileysBackend.d.ts.map +1 -1
- package/dist/messaging/backends/BaileysBackend.js +3 -4
- package/dist/messaging/backends/BaileysBackend.js.map +1 -1
- package/dist/messaging/local-tone-check.d.ts +61 -0
- package/dist/messaging/local-tone-check.d.ts.map +1 -0
- package/dist/messaging/local-tone-check.js +78 -0
- package/dist/messaging/local-tone-check.js.map +1 -0
- package/dist/messaging/pending-relay-store.d.ts +153 -0
- package/dist/messaging/pending-relay-store.d.ts.map +1 -0
- package/dist/messaging/pending-relay-store.js +351 -0
- package/dist/messaging/pending-relay-store.js.map +1 -0
- package/dist/messaging/secret-patterns.d.ts +35 -0
- package/dist/messaging/secret-patterns.d.ts.map +1 -0
- package/dist/messaging/secret-patterns.js +70 -0
- package/dist/messaging/secret-patterns.js.map +1 -0
- package/dist/messaging/shared/EncryptedAuthStore.d.ts.map +1 -1
- package/dist/messaging/shared/EncryptedAuthStore.js +3 -4
- package/dist/messaging/shared/EncryptedAuthStore.js.map +1 -1
- package/dist/messaging/shared/MessageLogger.d.ts.map +1 -1
- package/dist/messaging/shared/MessageLogger.js +2 -2
- package/dist/messaging/shared/MessageLogger.js.map +1 -1
- package/dist/messaging/shared/PrivacyConsent.d.ts.map +1 -1
- package/dist/messaging/shared/PrivacyConsent.js +2 -2
- package/dist/messaging/shared/PrivacyConsent.js.map +1 -1
- package/dist/messaging/shared/SessionChannelRegistry.d.ts.map +1 -1
- package/dist/messaging/shared/SessionChannelRegistry.js +2 -2
- package/dist/messaging/shared/SessionChannelRegistry.js.map +1 -1
- package/dist/messaging/system-templates.d.ts +87 -0
- package/dist/messaging/system-templates.d.ts.map +1 -0
- package/dist/messaging/system-templates.js +236 -0
- package/dist/messaging/system-templates.js.map +1 -0
- package/dist/messaging/whoami-cache.d.ts +66 -0
- package/dist/messaging/whoami-cache.d.ts.map +1 -0
- package/dist/messaging/whoami-cache.js +149 -0
- package/dist/messaging/whoami-cache.js.map +1 -0
- package/dist/moltbridge/ProfileCompiler.d.ts.map +1 -1
- package/dist/moltbridge/ProfileCompiler.js +13 -7
- package/dist/moltbridge/ProfileCompiler.js.map +1 -1
- package/dist/monitoring/CommitmentTracker.d.ts.map +1 -1
- package/dist/monitoring/CommitmentTracker.js +2 -2
- package/dist/monitoring/CommitmentTracker.js.map +1 -1
- package/dist/monitoring/CredentialProvider.d.ts.map +1 -1
- package/dist/monitoring/CredentialProvider.js +2 -2
- package/dist/monitoring/CredentialProvider.js.map +1 -1
- package/dist/monitoring/DegradationReporter.d.ts +41 -0
- package/dist/monitoring/DegradationReporter.d.ts.map +1 -1
- package/dist/monitoring/DegradationReporter.js +96 -4
- package/dist/monitoring/DegradationReporter.js.map +1 -1
- package/dist/monitoring/HealthChecker.d.ts.map +1 -1
- package/dist/monitoring/HealthChecker.js +2 -2
- package/dist/monitoring/HealthChecker.js.map +1 -1
- package/dist/monitoring/HookEventReceiver.d.ts.map +1 -1
- package/dist/monitoring/HookEventReceiver.js +2 -2
- package/dist/monitoring/HookEventReceiver.js.map +1 -1
- package/dist/monitoring/InstructionsVerifier.d.ts.map +1 -1
- package/dist/monitoring/InstructionsVerifier.js +2 -2
- package/dist/monitoring/InstructionsVerifier.js.map +1 -1
- package/dist/monitoring/PresenceProxy.d.ts.map +1 -1
- package/dist/monitoring/PresenceProxy.js +5 -8
- package/dist/monitoring/PresenceProxy.js.map +1 -1
- package/dist/monitoring/QuotaTracker.d.ts.map +1 -1
- package/dist/monitoring/QuotaTracker.js +2 -2
- package/dist/monitoring/QuotaTracker.js.map +1 -1
- package/dist/monitoring/SessionMigrator.d.ts.map +1 -1
- package/dist/monitoring/SessionMigrator.js +2 -2
- package/dist/monitoring/SessionMigrator.js.map +1 -1
- package/dist/monitoring/SessionRecovery.d.ts.map +1 -1
- package/dist/monitoring/SessionRecovery.js +2 -2
- package/dist/monitoring/SessionRecovery.js.map +1 -1
- package/dist/monitoring/TelemetryAuth.d.ts.map +1 -1
- package/dist/monitoring/TelemetryAuth.js +3 -4
- package/dist/monitoring/TelemetryAuth.js.map +1 -1
- package/dist/monitoring/TokenLedger.d.ts +130 -0
- package/dist/monitoring/TokenLedger.d.ts.map +1 -0
- package/dist/monitoring/TokenLedger.js +523 -0
- package/dist/monitoring/TokenLedger.js.map +1 -0
- package/dist/monitoring/TokenLedgerPoller.d.ts +26 -0
- package/dist/monitoring/TokenLedgerPoller.d.ts.map +1 -0
- package/dist/monitoring/TokenLedgerPoller.js +44 -0
- package/dist/monitoring/TokenLedgerPoller.js.map +1 -0
- package/dist/monitoring/TriageOrchestrator.d.ts.map +1 -1
- package/dist/monitoring/TriageOrchestrator.js +3 -4
- package/dist/monitoring/TriageOrchestrator.js.map +1 -1
- package/dist/monitoring/WorktreeReaper.d.ts.map +1 -1
- package/dist/monitoring/WorktreeReaper.js +5 -7
- package/dist/monitoring/WorktreeReaper.js.map +1 -1
- package/dist/monitoring/delivery-failure-sentinel/recovery-policy.d.ts +83 -0
- package/dist/monitoring/delivery-failure-sentinel/recovery-policy.d.ts.map +1 -0
- package/dist/monitoring/delivery-failure-sentinel/recovery-policy.js +218 -0
- package/dist/monitoring/delivery-failure-sentinel/recovery-policy.js.map +1 -0
- package/dist/monitoring/delivery-failure-sentinel.d.ts +177 -0
- package/dist/monitoring/delivery-failure-sentinel.d.ts.map +1 -0
- package/dist/monitoring/delivery-failure-sentinel.js +598 -0
- package/dist/monitoring/delivery-failure-sentinel.js.map +1 -0
- package/dist/monitoring/probes/PlatformProbe.d.ts.map +1 -1
- package/dist/monitoring/probes/PlatformProbe.js +3 -4
- package/dist/monitoring/probes/PlatformProbe.js.map +1 -1
- package/dist/monitoring/templates-drift-verifier.d.ts +109 -0
- package/dist/monitoring/templates-drift-verifier.d.ts.map +1 -0
- package/dist/monitoring/templates-drift-verifier.js +324 -0
- package/dist/monitoring/templates-drift-verifier.js.map +1 -0
- package/dist/paste/PasteManager.d.ts.map +1 -1
- package/dist/paste/PasteManager.js +5 -8
- package/dist/paste/PasteManager.js.map +1 -1
- package/dist/publishing/PrivateViewer.d.ts.map +1 -1
- package/dist/publishing/PrivateViewer.js +2 -2
- package/dist/publishing/PrivateViewer.js.map +1 -1
- package/dist/scheduler/JobScheduler.d.ts.map +1 -1
- package/dist/scheduler/JobScheduler.js +2 -2
- package/dist/scheduler/JobScheduler.js.map +1 -1
- package/dist/server/AgentServer.d.ts +22 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +199 -1
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/WebSocketManager.d.ts +11 -0
- package/dist/server/WebSocketManager.d.ts.map +1 -1
- package/dist/server/WebSocketManager.js +28 -0
- package/dist/server/WebSocketManager.js.map +1 -1
- package/dist/server/boot-id.d.ts +58 -0
- package/dist/server/boot-id.d.ts.map +1 -0
- package/dist/server/boot-id.js +121 -0
- package/dist/server/boot-id.js.map +1 -0
- package/dist/server/middleware.d.ts +14 -1
- package/dist/server/middleware.d.ts.map +1 -1
- package/dist/server/middleware.js +81 -1
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/routes.d.ts +76 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +626 -11
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/AgentDiscovery.d.ts.map +1 -1
- package/dist/threadline/AgentDiscovery.js +2 -2
- package/dist/threadline/AgentDiscovery.js.map +1 -1
- package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
- package/dist/threadline/AgentTrustManager.js +2 -2
- package/dist/threadline/AgentTrustManager.js.map +1 -1
- package/dist/threadline/BackfillCore.d.ts +70 -0
- package/dist/threadline/BackfillCore.d.ts.map +1 -0
- package/dist/threadline/BackfillCore.js +117 -0
- package/dist/threadline/BackfillCore.js.map +1 -0
- package/dist/threadline/CircuitBreaker.d.ts.map +1 -1
- package/dist/threadline/CircuitBreaker.js +2 -2
- package/dist/threadline/CircuitBreaker.js.map +1 -1
- package/dist/threadline/ComputeMeter.d.ts.map +1 -1
- package/dist/threadline/ComputeMeter.js +2 -2
- package/dist/threadline/ComputeMeter.js.map +1 -1
- package/dist/threadline/ContextThreadMap.d.ts.map +1 -1
- package/dist/threadline/ContextThreadMap.js +2 -2
- package/dist/threadline/ContextThreadMap.js.map +1 -1
- package/dist/threadline/HeartbeatWatchdog.d.ts +78 -0
- package/dist/threadline/HeartbeatWatchdog.d.ts.map +1 -0
- package/dist/threadline/HeartbeatWatchdog.js +212 -0
- package/dist/threadline/HeartbeatWatchdog.js.map +1 -0
- package/dist/threadline/HeartbeatWriter.d.ts +79 -0
- package/dist/threadline/HeartbeatWriter.d.ts.map +1 -0
- package/dist/threadline/HeartbeatWriter.js +109 -0
- package/dist/threadline/HeartbeatWriter.js.map +1 -0
- package/dist/threadline/InvitationManager.d.ts.map +1 -1
- package/dist/threadline/InvitationManager.js +2 -2
- package/dist/threadline/InvitationManager.js.map +1 -1
- package/dist/threadline/ListenerSessionManager.d.ts +59 -0
- package/dist/threadline/ListenerSessionManager.d.ts.map +1 -1
- package/dist/threadline/ListenerSessionManager.js +79 -0
- package/dist/threadline/ListenerSessionManager.js.map +1 -1
- package/dist/threadline/MCPAuth.d.ts.map +1 -1
- package/dist/threadline/MCPAuth.js +2 -2
- package/dist/threadline/MCPAuth.js.map +1 -1
- package/dist/threadline/PipeSessionSpawner.d.ts.map +1 -1
- package/dist/threadline/PipeSessionSpawner.js +3 -4
- package/dist/threadline/PipeSessionSpawner.js.map +1 -1
- package/dist/threadline/RateLimiter.d.ts.map +1 -1
- package/dist/threadline/RateLimiter.js +2 -2
- package/dist/threadline/RateLimiter.js.map +1 -1
- package/dist/threadline/RelaySpawnFailureHandler.d.ts +53 -0
- package/dist/threadline/RelaySpawnFailureHandler.d.ts.map +1 -0
- package/dist/threadline/RelaySpawnFailureHandler.js +73 -0
- package/dist/threadline/RelaySpawnFailureHandler.js.map +1 -0
- package/dist/threadline/SessionLifecycle.d.ts.map +1 -1
- package/dist/threadline/SessionLifecycle.js +2 -2
- package/dist/threadline/SessionLifecycle.js.map +1 -1
- package/dist/threadline/SpawnLedger.d.ts +94 -0
- package/dist/threadline/SpawnLedger.d.ts.map +1 -0
- package/dist/threadline/SpawnLedger.js +194 -0
- package/dist/threadline/SpawnLedger.js.map +1 -0
- package/dist/threadline/SpawnNonce.d.ts +49 -0
- package/dist/threadline/SpawnNonce.d.ts.map +1 -0
- package/dist/threadline/SpawnNonce.js +99 -0
- package/dist/threadline/SpawnNonce.js.map +1 -0
- package/dist/threadline/TelegramBridge.d.ts +140 -0
- package/dist/threadline/TelegramBridge.d.ts.map +1 -0
- package/dist/threadline/TelegramBridge.js +224 -0
- package/dist/threadline/TelegramBridge.js.map +1 -0
- package/dist/threadline/TelegramBridgeConfig.d.ts +79 -0
- package/dist/threadline/TelegramBridgeConfig.d.ts.map +1 -0
- package/dist/threadline/TelegramBridgeConfig.js +168 -0
- package/dist/threadline/TelegramBridgeConfig.js.map +1 -0
- package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.js +2 -2
- package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.js +5 -0
- package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
- package/dist/threadline/ThreadlineObservability.d.ts +95 -0
- package/dist/threadline/ThreadlineObservability.d.ts.map +1 -0
- package/dist/threadline/ThreadlineObservability.js +310 -0
- package/dist/threadline/ThreadlineObservability.js.map +1 -0
- package/dist/threadline/WakeSocketServer.d.ts.map +1 -1
- package/dist/threadline/WakeSocketServer.js +3 -4
- package/dist/threadline/WakeSocketServer.js.map +1 -1
- package/dist/threadline/listener-daemon.d.ts.map +1 -1
- package/dist/threadline/listener-daemon.js +3 -4
- package/dist/threadline/listener-daemon.js.map +1 -1
- package/dist/users/UserManager.d.ts.map +1 -1
- package/dist/users/UserManager.js +2 -2
- package/dist/users/UserManager.js.map +1 -1
- package/dist/users/UserOnboarding.d.ts.map +1 -1
- package/dist/users/UserOnboarding.js +2 -2
- package/dist/users/UserOnboarding.js.map +1 -1
- package/dist/utils/jsonl-rotation.d.ts.map +1 -1
- package/dist/utils/jsonl-rotation.js +2 -2
- package/dist/utils/jsonl-rotation.js.map +1 -1
- package/package.json +1 -1
- package/scripts/analyze-release.js +7 -12
- package/scripts/check-contract-evidence.js +27 -10
- package/scripts/fix-better-sqlite3.cjs +0 -2
- package/scripts/instar-dev-precommit.js +0 -2
- package/scripts/lint-no-direct-destructive.js +24 -4
- package/scripts/lint-template-sha-history.ts +183 -0
- package/scripts/migrate-incident-2026-04-17.mjs +2 -2
- package/scripts/run-migration.js +500 -0
- package/scripts/test-bootstrap-relay.mjs +2 -2
- package/scripts/threadline-bridge-backfill.mjs +379 -0
- package/scripts/verify-deployed-templates.ts +87 -0
- package/src/data/builtin-manifest.json +140 -132
- package/src/templates/scripts/git-sync-gate.sh +0 -4
- package/src/templates/scripts/telegram-reply.sh +318 -13
- package/upgrades/0.28.77.md +133 -0
- package/upgrades/0.28.78.md +90 -0
- package/upgrades/side-effects/agent-health-alert-authority-routing.md +121 -0
- package/upgrades/side-effects/comprehensive-destructive-tool-containment-migration.md +82 -0
- package/upgrades/side-effects/deferral-detector-orphan-todo.md +101 -0
- package/upgrades/side-effects/lifeline-self-heal-hardening.md +151 -0
- package/upgrades/side-effects/relay-spawn-ghost-reply-phase1.md +139 -0
- package/upgrades/side-effects/telegram-delivery-robustness-layer-2.md +320 -0
- package/upgrades/side-effects/telegram-delivery-robustness-layer-3.md +202 -0
- package/upgrades/side-effects/telegram-delivery-robustness-layer-7.md +339 -0
- package/upgrades/side-effects/telegram-delivery-robustness.md +178 -0
- package/upgrades/side-effects/threadline-bridge-backfill.md +203 -0
- package/upgrades/side-effects/threadline-canonical-inbox-write.md +218 -0
- package/upgrades/side-effects/threadline-observability-tab.md +206 -0
- package/upgrades/side-effects/threadline-tg-bridge-module.md +196 -0
- package/upgrades/side-effects/threadline-tg-bridge-settings-surface.md +208 -0
- package/upgrades/side-effects/token-ledger-bounded-scan.md +230 -0
- package/upgrades/side-effects/token-ledger-phase1.md +123 -0
- package/upgrades/NEXT.md +0 -53
- /package/upgrades/side-effects/{telegram-lifeline-version-missing-info.md → 0.28.76.md} +0 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PendingRelayStore — SQLite-backed durable queue of telegram-reply
|
|
3
|
+
* delivery attempts that the script-side detector classified as
|
|
4
|
+
* recoverable.
|
|
5
|
+
*
|
|
6
|
+
* Spec: docs/specs/telegram-delivery-robustness.md § Layer 2a.
|
|
7
|
+
*
|
|
8
|
+
* Path: `<stateDir>/state/pending-relay.<agentId>.sqlite` (mode 0600).
|
|
9
|
+
*
|
|
10
|
+
* The agentId infix exists because instar supports two install layouts:
|
|
11
|
+
* - per-agent: `~/.instar/agents/<id>/.instar/`
|
|
12
|
+
* - per-project (shared worktrees): `<project>/.instar/`
|
|
13
|
+
* Two agents that share a project `.instar/` would otherwise collide
|
|
14
|
+
* on a single queue file. The infix prevents that.
|
|
15
|
+
*
|
|
16
|
+
* Concurrency model:
|
|
17
|
+
* - WAL journaling — sentinel UPDATEs do not block script INSERTs.
|
|
18
|
+
* - synchronous=NORMAL — durable enough; we accept that the most
|
|
19
|
+
* recent few inserts MAY be lost on a power cut, which is fine
|
|
20
|
+
* because the sender's exit-1 keeps the agent-visible failure
|
|
21
|
+
* semantics (the agent can still see its send failed).
|
|
22
|
+
* - busy_timeout=5000 — handles transient contention without raising.
|
|
23
|
+
*
|
|
24
|
+
* Layer 2 owns ENQUEUE and lookup primitives. The actual claim/lease
|
|
25
|
+
* lifecycle (Layer 3) layers on top of `transition()` — the store does
|
|
26
|
+
* not opinion-ate on what counts as a legal state transition; it just
|
|
27
|
+
* persists what its caller writes.
|
|
28
|
+
*/
|
|
29
|
+
import Database from 'better-sqlite3';
|
|
30
|
+
import fs from 'node:fs';
|
|
31
|
+
import path from 'node:path';
|
|
32
|
+
import { execFileSync } from 'node:child_process';
|
|
33
|
+
import { DegradationReporter } from '../monitoring/DegradationReporter.js';
|
|
34
|
+
// ── Schema ────────────────────────────────────────────────────────────
|
|
35
|
+
const SCHEMA = [
|
|
36
|
+
`CREATE TABLE IF NOT EXISTS entries (
|
|
37
|
+
delivery_id TEXT PRIMARY KEY,
|
|
38
|
+
topic_id INTEGER NOT NULL,
|
|
39
|
+
text_hash TEXT NOT NULL,
|
|
40
|
+
text BLOB NOT NULL,
|
|
41
|
+
format TEXT,
|
|
42
|
+
http_code INTEGER,
|
|
43
|
+
error_body TEXT,
|
|
44
|
+
attempted_port INTEGER,
|
|
45
|
+
attempted_at TEXT NOT NULL,
|
|
46
|
+
attempts INTEGER NOT NULL DEFAULT 1,
|
|
47
|
+
next_attempt_at TEXT,
|
|
48
|
+
state TEXT NOT NULL,
|
|
49
|
+
claimed_by TEXT,
|
|
50
|
+
status_history TEXT NOT NULL DEFAULT '[]',
|
|
51
|
+
truncated INTEGER NOT NULL DEFAULT 0
|
|
52
|
+
)`,
|
|
53
|
+
`CREATE INDEX IF NOT EXISTS idx_state_next ON entries(state, next_attempt_at)`,
|
|
54
|
+
`CREATE INDEX IF NOT EXISTS idx_text_hash_topic ON entries(text_hash, topic_id)`,
|
|
55
|
+
];
|
|
56
|
+
// Idempotent column adds — matches what the spec calls "if column missing,
|
|
57
|
+
// ALTER TABLE ADD COLUMN". better-sqlite3 raises on a duplicate column;
|
|
58
|
+
// we catch and continue.
|
|
59
|
+
const COLUMN_ADDS = [
|
|
60
|
+
// truncated was added in the same commit that introduced this file, but
|
|
61
|
+
// the ALTER path exists so older databases (e.g. someone who hand-bootstrapped
|
|
62
|
+
// an entries table from an earlier dev branch) still upgrade cleanly.
|
|
63
|
+
{ name: 'truncated', ddl: 'ALTER TABLE entries ADD COLUMN truncated INTEGER NOT NULL DEFAULT 0' },
|
|
64
|
+
];
|
|
65
|
+
// ── Path resolution ───────────────────────────────────────────────────
|
|
66
|
+
/**
|
|
67
|
+
* Resolve the SQLite path. `stateDir` is the agent's `.instar/` directory.
|
|
68
|
+
* The store lives under `<stateDir>/state/`, alongside other per-agent
|
|
69
|
+
* runtime files.
|
|
70
|
+
*/
|
|
71
|
+
export function resolvePendingRelayPath(stateDir, agentId) {
|
|
72
|
+
return path.join(stateDir, 'state', `pending-relay.${sanitizeAgentId(agentId)}.sqlite`);
|
|
73
|
+
}
|
|
74
|
+
export function resolvePendingRelayLockPath(stateDir, agentId) {
|
|
75
|
+
return path.join(stateDir, 'state', `pending-relay.${sanitizeAgentId(agentId)}.sqlite.lock`);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Defensive — the agentId comes from config.json which is operator-controlled
|
|
79
|
+
* but should not contain path separators; if it ever does, we'd land in a
|
|
80
|
+
* directory traversal. Replace anything outside [A-Za-z0-9._-] with '_'.
|
|
81
|
+
*/
|
|
82
|
+
function sanitizeAgentId(id) {
|
|
83
|
+
return id.replace(/[^A-Za-z0-9._-]/g, '_');
|
|
84
|
+
}
|
|
85
|
+
// ── Store ─────────────────────────────────────────────────────────────
|
|
86
|
+
export class PendingRelayStore {
|
|
87
|
+
db;
|
|
88
|
+
path;
|
|
89
|
+
constructor(db, dbPath) {
|
|
90
|
+
this.db = db;
|
|
91
|
+
this.path = dbPath;
|
|
92
|
+
}
|
|
93
|
+
static open(agentId, stateDir) {
|
|
94
|
+
const dbPath = resolvePendingRelayPath(stateDir, agentId);
|
|
95
|
+
fs.mkdirSync(path.dirname(dbPath), { recursive: true });
|
|
96
|
+
let db;
|
|
97
|
+
try {
|
|
98
|
+
db = new Database(dbPath);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
throw new Error(`pending-relay-store: failed to open ${dbPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
102
|
+
}
|
|
103
|
+
// Mode 0600 — privacy & retention §3g. Only the owning user may read
|
|
104
|
+
// queued message bodies. Race-free chmod after the file already exists.
|
|
105
|
+
try {
|
|
106
|
+
fs.chmodSync(dbPath, 0o600);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// best-effort; some FS layouts (Windows, certain mounts) don't honor mode bits.
|
|
110
|
+
}
|
|
111
|
+
// Mandatory pragmas (spec § 2a). WAL + NORMAL + 5s busy timeout.
|
|
112
|
+
db.pragma('journal_mode = WAL');
|
|
113
|
+
db.pragma('synchronous = NORMAL');
|
|
114
|
+
db.pragma('busy_timeout = 5000');
|
|
115
|
+
for (const ddl of SCHEMA) {
|
|
116
|
+
db.exec(ddl);
|
|
117
|
+
}
|
|
118
|
+
// Idempotent column adds.
|
|
119
|
+
for (const col of COLUMN_ADDS) {
|
|
120
|
+
try {
|
|
121
|
+
db.exec(col.ddl);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
125
|
+
if (!/duplicate column name/i.test(msg)) {
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return new PendingRelayStore(db, dbPath);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Enqueue a recoverable delivery failure.
|
|
134
|
+
*
|
|
135
|
+
* Idempotent on `delivery_id` — INSERT OR IGNORE so a script that
|
|
136
|
+
* accidentally re-runs with the same delivery_id (e.g. a bash retry
|
|
137
|
+
* loop in a misbehaving session) doesn't duplicate the row.
|
|
138
|
+
*
|
|
139
|
+
* Returns true if the row was newly inserted, false if it was already
|
|
140
|
+
* present (idempotent no-op).
|
|
141
|
+
*/
|
|
142
|
+
enqueue(input) {
|
|
143
|
+
const text = typeof input.text === 'string' ? Buffer.from(input.text, 'utf-8') : input.text;
|
|
144
|
+
const attemptedAt = input.attempted_at ?? new Date().toISOString();
|
|
145
|
+
const initialHistory = JSON.stringify([
|
|
146
|
+
{ state: 'queued', at: attemptedAt, http_code: input.http_code },
|
|
147
|
+
]);
|
|
148
|
+
const stmt = this.db.prepare(`INSERT OR IGNORE INTO entries (
|
|
149
|
+
delivery_id, topic_id, text_hash, text, format,
|
|
150
|
+
http_code, error_body, attempted_port,
|
|
151
|
+
attempted_at, attempts, next_attempt_at,
|
|
152
|
+
state, claimed_by, status_history, truncated
|
|
153
|
+
) VALUES (
|
|
154
|
+
@delivery_id, @topic_id, @text_hash, @text, @format,
|
|
155
|
+
@http_code, @error_body, @attempted_port,
|
|
156
|
+
@attempted_at, 1, NULL,
|
|
157
|
+
'queued', NULL, @status_history, @truncated
|
|
158
|
+
)`);
|
|
159
|
+
const result = stmt.run({
|
|
160
|
+
delivery_id: input.delivery_id,
|
|
161
|
+
topic_id: input.topic_id,
|
|
162
|
+
text_hash: input.text_hash,
|
|
163
|
+
text,
|
|
164
|
+
format: input.format ?? null,
|
|
165
|
+
http_code: input.http_code,
|
|
166
|
+
error_body: input.error_body ?? null,
|
|
167
|
+
attempted_port: input.attempted_port,
|
|
168
|
+
attempted_at: attemptedAt,
|
|
169
|
+
status_history: initialHistory,
|
|
170
|
+
truncated: input.truncated ? 1 : 0,
|
|
171
|
+
});
|
|
172
|
+
return result.changes === 1;
|
|
173
|
+
}
|
|
174
|
+
findByDeliveryId(deliveryId) {
|
|
175
|
+
const stmt = this.db.prepare('SELECT * FROM entries WHERE delivery_id = ?');
|
|
176
|
+
const row = stmt.get(deliveryId);
|
|
177
|
+
return row ?? null;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Dedup-window query (spec § 2b step 2). Returns the most-recently
|
|
181
|
+
* inserted row whose (topic_id, text_hash) matches and whose
|
|
182
|
+
* attempted_at is within `windowMs` of `now`. Used by the script to
|
|
183
|
+
* suppress a tight-loop flood from a misbehaving session.
|
|
184
|
+
*/
|
|
185
|
+
findByTopicAndHashWithin(topicId, textHash, windowMs, now = new Date()) {
|
|
186
|
+
const cutoff = new Date(now.getTime() - windowMs).toISOString();
|
|
187
|
+
const stmt = this.db.prepare(`SELECT * FROM entries
|
|
188
|
+
WHERE topic_id = ? AND text_hash = ? AND attempted_at >= ?
|
|
189
|
+
ORDER BY attempted_at DESC LIMIT 1`);
|
|
190
|
+
const row = stmt.get(topicId, textHash, cutoff);
|
|
191
|
+
return row ?? null;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Update an entry's state and any additional fields. The spec calls
|
|
195
|
+
* for "atomic state transitions" — we run the UPDATE in a single
|
|
196
|
+
* statement and append a status-history row in the same transaction
|
|
197
|
+
* so a sentinel crash mid-transition cannot leave a row in a torn
|
|
198
|
+
* state.
|
|
199
|
+
*
|
|
200
|
+
* Returns true if a row was actually updated, false if no row matched
|
|
201
|
+
* the delivery_id (caller race or stale id).
|
|
202
|
+
*/
|
|
203
|
+
transition(deliveryId, newState, additionalFields = {}) {
|
|
204
|
+
const tx = this.db.transaction((id, state, extra) => {
|
|
205
|
+
const current = this.db.prepare('SELECT status_history FROM entries WHERE delivery_id = ?').get(id);
|
|
206
|
+
if (!current)
|
|
207
|
+
return false;
|
|
208
|
+
let history;
|
|
209
|
+
try {
|
|
210
|
+
const parsed = JSON.parse(current.status_history);
|
|
211
|
+
history = Array.isArray(parsed) ? parsed : [];
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
history = [];
|
|
215
|
+
}
|
|
216
|
+
history.push({ state, at: new Date().toISOString() });
|
|
217
|
+
const fields = ['state = @state', 'status_history = @status_history'];
|
|
218
|
+
const params = {
|
|
219
|
+
delivery_id: id,
|
|
220
|
+
state,
|
|
221
|
+
status_history: JSON.stringify(history),
|
|
222
|
+
};
|
|
223
|
+
for (const [k, v] of Object.entries(extra)) {
|
|
224
|
+
if (v === undefined)
|
|
225
|
+
continue;
|
|
226
|
+
fields.push(`${k} = @${k}`);
|
|
227
|
+
params[k] = v;
|
|
228
|
+
}
|
|
229
|
+
const sql = `UPDATE entries SET ${fields.join(', ')} WHERE delivery_id = @delivery_id`;
|
|
230
|
+
const result = this.db.prepare(sql).run(params);
|
|
231
|
+
return result.changes === 1;
|
|
232
|
+
});
|
|
233
|
+
return tx(deliveryId, newState, additionalFields);
|
|
234
|
+
}
|
|
235
|
+
/** Diagnostic helper used by tests. */
|
|
236
|
+
count() {
|
|
237
|
+
const row = this.db.prepare('SELECT COUNT(*) AS n FROM entries').get();
|
|
238
|
+
return row.n;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Layer 3 sentinel selector — returns rows whose `state` is in
|
|
242
|
+
* (`queued`, `claimed`) and whose `next_attempt_at` (when set) is at
|
|
243
|
+
* or before `nowIso`. Sorted by `attempted_at` ascending so the
|
|
244
|
+
* sentinel can drain oldest-first within per-topic rate caps.
|
|
245
|
+
*
|
|
246
|
+
* The query is bounded at `limit` to prevent a runaway tick scan.
|
|
247
|
+
* The sentinel handles its own batching above this layer.
|
|
248
|
+
*/
|
|
249
|
+
selectClaimable(nowIso, limit = 100) {
|
|
250
|
+
const stmt = this.db.prepare(`SELECT * FROM entries
|
|
251
|
+
WHERE state IN ('queued', 'claimed')
|
|
252
|
+
AND (next_attempt_at IS NULL OR next_attempt_at <= @now)
|
|
253
|
+
ORDER BY attempted_at ASC
|
|
254
|
+
LIMIT @limit`);
|
|
255
|
+
return stmt.all({ now: nowIso, limit });
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Layer 3 restore-purge — drops queued/claimed rows whose
|
|
259
|
+
* `attempted_at` is older than `cutoffIso`. Called once at sentinel
|
|
260
|
+
* startup (spec §3h). Returns the number of rows deleted so the
|
|
261
|
+
* caller can emit a one-line restore log.
|
|
262
|
+
*/
|
|
263
|
+
purgeStaleClaimable(cutoffIso) {
|
|
264
|
+
const stmt = this.db.prepare(`DELETE FROM entries
|
|
265
|
+
WHERE state IN ('queued', 'claimed')
|
|
266
|
+
AND attempted_at < @cutoff`);
|
|
267
|
+
const result = stmt.run({ cutoff: cutoffIso });
|
|
268
|
+
return result.changes ?? 0;
|
|
269
|
+
}
|
|
270
|
+
pathOnDisk() {
|
|
271
|
+
return this.path;
|
|
272
|
+
}
|
|
273
|
+
close() {
|
|
274
|
+
try {
|
|
275
|
+
this.db.close();
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
// best-effort
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// ── Boot self-check ───────────────────────────────────────────────────
|
|
283
|
+
/**
|
|
284
|
+
* Verify the SQLite runtime substrate is usable.
|
|
285
|
+
*
|
|
286
|
+
* Spec § 2a "Runtime dependency": the `sqlite3` CLI is not universally
|
|
287
|
+
* pre-installed (Alpine, minimal Debian). On boot, probe for it; if
|
|
288
|
+
* absent, raise a `sqlite3-cli-missing` degradation event. The script
|
|
289
|
+
* has a `node:sqlite` / `better-sqlite3` fallback path — this is purely
|
|
290
|
+
* a "tell the operator" signal, not a fatal startup failure.
|
|
291
|
+
*
|
|
292
|
+
* We also confirm `better-sqlite3` itself can open an in-memory DB; if
|
|
293
|
+
* that fails (e.g. node-gyp build was skipped on this platform), we
|
|
294
|
+
* emit a `sqlite-runtime-broken` degradation. The server keeps running
|
|
295
|
+
* — Layer 2 features are gracefully degraded; everything else continues
|
|
296
|
+
* to work.
|
|
297
|
+
*
|
|
298
|
+
* Returns `{ok: true}` when the in-process driver works (independent of
|
|
299
|
+
* CLI presence), so AgentServer can decide whether to stand up the
|
|
300
|
+
* /events/delivery-failed endpoint at all.
|
|
301
|
+
*/
|
|
302
|
+
export function assertSqliteAvailable() {
|
|
303
|
+
let cliPresent = false;
|
|
304
|
+
try {
|
|
305
|
+
execFileSync('sqlite3', ['-version'], { stdio: 'ignore' });
|
|
306
|
+
cliPresent = true;
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
cliPresent = false;
|
|
310
|
+
try {
|
|
311
|
+
DegradationReporter.getInstance().report({
|
|
312
|
+
feature: 'sqlite3-cli-missing',
|
|
313
|
+
primary: 'sqlite3 CLI for shell-side queue operations',
|
|
314
|
+
fallback: 'node:sqlite / better-sqlite3 in-process driver from script fallback path',
|
|
315
|
+
reason: 'sqlite3 binary not found on PATH; the relay script will use its node-based fallback.',
|
|
316
|
+
impact: 'No user-visible impact under normal operation. The script-side ' +
|
|
317
|
+
'queue path is slightly slower per insert (process startup cost) ' +
|
|
318
|
+
'than with the CLI. Fix: install sqlite3 (apt install sqlite3 / apk add sqlite).',
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
catch {
|
|
322
|
+
// DegradationReporter is best-effort; never block boot on it.
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// Confirm the in-process driver works at all.
|
|
326
|
+
try {
|
|
327
|
+
const probe = new Database(':memory:');
|
|
328
|
+
probe.exec('CREATE TABLE t (x INTEGER)');
|
|
329
|
+
probe.close();
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
333
|
+
try {
|
|
334
|
+
DegradationReporter.getInstance().report({
|
|
335
|
+
feature: 'sqlite-runtime-broken',
|
|
336
|
+
primary: 'better-sqlite3 in-process driver',
|
|
337
|
+
fallback: 'pending-relay queue disabled — recoverable failures will not be enqueued',
|
|
338
|
+
reason: `better-sqlite3 failed to open an in-memory DB: ${reason}`,
|
|
339
|
+
impact: 'Layer 2 (durable queue + structured failure events) is disabled. ' +
|
|
340
|
+
'Existing direct-send paths continue to work. Fix: rebuild ' +
|
|
341
|
+
'better-sqlite3 for this platform (npm rebuild better-sqlite3).',
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
// best-effort
|
|
346
|
+
}
|
|
347
|
+
return { ok: false, cliPresent, reason };
|
|
348
|
+
}
|
|
349
|
+
return { ok: true, cliPresent };
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=pending-relay-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-relay-store.js","sourceRoot":"","sources":["../../src/messaging/pending-relay-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compiled-in secret-pattern redaction (spec § 3g).
|
|
3
|
+
*
|
|
4
|
+
* Defense-in-depth on the queued-text column of pending-relay.<agentId>.sqlite —
|
|
5
|
+
* if a stray secret reached an outbound message, we don't want it durably
|
|
6
|
+
* persisted on disk. The pattern list is shipped in source (NOT a writable
|
|
7
|
+
* config file) so adding a new provider requires a code review, not an
|
|
8
|
+
* operator config edit.
|
|
9
|
+
*
|
|
10
|
+
* Patterns are conservative — we'd rather under-redact than nuke a normal
|
|
11
|
+
* message that happens to contain a token-shaped substring. They're not a
|
|
12
|
+
* substitute for agents not putting secrets in user messages in the first
|
|
13
|
+
* place; that contract is upstream of this file.
|
|
14
|
+
*
|
|
15
|
+
* Each pattern emits `<redacted:type>` so downstream tooling can audit
|
|
16
|
+
* what was substituted (count by type, etc.).
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Redact known-secret substrings from `text`. Each match is replaced with
|
|
20
|
+
* `<redacted:<type>>`.
|
|
21
|
+
*
|
|
22
|
+
* Returns the redacted string. If `text` contains no matches, the returned
|
|
23
|
+
* string is identical to the input (referentially, when possible).
|
|
24
|
+
*
|
|
25
|
+
* Performance note: regex iteration is linear in input length × pattern
|
|
26
|
+
* count. The text column is capped at 32KB by Layer 2; even with 8 patterns,
|
|
27
|
+
* worst-case wall time is well under a millisecond.
|
|
28
|
+
*/
|
|
29
|
+
export declare function redact(text: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Test introspection — returns the pattern types in order. Used by unit
|
|
32
|
+
* tests to assert the ordering invariant (specific before generic).
|
|
33
|
+
*/
|
|
34
|
+
export declare function listPatternTypes(): readonly string[];
|
|
35
|
+
//# sourceMappingURL=secret-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-patterns.d.ts","sourceRoot":"","sources":["../../src/messaging/secret-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAiCH;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO3C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAEpD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compiled-in secret-pattern redaction (spec § 3g).
|
|
3
|
+
*
|
|
4
|
+
* Defense-in-depth on the queued-text column of pending-relay.<agentId>.sqlite —
|
|
5
|
+
* if a stray secret reached an outbound message, we don't want it durably
|
|
6
|
+
* persisted on disk. The pattern list is shipped in source (NOT a writable
|
|
7
|
+
* config file) so adding a new provider requires a code review, not an
|
|
8
|
+
* operator config edit.
|
|
9
|
+
*
|
|
10
|
+
* Patterns are conservative — we'd rather under-redact than nuke a normal
|
|
11
|
+
* message that happens to contain a token-shaped substring. They're not a
|
|
12
|
+
* substitute for agents not putting secrets in user messages in the first
|
|
13
|
+
* place; that contract is upstream of this file.
|
|
14
|
+
*
|
|
15
|
+
* Each pattern emits `<redacted:type>` so downstream tooling can audit
|
|
16
|
+
* what was substituted (count by type, etc.).
|
|
17
|
+
*/
|
|
18
|
+
// Order matters — more specific patterns first so we don't shadow them with
|
|
19
|
+
// the generic Bearer match. All patterns use the global flag so multiple
|
|
20
|
+
// occurrences are caught in a single string.
|
|
21
|
+
const PATTERNS = [
|
|
22
|
+
// Anthropic API keys (must come before generic sk- match)
|
|
23
|
+
{ type: 'anthropic-key', re: /\bsk-ant-(?:api|admin)\d{0,2}-[A-Za-z0-9_-]{40,}\b/g },
|
|
24
|
+
// OpenAI sk- keys (legacy and project)
|
|
25
|
+
{ type: 'openai-key', re: /\bsk-(?:proj-)?[A-Za-z0-9_-]{32,}\b/g },
|
|
26
|
+
// AWS Access Key IDs (AKIA / ASIA prefix, 16 alnum after)
|
|
27
|
+
{ type: 'aws-access-key-id', re: /\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/g },
|
|
28
|
+
// GitHub fine-grained PATs
|
|
29
|
+
{ type: 'github-pat-fine-grained', re: /\bgithub_pat_[A-Za-z0-9_]{20,}\b/g },
|
|
30
|
+
// GitHub classic PATs (ghp_, gho_, ghu_, ghs_, ghr_)
|
|
31
|
+
{ type: 'github-pat', re: /\bgh[pousr]_[A-Za-z0-9]{30,}\b/g },
|
|
32
|
+
// Slack bot tokens (xoxb-) and user tokens (xoxp-)
|
|
33
|
+
{ type: 'slack-token', re: /\bxox[bpars]-[A-Za-z0-9-]{10,}\b/g },
|
|
34
|
+
// Telegraph access tokens (hex 60+ chars on a known prefix path)
|
|
35
|
+
// Telegraph uses 60-char access_token but they're indistinguishable from
|
|
36
|
+
// many hex strings without context, so we only catch the explicit
|
|
37
|
+
// assignment pattern `access_token=` or `accessToken: "..."`.
|
|
38
|
+
{ type: 'telegraph-token', re: /\b(?:access_token|accessToken)["'\s:=]+([a-f0-9]{50,})\b/gi },
|
|
39
|
+
// Bearer tokens — last so the more specific patterns above get first
|
|
40
|
+
// dibs on the substring. Match the full `Bearer <token>` form.
|
|
41
|
+
{ type: 'bearer-token', re: /\bBearer\s+[A-Za-z0-9._\-+/]{16,}=*/g },
|
|
42
|
+
];
|
|
43
|
+
/**
|
|
44
|
+
* Redact known-secret substrings from `text`. Each match is replaced with
|
|
45
|
+
* `<redacted:<type>>`.
|
|
46
|
+
*
|
|
47
|
+
* Returns the redacted string. If `text` contains no matches, the returned
|
|
48
|
+
* string is identical to the input (referentially, when possible).
|
|
49
|
+
*
|
|
50
|
+
* Performance note: regex iteration is linear in input length × pattern
|
|
51
|
+
* count. The text column is capped at 32KB by Layer 2; even with 8 patterns,
|
|
52
|
+
* worst-case wall time is well under a millisecond.
|
|
53
|
+
*/
|
|
54
|
+
export function redact(text) {
|
|
55
|
+
if (!text)
|
|
56
|
+
return text;
|
|
57
|
+
let out = text;
|
|
58
|
+
for (const { type, re } of PATTERNS) {
|
|
59
|
+
out = out.replace(re, () => `<redacted:${type}>`);
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Test introspection — returns the pattern types in order. Used by unit
|
|
65
|
+
* tests to assert the ordering invariant (specific before generic).
|
|
66
|
+
*/
|
|
67
|
+
export function listPatternTypes() {
|
|
68
|
+
return PATTERNS.map((p) => p.type);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=secret-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-patterns.js","sourceRoot":"","sources":["../../src/messaging/secret-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,4EAA4E;AAC5E,yEAAyE;AACzE,6CAA6C;AAC7C,MAAM,QAAQ,GAAiC;IAC7C,0DAA0D;IAC1D,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,qDAAqD,EAAE;IACpF,uCAAuC;IACvC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,sCAAsC,EAAE;IAClE,0DAA0D;IAC1D,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,gCAAgC,EAAE;IACnE,2BAA2B;IAC3B,EAAE,IAAI,EAAE,yBAAyB,EAAE,EAAE,EAAE,mCAAmC,EAAE;IAC5E,qDAAqD;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,iCAAiC,EAAE;IAC7D,mDAAmD;IACnD,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,mCAAmC,EAAE;IAChE,iEAAiE;IACjE,yEAAyE;IACzE,kEAAkE;IAClE,8DAA8D;IAC9D,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,4DAA4D,EAAE;IAC7F,qEAAqE;IACrE,+DAA+D;IAC/D,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,sCAAsC,EAAE;CACrE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC;QACpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedAuthStore.d.ts","sourceRoot":"","sources":["../../../src/messaging/shared/EncryptedAuthStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"EncryptedAuthStore.d.ts","sourceRoot":"","sources":["../../../src/messaging/shared/EncryptedAuthStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkBH,MAAM,WAAW,yBAAyB;IACxC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,0GAA0G;IAC1G,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AASD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAUpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0BpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUzD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAS1E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAe1F;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzF,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC,CAAC,CAuED"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import crypto from 'node:crypto';
|
|
12
12
|
import fs from 'node:fs';
|
|
13
13
|
import path from 'node:path';
|
|
14
|
+
import { SafeFsExecutor } from '../../core/SafeFsExecutor.js';
|
|
14
15
|
const ALGORITHM = 'aes-256-gcm';
|
|
15
16
|
const KEY_LENGTH = 32;
|
|
16
17
|
const IV_LENGTH = 16;
|
|
@@ -106,9 +107,8 @@ export function writeAuthFile(filePath, content, passphrase) {
|
|
|
106
107
|
fs.renameSync(tmpPath, filePath);
|
|
107
108
|
}
|
|
108
109
|
catch (err) {
|
|
109
|
-
// safe-git-allow: incremental-migration
|
|
110
110
|
try {
|
|
111
|
-
|
|
111
|
+
SafeFsExecutor.safeUnlinkSync(tmpPath, { operation: 'src/messaging/shared/EncryptedAuthStore.ts:135' });
|
|
112
112
|
}
|
|
113
113
|
catch { /* ignore */ }
|
|
114
114
|
throw err;
|
|
@@ -177,9 +177,8 @@ export async function useEncryptedAuthState(authDir, passphrase) {
|
|
|
177
177
|
writeFile(file, value);
|
|
178
178
|
}
|
|
179
179
|
else {
|
|
180
|
-
// safe-git-allow: incremental-migration
|
|
181
180
|
try {
|
|
182
|
-
|
|
181
|
+
SafeFsExecutor.safeUnlinkSync(file, { operation: 'src/messaging/shared/EncryptedAuthStore.ts:211' });
|
|
183
182
|
}
|
|
184
183
|
catch { /* ignore */ }
|
|
185
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedAuthStore.js","sourceRoot":"","sources":["../../../src/messaging/shared/EncryptedAuthStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"EncryptedAuthStore.js","sourceRoot":"","sources":["../../../src/messaging/shared/EncryptedAuthStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageLogger.d.ts","sourceRoot":"","sources":["../../../src/messaging/shared/MessageLogger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"MessageLogger.d.ts","sourceRoot":"","sources":["../../../src/messaging/shared/MessageLogger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEhE,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,eAAe,CAAwC;gBAEnD,MAAM,EAAE,mBAAmB;IAWvC;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,GAAG,IAAI;IAIlE;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAkB7B;;OAEG;IACH,MAAM,CAAC,IAAI,GAAE;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,QAAQ,EAAE;IA+BnB;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,QAAQ,EAAE;IAqB7E;;OAEG;IACH,SAAS,CAAC,KAAK,SAAM,GAAG,QAAQ,EAAE;IAiBlC;;OAEG;IACH,QAAQ,IAAI;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAU5E;;;OAGG;IACH,OAAO,CAAC,WAAW;CAuBpB"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import fs from 'node:fs';
|
|
9
9
|
import path from 'node:path';
|
|
10
|
+
import { SafeFsExecutor } from '../../core/SafeFsExecutor.js';
|
|
10
11
|
export class MessageLogger {
|
|
11
12
|
logPath;
|
|
12
13
|
maxLines;
|
|
@@ -156,9 +157,8 @@ export class MessageLogger {
|
|
|
156
157
|
fs.renameSync(tmpPath, this.logPath);
|
|
157
158
|
}
|
|
158
159
|
catch (rotateErr) {
|
|
159
|
-
// safe-git-allow: incremental-migration
|
|
160
160
|
try {
|
|
161
|
-
|
|
161
|
+
SafeFsExecutor.safeUnlinkSync(tmpPath, { operation: 'src/messaging/shared/MessageLogger.ts:217' });
|
|
162
162
|
}
|
|
163
163
|
catch { /* ignore */ }
|
|
164
164
|
throw rotateErr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageLogger.js","sourceRoot":"","sources":["../../../src/messaging/shared/MessageLogger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageLogger.js","sourceRoot":"","sources":["../../../src/messaging/shared/MessageLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivacyConsent.d.ts","sourceRoot":"","sources":["../../../src/messaging/shared/PrivacyConsent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"PrivacyConsent.d.ts","sourceRoot":"","sources":["../../../src/messaging/shared/PrivacyConsent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAA0B;gBAEpC,OAAO,EAAE,qBAAqB;IAS1C,2DAA2D;IAC3D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAMnC,oDAAoD;IACpD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIzC,sDAAsD;IACtD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC;;;OAGG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI;IAqBhF,gCAAgC;IAChC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASlC,oDAAoD;IACpD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAOtC,sCAAsC;IACtC,iBAAiB,IAAI,MAAM;IAI3B,+BAA+B;IAC/B,UAAU,IAAI,aAAa,EAAE;IAI7B,wBAAwB;IACxB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,WAAW;CAapB"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import fs from 'node:fs';
|
|
12
12
|
import path from 'node:path';
|
|
13
|
+
import { SafeFsExecutor } from '../../core/SafeFsExecutor.js';
|
|
13
14
|
const DEFAULT_CONSENT_MESSAGE = [
|
|
14
15
|
'Hi! Before we chat, I need to let you know:',
|
|
15
16
|
'',
|
|
@@ -121,9 +122,8 @@ export class PrivacyConsent {
|
|
|
121
122
|
fs.renameSync(tmpPath, this.consentPath);
|
|
122
123
|
}
|
|
123
124
|
catch (err) {
|
|
124
|
-
// safe-git-allow: incremental-migration
|
|
125
125
|
try {
|
|
126
|
-
|
|
126
|
+
SafeFsExecutor.safeUnlinkSync(tmpPath, { operation: 'src/messaging/shared/PrivacyConsent.ts:161' });
|
|
127
127
|
}
|
|
128
128
|
catch { /* ignore */ }
|
|
129
129
|
throw err;
|