thinkpool-pair 0.7.445 → 0.7.447

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,16 +1,16 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "bundleVersion": 43,
3
+ "bundleVersion": 44,
4
4
  "contracts": [
5
5
  {
6
6
  "id": "room-coordination",
7
- "version": 12,
7
+ "version": 13,
8
8
  "routes": [
9
9
  {
10
10
  "id": "room-awareness",
11
11
  "tools": ["read_terminal"],
12
12
  "trigger": "\\b(other|another|sibling|peer)\\s+(lane|terminal)|\\bread_terminal\\b",
13
- "prompt": "When the request depends on another lane, a sibling may overlap the work, or a person refers to another terminal, use the current ROOM NOW snapshot as the default roster. Do not repeat it with a no-argument read_terminal call unless the snapshot is missing or truncated; that roster lookup has its own one-call allowance. Terminal names are static room-record identities. When a person supplies a terminal name, including an ordinal-looking name such as T112, resolve that exact stored name through ROOM NOW or a targeted read_terminal call before interpreting it as a positional label. Never infer a terminal from roster order, task topic, product name, or an apparent UI position. Only an unmatched generic placeholder such as Terminal 2 is positional and unsafe. Read only the relevant terminal by ref or name when its detailed transcript is actually needed. Never poll with read_terminal: wait for the room snapshot or completion signal to show a state change, then collect each finished owned worker once. Leave every finished worker visible for review until a person dismisses it with the Ensemble X. Never call close_terminal merely because work finished. Preserve the bounded targeted-read allowance for worker collection and final review."
13
+ "prompt": "When the request depends on another lane, a sibling may overlap the work, or a person refers to another terminal, use the current ROOM NOW snapshot as the default roster. Do not repeat it with a no-argument read_terminal call unless the snapshot is missing or truncated; that roster lookup has its own one-call allowance. read_terminal supports explicit self lookup. Terminal names are static room-record identities. When a person supplies a terminal name, including an ordinal-looking name such as T112, resolve that exact stored name through ROOM NOW or a targeted read_terminal call before interpreting it as a positional label. Never infer a terminal from roster order, task topic, product name, or an apparent UI position. Only an unmatched generic placeholder such as Terminal 2 is positional and unsafe. Read only the relevant terminal by ref or name when its detailed transcript is actually needed. Never poll with read_terminal: wait for the room snapshot or completion signal to show a state change, then collect each finished owned worker once. Leave every finished worker visible for review until a person dismisses it with the Ensemble X. Never call close_terminal merely because work finished. Preserve the bounded targeted-read allowance for worker collection and final review."
14
14
  },
15
15
  {
16
16
  "id": "cross-room-awareness",
package/update-gate.mjs CHANGED
@@ -1 +1 @@
1
- export function isSafeToRestart({pendingUpdate:e,stopping:t=!1,childIdle:n,childBetween:r,childPeer:i,requested:o=!1}){if(!e||t)return!1;if(o){const e=r instanceof Map?r:n;for(const t of e.values())if(!t)return!1;return!0}for(const e of n.values())if(!e)return!1;return!0}export function turnInFlight(e){for(const t of e?.values?.()||[])if(t&&("boolean"==typeof t.session?.turnActive?t.session.turnActive:t.turnActive)||Number(t?.pending?.size||0)>0)return!0;return!1}export function realtimeRecoveryDecision({brokenSince:e,now:t,httpHealthy:n,activeTurn:r,graceMs:i=6e4,activeTurnMaxMs:o=3e5}){const s=t-e;return!e||s<i?"wait":n?r&&s<o?"hold-active":"restart":"hold-offline"}
1
+ export function isSafeToRestart({pendingUpdate:e,stopping:n=!1,childIdle:t,childBetween:r,childPeer:i,requested:o=!1}){if(!e||n)return!1;if(o){const e=r instanceof Map?r:t;for(const n of e.values())if(!n)return!1;return!0}for(const e of t.values())if(!e)return!1;return!0}export function turnInFlight(e){for(const n of e?.values?.()||[]){const e=n&&("boolean"==typeof n.session?.turnActive?n.session.turnActive:n.turnActive),t=!1===n?._busyAnn&&Number(n?._turnRev)>0&&Number(n?._settledTurnRev)===Number(n?._turnRev);if(!0===n?._initialDispatchPending||!0===n?._busyAnn||e&&!t||Number(n?.pending?.size||0)>0)return!0}return!1}export function realtimeRecoveryDecision({brokenSince:e,now:n,httpHealthy:t,activeTurn:r,graceMs:i=6e4,activeTurnMaxMs:o=3e5}){const u=n-e;return!e||u<i?"wait":t?r&&u<o?"hold-active":"restart":"hold-offline"}