@iflow-mcp/jkheadley-instar 0.26.2
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/.claude/hooks/free-text-guard.sh +117 -0
- package/.claude/settings.json +201 -0
- package/.claude/skills/autonomous/hooks/autonomous-stop-hook.sh +234 -0
- package/.claude/skills/autonomous/hooks/hooks.json +15 -0
- package/.claude/skills/autonomous/scripts/setup-autonomous.sh +166 -0
- package/.claude/skills/autonomous/skill.md +254 -0
- package/.claude/skills/secret-setup/skill.md +210 -0
- package/.claude/skills/setup-wizard/skill.md +2132 -0
- package/LICENSE +21 -0
- package/README.md +214 -0
- package/dashboard/favicon.png +0 -0
- package/dashboard/index.html +5740 -0
- package/dashboard/logo.png +0 -0
- package/dist/cli.d.ts +21 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1782 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/backup.d.ts +16 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +84 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/discovery.d.ts +158 -0
- package/dist/commands/discovery.d.ts.map +1 -0
- package/dist/commands/discovery.js +532 -0
- package/dist/commands/discovery.js.map +1 -0
- package/dist/commands/git.d.ts +25 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +152 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts +52 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +4211 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/intent.d.ts +30 -0
- package/dist/commands/intent.d.ts.map +1 -0
- package/dist/commands/intent.js +349 -0
- package/dist/commands/intent.js.map +1 -0
- package/dist/commands/job.d.ts +42 -0
- package/dist/commands/job.d.ts.map +1 -0
- package/dist/commands/job.js +202 -0
- package/dist/commands/job.js.map +1 -0
- package/dist/commands/knowledge.d.ts +25 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +127 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/machine.d.ts +53 -0
- package/dist/commands/machine.d.ts.map +1 -0
- package/dist/commands/machine.js +680 -0
- package/dist/commands/machine.js.map +1 -0
- package/dist/commands/memory.d.ts +24 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +163 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/nuke.d.ts +22 -0
- package/dist/commands/nuke.d.ts.map +1 -0
- package/dist/commands/nuke.js +216 -0
- package/dist/commands/nuke.js.map +1 -0
- package/dist/commands/org.d.ts +16 -0
- package/dist/commands/org.d.ts.map +1 -0
- package/dist/commands/org.js +69 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/playbook.d.ts +91 -0
- package/dist/commands/playbook.d.ts.map +1 -0
- package/dist/commands/playbook.js +1016 -0
- package/dist/commands/playbook.js.map +1 -0
- package/dist/commands/reflect.d.ts +52 -0
- package/dist/commands/reflect.d.ts.map +1 -0
- package/dist/commands/reflect.js +316 -0
- package/dist/commands/reflect.js.map +1 -0
- package/dist/commands/relationship.d.ts +17 -0
- package/dist/commands/relationship.d.ts.map +1 -0
- package/dist/commands/relationship.js +156 -0
- package/dist/commands/relationship.js.map +1 -0
- package/dist/commands/relay.d.ts +26 -0
- package/dist/commands/relay.d.ts.map +1 -0
- package/dist/commands/relay.js +121 -0
- package/dist/commands/relay.js.map +1 -0
- package/dist/commands/review.d.ts +18 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +193 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/semantic.d.ts +37 -0
- package/dist/commands/semantic.d.ts.map +1 -0
- package/dist/commands/semantic.js +198 -0
- package/dist/commands/semantic.js.map +1 -0
- package/dist/commands/server.d.ts +37 -0
- package/dist/commands/server.d.ts.map +1 -0
- package/dist/commands/server.js +4875 -0
- package/dist/commands/server.js.map +1 -0
- package/dist/commands/setup.d.ts +63 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +1235 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/slack-cli.d.ts +16 -0
- package/dist/commands/slack-cli.d.ts.map +1 -0
- package/dist/commands/slack-cli.js +259 -0
- package/dist/commands/slack-cli.js.map +1 -0
- package/dist/commands/status.d.ts +11 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +120 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/user.d.ts +17 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +53 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/commands/whatsapp.d.ts +31 -0
- package/dist/commands/whatsapp.d.ts.map +1 -0
- package/dist/commands/whatsapp.js +408 -0
- package/dist/commands/whatsapp.js.map +1 -0
- package/dist/config/ConfigDefaults.d.ts +40 -0
- package/dist/config/ConfigDefaults.d.ts.map +1 -0
- package/dist/config/ConfigDefaults.js +175 -0
- package/dist/config/ConfigDefaults.js.map +1 -0
- package/dist/config/LiveConfig.d.ts +97 -0
- package/dist/config/LiveConfig.d.ts.map +1 -0
- package/dist/config/LiveConfig.js +220 -0
- package/dist/config/LiveConfig.js.map +1 -0
- package/dist/core/AccessControl.d.ts +91 -0
- package/dist/core/AccessControl.d.ts.map +1 -0
- package/dist/core/AccessControl.js +184 -0
- package/dist/core/AccessControl.js.map +1 -0
- package/dist/core/AdaptationValidator.d.ts +44 -0
- package/dist/core/AdaptationValidator.d.ts.map +1 -0
- package/dist/core/AdaptationValidator.js +132 -0
- package/dist/core/AdaptationValidator.js.map +1 -0
- package/dist/core/AdaptiveTrust.d.ts +188 -0
- package/dist/core/AdaptiveTrust.d.ts.map +1 -0
- package/dist/core/AdaptiveTrust.js +354 -0
- package/dist/core/AdaptiveTrust.js.map +1 -0
- package/dist/core/AgentBus.d.ts +168 -0
- package/dist/core/AgentBus.d.ts.map +1 -0
- package/dist/core/AgentBus.js +369 -0
- package/dist/core/AgentBus.js.map +1 -0
- package/dist/core/AgentConnector.d.ts +76 -0
- package/dist/core/AgentConnector.d.ts.map +1 -0
- package/dist/core/AgentConnector.js +324 -0
- package/dist/core/AgentConnector.js.map +1 -0
- package/dist/core/AgentRegistry.d.ts +107 -0
- package/dist/core/AgentRegistry.d.ts.map +1 -0
- package/dist/core/AgentRegistry.js +569 -0
- package/dist/core/AgentRegistry.js.map +1 -0
- package/dist/core/AnthropicIntelligenceProvider.d.ts +24 -0
- package/dist/core/AnthropicIntelligenceProvider.d.ts.map +1 -0
- package/dist/core/AnthropicIntelligenceProvider.js +63 -0
- package/dist/core/AnthropicIntelligenceProvider.js.map +1 -0
- package/dist/core/AuditTrail.d.ts +207 -0
- package/dist/core/AuditTrail.d.ts.map +1 -0
- package/dist/core/AuditTrail.js +271 -0
- package/dist/core/AuditTrail.js.map +1 -0
- package/dist/core/AutoApprover.d.ts +63 -0
- package/dist/core/AutoApprover.d.ts.map +1 -0
- package/dist/core/AutoApprover.js +151 -0
- package/dist/core/AutoApprover.js.map +1 -0
- package/dist/core/AutoDispatcher.d.ts +170 -0
- package/dist/core/AutoDispatcher.d.ts.map +1 -0
- package/dist/core/AutoDispatcher.js +647 -0
- package/dist/core/AutoDispatcher.js.map +1 -0
- package/dist/core/AutoUpdater.d.ts +193 -0
- package/dist/core/AutoUpdater.d.ts.map +1 -0
- package/dist/core/AutoUpdater.js +648 -0
- package/dist/core/AutoUpdater.js.map +1 -0
- package/dist/core/AutonomousEvolution.d.ts +168 -0
- package/dist/core/AutonomousEvolution.d.ts.map +1 -0
- package/dist/core/AutonomousEvolution.js +384 -0
- package/dist/core/AutonomousEvolution.js.map +1 -0
- package/dist/core/AutonomyProfileManager.d.ts +108 -0
- package/dist/core/AutonomyProfileManager.d.ts.map +1 -0
- package/dist/core/AutonomyProfileManager.js +323 -0
- package/dist/core/AutonomyProfileManager.js.map +1 -0
- package/dist/core/AutonomySkill.d.ts +98 -0
- package/dist/core/AutonomySkill.d.ts.map +1 -0
- package/dist/core/AutonomySkill.js +497 -0
- package/dist/core/AutonomySkill.js.map +1 -0
- package/dist/core/BackupManager.d.ts +66 -0
- package/dist/core/BackupManager.d.ts.map +1 -0
- package/dist/core/BackupManager.js +266 -0
- package/dist/core/BackupManager.js.map +1 -0
- package/dist/core/BitwardenProvider.d.ts +85 -0
- package/dist/core/BitwardenProvider.d.ts.map +1 -0
- package/dist/core/BitwardenProvider.js +437 -0
- package/dist/core/BitwardenProvider.js.map +1 -0
- package/dist/core/BlockerLearningLoop.d.ts +99 -0
- package/dist/core/BlockerLearningLoop.d.ts.map +1 -0
- package/dist/core/BlockerLearningLoop.js +205 -0
- package/dist/core/BlockerLearningLoop.js.map +1 -0
- package/dist/core/BranchManager.d.ts +165 -0
- package/dist/core/BranchManager.d.ts.map +1 -0
- package/dist/core/BranchManager.js +413 -0
- package/dist/core/BranchManager.js.map +1 -0
- package/dist/core/CaffeinateManager.d.ts +50 -0
- package/dist/core/CaffeinateManager.d.ts.map +1 -0
- package/dist/core/CaffeinateManager.js +189 -0
- package/dist/core/CaffeinateManager.js.map +1 -0
- package/dist/core/CallbackRegistry.d.ts +67 -0
- package/dist/core/CallbackRegistry.d.ts.map +1 -0
- package/dist/core/CallbackRegistry.js +145 -0
- package/dist/core/CallbackRegistry.js.map +1 -0
- package/dist/core/CanonicalState.d.ts +132 -0
- package/dist/core/CanonicalState.d.ts.map +1 -0
- package/dist/core/CanonicalState.js +297 -0
- package/dist/core/CanonicalState.js.map +1 -0
- package/dist/core/CapabilityMapper.d.ts +192 -0
- package/dist/core/CapabilityMapper.d.ts.map +1 -0
- package/dist/core/CapabilityMapper.js +958 -0
- package/dist/core/CapabilityMapper.js.map +1 -0
- package/dist/core/CapabilityRegistryGenerator.d.ts +72 -0
- package/dist/core/CapabilityRegistryGenerator.d.ts.map +1 -0
- package/dist/core/CapabilityRegistryGenerator.js +310 -0
- package/dist/core/CapabilityRegistryGenerator.js.map +1 -0
- package/dist/core/ClaudeCliIntelligenceProvider.d.ts +21 -0
- package/dist/core/ClaudeCliIntelligenceProvider.d.ts.map +1 -0
- package/dist/core/ClaudeCliIntelligenceProvider.js +60 -0
- package/dist/core/ClaudeCliIntelligenceProvider.js.map +1 -0
- package/dist/core/CoherenceGate.d.ts +198 -0
- package/dist/core/CoherenceGate.d.ts.map +1 -0
- package/dist/core/CoherenceGate.js +986 -0
- package/dist/core/CoherenceGate.js.map +1 -0
- package/dist/core/CoherenceReviewer.d.ts +104 -0
- package/dist/core/CoherenceReviewer.d.ts.map +1 -0
- package/dist/core/CoherenceReviewer.js +185 -0
- package/dist/core/CoherenceReviewer.js.map +1 -0
- package/dist/core/Config.d.ts +32 -0
- package/dist/core/Config.d.ts.map +1 -0
- package/dist/core/Config.js +332 -0
- package/dist/core/Config.js.map +1 -0
- package/dist/core/ConflictNegotiator.d.ts +167 -0
- package/dist/core/ConflictNegotiator.d.ts.map +1 -0
- package/dist/core/ConflictNegotiator.js +280 -0
- package/dist/core/ConflictNegotiator.js.map +1 -0
- package/dist/core/ContextHierarchy.d.ts +102 -0
- package/dist/core/ContextHierarchy.d.ts.map +1 -0
- package/dist/core/ContextHierarchy.js +594 -0
- package/dist/core/ContextHierarchy.js.map +1 -0
- package/dist/core/ContextSnapshotBuilder.d.ts +80 -0
- package/dist/core/ContextSnapshotBuilder.d.ts.map +1 -0
- package/dist/core/ContextSnapshotBuilder.js +342 -0
- package/dist/core/ContextSnapshotBuilder.js.map +1 -0
- package/dist/core/ContextualEvaluator.d.ts +103 -0
- package/dist/core/ContextualEvaluator.d.ts.map +1 -0
- package/dist/core/ContextualEvaluator.js +389 -0
- package/dist/core/ContextualEvaluator.js.map +1 -0
- package/dist/core/ConvergenceChecker.d.ts +24 -0
- package/dist/core/ConvergenceChecker.d.ts.map +1 -0
- package/dist/core/ConvergenceChecker.js +113 -0
- package/dist/core/ConvergenceChecker.js.map +1 -0
- package/dist/core/CoordinationProtocol.d.ts +198 -0
- package/dist/core/CoordinationProtocol.d.ts.map +1 -0
- package/dist/core/CoordinationProtocol.js +363 -0
- package/dist/core/CoordinationProtocol.js.map +1 -0
- package/dist/core/CustomReviewerLoader.d.ts +45 -0
- package/dist/core/CustomReviewerLoader.d.ts.map +1 -0
- package/dist/core/CustomReviewerLoader.js +153 -0
- package/dist/core/CustomReviewerLoader.js.map +1 -0
- package/dist/core/DecisionJournal.d.ts +56 -0
- package/dist/core/DecisionJournal.d.ts.map +1 -0
- package/dist/core/DecisionJournal.js +132 -0
- package/dist/core/DecisionJournal.js.map +1 -0
- package/dist/core/DeferredDispatchTracker.d.ts +91 -0
- package/dist/core/DeferredDispatchTracker.d.ts.map +1 -0
- package/dist/core/DeferredDispatchTracker.js +213 -0
- package/dist/core/DeferredDispatchTracker.js.map +1 -0
- package/dist/core/DiscoveryEvaluator.d.ts +131 -0
- package/dist/core/DiscoveryEvaluator.d.ts.map +1 -0
- package/dist/core/DiscoveryEvaluator.js +377 -0
- package/dist/core/DiscoveryEvaluator.js.map +1 -0
- package/dist/core/DispatchDecisionJournal.d.ts +83 -0
- package/dist/core/DispatchDecisionJournal.d.ts.map +1 -0
- package/dist/core/DispatchDecisionJournal.js +181 -0
- package/dist/core/DispatchDecisionJournal.js.map +1 -0
- package/dist/core/DispatchExecutor.d.ts +127 -0
- package/dist/core/DispatchExecutor.d.ts.map +1 -0
- package/dist/core/DispatchExecutor.js +355 -0
- package/dist/core/DispatchExecutor.js.map +1 -0
- package/dist/core/DispatchManager.d.ts +200 -0
- package/dist/core/DispatchManager.d.ts.map +1 -0
- package/dist/core/DispatchManager.js +524 -0
- package/dist/core/DispatchManager.js.map +1 -0
- package/dist/core/DispatchScopeEnforcer.d.ts +57 -0
- package/dist/core/DispatchScopeEnforcer.d.ts.map +1 -0
- package/dist/core/DispatchScopeEnforcer.js +173 -0
- package/dist/core/DispatchScopeEnforcer.js.map +1 -0
- package/dist/core/DispatchVerifier.d.ts +76 -0
- package/dist/core/DispatchVerifier.d.ts.map +1 -0
- package/dist/core/DispatchVerifier.js +128 -0
- package/dist/core/DispatchVerifier.js.map +1 -0
- package/dist/core/EvolutionManager.d.ts +223 -0
- package/dist/core/EvolutionManager.d.ts.map +1 -0
- package/dist/core/EvolutionManager.js +630 -0
- package/dist/core/EvolutionManager.js.map +1 -0
- package/dist/core/ExecutionJournal.d.ts +101 -0
- package/dist/core/ExecutionJournal.d.ts.map +1 -0
- package/dist/core/ExecutionJournal.js +301 -0
- package/dist/core/ExecutionJournal.js.map +1 -0
- package/dist/core/ExternalOperationGate.d.ts +204 -0
- package/dist/core/ExternalOperationGate.d.ts.map +1 -0
- package/dist/core/ExternalOperationGate.js +413 -0
- package/dist/core/ExternalOperationGate.js.map +1 -0
- package/dist/core/FeatureDefinitions.d.ts +14 -0
- package/dist/core/FeatureDefinitions.d.ts.map +1 -0
- package/dist/core/FeatureDefinitions.js +374 -0
- package/dist/core/FeatureDefinitions.js.map +1 -0
- package/dist/core/FeatureRegistry.d.ts +337 -0
- package/dist/core/FeatureRegistry.d.ts.map +1 -0
- package/dist/core/FeatureRegistry.js +863 -0
- package/dist/core/FeatureRegistry.js.map +1 -0
- package/dist/core/FeedbackManager.d.ts +69 -0
- package/dist/core/FeedbackManager.d.ts.map +1 -0
- package/dist/core/FeedbackManager.js +284 -0
- package/dist/core/FeedbackManager.js.map +1 -0
- package/dist/core/FileClassifier.d.ts +74 -0
- package/dist/core/FileClassifier.d.ts.map +1 -0
- package/dist/core/FileClassifier.js +377 -0
- package/dist/core/FileClassifier.js.map +1 -0
- package/dist/core/ForegroundRestartWatcher.d.ts +55 -0
- package/dist/core/ForegroundRestartWatcher.d.ts.map +1 -0
- package/dist/core/ForegroundRestartWatcher.js +116 -0
- package/dist/core/ForegroundRestartWatcher.js.map +1 -0
- package/dist/core/GitStateManager.d.ts +78 -0
- package/dist/core/GitStateManager.d.ts.map +1 -0
- package/dist/core/GitStateManager.js +366 -0
- package/dist/core/GitStateManager.js.map +1 -0
- package/dist/core/GitSync.d.ts +199 -0
- package/dist/core/GitSync.d.ts.map +1 -0
- package/dist/core/GitSync.js +955 -0
- package/dist/core/GitSync.js.map +1 -0
- package/dist/core/GlobalInstallCleanup.d.ts +23 -0
- package/dist/core/GlobalInstallCleanup.d.ts.map +1 -0
- package/dist/core/GlobalInstallCleanup.js +130 -0
- package/dist/core/GlobalInstallCleanup.js.map +1 -0
- package/dist/core/GlobalSecretStore.d.ts +112 -0
- package/dist/core/GlobalSecretStore.d.ts.map +1 -0
- package/dist/core/GlobalSecretStore.js +396 -0
- package/dist/core/GlobalSecretStore.js.map +1 -0
- package/dist/core/HandoffManager.d.ts +163 -0
- package/dist/core/HandoffManager.d.ts.map +1 -0
- package/dist/core/HandoffManager.js +370 -0
- package/dist/core/HandoffManager.js.map +1 -0
- package/dist/core/HeartbeatManager.d.ts +120 -0
- package/dist/core/HeartbeatManager.d.ts.map +1 -0
- package/dist/core/HeartbeatManager.js +240 -0
- package/dist/core/HeartbeatManager.js.map +1 -0
- package/dist/core/InputGuard.d.ts +98 -0
- package/dist/core/InputGuard.d.ts.map +1 -0
- package/dist/core/InputGuard.js +316 -0
- package/dist/core/InputGuard.js.map +1 -0
- package/dist/core/IntentDriftDetector.d.ts +100 -0
- package/dist/core/IntentDriftDetector.d.ts.map +1 -0
- package/dist/core/IntentDriftDetector.js +325 -0
- package/dist/core/IntentDriftDetector.js.map +1 -0
- package/dist/core/JobReflector.d.ts +81 -0
- package/dist/core/JobReflector.d.ts.map +1 -0
- package/dist/core/JobReflector.js +244 -0
- package/dist/core/JobReflector.js.map +1 -0
- package/dist/core/LLMConflictResolver.d.ts +132 -0
- package/dist/core/LLMConflictResolver.d.ts.map +1 -0
- package/dist/core/LLMConflictResolver.js +372 -0
- package/dist/core/LLMConflictResolver.js.map +1 -0
- package/dist/core/LedgerAuth.d.ts +99 -0
- package/dist/core/LedgerAuth.d.ts.map +1 -0
- package/dist/core/LedgerAuth.js +215 -0
- package/dist/core/LedgerAuth.js.map +1 -0
- package/dist/core/MachineIdentity.d.ts +196 -0
- package/dist/core/MachineIdentity.d.ts.map +1 -0
- package/dist/core/MachineIdentity.js +476 -0
- package/dist/core/MachineIdentity.js.map +1 -0
- package/dist/core/MessageSentinel.d.ts +142 -0
- package/dist/core/MessageSentinel.d.ts.map +1 -0
- package/dist/core/MessageSentinel.js +426 -0
- package/dist/core/MessageSentinel.js.map +1 -0
- package/dist/core/MigrationProvenance.d.ts +62 -0
- package/dist/core/MigrationProvenance.d.ts.map +1 -0
- package/dist/core/MigrationProvenance.js +183 -0
- package/dist/core/MigrationProvenance.js.map +1 -0
- package/dist/core/MultiMachineCoordinator.d.ts +106 -0
- package/dist/core/MultiMachineCoordinator.d.ts.map +1 -0
- package/dist/core/MultiMachineCoordinator.js +311 -0
- package/dist/core/MultiMachineCoordinator.js.map +1 -0
- package/dist/core/NonceStore.d.ts +72 -0
- package/dist/core/NonceStore.d.ts.map +1 -0
- package/dist/core/NonceStore.js +163 -0
- package/dist/core/NonceStore.js.map +1 -0
- package/dist/core/OrgIntentManager.d.ts +58 -0
- package/dist/core/OrgIntentManager.d.ts.map +1 -0
- package/dist/core/OrgIntentManager.js +250 -0
- package/dist/core/OrgIntentManager.js.map +1 -0
- package/dist/core/OverlapGuard.d.ts +112 -0
- package/dist/core/OverlapGuard.d.ts.map +1 -0
- package/dist/core/OverlapGuard.js +241 -0
- package/dist/core/OverlapGuard.js.map +1 -0
- package/dist/core/PairingProtocol.d.ts +129 -0
- package/dist/core/PairingProtocol.d.ts.map +1 -0
- package/dist/core/PairingProtocol.js +265 -0
- package/dist/core/PairingProtocol.js.map +1 -0
- package/dist/core/PatternAnalyzer.d.ts +128 -0
- package/dist/core/PatternAnalyzer.d.ts.map +1 -0
- package/dist/core/PatternAnalyzer.js +388 -0
- package/dist/core/PatternAnalyzer.js.map +1 -0
- package/dist/core/PlatformActivityRegistry.d.ts +163 -0
- package/dist/core/PlatformActivityRegistry.d.ts.map +1 -0
- package/dist/core/PlatformActivityRegistry.js +307 -0
- package/dist/core/PlatformActivityRegistry.js.map +1 -0
- package/dist/core/PolicyEnforcementLayer.d.ts +63 -0
- package/dist/core/PolicyEnforcementLayer.d.ts.map +1 -0
- package/dist/core/PolicyEnforcementLayer.js +250 -0
- package/dist/core/PolicyEnforcementLayer.js.map +1 -0
- package/dist/core/PortRegistry.d.ts +9 -0
- package/dist/core/PortRegistry.d.ts.map +1 -0
- package/dist/core/PortRegistry.js +8 -0
- package/dist/core/PortRegistry.js.map +1 -0
- package/dist/core/PostUpdateMigrator.d.ts +170 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -0
- package/dist/core/PostUpdateMigrator.js +3674 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -0
- package/dist/core/Prerequisites.d.ts +37 -0
- package/dist/core/Prerequisites.d.ts.map +1 -0
- package/dist/core/Prerequisites.js +272 -0
- package/dist/core/Prerequisites.js.map +1 -0
- package/dist/core/ProcessIntegrity.d.ts +90 -0
- package/dist/core/ProcessIntegrity.d.ts.map +1 -0
- package/dist/core/ProcessIntegrity.js +119 -0
- package/dist/core/ProcessIntegrity.js.map +1 -0
- package/dist/core/ProjectMapper.d.ts +97 -0
- package/dist/core/ProjectMapper.d.ts.map +1 -0
- package/dist/core/ProjectMapper.js +370 -0
- package/dist/core/ProjectMapper.js.map +1 -0
- package/dist/core/PromptGuard.d.ts +121 -0
- package/dist/core/PromptGuard.d.ts.map +1 -0
- package/dist/core/PromptGuard.js +259 -0
- package/dist/core/PromptGuard.js.map +1 -0
- package/dist/core/RecipientResolver.d.ts +54 -0
- package/dist/core/RecipientResolver.d.ts.map +1 -0
- package/dist/core/RecipientResolver.js +143 -0
- package/dist/core/RecipientResolver.js.map +1 -0
- package/dist/core/ReflectionConsolidator.d.ts +73 -0
- package/dist/core/ReflectionConsolidator.d.ts.map +1 -0
- package/dist/core/ReflectionConsolidator.js +202 -0
- package/dist/core/ReflectionConsolidator.js.map +1 -0
- package/dist/core/RelationshipManager.d.ts +146 -0
- package/dist/core/RelationshipManager.d.ts.map +1 -0
- package/dist/core/RelationshipManager.js +736 -0
- package/dist/core/RelationshipManager.js.map +1 -0
- package/dist/core/RelevanceFilter.d.ts +61 -0
- package/dist/core/RelevanceFilter.d.ts.map +1 -0
- package/dist/core/RelevanceFilter.js +160 -0
- package/dist/core/RelevanceFilter.js.map +1 -0
- package/dist/core/ResearchRateLimiter.d.ts +76 -0
- package/dist/core/ResearchRateLimiter.d.ts.map +1 -0
- package/dist/core/ResearchRateLimiter.js +168 -0
- package/dist/core/ResearchRateLimiter.js.map +1 -0
- package/dist/core/ResumeValidator.d.ts +58 -0
- package/dist/core/ResumeValidator.d.ts.map +1 -0
- package/dist/core/ResumeValidator.js +195 -0
- package/dist/core/ResumeValidator.js.map +1 -0
- package/dist/core/ScopeCoherenceTracker.d.ts +87 -0
- package/dist/core/ScopeCoherenceTracker.d.ts.map +1 -0
- package/dist/core/ScopeCoherenceTracker.js +226 -0
- package/dist/core/ScopeCoherenceTracker.js.map +1 -0
- package/dist/core/ScopeVerifier.d.ts +122 -0
- package/dist/core/ScopeVerifier.d.ts.map +1 -0
- package/dist/core/ScopeVerifier.js +350 -0
- package/dist/core/ScopeVerifier.js.map +1 -0
- package/dist/core/SecretManager.d.ts +120 -0
- package/dist/core/SecretManager.d.ts.map +1 -0
- package/dist/core/SecretManager.js +324 -0
- package/dist/core/SecretManager.js.map +1 -0
- package/dist/core/SecretMigrator.d.ts +39 -0
- package/dist/core/SecretMigrator.d.ts.map +1 -0
- package/dist/core/SecretMigrator.js +182 -0
- package/dist/core/SecretMigrator.js.map +1 -0
- package/dist/core/SecretRedactor.d.ts +121 -0
- package/dist/core/SecretRedactor.d.ts.map +1 -0
- package/dist/core/SecretRedactor.js +309 -0
- package/dist/core/SecretRedactor.js.map +1 -0
- package/dist/core/SecretStore.d.ts +104 -0
- package/dist/core/SecretStore.d.ts.map +1 -0
- package/dist/core/SecretStore.js +405 -0
- package/dist/core/SecretStore.js.map +1 -0
- package/dist/core/SecurityLog.d.ts +58 -0
- package/dist/core/SecurityLog.d.ts.map +1 -0
- package/dist/core/SecurityLog.js +123 -0
- package/dist/core/SecurityLog.js.map +1 -0
- package/dist/core/SendGateway.d.ts +77 -0
- package/dist/core/SendGateway.d.ts.map +1 -0
- package/dist/core/SendGateway.js +181 -0
- package/dist/core/SendGateway.js.map +1 -0
- package/dist/core/SessionManager.d.ts +304 -0
- package/dist/core/SessionManager.d.ts.map +1 -0
- package/dist/core/SessionManager.js +1402 -0
- package/dist/core/SessionManager.js.map +1 -0
- package/dist/core/SleepWakeDetector.d.ts +37 -0
- package/dist/core/SleepWakeDetector.d.ts.map +1 -0
- package/dist/core/SleepWakeDetector.js +59 -0
- package/dist/core/SleepWakeDetector.js.map +1 -0
- package/dist/core/SoulManager.d.ts +107 -0
- package/dist/core/SoulManager.d.ts.map +1 -0
- package/dist/core/SoulManager.js +574 -0
- package/dist/core/SoulManager.js.map +1 -0
- package/dist/core/StaleProcessGuard.d.ts +113 -0
- package/dist/core/StaleProcessGuard.d.ts.map +1 -0
- package/dist/core/StaleProcessGuard.js +134 -0
- package/dist/core/StaleProcessGuard.js.map +1 -0
- package/dist/core/StateManager.d.ts +56 -0
- package/dist/core/StateManager.d.ts.map +1 -0
- package/dist/core/StateManager.js +266 -0
- package/dist/core/StateManager.js.map +1 -0
- package/dist/core/StateWriteAuthority.d.ts +101 -0
- package/dist/core/StateWriteAuthority.d.ts.map +1 -0
- package/dist/core/StateWriteAuthority.js +169 -0
- package/dist/core/StateWriteAuthority.js.map +1 -0
- package/dist/core/SurfacingTemplates.d.ts +63 -0
- package/dist/core/SurfacingTemplates.d.ts.map +1 -0
- package/dist/core/SurfacingTemplates.js +138 -0
- package/dist/core/SurfacingTemplates.js.map +1 -0
- package/dist/core/SyncOrchestrator.d.ts +308 -0
- package/dist/core/SyncOrchestrator.d.ts.map +1 -0
- package/dist/core/SyncOrchestrator.js +925 -0
- package/dist/core/SyncOrchestrator.js.map +1 -0
- package/dist/core/TemporalCoherenceChecker.d.ts +140 -0
- package/dist/core/TemporalCoherenceChecker.d.ts.map +1 -0
- package/dist/core/TemporalCoherenceChecker.js +375 -0
- package/dist/core/TemporalCoherenceChecker.js.map +1 -0
- package/dist/core/TopicClassifier.d.ts +54 -0
- package/dist/core/TopicClassifier.d.ts.map +1 -0
- package/dist/core/TopicClassifier.js +144 -0
- package/dist/core/TopicClassifier.js.map +1 -0
- package/dist/core/TopicResumeMap.d.ts +76 -0
- package/dist/core/TopicResumeMap.d.ts.map +1 -0
- package/dist/core/TopicResumeMap.js +252 -0
- package/dist/core/TopicResumeMap.js.map +1 -0
- package/dist/core/TrustElevationTracker.d.ts +178 -0
- package/dist/core/TrustElevationTracker.d.ts.map +1 -0
- package/dist/core/TrustElevationTracker.js +343 -0
- package/dist/core/TrustElevationTracker.js.map +1 -0
- package/dist/core/TrustRecovery.d.ts +109 -0
- package/dist/core/TrustRecovery.d.ts.map +1 -0
- package/dist/core/TrustRecovery.js +190 -0
- package/dist/core/TrustRecovery.js.map +1 -0
- package/dist/core/UpdateChecker.d.ts +108 -0
- package/dist/core/UpdateChecker.d.ts.map +1 -0
- package/dist/core/UpdateChecker.js +593 -0
- package/dist/core/UpdateChecker.js.map +1 -0
- package/dist/core/UpdateGate.d.ts +102 -0
- package/dist/core/UpdateGate.d.ts.map +1 -0
- package/dist/core/UpdateGate.js +149 -0
- package/dist/core/UpdateGate.js.map +1 -0
- package/dist/core/UpgradeGuideProcessor.d.ts +105 -0
- package/dist/core/UpgradeGuideProcessor.d.ts.map +1 -0
- package/dist/core/UpgradeGuideProcessor.js +278 -0
- package/dist/core/UpgradeGuideProcessor.js.map +1 -0
- package/dist/core/UpgradeNotifyManager.d.ts +98 -0
- package/dist/core/UpgradeNotifyManager.d.ts.map +1 -0
- package/dist/core/UpgradeNotifyManager.js +205 -0
- package/dist/core/UpgradeNotifyManager.js.map +1 -0
- package/dist/core/WorkLedger.d.ts +144 -0
- package/dist/core/WorkLedger.d.ts.map +1 -0
- package/dist/core/WorkLedger.js +246 -0
- package/dist/core/WorkLedger.js.map +1 -0
- package/dist/core/models.d.ts +70 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/models.js +110 -0
- package/dist/core/models.js.map +1 -0
- package/dist/core/reviewers/capability-accuracy.d.ts +13 -0
- package/dist/core/reviewers/capability-accuracy.d.ts.map +1 -0
- package/dist/core/reviewers/capability-accuracy.js +38 -0
- package/dist/core/reviewers/capability-accuracy.js.map +1 -0
- package/dist/core/reviewers/claim-provenance.d.ts +14 -0
- package/dist/core/reviewers/claim-provenance.d.ts.map +1 -0
- package/dist/core/reviewers/claim-provenance.js +50 -0
- package/dist/core/reviewers/claim-provenance.js.map +1 -0
- package/dist/core/reviewers/context-completeness.d.ts +13 -0
- package/dist/core/reviewers/context-completeness.d.ts.map +1 -0
- package/dist/core/reviewers/context-completeness.js +43 -0
- package/dist/core/reviewers/context-completeness.js.map +1 -0
- package/dist/core/reviewers/conversational-tone.d.ts +13 -0
- package/dist/core/reviewers/conversational-tone.d.ts.map +1 -0
- package/dist/core/reviewers/conversational-tone.js +55 -0
- package/dist/core/reviewers/conversational-tone.js.map +1 -0
- package/dist/core/reviewers/escalation-resolution.d.ts +56 -0
- package/dist/core/reviewers/escalation-resolution.d.ts.map +1 -0
- package/dist/core/reviewers/escalation-resolution.js +239 -0
- package/dist/core/reviewers/escalation-resolution.js.map +1 -0
- package/dist/core/reviewers/gate-reviewer.d.ts +26 -0
- package/dist/core/reviewers/gate-reviewer.d.ts.map +1 -0
- package/dist/core/reviewers/gate-reviewer.js +130 -0
- package/dist/core/reviewers/gate-reviewer.js.map +1 -0
- package/dist/core/reviewers/information-leakage.d.ts +21 -0
- package/dist/core/reviewers/information-leakage.d.ts.map +1 -0
- package/dist/core/reviewers/information-leakage.js +72 -0
- package/dist/core/reviewers/information-leakage.js.map +1 -0
- package/dist/core/reviewers/settling-detection.d.ts +13 -0
- package/dist/core/reviewers/settling-detection.d.ts.map +1 -0
- package/dist/core/reviewers/settling-detection.js +48 -0
- package/dist/core/reviewers/settling-detection.js.map +1 -0
- package/dist/core/reviewers/url-validity.d.ts +18 -0
- package/dist/core/reviewers/url-validity.d.ts.map +1 -0
- package/dist/core/reviewers/url-validity.js +60 -0
- package/dist/core/reviewers/url-validity.js.map +1 -0
- package/dist/core/reviewers/value-alignment.d.ts +14 -0
- package/dist/core/reviewers/value-alignment.d.ts.map +1 -0
- package/dist/core/reviewers/value-alignment.js +71 -0
- package/dist/core/reviewers/value-alignment.js.map +1 -0
- package/dist/core/types.d.ts +2159 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +20 -0
- package/dist/core/types.js.map +1 -0
- package/dist/data/http-hook-templates.d.ts +53 -0
- package/dist/data/http-hook-templates.d.ts.map +1 -0
- package/dist/data/http-hook-templates.js +64 -0
- package/dist/data/http-hook-templates.js.map +1 -0
- package/dist/index.d.ts +263 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +164 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/CoverageAuditor.d.ts +58 -0
- package/dist/knowledge/CoverageAuditor.d.ts.map +1 -0
- package/dist/knowledge/CoverageAuditor.js +153 -0
- package/dist/knowledge/CoverageAuditor.js.map +1 -0
- package/dist/knowledge/IntegrityManager.d.ts +46 -0
- package/dist/knowledge/IntegrityManager.d.ts.map +1 -0
- package/dist/knowledge/IntegrityManager.js +101 -0
- package/dist/knowledge/IntegrityManager.js.map +1 -0
- package/dist/knowledge/KnowledgeManager.d.ts +85 -0
- package/dist/knowledge/KnowledgeManager.d.ts.map +1 -0
- package/dist/knowledge/KnowledgeManager.js +194 -0
- package/dist/knowledge/KnowledgeManager.js.map +1 -0
- package/dist/knowledge/ProbeRegistry.d.ts +54 -0
- package/dist/knowledge/ProbeRegistry.d.ts.map +1 -0
- package/dist/knowledge/ProbeRegistry.js +119 -0
- package/dist/knowledge/ProbeRegistry.js.map +1 -0
- package/dist/knowledge/SelfKnowledgeTree.d.ts +108 -0
- package/dist/knowledge/SelfKnowledgeTree.d.ts.map +1 -0
- package/dist/knowledge/SelfKnowledgeTree.js +560 -0
- package/dist/knowledge/SelfKnowledgeTree.js.map +1 -0
- package/dist/knowledge/TreeGenerator.d.ts +57 -0
- package/dist/knowledge/TreeGenerator.d.ts.map +1 -0
- package/dist/knowledge/TreeGenerator.js +527 -0
- package/dist/knowledge/TreeGenerator.js.map +1 -0
- package/dist/knowledge/TreeSynthesis.d.ts +24 -0
- package/dist/knowledge/TreeSynthesis.d.ts.map +1 -0
- package/dist/knowledge/TreeSynthesis.js +61 -0
- package/dist/knowledge/TreeSynthesis.js.map +1 -0
- package/dist/knowledge/TreeTraversal.d.ts +93 -0
- package/dist/knowledge/TreeTraversal.d.ts.map +1 -0
- package/dist/knowledge/TreeTraversal.js +359 -0
- package/dist/knowledge/TreeTraversal.js.map +1 -0
- package/dist/knowledge/TreeTriage.d.ts +80 -0
- package/dist/knowledge/TreeTriage.d.ts.map +1 -0
- package/dist/knowledge/TreeTriage.js +413 -0
- package/dist/knowledge/TreeTriage.js.map +1 -0
- package/dist/knowledge/types.d.ts +183 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +28 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/lifeline/MessageQueue.d.ts +42 -0
- package/dist/lifeline/MessageQueue.d.ts.map +1 -0
- package/dist/lifeline/MessageQueue.js +63 -0
- package/dist/lifeline/MessageQueue.js.map +1 -0
- package/dist/lifeline/ServerSupervisor.d.ts +203 -0
- package/dist/lifeline/ServerSupervisor.d.ts.map +1 -0
- package/dist/lifeline/ServerSupervisor.js +1103 -0
- package/dist/lifeline/ServerSupervisor.js.map +1 -0
- package/dist/lifeline/SlackLifeline.d.ts +43 -0
- package/dist/lifeline/SlackLifeline.d.ts.map +1 -0
- package/dist/lifeline/SlackLifeline.js +227 -0
- package/dist/lifeline/SlackLifeline.js.map +1 -0
- package/dist/lifeline/TelegramLifeline.d.ts +180 -0
- package/dist/lifeline/TelegramLifeline.d.ts.map +1 -0
- package/dist/lifeline/TelegramLifeline.js +1533 -0
- package/dist/lifeline/TelegramLifeline.js.map +1 -0
- package/dist/memory/ActivityPartitioner.d.ts +67 -0
- package/dist/memory/ActivityPartitioner.d.ts.map +1 -0
- package/dist/memory/ActivityPartitioner.js +193 -0
- package/dist/memory/ActivityPartitioner.js.map +1 -0
- package/dist/memory/Chunker.d.ts +39 -0
- package/dist/memory/Chunker.d.ts.map +1 -0
- package/dist/memory/Chunker.js +154 -0
- package/dist/memory/Chunker.js.map +1 -0
- package/dist/memory/EmbeddingProvider.d.ts +82 -0
- package/dist/memory/EmbeddingProvider.d.ts.map +1 -0
- package/dist/memory/EmbeddingProvider.js +168 -0
- package/dist/memory/EmbeddingProvider.js.map +1 -0
- package/dist/memory/EpisodicMemory.d.ts +141 -0
- package/dist/memory/EpisodicMemory.d.ts.map +1 -0
- package/dist/memory/EpisodicMemory.js +303 -0
- package/dist/memory/EpisodicMemory.js.map +1 -0
- package/dist/memory/MemoryExporter.d.ts +82 -0
- package/dist/memory/MemoryExporter.d.ts.map +1 -0
- package/dist/memory/MemoryExporter.js +233 -0
- package/dist/memory/MemoryExporter.js.map +1 -0
- package/dist/memory/MemoryIndex.d.ts +76 -0
- package/dist/memory/MemoryIndex.d.ts.map +1 -0
- package/dist/memory/MemoryIndex.js +413 -0
- package/dist/memory/MemoryIndex.js.map +1 -0
- package/dist/memory/MemoryMigrator.d.ts +103 -0
- package/dist/memory/MemoryMigrator.d.ts.map +1 -0
- package/dist/memory/MemoryMigrator.js +510 -0
- package/dist/memory/MemoryMigrator.js.map +1 -0
- package/dist/memory/SemanticMemory.d.ts +255 -0
- package/dist/memory/SemanticMemory.d.ts.map +1 -0
- package/dist/memory/SemanticMemory.js +1130 -0
- package/dist/memory/SemanticMemory.js.map +1 -0
- package/dist/memory/TopicMemory.d.ts +227 -0
- package/dist/memory/TopicMemory.d.ts.map +1 -0
- package/dist/memory/TopicMemory.js +731 -0
- package/dist/memory/TopicMemory.js.map +1 -0
- package/dist/memory/TopicSummarizer.d.ts +69 -0
- package/dist/memory/TopicSummarizer.d.ts.map +1 -0
- package/dist/memory/TopicSummarizer.js +163 -0
- package/dist/memory/TopicSummarizer.js.map +1 -0
- package/dist/memory/VectorSearch.d.ts +80 -0
- package/dist/memory/VectorSearch.d.ts.map +1 -0
- package/dist/memory/VectorSearch.js +148 -0
- package/dist/memory/VectorSearch.js.map +1 -0
- package/dist/memory/WorkingMemoryAssembler.d.ts +122 -0
- package/dist/memory/WorkingMemoryAssembler.d.ts.map +1 -0
- package/dist/memory/WorkingMemoryAssembler.js +406 -0
- package/dist/memory/WorkingMemoryAssembler.js.map +1 -0
- package/dist/messaging/AdapterRegistry.d.ts +27 -0
- package/dist/messaging/AdapterRegistry.d.ts.map +1 -0
- package/dist/messaging/AdapterRegistry.js +40 -0
- package/dist/messaging/AdapterRegistry.js.map +1 -0
- package/dist/messaging/AgentTokenManager.d.ts +86 -0
- package/dist/messaging/AgentTokenManager.d.ts.map +1 -0
- package/dist/messaging/AgentTokenManager.js +213 -0
- package/dist/messaging/AgentTokenManager.js.map +1 -0
- package/dist/messaging/DeliveryRetryManager.d.ts +47 -0
- package/dist/messaging/DeliveryRetryManager.d.ts.map +1 -0
- package/dist/messaging/DeliveryRetryManager.js +201 -0
- package/dist/messaging/DeliveryRetryManager.js.map +1 -0
- package/dist/messaging/DropPickup.d.ts +37 -0
- package/dist/messaging/DropPickup.d.ts.map +1 -0
- package/dist/messaging/DropPickup.js +120 -0
- package/dist/messaging/DropPickup.js.map +1 -0
- package/dist/messaging/GitSyncTransport.d.ts +120 -0
- package/dist/messaging/GitSyncTransport.d.ts.map +1 -0
- package/dist/messaging/GitSyncTransport.js +296 -0
- package/dist/messaging/GitSyncTransport.js.map +1 -0
- package/dist/messaging/MessageDelivery.d.ts +27 -0
- package/dist/messaging/MessageDelivery.d.ts.map +1 -0
- package/dist/messaging/MessageDelivery.js +90 -0
- package/dist/messaging/MessageDelivery.js.map +1 -0
- package/dist/messaging/MessageFormatter.d.ts +30 -0
- package/dist/messaging/MessageFormatter.d.ts.map +1 -0
- package/dist/messaging/MessageFormatter.js +97 -0
- package/dist/messaging/MessageFormatter.js.map +1 -0
- package/dist/messaging/MessageRouter.d.ts +157 -0
- package/dist/messaging/MessageRouter.d.ts.map +1 -0
- package/dist/messaging/MessageRouter.js +657 -0
- package/dist/messaging/MessageRouter.js.map +1 -0
- package/dist/messaging/MessageStore.d.ts +52 -0
- package/dist/messaging/MessageStore.d.ts.map +1 -0
- package/dist/messaging/MessageStore.js +363 -0
- package/dist/messaging/MessageStore.js.map +1 -0
- package/dist/messaging/NotificationBatcher.d.ts +95 -0
- package/dist/messaging/NotificationBatcher.d.ts.map +1 -0
- package/dist/messaging/NotificationBatcher.js +253 -0
- package/dist/messaging/NotificationBatcher.js.map +1 -0
- package/dist/messaging/SessionSummarySentinel.d.ts +104 -0
- package/dist/messaging/SessionSummarySentinel.d.ts.map +1 -0
- package/dist/messaging/SessionSummarySentinel.js +386 -0
- package/dist/messaging/SessionSummarySentinel.js.map +1 -0
- package/dist/messaging/SpawnRequestManager.d.ts +88 -0
- package/dist/messaging/SpawnRequestManager.d.ts.map +1 -0
- package/dist/messaging/SpawnRequestManager.js +159 -0
- package/dist/messaging/SpawnRequestManager.js.map +1 -0
- package/dist/messaging/TelegramAdapter.d.ts +636 -0
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -0
- package/dist/messaging/TelegramAdapter.js +3434 -0
- package/dist/messaging/TelegramAdapter.js.map +1 -0
- package/dist/messaging/TopicContentValidator.d.ts +81 -0
- package/dist/messaging/TopicContentValidator.d.ts.map +1 -0
- package/dist/messaging/TopicContentValidator.js +113 -0
- package/dist/messaging/TopicContentValidator.js.map +1 -0
- package/dist/messaging/WhatsAppAdapter.d.ts +224 -0
- package/dist/messaging/WhatsAppAdapter.d.ts.map +1 -0
- package/dist/messaging/WhatsAppAdapter.js +736 -0
- package/dist/messaging/WhatsAppAdapter.js.map +1 -0
- package/dist/messaging/backends/BaileysBackend.d.ts +74 -0
- package/dist/messaging/backends/BaileysBackend.d.ts.map +1 -0
- package/dist/messaging/backends/BaileysBackend.js +481 -0
- package/dist/messaging/backends/BaileysBackend.js.map +1 -0
- package/dist/messaging/backends/BusinessApiBackend.d.ts +173 -0
- package/dist/messaging/backends/BusinessApiBackend.d.ts.map +1 -0
- package/dist/messaging/backends/BusinessApiBackend.js +269 -0
- package/dist/messaging/backends/BusinessApiBackend.js.map +1 -0
- package/dist/messaging/backends/WhatsAppWebhookRoutes.d.ts +26 -0
- package/dist/messaging/backends/WhatsAppWebhookRoutes.d.ts.map +1 -0
- package/dist/messaging/backends/WhatsAppWebhookRoutes.js +50 -0
- package/dist/messaging/backends/WhatsAppWebhookRoutes.js.map +1 -0
- package/dist/messaging/shared/AuthGate.d.ts +102 -0
- package/dist/messaging/shared/AuthGate.d.ts.map +1 -0
- package/dist/messaging/shared/AuthGate.js +159 -0
- package/dist/messaging/shared/AuthGate.js.map +1 -0
- package/dist/messaging/shared/CommandRouter.d.ts +84 -0
- package/dist/messaging/shared/CommandRouter.d.ts.map +1 -0
- package/dist/messaging/shared/CommandRouter.js +145 -0
- package/dist/messaging/shared/CommandRouter.js.map +1 -0
- package/dist/messaging/shared/CrossPlatformAlerts.d.ts +67 -0
- package/dist/messaging/shared/CrossPlatformAlerts.d.ts.map +1 -0
- package/dist/messaging/shared/CrossPlatformAlerts.js +134 -0
- package/dist/messaging/shared/CrossPlatformAlerts.js.map +1 -0
- package/dist/messaging/shared/EncryptedAuthStore.d.ts +51 -0
- package/dist/messaging/shared/EncryptedAuthStore.d.ts.map +1 -0
- package/dist/messaging/shared/EncryptedAuthStore.js +194 -0
- package/dist/messaging/shared/EncryptedAuthStore.js.map +1 -0
- package/dist/messaging/shared/FeatureFlags.d.ts +21 -0
- package/dist/messaging/shared/FeatureFlags.d.ts.map +1 -0
- package/dist/messaging/shared/FeatureFlags.js +21 -0
- package/dist/messaging/shared/FeatureFlags.js.map +1 -0
- package/dist/messaging/shared/MessageBridge.d.ts +70 -0
- package/dist/messaging/shared/MessageBridge.d.ts.map +1 -0
- package/dist/messaging/shared/MessageBridge.js +178 -0
- package/dist/messaging/shared/MessageBridge.js.map +1 -0
- package/dist/messaging/shared/MessageLogger.d.ts +94 -0
- package/dist/messaging/shared/MessageLogger.d.ts.map +1 -0
- package/dist/messaging/shared/MessageLogger.js +173 -0
- package/dist/messaging/shared/MessageLogger.js.map +1 -0
- package/dist/messaging/shared/MessagingEventBus.d.ts +149 -0
- package/dist/messaging/shared/MessagingEventBus.d.ts.map +1 -0
- package/dist/messaging/shared/MessagingEventBus.js +111 -0
- package/dist/messaging/shared/MessagingEventBus.js.map +1 -0
- package/dist/messaging/shared/PhoneUtils.d.ts +44 -0
- package/dist/messaging/shared/PhoneUtils.d.ts.map +1 -0
- package/dist/messaging/shared/PhoneUtils.js +110 -0
- package/dist/messaging/shared/PhoneUtils.js.map +1 -0
- package/dist/messaging/shared/PrivacyConsent.d.ts +61 -0
- package/dist/messaging/shared/PrivacyConsent.d.ts.map +1 -0
- package/dist/messaging/shared/PrivacyConsent.js +132 -0
- package/dist/messaging/shared/PrivacyConsent.js.map +1 -0
- package/dist/messaging/shared/SessionChannelRegistry.d.ts +48 -0
- package/dist/messaging/shared/SessionChannelRegistry.d.ts.map +1 -0
- package/dist/messaging/shared/SessionChannelRegistry.js +144 -0
- package/dist/messaging/shared/SessionChannelRegistry.js.map +1 -0
- package/dist/messaging/shared/SmartChunker.d.ts +16 -0
- package/dist/messaging/shared/SmartChunker.d.ts.map +1 -0
- package/dist/messaging/shared/SmartChunker.js +100 -0
- package/dist/messaging/shared/SmartChunker.js.map +1 -0
- package/dist/messaging/shared/StallDetector.d.ts +85 -0
- package/dist/messaging/shared/StallDetector.d.ts.map +1 -0
- package/dist/messaging/shared/StallDetector.js +225 -0
- package/dist/messaging/shared/StallDetector.js.map +1 -0
- package/dist/messaging/shared/index.d.ts +22 -0
- package/dist/messaging/shared/index.d.ts.map +1 -0
- package/dist/messaging/shared/index.js +13 -0
- package/dist/messaging/shared/index.js.map +1 -0
- package/dist/messaging/slack/ChannelManager.d.ts +36 -0
- package/dist/messaging/slack/ChannelManager.d.ts.map +1 -0
- package/dist/messaging/slack/ChannelManager.js +100 -0
- package/dist/messaging/slack/ChannelManager.js.map +1 -0
- package/dist/messaging/slack/FileHandler.d.ts +30 -0
- package/dist/messaging/slack/FileHandler.d.ts.map +1 -0
- package/dist/messaging/slack/FileHandler.js +87 -0
- package/dist/messaging/slack/FileHandler.js.map +1 -0
- package/dist/messaging/slack/RingBuffer.d.ts +22 -0
- package/dist/messaging/slack/RingBuffer.d.ts.map +1 -0
- package/dist/messaging/slack/RingBuffer.js +48 -0
- package/dist/messaging/slack/RingBuffer.js.map +1 -0
- package/dist/messaging/slack/SlackAdapter.d.ts +283 -0
- package/dist/messaging/slack/SlackAdapter.d.ts.map +1 -0
- package/dist/messaging/slack/SlackAdapter.js +1524 -0
- package/dist/messaging/slack/SlackAdapter.js.map +1 -0
- package/dist/messaging/slack/SlackApiClient.d.ts +51 -0
- package/dist/messaging/slack/SlackApiClient.d.ts.map +1 -0
- package/dist/messaging/slack/SlackApiClient.js +94 -0
- package/dist/messaging/slack/SlackApiClient.js.map +1 -0
- package/dist/messaging/slack/SocketModeClient.d.ts +44 -0
- package/dist/messaging/slack/SocketModeClient.d.ts.map +1 -0
- package/dist/messaging/slack/SocketModeClient.js +209 -0
- package/dist/messaging/slack/SocketModeClient.js.map +1 -0
- package/dist/messaging/slack/index.d.ts +12 -0
- package/dist/messaging/slack/index.d.ts.map +1 -0
- package/dist/messaging/slack/index.js +15 -0
- package/dist/messaging/slack/index.js.map +1 -0
- package/dist/messaging/slack/sanitize.d.ts +39 -0
- package/dist/messaging/slack/sanitize.d.ts.map +1 -0
- package/dist/messaging/slack/sanitize.js +71 -0
- package/dist/messaging/slack/sanitize.js.map +1 -0
- package/dist/messaging/slack/types.d.ts +186 -0
- package/dist/messaging/slack/types.d.ts.map +1 -0
- package/dist/messaging/slack/types.js +54 -0
- package/dist/messaging/slack/types.js.map +1 -0
- package/dist/messaging/types.d.ts +400 -0
- package/dist/messaging/types.d.ts.map +1 -0
- package/dist/messaging/types.js +89 -0
- package/dist/messaging/types.js.map +1 -0
- package/dist/monitoring/AccountSwitcher.d.ts +61 -0
- package/dist/monitoring/AccountSwitcher.d.ts.map +1 -0
- package/dist/monitoring/AccountSwitcher.js +196 -0
- package/dist/monitoring/AccountSwitcher.js.map +1 -0
- package/dist/monitoring/CoherenceMonitor.d.ts +133 -0
- package/dist/monitoring/CoherenceMonitor.d.ts.map +1 -0
- package/dist/monitoring/CoherenceMonitor.js +550 -0
- package/dist/monitoring/CoherenceMonitor.js.map +1 -0
- package/dist/monitoring/CommitmentSentinel.d.ts +57 -0
- package/dist/monitoring/CommitmentSentinel.d.ts.map +1 -0
- package/dist/monitoring/CommitmentSentinel.js +251 -0
- package/dist/monitoring/CommitmentSentinel.js.map +1 -0
- package/dist/monitoring/CommitmentTracker.d.ts +186 -0
- package/dist/monitoring/CommitmentTracker.d.ts.map +1 -0
- package/dist/monitoring/CommitmentTracker.js +522 -0
- package/dist/monitoring/CommitmentTracker.js.map +1 -0
- package/dist/monitoring/CredentialProvider.d.ts +84 -0
- package/dist/monitoring/CredentialProvider.d.ts.map +1 -0
- package/dist/monitoring/CredentialProvider.js +196 -0
- package/dist/monitoring/CredentialProvider.js.map +1 -0
- package/dist/monitoring/DegradationReporter.d.ts +123 -0
- package/dist/monitoring/DegradationReporter.d.ts.map +1 -0
- package/dist/monitoring/DegradationReporter.js +241 -0
- package/dist/monitoring/DegradationReporter.js.map +1 -0
- package/dist/monitoring/FeedbackAnomalyDetector.d.ts +51 -0
- package/dist/monitoring/FeedbackAnomalyDetector.d.ts.map +1 -0
- package/dist/monitoring/FeedbackAnomalyDetector.js +120 -0
- package/dist/monitoring/FeedbackAnomalyDetector.js.map +1 -0
- package/dist/monitoring/HealthChecker.d.ts +45 -0
- package/dist/monitoring/HealthChecker.d.ts.map +1 -0
- package/dist/monitoring/HealthChecker.js +219 -0
- package/dist/monitoring/HealthChecker.js.map +1 -0
- package/dist/monitoring/HomeostasisMonitor.d.ts +102 -0
- package/dist/monitoring/HomeostasisMonitor.d.ts.map +1 -0
- package/dist/monitoring/HomeostasisMonitor.js +185 -0
- package/dist/monitoring/HomeostasisMonitor.js.map +1 -0
- package/dist/monitoring/HookEventReceiver.d.ts +132 -0
- package/dist/monitoring/HookEventReceiver.d.ts.map +1 -0
- package/dist/monitoring/HookEventReceiver.js +209 -0
- package/dist/monitoring/HookEventReceiver.js.map +1 -0
- package/dist/monitoring/InputClassifier.d.ts +68 -0
- package/dist/monitoring/InputClassifier.d.ts.map +1 -0
- package/dist/monitoring/InputClassifier.js +243 -0
- package/dist/monitoring/InputClassifier.js.map +1 -0
- package/dist/monitoring/InstructionsVerifier.d.ts +76 -0
- package/dist/monitoring/InstructionsVerifier.d.ts.map +1 -0
- package/dist/monitoring/InstructionsVerifier.js +116 -0
- package/dist/monitoring/InstructionsVerifier.js.map +1 -0
- package/dist/monitoring/MemoryPressureMonitor.d.ts +107 -0
- package/dist/monitoring/MemoryPressureMonitor.d.ts.map +1 -0
- package/dist/monitoring/MemoryPressureMonitor.js +329 -0
- package/dist/monitoring/MemoryPressureMonitor.js.map +1 -0
- package/dist/monitoring/OrphanProcessReaper.d.ts +125 -0
- package/dist/monitoring/OrphanProcessReaper.d.ts.map +1 -0
- package/dist/monitoring/OrphanProcessReaper.js +476 -0
- package/dist/monitoring/OrphanProcessReaper.js.map +1 -0
- package/dist/monitoring/PresenceProxy.d.ts +167 -0
- package/dist/monitoring/PresenceProxy.d.ts.map +1 -0
- package/dist/monitoring/PresenceProxy.js +972 -0
- package/dist/monitoring/PresenceProxy.js.map +1 -0
- package/dist/monitoring/PromptGate.d.ts +91 -0
- package/dist/monitoring/PromptGate.d.ts.map +1 -0
- package/dist/monitoring/PromptGate.js +411 -0
- package/dist/monitoring/PromptGate.js.map +1 -0
- package/dist/monitoring/QuotaCollector.d.ts +267 -0
- package/dist/monitoring/QuotaCollector.d.ts.map +1 -0
- package/dist/monitoring/QuotaCollector.js +790 -0
- package/dist/monitoring/QuotaCollector.js.map +1 -0
- package/dist/monitoring/QuotaExhaustionDetector.d.ts +21 -0
- package/dist/monitoring/QuotaExhaustionDetector.d.ts.map +1 -0
- package/dist/monitoring/QuotaExhaustionDetector.js +136 -0
- package/dist/monitoring/QuotaExhaustionDetector.js.map +1 -0
- package/dist/monitoring/QuotaManager.d.ts +191 -0
- package/dist/monitoring/QuotaManager.d.ts.map +1 -0
- package/dist/monitoring/QuotaManager.js +575 -0
- package/dist/monitoring/QuotaManager.js.map +1 -0
- package/dist/monitoring/QuotaNotifier.d.ts +38 -0
- package/dist/monitoring/QuotaNotifier.d.ts.map +1 -0
- package/dist/monitoring/QuotaNotifier.js +144 -0
- package/dist/monitoring/QuotaNotifier.js.map +1 -0
- package/dist/monitoring/QuotaTracker.d.ts +92 -0
- package/dist/monitoring/QuotaTracker.d.ts.map +1 -0
- package/dist/monitoring/QuotaTracker.js +239 -0
- package/dist/monitoring/QuotaTracker.js.map +1 -0
- package/dist/monitoring/ReflectionMetrics.d.ts +97 -0
- package/dist/monitoring/ReflectionMetrics.d.ts.map +1 -0
- package/dist/monitoring/ReflectionMetrics.js +170 -0
- package/dist/monitoring/ReflectionMetrics.js.map +1 -0
- package/dist/monitoring/SessionActivitySentinel.d.ts +95 -0
- package/dist/monitoring/SessionActivitySentinel.d.ts.map +1 -0
- package/dist/monitoring/SessionActivitySentinel.js +391 -0
- package/dist/monitoring/SessionActivitySentinel.js.map +1 -0
- package/dist/monitoring/SessionCredentialManager.d.ts +56 -0
- package/dist/monitoring/SessionCredentialManager.d.ts.map +1 -0
- package/dist/monitoring/SessionCredentialManager.js +91 -0
- package/dist/monitoring/SessionCredentialManager.js.map +1 -0
- package/dist/monitoring/SessionMigrator.d.ts +234 -0
- package/dist/monitoring/SessionMigrator.d.ts.map +1 -0
- package/dist/monitoring/SessionMigrator.js +604 -0
- package/dist/monitoring/SessionMigrator.js.map +1 -0
- package/dist/monitoring/SessionMonitor.d.ts +102 -0
- package/dist/monitoring/SessionMonitor.d.ts.map +1 -0
- package/dist/monitoring/SessionMonitor.js +238 -0
- package/dist/monitoring/SessionMonitor.js.map +1 -0
- package/dist/monitoring/SessionRecovery.d.ts +129 -0
- package/dist/monitoring/SessionRecovery.d.ts.map +1 -0
- package/dist/monitoring/SessionRecovery.js +496 -0
- package/dist/monitoring/SessionRecovery.js.map +1 -0
- package/dist/monitoring/SessionWatchdog.d.ts +138 -0
- package/dist/monitoring/SessionWatchdog.d.ts.map +1 -0
- package/dist/monitoring/SessionWatchdog.js +549 -0
- package/dist/monitoring/SessionWatchdog.js.map +1 -0
- package/dist/monitoring/StallTriageNurse.d.ts +96 -0
- package/dist/monitoring/StallTriageNurse.d.ts.map +1 -0
- package/dist/monitoring/StallTriageNurse.js +711 -0
- package/dist/monitoring/StallTriageNurse.js.map +1 -0
- package/dist/monitoring/StallTriageNurse.types.d.ts +124 -0
- package/dist/monitoring/StallTriageNurse.types.d.ts.map +1 -0
- package/dist/monitoring/StallTriageNurse.types.js +5 -0
- package/dist/monitoring/StallTriageNurse.types.js.map +1 -0
- package/dist/monitoring/SubagentTracker.d.ts +86 -0
- package/dist/monitoring/SubagentTracker.d.ts.map +1 -0
- package/dist/monitoring/SubagentTracker.js +199 -0
- package/dist/monitoring/SubagentTracker.js.map +1 -0
- package/dist/monitoring/SystemReviewer.d.ts +243 -0
- package/dist/monitoring/SystemReviewer.d.ts.map +1 -0
- package/dist/monitoring/SystemReviewer.js +697 -0
- package/dist/monitoring/SystemReviewer.js.map +1 -0
- package/dist/monitoring/TelemetryAuth.d.ts +64 -0
- package/dist/monitoring/TelemetryAuth.d.ts.map +1 -0
- package/dist/monitoring/TelemetryAuth.js +141 -0
- package/dist/monitoring/TelemetryAuth.js.map +1 -0
- package/dist/monitoring/TelemetryCollector.d.ts +95 -0
- package/dist/monitoring/TelemetryCollector.d.ts.map +1 -0
- package/dist/monitoring/TelemetryCollector.js +326 -0
- package/dist/monitoring/TelemetryCollector.js.map +1 -0
- package/dist/monitoring/TelemetryHeartbeat.d.ts +160 -0
- package/dist/monitoring/TelemetryHeartbeat.d.ts.map +1 -0
- package/dist/monitoring/TelemetryHeartbeat.js +450 -0
- package/dist/monitoring/TelemetryHeartbeat.js.map +1 -0
- package/dist/monitoring/TriageOrchestrator.d.ts +217 -0
- package/dist/monitoring/TriageOrchestrator.d.ts.map +1 -0
- package/dist/monitoring/TriageOrchestrator.js +801 -0
- package/dist/monitoring/TriageOrchestrator.js.map +1 -0
- package/dist/monitoring/WorktreeMonitor.d.ts +124 -0
- package/dist/monitoring/WorktreeMonitor.d.ts.map +1 -0
- package/dist/monitoring/WorktreeMonitor.js +379 -0
- package/dist/monitoring/WorktreeMonitor.js.map +1 -0
- package/dist/monitoring/crash-detector.d.ts +50 -0
- package/dist/monitoring/crash-detector.d.ts.map +1 -0
- package/dist/monitoring/crash-detector.js +224 -0
- package/dist/monitoring/crash-detector.js.map +1 -0
- package/dist/monitoring/jsonl-truncator.d.ts +44 -0
- package/dist/monitoring/jsonl-truncator.d.ts.map +1 -0
- package/dist/monitoring/jsonl-truncator.js +224 -0
- package/dist/monitoring/jsonl-truncator.js.map +1 -0
- package/dist/monitoring/probes/LifelineProbe.d.ts +38 -0
- package/dist/monitoring/probes/LifelineProbe.d.ts.map +1 -0
- package/dist/monitoring/probes/LifelineProbe.js +285 -0
- package/dist/monitoring/probes/LifelineProbe.js.map +1 -0
- package/dist/monitoring/probes/MessagingProbe.d.ts +23 -0
- package/dist/monitoring/probes/MessagingProbe.d.ts.map +1 -0
- package/dist/monitoring/probes/MessagingProbe.js +214 -0
- package/dist/monitoring/probes/MessagingProbe.js.map +1 -0
- package/dist/monitoring/probes/PlatformProbe.d.ts +15 -0
- package/dist/monitoring/probes/PlatformProbe.d.ts.map +1 -0
- package/dist/monitoring/probes/PlatformProbe.js +222 -0
- package/dist/monitoring/probes/PlatformProbe.js.map +1 -0
- package/dist/monitoring/probes/SchedulerProbe.d.ts +33 -0
- package/dist/monitoring/probes/SchedulerProbe.d.ts.map +1 -0
- package/dist/monitoring/probes/SchedulerProbe.js +196 -0
- package/dist/monitoring/probes/SchedulerProbe.js.map +1 -0
- package/dist/monitoring/probes/SessionProbe.d.ts +28 -0
- package/dist/monitoring/probes/SessionProbe.d.ts.map +1 -0
- package/dist/monitoring/probes/SessionProbe.js +234 -0
- package/dist/monitoring/probes/SessionProbe.js.map +1 -0
- package/dist/monitoring/stall-detector.d.ts +34 -0
- package/dist/monitoring/stall-detector.d.ts.map +1 -0
- package/dist/monitoring/stall-detector.js +151 -0
- package/dist/monitoring/stall-detector.js.map +1 -0
- package/dist/paste/PasteManager.d.ts +154 -0
- package/dist/paste/PasteManager.d.ts.map +1 -0
- package/dist/paste/PasteManager.js +524 -0
- package/dist/paste/PasteManager.js.map +1 -0
- package/dist/paste/TruncationDetector.d.ts +51 -0
- package/dist/paste/TruncationDetector.d.ts.map +1 -0
- package/dist/paste/TruncationDetector.js +220 -0
- package/dist/paste/TruncationDetector.js.map +1 -0
- package/dist/privacy/OutputPrivacyRouter.d.ts +65 -0
- package/dist/privacy/OutputPrivacyRouter.d.ts.map +1 -0
- package/dist/privacy/OutputPrivacyRouter.js +156 -0
- package/dist/privacy/OutputPrivacyRouter.js.map +1 -0
- package/dist/publishing/PrivateViewer.d.ts +63 -0
- package/dist/publishing/PrivateViewer.d.ts.map +1 -0
- package/dist/publishing/PrivateViewer.js +398 -0
- package/dist/publishing/PrivateViewer.js.map +1 -0
- package/dist/publishing/TelegraphService.d.ts +137 -0
- package/dist/publishing/TelegraphService.d.ts.map +1 -0
- package/dist/publishing/TelegraphService.js +410 -0
- package/dist/publishing/TelegraphService.js.map +1 -0
- package/dist/scaffold/bootstrap.d.ts +21 -0
- package/dist/scaffold/bootstrap.d.ts.map +1 -0
- package/dist/scaffold/bootstrap.js +125 -0
- package/dist/scaffold/bootstrap.js.map +1 -0
- package/dist/scaffold/templates.d.ts +47 -0
- package/dist/scaffold/templates.d.ts.map +1 -0
- package/dist/scaffold/templates.js +1506 -0
- package/dist/scaffold/templates.js.map +1 -0
- package/dist/scheduler/IntegrationGate.d.ts +81 -0
- package/dist/scheduler/IntegrationGate.d.ts.map +1 -0
- package/dist/scheduler/IntegrationGate.js +242 -0
- package/dist/scheduler/IntegrationGate.js.map +1 -0
- package/dist/scheduler/JobClaimManager.d.ts +137 -0
- package/dist/scheduler/JobClaimManager.d.ts.map +1 -0
- package/dist/scheduler/JobClaimManager.js +283 -0
- package/dist/scheduler/JobClaimManager.js.map +1 -0
- package/dist/scheduler/JobLoader.d.ts +28 -0
- package/dist/scheduler/JobLoader.d.ts.map +1 -0
- package/dist/scheduler/JobLoader.js +269 -0
- package/dist/scheduler/JobLoader.js.map +1 -0
- package/dist/scheduler/JobRunHistory.d.ts +180 -0
- package/dist/scheduler/JobRunHistory.d.ts.map +1 -0
- package/dist/scheduler/JobRunHistory.js +349 -0
- package/dist/scheduler/JobRunHistory.js.map +1 -0
- package/dist/scheduler/JobScheduler.d.ts +244 -0
- package/dist/scheduler/JobScheduler.d.ts.map +1 -0
- package/dist/scheduler/JobScheduler.js +1085 -0
- package/dist/scheduler/JobScheduler.js.map +1 -0
- package/dist/scheduler/SkipLedger.d.ts +65 -0
- package/dist/scheduler/SkipLedger.d.ts.map +1 -0
- package/dist/scheduler/SkipLedger.js +179 -0
- package/dist/scheduler/SkipLedger.js.map +1 -0
- package/dist/security/LLMSanitizer.d.ts +65 -0
- package/dist/security/LLMSanitizer.d.ts.map +1 -0
- package/dist/security/LLMSanitizer.js +153 -0
- package/dist/security/LLMSanitizer.js.map +1 -0
- package/dist/security/ManifestIntegrity.d.ts +72 -0
- package/dist/security/ManifestIntegrity.d.ts.map +1 -0
- package/dist/security/ManifestIntegrity.js +159 -0
- package/dist/security/ManifestIntegrity.js.map +1 -0
- package/dist/server/AgentServer.d.ts +134 -0
- package/dist/server/AgentServer.d.ts.map +1 -0
- package/dist/server/AgentServer.js +307 -0
- package/dist/server/AgentServer.js.map +1 -0
- package/dist/server/SecretDrop.d.ts +133 -0
- package/dist/server/SecretDrop.d.ts.map +1 -0
- package/dist/server/SecretDrop.js +473 -0
- package/dist/server/SecretDrop.js.map +1 -0
- package/dist/server/WebSocketManager.d.ts +80 -0
- package/dist/server/WebSocketManager.d.ts.map +1 -0
- package/dist/server/WebSocketManager.js +367 -0
- package/dist/server/WebSocketManager.js.map +1 -0
- package/dist/server/fileRoutes.d.ts +19 -0
- package/dist/server/fileRoutes.d.ts.map +1 -0
- package/dist/server/fileRoutes.js +578 -0
- package/dist/server/fileRoutes.js.map +1 -0
- package/dist/server/machineAuth.d.ts +87 -0
- package/dist/server/machineAuth.d.ts.map +1 -0
- package/dist/server/machineAuth.js +188 -0
- package/dist/server/machineAuth.js.map +1 -0
- package/dist/server/machineRoutes.d.ts +49 -0
- package/dist/server/machineRoutes.d.ts.map +1 -0
- package/dist/server/machineRoutes.js +305 -0
- package/dist/server/machineRoutes.js.map +1 -0
- package/dist/server/middleware.d.ts +32 -0
- package/dist/server/middleware.d.ts.map +1 -0
- package/dist/server/middleware.js +202 -0
- package/dist/server/middleware.js.map +1 -0
- package/dist/server/routes.d.ts +132 -0
- package/dist/server/routes.d.ts.map +1 -0
- package/dist/server/routes.js +8124 -0
- package/dist/server/routes.js.map +1 -0
- package/dist/threadline/A2AGateway.d.ts +184 -0
- package/dist/threadline/A2AGateway.d.ts.map +1 -0
- package/dist/threadline/A2AGateway.js +438 -0
- package/dist/threadline/A2AGateway.js.map +1 -0
- package/dist/threadline/AgentCard.d.ts +116 -0
- package/dist/threadline/AgentCard.d.ts.map +1 -0
- package/dist/threadline/AgentCard.js +212 -0
- package/dist/threadline/AgentCard.js.map +1 -0
- package/dist/threadline/AgentDiscovery.d.ts +156 -0
- package/dist/threadline/AgentDiscovery.d.ts.map +1 -0
- package/dist/threadline/AgentDiscovery.js +390 -0
- package/dist/threadline/AgentDiscovery.js.map +1 -0
- package/dist/threadline/AgentTrustManager.d.ts +190 -0
- package/dist/threadline/AgentTrustManager.d.ts.map +1 -0
- package/dist/threadline/AgentTrustManager.js +526 -0
- package/dist/threadline/AgentTrustManager.js.map +1 -0
- package/dist/threadline/ApprovalQueue.d.ts +71 -0
- package/dist/threadline/ApprovalQueue.d.ts.map +1 -0
- package/dist/threadline/ApprovalQueue.js +154 -0
- package/dist/threadline/ApprovalQueue.js.map +1 -0
- package/dist/threadline/AutonomyGate.d.ts +130 -0
- package/dist/threadline/AutonomyGate.d.ts.map +1 -0
- package/dist/threadline/AutonomyGate.js +267 -0
- package/dist/threadline/AutonomyGate.js.map +1 -0
- package/dist/threadline/CircuitBreaker.d.ts +89 -0
- package/dist/threadline/CircuitBreaker.d.ts.map +1 -0
- package/dist/threadline/CircuitBreaker.js +238 -0
- package/dist/threadline/CircuitBreaker.js.map +1 -0
- package/dist/threadline/ComputeMeter.d.ts +114 -0
- package/dist/threadline/ComputeMeter.d.ts.map +1 -0
- package/dist/threadline/ComputeMeter.js +350 -0
- package/dist/threadline/ComputeMeter.js.map +1 -0
- package/dist/threadline/ContentClassifier.d.ts +83 -0
- package/dist/threadline/ContentClassifier.d.ts.map +1 -0
- package/dist/threadline/ContentClassifier.js +201 -0
- package/dist/threadline/ContentClassifier.js.map +1 -0
- package/dist/threadline/ContextThreadMap.d.ts +103 -0
- package/dist/threadline/ContextThreadMap.d.ts.map +1 -0
- package/dist/threadline/ContextThreadMap.js +279 -0
- package/dist/threadline/ContextThreadMap.js.map +1 -0
- package/dist/threadline/DNSVerifier.d.ts +48 -0
- package/dist/threadline/DNSVerifier.d.ts.map +1 -0
- package/dist/threadline/DNSVerifier.js +138 -0
- package/dist/threadline/DNSVerifier.js.map +1 -0
- package/dist/threadline/DigestCollector.d.ts +70 -0
- package/dist/threadline/DigestCollector.d.ts.map +1 -0
- package/dist/threadline/DigestCollector.js +146 -0
- package/dist/threadline/DigestCollector.js.map +1 -0
- package/dist/threadline/HandshakeManager.d.ts +130 -0
- package/dist/threadline/HandshakeManager.d.ts.map +1 -0
- package/dist/threadline/HandshakeManager.js +402 -0
- package/dist/threadline/HandshakeManager.js.map +1 -0
- package/dist/threadline/InboundMessageGate.d.ts +80 -0
- package/dist/threadline/InboundMessageGate.d.ts.map +1 -0
- package/dist/threadline/InboundMessageGate.js +241 -0
- package/dist/threadline/InboundMessageGate.js.map +1 -0
- package/dist/threadline/InvitationManager.d.ts +91 -0
- package/dist/threadline/InvitationManager.d.ts.map +1 -0
- package/dist/threadline/InvitationManager.js +228 -0
- package/dist/threadline/InvitationManager.js.map +1 -0
- package/dist/threadline/ListenerSessionManager.d.ts +147 -0
- package/dist/threadline/ListenerSessionManager.d.ts.map +1 -0
- package/dist/threadline/ListenerSessionManager.js +326 -0
- package/dist/threadline/ListenerSessionManager.js.map +1 -0
- package/dist/threadline/MCPAuth.d.ts +98 -0
- package/dist/threadline/MCPAuth.d.ts.map +1 -0
- package/dist/threadline/MCPAuth.js +228 -0
- package/dist/threadline/MCPAuth.js.map +1 -0
- package/dist/threadline/OpenClawBridge.d.ts +143 -0
- package/dist/threadline/OpenClawBridge.d.ts.map +1 -0
- package/dist/threadline/OpenClawBridge.js +336 -0
- package/dist/threadline/OpenClawBridge.js.map +1 -0
- package/dist/threadline/OpenClawSkillManifest.d.ts +47 -0
- package/dist/threadline/OpenClawSkillManifest.d.ts.map +1 -0
- package/dist/threadline/OpenClawSkillManifest.js +148 -0
- package/dist/threadline/OpenClawSkillManifest.js.map +1 -0
- package/dist/threadline/RateLimiter.d.ts +105 -0
- package/dist/threadline/RateLimiter.d.ts.map +1 -0
- package/dist/threadline/RateLimiter.js +236 -0
- package/dist/threadline/RateLimiter.js.map +1 -0
- package/dist/threadline/RelayGroundingPreamble.d.ts +48 -0
- package/dist/threadline/RelayGroundingPreamble.d.ts.map +1 -0
- package/dist/threadline/RelayGroundingPreamble.js +68 -0
- package/dist/threadline/RelayGroundingPreamble.js.map +1 -0
- package/dist/threadline/SessionLifecycle.d.ts +136 -0
- package/dist/threadline/SessionLifecycle.d.ts.map +1 -0
- package/dist/threadline/SessionLifecycle.js +317 -0
- package/dist/threadline/SessionLifecycle.js.map +1 -0
- package/dist/threadline/ThreadResumeMap.d.ts +128 -0
- package/dist/threadline/ThreadResumeMap.d.ts.map +1 -0
- package/dist/threadline/ThreadResumeMap.js +324 -0
- package/dist/threadline/ThreadResumeMap.js.map +1 -0
- package/dist/threadline/ThreadlineBootstrap.d.ts +68 -0
- package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -0
- package/dist/threadline/ThreadlineBootstrap.js +293 -0
- package/dist/threadline/ThreadlineBootstrap.js.map +1 -0
- package/dist/threadline/ThreadlineCrypto.d.ts +53 -0
- package/dist/threadline/ThreadlineCrypto.d.ts.map +1 -0
- package/dist/threadline/ThreadlineCrypto.js +123 -0
- package/dist/threadline/ThreadlineCrypto.js.map +1 -0
- package/dist/threadline/ThreadlineEndpoints.d.ts +35 -0
- package/dist/threadline/ThreadlineEndpoints.d.ts.map +1 -0
- package/dist/threadline/ThreadlineEndpoints.js +313 -0
- package/dist/threadline/ThreadlineEndpoints.js.map +1 -0
- package/dist/threadline/ThreadlineMCPServer.d.ts +165 -0
- package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -0
- package/dist/threadline/ThreadlineMCPServer.js +885 -0
- package/dist/threadline/ThreadlineMCPServer.js.map +1 -0
- package/dist/threadline/ThreadlineRouter.d.ts +105 -0
- package/dist/threadline/ThreadlineRouter.d.ts.map +1 -0
- package/dist/threadline/ThreadlineRouter.js +323 -0
- package/dist/threadline/ThreadlineRouter.js.map +1 -0
- package/dist/threadline/TrustBootstrap.d.ts +92 -0
- package/dist/threadline/TrustBootstrap.d.ts.map +1 -0
- package/dist/threadline/TrustBootstrap.js +256 -0
- package/dist/threadline/TrustBootstrap.js.map +1 -0
- package/dist/threadline/adapters/AutoGenTool.d.ts +42 -0
- package/dist/threadline/adapters/AutoGenTool.d.ts.map +1 -0
- package/dist/threadline/adapters/AutoGenTool.js +145 -0
- package/dist/threadline/adapters/AutoGenTool.js.map +1 -0
- package/dist/threadline/adapters/CrewAITool.d.ts +31 -0
- package/dist/threadline/adapters/CrewAITool.d.ts.map +1 -0
- package/dist/threadline/adapters/CrewAITool.js +112 -0
- package/dist/threadline/adapters/CrewAITool.js.map +1 -0
- package/dist/threadline/adapters/LangGraphTool.d.ts +48 -0
- package/dist/threadline/adapters/LangGraphTool.d.ts.map +1 -0
- package/dist/threadline/adapters/LangGraphTool.js +153 -0
- package/dist/threadline/adapters/LangGraphTool.js.map +1 -0
- package/dist/threadline/adapters/RESTServer.d.ts +74 -0
- package/dist/threadline/adapters/RESTServer.d.ts.map +1 -0
- package/dist/threadline/adapters/RESTServer.js +291 -0
- package/dist/threadline/adapters/RESTServer.js.map +1 -0
- package/dist/threadline/adapters/index.d.ts +14 -0
- package/dist/threadline/adapters/index.d.ts.map +1 -0
- package/dist/threadline/adapters/index.js +10 -0
- package/dist/threadline/adapters/index.js.map +1 -0
- package/dist/threadline/client/IdentityManager.d.ts +40 -0
- package/dist/threadline/client/IdentityManager.d.ts.map +1 -0
- package/dist/threadline/client/IdentityManager.js +106 -0
- package/dist/threadline/client/IdentityManager.js.map +1 -0
- package/dist/threadline/client/MessageEncryptor.d.ts +63 -0
- package/dist/threadline/client/MessageEncryptor.d.ts.map +1 -0
- package/dist/threadline/client/MessageEncryptor.js +195 -0
- package/dist/threadline/client/MessageEncryptor.js.map +1 -0
- package/dist/threadline/client/RegistryRestClient.d.ts +46 -0
- package/dist/threadline/client/RegistryRestClient.d.ts.map +1 -0
- package/dist/threadline/client/RegistryRestClient.js +114 -0
- package/dist/threadline/client/RegistryRestClient.js.map +1 -0
- package/dist/threadline/client/RelayClient.d.ts +77 -0
- package/dist/threadline/client/RelayClient.d.ts.map +1 -0
- package/dist/threadline/client/RelayClient.js +249 -0
- package/dist/threadline/client/RelayClient.js.map +1 -0
- package/dist/threadline/client/ThreadlineClient.d.ts +117 -0
- package/dist/threadline/client/ThreadlineClient.d.ts.map +1 -0
- package/dist/threadline/client/ThreadlineClient.js +286 -0
- package/dist/threadline/client/ThreadlineClient.js.map +1 -0
- package/dist/threadline/client/index.d.ts +14 -0
- package/dist/threadline/client/index.d.ts.map +1 -0
- package/dist/threadline/client/index.js +9 -0
- package/dist/threadline/client/index.js.map +1 -0
- package/dist/threadline/index.d.ts +81 -0
- package/dist/threadline/index.d.ts.map +1 -0
- package/dist/threadline/index.js +57 -0
- package/dist/threadline/index.js.map +1 -0
- package/dist/threadline/mcp-stdio-entry.d.ts +24 -0
- package/dist/threadline/mcp-stdio-entry.d.ts.map +1 -0
- package/dist/threadline/mcp-stdio-entry.js +230 -0
- package/dist/threadline/mcp-stdio-entry.js.map +1 -0
- package/dist/threadline/relay/A2ABridge.d.ts +91 -0
- package/dist/threadline/relay/A2ABridge.d.ts.map +1 -0
- package/dist/threadline/relay/A2ABridge.js +457 -0
- package/dist/threadline/relay/A2ABridge.js.map +1 -0
- package/dist/threadline/relay/AbuseDetector.d.ts +131 -0
- package/dist/threadline/relay/AbuseDetector.d.ts.map +1 -0
- package/dist/threadline/relay/AbuseDetector.js +358 -0
- package/dist/threadline/relay/AbuseDetector.js.map +1 -0
- package/dist/threadline/relay/AdminServer.d.ts +55 -0
- package/dist/threadline/relay/AdminServer.d.ts.map +1 -0
- package/dist/threadline/relay/AdminServer.js +215 -0
- package/dist/threadline/relay/AdminServer.js.map +1 -0
- package/dist/threadline/relay/ConnectionManager.d.ts +86 -0
- package/dist/threadline/relay/ConnectionManager.d.ts.map +1 -0
- package/dist/threadline/relay/ConnectionManager.js +356 -0
- package/dist/threadline/relay/ConnectionManager.js.map +1 -0
- package/dist/threadline/relay/MessageRouter.d.ts +46 -0
- package/dist/threadline/relay/MessageRouter.d.ts.map +1 -0
- package/dist/threadline/relay/MessageRouter.js +138 -0
- package/dist/threadline/relay/MessageRouter.js.map +1 -0
- package/dist/threadline/relay/OfflineQueue.d.ts +87 -0
- package/dist/threadline/relay/OfflineQueue.d.ts.map +1 -0
- package/dist/threadline/relay/OfflineQueue.js +137 -0
- package/dist/threadline/relay/OfflineQueue.js.map +1 -0
- package/dist/threadline/relay/PresenceRegistry.d.ts +62 -0
- package/dist/threadline/relay/PresenceRegistry.d.ts.map +1 -0
- package/dist/threadline/relay/PresenceRegistry.js +148 -0
- package/dist/threadline/relay/PresenceRegistry.js.map +1 -0
- package/dist/threadline/relay/RegistryAuth.d.ts +45 -0
- package/dist/threadline/relay/RegistryAuth.d.ts.map +1 -0
- package/dist/threadline/relay/RegistryAuth.js +118 -0
- package/dist/threadline/relay/RegistryAuth.js.map +1 -0
- package/dist/threadline/relay/RegistryStore.d.ts +149 -0
- package/dist/threadline/relay/RegistryStore.d.ts.map +1 -0
- package/dist/threadline/relay/RegistryStore.js +542 -0
- package/dist/threadline/relay/RegistryStore.js.map +1 -0
- package/dist/threadline/relay/RelayMetrics.d.ts +62 -0
- package/dist/threadline/relay/RelayMetrics.d.ts.map +1 -0
- package/dist/threadline/relay/RelayMetrics.js +149 -0
- package/dist/threadline/relay/RelayMetrics.js.map +1 -0
- package/dist/threadline/relay/RelayRateLimiter.d.ts +58 -0
- package/dist/threadline/relay/RelayRateLimiter.d.ts.map +1 -0
- package/dist/threadline/relay/RelayRateLimiter.js +116 -0
- package/dist/threadline/relay/RelayRateLimiter.js.map +1 -0
- package/dist/threadline/relay/RelayServer.d.ts +94 -0
- package/dist/threadline/relay/RelayServer.d.ts.map +1 -0
- package/dist/threadline/relay/RelayServer.js +1049 -0
- package/dist/threadline/relay/RelayServer.js.map +1 -0
- package/dist/threadline/relay/index.d.ts +28 -0
- package/dist/threadline/relay/index.d.ts.map +1 -0
- package/dist/threadline/relay/index.js +17 -0
- package/dist/threadline/relay/index.js.map +1 -0
- package/dist/threadline/relay/types.d.ts +215 -0
- package/dist/threadline/relay/types.d.ts.map +1 -0
- package/dist/threadline/relay/types.js +21 -0
- package/dist/threadline/relay/types.js.map +1 -0
- package/dist/threadline/types.d.ts +39 -0
- package/dist/threadline/types.d.ts.map +1 -0
- package/dist/threadline/types.js +10 -0
- package/dist/threadline/types.js.map +1 -0
- package/dist/tunnel/TunnelManager.d.ts +113 -0
- package/dist/tunnel/TunnelManager.d.ts.map +1 -0
- package/dist/tunnel/TunnelManager.js +474 -0
- package/dist/tunnel/TunnelManager.js.map +1 -0
- package/dist/types/pipeline.d.ts +203 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +152 -0
- package/dist/types/pipeline.js.map +1 -0
- package/dist/users/GdprCommands.d.ts +44 -0
- package/dist/users/GdprCommands.d.ts.map +1 -0
- package/dist/users/GdprCommands.js +153 -0
- package/dist/users/GdprCommands.js.map +1 -0
- package/dist/users/OnboardingGate.d.ts +107 -0
- package/dist/users/OnboardingGate.d.ts.map +1 -0
- package/dist/users/OnboardingGate.js +240 -0
- package/dist/users/OnboardingGate.js.map +1 -0
- package/dist/users/UserContextBuilder.d.ts +47 -0
- package/dist/users/UserContextBuilder.d.ts.map +1 -0
- package/dist/users/UserContextBuilder.js +174 -0
- package/dist/users/UserContextBuilder.js.map +1 -0
- package/dist/users/UserManager.d.ts +76 -0
- package/dist/users/UserManager.d.ts.map +1 -0
- package/dist/users/UserManager.js +213 -0
- package/dist/users/UserManager.js.map +1 -0
- package/dist/users/UserOnboarding.d.ts +145 -0
- package/dist/users/UserOnboarding.d.ts.map +1 -0
- package/dist/users/UserOnboarding.js +488 -0
- package/dist/users/UserOnboarding.js.map +1 -0
- package/dist/users/UserPropagator.d.ts +75 -0
- package/dist/users/UserPropagator.d.ts.map +1 -0
- package/dist/users/UserPropagator.js +145 -0
- package/dist/users/UserPropagator.js.map +1 -0
- package/dist/utils/jsonl-rotation.d.ts +27 -0
- package/dist/utils/jsonl-rotation.d.ts.map +1 -0
- package/dist/utils/jsonl-rotation.js +63 -0
- package/dist/utils/jsonl-rotation.js.map +1 -0
- package/dist/utils/privacy.d.ts +88 -0
- package/dist/utils/privacy.d.ts.map +1 -0
- package/dist/utils/privacy.js +182 -0
- package/dist/utils/privacy.js.map +1 -0
- package/dist/utils/sanitize.d.ts +81 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +122 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/package.json +1 -0
- package/playbook-scripts/atomic_write.py +133 -0
- package/playbook-scripts/bootstrap-manifest.json +92 -0
- package/playbook-scripts/playbook-annotate-context.py +239 -0
- package/playbook-scripts/playbook-assemble.py +385 -0
- package/playbook-scripts/playbook-dashboard.py +242 -0
- package/playbook-scripts/playbook-decay.py +377 -0
- package/playbook-scripts/playbook-dedup-job.py +252 -0
- package/playbook-scripts/playbook-dedup.py +341 -0
- package/playbook-scripts/playbook-delta-validator.py +576 -0
- package/playbook-scripts/playbook-dsar.py +291 -0
- package/playbook-scripts/playbook-eval-log.py +425 -0
- package/playbook-scripts/playbook-failsafe.py +513 -0
- package/playbook-scripts/playbook-feedback-quarantine.py +335 -0
- package/playbook-scripts/playbook-history.py +293 -0
- package/playbook-scripts/playbook-hmac.py +224 -0
- package/playbook-scripts/playbook-lifecycle.py +952 -0
- package/playbook-scripts/playbook-manifest.py +458 -0
- package/playbook-scripts/playbook-micro-eval.py +316 -0
- package/playbook-scripts/playbook-migrate-lessons.py +396 -0
- package/playbook-scripts/playbook-mount.py +393 -0
- package/playbook-scripts/playbook-offline-adapt.py +323 -0
- package/playbook-scripts/playbook-pii-screen.py +207 -0
- package/playbook-scripts/playbook-reflector.py +266 -0
- package/playbook-scripts/playbook-relevance.py +269 -0
- package/playbook-scripts/playbook-retirement.py +365 -0
- package/playbook-scripts/playbook-schema-validate.py +267 -0
- package/playbook-scripts/playbook-scratchpad.py +346 -0
- package/playbook-scripts/playbook-semantic-verify.py +280 -0
- package/playbook-scripts/playbook-spawn-contract.py +341 -0
- package/playbook-scripts/playbook-token-reestimate.py +248 -0
- package/playbook-scripts/playbook-verify.py +357 -0
- package/playbook-scripts/playbook_backend.py +249 -0
- package/playbook-scripts/playbook_paths.py +232 -0
- package/playbook-scripts/schemas/context-delta.schema.json +137 -0
- package/playbook-scripts/schemas/context-manifest.schema.json +200 -0
- package/playbook-scripts/schemas/playbook-config.schema.json +184 -0
- package/scripts/analyze-release.js +752 -0
- package/scripts/check-upgrade-guide.js +373 -0
- package/scripts/collect-metrics.py +248 -0
- package/scripts/demo-two-agents.mjs +187 -0
- package/scripts/fix-better-sqlite3.cjs +100 -0
- package/scripts/generate-builtin-manifest.cjs +440 -0
- package/scripts/pre-push-gate.js +177 -0
- package/scripts/relay-entrypoint.mjs +18 -0
- package/scripts/seed-registry.mjs +258 -0
- package/scripts/telemetry-worker/worker.js +776 -0
- package/scripts/telemetry-worker/wrangler.toml +7 -0
- package/scripts/test-bootstrap-relay.mjs +90 -0
- package/scripts/test-multi-agent-relay.mjs +395 -0
- package/scripts/test-relay-cloud.mjs +389 -0
- package/scripts/test-relay-live.mjs +550 -0
- package/src/data/builtin-manifest.json +1463 -0
- package/src/data/http-hook-templates.ts +81 -0
- package/src/templates/hooks/compaction-recovery.sh +371 -0
- package/src/templates/hooks/dangerous-command-guard.sh +100 -0
- package/src/templates/hooks/free-text-guard.sh +96 -0
- package/src/templates/hooks/grounding-before-messaging.sh +52 -0
- package/src/templates/hooks/session-start.sh +339 -0
- package/src/templates/hooks/settings-template.json +142 -0
- package/src/templates/hooks/slack-channel-context.sh +98 -0
- package/src/templates/hooks/telegram-topic-context.sh +117 -0
- package/src/templates/scripts/convergence-check.sh +99 -0
- package/src/templates/scripts/git-sync-gate.sh +89 -0
- package/src/templates/scripts/health-watchdog.sh +63 -0
- package/src/templates/scripts/serendipity-capture.sh +345 -0
- package/src/templates/scripts/slack-reply.sh +74 -0
- package/src/templates/scripts/smart-fetch.py +215 -0
- package/src/templates/scripts/telegram-reply.sh +67 -0
- package/src/templates/scripts/whatsapp-reply.sh +68 -0
- package/upgrades/0.10.0.md +254 -0
- package/upgrades/0.10.1.md +47 -0
- package/upgrades/0.10.2.md +26 -0
- package/upgrades/0.10.3.md +23 -0
- package/upgrades/0.10.4.md +26 -0
- package/upgrades/0.10.5.md +19 -0
- package/upgrades/0.10.6.md +35 -0
- package/upgrades/0.10.7.md +48 -0
- package/upgrades/0.10.8.md +53 -0
- package/upgrades/0.10.9.md +21 -0
- package/upgrades/0.11.0.md +146 -0
- package/upgrades/0.12.0.md +31 -0
- package/upgrades/0.12.1.md +21 -0
- package/upgrades/0.12.10.md +26 -0
- package/upgrades/0.12.11.md +23 -0
- package/upgrades/0.12.12.md +23 -0
- package/upgrades/0.12.13.md +19 -0
- package/upgrades/0.12.14.md +21 -0
- package/upgrades/0.12.15.md +26 -0
- package/upgrades/0.12.16.md +33 -0
- package/upgrades/0.12.17.md +38 -0
- package/upgrades/0.12.18.md +27 -0
- package/upgrades/0.12.19.md +31 -0
- package/upgrades/0.12.2.md +27 -0
- package/upgrades/0.12.20.md +24 -0
- package/upgrades/0.12.21.md +28 -0
- package/upgrades/0.12.22.md +23 -0
- package/upgrades/0.12.23.md +44 -0
- package/upgrades/0.12.24.md +24 -0
- package/upgrades/0.12.25.md +55 -0
- package/upgrades/0.12.26.md +31 -0
- package/upgrades/0.12.27.md +19 -0
- package/upgrades/0.12.28.md +19 -0
- package/upgrades/0.12.29.md +42 -0
- package/upgrades/0.12.3.md +22 -0
- package/upgrades/0.12.31.md +24 -0
- package/upgrades/0.12.32.md +34 -0
- package/upgrades/0.12.33.md +62 -0
- package/upgrades/0.12.34.md +59 -0
- package/upgrades/0.12.4.md +19 -0
- package/upgrades/0.12.5.md +31 -0
- package/upgrades/0.12.6.md +34 -0
- package/upgrades/0.12.7.md +24 -0
- package/upgrades/0.12.8.md +28 -0
- package/upgrades/0.12.9.md +30 -0
- package/upgrades/0.13.0.md +26 -0
- package/upgrades/0.14.0.md +75 -0
- package/upgrades/0.14.1.md +41 -0
- package/upgrades/0.15.0.md +59 -0
- package/upgrades/0.16.0.md +61 -0
- package/upgrades/0.17.0.md +88 -0
- package/upgrades/0.17.10.md +23 -0
- package/upgrades/0.17.11.md +25 -0
- package/upgrades/0.17.12.md +43 -0
- package/upgrades/0.17.13.md +24 -0
- package/upgrades/0.17.14.md +26 -0
- package/upgrades/0.17.2.md +42 -0
- package/upgrades/0.17.3.md +37 -0
- package/upgrades/0.17.4.md +27 -0
- package/upgrades/0.17.5.md +32 -0
- package/upgrades/0.17.6.md +32 -0
- package/upgrades/0.17.7.md +39 -0
- package/upgrades/0.17.8.md +34 -0
- package/upgrades/0.17.9.md +25 -0
- package/upgrades/0.18.1.md +34 -0
- package/upgrades/0.18.2.md +29 -0
- package/upgrades/0.18.3.md +26 -0
- package/upgrades/0.18.4.md +28 -0
- package/upgrades/0.18.5.md +25 -0
- package/upgrades/0.18.6.md +25 -0
- package/upgrades/0.18.7.md +30 -0
- package/upgrades/0.19.0.md +136 -0
- package/upgrades/0.19.1.md +27 -0
- package/upgrades/0.19.2.md +27 -0
- package/upgrades/0.19.3.md +32 -0
- package/upgrades/0.19.4.md +19 -0
- package/upgrades/0.19.6.md +17 -0
- package/upgrades/0.19.7.md +33 -0
- package/upgrades/0.20.0.md +54 -0
- package/upgrades/0.21.1.md +55 -0
- package/upgrades/0.21.2.md +48 -0
- package/upgrades/0.21.3.md +29 -0
- package/upgrades/0.21.4.md +33 -0
- package/upgrades/0.22.0.md +114 -0
- package/upgrades/0.23.0.md +81 -0
- package/upgrades/0.23.1.md +28 -0
- package/upgrades/0.23.10.md +19 -0
- package/upgrades/0.23.11.md +21 -0
- package/upgrades/0.23.12.md +30 -0
- package/upgrades/0.23.13.md +25 -0
- package/upgrades/0.23.14.md +23 -0
- package/upgrades/0.23.15.md +30 -0
- package/upgrades/0.23.16.md +21 -0
- package/upgrades/0.23.17.md +23 -0
- package/upgrades/0.23.18.md +41 -0
- package/upgrades/0.23.2.md +32 -0
- package/upgrades/0.23.4.md +21 -0
- package/upgrades/0.23.6.md +19 -0
- package/upgrades/0.23.7.md +33 -0
- package/upgrades/0.23.8.md +38 -0
- package/upgrades/0.23.9.md +35 -0
- package/upgrades/0.24.1.md +32 -0
- package/upgrades/0.24.10.md +23 -0
- package/upgrades/0.24.12.md +17 -0
- package/upgrades/0.24.13.md +16 -0
- package/upgrades/0.24.14.md +26 -0
- package/upgrades/0.24.15.md +49 -0
- package/upgrades/0.24.16.md +48 -0
- package/upgrades/0.24.17.md +40 -0
- package/upgrades/0.24.18-beta.0.md +35 -0
- package/upgrades/0.24.18.md +35 -0
- package/upgrades/0.24.19.md +21 -0
- package/upgrades/0.24.2.md +13 -0
- package/upgrades/0.24.20.md +45 -0
- package/upgrades/0.24.21.md +25 -0
- package/upgrades/0.24.22.md +35 -0
- package/upgrades/0.24.23.md +17 -0
- package/upgrades/0.24.24.md +15 -0
- package/upgrades/0.24.25.md +15 -0
- package/upgrades/0.24.26.md +15 -0
- package/upgrades/0.24.27.md +17 -0
- package/upgrades/0.24.28.md +35 -0
- package/upgrades/0.24.29.md +15 -0
- package/upgrades/0.24.30.md +40 -0
- package/upgrades/0.24.31.md +45 -0
- package/upgrades/0.24.32.md +19 -0
- package/upgrades/0.24.33.md +35 -0
- package/upgrades/0.24.34.md +29 -0
- package/upgrades/0.24.4.md +19 -0
- package/upgrades/0.24.5.md +20 -0
- package/upgrades/0.25.0.md +34 -0
- package/upgrades/0.25.1.md +24 -0
- package/upgrades/0.25.10.md +26 -0
- package/upgrades/0.25.2.md +23 -0
- package/upgrades/0.25.3.md +25 -0
- package/upgrades/0.25.4.md +24 -0
- package/upgrades/0.25.5.md +19 -0
- package/upgrades/0.25.6.md +35 -0
- package/upgrades/0.25.7.md +18 -0
- package/upgrades/0.25.8.md +24 -0
- package/upgrades/0.25.9.md +19 -0
- package/upgrades/0.26.0.md +23 -0
- package/upgrades/0.26.1.md +22 -0
- package/upgrades/0.26.2.md +15 -0
- package/upgrades/0.8.12.md +49 -0
- package/upgrades/0.8.13.md +38 -0
- package/upgrades/0.8.17.md +36 -0
- package/upgrades/0.8.22.md +43 -0
- package/upgrades/0.8.23.md +106 -0
- package/upgrades/0.9.1.md +91 -0
- package/upgrades/0.9.10.md +40 -0
- package/upgrades/0.9.11.md +77 -0
- package/upgrades/0.9.12.md +42 -0
- package/upgrades/0.9.13.md +55 -0
- package/upgrades/0.9.14.md +23 -0
- package/upgrades/0.9.15.md +106 -0
- package/upgrades/0.9.16.md +37 -0
- package/upgrades/0.9.17.md +15 -0
- package/upgrades/0.9.19.md +17 -0
- package/upgrades/0.9.20.md +24 -0
- package/upgrades/0.9.21.md +37 -0
- package/upgrades/0.9.22.md +41 -0
- package/upgrades/0.9.23.md +37 -0
- package/upgrades/0.9.24.md +46 -0
- package/upgrades/0.9.25.md +37 -0
- package/upgrades/0.9.28.md +20 -0
- package/upgrades/0.9.29.md +34 -0
- package/upgrades/0.9.32.md +30 -0
- package/upgrades/0.9.36.md +27 -0
- package/upgrades/0.9.8.md +125 -0
- package/upgrades/0.9.9.md +34 -0
- package/upgrades/NEXT.md +35 -0
|
@@ -0,0 +1,1085 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Job Scheduler — cron-based job execution engine.
|
|
3
|
+
*
|
|
4
|
+
* Schedules jobs via croner, respects session limits and quota,
|
|
5
|
+
* queues jobs when at capacity, and drains when slots open.
|
|
6
|
+
*
|
|
7
|
+
* Simplified from Dawn's 1400-line scheduler — serial queue,
|
|
8
|
+
* no JSONL discovery, no machine coordination.
|
|
9
|
+
*/
|
|
10
|
+
import { Cron } from 'croner';
|
|
11
|
+
import { execFileSync } from 'node:child_process';
|
|
12
|
+
import fs from 'node:fs';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
import { ExecutionJournal } from '../core/ExecutionJournal.js';
|
|
15
|
+
import { JobReflector } from '../core/JobReflector.js';
|
|
16
|
+
import { loadJobs } from './JobLoader.js';
|
|
17
|
+
import { JobRunHistory } from './JobRunHistory.js';
|
|
18
|
+
import { SkipLedger } from './SkipLedger.js';
|
|
19
|
+
import { classifySessionDeath } from '../monitoring/QuotaExhaustionDetector.js';
|
|
20
|
+
import { TOPIC_STYLE } from '../messaging/TelegramAdapter.js';
|
|
21
|
+
const PRIORITY_ORDER = {
|
|
22
|
+
critical: 0,
|
|
23
|
+
high: 1,
|
|
24
|
+
medium: 2,
|
|
25
|
+
low: 3,
|
|
26
|
+
};
|
|
27
|
+
export class JobScheduler {
|
|
28
|
+
config;
|
|
29
|
+
sessionManager;
|
|
30
|
+
state;
|
|
31
|
+
stateDir;
|
|
32
|
+
skipLedger;
|
|
33
|
+
runHistory;
|
|
34
|
+
jobs = [];
|
|
35
|
+
cronTasks = new Map();
|
|
36
|
+
queue = [];
|
|
37
|
+
running = false;
|
|
38
|
+
paused = false;
|
|
39
|
+
/** Map session names to run IDs for completion tracking */
|
|
40
|
+
activeRunIds = new Map();
|
|
41
|
+
/** Local machine identity — used for machine-scoped job filtering */
|
|
42
|
+
machineId = null;
|
|
43
|
+
machineName = null;
|
|
44
|
+
/** Callback to check if quota allows running a job at the given priority */
|
|
45
|
+
canRunJob = () => true;
|
|
46
|
+
/** Optional messenger for sending job notifications */
|
|
47
|
+
messenger = null;
|
|
48
|
+
/** Optional Telegram adapter for job-topic coupling */
|
|
49
|
+
telegram = null;
|
|
50
|
+
/** Optional quota tracker for death classification cross-reference */
|
|
51
|
+
quotaTracker = null;
|
|
52
|
+
/** Optional job claim manager for multi-machine deduplication (Phase 4C) */
|
|
53
|
+
claimManager = null;
|
|
54
|
+
/** Optional LLM provider for per-job reflection (Living Skills Phase 4) */
|
|
55
|
+
intelligence = null;
|
|
56
|
+
/** Optional IntegrationGate for post-completion learning consolidation */
|
|
57
|
+
integrationGate = null;
|
|
58
|
+
/** Optional TopicMemory for topic-aware job sessions */
|
|
59
|
+
topicMemory = null;
|
|
60
|
+
constructor(config, sessionManager, state, stateDir) {
|
|
61
|
+
this.config = config;
|
|
62
|
+
this.sessionManager = sessionManager;
|
|
63
|
+
this.state = state;
|
|
64
|
+
this.stateDir = stateDir;
|
|
65
|
+
this.skipLedger = new SkipLedger(stateDir);
|
|
66
|
+
this.runHistory = new JobRunHistory(stateDir);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Set a messaging adapter for job completion notifications.
|
|
70
|
+
*/
|
|
71
|
+
setMessenger(adapter) {
|
|
72
|
+
this.messenger = adapter;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Set the Telegram adapter for job-topic coupling.
|
|
76
|
+
* Every job gets its own topic — the user's window into the job.
|
|
77
|
+
*/
|
|
78
|
+
setTelegram(adapter) {
|
|
79
|
+
this.telegram = adapter;
|
|
80
|
+
// If scheduler already started, ensure job topics now that Telegram is available.
|
|
81
|
+
// This fixes the startup race condition where start() runs before Telegram connects.
|
|
82
|
+
if (this.running && this.jobs.length > 0) {
|
|
83
|
+
const enabledJobs = this.jobs.filter(j => j.enabled);
|
|
84
|
+
this.ensureJobTopics(enabledJobs).catch(err => {
|
|
85
|
+
console.error(`[scheduler] Failed to ensure job topics (post-Telegram init): ${err}`);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Set the quota tracker for session death classification.
|
|
91
|
+
* When set, session deaths are cross-referenced with quota state
|
|
92
|
+
* to determine if they died from quota exhaustion.
|
|
93
|
+
*/
|
|
94
|
+
setQuotaTracker(tracker) {
|
|
95
|
+
this.quotaTracker = tracker;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Set the job claim manager for multi-machine deduplication.
|
|
99
|
+
* When set, the scheduler will broadcast claims before executing jobs
|
|
100
|
+
* and skip jobs already claimed by other machines.
|
|
101
|
+
*/
|
|
102
|
+
setJobClaimManager(manager) {
|
|
103
|
+
this.claimManager = manager;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Set local machine identity for machine-scoped job filtering.
|
|
107
|
+
* Jobs with a `machines` field will only run on machines whose ID or name matches.
|
|
108
|
+
*/
|
|
109
|
+
setMachineIdentity(machineId, machineName) {
|
|
110
|
+
this.machineId = machineId;
|
|
111
|
+
this.machineName = machineName;
|
|
112
|
+
this.runHistory.setMachineId(machineId);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Set the intelligence provider for per-job LLM reflection (Living Skills Phase 4).
|
|
116
|
+
*/
|
|
117
|
+
setIntelligence(provider) {
|
|
118
|
+
this.intelligence = provider;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Set the IntegrationGate for post-completion learning consolidation.
|
|
122
|
+
* When set, reflection runs synchronously before queue drain.
|
|
123
|
+
* When not set, the existing fire-and-forget reflection behavior is preserved.
|
|
124
|
+
*/
|
|
125
|
+
setIntegrationGate(gate) {
|
|
126
|
+
this.integrationGate = gate;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Set the TopicMemory for topic-aware job sessions.
|
|
130
|
+
* When set, jobs bound to a topic receive awareness context about the topic's focus.
|
|
131
|
+
*/
|
|
132
|
+
setTopicMemory(topicMemory) {
|
|
133
|
+
this.topicMemory = topicMemory;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Start the scheduler — load jobs, set up cron tasks, check for missed jobs.
|
|
137
|
+
*/
|
|
138
|
+
start() {
|
|
139
|
+
if (this.running)
|
|
140
|
+
return;
|
|
141
|
+
this.jobs = loadJobs(this.config.jobsFile);
|
|
142
|
+
this.running = true;
|
|
143
|
+
const enabledJobs = this.jobs.filter(j => j.enabled);
|
|
144
|
+
// Machine-scoped filtering — skip jobs not targeted at this machine
|
|
145
|
+
const scopedJobs = enabledJobs.filter(j => this.isJobScopedToThisMachine(j));
|
|
146
|
+
const skippedByScope = enabledJobs.length - scopedJobs.length;
|
|
147
|
+
if (skippedByScope > 0) {
|
|
148
|
+
const skippedNames = enabledJobs
|
|
149
|
+
.filter(j => !this.isJobScopedToThisMachine(j))
|
|
150
|
+
.map(j => j.slug);
|
|
151
|
+
console.log(`[scheduler] ${skippedByScope} job(s) skipped (machine scope): ${skippedNames.join(', ')}`);
|
|
152
|
+
}
|
|
153
|
+
for (const job of scopedJobs) {
|
|
154
|
+
try {
|
|
155
|
+
const task = new Cron(job.schedule, () => {
|
|
156
|
+
this.triggerJob(job.slug, 'scheduled');
|
|
157
|
+
});
|
|
158
|
+
this.cronTasks.set(job.slug, task);
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
console.error(`[scheduler] Invalid cron expression for job "${job.slug}": ${job.schedule} — ${err instanceof Error ? err.message : err}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Check for missed jobs — any enabled job overdue by >1.5x its interval
|
|
165
|
+
this.checkMissedJobs(scopedJobs);
|
|
166
|
+
// Ensure every job has a Telegram topic (job-topic coupling)
|
|
167
|
+
if (this.telegram) {
|
|
168
|
+
this.ensureJobTopics(scopedJobs).catch(err => {
|
|
169
|
+
console.error(`[scheduler] Failed to ensure job topics: ${err}`);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
this.state.appendEvent({
|
|
173
|
+
type: 'scheduler_start',
|
|
174
|
+
summary: `Scheduler started with ${scopedJobs.length} enabled jobs` + (skippedByScope > 0 ? ` (${skippedByScope} skipped by machine scope)` : ''),
|
|
175
|
+
timestamp: new Date().toISOString(),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Stop the scheduler — cancel all cron tasks.
|
|
180
|
+
*/
|
|
181
|
+
stop() {
|
|
182
|
+
if (!this.running)
|
|
183
|
+
return;
|
|
184
|
+
for (const [, task] of this.cronTasks) {
|
|
185
|
+
task.stop();
|
|
186
|
+
}
|
|
187
|
+
this.cronTasks.clear();
|
|
188
|
+
this.queue = [];
|
|
189
|
+
this.running = false;
|
|
190
|
+
this.state.appendEvent({
|
|
191
|
+
type: 'scheduler_stop',
|
|
192
|
+
summary: 'Scheduler stopped',
|
|
193
|
+
timestamp: new Date().toISOString(),
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Trigger a job by slug. Checks claims, quota, session limits, queues if at capacity.
|
|
198
|
+
*/
|
|
199
|
+
triggerJob(slug, reason) {
|
|
200
|
+
const job = this.jobs.find(j => j.slug === slug);
|
|
201
|
+
if (!job) {
|
|
202
|
+
throw new Error(`Unknown job: ${slug}`);
|
|
203
|
+
}
|
|
204
|
+
if (this.paused) {
|
|
205
|
+
this.skipLedger.recordSkip(slug, 'paused');
|
|
206
|
+
return 'skipped';
|
|
207
|
+
}
|
|
208
|
+
// Machine scope check — skip jobs not targeted at this machine
|
|
209
|
+
if (!this.isJobScopedToThisMachine(job)) {
|
|
210
|
+
this.skipLedger.recordSkip(slug, 'machine-scope');
|
|
211
|
+
this.state.appendEvent({
|
|
212
|
+
type: 'job_skipped',
|
|
213
|
+
summary: `Job "${slug}" skipped — not scoped to this machine`,
|
|
214
|
+
timestamp: new Date().toISOString(),
|
|
215
|
+
metadata: { slug, reason, machines: job.machines },
|
|
216
|
+
});
|
|
217
|
+
return 'skipped';
|
|
218
|
+
}
|
|
219
|
+
// Multi-machine claim check (Phase 4C — Gap 5)
|
|
220
|
+
// If another machine already claimed this job, skip it.
|
|
221
|
+
if (this.claimManager?.hasRemoteClaim(slug)) {
|
|
222
|
+
this.skipLedger.recordSkip(slug, 'claimed');
|
|
223
|
+
this.state.appendEvent({
|
|
224
|
+
type: 'job_skipped',
|
|
225
|
+
summary: `Job "${slug}" skipped — claimed by another machine`,
|
|
226
|
+
timestamp: new Date().toISOString(),
|
|
227
|
+
metadata: { slug, reason, claimedBy: this.claimManager.getClaim(slug)?.machineId },
|
|
228
|
+
});
|
|
229
|
+
return 'skipped';
|
|
230
|
+
}
|
|
231
|
+
// Script jobs bypass quota gating — they don't consume LLM tokens
|
|
232
|
+
if (job.execute.type !== 'script' && !this.canRunJob(job.priority)) {
|
|
233
|
+
this.skipLedger.recordSkip(slug, 'quota');
|
|
234
|
+
this.state.appendEvent({
|
|
235
|
+
type: 'job_skipped',
|
|
236
|
+
summary: `Job "${slug}" skipped — quota check failed`,
|
|
237
|
+
timestamp: new Date().toISOString(),
|
|
238
|
+
metadata: { slug, reason, priority: job.priority },
|
|
239
|
+
});
|
|
240
|
+
return 'skipped';
|
|
241
|
+
}
|
|
242
|
+
// Run gate command if configured — zero-token pre-screening
|
|
243
|
+
if (job.gate) {
|
|
244
|
+
if (!this.runGate(job)) {
|
|
245
|
+
return 'skipped';
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// Check session capacity
|
|
249
|
+
const runningSessions = this.sessionManager.listRunningSessions();
|
|
250
|
+
const jobSessions = runningSessions.filter(s => s.jobSlug);
|
|
251
|
+
if (jobSessions.length >= this.config.maxParallelJobs) {
|
|
252
|
+
this.enqueue(slug, reason);
|
|
253
|
+
return 'queued';
|
|
254
|
+
}
|
|
255
|
+
// Broadcast claim before spawning (async, best-effort)
|
|
256
|
+
if (this.claimManager) {
|
|
257
|
+
const timeoutMs = (job.expectedDurationMinutes ?? 30) * 2 * 60_000;
|
|
258
|
+
this.claimManager.tryClaim(slug, timeoutMs).catch(err => {
|
|
259
|
+
console.error(`[scheduler] Failed to broadcast claim for "${slug}": ${err}`);
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
this.spawnJobSession(job, reason);
|
|
263
|
+
return 'triggered';
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Check if a job is scoped to run on this machine.
|
|
267
|
+
* Jobs without a `machines` field run everywhere (backwards-compatible).
|
|
268
|
+
* Jobs with `machines` only run if this machine's ID or name matches.
|
|
269
|
+
*/
|
|
270
|
+
isJobScopedToThisMachine(job) {
|
|
271
|
+
if (!job.machines || job.machines.length === 0)
|
|
272
|
+
return true;
|
|
273
|
+
if (!this.machineId && !this.machineName)
|
|
274
|
+
return true; // No identity = run everything
|
|
275
|
+
return job.machines.some(m => {
|
|
276
|
+
const lower = m.toLowerCase();
|
|
277
|
+
return ((this.machineId && lower === this.machineId.toLowerCase()) ||
|
|
278
|
+
(this.machineName && lower === this.machineName.toLowerCase()));
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Process the queue — dequeue and run next job if a slot is available.
|
|
283
|
+
*/
|
|
284
|
+
processQueue() {
|
|
285
|
+
if (this.paused || this.queue.length === 0)
|
|
286
|
+
return;
|
|
287
|
+
const runningSessions = this.sessionManager.listRunningSessions();
|
|
288
|
+
const jobSessions = runningSessions.filter(s => s.jobSlug);
|
|
289
|
+
if (jobSessions.length >= this.config.maxParallelJobs)
|
|
290
|
+
return;
|
|
291
|
+
const next = this.queue.shift();
|
|
292
|
+
if (!next)
|
|
293
|
+
return;
|
|
294
|
+
const job = this.jobs.find(j => j.slug === next.slug);
|
|
295
|
+
if (!job)
|
|
296
|
+
return;
|
|
297
|
+
if (!this.canRunJob(job.priority)) {
|
|
298
|
+
// Re-add to front of queue — don't silently drop
|
|
299
|
+
this.queue.unshift(next);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
this.spawnJobSession(job, `queued:${next.reason}`);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Pause — cron tasks keep ticking but triggers are skipped.
|
|
306
|
+
*/
|
|
307
|
+
pause() {
|
|
308
|
+
this.paused = true;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Clear the pending job queue.
|
|
312
|
+
*/
|
|
313
|
+
clearQueue() {
|
|
314
|
+
this.queue.length = 0;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Resume — triggers start executing again.
|
|
318
|
+
*/
|
|
319
|
+
resume() {
|
|
320
|
+
this.paused = false;
|
|
321
|
+
this.processQueue();
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get scheduler status for the /status endpoint.
|
|
325
|
+
*/
|
|
326
|
+
getStatus() {
|
|
327
|
+
const runningSessions = this.sessionManager.listRunningSessions();
|
|
328
|
+
return {
|
|
329
|
+
running: this.running,
|
|
330
|
+
paused: this.paused,
|
|
331
|
+
jobCount: this.jobs.length,
|
|
332
|
+
enabledJobs: this.jobs.filter(j => j.enabled).length,
|
|
333
|
+
queueLength: this.queue.length,
|
|
334
|
+
activeJobSessions: runningSessions.filter(s => s.jobSlug).length,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Get loaded job definitions (for /jobs endpoint).
|
|
339
|
+
*/
|
|
340
|
+
getJobs() {
|
|
341
|
+
return this.jobs;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Get the current queue.
|
|
345
|
+
*/
|
|
346
|
+
getQueue() {
|
|
347
|
+
return [...this.queue];
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Check if a job will run on this machine (for API visibility).
|
|
351
|
+
*/
|
|
352
|
+
isJobLocal(slug) {
|
|
353
|
+
const job = this.jobs.find(j => j.slug === slug);
|
|
354
|
+
return job ? this.isJobScopedToThisMachine(job) : false;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Get the skip ledger instance (for API routes).
|
|
358
|
+
*/
|
|
359
|
+
getSkipLedger() {
|
|
360
|
+
return this.skipLedger;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Get the run history instance (for API routes).
|
|
364
|
+
*/
|
|
365
|
+
getRunHistory() {
|
|
366
|
+
return this.runHistory;
|
|
367
|
+
}
|
|
368
|
+
enqueue(slug, reason) {
|
|
369
|
+
// Don't queue duplicates
|
|
370
|
+
if (this.queue.some(q => q.slug === slug))
|
|
371
|
+
return;
|
|
372
|
+
// Cap queue size to prevent unbounded growth
|
|
373
|
+
if (this.queue.length >= 50) {
|
|
374
|
+
console.warn(`[scheduler] Queue full (50 items), dropping enqueue for "${slug}"`);
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
this.queue.push({ slug, reason, queuedAt: new Date().toISOString() });
|
|
378
|
+
// Sort by priority — critical first
|
|
379
|
+
this.queue.sort((a, b) => {
|
|
380
|
+
const jobA = this.jobs.find(j => j.slug === a.slug);
|
|
381
|
+
const jobB = this.jobs.find(j => j.slug === b.slug);
|
|
382
|
+
return (PRIORITY_ORDER[jobA?.priority ?? 'low']) - (PRIORITY_ORDER[jobB?.priority ?? 'low']);
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
spawnJobSession(job, reason) {
|
|
386
|
+
const prompt = this.buildPrompt(job);
|
|
387
|
+
const sessionName = `job-${job.slug}-${Date.now().toString(36)}`;
|
|
388
|
+
// Check for gate-written model escalation (e.g., git-sync severity)
|
|
389
|
+
const model = this.resolveModelTier(job);
|
|
390
|
+
// Write active-job.json BEFORE spawning so the session-start and
|
|
391
|
+
// compaction-recovery hooks can inject job-specific grounding context.
|
|
392
|
+
this.state.set('active-job', {
|
|
393
|
+
slug: job.slug,
|
|
394
|
+
name: job.name,
|
|
395
|
+
description: job.description,
|
|
396
|
+
priority: job.priority,
|
|
397
|
+
sessionName,
|
|
398
|
+
triggeredBy: reason,
|
|
399
|
+
startedAt: new Date().toISOString(),
|
|
400
|
+
grounding: job.grounding ?? null,
|
|
401
|
+
topicId: job.topicId ?? null,
|
|
402
|
+
commonBlockers: job.commonBlockers ?? null,
|
|
403
|
+
});
|
|
404
|
+
// Create Living Skills sentinel file if enabled (allows hook to detect opt-in)
|
|
405
|
+
if (job.livingSkills?.enabled) {
|
|
406
|
+
const lsDir = path.join(this.stateDir, 'state', 'execution-journal');
|
|
407
|
+
try {
|
|
408
|
+
fs.mkdirSync(lsDir, { recursive: true });
|
|
409
|
+
fs.writeFileSync(path.join(lsDir, `_ls-enabled-${job.slug}`), '');
|
|
410
|
+
}
|
|
411
|
+
catch (err) {
|
|
412
|
+
console.error(`[scheduler] Failed to create Living Skills sentinel for "${job.slug}": ${err}`);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
this.sessionManager.spawnSession({
|
|
416
|
+
name: sessionName,
|
|
417
|
+
prompt,
|
|
418
|
+
model,
|
|
419
|
+
jobSlug: job.slug,
|
|
420
|
+
triggeredBy: `scheduler:${reason}`,
|
|
421
|
+
maxDurationMinutes: job.expectedDurationMinutes,
|
|
422
|
+
}).then(() => {
|
|
423
|
+
// Record in run history
|
|
424
|
+
const runId = this.runHistory.recordStart({
|
|
425
|
+
slug: job.slug,
|
|
426
|
+
sessionId: sessionName,
|
|
427
|
+
trigger: reason,
|
|
428
|
+
model: model ?? job.model,
|
|
429
|
+
});
|
|
430
|
+
this.activeRunIds.set(sessionName, runId);
|
|
431
|
+
// Update job state on successful spawn (clear error, set pending result)
|
|
432
|
+
const jobState = {
|
|
433
|
+
slug: job.slug,
|
|
434
|
+
lastRun: new Date().toISOString(),
|
|
435
|
+
lastResult: 'pending',
|
|
436
|
+
lastError: undefined,
|
|
437
|
+
consecutiveFailures: 0,
|
|
438
|
+
nextScheduled: this.getNextRun(job.slug),
|
|
439
|
+
};
|
|
440
|
+
this.state.saveJobState(jobState);
|
|
441
|
+
this.state.appendEvent({
|
|
442
|
+
type: 'job_triggered',
|
|
443
|
+
summary: `Job "${job.slug}" triggered (${reason})`,
|
|
444
|
+
sessionId: sessionName,
|
|
445
|
+
timestamp: new Date().toISOString(),
|
|
446
|
+
metadata: { slug: job.slug, reason, model: job.model },
|
|
447
|
+
});
|
|
448
|
+
}).catch((err) => {
|
|
449
|
+
// Record spawn error in run history
|
|
450
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
451
|
+
this.runHistory.recordSpawnError({
|
|
452
|
+
slug: job.slug,
|
|
453
|
+
trigger: reason,
|
|
454
|
+
error: errorMsg,
|
|
455
|
+
model: model ?? job.model,
|
|
456
|
+
});
|
|
457
|
+
// Track failure with error message
|
|
458
|
+
const failures = this.getConsecutiveFailures(job.slug) + 1;
|
|
459
|
+
const jobState = {
|
|
460
|
+
slug: job.slug,
|
|
461
|
+
lastRun: new Date().toISOString(),
|
|
462
|
+
lastResult: 'failure',
|
|
463
|
+
lastError: errorMsg,
|
|
464
|
+
consecutiveFailures: failures,
|
|
465
|
+
nextScheduled: this.getNextRun(job.slug),
|
|
466
|
+
};
|
|
467
|
+
this.state.saveJobState(jobState);
|
|
468
|
+
this.state.appendEvent({
|
|
469
|
+
type: 'job_error',
|
|
470
|
+
summary: `Job "${job.slug}" failed to spawn: ${errorMsg}`,
|
|
471
|
+
timestamp: new Date().toISOString(),
|
|
472
|
+
metadata: { slug: job.slug, consecutiveFailures: failures },
|
|
473
|
+
});
|
|
474
|
+
this.alertOnConsecutiveFailures(job, failures, errorMsg);
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Resolve the model tier for a job. Normally uses the job's configured model,
|
|
479
|
+
* but gates can write a severity file to escalate the model for complex work.
|
|
480
|
+
*
|
|
481
|
+
* The git-sync gate writes to /tmp/instar-git-sync-severity:
|
|
482
|
+
* - "clean" → use configured model (haiku)
|
|
483
|
+
* - "state" → escalate to sonnet (structured conflict resolution)
|
|
484
|
+
* - "code" → escalate to opus (semantic code merge)
|
|
485
|
+
*/
|
|
486
|
+
resolveModelTier(job) {
|
|
487
|
+
if (job.slug === 'git-sync') {
|
|
488
|
+
try {
|
|
489
|
+
const severity = fs.readFileSync('/tmp/instar-git-sync-severity', 'utf-8').trim();
|
|
490
|
+
if (severity === 'code')
|
|
491
|
+
return 'opus';
|
|
492
|
+
if (severity === 'state')
|
|
493
|
+
return 'sonnet';
|
|
494
|
+
}
|
|
495
|
+
catch {
|
|
496
|
+
// @silent-fallback-ok — severity file missing, use default model
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
return job.model;
|
|
500
|
+
}
|
|
501
|
+
buildPrompt(job) {
|
|
502
|
+
let base;
|
|
503
|
+
switch (job.execute.type) {
|
|
504
|
+
case 'skill':
|
|
505
|
+
base = `/${job.execute.value}${job.execute.args ? ' ' + job.execute.args : ''}`;
|
|
506
|
+
break;
|
|
507
|
+
case 'prompt':
|
|
508
|
+
base = job.execute.value;
|
|
509
|
+
break;
|
|
510
|
+
case 'script':
|
|
511
|
+
base = `Run this script: ${job.execute.value}${job.execute.args ? ' ' + job.execute.args : ''}`;
|
|
512
|
+
break;
|
|
513
|
+
}
|
|
514
|
+
// Inject topic awareness for jobs bound to a Telegram topic.
|
|
515
|
+
// This is soft guidance — the job knows where its output will be posted
|
|
516
|
+
// and what the topic's recent focus has been, so it can stay contextually relevant.
|
|
517
|
+
if (job.topicId && this.topicMemory?.isReady()) {
|
|
518
|
+
try {
|
|
519
|
+
const summary = this.topicMemory.getTopicSummary(job.topicId);
|
|
520
|
+
const meta = this.topicMemory.getTopicMeta(job.topicId);
|
|
521
|
+
if (summary?.purpose || meta?.topicName) {
|
|
522
|
+
const awarenessLines = ['[TOPIC AWARENESS]'];
|
|
523
|
+
awarenessLines.push(`This session is bound to Telegram topic${meta?.topicName ? ` "${meta.topicName}"` : ` ${job.topicId}`}.`);
|
|
524
|
+
if (summary?.purpose) {
|
|
525
|
+
awarenessLines.push(`Recent focus: ${summary.purpose}`);
|
|
526
|
+
}
|
|
527
|
+
awarenessLines.push('Your output will be posted to this topic. Keep your results relevant to this context.');
|
|
528
|
+
awarenessLines.push('If your work product doesn\'t fit this topic, note that in your output rather than posting unrelated content.');
|
|
529
|
+
awarenessLines.push('[/TOPIC AWARENESS]');
|
|
530
|
+
base = `${awarenessLines.join(' ')}\n\n${base}`;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
catch {
|
|
534
|
+
// @silent-fallback-ok — topic awareness is non-critical
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
// Inject handoff notes from the last execution (continuity between runs)
|
|
538
|
+
const handoff = this.runHistory.getLastHandoff(job.slug);
|
|
539
|
+
if (handoff) {
|
|
540
|
+
const handoffBlock = [
|
|
541
|
+
'[CONTINUITY FROM PREVIOUS EXECUTION]',
|
|
542
|
+
`Previous session: ${handoff.fromSession} (completed: ${handoff.completedAt})`,
|
|
543
|
+
'',
|
|
544
|
+
'Handoff notes:',
|
|
545
|
+
handoff.handoffNotes,
|
|
546
|
+
handoff.stateSnapshot ? `\nState snapshot: ${JSON.stringify(handoff.stateSnapshot)}` : '',
|
|
547
|
+
'',
|
|
548
|
+
'Use these notes to continue where the previous execution left off.',
|
|
549
|
+
'When done, include [HANDOFF]your notes[/HANDOFF] in your output to pass context to the next execution.',
|
|
550
|
+
'Or run: instar job handoff ' + job.slug + ' --notes "your notes"',
|
|
551
|
+
'[END CONTINUITY]',
|
|
552
|
+
].join('\n');
|
|
553
|
+
base = `${handoffBlock}\n\n${base}`;
|
|
554
|
+
}
|
|
555
|
+
// Inject attention protocol for on-alert jobs so the LLM knows when to signal
|
|
556
|
+
if (this.getNotifyMode(job) === 'on-alert') {
|
|
557
|
+
const protocol = [
|
|
558
|
+
'[NOTIFICATION PROTOCOL: This job runs in quiet mode.',
|
|
559
|
+
'The user will NOT see your output unless you explicitly signal something needs attention.',
|
|
560
|
+
'If you find something actionable or noteworthy, include "[ATTENTION] reason" on its own line in your output.',
|
|
561
|
+
'If everything is routine and healthy, just complete normally — no signal needed, the user won\'t be bothered.]',
|
|
562
|
+
].join(' ');
|
|
563
|
+
return `${protocol}\n\n${base}`;
|
|
564
|
+
}
|
|
565
|
+
return base;
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Resolve the effective notification mode for a job.
|
|
569
|
+
* Default (undefined) → 'on-alert': quiet unless signaled.
|
|
570
|
+
*/
|
|
571
|
+
getNotifyMode(job) {
|
|
572
|
+
if (job.telegramNotify === false)
|
|
573
|
+
return 'never';
|
|
574
|
+
if (job.telegramNotify === true)
|
|
575
|
+
return 'always';
|
|
576
|
+
// undefined or 'on-alert' → on-alert (quiet by default)
|
|
577
|
+
return 'on-alert';
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Check if session output contains an attention signal.
|
|
581
|
+
* The convention: [ATTENTION] on its own line (case-insensitive).
|
|
582
|
+
*/
|
|
583
|
+
hasAttentionSignal(output) {
|
|
584
|
+
return /^\[ATTENTION\]/im.test(output);
|
|
585
|
+
}
|
|
586
|
+
/**
|
|
587
|
+
* Extract handoff notes from session output.
|
|
588
|
+
* Agents can include a [HANDOFF] ... [/HANDOFF] block in their output
|
|
589
|
+
* to leave context for the next execution. This is auto-extracted on completion.
|
|
590
|
+
*/
|
|
591
|
+
static extractHandoff(output) {
|
|
592
|
+
const match = output.match(/\[HANDOFF\]\s*([\s\S]*?)\s*\[\/HANDOFF\]/i);
|
|
593
|
+
return match ? match[1].trim() : null;
|
|
594
|
+
}
|
|
595
|
+
getConsecutiveFailures(slug) {
|
|
596
|
+
return this.state.getJobState(slug)?.consecutiveFailures ?? 0;
|
|
597
|
+
}
|
|
598
|
+
getNextRun(slug) {
|
|
599
|
+
const task = this.cronTasks.get(slug);
|
|
600
|
+
if (!task)
|
|
601
|
+
return undefined;
|
|
602
|
+
const next = task.nextRun();
|
|
603
|
+
return next ? next.toISOString() : undefined;
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Called when a job's session completes. Updates job state and notifies via messenger.
|
|
607
|
+
*/
|
|
608
|
+
async notifyJobComplete(sessionId, tmuxSession) {
|
|
609
|
+
// Find which job this session belongs to by looking up session state
|
|
610
|
+
const session = this.state.getSession(sessionId);
|
|
611
|
+
if (!session?.jobSlug)
|
|
612
|
+
return;
|
|
613
|
+
const job = this.jobs.find(j => j.slug === session.jobSlug);
|
|
614
|
+
if (!job)
|
|
615
|
+
return;
|
|
616
|
+
// Update job state with completion result
|
|
617
|
+
const failed = session.status === 'failed' || session.status === 'killed';
|
|
618
|
+
// Capture session output FIRST — needed for both history and notifications
|
|
619
|
+
let output = '';
|
|
620
|
+
try {
|
|
621
|
+
output = this.sessionManager.captureOutput(tmuxSession) ?? '';
|
|
622
|
+
}
|
|
623
|
+
catch {
|
|
624
|
+
// Session may already be dead — that's fine
|
|
625
|
+
}
|
|
626
|
+
// Record completion in run history (with output summary)
|
|
627
|
+
const runId = this.activeRunIds.get(session.name);
|
|
628
|
+
if (runId) {
|
|
629
|
+
this.runHistory.recordCompletion({
|
|
630
|
+
runId,
|
|
631
|
+
result: session.status === 'killed' ? 'timeout' : (failed ? 'failure' : 'success'),
|
|
632
|
+
error: failed ? `Session ${session.status} (${session.name})` : undefined,
|
|
633
|
+
outputSummary: output ? output.slice(-1000) : undefined,
|
|
634
|
+
});
|
|
635
|
+
// Auto-extract handoff notes from session output if agent included [HANDOFF] marker
|
|
636
|
+
const handoff = JobScheduler.extractHandoff(output);
|
|
637
|
+
if (handoff) {
|
|
638
|
+
this.runHistory.recordHandoff(runId, handoff);
|
|
639
|
+
}
|
|
640
|
+
this.activeRunIds.delete(session.name);
|
|
641
|
+
}
|
|
642
|
+
// Signal claim completion (Phase 4C — Gap 5)
|
|
643
|
+
if (this.claimManager) {
|
|
644
|
+
this.claimManager.completeClaim(job.slug, failed ? 'failure' : 'success').catch(err => {
|
|
645
|
+
console.error(`[scheduler] Failed to broadcast claim completion for "${job.slug}": ${err}`);
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
// Clear active-job.json now that the job is done
|
|
649
|
+
const activeJob = this.state.get('active-job');
|
|
650
|
+
if (activeJob?.slug === job.slug) {
|
|
651
|
+
this.state.delete('active-job');
|
|
652
|
+
}
|
|
653
|
+
const existingState = this.state.getJobState(job.slug);
|
|
654
|
+
const jobState = {
|
|
655
|
+
slug: job.slug,
|
|
656
|
+
lastRun: existingState?.lastRun ?? new Date().toISOString(),
|
|
657
|
+
lastResult: failed ? 'failure' : 'success',
|
|
658
|
+
lastError: failed ? `Session ${session.status} (${session.name})` : undefined,
|
|
659
|
+
consecutiveFailures: failed ? (existingState?.consecutiveFailures ?? 0) + 1 : 0,
|
|
660
|
+
nextScheduled: this.getNextRun(job.slug),
|
|
661
|
+
};
|
|
662
|
+
this.state.saveJobState(jobState);
|
|
663
|
+
// Alert on consecutive failures
|
|
664
|
+
if (failed && jobState.lastError) {
|
|
665
|
+
this.alertOnConsecutiveFailures(job, jobState.consecutiveFailures, jobState.lastError);
|
|
666
|
+
}
|
|
667
|
+
// Finalize Living Skills execution journal if enabled
|
|
668
|
+
if (job.livingSkills?.enabled) {
|
|
669
|
+
try {
|
|
670
|
+
const journal = new ExecutionJournal(this.stateDir);
|
|
671
|
+
const definedSteps = (job.livingSkills.definedSteps ?? []).map(s => typeof s === 'string' ? s : s.step);
|
|
672
|
+
journal.finalizeSession({
|
|
673
|
+
sessionId,
|
|
674
|
+
jobSlug: job.slug,
|
|
675
|
+
definedSteps,
|
|
676
|
+
outcome: failed ? 'failure' : 'success',
|
|
677
|
+
startedAt: existingState?.lastRun ?? session.startedAt,
|
|
678
|
+
});
|
|
679
|
+
// Clean up sentinel file
|
|
680
|
+
const sentinelPath = path.join(this.stateDir, 'state', 'execution-journal', `_ls-enabled-${job.slug}`);
|
|
681
|
+
try {
|
|
682
|
+
fs.unlinkSync(sentinelPath);
|
|
683
|
+
}
|
|
684
|
+
catch { /* already gone */ }
|
|
685
|
+
}
|
|
686
|
+
catch (err) {
|
|
687
|
+
console.error(`[scheduler] ExecutionJournal finalization failed for "${job.slug}": ${err}`);
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
// IntegrationGate — synchronous learning consolidation before queue drain.
|
|
691
|
+
// When the gate is set, reflection runs synchronously (awaited) and blocks
|
|
692
|
+
// queue drain if a failed job produces no learning.
|
|
693
|
+
if (this.integrationGate) {
|
|
694
|
+
const gateResult = await this.integrationGate.evaluate({
|
|
695
|
+
job,
|
|
696
|
+
sessionId,
|
|
697
|
+
runId: runId ?? null,
|
|
698
|
+
failed,
|
|
699
|
+
output,
|
|
700
|
+
topicId: job.topicId,
|
|
701
|
+
});
|
|
702
|
+
if (!gateResult.proceed) {
|
|
703
|
+
console.error(`[scheduler] IntegrationGate blocked for "${job.slug}": ${gateResult.gateBlockReason}`);
|
|
704
|
+
this.state.appendEvent({
|
|
705
|
+
type: 'integration_gate_blocked',
|
|
706
|
+
summary: `IntegrationGate blocked queue drain for "${job.slug}": ${gateResult.gateBlockReason}`,
|
|
707
|
+
timestamp: new Date().toISOString(),
|
|
708
|
+
metadata: { slug: job.slug, reason: gateResult.gateBlockReason },
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
else {
|
|
712
|
+
this.processQueue();
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
else if (this.intelligence) {
|
|
716
|
+
// Fallback: no gate, run standalone reflection (existing fire-and-forget)
|
|
717
|
+
const reflectionModel = job.livingSkills?.reflectionModel ?? undefined;
|
|
718
|
+
this.runJobReflection(job.slug, sessionId, runId ?? null, job.topicId, reflectionModel).catch(err => {
|
|
719
|
+
console.error(`[scheduler] Per-job reflection failed for "${job.slug}": ${err}`);
|
|
720
|
+
});
|
|
721
|
+
this.processQueue();
|
|
722
|
+
}
|
|
723
|
+
else {
|
|
724
|
+
this.processQueue();
|
|
725
|
+
}
|
|
726
|
+
// Skip notifications if no messaging configured or job opted out
|
|
727
|
+
if (!this.messenger && !this.telegram)
|
|
728
|
+
return;
|
|
729
|
+
const notifyMode = this.getNotifyMode(job);
|
|
730
|
+
if (notifyMode === 'never')
|
|
731
|
+
return;
|
|
732
|
+
// Output was already captured above for run history — reuse it
|
|
733
|
+
// Classify death cause if session failed/was killed
|
|
734
|
+
let deathCause;
|
|
735
|
+
if (failed && output) {
|
|
736
|
+
const quotaState = this.quotaTracker?.getState() ?? null;
|
|
737
|
+
const classification = classifySessionDeath(output, quotaState);
|
|
738
|
+
deathCause = classification.cause;
|
|
739
|
+
this.state.appendEvent({
|
|
740
|
+
type: 'session_death_classified',
|
|
741
|
+
summary: `Session for "${job.slug}" classified as ${classification.cause} (${classification.confidence}): ${classification.detail}`,
|
|
742
|
+
timestamp: new Date().toISOString(),
|
|
743
|
+
metadata: {
|
|
744
|
+
slug: job.slug,
|
|
745
|
+
cause: classification.cause,
|
|
746
|
+
confidence: classification.confidence,
|
|
747
|
+
detail: classification.detail,
|
|
748
|
+
},
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
// Build a summary message
|
|
752
|
+
const duration = session.startedAt
|
|
753
|
+
? Math.round((Date.now() - new Date(session.startedAt).getTime()) / 1000)
|
|
754
|
+
: 0;
|
|
755
|
+
const durationStr = duration > 60
|
|
756
|
+
? `${Math.floor(duration / 60)}m ${duration % 60}s`
|
|
757
|
+
: `${duration}s`;
|
|
758
|
+
let summary = `*Job Complete: ${job.name}*\n`;
|
|
759
|
+
summary += `Status: ${failed ? 'Failed' : 'Done'}`;
|
|
760
|
+
if (deathCause && deathCause !== 'unknown')
|
|
761
|
+
summary += ` (${deathCause})`;
|
|
762
|
+
summary += '\n';
|
|
763
|
+
if (duration > 0)
|
|
764
|
+
summary += `Duration: ${durationStr}\n`;
|
|
765
|
+
if (output) {
|
|
766
|
+
// Trim to last ~500 chars to keep the message readable
|
|
767
|
+
const trimmed = output.length > 500
|
|
768
|
+
? '...' + output.slice(-500)
|
|
769
|
+
: output;
|
|
770
|
+
summary += `\n\`\`\`\n${trimmed}\n\`\`\``;
|
|
771
|
+
}
|
|
772
|
+
else {
|
|
773
|
+
summary += '\n_No output captured (session already closed)_';
|
|
774
|
+
}
|
|
775
|
+
// Skip Telegram notification for jobs with no meaningful output — applies regardless of status.
|
|
776
|
+
// Failure alerts are already handled by alertOnConsecutiveFailures above.
|
|
777
|
+
// Prevents "No output captured (session already closed)" spam on every failed cycle.
|
|
778
|
+
if (!output || !output.trim()) {
|
|
779
|
+
console.log(`[scheduler] Skipping notification for ${job.slug} — no meaningful output`);
|
|
780
|
+
return;
|
|
781
|
+
}
|
|
782
|
+
// On-alert mode: only notify if the job failed or explicitly signaled attention.
|
|
783
|
+
// This is the core of the "quiet by default" behavior — routine completions are silent.
|
|
784
|
+
if (notifyMode === 'on-alert' && !failed && !this.hasAttentionSignal(output)) {
|
|
785
|
+
console.log(`[scheduler] Skipping notification for ${job.slug} — on-alert mode, no attention signal`);
|
|
786
|
+
return;
|
|
787
|
+
}
|
|
788
|
+
// Lazy topic creation for on-alert jobs that need to send their first notification.
|
|
789
|
+
// Topics aren't created eagerly for these jobs — only when there's something to report.
|
|
790
|
+
if (this.telegram && !job.topicId && notifyMode === 'on-alert') {
|
|
791
|
+
try {
|
|
792
|
+
const topic = await this.telegram.findOrCreateForumTopic(`${TOPIC_STYLE.JOB.emoji} Job: ${job.name}`, TOPIC_STYLE.JOB.color);
|
|
793
|
+
job.topicId = topic.topicId;
|
|
794
|
+
this.saveJobTopicMapping(job.slug, topic.topicId);
|
|
795
|
+
}
|
|
796
|
+
catch (err) {
|
|
797
|
+
console.error(`[scheduler] Failed to create lazy topic for ${job.slug}: ${err}`);
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
// Send to the job's dedicated topic if available, otherwise fall back to generic messenger
|
|
801
|
+
if (this.telegram && job.topicId) {
|
|
802
|
+
try {
|
|
803
|
+
await this.telegram.sendToTopic(job.topicId, summary);
|
|
804
|
+
}
|
|
805
|
+
catch (err) {
|
|
806
|
+
console.error(`[scheduler] Failed to send to job topic ${job.topicId}: ${err}`);
|
|
807
|
+
// Topic may have been deleted — try to recreate
|
|
808
|
+
try {
|
|
809
|
+
const newTopic = await this.telegram.findOrCreateForumTopic(`${TOPIC_STYLE.JOB.emoji} Job: ${job.name}`, TOPIC_STYLE.JOB.color);
|
|
810
|
+
job.topicId = newTopic.topicId;
|
|
811
|
+
this.saveJobTopicMapping(job.slug, newTopic.topicId);
|
|
812
|
+
await this.telegram.sendToTopic(newTopic.topicId, summary);
|
|
813
|
+
}
|
|
814
|
+
catch (recreateErr) {
|
|
815
|
+
console.error(`[scheduler] Failed to recreate topic for ${job.slug}: ${recreateErr}`);
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
else if (this.messenger) {
|
|
820
|
+
try {
|
|
821
|
+
await this.messenger.send({
|
|
822
|
+
userId: 'system',
|
|
823
|
+
content: summary,
|
|
824
|
+
});
|
|
825
|
+
}
|
|
826
|
+
catch (err) {
|
|
827
|
+
console.error(`[scheduler] Failed to send job notification: ${err}`);
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
/**
|
|
832
|
+
* Ensure every enabled job has a Telegram topic.
|
|
833
|
+
* Creates topics for jobs that don't have one.
|
|
834
|
+
* This is the "job-topic coupling" — every job lives in a topic.
|
|
835
|
+
*/
|
|
836
|
+
async ensureJobTopics(enabledJobs) {
|
|
837
|
+
if (!this.telegram)
|
|
838
|
+
return;
|
|
839
|
+
// Load existing topic mappings
|
|
840
|
+
const mappings = this.state.get('job-topic-mappings') ?? {};
|
|
841
|
+
for (const job of enabledJobs) {
|
|
842
|
+
// Skip eager topic creation for silent or on-alert jobs.
|
|
843
|
+
// On-alert jobs get topics created lazily when they first have something to report.
|
|
844
|
+
const mode = this.getNotifyMode(job);
|
|
845
|
+
if (mode === 'never' || mode === 'on-alert') {
|
|
846
|
+
// Clean up stale topic mappings from before on-alert was the default.
|
|
847
|
+
// Older versions created topics eagerly for ALL jobs. Close and remove them.
|
|
848
|
+
const staleTopicId = job.topicId || mappings[job.slug];
|
|
849
|
+
if (staleTopicId) {
|
|
850
|
+
console.log(`[scheduler] Cleaning up stale topic for on-alert job "${job.slug}" (topic ${staleTopicId})`);
|
|
851
|
+
try {
|
|
852
|
+
await this.telegram.closeForumTopic(staleTopicId);
|
|
853
|
+
}
|
|
854
|
+
catch {
|
|
855
|
+
// @silent-fallback-ok — topic may already be closed or deleted, cleanup is best-effort
|
|
856
|
+
}
|
|
857
|
+
delete mappings[job.slug];
|
|
858
|
+
job.topicId = undefined;
|
|
859
|
+
}
|
|
860
|
+
continue;
|
|
861
|
+
}
|
|
862
|
+
// If job already has a topicId (from jobs.json or previous mapping), use it
|
|
863
|
+
if (job.topicId) {
|
|
864
|
+
mappings[job.slug] = job.topicId;
|
|
865
|
+
continue;
|
|
866
|
+
}
|
|
867
|
+
// Check if we have a saved mapping
|
|
868
|
+
if (mappings[job.slug]) {
|
|
869
|
+
job.topicId = mappings[job.slug];
|
|
870
|
+
continue;
|
|
871
|
+
}
|
|
872
|
+
// Create a new topic for this job
|
|
873
|
+
try {
|
|
874
|
+
const topic = await this.telegram.findOrCreateForumTopic(`${TOPIC_STYLE.JOB.emoji} Job: ${job.name}`, TOPIC_STYLE.JOB.color);
|
|
875
|
+
job.topicId = topic.topicId;
|
|
876
|
+
mappings[job.slug] = topic.topicId;
|
|
877
|
+
await this.telegram.sendToTopic(topic.topicId, `*${job.name}*\n${job.description}\n\nSchedule: \`${job.schedule}\`\nPriority: ${job.priority}\n\nThis topic is the home for this job. Reports, status updates, and errors will appear here.`);
|
|
878
|
+
}
|
|
879
|
+
catch (err) {
|
|
880
|
+
console.error(`[scheduler] Failed to create topic for job ${job.slug}: ${err}`);
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
this.state.set('job-topic-mappings', mappings);
|
|
884
|
+
}
|
|
885
|
+
/**
|
|
886
|
+
* Save a job-topic mapping (used when recreating a deleted topic).
|
|
887
|
+
*/
|
|
888
|
+
saveJobTopicMapping(slug, topicId) {
|
|
889
|
+
const mappings = this.state.get('job-topic-mappings') ?? {};
|
|
890
|
+
mappings[slug] = topicId;
|
|
891
|
+
this.state.set('job-topic-mappings', mappings);
|
|
892
|
+
}
|
|
893
|
+
/**
|
|
894
|
+
* Run a job's gate command. Returns true if the job should proceed, false to skip.
|
|
895
|
+
* Gates are zero-token pre-screening — a bash command that exits 0 (proceed) or non-zero (skip).
|
|
896
|
+
*/
|
|
897
|
+
runGate(job) {
|
|
898
|
+
try {
|
|
899
|
+
execFileSync('/bin/sh', ['-c', job.gate], {
|
|
900
|
+
encoding: 'utf-8',
|
|
901
|
+
timeout: 10000,
|
|
902
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
903
|
+
});
|
|
904
|
+
return true;
|
|
905
|
+
}
|
|
906
|
+
catch {
|
|
907
|
+
// @silent-fallback-ok — gate command non-zero exit means skip
|
|
908
|
+
this.state.appendEvent({
|
|
909
|
+
type: 'job_gate_skip',
|
|
910
|
+
summary: `Job "${job.slug}" skipped — gate check returned nothing to do`,
|
|
911
|
+
timestamp: new Date().toISOString(),
|
|
912
|
+
metadata: { slug: job.slug },
|
|
913
|
+
});
|
|
914
|
+
return false;
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Alert when a job hits consecutive failure thresholds.
|
|
919
|
+
* Critical/high priority jobs alert after 2 failures.
|
|
920
|
+
* Medium/low priority jobs alert after 3 failures.
|
|
921
|
+
* Only alerts at the threshold (not every failure after).
|
|
922
|
+
*
|
|
923
|
+
* When the failure is a session limit issue (not a job execution error),
|
|
924
|
+
* the notification is reframed as "Job Blocked" with intelligent diagnostics:
|
|
925
|
+
* running session list with ages, stale session flags, memory pressure,
|
|
926
|
+
* and actionable suggestions.
|
|
927
|
+
*/
|
|
928
|
+
alertOnConsecutiveFailures(job, failures, error) {
|
|
929
|
+
const threshold = (job.priority === 'critical' || job.priority === 'high') ? 2 : 3;
|
|
930
|
+
if (failures !== threshold)
|
|
931
|
+
return;
|
|
932
|
+
const isSessionBlocked = error.includes('Max sessions') && error.includes('reached');
|
|
933
|
+
let alertText;
|
|
934
|
+
if (isSessionBlocked) {
|
|
935
|
+
alertText = this.buildSessionBlockedAlert(job, failures, error);
|
|
936
|
+
}
|
|
937
|
+
else {
|
|
938
|
+
alertText = `*Job Alert: ${job.name}*\n\n${failures} consecutive failures.\nLast error: ${error}\nPriority: ${job.priority}`;
|
|
939
|
+
}
|
|
940
|
+
// Send to job's topic if available
|
|
941
|
+
if (this.telegram && job.topicId) {
|
|
942
|
+
this.telegram.sendToTopic(job.topicId, alertText).catch(err => {
|
|
943
|
+
console.error(`[scheduler] Failed to send failure alert: ${err}`);
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
else if (this.messenger) {
|
|
947
|
+
this.messenger.send({ userId: 'system', content: alertText }).catch(err => {
|
|
948
|
+
console.error(`[scheduler] Failed to send failure alert: ${err}`);
|
|
949
|
+
});
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
/**
|
|
953
|
+
* Build an intelligent "Job Blocked" notification when a job can't start
|
|
954
|
+
* because all session slots are occupied. Includes session diagnostics,
|
|
955
|
+
* staleness detection, memory pressure, and actionable suggestions.
|
|
956
|
+
*/
|
|
957
|
+
buildSessionBlockedAlert(job, failures, error) {
|
|
958
|
+
const diagnostics = this.sessionManager.getSessionDiagnostics();
|
|
959
|
+
const lines = [];
|
|
960
|
+
lines.push(`*Job Blocked: ${job.name}*`);
|
|
961
|
+
lines.push('');
|
|
962
|
+
lines.push(`Could not start — all ${diagnostics.maxSessions} session slots are in use.`);
|
|
963
|
+
lines.push(`(${failures} consecutive attempts blocked)`);
|
|
964
|
+
lines.push('');
|
|
965
|
+
// Session list with ages
|
|
966
|
+
lines.push('*Running sessions:*');
|
|
967
|
+
for (const s of diagnostics.sessions) {
|
|
968
|
+
const age = s.ageMinutes >= 60
|
|
969
|
+
? `${Math.floor(s.ageMinutes / 60)}h ${s.ageMinutes % 60}m`
|
|
970
|
+
: `${s.ageMinutes}m`;
|
|
971
|
+
const staleFlag = s.isStale ? ' ⚠️' : '';
|
|
972
|
+
const jobTag = s.jobSlug ? ` (${s.jobSlug})` : '';
|
|
973
|
+
lines.push(`• ${s.name}${jobTag} — ${age}${staleFlag}`);
|
|
974
|
+
if (s.staleReason) {
|
|
975
|
+
lines.push(` └ ${s.staleReason}`);
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
lines.push('');
|
|
979
|
+
// Memory pressure
|
|
980
|
+
const memEmoji = diagnostics.memoryPressure === 'critical' ? '🔴'
|
|
981
|
+
: diagnostics.memoryPressure === 'high' ? '🟠'
|
|
982
|
+
: diagnostics.memoryPressure === 'moderate' ? '🟡'
|
|
983
|
+
: '🟢';
|
|
984
|
+
lines.push(`Memory: ${memEmoji} ${diagnostics.memoryUsedPercent}% used (${diagnostics.freeMemoryMB} MB free)`);
|
|
985
|
+
lines.push('');
|
|
986
|
+
// Suggestions
|
|
987
|
+
if (diagnostics.suggestions.length > 0) {
|
|
988
|
+
lines.push('*Suggestions:*');
|
|
989
|
+
for (const suggestion of diagnostics.suggestions) {
|
|
990
|
+
lines.push(`→ ${suggestion}`);
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
return lines.join('\n');
|
|
994
|
+
}
|
|
995
|
+
checkMissedJobs(enabledJobs) {
|
|
996
|
+
const now = Date.now();
|
|
997
|
+
// Collect all missed jobs first, then sort by priority before triggering.
|
|
998
|
+
// This ensures high-priority jobs get the available slots when multiple
|
|
999
|
+
// jobs are overdue after a restart or sleep/wake cycle.
|
|
1000
|
+
const missedJobs = [];
|
|
1001
|
+
for (const job of enabledJobs) {
|
|
1002
|
+
const jobState = this.state.getJobState(job.slug);
|
|
1003
|
+
const task = this.cronTasks.get(job.slug);
|
|
1004
|
+
if (!task)
|
|
1005
|
+
continue;
|
|
1006
|
+
// Jobs that have never run: trigger on startup if their first expected
|
|
1007
|
+
// run time has already passed (i.e., the job was added while the server
|
|
1008
|
+
// was down and missed its first scheduled window).
|
|
1009
|
+
if (!jobState?.lastRun) {
|
|
1010
|
+
// Use a large overdueRatio so never-run jobs sort below truly-overdue jobs
|
|
1011
|
+
missedJobs.push({ job, overdueRatio: 1.5 });
|
|
1012
|
+
continue;
|
|
1013
|
+
}
|
|
1014
|
+
const lastRun = new Date(jobState.lastRun).getTime();
|
|
1015
|
+
// Get expected interval from next two runs
|
|
1016
|
+
const nextRun = task.nextRun();
|
|
1017
|
+
const nextNextRun = task.nextRuns(2)[1];
|
|
1018
|
+
if (!nextRun || !nextNextRun)
|
|
1019
|
+
continue;
|
|
1020
|
+
const intervalMs = nextNextRun.getTime() - nextRun.getTime();
|
|
1021
|
+
const timeSinceLastRun = now - lastRun;
|
|
1022
|
+
// If overdue by more than 1.5x the interval, mark as missed
|
|
1023
|
+
if (timeSinceLastRun > intervalMs * 1.5) {
|
|
1024
|
+
missedJobs.push({ job, overdueRatio: timeSinceLastRun / intervalMs });
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
// Sort by priority (critical first), then by how overdue (most overdue first)
|
|
1028
|
+
missedJobs.sort((a, b) => {
|
|
1029
|
+
const priorityDiff = (PRIORITY_ORDER[a.job.priority ?? 'low']) - (PRIORITY_ORDER[b.job.priority ?? 'low']);
|
|
1030
|
+
if (priorityDiff !== 0)
|
|
1031
|
+
return priorityDiff;
|
|
1032
|
+
return b.overdueRatio - a.overdueRatio;
|
|
1033
|
+
});
|
|
1034
|
+
for (const { job } of missedJobs) {
|
|
1035
|
+
this.triggerJob(job.slug, 'missed');
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
/**
|
|
1039
|
+
* Run per-job LLM reflection after execution.
|
|
1040
|
+
* Always-on for every completed job — history is memory.
|
|
1041
|
+
* Persists the reflection to run history and optionally sends to Telegram.
|
|
1042
|
+
*/
|
|
1043
|
+
async runJobReflection(jobSlug, sessionId, runId, topicId, reflectionModel) {
|
|
1044
|
+
if (!this.intelligence)
|
|
1045
|
+
return;
|
|
1046
|
+
// Map ModelTier (opus/sonnet/haiku) to IntelligenceOptions model (capable/balanced/fast)
|
|
1047
|
+
const MODEL_MAP = {
|
|
1048
|
+
opus: 'capable',
|
|
1049
|
+
sonnet: 'balanced',
|
|
1050
|
+
haiku: 'fast',
|
|
1051
|
+
};
|
|
1052
|
+
// Default to 'fast' (haiku) for routine reflections — efficient and sufficient
|
|
1053
|
+
const model = reflectionModel ? MODEL_MAP[reflectionModel] ?? 'fast' : 'fast';
|
|
1054
|
+
const reflector = new JobReflector({
|
|
1055
|
+
stateDir: this.stateDir,
|
|
1056
|
+
intelligence: this.intelligence,
|
|
1057
|
+
model,
|
|
1058
|
+
});
|
|
1059
|
+
const insight = await reflector.reflect(jobSlug, { sessionId });
|
|
1060
|
+
if (!insight)
|
|
1061
|
+
return;
|
|
1062
|
+
// Persist reflection to run history — this is the permanent record
|
|
1063
|
+
if (runId) {
|
|
1064
|
+
this.runHistory.recordReflection(runId, {
|
|
1065
|
+
summary: insight.summary,
|
|
1066
|
+
strengths: insight.strengths,
|
|
1067
|
+
improvements: insight.improvements,
|
|
1068
|
+
deviationAnalysis: insight.deviationAnalysis,
|
|
1069
|
+
purposeDrift: insight.purposeDrift,
|
|
1070
|
+
suggestedChanges: insight.suggestedChanges,
|
|
1071
|
+
});
|
|
1072
|
+
}
|
|
1073
|
+
// Send reflection to the job's Telegram topic
|
|
1074
|
+
if (this.telegram && topicId) {
|
|
1075
|
+
const formatted = reflector.formatInsight(insight);
|
|
1076
|
+
try {
|
|
1077
|
+
await this.telegram.sendToTopic(topicId, formatted);
|
|
1078
|
+
}
|
|
1079
|
+
catch {
|
|
1080
|
+
// Topic may not exist — not critical
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
//# sourceMappingURL=JobScheduler.js.map
|