@linzumi/cli 1.0.148 → 1.0.150

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linzumi/cli",
3
- "version": "1.0.148",
3
+ "version": "1.0.150",
4
4
  "description": "Linzumi CLI \u2014 point a Codex agent at the real code on your laptop, with your team watching and steering from shared threads.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -42,7 +42,9 @@ import {
42
42
  generationHelloEnvelope,
43
43
  generationOverlapFlagEnvKey,
44
44
  generationStillbornWindowEnvKey,
45
+ generationTtyOwnerEnvKey,
45
46
  isGenerationOverlapEnabled,
47
+ isGenerationTtyOwner,
46
48
  parseGenerationIpcMessage,
47
49
  readGenerationEpoch,
48
50
  readGenerationHandoffPid,
@@ -209,10 +211,12 @@ function runCase(input) {
209
211
  epochKey: generationEpochEnvKey,
210
212
  handoffPidKey: generationHandoffPidEnvKey,
211
213
  stillbornWindowKey: generationStillbornWindowEnvKey,
214
+ ttyOwnerKey: generationTtyOwnerEnvKey,
212
215
  defaultStillbornWindowMs: defaultGenerationStillbornWindowMs,
213
216
  };
214
217
  case 'envRead': {
215
218
  if (input.which === 'enabled') return isGenerationOverlapEnabled(input.env);
219
+ if (input.which === 'ttyOwner') return isGenerationTtyOwner(input.env);
216
220
  if (input.which === 'epoch') return readGenerationEpoch(input.env) ?? null;
217
221
  if (input.which === 'handoffPid')
218
222
  return readGenerationHandoffPid(input.env) ?? null;
@@ -58,6 +58,7 @@ import {
58
58
  generationEpochEnvKey,
59
59
  generationHandoffPidEnvKey,
60
60
  generationOverlapFlagEnvKey,
61
+ generationTtyOwnerEnvKey,
61
62
  } from './src/generationOverlap';
62
63
  import { defaultLinzumiWebSocketUrl } from './src/defaultUrls';
63
64
  import {
@@ -181,6 +182,10 @@ async function runSupervisionCaseInner(caseInput) {
181
182
  epoch: generation.epoch,
182
183
  handoffFromPid: generation.handoffFromPid ?? null,
183
184
  ipc: generation.onMessage !== undefined,
185
+ // B7a: the TTY single-owner stamp is part of the pinned
186
+ // spawn contract - an incoming overlap child must never be
187
+ // spawned as an owner.
188
+ ttyOwner: generation.ttyOwner,
184
189
  },
185
190
  envDelta:
186
191
  generation === undefined
@@ -188,6 +193,7 @@ async function runSupervisionCaseInner(caseInput) {
188
193
  : {
189
194
  [supervisedChildEnvKey]: '1',
190
195
  [generationEpochEnvKey]: String(generation.epoch),
196
+ [generationTtyOwnerEnvKey]: generation.ttyOwner ? '1' : '0',
191
197
  ...(generation.handoffFromPid === undefined
192
198
  ? {}
193
199
  : {
@@ -635,6 +641,7 @@ async function runCase(input) {
635
641
  generationOverlapFlagEnvKey,
636
642
  generationEpochEnvKey,
637
643
  generationHandoffPidEnvKey,
644
+ generationTtyOwnerEnvKey,
638
645
  defaultGenerationStillbornWindowMs,
639
646
  defaultSupervisorTiming,
640
647
  defaultLinzumiWebSocketUrl,