@moxt-ai/mobius 0.0.136 → 0.0.137

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/dist/index.js CHANGED
@@ -20959,6 +20959,8 @@ var assistantHistoryMessage = external_exports.strictObject({
20959
20959
  activities: external_exports.array(nativeMessageActivitySchema).max(100).readonly().default([]),
20960
20960
  content: external_exports.array(displayContentSchema).max(100).readonly().default([]),
20961
20961
  role: external_exports.literal("assistant"),
20962
+ // Absent when the source Agent does not report a terminal outcome.
20963
+ outcome: external_exports.enum(["succeeded", "cancelled", "failed"]).optional(),
20962
20964
  text: external_exports.string().max(SESSION_HISTORY_CHARACTER_LIMIT),
20963
20965
  images: external_exports.array(historyImage).max(8).readonly().optional()
20964
20966
  }).readonly();
@@ -34156,7 +34158,7 @@ var CodexAcpAgent = class {
34156
34158
  #settings;
34157
34159
  #nativeSessionId = "";
34158
34160
  #streamedReasoningItemIds = /* @__PURE__ */ new Set();
34159
- #streamedAgentMessageItemIds = /* @__PURE__ */ new Set();
34161
+ #agentMessages = /* @__PURE__ */ new Map();
34160
34162
  #noticeRevisions = /* @__PURE__ */ new Map();
34161
34163
  #turn = null;
34162
34164
  #nativeTurnId = null;
@@ -34491,9 +34493,11 @@ var CodexAcpAgent = class {
34491
34493
  if (method === "item/agentMessage/delta") {
34492
34494
  const decoded = reasoningTextDeltaParamsSchema.safeParse(params);
34493
34495
  if (decoded.success && decoded.data.threadId === this.#nativeSessionId && this.#turn !== null && decoded.data.turnId === this.#turn.turn.id && decoded.data.delta.length > 0) {
34494
- this.#streamedAgentMessageItemIds.add(decoded.data.itemId);
34496
+ const phase = this.#agentMessages.get(decoded.data.itemId)?.phase;
34497
+ this.#agentMessages.set(decoded.data.itemId, { phase, kind: "streaming" });
34495
34498
  await this.#enqueue(async () => {
34496
34499
  await this.#emit({
34500
+ _meta: agentMessageMeta(phase),
34497
34501
  content: { text: decoded.data.delta, type: "text" },
34498
34502
  messageId: decoded.data.itemId,
34499
34503
  sessionUpdate: "agent_message_chunk"
@@ -34510,7 +34514,13 @@ var CodexAcpAgent = class {
34510
34514
  return;
34511
34515
  }
34512
34516
  if (item.type === "agentMessage") {
34513
- if (method === "item/started" || this.#streamedAgentMessageItemIds.delete(item.id)) {
34517
+ if (method === "item/started") {
34518
+ this.#agentMessages.set(item.id, { phase: item.phase, kind: "started" });
34519
+ return;
34520
+ }
34521
+ const message = this.#agentMessages.get(item.id);
34522
+ this.#agentMessages.delete(item.id);
34523
+ if (message?.kind === "streaming") {
34514
34524
  return;
34515
34525
  }
34516
34526
  await this.#enqueue(async () => {
@@ -34673,7 +34683,7 @@ var CodexAcpAgent = class {
34673
34683
  };
34674
34684
  signal.addEventListener("abort", aborted2, { once: true });
34675
34685
  const turn = { completion, turn: { id: "" } };
34676
- this.#streamedAgentMessageItemIds.clear();
34686
+ this.#agentMessages.clear();
34677
34687
  this.#streamedReasoningItemIds.clear();
34678
34688
  this.#turn = turn;
34679
34689
  this.#nativeTurnId = null;
@@ -34698,7 +34708,7 @@ var CodexAcpAgent = class {
34698
34708
  signal.removeEventListener("abort", aborted2);
34699
34709
  if (this.#turn === turn) {
34700
34710
  this.#turn = null;
34701
- this.#streamedAgentMessageItemIds.clear();
34711
+ this.#agentMessages.clear();
34702
34712
  this.#streamedReasoningItemIds.clear();
34703
34713
  }
34704
34714
  }
@@ -38913,6 +38923,7 @@ var turnsSchema = external_exports.object({
38913
38923
  data: external_exports.array(
38914
38924
  external_exports.object({
38915
38925
  id: external_exports.string().min(1),
38926
+ status: external_exports.enum(["completed", "interrupted", "failed", "inProgress"]),
38916
38927
  error: external_exports.unknown().nullish(),
38917
38928
  items: external_exports.array(external_exports.unknown()).max(1e5)
38918
38929
  })
@@ -38973,6 +38984,22 @@ function errorMessage(value) {
38973
38984
  function messageSize(message) {
38974
38985
  return message.text.length + (message.role === "assistant" ? JSON.stringify(message.activities).length + JSON.stringify(message.content).length : 0);
38975
38986
  }
38987
+ function turnOutcome(status) {
38988
+ switch (status) {
38989
+ case "completed":
38990
+ return "succeeded";
38991
+ case "interrupted":
38992
+ return "cancelled";
38993
+ case "failed":
38994
+ return "failed";
38995
+ case "inProgress":
38996
+ return void 0;
38997
+ default: {
38998
+ const unhandled = status;
38999
+ throw new Error(`Unknown Codex turn status: ${String(unhandled)}`);
39000
+ }
39001
+ }
39002
+ }
38976
39003
  function decodeHistory(thread, value, options) {
38977
39004
  const page = turnsSchema.parse(value);
38978
39005
  const nativeTurn = options.nativeTurn?.();
@@ -38981,6 +39008,7 @@ function decodeHistory(thread, value, options) {
38981
39008
  let characters = 0;
38982
39009
  let truncated = page.nextCursor != null;
38983
39010
  for (const turn of page.data.toReversed()) {
39011
+ const outcome = turnOutcome(turn.status);
38984
39012
  const activities = [];
38985
39013
  let sequence = 0;
38986
39014
  let assistantMessageIndex = null;
@@ -39091,15 +39119,20 @@ function decodeHistory(thread, value, options) {
39091
39119
  const assistant = messages[assistantMessageIndex];
39092
39120
  if (assistant?.role === "assistant") {
39093
39121
  characters -= messageSize(assistant);
39094
- const updated = { ...assistant, activities: activities.slice(-100) };
39122
+ const updated = {
39123
+ ...assistant,
39124
+ ...outcome === void 0 ? {} : { outcome },
39125
+ activities: activities.slice(-100)
39126
+ };
39095
39127
  messages[assistantMessageIndex] = updated;
39096
39128
  characters += messageSize(updated);
39097
39129
  }
39098
- } else if (activities.length > 0) {
39130
+ } else if (activities.length > 0 || outcome !== void 0) {
39099
39131
  const message = {
39100
39132
  activities: activities.slice(-100),
39101
39133
  content: [],
39102
39134
  role: "assistant",
39135
+ ...outcome === void 0 ? {} : { outcome },
39103
39136
  text: ""
39104
39137
  };
39105
39138
  messages.push(message);