@jungjaehoon/mama-os 0.77.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.
- package/CHANGELOG.md +446 -0
- package/README.md +59 -30
- package/db/migrations/002-model-runs-parent-index.sql +11 -0
- package/db/migrations/003-upkeep-settled.sql +15 -0
- package/dist/api/google-read-actions.d.ts +30 -0
- package/dist/api/google-read-actions.d.ts.map +1 -0
- package/dist/api/google-read-actions.js +256 -0
- package/dist/api/google-read-actions.js.map +1 -0
- package/dist/api/record-actions.d.ts.map +1 -1
- package/dist/api/record-actions.js +23 -5
- package/dist/api/record-actions.js.map +1 -1
- package/dist/api/report-handler.d.ts +0 -6
- package/dist/api/report-handler.d.ts.map +1 -1
- package/dist/api/report-handler.js +0 -54
- package/dist/api/report-handler.js.map +1 -1
- package/dist/api/security-events.d.ts +1 -1
- package/dist/api/security-events.d.ts.map +1 -1
- package/dist/api/security-events.js +10 -1
- package/dist/api/security-events.js.map +1 -1
- package/dist/api/source-actions.d.ts +9 -0
- package/dist/api/source-actions.d.ts.map +1 -1
- package/dist/api/source-actions.js +49 -0
- package/dist/api/source-actions.js.map +1 -1
- package/dist/api/viewer-request-security.d.ts +14 -1
- package/dist/api/viewer-request-security.d.ts.map +1 -1
- package/dist/api/viewer-request-security.js +26 -3
- package/dist/api/viewer-request-security.js.map +1 -1
- package/dist/api/viewer-server.d.ts +8 -0
- package/dist/api/viewer-server.d.ts.map +1 -1
- package/dist/api/viewer-server.js +66 -0
- package/dist/api/viewer-server.js.map +1 -1
- package/dist/api/work-actions.d.ts +19 -2
- package/dist/api/work-actions.d.ts.map +1 -1
- package/dist/api/work-actions.js +42 -2
- package/dist/api/work-actions.js.map +1 -1
- package/dist/cli/commands/backfill.d.ts.map +1 -1
- package/dist/cli/commands/backfill.js +1 -0
- package/dist/cli/commands/backfill.js.map +1 -1
- package/dist/cli/commands/backup.d.ts +14 -0
- package/dist/cli/commands/backup.d.ts.map +1 -0
- package/dist/cli/commands/backup.js +174 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/control.d.ts +44 -0
- package/dist/cli/commands/control.d.ts.map +1 -0
- package/dist/cli/commands/control.js +354 -0
- package/dist/cli/commands/control.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +60 -3
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +454 -78
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +13 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +216 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init-questions.d.ts +98 -0
- package/dist/cli/commands/init-questions.d.ts.map +1 -0
- package/dist/cli/commands/init-questions.js +420 -0
- package/dist/cli/commands/init-questions.js.map +1 -0
- package/dist/cli/commands/init-section.d.ts +13 -0
- package/dist/cli/commands/init-section.d.ts.map +1 -0
- package/dist/cli/commands/init-section.js +375 -0
- package/dist/cli/commands/init-section.js.map +1 -0
- package/dist/cli/commands/init.d.ts +56 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +562 -350
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/logs.d.ts +9 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +109 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/node-move.d.ts +20 -0
- package/dist/cli/commands/node-move.d.ts.map +1 -0
- package/dist/cli/commands/node-move.js +289 -0
- package/dist/cli/commands/node-move.js.map +1 -0
- package/dist/cli/commands/register-owner.d.ts +3 -0
- package/dist/cli/commands/register-owner.d.ts.map +1 -1
- package/dist/cli/commands/register-owner.js +14 -0
- package/dist/cli/commands/register-owner.js.map +1 -1
- package/dist/cli/commands/restore.d.ts +16 -0
- package/dist/cli/commands/restore.d.ts.map +1 -0
- package/dist/cli/commands/restore.js +137 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/service.d.ts +44 -0
- package/dist/cli/commands/service.d.ts.map +1 -0
- package/dist/cli/commands/service.js +306 -0
- package/dist/cli/commands/service.js.map +1 -0
- package/dist/cli/commands/tools.d.ts +1 -1
- package/dist/cli/commands/tools.d.ts.map +1 -1
- package/dist/cli/commands/tools.js +8 -3
- package/dist/cli/commands/tools.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts +7 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.js +335 -0
- package/dist/cli/commands/uninstall.js.map +1 -0
- package/dist/cli/commands/update.d.ts +59 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +948 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/index.js +74 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/launch-files.d.ts +119 -0
- package/dist/cli/launch-files.d.ts.map +1 -1
- package/dist/cli/launch-files.js +324 -15
- package/dist/cli/launch-files.js.map +1 -1
- package/dist/cli/prompt.d.ts +2 -1
- package/dist/cli/prompt.d.ts.map +1 -1
- package/dist/cli/prompt.js +5 -2
- package/dist/cli/prompt.js.map +1 -1
- package/dist/cli/runtime/backend-probe.d.ts +34 -0
- package/dist/cli/runtime/backend-probe.d.ts.map +1 -0
- package/dist/cli/runtime/backend-probe.js +83 -0
- package/dist/cli/runtime/backend-probe.js.map +1 -0
- package/dist/cli/runtime/backup.d.ts +130 -0
- package/dist/cli/runtime/backup.d.ts.map +1 -0
- package/dist/cli/runtime/backup.js +592 -0
- package/dist/cli/runtime/backup.js.map +1 -0
- package/dist/cli/runtime/daemon-control.d.ts +169 -0
- package/dist/cli/runtime/daemon-control.d.ts.map +1 -0
- package/dist/cli/runtime/daemon-control.js +441 -0
- package/dist/cli/runtime/daemon-control.js.map +1 -0
- package/dist/cli/runtime/default-roots.d.ts +27 -0
- package/dist/cli/runtime/default-roots.d.ts.map +1 -0
- package/dist/cli/runtime/default-roots.js +61 -0
- package/dist/cli/runtime/default-roots.js.map +1 -0
- package/dist/cli/runtime/diagnostics.d.ts +68 -0
- package/dist/cli/runtime/diagnostics.d.ts.map +1 -0
- package/dist/cli/runtime/diagnostics.js +1139 -0
- package/dist/cli/runtime/diagnostics.js.map +1 -0
- package/dist/cli/runtime/init-state.d.ts +20 -0
- package/dist/cli/runtime/init-state.d.ts.map +1 -0
- package/dist/cli/runtime/init-state.js +51 -0
- package/dist/cli/runtime/init-state.js.map +1 -0
- package/dist/cli/runtime/install-kind.d.ts +54 -0
- package/dist/cli/runtime/install-kind.d.ts.map +1 -0
- package/dist/cli/runtime/install-kind.js +164 -0
- package/dist/cli/runtime/install-kind.js.map +1 -0
- package/dist/cli/runtime/node-move-journal.d.ts +44 -0
- package/dist/cli/runtime/node-move-journal.d.ts.map +1 -0
- package/dist/cli/runtime/node-move-journal.js +48 -0
- package/dist/cli/runtime/node-move-journal.js.map +1 -0
- package/dist/cli/runtime/release-check.d.ts +94 -0
- package/dist/cli/runtime/release-check.d.ts.map +1 -0
- package/dist/cli/runtime/release-check.js +316 -0
- package/dist/cli/runtime/release-check.js.map +1 -0
- package/dist/cli/runtime/restore.d.ts +98 -0
- package/dist/cli/runtime/restore.d.ts.map +1 -0
- package/dist/cli/runtime/restore.js +756 -0
- package/dist/cli/runtime/restore.js.map +1 -0
- package/dist/cli/runtime/setup-page.d.ts +57 -0
- package/dist/cli/runtime/setup-page.d.ts.map +1 -0
- package/dist/cli/runtime/setup-page.js +266 -0
- package/dist/cli/runtime/setup-page.js.map +1 -0
- package/dist/cli/runtime/source-tools.d.ts +60 -0
- package/dist/cli/runtime/source-tools.d.ts.map +1 -0
- package/dist/cli/runtime/source-tools.js +170 -0
- package/dist/cli/runtime/source-tools.js.map +1 -0
- package/dist/cli/runtime/systemd-service.d.ts +13 -0
- package/dist/cli/runtime/systemd-service.d.ts.map +1 -0
- package/dist/cli/runtime/systemd-service.js +32 -0
- package/dist/cli/runtime/systemd-service.js.map +1 -0
- package/dist/cli/runtime/telegram-pairing.d.ts +73 -0
- package/dist/cli/runtime/telegram-pairing.d.ts.map +1 -0
- package/dist/cli/runtime/telegram-pairing.js +184 -0
- package/dist/cli/runtime/telegram-pairing.js.map +1 -0
- package/dist/cli/runtime/update-journal.d.ts +135 -0
- package/dist/cli/runtime/update-journal.d.ts.map +1 -0
- package/dist/cli/runtime/update-journal.js +144 -0
- package/dist/cli/runtime/update-journal.js.map +1 -0
- package/dist/cli/runtime/update-progress.d.ts +95 -0
- package/dist/cli/runtime/update-progress.d.ts.map +1 -0
- package/dist/cli/runtime/update-progress.js +154 -0
- package/dist/cli/runtime/update-progress.js.map +1 -0
- package/dist/cli/runtime/update-request.d.ts +58 -0
- package/dist/cli/runtime/update-request.d.ts.map +1 -0
- package/dist/cli/runtime/update-request.js +172 -0
- package/dist/cli/runtime/update-request.js.map +1 -0
- package/dist/connectors/calendar/index.d.ts +5 -1
- package/dist/connectors/calendar/index.d.ts.map +1 -1
- package/dist/connectors/calendar/index.js +19 -28
- package/dist/connectors/calendar/index.js.map +1 -1
- package/dist/connectors/chatwork/index.d.ts.map +1 -1
- package/dist/connectors/chatwork/index.js +7 -3
- package/dist/connectors/chatwork/index.js.map +1 -1
- package/dist/connectors/config-loader.d.ts +7 -1
- package/dist/connectors/config-loader.d.ts.map +1 -1
- package/dist/connectors/config-loader.js +11 -2
- package/dist/connectors/config-loader.js.map +1 -1
- package/dist/connectors/discord/index.d.ts.map +1 -1
- package/dist/connectors/discord/index.js +4 -3
- package/dist/connectors/discord/index.js.map +1 -1
- package/dist/connectors/drive/index.d.ts.map +1 -1
- package/dist/connectors/drive/index.js +15 -13
- package/dist/connectors/drive/index.js.map +1 -1
- package/dist/connectors/framework/gws-utils.d.ts +62 -0
- package/dist/connectors/framework/gws-utils.d.ts.map +1 -1
- package/dist/connectors/framework/gws-utils.js +133 -3
- package/dist/connectors/framework/gws-utils.js.map +1 -1
- package/dist/connectors/framework/polling-scheduler.d.ts.map +1 -1
- package/dist/connectors/framework/polling-scheduler.js +12 -11
- package/dist/connectors/framework/polling-scheduler.js.map +1 -1
- package/dist/connectors/framework/types.d.ts +24 -0
- package/dist/connectors/framework/types.d.ts.map +1 -1
- package/dist/connectors/framework/types.js +9 -0
- package/dist/connectors/framework/types.js.map +1 -1
- package/dist/connectors/gmail/index.d.ts.map +1 -1
- package/dist/connectors/gmail/index.js +14 -13
- package/dist/connectors/gmail/index.js.map +1 -1
- package/dist/connectors/imessage/index.d.ts.map +1 -1
- package/dist/connectors/imessage/index.js +2 -1
- package/dist/connectors/imessage/index.js.map +1 -1
- package/dist/connectors/index.d.ts +4 -4
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +4 -10
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/notion/index.d.ts.map +1 -1
- package/dist/connectors/notion/index.js +5 -3
- package/dist/connectors/notion/index.js.map +1 -1
- package/dist/connectors/sheets/index.d.ts.map +1 -1
- package/dist/connectors/sheets/index.js +17 -12
- package/dist/connectors/sheets/index.js.map +1 -1
- package/dist/connectors/slack/index.d.ts.map +1 -1
- package/dist/connectors/slack/index.js +9 -3
- package/dist/connectors/slack/index.js.map +1 -1
- package/dist/connectors/telegram/index.d.ts.map +1 -1
- package/dist/connectors/telegram/index.js +4 -3
- package/dist/connectors/telegram/index.js.map +1 -1
- package/dist/connectors/trello/index.d.ts +1 -1
- package/dist/connectors/trello/index.d.ts.map +1 -1
- package/dist/connectors/trello/index.js +10 -5
- package/dist/connectors/trello/index.js.map +1 -1
- package/dist/gateways/discord.d.ts +6 -0
- package/dist/gateways/discord.d.ts.map +1 -1
- package/dist/gateways/discord.js +38 -27
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/slack.d.ts +6 -0
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +38 -27
- package/dist/gateways/slack.js.map +1 -1
- package/dist/gateways/telegram-commands.d.ts +124 -0
- package/dist/gateways/telegram-commands.d.ts.map +1 -0
- package/dist/gateways/telegram-commands.js +131 -0
- package/dist/gateways/telegram-commands.js.map +1 -0
- package/dist/gateways/telegram.d.ts +20 -0
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +138 -34
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/gateways/turn-contract.d.ts +11 -0
- package/dist/gateways/turn-contract.d.ts.map +1 -1
- package/dist/runtime/action-surface.d.ts +1 -1
- package/dist/runtime/action-surface.d.ts.map +1 -1
- package/dist/runtime/action-surface.js +10 -0
- package/dist/runtime/action-surface.js.map +1 -1
- package/dist/runtime/backend-security.d.ts +26 -2
- package/dist/runtime/backend-security.d.ts.map +1 -1
- package/dist/runtime/backend-security.js +63 -10
- package/dist/runtime/backend-security.js.map +1 -1
- package/dist/runtime/config.d.ts +3 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +4 -4
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/connectors.d.ts +21 -1
- package/dist/runtime/connectors.d.ts.map +1 -1
- package/dist/runtime/connectors.js +28 -17
- package/dist/runtime/connectors.js.map +1 -1
- package/dist/runtime/core-db.d.ts.map +1 -1
- package/dist/runtime/core-db.js +2 -0
- package/dist/runtime/core-db.js.map +1 -1
- package/dist/runtime/member-paths.d.ts +15 -7
- package/dist/runtime/member-paths.d.ts.map +1 -1
- package/dist/runtime/member-paths.js +64 -12
- package/dist/runtime/member-paths.js.map +1 -1
- package/dist/runtime/member-session.d.ts +4 -0
- package/dist/runtime/member-session.d.ts.map +1 -1
- package/dist/runtime/member-session.js +23 -2
- package/dist/runtime/member-session.js.map +1 -1
- package/dist/runtime/native-session.d.ts +2 -0
- package/dist/runtime/native-session.d.ts.map +1 -1
- package/dist/runtime/native-session.js +1 -0
- package/dist/runtime/native-session.js.map +1 -1
- package/dist/runtime/owner-runtime.d.ts +63 -1
- package/dist/runtime/owner-runtime.d.ts.map +1 -1
- package/dist/runtime/owner-runtime.js +180 -3
- package/dist/runtime/owner-runtime.js.map +1 -1
- package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
- package/dist/runtime/owner-system-prompt.js +6 -5
- package/dist/runtime/owner-system-prompt.js.map +1 -1
- package/dist/runtime/principal-access.d.ts +2 -0
- package/dist/runtime/principal-access.d.ts.map +1 -1
- package/dist/runtime/principal-access.js +7 -0
- package/dist/runtime/principal-access.js.map +1 -1
- package/dist/runtime/principal-sessions.d.ts.map +1 -1
- package/dist/runtime/principal-sessions.js +8 -1
- package/dist/runtime/principal-sessions.js.map +1 -1
- package/dist/runtime/record-orders.d.ts.map +1 -1
- package/dist/runtime/record-orders.js +3 -29
- package/dist/runtime/record-orders.js.map +1 -1
- package/dist/runtime/report-scheduler.d.ts +9 -2
- package/dist/runtime/report-scheduler.d.ts.map +1 -1
- package/dist/runtime/report-scheduler.js +37 -10
- package/dist/runtime/report-scheduler.js.map +1 -1
- package/dist/runtime/rotating-log.d.ts +44 -0
- package/dist/runtime/rotating-log.d.ts.map +1 -0
- package/dist/runtime/rotating-log.js +124 -0
- package/dist/runtime/rotating-log.js.map +1 -0
- package/dist/runtime/stimulus-delivery.d.ts +3 -0
- package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
- package/dist/runtime/stimulus-delivery.js +19 -3
- package/dist/runtime/stimulus-delivery.js.map +1 -1
- package/dist/runtime/tools-paths.d.ts +7 -0
- package/dist/runtime/tools-paths.d.ts.map +1 -1
- package/dist/runtime/tools-paths.js +11 -5
- package/dist/runtime/tools-paths.js.map +1 -1
- package/dist/runtime/upkeep-close.d.ts +17 -0
- package/dist/runtime/upkeep-close.d.ts.map +1 -0
- package/dist/runtime/upkeep-close.js +127 -0
- package/dist/runtime/upkeep-close.js.map +1 -0
- package/dist/runtime/upkeep-orders.d.ts +124 -0
- package/dist/runtime/upkeep-orders.d.ts.map +1 -0
- package/dist/runtime/upkeep-orders.js +310 -0
- package/dist/runtime/upkeep-orders.js.map +1 -0
- package/dist/runtime/upkeep-reconcile.d.ts +25 -0
- package/dist/runtime/upkeep-reconcile.d.ts.map +1 -0
- package/dist/runtime/upkeep-reconcile.js +231 -0
- package/dist/runtime/upkeep-reconcile.js.map +1 -0
- package/dist/runtime/upkeep-writeback.d.ts +22 -0
- package/dist/runtime/upkeep-writeback.d.ts.map +1 -0
- package/dist/runtime/upkeep-writeback.js +203 -0
- package/dist/runtime/upkeep-writeback.js.map +1 -0
- package/dist/tools/document-toolkit.d.ts +2 -0
- package/dist/tools/document-toolkit.d.ts.map +1 -1
- package/dist/tools/document-toolkit.js +2 -0
- package/dist/tools/document-toolkit.js.map +1 -1
- package/dist/utils/untrusted-content.d.ts.map +1 -1
- package/dist/utils/untrusted-content.js +8 -1
- package/dist/utils/untrusted-content.js.map +1 -1
- package/install/install.sh +457 -0
- package/install/node.json +9 -0
- package/package.json +5 -5
package/dist/cli/launch-files.js
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UPDATE_JOB_LABEL = exports.SERVICE_STOP_SECONDS = exports.CRASH_LOG_CAP_BYTES = exports.CRASH_LOG_NAME = exports.TOOL_DIRECTORIES = exports.UPDATE_HOLD_LINE = exports.START_SCRIPT_MARKER = void 0;
|
|
3
4
|
exports.findExecutable = findExecutable;
|
|
5
|
+
exports.mamaCommand = mamaCommand;
|
|
6
|
+
exports.findIn = findIn;
|
|
7
|
+
exports.stableNodePath = stableNodePath;
|
|
8
|
+
exports.versionedNodePath = versionedNodePath;
|
|
4
9
|
exports.startScript = startScript;
|
|
10
|
+
exports.startPathEntries = startPathEntries;
|
|
5
11
|
exports.launchAgent = launchAgent;
|
|
12
|
+
exports.updateAgent = updateAgent;
|
|
13
|
+
exports.updateScript = updateScript;
|
|
14
|
+
exports.systemdUnit = systemdUnit;
|
|
15
|
+
exports.shellWords = shellWords;
|
|
16
|
+
exports.startPathValue = startPathValue;
|
|
17
|
+
exports.startScriptPath = startScriptPath;
|
|
18
|
+
exports.startExports = startExports;
|
|
19
|
+
exports.readStartScript = readStartScript;
|
|
6
20
|
const node_fs_1 = require("node:fs");
|
|
7
21
|
const node_path_1 = require("node:path");
|
|
8
22
|
const secrets_js_1 = require("./secrets.js");
|
|
@@ -21,32 +35,92 @@ function findExecutable(name) {
|
|
|
21
35
|
}
|
|
22
36
|
return undefined;
|
|
23
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* The command the person's agent runs for this install: the wrapper the install command makes in
|
|
40
|
+
* the MAMA home, by its path (the agent's shell may find another `mama`), or else `mama`.
|
|
41
|
+
*/
|
|
42
|
+
function mamaCommand(root) {
|
|
43
|
+
return (0, node_fs_1.existsSync)((0, node_path_1.join)(root, 'bin', 'mama')) ? '~/.mama/bin/mama' : 'mama';
|
|
44
|
+
}
|
|
45
|
+
/** The first of `dirs` that holds `name`, as a service whose PATH is `dirs` finds it. */
|
|
46
|
+
function findIn(name, dirs) {
|
|
47
|
+
for (const dir of dirs) {
|
|
48
|
+
const path = (0, node_path_1.join)(dir, name);
|
|
49
|
+
if ((0, node_fs_1.existsSync)(path))
|
|
50
|
+
return path;
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A Node path that survives an upgrade. Homebrew removes a version's Cellar folder when it
|
|
56
|
+
* upgrades, but keeps `<prefix>/opt/<formula>` (and `<prefix>/bin/node` for `node`) pointing at
|
|
57
|
+
* the current one, so the launch files use those when the running Node lives in the Cellar.
|
|
58
|
+
*/
|
|
59
|
+
function stableNodePath(execPath, exists = node_fs_1.existsSync) {
|
|
60
|
+
const brew = /^(.*)\/Cellar\/(node(?:@\d+)?)\/[^/]+\/bin\/node$/.exec(execPath);
|
|
61
|
+
if (!brew)
|
|
62
|
+
return execPath;
|
|
63
|
+
const [, prefix, formula] = brew;
|
|
64
|
+
const candidates = [
|
|
65
|
+
(0, node_path_1.join)(prefix, 'opt', formula, 'bin', 'node'),
|
|
66
|
+
...(formula === 'node' ? [(0, node_path_1.join)(prefix, 'bin', 'node')] : []),
|
|
67
|
+
];
|
|
68
|
+
return candidates.find((candidate) => exists(candidate)) ?? execPath;
|
|
69
|
+
}
|
|
70
|
+
/** A Node path that a version manager or an upgrade removes (I6). */
|
|
71
|
+
function versionedNodePath(path) {
|
|
72
|
+
return /\/Cellar\/node(@\d+)?\/|\/\.nvm\/versions\/node\/|\/\.volta\/tools\/image\/node\/|\/fnm\/node-versions\//.test(path);
|
|
73
|
+
}
|
|
74
|
+
/** The first comment line of every start.sh that mama writes. */
|
|
75
|
+
exports.START_SCRIPT_MARKER = '# Written by mama init or mama service install; mama service install rewrites it.';
|
|
76
|
+
/**
|
|
77
|
+
* While `mama update` swaps or rolls back the package, start.sh exits at once and cleanly, so a
|
|
78
|
+
* service manager (or a reboot) starts nothing on a half-switched install and does not restart it
|
|
79
|
+
* (docs/development/work/update.md, steps 8 and 13). Relative to the `cd` before it.
|
|
80
|
+
*/
|
|
81
|
+
exports.UPDATE_HOLD_LINE = '[ -f runtime/update.hold ] && exit 0';
|
|
24
82
|
function startScript(options) {
|
|
25
83
|
const root = (0, node_path_1.join)(options.home, '.mama');
|
|
26
|
-
const path = [
|
|
27
|
-
...new Set([
|
|
28
|
-
(0, node_path_1.dirname)(options.nodePath),
|
|
29
|
-
...options.executablePaths.map(node_path_1.dirname),
|
|
30
|
-
'/usr/bin',
|
|
31
|
-
'/bin',
|
|
32
|
-
'/usr/sbin',
|
|
33
|
-
'/sbin',
|
|
34
|
-
]),
|
|
35
|
-
].join(':');
|
|
36
84
|
return [
|
|
37
85
|
'#!/bin/sh',
|
|
86
|
+
exports.START_SCRIPT_MARKER,
|
|
38
87
|
'set -eu',
|
|
39
88
|
'umask 077',
|
|
40
|
-
`export PATH=${(0, secrets_js_1.shellQuote)(
|
|
89
|
+
`export PATH=${(0, secrets_js_1.shellQuote)(startPathEntries(options).join(':'))}`,
|
|
41
90
|
`cd ${(0, secrets_js_1.shellQuote)(root)}`,
|
|
91
|
+
exports.UPDATE_HOLD_LINE,
|
|
42
92
|
'set -a',
|
|
43
93
|
`. ${(0, secrets_js_1.shellQuote)((0, node_path_1.join)(root, 'auth.env'))}`,
|
|
44
94
|
'set +a',
|
|
95
|
+
`export MAMA_LOG_LEVEL=${(0, secrets_js_1.shellQuote)(options.logLevel.toUpperCase())}`,
|
|
45
96
|
...Object.entries(options.viewer).map(([name, value]) => `export ${name}=${(0, secrets_js_1.shellQuote)(value)}`),
|
|
46
|
-
|
|
97
|
+
...(options.carried ?? []),
|
|
98
|
+
...crashLogLines(root),
|
|
99
|
+
`exec ${(0, secrets_js_1.shellQuote)(options.nodePath)} ${(0, secrets_js_1.shellQuote)(options.cliPath)} daemon >> "$crash" 2>&1`,
|
|
47
100
|
'',
|
|
48
101
|
].join('\n');
|
|
49
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Where a package manager installs the owner's command-line tools: Homebrew on Apple silicon
|
|
105
|
+
* (/opt/homebrew) and on Intel Macs and most Linux installs (/usr/local). The agent's shell runs
|
|
106
|
+
* those tools (python3 with its packages, sqlite3) and expects them ahead of the system's own, as
|
|
107
|
+
* in the owner's terminal.
|
|
108
|
+
*/
|
|
109
|
+
exports.TOOL_DIRECTORIES = ['/opt/homebrew/bin', '/usr/local/bin'];
|
|
110
|
+
/**
|
|
111
|
+
* The PATH a generated start.sh sets: Node's folder, the backend's and gws's, the package
|
|
112
|
+
* manager's folders that exist on this machine, then the system's.
|
|
113
|
+
*/
|
|
114
|
+
function startPathEntries(options) {
|
|
115
|
+
const exists = options.exists ?? node_fs_1.existsSync;
|
|
116
|
+
const system = ['/usr/bin', '/bin', '/usr/sbin', '/sbin'];
|
|
117
|
+
// A Node or backend in a system folder (/usr/bin/node on Linux) keeps the system's place, after
|
|
118
|
+
// the tool folders; start.sh runs Node by its full path either way.
|
|
119
|
+
const own = [(0, node_path_1.dirname)(options.nodePath), ...options.executablePaths.map(node_path_1.dirname)].filter((directory) => !system.includes(directory));
|
|
120
|
+
return [
|
|
121
|
+
...new Set([...own, ...exports.TOOL_DIRECTORIES.filter((directory) => exists(directory)), ...system]),
|
|
122
|
+
];
|
|
123
|
+
}
|
|
50
124
|
function xml(value) {
|
|
51
125
|
return value
|
|
52
126
|
.replace(/&/g, '&')
|
|
@@ -55,6 +129,31 @@ function xml(value) {
|
|
|
55
129
|
.replace(/"/g, '"')
|
|
56
130
|
.replace(/'/g, ''');
|
|
57
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* What the service manager captures before the daemon writes its own rotated log (daemon.log):
|
|
134
|
+
* start.sh's own messages, a crash while Node loads, a fatal error, a native library's writes.
|
|
135
|
+
*/
|
|
136
|
+
exports.CRASH_LOG_NAME = 'crash.log';
|
|
137
|
+
/** start.sh empties the crash log at start once it is past this size. */
|
|
138
|
+
exports.CRASH_LOG_CAP_BYTES = 1024 * 1024;
|
|
139
|
+
/**
|
|
140
|
+
* start.sh's crash log: only what comes before the daemon takes over its own output lands there;
|
|
141
|
+
* it is made owner-only and emptied at start once past the cap.
|
|
142
|
+
*/
|
|
143
|
+
function crashLogLines(root) {
|
|
144
|
+
return [
|
|
145
|
+
`crash=${(0, secrets_js_1.shellQuote)((0, node_path_1.join)(root, 'logs', exports.CRASH_LOG_NAME))}`,
|
|
146
|
+
// launchd creates the file it redirects to before this script's umask applies.
|
|
147
|
+
`if [ -f "$crash" ]; then chmod 600 "$crash"; fi`,
|
|
148
|
+
`if [ -f "$crash" ] && [ "$(wc -c < "$crash")" -gt ${exports.CRASH_LOG_CAP_BYTES} ]; then : > "$crash"; fi`,
|
|
149
|
+
];
|
|
150
|
+
}
|
|
151
|
+
/** Seconds a service manager waits for a stopping daemon before it kills it. */
|
|
152
|
+
exports.SERVICE_STOP_SECONDS = 60;
|
|
153
|
+
/**
|
|
154
|
+
* The LaunchAgent restarts the daemon only after a failure: a clean exit (a stop, or a refusal
|
|
155
|
+
* because another process holds the install) leaves it stopped.
|
|
156
|
+
*/
|
|
58
157
|
function launchAgent(home) {
|
|
59
158
|
const root = (0, node_path_1.join)(home, '.mama');
|
|
60
159
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -65,10 +164,220 @@ function launchAgent(home) {
|
|
|
65
164
|
<key>WorkingDirectory</key><string>${xml(root)}</string>
|
|
66
165
|
<key>EnvironmentVariables</key><dict><key>HOME</key><string>${xml(home)}</string></dict>
|
|
67
166
|
<key>RunAtLoad</key><true/>
|
|
68
|
-
<key>KeepAlive</key><
|
|
69
|
-
<key>
|
|
70
|
-
<key>
|
|
167
|
+
<key>KeepAlive</key><dict><key>SuccessfulExit</key><false/></dict>
|
|
168
|
+
<key>ExitTimeOut</key><integer>${exports.SERVICE_STOP_SECONDS}</integer>
|
|
169
|
+
<key>StandardOutPath</key><string>${xml((0, node_path_1.join)(root, 'logs', exports.CRASH_LOG_NAME))}</string>
|
|
170
|
+
<key>StandardErrorPath</key><string>${xml((0, node_path_1.join)(root, 'logs', exports.CRASH_LOG_NAME))}</string>
|
|
171
|
+
</dict></plist>
|
|
172
|
+
`;
|
|
173
|
+
}
|
|
174
|
+
/** The update job /update starts (docs/development/work/update.md, PR 4). */
|
|
175
|
+
exports.UPDATE_JOB_LABEL = 'com.mama.update';
|
|
176
|
+
/**
|
|
177
|
+
* The update job's LaunchAgent: launchd's own job, so stopping the daemon's service does not end
|
|
178
|
+
* it (checks.md, W2.3 Step 0). It runs once: no KeepAlive, and it is loaded from runtime/, not
|
|
179
|
+
* ~/Library/LaunchAgents, so a login does not start it again.
|
|
180
|
+
*/
|
|
181
|
+
function updateAgent(home) {
|
|
182
|
+
const root = (0, node_path_1.join)(home, '.mama');
|
|
183
|
+
const log = xml((0, node_path_1.join)(root, 'logs', 'update.log'));
|
|
184
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
185
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
186
|
+
<plist version="1.0"><dict>
|
|
187
|
+
<key>Label</key><string>${exports.UPDATE_JOB_LABEL}</string>
|
|
188
|
+
<key>ProgramArguments</key><array><string>${xml((0, node_path_1.join)(root, 'runtime', 'update.sh'))}</string></array>
|
|
189
|
+
<key>WorkingDirectory</key><string>${xml(root)}</string>
|
|
190
|
+
<key>EnvironmentVariables</key><dict><key>HOME</key><string>${xml(home)}</string></dict>
|
|
191
|
+
<key>RunAtLoad</key><true/>
|
|
192
|
+
<key>StandardOutPath</key><string>${log}</string>
|
|
193
|
+
<key>StandardErrorPath</key><string>${log}</string>
|
|
71
194
|
</dict></plist>
|
|
72
195
|
`;
|
|
73
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* The update job's script: start.sh's PATH and `cd` and its pinned Node and MAMA command, and
|
|
199
|
+
* nothing of auth.env, so the job holds no credential; the progress sink reads the bot token
|
|
200
|
+
* alone from auth.env when it sends. `MAMA_UPDATE_PROGRESS` reaches the new version's
|
|
201
|
+
* `update --continue` and a rollback's CLI through the environment they inherit.
|
|
202
|
+
*/
|
|
203
|
+
function updateScript(options) {
|
|
204
|
+
const root = (0, node_path_1.join)(options.home, '.mama');
|
|
205
|
+
const reading = readStartScript(options.start, options.home);
|
|
206
|
+
if (reading.path === null)
|
|
207
|
+
throw new Error('start.sh sets no PATH; mama service install rewrites it');
|
|
208
|
+
const log = (0, node_path_1.join)('logs', 'update.log');
|
|
209
|
+
return [
|
|
210
|
+
'#!/bin/sh',
|
|
211
|
+
"# Written by MAMA's /update for the update job it starts; each /update rewrites it.",
|
|
212
|
+
'set -eu',
|
|
213
|
+
'umask 077',
|
|
214
|
+
`export PATH=${reading.path}`,
|
|
215
|
+
`cd ${(0, secrets_js_1.shellQuote)(root)}`,
|
|
216
|
+
// launchd creates the file it redirects to before this script's umask applies.
|
|
217
|
+
`if [ -f ${log} ]; then chmod 600 ${log}; fi`,
|
|
218
|
+
'export MAMA_UPDATE_PROGRESS=telegram',
|
|
219
|
+
`exec ${(0, secrets_js_1.shellQuote)(options.nodePath)} ${(0, secrets_js_1.shellQuote)(options.cliPath)} update`,
|
|
220
|
+
'',
|
|
221
|
+
].join('\n');
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* The systemd user unit, with the same restart policy as the LaunchAgent. `%h` is the home folder,
|
|
225
|
+
* expanded by systemd per argument, so a path with spaces stays one argument. KillMode=mixed sends
|
|
226
|
+
* the stop signal to the daemon alone, which stops its children in order; anything left is killed
|
|
227
|
+
* when the stop times out.
|
|
228
|
+
*/
|
|
229
|
+
function systemdUnit() {
|
|
230
|
+
return [
|
|
231
|
+
'[Unit]',
|
|
232
|
+
'Description=MAMA OS daemon',
|
|
233
|
+
'',
|
|
234
|
+
'[Service]',
|
|
235
|
+
'Type=simple',
|
|
236
|
+
'WorkingDirectory=%h/.mama',
|
|
237
|
+
'ExecStart="%h/.mama/start.sh"',
|
|
238
|
+
'Restart=on-failure',
|
|
239
|
+
'RestartSec=10',
|
|
240
|
+
`TimeoutStopSec=${exports.SERVICE_STOP_SECONDS}`,
|
|
241
|
+
'KillMode=mixed',
|
|
242
|
+
'',
|
|
243
|
+
'[Install]',
|
|
244
|
+
'WantedBy=default.target',
|
|
245
|
+
'',
|
|
246
|
+
].join('\n');
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Split a start.sh line into words as sh does before expansion: a `#` starting a word ends the
|
|
250
|
+
* line, single quotes are literal, double
|
|
251
|
+
* quotes keep their text (a backslash escapes `"`, `\\`, `$` and a backtick), and a backslash
|
|
252
|
+
* outside quotes escapes the next character. Variables stay as written.
|
|
253
|
+
*/
|
|
254
|
+
function shellWords(line) {
|
|
255
|
+
const words = [];
|
|
256
|
+
let word = null;
|
|
257
|
+
for (let index = 0; index < line.length; index += 1) {
|
|
258
|
+
const char = line[index];
|
|
259
|
+
if (char === "'") {
|
|
260
|
+
const end = line.indexOf("'", index + 1);
|
|
261
|
+
if (end < 0)
|
|
262
|
+
throw new Error('unterminated single quote');
|
|
263
|
+
word = (word ?? '') + line.slice(index + 1, end);
|
|
264
|
+
index = end;
|
|
265
|
+
}
|
|
266
|
+
else if (char === '"') {
|
|
267
|
+
let text = '';
|
|
268
|
+
index += 1;
|
|
269
|
+
while (index < line.length && line[index] !== '"') {
|
|
270
|
+
if (line[index] === '\\' && '"\\$`'.includes(line[index + 1] ?? ''))
|
|
271
|
+
index += 1;
|
|
272
|
+
text += line[index];
|
|
273
|
+
index += 1;
|
|
274
|
+
}
|
|
275
|
+
if (index >= line.length)
|
|
276
|
+
throw new Error('unterminated double quote');
|
|
277
|
+
word = (word ?? '') + text;
|
|
278
|
+
}
|
|
279
|
+
else if (char === '\\') {
|
|
280
|
+
word = (word ?? '') + (line[index + 1] ?? '');
|
|
281
|
+
index += 1;
|
|
282
|
+
}
|
|
283
|
+
else if (/\s/.test(char)) {
|
|
284
|
+
if (word !== null)
|
|
285
|
+
words.push(word);
|
|
286
|
+
word = null;
|
|
287
|
+
}
|
|
288
|
+
else if (char === '#' && word === null) {
|
|
289
|
+
// A # that starts a word starts a comment.
|
|
290
|
+
break;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
word = (word ?? '') + char;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (word !== null)
|
|
297
|
+
words.push(word);
|
|
298
|
+
return words;
|
|
299
|
+
}
|
|
300
|
+
/** The PATH entries an `export PATH=` value names, with `$HOME` and `~` read as `home`. */
|
|
301
|
+
function startPathValue(value, home) {
|
|
302
|
+
return (shellWords(value)[0] ?? '')
|
|
303
|
+
.split(':')
|
|
304
|
+
.map((entry) => entry.replace(/^(\$HOME|\$\{HOME\}|~)(?=\/|$)/, home))
|
|
305
|
+
.filter((entry) => entry !== '' && entry !== '$PATH' && entry !== '${PATH}');
|
|
306
|
+
}
|
|
307
|
+
/** The PATH a service manager gives a unit that does not set one ($PATH in start.sh). */
|
|
308
|
+
const SERVICE_DEFAULT_PATH = {
|
|
309
|
+
darwin: ['/usr/bin', '/bin', '/usr/sbin', '/sbin'],
|
|
310
|
+
linux: ['/usr/local/sbin', '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin', '/bin'],
|
|
311
|
+
};
|
|
312
|
+
/** The folders the service's commands are found in: start.sh's PATH, or the manager's own. */
|
|
313
|
+
function startScriptPath(reading, home, platform) {
|
|
314
|
+
const inherited = SERVICE_DEFAULT_PATH[platform] ?? [];
|
|
315
|
+
if (reading === null || reading.path === null)
|
|
316
|
+
return inherited;
|
|
317
|
+
return [
|
|
318
|
+
...startPathValue(reading.path, home),
|
|
319
|
+
...(/\$\{?PATH\}?/.test(reading.path) ? inherited : []),
|
|
320
|
+
];
|
|
321
|
+
}
|
|
322
|
+
/** The values a start.sh's carried `export` lines set, unquoted. */
|
|
323
|
+
function startExports(reading) {
|
|
324
|
+
return Object.fromEntries(reading.carried.flatMap((line) => {
|
|
325
|
+
const match = /^export\s+([A-Za-z_][A-Za-z0-9_]*)=(.*)$/.exec(line);
|
|
326
|
+
return match ? [[match[1], shellWords(match[2])[0] ?? '']] : [];
|
|
327
|
+
}));
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Read a start.sh against what this install's generated one holds. Only exact generated lines
|
|
331
|
+
* count as reproduced: a changed `cd` or a different sourced file is reported, not dropped.
|
|
332
|
+
*/
|
|
333
|
+
function readStartScript(script, home) {
|
|
334
|
+
const root = (0, node_path_1.join)(home, '.mama');
|
|
335
|
+
const generatedLines = new Set([
|
|
336
|
+
'set -eu',
|
|
337
|
+
'set -a',
|
|
338
|
+
'set +a',
|
|
339
|
+
'umask 077',
|
|
340
|
+
`cd ${(0, secrets_js_1.shellQuote)(root)}`,
|
|
341
|
+
exports.UPDATE_HOLD_LINE,
|
|
342
|
+
`. ${(0, secrets_js_1.shellQuote)((0, node_path_1.join)(root, 'auth.env'))}`,
|
|
343
|
+
...crashLogLines(root),
|
|
344
|
+
]);
|
|
345
|
+
const carried = [];
|
|
346
|
+
const notReproduced = [];
|
|
347
|
+
let path = null;
|
|
348
|
+
let logLevel = null;
|
|
349
|
+
let exec = null;
|
|
350
|
+
for (const raw of script.split('\n')) {
|
|
351
|
+
const line = raw.trim();
|
|
352
|
+
if (line === '')
|
|
353
|
+
continue;
|
|
354
|
+
const exported = /^export\s+([A-Za-z_][A-Za-z0-9_]*)=(.*)$/.exec(line);
|
|
355
|
+
if (exported) {
|
|
356
|
+
if (exported[1] === 'PATH')
|
|
357
|
+
path = exported[2];
|
|
358
|
+
else if (exported[1] === 'MAMA_LOG_LEVEL')
|
|
359
|
+
logLevel = exported[2];
|
|
360
|
+
else
|
|
361
|
+
carried.push(line);
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
364
|
+
if (/^exec\s/.test(line)) {
|
|
365
|
+
exec = line;
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
if (line.startsWith('#') || generatedLines.has(line))
|
|
369
|
+
continue;
|
|
370
|
+
notReproduced.push(line);
|
|
371
|
+
}
|
|
372
|
+
const authLine = `. ${(0, secrets_js_1.shellQuote)((0, node_path_1.join)(root, 'auth.env'))}`;
|
|
373
|
+
return {
|
|
374
|
+
generated: script.includes(exports.START_SCRIPT_MARKER),
|
|
375
|
+
loadsAuthEnv: script.split('\n').some((line) => line.trim() === authLine),
|
|
376
|
+
carried,
|
|
377
|
+
path,
|
|
378
|
+
logLevel,
|
|
379
|
+
exec,
|
|
380
|
+
notReproduced,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
74
383
|
//# sourceMappingURL=launch-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch-files.js","sourceRoot":"","sources":["../../src/cli/launch-files.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"launch-files.js","sourceRoot":"","sources":["../../src/cli/launch-files.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/prompt.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ export declare class CliInputError extends Error {
|
|
|
4
4
|
export interface PromptAdapter {
|
|
5
5
|
readonly stdinIsTTY: boolean;
|
|
6
6
|
readonly stdoutIsTTY: boolean;
|
|
7
|
-
|
|
7
|
+
/** An aborted signal ends the question as cancelled. */
|
|
8
|
+
text(label: string, signal?: AbortSignal): Promise<string>;
|
|
8
9
|
secret(label: string): Promise<string>;
|
|
9
10
|
write(line: string): void;
|
|
10
11
|
}
|
package/dist/cli/prompt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,wDAAwD;IACxD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAMtD;AAED,kGAAkG;AAClG,wBAAgB,oBAAoB,CAClC,KAAK,GAAE,UAA0B,EACjC,MAAM,GAAE,WAA4B,GACnC,aAAa,CAyCf;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQlD"}
|
package/dist/cli/prompt.js
CHANGED
|
@@ -16,7 +16,7 @@ function requireTTY(prompt) {
|
|
|
16
16
|
}
|
|
17
17
|
/** readline disables terminal echo in raw mode; hidden output is discarded, including redraws. */
|
|
18
18
|
function createTerminalPrompt(input = process.stdin, output = process.stdout) {
|
|
19
|
-
const question = async (label, hidden) => {
|
|
19
|
+
const question = async (label, hidden, signal) => {
|
|
20
20
|
requireTTY(adapter);
|
|
21
21
|
const wasRaw = input.isRaw;
|
|
22
22
|
const muted = new node_stream_1.Writable({ write: (_chunk, _encoding, done) => done() });
|
|
@@ -32,6 +32,9 @@ function createTerminalPrompt(input = process.stdin, output = process.stdout) {
|
|
|
32
32
|
return await new Promise((resolve, reject) => {
|
|
33
33
|
rl.once('close', () => reject(new CliInputError('Input cancelled; no value saved.')));
|
|
34
34
|
rl.once('SIGINT', () => rl.close());
|
|
35
|
+
if (signal?.aborted)
|
|
36
|
+
rl.close();
|
|
37
|
+
signal?.addEventListener('abort', () => rl.close(), { once: true });
|
|
35
38
|
rl.question(hidden ? '' : `${label}: `, resolve);
|
|
36
39
|
});
|
|
37
40
|
}
|
|
@@ -46,7 +49,7 @@ function createTerminalPrompt(input = process.stdin, output = process.stdout) {
|
|
|
46
49
|
const adapter = {
|
|
47
50
|
stdinIsTTY: input.isTTY === true,
|
|
48
51
|
stdoutIsTTY: output.isTTY === true,
|
|
49
|
-
text: (label) => question(label, false),
|
|
52
|
+
text: (label, signal) => question(label, false, signal),
|
|
50
53
|
secret: (label) => question(label, true),
|
|
51
54
|
write: (line) => {
|
|
52
55
|
output.write(`${line}\n`);
|
package/dist/cli/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":";;;AAeA,gCAMC;AAGD,oDA4CC;AAED,oCAQC;AA9ED,iDAAgD;AAChD,6CAAuC;AAGvC,MAAa,aAAc,SAAQ,KAAK;CAAG;AAA3C,sCAA2C;AAW3C,SAAgB,UAAU,CAAC,MAAqB;IAC9C,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,IAAI,aAAa,CACrB,sFAAsF,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,SAAgB,oBAAoB,CAClC,QAAoB,OAAO,CAAC,KAAK,EACjC,SAAsB,OAAO,CAAC,MAAM;IAEpC,MAAM,QAAQ,GAAG,KAAK,EACpB,KAAa,EACb,MAAe,EACf,MAAoB,EACH,EAAE;QACnB,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,sBAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,EAAE,GAAG,IAAA,+BAAe,EAAC;YACzB,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YAC/B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;QACH,IAAI,CAAC;YACH,IAAI,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;YACvC,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnD,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC;gBACtF,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpC,IAAI,MAAM,EAAE,OAAO;oBAAE,EAAE,CAAC,KAAK,EAAE,CAAC;gBAChC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,GAAkB;QAC7B,UAAU,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI;QAChC,WAAW,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI;QAClC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;QACvD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;QACxC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,YAAY,CAAC,KAAa;IACxC,IACE,CAAC,KAAK,CAAC,IAAI,EAAE;QACb,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAChF,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,+CAA+C,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type SpawnSyncReturns } from 'node:child_process';
|
|
2
|
+
/**
|
|
3
|
+
* The oldest backend CLI versions a MAMA release was verified on. MAMA depends on their sandbox,
|
|
4
|
+
* hook, settings and permission behaviour, so an older CLI is refused; raise these only after
|
|
5
|
+
* verifying a newer one.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MINIMUM_BACKEND_VERSIONS: {
|
|
8
|
+
readonly claude: "2.1.299";
|
|
9
|
+
readonly codex: "0.160.1";
|
|
10
|
+
};
|
|
11
|
+
export type BackendName = keyof typeof MINIMUM_BACKEND_VERSIONS;
|
|
12
|
+
export type ProbeRun = (command: string, args: string[], env?: NodeJS.ProcessEnv) => SpawnSyncReturns<string>;
|
|
13
|
+
export declare function defaultProbeRun(command: string, args: string[], env?: NodeJS.ProcessEnv): SpawnSyncReturns<string>;
|
|
14
|
+
/** Compare dotted numeric versions; a missing part counts as 0. */
|
|
15
|
+
export declare function compareVersions(left: string, right: string): number;
|
|
16
|
+
export interface BackendProbe {
|
|
17
|
+
readonly version: string | null;
|
|
18
|
+
readonly minimum: string;
|
|
19
|
+
readonly versionOk: boolean;
|
|
20
|
+
readonly loggedIn: boolean;
|
|
21
|
+
/** Why the version or the login could not be read; never a credential. */
|
|
22
|
+
readonly problem: string | null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Read a backend CLI's version and whether it is signed in, without printing anything the CLI
|
|
26
|
+
* says about the account. `env` is the environment the daemon gives the backend, so a login that
|
|
27
|
+
* only this shell's variables provide does not count; Codex is asked about the managed home.
|
|
28
|
+
*/
|
|
29
|
+
export declare function probeBackend(backend: BackendName, executable: string, options?: {
|
|
30
|
+
codexHome?: string;
|
|
31
|
+
run?: ProbeRun;
|
|
32
|
+
env?: NodeJS.ProcessEnv;
|
|
33
|
+
}): BackendProbe;
|
|
34
|
+
//# sourceMappingURL=backend-probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-probe.d.ts","sourceRoot":"","sources":["../../../src/cli/runtime/backend-probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;CAG3B,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,wBAAwB,CAAC;AAEhE,MAAM,MAAM,QAAQ,GAAG,CACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,KACpB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE9B,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GACtB,gBAAgB,CAAC,MAAM,CAAC,CAE1B;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQnE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GAC5E,YAAY,CA6Cd"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MINIMUM_BACKEND_VERSIONS = void 0;
|
|
4
|
+
exports.defaultProbeRun = defaultProbeRun;
|
|
5
|
+
exports.compareVersions = compareVersions;
|
|
6
|
+
exports.probeBackend = probeBackend;
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
8
|
+
/**
|
|
9
|
+
* The oldest backend CLI versions a MAMA release was verified on. MAMA depends on their sandbox,
|
|
10
|
+
* hook, settings and permission behaviour, so an older CLI is refused; raise these only after
|
|
11
|
+
* verifying a newer one.
|
|
12
|
+
*/
|
|
13
|
+
exports.MINIMUM_BACKEND_VERSIONS = {
|
|
14
|
+
claude: '2.1.299',
|
|
15
|
+
codex: '0.160.1',
|
|
16
|
+
};
|
|
17
|
+
function defaultProbeRun(command, args, env) {
|
|
18
|
+
return (0, node_child_process_1.spawnSync)(command, args, { encoding: 'utf8', timeout: 20_000, env: env ?? process.env });
|
|
19
|
+
}
|
|
20
|
+
/** Compare dotted numeric versions; a missing part counts as 0. */
|
|
21
|
+
function compareVersions(left, right) {
|
|
22
|
+
const a = left.split('.').map((part) => Number.parseInt(part, 10) || 0);
|
|
23
|
+
const b = right.split('.').map((part) => Number.parseInt(part, 10) || 0);
|
|
24
|
+
for (let index = 0; index < Math.max(a.length, b.length); index += 1) {
|
|
25
|
+
const difference = (a[index] ?? 0) - (b[index] ?? 0);
|
|
26
|
+
if (difference !== 0)
|
|
27
|
+
return difference;
|
|
28
|
+
}
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Read a backend CLI's version and whether it is signed in, without printing anything the CLI
|
|
33
|
+
* says about the account. `env` is the environment the daemon gives the backend, so a login that
|
|
34
|
+
* only this shell's variables provide does not count; Codex is asked about the managed home.
|
|
35
|
+
*/
|
|
36
|
+
function probeBackend(backend, executable, options = {}) {
|
|
37
|
+
const run = options.run ?? defaultProbeRun;
|
|
38
|
+
const env = options.env ?? process.env;
|
|
39
|
+
const minimum = exports.MINIMUM_BACKEND_VERSIONS[backend];
|
|
40
|
+
const versionRun = run(executable, ['--version'], env);
|
|
41
|
+
const version = versionRun.error
|
|
42
|
+
? null
|
|
43
|
+
: (/(\d+\.\d+\.\d+)/.exec(`${versionRun.stdout ?? ''}`)?.[1] ?? null);
|
|
44
|
+
if (version === null) {
|
|
45
|
+
return {
|
|
46
|
+
version: null,
|
|
47
|
+
minimum,
|
|
48
|
+
versionOk: false,
|
|
49
|
+
loggedIn: false,
|
|
50
|
+
problem: `${backend} --version printed no version`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const versionOk = compareVersions(version, minimum) >= 0;
|
|
54
|
+
if (backend === 'claude') {
|
|
55
|
+
const status = run(executable, ['auth', 'status', '--json'], env);
|
|
56
|
+
let loggedIn = false;
|
|
57
|
+
try {
|
|
58
|
+
loggedIn = JSON.parse(`${status.stdout ?? ''}`).loggedIn === true;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return {
|
|
62
|
+
version,
|
|
63
|
+
minimum,
|
|
64
|
+
versionOk,
|
|
65
|
+
loggedIn: false,
|
|
66
|
+
problem: 'claude auth status did not answer in JSON',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { version, minimum, versionOk, loggedIn, problem: null };
|
|
70
|
+
}
|
|
71
|
+
const status = run(executable, ['login', 'status'], {
|
|
72
|
+
...env,
|
|
73
|
+
...(options.codexHome ? { CODEX_HOME: options.codexHome } : {}),
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
version,
|
|
77
|
+
minimum,
|
|
78
|
+
versionOk,
|
|
79
|
+
loggedIn: !status.error && status.status === 0,
|
|
80
|
+
problem: null,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=backend-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-probe.js","sourceRoot":"","sources":["../../../src/cli/runtime/backend-probe.ts"],"names":[],"mappings":"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"}
|