anymous 1.1.0 → 1.1.2
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/package.json +28 -28
- package/src/cli/cmd/run/splash.ts +1 -1
- package/src/cli/cmd/upgrade.ts +1 -1
- package/src/cli/ui.ts +2 -2
- package/src/cli/upgrade.ts +1 -1
- package/src/installation/index.ts +1 -1
- package/src/session/prompt/meta.txt +1 -1
- package/tsconfig.json +1 -1
- package/LICENSE +0 -21
- package/postinstall.mjs +0 -189
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anymous",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "AI-powered reverse engineering platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
|
-
"homepage": "https://github.com/
|
|
7
|
+
"homepage": "https://github.com/anymousdark/anymous",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "https://github.com/
|
|
10
|
+
"url": "https://github.com/anymousdark/anymous"
|
|
11
11
|
},
|
|
12
12
|
"bin": {
|
|
13
13
|
"anymous": "./bin/anymous.cjs"
|
|
@@ -52,14 +52,14 @@
|
|
|
52
52
|
"@ai-sdk/xai": "3.0.102",
|
|
53
53
|
"@aws-sdk/credential-providers": "3.1057.0",
|
|
54
54
|
"@clack/prompts": "1.0.0-alpha.1",
|
|
55
|
-
"@effect/opentelemetry": "
|
|
56
|
-
"@effect/platform-node": "
|
|
55
|
+
"@effect/opentelemetry": "^4.0.0-beta.83",
|
|
56
|
+
"@effect/platform-node": "^4.0.0-beta.83",
|
|
57
57
|
"@ff-labs/fff-bun": "0.9.4",
|
|
58
58
|
"@gitlab/opencode-gitlab-auth": "1.3.3",
|
|
59
59
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
60
60
|
"@octokit/graphql": "9.0.2",
|
|
61
|
-
"@octokit/rest": "
|
|
62
|
-
"@openauthjs/openauth": "
|
|
61
|
+
"@octokit/rest": "^22.0.0",
|
|
62
|
+
"@openauthjs/openauth": "^0.0.0-20250322224806",
|
|
63
63
|
"@opencode-ai/codemode": "^1.18.5",
|
|
64
64
|
"@opencode-ai/llm": "^1.18.5",
|
|
65
65
|
"@opencode-ai/plugin": "^1.18.5",
|
|
@@ -75,26 +75,26 @@
|
|
|
75
75
|
"@opentelemetry/exporter-trace-otlp-http": "0.214.0",
|
|
76
76
|
"@opentelemetry/sdk-trace-base": "2.6.1",
|
|
77
77
|
"@opentelemetry/sdk-trace-node": "2.6.1",
|
|
78
|
-
"@opentui/core": "
|
|
79
|
-
"@opentui/keymap": "
|
|
80
|
-
"@opentui/solid": "
|
|
78
|
+
"@opentui/core": "^0.4.5",
|
|
79
|
+
"@opentui/keymap": "^0.4.5",
|
|
80
|
+
"@opentui/solid": "^0.4.5",
|
|
81
81
|
"@parcel/watcher": "2.5.1",
|
|
82
|
-
"@pierre/diffs": "
|
|
82
|
+
"@pierre/diffs": "^1.2.10",
|
|
83
83
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
84
84
|
"@solid-primitives/event-bus": "1.1.2",
|
|
85
85
|
"@solid-primitives/scheduled": "1.5.2",
|
|
86
86
|
"@standard-schema/spec": "1.0.0",
|
|
87
87
|
"@types/ws": "8.18.1",
|
|
88
88
|
"@zip.js/zip.js": "2.7.62",
|
|
89
|
-
"ai": "
|
|
89
|
+
"ai": "^6.0.168",
|
|
90
90
|
"ai-gateway-provider": "3.1.2",
|
|
91
91
|
"bonjour-service": "1.3.0",
|
|
92
92
|
"chokidar": "4.0.3",
|
|
93
|
-
"cross-spawn": "
|
|
93
|
+
"cross-spawn": "^7.0.6",
|
|
94
94
|
"decimal.js": "10.5.0",
|
|
95
|
-
"diff": "
|
|
96
|
-
"drizzle-orm": "
|
|
97
|
-
"effect": "
|
|
95
|
+
"diff": "^8.0.3",
|
|
96
|
+
"drizzle-orm": "^1.0.0-rc.2",
|
|
97
|
+
"effect": "^4.0.0-beta.83",
|
|
98
98
|
"fuzzysort": "3.1.0",
|
|
99
99
|
"gitlab-ai-provider": "6.11.1",
|
|
100
100
|
"glob": "13.0.5",
|
|
@@ -110,46 +110,46 @@
|
|
|
110
110
|
"open": "10.1.2",
|
|
111
111
|
"opencode-gitlab-auth": "2.1.0",
|
|
112
112
|
"opencode-poe-auth": "0.0.1",
|
|
113
|
-
"opentui-spinner": "
|
|
113
|
+
"opentui-spinner": "^0.0.7",
|
|
114
114
|
"partial-json": "0.1.7",
|
|
115
|
-
"remeda": "
|
|
115
|
+
"remeda": "^2.26.0",
|
|
116
116
|
"semver": "^7.6.3",
|
|
117
|
-
"solid-js": "
|
|
117
|
+
"solid-js": "^1.9.10",
|
|
118
118
|
"strip-ansi": "7.1.2",
|
|
119
119
|
"tree-sitter-bash": "0.25.0",
|
|
120
120
|
"tree-sitter-powershell": "0.25.10",
|
|
121
121
|
"turndown": "7.2.0",
|
|
122
|
-
"ulid": "
|
|
122
|
+
"ulid": "^3.0.1",
|
|
123
123
|
"venice-ai-sdk-provider": "2.1.1",
|
|
124
124
|
"vscode-jsonrpc": "8.2.1",
|
|
125
125
|
"web-tree-sitter": "0.25.10",
|
|
126
126
|
"ws": "8.21.0",
|
|
127
127
|
"xdg-basedir": "5.1.0",
|
|
128
128
|
"yargs": "18.0.0",
|
|
129
|
-
"zod": "
|
|
129
|
+
"zod": "^4.1.8",
|
|
130
130
|
"bun": "^1.0.0"
|
|
131
131
|
},
|
|
132
132
|
"devDependencies": {
|
|
133
133
|
"@babel/core": "7.28.4",
|
|
134
134
|
"@octokit/webhooks-types": "7.6.1",
|
|
135
135
|
"@standard-schema/spec": "1.0.0",
|
|
136
|
-
"@tsconfig/bun": "
|
|
136
|
+
"@tsconfig/bun": "^1.0.9",
|
|
137
137
|
"@types/babel__core": "7.20.5",
|
|
138
|
-
"@types/bun": "
|
|
139
|
-
"@types/cross-spawn": "
|
|
138
|
+
"@types/bun": "^1.3.13",
|
|
139
|
+
"@types/cross-spawn": "^6.0.6",
|
|
140
140
|
"@types/mime-types": "3.0.1",
|
|
141
141
|
"@types/npm-package-arg": "6.1.4",
|
|
142
142
|
"@types/semver": "^7.5.8",
|
|
143
143
|
"@types/turndown": "5.0.5",
|
|
144
144
|
"@types/yargs": "17.0.33",
|
|
145
|
-
"@typescript/native-preview": "
|
|
146
|
-
"drizzle-orm": "
|
|
145
|
+
"@typescript/native-preview": "^7.0.0-dev.20251207.1",
|
|
146
|
+
"drizzle-orm": "^1.0.0-rc.2",
|
|
147
147
|
"prettier": "3.6.2",
|
|
148
|
-
"typescript": "
|
|
148
|
+
"typescript": "^5.8.2",
|
|
149
149
|
"vscode-languageserver-types": "3.17.5",
|
|
150
150
|
"why-is-node-running": "3.2.2"
|
|
151
151
|
},
|
|
152
152
|
"overrides": {
|
|
153
|
-
"drizzle-orm": "
|
|
153
|
+
"drizzle-orm": "^1.0.0-rc.2"
|
|
154
154
|
}
|
|
155
155
|
}
|
|
@@ -171,7 +171,7 @@ function draw(
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
const VERSION = "1.
|
|
174
|
+
const VERSION = "1.1.2"
|
|
175
175
|
|
|
176
176
|
function build(input: SplashWriterInput, kind: "entry" | "exit", ctx: ScrollbackRenderContext): ScrollbackSnapshot {
|
|
177
177
|
const width = Math.max(1, ctx.width)
|
package/src/cli/cmd/upgrade.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as prompts from "@clack/prompts"
|
|
|
4
4
|
import { Installation } from "../../installation"
|
|
5
5
|
import { InstallationVersion } from "@anymous-ai/core/installation/version"
|
|
6
6
|
|
|
7
|
-
const ANYMOUS_RELEASES = "https://api.github.com/repos/anymousdark/anymous/releases/latest"
|
|
7
|
+
const ANYMOUS_RELEASES = "https://api.github.com/repos/anymousdark/anymous-ai/releases/latest"
|
|
8
8
|
|
|
9
9
|
async function checkanymousUpdate(): Promise<string | null> {
|
|
10
10
|
try {
|
package/src/cli/ui.ts
CHANGED
|
@@ -54,7 +54,7 @@ export function logo(pad?: string) {
|
|
|
54
54
|
result.push(row)
|
|
55
55
|
result.push(EOL)
|
|
56
56
|
}
|
|
57
|
-
result.push("AI-Powered Reverse Engineering & Pentest Platform v1.
|
|
57
|
+
result.push("AI-Powered Reverse Engineering & Pentest Platform v1.1.2")
|
|
58
58
|
return result.join("")
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -103,7 +103,7 @@ export function logo(pad?: string) {
|
|
|
103
103
|
result.push(EOL)
|
|
104
104
|
})
|
|
105
105
|
result.push(Style.TEXT_NORMAL, "─".repeat(45), EOL)
|
|
106
|
-
result.push(Style.TEXT_INFO, "▸", Style.TEXT_NORMAL, " AI-Powered Reverse Engineering & Pentest Platform ", Style.TEXT_DIM, "v1.
|
|
106
|
+
result.push(Style.TEXT_INFO, "▸", Style.TEXT_NORMAL, " AI-Powered Reverse Engineering & Pentest Platform ", Style.TEXT_DIM, "v1.1.2", EOL)
|
|
107
107
|
result.push(Style.TEXT_NORMAL, "─".repeat(45))
|
|
108
108
|
return result.join("").trimEnd()
|
|
109
109
|
}
|
package/src/cli/upgrade.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Installation } from "@/installation"
|
|
|
5
5
|
import { InstallationVersion } from "@anymous-ai/core/installation/version"
|
|
6
6
|
import { GlobalBus } from "@/bus/global"
|
|
7
7
|
|
|
8
|
-
const ANYMOUS_RELEASES = "https://api.github.com/repos/anymousdark/anymous/releases/latest"
|
|
8
|
+
const ANYMOUS_RELEASES = "https://api.github.com/repos/anymousdark/anymous-ai/releases/latest"
|
|
9
9
|
|
|
10
10
|
async function checkanymousUpdate(): Promise<string | null> {
|
|
11
11
|
try {
|
|
@@ -255,7 +255,7 @@ const layer: Layer.Layer<Service, never, HttpClient.HttpClient | AppProcess.Serv
|
|
|
255
255
|
}
|
|
256
256
|
|
|
257
257
|
const response = yield* httpOk.execute(
|
|
258
|
-
HttpClientRequest.get("https://api.github.com/repos/anymousdark/anymous/releases/latest").pipe(
|
|
258
|
+
HttpClientRequest.get("https://api.github.com/repos/anymousdark/anymous-ai/releases/latest").pipe(
|
|
259
259
|
HttpClientRequest.acceptJson,
|
|
260
260
|
),
|
|
261
261
|
)
|
|
@@ -61,4 +61,4 @@ Use the instructions below and the tools available to assist the user.
|
|
|
61
61
|
- NEVER use comments as a place for long-winded chain-of-thought. Long thinking texts must be generated as private reasoning. Comments in code must be appropriately concise.
|
|
62
62
|
|
|
63
63
|
# User Help & Feedback
|
|
64
|
-
- Users can give feedback or report issues at https://github.com/anymousdark/anymous.
|
|
64
|
+
- Users can give feedback or report issues at https://github.com/anymousdark/anymous-ai.
|
package/tsconfig.json
CHANGED
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 opencode
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/postinstall.mjs
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import childProcess from "child_process"
|
|
4
|
-
import fs from "fs"
|
|
5
|
-
import os from "os"
|
|
6
|
-
import path from "path"
|
|
7
|
-
import { createRequire } from "module"
|
|
8
|
-
import { fileURLToPath } from "url"
|
|
9
|
-
|
|
10
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
11
|
-
const require = createRequire(import.meta.url)
|
|
12
|
-
const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, "package.json"), "utf8"))
|
|
13
|
-
|
|
14
|
-
const platformMap = {
|
|
15
|
-
darwin: "darwin",
|
|
16
|
-
linux: "linux",
|
|
17
|
-
win32: "windows",
|
|
18
|
-
}
|
|
19
|
-
const archMap = {
|
|
20
|
-
x64: "x64",
|
|
21
|
-
arm64: "arm64",
|
|
22
|
-
arm: "arm",
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const platform = platformMap[os.platform()] ?? os.platform()
|
|
26
|
-
const arch = archMap[os.arch()] ?? os.arch()
|
|
27
|
-
const base = `anymous-${platform}-${arch}`
|
|
28
|
-
const sourceBinary = platform === "windows" ? "anymous.exe" : "anymous"
|
|
29
|
-
const targetBinary = path.join(__dirname, "bin", "anymous.exe")
|
|
30
|
-
|
|
31
|
-
function supportsAvx2() {
|
|
32
|
-
if (arch !== "x64") return false
|
|
33
|
-
|
|
34
|
-
if (platform === "linux") {
|
|
35
|
-
try {
|
|
36
|
-
return /(^|\s)avx2(\s|$)/i.test(fs.readFileSync("/proc/cpuinfo", "utf8"))
|
|
37
|
-
} catch {
|
|
38
|
-
return false
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (platform === "darwin") {
|
|
43
|
-
try {
|
|
44
|
-
const result = childProcess.spawnSync("sysctl", ["-n", "hw.optional.avx2_0"], {
|
|
45
|
-
encoding: "utf8",
|
|
46
|
-
timeout: 1500,
|
|
47
|
-
})
|
|
48
|
-
if (result.status !== 0) return false
|
|
49
|
-
return (result.stdout || "").trim() === "1"
|
|
50
|
-
} catch {
|
|
51
|
-
return false
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (platform === "windows") {
|
|
56
|
-
const command =
|
|
57
|
-
'(Add-Type -MemberDefinition "[DllImport(""kernel32.dll"")] public static extern bool IsProcessorFeaturePresent(int ProcessorFeature);" -Name Kernel32 -Namespace Win32 -PassThru)::IsProcessorFeaturePresent(40)'
|
|
58
|
-
|
|
59
|
-
for (const executable of ["powershell.exe", "pwsh.exe", "pwsh", "powershell"]) {
|
|
60
|
-
try {
|
|
61
|
-
const result = childProcess.spawnSync(executable, ["-NoProfile", "-NonInteractive", "-Command", command], {
|
|
62
|
-
encoding: "utf8",
|
|
63
|
-
timeout: 3000,
|
|
64
|
-
windowsHide: true,
|
|
65
|
-
})
|
|
66
|
-
if (result.status !== 0) continue
|
|
67
|
-
const output = (result.stdout || "").trim().toLowerCase()
|
|
68
|
-
if (output === "true" || output === "1") return true
|
|
69
|
-
if (output === "false" || output === "0") return false
|
|
70
|
-
} catch {
|
|
71
|
-
continue
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return false
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function isMusl() {
|
|
80
|
-
if (platform !== "linux") return false
|
|
81
|
-
|
|
82
|
-
try {
|
|
83
|
-
if (fs.existsSync("/etc/alpine-release")) return true
|
|
84
|
-
} catch {
|
|
85
|
-
// Ignore filesystem probes that are blocked by the host.
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
try {
|
|
89
|
-
const result = childProcess.spawnSync("ldd", ["--version"], { encoding: "utf8" })
|
|
90
|
-
return `${result.stdout || ""}${result.stderr || ""}`.toLowerCase().includes("musl")
|
|
91
|
-
} catch {
|
|
92
|
-
return false
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function packageNames() {
|
|
97
|
-
const baseline = arch === "x64" && !supportsAvx2()
|
|
98
|
-
|
|
99
|
-
if (platform === "linux") {
|
|
100
|
-
if (isMusl()) {
|
|
101
|
-
if (arch === "x64")
|
|
102
|
-
return baseline
|
|
103
|
-
? [`${base}-baseline-musl`, `${base}-musl`, `${base}-baseline`, base]
|
|
104
|
-
: [`${base}-musl`, `${base}-baseline-musl`, base, `${base}-baseline`]
|
|
105
|
-
return [`${base}-musl`, base]
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if (arch === "x64")
|
|
109
|
-
return baseline
|
|
110
|
-
? [`${base}-baseline`, base, `${base}-baseline-musl`, `${base}-musl`]
|
|
111
|
-
: [base, `${base}-baseline`, `${base}-musl`, `${base}-baseline-musl`]
|
|
112
|
-
return [base, `${base}-musl`]
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (arch === "x64") return baseline ? [`${base}-baseline`, base] : [base, `${base}-baseline`]
|
|
116
|
-
return [base]
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
function resolveBinary(name) {
|
|
120
|
-
const packageJsonPath = require.resolve(`${name}/package.json`)
|
|
121
|
-
const binaryPath = path.join(path.dirname(packageJsonPath), "bin", sourceBinary)
|
|
122
|
-
if (!fs.existsSync(binaryPath)) throw new Error(`Binary not found at ${binaryPath}`)
|
|
123
|
-
return binaryPath
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
function installPackage(name) {
|
|
127
|
-
const version = packageJson.optionalDependencies?.[name]
|
|
128
|
-
if (!version) return
|
|
129
|
-
|
|
130
|
-
const temp = fs.mkdtempSync(path.join(os.tmpdir(), "anymous-install-"))
|
|
131
|
-
try {
|
|
132
|
-
const result = childProcess.spawnSync(
|
|
133
|
-
"npm",
|
|
134
|
-
["install", "--ignore-scripts", "--no-save", "--loglevel=error", "--prefix", temp, `${name}@${version}`],
|
|
135
|
-
{ stdio: "inherit", windowsHide: true },
|
|
136
|
-
)
|
|
137
|
-
if (result.status !== 0) return
|
|
138
|
-
const packageDir = path.join(temp, "node_modules", name)
|
|
139
|
-
copyBinary(path.join(packageDir, "bin", sourceBinary), targetBinary)
|
|
140
|
-
return true
|
|
141
|
-
} finally {
|
|
142
|
-
fs.rmSync(temp, { recursive: true, force: true })
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
function copyBinary(source, target) {
|
|
147
|
-
if (!fs.existsSync(source)) throw new Error(`Binary not found at ${source}`)
|
|
148
|
-
fs.mkdirSync(path.dirname(target), { recursive: true })
|
|
149
|
-
if (fs.existsSync(target)) fs.unlinkSync(target)
|
|
150
|
-
try {
|
|
151
|
-
fs.linkSync(source, target)
|
|
152
|
-
} catch {
|
|
153
|
-
fs.copyFileSync(source, target)
|
|
154
|
-
}
|
|
155
|
-
fs.chmodSync(target, 0o755)
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
function verifyBinary() {
|
|
159
|
-
const result = childProcess.spawnSync(targetBinary, ["--version"], {
|
|
160
|
-
encoding: "utf8",
|
|
161
|
-
stdio: "ignore",
|
|
162
|
-
windowsHide: true,
|
|
163
|
-
})
|
|
164
|
-
return result.status === 0
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
function main() {
|
|
168
|
-
for (const name of packageNames()) {
|
|
169
|
-
try {
|
|
170
|
-
copyBinary(resolveBinary(name), targetBinary)
|
|
171
|
-
if (verifyBinary()) return
|
|
172
|
-
} catch {
|
|
173
|
-
if (installPackage(name) && verifyBinary()) return
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
throw new Error(
|
|
178
|
-
`It seems your package manager failed to install the right anymous CLI package. Try manually installing ${packageNames()
|
|
179
|
-
.map((name) => JSON.stringify(name))
|
|
180
|
-
.join(" or ")}.`,
|
|
181
|
-
)
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
try {
|
|
185
|
-
main()
|
|
186
|
-
} catch (error) {
|
|
187
|
-
console.error(error.message)
|
|
188
|
-
process.exit(1)
|
|
189
|
-
}
|