openmates 0.27.0-alpha.61 → 0.27.0-alpha.62

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.
@@ -3923,6 +3923,14 @@ async function encryptEmbed(embed, masterKey, chatKey, chatId, messageId, userId
3923
3923
  hashed_user_id: hashedUserId,
3924
3924
  file_path: embed.filePath,
3925
3925
  content_hash: embed.contentHash,
3926
+ ...embed.appId && embed.skillId ? {
3927
+ app_id: embed.appId,
3928
+ skill_id: embed.skillId,
3929
+ root_embed_id: embed.embedId,
3930
+ workspace_origin: "chat"
3931
+ } : {},
3932
+ ...embed.versionNumber ? { version_number: embed.versionNumber } : {},
3933
+ encryption_mode: "client",
3926
3934
  text_length_chars: embed.textLengthChars,
3927
3935
  created_at: nowSeconds3,
3928
3936
  updated_at: nowSeconds3,
@@ -7311,6 +7319,35 @@ import { basename as basename2, extname as extname2, resolve as resolve3 } from
7311
7319
  import { homedir as homedir2 } from "os";
7312
7320
  import { createHash as createHash10 } from "crypto";
7313
7321
  import JSZip2 from "jszip";
7322
+
7323
+ // src/diagramHtml.ts
7324
+ function inspectDiagramHtml(source) {
7325
+ if (!source || Buffer.byteLength(source, "utf8") > 1024 * 1024) return null;
7326
+ if (!/^\s*<!doctype html\s*>/i.test(source) || !/<html\b[^>]*>[\s\S]*<head\b[^>]*>[\s\S]*<\/head\s*>[\s\S]*<body\b[^>]*>[\s\S]*<svg\b/i.test(source) || !/<\/svg\s*>[\s\S]*<\/body\s*>[\s\S]*<\/html\s*>\s*$/i.test(source) || !/<g\b[^>]*\bdata-om-component\s*=\s*["'][a-z][a-z0-9_-]{0,63}["']/i.test(source)) return null;
7327
+ let checked = source.replace(/\sxmlns(?::[\w-]+)?\s*=\s*["']http:\/\/www\.w3\.org\/[A-Za-z0-9/.-]+["']/gi, "");
7328
+ checked = checked.replace(/<!--[\s\S]*?-->/g, "").replace(/&amp;/gi, "&");
7329
+ checked = checked.replace(/data:font\/woff2;base64,([A-Za-z0-9+/]+={0,2})/gi, (whole, encoded) => {
7330
+ const bytes2 = Buffer.from(encoded, "base64");
7331
+ return bytes2.length > 0 && bytes2.length <= 256 * 1024 && bytes2.subarray(0, 4).toString() === "wOF2" && /@font-face\s*\{[^}]*$/i.test(checked.slice(0, checked.indexOf(whole))) ? "#embedded-font" : "unsafe-font-data";
7332
+ });
7333
+ if (/<!--|-->|<![^d]|<\?|&#|&[a-z][a-z0-9]+;/i.test(checked) || /<\s*\/?\s*(?:script|iframe|frame|object|embed|applet|link|base|img|image|video|audio|source|track|form|input|textarea|select|button|template|portal|foreignobject|animate|set|discard|feimage|math|noscript)\b/i.test(source) || /\s(?:on[a-z]+|srcdoc|src|srcset|poster|data|action|formaction|background|http-equiv)\s*=/i.test(source) || /(?:https?:|file:|javascript:|data:|\/\/|unsafe-font-data)/i.test(checked) || /@\s*(?:import|namespace|document)|expression\s*\(|image-set\s*\(|behavior\s*:|-moz-binding\s*:|\\/i.test(checked)) return null;
7334
+ for (const match of checked.matchAll(/url\(\s*(['"]?)([^)"']+)\1\s*\)/gi)) {
7335
+ if (!/^#[a-z_][\w.:-]{0,119}$/i.test(match[2].trim())) return null;
7336
+ }
7337
+ if (/url\s*\(/i.test(checked.replace(/url\(\s*(['"]?)([^)"']+)\1\s*\)/gi, ""))) return null;
7338
+ const title = /<title\b[^>]*>([^<>]{1,160})<\/title\s*>/i.exec(source)?.[1]?.trim();
7339
+ const viewBox = /<svg\b[^>]*\bviewBox\s*=\s*["']([^"']+)["']/i.exec(source)?.[1];
7340
+ if (!title || !viewBox) return null;
7341
+ const parts = viewBox.trim().split(/[\s,]+/).map(Number);
7342
+ if (parts.length !== 4 || parts.some((n) => !Number.isFinite(n)) || parts[2] < 1 || parts[2] > 8192 || parts[3] < 1 || parts[3] > 8192) return null;
7343
+ const kind = /<svg\b[^>]*\bdata-diagram-kind\s*=\s*["']([a-z][a-z0-9_-]{0,63})["']/i.exec(source)?.[1] ?? /<svg\b[^>]*\bdata-om-diagram\s*=\s*["']([a-z][a-z0-9_-]{0,63})["']/i.exec(source)?.[1] ?? /<meta\b[^>]*\bname\s*=\s*["']diagram-kind["'][^>]*\bcontent\s*=\s*["']([a-z][a-z0-9_-]{0,63})["']/i.exec(source)?.[1] ?? "diagram";
7344
+ const renderWidth = Number(/<html\b[^>]*\bdata-om-render-width\s*=\s*["']([0-9]{1,4})["']/i.exec(source)?.[1] ?? parts[2]);
7345
+ const renderHeight = Number(/<html\b[^>]*\bdata-om-render-height\s*=\s*["']([0-9]{1,4})["']/i.exec(source)?.[1] ?? parts[3]);
7346
+ if (!(renderWidth >= 1 && renderWidth <= 8192 && renderHeight >= 1 && renderHeight <= 8192)) return null;
7347
+ return { title, diagramKind: kind, renderWidth: Math.round(renderWidth), renderHeight: Math.round(renderHeight) };
7348
+ }
7349
+
7350
+ // src/fileEmbed.ts
7314
7351
  var MAX_PER_FILE_SIZE = 100 * 1024 * 1024;
7315
7352
  var BLOCKED_EXTENSIONS = /* @__PURE__ */ new Set([
7316
7353
  ".pem",
@@ -7833,6 +7870,47 @@ function processCodeFile(filePath, filename, redactor) {
7833
7870
  }
7834
7871
  }
7835
7872
  const language = detectLanguage(filename);
7873
+ if (language === "html") {
7874
+ const diagram = inspectDiagramHtml(content);
7875
+ if (diagram) {
7876
+ const embedId2 = generateEmbedId();
7877
+ const embedRef2 = createEmbedRef("diagram_html", `${filename}:${embedId2}`);
7878
+ return {
7879
+ embed: {
7880
+ embedId: embedId2,
7881
+ embedRef: embedRef2,
7882
+ type: "diagram_html",
7883
+ content: toonEncodeContent({
7884
+ type: "diagram_html",
7885
+ app_id: "diagrams",
7886
+ skill_id: "html",
7887
+ html_source: content,
7888
+ title: diagram.title,
7889
+ diagram_kind: diagram.diagramKind,
7890
+ render_width: diagram.renderWidth,
7891
+ render_height: diagram.renderHeight,
7892
+ schema_version: 1,
7893
+ version_number: 1,
7894
+ embed_ref: embedRef2,
7895
+ status: "finished"
7896
+ }),
7897
+ textPreview: `${diagram.title} (${diagram.diagramKind})`,
7898
+ status: "finished",
7899
+ filePath: filename,
7900
+ contentHash: createHash10("sha256").update(content).digest("hex"),
7901
+ textLengthChars: content.length,
7902
+ appId: "diagrams",
7903
+ skillId: "html",
7904
+ versionNumber: 1
7905
+ },
7906
+ referenceBlock: createEmbedReferenceBlock(embedRef2),
7907
+ displayName: filename,
7908
+ secretsRedacted,
7909
+ zeroKnowledge,
7910
+ requiresUpload: false
7911
+ };
7912
+ }
7913
+ }
7836
7914
  const lineCount = content.split("\n").length;
7837
7915
  const embedId = generateEmbedId();
7838
7916
  const embedRef = createEmbedRef("code", `${filename}:${embedId}`);
@@ -11157,6 +11235,7 @@ function extractVersionedEmbedContent(content) {
11157
11235
  ].join("\n").trim();
11158
11236
  }
11159
11237
  if (typeof content.remotion_source === "string") return content.remotion_source;
11238
+ if (typeof content.html_source === "string") return content.html_source;
11160
11239
  if (typeof content.code === "string") return content.code;
11161
11240
  if (typeof content.html === "string") return content.html;
11162
11241
  if (typeof content.table === "string") return content.table;
@@ -11172,6 +11251,7 @@ function buildRestoredEmbedContentObject(current2, restoredContent, newVersion)
11172
11251
  if (typeof current2.remotion_source === "string") {
11173
11252
  return { ...restored, remotion_source: restoredContent, current_source_version: newVersion };
11174
11253
  }
11254
+ if (typeof current2.html_source === "string") return { ...restored, html_source: restoredContent };
11175
11255
  if (typeof current2.code === "string") return { ...restored, code: restoredContent };
11176
11256
  if (typeof current2.html === "string") return { ...restored, html: restoredContent };
11177
11257
  if (typeof current2.table === "string") return { ...restored, table: restoredContent };
@@ -15232,7 +15312,8 @@ var OpenMatesClient = class _OpenMatesClient {
15232
15312
  code: "code",
15233
15313
  pcb_schematic: "code",
15234
15314
  sheet: "table",
15235
- mermaid: "diagram_code"
15315
+ mermaid: "diagram_code",
15316
+ diagram_html: "html_source"
15236
15317
  };
15237
15318
  const field3 = historicalFieldByType[content.type];
15238
15319
  if (!field3 || typeof sealedEmbed[field3] !== "string") {
@@ -16598,7 +16679,8 @@ var OpenMatesClient = class _OpenMatesClient {
16598
16679
  chatId,
16599
16680
  chatKeyBytes,
16600
16681
  fallbackMessageId: assistantId,
16601
- ownerId: ownerId2
16682
+ ownerId: ownerId2,
16683
+ teamId
16602
16684
  });
16603
16685
  clearSyncCache(teamId);
16604
16686
  await persistCompressionCheckpoints(ws, chatKeyBytes, resp.compressionCheckpoints);
@@ -16749,7 +16831,8 @@ var OpenMatesClient = class _OpenMatesClient {
16749
16831
  chatId,
16750
16832
  chatKeyBytes,
16751
16833
  fallbackMessageId: assistantId,
16752
- ownerId: ownerId2
16834
+ ownerId: ownerId2,
16835
+ teamId
16753
16836
  });
16754
16837
  if (isNewChat && (resp.generatedTitle || resp.generatedIcon)) {
16755
16838
  const metadataStored = ws.waitForMessage(
@@ -17196,6 +17279,12 @@ var OpenMatesClient = class _OpenMatesClient {
17196
17279
  version_number: embed.version_number,
17197
17280
  file_path: embed.file_path,
17198
17281
  content_hash: embed.content_hash,
17282
+ ...embed.type === "diagram_html" ? {
17283
+ app_id: "diagrams",
17284
+ skill_id: "html",
17285
+ chat_id: params.chatId,
17286
+ ...params.teamId ? { team_id: params.teamId } : {}
17287
+ } : {},
17199
17288
  text_length_chars: embed.text_length_chars,
17200
17289
  is_private: embed.is_private ?? false,
17201
17290
  is_shared: embed.is_shared ?? false,
@@ -21004,6 +21093,66 @@ Required: ${schema.required.join(", ")}`
21004
21093
  const now = Math.floor(Date.now() / 1e3);
21005
21094
  const { ws } = await this.openWsClient();
21006
21095
  try {
21096
+ if (currentObject.type === "diagram_html") {
21097
+ const chat = cache.chats.find((entry) => computeSHA256(String(entry.details.id ?? "")) === embed.hashed_chat_id);
21098
+ const chatId = String(chat?.details.id ?? "");
21099
+ if (!chatId || typeof embed.content_hash !== "string" || embed.content_hash !== computeSHA256(currentContent)) {
21100
+ throw new Error("Diagram restore requires a current chat and matching source hash.");
21101
+ }
21102
+ const teamId = this.resolveTeamContext();
21103
+ const versions = await this.listEmbedVersions(embedId, { chatId, teamId: teamId ?? void 0 });
21104
+ if (versions.readonly) throw new Error("Diagram version history is read-only.");
21105
+ const historyRows = [];
21106
+ if (currentVersion === 1 && !versions.versions.some((row3) => row3.version_number === 1)) {
21107
+ historyRows.push({
21108
+ version_number: 1,
21109
+ encrypted_snapshot: await encryptWithAesGcmCombined(currentContent, embedKey),
21110
+ created_at: normalizeUnixSeconds(embed.created_at, now)
21111
+ });
21112
+ }
21113
+ historyRows.push({
21114
+ version_number: newVersion,
21115
+ encrypted_patch: encryptedPatch,
21116
+ encrypted_snapshot: encryptedSnapshot,
21117
+ created_at: now
21118
+ });
21119
+ const requestId = randomUUID9();
21120
+ const operationId = randomUUID9();
21121
+ const receipt = ws.waitForMessage(
21122
+ "commit_chat_diagram_revision_result",
21123
+ (payload) => payload.request_id === requestId,
21124
+ 3e4
21125
+ );
21126
+ await ws.sendAsync("commit_chat_diagram_revision", {
21127
+ request_id: requestId,
21128
+ operation_id: operationId,
21129
+ embed_id: embedId,
21130
+ chat_id: chatId,
21131
+ ...teamId ? { team_id: teamId } : {},
21132
+ expected_revision: currentVersion,
21133
+ expected_content_hash: embed.content_hash,
21134
+ head: {
21135
+ encrypted_content: encryptedRestoredContent,
21136
+ encrypted_text_preview: embed.encrypted_text_preview ?? null,
21137
+ content_hash: contentHash,
21138
+ status: "finished",
21139
+ updated_at: now
21140
+ },
21141
+ history_rows: historyRows
21142
+ });
21143
+ const result = (await receipt).payload;
21144
+ if (result.status !== "committed" || result.current_revision !== newVersion || result.current_content_hash !== contentHash) {
21145
+ throw new Error(result.status === "conflict" ? "Diagram advanced on another device; reload and retry restore." : `Diagram restore was rejected: ${String(result.code ?? "unknown")}`);
21146
+ }
21147
+ clearSyncCache(teamId);
21148
+ return {
21149
+ embed_id: embedId,
21150
+ restored_from_version: version,
21151
+ version_number: newVersion,
21152
+ content: target.content,
21153
+ content_hash: contentHash
21154
+ };
21155
+ }
21007
21156
  const storeRequestId = randomUUID9();
21008
21157
  const storeConfirmed = ws.waitForMessage(
21009
21158
  "store_embed_confirmed",
@@ -34367,6 +34516,8 @@ var DIRECT_TYPES = /* @__PURE__ */ new Set([
34367
34516
  "recording",
34368
34517
  "mail-email",
34369
34518
  "math-plot",
34519
+ "diagram_html",
34520
+ "diagrams-html",
34370
34521
  "mindmap",
34371
34522
  "mindmaps-mindmap",
34372
34523
  "events-event",
@@ -34398,6 +34549,8 @@ var DIRECT_TYPE_LABELS = {
34398
34549
  "recording": "recording",
34399
34550
  "mail-email": "email",
34400
34551
  "math-plot": "plot",
34552
+ "diagram_html": "diagram",
34553
+ "diagrams-html": "diagram",
34401
34554
  "mindmap": "Mind Map",
34402
34555
  "mindmaps-mindmap": "Mind Map",
34403
34556
  "events-event": "event",
@@ -35469,6 +35622,15 @@ function renderByDirectType(embed, c, ln) {
35469
35622
  ln("\x1B[2m[mathematical plot]\x1B[0m");
35470
35623
  break;
35471
35624
  }
35625
+ case "diagram_html":
35626
+ case "diagrams-html": {
35627
+ ln(str(c.title) ?? "Diagram");
35628
+ const kind = str(c.diagram_kind) ?? "diagram";
35629
+ const width = typeof c.render_width === "number" ? c.render_width : 0;
35630
+ const height = typeof c.render_height === "number" ? c.render_height : 0;
35631
+ ln(`\x1B[2m${kind}${width && height ? ` \xB7 ${width} \xD7 ${height}` : ""}\x1B[0m`);
35632
+ break;
35633
+ }
35472
35634
  case "mindmap":
35473
35635
  case "mindmaps-mindmap": {
35474
35636
  const document = mindMapDocumentFromContent(c);
@@ -35660,6 +35822,18 @@ function renderDirectTypeFullscreen(embed, c, write) {
35660
35822
  }
35661
35823
  break;
35662
35824
  }
35825
+ case "diagram_html":
35826
+ case "diagrams-html": {
35827
+ writeEmbedLine(write, `Title: ${str(c.title) ?? "Diagram"}`);
35828
+ writeEmbedLine(write, `Kind: ${str(c.diagram_kind) ?? "diagram"}`);
35829
+ if (typeof c.render_width === "number" && typeof c.render_height === "number") {
35830
+ writeEmbedLine(write, `Size: ${c.render_width} \xD7 ${c.render_height}`);
35831
+ }
35832
+ writeEmbedLine(write, `Version: ${typeof c.version_number === "number" ? c.version_number : 1}`);
35833
+ writeEmbedLine(write, `Source: ${typeof c.html_source === "string" ? c.html_source.length : 0} characters`);
35834
+ writeEmbedLine(write, "Export with: openmates chats download <chat> --output <directory>");
35835
+ break;
35836
+ }
35663
35837
  case "mindmap":
35664
35838
  case "mindmaps-mindmap": {
35665
35839
  const document = mindMapDocumentFromContent(c);
@@ -67743,6 +67917,62 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
67743
67917
  }
67744
67918
  }
67745
67919
  },
67920
+ diagrams: {
67921
+ html: {
67922
+ text: "Editable Diagram"
67923
+ },
67924
+ edit: {
67925
+ text: "Edit diagram"
67926
+ },
67927
+ loading: {
67928
+ text: "Preparing diagram\u2026"
67929
+ },
67930
+ invalid_source: {
67931
+ text: "This diagram contains unsupported content."
67932
+ },
67933
+ conflict: {
67934
+ text: "The diagram changed on another device. Reload before editing."
67935
+ },
67936
+ saved: {
67937
+ text: "Diagram saved"
67938
+ },
67939
+ saved_refresh: {
67940
+ text: "Diagram saved. Refresh this page to sync this device before editing again."
67941
+ },
67942
+ history_unavailable: {
67943
+ text: "This diagram version could not be loaded. Choose another version to retry."
67944
+ },
67945
+ history_version: {
67946
+ text: "Viewing version"
67947
+ },
67948
+ save_failed: {
67949
+ text: "Could not save diagram"
67950
+ },
67951
+ zoom_out: {
67952
+ text: "Zoom out"
67953
+ },
67954
+ zoom_in: {
67955
+ text: "Zoom in"
67956
+ },
67957
+ fit: {
67958
+ text: "Fit diagram"
67959
+ },
67960
+ export: {
67961
+ text: "Export HTML"
67962
+ },
67963
+ undo: {
67964
+ text: "Undo"
67965
+ },
67966
+ cancel: {
67967
+ text: "Cancel"
67968
+ },
67969
+ save: {
67970
+ text: "Save changes"
67971
+ },
67972
+ saving: {
67973
+ text: "Saving\u2026"
67974
+ }
67975
+ },
67746
67976
  digital_team_mates: {
67747
67977
  digital_team_mates: {
67748
67978
  text: "Digital Team Mates"
@@ -70474,6 +70704,9 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
70474
70704
  diagrams: {
70475
70705
  mermaid: {
70476
70706
  text: "Mermaid Diagram"
70707
+ },
70708
+ html: {
70709
+ text: "Editable Diagram"
70477
70710
  }
70478
70711
  },
70479
70712
  mail: {
@@ -116889,6 +117122,7 @@ ${deleted}/${resolved.length} chat(s) deleted.`);
116889
117122
  }
116890
117123
  const codeEmbeds = [];
116891
117124
  const transcriptEmbeds = [];
117125
+ const diagramEmbeds = [];
116892
117126
  const processedEmbedIds = /* @__PURE__ */ new Set();
116893
117127
  const allEmbedIds = [];
116894
117128
  for (const msg of messages) {
@@ -116905,6 +117139,9 @@ ${deleted}/${resolved.length} chat(s) deleted.`);
116905
117139
  const eid = embedQueue.shift();
116906
117140
  try {
116907
117141
  const embed = await client2.getEmbed(eid);
117142
+ if ((embed.type === "diagram_html" || embed.type === "diagrams-html") && typeof embed.content?.html_source === "string" && embed.content.html_source) {
117143
+ diagramEmbeds.push({ embedId: embed.embedId, content: embed.content.html_source });
117144
+ }
116908
117145
  if (embed.type === "code" && embed.content) {
116909
117146
  const code = typeof embed.content.code === "string" ? embed.content.code : typeof embed.content.content === "string" ? embed.content.content : null;
116910
117147
  if (code) {
@@ -116982,6 +117219,13 @@ ${deleted}/${resolved.length} chat(s) deleted.`);
116982
117219
  await writeFile3(join31(tDir, te.filename), te.content);
116983
117220
  }
116984
117221
  }
117222
+ if (diagramEmbeds.length > 0) {
117223
+ const dDir = join31(tmpDir, "diagrams");
117224
+ await mkdir4(dDir, { recursive: true });
117225
+ for (const diagram of diagramEmbeds) {
117226
+ await writeFile3(join31(dDir, `${diagram.embedId}.html`), diagram.content);
117227
+ }
117228
+ }
116985
117229
  const zipPath = join31(outputDir, `${filenameBase}.zip`);
116986
117230
  const { execSync: execSync2 } = await import("child_process");
116987
117231
  try {
@@ -117023,6 +117267,15 @@ ${deleted}/${resolved.length} chat(s) deleted.`);
117023
117267
  written.push(`transcripts/${te.filename}`);
117024
117268
  }
117025
117269
  }
117270
+ if (diagramEmbeds.length > 0) {
117271
+ const dDir = join31(chatDir, "diagrams");
117272
+ await mkdir4(dDir, { recursive: true });
117273
+ for (const diagram of diagramEmbeds) {
117274
+ const filename = `${diagram.embedId}.html`;
117275
+ await writeFile3(join31(dDir, filename), diagram.content);
117276
+ written.push(`diagrams/${filename}`);
117277
+ }
117278
+ }
117026
117279
  const label4 = chat.title ? `"${chat.title}"` : chatHandle(chat);
117027
117280
  process.stdout.write(
117028
117281
  `\x1B[1mDownloaded chat ${label4}\x1B[0m \u2192 ${chatDir}
@@ -183,6 +183,8 @@ interface SendEmbedDataFrame {
183
183
  version_number?: number;
184
184
  file_path?: string;
185
185
  content_hash?: string;
186
+ app_id?: string;
187
+ skill_id?: string;
186
188
  text_length_chars?: number;
187
189
  is_private?: boolean;
188
190
  is_shared?: boolean;
@@ -731,6 +733,9 @@ interface PreparedEmbed {
731
733
  filePath?: string;
732
734
  contentHash?: string;
733
735
  textLengthChars?: number;
736
+ appId?: string;
737
+ skillId?: string;
738
+ versionNumber?: number;
734
739
  }
735
740
  /** A fully encrypted embed ready for the WebSocket payload */
736
741
  interface EncryptedEmbed {
@@ -745,6 +750,12 @@ interface EncryptedEmbed {
745
750
  embed_ids?: string[];
746
751
  file_path?: string;
747
752
  content_hash?: string;
753
+ app_id?: string;
754
+ skill_id?: string;
755
+ root_embed_id?: string;
756
+ workspace_origin?: "chat";
757
+ version_number?: number;
758
+ encryption_mode?: "client";
748
759
  text_length_chars?: number;
749
760
  created_at: number;
750
761
  updated_at: number;
package/dist/cli.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export { ak as ImagesAiDetectionClassification, al as ImagesAiDetectionSummary, aK as assertTrustedAccountCommandAllowed, aL as assertTrustedAccountGuardEnvironment, aC as buildImagesAiDetectionSummary, aM as buildProjectDefaultFocus, aN as buildTravelConnectionsRequest, aD as classifyImagesAiDetection, aO as extractExplicitProjectMentions, aF as formatImagesAiDetectionLabel, aG as getExtForLang, aP as handleWiki, aQ as printWhoAmI, aR as readRootProjectInstructions, aS as renderProjectReadApprovalRequest, aT as renderProjectWriteApprovalRequest, aU as renderRemoteCommandEvent, aV as requireExactConfirmation, aW as resolveProjectContext, aJ as serializeToYaml, aX as shouldRequireTrustedAccountGuard, aY as waitForSafeE2ETotpWindow, aZ as waitForWorkflowRun } from './cli-CKAB-eW0.js';
2
+ export { ak as ImagesAiDetectionClassification, al as ImagesAiDetectionSummary, aK as assertTrustedAccountCommandAllowed, aL as assertTrustedAccountGuardEnvironment, aC as buildImagesAiDetectionSummary, aM as buildProjectDefaultFocus, aN as buildTravelConnectionsRequest, aD as classifyImagesAiDetection, aO as extractExplicitProjectMentions, aF as formatImagesAiDetectionLabel, aG as getExtForLang, aP as handleWiki, aQ as printWhoAmI, aR as readRootProjectInstructions, aS as renderProjectReadApprovalRequest, aT as renderProjectWriteApprovalRequest, aU as renderRemoteCommandEvent, aV as requireExactConfirmation, aW as resolveProjectContext, aJ as serializeToYaml, aX as shouldRequireTrustedAccountGuard, aY as waitForSafeE2ETotpWindow, aZ as waitForWorkflowRun } from './cli-CPgxlEQg.js';
package/dist/cli.js CHANGED
@@ -21,7 +21,7 @@ import {
21
21
  shouldRequireTrustedAccountGuard,
22
22
  waitForSafeE2ETotpWindow,
23
23
  waitForWorkflowRun
24
- } from "./chunk-OR3BDIWR.js";
24
+ } from "./chunk-CFP7IA76.js";
25
25
  import "./chunk-5SFXCJJ4.js";
26
26
  import "./chunk-IWKP55ZB.js";
27
27
  import "./chunk-F2U6KIMR.js";
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as OpenMatesSession, U as UserPlanStatus, a as UserPlanRecord, b as UserPlanVerificationStatus, c as UserPlanLearningType, d as UserPlanLearningTargetKind, e as UserPlanLearningStatus, f as UserPlanLearningLevel, g as UserPlanLearningRecord, h as UserPlanCriterionRecord, i as UserPlanVerificationRecord, j as UserPlanCreateInput, k as UserPlanUpdateInput, B as BuyerAddress, P as ProjectItemRecord, T as TaskCreateOptions, l as TaskUpdateOptions, m as UserPlanLearningCreateTasksInput, n as UserPlanLearningCreateTasksResult, o as UserTaskStatus, E as ExternalChatContext, p as TaskPriorityLevel, D as DecryptedUserTask, q as DecryptedTaskActivityEntry, r as TaskActivityCreateOptions, s as UserTaskReorderInput, W as WorkflowSummary, t as WorkflowCapability, u as WorkflowDetail, v as WorkflowAuthoringWarning, w as WorkflowInputStartParams, x as WorkflowInputSessionResult, y as WorkflowInputSessionDetail, z as WorkflowInputEvent, A as WorkflowGraph, C as WorkflowRunContentRetention, F as WorkflowRunOnceOptions, G as WorkflowRunDetail, H as WorkflowRunOptions, I as WorkflowNode, J as WorkflowRunCancellationResult, K as WorkflowTemplateProjectionUpsertParams, L as WorkflowTemplateProjectionResult, M as PublicWorkflowTemplateProjection, N as WorkflowTemplateProjectionRevocationResult, Q as WorkflowTemplateBindingCompletionParams, R as WorkflowTemplateBindingCompletionResult, S as WorkflowTemplateShortUrlParams, V as WorkflowTemplateShortUrlResult, X as ShortUrlRevokeResult, Y as WorkflowTemplateImportPayload, Z as ImportedWorkflowTemplate, _ as WikipediaLearningBundle } from './cli-CKAB-eW0.js';
2
- export { $ as AuthMethodsStatus, a0 as AuthoritativeChatReconciliation, a1 as BackupCodesResult, a2 as BankTransferOrderDetails, a3 as BankTransferStatus, a4 as CachedChat, a5 as CachedNewChatSuggestion, a6 as ChatListPage, a7 as CliSignupResult, a8 as DecryptedDraft, a9 as DecryptedEmbed, aa as DecryptedMemoryEntry, ab as DecryptedMessage, ac as DecryptedNewChatSuggestion, ad as DocsFile, ae as DocsFolder, af as DocsSearchResult, ag as DocsTree, ah as EncryptedDraft, ai as GiftCardBankTransferStatus, aj as INTEREST_TAG_IDS, ak as ImagesAiDetectionClassification, al as ImagesAiDetectionSummary, am as InterestTagId, an as MATE_NAMES, ao as MEMORY_TYPE_REGISTRY, ap as MemoryFieldDef, aq as MemoryTypeDef, ar as OpenMatesClient, as as OpenMatesClientOptions, at as SyncCache, au as TopicPreferencesPayload, av as TotpSetupStartResult, aw as WorkflowEdge, ax as WorkflowNodeRun, ay as WorkflowNodeType, az as WorkflowReturnedOutputReference, aA as WorkflowRunContentStorage, aB as WorkflowRunRouting, aC as buildImagesAiDetectionSummary, aD as classifyImagesAiDetection, aE as deriveAppUrl, aF as formatImagesAiDetectionLabel, aG as getExtForLang, aH as normalizeInterestTagIds, aI as reconcileAuthoritativeChats, aJ as serializeToYaml } from './cli-CKAB-eW0.js';
1
+ import { O as OpenMatesSession, U as UserPlanStatus, a as UserPlanRecord, b as UserPlanVerificationStatus, c as UserPlanLearningType, d as UserPlanLearningTargetKind, e as UserPlanLearningStatus, f as UserPlanLearningLevel, g as UserPlanLearningRecord, h as UserPlanCriterionRecord, i as UserPlanVerificationRecord, j as UserPlanCreateInput, k as UserPlanUpdateInput, B as BuyerAddress, P as ProjectItemRecord, T as TaskCreateOptions, l as TaskUpdateOptions, m as UserPlanLearningCreateTasksInput, n as UserPlanLearningCreateTasksResult, o as UserTaskStatus, E as ExternalChatContext, p as TaskPriorityLevel, D as DecryptedUserTask, q as DecryptedTaskActivityEntry, r as TaskActivityCreateOptions, s as UserTaskReorderInput, W as WorkflowSummary, t as WorkflowCapability, u as WorkflowDetail, v as WorkflowAuthoringWarning, w as WorkflowInputStartParams, x as WorkflowInputSessionResult, y as WorkflowInputSessionDetail, z as WorkflowInputEvent, A as WorkflowGraph, C as WorkflowRunContentRetention, F as WorkflowRunOnceOptions, G as WorkflowRunDetail, H as WorkflowRunOptions, I as WorkflowNode, J as WorkflowRunCancellationResult, K as WorkflowTemplateProjectionUpsertParams, L as WorkflowTemplateProjectionResult, M as PublicWorkflowTemplateProjection, N as WorkflowTemplateProjectionRevocationResult, Q as WorkflowTemplateBindingCompletionParams, R as WorkflowTemplateBindingCompletionResult, S as WorkflowTemplateShortUrlParams, V as WorkflowTemplateShortUrlResult, X as ShortUrlRevokeResult, Y as WorkflowTemplateImportPayload, Z as ImportedWorkflowTemplate, _ as WikipediaLearningBundle } from './cli-CPgxlEQg.js';
2
+ export { $ as AuthMethodsStatus, a0 as AuthoritativeChatReconciliation, a1 as BackupCodesResult, a2 as BankTransferOrderDetails, a3 as BankTransferStatus, a4 as CachedChat, a5 as CachedNewChatSuggestion, a6 as ChatListPage, a7 as CliSignupResult, a8 as DecryptedDraft, a9 as DecryptedEmbed, aa as DecryptedMemoryEntry, ab as DecryptedMessage, ac as DecryptedNewChatSuggestion, ad as DocsFile, ae as DocsFolder, af as DocsSearchResult, ag as DocsTree, ah as EncryptedDraft, ai as GiftCardBankTransferStatus, aj as INTEREST_TAG_IDS, ak as ImagesAiDetectionClassification, al as ImagesAiDetectionSummary, am as InterestTagId, an as MATE_NAMES, ao as MEMORY_TYPE_REGISTRY, ap as MemoryFieldDef, aq as MemoryTypeDef, ar as OpenMatesClient, as as OpenMatesClientOptions, at as SyncCache, au as TopicPreferencesPayload, av as TotpSetupStartResult, aw as WorkflowEdge, ax as WorkflowNodeRun, ay as WorkflowNodeType, az as WorkflowReturnedOutputReference, aA as WorkflowRunContentStorage, aB as WorkflowRunRouting, aC as buildImagesAiDetectionSummary, aD as classifyImagesAiDetection, aE as deriveAppUrl, aF as formatImagesAiDetectionLabel, aG as getExtForLang, aH as normalizeInterestTagIds, aI as reconcileAuthoritativeChats, aJ as serializeToYaml } from './cli-CPgxlEQg.js';
3
3
 
4
4
  type ChatModelSelection = "auto" | (string & {});
5
5
  interface ChatModelCatalogEntry {
package/dist/index.js CHANGED
@@ -44,7 +44,7 @@ import {
44
44
  selectAssistantMessagesForSpeech,
45
45
  serializeToYaml,
46
46
  summarizeAssistantSpeech
47
- } from "./chunk-OR3BDIWR.js";
47
+ } from "./chunk-CFP7IA76.js";
48
48
  import "./chunk-5SFXCJJ4.js";
49
49
  import "./chunk-IWKP55ZB.js";
50
50
  import "./chunk-F2U6KIMR.js";
@@ -17,47 +17,47 @@
17
17
  {
18
18
  "name": "libggml-base.so",
19
19
  "bytes": 1110088,
20
- "sha256": "d7a6ec49b08a5f4b6fc9c1c5239b4c073a89d97846185c4b9444b427f591bc8d"
20
+ "sha256": "b856a8904ac1caa9103ca4958a4d9749b967be77cf30f1ad352d14c6605bf2c2"
21
21
  },
22
22
  {
23
23
  "name": "libggml-base.so.0",
24
24
  "bytes": 1110088,
25
- "sha256": "d7a6ec49b08a5f4b6fc9c1c5239b4c073a89d97846185c4b9444b427f591bc8d"
25
+ "sha256": "b856a8904ac1caa9103ca4958a4d9749b967be77cf30f1ad352d14c6605bf2c2"
26
26
  },
27
27
  {
28
28
  "name": "libggml-base.so.0.15.1",
29
29
  "bytes": 1110088,
30
- "sha256": "d7a6ec49b08a5f4b6fc9c1c5239b4c073a89d97846185c4b9444b427f591bc8d"
30
+ "sha256": "b856a8904ac1caa9103ca4958a4d9749b967be77cf30f1ad352d14c6605bf2c2"
31
31
  },
32
32
  {
33
33
  "name": "libggml-cpu.so",
34
34
  "bytes": 869800,
35
- "sha256": "749b033371d1a8cd0440fbf4cb454d6461b943b84f38d5e424bf05d81d3c8784"
35
+ "sha256": "02d1f3ecfdc0e0416c481564e679fb0903c73199d5eec6d97aea1011643b7f53"
36
36
  },
37
37
  {
38
38
  "name": "libggml-cpu.so.0",
39
39
  "bytes": 869800,
40
- "sha256": "749b033371d1a8cd0440fbf4cb454d6461b943b84f38d5e424bf05d81d3c8784"
40
+ "sha256": "02d1f3ecfdc0e0416c481564e679fb0903c73199d5eec6d97aea1011643b7f53"
41
41
  },
42
42
  {
43
43
  "name": "libggml-cpu.so.0.15.1",
44
44
  "bytes": 869800,
45
- "sha256": "749b033371d1a8cd0440fbf4cb454d6461b943b84f38d5e424bf05d81d3c8784"
45
+ "sha256": "02d1f3ecfdc0e0416c481564e679fb0903c73199d5eec6d97aea1011643b7f53"
46
46
  },
47
47
  {
48
48
  "name": "libggml.so",
49
49
  "bytes": 1899104,
50
- "sha256": "d147b7f6acc23de86d8a56cf07bb6d077393f2cd1b45fcb1f35ba8cb71b6e7be"
50
+ "sha256": "0bad7ec53db97eb39bcb4b351af20b5942255d0d1f6c0de3e9fbbfa0d312d702"
51
51
  },
52
52
  {
53
53
  "name": "libggml.so.0",
54
54
  "bytes": 1899104,
55
- "sha256": "d147b7f6acc23de86d8a56cf07bb6d077393f2cd1b45fcb1f35ba8cb71b6e7be"
55
+ "sha256": "0bad7ec53db97eb39bcb4b351af20b5942255d0d1f6c0de3e9fbbfa0d312d702"
56
56
  },
57
57
  {
58
58
  "name": "libggml.so.0.15.1",
59
59
  "bytes": 1899104,
60
- "sha256": "d147b7f6acc23de86d8a56cf07bb6d077393f2cd1b45fcb1f35ba8cb71b6e7be"
60
+ "sha256": "0bad7ec53db97eb39bcb4b351af20b5942255d0d1f6c0de3e9fbbfa0d312d702"
61
61
  },
62
62
  {
63
63
  "name": "openmates-pii-worker",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openmates",
3
- "version": "0.27.0-alpha.61",
3
+ "version": "0.27.0-alpha.62",
4
4
  "description": "OpenMates CLI and SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",