charness 3.3.2 → 3.5.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.
Files changed (277) hide show
  1. package/CHANGELOG.md +639 -0
  2. package/DEVELOPMENT.md +76 -0
  3. package/README.md +78 -7
  4. package/SETUP.md +65 -19
  5. package/dist/adapters/claudeCliAdapter.js +2 -2
  6. package/dist/adapters/claudeCliAdapter.js.map +1 -1
  7. package/dist/adapters/claudeConfigDir.d.ts +18 -0
  8. package/dist/adapters/claudeConfigDir.d.ts.map +1 -1
  9. package/dist/adapters/claudeJsonStreamAdapter.d.ts +8 -1
  10. package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -1
  11. package/dist/adapters/claudeJsonStreamAdapter.js +24 -6
  12. package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -1
  13. package/dist/adapters/createAdapter.d.ts +2 -1
  14. package/dist/adapters/createAdapter.d.ts.map +1 -1
  15. package/dist/adapters/createAdapter.js +16 -0
  16. package/dist/adapters/createAdapter.js.map +1 -1
  17. package/dist/adapters/openCodeAdapter.d.ts +11 -0
  18. package/dist/adapters/openCodeAdapter.d.ts.map +1 -1
  19. package/dist/adapters/openCodeAdapter.js +24 -9
  20. package/dist/adapters/openCodeAdapter.js.map +1 -1
  21. package/dist/agentLogin/agentLogin.d.ts +19 -1
  22. package/dist/agentLogin/agentLogin.d.ts.map +1 -1
  23. package/dist/agentLogin/agentLogin.js +64 -18
  24. package/dist/agentLogin/agentLogin.js.map +1 -1
  25. package/dist/apiErrorRetry.d.ts +3 -1
  26. package/dist/apiErrorRetry.d.ts.map +1 -1
  27. package/dist/apiErrorRetry.js +11 -1
  28. package/dist/apiErrorRetry.js.map +1 -1
  29. package/dist/bot.d.ts +0 -3
  30. package/dist/bot.d.ts.map +1 -1
  31. package/dist/bot.js +487 -182
  32. package/dist/bot.js.map +1 -1
  33. package/dist/changelogEntries.d.ts +25 -0
  34. package/dist/changelogEntries.d.ts.map +1 -0
  35. package/dist/changelogEntries.js +66 -0
  36. package/dist/changelogEntries.js.map +1 -0
  37. package/dist/cli/bot.d.ts +6 -2
  38. package/dist/cli/bot.d.ts.map +1 -1
  39. package/dist/cli/bot.js +34 -2
  40. package/dist/cli/bot.js.map +1 -1
  41. package/dist/cli/claudeProfiles.d.ts +1 -1
  42. package/dist/cli/claudeProfiles.d.ts.map +1 -1
  43. package/dist/cli/claudeProfiles.js +11 -6
  44. package/dist/cli/claudeProfiles.js.map +1 -1
  45. package/dist/cli/hot.d.ts +7 -0
  46. package/dist/cli/hot.d.ts.map +1 -1
  47. package/dist/cli/hot.js +53 -3
  48. package/dist/cli/hot.js.map +1 -1
  49. package/dist/cli.d.ts +1 -1
  50. package/dist/cli.d.ts.map +1 -1
  51. package/dist/cli.js +8 -0
  52. package/dist/cli.js.map +1 -1
  53. package/dist/connectors/telegram/bindPicker.d.ts +64 -0
  54. package/dist/connectors/telegram/bindPicker.d.ts.map +1 -0
  55. package/dist/connectors/telegram/bindPicker.js +97 -0
  56. package/dist/connectors/telegram/bindPicker.js.map +1 -0
  57. package/dist/connectors/telegram/commands/claudeAccounts.d.ts +6 -2
  58. package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -1
  59. package/dist/connectors/telegram/commands/claudeAccounts.js +127 -28
  60. package/dist/connectors/telegram/commands/claudeAccounts.js.map +1 -1
  61. package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -1
  62. package/dist/connectors/telegram/commands/fallbackChain.js +6 -2
  63. package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -1
  64. package/dist/connectors/telegram/commands/selfUpdate.d.ts +16 -0
  65. package/dist/connectors/telegram/commands/selfUpdate.d.ts.map +1 -0
  66. package/dist/connectors/telegram/commands/selfUpdate.js +210 -0
  67. package/dist/connectors/telegram/commands/selfUpdate.js.map +1 -0
  68. package/dist/connectors/telegram/commands/stt.d.ts +1 -0
  69. package/dist/connectors/telegram/commands/stt.d.ts.map +1 -1
  70. package/dist/connectors/telegram/commands/stt.js +5 -0
  71. package/dist/connectors/telegram/commands/stt.js.map +1 -1
  72. package/dist/connectors/telegram/commands/topicCommand.d.ts +75 -0
  73. package/dist/connectors/telegram/commands/topicCommand.d.ts.map +1 -0
  74. package/dist/connectors/telegram/commands/topicCommand.js +391 -0
  75. package/dist/connectors/telegram/commands/topicCommand.js.map +1 -0
  76. package/dist/i18n/de.d.ts.map +1 -1
  77. package/dist/i18n/de.js +136 -3
  78. package/dist/i18n/de.js.map +1 -1
  79. package/dist/i18n/en.d.ts.map +1 -1
  80. package/dist/i18n/en.js +136 -3
  81. package/dist/i18n/en.js.map +1 -1
  82. package/dist/i18n/es.d.ts.map +1 -1
  83. package/dist/i18n/es.js +136 -3
  84. package/dist/i18n/es.js.map +1 -1
  85. package/dist/i18n/fr.d.ts.map +1 -1
  86. package/dist/i18n/fr.js +136 -3
  87. package/dist/i18n/fr.js.map +1 -1
  88. package/dist/i18n/hi.d.ts.map +1 -1
  89. package/dist/i18n/hi.js +136 -3
  90. package/dist/i18n/hi.js.map +1 -1
  91. package/dist/i18n/ja.d.ts.map +1 -1
  92. package/dist/i18n/ja.js +136 -3
  93. package/dist/i18n/ja.js.map +1 -1
  94. package/dist/i18n/ka.d.ts.map +1 -1
  95. package/dist/i18n/ka.js +136 -3
  96. package/dist/i18n/ka.js.map +1 -1
  97. package/dist/i18n/pt.d.ts.map +1 -1
  98. package/dist/i18n/pt.js +136 -3
  99. package/dist/i18n/pt.js.map +1 -1
  100. package/dist/i18n/ru.d.ts.map +1 -1
  101. package/dist/i18n/ru.js +136 -3
  102. package/dist/i18n/ru.js.map +1 -1
  103. package/dist/i18n/uk.d.ts.map +1 -1
  104. package/dist/i18n/uk.js +136 -3
  105. package/dist/i18n/uk.js.map +1 -1
  106. package/dist/i18n/uz.d.ts.map +1 -1
  107. package/dist/i18n/uz.js +136 -3
  108. package/dist/i18n/uz.js.map +1 -1
  109. package/dist/i18n/zh.d.ts.map +1 -1
  110. package/dist/i18n/zh.js +136 -3
  111. package/dist/i18n/zh.js.map +1 -1
  112. package/dist/instanceSettings.d.ts +12 -1
  113. package/dist/instanceSettings.d.ts.map +1 -1
  114. package/dist/instanceSettings.js +40 -4
  115. package/dist/instanceSettings.js.map +1 -1
  116. package/dist/scheduler/mcpSurface.d.ts.map +1 -1
  117. package/dist/scheduler/mcpSurface.js +4 -2
  118. package/dist/scheduler/mcpSurface.js.map +1 -1
  119. package/dist/selfUpdate/bootRollback.d.ts +22 -0
  120. package/dist/selfUpdate/bootRollback.d.ts.map +1 -0
  121. package/dist/selfUpdate/bootRollback.js +79 -0
  122. package/dist/selfUpdate/bootRollback.js.map +1 -0
  123. package/dist/selfUpdate/commandRunner.d.ts +21 -0
  124. package/dist/selfUpdate/commandRunner.d.ts.map +1 -0
  125. package/dist/selfUpdate/commandRunner.js +32 -0
  126. package/dist/selfUpdate/commandRunner.js.map +1 -0
  127. package/dist/selfUpdate/constants.d.ts +26 -0
  128. package/dist/selfUpdate/constants.d.ts.map +1 -0
  129. package/dist/selfUpdate/constants.js +31 -0
  130. package/dist/selfUpdate/constants.js.map +1 -0
  131. package/dist/selfUpdate/gitSource.d.ts +58 -0
  132. package/dist/selfUpdate/gitSource.d.ts.map +1 -0
  133. package/dist/selfUpdate/gitSource.js +183 -0
  134. package/dist/selfUpdate/gitSource.js.map +1 -0
  135. package/dist/selfUpdate/hostLock.d.ts +16 -0
  136. package/dist/selfUpdate/hostLock.d.ts.map +1 -0
  137. package/dist/selfUpdate/hostLock.js +101 -0
  138. package/dist/selfUpdate/hostLock.js.map +1 -0
  139. package/dist/selfUpdate/hotSupervisor.d.ts +47 -0
  140. package/dist/selfUpdate/hotSupervisor.d.ts.map +1 -0
  141. package/dist/selfUpdate/hotSupervisor.js +125 -0
  142. package/dist/selfUpdate/hotSupervisor.js.map +1 -0
  143. package/dist/selfUpdate/installKind.d.ts +45 -0
  144. package/dist/selfUpdate/installKind.d.ts.map +1 -0
  145. package/dist/selfUpdate/installKind.js +99 -0
  146. package/dist/selfUpdate/installKind.js.map +1 -0
  147. package/dist/selfUpdate/launchEnvironment.d.ts +3 -0
  148. package/dist/selfUpdate/launchEnvironment.d.ts.map +1 -0
  149. package/dist/selfUpdate/launchEnvironment.js +16 -0
  150. package/dist/selfUpdate/launchEnvironment.js.map +1 -0
  151. package/dist/selfUpdate/npmSource.d.ts +34 -0
  152. package/dist/selfUpdate/npmSource.d.ts.map +1 -0
  153. package/dist/selfUpdate/npmSource.js +107 -0
  154. package/dist/selfUpdate/npmSource.js.map +1 -0
  155. package/dist/selfUpdate/releaseNotes.d.ts +33 -0
  156. package/dist/selfUpdate/releaseNotes.d.ts.map +1 -0
  157. package/dist/selfUpdate/releaseNotes.js +115 -0
  158. package/dist/selfUpdate/releaseNotes.js.map +1 -0
  159. package/dist/selfUpdate/restart.d.ts +33 -0
  160. package/dist/selfUpdate/restart.d.ts.map +1 -0
  161. package/dist/selfUpdate/restart.js +94 -0
  162. package/dist/selfUpdate/restart.js.map +1 -0
  163. package/dist/selfUpdate/selfCheck.d.ts +20 -0
  164. package/dist/selfUpdate/selfCheck.d.ts.map +1 -0
  165. package/dist/selfUpdate/selfCheck.js +126 -0
  166. package/dist/selfUpdate/selfCheck.js.map +1 -0
  167. package/dist/selfUpdate/semver.d.ts +24 -0
  168. package/dist/selfUpdate/semver.d.ts.map +1 -0
  169. package/dist/selfUpdate/semver.js +165 -0
  170. package/dist/selfUpdate/semver.js.map +1 -0
  171. package/dist/selfUpdate/types.d.ts +51 -0
  172. package/dist/selfUpdate/types.d.ts.map +1 -0
  173. package/dist/selfUpdate/types.js +3 -0
  174. package/dist/selfUpdate/types.js.map +1 -0
  175. package/dist/selfUpdate/updateEngine.d.ts +110 -0
  176. package/dist/selfUpdate/updateEngine.d.ts.map +1 -0
  177. package/dist/selfUpdate/updateEngine.js +727 -0
  178. package/dist/selfUpdate/updateEngine.js.map +1 -0
  179. package/dist/selfUpdate/updateMessages.d.ts +84 -0
  180. package/dist/selfUpdate/updateMessages.d.ts.map +1 -0
  181. package/dist/selfUpdate/updateMessages.js +115 -0
  182. package/dist/selfUpdate/updateMessages.js.map +1 -0
  183. package/dist/selfUpdate/updateModes.d.ts +17 -0
  184. package/dist/selfUpdate/updateModes.d.ts.map +1 -0
  185. package/dist/selfUpdate/updateModes.js +14 -0
  186. package/dist/selfUpdate/updateModes.js.map +1 -0
  187. package/dist/selfUpdate/updatePending.d.ts +76 -0
  188. package/dist/selfUpdate/updatePending.d.ts.map +1 -0
  189. package/dist/selfUpdate/updatePending.js +131 -0
  190. package/dist/selfUpdate/updatePending.js.map +1 -0
  191. package/dist/selfUpdate/updatePolicy.d.ts +115 -0
  192. package/dist/selfUpdate/updatePolicy.d.ts.map +1 -0
  193. package/dist/selfUpdate/updatePolicy.js +83 -0
  194. package/dist/selfUpdate/updatePolicy.js.map +1 -0
  195. package/dist/selfUpdate/updateRuntime.d.ts +22 -0
  196. package/dist/selfUpdate/updateRuntime.d.ts.map +1 -0
  197. package/dist/selfUpdate/updateRuntime.js +148 -0
  198. package/dist/selfUpdate/updateRuntime.js.map +1 -0
  199. package/dist/startupPromptBuffer.d.ts +2 -0
  200. package/dist/startupPromptBuffer.d.ts.map +1 -1
  201. package/dist/startupPromptBuffer.js +4 -0
  202. package/dist/startupPromptBuffer.js.map +1 -1
  203. package/dist/state.d.ts +43 -0
  204. package/dist/state.d.ts.map +1 -1
  205. package/dist/state.js +54 -0
  206. package/dist/state.js.map +1 -1
  207. package/dist/types.d.ts +10 -0
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/utils/anthropicApiKeyCheck.d.ts +19 -0
  210. package/dist/utils/anthropicApiKeyCheck.d.ts.map +1 -0
  211. package/dist/utils/anthropicApiKeyCheck.js +41 -0
  212. package/dist/utils/anthropicApiKeyCheck.js.map +1 -0
  213. package/dist/utils/claudeAccountPickerPlan.d.ts +6 -1
  214. package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -1
  215. package/dist/utils/claudeAccountPickerPlan.js +5 -1
  216. package/dist/utils/claudeAccountPickerPlan.js.map +1 -1
  217. package/dist/utils/claudeApiKeyHelper.d.ts +19 -0
  218. package/dist/utils/claudeApiKeyHelper.d.ts.map +1 -0
  219. package/dist/utils/claudeApiKeyHelper.js +32 -0
  220. package/dist/utils/claudeApiKeyHelper.js.map +1 -0
  221. package/dist/utils/claudeApiSpend.d.ts +73 -0
  222. package/dist/utils/claudeApiSpend.d.ts.map +1 -0
  223. package/dist/utils/claudeApiSpend.js +82 -0
  224. package/dist/utils/claudeApiSpend.js.map +1 -0
  225. package/dist/utils/claudeCompactHook.d.ts +11 -6
  226. package/dist/utils/claudeCompactHook.d.ts.map +1 -1
  227. package/dist/utils/claudeCompactHook.js +28 -11
  228. package/dist/utils/claudeCompactHook.js.map +1 -1
  229. package/dist/utils/claudeLimitSwitch.d.ts +2 -1
  230. package/dist/utils/claudeLimitSwitch.d.ts.map +1 -1
  231. package/dist/utils/claudeLimitSwitch.js +3 -2
  232. package/dist/utils/claudeLimitSwitch.js.map +1 -1
  233. package/dist/utils/claudeProfileUsageLines.d.ts +18 -3
  234. package/dist/utils/claudeProfileUsageLines.d.ts.map +1 -1
  235. package/dist/utils/claudeProfileUsageLines.js +23 -2
  236. package/dist/utils/claudeProfileUsageLines.js.map +1 -1
  237. package/dist/utils/claudeProfiles.d.ts +57 -2
  238. package/dist/utils/claudeProfiles.d.ts.map +1 -1
  239. package/dist/utils/claudeProfiles.js +96 -3
  240. package/dist/utils/claudeProfiles.js.map +1 -1
  241. package/dist/utils/claudeStreamJson.d.ts +4 -1
  242. package/dist/utils/claudeStreamJson.d.ts.map +1 -1
  243. package/dist/utils/claudeStreamJson.js +6 -0
  244. package/dist/utils/claudeStreamJson.js.map +1 -1
  245. package/dist/utils/claudeTranscriptContent.d.ts +8 -0
  246. package/dist/utils/claudeTranscriptContent.d.ts.map +1 -1
  247. package/dist/utils/claudeTranscriptContent.js +44 -0
  248. package/dist/utils/claudeTranscriptContent.js.map +1 -1
  249. package/dist/utils/claudeUsage.d.ts +22 -6
  250. package/dist/utils/claudeUsage.d.ts.map +1 -1
  251. package/dist/utils/claudeUsage.js +12 -5
  252. package/dist/utils/claudeUsage.js.map +1 -1
  253. package/dist/utils/claudeUsageRefresher.d.ts +6 -0
  254. package/dist/utils/claudeUsageRefresher.d.ts.map +1 -1
  255. package/dist/utils/claudeUsageRefresher.js +2 -2
  256. package/dist/utils/claudeUsageRefresher.js.map +1 -1
  257. package/dist/utils/fallbackChain.d.ts +15 -8
  258. package/dist/utils/fallbackChain.d.ts.map +1 -1
  259. package/dist/utils/fallbackChain.js +30 -13
  260. package/dist/utils/fallbackChain.js.map +1 -1
  261. package/dist/utils/limitsBoardPlan.d.ts +4 -2
  262. package/dist/utils/limitsBoardPlan.d.ts.map +1 -1
  263. package/dist/utils/limitsBoardPlan.js +12 -5
  264. package/dist/utils/limitsBoardPlan.js.map +1 -1
  265. package/dist/utils/recvPreviewRedaction.d.ts +7 -2
  266. package/dist/utils/recvPreviewRedaction.d.ts.map +1 -1
  267. package/dist/utils/recvPreviewRedaction.js +10 -4
  268. package/dist/utils/recvPreviewRedaction.js.map +1 -1
  269. package/dist/utils/threadStatusReport.d.ts +12 -1
  270. package/dist/utils/threadStatusReport.d.ts.map +1 -1
  271. package/dist/utils/threadStatusReport.js +13 -4
  272. package/dist/utils/threadStatusReport.js.map +1 -1
  273. package/dist/utils/updateScreenPlan.d.ts +38 -0
  274. package/dist/utils/updateScreenPlan.d.ts.map +1 -0
  275. package/dist/utils/updateScreenPlan.js +143 -0
  276. package/dist/utils/updateScreenPlan.js.map +1 -0
  277. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateEngine.js","sourceRoot":"","sources":["../../src/selfUpdate/updateEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { WhatsNewSummary } from './releaseNotes';
2
+ import type { AutoUpdateMode } from './updateModes';
3
+ /**
4
+ * What the update engine says in General, as data; {@link renderUpdateMessage} words it in the chat's language. The entries
5
+ * of a what's-new list stay English (they are the CHANGELOG's own words, never translated at run time); everything around
6
+ * them is localised.
7
+ */
8
+ /** Where the full CHANGELOG lives, for "…and N more". */
9
+ export declare const changelogUrl = "https://github.com/olosegres/charness/blob/main/CHANGELOG.md";
10
+ /** The tap that installs the version printed on the button — its identity is baked in, so an old keyboard never installs another. */
11
+ export declare const updateInstallCallbackPrefix = "upd_go_";
12
+ /**
13
+ * The same tap under an ANNOUNCEMENT in General (a new version is out, a major or a migration guide is offered). A separate prefix on
14
+ * purpose: a tap on the `/update` screen re-renders the screen, a tap on an announcement must leave the announcement as it is — it
15
+ * would otherwise be overwritten with the generic screen, the major's «read the notes first» included.
16
+ */
17
+ export declare const updateAnnouncementInstallCallbackPrefix = "upd_ann_";
18
+ /** Why an automatic update did not finish, worded by the renderer. */
19
+ export type UpdateFailureReason = 'install' | 'start' | 'build' | 'boot';
20
+ export type UpdateMessage = {
21
+ kind: 'updated';
22
+ from: string;
23
+ to: string;
24
+ commitCount: number | null;
25
+ summary: WhatsNewSummary | null;
26
+ } | {
27
+ kind: 'nowRunning';
28
+ from: string;
29
+ to: string;
30
+ summary: WhatsNewSummary | null;
31
+ } | {
32
+ kind: 'notify';
33
+ version: string;
34
+ running: string;
35
+ canInstall: boolean;
36
+ manualCommand: string;
37
+ } | {
38
+ kind: 'offerMajor';
39
+ version: string;
40
+ running: string;
41
+ } | {
42
+ kind: 'offerBreaking';
43
+ from: string;
44
+ to: string;
45
+ migrationGuides: string[];
46
+ } | {
47
+ kind: 'needsNode';
48
+ version: string;
49
+ required: string;
50
+ runningNode: string;
51
+ } | {
52
+ kind: 'installFailed';
53
+ target: string;
54
+ reason: UpdateFailureReason;
55
+ stillRunning: string;
56
+ manualCommand: string;
57
+ } | {
58
+ kind: 'rollbackFailed';
59
+ target: string;
60
+ reason: UpdateFailureReason;
61
+ manualCommand: string;
62
+ } | {
63
+ kind: 'checkFailing';
64
+ reason: string;
65
+ } | {
66
+ kind: 'featureAnnounced';
67
+ mode: AutoUpdateMode;
68
+ } | {
69
+ kind: 'restartSupervisor';
70
+ };
71
+ export interface UpdateMessageButton {
72
+ label: string;
73
+ callbackData: string;
74
+ }
75
+ export interface RenderedUpdateMessage {
76
+ text: string;
77
+ /** Pinned in General: the operator must act, or a restart would boot a broken install. */
78
+ pin: boolean;
79
+ buttons: UpdateMessageButton[];
80
+ }
81
+ export type Translate = (code: string, vars?: Record<string, string | number>) => string;
82
+ /** @description Word an update message: its text, whether to pin it, and its buttons. */
83
+ export declare function renderUpdateMessage(message: UpdateMessage, translate: Translate): RenderedUpdateMessage;
84
+ //# sourceMappingURL=updateMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateMessages.d.ts","sourceRoot":"","sources":["../../src/selfUpdate/updateMessages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;;GAIG;AAEH,yDAAyD;AACzD,eAAO,MAAM,YAAY,iEAAiE,CAAC;AAG3F,qIAAqI;AACrI,eAAO,MAAM,2BAA2B,YAAY,CAAC;AACrD;;;;GAIG;AACH,eAAO,MAAM,uCAAuC,aAAa,CAAC;AAElE,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,GAC1G;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACnH;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC9F;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAElC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC;AA2BzF,yFAAyF;AACzF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,qBAAqB,CAqEvG"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateAnnouncementInstallCallbackPrefix = exports.updateInstallCallbackPrefix = exports.changelogUrl = void 0;
4
+ exports.renderUpdateMessage = renderUpdateMessage;
5
+ /**
6
+ * What the update engine says in General, as data; {@link renderUpdateMessage} words it in the chat's language. The entries
7
+ * of a what's-new list stay English (they are the CHANGELOG's own words, never translated at run time); everything around
8
+ * them is localised.
9
+ */
10
+ /** Where the full CHANGELOG lives, for "…and N more". */
11
+ exports.changelogUrl = 'https://github.com/olosegres/charness/blob/main/CHANGELOG.md';
12
+ const releaseUrlPrefix = 'https://github.com/olosegres/charness/releases/tag/v';
13
+ const migrationGuideUrlPrefix = 'https://github.com/olosegres/charness/blob/main/';
14
+ /** The tap that installs the version printed on the button — its identity is baked in, so an old keyboard never installs another. */
15
+ exports.updateInstallCallbackPrefix = 'upd_go_';
16
+ /**
17
+ * The same tap under an ANNOUNCEMENT in General (a new version is out, a major or a migration guide is offered). A separate prefix on
18
+ * purpose: a tap on the `/update` screen re-renders the screen, a tap on an announcement must leave the announcement as it is — it
19
+ * would otherwise be overwritten with the generic screen, the major's «read the notes first» included.
20
+ */
21
+ exports.updateAnnouncementInstallCallbackPrefix = 'upd_ann_';
22
+ const bullet = '•';
23
+ /** The what's-new block: the to-do list first, then the headlines by version, then how many did not fit. */
24
+ function renderSummary(summary, translate) {
25
+ const lines = [];
26
+ if (summary.todo.length > 0) {
27
+ lines.push(translate('update.notes.todoLabel'));
28
+ lines.push(...summary.todo.map((entry) => `${bullet} ${entry}`));
29
+ }
30
+ for (const group of summary.groups) {
31
+ if (group.version !== null)
32
+ lines.push(group.version);
33
+ lines.push(...group.headlines.map((headline) => `${bullet} ${headline}`));
34
+ }
35
+ if (summary.moreCount > 0)
36
+ lines.push(translate('update.notes.moreLine', { count: summary.moreCount, url: exports.changelogUrl }));
37
+ return lines.join('\n');
38
+ }
39
+ function withSummary(heading, summary, translate) {
40
+ return summary === null ? heading : `${heading}\n${renderSummary(summary, translate)}`;
41
+ }
42
+ function getUpdateButton(version, translate) {
43
+ return { label: translate('update.updateButton', { version }), callbackData: `${exports.updateAnnouncementInstallCallbackPrefix}${version}` };
44
+ }
45
+ /** @description Word an update message: its text, whether to pin it, and its buttons. */
46
+ function renderUpdateMessage(message, translate) {
47
+ switch (message.kind) {
48
+ case 'updated': {
49
+ const heading = message.commitCount === null
50
+ ? translate('update.updated.heading', { from: message.from, to: message.to })
51
+ : translate('update.updatedCommits.heading', { from: message.from, to: message.to, count: message.commitCount });
52
+ return { text: withSummary(heading, message.summary, translate), pin: (message.summary?.todo.length ?? 0) > 0, buttons: [] };
53
+ }
54
+ case 'nowRunning':
55
+ return {
56
+ text: withSummary(translate('update.nowRunning.heading', { from: message.from, to: message.to }), message.summary, translate),
57
+ pin: (message.summary?.todo.length ?? 0) > 0,
58
+ buttons: [],
59
+ };
60
+ case 'notify':
61
+ return message.canInstall
62
+ ? { text: translate('update.notify', { version: message.version, running: message.running }), pin: false, buttons: [getUpdateButton(message.version, translate)] }
63
+ : { text: translate('update.notifyManual', { version: message.version, running: message.running, command: message.manualCommand }), pin: false, buttons: [] };
64
+ case 'offerMajor':
65
+ return {
66
+ text: translate('update.offerMajor', { version: message.version, running: message.running, url: `${releaseUrlPrefix}${message.version}` }),
67
+ pin: false,
68
+ buttons: [getUpdateButton(message.version, translate)],
69
+ };
70
+ case 'offerBreaking':
71
+ return {
72
+ text: translate('update.offerBreaking', {
73
+ from: message.from,
74
+ to: message.to,
75
+ guides: message.migrationGuides.map((guide) => `${migrationGuideUrlPrefix}${guide}`).join(' '),
76
+ }),
77
+ pin: false,
78
+ buttons: [getUpdateButton(message.to, translate)],
79
+ };
80
+ case 'needsNode':
81
+ return {
82
+ text: translate('update.needsNode', { version: message.version, required: message.required, running: message.runningNode }),
83
+ pin: false,
84
+ buttons: [],
85
+ };
86
+ case 'installFailed':
87
+ return {
88
+ text: translate('update.installFailed', {
89
+ target: message.target,
90
+ reason: translate(`update.failed.${message.reason}`),
91
+ running: message.stillRunning,
92
+ command: message.manualCommand,
93
+ }),
94
+ pin: false,
95
+ buttons: [],
96
+ };
97
+ case 'rollbackFailed':
98
+ return {
99
+ text: translate('update.rollbackFailed', {
100
+ target: message.target,
101
+ reason: translate(`update.failed.${message.reason}`),
102
+ command: message.manualCommand,
103
+ }),
104
+ pin: true,
105
+ buttons: [],
106
+ };
107
+ case 'checkFailing':
108
+ return { text: translate('update.checkFailing', { reason: message.reason }), pin: false, buttons: [] };
109
+ case 'featureAnnounced':
110
+ return { text: translate(message.mode === 'on' ? 'update.featureAnnounced.on' : 'update.featureAnnounced.notify'), pin: false, buttons: [] };
111
+ case 'restartSupervisor':
112
+ return { text: translate('update.restartSupervisor'), pin: false, buttons: [] };
113
+ }
114
+ }
115
+ //# sourceMappingURL=updateMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateMessages.js","sourceRoot":"","sources":["../../src/selfUpdate/updateMessages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @name AutoUpdateMode
3
+ * @description How an instance treats a new charness version: `on` installs it by itself when the bot is idle,
4
+ * `notify` only says it is out (a button installs it), `off` never looks. Persisted as `autoUpdate` in `settings.json`.
5
+ */
6
+ export declare const autoUpdateModes: readonly ["on", "notify", "off"];
7
+ export type AutoUpdateMode = (typeof autoUpdateModes)[number];
8
+ /** @description What `autoUpdate` means while `settings.json` does not set it. */
9
+ export declare const defaultAutoUpdateMode: AutoUpdateMode;
10
+ /** @description What `whatsNew` means while `settings.json` does not set it. */
11
+ export declare const defaultWhatsNew = true;
12
+ /** The update settings as the engine and the `/update` screen read them: `settings.json` with the defaults filled in. */
13
+ export interface UpdateSettings {
14
+ autoUpdate: AutoUpdateMode;
15
+ whatsNew: boolean;
16
+ }
17
+ //# sourceMappingURL=updateModes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateModes.d.ts","sourceRoot":"","sources":["../../src/selfUpdate/updateModes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,eAAe,kCAAmC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,EAAE,cAAqB,CAAC;AAE1D,gFAAgF;AAChF,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,yHAAyH;AACzH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultWhatsNew = exports.defaultAutoUpdateMode = exports.autoUpdateModes = void 0;
4
+ /**
5
+ * @name AutoUpdateMode
6
+ * @description How an instance treats a new charness version: `on` installs it by itself when the bot is idle,
7
+ * `notify` only says it is out (a button installs it), `off` never looks. Persisted as `autoUpdate` in `settings.json`.
8
+ */
9
+ exports.autoUpdateModes = ['on', 'notify', 'off'];
10
+ /** @description What `autoUpdate` means while `settings.json` does not set it. */
11
+ exports.defaultAutoUpdateMode = 'on';
12
+ /** @description What `whatsNew` means while `settings.json` does not set it. */
13
+ exports.defaultWhatsNew = true;
14
+ //# sourceMappingURL=updateModes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateModes.js","sourceRoot":"","sources":["../../src/selfUpdate/updateModes.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACU,QAAA,eAAe,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAGhE,kFAAkF;AACrE,QAAA,qBAAqB,GAAmB,IAAI,CAAC;AAE1D,gFAAgF;AACnE,QAAA,eAAe,GAAG,IAAI,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * `DATA_DIR/update-pending.json` — written BEFORE the switch to a new version, and the one thing the next boot needs to know
4
+ * about it. Each boot of an unconfirmed version counts itself in; a version that cannot boot `maxUnconfirmedBoots` times in a
5
+ * row (a supervisor keeps restarting it) is rolled back by the boot itself, before it imports the bot. A version that stays up
6
+ * is confirmed by the running bot, which deletes the marker. A rolled-back marker is kept for the restored version to report.
7
+ */
8
+ export declare const updatePendingFileName = "update-pending.json";
9
+ declare const versionPointSchema: z.ZodObject<{
10
+ version: z.ZodString;
11
+ commit: z.ZodNullable<z.ZodString>;
12
+ }, z.core.$strip>;
13
+ declare const markerSchema: z.ZodObject<{
14
+ kind: z.ZodEnum<{
15
+ npm: "npm";
16
+ git: "git";
17
+ }>;
18
+ status: z.ZodEnum<{
19
+ pending: "pending";
20
+ rollbackFailed: "rollbackFailed";
21
+ rolledBack: "rolledBack";
22
+ }>;
23
+ from: z.ZodObject<{
24
+ version: z.ZodString;
25
+ commit: z.ZodNullable<z.ZodString>;
26
+ }, z.core.$strip>;
27
+ to: z.ZodObject<{
28
+ version: z.ZodString;
29
+ commit: z.ZodNullable<z.ZodString>;
30
+ }, z.core.$strip>;
31
+ attempts: z.ZodNumber;
32
+ isUserRequested: z.ZodBoolean;
33
+ failureReason: z.ZodOptional<z.ZodString>;
34
+ }, z.core.$strip>;
35
+ export type UpdatePendingMarker = z.infer<typeof markerSchema>;
36
+ export type VersionPoint = z.infer<typeof versionPointSchema>;
37
+ export declare function getUpdatePendingPath(dataDir: string): string;
38
+ /** @description The marker; `null` when there is none or it is unreadable (never a reason to refuse to boot). */
39
+ export declare function readUpdatePending(dataDir: string): UpdatePendingMarker | null;
40
+ export declare function writeUpdatePending(dataDir: string, marker: UpdatePendingMarker): void;
41
+ export declare function clearUpdatePending(dataDir: string): void;
42
+ /** @description A marker for a switch about to happen: no boot of the new version has started. */
43
+ export declare function createPendingMarker(options: {
44
+ kind: 'npm' | 'git';
45
+ from: VersionPoint;
46
+ to: VersionPoint;
47
+ isUserRequested: boolean;
48
+ }): UpdatePendingMarker;
49
+ export type BootAction = {
50
+ action: 'proceed';
51
+ marker: UpdatePendingMarker | null;
52
+ } | {
53
+ action: 'rollback';
54
+ marker: UpdatePendingMarker;
55
+ };
56
+ /**
57
+ * @description What this boot does about the marker: nothing without one or once it is settled; otherwise count itself in
58
+ * and go on — unless the new version has already started and not been confirmed `limit` times, which is a version that does
59
+ * not boot: roll back.
60
+ */
61
+ export declare function decideBootAction(marker: UpdatePendingMarker | null, limit?: number): BootAction;
62
+ export interface BootRollbackDeps {
63
+ dataDir: string;
64
+ /** Put the previous version back (npm: reinstall it; checkout: reset and rebuild). Throws when it cannot. */
65
+ rollback: (marker: UpdatePendingMarker) => Promise<void>;
66
+ log: (line: string) => void;
67
+ }
68
+ export type BootOutcome = 'proceed' | 'rolledBack' | 'rollbackFailed';
69
+ /**
70
+ * @description The boot-time check, run BEFORE the bot module is imported (a broken new bot must not be able to stop it from
71
+ * counting). `rolledBack`: the old version is back — the caller restarts onto it; `rollbackFailed`: it could not be put back,
72
+ * boot on and let the bot say so.
73
+ */
74
+ export declare function runBootUpdateCheck(deps: BootRollbackDeps): Promise<BootOutcome>;
75
+ export {};
76
+ //# sourceMappingURL=updatePending.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updatePending.d.ts","sourceRoot":"","sources":["../../src/selfUpdate/updatePending.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;GAKG;AAEH,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAG3D,QAAA,MAAM,kBAAkB;;;iBAAmE,CAAC;AAE5F,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;iBAUhB,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,iHAAiH;AACjH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAO7E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAErF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,YAAY,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAAG,mBAAmB,CAEzJ;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEzI;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAAE,KAAK,GAAE,MAA4B,GAAG,UAAU,CAIpH;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,6GAA6G;IAC7G,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAEtE;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAmBrF"}
@@ -0,0 +1,131 @@
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.updatePendingFileName = void 0;
37
+ exports.getUpdatePendingPath = getUpdatePendingPath;
38
+ exports.readUpdatePending = readUpdatePending;
39
+ exports.writeUpdatePending = writeUpdatePending;
40
+ exports.clearUpdatePending = clearUpdatePending;
41
+ exports.createPendingMarker = createPendingMarker;
42
+ exports.decideBootAction = decideBootAction;
43
+ exports.runBootUpdateCheck = runBootUpdateCheck;
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ const zod_1 = require("zod");
47
+ const configDirFile_1 = require("../configDirFile");
48
+ const constants_1 = require("./constants");
49
+ /**
50
+ * `DATA_DIR/update-pending.json` — written BEFORE the switch to a new version, and the one thing the next boot needs to know
51
+ * about it. Each boot of an unconfirmed version counts itself in; a version that cannot boot `maxUnconfirmedBoots` times in a
52
+ * row (a supervisor keeps restarting it) is rolled back by the boot itself, before it imports the bot. A version that stays up
53
+ * is confirmed by the running bot, which deletes the marker. A rolled-back marker is kept for the restored version to report.
54
+ */
55
+ exports.updatePendingFileName = 'update-pending.json';
56
+ const markerFileMode = 0o600;
57
+ const versionPointSchema = zod_1.z.object({ version: zod_1.z.string(), commit: zod_1.z.string().nullable() });
58
+ const markerSchema = zod_1.z.object({
59
+ kind: zod_1.z.enum(['npm', 'git']),
60
+ /** `pending`: the new version is booting / unconfirmed; `rolledBack`: it did not start and the old one is back; `rollbackFailed`: it did not start and going back failed too. */
61
+ status: zod_1.z.enum(['pending', 'rolledBack', 'rollbackFailed']),
62
+ from: versionPointSchema,
63
+ to: versionPointSchema,
64
+ /** How many boots of the new version have started without being confirmed. */
65
+ attempts: zod_1.z.number().int().nonnegative(),
66
+ isUserRequested: zod_1.z.boolean(),
67
+ failureReason: zod_1.z.string().optional(),
68
+ });
69
+ function getUpdatePendingPath(dataDir) {
70
+ return path.join(dataDir, exports.updatePendingFileName);
71
+ }
72
+ /** @description The marker; `null` when there is none or it is unreadable (never a reason to refuse to boot). */
73
+ function readUpdatePending(dataDir) {
74
+ try {
75
+ const parsed = markerSchema.safeParse(JSON.parse(fs.readFileSync(getUpdatePendingPath(dataDir), 'utf8')));
76
+ return parsed.success ? parsed.data : null;
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ function writeUpdatePending(dataDir, marker) {
83
+ (0, configDirFile_1.writeJsonFileAtomically)(getUpdatePendingPath(dataDir), marker, markerFileMode);
84
+ }
85
+ function clearUpdatePending(dataDir) {
86
+ fs.rmSync(getUpdatePendingPath(dataDir), { force: true });
87
+ }
88
+ /** @description A marker for a switch about to happen: no boot of the new version has started. */
89
+ function createPendingMarker(options) {
90
+ return { ...options, status: 'pending', attempts: 0 };
91
+ }
92
+ /**
93
+ * @description What this boot does about the marker: nothing without one or once it is settled; otherwise count itself in
94
+ * and go on — unless the new version has already started and not been confirmed `limit` times, which is a version that does
95
+ * not boot: roll back.
96
+ */
97
+ function decideBootAction(marker, limit = constants_1.maxUnconfirmedBoots) {
98
+ if (marker === null || marker.status !== 'pending')
99
+ return { action: 'proceed', marker };
100
+ if (marker.attempts >= limit)
101
+ return { action: 'rollback', marker };
102
+ return { action: 'proceed', marker: { ...marker, attempts: marker.attempts + 1 } };
103
+ }
104
+ /**
105
+ * @description The boot-time check, run BEFORE the bot module is imported (a broken new bot must not be able to stop it from
106
+ * counting). `rolledBack`: the old version is back — the caller restarts onto it; `rollbackFailed`: it could not be put back,
107
+ * boot on and let the bot say so.
108
+ */
109
+ async function runBootUpdateCheck(deps) {
110
+ const decision = decideBootAction(readUpdatePending(deps.dataDir));
111
+ if (decision.action === 'proceed') {
112
+ if (decision.marker?.status === 'pending')
113
+ writeUpdatePending(deps.dataDir, decision.marker);
114
+ return 'proceed';
115
+ }
116
+ const { marker } = decision;
117
+ deps.log(`[update] ${marker.to.version} did not start ${marker.attempts} times — going back to ${marker.from.version}`);
118
+ const reason = `the new version did not start (${marker.attempts} boots without confirmation)`;
119
+ try {
120
+ await deps.rollback(marker);
121
+ writeUpdatePending(deps.dataDir, { ...marker, status: 'rolledBack', failureReason: reason });
122
+ return 'rolledBack';
123
+ }
124
+ catch (error) {
125
+ const detail = error instanceof Error ? error.message : String(error);
126
+ deps.log(`[update] going back failed: ${detail}`);
127
+ writeUpdatePending(deps.dataDir, { ...marker, status: 'rollbackFailed', failureReason: `${reason}; going back failed: ${detail}` });
128
+ return 'rollbackFailed';
129
+ }
130
+ }
131
+ //# sourceMappingURL=updatePending.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updatePending.js","sourceRoot":"","sources":["../../src/selfUpdate/updatePending.ts"],"names":[],"mappings":"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"}