openmates 0.14.8-alpha.4 → 0.14.8-alpha.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.
@@ -3003,18 +3003,28 @@ async function buildTaskEventSystemMessage(params) {
3003
3003
  if (params.event.task_update_job_id) message.task_update_job_id = params.event.task_update_job_id;
3004
3004
  return message;
3005
3005
  }
3006
+ function taskUpdateJobBelongsToActiveTurn(job, activeChatId, taskEvents) {
3007
+ if (taskEvents.some((event) => event.task_update_job_id === job.job_id)) return true;
3008
+ return !job.chat_id || job.chat_id === activeChatId;
3009
+ }
3006
3010
  function buildTaskUpdateJobPersistPayload(params) {
3007
- assertTaskPersistPayloadEncrypted(params.encryptedTaskPayload);
3011
+ const encryptedTaskPayload = pruneAbsentTaskPersistFields(params.encryptedTaskPayload);
3012
+ assertTaskPersistPayloadEncrypted(encryptedTaskPayload);
3008
3013
  return {
3009
3014
  protocol_version: 1,
3010
3015
  job_id: params.jobId,
3011
3016
  lease_token: params.leaseToken,
3012
3017
  lease_generation: params.leaseGeneration,
3013
3018
  expected_task_version: params.expectedTaskVersion,
3014
- encrypted_task_payload: { ...params.encryptedTaskPayload },
3019
+ encrypted_task_payload: encryptedTaskPayload,
3015
3020
  encrypted_task_event_message: params.encryptedTaskEventMessage ?? null
3016
3021
  };
3017
3022
  }
3023
+ function pruneAbsentTaskPersistFields(payload) {
3024
+ return Object.fromEntries(
3025
+ Object.entries(payload).filter(([, value]) => value !== void 0 && value !== null)
3026
+ );
3027
+ }
3018
3028
  function formatTaskEventSystemContent(event) {
3019
3029
  const taskLabel = event.short_id || event.task_id;
3020
3030
  const title = event.title ? ` "${event.title}"` : "";
@@ -5280,8 +5290,8 @@ var OpenMatesClient = class _OpenMatesClient {
5280
5290
  }
5281
5291
  };
5282
5292
  const persistPendingTaskUpdateJobs = async (jobs, events) => {
5283
- const persistedJobIds = /* @__PURE__ */ new Set();
5284
- if (jobs.length === 0) return persistedJobIds;
5293
+ const handledJobIds = /* @__PURE__ */ new Set();
5294
+ if (jobs.length === 0) return handledJobIds;
5285
5295
  const masterKey = this.getMasterKeyBytes();
5286
5296
  let decryptedTasksCache = null;
5287
5297
  const eventByJobId = new Map(events.map((event) => [event.task_update_job_id, event]));
@@ -5354,6 +5364,10 @@ var OpenMatesClient = class _OpenMatesClient {
5354
5364
  }
5355
5365
  };
5356
5366
  for (const job of jobs) {
5367
+ if (!taskUpdateJobBelongsToActiveTurn(job, chatId, events)) {
5368
+ handledJobIds.add(job.job_id);
5369
+ continue;
5370
+ }
5357
5371
  const claimPromise = ws.waitForMessage(
5358
5372
  "task_update_job_claimed",
5359
5373
  (payload) => payload.job_id === job.job_id,
@@ -5400,7 +5414,7 @@ var OpenMatesClient = class _OpenMatesClient {
5400
5414
  await persistEncryptedSystemMessage(eventMessage, sourceChatId);
5401
5415
  persistedTaskEventIds.add(event.event_id);
5402
5416
  await confirmTaskEventPersisted();
5403
- persistedJobIds.add(job.job_id);
5417
+ handledJobIds.add(job.job_id);
5404
5418
  continue;
5405
5419
  }
5406
5420
  if (!claim.lease_token || !Number.isSafeInteger(claim.lease_generation)) {
@@ -5436,6 +5450,7 @@ var OpenMatesClient = class _OpenMatesClient {
5436
5450
  });
5437
5451
  encryptedTaskPayload = {
5438
5452
  ...patch,
5453
+ version: claim.expected_task_version,
5439
5454
  updated_at: typeof safeMetadata.updated_at === "number" ? safeMetadata.updated_at : patch.updated_at
5440
5455
  };
5441
5456
  if (typeof safeMetadata.primary_chat_id === "string") {
@@ -5464,10 +5479,10 @@ var OpenMatesClient = class _OpenMatesClient {
5464
5479
  await persistEncryptedSystemMessage(eventMessage, sourceChatId);
5465
5480
  persistedTaskEventIds.add(event.event_id);
5466
5481
  await confirmTaskEventPersisted();
5467
- persistedJobIds.add(job.job_id);
5482
+ handledJobIds.add(job.job_id);
5468
5483
  }
5469
5484
  clearSyncCache();
5470
- return persistedJobIds;
5485
+ return handledJobIds;
5471
5486
  };
5472
5487
  const streamOpts = {
5473
5488
  onStream: params.onStream,
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getExtForLang,
4
4
  serializeToYaml
5
- } from "./chunk-UZA2XUCF.js";
5
+ } from "./chunk-7DQIT6E2.js";
6
6
  import "./chunk-AXNRPVLE.js";
7
7
  export {
8
8
  getExtForLang,
package/dist/index.js CHANGED
@@ -29,7 +29,7 @@ import {
29
29
  renderSupportInfo,
30
30
  serializeToYaml,
31
31
  unwrapApiKeyMasterKey
32
- } from "./chunk-UZA2XUCF.js";
32
+ } from "./chunk-7DQIT6E2.js";
33
33
  import "./chunk-AXNRPVLE.js";
34
34
 
35
35
  // src/generated/appSkills.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openmates",
3
- "version": "0.14.8-alpha.4",
3
+ "version": "0.14.8-alpha.6",
4
4
  "description": "OpenMates CLI and SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",