pi-roundtable-mcp 0.9.0 → 0.9.1

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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.9.1] - 2026-10-10
9
+
10
+ ### Fixed
11
+
12
+ - A remote run asked for while the host shuts down fails instead of starting a turn (`defaultConversation().answer` resolves a failed result rather than rejecting). Needs pi-roundtable 0.9.1.
13
+
8
14
  ## [0.9.0] - 2026-10-09
9
15
 
10
16
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-roundtable-mcp",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "MCP connectors through ContextForge and a remote MCP endpoint for pi-roundtable",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -45,7 +45,7 @@
45
45
  "devDependencies": {
46
46
  "@biomejs/biome": "2.5.15",
47
47
  "@types/bun": "1.4.2",
48
- "pi-roundtable": "0.9.0",
48
+ "pi-roundtable": "0.9.1",
49
49
  "typescript": "7.0.2"
50
50
  }
51
51
  }
@@ -68,25 +68,34 @@ export function defaultConversation({
68
68
  }: Parts): RemoteConversation {
69
69
  return {
70
70
  answer: (channel, text, speaker) =>
71
- queue.run(channel, () =>
72
- settleTurn(async () => {
73
- const { runtime, approvals } = server();
74
- // Restored from the store: after a restart nothing is held in memory yet.
75
- const pending = await runtime.heldActions(channel);
76
- const confirmed =
77
- pending !== undefined && (await approvals.approves(pending, text));
78
- return turns.run({
79
- channel,
80
- kind: REMOTE_KIND,
81
- text,
82
- speaker,
83
- conversation: { visibility: "private" },
84
- confirmed,
85
- // The outside agent polls for the answer; no surface posts it.
86
- reply: async () => undefined,
87
- });
88
- }, "remote turn"),
89
- ),
71
+ queue
72
+ .run(channel, () =>
73
+ settleTurn(async () => {
74
+ const { runtime, approvals } = server();
75
+ // Restored from the store: after a restart nothing is held in memory yet.
76
+ const pending = await runtime.heldActions(channel);
77
+ const confirmed =
78
+ pending !== undefined &&
79
+ (await approvals.approves(pending, text));
80
+ return turns.run({
81
+ channel,
82
+ kind: REMOTE_KIND,
83
+ text,
84
+ speaker,
85
+ conversation: { visibility: "private" },
86
+ confirmed,
87
+ // The outside agent polls for the answer; no surface posts it.
88
+ reply: async () => undefined,
89
+ });
90
+ }, "remote turn"),
91
+ )
92
+ // A host shutting down starts no turn: the run fails, and the caller may try again later.
93
+ .catch(
94
+ (error: unknown): TurnResult => ({
95
+ ok: false,
96
+ error: error instanceof Error ? error : new Error(String(error)),
97
+ }),
98
+ ),
90
99
  claim: {
91
100
  stop: (channel) => server().runtime.stop(channel),
92
101
  startFresh: async (channel) => {