@synkro-sh/cli 1.6.0 → 1.6.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/dist/bootstrap.js CHANGED
@@ -2011,6 +2011,7 @@ async function main() {
2011
2011
  'Last user prompt: ' + (lastPrompt || 'none'),
2012
2012
  'Org rules: ' + JSON.stringify(config.rules),
2013
2013
  'IMPORTANT: If a rule is violated, ALWAYS return ok=false with the rule_id and reason, regardless of the rule mode. Do NOT pass a command just because the rule mode is "fix". The enforcement layer handles ask vs fix \u2014 your job is only to detect violations.',
2014
+ 'When passing (ok=true), for EVERY rule: state whether it is relevant to this edit, and if relevant, why it passes. Format: "R001 (not relevant: no deployment). R003 relevant: no hardcoded secrets in file." Cover ALL rules \u2014 do not skip any. Be terse but specific per rule.',
2014
2015
  ].join('\\n');
2015
2016
 
2016
2017
  let gradeResp: string;
@@ -2944,6 +2945,16 @@ async function main() {
2944
2945
 
2945
2946
  if (isSafeInRepoRead(toolName, command, cwd)) {
2946
2947
  log('bashGuard ' + cmdShort + ' → instant allow (safe in-repo read)');
2948
+ appendLocalTelemetry({
2949
+ capture_type: 'local_verdict',
2950
+ verdict: 'pass',
2951
+ hook_type: 'bash',
2952
+ category: 'safe_read',
2953
+ tool_name: toolName,
2954
+ command: command.slice(0, 200),
2955
+ session_id: sessionId,
2956
+ repo: cwd,
2957
+ });
2947
2958
  outputJson({
2948
2959
  systemMessage: tagStr + ' bashGuard → pass: safe in-repo read',
2949
2960
  hookSpecificOutput: {
@@ -3077,7 +3088,7 @@ async function main() {
3077
3088
  'Last user prompt: ' + (lastPrompt || 'none'),
3078
3089
  'Org rules: ' + JSON.stringify(config.rules),
3079
3090
  'IMPORTANT: If a rule is violated, ALWAYS return ok=false with the rule_id and reason, regardless of the rule mode. Do NOT pass a command just because the rule mode is "fix". The enforcement layer handles ask vs fix — your job is only to detect violations.',
3080
- 'When passing (ok=true), cite which rules you checked and why they passed (e.g. "R006 satisfied: typecheck found in session history"). Be specific, not generic.',
3091
+ 'When passing (ok=true), for EVERY rule: state whether it is relevant to this command, and if relevant, why it passes. Format: "R001 (not relevant: no deployment). R003 relevant: no secrets in grep args. R005 relevant: in-repo path only." Cover ALL rules — do not skip any. Be terse but specific per rule.',
3081
3092
  'Rules with preconditions (e.g. "run X before Y") are CONSUMED after the protected action completes. Use the session history timestamps to determine ordering: a precondition satisfied before the last occurrence of the protected action does NOT satisfy the next occurrence. Each new protected action needs its precondition re-satisfied.',
3082
3093
  ].filter(Boolean).join('\\n');
3083
3094
 
@@ -5990,7 +6001,7 @@ function writeConfigEnv(opts) {
5990
6001
  `SYNKRO_CREDENTIALS_PATH=${shellQuoteSingle(credsPath)}`,
5991
6002
  `SYNKRO_TIER=${shellQuoteSingle(safeTier)}`,
5992
6003
  `SYNKRO_INFERENCE=${shellQuoteSingle(safeInference)}`,
5993
- `SYNKRO_VERSION=${shellQuoteSingle("1.6.0")}`
6004
+ `SYNKRO_VERSION=${shellQuoteSingle("1.6.2")}`
5994
6005
  ];
5995
6006
  if (safeSynkroBin) lines.push(`SYNKRO_CLI_BIN=${shellQuoteSingle(safeSynkroBin)}`);
5996
6007
  if (safeUserId) lines.push(`SYNKRO_USER_ID=${shellQuoteSingle(safeUserId)}`);
@@ -7442,7 +7453,7 @@ var args = process.argv.slice(2);
7442
7453
  var cmd = args[0] || "";
7443
7454
  var subArgs = args.slice(1);
7444
7455
  function printVersion() {
7445
- console.log("1.6.0");
7456
+ console.log("1.6.2");
7446
7457
  }
7447
7458
  function printHelp() {
7448
7459
  console.log(`Synkro CLI \u2014 runtime safety for AI coding agents