@tinycloud/courier 0.6.0-beta.29 → 0.6.0-beta.31

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,9 +1,10 @@
1
- import { CourierError, isAuthorizationRefusal, isNotFoundError } from './errors.js';
1
+ import { CourierError, errInfo, isAuthorizationRefusal, isNotFoundError } from './errors.js';
2
2
  import { cmd } from './program.js';
3
- import { k } from './keys.js';
3
+ import { stateKeys } from './keys.js';
4
4
  import { oneLine } from './a2a.js';
5
5
  import { loadGrant, loadProfile, withProfileTransaction } from './profile.js';
6
6
  import { courierNode, peerKv } from './node.js';
7
+ import { clearReadCache } from './thread.js';
7
8
  import { maintainOutbound } from './interim-renewal.js';
8
9
  import { markOwnerRefused, preflightOwner } from './interim-owner.js';
9
10
  export async function prepareOwnerAccess(request = false) {
@@ -21,22 +22,32 @@ export async function prepareOwnerAccess(request = false) {
21
22
  : `Courier couldn't create an approval request. Run \`${cmd('init --request')}\` to try again.`);
22
23
  return result;
23
24
  }
24
- /** Explicit and automatic paths use the same profile transaction and the same issuance policy. */
25
- export async function maintainPeerSet(node, target, collect = false) {
25
+ /**
26
+ * Explicit and automatic paths use the same profile transaction and the same issuance policy. `strict` (the watcher,
27
+ * before acting for `target`): unless that peer's check gave a positive verdict (our grant live or just renewed, and,
28
+ * with `collect`, its grant to us readable), throw `authority-unverified` so the action fails closed and stays queued.
29
+ * A peer that is no longer eligible is not an error: the caller drops its work.
30
+ */
31
+ export async function maintainPeerSet(node, target, collect = false, strict = false) {
26
32
  const handles = Object.values(loadProfile().peers).filter(peer => peer.status === 'paired' && (!target || peer.handle === target)).map(peer => peer.handle);
27
33
  let canRequestApproval = true;
34
+ const verdicts = new Map();
28
35
  for (const handle of handles) {
29
36
  try {
30
37
  await withProfileTransaction(async (profile, save) => {
31
38
  const peer = profile.peers[handle];
32
- if (!peer || !watchPeerEligible(peer))
39
+ if (!peer || !watchPeerEligible(peer)) {
40
+ verdicts.set(handle, 'ineligible');
33
41
  return;
42
+ }
34
43
  if (node.credentialHolderDid !== profile.courierDid) {
35
44
  canRequestApproval = false;
45
+ verdicts.set(handle, 'holder-mismatch');
36
46
  return;
37
47
  }
38
48
  try {
39
49
  const result = await maintainOutbound(node, profile, peer, save);
50
+ verdicts.set(handle, result.state);
40
51
  if (result.state === 'lapsed' || result.state === 'owner-revoked')
41
52
  canRequestApproval = false;
42
53
  if (result.state === 'unavailable') {
@@ -57,6 +68,7 @@ export async function maintainPeerSet(node, target, collect = false) {
57
68
  if (isAuthorizationRefusal(error) || (error instanceof CourierError && error.code === 'owner-authority-refused'))
58
69
  throw error;
59
70
  canRequestApproval = false;
71
+ verdicts.set(handle, `error: ${errInfo(error).code ?? 'unknown'}`);
60
72
  peer.interim ??= { cleanup: {} };
61
73
  peer.interim.unavailableAt ??= new Date().toISOString();
62
74
  profile.version = 4;
@@ -71,12 +83,18 @@ export async function maintainPeerSet(node, target, collect = false) {
71
83
  await peerKv(node, current, peer);
72
84
  }
73
85
  catch (error) {
74
- if (isAuthorizationRefusal(error))
86
+ if (isAuthorizationRefusal(error)) {
75
87
  await recordAuthorityRefusal(`peer:${handle}`);
88
+ verdicts.set(handle, 'ineligible');
89
+ }
76
90
  else if (!(error instanceof CourierError))
77
91
  throw error;
92
+ else
93
+ verdicts.set(handle, `error: ${error.code}`);
78
94
  }
79
95
  }
96
+ else
97
+ verdicts.set(handle, 'ineligible');
80
98
  }
81
99
  }
82
100
  catch (error) {
@@ -87,6 +105,7 @@ export async function maintainPeerSet(node, target, collect = false) {
87
105
  if (!(error instanceof CourierError))
88
106
  throw error;
89
107
  canRequestApproval = false;
108
+ verdicts.set(handle, `error: ${error.code}`);
90
109
  // Other peers stay independent; the normal requested read still reports this peer's refusal.
91
110
  console.error(`Courier couldn't renew access for ${oneLine(handle)}. Its current access is unchanged.`);
92
111
  }
@@ -96,7 +115,8 @@ export async function maintainPeerSet(node, target, collect = false) {
96
115
  // restoreSession is local. Even with no eligible peer lineage, prove owner authority on the node before asking.
97
116
  let authenticated = false;
98
117
  try {
99
- const read = await node.kv.get(k.watchState, { prefix: '' });
118
+ // This agent's own watch.json: a read only, and never another agent's state.
119
+ const read = await node.kv.get(stateKeys(loadProfile().courierDid).watch, { prefix: '' });
100
120
  if (!read.ok && !isNotFoundError(read.error))
101
121
  throw read.error;
102
122
  authenticated = true; // A signed, authorized 404 also proves the read was accepted.
@@ -111,6 +131,12 @@ export async function maintainPeerSet(node, target, collect = false) {
111
131
  if (authenticated)
112
132
  await prepareOwnerAccess(true);
113
133
  }
134
+ if (strict && target !== undefined) {
135
+ const verdict = verdicts.get(target) ?? 'ineligible';
136
+ if (verdict !== 'live' && verdict !== 'renewed' && verdict !== 'ineligible') {
137
+ throw new CourierError('authority-unverified', `Couldn't verify current access for ${oneLine(target)} (${verdict}); nothing is done for it until a check succeeds.`);
138
+ }
139
+ }
114
140
  }
115
141
  export function watchPeerEligible(peer, now = Date.now()) {
116
142
  return peer.status === 'paired' && !!peer.inbound && !!peer.theirHandleForMe
@@ -118,6 +144,7 @@ export function watchPeerEligible(peer, now = Date.now()) {
118
144
  && !peer.interim?.latchedAt && !peer.interim?.inboundRefusedAt;
119
145
  }
120
146
  export async function recordAuthorityRefusal(source) {
147
+ clearReadCache();
121
148
  if (!source.startsWith('peer:')) {
122
149
  await markOwnerRefused();
123
150
  return;
@@ -144,12 +171,15 @@ export async function createRuntimeNode() {
144
171
  throw error;
145
172
  }
146
173
  }
147
- /** A changed owner grant restarts a service so every captured SDK service uses the verified new session. */
148
- export async function watchPreflight(node) {
174
+ /** Local only: owner access state, and a changed owner grant restarts a service so every captured SDK service uses the verified new session. */
175
+ export async function watchOwnerPreflight(node) {
149
176
  await prepareOwnerAccess();
150
177
  if (loadGrant()?.delegationCid !== node.restorableSession?.delegationCid) {
151
178
  throw new CourierError('owner-grant-changed', `Your approval for Courier changed. Run your \`${cmd('watch')}\` command again to use it.`);
152
179
  }
180
+ }
181
+ export async function watchPreflight(node) {
182
+ await watchOwnerPreflight(node);
153
183
  await maintainPeerSet(node);
154
184
  }
155
185
  //# sourceMappingURL=interim-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interim-runtime.js","sourceRoot":"","sources":["../src/interim-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interim-runtime.js","sourceRoot":"","sources":["../src/interim-runtime.ts"],"names":[],"mappings":"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"}
package/dist/keys.d.ts CHANGED
@@ -40,5 +40,20 @@ export declare const k: {
40
40
  ordersPrefix: string;
41
41
  mePrefix: string;
42
42
  };
43
+ /** The keys one watcher owns. */
44
+ export interface StateKeys {
45
+ watch: string;
46
+ paused(peer: string, threadId: string): string;
47
+ pausedPrefix: string;
48
+ wakeClaim(peer: string, threadId: string, firstId: string): string;
49
+ wakeClaimsPrefix: string;
50
+ }
51
+ /** The method-specific id of an agent's `did:key`: the stable name of everything Courier keeps per agent. */
52
+ export declare function agentId(agent: string): string;
53
+ /**
54
+ * Watcher state of one Courier agent, under `me/state/agents/<its did:key id>/`: agents of one owner share the space,
55
+ * never one watcher state or pause marker. Without an agent: the shared `me/state/` keys used before TC-2917.
56
+ */
57
+ export declare function stateKeys(agent?: string): StateKeys;
43
58
  /** Peer-read capability entries for `delegateTo`, spec §3/§5 and TC-708. */
44
59
  export declare function peerReadPermissions(peer: string, space: string, sessionId?: string): PermissionEntry[];
package/dist/keys.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { CourierError } from './errors.js';
1
2
  /** Courier KV layout and the single source of agent grant authority. */
2
3
  export const PREFIX = 'xyz.tinycloud.courier';
3
4
  export const EXT = 'https://tinycloud.xyz/ext/courier/v0';
@@ -60,6 +61,31 @@ export const k = {
60
61
  ordersPrefix: `${PREFIX}/me/orders/`,
61
62
  mePrefix: `${PREFIX}/me/`,
62
63
  };
64
+ const DID_KEY = /^did:key:(z[1-9A-HJ-NP-Za-km-z]{1,128})$/;
65
+ /** The method-specific id of an agent's `did:key`: the stable name of everything Courier keeps per agent. */
66
+ export function agentId(agent) {
67
+ const id = DID_KEY.exec(agent)?.[1];
68
+ if (!id)
69
+ throw new CourierError('bad-profile', 'The Courier agent DID is not a did:key; its per-agent state has no key.');
70
+ return id;
71
+ }
72
+ /**
73
+ * Watcher state of one Courier agent, under `me/state/agents/<its did:key id>/`: agents of one owner share the space,
74
+ * never one watcher state or pause marker. Without an agent: the shared `me/state/` keys used before TC-2917.
75
+ */
76
+ export function stateKeys(agent) {
77
+ if (agent === undefined)
78
+ return { watch: k.watchState, paused: k.paused, pausedPrefix: k.pausedPrefix, wakeClaim: k.wakeClaim, wakeClaimsPrefix: k.wakeClaimsPrefix };
79
+ const id = agentId(agent);
80
+ const root = `${PREFIX}/me/state/agents/${id}/`;
81
+ return {
82
+ watch: `${root}watch.json`,
83
+ paused: (peer, threadId) => `${root}paused/${peer}/${threadId}.json`,
84
+ pausedPrefix: `${root}paused/`,
85
+ wakeClaim: (peer, threadId, firstId) => `${root}wake-claims/${peer}/${threadId}/${firstId}.json`,
86
+ wakeClaimsPrefix: `${root}wake-claims/`,
87
+ };
88
+ }
63
89
  /** Peer-read capability entries for `delegateTo`, spec §3/§5 and TC-708. */
64
90
  export function peerReadPermissions(peer, space, sessionId) {
65
91
  const root = sessionId ? `${k.threadRoot(peer, sessionId)}/` : k.toPeer(peer);
package/dist/keys.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
package/dist/node.d.ts CHANGED
@@ -11,7 +11,10 @@ export declare function nodeOpts(host: string): {
11
11
  };
12
12
  export declare function courierNode(profile: Profile, home?: string): Promise<TinyCloudNode>;
13
13
  export declare function currentInbound(node: TinyCloudNode, profile: Profile, peer: StoredPeer): Promise<ValidatedRuntimeDelegation>;
14
- export declare function peerKv(node: TinyCloudNode, profile: Profile, peer: StoredPeer): Promise<import("@tinycloud/node-sdk").IKVService>;
14
+ /** `renew: false` skips reading the peer's renewal marker; the watcher reads it on its renewal schedule instead. */
15
+ export declare function peerKv(node: TinyCloudNode, profile: Profile, peer: StoredPeer, options?: {
16
+ renew?: boolean;
17
+ }): Promise<import("@tinycloud/node-sdk").IKVService>;
15
18
  /** Ignore outbound issuance and display labels; compare identity, both mailbox handles and the original grant. */
16
19
  export declare function renewalBinding(profile: Profile, peer: StoredPeer | undefined): string;
17
20
  export declare function assertInboundLive(peer: StoredPeer, signedExpiry?: Date): void;
package/dist/node.js CHANGED
@@ -16,7 +16,18 @@ export function nodeOpts(host) {
16
16
  includeAccountRegistryPermissions: false,
17
17
  };
18
18
  }
19
- const activatedCids = new WeakMap();
19
+ /**
20
+ * The node each peer's reads go through, and the grant installed on it for that peer. The SDK uses the first installed
21
+ * grant that covers an operation (TC-2938), so a superseded grant must never sit beside its successor: the first grant
22
+ * of a peer is installed on the main node, and any later one on a fresh reader node that holds only it.
23
+ */
24
+ const peerReaders = new WeakMap();
25
+ function readersOf(node) {
26
+ let readers = peerReaders.get(node);
27
+ if (!readers)
28
+ peerReaders.set(node, readers = new Map());
29
+ return readers;
30
+ }
20
31
  export async function courierNode(profile, home) {
21
32
  const key = loadKey(home);
22
33
  const grant = loadGrant(home);
@@ -74,14 +85,13 @@ export async function currentInbound(node, profile, peer) {
74
85
  if (peer.interim?.latchedAt || peer.interim?.inboundRefusedAt)
75
86
  throw new CourierError('peer-revoked', `Sharing with ${peer.handle} was revoked. A new pairing is required.`);
76
87
  assertInboundLive(peer);
77
- let cids = activatedCids.get(node);
78
- if (!cids) {
79
- cids = new Map();
80
- activatedCids.set(node, cids);
81
- }
82
- if (!cids.has(peer.inbound.cid)) {
88
+ const readers = readersOf(node);
89
+ const known = readers.get(peer.handle);
90
+ if (known?.cid !== peer.inbound.cid) {
83
91
  const delegation = deserializeDelegation(peer.inbound.delegation);
84
- const activated = await activateValidatedRuntimeDelegation(node, delegation, { host: profile.host });
92
+ // A peer whose earlier grant is installed on the main node gets a reader of its own for the new one.
93
+ const reader = known ? await courierNode(profile) : node;
94
+ const activated = await activateValidatedRuntimeDelegation(reader, delegation, { host: profile.host });
85
95
  assertPeerDelegation(activated, {
86
96
  issuer: peer.courierDid,
87
97
  audience: profile.courierDid,
@@ -92,19 +102,23 @@ export async function currentInbound(node, profile, peer) {
92
102
  if (activated.cid !== peer.inbound.cid) {
93
103
  throw new CourierError('bad-delegation', `Peer delegation CID does not match the stored CID for ${peer.handle}.`);
94
104
  }
95
- cids.set(peer.inbound.cid, activated);
105
+ readers.set(peer.handle, { cid: activated.cid, reader, activated });
96
106
  }
97
- const current = cids.get(peer.inbound.cid);
107
+ const current = readers.get(peer.handle).activated;
98
108
  assertInboundLive(peer, current.expiry);
99
109
  return current;
100
110
  }
101
- export async function peerKv(node, profile, peer) {
111
+ /** The node holding only this peer's current grant (after `currentInbound`). */
112
+ function peerReader(node, peer) {
113
+ return readersOf(node).get(peer.handle).reader;
114
+ }
115
+ /** `renew: false` skips reading the peer's renewal marker; the watcher reads it on its renewal schedule instead. */
116
+ export async function peerKv(node, profile, peer, options = {}) {
102
117
  const original = renewalBinding(profile, peer);
103
118
  const current = await currentInbound(node, profile, peer);
104
- const cids = activatedCids.get(node);
105
- const kv = node.kvForSpace(peer.spaceId);
119
+ const kv = peerReader(node, peer).kvForSpace(peer.spaceId);
106
120
  // Awaiting-C still needs the explicit pairing acknowledgement, not a renewal.
107
- if (peer.status !== 'paired')
121
+ if (peer.status !== 'paired' || options.renew === false)
108
122
  return kv;
109
123
  const update = await getJson(kv, k.peerDelegation(peer.theirHandleForMe, peer.sessionId));
110
124
  assertInboundLive(peer, current.expiry);
@@ -116,7 +130,9 @@ export async function peerKv(node, profile, peer) {
116
130
  if (delegation.spaceId !== peer.spaceId || delegation.ownerAddress.toLowerCase() !== peer.ownerDid.split(':').at(-1)?.toLowerCase()) {
117
131
  throw new CourierError('bad-delegation', 'Peer renewal owner or space does not match the pairing.');
118
132
  }
119
- const renewed = await activateValidatedRuntimeDelegation(node, delegation, {
133
+ // The successor goes on a fresh reader: installed next to the current grant it would never be used.
134
+ const reader = await courierNode(profile);
135
+ const renewed = await activateValidatedRuntimeDelegation(reader, delegation, {
120
136
  host: profile.host,
121
137
  // Preserve signed caveats as well as the mailbox/session abilities.
122
138
  authorize: permissions => canonicalJson(permissions.map(entry => canonicalJson(entry)).sort()) === canonicalJson(current.effectivePermissions.map(entry => canonicalJson(entry)).sort()),
@@ -140,8 +156,8 @@ export async function peerKv(node, profile, peer) {
140
156
  if (profile.peers[peer.handle])
141
157
  profile.peers[peer.handle].inbound = inbound;
142
158
  });
143
- cids.set(renewed.cid, renewed);
144
- return node.kvForSpace(peer.spaceId);
159
+ readersOf(node).set(peer.handle, { cid: renewed.cid, reader, activated: renewed });
160
+ return reader.kvForSpace(peer.spaceId);
145
161
  }
146
162
  /** Ignore outbound issuance and display labels; compare identity, both mailbox handles and the original grant. */
147
163
  export function renewalBinding(profile, peer) {
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/pause.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { KV } from './inbox.js';
2
2
  import type { ParsedArgs } from './args.js';
3
3
  import { courierNode } from './node.js';
4
4
  import { loadProfile, type Profile } from './profile.js';
5
- /** `me/state/paused/<peer>/<thread>.json`. The watcher is the only writer of watch.json; markers are how humans and the CLI talk to it. */
5
+ /** `me/state/agents/<agent>/paused/<peer>/<thread>.json`. The watcher is the only writer of watch.json; markers are how humans and the CLI talk to it. */
6
6
  export interface PauseMarker {
7
7
  v: 1;
8
8
  peer: string;
@@ -18,8 +18,8 @@ export interface PauseMarker {
18
18
  export declare function nextNoticeId(kv: KV, peer: string, threadId: string, now?: number): Promise<string>;
19
19
  /** Posts the machine-readable "thread paused" `inform` to the peer (it never wakes anyone; its watcher notifies its human). */
20
20
  export declare function postPausedInform(kv: KV, profile: Profile, peerHandle: string, threadId: string, text: string, messageId?: string, resumed?: boolean): Promise<string>;
21
- /** Creates the marker; false if the thread was already paused. */
22
- export declare function writePauseMarker(kv: KV, marker: PauseMarker): Promise<boolean>;
21
+ /** Creates the marker (at `key`, by default the shared pre-TC-2917 location); false if the thread was already paused. */
22
+ export declare function writePauseMarker(kv: KV, marker: PauseMarker, key?: string): Promise<boolean>;
23
23
  /** Humans only: stop waking this side's agent for a thread and tell the peer with an `inform`. */
24
24
  export declare function cmdPause(args: ParsedArgs, deps?: {
25
25
  profile?: typeof loadProfile;
package/dist/pause.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { CourierError } from './errors.js';
2
2
  import { decodeTime, ulid } from 'ulid';
3
3
  import { ULID } from './request.js';
4
- import { k, PREFIX } from './keys.js';
4
+ import { k, PREFIX, stateKeys } from './keys.js';
5
5
  import { buildMessage } from './a2a.js';
6
6
  import { del, getJson, listAll, putCreate, putMatch } from './store.js';
7
7
  import { cmd } from './program.js';
@@ -34,10 +34,10 @@ export async function postPausedInform(kv, profile, peerHandle, threadId, text,
34
34
  }
35
35
  return message.messageId;
36
36
  }
37
- /** Creates the marker; false if the thread was already paused. */
38
- export async function writePauseMarker(kv, marker) {
37
+ /** Creates the marker (at `key`, by default the shared pre-TC-2917 location); false if the thread was already paused. */
38
+ export async function writePauseMarker(kv, marker, key = k.paused(marker.peer, marker.threadId)) {
39
39
  try {
40
- await putCreate(kv, k.paused(marker.peer, marker.threadId), marker);
40
+ await putCreate(kv, key, marker);
41
41
  return true;
42
42
  }
43
43
  catch (error) {
@@ -46,6 +46,19 @@ export async function writePauseMarker(kv, marker) {
46
46
  throw error;
47
47
  }
48
48
  }
49
+ /**
50
+ * A pause from before TC-2917 is at the shared `me/state/paused/` key. `pause` and `resume` copy it (create-only, so a
51
+ * repeat is harmless) to this agent's key before reading that, so a thread paused before the upgrade stays paused
52
+ * until a human resumes it. The watcher copies them on its first start. Returns the shared key if it holds a marker.
53
+ */
54
+ async function adoptLegacyPause(kv, peer, threadId, markerKey) {
55
+ const legacyKey = k.paused(peer, threadId);
56
+ const legacy = await getJson(kv, legacyKey);
57
+ if (!legacy)
58
+ return undefined;
59
+ await writePauseMarker(kv, legacy.value, markerKey);
60
+ return legacyKey;
61
+ }
49
62
  function target(args, usage) {
50
63
  const [peer, threadId] = args.positional;
51
64
  if (!peer || !threadId)
@@ -62,15 +75,17 @@ export async function cmdPause(args, deps = {}) {
62
75
  const profile = (deps.profile ?? loadProfile)();
63
76
  const paired = getPeer(profile, peer);
64
77
  const node = await (deps.node ?? courierNode)(profile);
78
+ const markerKey = stateKeys(profile.courierDid).paused(peer, threadId);
65
79
  let exists = await getJson(node.kv, k.threadMeta(peer, threadId)) ?? await getJson(node.kv, k.mirrorMeta(peer, threadId));
66
80
  if (!exists && paired.inbound && paired.theirHandleForMe)
67
81
  exists = await getJson(await peerKv(node, profile, paired), `${PREFIX}/to/${paired.theirHandleForMe}/threads/${threadId}/meta.json`);
68
82
  if (!exists)
69
83
  throw new CourierError('not-found', `Thread ${threadId} with ${peer} does not exist.`);
84
+ await adoptLegacyPause(node.kv, peer, threadId, markerKey);
70
85
  const reason = args.has('reason') && args.get('reason') !== 'true' ? args.get('reason') : 'paused by its owner';
71
86
  const marker = { v: 1, peer, threadId, by: 'human', at: new Date().toISOString(), reason, informId: await nextNoticeId(node.kv, peer, threadId), informSent: false };
72
- const wrote = await writePauseMarker(node.kv, marker);
73
- const stored = await getJson(node.kv, k.paused(peer, threadId));
87
+ const wrote = await writePauseMarker(node.kv, marker, markerKey);
88
+ const stored = await getJson(node.kv, markerKey);
74
89
  if (!stored)
75
90
  throw new CourierError('not-found', 'The pause marker disappeared; try again.');
76
91
  if (!wrote && (stored.value.by !== 'human' || stored.value.informSent)) {
@@ -80,13 +95,13 @@ export async function cmdPause(args, deps = {}) {
80
95
  const saved = stored.value;
81
96
  if (!saved.informId) {
82
97
  saved.informId = await nextNoticeId(node.kv, peer, threadId);
83
- await putMatch(node.kv, k.paused(peer, threadId), saved, stored.etag);
98
+ await putMatch(node.kv, markerKey, saved, stored.etag);
84
99
  }
85
100
  // A failed inform can be retried with the same message id, without duplicate messages or marker creation.
86
101
  await postPausedInform(node.kv, profile, peer, threadId, 'Thread paused by its owner. Its agent waits until its owner resumes it.', saved.informId);
87
- const fresh = await getJson(node.kv, k.paused(peer, threadId));
102
+ const fresh = await getJson(node.kv, markerKey);
88
103
  if (fresh)
89
- await putMatch(node.kv, k.paused(peer, threadId), { ...fresh.value, informSent: true }, fresh.etag);
104
+ await putMatch(node.kv, markerKey, { ...fresh.value, informSent: true }, fresh.etag);
90
105
  console.log(`Paused thread ${threadId} with ${peer}; told ${peer}. Resume: ${cmd(`resume ${peer} ${threadId}`)}`);
91
106
  }
92
107
  /** Humans only: wake this side's agent for the thread again; the wake budget starts over. */
@@ -95,17 +110,22 @@ export async function cmdResume(args, deps = {}) {
95
110
  const profile = (deps.profile ?? loadProfile)();
96
111
  getPeer(profile, peer);
97
112
  const node = await (deps.node ?? courierNode)(profile);
98
- const stored = await getJson(node.kv, k.paused(peer, threadId));
113
+ const markerKey = stateKeys(profile.courierDid).paused(peer, threadId);
114
+ const legacyKey = await adoptLegacyPause(node.kv, peer, threadId, markerKey);
115
+ const stored = await getJson(node.kv, markerKey);
99
116
  if (!stored) {
100
117
  console.log(`Thread ${threadId} with ${peer} is not paused.`);
101
118
  return;
102
119
  }
103
120
  const resumeInformId = stored.value.resumeInformId ?? await nextNoticeId(node.kv, peer, threadId);
104
121
  if (!stored.value.resumeInformId)
105
- await putMatch(node.kv, k.paused(peer, threadId), { ...stored.value, resumeInformId }, stored.etag);
122
+ await putMatch(node.kv, markerKey, { ...stored.value, resumeInformId }, stored.etag);
106
123
  // Persist the id before posting: a retry cannot produce another resume transition.
107
124
  await postPausedInform(node.kv, profile, peer, threadId, 'Thread resumed by its owner.', resumeInformId, true);
108
- await del(node.kv, k.paused(peer, threadId));
125
+ // The shared copy goes first: a retry after a crash here still finds this agent's marker and its resume inform id.
126
+ if (legacyKey)
127
+ await del(node.kv, legacyKey);
128
+ await del(node.kv, markerKey);
109
129
  console.log(`Resumed thread ${threadId} with ${peer}. A running watcher picks this up with the next message it sees.`);
110
130
  }
111
131
  //# sourceMappingURL=pause.js.map
package/dist/pause.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pause.js","sourceRoot":"","sources":["../src/pause.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pause.js","sourceRoot":"","sources":["../src/pause.ts"],"names":[],"mappings":"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"}
package/dist/state.js CHANGED
@@ -11,6 +11,7 @@ import { REVOKE_URL } from './grant-refusal.js';
11
11
  import { CourierError } from './errors.js';
12
12
  import { base64url32, ed25519DidKey, ed25519PublicKey } from './did-key.js';
13
13
  import { formatRemovalCommand, recordLiveness } from './file-lock.js';
14
+ import { clearReadCache } from './thread.js';
14
15
  /**
15
16
  * One derivation of where `init` stands, shared by every init mode.
16
17
  *
@@ -488,6 +489,7 @@ function applyRotation(journal) {
488
489
  saveKey(journal.key);
489
490
  saveProfile(journal.profile);
490
491
  removeIfPresent(path.join(profileDir(), 'grant.json'));
492
+ clearReadCache(); // the old agent's cached counterparty bodies
491
493
  if (journal.discardApproval)
492
494
  clearPending();
493
495
  for (const grant of journal.discardedGrants ?? [])