arc402-cli 0.9.19 → 0.10.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/README.md +41 -2
- package/dist/abis.d.ts +1 -0
- package/dist/abis.d.ts.map +1 -1
- package/dist/abis.js +45 -14
- package/dist/abis.js.map +1 -1
- package/dist/bundler.d.ts +1 -1
- package/dist/bundler.d.ts.map +1 -1
- package/dist/bundler.js +61 -27
- package/dist/bundler.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +9 -5
- package/dist/client.js.map +1 -1
- package/dist/coinbase-smart-wallet.js +4 -1
- package/dist/coinbase-smart-wallet.js.map +1 -1
- package/dist/commands/accept.js +28 -25
- package/dist/commands/accept.js.map +1 -1
- package/dist/commands/agent-handshake.js +18 -15
- package/dist/commands/agent-handshake.js.map +1 -1
- package/dist/commands/agent.js +104 -98
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/agreements.js +98 -62
- package/dist/commands/agreements.js.map +1 -1
- package/dist/commands/arbitrator.js +81 -45
- package/dist/commands/arbitrator.js.map +1 -1
- package/dist/commands/arena-handshake.d.ts.map +1 -1
- package/dist/commands/arena-handshake.js +35 -53
- package/dist/commands/arena-handshake.js.map +1 -1
- package/dist/commands/arena.js +18 -12
- package/dist/commands/arena.js.map +1 -1
- package/dist/commands/backup.js +36 -30
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/cancel.js +18 -15
- package/dist/commands/cancel.js.map +1 -1
- package/dist/commands/channel.js +81 -45
- package/dist/commands/channel.js.map +1 -1
- package/dist/commands/coldstart.js +34 -31
- package/dist/commands/coldstart.js.map +1 -1
- package/dist/commands/compute.d.ts +14 -0
- package/dist/commands/compute.d.ts.map +1 -0
- package/dist/commands/compute.js +466 -0
- package/dist/commands/compute.js.map +1 -0
- package/dist/commands/config.js +30 -24
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/contract-interaction.js +15 -12
- package/dist/commands/contract-interaction.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +135 -98
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/deliver.js +76 -37
- package/dist/commands/deliver.js.map +1 -1
- package/dist/commands/discover.js +27 -24
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/dispute.js +110 -104
- package/dist/commands/dispute.js.map +1 -1
- package/dist/commands/doctor.js +55 -16
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/endpoint.js +95 -56
- package/dist/commands/endpoint.js.map +1 -1
- package/dist/commands/feed.js +18 -11
- package/dist/commands/feed.js.map +1 -1
- package/dist/commands/hire.js +40 -37
- package/dist/commands/hire.js.map +1 -1
- package/dist/commands/migrate.js +33 -30
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/negotiate.d.ts.map +1 -1
- package/dist/commands/negotiate.js +36 -34
- package/dist/commands/negotiate.js.map +1 -1
- package/dist/commands/openshell.js +104 -68
- package/dist/commands/openshell.js.map +1 -1
- package/dist/commands/owner.js +20 -17
- package/dist/commands/owner.js.map +1 -1
- package/dist/commands/policy.js +43 -41
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/relay.d.ts.map +1 -1
- package/dist/commands/relay.js +51 -18
- package/dist/commands/relay.js.map +1 -1
- package/dist/commands/remediate.js +23 -20
- package/dist/commands/remediate.js.map +1 -1
- package/dist/commands/reputation.js +27 -25
- package/dist/commands/reputation.js.map +1 -1
- package/dist/commands/setup.js +104 -65
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/trust.js +20 -17
- package/dist/commands/trust.js.map +1 -1
- package/dist/commands/verify.js +21 -18
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/wallet.d.ts.map +1 -1
- package/dist/commands/wallet.js +645 -679
- package/dist/commands/wallet.js.map +1 -1
- package/dist/commands/watch.js +36 -33
- package/dist/commands/watch.js.map +1 -1
- package/dist/commands/watchtower.js +73 -37
- package/dist/commands/watchtower.js.map +1 -1
- package/dist/commands/workroom.d.ts.map +1 -1
- package/dist/commands/workroom.js +282 -143
- package/dist/commands/workroom.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +71 -22
- package/dist/config.js.map +1 -1
- package/dist/daemon/compute-metering.d.ts +61 -0
- package/dist/daemon/compute-metering.d.ts.map +1 -0
- package/dist/daemon/compute-metering.js +299 -0
- package/dist/daemon/compute-metering.js.map +1 -0
- package/dist/daemon/compute-session.d.ts +100 -0
- package/dist/daemon/compute-session.d.ts.map +1 -0
- package/dist/daemon/compute-session.js +231 -0
- package/dist/daemon/compute-session.js.map +1 -0
- package/dist/daemon/config.d.ts +19 -1
- package/dist/daemon/config.d.ts.map +1 -1
- package/dist/daemon/config.js +90 -16
- package/dist/daemon/config.js.map +1 -1
- package/dist/daemon/credentials.d.ts +24 -0
- package/dist/daemon/credentials.d.ts.map +1 -0
- package/dist/daemon/credentials.js +80 -0
- package/dist/daemon/credentials.js.map +1 -0
- package/dist/daemon/delivery-client.d.ts +35 -0
- package/dist/daemon/delivery-client.d.ts.map +1 -0
- package/dist/daemon/delivery-client.js +231 -0
- package/dist/daemon/delivery-client.js.map +1 -0
- package/dist/daemon/file-delivery.d.ts +98 -0
- package/dist/daemon/file-delivery.d.ts.map +1 -0
- package/dist/daemon/file-delivery.js +461 -0
- package/dist/daemon/file-delivery.js.map +1 -0
- package/dist/daemon/hire-listener.d.ts +3 -3
- package/dist/daemon/hire-listener.d.ts.map +1 -1
- package/dist/daemon/hire-listener.js +47 -13
- package/dist/daemon/hire-listener.js.map +1 -1
- package/dist/daemon/index.d.ts +2 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +526 -53
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/job-lifecycle.d.ts +1 -1
- package/dist/daemon/job-lifecycle.d.ts.map +1 -1
- package/dist/daemon/job-lifecycle.js +51 -11
- package/dist/daemon/job-lifecycle.js.map +1 -1
- package/dist/daemon/notify.d.ts +1 -1
- package/dist/daemon/notify.d.ts.map +1 -1
- package/dist/daemon/notify.js +53 -19
- package/dist/daemon/notify.js.map +1 -1
- package/dist/daemon/token-metering.js +47 -8
- package/dist/daemon/token-metering.js.map +1 -1
- package/dist/daemon/userops.d.ts +2 -2
- package/dist/daemon/userops.d.ts.map +1 -1
- package/dist/daemon/userops.js +27 -23
- package/dist/daemon/userops.js.map +1 -1
- package/dist/daemon/wallet-monitor.d.ts +1 -1
- package/dist/daemon/wallet-monitor.d.ts.map +1 -1
- package/dist/daemon/wallet-monitor.js +12 -8
- package/dist/daemon/wallet-monitor.js.map +1 -1
- package/dist/daemon/worker-executor.d.ts +71 -0
- package/dist/daemon/worker-executor.d.ts.map +1 -0
- package/dist/daemon/worker-executor.js +382 -0
- package/dist/daemon/worker-executor.js.map +1 -0
- package/dist/drain-v4.js +64 -26
- package/dist/drain-v4.js.map +1 -1
- package/dist/endpoint-config.js +63 -20
- package/dist/endpoint-config.js.map +1 -1
- package/dist/endpoint-notify.d.ts.map +1 -1
- package/dist/endpoint-notify.js +49 -15
- package/dist/endpoint-notify.js.map +1 -1
- package/dist/index.js +50 -18
- package/dist/index.js.map +1 -1
- package/dist/openshell-runtime.d.ts.map +1 -1
- package/dist/openshell-runtime.js +82 -38
- package/dist/openshell-runtime.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +85 -78
- package/dist/program.js.map +1 -1
- package/dist/repl.js +31 -25
- package/dist/repl.js.map +1 -1
- package/dist/signing.js +6 -3
- package/dist/signing.js.map +1 -1
- package/dist/telegram-notify.js +40 -3
- package/dist/telegram-notify.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +56 -89
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Footer.js +7 -4
- package/dist/tui/Footer.js.map +1 -1
- package/dist/tui/Header.d.ts +1 -1
- package/dist/tui/Header.d.ts.map +1 -1
- package/dist/tui/Header.js +14 -9
- package/dist/tui/Header.js.map +1 -1
- package/dist/tui/InputLine.d.ts +2 -1
- package/dist/tui/InputLine.d.ts.map +1 -1
- package/dist/tui/InputLine.js +47 -97
- package/dist/tui/InputLine.js.map +1 -1
- package/dist/tui/Viewport.d.ts +1 -2
- package/dist/tui/Viewport.d.ts.map +1 -1
- package/dist/tui/Viewport.js +26 -6
- package/dist/tui/Viewport.js.map +1 -1
- package/dist/tui/WalletConnectPairing.js +19 -16
- package/dist/tui/WalletConnectPairing.js.map +1 -1
- package/dist/tui/components/Button.js +9 -6
- package/dist/tui/components/Button.js.map +1 -1
- package/dist/tui/components/CeremonyView.js +8 -5
- package/dist/tui/components/CeremonyView.js.map +1 -1
- package/dist/tui/components/CompletionDropdown.js +9 -6
- package/dist/tui/components/CompletionDropdown.js.map +1 -1
- package/dist/tui/components/ConfirmPrompt.js +8 -5
- package/dist/tui/components/ConfirmPrompt.js.map +1 -1
- package/dist/tui/components/CustomTextInput.js +14 -11
- package/dist/tui/components/CustomTextInput.js.map +1 -1
- package/dist/tui/components/InteractiveTable.js +12 -9
- package/dist/tui/components/InteractiveTable.js.map +1 -1
- package/dist/tui/components/StepSpinner.js +13 -10
- package/dist/tui/components/StepSpinner.js.map +1 -1
- package/dist/tui/components/Toast.js +12 -8
- package/dist/tui/components/Toast.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +21 -28
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/useChat.js +19 -13
- package/dist/tui/useChat.js.map +1 -1
- package/dist/tui/useCommand.d.ts +2 -3
- package/dist/tui/useCommand.d.ts.map +1 -1
- package/dist/tui/useCommand.js +24 -100
- package/dist/tui/useCommand.js.map +1 -1
- package/dist/tui/useNotifications.js +8 -5
- package/dist/tui/useNotifications.js.map +1 -1
- package/dist/tui/useScroll.d.ts.map +1 -1
- package/dist/tui/useScroll.js +12 -15
- package/dist/tui/useScroll.js.map +1 -1
- package/dist/ui/banner.d.ts +0 -12
- package/dist/ui/banner.d.ts.map +1 -1
- package/dist/ui/banner.js +19 -35
- package/dist/ui/banner.js.map +1 -1
- package/dist/ui/colors.js +19 -13
- package/dist/ui/colors.js.map +1 -1
- package/dist/ui/format.js +14 -6
- package/dist/ui/format.js.map +1 -1
- package/dist/ui/qr-render.js +11 -4
- package/dist/ui/qr-render.js.map +1 -1
- package/dist/ui/rpc-fallback.js +11 -6
- package/dist/ui/rpc-fallback.js.map +1 -1
- package/dist/ui/spinner.js +12 -6
- package/dist/ui/spinner.js.map +1 -1
- package/dist/ui/tree.js +6 -3
- package/dist/ui/tree.js.map +1 -1
- package/dist/utils/format.js +41 -27
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/hash.js +42 -4
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/time.js +6 -2
- package/dist/utils/time.js.map +1 -1
- package/dist/wallet-router.d.ts +1 -1
- package/dist/wallet-router.d.ts.map +1 -1
- package/dist/wallet-router.js +19 -12
- package/dist/wallet-router.js.map +1 -1
- package/dist/walletconnect-session.d.ts +1 -1
- package/dist/walletconnect-session.d.ts.map +1 -1
- package/dist/walletconnect-session.js +11 -6
- package/dist/walletconnect-session.js.map +1 -1
- package/dist/walletconnect.d.ts +5 -6
- package/dist/walletconnect.d.ts.map +1 -1
- package/dist/walletconnect.js +35 -32
- package/dist/walletconnect.js.map +1 -1
- package/package.json +11 -10
- package/INK6-UX-SPEC.md +0 -446
- package/MIGRATION-SPEC.md +0 -108
- package/TUI-SPEC.md +0 -214
- package/scripts/authorize-machine-key.ts +0 -43
- package/scripts/drain-wallet.ts +0 -149
- package/scripts/execute-spend-only.ts +0 -81
- package/scripts/register-agent-userop.ts +0 -186
- package/src/abis.ts +0 -187
- package/src/bundler.ts +0 -235
- package/src/client.ts +0 -36
- package/src/coinbase-smart-wallet.ts +0 -51
- package/src/commands/accept.ts +0 -64
- package/src/commands/agent-handshake.ts +0 -72
- package/src/commands/agent.ts +0 -691
- package/src/commands/agreements.ts +0 -350
- package/src/commands/arbitrator.ts +0 -180
- package/src/commands/arena-handshake.ts +0 -274
- package/src/commands/arena.ts +0 -122
- package/src/commands/backup.ts +0 -117
- package/src/commands/cancel.ts +0 -35
- package/src/commands/channel.ts +0 -218
- package/src/commands/coldstart.ts +0 -165
- package/src/commands/config.ts +0 -68
- package/src/commands/contract-interaction.ts +0 -166
- package/src/commands/daemon.ts +0 -1054
- package/src/commands/deliver.ts +0 -148
- package/src/commands/discover.ts +0 -350
- package/src/commands/dispute.ts +0 -375
- package/src/commands/doctor.ts +0 -172
- package/src/commands/endpoint.ts +0 -620
- package/src/commands/feed.ts +0 -229
- package/src/commands/hire.ts +0 -245
- package/src/commands/migrate.ts +0 -177
- package/src/commands/negotiate.ts +0 -272
- package/src/commands/openshell.ts +0 -1055
- package/src/commands/owner.ts +0 -35
- package/src/commands/policy.ts +0 -263
- package/src/commands/relay.ts +0 -277
- package/src/commands/remediate.ts +0 -24
- package/src/commands/reputation.ts +0 -79
- package/src/commands/setup.ts +0 -343
- package/src/commands/trust.ts +0 -27
- package/src/commands/verify.ts +0 -91
- package/src/commands/wallet.ts +0 -3548
- package/src/commands/watch.ts +0 -220
- package/src/commands/watchtower.ts +0 -248
- package/src/commands/workroom.ts +0 -963
- package/src/config.ts +0 -220
- package/src/daemon/config.ts +0 -344
- package/src/daemon/hire-listener.ts +0 -226
- package/src/daemon/index.ts +0 -1089
- package/src/daemon/job-lifecycle.ts +0 -215
- package/src/daemon/notify.ts +0 -297
- package/src/daemon/token-metering.ts +0 -183
- package/src/daemon/userops.ts +0 -119
- package/src/daemon/wallet-monitor.ts +0 -90
- package/src/drain-v4.ts +0 -159
- package/src/endpoint-config.ts +0 -83
- package/src/endpoint-notify.ts +0 -134
- package/src/index.ts +0 -74
- package/src/openshell-runtime.ts +0 -281
- package/src/program.ts +0 -88
- package/src/repl.ts +0 -178
- package/src/signing.ts +0 -28
- package/src/telegram-notify.ts +0 -88
- package/src/tui/App.tsx +0 -263
- package/src/tui/Footer.tsx +0 -18
- package/src/tui/Header.tsx +0 -45
- package/src/tui/InputLine.tsx +0 -243
- package/src/tui/Viewport.tsx +0 -51
- package/src/tui/WalletConnectPairing.tsx +0 -114
- package/src/tui/components/Button.tsx +0 -38
- package/src/tui/components/CeremonyView.tsx +0 -39
- package/src/tui/components/CompletionDropdown.tsx +0 -56
- package/src/tui/components/ConfirmPrompt.tsx +0 -36
- package/src/tui/components/CustomTextInput.tsx +0 -132
- package/src/tui/components/InteractiveTable.tsx +0 -106
- package/src/tui/components/StepSpinner.tsx +0 -84
- package/src/tui/components/Toast.tsx +0 -59
- package/src/tui/index.tsx +0 -90
- package/src/tui/useChat.ts +0 -103
- package/src/tui/useCommand.ts +0 -238
- package/src/tui/useNotifications.ts +0 -28
- package/src/tui/useScroll.ts +0 -69
- package/src/ui/banner.ts +0 -78
- package/src/ui/colors.ts +0 -30
- package/src/ui/format.ts +0 -78
- package/src/ui/qr-render.ts +0 -92
- package/src/ui/rpc-fallback.ts +0 -59
- package/src/ui/spinner.ts +0 -56
- package/src/ui/tree.ts +0 -16
- package/src/utils/format.ts +0 -48
- package/src/utils/hash.ts +0 -5
- package/src/utils/time.ts +0 -15
- package/src/wallet-router.ts +0 -178
- package/src/walletconnect-session.ts +0 -27
- package/src/walletconnect.ts +0 -309
- package/test/time.test.js +0 -11
- package/tsconfig.json +0 -33
package/dist/endpoint-config.js
CHANGED
|
@@ -1,37 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DEFAULT_TUNNEL_MODE = exports.DEFAULT_LOCAL_INGRESS_TARGET = exports.ENDPOINT_CONFIG_PATH = exports.ARC402_DIR = void 0;
|
|
37
|
+
exports.endpointConfigExists = endpointConfigExists;
|
|
38
|
+
exports.loadEndpointConfig = loadEndpointConfig;
|
|
39
|
+
exports.saveEndpointConfig = saveEndpointConfig;
|
|
40
|
+
exports.normalizeAgentName = normalizeAgentName;
|
|
41
|
+
exports.buildHostname = buildHostname;
|
|
42
|
+
exports.buildPublicUrl = buildPublicUrl;
|
|
43
|
+
exports.buildEndpointConfig = buildEndpointConfig;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const os = __importStar(require("os"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
exports.ARC402_DIR = path.join(os.homedir(), ".arc402");
|
|
48
|
+
exports.ENDPOINT_CONFIG_PATH = path.join(exports.ARC402_DIR, "endpoint.json");
|
|
49
|
+
exports.DEFAULT_LOCAL_INGRESS_TARGET = "http://127.0.0.1:4402";
|
|
50
|
+
exports.DEFAULT_TUNNEL_MODE = "host-cloudflared";
|
|
51
|
+
function endpointConfigExists() {
|
|
52
|
+
return fs.existsSync(exports.ENDPOINT_CONFIG_PATH);
|
|
10
53
|
}
|
|
11
|
-
|
|
54
|
+
function loadEndpointConfig() {
|
|
12
55
|
if (!endpointConfigExists())
|
|
13
56
|
return null;
|
|
14
57
|
try {
|
|
15
|
-
return JSON.parse(fs.readFileSync(ENDPOINT_CONFIG_PATH, "utf-8"));
|
|
58
|
+
return JSON.parse(fs.readFileSync(exports.ENDPOINT_CONFIG_PATH, "utf-8"));
|
|
16
59
|
}
|
|
17
60
|
catch {
|
|
18
61
|
return null;
|
|
19
62
|
}
|
|
20
63
|
}
|
|
21
|
-
|
|
22
|
-
fs.mkdirSync(ARC402_DIR, { recursive: true, mode: 0o700 });
|
|
23
|
-
fs.writeFileSync(ENDPOINT_CONFIG_PATH, JSON.stringify(config, null, 2) + "\n", { mode: 0o600 });
|
|
64
|
+
function saveEndpointConfig(config) {
|
|
65
|
+
fs.mkdirSync(exports.ARC402_DIR, { recursive: true, mode: 0o700 });
|
|
66
|
+
fs.writeFileSync(exports.ENDPOINT_CONFIG_PATH, JSON.stringify(config, null, 2) + "\n", { mode: 0o600 });
|
|
24
67
|
}
|
|
25
|
-
|
|
68
|
+
function normalizeAgentName(value) {
|
|
26
69
|
return value.trim().toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
27
70
|
}
|
|
28
|
-
|
|
71
|
+
function buildHostname(agentName) {
|
|
29
72
|
return `${normalizeAgentName(agentName)}.arc402.xyz`;
|
|
30
73
|
}
|
|
31
|
-
|
|
74
|
+
function buildPublicUrl(hostname) {
|
|
32
75
|
return `https://${hostname}`;
|
|
33
76
|
}
|
|
34
|
-
|
|
77
|
+
function buildEndpointConfig(input) {
|
|
35
78
|
const normalizedName = normalizeAgentName(input.agentName);
|
|
36
79
|
const hostname = buildHostname(normalizedName);
|
|
37
80
|
const now = new Date().toISOString();
|
|
@@ -40,8 +83,8 @@ export function buildEndpointConfig(input) {
|
|
|
40
83
|
agentName: normalizedName,
|
|
41
84
|
hostname,
|
|
42
85
|
publicUrl: buildPublicUrl(hostname),
|
|
43
|
-
localIngressTarget: input.localIngressTarget ?? input.existing?.localIngressTarget ?? DEFAULT_LOCAL_INGRESS_TARGET,
|
|
44
|
-
tunnelMode: input.tunnelMode ?? input.existing?.tunnelMode ?? DEFAULT_TUNNEL_MODE,
|
|
86
|
+
localIngressTarget: input.localIngressTarget ?? input.existing?.localIngressTarget ?? exports.DEFAULT_LOCAL_INGRESS_TARGET,
|
|
87
|
+
tunnelMode: input.tunnelMode ?? input.existing?.tunnelMode ?? exports.DEFAULT_TUNNEL_MODE,
|
|
45
88
|
tunnelTarget: input.tunnelTarget ?? input.existing?.tunnelTarget,
|
|
46
89
|
walletAddress: input.walletAddress ?? input.existing?.walletAddress,
|
|
47
90
|
subdomainApi: input.subdomainApi ?? input.existing?.subdomainApi,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-config.js","sourceRoot":"","sources":["../src/endpoint-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"endpoint-config.js","sourceRoot":"","sources":["../src/endpoint-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-notify.d.ts","sourceRoot":"","sources":["../src/endpoint-notify.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,eAAO,MAAM,wBAAwB,+CAA+C,CAAC;AA8BrF;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BzE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,eAAe,SAA2B,GACzC,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"endpoint-notify.d.ts","sourceRoot":"","sources":["../src/endpoint-notify.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,eAAO,MAAM,wBAAwB,+CAA+C,CAAC;AA8BrF;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BzE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,eAAe,SAA2B,GACzC,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
|
package/dist/endpoint-notify.js
CHANGED
|
@@ -1,12 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DEFAULT_REGISTRY_ADDRESS = void 0;
|
|
37
|
+
exports.validateEndpointUrl = validateEndpointUrl;
|
|
38
|
+
exports.resolveAgentEndpoint = resolveAgentEndpoint;
|
|
39
|
+
exports.notifyAgent = notifyAgent;
|
|
1
40
|
/**
|
|
2
41
|
* Shared endpoint-notify helper for CLI commands.
|
|
3
42
|
* Resolves an agent's registered HTTP endpoint from AgentRegistry
|
|
4
43
|
* and POSTs lifecycle events after onchain transactions.
|
|
5
44
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
45
|
+
const ethers_1 = require("ethers");
|
|
46
|
+
const abis_1 = require("./abis");
|
|
47
|
+
const dns = __importStar(require("dns/promises"));
|
|
48
|
+
exports.DEFAULT_REGISTRY_ADDRESS = "0xD5c2851B00090c92Ba7F4723FB548bb30C9B6865";
|
|
10
49
|
// ─── SSRF protection ──────────────────────────────────────────────────────────
|
|
11
50
|
const RFC1918_RANGES = [
|
|
12
51
|
// 10.0.0.0/8
|
|
@@ -38,7 +77,7 @@ function isPrivateIp(ip) {
|
|
|
38
77
|
* Allows HTTPS (any host) and HTTP only for localhost/127.0.0.1.
|
|
39
78
|
* Blocks RFC 1918, link-local, loopback non-localhost, and AWS metadata IPs.
|
|
40
79
|
*/
|
|
41
|
-
|
|
80
|
+
async function validateEndpointUrl(endpoint) {
|
|
42
81
|
let parsed;
|
|
43
82
|
try {
|
|
44
83
|
parsed = new URL(endpoint);
|
|
@@ -72,15 +111,10 @@ export async function validateEndpointUrl(endpoint) {
|
|
|
72
111
|
* Reads an agent's public HTTP endpoint from AgentRegistry.
|
|
73
112
|
* Returns empty string if not registered or no endpoint.
|
|
74
113
|
*/
|
|
75
|
-
|
|
76
|
-
const registry = new ethers.Contract(registryAddress, AGENT_REGISTRY_ABI, provider);
|
|
114
|
+
async function resolveAgentEndpoint(address, provider, registryAddress = exports.DEFAULT_REGISTRY_ADDRESS) {
|
|
115
|
+
const registry = new ethers_1.ethers.Contract(registryAddress, abis_1.AGENT_REGISTRY_ABI, provider);
|
|
77
116
|
const agentData = await registry.getAgent(address);
|
|
78
|
-
|
|
79
|
-
// Normalize: prepend https:// if no protocol specified
|
|
80
|
-
if (endpoint && !endpoint.startsWith("http://") && !endpoint.startsWith("https://")) {
|
|
81
|
-
endpoint = "https://" + endpoint;
|
|
82
|
-
}
|
|
83
|
-
return endpoint;
|
|
117
|
+
return agentData.endpoint ?? "";
|
|
84
118
|
}
|
|
85
119
|
/**
|
|
86
120
|
* POSTs JSON payload to {endpoint}{path}. Returns true on success.
|
|
@@ -88,7 +122,7 @@ export async function resolveAgentEndpoint(address, provider, registryAddress =
|
|
|
88
122
|
* Validates endpoint URL for SSRF before connecting.
|
|
89
123
|
* If signingKey is provided, signs the payload and adds X-ARC402-Signature / X-ARC402-Signer headers.
|
|
90
124
|
*/
|
|
91
|
-
|
|
125
|
+
async function notifyAgent(endpoint, path, payload, signingKey) {
|
|
92
126
|
if (!endpoint)
|
|
93
127
|
return false;
|
|
94
128
|
try {
|
|
@@ -102,7 +136,7 @@ export async function notifyAgent(endpoint, path, payload, signingKey) {
|
|
|
102
136
|
const body = JSON.stringify(payload);
|
|
103
137
|
const headers = { "Content-Type": "application/json" };
|
|
104
138
|
if (signingKey) {
|
|
105
|
-
const wallet = new ethers.Wallet(signingKey);
|
|
139
|
+
const wallet = new ethers_1.ethers.Wallet(signingKey);
|
|
106
140
|
const signature = await wallet.signMessage(body);
|
|
107
141
|
headers["X-ARC402-Signature"] = signature;
|
|
108
142
|
headers["X-ARC402-Signer"] = wallet.address;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-notify.js","sourceRoot":"","sources":["../src/endpoint-notify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"endpoint-notify.js","sourceRoot":"","sources":["../src/endpoint-notify.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,50 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const program_1 = require("./program");
|
|
38
|
+
const repl_1 = require("./repl");
|
|
39
|
+
const config_1 = require("./config");
|
|
6
40
|
// ── Upgrade safety check ────────────────────────────────────────────────────
|
|
7
|
-
|
|
8
|
-
const currentVersion =
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
42
|
+
const currentVersion = require("../package.json").version;
|
|
9
43
|
function checkUpgrade() {
|
|
10
|
-
if (!configExists())
|
|
44
|
+
if (!(0, config_1.configExists)())
|
|
11
45
|
return;
|
|
12
|
-
if (process.env.ARC402_CHILD)
|
|
13
|
-
return; // suppress when spawned as TUI child process
|
|
14
46
|
try {
|
|
15
|
-
const config = loadConfig();
|
|
47
|
+
const config = (0, config_1.loadConfig)();
|
|
16
48
|
const prev = config.lastCliVersion;
|
|
17
49
|
if (prev && prev !== currentVersion) {
|
|
18
50
|
// Compare semver loosely — just print if different
|
|
@@ -20,7 +52,7 @@ function checkUpgrade() {
|
|
|
20
52
|
}
|
|
21
53
|
if (config.lastCliVersion !== currentVersion) {
|
|
22
54
|
// Never overwrite existing fields — only update lastCliVersion
|
|
23
|
-
saveConfig({ ...config, lastCliVersion: currentVersion });
|
|
55
|
+
(0, config_1.saveConfig)({ ...config, lastCliVersion: currentVersion });
|
|
24
56
|
}
|
|
25
57
|
}
|
|
26
58
|
catch {
|
|
@@ -31,7 +63,7 @@ const printMode = process.argv.includes("--print");
|
|
|
31
63
|
// Detect if a subcommand was provided (any arg after the binary that doesn't start with -)
|
|
32
64
|
const knownSubcommands = (() => {
|
|
33
65
|
try {
|
|
34
|
-
const prog = createProgram();
|
|
66
|
+
const prog = (0, program_1.createProgram)();
|
|
35
67
|
return new Set(prog.commands.map((cmd) => cmd.name()));
|
|
36
68
|
}
|
|
37
69
|
catch {
|
|
@@ -48,30 +80,30 @@ if (printMode) {
|
|
|
48
80
|
process.env["FORCE_COLOR"] = "0";
|
|
49
81
|
process.env["ARC402_PRINT"] = "1";
|
|
50
82
|
checkUpgrade();
|
|
51
|
-
const program = createProgram();
|
|
83
|
+
const program = (0, program_1.createProgram)();
|
|
52
84
|
void program.parseAsync(process.argv).then(() => process.exit(0)).catch((e) => {
|
|
53
85
|
console.error(e instanceof Error ? e.message : String(e));
|
|
54
86
|
process.exit(1);
|
|
55
87
|
});
|
|
56
88
|
}
|
|
57
|
-
else if (process.stdout.isTTY && !hasSubcommand && process.argv.length <= 2
|
|
89
|
+
else if (process.stdout.isTTY && !hasSubcommand && process.argv.length <= 2) {
|
|
58
90
|
// TTY with no subcommand — launch Ink TUI
|
|
59
91
|
checkUpgrade();
|
|
60
|
-
void
|
|
92
|
+
void Promise.resolve().then(() => __importStar(require("./tui/index"))).then(({ launchTUI }) => launchTUI()).catch((e) => {
|
|
61
93
|
console.error("TUI failed to start:", e instanceof Error ? e.message : String(e));
|
|
62
94
|
// Fallback to REPL
|
|
63
|
-
void startREPL();
|
|
95
|
+
void (0, repl_1.startREPL)();
|
|
64
96
|
});
|
|
65
97
|
}
|
|
66
98
|
else if (process.argv.length <= 2) {
|
|
67
99
|
// No subcommand, not TTY — enter basic REPL fallback
|
|
68
100
|
checkUpgrade();
|
|
69
|
-
void startREPL();
|
|
101
|
+
void (0, repl_1.startREPL)();
|
|
70
102
|
}
|
|
71
103
|
else {
|
|
72
104
|
// One-shot mode — arc402 wallet deploy still works as usual
|
|
73
105
|
checkUpgrade();
|
|
74
|
-
const program = createProgram();
|
|
106
|
+
const program = (0, program_1.createProgram)();
|
|
75
107
|
program.parse(process.argv);
|
|
76
108
|
}
|
|
77
109
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openshell-runtime.d.ts","sourceRoot":"","sources":["../src/openshell-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openshell-runtime.d.ts","sourceRoot":"","sources":["../src/openshell-runtime.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,UAAU,QAAqC,CAAC;AAC7D,eAAO,MAAM,cAAc,QAA0C,CAAC;AACtE,eAAO,MAAM,qBAAqB,QAA6C,CAAC;AAChF,eAAO,MAAM,yBAAyB,QAA6D,CAAC;AACpG,eAAO,MAAM,2BAA2B,wCAAwC,CAAC;AAEjF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACjE,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACvE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAaxE;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,IAAI,kBAAkB,CAiBvD;AAED,wBAAgB,uBAAuB,IAAI;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAeA;AAED,wBAAgB,2BAA2B,CAAC,iBAAiB,UAAQ,GAAG,MAAM,CAkB7E;AAED,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CAuB5D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAmBlE;AAcD,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiC9E;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAYjG;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAwBvG;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,UAAU,SAA8B,GACvC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA8B7C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD"}
|
|
@@ -1,19 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DEFAULT_RUNTIME_REMOTE_ROOT = exports.OPENSHELL_RUNTIME_TARBALL = exports.OPENSHELL_RUNTIME_DIR = exports.OPENSHELL_TOML = exports.ARC402_DIR = void 0;
|
|
37
|
+
exports.runCmd = runCmd;
|
|
38
|
+
exports.detectDockerAccess = detectDockerAccess;
|
|
39
|
+
exports.resolveOpenShellSecrets = resolveOpenShellSecrets;
|
|
40
|
+
exports.buildOpenShellSecretExports = buildOpenShellSecretExports;
|
|
41
|
+
exports.readOpenShellConfig = readOpenShellConfig;
|
|
42
|
+
exports.writeOpenShellConfig = writeOpenShellConfig;
|
|
43
|
+
exports.buildRuntimeTarball = buildRuntimeTarball;
|
|
44
|
+
exports.buildOpenShellSshConfig = buildOpenShellSshConfig;
|
|
45
|
+
exports.provisionFileToSandbox = provisionFileToSandbox;
|
|
46
|
+
exports.provisionRuntimeToSandbox = provisionRuntimeToSandbox;
|
|
47
|
+
exports.shellEscape = shellEscape;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const os = __importStar(require("os"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const child_process_1 = require("child_process");
|
|
52
|
+
const smol_toml_1 = require("smol-toml");
|
|
53
|
+
const config_1 = require("./config");
|
|
54
|
+
exports.ARC402_DIR = path.join(os.homedir(), ".arc402");
|
|
55
|
+
exports.OPENSHELL_TOML = path.join(exports.ARC402_DIR, "openshell.toml");
|
|
56
|
+
exports.OPENSHELL_RUNTIME_DIR = path.join(exports.ARC402_DIR, "openshell-runtime");
|
|
57
|
+
exports.OPENSHELL_RUNTIME_TARBALL = path.join(exports.OPENSHELL_RUNTIME_DIR, "arc402-cli-runtime.tgz");
|
|
58
|
+
exports.DEFAULT_RUNTIME_REMOTE_ROOT = "/sandbox/.arc402/runtime/arc402-cli";
|
|
59
|
+
function runCmd(cmd, args, opts = {}) {
|
|
60
|
+
const result = (0, child_process_1.spawnSync)(cmd, args, {
|
|
17
61
|
encoding: "utf-8",
|
|
18
62
|
env: { ...process.env, ...(opts.env ?? {}) },
|
|
19
63
|
input: opts.input,
|
|
@@ -26,7 +70,7 @@ export function runCmd(cmd, args, opts = {}) {
|
|
|
26
70
|
status: result.status,
|
|
27
71
|
};
|
|
28
72
|
}
|
|
29
|
-
|
|
73
|
+
function detectDockerAccess() {
|
|
30
74
|
const result = runCmd("docker", ["info", "--format", "{{.ServerVersion}}"], { timeout: 20000 });
|
|
31
75
|
if (result.ok) {
|
|
32
76
|
return { ok: true, detail: `running (${result.stdout || "version unknown"})` };
|
|
@@ -43,12 +87,12 @@ export function detectDockerAccess() {
|
|
|
43
87
|
}
|
|
44
88
|
return { ok: false, detail };
|
|
45
89
|
}
|
|
46
|
-
|
|
90
|
+
function resolveOpenShellSecrets() {
|
|
47
91
|
let machineKey = process.env["ARC402_MACHINE_KEY"];
|
|
48
92
|
let telegramBotToken = process.env["TELEGRAM_BOT_TOKEN"];
|
|
49
93
|
let telegramChatId = process.env["TELEGRAM_CHAT_ID"];
|
|
50
94
|
try {
|
|
51
|
-
const config = loadConfig();
|
|
95
|
+
const config = (0, config_1.loadConfig)();
|
|
52
96
|
if (!machineKey && config.privateKey)
|
|
53
97
|
machineKey = config.privateKey;
|
|
54
98
|
if (!telegramBotToken && config.telegramBotToken)
|
|
@@ -61,7 +105,7 @@ export function resolveOpenShellSecrets() {
|
|
|
61
105
|
}
|
|
62
106
|
return { machineKey, telegramBotToken, telegramChatId };
|
|
63
107
|
}
|
|
64
|
-
|
|
108
|
+
function buildOpenShellSecretExports(requireMachineKey = false) {
|
|
65
109
|
const secrets = resolveOpenShellSecrets();
|
|
66
110
|
const exports = [];
|
|
67
111
|
if (secrets.machineKey) {
|
|
@@ -78,12 +122,12 @@ export function buildOpenShellSecretExports(requireMachineKey = false) {
|
|
|
78
122
|
}
|
|
79
123
|
return exports.join(" && ");
|
|
80
124
|
}
|
|
81
|
-
|
|
82
|
-
if (!fs.existsSync(OPENSHELL_TOML))
|
|
125
|
+
function readOpenShellConfig() {
|
|
126
|
+
if (!fs.existsSync(exports.OPENSHELL_TOML))
|
|
83
127
|
return null;
|
|
84
128
|
try {
|
|
85
|
-
const raw = fs.readFileSync(OPENSHELL_TOML, "utf-8");
|
|
86
|
-
const parsed =
|
|
129
|
+
const raw = fs.readFileSync(exports.OPENSHELL_TOML, "utf-8");
|
|
130
|
+
const parsed = (0, smol_toml_1.parse)(raw);
|
|
87
131
|
const sb = parsed.sandbox;
|
|
88
132
|
if (!sb || typeof sb.name !== "string")
|
|
89
133
|
return null;
|
|
@@ -105,8 +149,8 @@ export function readOpenShellConfig() {
|
|
|
105
149
|
return null;
|
|
106
150
|
}
|
|
107
151
|
}
|
|
108
|
-
|
|
109
|
-
fs.mkdirSync(ARC402_DIR, { recursive: true, mode: 0o700 });
|
|
152
|
+
function writeOpenShellConfig(config) {
|
|
153
|
+
fs.mkdirSync(exports.ARC402_DIR, { recursive: true, mode: 0o700 });
|
|
110
154
|
const providers = (config.sandbox.providers ?? []).map((p) => `"${p}"`).join(", ");
|
|
111
155
|
const lines = [
|
|
112
156
|
"# ARC-402 OpenShell configuration",
|
|
@@ -118,12 +162,12 @@ export function writeOpenShellConfig(config) {
|
|
|
118
162
|
`providers = [${providers}]`,
|
|
119
163
|
"",
|
|
120
164
|
"[runtime]",
|
|
121
|
-
`local_tarball = "${config.runtime?.local_tarball ?? OPENSHELL_RUNTIME_TARBALL}"`,
|
|
122
|
-
`remote_root = "${config.runtime?.remote_root ?? DEFAULT_RUNTIME_REMOTE_ROOT}"`,
|
|
165
|
+
`local_tarball = "${config.runtime?.local_tarball ?? exports.OPENSHELL_RUNTIME_TARBALL}"`,
|
|
166
|
+
`remote_root = "${config.runtime?.remote_root ?? exports.DEFAULT_RUNTIME_REMOTE_ROOT}"`,
|
|
123
167
|
`synced_at = "${config.runtime?.synced_at ?? new Date().toISOString()}"`,
|
|
124
168
|
"",
|
|
125
169
|
].filter(Boolean);
|
|
126
|
-
fs.writeFileSync(OPENSHELL_TOML, lines.join("\n"), { mode: 0o600 });
|
|
170
|
+
fs.writeFileSync(exports.OPENSHELL_TOML, lines.join("\n"), { mode: 0o600 });
|
|
127
171
|
}
|
|
128
172
|
function findCliRoot(startDir) {
|
|
129
173
|
let current = startDir;
|
|
@@ -138,12 +182,12 @@ function findCliRoot(startDir) {
|
|
|
138
182
|
current = parent;
|
|
139
183
|
}
|
|
140
184
|
}
|
|
141
|
-
|
|
185
|
+
function buildRuntimeTarball() {
|
|
142
186
|
const cliRoot = findCliRoot(__dirname);
|
|
143
|
-
fs.mkdirSync(OPENSHELL_RUNTIME_DIR, { recursive: true, mode: 0o700 });
|
|
187
|
+
fs.mkdirSync(exports.OPENSHELL_RUNTIME_DIR, { recursive: true, mode: 0o700 });
|
|
144
188
|
const tar = runCmd("tar", [
|
|
145
189
|
"-czf",
|
|
146
|
-
OPENSHELL_RUNTIME_TARBALL,
|
|
190
|
+
exports.OPENSHELL_RUNTIME_TARBALL,
|
|
147
191
|
"package.json",
|
|
148
192
|
"package-lock.json",
|
|
149
193
|
"dist",
|
|
@@ -153,15 +197,15 @@ export function buildRuntimeTarball() {
|
|
|
153
197
|
// Retry from the cli root via shell so relative paths resolve correctly.
|
|
154
198
|
const shellTar = runCmd("bash", [
|
|
155
199
|
"-lc",
|
|
156
|
-
`cd ${shellEscape(cliRoot)} && tar -czf ${shellEscape(OPENSHELL_RUNTIME_TARBALL)} package.json package-lock.json dist node_modules`,
|
|
200
|
+
`cd ${shellEscape(cliRoot)} && tar -czf ${shellEscape(exports.OPENSHELL_RUNTIME_TARBALL)} package.json package-lock.json dist node_modules`,
|
|
157
201
|
], { timeout: 300000 });
|
|
158
202
|
if (!shellTar.ok) {
|
|
159
203
|
throw new Error(shellTar.stderr || shellTar.stdout || "Failed to build ARC-402 runtime tarball");
|
|
160
204
|
}
|
|
161
205
|
}
|
|
162
|
-
return { cliRoot, tarballPath: OPENSHELL_RUNTIME_TARBALL };
|
|
206
|
+
return { cliRoot, tarballPath: exports.OPENSHELL_RUNTIME_TARBALL };
|
|
163
207
|
}
|
|
164
|
-
|
|
208
|
+
function buildOpenShellSshConfig(sandboxName) {
|
|
165
209
|
const sshConfig = runCmd("openshell", ["sandbox", "ssh-config", sandboxName], { timeout: 120000 });
|
|
166
210
|
if (!sshConfig.ok || !sshConfig.stdout.trim()) {
|
|
167
211
|
throw new Error(`Failed to get OpenShell SSH config for sandbox ${sandboxName}: ${sshConfig.stderr || sshConfig.stdout || "unknown error"}`);
|
|
@@ -174,7 +218,7 @@ export function buildOpenShellSshConfig(sandboxName) {
|
|
|
174
218
|
fs.writeFileSync(configPath, sshConfig.stdout, { mode: 0o600 });
|
|
175
219
|
return { configPath, host: hostMatch[1] };
|
|
176
220
|
}
|
|
177
|
-
|
|
221
|
+
function provisionFileToSandbox(sandboxName, localPath, remotePath) {
|
|
178
222
|
if (!fs.existsSync(localPath)) {
|
|
179
223
|
throw new Error(`Local file not found: ${localPath}`);
|
|
180
224
|
}
|
|
@@ -195,7 +239,7 @@ export function provisionFileToSandbox(sandboxName, localPath, remotePath) {
|
|
|
195
239
|
throw new Error(`Failed to place ${path.basename(localPath)} at ${remotePath}: ${move.stderr || move.stdout}`);
|
|
196
240
|
}
|
|
197
241
|
}
|
|
198
|
-
|
|
242
|
+
function provisionRuntimeToSandbox(sandboxName, remoteRoot = exports.DEFAULT_RUNTIME_REMOTE_ROOT) {
|
|
199
243
|
const { tarballPath } = buildRuntimeTarball();
|
|
200
244
|
const remoteUploadDir = `/tmp/arc402-runtime-upload-${Date.now()}`;
|
|
201
245
|
const remoteTarball = `${remoteUploadDir}/arc402-cli-runtime.tgz`;
|
|
@@ -218,7 +262,7 @@ export function provisionRuntimeToSandbox(sandboxName, remoteRoot = DEFAULT_RUNT
|
|
|
218
262
|
}
|
|
219
263
|
return { tarballPath, remoteRoot };
|
|
220
264
|
}
|
|
221
|
-
|
|
265
|
+
function shellEscape(value) {
|
|
222
266
|
return `'${value.replace(/'/g, `'"'"'`)}'`;
|
|
223
267
|
}
|
|
224
268
|
//# sourceMappingURL=openshell-runtime.js.map
|