Command: python -c "from pathlib import Path;import hashlib;p=Path(r'C:\Users\ash\ChatGPTMasterBridge\Code.gs');s=p.read_text(encoding='utf-8');marker='SCHEDULER_V2_SHADOW_ROUTES';
if marker in s: print('ALREADY_PATCHED');raise SystemExit(0)
const_anchor=\"const ARTIFACTS_SHEET = 'artifacts';\";const_add=const_anchor+\"\nconst CLIENTS_V2_SHEET = 'clients';\nconst COMMANDS_V2_SHEET = 'commands_v2';\nconst RESOURCE_LOCKS_V2_SHEET = 'resource_locks'; // SCHEDULER_V2_SHADOW_ROUTES\";assert s.count(const_anchor)==1;s=s.replace(const_anchor,const_add,1);route_anchor=\" if (action === 'heartbeat') return heartbeat_(bridge, target, body || {});\";route_add=route_anchor+\"\n if (action === 'clients_v2') return clientsV2_(bridge, target);\n if (action === 'command_v2') return commandV2_(bridge, target, body || params || {});\n if (action === 'shadow_commit_v2') return shadowCommitV2_(bridge, target, body || {});\";assert s.count(route_anchor)==1;s=s.replace(route_anchor,route_add,1);funcs=r'''
function clientsV2_(bridge, target) {
const sheet = sheetById_(bridge.spreadsheet_id, CLIENTS_V2_SHEET);
const lastRow = Math.min(sheet.getLastRow(), 100);
const values = lastRow > 0 ? sheet.getRange(1, 1, lastRow, 10).getValues() : [];
return json_({ ok: true, target: target, headers: values[0] || [], clients: values.slice(1), execution_enabled: false });
}
function commandV2_(bridge, target, body) {
const clientId = String(body.client_id || '');
const seq = Number(body.seq || 0);
if (!clientId || !seq) return json_({ ok: false, error: 'client_id_and_seq_required' }, 400);
const sheet = sheetById_(bridge.spreadsheet_id, COMMANDS_V2_SHEET);
const lastRow = sheet.getLastRow();
if (lastRow < 2) return json_({ ok: true, target: target, command: null, execution_enabled: false });
const startRow = Math.max(2, lastRow - 399);
const values = sheet.getRange(startRow, 1, lastRow - startRow + 1, 20).getValues();
for (let i = values.length - 1; i >= 0; i--) {
const row = values[i];
if (String(row[1] || '') === clientId && Number(row[2] || 0) === seq) {
return json_({ ok: true, target: target, command: { row: startRow + i, values: row }, execution_enabled: false });
}
}
return json_({ ok: true, target: target, command: null, searched_rows: values.length, execution_enabled: false });
}
function shadowCommitV2_(bridge, target, body) {
const selected = Array.isArray(body.selected) ? body.selected.slice(0, 3) : [];
const sheet = sheetById_(bridge.spreadsheet_id, RESOURCE_LOCKS_V2_SHEET);
const lastRow = sheet.getLastRow();
if (lastRow > 1) sheet.getRange(2, 1, lastRow - 1, 8).clearContent();
const rows = [];
selected.forEach(function(item) {
const resources = Array.isArray(item.resources) ? item.resources : [];
resources.forEach(function(resource) {
rows.push([String(resource), String(item.command_id || ''), String(item.client_id || ''), 'shadow-v2', String(item.fence_token || ''), String(item.lease_until || ''), nowIso_(), 'shadow']);
});
});
if (rows.length) sheet.getRange(2, 1, rows.length, 8).setValues(rows);
setStateValueById_(bridge.spreadsheet_id, 'scheduler_v2_shadow_heartbeat', nowIso_(), 'Shadow scheduler observation only; execution disabled');
return json_({ ok: true, target: target, locks_written: rows.length, execution_enabled: false });
}
''';s=s+funcs;p.write_text(s,encoding='utf-8');print('PATCHED=1');print('SHA256='+hashlib.sha256(s.encode()).hexdigest())"
Directory: projects
Status: SUCCESS
Exit code: 0