charness 3.6.1 → 3.7.0
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/CHANGELOG.md +267 -0
- package/DEVELOPMENT.md +31 -5
- package/MIGRATION_RENAME_TO_CHARNESS.md +3 -2
- package/README.md +84 -782
- package/SETUP.md +37 -10
- package/agent-plugin/.claude-plugin/plugin.json +7 -0
- package/agent-plugin/README.md +35 -0
- package/agent-plugin/skills/charness-delegate-claude/SKILL.md +85 -0
- package/agent-plugin/skills/charness-delegate-claude/summarize-events.py +90 -0
- package/agent-plugin/skills/charness-delegate-opencode/SKILL.md +68 -0
- package/agent-plugin/skills/charness-manager/SKILL.md +152 -0
- package/dist/adapters/adapterNames.d.ts +6 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -1
- package/dist/adapters/adapterNames.js +8 -2
- package/dist/adapters/adapterNames.js.map +1 -1
- package/dist/adapters/claudeCliAdapter.d.ts +8 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeCliAdapter.js +42 -5
- package/dist/adapters/claudeCliAdapter.js.map +1 -1
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +10 -9
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeJsonStreamAdapter.js +53 -55
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -1
- package/dist/adapters/createAdapter.d.ts +8 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -1
- package/dist/adapters/createAdapter.js +14 -2
- package/dist/adapters/createAdapter.js.map +1 -1
- package/dist/adapters/openCodeAdapter.d.ts +43 -6
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -1
- package/dist/adapters/openCodeAdapter.js +95 -6
- package/dist/adapters/openCodeAdapter.js.map +1 -1
- package/dist/agentLogin/agentLogin.d.ts +1 -1
- package/dist/agentLogin/agentLogin.d.ts.map +1 -1
- package/dist/apiRetryKick.d.ts +4 -3
- package/dist/apiRetryKick.d.ts.map +1 -1
- package/dist/apiRetryKick.js +16 -9
- package/dist/apiRetryKick.js.map +1 -1
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +1313 -381
- package/dist/bot.js.map +1 -1
- package/dist/cli/claudeProfiles.d.ts +11 -6
- package/dist/cli/claudeProfiles.d.ts.map +1 -1
- package/dist/cli/claudeProfiles.js +50 -22
- package/dist/cli/claudeProfiles.js.map +1 -1
- package/dist/cli/hot.d.ts +5 -0
- package/dist/cli/hot.d.ts.map +1 -1
- package/dist/cli/hot.js +71 -25
- package/dist/cli/hot.js.map +1 -1
- package/dist/cli/tscWatchGuard.d.ts +95 -0
- package/dist/cli/tscWatchGuard.d.ts.map +1 -0
- package/dist/cli/tscWatchGuard.js +295 -0
- package/dist/cli/tscWatchGuard.js.map +1 -0
- package/dist/cli.js +12 -1
- package/dist/cli.js.map +1 -1
- package/dist/connectors/jira/answerSink.d.ts +10 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -1
- package/dist/connectors/jira/answerSink.js +13 -0
- package/dist/connectors/jira/answerSink.js.map +1 -1
- package/dist/connectors/jira/config.d.ts +2 -0
- package/dist/connectors/jira/config.d.ts.map +1 -1
- package/dist/connectors/jira/config.js +9 -1
- package/dist/connectors/jira/config.js.map +1 -1
- package/dist/connectors/jira/connector.d.ts +11 -1
- package/dist/connectors/jira/connector.d.ts.map +1 -1
- package/dist/connectors/jira/connector.js +7 -0
- package/dist/connectors/jira/connector.js.map +1 -1
- package/dist/connectors/jira/inbound.d.ts +27 -4
- package/dist/connectors/jira/inbound.d.ts.map +1 -1
- package/dist/connectors/jira/inbound.js +69 -8
- package/dist/connectors/jira/inbound.js.map +1 -1
- package/dist/connectors/jira/issueBlocks.d.ts +5 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -1
- package/dist/connectors/jira/issueBlocks.js +11 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -1
- package/dist/connectors/telegram/bindPicker.d.ts +5 -0
- package/dist/connectors/telegram/bindPicker.d.ts.map +1 -1
- package/dist/connectors/telegram/bindPicker.js +18 -1
- package/dist/connectors/telegram/bindPicker.js.map +1 -1
- package/dist/connectors/telegram/bindPickerClaims.d.ts +46 -0
- package/dist/connectors/telegram/bindPickerClaims.d.ts.map +1 -0
- package/dist/connectors/telegram/bindPickerClaims.js +83 -0
- package/dist/connectors/telegram/bindPickerClaims.js.map +1 -0
- package/dist/connectors/telegram/bindSweep.d.ts +32 -0
- package/dist/connectors/telegram/bindSweep.d.ts.map +1 -0
- package/dist/connectors/telegram/bindSweep.js +47 -0
- package/dist/connectors/telegram/bindSweep.js.map +1 -0
- package/dist/connectors/telegram/bindingWelcome.d.ts +23 -0
- package/dist/connectors/telegram/bindingWelcome.d.ts.map +1 -0
- package/dist/connectors/telegram/bindingWelcome.js +26 -0
- package/dist/connectors/telegram/bindingWelcome.js.map +1 -0
- package/dist/connectors/telegram/botApiConnection.d.ts +74 -0
- package/dist/connectors/telegram/botApiConnection.d.ts.map +1 -0
- package/dist/connectors/telegram/botApiConnection.js +201 -0
- package/dist/connectors/telegram/botApiConnection.js.map +1 -0
- package/dist/connectors/telegram/commands/botCore.d.ts +8 -2
- package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/botSkills.d.ts +21 -0
- package/dist/connectors/telegram/commands/botSkills.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/botSkills.js +133 -0
- package/dist/connectors/telegram/commands/botSkills.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +5 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/callbackMessage.js +9 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -1
- package/dist/connectors/telegram/commands/compaction.d.ts +65 -3
- package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/compaction.js +512 -94
- package/dist/connectors/telegram/commands/compaction.js.map +1 -1
- package/dist/connectors/telegram/commands/displayModes.d.ts +1 -1
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/displayModes.js +6 -18
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -1
- package/dist/connectors/telegram/commands/fallbackChain.js +5 -5
- package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -1
- package/dist/connectors/telegram/commands/reminders.d.ts +1 -1
- package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/reminders.js +4 -15
- package/dist/connectors/telegram/commands/reminders.js.map +1 -1
- package/dist/connectors/telegram/commands/selfUpdate.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/selfUpdate.js +1 -11
- package/dist/connectors/telegram/commands/selfUpdate.js.map +1 -1
- package/dist/connectors/telegram/commands/taskAgents.d.ts +22 -0
- package/dist/connectors/telegram/commands/taskAgents.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/taskAgents.js +104 -0
- package/dist/connectors/telegram/commands/taskAgents.js.map +1 -0
- package/dist/connectors/telegram/commands/todo.d.ts +82 -0
- package/dist/connectors/telegram/commands/todo.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/todo.js +384 -0
- package/dist/connectors/telegram/commands/todo.js.map +1 -0
- package/dist/connectors/telegram/commands/topicCommand.d.ts +6 -2
- package/dist/connectors/telegram/commands/topicCommand.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/topicCommand.js +6 -9
- package/dist/connectors/telegram/commands/topicCommand.js.map +1 -1
- package/dist/connectors/telegram/openBindMessages.d.ts +45 -0
- package/dist/connectors/telegram/openBindMessages.d.ts.map +1 -0
- package/dist/connectors/telegram/openBindMessages.js +67 -0
- package/dist/connectors/telegram/openBindMessages.js.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts +49 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -1
- package/dist/connectors/telegram/outputFlushPlan.js +46 -0
- package/dist/connectors/telegram/outputFlushPlan.js.map +1 -1
- package/dist/connectors/telegram/pendingTopicName.d.ts +26 -0
- package/dist/connectors/telegram/pendingTopicName.d.ts.map +1 -0
- package/dist/connectors/telegram/pendingTopicName.js +27 -0
- package/dist/connectors/telegram/pendingTopicName.js.map +1 -0
- package/dist/connectors/test/connector.d.ts.map +1 -1
- package/dist/connectors/test/connector.js +6 -1
- package/dist/connectors/test/connector.js.map +1 -1
- package/dist/i18n/de.d.ts.map +1 -1
- package/dist/i18n/de.js +90 -7
- package/dist/i18n/de.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +90 -7
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +90 -7
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +90 -7
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/hi.d.ts.map +1 -1
- package/dist/i18n/hi.js +90 -7
- package/dist/i18n/hi.js.map +1 -1
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ja.js +90 -7
- package/dist/i18n/ja.js.map +1 -1
- package/dist/i18n/ka.d.ts.map +1 -1
- package/dist/i18n/ka.js +90 -7
- package/dist/i18n/ka.js.map +1 -1
- package/dist/i18n/pt.d.ts.map +1 -1
- package/dist/i18n/pt.js +90 -7
- package/dist/i18n/pt.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +90 -7
- package/dist/i18n/ru.js.map +1 -1
- package/dist/i18n/uk.d.ts.map +1 -1
- package/dist/i18n/uk.js +90 -7
- package/dist/i18n/uk.js.map +1 -1
- package/dist/i18n/uz.d.ts.map +1 -1
- package/dist/i18n/uz.js +90 -7
- package/dist/i18n/uz.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +90 -7
- package/dist/i18n/zh.js.map +1 -1
- package/dist/i18n.d.ts +1 -1
- package/dist/i18n.js +1 -1
- package/dist/installManager.d.ts +13 -0
- package/dist/installManager.d.ts.map +1 -1
- package/dist/installManager.js +38 -4
- package/dist/installManager.js.map +1 -1
- package/dist/instanceSettings.d.ts +40 -1
- package/dist/instanceSettings.d.ts.map +1 -1
- package/dist/instanceSettings.js +105 -26
- package/dist/instanceSettings.js.map +1 -1
- package/dist/openCodeQuestionFlow.d.ts +30 -0
- package/dist/openCodeQuestionFlow.d.ts.map +1 -1
- package/dist/openCodeQuestionFlow.js +43 -0
- package/dist/openCodeQuestionFlow.js.map +1 -1
- package/dist/postToSession.d.ts +20 -5
- package/dist/postToSession.d.ts.map +1 -1
- package/dist/postToSession.js +38 -7
- package/dist/postToSession.js.map +1 -1
- package/dist/remoteRun/cliArgs.d.ts +73 -0
- package/dist/remoteRun/cliArgs.d.ts.map +1 -0
- package/dist/remoteRun/cliArgs.js +197 -0
- package/dist/remoteRun/cliArgs.js.map +1 -0
- package/dist/remoteRun/commands.d.ts +56 -0
- package/dist/remoteRun/commands.d.ts.map +1 -0
- package/dist/remoteRun/commands.js +306 -0
- package/dist/remoteRun/commands.js.map +1 -0
- package/dist/remoteRun/depsPlan.d.ts +16 -0
- package/dist/remoteRun/depsPlan.d.ts.map +1 -0
- package/dist/remoteRun/depsPlan.js +82 -0
- package/dist/remoteRun/depsPlan.js.map +1 -0
- package/dist/remoteRun/exitCodes.d.ts +34 -0
- package/dist/remoteRun/exitCodes.d.ts.map +1 -0
- package/dist/remoteRun/exitCodes.js +38 -0
- package/dist/remoteRun/exitCodes.js.map +1 -0
- package/dist/remoteRun/foreground.d.ts +29 -0
- package/dist/remoteRun/foreground.d.ts.map +1 -0
- package/dist/remoteRun/foreground.js +159 -0
- package/dist/remoteRun/foreground.js.map +1 -0
- package/dist/remoteRun/interrupts.d.ts +17 -0
- package/dist/remoteRun/interrupts.d.ts.map +1 -0
- package/dist/remoteRun/interrupts.js +41 -0
- package/dist/remoteRun/interrupts.js.map +1 -0
- package/dist/remoteRun/jobFiles.d.ts +31 -0
- package/dist/remoteRun/jobFiles.d.ts.map +1 -0
- package/dist/remoteRun/jobFiles.js +84 -0
- package/dist/remoteRun/jobFiles.js.map +1 -0
- package/dist/remoteRun/jobFormat.d.ts +16 -0
- package/dist/remoteRun/jobFormat.d.ts.map +1 -0
- package/dist/remoteRun/jobFormat.js +130 -0
- package/dist/remoteRun/jobFormat.js.map +1 -0
- package/dist/remoteRun/jobId.d.ts +15 -0
- package/dist/remoteRun/jobId.d.ts.map +1 -0
- package/dist/remoteRun/jobId.js +85 -0
- package/dist/remoteRun/jobId.js.map +1 -0
- package/dist/remoteRun/jobMeta.d.ts +18 -0
- package/dist/remoteRun/jobMeta.d.ts.map +1 -0
- package/dist/remoteRun/jobMeta.js +33 -0
- package/dist/remoteRun/jobMeta.js.map +1 -0
- package/dist/remoteRun/jobQuery.d.ts +12 -0
- package/dist/remoteRun/jobQuery.d.ts.map +1 -0
- package/dist/remoteRun/jobQuery.js +22 -0
- package/dist/remoteRun/jobQuery.js.map +1 -0
- package/dist/remoteRun/jobRecords.d.ts +22 -0
- package/dist/remoteRun/jobRecords.d.ts.map +1 -0
- package/dist/remoteRun/jobRecords.js +145 -0
- package/dist/remoteRun/jobRecords.js.map +1 -0
- package/dist/remoteRun/jobState.d.ts +62 -0
- package/dist/remoteRun/jobState.d.ts.map +1 -0
- package/dist/remoteRun/jobState.js +132 -0
- package/dist/remoteRun/jobState.js.map +1 -0
- package/dist/remoteRun/leaseTiming.d.ts +18 -0
- package/dist/remoteRun/leaseTiming.d.ts.map +1 -0
- package/dist/remoteRun/leaseTiming.js +43 -0
- package/dist/remoteRun/leaseTiming.js.map +1 -0
- package/dist/remoteRun/output.d.ts +35 -0
- package/dist/remoteRun/output.d.ts.map +1 -0
- package/dist/remoteRun/output.js +82 -0
- package/dist/remoteRun/output.js.map +1 -0
- package/dist/remoteRun/pathPatterns.d.ts +33 -0
- package/dist/remoteRun/pathPatterns.d.ts.map +1 -0
- package/dist/remoteRun/pathPatterns.js +115 -0
- package/dist/remoteRun/pathPatterns.js.map +1 -0
- package/dist/remoteRun/probe.d.ts +56 -0
- package/dist/remoteRun/probe.d.ts.map +1 -0
- package/dist/remoteRun/probe.js +123 -0
- package/dist/remoteRun/probe.js.map +1 -0
- package/dist/remoteRun/project.d.ts +26 -0
- package/dist/remoteRun/project.d.ts.map +1 -0
- package/dist/remoteRun/project.js +159 -0
- package/dist/remoteRun/project.js.map +1 -0
- package/dist/remoteRun/projectConfig.d.ts +38 -0
- package/dist/remoteRun/projectConfig.d.ts.map +1 -0
- package/dist/remoteRun/projectConfig.js +87 -0
- package/dist/remoteRun/projectConfig.js.map +1 -0
- package/dist/remoteRun/remoteRunCli.d.ts +15 -0
- package/dist/remoteRun/remoteRunCli.d.ts.map +1 -0
- package/dist/remoteRun/remoteRunCli.js +144 -0
- package/dist/remoteRun/remoteRunCli.js.map +1 -0
- package/dist/remoteRun/remoteRunError.d.ts +14 -0
- package/dist/remoteRun/remoteRunError.d.ts.map +1 -0
- package/dist/remoteRun/remoteRunError.js +28 -0
- package/dist/remoteRun/remoteRunError.js.map +1 -0
- package/dist/remoteRun/rsync.d.ts +17 -0
- package/dist/remoteRun/rsync.d.ts.map +1 -0
- package/dist/remoteRun/rsync.js +39 -0
- package/dist/remoteRun/rsync.js.map +1 -0
- package/dist/remoteRun/runnerClient.d.ts +50 -0
- package/dist/remoteRun/runnerClient.d.ts.map +1 -0
- package/dist/remoteRun/runnerClient.js +139 -0
- package/dist/remoteRun/runnerClient.js.map +1 -0
- package/dist/remoteRun/runners.d.ts +57 -0
- package/dist/remoteRun/runners.d.ts.map +1 -0
- package/dist/remoteRun/runners.js +181 -0
- package/dist/remoteRun/runners.js.map +1 -0
- package/dist/remoteRun/runnersConfig.d.ts +44 -0
- package/dist/remoteRun/runnersConfig.d.ts.map +1 -0
- package/dist/remoteRun/runnersConfig.js +107 -0
- package/dist/remoteRun/runnersConfig.js.map +1 -0
- package/dist/remoteRun/safeCopy.d.ts +31 -0
- package/dist/remoteRun/safeCopy.d.ts.map +1 -0
- package/dist/remoteRun/safeCopy.js +137 -0
- package/dist/remoteRun/safeCopy.js.map +1 -0
- package/dist/remoteRun/sendPlan.d.ts +67 -0
- package/dist/remoteRun/sendPlan.d.ts.map +1 -0
- package/dist/remoteRun/sendPlan.js +139 -0
- package/dist/remoteRun/sendPlan.js.map +1 -0
- package/dist/remoteRun/ssh.d.ts +62 -0
- package/dist/remoteRun/ssh.d.ts.map +1 -0
- package/dist/remoteRun/ssh.js +202 -0
- package/dist/remoteRun/ssh.js.map +1 -0
- package/dist/remoteRun/submit.d.ts +29 -0
- package/dist/remoteRun/submit.d.ts.map +1 -0
- package/dist/remoteRun/submit.js +142 -0
- package/dist/remoteRun/submit.js.map +1 -0
- package/dist/requests/answerRequest.d.ts +5 -0
- package/dist/requests/answerRequest.d.ts.map +1 -1
- package/dist/requests/answerRequest.js +16 -1
- package/dist/requests/answerRequest.js.map +1 -1
- package/dist/requests/requestLedger.d.ts +13 -0
- package/dist/requests/requestLedger.d.ts.map +1 -1
- package/dist/requests/requestLedger.js +9 -0
- package/dist/requests/requestLedger.js.map +1 -1
- package/dist/requests/topicRequestSettle.d.ts +30 -0
- package/dist/requests/topicRequestSettle.d.ts.map +1 -0
- package/dist/requests/topicRequestSettle.js +23 -0
- package/dist/requests/topicRequestSettle.js.map +1 -0
- package/dist/requests/wakeUpEngine.d.ts +4 -0
- package/dist/requests/wakeUpEngine.d.ts.map +1 -1
- package/dist/requests/wakeUpEngine.js +5 -1
- package/dist/requests/wakeUpEngine.js.map +1 -1
- package/dist/scheduler/delivery.d.ts +2 -0
- package/dist/scheduler/delivery.d.ts.map +1 -1
- package/dist/scheduler/delivery.js +8 -4
- package/dist/scheduler/delivery.js.map +1 -1
- package/dist/scheduler/mcpSurface.d.ts +59 -10
- package/dist/scheduler/mcpSurface.d.ts.map +1 -1
- package/dist/scheduler/mcpSurface.js +276 -79
- package/dist/scheduler/mcpSurface.js.map +1 -1
- package/dist/scheduler/recurrence.d.ts +5 -0
- package/dist/scheduler/recurrence.d.ts.map +1 -1
- package/dist/scheduler/recurrence.js +12 -2
- package/dist/scheduler/recurrence.js.map +1 -1
- package/dist/scheduler/strictToolInput.d.ts +45 -0
- package/dist/scheduler/strictToolInput.d.ts.map +1 -0
- package/dist/scheduler/strictToolInput.js +155 -0
- package/dist/scheduler/strictToolInput.js.map +1 -0
- package/dist/scheduler/types.d.ts +5 -0
- package/dist/scheduler/types.d.ts.map +1 -1
- package/dist/scheduler/workerWatch.d.ts +23 -0
- package/dist/scheduler/workerWatch.d.ts.map +1 -0
- package/dist/scheduler/workerWatch.js +26 -0
- package/dist/scheduler/workerWatch.js.map +1 -0
- package/dist/selfUpdate/emittedSource.d.ts +11 -0
- package/dist/selfUpdate/emittedSource.d.ts.map +1 -0
- package/dist/selfUpdate/emittedSource.js +24 -0
- package/dist/selfUpdate/emittedSource.js.map +1 -0
- package/dist/selfUpdate/gitSource.d.ts +0 -6
- package/dist/selfUpdate/gitSource.d.ts.map +1 -1
- package/dist/selfUpdate/gitSource.js +2 -18
- package/dist/selfUpdate/gitSource.js.map +1 -1
- package/dist/selfUpdate/updatePending.d.ts +1 -1
- package/dist/sendErrorClassifier.d.ts +10 -0
- package/dist/sendErrorClassifier.d.ts.map +1 -1
- package/dist/sendErrorClassifier.js +22 -0
- package/dist/sendErrorClassifier.js.map +1 -1
- package/dist/state.d.ts +78 -7
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +125 -8
- package/dist/state.js.map +1 -1
- package/dist/stateFile.d.ts +9 -0
- package/dist/stateFile.d.ts.map +1 -0
- package/dist/stateFile.js +57 -0
- package/dist/stateFile.js.map +1 -0
- package/dist/stt/sttInstall.d.ts +7 -3
- package/dist/stt/sttInstall.d.ts.map +1 -1
- package/dist/stt/sttInstall.js +8 -4
- package/dist/stt/sttInstall.js.map +1 -1
- package/dist/stt/sttSettings.d.ts +2 -1
- package/dist/stt/sttSettings.d.ts.map +1 -1
- package/dist/stt/sttSettings.js +3 -2
- package/dist/stt/sttSettings.js.map +1 -1
- package/dist/stt/transcribeChain.js +2 -0
- package/dist/stt/transcribeChain.js.map +1 -1
- package/dist/testTimings.d.ts +13 -3
- package/dist/testTimings.d.ts.map +1 -1
- package/dist/testTimings.js +26 -2
- package/dist/testTimings.js.map +1 -1
- package/dist/todos/board.d.ts +83 -0
- package/dist/todos/board.d.ts.map +1 -0
- package/dist/todos/board.js +227 -0
- package/dist/todos/board.js.map +1 -0
- package/dist/todos/format.d.ts +33 -0
- package/dist/todos/format.d.ts.map +1 -0
- package/dist/todos/format.js +90 -0
- package/dist/todos/format.js.map +1 -0
- package/dist/todos/merge.d.ts +46 -0
- package/dist/todos/merge.d.ts.map +1 -0
- package/dist/todos/merge.js +137 -0
- package/dist/todos/merge.js.map +1 -0
- package/dist/todos/midTurn.d.ts +75 -0
- package/dist/todos/midTurn.d.ts.map +1 -0
- package/dist/todos/midTurn.js +214 -0
- package/dist/todos/midTurn.js.map +1 -0
- package/dist/todos/nag.d.ts +85 -0
- package/dist/todos/nag.d.ts.map +1 -0
- package/dist/todos/nag.js +103 -0
- package/dist/todos/nag.js.map +1 -0
- package/dist/todos/order.d.ts +25 -0
- package/dist/todos/order.d.ts.map +1 -0
- package/dist/todos/order.js +61 -0
- package/dist/todos/order.js.map +1 -0
- package/dist/todos/projects.d.ts +102 -0
- package/dist/todos/projects.d.ts.map +1 -0
- package/dist/todos/projects.js +342 -0
- package/dist/todos/projects.js.map +1 -0
- package/dist/todos/registry.d.ts +64 -0
- package/dist/todos/registry.d.ts.map +1 -0
- package/dist/todos/registry.js +116 -0
- package/dist/todos/registry.js.map +1 -0
- package/dist/todos/reminderEngine.d.ts +78 -0
- package/dist/todos/reminderEngine.d.ts.map +1 -0
- package/dist/todos/reminderEngine.js +162 -0
- package/dist/todos/reminderEngine.js.map +1 -0
- package/dist/todos/store.d.ts +34 -0
- package/dist/todos/store.d.ts.map +1 -0
- package/dist/todos/store.js +208 -0
- package/dist/todos/store.js.map +1 -0
- package/dist/todos/tools.d.ts +26 -0
- package/dist/todos/tools.d.ts.map +1 -0
- package/dist/todos/tools.js +25 -0
- package/dist/todos/tools.js.map +1 -0
- package/dist/todos/types.d.ts +85 -0
- package/dist/todos/types.d.ts.map +1 -0
- package/dist/todos/types.js +30 -0
- package/dist/todos/types.js.map +1 -0
- package/dist/trackers/taskAgentLimit.d.ts +58 -0
- package/dist/trackers/taskAgentLimit.d.ts.map +1 -0
- package/dist/trackers/taskAgentLimit.js +62 -0
- package/dist/trackers/taskAgentLimit.js.map +1 -0
- package/dist/trackers/taskAgentSlots.d.ts +109 -0
- package/dist/trackers/taskAgentSlots.d.ts.map +1 -0
- package/dist/trackers/taskAgentSlots.js +227 -0
- package/dist/trackers/taskAgentSlots.js.map +1 -0
- package/dist/trackers/types.d.ts +14 -0
- package/dist/trackers/types.d.ts.map +1 -0
- package/dist/trackers/types.js +3 -0
- package/dist/trackers/types.js.map +1 -0
- package/dist/types.d.ts +80 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/adoptReplayGate.d.ts +16 -0
- package/dist/utils/adoptReplayGate.d.ts.map +1 -0
- package/dist/utils/adoptReplayGate.js +35 -0
- package/dist/utils/adoptReplayGate.js.map +1 -0
- package/dist/utils/agentPlugin.d.ts +113 -0
- package/dist/utils/agentPlugin.d.ts.map +1 -0
- package/dist/utils/agentPlugin.js +192 -0
- package/dist/utils/agentPlugin.js.map +1 -0
- package/dist/utils/autoContinueOnLimit.d.ts +7 -4
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -1
- package/dist/utils/autoContinueOnLimit.js +8 -5
- package/dist/utils/autoContinueOnLimit.js.map +1 -1
- package/dist/utils/botSkills.d.ts +62 -0
- package/dist/utils/botSkills.d.ts.map +1 -0
- package/dist/utils/botSkills.js +53 -0
- package/dist/utils/botSkills.js.map +1 -0
- package/dist/utils/botSkillsSetting.d.ts +7 -0
- package/dist/utils/botSkillsSetting.d.ts.map +1 -0
- package/dist/utils/botSkillsSetting.js +9 -0
- package/dist/utils/botSkillsSetting.js.map +1 -0
- package/dist/utils/claudeCodeVersion.d.ts +7 -0
- package/dist/utils/claudeCodeVersion.d.ts.map +1 -1
- package/dist/utils/claudeCodeVersion.js +14 -1
- package/dist/utils/claudeCodeVersion.js.map +1 -1
- package/dist/utils/claudeCompactHook.d.ts +33 -15
- package/dist/utils/claudeCompactHook.d.ts.map +1 -1
- package/dist/utils/claudeCompactHook.js +36 -17
- package/dist/utils/claudeCompactHook.js.map +1 -1
- package/dist/utils/claudeCompactSummary.d.ts +15 -0
- package/dist/utils/claudeCompactSummary.d.ts.map +1 -0
- package/dist/utils/claudeCompactSummary.js +96 -0
- package/dist/utils/claudeCompactSummary.js.map +1 -0
- package/dist/utils/claudeLimitSwitch.d.ts +11 -9
- package/dist/utils/claudeLimitSwitch.d.ts.map +1 -1
- package/dist/utils/claudeLimitSwitch.js +18 -16
- package/dist/utils/claudeLimitSwitch.js.map +1 -1
- package/dist/utils/claudeProfiles.d.ts +5 -0
- package/dist/utils/claudeProfiles.d.ts.map +1 -1
- package/dist/utils/claudeProfiles.js +14 -0
- package/dist/utils/claudeProfiles.js.map +1 -1
- package/dist/utils/claudeSessionTitle.d.ts +2 -1
- package/dist/utils/claudeSessionTitle.d.ts.map +1 -1
- package/dist/utils/claudeSessionTitle.js +14 -14
- package/dist/utils/claudeSessionTitle.js.map +1 -1
- package/dist/utils/claudeUsage.d.ts +95 -15
- package/dist/utils/claudeUsage.d.ts.map +1 -1
- package/dist/utils/claudeUsage.js +241 -41
- package/dist/utils/claudeUsage.js.map +1 -1
- package/dist/utils/claudeUsageRefresher.d.ts +10 -0
- package/dist/utils/claudeUsageRefresher.d.ts.map +1 -1
- package/dist/utils/claudeUsageRefresher.js +11 -0
- package/dist/utils/claudeUsageRefresher.js.map +1 -1
- package/dist/utils/claudeUserEntry.d.ts +50 -0
- package/dist/utils/claudeUserEntry.d.ts.map +1 -0
- package/dist/utils/claudeUserEntry.js +120 -0
- package/dist/utils/claudeUserEntry.js.map +1 -0
- package/dist/utils/clearThreadOutputQueues.d.ts +4 -3
- package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -1
- package/dist/utils/clearThreadOutputQueues.js +1 -1
- package/dist/utils/clearThreadOutputQueues.js.map +1 -1
- package/dist/utils/compactOnIdle.d.ts +33 -13
- package/dist/utils/compactOnIdle.d.ts.map +1 -1
- package/dist/utils/compactOnIdle.js +35 -15
- package/dist/utils/compactOnIdle.js.map +1 -1
- package/dist/utils/fallbackBridge.d.ts +5 -0
- package/dist/utils/fallbackBridge.d.ts.map +1 -1
- package/dist/utils/fallbackBridge.js +19 -3
- package/dist/utils/fallbackBridge.js.map +1 -1
- package/dist/utils/fallbackChain.d.ts +9 -3
- package/dist/utils/fallbackChain.d.ts.map +1 -1
- package/dist/utils/fallbackChain.js +21 -3
- package/dist/utils/fallbackChain.js.map +1 -1
- package/dist/utils/fileSendPlan.d.ts +6 -0
- package/dist/utils/fileSendPlan.d.ts.map +1 -1
- package/dist/utils/fileSendPlan.js +11 -0
- package/dist/utils/fileSendPlan.js.map +1 -1
- package/dist/utils/fileSendService.d.ts +7 -1
- package/dist/utils/fileSendService.d.ts.map +1 -1
- package/dist/utils/fileSendService.js +6 -2
- package/dist/utils/fileSendService.js.map +1 -1
- package/dist/utils/groupFinalizePlan.d.ts +8 -10
- package/dist/utils/groupFinalizePlan.d.ts.map +1 -1
- package/dist/utils/groupFinalizePlan.js +8 -12
- package/dist/utils/groupFinalizePlan.js.map +1 -1
- package/dist/utils/jsonStreamHost.d.ts +13 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -1
- package/dist/utils/jsonStreamHost.js +13 -0
- package/dist/utils/jsonStreamHost.js.map +1 -1
- package/dist/utils/messageSendService.d.ts +5 -3
- package/dist/utils/messageSendService.d.ts.map +1 -1
- package/dist/utils/messageSendService.js +12 -5
- package/dist/utils/messageSendService.js.map +1 -1
- package/dist/utils/openCodeCompactPlugin.d.ts +39 -14
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -1
- package/dist/utils/openCodeCompactPlugin.js +106 -38
- package/dist/utils/openCodeCompactPlugin.js.map +1 -1
- package/dist/utils/promptDelivery.d.ts +29 -12
- package/dist/utils/promptDelivery.d.ts.map +1 -1
- package/dist/utils/promptDelivery.js +13 -5
- package/dist/utils/promptDelivery.js.map +1 -1
- package/dist/utils/sentKindsSummary.d.ts +10 -0
- package/dist/utils/sentKindsSummary.d.ts.map +1 -0
- package/dist/utils/sentKindsSummary.js +18 -0
- package/dist/utils/sentKindsSummary.js.map +1 -0
- package/dist/utils/telegramError.d.ts +6 -0
- package/dist/utils/telegramError.d.ts.map +1 -1
- package/dist/utils/telegramError.js +12 -0
- package/dist/utils/telegramError.js.map +1 -1
- package/dist/utils/topicView.d.ts +1 -1
- package/dist/utils/topicView.js +1 -1
- package/dist/utils/transcribeAudio.d.ts +10 -0
- package/dist/utils/transcribeAudio.d.ts.map +1 -1
- package/dist/utils/transcribeAudio.js +22 -3
- package/dist/utils/transcribeAudio.js.map +1 -1
- package/dist/utils/transcriptErrorTime.d.ts +8 -0
- package/dist/utils/transcriptErrorTime.d.ts.map +1 -0
- package/dist/utils/transcriptErrorTime.js +56 -0
- package/dist/utils/transcriptErrorTime.js.map +1 -0
- package/dist/utils/wedgeRecovery.d.ts +2 -0
- package/dist/utils/wedgeRecovery.d.ts.map +1 -1
- package/dist/utils/wedgeRecovery.js +1 -1
- package/dist/utils/wedgeRecovery.js.map +1 -1
- package/package.json +11 -3
- package/remoteRun/runner.sh +1242 -0
- package/stt/gigaam_sidecar.py +555 -50
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The skills Charness gives every agent session it starts (`agent-plugin/` at the package root, a
|
|
3
|
+
* Claude Code plugin named `charness`): `charness-manager` and the two worker-delegation skills, which name the
|
|
4
|
+
* bot's own tools. The operator's own sessions outside the bot never get them. The «Bot skills» switch
|
|
5
|
+
* (`utils/botSkills.ts`, `/bot_skills`) turns them off: per conversation for Claude, for the whole instance for OpenCode.
|
|
6
|
+
*
|
|
7
|
+
* - Claude Code loads the folder through `--plugin-dir` on every bot launch of an agent session — also under
|
|
8
|
+
* `--setting-sources project,local` (a Jira session), probed on 2.1.310 — and lists the skills as
|
|
9
|
+
* `charness:<folder>` beside the user's and the project's own. A CLI older than the flag
|
|
10
|
+
* (`minPluginDirClaudeCodeVersion`) refuses to start with it, so such a CLI starts without the skills.
|
|
11
|
+
* - OpenCode reads `OPENCODE_CONFIG_DIR` once, when its server starts, and adds the `skills/` of that folder to the
|
|
12
|
+
* project's and the user's own (probed on the installed build; `OPENCODE_CONFIG_CONTENT` was no option: its
|
|
13
|
+
* `skills` list REPLACES the project's). The folder is a bot-owned one in `DATA_DIR` whose `skills` links to the
|
|
14
|
+
* package's, because OpenCode writes files (`.gitignore`) into it — inside the package they would dirty a checkout
|
|
15
|
+
* the bot runs from. One server serves every topic, so only the INSTANCE value of the switch decides whether it gets the
|
|
16
|
+
* folder; a server started the other way round is replaced at the boot step ({@link getOpenCodeAgentSkillsServerAction}).
|
|
17
|
+
*/
|
|
18
|
+
export declare const agentPluginSkillsDirName = "skills";
|
|
19
|
+
/**
|
|
20
|
+
* @description The plugin folder that ships in the package, two levels above this module (`src/utils` under tsx,
|
|
21
|
+
* `dist/utils` once built), or null when it is missing (a broken install): a launch then goes without it rather than
|
|
22
|
+
* failing on a folder Claude Code cannot load.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveAgentPluginDir(): string | null;
|
|
25
|
+
/** @description `claude --version` of `claudeBinary` (`2.1.310 (Claude Code)`), cached; null when it cannot be read (not cached). */
|
|
26
|
+
export declare function readClaudeCodeVersion(claudeBinary: string): Promise<string | null>;
|
|
27
|
+
/**
|
|
28
|
+
* @description The Claude Code flags that load the bot's skills into an agent session: `--plugin-dir <folder>` — none
|
|
29
|
+
* when the conversation has the skills switched off (`isBotSkillsEnabled`, read at every launch and resume), when the
|
|
30
|
+
* folder is missing, or when the CLI is older than the flag or its version cannot be read (announced once): an unknown
|
|
31
|
+
* option would stop the launch itself.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getClaudeAgentPluginFlags(claudeBinary: string, isBotSkillsEnabled: boolean, pluginDir?: string | null, readVersion?: (binary: string) => Promise<string | null>): Promise<string[]>;
|
|
34
|
+
/** OpenCode's variable naming an extra config folder, searched like a project's `.opencode` (its `skills/` included). */
|
|
35
|
+
export declare const openCodeConfigDirEnvName = "OPENCODE_CONFIG_DIR";
|
|
36
|
+
/** @description The bot-owned OpenCode config folder in `DATA_DIR`. */
|
|
37
|
+
export declare function getOpenCodeAgentConfigDir(dataDir: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* @description Make the bot's OpenCode config folder hold a `skills` link to the package's skills (created, or
|
|
40
|
+
* re-pointed when a move of the package left it stale) and return the folder; null when there is nothing to link or a
|
|
41
|
+
* `skills` there is not the bot's link (left alone) or the folder cannot be written — the server then starts without
|
|
42
|
+
* the bot's skills.
|
|
43
|
+
*/
|
|
44
|
+
export declare function prepareOpenCodeAgentConfigDir(dataDir: string, pluginDir?: string | null): string | null;
|
|
45
|
+
/**
|
|
46
|
+
* @description What the `opencode serve` the bot starts gets on top of its environment: `OPENCODE_CONFIG_DIR` naming the
|
|
47
|
+
* bot's folder — nothing when the instance has the skills switched off (`isBotSkillsEnabled`, the instance value), the
|
|
48
|
+
* operator set the variable (theirs is kept; announced once) or the folder cannot be prepared.
|
|
49
|
+
*/
|
|
50
|
+
export declare function getOpenCodeAgentConfigEnv(env: NodeJS.ProcessEnv, dataDir: string, isBotSkillsEnabled: boolean): Record<string, string>;
|
|
51
|
+
/**
|
|
52
|
+
* @name OpenCodeServerLaunchReading
|
|
53
|
+
* @description What the bot can read about the running OpenCode server's launch: `none` — no server answers on its
|
|
54
|
+
* endpoint (a Claude-only instance, OpenCode not started yet); `unknown` — a server answers but is not a process it
|
|
55
|
+
* can identify as `opencode … serve` (a server elsewhere, a test's stand-in, no `/proc`, a listener whose PID it
|
|
56
|
+
* cannot read — another user's, or no `lsof` / `ss`); otherwise the
|
|
57
|
+
* `OPENCODE_CONFIG_DIR` it was started with (null: none) and whether the bot owns it (its process record).
|
|
58
|
+
*/
|
|
59
|
+
export type OpenCodeServerLaunchReading = {
|
|
60
|
+
kind: 'none';
|
|
61
|
+
} | {
|
|
62
|
+
kind: 'unknown';
|
|
63
|
+
} | {
|
|
64
|
+
kind: 'openCodeServe';
|
|
65
|
+
configDir: string | null;
|
|
66
|
+
isOwnedByBot: boolean;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* @description The reading when no listener PID could be found: `none` only if no server answers its health check —
|
|
70
|
+
* a PID that cannot be read (another user's process, no `lsof` / `ss`) does not prove there is no server.
|
|
71
|
+
*/
|
|
72
|
+
export declare function getPidlessServerLaunchReading(isServerAnswering: boolean): OpenCodeServerLaunchReading;
|
|
73
|
+
/** @description What the `/proc` entries of a server's process say, before the bot's own record of who started it. */
|
|
74
|
+
export type OpenCodeServeProcessReading = {
|
|
75
|
+
kind: 'unknown';
|
|
76
|
+
} | {
|
|
77
|
+
kind: 'openCodeServe';
|
|
78
|
+
configDir: string | null;
|
|
79
|
+
};
|
|
80
|
+
/** @description Read a server's launch from its `/proc/<pid>/cmdline` and `/proc/<pid>/environ` contents. */
|
|
81
|
+
export declare function parseOpenCodeServerLaunch(cmdline: string, environ: string): OpenCodeServeProcessReading;
|
|
82
|
+
/**
|
|
83
|
+
* @name OpenCodeAgentSkillsExpectation
|
|
84
|
+
* @description What the boot step expects of the running server's launch: `unmanaged` — the bot offers no folder and never
|
|
85
|
+
* replaces a server for the skills (the operator's own `OPENCODE_CONFIG_DIR`, no plugin folder, a folder that cannot be
|
|
86
|
+
* prepared: a replacement would come up the same way and the next boot would replace it again); `offered` — the server must
|
|
87
|
+
* have been started with `configDir`; `withheld` — the instance switched the skills off, so the server must NOT carry the
|
|
88
|
+
* bot's `configDir`.
|
|
89
|
+
*/
|
|
90
|
+
export type OpenCodeAgentSkillsExpectation = {
|
|
91
|
+
kind: 'unmanaged';
|
|
92
|
+
} | {
|
|
93
|
+
kind: 'offered';
|
|
94
|
+
configDir: string;
|
|
95
|
+
} | {
|
|
96
|
+
kind: 'withheld';
|
|
97
|
+
configDir: string;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* @description The expectation for a server of the instance whose switch reads `isBotSkillsEnabled`. The folder an
|
|
101
|
+
* `offered` server must carry is prepared here, so it is the folder a new server WOULD get.
|
|
102
|
+
*/
|
|
103
|
+
export declare function getOpenCodeAgentSkillsExpectation(env: NodeJS.ProcessEnv, dataDir: string, isBotSkillsEnabled: boolean): OpenCodeAgentSkillsExpectation;
|
|
104
|
+
/**
|
|
105
|
+
* @name OpenCodeAgentSkillsServerAction
|
|
106
|
+
* @description What the boot step does about the running server: nothing (no server runs, it was started the way the
|
|
107
|
+
* switch says, or the bot manages nothing); replace it (an `opencode serve` the bot owns, started the other way); or leave
|
|
108
|
+
* it and say why — a server the bot does not own (locked decision D5: never touched), or a listener it cannot identify.
|
|
109
|
+
*/
|
|
110
|
+
export type OpenCodeAgentSkillsServerAction = 'none' | 'replace' | 'skipNotOwned' | 'skipUnidentified';
|
|
111
|
+
/** @description Decide the boot step's action from the server's launch and what the switch expects of it. */
|
|
112
|
+
export declare function getOpenCodeAgentSkillsServerAction(reading: OpenCodeServerLaunchReading, expectation: OpenCodeAgentSkillsExpectation): OpenCodeAgentSkillsServerAction;
|
|
113
|
+
//# sourceMappingURL=agentPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentPlugin.d.ts","sourceRoot":"","sources":["../../src/utils/agentPlugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAaH,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAGrD;AAKD,qIAAqI;AACrI,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYxF;AAID;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,OAAO,EAC3B,SAAS,GAAE,MAAM,GAAG,IAA8B,EAClD,WAAW,GAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAyB,GAC9E,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,yHAAyH;AACzH,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAG9D,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,IAA8B,GAAG,MAAM,GAAG,IAAI,CAoBhI;AAID;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWtI;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,2BAA2B,GACnC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/E;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,iBAAiB,EAAE,OAAO,GAAG,2BAA2B,CAErG;AAED,sHAAsH;AACtH,MAAM,MAAM,2BAA2B,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAMpH,6GAA6G;AAC7G,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,2BAA2B,CAOvG;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,8BAA8B,GACtC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,8BAA8B,CAKtJ;AAED;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,kBAAkB,CAAC;AAEvG,6GAA6G;AAC7G,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,8BAA8B,GAAG,+BAA+B,CAMrK"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description The skills Charness gives every agent session it starts (`agent-plugin/` at the package root, a
|
|
4
|
+
* Claude Code plugin named `charness`): `charness-manager` and the two worker-delegation skills, which name the
|
|
5
|
+
* bot's own tools. The operator's own sessions outside the bot never get them. The «Bot skills» switch
|
|
6
|
+
* (`utils/botSkills.ts`, `/bot_skills`) turns them off: per conversation for Claude, for the whole instance for OpenCode.
|
|
7
|
+
*
|
|
8
|
+
* - Claude Code loads the folder through `--plugin-dir` on every bot launch of an agent session — also under
|
|
9
|
+
* `--setting-sources project,local` (a Jira session), probed on 2.1.310 — and lists the skills as
|
|
10
|
+
* `charness:<folder>` beside the user's and the project's own. A CLI older than the flag
|
|
11
|
+
* (`minPluginDirClaudeCodeVersion`) refuses to start with it, so such a CLI starts without the skills.
|
|
12
|
+
* - OpenCode reads `OPENCODE_CONFIG_DIR` once, when its server starts, and adds the `skills/` of that folder to the
|
|
13
|
+
* project's and the user's own (probed on the installed build; `OPENCODE_CONFIG_CONTENT` was no option: its
|
|
14
|
+
* `skills` list REPLACES the project's). The folder is a bot-owned one in `DATA_DIR` whose `skills` links to the
|
|
15
|
+
* package's, because OpenCode writes files (`.gitignore`) into it — inside the package they would dirty a checkout
|
|
16
|
+
* the bot runs from. One server serves every topic, so only the INSTANCE value of the switch decides whether it gets the
|
|
17
|
+
* folder; a server started the other way round is replaced at the boot step ({@link getOpenCodeAgentSkillsServerAction}).
|
|
18
|
+
*/
|
|
19
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.openCodeConfigDirEnvName = exports.agentPluginSkillsDirName = void 0;
|
|
24
|
+
exports.resolveAgentPluginDir = resolveAgentPluginDir;
|
|
25
|
+
exports.readClaudeCodeVersion = readClaudeCodeVersion;
|
|
26
|
+
exports.getClaudeAgentPluginFlags = getClaudeAgentPluginFlags;
|
|
27
|
+
exports.getOpenCodeAgentConfigDir = getOpenCodeAgentConfigDir;
|
|
28
|
+
exports.prepareOpenCodeAgentConfigDir = prepareOpenCodeAgentConfigDir;
|
|
29
|
+
exports.getOpenCodeAgentConfigEnv = getOpenCodeAgentConfigEnv;
|
|
30
|
+
exports.getPidlessServerLaunchReading = getPidlessServerLaunchReading;
|
|
31
|
+
exports.parseOpenCodeServerLaunch = parseOpenCodeServerLaunch;
|
|
32
|
+
exports.getOpenCodeAgentSkillsExpectation = getOpenCodeAgentSkillsExpectation;
|
|
33
|
+
exports.getOpenCodeAgentSkillsServerAction = getOpenCodeAgentSkillsServerAction;
|
|
34
|
+
const child_process_1 = require("child_process");
|
|
35
|
+
const fs_1 = __importDefault(require("fs"));
|
|
36
|
+
const path_1 = __importDefault(require("path"));
|
|
37
|
+
const util_1 = require("util");
|
|
38
|
+
const claudeCodeVersion_1 = require("./claudeCodeVersion");
|
|
39
|
+
const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
|
|
40
|
+
/** A `claude --version` that takes longer is treated as an unknown version (the launch then goes without the flag). */
|
|
41
|
+
const claudeVersionReadTimeoutMs = 10_000;
|
|
42
|
+
const agentPluginDirName = 'agent-plugin';
|
|
43
|
+
exports.agentPluginSkillsDirName = 'skills';
|
|
44
|
+
/**
|
|
45
|
+
* @description The plugin folder that ships in the package, two levels above this module (`src/utils` under tsx,
|
|
46
|
+
* `dist/utils` once built), or null when it is missing (a broken install): a launch then goes without it rather than
|
|
47
|
+
* failing on a folder Claude Code cannot load.
|
|
48
|
+
*/
|
|
49
|
+
function resolveAgentPluginDir() {
|
|
50
|
+
const pluginDir = path_1.default.join(fs_1.default.realpathSync(__dirname), '..', '..', agentPluginDirName);
|
|
51
|
+
return fs_1.default.existsSync(path_1.default.join(pluginDir, exports.agentPluginSkillsDirName)) ? pluginDir : null;
|
|
52
|
+
}
|
|
53
|
+
/** The version each Claude binary reported, read once per bot process (a hot reload or a restart reads again). */
|
|
54
|
+
const claudeVersionByBinary = new Map();
|
|
55
|
+
/** @description `claude --version` of `claudeBinary` (`2.1.310 (Claude Code)`), cached; null when it cannot be read (not cached). */
|
|
56
|
+
async function readClaudeCodeVersion(claudeBinary) {
|
|
57
|
+
const cached = claudeVersionByBinary.get(claudeBinary);
|
|
58
|
+
if (cached !== undefined)
|
|
59
|
+
return cached;
|
|
60
|
+
try {
|
|
61
|
+
const { stdout } = await execFileAsync(claudeBinary, ['--version'], { timeout: claudeVersionReadTimeoutMs, encoding: 'utf8' });
|
|
62
|
+
const version = stdout.split('\n')[0].trim();
|
|
63
|
+
if (!version)
|
|
64
|
+
return null;
|
|
65
|
+
claudeVersionByBinary.set(claudeBinary, version);
|
|
66
|
+
return version;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
let isOldClaudeAnnounced = false;
|
|
73
|
+
/**
|
|
74
|
+
* @description The Claude Code flags that load the bot's skills into an agent session: `--plugin-dir <folder>` — none
|
|
75
|
+
* when the conversation has the skills switched off (`isBotSkillsEnabled`, read at every launch and resume), when the
|
|
76
|
+
* folder is missing, or when the CLI is older than the flag or its version cannot be read (announced once): an unknown
|
|
77
|
+
* option would stop the launch itself.
|
|
78
|
+
*/
|
|
79
|
+
async function getClaudeAgentPluginFlags(claudeBinary, isBotSkillsEnabled, pluginDir = resolveAgentPluginDir(), readVersion = readClaudeCodeVersion) {
|
|
80
|
+
if (!isBotSkillsEnabled || pluginDir === null)
|
|
81
|
+
return [];
|
|
82
|
+
const version = await readVersion(claudeBinary);
|
|
83
|
+
if (!(0, claudeCodeVersion_1.checkIsClaudePluginDirSupported)(version)) {
|
|
84
|
+
if (!isOldClaudeAnnounced) {
|
|
85
|
+
isOldClaudeAnnounced = true;
|
|
86
|
+
console.log(`[agentPlugin] Claude Code ${version ?? '(version unreadable)'} predates --plugin-dir (${claudeCodeVersion_1.minPluginDirClaudeCodeVersion}); its sessions start without the bot's skills`);
|
|
87
|
+
}
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
return ['--plugin-dir', pluginDir];
|
|
91
|
+
}
|
|
92
|
+
/** OpenCode's variable naming an extra config folder, searched like a project's `.opencode` (its `skills/` included). */
|
|
93
|
+
exports.openCodeConfigDirEnvName = 'OPENCODE_CONFIG_DIR';
|
|
94
|
+
const openCodeAgentConfigDirName = 'opencode-config';
|
|
95
|
+
/** @description The bot-owned OpenCode config folder in `DATA_DIR`. */
|
|
96
|
+
function getOpenCodeAgentConfigDir(dataDir) {
|
|
97
|
+
return path_1.default.join(path_1.default.resolve(dataDir), openCodeAgentConfigDirName);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @description Make the bot's OpenCode config folder hold a `skills` link to the package's skills (created, or
|
|
101
|
+
* re-pointed when a move of the package left it stale) and return the folder; null when there is nothing to link or a
|
|
102
|
+
* `skills` there is not the bot's link (left alone) or the folder cannot be written — the server then starts without
|
|
103
|
+
* the bot's skills.
|
|
104
|
+
*/
|
|
105
|
+
function prepareOpenCodeAgentConfigDir(dataDir, pluginDir = resolveAgentPluginDir()) {
|
|
106
|
+
if (pluginDir === null)
|
|
107
|
+
return null;
|
|
108
|
+
const configDir = getOpenCodeAgentConfigDir(dataDir);
|
|
109
|
+
const skillsLink = path_1.default.join(configDir, exports.agentPluginSkillsDirName);
|
|
110
|
+
const skillsTarget = path_1.default.join(pluginDir, exports.agentPluginSkillsDirName);
|
|
111
|
+
try {
|
|
112
|
+
fs_1.default.mkdirSync(configDir, { recursive: true, mode: 0o700 });
|
|
113
|
+
const existing = fs_1.default.lstatSync(skillsLink, { throwIfNoEntry: false });
|
|
114
|
+
if (existing && !existing.isSymbolicLink()) {
|
|
115
|
+
console.warn(`[agentPlugin] ${skillsLink} is not the bot's link; OpenCode starts without the bot's skills`);
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
if (existing && fs_1.default.readlinkSync(skillsLink) === skillsTarget)
|
|
119
|
+
return configDir;
|
|
120
|
+
if (existing)
|
|
121
|
+
fs_1.default.unlinkSync(skillsLink);
|
|
122
|
+
fs_1.default.symlinkSync(skillsTarget, skillsLink, 'dir');
|
|
123
|
+
return configDir;
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
console.warn(`[agentPlugin] cannot prepare ${configDir}; OpenCode starts without the bot's skills:`, e instanceof Error ? e.message : e);
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
let isOperatorConfigDirAnnounced = false;
|
|
131
|
+
/**
|
|
132
|
+
* @description What the `opencode serve` the bot starts gets on top of its environment: `OPENCODE_CONFIG_DIR` naming the
|
|
133
|
+
* bot's folder — nothing when the instance has the skills switched off (`isBotSkillsEnabled`, the instance value), the
|
|
134
|
+
* operator set the variable (theirs is kept; announced once) or the folder cannot be prepared.
|
|
135
|
+
*/
|
|
136
|
+
function getOpenCodeAgentConfigEnv(env, dataDir, isBotSkillsEnabled) {
|
|
137
|
+
if (!isBotSkillsEnabled)
|
|
138
|
+
return {};
|
|
139
|
+
if (env[exports.openCodeConfigDirEnvName]) {
|
|
140
|
+
if (!isOperatorConfigDirAnnounced) {
|
|
141
|
+
isOperatorConfigDirAnnounced = true;
|
|
142
|
+
console.log(`[agentPlugin] ${exports.openCodeConfigDirEnvName} is set by the operator and kept; OpenCode topics go without the bot's skills`);
|
|
143
|
+
}
|
|
144
|
+
return {};
|
|
145
|
+
}
|
|
146
|
+
const configDir = prepareOpenCodeAgentConfigDir(dataDir);
|
|
147
|
+
return configDir === null ? {} : { [exports.openCodeConfigDirEnvName]: configDir };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* @description The reading when no listener PID could be found: `none` only if no server answers its health check —
|
|
151
|
+
* a PID that cannot be read (another user's process, no `lsof` / `ss`) does not prove there is no server.
|
|
152
|
+
*/
|
|
153
|
+
function getPidlessServerLaunchReading(isServerAnswering) {
|
|
154
|
+
return isServerAnswering ? { kind: 'unknown' } : { kind: 'none' };
|
|
155
|
+
}
|
|
156
|
+
const openCodeServeCommand = 'serve';
|
|
157
|
+
const openCodeExecutableNamePrefix = 'opencode';
|
|
158
|
+
const procEntrySeparator = '\0';
|
|
159
|
+
/** @description Read a server's launch from its `/proc/<pid>/cmdline` and `/proc/<pid>/environ` contents. */
|
|
160
|
+
function parseOpenCodeServerLaunch(cmdline, environ) {
|
|
161
|
+
const argv = cmdline.split(procEntrySeparator).filter(Boolean);
|
|
162
|
+
const isOpenCodeServe = path_1.default.basename(argv[0] ?? '').startsWith(openCodeExecutableNamePrefix) && argv.includes(openCodeServeCommand);
|
|
163
|
+
if (!isOpenCodeServe)
|
|
164
|
+
return { kind: 'unknown' };
|
|
165
|
+
const prefix = `${exports.openCodeConfigDirEnvName}=`;
|
|
166
|
+
const entry = environ.split(procEntrySeparator).find((variable) => variable.startsWith(prefix));
|
|
167
|
+
return { kind: 'openCodeServe', configDir: entry === undefined ? null : entry.slice(prefix.length) };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* @description The expectation for a server of the instance whose switch reads `isBotSkillsEnabled`. The folder an
|
|
171
|
+
* `offered` server must carry is prepared here, so it is the folder a new server WOULD get.
|
|
172
|
+
*/
|
|
173
|
+
function getOpenCodeAgentSkillsExpectation(env, dataDir, isBotSkillsEnabled) {
|
|
174
|
+
if (env[exports.openCodeConfigDirEnvName])
|
|
175
|
+
return { kind: 'unmanaged' };
|
|
176
|
+
if (!isBotSkillsEnabled)
|
|
177
|
+
return { kind: 'withheld', configDir: getOpenCodeAgentConfigDir(dataDir) };
|
|
178
|
+
const configDir = prepareOpenCodeAgentConfigDir(dataDir);
|
|
179
|
+
return configDir === null ? { kind: 'unmanaged' } : { kind: 'offered', configDir };
|
|
180
|
+
}
|
|
181
|
+
/** @description Decide the boot step's action from the server's launch and what the switch expects of it. */
|
|
182
|
+
function getOpenCodeAgentSkillsServerAction(reading, expectation) {
|
|
183
|
+
if (expectation.kind === 'unmanaged' || reading.kind === 'none')
|
|
184
|
+
return 'none';
|
|
185
|
+
if (reading.kind === 'unknown')
|
|
186
|
+
return 'skipUnidentified';
|
|
187
|
+
const isCarryingBotFolder = reading.configDir === expectation.configDir;
|
|
188
|
+
if (isCarryingBotFolder === (expectation.kind === 'offered'))
|
|
189
|
+
return 'none';
|
|
190
|
+
return reading.isOwnedByBot ? 'replace' : 'skipNotOwned';
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=agentPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentPlugin.js","sourceRoot":"","sources":["../../src/utils/agentPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,10 +20,13 @@
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function resolveAutoContinueOnLimitEnabled(globalDefault: boolean | undefined, threadOverride: boolean | undefined): boolean;
|
|
22
22
|
/**
|
|
23
|
-
* @description Resolve whether the bot may
|
|
24
|
-
*
|
|
25
|
-
* override wins; otherwise the instance default; unset everywhere ⇒
|
|
26
|
-
*
|
|
23
|
+
* @description Resolve whether the bot may move a limited topic to the next entry of the fallback list by itself — another
|
|
24
|
+
* Claude account profile, or an OpenCode provider and model (`/limits_autoswitch`; the decisions live in `claudeLimitSwitch.ts`,
|
|
25
|
+
* which re-exports this). A per-thread override wins; otherwise the instance default; unset everywhere ⇒ ON, with any number of
|
|
26
|
+
* signed-in accounts — a limit should not strand the work while another entry has room, and with a single account and no list
|
|
27
|
+
* there is simply nothing to move to. An OpenCode entry hands the conversation over in compacted form, so an operator who does
|
|
28
|
+
* not want that turns this OFF or keeps OpenCode out of the list. An explicit OFF (stored `false`) stays off. Kept beside its sibling so `state.ts`
|
|
29
|
+
* loads no more than it did.
|
|
27
30
|
*/
|
|
28
31
|
export declare function resolveClaudeAutoSwitchOnLimitEnabled(globalDefault: boolean | undefined, threadOverride: boolean | undefined): boolean;
|
|
29
32
|
/** `callback_data` prefix of the «skip this resume once» button. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoContinueOnLimit.d.ts","sourceRoot":"","sources":["../../src/utils/autoContinueOnLimit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,cAAc,EAAE,OAAO,GAAG,SAAS,GAClC,OAAO,CAET;AAED
|
|
1
|
+
{"version":3,"file":"autoContinueOnLimit.d.ts","sourceRoot":"","sources":["../../src/utils/autoContinueOnLimit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,cAAc,EAAE,OAAO,GAAG,SAAS,GAClC,OAAO,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,cAAc,EAAE,OAAO,GAAG,SAAS,GAClC,OAAO,CAET;AAED,oEAAoE;AACpE,eAAO,MAAM,4BAA4B,cAAc,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,mFAAmF;AACnF,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,GAAG,SAAS,CAGrB"}
|
|
@@ -31,13 +31,16 @@ function resolveAutoContinueOnLimitEnabled(globalDefault, threadOverride) {
|
|
|
31
31
|
return (0, threadToggle_1.resolveDefaultOnThreadToggle)(globalDefault, threadOverride);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* @description Resolve whether the bot may
|
|
35
|
-
*
|
|
36
|
-
* override wins; otherwise the instance default; unset everywhere ⇒
|
|
37
|
-
*
|
|
34
|
+
* @description Resolve whether the bot may move a limited topic to the next entry of the fallback list by itself — another
|
|
35
|
+
* Claude account profile, or an OpenCode provider and model (`/limits_autoswitch`; the decisions live in `claudeLimitSwitch.ts`,
|
|
36
|
+
* which re-exports this). A per-thread override wins; otherwise the instance default; unset everywhere ⇒ ON, with any number of
|
|
37
|
+
* signed-in accounts — a limit should not strand the work while another entry has room, and with a single account and no list
|
|
38
|
+
* there is simply nothing to move to. An OpenCode entry hands the conversation over in compacted form, so an operator who does
|
|
39
|
+
* not want that turns this OFF or keeps OpenCode out of the list. An explicit OFF (stored `false`) stays off. Kept beside its sibling so `state.ts`
|
|
40
|
+
* loads no more than it did.
|
|
38
41
|
*/
|
|
39
42
|
function resolveClaudeAutoSwitchOnLimitEnabled(globalDefault, threadOverride) {
|
|
40
|
-
return (0, threadToggle_1.
|
|
43
|
+
return (0, threadToggle_1.resolveDefaultOnThreadToggle)(globalDefault, threadOverride);
|
|
41
44
|
}
|
|
42
45
|
/** `callback_data` prefix of the «skip this resume once» button. */
|
|
43
46
|
exports.skipArmedRetryCallbackPrefix = 'acl_skip_';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoContinueOnLimit.js","sourceRoot":"","sources":["../../src/utils/autoContinueOnLimit.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAUH,8EAKC;
|
|
1
|
+
{"version":3,"file":"autoContinueOnLimit.js","sourceRoot":"","sources":["../../src/utils/autoContinueOnLimit.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAUH,8EAKC;AAWD,sFAKC;AAaD,0EAEC;AAGD,0EAKC;AAYD,8DAMC;AAtED,iDAA8D;AAE9D;;;;;GAKG;AACH,SAAgB,iCAAiC,CAC/C,aAAkC,EAClC,cAAmC;IAEnC,OAAO,IAAA,2CAA4B,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,qCAAqC,CACnD,aAAkC,EAClC,cAAmC;IAEnC,OAAO,IAAA,2CAA4B,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACrE,CAAC;AAED,oEAAoE;AACvD,QAAA,4BAA4B,GAAG,WAAW,CAAC;AAExD;;;;;;;GAOG;AACH,SAAgB,+BAA+B,CAAC,MAAc;IAC5D,OAAO,GAAG,oCAA4B,GAAG,MAAM,EAAE,CAAC;AACpD,CAAC;AAED,mFAAmF;AACnF,SAAgB,+BAA+B,CAAC,IAAY;IAC1D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oCAA4B,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,oCAA4B,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,yBAAyB,CAAC,KAGzC;IACC,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The «Bot skills» switch (`/bot_skills`): whether the skills the bot ships with its agents (`agent-plugin/`,
|
|
3
|
+
* loaded by `utils/agentPlugin.ts`) and the hint to load `charness-manager` (the bot MCP instructions) reach an agent.
|
|
4
|
+
*
|
|
5
|
+
* One value decides it, read in this order — the first that is set wins:
|
|
6
|
+
*
|
|
7
|
+
* 1. the topic's own choice (`/bot_skills` in the topic; a Jira conversation has none),
|
|
8
|
+
* 2. the General value (`/bot_skills` in General, kept in `state.json`),
|
|
9
|
+
* 3. `settings.json`'s `botSkills` — the way an instance without General (Jira only) sets it,
|
|
10
|
+
* 4. ON.
|
|
11
|
+
*
|
|
12
|
+
* Read by the layers that start an agent (both Claude adapters, the OpenCode server's start, the bot MCP's instructions),
|
|
13
|
+
* which must not reach `state.ts` or `bot.ts`: the composition root registers the reader once at boot. Until then — the hot
|
|
14
|
+
* supervisor starts the OpenCode server before any state is loaded — the reader knows only `settings.json`.
|
|
15
|
+
*/
|
|
16
|
+
import type { SessionKey } from '../sessionKey';
|
|
17
|
+
import type { BotSkillsSetting } from './botSkillsSetting';
|
|
18
|
+
export type { BotSkillsSetting };
|
|
19
|
+
/**
|
|
20
|
+
* @description Resolve the switch from the topic's choice and the instance default. A topic choice (true OR false) wins;
|
|
21
|
+
* otherwise the default; nothing set ⇒ ON — the skills shipped unconditionally before the switch existed.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveBotSkillsEnabled(globalDefault: boolean | undefined, threadOverride: boolean | undefined): boolean;
|
|
24
|
+
/** Where the layers of the precedence above are read from; the bot wires `state.json` and `settings.json`. */
|
|
25
|
+
export interface BotSkillsSources {
|
|
26
|
+
/** The General value; `undefined` = General never chose. */
|
|
27
|
+
getGeneralValue: () => boolean | undefined;
|
|
28
|
+
/** The topic's own choice; `undefined` = it follows General. */
|
|
29
|
+
getTopicOverride: (key: SessionKey) => boolean | undefined;
|
|
30
|
+
/** `settings.json`'s `botSkills`; `null` = the file does not say. */
|
|
31
|
+
getSettingsValue: () => BotSkillsSetting | null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @name BotSkillsReader
|
|
35
|
+
* @description Whether the bot's skills are on for a conversation; `null` asks for the instance value (what a conversation
|
|
36
|
+
* without a choice of its own gets, and what the one OpenCode server follows).
|
|
37
|
+
*/
|
|
38
|
+
export type BotSkillsReader = (key: SessionKey | null) => boolean;
|
|
39
|
+
/** Where the instance value comes from: General's own choice, `settings.json`'s seed, or the built-in ON. */
|
|
40
|
+
export type BotSkillsInstanceSource = 'general' | 'settingsFile' | 'builtInDefault';
|
|
41
|
+
/** @name BotSkillsInstanceValue @description The instance value and the layer that gave it. */
|
|
42
|
+
export interface BotSkillsInstanceValue {
|
|
43
|
+
isEnabled: boolean;
|
|
44
|
+
source: BotSkillsInstanceSource;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @description The instance value — what a conversation without a choice of its own gets: General's value, else
|
|
48
|
+
* `settings.json`'s (read only when General never chose), else ON.
|
|
49
|
+
*/
|
|
50
|
+
export declare function readBotSkillsInstanceValue(sources: Pick<BotSkillsSources, 'getGeneralValue' | 'getSettingsValue'>): BotSkillsInstanceValue;
|
|
51
|
+
/** @description The reader over the layers of {@link BotSkillsSources}: topic choice → General → `settings.json` → ON. */
|
|
52
|
+
export declare function createBotSkillsReader(sources: BotSkillsSources): BotSkillsReader;
|
|
53
|
+
/**
|
|
54
|
+
* @description The reader in force before the bot registers its own: `settings.json` alone (it needs no state), so a start
|
|
55
|
+
* that comes first — the hot supervisor's pre-start of the OpenCode server — already follows the file.
|
|
56
|
+
*/
|
|
57
|
+
export declare const settingsOnlyBotSkillsReader: BotSkillsReader;
|
|
58
|
+
/** @description Register where {@link checkIsBotSkillsEnabled} reads from (the bot, once, at start-up). Until then {@link settingsOnlyBotSkillsReader} answers. */
|
|
59
|
+
export declare function setBotSkillsReader(reader: BotSkillsReader): void;
|
|
60
|
+
/** @description Whether the bot's skills are on for `key`'s agent; `null`: the instance value. */
|
|
61
|
+
export declare function checkIsBotSkillsEnabled(key: SessionKey | null): boolean;
|
|
62
|
+
//# sourceMappingURL=botSkills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"botSkills.d.ts","sourceRoot":"","sources":["../../src/utils/botSkills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,OAAO,GAAG,SAAS,EAAE,cAAc,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAExH;AAED,8GAA8G;AAC9G,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,eAAe,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;IAC3C,gEAAgE;IAChE,gBAAgB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,GAAG,SAAS,CAAC;IAC3D,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAAC;CACjD;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,KAAK,OAAO,CAAC;AAElE,6GAA6G;AAC7G,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEpF,+FAA+F;AAC/F,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,sBAAsB,CAM1I;AAED,0HAA0H;AAC1H,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAEhF;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,eAIxC,CAAC;AAIH,mKAAmK;AACnK,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAEhE;AAED,kGAAkG;AAClG,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.settingsOnlyBotSkillsReader = void 0;
|
|
4
|
+
exports.resolveBotSkillsEnabled = resolveBotSkillsEnabled;
|
|
5
|
+
exports.readBotSkillsInstanceValue = readBotSkillsInstanceValue;
|
|
6
|
+
exports.createBotSkillsReader = createBotSkillsReader;
|
|
7
|
+
exports.setBotSkillsReader = setBotSkillsReader;
|
|
8
|
+
exports.checkIsBotSkillsEnabled = checkIsBotSkillsEnabled;
|
|
9
|
+
const instanceSettings_1 = require("../instanceSettings");
|
|
10
|
+
const threadToggle_1 = require("./threadToggle");
|
|
11
|
+
/**
|
|
12
|
+
* @description Resolve the switch from the topic's choice and the instance default. A topic choice (true OR false) wins;
|
|
13
|
+
* otherwise the default; nothing set ⇒ ON — the skills shipped unconditionally before the switch existed.
|
|
14
|
+
*/
|
|
15
|
+
function resolveBotSkillsEnabled(globalDefault, threadOverride) {
|
|
16
|
+
return (0, threadToggle_1.resolveDefaultOnThreadToggle)(globalDefault, threadOverride);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @description The instance value — what a conversation without a choice of its own gets: General's value, else
|
|
20
|
+
* `settings.json`'s (read only when General never chose), else ON.
|
|
21
|
+
*/
|
|
22
|
+
function readBotSkillsInstanceValue(sources) {
|
|
23
|
+
const generalValue = sources.getGeneralValue();
|
|
24
|
+
if (generalValue !== undefined)
|
|
25
|
+
return { isEnabled: generalValue, source: 'general' };
|
|
26
|
+
const settingsValue = sources.getSettingsValue();
|
|
27
|
+
if (settingsValue !== null)
|
|
28
|
+
return { isEnabled: settingsValue === 'on', source: 'settingsFile' };
|
|
29
|
+
return { isEnabled: true, source: 'builtInDefault' };
|
|
30
|
+
}
|
|
31
|
+
/** @description The reader over the layers of {@link BotSkillsSources}: topic choice → General → `settings.json` → ON. */
|
|
32
|
+
function createBotSkillsReader(sources) {
|
|
33
|
+
return (key) => resolveBotSkillsEnabled(readBotSkillsInstanceValue(sources).isEnabled, key === null ? undefined : sources.getTopicOverride(key));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @description The reader in force before the bot registers its own: `settings.json` alone (it needs no state), so a start
|
|
37
|
+
* that comes first — the hot supervisor's pre-start of the OpenCode server — already follows the file.
|
|
38
|
+
*/
|
|
39
|
+
exports.settingsOnlyBotSkillsReader = createBotSkillsReader({
|
|
40
|
+
getGeneralValue: () => undefined,
|
|
41
|
+
getTopicOverride: () => undefined,
|
|
42
|
+
getSettingsValue: (0, instanceSettings_1.createBotSkillsSettingsReader)(() => (0, instanceSettings_1.getInstanceSettingsPath)(), (line) => console.error(line)),
|
|
43
|
+
});
|
|
44
|
+
let botSkillsReader = exports.settingsOnlyBotSkillsReader;
|
|
45
|
+
/** @description Register where {@link checkIsBotSkillsEnabled} reads from (the bot, once, at start-up). Until then {@link settingsOnlyBotSkillsReader} answers. */
|
|
46
|
+
function setBotSkillsReader(reader) {
|
|
47
|
+
botSkillsReader = reader;
|
|
48
|
+
}
|
|
49
|
+
/** @description Whether the bot's skills are on for `key`'s agent; `null`: the instance value. */
|
|
50
|
+
function checkIsBotSkillsEnabled(key) {
|
|
51
|
+
return botSkillsReader(key);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=botSkills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"botSkills.js","sourceRoot":"","sources":["../../src/utils/botSkills.ts"],"names":[],"mappings":";;;AA0BA,0DAEC;AAgCD,gEAMC;AAGD,sDAEC;AAeD,gDAEC;AAGD,0DAEC;AA7ED,0DAA6F;AAE7F,iDAA8D;AAI9D;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,aAAkC,EAAE,cAAmC;IAC7G,OAAO,IAAA,2CAA4B,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACrE,CAAC;AA4BD;;;GAGG;AACH,SAAgB,0BAA0B,CAAC,OAAuE;IAChH,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAC/C,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtF,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACjD,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACjG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;AACvD,CAAC;AAED,0HAA0H;AAC1H,SAAgB,qBAAqB,CAAC,OAAyB;IAC7D,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACnJ,CAAC;AAED;;;GAGG;AACU,QAAA,2BAA2B,GAAoB,qBAAqB,CAAC;IAChF,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS;IAChC,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;IACjC,gBAAgB,EAAE,IAAA,gDAA6B,EAAC,GAAG,EAAE,CAAC,IAAA,0CAAuB,GAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CAChH,CAAC,CAAC;AAEH,IAAI,eAAe,GAAoB,mCAA2B,CAAC;AAEnE,mKAAmK;AACnK,SAAgB,kBAAkB,CAAC,MAAuB;IACxD,eAAe,GAAG,MAAM,CAAC;AAC3B,CAAC;AAED,kGAAkG;AAClG,SAAgB,uBAAuB,CAAC,GAAsB;IAC5D,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The values `settings.json`'s `botSkills` takes — apart from `utils/botSkills.ts` because that module reads
|
|
3
|
+
* the file through `instanceSettings.ts`, which needs the values for its schema (an import cycle otherwise).
|
|
4
|
+
*/
|
|
5
|
+
export declare const botSkillsSettingValues: readonly ["on", "off"];
|
|
6
|
+
export type BotSkillsSetting = (typeof botSkillsSettingValues)[number];
|
|
7
|
+
//# sourceMappingURL=botSkillsSetting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"botSkillsSetting.d.ts","sourceRoot":"","sources":["../../src/utils/botSkillsSetting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,sBAAsB,wBAAyB,CAAC;AAC7D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description The values `settings.json`'s `botSkills` takes — apart from `utils/botSkills.ts` because that module reads
|
|
4
|
+
* the file through `instanceSettings.ts`, which needs the values for its schema (an import cycle otherwise).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.botSkillsSettingValues = void 0;
|
|
8
|
+
exports.botSkillsSettingValues = ['on', 'off'];
|
|
9
|
+
//# sourceMappingURL=botSkillsSetting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"botSkillsSetting.js","sourceRoot":"","sources":["../../src/utils/botSkillsSetting.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEU,QAAA,sBAAsB,GAAG,CAAC,IAAI,EAAE,KAAK,CAAU,CAAC"}
|
|
@@ -19,6 +19,13 @@ export declare const minAutoStopClaudeCodeVersion = "2.1.287";
|
|
|
19
19
|
export declare function compareClaudeCodeVersions(left: string, right: string): number | null;
|
|
20
20
|
/** Whether a process reporting `version` may be auto-stopped (L-D10); `null` / unparseable → `false`. */
|
|
21
21
|
export declare function checkIsClaudeAutoStopSupported(version: string | null): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* The first Claude Code version that accepts `--plugin-dir` (the bot's skills, `utils/agentPlugin.ts`). Measured on the
|
|
24
|
+
* published builds: up to 2.0.24 every launch with the flag exits `error: unknown option '--plugin-dir'`; 2.0.25 runs.
|
|
25
|
+
*/
|
|
26
|
+
export declare const minPluginDirClaudeCodeVersion = "2.0.25";
|
|
27
|
+
/** Whether a CLI reporting `version` accepts `--plugin-dir`; `null` / unparseable → `false` (never risk a launch). */
|
|
28
|
+
export declare function checkIsClaudePluginDirSupported(version: string | null): boolean;
|
|
22
29
|
/**
|
|
23
30
|
* @description The version a switch of a conversation to the per-turn lifecycle
|
|
24
31
|
* is REFUSED on (L-D10, narrowed): its last known Claude Code version — from the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeCodeVersion.d.ts","sourceRoot":"","sources":["../../src/utils/claudeCodeVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,wFAAwF;AACxF,eAAO,MAAM,4BAA4B,YAAY,CAAC;AAWtD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQpF;AAED,yGAAyG;AACzG,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAI9E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAEvF"}
|
|
1
|
+
{"version":3,"file":"claudeCodeVersion.d.ts","sourceRoot":"","sources":["../../src/utils/claudeCodeVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,wFAAwF;AACxF,eAAO,MAAM,4BAA4B,YAAY,CAAC;AAWtD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQpF;AAED,yGAAyG;AACzG,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAI9E;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,WAAW,CAAC;AAEtD,sHAAsH;AACtH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAI/E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAEvF"}
|
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
* is treated as too old.
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.minAutoStopClaudeCodeVersion = void 0;
|
|
13
|
+
exports.minPluginDirClaudeCodeVersion = exports.minAutoStopClaudeCodeVersion = void 0;
|
|
14
14
|
exports.compareClaudeCodeVersions = compareClaudeCodeVersions;
|
|
15
15
|
exports.checkIsClaudeAutoStopSupported = checkIsClaudeAutoStopSupported;
|
|
16
|
+
exports.checkIsClaudePluginDirSupported = checkIsClaudePluginDirSupported;
|
|
16
17
|
exports.getPerTurnRefusedVersion = getPerTurnRefusedVersion;
|
|
17
18
|
/** The first Claude Code version whose stream-json reports the background-task list. */
|
|
18
19
|
exports.minAutoStopClaudeCodeVersion = '2.1.287';
|
|
@@ -48,6 +49,18 @@ function checkIsClaudeAutoStopSupported(version) {
|
|
|
48
49
|
const comparison = compareClaudeCodeVersions(version, exports.minAutoStopClaudeCodeVersion);
|
|
49
50
|
return comparison !== null && comparison >= 0;
|
|
50
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* The first Claude Code version that accepts `--plugin-dir` (the bot's skills, `utils/agentPlugin.ts`). Measured on the
|
|
54
|
+
* published builds: up to 2.0.24 every launch with the flag exits `error: unknown option '--plugin-dir'`; 2.0.25 runs.
|
|
55
|
+
*/
|
|
56
|
+
exports.minPluginDirClaudeCodeVersion = '2.0.25';
|
|
57
|
+
/** Whether a CLI reporting `version` accepts `--plugin-dir`; `null` / unparseable → `false` (never risk a launch). */
|
|
58
|
+
function checkIsClaudePluginDirSupported(version) {
|
|
59
|
+
if (version === null)
|
|
60
|
+
return false;
|
|
61
|
+
const comparison = compareClaudeCodeVersions(version, exports.minPluginDirClaudeCodeVersion);
|
|
62
|
+
return comparison !== null && comparison >= 0;
|
|
63
|
+
}
|
|
51
64
|
/**
|
|
52
65
|
* @description The version a switch of a conversation to the per-turn lifecycle
|
|
53
66
|
* is REFUSED on (L-D10, narrowed): its last known Claude Code version — from the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeCodeVersion.js","sourceRoot":"","sources":["../../src/utils/claudeCodeVersion.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAoBH,8DAQC;AAGD,wEAIC;AAUD,4DAEC;
|
|
1
|
+
{"version":3,"file":"claudeCodeVersion.js","sourceRoot":"","sources":["../../src/utils/claudeCodeVersion.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAoBH,8DAQC;AAGD,wEAIC;AASD,0EAIC;AAUD,4DAEC;AA1DD,wFAAwF;AAC3E,QAAA,4BAA4B,GAAG,SAAS,CAAC;AAEtD,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC,8GAA8G;AAC9G,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,IAAY,EAAE,KAAa;IACnE,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,yGAAyG;AACzG,SAAgB,8BAA8B,CAAC,OAAsB;IACnE,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,UAAU,GAAG,yBAAyB,CAAC,OAAO,EAAE,oCAA4B,CAAC,CAAC;IACpF,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACU,QAAA,6BAA6B,GAAG,QAAQ,CAAC;AAEtD,sHAAsH;AACtH,SAAgB,+BAA+B,CAAC,OAAsB;IACpE,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,UAAU,GAAG,yBAAyB,CAAC,OAAO,EAAE,qCAA6B,CAAC,CAAC;IACrF,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CAAC,gBAA+B;IACtE,OAAO,gBAAgB,KAAK,IAAI,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;AAClH,CAAC"}
|