@synkro-sh/cli 1.4.35 → 1.4.36
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/dist/bootstrap.js +64 -25
- package/dist/bootstrap.js.map +1 -1
- package/package.json +1 -1
package/dist/bootstrap.js
CHANGED
|
@@ -1294,30 +1294,36 @@ CWD=$(echo "$PAYLOAD" | jq -r '.cwd // empty' 2>/dev/null)
|
|
|
1294
1294
|
TRANSCRIPT_PATH=$(echo "$PAYLOAD" | jq -r '.transcript_path // empty' 2>/dev/null)
|
|
1295
1295
|
GIT_REPO=$(synkro_detect_repo "\${CWD:-.}")
|
|
1296
1296
|
|
|
1297
|
-
#
|
|
1297
|
+
# Aggregate token usage across all assistant turns in the transcript and POST silently
|
|
1298
1298
|
if [ -n "$TRANSCRIPT_PATH" ] && [ -f "$TRANSCRIPT_PATH" ]; then
|
|
1299
1299
|
(
|
|
1300
1300
|
_LAST=$(grep '"type":"assistant"' "$TRANSCRIPT_PATH" 2>/dev/null | tail -1)
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1301
|
+
CC_MODEL=$(echo "$_LAST" | jq -r '.message.model // empty' 2>/dev/null)
|
|
1302
|
+
TOTALS=$(grep '"type":"assistant"' "$TRANSCRIPT_PATH" 2>/dev/null \\
|
|
1303
|
+
| jq -c '.message.usage' 2>/dev/null \\
|
|
1304
|
+
| jq -s '{in:(map(.input_tokens//0)|add//0),out:(map(.output_tokens//0)|add//0),cw:(map(.cache_creation_input_tokens//0)|add//0),cr:(map(.cache_read_input_tokens//0)|add//0)}' 2>/dev/null \\
|
|
1305
|
+
|| echo '{"in":0,"out":0,"cw":0,"cr":0}')
|
|
1306
|
+
TOK_IN=$(echo "$TOTALS" | jq -r '.in // 0')
|
|
1307
|
+
TOK_OUT=$(echo "$TOTALS" | jq -r '.out // 0')
|
|
1308
|
+
TOK_CW=$(echo "$TOTALS" | jq -r '.cw // 0')
|
|
1309
|
+
TOK_CR=$(echo "$TOTALS" | jq -r '.cr // 0')
|
|
1310
|
+
HAS_TOKENS=$(( TOK_IN + TOK_OUT ))
|
|
1311
|
+
if [ "$HAS_TOKENS" != "0" ]; then
|
|
1312
|
+
CC_USAGE="{"input_tokens":$TOK_IN,"output_tokens":$TOK_OUT,"cache_creation_input_tokens":$TOK_CW,"cache_read_input_tokens":$TOK_CR}"
|
|
1313
|
+
BODY=$(jq -n \\
|
|
1314
|
+
--arg event_id "usage_$(date +%s)_$$" \\
|
|
1315
|
+
--arg hook_type "stop" --arg verdict "allow" --arg severity "none" \\
|
|
1316
|
+
--arg model "\${CC_MODEL:-claude-sonnet-4-6}" \\
|
|
1317
|
+
--arg cc_model "\${CC_MODEL:-}" \\
|
|
1318
|
+
--arg repo "\${GIT_REPO:-}" --arg session_id "$SESSION_ID" \\
|
|
1319
|
+
--argjson cc_usage "$CC_USAGE" \\
|
|
1320
|
+
'{capture_type:"local_verdict",event_id:$event_id,hook_type:$hook_type,verdict:$verdict,severity:$severity,model:$model,cc_usage:$cc_usage}
|
|
1321
|
+
+ (if $repo != "" then {repo:$repo} else {} end)
|
|
1322
|
+
+ (if $session_id != "" then {session_id:$session_id} else {} end)
|
|
1323
|
+
+ (if $cc_model != "" then {cc_model:$cc_model} else {} end)')
|
|
1324
|
+
curl -sS -X POST "\${GATEWAY_URL}/api/v1/hook/capture" \\
|
|
1325
|
+
-H "Content-Type: application/json" -H "Authorization: Bearer $JWT" \\
|
|
1326
|
+
-d "$BODY" --max-time 2 >/dev/null 2>&1
|
|
1321
1327
|
fi
|
|
1322
1328
|
) &
|
|
1323
1329
|
fi
|
|
@@ -1333,9 +1339,9 @@ FINDINGS=$(echo "$RESP" | jq -r '.findings // 0' 2>/dev/null)
|
|
|
1333
1339
|
AUTO_FIXED=$(echo "$RESP" | jq -r '.auto_fixed // 0' 2>/dev/null)
|
|
1334
1340
|
OPEN=$(echo "$RESP" | jq -r '.open // 0' 2>/dev/null)
|
|
1335
1341
|
|
|
1336
|
-
if [ "
|
|
1342
|
+
if [ "\${EDITS:-0}" = "0" ] || [ -z "$EDITS" ]; then echo '{}'; exit 0; fi
|
|
1337
1343
|
|
|
1338
|
-
if [ "
|
|
1344
|
+
if [ "\${FINDINGS:-0}" = "0" ] || [ -z "$FINDINGS" ]; then
|
|
1339
1345
|
SYS_MSG="[synkro] stop \u2192 0 issues across \${EDITS} edit(s), session complete"
|
|
1340
1346
|
else
|
|
1341
1347
|
SYS_MSG="[synkro] stop \u2192 \${FINDINGS} finding(s): \${AUTO_FIXED} auto-fixed, \${OPEN} open"
|
|
@@ -1444,7 +1450,6 @@ SCRIPT_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
|
1444
1450
|
|
|
1445
1451
|
JWT=$(synkro_load_jwt)
|
|
1446
1452
|
if [ -z "$JWT" ]; then echo '{}'; exit 0; fi
|
|
1447
|
-
if [ "\${SYNKRO_TRANSCRIPT_CONSENT:-yes}" = "no" ]; then echo '{}'; exit 0; fi
|
|
1448
1453
|
|
|
1449
1454
|
PAYLOAD=$(cat)
|
|
1450
1455
|
SESSION_ID=$(echo "$PAYLOAD" | jq -r '.session_id // empty' 2>/dev/null)
|
|
@@ -1455,6 +1460,40 @@ if [ -z "$SESSION_ID" ] || [ -z "$TRANSCRIPT_PATH" ] || [ ! -f "$TRANSCRIPT_PATH
|
|
|
1455
1460
|
echo '{}'; exit 0
|
|
1456
1461
|
fi
|
|
1457
1462
|
|
|
1463
|
+
# Usage telemetry \u2014 always fires (metadata only, ungated by privacy/consent)
|
|
1464
|
+
_LAST_ASST=$(grep '"type":"assistant"' "$TRANSCRIPT_PATH" 2>/dev/null | tail -1)
|
|
1465
|
+
if [ -n "$_LAST_ASST" ]; then
|
|
1466
|
+
_CC_MODEL=$(echo "$_LAST_ASST" | jq -r '.message.model // empty' 2>/dev/null)
|
|
1467
|
+
_TOTALS=$(grep '"type":"assistant"' "$TRANSCRIPT_PATH" 2>/dev/null \\
|
|
1468
|
+
| jq -c '.message.usage' 2>/dev/null \\
|
|
1469
|
+
| jq -s '{in:(map(.input_tokens//0)|add//0),out:(map(.output_tokens//0)|add//0),cw:(map(.cache_creation_input_tokens//0)|add//0),cr:(map(.cache_read_input_tokens//0)|add//0)}' 2>/dev/null \\
|
|
1470
|
+
|| echo '{"in":0,"out":0,"cw":0,"cr":0}')
|
|
1471
|
+
_TI=$(echo "$_TOTALS" | jq -r '.in // 0')
|
|
1472
|
+
_TO=$(echo "$_TOTALS" | jq -r '.out // 0')
|
|
1473
|
+
_TCW=$(echo "$_TOTALS" | jq -r '.cw // 0')
|
|
1474
|
+
_TCR=$(echo "$_TOTALS" | jq -r '.cr // 0')
|
|
1475
|
+
if [ "\${_TI:-0}" != "0" ] || [ "\${_TO:-0}" != "0" ]; then
|
|
1476
|
+
(
|
|
1477
|
+
_USAGE="{\\"input_tokens\\":$_TI,\\"output_tokens\\":$_TO,\\"cache_creation_input_tokens\\":$_TCW,\\"cache_read_input_tokens\\":$_TCR}"
|
|
1478
|
+
_BODY=$(jq -n \\
|
|
1479
|
+
--arg event_id "usage_$(date +%s)_$$" \\
|
|
1480
|
+
--arg hook_type "stop" --arg verdict "allow" --arg severity "none" \\
|
|
1481
|
+
--arg model "\${_CC_MODEL:-claude-sonnet-4-6}" \\
|
|
1482
|
+
--arg cc_model "\${_CC_MODEL:-}" \\
|
|
1483
|
+
--arg session_id "$SESSION_ID" \\
|
|
1484
|
+
--argjson cc_usage "$_USAGE" \\
|
|
1485
|
+
'{capture_type:"usage_tick",event_id:$event_id,hook_type:$hook_type,verdict:$verdict,severity:$severity,model:$model,cc_usage:$cc_usage,session_id:$session_id}
|
|
1486
|
+
+ (if $cc_model != "" then {cc_model:$cc_model} else {} end)')
|
|
1487
|
+
curl -sS -X POST "\${GATEWAY_URL}/api/v1/hook/capture" \\
|
|
1488
|
+
-H "Content-Type: application/json" -H "Authorization: Bearer $JWT" \\
|
|
1489
|
+
-d "$_BODY" --max-time 2 >/dev/null 2>&1
|
|
1490
|
+
) &
|
|
1491
|
+
fi
|
|
1492
|
+
fi
|
|
1493
|
+
|
|
1494
|
+
# Transcript sync below is gated by consent + capture depth
|
|
1495
|
+
if [ "\${SYNKRO_TRANSCRIPT_CONSENT:-yes}" = "no" ]; then echo '{}'; exit 0; fi
|
|
1496
|
+
|
|
1458
1497
|
GIT_REPO=$(synkro_detect_repo "\${CWD:-.}")
|
|
1459
1498
|
if [ -z "$GIT_REPO" ]; then echo '{}'; exit 0; fi
|
|
1460
1499
|
|
|
@@ -3907,7 +3946,7 @@ function writeConfigEnv(opts) {
|
|
|
3907
3946
|
`SYNKRO_CREDENTIALS_PATH=${shellQuoteSingle(credsPath)}`,
|
|
3908
3947
|
`SYNKRO_TIER=${shellQuoteSingle(safeTier)}`,
|
|
3909
3948
|
`SYNKRO_INFERENCE=${shellQuoteSingle(safeInference)}`,
|
|
3910
|
-
`SYNKRO_VERSION=${shellQuoteSingle("1.4.
|
|
3949
|
+
`SYNKRO_VERSION=${shellQuoteSingle("1.4.36")}`
|
|
3911
3950
|
];
|
|
3912
3951
|
if (safeSynkroBin) lines.push(`SYNKRO_CLI_BIN=${shellQuoteSingle(safeSynkroBin)}`);
|
|
3913
3952
|
if (safeUserId) lines.push(`SYNKRO_USER_ID=${shellQuoteSingle(safeUserId)}`);
|