@astrosheep/square 0.3.62 → 0.3.64

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 (168) hide show
  1. package/claude-plugin/.claude-plugin/plugin.json +3 -2
  2. package/claude-plugin/hooks/hooks.json +1 -22
  3. package/claude-plugin/hooks/register.js +119 -0
  4. package/claude-plugin/types.d.ts +7 -0
  5. package/codex-plugin/.codex-plugin/plugin.json +1 -1
  6. package/dist/activity-feed.d.ts +1 -10
  7. package/dist/activity-feed.js +1 -27
  8. package/dist/activity.js +57 -25
  9. package/dist/artifact.js +12 -24
  10. package/dist/attention-presentation.js +1 -0
  11. package/dist/automatic-session.d.ts +3 -1
  12. package/dist/automatic-session.js +21 -34
  13. package/dist/boundary-presentation.js +4 -13
  14. package/dist/canonical-path.d.ts +11 -0
  15. package/dist/canonical-path.js +47 -0
  16. package/dist/catch-decisions.js +14 -10
  17. package/dist/catch-selection.d.ts +6 -0
  18. package/dist/catch-selection.js +14 -0
  19. package/dist/claude-delivery.d.ts +11 -0
  20. package/dist/claude-delivery.js +145 -0
  21. package/dist/claude-mod.d.ts +8 -0
  22. package/dist/claude-mod.js +164 -0
  23. package/dist/cli/context.d.ts +0 -1
  24. package/dist/cli/context.js +9 -21
  25. package/dist/cli/harness-command.d.ts +0 -1
  26. package/dist/cli/harness-command.js +0 -6
  27. package/dist/cli/observation-commands.d.ts +1 -1
  28. package/dist/cli/observation-commands.js +31 -58
  29. package/dist/cli/program.js +20 -18
  30. package/dist/cli/registry.js +2 -2
  31. package/dist/cli/square-commands.js +10 -6
  32. package/dist/codex-hook.js +9 -12
  33. package/dist/codex-queue.d.ts +2 -2
  34. package/dist/codex-queue.js +7 -5
  35. package/dist/decisions.d.ts +2 -6
  36. package/dist/decisions.js +16 -17
  37. package/dist/delivery-health.d.ts +1 -2
  38. package/dist/delivery-health.js +4 -5
  39. package/dist/delivery-operations.d.ts +2 -5
  40. package/dist/delivery-operations.js +77 -214
  41. package/dist/delivery.d.ts +25 -47
  42. package/dist/delivery.js +14 -46
  43. package/dist/diagnostic-redaction.js +7 -9
  44. package/dist/file-changes.d.ts +0 -1
  45. package/dist/file-changes.js +2 -19
  46. package/dist/harness-claude.js +8 -6
  47. package/dist/harness-codex.d.ts +0 -2
  48. package/dist/harness-codex.js +0 -2
  49. package/dist/harness-links.js +13 -17
  50. package/dist/harness.js +3 -7
  51. package/dist/help.js +4 -3
  52. package/dist/host-ledger-file-adapter.d.ts +17 -8
  53. package/dist/host-ledger-file-adapter.js +164 -80
  54. package/dist/host-ledger.d.ts +55 -50
  55. package/dist/inbox.d.ts +0 -3
  56. package/dist/inbox.js +13 -30
  57. package/dist/index.d.ts +1 -1
  58. package/dist/index.js +1 -1
  59. package/dist/list.js +1 -4
  60. package/dist/mcp.js +18 -40
  61. package/dist/mention-parse.js +3 -9
  62. package/dist/model.d.ts +11 -2
  63. package/dist/model.js +1 -1
  64. package/dist/notifications.d.ts +3 -16
  65. package/dist/notifications.js +41 -122
  66. package/dist/opencode-delivery.d.ts +14 -0
  67. package/dist/opencode-delivery.js +171 -0
  68. package/dist/opencode.d.ts +39 -18
  69. package/dist/opencode.js +145 -40
  70. package/dist/packages/agent-delivery/src/claude-auth.d.ts +13 -0
  71. package/dist/packages/agent-delivery/src/claude-auth.js +70 -0
  72. package/dist/packages/agent-delivery/src/claude-native.d.ts +28 -0
  73. package/dist/packages/agent-delivery/src/claude-native.js +65 -0
  74. package/dist/packages/agent-delivery/src/claude.d.ts +14 -0
  75. package/dist/packages/agent-delivery/src/claude.js +66 -0
  76. package/dist/packages/agent-delivery/src/deadline.d.ts +11 -0
  77. package/dist/packages/agent-delivery/src/deadline.js +41 -0
  78. package/dist/packages/agent-delivery/src/errors.d.ts +16 -0
  79. package/dist/packages/agent-delivery/src/errors.js +41 -0
  80. package/dist/packages/agent-delivery/src/guards.d.ts +6 -0
  81. package/dist/packages/agent-delivery/src/guards.js +6 -0
  82. package/dist/packages/agent-delivery/src/index.d.ts +83 -0
  83. package/dist/packages/agent-delivery/src/index.js +110 -0
  84. package/dist/packages/agent-delivery/src/local-endpoint.d.ts +26 -0
  85. package/dist/packages/agent-delivery/src/local-endpoint.js +114 -0
  86. package/dist/packages/agent-delivery/src/opencode-native.d.ts +33 -0
  87. package/dist/packages/agent-delivery/src/opencode-native.js +75 -0
  88. package/dist/packages/agent-delivery/src/opencode.d.ts +14 -0
  89. package/dist/packages/agent-delivery/src/opencode.js +127 -0
  90. package/dist/packages/agent-delivery/src/paseo-native.d.ts +58 -0
  91. package/dist/packages/agent-delivery/src/paseo-native.js +122 -0
  92. package/dist/packages/agent-delivery/src/paseo.d.ts +19 -0
  93. package/dist/packages/agent-delivery/src/paseo.js +106 -0
  94. package/dist/packages/agent-delivery/src/pi-client.d.ts +10 -0
  95. package/dist/packages/agent-delivery/src/pi-client.js +106 -0
  96. package/dist/packages/agent-delivery/src/pi-protocol.d.ts +15 -0
  97. package/dist/packages/agent-delivery/src/pi-protocol.js +50 -0
  98. package/dist/packages/agent-delivery/src/pi-send.d.ts +23 -0
  99. package/dist/packages/agent-delivery/src/pi-send.js +4 -0
  100. package/dist/packages/agent-delivery/src/pi.d.ts +25 -0
  101. package/dist/packages/agent-delivery/src/pi.js +209 -0
  102. package/dist/packages/agent-delivery/src/types.d.ts +120 -0
  103. package/dist/participant-host.js +12 -13
  104. package/dist/participant-identity.d.ts +21 -0
  105. package/dist/participant-identity.js +32 -11
  106. package/dist/paseo-delivery.d.ts +2 -2
  107. package/dist/paseo-delivery.js +35 -27
  108. package/dist/paseo-timeline.js +25 -21
  109. package/dist/paseo.d.ts +2 -2
  110. package/dist/paseo.js +1 -2
  111. package/dist/ports.d.ts +7 -20
  112. package/dist/presentation-operations.js +16 -4
  113. package/dist/presentation.d.ts +19 -10
  114. package/dist/presentation.js +99 -177
  115. package/dist/registry.d.ts +15 -66
  116. package/dist/registry.js +45 -123
  117. package/dist/routes.d.ts +1 -28
  118. package/dist/routes.js +22 -104
  119. package/dist/runtime.d.ts +3 -9
  120. package/dist/runtime.js +14 -67
  121. package/dist/search.d.ts +0 -2
  122. package/dist/search.js +3 -10
  123. package/dist/square-actions.js +48 -72
  124. package/dist/square-application.js +25 -23
  125. package/dist/square-core.d.ts +3 -0
  126. package/dist/square-core.js +22 -5
  127. package/dist/square-facade.d.ts +2 -0
  128. package/dist/square-file-adapter.js +4 -7
  129. package/dist/square-projections.d.ts +40 -45
  130. package/dist/square-projections.js +43 -73
  131. package/dist/square-state.js +1 -4
  132. package/dist/square-storage.d.ts +5 -8
  133. package/dist/square-storage.js +13 -36
  134. package/dist/square-wiring.d.ts +0 -5
  135. package/dist/square-wiring.js +3 -21
  136. package/dist/stream.js +4 -6
  137. package/dist/time.js +2 -7
  138. package/dist/views.d.ts +4 -16
  139. package/dist/views.js +12 -19
  140. package/dist/wake-attempts.d.ts +2 -56
  141. package/dist/wake-attempts.js +15 -110
  142. package/dist/wake-eligibility.d.ts +43 -0
  143. package/dist/wake-eligibility.js +106 -0
  144. package/dist/wake-evidence.d.ts +32 -9
  145. package/dist/wake-evidence.js +29 -24
  146. package/dist/wake-sink.d.ts +13 -9
  147. package/dist/wake-sink.js +35 -54
  148. package/dist/watch.js +13 -21
  149. package/extensions/square-pi.js +10 -5
  150. package/guides/architect.md +77 -77
  151. package/guides/brainstorm.md +197 -197
  152. package/guides/claude-native.md +101 -0
  153. package/guides/host-ledger.md +3 -1
  154. package/guides/participant.md +14 -7
  155. package/guides/pi-native-delivery.md +43 -0
  156. package/package.json +4 -3
  157. package/dist/claude-hook.d.ts +0 -10
  158. package/dist/claude-hook.js +0 -60
  159. package/dist/paseo-connection.d.ts +0 -15
  160. package/dist/paseo-connection.js +0 -141
  161. package/dist/presence.d.ts +0 -2
  162. package/dist/presence.js +0 -24
  163. package/dist/presented.d.ts +0 -2
  164. package/dist/presented.js +0 -10
  165. package/dist/state-cell.d.ts +0 -14
  166. package/dist/wake-port.d.ts +0 -23
  167. package/dist/wake-port.js +0 -27
  168. /package/dist/{state-cell.js → packages/agent-delivery/src/types.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { setTimeout as sleep } from 'node:timers/promises';
2
- import { connectPaseoDaemon } from './paseo-connection.js';
2
+ import { daemonCredential, openPaseoClient, resolvePaseoDaemon, } from './packages/agent-delivery/src/paseo-native.js';
3
3
  async function waitSnapshots(agentId, read, opts) {
4
4
  const initial = await read(agentId);
5
5
  if (initial.agentStatus === 'idle')
@@ -25,19 +25,6 @@ async function waitSnapshots(agentId, read, opts) {
25
25
  }
26
26
  return false;
27
27
  }
28
- function snapshotFromPayload(payload) {
29
- const tools = new Map();
30
- for (const entry of payload.entries ?? []) {
31
- const item = entry.item;
32
- if (item.type === 'tool_call' && ['running', 'completed', 'failed'].includes(item.status)) {
33
- tools.set(item.callId, item.status);
34
- }
35
- }
36
- return {
37
- agentStatus: payload.agent?.status ?? 'unknown',
38
- toolCalls: [...tools].map(([callId, status]) => ({ callId, status })),
39
- };
40
- }
41
28
  export async function waitForPaseoToolBoundary(agentId, opts = {}) {
42
29
  if (opts.readSnapshot !== undefined) {
43
30
  try {
@@ -47,15 +34,32 @@ export async function waitForPaseoToolBoundary(agentId, opts = {}) {
47
34
  return false;
48
35
  }
49
36
  }
37
+ const target = resolvePaseoDaemon(undefined);
38
+ if (target === undefined)
39
+ return false;
50
40
  let client;
51
41
  try {
52
- client = await connectPaseoDaemon();
53
- return await waitSnapshots(agentId, async (id) => snapshotFromPayload(await client.fetchAgentTimeline(id, {
54
- direction: 'tail',
55
- limit: 200,
56
- projection: 'projected',
57
- timeout: 3_000,
58
- })), opts);
42
+ client = await openPaseoClient(target, daemonCredential({ endpointPassword: target.password }), 3_000);
43
+ return await waitSnapshots(agentId, async (id) => {
44
+ const payload = await client.fetchAgentTimeline(id, {
45
+ direction: 'tail',
46
+ limit: 200,
47
+ projection: 'projected',
48
+ timeout: 3_000,
49
+ });
50
+ const tools = new Map();
51
+ for (const entry of payload.entries ?? []) {
52
+ const { type, callId, status } = entry.item;
53
+ if (type === 'tool_call' && callId !== undefined &&
54
+ (status === 'running' || status === 'completed' || status === 'failed')) {
55
+ tools.set(callId, status);
56
+ }
57
+ }
58
+ return {
59
+ agentStatus: payload.agent?.status ?? 'unknown',
60
+ toolCalls: [...tools].map(([callId, status]) => ({ callId, status })),
61
+ };
62
+ }, opts);
59
63
  }
60
64
  catch {
61
65
  return false;
package/dist/paseo.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /** Optional Paseo integration. Importing this entry requires the Paseo peer dependencies. */
2
2
  export { PaseoAdapter } from './paseo-delivery.js';
3
- export { PaseoWakeSendError, sendPaseoWake } from './wake-sink.js';
4
- export { connectPaseoDaemon, paseoDaemonHosts, resolvePaseoDaemonTarget, } from './paseo-connection.js';
3
+ export { paseoWakeMessageId, sendPaseoWake } from './wake-sink.js';
4
+ export type { PaseoWakeRequest } from './wake-sink.js';
5
5
  export { discoverPaseoAgents, waitForPaseoWakeBoundary } from './paseo-state.js';
6
6
  export type { PaseoAgent } from './paseo-state.js';
package/dist/paseo.js CHANGED
@@ -1,5 +1,4 @@
1
1
  /** Optional Paseo integration. Importing this entry requires the Paseo peer dependencies. */
2
2
  export { PaseoAdapter } from './paseo-delivery.js';
3
- export { PaseoWakeSendError, sendPaseoWake } from './wake-sink.js';
4
- export { connectPaseoDaemon, paseoDaemonHosts, resolvePaseoDaemonTarget, } from './paseo-connection.js';
3
+ export { paseoWakeMessageId, sendPaseoWake } from './wake-sink.js';
5
4
  export { discoverPaseoAgents, waitForPaseoWakeBoundary } from './paseo-state.js';
package/dist/ports.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import type { InboxNotification, SquareState, StoredAct, WakeRoute, WatchLease } from './model.js';
2
- import type { PlannedNotification } from './delivery.js';
3
2
  export type { ClaimResult, EvidenceClaim, EvidenceRelease, EvidenceGc, EvidenceLookup, EvidenceRecord, HostLedgerPort, PresenceKey, PresenceLookup, PresenceRecord, PresenceClaimResult, PresenceChannel, PresenceResult, } from './host-ledger.js';
4
3
  import type { HostLedgerPort } from './host-ledger.js';
5
4
  /** Atomic artifact access. Never exposes framing, compression, locks, or storage schema. */
@@ -23,14 +22,15 @@ export interface WakeTransportPort {
23
22
  readonly diagnostic?: string;
24
23
  }>;
25
24
  attempt(request: WakeRequest, timeoutMs: number, beforeSend?: () => Promise<boolean>): Promise<WakeOutcome>;
26
- /** Optional route retirement supplied by the concrete executor adapter. */
27
- invalidate?(request: WakeRequest): Promise<void>;
28
25
  }
29
26
  export interface WakeRequest {
30
27
  readonly location: string;
31
28
  readonly participant: string;
32
29
  readonly activity: string;
33
30
  readonly actor: string;
31
+ /** Wake attempt token, also the opaque native correlation. */
32
+ readonly claimToken?: string;
33
+ readonly attemptN?: number;
34
34
  readonly route: WakeRoute;
35
35
  }
36
36
  /** Executor-neutral presentation capability; intentionally separate from wake transport. */
@@ -39,11 +39,12 @@ export interface PresentationSinkPort {
39
39
  }
40
40
  /** Stable projection of a host binding; storage rows never cross this boundary. */
41
41
  export interface SessionBindingProjection {
42
+ readonly epoch?: number;
43
+ readonly cancelledThrough?: number;
42
44
  readonly location: string;
43
45
  readonly participant: string;
44
46
  readonly sessionId: string;
45
47
  readonly channel: import('./host-ledger.js').PresenceChannel;
46
- readonly route?: WakeRoute;
47
48
  readonly updatedAt: number;
48
49
  }
49
50
  /** Pending boundary presentation projected for one bound session. */
@@ -85,22 +86,6 @@ export type WakeOutcome = {
85
86
  readonly diagnostic?: unknown;
86
87
  readonly attemptN?: number;
87
88
  };
88
- export interface SquareObservation {
89
- readonly location?: string;
90
- readonly version: number;
91
- readonly state: SquareState;
92
- readonly pending: readonly {
93
- readonly recipient: string;
94
- readonly notifications: readonly PlannedNotification[];
95
- }[];
96
- readonly bindings: readonly SessionBindingProjection[];
97
- }
98
- export interface ObserveSquareInput {
99
- readonly artifact: SquareArtifactPort;
100
- readonly hostLedger?: HostLedgerPort;
101
- readonly location?: string;
102
- readonly now?: number;
103
- }
104
89
  export interface DeliveryResult {
105
90
  readonly attempted: number;
106
91
  readonly accepted: number;
@@ -135,4 +120,6 @@ export interface PresentPendingInput {
135
120
  readonly signal?: AbortSignal;
136
121
  /** Boundary previews that were clipped remain pending for a later full presentation. */
137
122
  readonly markSeen?: boolean;
123
+ /** Receiver-specific fences checked inside the artifact observation transaction. */
124
+ readonly current?: (state: SquareState) => boolean;
138
125
  }
@@ -15,7 +15,7 @@ export async function presentPending(input) {
15
15
  }
16
16
  const delivery = deriveDeliveryModel(before.state);
17
17
  const item = before.state.acts.find((activity) => activity.index === index);
18
- if (item === undefined || delivery.isSeen(input.participant, index) || !delivery.pendingFor(input.participant).some((notification) => notification.item.index === index))
18
+ if (input.current?.(before.state) === false || item === undefined || delivery.isSeen(input.participant, index) || !delivery.pendingFor(input.participant).some((notification) => notification.item.index === index))
19
19
  return { presented: false };
20
20
  let claimToken;
21
21
  if (input.hostLedger !== undefined && input.session !== undefined) {
@@ -31,7 +31,7 @@ export async function presentPending(input) {
31
31
  await input.hostLedger.releaseEvidence({ location: input.location, participant: input.participant, session: input.session, activity: formatActivityId(index), kind: 'presentation', claimToken }).catch(() => undefined);
32
32
  return { presented: false };
33
33
  }
34
- if (deriveDeliveryModel(current.state).isSeen(input.participant, index)) {
34
+ if (input.current?.(current.state) === false || deriveDeliveryModel(current.state).isSeen(input.participant, index)) {
35
35
  await input.hostLedger.releaseEvidence({ location: input.location, participant: input.participant, session: input.session, activity: formatActivityId(index), kind: 'presentation', claimToken }).catch(() => undefined);
36
36
  return { presented: false };
37
37
  }
@@ -45,8 +45,20 @@ export async function presentPending(input) {
45
45
  }
46
46
  else
47
47
  await input.sink.present(item);
48
- if (input.markSeen !== false)
49
- await input.artifact.transact((state) => { const changed = recordObservation(state, input.participant, index, 'seen', input.now ?? Date.now()); return changed ? { state, result: undefined } : { result: undefined }; }, input.signal);
48
+ const committed = await input.artifact.transact((state) => {
49
+ const current = deriveDeliveryModel(state);
50
+ if (input.current?.(state) === false || current.isSeen(input.participant, index) || !current.pendingFor(input.participant).some((notification) => notification.item.index === index))
51
+ return { result: false };
52
+ if (input.markSeen === false)
53
+ return { result: true };
54
+ const changed = recordObservation(state, input.participant, index, 'seen', input.now ?? Date.now());
55
+ return changed ? { state, result: true } : { result: false };
56
+ }, input.signal);
57
+ if (!committed) {
58
+ if (input.hostLedger !== undefined && input.session !== undefined && claimToken !== undefined)
59
+ await input.hostLedger.releaseEvidence({ location: input.location, participant: input.participant, session: input.session, activity: formatActivityId(index), kind: 'presentation', claimToken });
60
+ return { presented: false };
61
+ }
50
62
  if (input.hostLedger !== undefined && input.session !== undefined && claimToken !== undefined)
51
63
  await input.hostLedger.appendEvidence({ location: input.location, participant: input.participant, session: input.session, activity: formatActivityId(index), kind: 'presentation', outcome: input.markSeen === false ? 'clipped' : 'presented', ...(input.markSeen === false ? { message: 'presentation clipped' } : {}), claimToken });
52
64
  return { presented: true, activity: item };
@@ -24,7 +24,6 @@ interface ActivityBlockedOptions extends ParticipantOutputOptions {
24
24
  retryCommand: string;
25
25
  forceCommand: string;
26
26
  activitySummaries: UnreadActivitySummary[];
27
- unreadRoomChanges: RoomChangeAct[];
28
27
  draftPath?: string;
29
28
  }
30
29
  interface ExpressWaitingOptions {
@@ -37,6 +36,7 @@ interface ExpressNoWaitOptions extends ParticipantOutputOptions {
37
36
  reason: 'throttled' | 'held';
38
37
  retryCommand: string;
39
38
  delayMs?: number;
39
+ holder?: string;
40
40
  holdReason?: string;
41
41
  draftPath?: string;
42
42
  }
@@ -48,6 +48,8 @@ interface WatchStatusOptions extends ParticipantOutputOptions {
48
48
  now: number;
49
49
  };
50
50
  showCatchHint?: boolean;
51
+ ownActivityCount?: number;
52
+ hardCap?: number | null;
51
53
  }
52
54
  export declare function displayPath(squarePath: string, cwd?: string): string;
53
55
  export declare function withPathOutput(squarePath: string, body?: string, opts?: HeaderOptions): string;
@@ -71,14 +73,27 @@ export declare function truncateChars(body: string, maxChars: number): {
71
73
  remaining: number;
72
74
  };
73
75
  export declare function truncateExternalDiagnostic(diagnostic: string): string;
74
- export declare function previewActivityBody(body: string): string;
75
76
  export declare function renderRoomChangeText(event: RoomChangeAct): string;
77
+ interface RenderedEvent {
78
+ text: string;
79
+ /** The rendered body was cut short by `preview`. */
80
+ bodyClipped: boolean;
81
+ }
76
82
  export declare function renderEventCli(event: StoredAct, opts?: {
77
83
  now?: number;
78
84
  preview?: number;
79
85
  actNumber?: number;
80
86
  mention?: string;
81
87
  }): string;
88
+ export declare function renderAmbientEventFacts(event: StoredAct, viewer: string, opts?: {
89
+ now?: number;
90
+ preview?: number;
91
+ presencePreview?: number;
92
+ actNumber?: number;
93
+ mention?: string;
94
+ squareState?: SquareState;
95
+ perception?: Perception;
96
+ }): RenderedEvent;
82
97
  export declare function renderAmbientEvent(event: StoredAct, viewer: string, opts?: {
83
98
  now?: number;
84
99
  preview?: number;
@@ -88,7 +103,7 @@ export declare function renderAmbientEvent(event: StoredAct, viewer: string, opt
88
103
  squareState?: SquareState;
89
104
  perception?: Perception;
90
105
  }): string;
91
- export declare function renderPendingFeed(history: StoredAct[], publicItems: PublicAct[], roomChanges: RoomChangeAct[], viewer: string | undefined, squareState: SquareState): string;
106
+ export declare function renderPendingFeed(history: StoredAct[], publicItems: PublicAct[], viewer: string | undefined, squareState: SquareState): string;
92
107
  export declare function renderActivityBlocked(opts: ActivityBlockedOptions): string;
93
108
  /** An indeterminate or already-committed send only points to inspection, never resend. */
94
109
  export declare function renderActivityUncertain(opts: ParticipantOutputOptions & {
@@ -98,9 +113,7 @@ export declare function renderActivityUncertain(opts: ParticipantOutputOptions &
98
113
  }): string;
99
114
  export declare function renderExpressWaiting(opts: ExpressWaitingOptions): string;
100
115
  export declare function renderExpressNoWait(opts: ExpressNoWaitOptions): string;
101
- export declare function renderPublicTail(squareState: SquareState, events: StoredAct[], lastN: number | null | undefined, now?: number, viewer?: string): string;
102
116
  export declare function renderPresenceAnchor(names: readonly string[]): string;
103
- export declare function renderActivitiesView(squareState: SquareState, visible: StoredAct[], lastN: number | null | undefined, noTruncate: boolean | undefined, squarePath: string, viewer?: string, mode?: 'ambient' | 'archive'): string;
104
117
  export declare function renderGrepActivitiesView(visible: StoredAct[], totalMatches: number, noTruncate: boolean | undefined, squarePath: string, pattern: string, fixed?: boolean, perception?: (act: StoredAct) => Perception): string;
105
118
  export declare function renderActivityLimit(opts: ActivityLimitOptions): string;
106
119
  export declare function renderWatchAlreadyActive(opts: ParticipantOutputOptions): string;
@@ -110,13 +123,9 @@ export declare function renderWatchReplaced(_opts: ParticipantOutputOptions): st
110
123
  export declare function renderWatchStatus(opts: WatchStatusOptions): string;
111
124
  export declare function renderDoctorClean(): string;
112
125
  export declare function renderDoctorUnfixable(reason: string): string;
113
- export declare function renderWatchOutput(history: StoredAct[], publicItems: PublicAct[], roomChanges: RoomChangeAct[], opts: {
114
- squarePath: string;
115
- stalePartial?: boolean;
116
- idleMs?: number;
126
+ export declare function renderWatchOutput(history: StoredAct[], publicItems: PublicAct[], opts: {
117
127
  mention?: string;
118
128
  viewer: string;
119
- showCatchHint?: boolean;
120
129
  squareState?: SquareState;
121
130
  perceptions?: ReadonlyMap<number, Perception>;
122
131
  }): string;