@astrosheep/square 0.4.0 → 0.4.2

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 (196) hide show
  1. package/dist/artifact.d.ts +1 -3
  2. package/dist/artifact.js +12 -36
  3. package/dist/attention-presentation.d.ts +2 -22
  4. package/dist/attention-presentation.js +9 -12
  5. package/dist/boundary-presentation.d.ts +3 -14
  6. package/dist/boundary-presentation.js +29 -104
  7. package/dist/card-presentation.d.ts +1 -0
  8. package/dist/card-presentation.js +2 -0
  9. package/dist/catch-decisions.js +1 -7
  10. package/dist/claude-boundary-state.d.ts +20 -0
  11. package/dist/claude-boundary-state.js +84 -0
  12. package/dist/claude-hook.d.ts +2 -0
  13. package/dist/claude-hook.js +231 -0
  14. package/dist/claude-mcp-context.d.ts +1 -1
  15. package/dist/claude-mcp-context.js +12 -3
  16. package/dist/cli/context.js +7 -9
  17. package/dist/cli/observation-commands.d.ts +4 -1
  18. package/dist/cli/observation-commands.js +37 -4
  19. package/dist/cli/registry.js +5 -2
  20. package/dist/codex-address.d.ts +2 -2
  21. package/dist/codex-boundary-state.d.ts +1 -5
  22. package/dist/codex-boundary-state.js +0 -4
  23. package/dist/codex-hook.d.ts +7 -10
  24. package/dist/codex-hook.js +69 -33
  25. package/dist/codex-queue.d.ts +10 -11
  26. package/dist/codex-queue.js +32 -32
  27. package/dist/codex-watch.d.ts +2 -0
  28. package/dist/codex-watch.js +100 -0
  29. package/dist/decisions.js +2 -2
  30. package/dist/delivery-deferral.d.ts +8 -17
  31. package/dist/delivery-deferral.js +0 -28
  32. package/dist/delivery-frame.d.ts +7 -0
  33. package/dist/delivery-frame.js +11 -0
  34. package/dist/delivery-ledger-sqlite.d.ts +97 -0
  35. package/dist/delivery-ledger-sqlite.js +496 -0
  36. package/dist/delivery-ledger.d.ts +196 -0
  37. package/dist/delivery-ledger.js +268 -0
  38. package/dist/delivery-lifetime.d.ts +6 -0
  39. package/dist/delivery-lifetime.js +45 -0
  40. package/dist/harness-claude.js +3 -4
  41. package/dist/harness-links.js +63 -7
  42. package/dist/harness.js +12 -17
  43. package/dist/help.js +4 -1
  44. package/dist/http-delivery.d.ts +5 -9
  45. package/dist/http-delivery.js +20 -77
  46. package/dist/inbox.d.ts +6 -49
  47. package/dist/inbox.js +24 -371
  48. package/dist/index.d.ts +6 -3
  49. package/dist/index.js +4 -1
  50. package/dist/mcp.js +2 -3
  51. package/dist/model.d.ts +7 -47
  52. package/dist/model.js +1 -7
  53. package/dist/notifications.d.ts +24 -20
  54. package/dist/notifications.js +39 -108
  55. package/dist/operation-control.d.ts +4 -0
  56. package/dist/operation-control.js +20 -0
  57. package/dist/packages/agent-delivery/src/claude-native.d.ts +2 -0
  58. package/dist/packages/agent-delivery/src/claude-native.js +5 -0
  59. package/dist/packages/agent-delivery/src/codex-boundary.d.ts +11 -6
  60. package/dist/packages/agent-delivery/src/codex-boundary.js +31 -40
  61. package/dist/packages/agent-delivery/src/codex-hook.d.ts +17 -12
  62. package/dist/packages/agent-delivery/src/codex-hook.js +26 -39
  63. package/dist/packages/agent-delivery/src/codex.d.ts +3 -0
  64. package/dist/packages/agent-delivery/src/codex.js +41 -4
  65. package/dist/packages/agent-delivery/src/index.d.ts +3 -1
  66. package/dist/packages/agent-delivery/src/index.js +1 -1
  67. package/dist/packages/agent-delivery/src/paseo.js +11 -2
  68. package/dist/packages/agent-delivery/src/types.d.ts +1 -0
  69. package/dist/paseo-delivery.d.ts +5 -5
  70. package/dist/paseo-delivery.js +19 -97
  71. package/dist/paseo.d.ts +1 -1
  72. package/dist/paseo.js +1 -1
  73. package/dist/plugins/opencode/index.d.ts +5 -3
  74. package/dist/plugins/opencode/index.js +99 -21
  75. package/dist/plugins/opencode-shared/delivery.d.ts +23 -0
  76. package/dist/plugins/opencode-shared/delivery.js +109 -0
  77. package/dist/plugins/opencode-v1/index.d.ts +28 -0
  78. package/dist/plugins/opencode-v1/index.js +41 -0
  79. package/dist/plugins/opencode-v1/runtime.d.ts +56 -0
  80. package/dist/plugins/opencode-v1/runtime.js +152 -0
  81. package/dist/plugins/opencode-v1/transport.d.ts +13 -0
  82. package/dist/plugins/opencode-v1/transport.js +50 -0
  83. package/dist/plugins/paseo/shared/card-presentation.d.ts +10 -0
  84. package/dist/plugins/paseo/shared/card-presentation.js +7 -0
  85. package/dist/ports.d.ts +31 -90
  86. package/dist/session-lifecycle.d.ts +8 -7
  87. package/dist/session-lifecycle.js +40 -42
  88. package/dist/sqlite-square.d.ts +14 -23
  89. package/dist/sqlite-square.js +132 -139
  90. package/dist/square-api.js +4 -7
  91. package/dist/square-core.d.ts +0 -1
  92. package/dist/square-domain.d.ts +5 -17
  93. package/dist/square-domain.js +104 -221
  94. package/dist/square-facade.d.ts +18 -15
  95. package/dist/square-post.d.ts +53 -0
  96. package/dist/square-post.js +4 -0
  97. package/dist/square-posting.d.ts +13 -0
  98. package/dist/square-posting.js +174 -0
  99. package/dist/square-producer-sqlite.d.ts +11 -0
  100. package/dist/square-producer-sqlite.js +210 -0
  101. package/dist/square-sqlite.d.ts +15 -25
  102. package/dist/square-sqlite.js +150 -226
  103. package/dist/views.d.ts +2 -2
  104. package/dist/views.js +0 -1
  105. package/dist/wake-sink.d.ts +4 -11
  106. package/dist/wake-sink.js +8 -32
  107. package/dist/wake-transports.d.ts +4 -7
  108. package/dist/wake-transports.js +7 -39
  109. package/examples/symmetric-domains.mjs +29 -249
  110. package/guides/change-waits.md +13 -53
  111. package/guides/claude-native.md +7 -171
  112. package/guides/codex-delivery.md +55 -80
  113. package/guides/delivery-primitives.md +48 -207
  114. package/guides/mcp.md +1 -1
  115. package/guides/operation-cancellation.md +2 -5
  116. package/guides/participant-ownership.md +25 -89
  117. package/guides/pi-native-delivery.md +19 -56
  118. package/guides/pi-tools.md +6 -8
  119. package/guides/square-api.md +113 -615
  120. package/package.json +8 -8
  121. package/plugins/claude/.claude-plugin/plugin.json +2 -3
  122. package/plugins/claude/hooks/hooks.json +11 -1
  123. package/plugins/codex/.codex-plugin/plugin.json +1 -1
  124. package/plugins/codex/hooks/hooks.json +11 -23
  125. package/plugins/opencode/index.ts +91 -23
  126. package/plugins/opencode-shared/delivery.ts +91 -0
  127. package/plugins/opencode-v1/index.ts +36 -0
  128. package/plugins/opencode-v1/runtime.ts +134 -0
  129. package/plugins/opencode-v1/transport.ts +41 -0
  130. package/plugins/paseo/OVERVIEW.md +5 -5
  131. package/plugins/paseo/README.md +7 -6
  132. package/plugins/paseo/client/markdown.tsx +5 -5
  133. package/plugins/paseo/client/square-message.tsx +28 -24
  134. package/plugins/paseo/client/transform.ts +8 -5
  135. package/plugins/paseo/shared/card-presentation.ts +16 -0
  136. package/plugins/paseo/shared/message.ts +6 -11
  137. package/plugins/pi/square-pi.js +156 -417
  138. package/dist/channel-artifact.d.ts +0 -10
  139. package/dist/channel-artifact.js +0 -55
  140. package/dist/channel-delivery.d.ts +0 -11
  141. package/dist/channel-delivery.js +0 -51
  142. package/dist/channel-domain.d.ts +0 -3
  143. package/dist/channel-domain.js +0 -83
  144. package/dist/channel-facade.d.ts +0 -76
  145. package/dist/channel-facade.js +0 -1
  146. package/dist/channel-internal.d.ts +0 -126
  147. package/dist/channel-internal.js +0 -440
  148. package/dist/channel-metadata.d.ts +0 -11
  149. package/dist/channel-metadata.js +0 -1
  150. package/dist/channel-ports.d.ts +0 -241
  151. package/dist/channel-ports.js +0 -1
  152. package/dist/channel-presentation.d.ts +0 -17
  153. package/dist/channel-presentation.js +0 -22
  154. package/dist/channel-sqlite-schema.d.ts +0 -13
  155. package/dist/channel-sqlite-schema.js +0 -81
  156. package/dist/channel-transport.d.ts +0 -62
  157. package/dist/channel-transport.js +0 -1
  158. package/dist/channel.d.ts +0 -84
  159. package/dist/channel.js +0 -60
  160. package/dist/claude-delivery-status.d.ts +0 -13
  161. package/dist/claude-delivery-status.js +0 -46
  162. package/dist/claude-delivery.d.ts +0 -12
  163. package/dist/claude-delivery.js +0 -108
  164. package/dist/claude-mod.d.ts +0 -8
  165. package/dist/claude-mod.js +0 -172
  166. package/dist/claude-transport.d.ts +0 -5
  167. package/dist/claude-transport.js +0 -58
  168. package/dist/cmd/notify-once.d.ts +0 -2
  169. package/dist/cmd/notify-once.js +0 -29
  170. package/dist/delivery-attempts.d.ts +0 -52
  171. package/dist/delivery-attempts.js +0 -73
  172. package/dist/delivery-effects.d.ts +0 -139
  173. package/dist/delivery-effects.js +0 -163
  174. package/dist/delivery-health.d.ts +0 -51
  175. package/dist/delivery-health.js +0 -173
  176. package/dist/delivery-operations.d.ts +0 -22
  177. package/dist/delivery-operations.js +0 -198
  178. package/dist/delivery-primitives.d.ts +0 -5
  179. package/dist/delivery-primitives.js +0 -3
  180. package/dist/delivery.d.ts +0 -56
  181. package/dist/delivery.js +0 -80
  182. package/dist/plugins/opencode/delivery.d.ts +0 -19
  183. package/dist/plugins/opencode/delivery.js +0 -223
  184. package/dist/presentation-operations.d.ts +0 -5
  185. package/dist/presentation-operations.js +0 -86
  186. package/dist/sqlite-channel.d.ts +0 -15
  187. package/dist/sqlite-channel.js +0 -600
  188. package/dist/square-index.d.ts +0 -16
  189. package/dist/square-index.js +0 -106
  190. package/dist/wake-preview.d.ts +0 -7
  191. package/dist/wake-preview.js +0 -15
  192. package/plugins/claude/hooks/register.js +0 -132
  193. package/plugins/claude/types.d.ts +0 -7
  194. package/plugins/opencode/delivery.ts +0 -198
  195. /package/dist/{channel-values.d.ts → square-values.d.ts} +0 -0
  196. /package/dist/{channel-values.js → square-values.js} +0 -0
package/dist/harness.js CHANGED
@@ -1,6 +1,4 @@
1
- import fs from 'node:fs';
2
- import { doctorDeliveryHealth } from './delivery-health.js';
3
- import { wakeGraceMs } from './notifications.js';
1
+ import { DeliveryLedger, deliveryLedgerLocation } from './delivery-ledger.js';
4
2
  import { truncateExternalDiagnostic } from './presentation.js';
5
3
  import { doctorClaudePlugin, installClaudePlugin, uninstallClaudePlugin, } from './harness-claude.js';
6
4
  import { doctorCodexPlugin, installCodexPlugin, uninstallCodexPlugin, } from './harness-codex.js';
@@ -18,16 +16,6 @@ async function doctorHost(label, inspect) {
18
16
  return result([`○ ${label} doctor unavailable (${truncateExternalDiagnostic(diagnostic)})`]);
19
17
  }
20
18
  }
21
- function readableSquarePath(squarePath) {
22
- if (squarePath === undefined)
23
- return false;
24
- try {
25
- return fs.statSync(squarePath).isFile() && (fs.accessSync(squarePath, fs.constants.R_OK), true);
26
- }
27
- catch {
28
- return false;
29
- }
30
- }
31
19
  const TARGETS = [
32
20
  {
33
21
  name: 'claude',
@@ -78,10 +66,17 @@ const TARGETS = [
78
66
  {
79
67
  name: 'delivery',
80
68
  capabilities: ['doctor'],
81
- async doctor({ squarePath }) {
82
- return result(readableSquarePath(squarePath)
83
- ? await doctorDeliveryHealth(squarePath, wakeGraceMs())
84
- : ['○ delivery health skipped (no readable square path)']);
69
+ async doctor({ homeDir }) {
70
+ return doctorHost('delivery', async () => {
71
+ const ledger = await DeliveryLedger.open({ location: deliveryLedgerLocation(process.env, homeDir) });
72
+ try {
73
+ const health = await ledger.health();
74
+ return [`· delivery health · ${health.unknownAttempts.length} unknown attempts · ${health.repeatedFailures.length} repeated failures · ${health.sessionsWithoutRoute.length} sessions without route`];
75
+ }
76
+ finally {
77
+ await ledger.close();
78
+ }
79
+ });
85
80
  },
86
81
  },
87
82
  ];
package/dist/help.js CHANGED
@@ -58,7 +58,10 @@ const COMMANDS = [
58
58
  details: ['Options:', ' --for-owner <id> Required opaque owner.', ' --limit <N> Snapshot memberships (default 20, maximum 100).'],
59
59
  },
60
60
  { names: ['codex-hook'], usage: '{command}', summary: 'Present pending attention at one native agent boundary.', hiddenFromIndex: true },
61
- { names: ['claude-mod'], usage: '{command}', summary: 'Receive a structured operation from the loaded Claude mod.', hiddenFromIndex: true },
61
+ { names: ['codex-watch'], usage: '{command}', summary: 'Observe pending attention from a native async Stop hook.', hiddenFromIndex: true },
62
+ { names: ['codex-interrupt'], usage: '{command}', summary: 'Cancel pending attention at a native Interrupt boundary.', hiddenFromIndex: true },
63
+ { names: ['claude-hook'], usage: '{command}', summary: 'Receive a native Claude hook event.', hiddenFromIndex: true },
64
+ { names: ['claude-watch'], usage: '{command}', summary: 'Observe pending attention from a native async Stop hook.', hiddenFromIndex: true },
62
65
  {
63
66
  names: ['history'], usage: 'history [filters] [output]', usesSquare: true, group: 'participant',
64
67
  summary: 'Read or search the archive without changing what you have caught.',
@@ -1,16 +1,12 @@
1
- import type { WakeRoute } from './channel-values.js';
2
- import type { WakeOutcome, WakeRequest, WakeTransportPort } from './channel-transport.js';
1
+ import type { DeliveryCard, DeliveryTransport, DeliveryTransportContext, TransportOutcome } from './delivery-ledger.js';
3
2
  export interface HttpWakeTransportOptions {
4
3
  fetch?: typeof fetch;
5
4
  env?: NodeJS.ProcessEnv;
6
5
  }
7
- /** HTTP accepts wake custody only; it never consumes or presents Square activity. */
8
- export declare class HttpWakeTransport implements WakeTransportPort {
6
+ /** A successful HTTP response acknowledges custody, not presentation. */
7
+ export declare class HttpWakeTransport implements DeliveryTransport {
9
8
  private readonly opts;
9
+ readonly kind = "http";
10
10
  constructor(opts?: HttpWakeTransportOptions);
11
- probe(route: WakeRoute): Promise<boolean | {
12
- outcome: 'not-capable';
13
- diagnostic: string;
14
- }>;
15
- attempt(request: WakeRequest, timeoutMs: number, beforeSend: () => Promise<boolean>): Promise<WakeOutcome>;
11
+ send(card: DeliveryCard, address: Readonly<Record<string, string>>, context: DeliveryTransportContext): Promise<TransportOutcome>;
16
12
  }
@@ -1,99 +1,42 @@
1
- /** Configuration only: probing never contacts the receiver. */
2
- function configuration(route, env) {
3
- if (route.kind !== 'http')
4
- return undefined;
1
+ function configuration(address, env) {
5
2
  try {
6
- const url = new URL(route.address.url);
7
- if (!['http:', 'https:'].includes(url.protocol) || !url.hostname || url.username || url.password
8
- || route.address.url.includes('#'))
3
+ const url = new URL(address.url);
4
+ if (!['http:', 'https:'].includes(url.protocol) || !url.hostname || url.username || url.password || address.url.includes('#'))
9
5
  return undefined;
10
6
  const headers = new Headers({ 'Content-Type': 'application/json' });
11
- const tokenEnv = route.address.tokenEnv;
12
- if (tokenEnv !== undefined) {
13
- const token = tokenEnv.trim() ? env[tokenEnv] : undefined;
14
- // RFC 6750 bearer credentials; whitespace/control characters cannot become headers.
7
+ if (address.tokenEnv !== undefined) {
8
+ const token = address.tokenEnv.trim() ? env[address.tokenEnv] : undefined;
15
9
  if (!token || token !== token.trim() || !/^[A-Za-z0-9._~+\/-]+=*$/.test(token))
16
10
  return undefined;
17
11
  headers.set('Authorization', `Bearer ${token}`);
18
12
  }
19
- return { url: route.address.url, headers };
13
+ return { url: address.url, headers };
20
14
  }
21
15
  catch {
22
16
  return undefined;
23
17
  }
24
18
  }
25
- /** HTTP accepts wake custody only; it never consumes or presents Square activity. */
19
+ /** A successful HTTP response acknowledges custody, not presentation. */
26
20
  export class HttpWakeTransport {
27
21
  opts;
22
+ kind = 'http';
28
23
  constructor(opts = {}) {
29
24
  this.opts = opts;
30
25
  }
31
- async probe(route) {
32
- return configuration(route, this.opts.env ?? process.env) !== undefined
33
- ? true : { outcome: 'not-capable', diagnostic: 'HTTP wake configuration unavailable.' };
34
- }
35
- async attempt(request, timeoutMs, beforeSend) {
36
- const deadline = Date.now() + timeoutMs;
37
- if (request.route.kind !== 'http')
38
- return { outcome: 'not-capable' };
39
- const config = configuration(request.route, this.opts.env ?? process.env);
40
- if (config === undefined)
41
- return { outcome: 'failed', signature: 'http_config_rejected', message: 'Invalid HTTP wake configuration.' };
42
- const controller = new AbortController();
43
- let sent = false;
44
- const budgetUnavailable = () => sent
45
- ? { outcome: 'unknown', signature: 'http_send_timeout', message: 'HTTP wake acceptance is unknown after timeout.' }
46
- : { outcome: 'failed', signature: 'http_pre_send_timeout', message: 'HTTP wake budget elapsed before sending.' };
47
- if (!Number.isFinite(timeoutMs) || Date.now() >= deadline)
48
- return budgetUnavailable();
49
- let timer;
50
- const timeout = new Promise(resolve => {
51
- timer = setTimeout(() => { controller.abort(); resolve(budgetUnavailable()); }, Math.max(0, deadline - Date.now()));
52
- });
53
- const send = async () => {
54
- try {
55
- const preview = request.presentation?.payload;
56
- if (preview === undefined)
57
- return { outcome: 'not-capable', diagnostic: 'No pending Square activity to preview.' };
58
- const body = JSON.stringify({
59
- location: request.location, participant: request.participant, message: request.message, actor: request.actor,
60
- ...(request.attemptN === undefined ? {} : { attemptN: request.attemptN }), preview,
61
- });
62
- if (controller.signal.aborted || Date.now() >= deadline)
63
- return budgetUnavailable();
64
- if (!(await beforeSend()))
65
- return { outcome: 'not-capable' };
66
- // Preview and the final gate spend the same absolute budget as the request.
67
- if (controller.signal.aborted || Date.now() >= deadline)
68
- return budgetUnavailable();
69
- sent = true;
70
- const response = await (this.opts.fetch ?? fetch)(config.url, {
71
- method: 'POST', headers: config.headers, body, redirect: 'manual', signal: controller.signal,
72
- });
73
- // Status is the whole acknowledgement; never wait for or buffer a receiver body.
74
- void response.body?.cancel().catch(() => undefined);
75
- if (response.status >= 200 && response.status < 300)
76
- return { outcome: 'accepted', signature: 'http_accepted' };
77
- return {
78
- outcome: 'failed', signature: response.status >= 500 && response.status < 600 ? 'http_status_transient' : 'http_status_rejected',
79
- message: `HTTP wake returned status ${response.status}.`,
80
- };
81
- }
82
- catch {
83
- // URLs, query credentials and raw fetch exceptions must never reach evidence.
84
- if (controller.signal.aborted)
85
- return budgetUnavailable();
86
- return sent
87
- ? { outcome: 'unknown', signature: 'http_send_unknown', message: 'HTTP wake acceptance is unknown after a network error.' }
88
- : { outcome: 'failed', signature: 'http_pre_send_failed', message: 'HTTP wake could not be prepared.' };
89
- }
90
- };
26
+ async send(card, address, context) {
27
+ const config = configuration(address, this.opts.env ?? process.env);
28
+ if (!config)
29
+ return 'not-capable';
30
+ if (!await context.beforeSend() || context.signal.aborted || Date.now() >= context.deadline)
31
+ return 'not-capable';
91
32
  try {
92
- return await Promise.race([send(), timeout]);
33
+ const response = await (this.opts.fetch ?? fetch)(config.url, { method: 'POST', headers: config.headers,
34
+ body: JSON.stringify({ owner: card.owner, key: card.key, text: card.text }), redirect: 'manual', signal: context.signal });
35
+ void response.body?.cancel().catch(() => undefined);
36
+ return response.status >= 200 && response.status < 300 ? 'accepted' : 'failed';
93
37
  }
94
- finally {
95
- if (timer !== undefined)
96
- clearTimeout(timer);
38
+ catch {
39
+ return 'unknown';
97
40
  }
98
41
  }
99
42
  }
package/dist/inbox.d.ts CHANGED
@@ -1,50 +1,7 @@
1
- import { type Owner, type LocatedSeat, type PendingMembership } from './model.js';
2
- import type { SquareRead } from './ports.js';
3
- import { type NativePendingInput } from './delivery.js';
4
- export interface PendingWaitOptions {
5
- signal?: AbortSignal;
6
- /** Local delivery suppression, never persisted as evidence of receipt. */
7
- excludeKeys?: ReadonlySet<string>;
8
- /** Arm before dispatch; retry only after a substantive change, not our failed evidence write. */
9
- skipImmediate?: boolean;
10
- onChangeArmed?: (armed: boolean) => void;
11
- }
12
- export declare function pendingKey(membership: LocatedSeat, messageIndex: number): string;
13
- /** Revalidate a supplied batch immediately before the boundary's independent claim/send checks. */
14
- export declare function projectBoundaryEligibility(inbox: readonly PendingMembership[]): Promise<PendingMembership[]>;
15
- export interface SessionBindingCandidate {
16
- readonly location: string;
1
+ import type { Owner } from './model.js';
2
+ import type { InboxMembershipSummary } from './square-facade.js';
3
+ /** Filesystem-scoped membership counts. This is a World read, not a delivery scan. */
4
+ export declare function sessionInboxCounts(input: {
17
5
  readonly owner: Owner;
18
- }
19
- /** HOME is a candidate path index; current seats and delivery evidence live in the artifact. */
20
- export declare function projectSessionCandidates(input: SessionSeatQuery): Promise<readonly SessionBindingCandidate[]>;
21
- export interface SessionSeatQuery {
22
- readonly owner?: Owner;
23
- readonly location?: string;
24
- readonly env?: NodeJS.ProcessEnv;
25
- }
26
- /** Lifecycle reads resolve seats and join times, never pending activity bodies. */
27
- export declare function projectSessionSeats(input: SessionSeatQuery, signal?: AbortSignal): Promise<LocatedSeat[]>;
28
- /** Public count boundary: one coherent read per artifact, without pending body hydration. */
29
- export declare function sessionInboxCounts(input: SessionSeatQuery, signal?: AbortSignal): Promise<import('./square-facade.js').InboxMembershipSummary[]>;
30
- export interface NativePendingPreview {
31
- readonly payload: string;
32
- readonly clipped: boolean;
33
- }
34
- export interface NativePendingSource {
35
- readonly text: string;
36
- readonly clipped: boolean;
37
- }
38
- /** One current eligibility + source projection read; senders use text, ACK coverage uses clipped. */
39
- export declare function nativePendingSource(facts: SquareRead, input: NativePendingInput): NativePendingSource | undefined;
40
- /** The sender-facing fixed reminder over the shared source projection. */
41
- export declare function nativePendingPreview(facts: SquareRead, input: NativePendingInput): NativePendingPreview | undefined;
42
- export declare function sessionInbox(owner: Owner, env?: NodeJS.ProcessEnv, signal?: AbortSignal): Promise<PendingMembership[]>;
43
- export interface SessionPendingObserver {
44
- /** Read committed revisions before reusing content; filesystem hints are only for waiting. */
45
- read(options?: Pick<PendingWaitOptions, 'signal' | 'excludeKeys'>): Promise<PendingMembership[]>;
46
- wait(timeoutMs: number, options?: PendingWaitOptions): Promise<PendingMembership[]>;
47
- close(): void;
48
- }
49
- /** Session-scoped projection over process-shared storage change detectors. */
50
- export declare function observeSessionPending(owner: Owner, suppliedEnv?: NodeJS.ProcessEnv): Promise<SessionPendingObserver>;
6
+ readonly cwd?: string;
7
+ }, signal?: AbortSignal): Promise<InboxMembershipSummary[]>;