charness 3.6.1 → 3.8.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 +297 -0
- package/DEVELOPMENT.md +35 -5
- package/MIGRATION_RENAME_TO_CHARNESS.md +3 -2
- package/README.md +84 -782
- package/SETUP.md +48 -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 +97 -7
- 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 +1360 -387
- 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 +55 -1
- package/dist/cli.js.map +1 -1
- package/dist/configDirFile.d.ts +7 -3
- package/dist/configDirFile.d.ts.map +1 -1
- package/dist/configDirFile.js +12 -5
- package/dist/configDirFile.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 +13 -3
- 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/runners.d.ts +52 -0
- package/dist/connectors/telegram/commands/runners.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/runners.js +486 -0
- package/dist/connectors/telegram/commands/runners.js.map +1 -0
- 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/telegram/runnerPairingMessages.d.ts +27 -0
- package/dist/connectors/telegram/runnerPairingMessages.d.ts.map +1 -0
- package/dist/connectors/telegram/runnerPairingMessages.js +105 -0
- package/dist/connectors/telegram/runnerPairingMessages.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 +148 -7
- package/dist/i18n/de.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +148 -7
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +148 -7
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +148 -7
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/hi.d.ts.map +1 -1
- package/dist/i18n/hi.js +148 -7
- package/dist/i18n/hi.js.map +1 -1
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ja.js +148 -7
- package/dist/i18n/ja.js.map +1 -1
- package/dist/i18n/ka.d.ts.map +1 -1
- package/dist/i18n/ka.js +148 -7
- package/dist/i18n/ka.js.map +1 -1
- package/dist/i18n/pt.d.ts.map +1 -1
- package/dist/i18n/pt.js +148 -7
- package/dist/i18n/pt.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +148 -7
- package/dist/i18n/ru.js.map +1 -1
- package/dist/i18n/uk.d.ts.map +1 -1
- package/dist/i18n/uk.js +148 -7
- package/dist/i18n/uk.js.map +1 -1
- package/dist/i18n/uz.d.ts.map +1 -1
- package/dist/i18n/uz.js +148 -7
- package/dist/i18n/uz.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +148 -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 +70 -1
- package/dist/installManager.d.ts.map +1 -1
- package/dist/installManager.js +125 -13
- package/dist/installManager.js.map +1 -1
- package/dist/instanceSettings.d.ts +50 -1
- package/dist/instanceSettings.d.ts.map +1 -1
- package/dist/instanceSettings.js +119 -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/outputTrace.d.ts +6 -0
- package/dist/outputTrace.d.ts.map +1 -1
- package/dist/outputTrace.js +24 -1
- package/dist/outputTrace.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 +75 -0
- package/dist/remoteRun/cliArgs.d.ts.map +1 -0
- package/dist/remoteRun/cliArgs.js +206 -0
- package/dist/remoteRun/cliArgs.js.map +1 -0
- package/dist/remoteRun/commands.d.ts +77 -0
- package/dist/remoteRun/commands.d.ts.map +1 -0
- package/dist/remoteRun/commands.js +327 -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 +27 -0
- package/dist/remoteRun/interrupts.d.ts.map +1 -0
- package/dist/remoteRun/interrupts.js +78 -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 +37 -0
- package/dist/remoteRun/output.d.ts.map +1 -0
- package/dist/remoteRun/output.js +127 -0
- package/dist/remoteRun/output.js.map +1 -0
- package/dist/remoteRun/pairedRunners.d.ts +51 -0
- package/dist/remoteRun/pairedRunners.d.ts.map +1 -0
- package/dist/remoteRun/pairedRunners.js +165 -0
- package/dist/remoteRun/pairedRunners.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 +78 -0
- package/dist/remoteRun/probe.d.ts.map +1 -0
- package/dist/remoteRun/probe.js +157 -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 +22 -0
- package/dist/remoteRun/remoteRunCli.d.ts.map +1 -0
- package/dist/remoteRun/remoteRunCli.js +119 -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 +52 -0
- package/dist/remoteRun/runnerClient.d.ts.map +1 -0
- package/dist/remoteRun/runnerClient.js +143 -0
- package/dist/remoteRun/runnerClient.js.map +1 -0
- package/dist/remoteRun/runnerSummary.d.ts +24 -0
- package/dist/remoteRun/runnerSummary.d.ts.map +1 -0
- package/dist/remoteRun/runnerSummary.js +86 -0
- package/dist/remoteRun/runnerSummary.js.map +1 -0
- package/dist/remoteRun/runnerWait.d.ts +68 -0
- package/dist/remoteRun/runnerWait.d.ts.map +1 -0
- package/dist/remoteRun/runnerWait.js +137 -0
- package/dist/remoteRun/runnerWait.js.map +1 -0
- package/dist/remoteRun/runnerWaitTiming.d.ts +16 -0
- package/dist/remoteRun/runnerWaitTiming.d.ts.map +1 -0
- package/dist/remoteRun/runnerWaitTiming.js +37 -0
- package/dist/remoteRun/runnerWaitTiming.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 +209 -0
- package/dist/remoteRun/runners.js.map +1 -0
- package/dist/remoteRun/runnersCatalog.d.ts +14 -0
- package/dist/remoteRun/runnersCatalog.d.ts.map +1 -0
- package/dist/remoteRun/runnersCatalog.js +68 -0
- package/dist/remoteRun/runnersCatalog.js.map +1 -0
- package/dist/remoteRun/runnersConfig.d.ts +53 -0
- package/dist/remoteRun/runnersConfig.d.ts.map +1 -0
- package/dist/remoteRun/runnersConfig.js +109 -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 +82 -0
- package/dist/remoteRun/ssh.d.ts.map +1 -0
- package/dist/remoteRun/ssh.js +236 -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/runnerUtility/adminCheck.d.ts +11 -0
- package/dist/runnerUtility/adminCheck.d.ts.map +1 -0
- package/dist/runnerUtility/adminCheck.js +68 -0
- package/dist/runnerUtility/adminCheck.js.map +1 -0
- package/dist/runnerUtility/appInstall.d.ts +25 -0
- package/dist/runnerUtility/appInstall.d.ts.map +1 -0
- package/dist/runnerUtility/appInstall.js +147 -0
- package/dist/runnerUtility/appInstall.js.map +1 -0
- package/dist/runnerUtility/appUpdate.d.ts +39 -0
- package/dist/runnerUtility/appUpdate.d.ts.map +1 -0
- package/dist/runnerUtility/appUpdate.js +90 -0
- package/dist/runnerUtility/appUpdate.js.map +1 -0
- package/dist/runnerUtility/execEnv.d.ts +21 -0
- package/dist/runnerUtility/execEnv.d.ts.map +1 -0
- package/dist/runnerUtility/execEnv.js +109 -0
- package/dist/runnerUtility/execEnv.js.map +1 -0
- package/dist/runnerUtility/execSession.d.ts +13 -0
- package/dist/runnerUtility/execSession.d.ts.map +1 -0
- package/dist/runnerUtility/execSession.js +58 -0
- package/dist/runnerUtility/execSession.js.map +1 -0
- package/dist/runnerUtility/hubClient.d.ts +30 -0
- package/dist/runnerUtility/hubClient.d.ts.map +1 -0
- package/dist/runnerUtility/hubClient.js +127 -0
- package/dist/runnerUtility/hubClient.js.map +1 -0
- package/dist/runnerUtility/injectStream.d.ts +9 -0
- package/dist/runnerUtility/injectStream.d.ts.map +1 -0
- package/dist/runnerUtility/injectStream.js +12 -0
- package/dist/runnerUtility/injectStream.js.map +1 -0
- package/dist/runnerUtility/iosCheck.d.ts +62 -0
- package/dist/runnerUtility/iosCheck.d.ts.map +1 -0
- package/dist/runnerUtility/iosCheck.js +200 -0
- package/dist/runnerUtility/iosCheck.js.map +1 -0
- package/dist/runnerUtility/launcher.d.ts +5 -0
- package/dist/runnerUtility/launcher.d.ts.map +1 -0
- package/dist/runnerUtility/launcher.js +85 -0
- package/dist/runnerUtility/launcher.js.map +1 -0
- package/dist/runnerUtility/linkLoop.d.ts +47 -0
- package/dist/runnerUtility/linkLoop.d.ts.map +1 -0
- package/dist/runnerUtility/linkLoop.js +281 -0
- package/dist/runnerUtility/linkLoop.js.map +1 -0
- package/dist/runnerUtility/localLinkStop.d.ts +23 -0
- package/dist/runnerUtility/localLinkStop.d.ts.map +1 -0
- package/dist/runnerUtility/localLinkStop.js +79 -0
- package/dist/runnerUtility/localLinkStop.js.map +1 -0
- package/dist/runnerUtility/machineReport.d.ts +39 -0
- package/dist/runnerUtility/machineReport.d.ts.map +1 -0
- package/dist/runnerUtility/machineReport.js +161 -0
- package/dist/runnerUtility/machineReport.js.map +1 -0
- package/dist/runnerUtility/packageId.d.ts +5 -0
- package/dist/runnerUtility/packageId.d.ts.map +1 -0
- package/dist/runnerUtility/packageId.js +64 -0
- package/dist/runnerUtility/packageId.js.map +1 -0
- package/dist/runnerUtility/pairingRecovery.d.ts +31 -0
- package/dist/runnerUtility/pairingRecovery.d.ts.map +1 -0
- package/dist/runnerUtility/pairingRecovery.js +24 -0
- package/dist/runnerUtility/pairingRecovery.js.map +1 -0
- package/dist/runnerUtility/pueueDaemon.d.ts +36 -0
- package/dist/runnerUtility/pueueDaemon.d.ts.map +1 -0
- package/dist/runnerUtility/pueueDaemon.js +165 -0
- package/dist/runnerUtility/pueueDaemon.js.map +1 -0
- package/dist/runnerUtility/runnerCli.d.ts +18 -0
- package/dist/runnerUtility/runnerCli.d.ts.map +1 -0
- package/dist/runnerUtility/runnerCli.js +184 -0
- package/dist/runnerUtility/runnerCli.js.map +1 -0
- package/dist/runnerUtility/runnerCommands.d.ts +67 -0
- package/dist/runnerUtility/runnerCommands.d.ts.map +1 -0
- package/dist/runnerUtility/runnerCommands.js +418 -0
- package/dist/runnerUtility/runnerCommands.js.map +1 -0
- package/dist/runnerUtility/runnerConfig.d.ts +63 -0
- package/dist/runnerUtility/runnerConfig.d.ts.map +1 -0
- package/dist/runnerUtility/runnerConfig.js +153 -0
- package/dist/runnerUtility/runnerConfig.js.map +1 -0
- package/dist/runnerUtility/runnerFlags.d.ts +9 -0
- package/dist/runnerUtility/runnerFlags.d.ts.map +1 -0
- package/dist/runnerUtility/runnerFlags.js +53 -0
- package/dist/runnerUtility/runnerFlags.js.map +1 -0
- package/dist/runnerUtility/runnerHome.d.ts +30 -0
- package/dist/runnerUtility/runnerHome.d.ts.map +1 -0
- package/dist/runnerUtility/runnerHome.js +82 -0
- package/dist/runnerUtility/runnerHome.js.map +1 -0
- package/dist/runnerUtility/runnerKeys.d.ts +11 -0
- package/dist/runnerUtility/runnerKeys.d.ts.map +1 -0
- package/dist/runnerUtility/runnerKeys.js +80 -0
- package/dist/runnerUtility/runnerKeys.js.map +1 -0
- package/dist/runnerUtility/runnerServers.d.ts +40 -0
- package/dist/runnerUtility/runnerServers.d.ts.map +1 -0
- package/dist/runnerUtility/runnerServers.js +79 -0
- package/dist/runnerUtility/runnerServers.js.map +1 -0
- package/dist/runnerUtility/serviceManager.d.ts +54 -0
- package/dist/runnerUtility/serviceManager.d.ts.map +1 -0
- package/dist/runnerUtility/serviceManager.js +413 -0
- package/dist/runnerUtility/serviceManager.js.map +1 -0
- package/dist/runnerUtility/serviceUnits.d.ts +36 -0
- package/dist/runnerUtility/serviceUnits.d.ts.map +1 -0
- package/dist/runnerUtility/serviceUnits.js +169 -0
- package/dist/runnerUtility/serviceUnits.js.map +1 -0
- package/dist/runnerUtility/toolInstall.d.ts +95 -0
- package/dist/runnerUtility/toolInstall.d.ts.map +1 -0
- package/dist/runnerUtility/toolInstall.js +232 -0
- package/dist/runnerUtility/toolInstall.js.map +1 -0
- package/dist/runnerUtility/versionPollTiming.d.ts +16 -0
- package/dist/runnerUtility/versionPollTiming.d.ts.map +1 -0
- package/dist/runnerUtility/versionPollTiming.js +36 -0
- package/dist/runnerUtility/versionPollTiming.js.map +1 -0
- package/dist/runners/authorizedKeys.d.ts +52 -0
- package/dist/runners/authorizedKeys.d.ts.map +1 -0
- package/dist/runners/authorizedKeys.js +153 -0
- package/dist/runners/authorizedKeys.js.map +1 -0
- package/dist/runners/bootstrapLine.d.ts +4 -0
- package/dist/runners/bootstrapLine.d.ts.map +1 -0
- package/dist/runners/bootstrapLine.js +69 -0
- package/dist/runners/bootstrapLine.js.map +1 -0
- package/dist/runners/gate.d.ts +41 -0
- package/dist/runners/gate.d.ts.map +1 -0
- package/dist/runners/gate.js +216 -0
- package/dist/runners/gate.js.map +1 -0
- package/dist/runners/gateLink.d.ts +26 -0
- package/dist/runners/gateLink.d.ts.map +1 -0
- package/dist/runners/gateLink.js +240 -0
- package/dist/runners/gateLink.js.map +1 -0
- package/dist/runners/gateProtocol.d.ts +98 -0
- package/dist/runners/gateProtocol.d.ts.map +1 -0
- package/dist/runners/gateProtocol.js +149 -0
- package/dist/runners/gateProtocol.js.map +1 -0
- package/dist/runners/gateWrapper.d.ts +6 -0
- package/dist/runners/gateWrapper.d.ts.map +1 -0
- package/dist/runners/gateWrapper.js +70 -0
- package/dist/runners/gateWrapper.js.map +1 -0
- package/dist/runners/hubAddress.d.ts +33 -0
- package/dist/runners/hubAddress.d.ts.map +1 -0
- package/dist/runners/hubAddress.js +88 -0
- package/dist/runners/hubAddress.js.map +1 -0
- package/dist/runners/hubAddressCandidates.d.ts +16 -0
- package/dist/runners/hubAddressCandidates.d.ts.map +1 -0
- package/dist/runners/hubAddressCandidates.js +96 -0
- package/dist/runners/hubAddressCandidates.js.map +1 -0
- package/dist/runners/hubIds.d.ts +16 -0
- package/dist/runners/hubIds.d.ts.map +1 -0
- package/dist/runners/hubIds.js +25 -0
- package/dist/runners/hubIds.js.map +1 -0
- package/dist/runners/hubKey.d.ts +6 -0
- package/dist/runners/hubKey.d.ts.map +1 -0
- package/dist/runners/hubKey.js +78 -0
- package/dist/runners/hubKey.js.map +1 -0
- package/dist/runners/hubLock.d.ts +7 -0
- package/dist/runners/hubLock.d.ts.map +1 -0
- package/dist/runners/hubLock.js +230 -0
- package/dist/runners/hubLock.js.map +1 -0
- package/dist/runners/hubPackage.d.ts +23 -0
- package/dist/runners/hubPackage.d.ts.map +1 -0
- package/dist/runners/hubPackage.js +184 -0
- package/dist/runners/hubPackage.js.map +1 -0
- package/dist/runners/hubPairing.d.ts +63 -0
- package/dist/runners/hubPairing.d.ts.map +1 -0
- package/dist/runners/hubPairing.js +261 -0
- package/dist/runners/hubPairing.js.map +1 -0
- package/dist/runners/hubPaths.d.ts +38 -0
- package/dist/runners/hubPaths.d.ts.map +1 -0
- package/dist/runners/hubPaths.js +94 -0
- package/dist/runners/hubPaths.js.map +1 -0
- package/dist/runners/hubRegistry.d.ts +112 -0
- package/dist/runners/hubRegistry.d.ts.map +1 -0
- package/dist/runners/hubRegistry.js +210 -0
- package/dist/runners/hubRegistry.js.map +1 -0
- package/dist/runners/linkControl.d.ts +27 -0
- package/dist/runners/linkControl.d.ts.map +1 -0
- package/dist/runners/linkControl.js +124 -0
- package/dist/runners/linkControl.js.map +1 -0
- package/dist/runners/pairCode.d.ts +30 -0
- package/dist/runners/pairCode.d.ts.map +1 -0
- package/dist/runners/pairCode.js +46 -0
- package/dist/runners/pairCode.js.map +1 -0
- package/dist/runners/pairingTiming.d.ts +18 -0
- package/dist/runners/pairingTiming.d.ts.map +1 -0
- package/dist/runners/pairingTiming.js +42 -0
- package/dist/runners/pairingTiming.js.map +1 -0
- package/dist/runners/runnerProxy.d.ts +9 -0
- package/dist/runners/runnerProxy.d.ts.map +1 -0
- package/dist/runners/runnerProxy.js +67 -0
- package/dist/runners/runnerProxy.js.map +1 -0
- package/dist/runners/runnerRemoval.d.ts +21 -0
- package/dist/runners/runnerRemoval.d.ts.map +1 -0
- package/dist/runners/runnerRemoval.js +82 -0
- package/dist/runners/runnerRemoval.js.map +1 -0
- package/dist/runners/runnersCli.d.ts +16 -0
- package/dist/runners/runnersCli.d.ts.map +1 -0
- package/dist/runners/runnersCli.js +214 -0
- package/dist/runners/runnersCli.js.map +1 -0
- package/dist/runners/runnersList.d.ts +17 -0
- package/dist/runners/runnersList.d.ts.map +1 -0
- package/dist/runners/runnersList.js +49 -0
- package/dist/runners/runnersList.js.map +1 -0
- package/dist/runners/runnersOverview.d.ts +20 -0
- package/dist/runners/runnersOverview.d.ts.map +1 -0
- package/dist/runners/runnersOverview.js +55 -0
- package/dist/runners/runnersOverview.js.map +1 -0
- package/dist/runners/sshKeys.d.ts +26 -0
- package/dist/runners/sshKeys.d.ts.map +1 -0
- package/dist/runners/sshKeys.js +60 -0
- package/dist/runners/sshKeys.js.map +1 -0
- package/dist/runners/tarArchive.d.ts +20 -0
- package/dist/runners/tarArchive.d.ts.map +1 -0
- package/dist/runners/tarArchive.js +70 -0
- package/dist/runners/tarArchive.js.map +1 -0
- 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 +65 -10
- package/dist/scheduler/mcpSurface.d.ts.map +1 -1
- package/dist/scheduler/mcpSurface.js +319 -89
- 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/selfCheck.js +2 -2
- package/dist/selfUpdate/selfCheck.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 +16 -3
- package/dist/testTimings.d.ts.map +1 -1
- package/dist/testTimings.js +35 -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/agentEnvironment.d.ts +6 -2
- package/dist/utils/agentEnvironment.d.ts.map +1 -1
- package/dist/utils/agentEnvironment.js +13 -2
- package/dist/utils/agentEnvironment.js.map +1 -1
- 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/runnersScreenPlan.d.ts +130 -0
- package/dist/utils/runnersScreenPlan.d.ts.map +1 -0
- package/dist/utils/runnersScreenPlan.js +257 -0
- package/dist/utils/runnersScreenPlan.js.map +1 -0
- 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 +15 -4
- package/remoteRun/runner.sh +1317 -0
- package/stt/gigaam_sidecar.py +555 -50
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.remoteRunUsage = exports.createProcessIo = void 0;
|
|
4
|
+
exports.readCurrentRunners = readCurrentRunners;
|
|
5
|
+
exports.runRemoteRunCli = runRemoteRunCli;
|
|
6
|
+
const commands_1 = require("./commands");
|
|
7
|
+
const cliArgs_1 = require("./cliArgs");
|
|
8
|
+
const exitCodes_1 = require("./exitCodes");
|
|
9
|
+
const interrupts_1 = require("./interrupts");
|
|
10
|
+
const leaseTiming_1 = require("./leaseTiming");
|
|
11
|
+
const output_1 = require("./output");
|
|
12
|
+
Object.defineProperty(exports, "createProcessIo", { enumerable: true, get: function () { return output_1.createProcessIo; } });
|
|
13
|
+
const remoteRunError_1 = require("./remoteRunError");
|
|
14
|
+
const runnerClient_1 = require("./runnerClient");
|
|
15
|
+
const runnersConfig_1 = require("./runnersConfig");
|
|
16
|
+
const runnersCatalog_1 = require("./runnersCatalog");
|
|
17
|
+
const runnerWait_1 = require("./runnerWait");
|
|
18
|
+
const runnerWaitTiming_1 = require("./runnerWaitTiming");
|
|
19
|
+
const ssh_1 = require("./ssh");
|
|
20
|
+
exports.remoteRunUsage = `Usage:
|
|
21
|
+
charness remote-run [--runner <name>] [--needs android|ios|docker|playwright] [--runner-wait <dur>] [--group <g>]
|
|
22
|
+
[--timeout <dur>] [--with-git] [-e NAME=VALUE]… [--bg] <command…>
|
|
23
|
+
run <command> on a runner, in the same folder of a copy of this git project;
|
|
24
|
+
output and exit code come back, interrupt or timeout kills the remote job.
|
|
25
|
+
--bg prints a job id and returns (long runs).
|
|
26
|
+
--needs with a paired runner that has it but is offline waits for it up to --runner-wait
|
|
27
|
+
(default 15m, 0 = fail at once).
|
|
28
|
+
Options go BEFORE the command; a command that starts with a subcommand name goes after --
|
|
29
|
+
charness remote-run runners the runners: online, hardware, load, what each can do
|
|
30
|
+
charness remote-run ls [--all] jobs of this project (all projects with --all)
|
|
31
|
+
charness remote-run status <id> one job
|
|
32
|
+
charness remote-run logs <id> [-f] [--tail N]
|
|
33
|
+
charness remote-run wait <id> block until the job ends, fetch its files, exit with its code
|
|
34
|
+
charness remote-run kill <id>
|
|
35
|
+
charness remote-run fetch <id> bring a finished job's result files back (again)
|
|
36
|
+
charness remote-run exec [--runner <name>] <command…>
|
|
37
|
+
one-off command in the runner's copy as the last job left it (no sync)
|
|
38
|
+
Exit codes: the command's own; 125 remote-run failed, 124 timeout, 130/143/129 interrupted (SIGINT/SIGTERM/SIGHUP), 137 job killed, 2 bad usage.
|
|
39
|
+
Setup: docs/remote-run.md
|
|
40
|
+
`;
|
|
41
|
+
/**
|
|
42
|
+
* @description The runners as they are right now, for a look in the middle of a command (the wait for an offline runner re-reads them at
|
|
43
|
+
* every look). A file that is half-way through an edit, or a name that clashes for a moment, must not end a wait that may be 15 minutes
|
|
44
|
+
* in: the list that last loaded is used. Only when nothing ever loaded does a broken file or registry stop the caller with its errors.
|
|
45
|
+
* No runner at all is an empty list.
|
|
46
|
+
*/
|
|
47
|
+
function readCurrentRunners(homeDir) {
|
|
48
|
+
const load = (0, runnersCatalog_1.loadRunnersCatalog)(homeDir);
|
|
49
|
+
if (load.status === 'invalid') {
|
|
50
|
+
if (load.config !== null)
|
|
51
|
+
return load.config;
|
|
52
|
+
throw new remoteRunError_1.RemoteRunError(load.errors.join('\n'));
|
|
53
|
+
}
|
|
54
|
+
return load.config;
|
|
55
|
+
}
|
|
56
|
+
function createContext(io) {
|
|
57
|
+
const load = (0, runnersCatalog_1.loadRunnersCatalog)(io.homeDir);
|
|
58
|
+
if (load.status === 'missing') {
|
|
59
|
+
throw new remoteRunError_1.RemoteRunError(`no runners are set up: ${(0, runnersConfig_1.getRunnersConfigPath)(io.homeDir)} does not exist and none is paired (docs/remote-run.md explains how to add one; \`charness runners pair\` pairs one)`);
|
|
60
|
+
}
|
|
61
|
+
if (load.status === 'invalid')
|
|
62
|
+
throw new remoteRunError_1.RemoteRunError(load.errors.join('\n'));
|
|
63
|
+
if (load.config.runners.length === 0)
|
|
64
|
+
throw new remoteRunError_1.RemoteRunError(`${(0, runnersConfig_1.getRunnersConfigPath)(io.homeDir)} lists no runners and none is paired`);
|
|
65
|
+
const cacheDir = (0, ssh_1.getRemoteRunCacheDir)(io.env, io.homeDir);
|
|
66
|
+
(0, ssh_1.ensureRemoteRunCacheDir)(cacheDir);
|
|
67
|
+
return {
|
|
68
|
+
io,
|
|
69
|
+
config: load.config,
|
|
70
|
+
cacheDir,
|
|
71
|
+
script: (0, runnerClient_1.readRunnerScript)(),
|
|
72
|
+
leaseMs: (0, leaseTiming_1.readRemoteRunLeaseMs)(io.env),
|
|
73
|
+
now: Date.now,
|
|
74
|
+
loadRunners: () => readCurrentRunners(io.homeDir),
|
|
75
|
+
runnerPollMs: (0, runnerWaitTiming_1.readRunnerWaitPollMs)(io.env),
|
|
76
|
+
sleep: runnerWait_1.sleepUntilStopped,
|
|
77
|
+
watchInterrupts: interrupts_1.addInterruptHandlerWithHardStop,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** @description Run the command line (the words after `remote-run`); resolves with the exit code. */
|
|
81
|
+
async function runRemoteRunCli(argv, io = (0, output_1.createProcessIo)()) {
|
|
82
|
+
const parsed = (0, cliArgs_1.parseRemoteRunArgs)(argv);
|
|
83
|
+
if (!parsed.ok) {
|
|
84
|
+
io.stderr(`remote-run: ${parsed.error}\n\n${exports.remoteRunUsage}`);
|
|
85
|
+
return exitCodes_1.remoteRunExitCodes.usage;
|
|
86
|
+
}
|
|
87
|
+
const { command } = parsed;
|
|
88
|
+
if (command.kind === 'help') {
|
|
89
|
+
if (argv.length === 0) {
|
|
90
|
+
io.stderr(exports.remoteRunUsage);
|
|
91
|
+
return exitCodes_1.remoteRunExitCodes.usage;
|
|
92
|
+
}
|
|
93
|
+
io.stdout(exports.remoteRunUsage);
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const context = createContext(io);
|
|
98
|
+
switch (command.kind) {
|
|
99
|
+
case 'run': return await (0, commands_1.runRunCommand)(command, context);
|
|
100
|
+
case 'runners': return await (0, commands_1.runRunnersCommand)(context);
|
|
101
|
+
case 'ls': return await (0, commands_1.runLsCommand)(command, context);
|
|
102
|
+
case 'status': return await (0, commands_1.runStatusCommand)(command, context);
|
|
103
|
+
case 'logs': return await (0, commands_1.runLogsCommand)(command, context);
|
|
104
|
+
case 'wait': return await (0, commands_1.runWaitCommand)(command, context);
|
|
105
|
+
case 'fetch': return await (0, commands_1.runFetchCommand)(command, context);
|
|
106
|
+
case 'kill': return await (0, commands_1.runKillCommand)(command, context);
|
|
107
|
+
case 'exec': return await (0, commands_1.runExecCommand)(command, context);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (error instanceof remoteRunError_1.RemoteRunError) {
|
|
112
|
+
io.stderr(`remote-run: ${error.message}\n`);
|
|
113
|
+
return error.exitCode;
|
|
114
|
+
}
|
|
115
|
+
io.stderr(`remote-run: unexpected error: ${error instanceof Error ? error.message : 'unknown'}\n`);
|
|
116
|
+
return exitCodes_1.remoteRunExitCodes.failed;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=remoteRunCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteRunCli.js","sourceRoot":"","sources":["../../src/remoteRun/remoteRunCli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description A failure remote-run reports as its own (never the command's): the message goes to stderr, the exit code is the
|
|
3
|
+
* given one (125 unless the cause is a usage mistake or a timeout).
|
|
4
|
+
*/
|
|
5
|
+
export declare class RemoteRunError extends Error {
|
|
6
|
+
readonly exitCode: number;
|
|
7
|
+
constructor(message: string, exitCode?: number);
|
|
8
|
+
}
|
|
9
|
+
/** @description The runner could not be reached (ssh failed before the script ran): `reason` is the short ssh-side cause the `runners` view shows. */
|
|
10
|
+
export declare class RunnerUnreachableError extends RemoteRunError {
|
|
11
|
+
readonly reason: string;
|
|
12
|
+
constructor(runnerName: string, reason: string);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=remoteRunError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteRunError.d.ts","sourceRoot":"","sources":["../../src/remoteRun/remoteRunError.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkC;CAK1E;AAED,sJAAsJ;AACtJ,qBAAa,sBAAuB,SAAQ,cAAc;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK/C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RunnerUnreachableError = exports.RemoteRunError = void 0;
|
|
4
|
+
const exitCodes_1 = require("./exitCodes");
|
|
5
|
+
/**
|
|
6
|
+
* @description A failure remote-run reports as its own (never the command's): the message goes to stderr, the exit code is the
|
|
7
|
+
* given one (125 unless the cause is a usage mistake or a timeout).
|
|
8
|
+
*/
|
|
9
|
+
class RemoteRunError extends Error {
|
|
10
|
+
exitCode;
|
|
11
|
+
constructor(message, exitCode = exitCodes_1.remoteRunExitCodes.failed) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = 'RemoteRunError';
|
|
14
|
+
this.exitCode = exitCode;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.RemoteRunError = RemoteRunError;
|
|
18
|
+
/** @description The runner could not be reached (ssh failed before the script ran): `reason` is the short ssh-side cause the `runners` view shows. */
|
|
19
|
+
class RunnerUnreachableError extends RemoteRunError {
|
|
20
|
+
reason;
|
|
21
|
+
constructor(runnerName, reason) {
|
|
22
|
+
super(`runner "${runnerName}" is unreachable — ${reason}`);
|
|
23
|
+
this.name = 'RunnerUnreachableError';
|
|
24
|
+
this.reason = reason;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.RunnerUnreachableError = RunnerUnreachableError;
|
|
28
|
+
//# sourceMappingURL=remoteRunError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteRunError.js","sourceRoot":"","sources":["../../src/remoteRun/remoteRunError.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AAEjD;;;GAGG;AACH,MAAa,cAAe,SAAQ,KAAK;IAC9B,QAAQ,CAAS;IAE1B,YAAY,OAAe,EAAE,WAAmB,8BAAkB,CAAC,MAAM;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AARD,wCAQC;AAED,sJAAsJ;AACtJ,MAAa,sBAAuB,SAAQ,cAAc;IAC/C,MAAM,CAAS;IAExB,YAAY,UAAkB,EAAE,MAAc;QAC5C,KAAK,CAAC,WAAW,UAAU,sBAAsB,MAAM,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AARD,wDAQC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description `rsync` as a spawned process with a deadline. Exit 24 ("some source files vanished", a file edited while it was being
|
|
3
|
+
* sent) is not a failure: the next submit sends the new state. The ssh half is the `-e` command the caller built.
|
|
4
|
+
*/
|
|
5
|
+
/** A first send of a large project is the slowest thing remote-run does. */
|
|
6
|
+
export declare const syncTimeoutMs: number;
|
|
7
|
+
export interface RsyncResult {
|
|
8
|
+
isOk: boolean;
|
|
9
|
+
/** The last of rsync's stderr, for a message. */
|
|
10
|
+
errorTail: string;
|
|
11
|
+
}
|
|
12
|
+
/** @description Run rsync with `args`, `input` on its stdin (the NUL-separated file list). */
|
|
13
|
+
export declare function runRsync(args: readonly string[], options?: {
|
|
14
|
+
input?: string;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}): Promise<RsyncResult>;
|
|
17
|
+
//# sourceMappingURL=rsync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsync.d.ts","sourceRoot":"","sources":["../../src/remoteRun/rsync.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,aAAa,QAAiB,CAAC;AAI5C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAuB5H"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.syncTimeoutMs = void 0;
|
|
4
|
+
exports.runRsync = runRsync;
|
|
5
|
+
const child_process_1 = require("child_process");
|
|
6
|
+
/**
|
|
7
|
+
* @description `rsync` as a spawned process with a deadline. Exit 24 ("some source files vanished", a file edited while it was being
|
|
8
|
+
* sent) is not a failure: the next submit sends the new state. The ssh half is the `-e` command the caller built.
|
|
9
|
+
*/
|
|
10
|
+
/** A first send of a large project is the slowest thing remote-run does. */
|
|
11
|
+
exports.syncTimeoutMs = 30 * 60 * 1000;
|
|
12
|
+
const rsyncVanishedFilesExitCode = 24;
|
|
13
|
+
const stderrTailLength = 600;
|
|
14
|
+
/** @description Run rsync with `args`, `input` on its stdin (the NUL-separated file list). */
|
|
15
|
+
function runRsync(args, options = {}) {
|
|
16
|
+
return new Promise((resolve) => {
|
|
17
|
+
const child = (0, child_process_1.spawn)('rsync', [...args], { stdio: ['pipe', 'ignore', 'pipe'] });
|
|
18
|
+
let stderr = '';
|
|
19
|
+
let isTimedOut = false;
|
|
20
|
+
const timer = setTimeout(() => {
|
|
21
|
+
isTimedOut = true;
|
|
22
|
+
child.kill('SIGKILL');
|
|
23
|
+
}, options.timeoutMs ?? exports.syncTimeoutMs);
|
|
24
|
+
child.stderr.setEncoding('utf8');
|
|
25
|
+
child.stderr.on('data', (chunk) => { stderr += chunk; });
|
|
26
|
+
child.stdin.on('error', () => { });
|
|
27
|
+
child.on('error', (error) => {
|
|
28
|
+
clearTimeout(timer);
|
|
29
|
+
resolve({ isOk: false, errorTail: `could not start rsync: ${error.message}` });
|
|
30
|
+
});
|
|
31
|
+
child.on('close', (exitCode) => {
|
|
32
|
+
clearTimeout(timer);
|
|
33
|
+
const isOk = exitCode === 0 || exitCode === rsyncVanishedFilesExitCode;
|
|
34
|
+
resolve({ isOk, errorTail: isTimedOut ? 'rsync ran past its deadline' : stderr.trim().slice(-stderrTailLength) });
|
|
35
|
+
});
|
|
36
|
+
child.stdin.end(options.input ?? '');
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=rsync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsync.js","sourceRoot":"","sources":["../../src/remoteRun/rsync.ts"],"names":[],"mappings":";;;AAmBA,4BAuBC;AA1CD,iDAAsC;AAEtC;;;GAGG;AAEH,4EAA4E;AAC/D,QAAA,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5C,MAAM,0BAA0B,GAAG,EAAE,CAAC;AACtC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAQ7B,8FAA8F;AAC9F,SAAgB,QAAQ,CAAC,IAAuB,EAAE,UAAkD,EAAE;IACpG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,UAAU,GAAG,IAAI,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,qBAAa,CAAC,CAAC;QACvC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAmD,CAAC,CAAC,CAAC;QACnF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC7B,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,0BAA0B,CAAC;YACvE,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { RunnerConfig } from './runnersConfig';
|
|
2
|
+
import { spawnSshStream, type SshRunResult } from './ssh';
|
|
3
|
+
/** An ordinary call: a prepare may start the Pueue daemon, a result or a kill is quicker. */
|
|
4
|
+
export declare const shortCallTimeoutMs: number;
|
|
5
|
+
export interface RunnerScript {
|
|
6
|
+
/** `runner-<sha8>.sh` */
|
|
7
|
+
name: string;
|
|
8
|
+
text: string;
|
|
9
|
+
}
|
|
10
|
+
/** @description `remoteRun/runner.sh` at the package root, resolved from both `src/remoteRun` (tsx) and `dist/remoteRun` (built): two levels up. */
|
|
11
|
+
export declare function getRunnerScriptPath(): string;
|
|
12
|
+
export declare function readRunnerScript(scriptPath?: string): RunnerScript;
|
|
13
|
+
export interface RunnerClient {
|
|
14
|
+
readonly runner: RunnerConfig;
|
|
15
|
+
readonly cacheDir: string;
|
|
16
|
+
/** The `-e` command of rsync for this runner. */
|
|
17
|
+
readonly rsyncSshCommand: string;
|
|
18
|
+
/**
|
|
19
|
+
* Upload the script when the runner does not have this version; throws a {@link RunnerUnreachableError} when the runner cannot be
|
|
20
|
+
* reached. `signal` ends the ssh calls it makes from outside (a shared deadline).
|
|
21
|
+
*/
|
|
22
|
+
ensureScript: (signal?: AbortSignal) => Promise<void>;
|
|
23
|
+
/** The runner's work dir as an absolute path (a configured `~/…` is resolved on the runner once). */
|
|
24
|
+
getAbsoluteWorkDir: () => Promise<string>;
|
|
25
|
+
/** One subcommand of the script; never throws for a non-zero exit (the caller reads it). */
|
|
26
|
+
call: (subcommand: string, args: readonly string[], options?: {
|
|
27
|
+
input?: string;
|
|
28
|
+
timeoutMs?: number;
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
}) => Promise<SshRunResult>;
|
|
31
|
+
/** The same, but a non-zero exit or a timeout is a {@link RemoteRunError} carrying the runner's own message. */
|
|
32
|
+
callOrThrow: (subcommand: string, args: readonly string[], options?: {
|
|
33
|
+
input?: string;
|
|
34
|
+
timeoutMs?: number;
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
}) => Promise<string>;
|
|
37
|
+
/** The long-lived form: a spawned ssh whose streams the caller handles. */
|
|
38
|
+
stream: (subcommand: string, args: readonly string[]) => ReturnType<typeof spawnSshStream>;
|
|
39
|
+
}
|
|
40
|
+
/** Why a paired runner whose link is down is offline — the words `charness runner-proxy` (`runners/runnerProxy.ts`) puts on stderr when nothing listens on the link's socket. */
|
|
41
|
+
export declare const notConnectedReason = "the runner is not connected";
|
|
42
|
+
/**
|
|
43
|
+
* @description The first useful line of a failed ssh's stderr, for a message (never the whole text: it may quote the destination). A
|
|
44
|
+
* rejected key from a process with no ssh-agent (`SSH_AUTH_SOCK` unset — a tracker agent such as Jira's starts with a minimal environment
|
|
45
|
+
* that has none) says what that means and the way out: a key that is only held by an agent works for a Telegram agent and not for that one.
|
|
46
|
+
*/
|
|
47
|
+
export declare function describeSshFailure(result: SshRunResult, env?: NodeJS.ProcessEnv): string;
|
|
48
|
+
/** @description The runner script's own refusal in a stderr text («remote-run-runner: no such job: x» → «no such job: x»): the last line, without the script's prefix. */
|
|
49
|
+
export declare function describeRunnerRefusal(stderr: string, fallback: string): string;
|
|
50
|
+
/** @description Create the client of `runner`. `script` and the spawn functions are injectable for the tests. */
|
|
51
|
+
export declare function createRunnerClient(runner: RunnerConfig, cacheDir: string, script?: RunnerScript): RunnerClient;
|
|
52
|
+
//# sourceMappingURL=runnerClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runnerClient.d.ts","sourceRoot":"","sources":["../../src/remoteRun/runnerClient.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAOL,cAAc,EACd,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AAUf,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,QAAY,CAAC;AAG5C,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oJAAoJ;AACpJ,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAA8B,GAAG,YAAY,CAGzF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,qGAAqG;IACrG,kBAAkB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,4FAA4F;IAC5F,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrJ,gHAAgH;IAChH,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtJ,2EAA2E;IAC3E,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;CAC5F;AAED,iLAAiL;AACjL,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAEhE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAarG;AAED,0KAA0K;AAC1K,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9E;AAED,iHAAiH;AACjH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,YAAiC,GAAG,YAAY,CA8ClI"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.notConnectedReason = exports.shortCallTimeoutMs = void 0;
|
|
37
|
+
exports.getRunnerScriptPath = getRunnerScriptPath;
|
|
38
|
+
exports.readRunnerScript = readRunnerScript;
|
|
39
|
+
exports.describeSshFailure = describeSshFailure;
|
|
40
|
+
exports.describeRunnerRefusal = describeRunnerRefusal;
|
|
41
|
+
exports.createRunnerClient = createRunnerClient;
|
|
42
|
+
const crypto_1 = require("crypto");
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const remoteRunError_1 = require("./remoteRunError");
|
|
46
|
+
const ssh_1 = require("./ssh");
|
|
47
|
+
/**
|
|
48
|
+
* @description One runner as the rest of remote-run uses it: the uploaded script's subcommands as calls, Pueue through the same
|
|
49
|
+
* script, and the pieces rsync needs. The script is `remoteRun/runner.sh` at the package root (shipped in `files`, like the STT
|
|
50
|
+
* sidecar); it is uploaded to `<workDir>/bin/runner-<sha8>.sh` when that file is missing, so two versions of charness on one
|
|
51
|
+
* runner never clash.
|
|
52
|
+
*/
|
|
53
|
+
const scriptHashLength = 8;
|
|
54
|
+
/** An ordinary call: a prepare may start the Pueue daemon, a result or a kill is quicker. */
|
|
55
|
+
exports.shortCallTimeoutMs = 60 * 1000;
|
|
56
|
+
const scriptUploadTimeoutMs = 60 * 1000;
|
|
57
|
+
/** @description `remoteRun/runner.sh` at the package root, resolved from both `src/remoteRun` (tsx) and `dist/remoteRun` (built): two levels up. */
|
|
58
|
+
function getRunnerScriptPath() {
|
|
59
|
+
return path.join(fs.realpathSync(__dirname), '..', '..', 'remoteRun', 'runner.sh');
|
|
60
|
+
}
|
|
61
|
+
function readRunnerScript(scriptPath = getRunnerScriptPath()) {
|
|
62
|
+
const text = fs.readFileSync(scriptPath, 'utf8');
|
|
63
|
+
return { name: `runner-${(0, crypto_1.createHash)('sha256').update(text).digest('hex').slice(0, scriptHashLength)}.sh`, text };
|
|
64
|
+
}
|
|
65
|
+
/** Why a paired runner whose link is down is offline — the words `charness runner-proxy` (`runners/runnerProxy.ts`) puts on stderr when nothing listens on the link's socket. */
|
|
66
|
+
exports.notConnectedReason = 'the runner is not connected';
|
|
67
|
+
/**
|
|
68
|
+
* @description The first useful line of a failed ssh's stderr, for a message (never the whole text: it may quote the destination). A
|
|
69
|
+
* rejected key from a process with no ssh-agent (`SSH_AUTH_SOCK` unset — a tracker agent such as Jira's starts with a minimal environment
|
|
70
|
+
* that has none) says what that means and the way out: a key that is only held by an agent works for a Telegram agent and not for that one.
|
|
71
|
+
*/
|
|
72
|
+
function describeSshFailure(result, env = process.env) {
|
|
73
|
+
if (result.isTimedOut)
|
|
74
|
+
return 'ssh: the command ran past its deadline';
|
|
75
|
+
if (result.stderr.includes(exports.notConnectedReason))
|
|
76
|
+
return exports.notConnectedReason;
|
|
77
|
+
const lines = result.stderr.split('\n').map((line) => line.trim()).filter((line) => line !== '');
|
|
78
|
+
const text = lines.length === 0 ? `ssh exited with ${result.exitCode ?? 'a signal'}` : lines[lines.length - 1];
|
|
79
|
+
if (/host key verification failed/i.test(result.stderr))
|
|
80
|
+
return `ssh: the host key is not trusted yet — connect once by hand (ssh to this runner) so it is known`;
|
|
81
|
+
if (/permission denied/i.test(result.stderr)) {
|
|
82
|
+
const hasAgent = env.SSH_AUTH_SOCK !== undefined && env.SSH_AUTH_SOCK !== '';
|
|
83
|
+
return hasAgent
|
|
84
|
+
? 'ssh: the key was rejected (permission denied)'
|
|
85
|
+
: 'ssh: the key was rejected (permission denied) — this process has no ssh-agent (SSH_AUTH_SOCK is unset, as for a Jira agent), so the key must work without one: a key file with no passphrase, given as "sshOptions": ["-i", "<path>"] in runners.json';
|
|
86
|
+
}
|
|
87
|
+
return text.length > 200 ? `${text.slice(0, 200)}…` : text;
|
|
88
|
+
}
|
|
89
|
+
/** @description The runner script's own refusal in a stderr text («remote-run-runner: no such job: x» → «no such job: x»): the last line, without the script's prefix. */
|
|
90
|
+
function describeRunnerRefusal(stderr, fallback) {
|
|
91
|
+
const lastLine = stderr.split('\n').map((line) => line.trim()).filter((line) => line !== '').pop();
|
|
92
|
+
return lastLine === undefined ? fallback : lastLine.replace(/^remote-run-runner: /, '');
|
|
93
|
+
}
|
|
94
|
+
/** @description Create the client of `runner`. `script` and the spawn functions are injectable for the tests. */
|
|
95
|
+
function createRunnerClient(runner, cacheDir, script = readRunnerScript()) {
|
|
96
|
+
const call = (subcommand, args, options = {}) => (0, ssh_1.runSshCommand)({
|
|
97
|
+
runner,
|
|
98
|
+
cacheDir,
|
|
99
|
+
remoteCommand: (0, ssh_1.buildRunnerScriptCommand)({ runner, scriptName: script.name, subcommand, args }),
|
|
100
|
+
input: options.input,
|
|
101
|
+
timeoutMs: options.timeoutMs ?? exports.shortCallTimeoutMs,
|
|
102
|
+
signal: options.signal,
|
|
103
|
+
});
|
|
104
|
+
let absoluteWorkDir = runner.workDir.startsWith('/') ? runner.workDir : null;
|
|
105
|
+
return {
|
|
106
|
+
runner,
|
|
107
|
+
cacheDir,
|
|
108
|
+
rsyncSshCommand: (0, ssh_1.buildRsyncSshCommand)(runner, cacheDir),
|
|
109
|
+
async getAbsoluteWorkDir() {
|
|
110
|
+
if (absoluteWorkDir === null) {
|
|
111
|
+
const resolved = await call('workdir', []);
|
|
112
|
+
const first = resolved.stdout.trim().split('\n')[0];
|
|
113
|
+
if (resolved.exitCode !== 0 || !first.startsWith('/'))
|
|
114
|
+
throw new remoteRunError_1.RemoteRunError(`runner "${runner.name}": could not resolve its work dir ${runner.workDir} — ${describeSshFailure(resolved)}`);
|
|
115
|
+
absoluteWorkDir = first;
|
|
116
|
+
}
|
|
117
|
+
return absoluteWorkDir;
|
|
118
|
+
},
|
|
119
|
+
async ensureScript(signal) {
|
|
120
|
+
const exists = await (0, ssh_1.runSshCommand)({ runner, cacheDir, remoteCommand: (0, ssh_1.buildScriptExistsCommand)(runner, script.name), timeoutMs: scriptUploadTimeoutMs, signal });
|
|
121
|
+
if (exists.exitCode === 0)
|
|
122
|
+
return;
|
|
123
|
+
if ((0, ssh_1.checkIsConnectionLost)(exists.exitCode))
|
|
124
|
+
throw new remoteRunError_1.RunnerUnreachableError(runner.name, describeSshFailure(exists));
|
|
125
|
+
const upload = await (0, ssh_1.runSshCommand)({ runner, cacheDir, remoteCommand: (0, ssh_1.buildScriptUploadCommand)(runner, script.name), input: script.text, timeoutMs: scriptUploadTimeoutMs, signal });
|
|
126
|
+
if (upload.exitCode !== 0)
|
|
127
|
+
throw new remoteRunError_1.RemoteRunError(`could not put the runner script on "${runner.name}" (${runner.workDir}/bin) — ${describeSshFailure(upload)}`);
|
|
128
|
+
},
|
|
129
|
+
call,
|
|
130
|
+
async callOrThrow(subcommand, args, options) {
|
|
131
|
+
const result = await call(subcommand, args, options);
|
|
132
|
+
if (result.exitCode !== 0) {
|
|
133
|
+
const detail = result.stderr.trim() === '' ? describeSshFailure(result) : result.stderr.trim().split('\n').slice(-3).join(' / ');
|
|
134
|
+
throw new remoteRunError_1.RemoteRunError(`runner "${runner.name}": ${subcommand} failed — ${detail}`);
|
|
135
|
+
}
|
|
136
|
+
return result.stdout;
|
|
137
|
+
},
|
|
138
|
+
stream(subcommand, args) {
|
|
139
|
+
return (0, ssh_1.spawnSshStream)({ runner, cacheDir, remoteCommand: (0, ssh_1.buildRunnerScriptCommand)({ runner, scriptName: script.name, subcommand, args }) });
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=runnerClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runnerClient.js","sourceRoot":"","sources":["../../src/remoteRun/runnerClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type RunnerCapability, type RunnerProbe } from './probe';
|
|
2
|
+
import type { RunnerConfig } from './runnersConfig';
|
|
3
|
+
/** @description The OS text of a runner as a short plain label: letters, digits and a few signs; no line break, no markup, 40 characters at most. */
|
|
4
|
+
export declare function sanitizeOsLabel(reportedOs: string): string;
|
|
5
|
+
/** @name RunnerSummary @description What the instructions say of one runner. */
|
|
6
|
+
export interface RunnerSummary {
|
|
7
|
+
name: string;
|
|
8
|
+
osLabel: string;
|
|
9
|
+
/** The capabilities it had when last probed, in the order `--needs` lists them. */
|
|
10
|
+
capabilities: RunnerCapability[];
|
|
11
|
+
/** Paused from the hub, or on the runner itself when last seen: not used for new jobs. */
|
|
12
|
+
isPaused: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** @description The summary of `runner`; `probe` is its last snapshot, if it has one. */
|
|
15
|
+
export declare function summarizeRunner(runner: RunnerConfig, probe: RunnerProbe | null): RunnerSummary;
|
|
16
|
+
/** @description `mac — macOS 15.1, android, playwright`; `box1 (paused) — Ubuntu 24.04`; just the name when nothing else is known. */
|
|
17
|
+
export declare function formatRunnerSummaryLine(summary: RunnerSummary): string;
|
|
18
|
+
/**
|
|
19
|
+
* @description The lines for the instructions of a session that connects now: one per runner of the catalog (hand-made first, then paired; a
|
|
20
|
+
* catalog with an error still gives the runners that last loaded). Empty = no runner, and remote-run is not mentioned. The snapshots are
|
|
21
|
+
* read from the cache `env` names — the bot's own, which the agents share (`XDG_CACHE_HOME` is on the tracker agents' allowlist).
|
|
22
|
+
*/
|
|
23
|
+
export declare function getRunnerSummaryLines(homeDir?: string, env?: NodeJS.ProcessEnv): string[];
|
|
24
|
+
//# sourceMappingURL=runnerSummary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runnerSummary.d.ts","sourceRoot":"","sources":["../../src/remoteRun/runnerSummary.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiBpD,qJAAqJ;AACrJ,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,0FAA0F;IAC1F,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,aAAa,CAQ9F;AAED,sIAAsI;AACtI,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAGtE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAqB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,EAAE,CAIpH"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.sanitizeOsLabel = sanitizeOsLabel;
|
|
37
|
+
exports.summarizeRunner = summarizeRunner;
|
|
38
|
+
exports.formatRunnerSummaryLine = formatRunnerSummaryLine;
|
|
39
|
+
exports.getRunnerSummaryLines = getRunnerSummaryLines;
|
|
40
|
+
const os = __importStar(require("os"));
|
|
41
|
+
const probe_1 = require("./probe");
|
|
42
|
+
const runners_1 = require("./runners");
|
|
43
|
+
const runnersCatalog_1 = require("./runnersCatalog");
|
|
44
|
+
const ssh_1 = require("./ssh");
|
|
45
|
+
/**
|
|
46
|
+
* @description The one line per runner that the bot MCP's instructions give an agent — `mac — macOS 15.1, android, playwright`: the name, the
|
|
47
|
+
* OS and what the runner could do when it was last probed (`remote-run`'s own snapshot, so a runner nobody has probed yet shows only its name
|
|
48
|
+
* and the OS it reported at pairing). It is a hint for choosing `--needs`, read once per connect; the live state — online, load, jobs — stays
|
|
49
|
+
* in `charness remote-run runners`, which the bullet tells the agent to look at first.
|
|
50
|
+
*
|
|
51
|
+
* What a runner machine reported (its OS name) goes into an agent's instructions, so it is reduced to a short plain label here: a runner is
|
|
52
|
+
* code the operator attached, not a voice the agent should obey.
|
|
53
|
+
*/
|
|
54
|
+
const maxOsLabelLength = 40;
|
|
55
|
+
/** `/` stays: `/etc/os-release` names are «Debian GNU/Linux 12»; a slash cannot start a line, a bullet or markup. */
|
|
56
|
+
const unsafeLabelCharacters = /[^A-Za-z0-9 ._+()/-]/g;
|
|
57
|
+
/** @description The OS text of a runner as a short plain label: letters, digits and a few signs; no line break, no markup, 40 characters at most. */
|
|
58
|
+
function sanitizeOsLabel(reportedOs) {
|
|
59
|
+
return reportedOs.replace(unsafeLabelCharacters, '').replace(/\s+/g, ' ').trim().slice(0, maxOsLabelLength).trim();
|
|
60
|
+
}
|
|
61
|
+
/** @description The summary of `runner`; `probe` is its last snapshot, if it has one. */
|
|
62
|
+
function summarizeRunner(runner, probe) {
|
|
63
|
+
const probedOs = probe === null ? '' : [probe.osName, probe.osVersion].filter((part) => part !== '').join(' ');
|
|
64
|
+
return {
|
|
65
|
+
name: runner.name,
|
|
66
|
+
osLabel: sanitizeOsLabel(probedOs !== '' ? probedOs : (runner.paired?.os ?? '')),
|
|
67
|
+
capabilities: probe === null ? [] : probe_1.runnerCapabilities.filter((capability) => probe.capabilities[capability].isAvailable),
|
|
68
|
+
isPaused: runner.paired?.isPausedByHub === true || probe?.isPaused === true,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** @description `mac — macOS 15.1, android, playwright`; `box1 (paused) — Ubuntu 24.04`; just the name when nothing else is known. */
|
|
72
|
+
function formatRunnerSummaryLine(summary) {
|
|
73
|
+
const details = [...(summary.osLabel === '' ? [] : [summary.osLabel]), ...summary.capabilities];
|
|
74
|
+
return `${summary.name}${summary.isPaused ? ' (paused)' : ''}${details.length === 0 ? '' : ` — ${details.join(', ')}`}`;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* @description The lines for the instructions of a session that connects now: one per runner of the catalog (hand-made first, then paired; a
|
|
78
|
+
* catalog with an error still gives the runners that last loaded). Empty = no runner, and remote-run is not mentioned. The snapshots are
|
|
79
|
+
* read from the cache `env` names — the bot's own, which the agents share (`XDG_CACHE_HOME` is on the tracker agents' allowlist).
|
|
80
|
+
*/
|
|
81
|
+
function getRunnerSummaryLines(homeDir = os.homedir(), env = process.env) {
|
|
82
|
+
const runners = (0, runnersCatalog_1.loadRunnersCatalog)(homeDir).config?.runners ?? [];
|
|
83
|
+
const cacheDir = (0, ssh_1.getRemoteRunCacheDir)(env, homeDir);
|
|
84
|
+
return runners.map((runner) => formatRunnerSummaryLine(summarizeRunner(runner, (0, runners_1.readLastProbe)(cacheDir, runner.name)?.probe ?? null)));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=runnerSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runnerSummary.js","sourceRoot":"","sources":["../../src/remoteRun/runnerSummary.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,0CAEC;AAaD,0CAQC;AAGD,0DAGC;AAOD,sDAIC;AA9DD,uCAAyB;AACzB,mCAAsF;AACtF,uCAA0C;AAC1C,qDAAsD;AAEtD,+BAA6C;AAE7C;;;;;;;;GAQG;AAEH,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,qHAAqH;AACrH,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,qJAAqJ;AACrJ,SAAgB,eAAe,CAAC,UAAkB;IAChD,OAAO,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;AACrH,CAAC;AAYD,yFAAyF;AACzF,SAAgB,eAAe,CAAC,MAAoB,EAAE,KAAyB;IAC7E,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/G,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,eAAe,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,YAAY,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAAkB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC;QACzH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,IAAI,KAAK,EAAE,QAAQ,KAAK,IAAI;KAC5E,CAAC;AACJ,CAAC;AAED,sIAAsI;AACtI,SAAgB,uBAAuB,CAAC,OAAsB;IAC5D,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAChG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AAC1H,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,UAAkB,EAAE,CAAC,OAAO,EAAE,EAAE,MAAyB,OAAO,CAAC,GAAG;IACxG,MAAM,OAAO,GAAG,IAAA,mCAAkB,EAAC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAA,0BAAoB,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,uBAAuB,CAAC,eAAe,CAAC,MAAM,EAAE,IAAA,uBAAa,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AACxI,CAAC"}
|