@claudinite/cli 1.61009.3 → 1.61011.1
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/launch +174 -89
- package/manifest.json +6 -6
- package/manifest.sig.json +1 -1
- package/package.json +1 -1
package/launch
CHANGED
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
# blocks the stop, and the next stop attempt hits it again, in a loop.
|
|
20
20
|
#
|
|
21
21
|
# Bootstrap: the @claudinite/cli packages carry this file as their bin, so
|
|
22
|
-
# `npx --yes @claudinite/cli
|
|
23
|
-
# npx unpacked, through a symlink. Run with
|
|
24
|
-
#
|
|
25
|
-
# manifest.json, fetches and checks the binary as above, caches it with the
|
|
26
|
-
# manifest and manifest.sig.json, and execs cn
|
|
22
|
+
# `npx --yes @claudinite/cli adopt <packs>` runs it from the package
|
|
23
|
+
# npx unpacked, through a symlink. Run with adopt in a repository holding no
|
|
24
|
+
# settings file (or with the retired init), it takes the version and the
|
|
25
|
+
# binary's hash from the package's own manifest.json, fetches and checks the binary as above, caches it with the
|
|
26
|
+
# manifest and manifest.sig.json, and execs cn adopt, which verifies that
|
|
27
27
|
# signature before it writes anything. Windows is not covered: npm's shim
|
|
28
28
|
# for a sh script there is the desktop work.
|
|
29
29
|
# Any other command run through that bin runs the member's own pin, the
|
|
@@ -93,13 +93,41 @@ unreachable() {
|
|
|
93
93
|
esac
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
# The shapes a value must have, by shell patterns alone: the launcher runs
|
|
97
|
+
# once per session and per workflow step, and each tool it starts costs a
|
|
98
|
+
# process.
|
|
99
|
+
digits() {
|
|
100
|
+
case $1 in '' | *[!0-9]*) return 1 ;; esac
|
|
101
|
+
}
|
|
102
|
+
is_version() {
|
|
103
|
+
case $1 in *.*.*) ;; *) return 1 ;; esac
|
|
104
|
+
set -- "${1%%.*}" "${1#*.}"
|
|
105
|
+
set -- "$1" "${2%%.*}" "${2#*.}"
|
|
106
|
+
digits "$1" && digits "$2" && digits "$3"
|
|
107
|
+
}
|
|
108
|
+
is_package() {
|
|
109
|
+
case $1 in @claudinite/cli | @claudinite/cli-rc) ;; *) return 1 ;; esac
|
|
110
|
+
}
|
|
111
|
+
is_pin() {
|
|
112
|
+
case $1 in sha512-*==) ;; *) return 1 ;; esac
|
|
113
|
+
set -- "${1#sha512-}"
|
|
114
|
+
set -- "${1%==}"
|
|
115
|
+
[ "${#1}" -eq 86 ] || return 1
|
|
116
|
+
case $1 in *[!A-Za-z0-9+/]*) return 1 ;; esac
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
# dir_of PATH sets dir to PATH's folder, as dirname would.
|
|
120
|
+
dir_of() {
|
|
121
|
+
case $1 in
|
|
122
|
+
*/*) dir=${1%/*}; [ -n "$dir" ] || dir=/ ;;
|
|
123
|
+
*) dir=. ;;
|
|
124
|
+
esac
|
|
98
125
|
}
|
|
99
126
|
|
|
100
127
|
# Step 1: the pin, from exactly one settings file.
|
|
101
128
|
|
|
102
|
-
|
|
129
|
+
dir_of "$0"
|
|
130
|
+
here=$(cd "$dir" && pwd) || refuse "cannot locate the .claudinite folder"
|
|
103
131
|
|
|
104
132
|
# Run as the npm package's bin, through the symlink npm made.
|
|
105
133
|
self=$0
|
|
@@ -107,10 +135,11 @@ while [ -L "$self" ]; do
|
|
|
107
135
|
link=$(readlink "$self") || break
|
|
108
136
|
case $link in
|
|
109
137
|
/*) self=$link ;;
|
|
110
|
-
*)
|
|
138
|
+
*) dir_of "$self"; self=$dir/$link ;;
|
|
111
139
|
esac
|
|
112
140
|
done
|
|
113
|
-
|
|
141
|
+
dir_of "$self"
|
|
142
|
+
pkgdir=$(cd "$dir" && pwd) || refuse "cannot locate the launcher's folder"
|
|
114
143
|
bootstrap=
|
|
115
144
|
if [ -f "$pkgdir/manifest.json" ] && [ -f "$pkgdir/package.json" ]; then
|
|
116
145
|
if [ "${1:-}" = init ]; then
|
|
@@ -131,6 +160,9 @@ if [ -f "$pkgdir/manifest.json" ] && [ -f "$pkgdir/package.json" ]; then
|
|
|
131
160
|
esac
|
|
132
161
|
done
|
|
133
162
|
here=$(cd "$repo" && pwd)/.claudinite || refuse "cannot locate the repository $repo"
|
|
163
|
+
if [ "${1:-}" = adopt ] && [ ! -f "$here/settings.yaml" ] && [ ! -f "$here/settings.toml" ] && [ ! -f "$here/settings.json" ]; then
|
|
164
|
+
bootstrap=1
|
|
165
|
+
fi
|
|
134
166
|
fi
|
|
135
167
|
fi
|
|
136
168
|
|
|
@@ -145,37 +177,82 @@ done
|
|
|
145
177
|
|
|
146
178
|
if [ -n "$bootstrap" ]; then
|
|
147
179
|
settings=$pkgdir/manifest.json
|
|
148
|
-
[ -f "$pkgdir/manifest.sig.json" ] || refuse "$pkgdir holds no manifest.sig.json, and cn
|
|
180
|
+
[ -f "$pkgdir/manifest.sig.json" ] || refuse "$pkgdir holds no manifest.sig.json, and cn adopt never runs from an unsigned manifest"
|
|
149
181
|
else
|
|
150
182
|
[ "$count" -eq 1 ] || refuse "exactly one of .claudinite/settings.yaml, .claudinite/settings.toml or .claudinite/settings.json must exist, found $count in ${here%/.claudinite}"
|
|
151
183
|
settings=$here/settings.$format
|
|
152
184
|
fi
|
|
153
185
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
#
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
186
|
+
# The engine block's values, read in one pass. No parser: the values the
|
|
187
|
+
# launcher needs are plain quoted strings, read with a strict pattern. A key
|
|
188
|
+
# absent reads empty; a key present twice reads "duplicate", and one not
|
|
189
|
+
# holding a plain quoted string, or a releases value not naming a GitHub
|
|
190
|
+
# repository, "malformed". The pass also counts a JSON file's engine keys and
|
|
191
|
+
# decodes the pin to the lowercase hex the hash tools print.
|
|
192
|
+
read_pin() {
|
|
193
|
+
awk -v format="$format" -v repo='[A-Za-z0-9-]+/[A-Za-z0-9_-][A-Za-z0-9._-]*' '
|
|
194
|
+
function value(key, sep, n, i, line, v, found) {
|
|
195
|
+
sep = (format == "toml") ? "=" : ":"
|
|
196
|
+
n = 0
|
|
197
|
+
for (i = 1; i <= nlines; i++) {
|
|
198
|
+
line = lines[i]
|
|
199
|
+
if (line ~ ("^[ \t]*\"?" key "\"?[ \t]*" sep)) { n++; found = line }
|
|
200
|
+
}
|
|
201
|
+
if (n == 0) return ""
|
|
202
|
+
if (n > 1) return "duplicate"
|
|
203
|
+
if (found !~ ("^[ \t]*\"?" key "\"?[ \t]*" sep "[ \t]*\"[^\"]*\"[ \t]*$")) return "malformed"
|
|
204
|
+
v = found
|
|
205
|
+
sub("^[ \t]*\"?" key "\"?[ \t]*" sep "[ \t]*\"", "", v)
|
|
206
|
+
sub("\"[ \t]*$", "", v)
|
|
207
|
+
return (v == "") ? "malformed" : v
|
|
208
|
+
}
|
|
209
|
+
function hex(b64, a, h, i, c, bits, nb, p, byte, out) {
|
|
210
|
+
a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
|
|
211
|
+
for (i = 0; i < 64; i++) dv[substr(a, i + 1, 1)] = i
|
|
212
|
+
h = "0123456789abcdef"
|
|
213
|
+
bits = 0; nb = 0; out = ""
|
|
214
|
+
for (i = 1; i <= length(b64); i++) {
|
|
215
|
+
c = substr(b64, i, 1)
|
|
216
|
+
if (c == "=") break
|
|
217
|
+
bits = bits * 64 + dv[c]; nb += 6
|
|
218
|
+
if (nb >= 8) {
|
|
219
|
+
nb -= 8; p = 2 ^ nb
|
|
220
|
+
byte = int(bits / p); bits -= byte * p
|
|
221
|
+
out = out substr(h, int(byte / 16) + 1, 1) substr(h, byte % 16 + 1, 1)
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return out
|
|
225
|
+
}
|
|
226
|
+
{ all = all $0 }
|
|
227
|
+
format == "yaml" && /^engine:[ \t]*$/ { inb = 1; next }
|
|
228
|
+
format == "yaml" && inb && /^[^ \t]/ { inb = 0 }
|
|
229
|
+
format == "toml" && /^\[engine\][ \t]*$/ { inb = 1; next }
|
|
230
|
+
format == "toml" && inb && /^[ \t]*\[/ { inb = 0 }
|
|
231
|
+
format != "json" && inb { lines[++nlines] = $0 }
|
|
232
|
+
END {
|
|
233
|
+
engines = 0
|
|
234
|
+
if (format == "json") {
|
|
235
|
+
gsub(/\r/, "", all)
|
|
236
|
+
rest = all
|
|
237
|
+
while (match(rest, /"engine"[ \t]*:/)) { engines++; rest = substr(rest, RSTART + RLENGTH) }
|
|
238
|
+
block = ""
|
|
239
|
+
rest = all
|
|
240
|
+
while (match(rest, /"engine"[ \t]*:[ \t]*\{[^{}]*\}/)) {
|
|
241
|
+
block = substr(rest, RSTART, RLENGTH); rest = substr(rest, RSTART + RLENGTH)
|
|
242
|
+
}
|
|
243
|
+
sub(/^"engine"[ \t]*:[ \t]*\{/, "", block); sub(/\}$/, "", block)
|
|
244
|
+
nlines = split(block, lines, ",")
|
|
245
|
+
}
|
|
246
|
+
pin = value("manifest")
|
|
247
|
+
print engines
|
|
248
|
+
print value("version")
|
|
249
|
+
print pin
|
|
250
|
+
print value("package")
|
|
251
|
+
releases = value("releases")
|
|
252
|
+
if (releases != "" && releases !~ ("^" repo "$")) releases = "malformed"
|
|
253
|
+
print releases
|
|
254
|
+
print (pin ~ /^sha512-/) ? hex(substr(pin, 8)) : ""
|
|
255
|
+
}' "$settings"
|
|
179
256
|
}
|
|
180
257
|
|
|
181
258
|
if [ -n "$bootstrap" ]; then
|
|
@@ -183,36 +260,43 @@ if [ -n "$bootstrap" ]; then
|
|
|
183
260
|
# manifest's own hash stands in for the pin.
|
|
184
261
|
version=$(sed -n 's/^ *"version": *"\([0-9]*\.[0-9]*\.[0-9]*\)",\{0,1\}$/\1/p' "$pkgdir/manifest.json" | head -n 1)
|
|
185
262
|
package=$(sed -n 's/^ *"name": *"\(@claudinite\/cli[-a-z]*\)",\{0,1\}$/\1/p' "$pkgdir/package.json" | head -n 1)
|
|
186
|
-
|
|
187
|
-
|
|
263
|
+
is_version "$version" || refuse "$pkgdir/manifest.json names no version"
|
|
264
|
+
is_package "$package" \
|
|
188
265
|
|| refuse "$pkgdir/package.json must name \"@claudinite/cli\" or \"@claudinite/cli-rc\""
|
|
189
266
|
else
|
|
190
|
-
|
|
191
|
-
manifest_pin
|
|
192
|
-
package
|
|
267
|
+
pinned=$(read_pin) || refuse "cannot read $settings"
|
|
268
|
+
engines=0 version='' manifest_pin='' package='' releases='' pin_hex=''
|
|
269
|
+
{ read -r engines; read -r version; read -r manifest_pin; read -r package; read -r releases; read -r pin_hex; } <<EOF
|
|
270
|
+
$pinned
|
|
271
|
+
EOF
|
|
272
|
+
if [ "$format" = json ]; then
|
|
273
|
+
[ "$engines" -eq 1 ] || refuse "$settings must hold exactly one \"engine\" object, found $engines"
|
|
274
|
+
fi
|
|
193
275
|
[ -n "$package" ] || package=@claudinite/cli
|
|
194
|
-
releases=$(engine_value releases)
|
|
195
276
|
|
|
196
|
-
|
|
277
|
+
is_version "$version" \
|
|
197
278
|
|| refuse "engine.version in $settings must be a quoted version like \"1.60928.1\""
|
|
198
|
-
|
|
279
|
+
is_pin "$manifest_pin" \
|
|
199
280
|
|| refuse "engine.manifest in $settings must be a quoted sha512-... integrity string"
|
|
200
|
-
|
|
281
|
+
is_package "$package" \
|
|
201
282
|
|| refuse "engine.package in $settings must be \"@claudinite/cli\" or \"@claudinite/cli-rc\""
|
|
202
|
-
|
|
203
|
-
|
|
283
|
+
case $releases in
|
|
284
|
+
'' | */*) ;;
|
|
285
|
+
*) refuse "engine.releases in $settings must be a quoted GitHub repository like \"owner/name\"" ;;
|
|
286
|
+
esac
|
|
204
287
|
fi
|
|
205
288
|
|
|
206
|
-
|
|
289
|
+
uname=$(uname -s -m)
|
|
290
|
+
case ${uname% *} in
|
|
207
291
|
Linux) os=linux ;;
|
|
208
292
|
Darwin) os=darwin ;;
|
|
209
293
|
MINGW*|MSYS*|CYGWIN*) os=windows ;;
|
|
210
|
-
*) refuse "unsupported operating system $
|
|
294
|
+
*) refuse "unsupported operating system ${uname% *}" ;;
|
|
211
295
|
esac
|
|
212
|
-
case $
|
|
296
|
+
case ${uname##* } in
|
|
213
297
|
x86_64|amd64) arch=x64 ;;
|
|
214
298
|
aarch64|arm64) arch=arm64 ;;
|
|
215
|
-
*) refuse "unsupported processor $
|
|
299
|
+
*) refuse "unsupported processor ${uname##* }" ;;
|
|
216
300
|
esac
|
|
217
301
|
bin=cn
|
|
218
302
|
bin_re=cn
|
|
@@ -224,14 +308,14 @@ fi
|
|
|
224
308
|
platform=$os-$arch
|
|
225
309
|
|
|
226
310
|
if command -v sha256sum >/dev/null 2>&1; then
|
|
227
|
-
sha256() { sha256sum < "$1"
|
|
228
|
-
sha512() { sha512sum < "$1"
|
|
311
|
+
sha256() { set -- "$(sha256sum < "$1")"; printf '%s\n' "${1%% *}"; }
|
|
312
|
+
sha512() { set -- "$(sha512sum < "$1")"; printf '%s\n' "${1%% *}"; }
|
|
229
313
|
elif command -v shasum >/dev/null 2>&1; then
|
|
230
|
-
sha256() { shasum -a 256 < "$1"
|
|
231
|
-
sha512() { shasum -a 512 < "$1"
|
|
314
|
+
sha256() { set -- "$(shasum -a 256 < "$1")"; printf '%s\n' "${1%% *}"; }
|
|
315
|
+
sha512() { set -- "$(shasum -a 512 < "$1")"; printf '%s\n' "${1%% *}"; }
|
|
232
316
|
elif command -v openssl >/dev/null 2>&1; then
|
|
233
|
-
sha256() { openssl dgst -sha256 < "$1"
|
|
234
|
-
sha512() { openssl dgst -sha512 < "$1"
|
|
317
|
+
sha256() { set -- "$(openssl dgst -sha256 < "$1")"; printf '%s\n' "${1##* }"; }
|
|
318
|
+
sha512() { set -- "$(openssl dgst -sha512 < "$1")"; printf '%s\n' "${1##* }"; }
|
|
235
319
|
else
|
|
236
320
|
refuse "no SHA-256 tool found (sha256sum, shasum or openssl)"
|
|
237
321
|
fi
|
|
@@ -239,31 +323,11 @@ for tool in curl tar; do
|
|
|
239
323
|
command -v "$tool" >/dev/null 2>&1 || refuse "$tool is not installed; the launcher needs it to fetch the engine"
|
|
240
324
|
done
|
|
241
325
|
|
|
242
|
-
# The
|
|
243
|
-
# the
|
|
326
|
+
# The bootstrap's pin is the hash of the manifest npx unpacked, as the
|
|
327
|
+
# lowercase hex the hash tools print; a settings file's pin was decoded to
|
|
328
|
+
# that hex as it was read.
|
|
244
329
|
if [ -n "$bootstrap" ]; then
|
|
245
330
|
pin_hex=$(sha512 "$pkgdir/manifest.json")
|
|
246
|
-
else
|
|
247
|
-
pin_hex=$(printf '%s\n' "${manifest_pin#sha512-}" | awk '
|
|
248
|
-
BEGIN {
|
|
249
|
-
a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
|
|
250
|
-
for (i = 0; i < 64; i++) v[substr(a, i + 1, 1)] = i
|
|
251
|
-
h = "0123456789abcdef"
|
|
252
|
-
}
|
|
253
|
-
{
|
|
254
|
-
bits = 0; nb = 0; out = ""
|
|
255
|
-
for (i = 1; i <= length($0); i++) {
|
|
256
|
-
c = substr($0, i, 1)
|
|
257
|
-
if (c == "=") break
|
|
258
|
-
bits = bits * 64 + v[c]; nb += 6
|
|
259
|
-
if (nb >= 8) {
|
|
260
|
-
nb -= 8; p = 2 ^ nb
|
|
261
|
-
byte = int(bits / p); bits -= byte * p
|
|
262
|
-
out = out substr(h, int(byte / 16) + 1, 1) substr(h, byte % 16 + 1, 1)
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
print out
|
|
266
|
-
}')
|
|
267
331
|
fi
|
|
268
332
|
|
|
269
333
|
# This platform's SHA-256 from a manifest.json whose hash matched the pin.
|
|
@@ -285,15 +349,33 @@ private_dir() {
|
|
|
285
349
|
fi
|
|
286
350
|
[ -L "$1" ] && refuse "the cache directory $1 is a symbolic link"
|
|
287
351
|
[ "$os" = windows ] && return 0
|
|
352
|
+
# shellcheck disable=SC3067 # -O is in every sh the launcher runs under (dash, bash, busybox, zsh)
|
|
353
|
+
[ -O "$1" ] || private_refused "$1"
|
|
354
|
+
}
|
|
355
|
+
# private_refused names the mode and owner found on a cache folder that is
|
|
356
|
+
# not mode 0700 and owned by you.
|
|
357
|
+
private_refused() {
|
|
288
358
|
# shellcheck disable=SC2012 # ls -ldn is the portable way to read mode and uid
|
|
289
359
|
set -- "$1" "$(ls -ldn "$1" | awk '{ print $1 " " $3 }')"
|
|
290
|
-
|
|
291
|
-
"drwx------ $(id -u)"|"drwx------. $(id -u)"|"drwx------+ $(id -u)"|"drwx------@ $(id -u)") ;;
|
|
292
|
-
*) refuse "the cache directory $1 must be mode 0700 and owned by you (found ${2% *})" ;;
|
|
293
|
-
esac
|
|
360
|
+
refuse "the cache directory $1 must be mode 0700 and owned by you (found ${2% *})"
|
|
294
361
|
}
|
|
295
362
|
private_dir "$cache_root"
|
|
296
363
|
private_dir "$vdir"
|
|
364
|
+
# One find answers both folders' modes, printing each one that is exactly
|
|
365
|
+
# 0700.
|
|
366
|
+
if [ "$os" != windows ]; then
|
|
367
|
+
private=$(find "$cache_root" "$vdir" -prune -perm 0700)
|
|
368
|
+
for d in "$cache_root" "$vdir"; do
|
|
369
|
+
case "
|
|
370
|
+
$private
|
|
371
|
+
" in
|
|
372
|
+
*"
|
|
373
|
+
$d
|
|
374
|
+
"*) ;;
|
|
375
|
+
*) private_refused "$d" ;;
|
|
376
|
+
esac
|
|
377
|
+
done
|
|
378
|
+
fi
|
|
297
379
|
|
|
298
380
|
cached_ok() {
|
|
299
381
|
[ -f "$vdir/manifest.json" ] && [ -f "$vdir/$bin" ] || return 1
|
|
@@ -308,7 +390,7 @@ if ! cached_ok; then
|
|
|
308
390
|
|
|
309
391
|
# Step 3: download by exact tarball URL, HTTPS only, with a size cap.
|
|
310
392
|
|
|
311
|
-
|
|
393
|
+
digits "$max_bytes" || refuse "CLAUDINITE_MAX_DOWNLOAD_BYTES must be a number"
|
|
312
394
|
# A whole transfer may take as long as the cap at about 220 kB/s, and never
|
|
313
395
|
# less than 30 s: the 64 MiB default allows about 300 s. --max-filesize
|
|
314
396
|
# bounds only the compressed size, so the wall clock is what stops a
|
|
@@ -378,10 +460,13 @@ fi
|
|
|
378
460
|
|
|
379
461
|
# Step 5: link, unpack, run.
|
|
380
462
|
|
|
381
|
-
|
|
382
|
-
if !
|
|
383
|
-
|
|
384
|
-
|
|
463
|
+
# shellcheck disable=SC3013 # -ef is in every sh the launcher runs under (dash, bash, busybox, zsh)
|
|
464
|
+
if [ ! "$here/bin/$bin" -ef "$vdir/$bin" ]; then
|
|
465
|
+
mkdir -p "$here/bin" || refuse "cannot create $here/bin"
|
|
466
|
+
if ! ln -sfn "$vdir/$bin" "$here/bin/$bin" 2>/dev/null; then
|
|
467
|
+
rm -f "$here/bin/$bin"
|
|
468
|
+
cp "$vdir/$bin" "$here/bin/$bin" || refuse "cannot link or copy the engine into $here/bin"
|
|
469
|
+
fi
|
|
385
470
|
fi
|
|
386
471
|
# Unpacking the embedded runner script and SDK beside the binary is a no-op
|
|
387
472
|
# until the engine embeds them (no pack JavaScript runs yet).
|
package/manifest.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"v": 1,
|
|
3
|
-
"version": "1.
|
|
4
|
-
"builtAt": "2026-10-
|
|
5
|
-
"commit": "
|
|
3
|
+
"version": "1.61011.1",
|
|
4
|
+
"builtAt": "2026-10-11T14:21:06Z",
|
|
5
|
+
"commit": "be76a87",
|
|
6
6
|
"goVersion": "go1.24.13",
|
|
7
|
-
"updaterDigest": "
|
|
7
|
+
"updaterDigest": "ad53cefad388e31a7059dfbe5afc71479991a7aaa182d36cb9accde4f06a512b",
|
|
8
8
|
"binaries": {
|
|
9
|
-
"linux-x64": {"file": "cn", "sha256": "
|
|
9
|
+
"linux-x64": {"file": "cn", "sha256": "bb852b2a1789e0b1842572374668569dfb9e339f541d9e156fb9786b45230b14", "size": 12845240}
|
|
10
10
|
},
|
|
11
|
-
"launcher": "
|
|
11
|
+
"launcher": "314f37fe7a4a1d2fdc59de14d5e8903959d9bd1bc03971e36d6340ed805129cd",
|
|
12
12
|
"testedPacks": {}
|
|
13
13
|
}
|
package/manifest.sig.json
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
"payload": "eyJ2IjoxLCJrZXlJZCI6ImM3NzQwNWM2ZDA4NzExODYiLCJwdWJsaWNLZXkiOiI0UHlTQzRTbG5MakJ1cVY2Qll4eU9XWUtLOWkzV295NkZCQ1ZNckF6clRzIiwidXNlIjoibWFuaWZlc3QiLCJpc3N1ZXIiOiJlYTg1ZjM1NDIxZjM3NWZjIiwibm90QmVmb3JlIjoiMjAyNi0xMC0wM1QxNjozNjozN1oiLCJub3RBZnRlciI6IjIwMjctMTAtMDNUMTY6MzY6MzdaIn0",
|
|
4
4
|
"signature": "ex4GNEE3PIUj3Ue6X2TZnbB5E6G-DVrGNaYdvI13NuOauoJYilB_54TyAH490IS9-IZiu3BKVYpigm3uDTXSBw"
|
|
5
5
|
},
|
|
6
|
-
"signature": "
|
|
6
|
+
"signature": "hxOZ4q1fimMsTdk8VfxiYYXTNT64QJ2Bawx-__Moy2zpwUncpmEzEvbyctpQfkSTygcLcPaqInd2LEyHb6E6Dg"
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudinite/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.61011.1",
|
|
4
4
|
"description": "Claudinite engine release manifest and launcher",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"repository": {"type": "git", "url": "git+https://github.com/missingbulb/ClaudiniteEngine.git"},
|