@axiom-lattice/core 2.1.43 → 2.1.44

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.mjs CHANGED
@@ -6452,10 +6452,10 @@ var InMemoryThreadMessageQueueStore = class {
6452
6452
  return this.messages.get(threadId);
6453
6453
  }
6454
6454
  async addMessage(params) {
6455
- const { threadId, tenantId, assistantId, content, type = "human", priority = 0, command } = params;
6455
+ const { threadId, tenantId, assistantId, content, type = "human", priority = 0, command, id } = params;
6456
6456
  const threadMessages = this.getMessagesForThread(threadId);
6457
6457
  const message = {
6458
- id: this.generateId(),
6458
+ id: id || this.generateId(),
6459
6459
  content,
6460
6460
  type,
6461
6461
  sequence: threadMessages.length,
@@ -6469,7 +6469,7 @@ var InMemoryThreadMessageQueueStore = class {
6469
6469
  threadMessages.push(message);
6470
6470
  return message;
6471
6471
  }
6472
- async addMessageAtHead(threadId, content, type = "system") {
6472
+ async addMessageAtHead(threadId, content, type = "system", id, command) {
6473
6473
  const threadMessages = this.getMessagesForThread(threadId);
6474
6474
  let tenantId = "default";
6475
6475
  let assistantId = "";
@@ -6479,7 +6479,7 @@ var InMemoryThreadMessageQueueStore = class {
6479
6479
  }
6480
6480
  const nextSequence = threadMessages.length;
6481
6481
  const message = {
6482
- id: this.generateId(),
6482
+ id: id || this.generateId(),
6483
6483
  content,
6484
6484
  type,
6485
6485
  sequence: nextSequence,
@@ -6487,8 +6487,9 @@ var InMemoryThreadMessageQueueStore = class {
6487
6487
  status: "pending",
6488
6488
  tenantId,
6489
6489
  assistantId,
6490
- priority: 100
6490
+ priority: 100,
6491
6491
  // High priority for head messages (STEER/Command)
6492
+ command
6492
6493
  };
6493
6494
  threadMessages.push(message);
6494
6495
  return message;
@@ -16954,28 +16955,29 @@ var Agent = class {
16954
16955
  break;
16955
16956
  }
16956
16957
  const firstMessage = pendings[0];
16957
- const hasCommand = firstMessage.content?.command;
16958
+ const hasCommand = firstMessage.command;
16958
16959
  if (hasCommand) {
16959
16960
  for (const p of pendings) {
16960
16961
  if (signal?.aborted) break;
16961
- if (!p.content?.command) break;
16962
+ if (!p.command) break;
16962
16963
  await this.queueStore?.markProcessing(p.id);
16963
16964
  const startTime = Date.now();
16964
16965
  this.publish("message:started", {
16965
16966
  type: "message:started",
16966
- messageId: p.content.id,
16967
- messageContent: p.content.message,
16967
+ messageId: this.getHumanPendingContent(p).id,
16968
+ messageContent: this.getHumanPendingContent(p).message,
16968
16969
  timestamp: /* @__PURE__ */ new Date(),
16969
16970
  queueMode: this.queueMode.mode
16970
16971
  });
16972
+ const humanContent = p.content;
16971
16973
  const input = {
16972
- messages: [new HumanMessage2({ id: p.content.id, content: p.content.message })]
16974
+ messages: [new HumanMessage2({ id: humanContent.id, content: humanContent.message })]
16973
16975
  };
16974
- const queueMessageData = p.content.queueMessage || {};
16976
+ const queueMessageData = humanContent.queueMessage;
16975
16977
  try {
16976
16978
  await this.agentStreamExecutor({
16977
16979
  input,
16978
- command: queueMessageData.command || p.content.command,
16980
+ command: p.command,
16979
16981
  custom_run_config: queueMessageData.custom_run_config
16980
16982
  }, signal);
16981
16983
  await this.queueStore?.markCompleted(p.id);
@@ -16984,7 +16986,7 @@ var Agent = class {
16984
16986
  if (runStatus === "interrupted" /* INTERRUPTED */) {
16985
16987
  this.publish("message:interrupted", {
16986
16988
  type: "message:interrupted",
16987
- messageId: p.content.id,
16989
+ messageId: humanContent.id,
16988
16990
  timestamp: /* @__PURE__ */ new Date(),
16989
16991
  duration: Date.now() - startTime,
16990
16992
  state
@@ -16993,13 +16995,13 @@ var Agent = class {
16993
16995
  this.addChunk({
16994
16996
  type: "message_completed",
16995
16997
  data: {
16996
- id: p.content.id,
16998
+ id: humanContent.id,
16997
16999
  content: ""
16998
17000
  }
16999
17001
  });
17000
17002
  this.publish("message:completed", {
17001
17003
  type: "message:completed",
17002
- messageId: p.content.id,
17004
+ messageId: humanContent.id,
17003
17005
  timestamp: /* @__PURE__ */ new Date(),
17004
17006
  duration: Date.now() - startTime,
17005
17007
  state
@@ -17010,13 +17012,13 @@ var Agent = class {
17010
17012
  this.addChunk({
17011
17013
  type: "message_failed",
17012
17014
  data: {
17013
- id: p.content.id,
17015
+ id: humanContent.id,
17014
17016
  content: error instanceof Error ? error.message : String(error)
17015
17017
  }
17016
17018
  });
17017
17019
  this.publish("message:failed", {
17018
17020
  type: "message:failed",
17019
- messageId: p.content.id,
17021
+ messageId: humanContent.id,
17020
17022
  error: error instanceof Error ? error.message : String(error),
17021
17023
  timestamp: /* @__PURE__ */ new Date()
17022
17024
  });
@@ -17031,20 +17033,21 @@ var Agent = class {
17031
17033
  const startTime = Date.now();
17032
17034
  remainingPendings.forEach((p) => {
17033
17035
  this.queueStore?.markProcessing(p.id);
17034
- userMessages.push(new HumanMessage2({ id: p.content.id, content: p.content.message }));
17036
+ const humanContent = p.content;
17037
+ userMessages.push(new HumanMessage2({ id: humanContent.id, content: humanContent.message }));
17035
17038
  this.publish("message:started", {
17036
17039
  type: "message:started",
17037
- messageId: p.content.id,
17038
- messageContent: p.content.message,
17040
+ messageId: humanContent.id,
17041
+ messageContent: humanContent.message,
17039
17042
  timestamp: /* @__PURE__ */ new Date(),
17040
17043
  queueMode: "collect" /* COLLECT */
17041
17044
  });
17042
17045
  });
17043
- const firstQueueMessage = remainingPendings[0]?.content?.queueMessage || {};
17046
+ const firstQueueMessage = remainingPendings[0] ? this.getHumanPendingContent(remainingPendings[0]).queueMessage : void 0;
17044
17047
  try {
17045
17048
  await this.agentStreamExecutor({
17046
17049
  input: { messages: userMessages },
17047
- custom_run_config: firstQueueMessage.custom_run_config
17050
+ custom_run_config: firstQueueMessage?.custom_run_config
17048
17051
  }, signal);
17049
17052
  const runStatus = await this.getRunStatus();
17050
17053
  const state = await this.getCurrentState();
@@ -17098,16 +17101,17 @@ var Agent = class {
17098
17101
  for (const p of remainingPendings) {
17099
17102
  if (signal?.aborted) break;
17100
17103
  await this.queueStore?.markProcessing(p.id);
17101
- const message = new HumanMessage2({ id: p.id, content: p.content.message });
17104
+ const humanContent = p.content;
17105
+ const message = new HumanMessage2({ id: humanContent.id, content: humanContent.message });
17102
17106
  const startTime = Date.now();
17103
17107
  this.publish("message:started", {
17104
17108
  type: "message:started",
17105
- messageId: p.content.id,
17106
- messageContent: p.content.message,
17109
+ messageId: humanContent.id,
17110
+ messageContent: humanContent.message,
17107
17111
  timestamp: /* @__PURE__ */ new Date(),
17108
17112
  queueMode: "followup" /* FOLLOWUP */
17109
17113
  });
17110
- const queueMessageData = p.content.queueMessage || {};
17114
+ const queueMessageData = humanContent.queueMessage || {};
17111
17115
  try {
17112
17116
  await this.agentStreamExecutor({
17113
17117
  input: { messages: [message] },
@@ -17119,7 +17123,7 @@ var Agent = class {
17119
17123
  if (runStatus === "interrupted" /* INTERRUPTED */) {
17120
17124
  this.publish("message:interrupted", {
17121
17125
  type: "message:interrupted",
17122
- messageId: p.content.id,
17126
+ messageId: humanContent.id,
17123
17127
  timestamp: /* @__PURE__ */ new Date(),
17124
17128
  duration: Date.now() - startTime,
17125
17129
  state
@@ -17128,13 +17132,13 @@ var Agent = class {
17128
17132
  this.addChunk({
17129
17133
  type: "message_completed",
17130
17134
  data: {
17131
- id: p.content.id,
17135
+ id: humanContent.id,
17132
17136
  content: ""
17133
17137
  }
17134
17138
  });
17135
17139
  this.publish("message:completed", {
17136
17140
  type: "message:completed",
17137
- messageId: p.content.id,
17141
+ messageId: humanContent.id,
17138
17142
  timestamp: /* @__PURE__ */ new Date(),
17139
17143
  duration: Date.now() - startTime,
17140
17144
  state
@@ -17145,13 +17149,13 @@ var Agent = class {
17145
17149
  this.addChunk({
17146
17150
  type: "message_failed",
17147
17151
  data: {
17148
- id: p.content.id,
17152
+ id: humanContent.id,
17149
17153
  content: error instanceof Error ? error.message : String(error)
17150
17154
  }
17151
17155
  });
17152
17156
  this.publish("message:failed", {
17153
17157
  type: "message:failed",
17154
- messageId: p.content.id,
17158
+ messageId: humanContent.id,
17155
17159
  error: error instanceof Error ? error.message : String(error),
17156
17160
  timestamp: /* @__PURE__ */ new Date()
17157
17161
  });
@@ -17169,6 +17173,12 @@ var Agent = class {
17169
17173
  this.project_id = project_id;
17170
17174
  this.custom_run_config = custom_run_config;
17171
17175
  }
17176
+ getHumanPendingContent(message) {
17177
+ if (typeof message.content === "string" || !message.content || !("id" in message.content) || !("message" in message.content)) {
17178
+ throw new Error(`Expected human pending message content for message ${message.id}`);
17179
+ }
17180
+ return message.content;
17181
+ }
17172
17182
  /**
17173
17183
  * Initialize with message queue store
17174
17184
  */
@@ -17283,7 +17293,7 @@ var Agent = class {
17283
17293
  */
17284
17294
  async addMessage(queueMessage, mode) {
17285
17295
  const useMode = mode ?? this.queueMode.mode;
17286
- const messageId = v4();
17296
+ const messageId = queueMessage.input.id || v4();
17287
17297
  const isHighPriority = useMode === "steer" /* STEER */ || !!queueMessage.command;
17288
17298
  const store = this.getQueueStore();
17289
17299
  const currentSize = await store.getQueueSize(this.thread_id);
@@ -17302,14 +17312,21 @@ var Agent = class {
17302
17312
  }
17303
17313
  };
17304
17314
  if (isHighPriority) {
17305
- await store.addMessageAtHead(this.thread_id, content, "human");
17315
+ await store.addMessageAtHead(this.thread_id, content, "human", messageId, queueMessage.command);
17316
+ if (useMode === "steer" /* STEER */) {
17317
+ this.stopQueueProcessor();
17318
+ await store.resetProcessingToPending(this.thread_id);
17319
+ console.log(`[Agent] STEER mode: stopped current processing, reset queue, message ${messageId} will execute next`);
17320
+ }
17306
17321
  } else {
17307
17322
  await store.addMessage({
17308
17323
  threadId: this.thread_id,
17309
17324
  tenantId: this.tenant_id,
17310
17325
  assistantId: this.assistant_id,
17311
17326
  content,
17312
- type: "human"
17327
+ type: "human",
17328
+ command: queueMessage.command,
17329
+ id: messageId
17313
17330
  });
17314
17331
  }
17315
17332
  this.startQueueProcessorIfNeeded().catch((err) => {
@@ -17342,7 +17359,7 @@ var Agent = class {
17342
17359
  this.publish("thread:busy", {
17343
17360
  type: "thread:busy",
17344
17361
  timestamp: /* @__PURE__ */ new Date(),
17345
- messageId: firstMessage?.content?.id
17362
+ messageId: firstMessage ? this.getHumanPendingContent(firstMessage).id : void 0
17346
17363
  });
17347
17364
  this.waitingForQueueEnd(this.abortController.signal).catch((error) => {
17348
17365
  console.error(`Queue processing error for thread ${this.thread_id}:`, error);