@jungjaehoon/mama-os 0.78.0 → 0.79.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 (288) hide show
  1. package/CHANGELOG.md +311 -0
  2. package/README.md +38 -24
  3. package/db/migrations/002-model-runs-parent-index.sql +11 -0
  4. package/db/migrations/003-upkeep-settled.sql +15 -0
  5. package/dist/api/google-read-actions.d.ts +30 -0
  6. package/dist/api/google-read-actions.d.ts.map +1 -0
  7. package/dist/api/google-read-actions.js +256 -0
  8. package/dist/api/google-read-actions.js.map +1 -0
  9. package/dist/api/record-actions.d.ts.map +1 -1
  10. package/dist/api/record-actions.js +23 -5
  11. package/dist/api/record-actions.js.map +1 -1
  12. package/dist/api/report-handler.d.ts +0 -6
  13. package/dist/api/report-handler.d.ts.map +1 -1
  14. package/dist/api/report-handler.js +0 -54
  15. package/dist/api/report-handler.js.map +1 -1
  16. package/dist/api/security-events.d.ts +1 -1
  17. package/dist/api/security-events.d.ts.map +1 -1
  18. package/dist/api/security-events.js.map +1 -1
  19. package/dist/api/source-actions.d.ts +9 -0
  20. package/dist/api/source-actions.d.ts.map +1 -1
  21. package/dist/api/source-actions.js +49 -0
  22. package/dist/api/source-actions.js.map +1 -1
  23. package/dist/api/viewer-request-security.d.ts +14 -1
  24. package/dist/api/viewer-request-security.d.ts.map +1 -1
  25. package/dist/api/viewer-request-security.js +26 -3
  26. package/dist/api/viewer-request-security.js.map +1 -1
  27. package/dist/api/viewer-server.d.ts +7 -0
  28. package/dist/api/viewer-server.d.ts.map +1 -1
  29. package/dist/api/viewer-server.js +32 -0
  30. package/dist/api/viewer-server.js.map +1 -1
  31. package/dist/api/work-actions.d.ts +19 -2
  32. package/dist/api/work-actions.d.ts.map +1 -1
  33. package/dist/api/work-actions.js +15 -0
  34. package/dist/api/work-actions.js.map +1 -1
  35. package/dist/cli/commands/backup.d.ts +7 -6
  36. package/dist/cli/commands/backup.d.ts.map +1 -1
  37. package/dist/cli/commands/backup.js +44 -7
  38. package/dist/cli/commands/backup.js.map +1 -1
  39. package/dist/cli/commands/control.d.ts +22 -4
  40. package/dist/cli/commands/control.d.ts.map +1 -1
  41. package/dist/cli/commands/control.js +172 -11
  42. package/dist/cli/commands/control.js.map +1 -1
  43. package/dist/cli/commands/daemon.d.ts +13 -2
  44. package/dist/cli/commands/daemon.d.ts.map +1 -1
  45. package/dist/cli/commands/daemon.js +211 -5
  46. package/dist/cli/commands/daemon.js.map +1 -1
  47. package/dist/cli/commands/init-questions.d.ts +98 -0
  48. package/dist/cli/commands/init-questions.d.ts.map +1 -0
  49. package/dist/cli/commands/init-questions.js +420 -0
  50. package/dist/cli/commands/init-questions.js.map +1 -0
  51. package/dist/cli/commands/init-section.d.ts +13 -0
  52. package/dist/cli/commands/init-section.d.ts.map +1 -0
  53. package/dist/cli/commands/init-section.js +375 -0
  54. package/dist/cli/commands/init-section.js.map +1 -0
  55. package/dist/cli/commands/init.d.ts +56 -2
  56. package/dist/cli/commands/init.d.ts.map +1 -1
  57. package/dist/cli/commands/init.js +562 -351
  58. package/dist/cli/commands/init.js.map +1 -1
  59. package/dist/cli/commands/node-move.d.ts +20 -0
  60. package/dist/cli/commands/node-move.d.ts.map +1 -0
  61. package/dist/cli/commands/node-move.js +289 -0
  62. package/dist/cli/commands/node-move.js.map +1 -0
  63. package/dist/cli/commands/register-owner.d.ts +3 -0
  64. package/dist/cli/commands/register-owner.d.ts.map +1 -1
  65. package/dist/cli/commands/register-owner.js +2 -0
  66. package/dist/cli/commands/register-owner.js.map +1 -1
  67. package/dist/cli/commands/restore.d.ts +2 -0
  68. package/dist/cli/commands/restore.d.ts.map +1 -1
  69. package/dist/cli/commands/restore.js +7 -0
  70. package/dist/cli/commands/restore.js.map +1 -1
  71. package/dist/cli/commands/service.d.ts +16 -0
  72. package/dist/cli/commands/service.d.ts.map +1 -1
  73. package/dist/cli/commands/service.js +36 -8
  74. package/dist/cli/commands/service.js.map +1 -1
  75. package/dist/cli/commands/tools.d.ts +1 -1
  76. package/dist/cli/commands/tools.d.ts.map +1 -1
  77. package/dist/cli/commands/tools.js +8 -3
  78. package/dist/cli/commands/tools.js.map +1 -1
  79. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  80. package/dist/cli/commands/uninstall.js +78 -5
  81. package/dist/cli/commands/uninstall.js.map +1 -1
  82. package/dist/cli/commands/update.d.ts +59 -0
  83. package/dist/cli/commands/update.d.ts.map +1 -0
  84. package/dist/cli/commands/update.js +948 -0
  85. package/dist/cli/commands/update.js.map +1 -0
  86. package/dist/cli/index.js +8 -4
  87. package/dist/cli/index.js.map +1 -1
  88. package/dist/cli/launch-files.d.ts +36 -0
  89. package/dist/cli/launch-files.d.ts.map +1 -1
  90. package/dist/cli/launch-files.js +94 -1
  91. package/dist/cli/launch-files.js.map +1 -1
  92. package/dist/cli/prompt.d.ts +2 -1
  93. package/dist/cli/prompt.d.ts.map +1 -1
  94. package/dist/cli/prompt.js +5 -2
  95. package/dist/cli/prompt.js.map +1 -1
  96. package/dist/cli/runtime/backup.d.ts +17 -1
  97. package/dist/cli/runtime/backup.d.ts.map +1 -1
  98. package/dist/cli/runtime/backup.js +32 -4
  99. package/dist/cli/runtime/backup.js.map +1 -1
  100. package/dist/cli/runtime/daemon-control.d.ts +92 -7
  101. package/dist/cli/runtime/daemon-control.d.ts.map +1 -1
  102. package/dist/cli/runtime/daemon-control.js +183 -8
  103. package/dist/cli/runtime/daemon-control.js.map +1 -1
  104. package/dist/cli/runtime/default-roots.d.ts +27 -0
  105. package/dist/cli/runtime/default-roots.d.ts.map +1 -0
  106. package/dist/cli/runtime/default-roots.js +61 -0
  107. package/dist/cli/runtime/default-roots.js.map +1 -0
  108. package/dist/cli/runtime/diagnostics.d.ts +25 -0
  109. package/dist/cli/runtime/diagnostics.d.ts.map +1 -1
  110. package/dist/cli/runtime/diagnostics.js +249 -63
  111. package/dist/cli/runtime/diagnostics.js.map +1 -1
  112. package/dist/cli/runtime/init-state.d.ts +20 -0
  113. package/dist/cli/runtime/init-state.d.ts.map +1 -0
  114. package/dist/cli/runtime/init-state.js +51 -0
  115. package/dist/cli/runtime/init-state.js.map +1 -0
  116. package/dist/cli/runtime/install-kind.d.ts +54 -0
  117. package/dist/cli/runtime/install-kind.d.ts.map +1 -0
  118. package/dist/cli/runtime/install-kind.js +164 -0
  119. package/dist/cli/runtime/install-kind.js.map +1 -0
  120. package/dist/cli/runtime/node-move-journal.d.ts +44 -0
  121. package/dist/cli/runtime/node-move-journal.d.ts.map +1 -0
  122. package/dist/cli/runtime/node-move-journal.js +48 -0
  123. package/dist/cli/runtime/node-move-journal.js.map +1 -0
  124. package/dist/cli/runtime/release-check.d.ts +94 -0
  125. package/dist/cli/runtime/release-check.d.ts.map +1 -0
  126. package/dist/cli/runtime/release-check.js +316 -0
  127. package/dist/cli/runtime/release-check.js.map +1 -0
  128. package/dist/cli/runtime/setup-page.d.ts +57 -0
  129. package/dist/cli/runtime/setup-page.d.ts.map +1 -0
  130. package/dist/cli/runtime/setup-page.js +266 -0
  131. package/dist/cli/runtime/setup-page.js.map +1 -0
  132. package/dist/cli/runtime/source-tools.d.ts +60 -0
  133. package/dist/cli/runtime/source-tools.d.ts.map +1 -0
  134. package/dist/cli/runtime/source-tools.js +170 -0
  135. package/dist/cli/runtime/source-tools.js.map +1 -0
  136. package/dist/cli/runtime/telegram-pairing.d.ts +73 -0
  137. package/dist/cli/runtime/telegram-pairing.d.ts.map +1 -0
  138. package/dist/cli/runtime/telegram-pairing.js +184 -0
  139. package/dist/cli/runtime/telegram-pairing.js.map +1 -0
  140. package/dist/cli/runtime/update-journal.d.ts +135 -0
  141. package/dist/cli/runtime/update-journal.d.ts.map +1 -0
  142. package/dist/cli/runtime/update-journal.js +144 -0
  143. package/dist/cli/runtime/update-journal.js.map +1 -0
  144. package/dist/cli/runtime/update-progress.d.ts +95 -0
  145. package/dist/cli/runtime/update-progress.d.ts.map +1 -0
  146. package/dist/cli/runtime/update-progress.js +154 -0
  147. package/dist/cli/runtime/update-progress.js.map +1 -0
  148. package/dist/cli/runtime/update-request.d.ts +58 -0
  149. package/dist/cli/runtime/update-request.d.ts.map +1 -0
  150. package/dist/cli/runtime/update-request.js +172 -0
  151. package/dist/cli/runtime/update-request.js.map +1 -0
  152. package/dist/connectors/calendar/index.d.ts +5 -1
  153. package/dist/connectors/calendar/index.d.ts.map +1 -1
  154. package/dist/connectors/calendar/index.js +19 -28
  155. package/dist/connectors/calendar/index.js.map +1 -1
  156. package/dist/connectors/chatwork/index.d.ts.map +1 -1
  157. package/dist/connectors/chatwork/index.js +7 -3
  158. package/dist/connectors/chatwork/index.js.map +1 -1
  159. package/dist/connectors/config-loader.d.ts +5 -0
  160. package/dist/connectors/config-loader.d.ts.map +1 -1
  161. package/dist/connectors/config-loader.js +8 -0
  162. package/dist/connectors/config-loader.js.map +1 -1
  163. package/dist/connectors/discord/index.d.ts.map +1 -1
  164. package/dist/connectors/discord/index.js +4 -3
  165. package/dist/connectors/discord/index.js.map +1 -1
  166. package/dist/connectors/drive/index.d.ts.map +1 -1
  167. package/dist/connectors/drive/index.js +15 -13
  168. package/dist/connectors/drive/index.js.map +1 -1
  169. package/dist/connectors/framework/gws-utils.d.ts +62 -0
  170. package/dist/connectors/framework/gws-utils.d.ts.map +1 -1
  171. package/dist/connectors/framework/gws-utils.js +133 -3
  172. package/dist/connectors/framework/gws-utils.js.map +1 -1
  173. package/dist/connectors/framework/types.d.ts +24 -0
  174. package/dist/connectors/framework/types.d.ts.map +1 -1
  175. package/dist/connectors/framework/types.js +9 -0
  176. package/dist/connectors/framework/types.js.map +1 -1
  177. package/dist/connectors/gmail/index.d.ts.map +1 -1
  178. package/dist/connectors/gmail/index.js +14 -13
  179. package/dist/connectors/gmail/index.js.map +1 -1
  180. package/dist/connectors/index.d.ts +4 -4
  181. package/dist/connectors/index.d.ts.map +1 -1
  182. package/dist/connectors/index.js +4 -10
  183. package/dist/connectors/index.js.map +1 -1
  184. package/dist/connectors/notion/index.d.ts.map +1 -1
  185. package/dist/connectors/notion/index.js +5 -3
  186. package/dist/connectors/notion/index.js.map +1 -1
  187. package/dist/connectors/sheets/index.d.ts.map +1 -1
  188. package/dist/connectors/sheets/index.js +17 -12
  189. package/dist/connectors/sheets/index.js.map +1 -1
  190. package/dist/connectors/slack/index.d.ts.map +1 -1
  191. package/dist/connectors/slack/index.js +9 -3
  192. package/dist/connectors/slack/index.js.map +1 -1
  193. package/dist/connectors/telegram/index.d.ts.map +1 -1
  194. package/dist/connectors/telegram/index.js +4 -3
  195. package/dist/connectors/telegram/index.js.map +1 -1
  196. package/dist/connectors/trello/index.d.ts +1 -1
  197. package/dist/connectors/trello/index.d.ts.map +1 -1
  198. package/dist/connectors/trello/index.js +10 -5
  199. package/dist/connectors/trello/index.js.map +1 -1
  200. package/dist/gateways/discord.d.ts +6 -0
  201. package/dist/gateways/discord.d.ts.map +1 -1
  202. package/dist/gateways/discord.js +38 -27
  203. package/dist/gateways/discord.js.map +1 -1
  204. package/dist/gateways/slack.d.ts +6 -0
  205. package/dist/gateways/slack.d.ts.map +1 -1
  206. package/dist/gateways/slack.js +38 -27
  207. package/dist/gateways/slack.js.map +1 -1
  208. package/dist/gateways/telegram-commands.d.ts +124 -0
  209. package/dist/gateways/telegram-commands.d.ts.map +1 -0
  210. package/dist/gateways/telegram-commands.js +131 -0
  211. package/dist/gateways/telegram-commands.js.map +1 -0
  212. package/dist/gateways/telegram.d.ts +20 -0
  213. package/dist/gateways/telegram.d.ts.map +1 -1
  214. package/dist/gateways/telegram.js +138 -34
  215. package/dist/gateways/telegram.js.map +1 -1
  216. package/dist/gateways/turn-contract.d.ts +11 -0
  217. package/dist/gateways/turn-contract.d.ts.map +1 -1
  218. package/dist/runtime/action-surface.d.ts +1 -1
  219. package/dist/runtime/action-surface.d.ts.map +1 -1
  220. package/dist/runtime/action-surface.js +10 -0
  221. package/dist/runtime/action-surface.js.map +1 -1
  222. package/dist/runtime/backend-security.d.ts +23 -2
  223. package/dist/runtime/backend-security.d.ts.map +1 -1
  224. package/dist/runtime/backend-security.js +50 -5
  225. package/dist/runtime/backend-security.js.map +1 -1
  226. package/dist/runtime/member-paths.d.ts +15 -7
  227. package/dist/runtime/member-paths.d.ts.map +1 -1
  228. package/dist/runtime/member-paths.js +64 -12
  229. package/dist/runtime/member-paths.js.map +1 -1
  230. package/dist/runtime/member-session.d.ts +4 -0
  231. package/dist/runtime/member-session.d.ts.map +1 -1
  232. package/dist/runtime/member-session.js +23 -2
  233. package/dist/runtime/member-session.js.map +1 -1
  234. package/dist/runtime/native-session.d.ts +2 -0
  235. package/dist/runtime/native-session.d.ts.map +1 -1
  236. package/dist/runtime/native-session.js +1 -0
  237. package/dist/runtime/native-session.js.map +1 -1
  238. package/dist/runtime/owner-runtime.d.ts +63 -1
  239. package/dist/runtime/owner-runtime.d.ts.map +1 -1
  240. package/dist/runtime/owner-runtime.js +180 -3
  241. package/dist/runtime/owner-runtime.js.map +1 -1
  242. package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
  243. package/dist/runtime/owner-system-prompt.js +0 -1
  244. package/dist/runtime/owner-system-prompt.js.map +1 -1
  245. package/dist/runtime/principal-access.d.ts +2 -0
  246. package/dist/runtime/principal-access.d.ts.map +1 -1
  247. package/dist/runtime/principal-access.js +7 -0
  248. package/dist/runtime/principal-access.js.map +1 -1
  249. package/dist/runtime/principal-sessions.d.ts.map +1 -1
  250. package/dist/runtime/principal-sessions.js +8 -1
  251. package/dist/runtime/principal-sessions.js.map +1 -1
  252. package/dist/runtime/record-orders.d.ts.map +1 -1
  253. package/dist/runtime/record-orders.js +3 -29
  254. package/dist/runtime/record-orders.js.map +1 -1
  255. package/dist/runtime/report-scheduler.d.ts +9 -2
  256. package/dist/runtime/report-scheduler.d.ts.map +1 -1
  257. package/dist/runtime/report-scheduler.js +37 -10
  258. package/dist/runtime/report-scheduler.js.map +1 -1
  259. package/dist/runtime/stimulus-delivery.d.ts +3 -0
  260. package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
  261. package/dist/runtime/stimulus-delivery.js +19 -3
  262. package/dist/runtime/stimulus-delivery.js.map +1 -1
  263. package/dist/runtime/tools-paths.d.ts +7 -0
  264. package/dist/runtime/tools-paths.d.ts.map +1 -1
  265. package/dist/runtime/tools-paths.js +11 -5
  266. package/dist/runtime/tools-paths.js.map +1 -1
  267. package/dist/runtime/upkeep-close.d.ts +17 -0
  268. package/dist/runtime/upkeep-close.d.ts.map +1 -0
  269. package/dist/runtime/upkeep-close.js +127 -0
  270. package/dist/runtime/upkeep-close.js.map +1 -0
  271. package/dist/runtime/upkeep-orders.d.ts +124 -0
  272. package/dist/runtime/upkeep-orders.d.ts.map +1 -0
  273. package/dist/runtime/upkeep-orders.js +310 -0
  274. package/dist/runtime/upkeep-orders.js.map +1 -0
  275. package/dist/runtime/upkeep-reconcile.d.ts +25 -0
  276. package/dist/runtime/upkeep-reconcile.d.ts.map +1 -0
  277. package/dist/runtime/upkeep-reconcile.js +231 -0
  278. package/dist/runtime/upkeep-reconcile.js.map +1 -0
  279. package/dist/runtime/upkeep-writeback.d.ts +22 -0
  280. package/dist/runtime/upkeep-writeback.d.ts.map +1 -0
  281. package/dist/runtime/upkeep-writeback.js +203 -0
  282. package/dist/runtime/upkeep-writeback.js.map +1 -0
  283. package/dist/utils/untrusted-content.d.ts.map +1 -1
  284. package/dist/utils/untrusted-content.js +8 -1
  285. package/dist/utils/untrusted-content.js.map +1 -1
  286. package/install/install.sh +457 -0
  287. package/install/node.json +9 -0
  288. package/package.json +3 -4
@@ -0,0 +1,94 @@
1
+ import type { TimeZoneSetting } from '../../runtime/timezone.js';
2
+ import { type PackageKind } from './install-kind.js';
3
+ /**
4
+ * What the daemon's daily release check found (docs/development/work/update.md, PR 2). `mama
5
+ * status` and `mama doctor` read only this file, so neither makes a network call.
6
+ */
7
+ export interface ReleaseCheckState {
8
+ /** When the check ran (ISO time); a later boot the same day makes no call. */
9
+ readonly checkedAt: string;
10
+ /** The version of the daemon that checked. */
11
+ readonly current: string;
12
+ /** The registry's `latest` tag; null when the check failed. */
13
+ readonly latest: string | null;
14
+ /** npm's error code (or the process's) when the check failed. */
15
+ readonly error: string | null;
16
+ }
17
+ /** Under runtime/, which the agents' native reads deny with the rest of the credential paths. */
18
+ export declare function releaseCheckPath(mamaRoot: string): string;
19
+ /** The file as the daemon wrote it, or null when no check has run yet. */
20
+ export declare function readReleaseCheck(path: string): ReleaseCheckState | null;
21
+ /** One npm call: its stdout, or a rejection carrying npm's or the process's error. */
22
+ export type NpmRun = (command: string, args: string[], env: NodeJS.ProcessEnv, signal: AbortSignal) => Promise<string>;
23
+ export declare const defaultNpmRun: NpmRun;
24
+ /**
25
+ * A failed npm call reduced to a code. npm's own (`npm error code E404`) comes first; then a
26
+ * spawn error's (ENOENT), a timeout, the exit status. Only a code's characters pass: PR 4 sends
27
+ * it to a chat a group reads, and stderr is npm's text.
28
+ */
29
+ export declare function npmErrorCode(error: unknown): string;
30
+ /**
31
+ * Two releases in semver precedence (semver.org, rule 11): major, minor, patch, then a version
32
+ * without a prerelease above one with it, then the prerelease's identifiers one by one (numbers
33
+ * numerically and below words, words in ASCII order, a longer list above its prefix). Build
34
+ * metadata does not count. A version that is not semver throws: there is no order to guess.
35
+ */
36
+ export declare function compareReleases(left: string, right: string): number;
37
+ /**
38
+ * Whether a Node version (no `v`) is inside a package's `engines.node` range: comparators
39
+ * (`>=`, `>`, `<=`, `<`, `=`, bare), `^` and `~` on full or partial versions, `*` and `x`, joined
40
+ * by spaces (all hold) and `||` (any holds). Any other form throws with the range, so a target
41
+ * whose range cannot be read is refused rather than passed.
42
+ */
43
+ export declare function nodeSatisfies(range: string, version: string): boolean;
44
+ export interface ReleaseCheckOptions {
45
+ statePath: string;
46
+ /** The running daemon's version. */
47
+ current: string;
48
+ /** The daemon's own package: an npm install's calls name its prefix. */
49
+ packageKind: PackageKind;
50
+ /** The npm beside the Node that runs the daemon. */
51
+ npmPath: string;
52
+ timeZone: TimeZoneSetting;
53
+ log: (line: string) => void;
54
+ onError: (error: unknown) => void;
55
+ run?: NpmRun;
56
+ /** The daemon's environment; npm gets it without credential-shaped names (start.sh exports auth.env). */
57
+ env?: NodeJS.ProcessEnv;
58
+ now?: () => Date;
59
+ /** Boot's own work goes first; the daemon's other schedules also start a minute in. */
60
+ firstTickDelayMs?: number;
61
+ }
62
+ /**
63
+ * Once a day, ask the registry for MAMA OS's `latest` tag and write what it said. The day is the
64
+ * configured time zone's, read from the file, so a restart the same day makes no call; a daemon
65
+ * on a version other than the file's checks again, since the file then describes an older one.
66
+ * A failed check counts as the day's check: its code is shown until the next day's.
67
+ */
68
+ export declare function createReleaseCheck(options: ReleaseCheckOptions): {
69
+ tick: () => Promise<void>;
70
+ start: () => void;
71
+ stop: () => void;
72
+ };
73
+ export type ReleaseCheck = ReturnType<typeof createReleaseCheck>;
74
+ /**
75
+ * The npm beside the Node start.sh pins (stableNodePath): Homebrew's running Node is its Cellar
76
+ * folder, which `brew upgrade node` removes while the daemon runs; the opt link stays.
77
+ */
78
+ export declare function npmBesideNode(execPath?: string, exists?: (path: string) => boolean): string;
79
+ export interface ReleaseReport {
80
+ readonly status: 'ok' | 'warn';
81
+ readonly detail: string;
82
+ /** What could not be read (a path, an error message); never in a shared report. */
83
+ readonly context?: string;
84
+ readonly fix?: string;
85
+ /** The service package's update path when a newer release is out. */
86
+ readonly steps?: string[];
87
+ readonly state: ReleaseCheckState | null;
88
+ }
89
+ /**
90
+ * What `mama status` and the doctor check `release` say, from the file alone; null when no check
91
+ * has run. A newer release names the update path of the kind the service runs.
92
+ */
93
+ export declare function releaseReport(mamaRoot: string, home: string): ReleaseReport | null;
94
+ //# sourceMappingURL=release-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-check.d.ts","sourceRoot":"","sources":["../../../src/cli/runtime/release-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultNpmRun = void 0;
4
+ exports.releaseCheckPath = releaseCheckPath;
5
+ exports.readReleaseCheck = readReleaseCheck;
6
+ exports.npmErrorCode = npmErrorCode;
7
+ exports.compareReleases = compareReleases;
8
+ exports.nodeSatisfies = nodeSatisfies;
9
+ exports.createReleaseCheck = createReleaseCheck;
10
+ exports.npmBesideNode = npmBesideNode;
11
+ exports.releaseReport = releaseReport;
12
+ const node_child_process_1 = require("node:child_process");
13
+ const node_fs_1 = require("node:fs");
14
+ const node_path_1 = require("node:path");
15
+ const node_util_1 = require("node:util");
16
+ const backend_security_js_1 = require("../../runtime/backend-security.js");
17
+ const launch_files_js_1 = require("../launch-files.js");
18
+ const install_kind_js_1 = require("./install-kind.js");
19
+ /** Under runtime/, which the agents' native reads deny with the rest of the credential paths. */
20
+ function releaseCheckPath(mamaRoot) {
21
+ return (0, node_path_1.join)(mamaRoot, 'runtime', 'release-check.json');
22
+ }
23
+ /** The file as the daemon wrote it, or null when no check has run yet. */
24
+ function readReleaseCheck(path) {
25
+ if (!(0, node_fs_1.existsSync)(path))
26
+ return null;
27
+ const value = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
28
+ const text = (name, nullable) => typeof value[name] === 'string' || (nullable && value[name] === null);
29
+ if (value === null ||
30
+ typeof value !== 'object' ||
31
+ !text('checkedAt', false) ||
32
+ Number.isNaN(Date.parse(value.checkedAt)) ||
33
+ !text('current', false) ||
34
+ !text('latest', true) ||
35
+ !text('error', true)) {
36
+ throw new Error(`${path} is not a release check the daemon wrote`);
37
+ }
38
+ return value;
39
+ }
40
+ const NPM_TIMEOUT_MS = 60_000;
41
+ const defaultNpmRun = async (command, args, env, signal) => (await (0, node_util_1.promisify)(node_child_process_1.execFile)(command, args, {
42
+ env,
43
+ signal,
44
+ timeout: NPM_TIMEOUT_MS,
45
+ encoding: 'utf8',
46
+ })).stdout;
47
+ exports.defaultNpmRun = defaultNpmRun;
48
+ /**
49
+ * A failed npm call reduced to a code. npm's own (`npm error code E404`) comes first; then a
50
+ * spawn error's (ENOENT), a timeout, the exit status. Only a code's characters pass: PR 4 sends
51
+ * it to a chat a group reads, and stderr is npm's text.
52
+ */
53
+ function npmErrorCode(error) {
54
+ const failure = (error ?? {});
55
+ const npm = /^npm (?:error|ERR!) code (\S+)/m.exec(String(failure.stderr ?? ''))?.[1];
56
+ const code = npm ??
57
+ (typeof failure.code === 'string'
58
+ ? failure.code
59
+ : failure.killed === true
60
+ ? 'ETIMEDOUT'
61
+ : typeof failure.code === 'number'
62
+ ? `EXIT_${failure.code}`
63
+ : typeof failure.signal === 'string'
64
+ ? failure.signal
65
+ : 'UNKNOWN');
66
+ return /^[A-Za-z0-9_]{1,64}$/.test(code) ? code : 'UNKNOWN';
67
+ }
68
+ const SEMVER = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
69
+ /**
70
+ * Two releases in semver precedence (semver.org, rule 11): major, minor, patch, then a version
71
+ * without a prerelease above one with it, then the prerelease's identifiers one by one (numbers
72
+ * numerically and below words, words in ASCII order, a longer list above its prefix). Build
73
+ * metadata does not count. A version that is not semver throws: there is no order to guess.
74
+ */
75
+ function compareReleases(left, right) {
76
+ const parse = (version) => {
77
+ const match = SEMVER.exec(version);
78
+ if (!match)
79
+ throw new Error(`${version} is not a semver version`);
80
+ return {
81
+ core: [match[1], match[2], match[3]].map(Number),
82
+ pre: match[4] === undefined ? null : match[4].split('.'),
83
+ };
84
+ };
85
+ const a = parse(left);
86
+ const b = parse(right);
87
+ for (let index = 0; index < 3; index += 1) {
88
+ if (a.core[index] !== b.core[index])
89
+ return a.core[index] - b.core[index];
90
+ }
91
+ if (a.pre === null || b.pre === null)
92
+ return a.pre === b.pre ? 0 : a.pre === null ? 1 : -1;
93
+ for (let index = 0; index < Math.min(a.pre.length, b.pre.length); index += 1) {
94
+ const [x, y] = [a.pre[index], b.pre[index]];
95
+ if (x === y)
96
+ continue;
97
+ const [xNumber, yNumber] = [/^\d+$/.test(x), /^\d+$/.test(y)];
98
+ if (xNumber && yNumber)
99
+ return Number(x) - Number(y);
100
+ if (xNumber !== yNumber)
101
+ return xNumber ? -1 : 1;
102
+ return x < y ? -1 : 1;
103
+ }
104
+ return a.pre.length - b.pre.length;
105
+ }
106
+ /**
107
+ * Whether a Node version (no `v`) is inside a package's `engines.node` range: comparators
108
+ * (`>=`, `>`, `<=`, `<`, `=`, bare), `^` and `~` on full or partial versions, `*` and `x`, joined
109
+ * by spaces (all hold) and `||` (any holds). Any other form throws with the range, so a target
110
+ * whose range cannot be read is refused rather than passed.
111
+ */
112
+ function nodeSatisfies(range, version) {
113
+ const cannot = () => {
114
+ throw new Error(`cannot read the engines range ${JSON.stringify(range)}`);
115
+ };
116
+ const at = (core) => core.join('.');
117
+ const compare = (op, core) => {
118
+ const order = compareReleases(version, at(core));
119
+ return op === '>='
120
+ ? order >= 0
121
+ : op === '>'
122
+ ? order > 0
123
+ : op === '<='
124
+ ? order <= 0
125
+ : op === '<'
126
+ ? order < 0
127
+ : order === 0;
128
+ };
129
+ /** Whether `version` meets one comparator. */
130
+ const holds = (token) => {
131
+ if (token === '*' || token === 'x' || token === 'X')
132
+ return true;
133
+ const match = /^(>=|<=|>|<|=|\^|~)?v?(\d+|[xX*])(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?$/.exec(token);
134
+ if (!match)
135
+ return cannot();
136
+ const [, op = '', ...raw] = match;
137
+ const parts = raw.filter((part) => part !== undefined && !/^[xX*]$/.test(part)).map(Number);
138
+ // A wildcard is the end of the version: 22.x.5 is not a range.
139
+ const given = raw.findIndex((part) => part === undefined || /^[xX*]$/.test(part));
140
+ if (given !== -1 && raw.slice(given).some((part) => part !== undefined && /^\d+$/.test(part)))
141
+ return cannot();
142
+ const full = [...parts, 0, 0, 0].slice(0, 3);
143
+ const bump = (index) => full.map((part, at) => (at < index ? part : at === index ? part + 1 : 0));
144
+ if (op === '^') {
145
+ if (parts.length === 0)
146
+ return true;
147
+ // The first part given that is not 0 may not change; with none, the last part given.
148
+ const first = parts.findIndex((part) => part !== 0);
149
+ return compare('>=', full) && compare('<', bump(first === -1 ? parts.length - 1 : first));
150
+ }
151
+ if (op === '~') {
152
+ if (parts.length === 0)
153
+ return true;
154
+ return compare('>=', full) && compare('<', bump(parts.length === 1 ? 0 : 1));
155
+ }
156
+ if (parts.length === 3)
157
+ return compare(op === '' ? '=' : op, full);
158
+ // A partial version: bare and = mean any version under it; the others compare its bounds.
159
+ if (parts.length === 0)
160
+ return op === '' || op === '=' || op === '>=' || op === '<=';
161
+ const next = bump(parts.length - 1);
162
+ if (op === '' || op === '=')
163
+ return compare('>=', full) && compare('<', next);
164
+ if (op === '>=')
165
+ return compare('>=', full);
166
+ if (op === '<')
167
+ return compare('<', full);
168
+ if (op === '>')
169
+ return compare('>=', next);
170
+ return compare('<', next);
171
+ };
172
+ const alternatives = range.split('||').map((part) => part.trim());
173
+ if (alternatives.some((part) => part === ''))
174
+ return cannot();
175
+ // Every comparator is read, so a form this cannot read refuses even beside one that fails.
176
+ return alternatives
177
+ .map((part) => part
178
+ // `>= 22.13.0` is one comparator.
179
+ .replace(/(>=|<=|>|<|=|\^|~)\s+/g, '$1')
180
+ .split(/\s+/)
181
+ .map((token) => holds(token))
182
+ .every(Boolean))
183
+ .some(Boolean);
184
+ }
185
+ function day(at, timeZone) {
186
+ return new Intl.DateTimeFormat('en-CA', {
187
+ timeZone,
188
+ year: 'numeric',
189
+ month: '2-digit',
190
+ day: '2-digit',
191
+ }).format(at);
192
+ }
193
+ /**
194
+ * Once a day, ask the registry for MAMA OS's `latest` tag and write what it said. The day is the
195
+ * configured time zone's, read from the file, so a restart the same day makes no call; a daemon
196
+ * on a version other than the file's checks again, since the file then describes an older one.
197
+ * A failed check counts as the day's check: its code is shown until the next day's.
198
+ */
199
+ function createReleaseCheck(options) {
200
+ const run = options.run ?? exports.defaultNpmRun;
201
+ const env = (0, backend_security_js_1.backendEnvironment)(options.env ?? process.env);
202
+ const prefix = options.packageKind.kind === 'npm' ? ['--prefix', options.packageKind.prefix] : [];
203
+ const stopping = new AbortController();
204
+ const timers = [];
205
+ const tick = async () => {
206
+ const now = options.now?.() ?? new Date();
207
+ const zone = options.timeZone.get();
208
+ const previous = readReleaseCheck(options.statePath);
209
+ if (previous !== null &&
210
+ previous.current === options.current &&
211
+ day(new Date(previous.checkedAt), zone) === day(now, zone)) {
212
+ return;
213
+ }
214
+ let latest = null;
215
+ let error = null;
216
+ try {
217
+ const registry = (await run(options.npmPath, ['config', 'get', 'registry', '--no-update-notifier', ...prefix], env, stopping.signal)).trim();
218
+ const answer = (await run(options.npmPath, [
219
+ 'view',
220
+ install_kind_js_1.PACKAGE_NAME,
221
+ 'dist-tags.latest',
222
+ '--registry',
223
+ registry,
224
+ // npm's own update notice asks the registry again and writes ~/.npm, TTY or not.
225
+ '--no-update-notifier',
226
+ ...prefix,
227
+ ], env, stopping.signal)).trim();
228
+ if (!/^\d+\.\d+\.\d+\S*$/.test(answer)) {
229
+ throw Object.assign(new Error('npm view printed no version'), { code: 'ENOVERSION' });
230
+ }
231
+ latest = answer;
232
+ }
233
+ catch (failure) {
234
+ // A stop cut the call off; that is not what the registry said.
235
+ if (stopping.signal.aborted)
236
+ return;
237
+ error = npmErrorCode(failure);
238
+ }
239
+ const state = {
240
+ checkedAt: now.toISOString(),
241
+ current: options.current,
242
+ latest,
243
+ error,
244
+ };
245
+ const staged = `${options.statePath}.${process.pid}.tmp`;
246
+ (0, node_fs_1.writeFileSync)(staged, `${JSON.stringify(state, null, 2)}\n`, { mode: 0o600 });
247
+ (0, node_fs_1.renameSync)(staged, options.statePath);
248
+ options.log(error === null
249
+ ? `release check: latest=${latest} running=${options.current}`
250
+ : `release check: failed code=${error} running=${options.current}`);
251
+ };
252
+ const tickReported = () => {
253
+ tick().catch(options.onError);
254
+ };
255
+ return {
256
+ tick,
257
+ start: () => {
258
+ const first = setTimeout(tickReported, options.firstTickDelayMs ?? 60_000);
259
+ // Hourly: the first tick of a new day checks again.
260
+ const every = setInterval(tickReported, 60 * 60_000);
261
+ first.unref();
262
+ every.unref();
263
+ timers.push(() => clearTimeout(first), () => clearInterval(every));
264
+ },
265
+ stop: () => {
266
+ for (const cancel of timers.splice(0))
267
+ cancel();
268
+ stopping.abort();
269
+ },
270
+ };
271
+ }
272
+ /**
273
+ * The npm beside the Node start.sh pins (stableNodePath): Homebrew's running Node is its Cellar
274
+ * folder, which `brew upgrade node` removes while the daemon runs; the opt link stays.
275
+ */
276
+ function npmBesideNode(execPath = process.execPath, exists = node_fs_1.existsSync) {
277
+ return (0, node_path_1.join)((0, node_path_1.dirname)((0, launch_files_js_1.stableNodePath)(execPath, exists)), 'npm');
278
+ }
279
+ function localTime(iso) {
280
+ return new Date(Date.parse(iso)).toLocaleString('sv-SE');
281
+ }
282
+ /**
283
+ * What `mama status` and the doctor check `release` say, from the file alone; null when no check
284
+ * has run. A newer release names the update path of the kind the service runs.
285
+ */
286
+ function releaseReport(mamaRoot, home) {
287
+ let state;
288
+ try {
289
+ state = readReleaseCheck(releaseCheckPath(mamaRoot));
290
+ }
291
+ catch (error) {
292
+ return {
293
+ status: 'warn',
294
+ detail: 'the last release check cannot be read',
295
+ context: error instanceof Error ? error.message : String(error),
296
+ fix: 'remove runtime/release-check.json; the daemon checks again within the hour',
297
+ state: null,
298
+ };
299
+ }
300
+ if (state === null)
301
+ return null;
302
+ const at = localTime(state.checkedAt);
303
+ if (state.latest === null) {
304
+ return { status: 'warn', detail: `last check failed at ${at}: ${state.error}`, state };
305
+ }
306
+ if (compareReleases(state.latest, state.current) > 0) {
307
+ return {
308
+ status: 'warn',
309
+ detail: `newer release ${state.latest} (checked ${at}); the daemon runs ${state.current}`,
310
+ steps: (0, install_kind_js_1.updateSteps)((0, install_kind_js_1.installKind)(mamaRoot, home)),
311
+ state,
312
+ };
313
+ }
314
+ return { status: 'ok', detail: `${state.current} is current (checked ${at})`, state };
315
+ }
316
+ //# sourceMappingURL=release-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-check.js","sourceRoot":"","sources":["../../../src/cli/runtime/release-check.ts"],"names":[],"mappings":";;;AAyBA,4CAEC;AAGD,4CAiBC;AA2BD,oCAoBC;AAUD,0CAwBC;AAQD,sCAkEC;AAoCD,gDA6FC;AAQD,sCAKC;AAqBD,sCA2BC;AAxYD,2DAA8C;AAC9C,qCAA8E;AAC9E,yCAA0C;AAC1C,yCAAsC;AACtC,2EAAuE;AAEvE,wDAAoD;AACpD,uDAA6F;AAiB7F,iGAAiG;AACjG,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,IAAA,gBAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACzD,CAAC;AAED,0EAA0E;AAC1E,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAA4B,CAAC;IAChF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,QAAiB,EAAE,EAAE,CAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IACxE,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAmB,CAAC,CAAC;QACnD,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;QACvB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;QACrB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EACpB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,0CAA0C,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAqC,CAAC;AAC/C,CAAC;AAUD,MAAM,cAAc,GAAG,MAAM,CAAC;AAEvB,MAAM,aAAa,GAAW,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CACxE,CACE,MAAM,IAAA,qBAAS,EAAC,6BAAQ,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE;IACvC,GAAG;IACH,MAAM;IACN,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,MAAM;CACjB,CAAC,CACH,CAAC,MAAM,CAAC;AARE,QAAA,aAAa,iBAQf;AAEX;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAK3B,CAAC;IACF,MAAM,GAAG,GAAG,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,IAAI,GACR,GAAG;QACH,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAC/B,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI;gBACvB,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;oBAChC,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,EAAE;oBACxB,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;wBAClC,CAAC,CAAC,OAAO,CAAC,MAAM;wBAChB,CAAC,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED,MAAM,MAAM,GAAG,kEAAkE,CAAC;AAElF;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0BAA0B,CAAC,CAAC;QAClE,OAAO;YACL,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAChD,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;SACzD,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7E,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACtB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,OAAO,IAAI,OAAO;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,KAAa,EAAE,OAAe;IAC1D,MAAM,MAAM,GAAG,GAAU,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC;IACF,MAAM,EAAE,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,IAAc,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,EAAE,KAAK,IAAI;YAChB,CAAC,CAAC,KAAK,IAAI,CAAC;YACZ,CAAC,CAAC,EAAE,KAAK,GAAG;gBACV,CAAC,CAAC,KAAK,GAAG,CAAC;gBACX,CAAC,CAAC,EAAE,KAAK,IAAI;oBACX,CAAC,CAAC,KAAK,IAAI,CAAC;oBACZ,CAAC,CAAC,EAAE,KAAK,GAAG;wBACV,CAAC,CAAC,KAAK,GAAG,CAAC;wBACX,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,8CAA8C;IAC9C,MAAM,KAAK,GAAG,CAAC,KAAa,EAAW,EAAE;QACvC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACjE,MAAM,KAAK,GAAG,wEAAwE,CAAC,IAAI,CACzF,KAAK,CACN,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5F,+DAA+D;QAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClF,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3F,OAAO,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpC,qFAAqF;YACrF,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpC,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,0FAA0F;QAC1F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9E,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAAE,OAAO,MAAM,EAAE,CAAC;IAC9D,2FAA2F;IAC3F,OAAO,YAAY;SAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI;QACF,kCAAkC;SACjC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;SACvC,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC5B,KAAK,CAAC,OAAO,CAAC,CAClB;SACA,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,GAAG,CAAC,EAAQ,EAAE,QAAgB;IACrC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACtC,QAAQ;QACR,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC;AAqBD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,OAA4B;IAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,qBAAa,CAAC;IACzC,MAAM,GAAG,GAAG,IAAA,wCAAkB,EAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,IACE,QAAQ,KAAK,IAAI;YACjB,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;YACpC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAC1D,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,KAAK,GAAkB,IAAI,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,CACf,MAAM,GAAG,CACP,OAAO,CAAC,OAAO,EACf,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAAC,EAChE,GAAG,EACH,QAAQ,CAAC,MAAM,CAChB,CACF,CAAC,IAAI,EAAE,CAAC;YACT,MAAM,MAAM,GAAG,CACb,MAAM,GAAG,CACP,OAAO,CAAC,OAAO,EACf;gBACE,MAAM;gBACN,8BAAY;gBACZ,kBAAkB;gBAClB,YAAY;gBACZ,QAAQ;gBACR,iFAAiF;gBACjF,sBAAsB;gBACtB,GAAG,MAAM;aACV,EACD,GAAG,EACH,QAAQ,CAAC,MAAM,CAChB,CACF,CAAC,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,+DAA+D;YAC/D,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACpC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,KAAK,GAAsB;YAC/B,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM;YACN,KAAK;SACN,CAAC;QACF,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;QACzD,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,IAAA,oBAAU,EAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,IAAI;YACZ,CAAC,CAAC,yBAAyB,MAAM,YAAY,OAAO,CAAC,OAAO,EAAE;YAC9D,CAAC,CAAC,8BAA8B,KAAK,YAAY,OAAO,CAAC,OAAO,EAAE,CACrE,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAS,EAAE;QAC9B,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC,CAAC;YAC3E,oDAAoD;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;YACrD,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CACT,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EACzB,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAC3B,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,MAAM,EAAE,CAAC;YAChD,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAID;;;GAGG;AACH,SAAgB,aAAa,CAC3B,WAAmB,OAAO,CAAC,QAAQ,EACnC,SAAoC,oBAAU;IAE9C,OAAO,IAAA,gBAAI,EAAC,IAAA,mBAAO,EAAC,IAAA,gCAAc,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAaD;;;GAGG;AACH,SAAgB,aAAa,CAAC,QAAgB,EAAE,IAAY;IAC1D,IAAI,KAA+B,CAAC;IACpC,IAAI,CAAC;QACH,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,uCAAuC;YAC/C,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/D,GAAG,EAAE,4EAA4E;YACjF,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,KAAK,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,iBAAiB,KAAK,CAAC,MAAM,aAAa,EAAE,sBAAsB,KAAK,CAAC,OAAO,EAAE;YACzF,KAAK,EAAE,IAAA,6BAAW,EAAC,IAAA,6BAAW,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,KAAK;SACN,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,wBAAwB,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACxF,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The setup page (install.md, W2.4.5b): a page on this machine, served by the running command,
3
+ * where the person enters what must not pass through the conversation or a command line, one
4
+ * named field after another. It listens on 127.0.0.1 at a path of 32 random bytes. Loopback is
5
+ * shared by every account on the machine and `ps` shows every process's arguments, so the URL
6
+ * goes only into a redirect file this account alone can read, which the browser opens: it is
7
+ * never printed and never an argument.
8
+ */
9
+ /** As long as /bind's wait (telegram-pairing.ts) and Codex's device code. */
10
+ export declare const SETUP_PAGE_MS: number;
11
+ export interface SetupField {
12
+ /** The form field's name. */
13
+ readonly name: string;
14
+ /** What the page asks for. */
15
+ readonly label: string;
16
+ /**
17
+ * A secret's box is plain text, not a password box, so the browser offers no password manager
18
+ * to keep the value (a bot token is no login password), with spell checking, autocorrect and
19
+ * autocapitalisation off. No field's value is shown back or printed either way.
20
+ */
21
+ readonly secret: boolean;
22
+ /**
23
+ * Takes the entered value. It resolves with what the page says once the value is taken, or
24
+ * rejects with a CliInputError whose sentence the page shows above the same form again.
25
+ */
26
+ check(value: string): Promise<string>;
27
+ }
28
+ /**
29
+ * Starts the browser opener. It resolves once the opener has started, with its exit status to
30
+ * come, and rejects when it cannot start; tests replace it. The page does not wait for the exit:
31
+ * `xdg-open` without a desktop runs the browser itself, in the foreground, until it quits.
32
+ */
33
+ export type OpenRun = (command: string, args: string[]) => Promise<{
34
+ exit: Promise<number>;
35
+ }>;
36
+ export declare const defaultOpenRun: OpenRun;
37
+ export interface SetupPage {
38
+ /**
39
+ * Rejects when the page stops before every field is taken: at the end of its lifetime with the
40
+ * expiry sentence, or with a check's unexpected error. It never resolves.
41
+ */
42
+ readonly stopped: Promise<never>;
43
+ /** Stops the server and removes the redirect file's folder; a second call does nothing. */
44
+ close(): void;
45
+ }
46
+ /**
47
+ * Serve the page for `fields`, in order, and open it in the browser. Each field is taken once its
48
+ * check accepts it; after the last, the page shows what that check said and stops.
49
+ */
50
+ export declare function openSetupPage(options: {
51
+ fields: readonly SetupField[];
52
+ write: (line: string) => void;
53
+ platform: NodeJS.Platform;
54
+ openRun?: OpenRun;
55
+ lifetimeMs?: number;
56
+ }): Promise<SetupPage>;
57
+ //# sourceMappingURL=setup-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-page.d.ts","sourceRoot":"","sources":["../../../src/cli/runtime/setup-page.ts"],"names":[],"mappings":"AAWA;;;;;;;GAOG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,aAAa,QAAc,CAAC;AAKzC,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAE9F,eAAO,MAAM,cAAc,EAAE,OAWzB,CAAC;AAEL,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,2FAA2F;IAC3F,KAAK,IAAI,IAAI,CAAC;CACf;AAwDD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,SAAS,CAAC,CA8LrB"}