@astrosheep/square 0.3.40 → 0.3.42

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "square",
3
- "version": "0.3.40",
3
+ "version": "0.3.42",
4
4
  "description": "Native Claude Code turn-boundary delivery for Square participants",
5
5
  "author": {
6
6
  "name": "Square"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "square",
3
- "version": "0.3.40",
3
+ "version": "0.3.42",
4
4
  "description": "Shared Square activity with reliable participant attention at Codex boundaries.",
5
5
  "author": {
6
6
  "name": "Square"
@@ -7,7 +7,7 @@ export function previewAttentionBody(body) {
7
7
  const compact = body.replace(/\r\n/g, '\n');
8
8
  if (compact.length <= ATTENTION_BODY_MAX)
9
9
  return compact;
10
- return `${compact.slice(0, ATTENTION_BODY_MAX).trimEnd()}\n… preview only`;
10
+ return `${compact.slice(0, ATTENTION_BODY_MAX).trimEnd()}…`;
11
11
  }
12
12
  export function displayAttentionPath(squarePath) {
13
13
  return squarePath.startsWith(homedir())
@@ -15,7 +15,7 @@ const providerEnv = {
15
15
  codex: 'CODEX_THREAD_ID',
16
16
  claude: 'CLAUDE_CODE_SESSION_ID',
17
17
  opencode: 'OPENCODE_SESSION_ID',
18
- pi: 'SQUARE_PI_SESSION_ID',
18
+ pi: 'PI_SESSION_ID',
19
19
  };
20
20
  function operationEnv(provider, sessionId, env) {
21
21
  return { ...env, [providerEnv[provider]]: sessionId };
@@ -39,7 +39,6 @@ function renderBoundary(inbox) {
39
39
  const blocks = [];
40
40
  const complete = [];
41
41
  let omitted = 0;
42
- const duplicateHint = 'ignore if you have already seen this.';
43
42
  for (const [index, entry] of queued.entries()) {
44
43
  const { membership, notification } = entry;
45
44
  const block = [
@@ -60,7 +59,6 @@ function renderBoundary(inbox) {
60
59
  ...(omittedAfter > 0
61
60
  ? [`… ${omittedAfter} ${omittedAfter === 1 ? 'notification' : 'notifications'} omitted.`]
62
61
  : []),
63
- duplicateHint,
64
62
  ...footer,
65
63
  ].join('\n');
66
64
  if (prospective.length > CONTEXT_MAX) {
@@ -81,7 +79,6 @@ function renderBoundary(inbox) {
81
79
  ...(omitted > 0
82
80
  ? [`… ${omitted} ${omitted === 1 ? 'notification' : 'notifications'} omitted.`]
83
81
  : []),
84
- duplicateHint,
85
82
  ...footer,
86
83
  ].join('\n'),
87
84
  complete,
@@ -7,7 +7,7 @@ const nativeSessions = [
7
7
  { variable: 'CLAUDE_CODE_SESSION_ID', provider: 'claude' },
8
8
  { variable: 'CODEX_THREAD_ID', provider: 'codex' },
9
9
  { variable: 'OPENCODE_SESSION_ID', provider: 'opencode' },
10
- { variable: 'SQUARE_PI_SESSION_ID', provider: 'pi' },
10
+ { variable: 'PI_SESSION_ID', provider: 'pi' },
11
11
  ];
12
12
  export function automaticParticipant(provider, sessionId, env) {
13
13
  const configured = env.SQUARE_PARTICIPANT_NAME?.trim();
package/dist/registry.js CHANGED
@@ -10,7 +10,7 @@ const LOCAL_SESSION_SOURCES = [
10
10
  { variable: 'CLAUDE_CODE_SESSION_ID', channel: 'claude-code', child: 'CLAUDE_CODE_CHILD_SESSION' },
11
11
  { variable: 'CODEX_THREAD_ID', channel: 'codex' },
12
12
  { variable: 'OPENCODE_SESSION_ID', channel: 'opencode' },
13
- { variable: 'SQUARE_PI_SESSION_ID', channel: 'pi' },
13
+ { variable: 'PI_SESSION_ID', channel: 'pi' },
14
14
  ];
15
15
  export function registryPath(env = process.env) { return env.SQUARE_REGISTRY || path.join(homedir(), '.square', 'sessions.ndjsonl'); }
16
16
  export async function canonicalSquarePath(squarePath) { const absolute = path.resolve(squarePath); try {
@@ -8,7 +8,7 @@ import { publishWakeRoute, retireWakeRouteFromArtifact, resolvePrimaryWakeRoute,
8
8
  function processIdentity(env) {
9
9
  const choices = [
10
10
  [env.CLAUDE_CODE_SESSION_ID, 'claude-code'], [env.CODEX_THREAD_ID, 'codex'],
11
- [env.OPENCODE_SESSION_ID, 'opencode'], [env.SQUARE_PI_SESSION_ID, 'pi'], [env.PASEO_AGENT_ID, 'paseo'],
11
+ [env.OPENCODE_SESSION_ID, 'opencode'], [env.PI_SESSION_ID, 'pi'], [env.PASEO_AGENT_ID, 'paseo'],
12
12
  ];
13
13
  const found = choices.find(([session]) => session?.trim());
14
14
  return found === undefined ? { session: `process:${process.pid}`, channel: 'unknown' } : { session: found[0].trim(), channel: found[1] };
@@ -28,7 +28,7 @@ export async function projectSessionBindings(input) {
28
28
  return rows.map(bindingProjection);
29
29
  }
30
30
  export function sessionIdsFromEnvironment(env = process.env) {
31
- return [env.CLAUDE_CODE_SESSION_ID, env.CODEX_THREAD_ID, env.OPENCODE_SESSION_ID, env.SQUARE_PI_SESSION_ID, env.PASEO_AGENT_ID]
31
+ return [env.CLAUDE_CODE_SESSION_ID, env.CODEX_THREAD_ID, env.OPENCODE_SESSION_ID, env.PI_SESSION_ID, env.PASEO_AGENT_ID]
32
32
  .map((value) => value?.trim()).filter((value) => Boolean(value));
33
33
  }
34
34
  export async function projectLocalParticipantBinding(input) {
@@ -85,7 +85,7 @@ export class Square {
85
85
  async recognize(env) {
86
86
  if (this.square.hostLedger === undefined)
87
87
  return null;
88
- const sessions = [env.CLAUDE_CODE_SESSION_ID, env.CODEX_THREAD_ID, env.OPENCODE_SESSION_ID, env.SQUARE_PI_SESSION_ID, env.PASEO_AGENT_ID]
88
+ const sessions = [env.CLAUDE_CODE_SESSION_ID, env.CODEX_THREAD_ID, env.OPENCODE_SESSION_ID, env.PI_SESSION_ID, env.PASEO_AGENT_ID]
89
89
  .map((value) => value?.trim()).filter((value) => Boolean(value));
90
90
  if (sessions.length === 0)
91
91
  return null;
@@ -34,7 +34,6 @@ export default function squarePiExtension(pi) {
34
34
  let sessionId;
35
35
  let sessionCwd;
36
36
  let joiningContext;
37
- let previousSessionId;
38
37
  let watcher;
39
38
  let watcherAbort;
40
39
  let generation = 0;
@@ -197,8 +196,6 @@ export default function squarePiExtension(pi) {
197
196
  retryWait = undefined;
198
197
  sessionId = ctx.sessionManager.getSessionId();
199
198
  sessionCwd = ctx.cwd || process.cwd();
200
- previousSessionId = process.env.SQUARE_PI_SESSION_ID;
201
- process.env.SQUARE_PI_SESSION_ID = sessionId;
202
199
  joiningContext = undefined;
203
200
  void automaticSessionStart('pi', sessionId, sessionCwd).catch(() => undefined);
204
201
  watcherAbort = new AbortController();
@@ -233,10 +230,6 @@ export default function squarePiExtension(pi) {
233
230
  for (const waiter of settledWaiters) waiter.resolve();
234
231
  settledWaiters = [];
235
232
  if (sessionId && sessionCwd) void automaticSessionEnd('pi', sessionId, sessionCwd).catch(() => undefined);
236
- if (process.env.SQUARE_PI_SESSION_ID === sessionId) {
237
- if (previousSessionId === undefined) delete process.env.SQUARE_PI_SESSION_ID;
238
- else process.env.SQUARE_PI_SESSION_ID = previousSessionId;
239
- }
240
233
  sessionId = undefined;
241
234
  sessionCwd = undefined;
242
235
  joiningContext = undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrosheep/square",
3
- "version": "0.3.40",
3
+ "version": "0.3.42",
4
4
  "description": "A shared public square where agents join, catch activity, express, and step out when done.",
5
5
  "type": "module",
6
6
  "bin": {