pilotswarm 0.5.4 → 0.5.6

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 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/tools/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAOnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,QAqSvE"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/tools/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAOnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,QA4SvE"}
@@ -87,6 +87,10 @@ export function registerModelTools(server, ctx) {
87
87
  .string()
88
88
  .optional()
89
89
  .describe("Reasoning effort for the new model (e.g. low, medium, high) — web mode only"),
90
+ context_tier: z
91
+ .string()
92
+ .optional()
93
+ .describe("Context-window tier for the new model: 'default' (smaller) or 'long_context' — web mode only"),
90
94
  timeout_ms: z
91
95
  .number()
92
96
  .int()
@@ -94,23 +98,26 @@ export function registerModelTools(server, ctx) {
94
98
  .optional()
95
99
  .describe("Max time to wait for the orchestration to acknowledge the switch (default 15000)"),
96
100
  },
97
- }, async ({ session_id, model, reasoning_effort, timeout_ms }) => {
101
+ }, async ({ session_id, model, reasoning_effort, context_tier, timeout_ms }) => {
98
102
  try {
99
103
  if (ctx.webMode) {
100
104
  // Web API mode: the supported model-switch path (same one
101
105
  // the portal UI uses). The server validates the model and
102
106
  // enqueues the switch; rejections surface as API errors.
103
- await ctx.mgmt.setSessionModel(session_id, model, reasoning_effort !== undefined ? { reasoningEffort: reasoning_effort } : {});
107
+ await ctx.mgmt.setSessionModel(session_id, model, {
108
+ ...(reasoning_effort !== undefined ? { reasoningEffort: reasoning_effort } : {}),
109
+ ...(context_tier !== undefined ? { contextTier: context_tier } : {}),
110
+ });
104
111
  return {
105
112
  content: [
106
- { type: "text", text: JSON.stringify({ switched: true, model, ...(reasoning_effort ? { reasoning_effort } : {}) }) },
113
+ { type: "text", text: JSON.stringify({ switched: true, model, ...(reasoning_effort ? { reasoning_effort } : {}), ...(context_tier ? { context_tier } : {}) }) },
107
114
  ],
108
115
  };
109
116
  }
110
- if (reasoning_effort !== undefined) {
117
+ if (reasoning_effort !== undefined || context_tier !== undefined) {
111
118
  return {
112
119
  content: [
113
- { type: "text", text: JSON.stringify({ switched: false, error: "reasoning_effort is only supported in Web API mode" }) },
120
+ { type: "text", text: JSON.stringify({ switched: false, error: "reasoning_effort and context_tier are only supported in Web API mode" }) },
114
121
  ],
115
122
  isError: true,
116
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/tools/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/tools/models.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pilotswarm",
3
- "version": "0.5.4",
3
+ "version": "0.5.6",
4
4
  "description": "PilotSwarm application package: terminal UI, browser portal + Web API server, and MCP server — one install, three bins.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -77,7 +77,7 @@
77
77
  "hono": "^4.12.10",
78
78
  "ink": "^6.8.0",
79
79
  "jose": "^6.2.2",
80
- "pilotswarm-sdk": "^0.5.4",
80
+ "pilotswarm-sdk": "^0.5.6",
81
81
  "react": "^19.2.4",
82
82
  "react-dom": "^19.2.4",
83
83
  "ws": "^8.18.2"
package/tui/src/app.js CHANGED
@@ -243,6 +243,7 @@ export function PilotSwarmTuiApp({ controller, platform, onRequestExit }) {
243
243
  const isCtrlJ = matchesCtrlKey("j", "\n");
244
244
  const isCtrlA = matchesCtrlKey("a", "\u0001");
245
245
  const isShiftN = input === "N" || (key.shift && key.name === "n");
246
+ const isShiftM = !key.ctrl && !key.meta && !key.alt && (input === "M" || (key.shift && key.name === "m"));
246
247
  const isShiftD = input === "D" || (key.shift && key.name === "d");
247
248
  const isShiftT = !key.ctrl && !key.meta && !key.alt && (input === "T" || (key.shift && key.name === "t"));
248
249
  const isShiftA = !key.ctrl && !key.meta && !key.alt && (input === "A" || (key.shift && key.name === "a"));
@@ -549,6 +550,11 @@ export function PilotSwarmTuiApp({ controller, platform, onRequestExit }) {
549
550
  return;
550
551
  }
551
552
 
553
+ if (focus !== "prompt" && isShiftM) {
554
+ controller.handleCommand(UI_COMMANDS.OPEN_SWITCH_MODEL_PICKER).catch(() => {});
555
+ return;
556
+ }
557
+
552
558
  if (focus === "chat" && (input === "e" || isCtrlE)) {
553
559
  controller.handleCommand(UI_COMMANDS.EXPAND_HISTORY).catch(() => {});
554
560
  return;
@@ -1115,6 +1115,7 @@ export class NodeSdkTransport {
1115
1115
  async setSessionModel(sessionId, options = {}) {
1116
1116
  return this.mgmt.setSessionModel(sessionId, options.model, {
1117
1117
  ...("reasoningEffort" in options ? { reasoningEffort: options.reasoningEffort ?? null } : {}),
1118
+ ...("contextTier" in options ? { contextTier: options.contextTier ?? null } : {}),
1118
1119
  source: options.source || "ui",
1119
1120
  });
1120
1121
  }
@@ -13,6 +13,7 @@ export const UI_COMMANDS = {
13
13
  REFRESH: "refresh",
14
14
  NEW_SESSION: "newSession",
15
15
  OPEN_MODEL_PICKER: "openModelPicker",
16
+ OPEN_SWITCH_MODEL_PICKER: "openSwitchModelPicker",
16
17
  OPEN_THEME_PICKER: "openThemePicker",
17
18
  OPEN_RENAME_SESSION: "openRenameSession",
18
19
  OPEN_SESSION_FILTER: "openSessionFilter",
@@ -300,7 +300,12 @@ function buildSessionMergePatch(previousSession, nextSession) {
300
300
  changed = true;
301
301
  }
302
302
 
303
- if (nextSession.pendingQuestion === undefined && previousSession?.pendingQuestion && nextSession.status !== "input_required") {
303
+ if (nextSession.pendingQuestion === undefined && previousSession?.pendingQuestion && nextSession.status !== "input_required"
304
+ && !isSameOrOlderSessionUpdate(previousSession, nextSession)) {
305
+ // Only a genuinely newer update may clear a pending question. A stale or
306
+ // in-flight detail-sync that raced the input_required_started event (and
307
+ // so still reports the pre-question status with no pendingQuestion) must
308
+ // not wipe the question the user is looking at.
304
309
  patch.pendingQuestion = null;
305
310
  changed = true;
306
311
  }
@@ -3026,6 +3031,28 @@ export class PilotSwarmUiController {
3026
3031
  sessionId,
3027
3032
  history: appendEventToHistory(existing, event),
3028
3033
  });
3034
+ // The input_required_started event carries the full question payload and
3035
+ // reaches us on the live event stream — well ahead of the slower
3036
+ // customStatus detail-sync (scheduleSessionDetailSync below). Set
3037
+ // pendingQuestion + status synchronously so an answer typed the moment the
3038
+ // question appears takes the direct sendAnswer path instead of being
3039
+ // misrouted into the outbox queue, where it would sit until a later send
3040
+ // flushed it. The eventual detail-sync reconciles to the authoritative
3041
+ // customStatus.
3042
+ if (event.eventType === "session.input_required_started" && event.data?.question) {
3043
+ this.dispatch({
3044
+ type: "sessions/merged",
3045
+ session: {
3046
+ sessionId,
3047
+ status: "input_required",
3048
+ pendingQuestion: {
3049
+ question: event.data.question,
3050
+ choices: Array.isArray(event.data.choices) ? event.data.choices : undefined,
3051
+ allowFreeform: event.data.allowFreeform ?? true,
3052
+ },
3053
+ },
3054
+ });
3055
+ }
3029
3056
  this.reconcileOutboxAgainstEvent(sessionId, event);
3030
3057
  const derivedModel = extractSessionModelFromEvent(event);
3031
3058
  const currentSession = this.getState().sessions.byId[sessionId] || { sessionId };
@@ -3487,10 +3514,8 @@ export class PilotSwarmUiController {
3487
3514
  const supported = normalizeReasoningEfforts(modelItem?.supportedReasoningEfforts);
3488
3515
  const selectedEffort = sessionOptions?.reasoningEffort || resolveDefaultReasoningEffort(modelItem);
3489
3516
  if (!supported.length || !selectedEffort) {
3490
- if (sessionOptions?.mode === "switchModel") {
3491
- await this.switchSessionModel({ ...sessionOptions, model: modelItem?.id });
3492
- return;
3493
- }
3517
+ // No effort step for this model — fall through to the context-tier
3518
+ // step, which handles both the new-session and switch-model flows.
3494
3519
  await this.openContextTierPicker(modelItem, sessionOptions);
3495
3520
  return;
3496
3521
  }
@@ -3526,7 +3551,9 @@ export class PilotSwarmUiController {
3526
3551
  // the catalog default ("default", the smaller window).
3527
3552
  const supported = normalizeContextTiers(modelItem?.supportedContextTiers);
3528
3553
  const selectedTier = sessionOptions?.contextTier || resolveDefaultContextTier(modelItem);
3529
- if (!supported.length || !selectedTier || sessionOptions?.mode === "switchModel") {
3554
+ if (!supported.length || !selectedTier) {
3555
+ // Model declares no context-window tiers — skip straight to applying
3556
+ // the switch (switch flow) or to the agent picker (new-session flow).
3530
3557
  if (sessionOptions?.mode === "switchModel") {
3531
3558
  await this.switchSessionModel({ ...sessionOptions, model: modelItem?.id });
3532
3559
  return;
@@ -3652,9 +3679,12 @@ export class PilotSwarmUiController {
3652
3679
  await this.transport.setSessionModel(sessionId, {
3653
3680
  model,
3654
3681
  ...("reasoningEffort" in options ? { reasoningEffort: options.reasoningEffort ?? null } : {}),
3682
+ ...("contextTier" in options ? { contextTier: options.contextTier ?? null } : {}),
3655
3683
  source: "ui",
3656
3684
  });
3657
- this.dispatch({ type: "ui/status", text: `Next turn will use ${options.reasoningEffort ? `${model}:${options.reasoningEffort}` : model}` });
3685
+ const modelLabel = options.reasoningEffort ? `${model}:${options.reasoningEffort}` : model;
3686
+ const tierSuffix = options.contextTier ? ` · ${CONTEXT_TIER_LABELS[options.contextTier] || options.contextTier}` : "";
3687
+ this.dispatch({ type: "ui/status", text: `Next turn will use ${modelLabel}${tierSuffix}` });
3658
3688
  await this.refreshSessions();
3659
3689
  }
3660
3690
 
@@ -4458,13 +4488,6 @@ export class PilotSwarmUiController {
4458
4488
  if (previousFocus) {
4459
4489
  this.setFocus(previousFocus);
4460
4490
  }
4461
- if (sessionOptions?.mode === "switchModel") {
4462
- await this.switchSessionModel({
4463
- ...sessionOptions,
4464
- ...(item?.id ? { reasoningEffort: item.id } : {}),
4465
- });
4466
- return;
4467
- }
4468
4491
  await this.openContextTierPicker(modal.modelItem, {
4469
4492
  ...sessionOptions,
4470
4493
  ...(item?.id ? { reasoningEffort: item.id } : {}),
@@ -4479,10 +4502,17 @@ export class PilotSwarmUiController {
4479
4502
  if (previousFocus) {
4480
4503
  this.setFocus(previousFocus);
4481
4504
  }
4482
- await this.openSessionAgentPicker({
4505
+ const nextOptions = {
4483
4506
  ...sessionOptions,
4484
4507
  ...(item?.id ? { contextTier: item.id } : {}),
4485
- });
4508
+ };
4509
+ // Switch-model flow ends here — apply the model/effort/tier switch.
4510
+ // New-session flow continues to the agent picker.
4511
+ if (sessionOptions?.mode === "switchModel") {
4512
+ await this.switchSessionModel({ ...nextOptions, model: modal.modelItem?.id || sessionOptions.model });
4513
+ return;
4514
+ }
4515
+ await this.openSessionAgentPicker(nextOptions);
4486
4516
  return;
4487
4517
  }
4488
4518
  if (modal.type === "sessionAgentPicker") {
@@ -6183,6 +6213,9 @@ export class PilotSwarmUiController {
6183
6213
  case UI_COMMANDS.OPEN_MODEL_PICKER:
6184
6214
  await this.openModelPicker();
6185
6215
  return;
6216
+ case UI_COMMANDS.OPEN_SWITCH_MODEL_PICKER:
6217
+ await this.openSwitchModelPicker();
6218
+ return;
6186
6219
  case UI_COMMANDS.OPEN_THEME_PICKER:
6187
6220
  this.openThemePicker();
6188
6221
  return;
@@ -5820,7 +5820,7 @@ const KEYBINDING_HELP = [
5820
5820
  ["m", "cycle inspector tab"],
5821
5821
  ["c / d / D", "cancel / done / delete session"],
5822
5822
  ["ctrl-x (ctrl-esc)", "stop the current turn", { dim: true }],
5823
- ["T / N / A", "theme / model / admin"],
5823
+ ["T / N / M / A", "theme / new+model / switch model / admin"],
5824
5824
  ["?", "toggle this help"],
5825
5825
  ["q", "quit (double-tap)"],
5826
5826
  ["Esc", "back / focus sessions"],