@volter/supercode-teams 0.3.117 → 0.3.118

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.
Files changed (2) hide show
  1. package/bin/workspace.mjs +19 -0
  2. package/package.json +2 -2
package/bin/workspace.mjs CHANGED
@@ -1064,6 +1064,10 @@ async function connectorCommand(verb, { flags, rest, output, client, context, te
1064
1064
  // The service's own run (no terminal; no flag, or --foreground on Windows) never adds a rule or returns early: a
1065
1065
  // service whose folder is not among the roots (an enrollment from before roots were kept) only gets its root back.
1066
1066
  const serviceRun = !addingRoot && !flags.install && !(process.stdin.isTTY && process.stdout.isTTY) && (!flags.foreground || process.platform === 'win32');
1067
+ // A service's error log keeps no time of its own: each line the connector writes there is stamped, so an outage,
1068
+ // a restart or a refused link can be placed against the server's and the service manager's records (2026-10-06:
1069
+ // a restart and a window of "temporarily unavailable" could be timed only from a killed process's uptime).
1070
+ if (serviceRun) stampStderr();
1067
1071
  // A folder a person adds gets its sync rule first, whatever runs the connector, so a refused or failed rule leaves
1068
1072
  // the enrollment as it was; a machine context adds none.
1069
1073
  const addedRule = (addedRoot || addingRoot) && !serviceRun && !context.machine_only ? await addedRootRule({ team, saved, root, harnesses: ruleHarnesses, flags }).catch(error => { core.close(); throw error; }) : null;
@@ -1462,3 +1466,18 @@ if (import.meta.url === new URL(`file://${process.argv[1]}`).href) workspaceMain
1462
1466
  // still holds the event loop open gets a moment, then the exit is forced.
1463
1467
  setTimeout(() => process.exit(process.exitCode), 2_000).unref();
1464
1468
  });
1469
+
1470
+ /** Every line this process writes to stderr from here on, stamped with its UTC time (a write's line starts only). */
1471
+ function stampStderr() {
1472
+ if (process.stderr.__stamped) return;
1473
+ const write = process.stderr.write.bind(process.stderr);
1474
+ let atStart = true;
1475
+ process.stderr.write = (chunk, ...rest) => {
1476
+ const text = typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString('utf8');
1477
+ const stamp = new Date().toISOString();
1478
+ const stamped = text.replace(/(^|\n)(?=[^\n])/g, (match, newline, offset) => (offset === 0 && !atStart ? match : `${newline}${stamp} `));
1479
+ atStart = text.endsWith('\n');
1480
+ return write(stamped, ...rest);
1481
+ };
1482
+ process.stderr.__stamped = true;
1483
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volter/supercode-teams",
3
- "version": "0.3.117",
3
+ "version": "0.3.118",
4
4
  "type": "module",
5
5
  "description": "A machine daemon serving this machine's doors, and a local or remote Teams server for shared session discovery, OpenTelemetry ingestion and access to enrolled machines.",
6
6
  "license": "MIT",
@@ -70,7 +70,7 @@
70
70
  "@volter/supercode-health": "^0.1.0",
71
71
  "@volter/supercode-terminal": "^0.2.54",
72
72
  "@volter/supercode-trace": "^0.1.0",
73
- "@volter/teams": "0.2.33",
73
+ "@volter/teams": "0.2.34",
74
74
  "@xterm/addon-serialize": "^0.14.0",
75
75
  "@xterm/headless": "^6.0.0",
76
76
  "protobufjs": "8.8.0",