openmates 0.27.0-alpha.53 → 0.27.0-alpha.55
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/{chunk-5HWC6OTW.js → chunk-5SFXCJJ4.js} +0 -6
- package/dist/{chunk-PCH6QOC4.js → chunk-6W3OFVOF.js} +237 -74
- package/dist/{chunk-FC27KZIW.js → chunk-F2U6KIMR.js} +34 -22
- package/dist/{cli-Cn2HwS-2.d.ts → cli-D2oJ-ctT.d.ts} +8 -2
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/privacyDaemon.js +1 -1
- package/dist/{tasksCli-S7PH7TWA.js → tasksCli-VEBWWQW4.js} +1 -1
- package/fixtures/privacy-runtime/linux-arm64/libggml-base.so +0 -0
- package/fixtures/privacy-runtime/linux-arm64/libggml-base.so.0 +0 -0
- package/fixtures/privacy-runtime/linux-arm64/libggml-base.so.0.15.1 +0 -0
- package/fixtures/privacy-runtime/linux-arm64/libggml-cpu.so +0 -0
- package/fixtures/privacy-runtime/linux-arm64/libggml-cpu.so.0 +0 -0
- package/fixtures/privacy-runtime/linux-arm64/libggml-cpu.so.0.15.1 +0 -0
- package/fixtures/privacy-runtime/linux-arm64/libggml.so +0 -0
- package/fixtures/privacy-runtime/linux-arm64/libggml.so.0 +0 -0
- package/fixtures/privacy-runtime/linux-arm64/libggml.so.0.15.1 +0 -0
- package/fixtures/privacy-runtime/linux-arm64/manifest.json +9 -9
- package/package.json +2 -2
|
@@ -647,11 +647,6 @@ function clearSyncCache(teamId) {
|
|
|
647
647
|
rmSync(filePath);
|
|
648
648
|
}
|
|
649
649
|
}
|
|
650
|
-
function isSyncCacheFresh(maxAgeMs = 3e5, teamId) {
|
|
651
|
-
const cache = loadSyncCache(teamId);
|
|
652
|
-
if (!cache) return false;
|
|
653
|
-
return Date.now() - cache.syncedAt < (cache.pendingRecoveryOutputs ? Math.min(maxAgeMs, 6e4) : maxAgeMs);
|
|
654
|
-
}
|
|
655
650
|
function loadTrustedAccountId() {
|
|
656
651
|
const trusted = readJsonFile(join(getStateDir(), TRUSTED_ACCOUNT_FILE));
|
|
657
652
|
return typeof trusted?.accountId === "string" && trusted.accountId.trim() ? trusted.accountId.trim() : null;
|
|
@@ -1207,7 +1202,6 @@ export {
|
|
|
1207
1202
|
saveSyncCache,
|
|
1208
1203
|
loadSyncCache,
|
|
1209
1204
|
clearSyncCache,
|
|
1210
|
-
isSyncCacheFresh,
|
|
1211
1205
|
loadTrustedAccountId,
|
|
1212
1206
|
saveTrustedAccountId,
|
|
1213
1207
|
assertTrustedAccountId,
|
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
ensurePrivacyDaemon,
|
|
8
8
|
getCredentialStorageMode,
|
|
9
9
|
installPrivacyModel,
|
|
10
|
-
isSyncCacheFresh,
|
|
11
10
|
loadAnonymousId,
|
|
12
11
|
loadLocalTeamKey,
|
|
13
12
|
loadSession,
|
|
@@ -35,7 +34,7 @@ import {
|
|
|
35
34
|
verifyInstalledModel,
|
|
36
35
|
verifyPrivacyRuntime,
|
|
37
36
|
withSessionRefreshLock
|
|
38
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-5SFXCJJ4.js";
|
|
39
38
|
import {
|
|
40
39
|
RemoteAccessReplayGuard,
|
|
41
40
|
createRemoteAccessHandshake,
|
|
@@ -53,6 +52,7 @@ import {
|
|
|
53
52
|
buildUpdateUserTaskInput,
|
|
54
53
|
bytesToBase64,
|
|
55
54
|
bytesToBase64Url,
|
|
55
|
+
createAesGcmCombinedDecryptor,
|
|
56
56
|
createApiKeyCryptoMaterial,
|
|
57
57
|
createPasswordMigrationMaterialV2,
|
|
58
58
|
createRecoveryKeyMaterial,
|
|
@@ -101,7 +101,7 @@ import {
|
|
|
101
101
|
unwrapApiKeyMasterKey,
|
|
102
102
|
unwrapPasswordMasterKey,
|
|
103
103
|
workflowProjectionDeleteGuidance
|
|
104
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-F2U6KIMR.js";
|
|
105
105
|
import {
|
|
106
106
|
adoptUploadEmbedId,
|
|
107
107
|
transcribeUploadedAudio,
|
|
@@ -13134,13 +13134,15 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
13134
13134
|
const markdown = !preview && typeof d.encrypted_draft_md === "string" ? await decryptWithAesGcmCombined(d.encrypted_draft_md, draftKey) : null;
|
|
13135
13135
|
draftPreview = (preview || markdown)?.replace(/\s+/g, " ").trim().slice(0, 200) || null;
|
|
13136
13136
|
}
|
|
13137
|
-
const
|
|
13138
|
-
const
|
|
13139
|
-
|
|
13140
|
-
|
|
13141
|
-
|
|
13142
|
-
|
|
13143
|
-
|
|
13137
|
+
const decrypt = chatKeyBytes ? await createAesGcmCombinedDecryptor(chatKeyBytes) : async () => null;
|
|
13138
|
+
const field3 = (name) => typeof d[name] === "string" ? decrypt(d[name]) : Promise.resolve(null);
|
|
13139
|
+
const [title, summary, category, slugValue] = await Promise.all([
|
|
13140
|
+
field3("encrypted_title"),
|
|
13141
|
+
field3("encrypted_chat_summary"),
|
|
13142
|
+
field3("encrypted_category"),
|
|
13143
|
+
field3("encrypted_slug")
|
|
13144
|
+
]);
|
|
13145
|
+
const slug = chatKeyBytes && typeof d.encrypted_slug === "string" ? slugValue ?? "" : null;
|
|
13144
13146
|
return {
|
|
13145
13147
|
id,
|
|
13146
13148
|
shortId: id.slice(0, 8),
|
|
@@ -13284,7 +13286,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
13284
13286
|
const localTeamKey = teamId ? loadLocalTeamKey(this.requireSession().hashedEmail, teamId) : null;
|
|
13285
13287
|
if (teamId && !localTeamKey) return null;
|
|
13286
13288
|
const wrappingKey = localTeamKey ? base64ToBytes(localTeamKey) : masterKey;
|
|
13287
|
-
return this.decryptChatListPage(cache, limit, page, options, teamId, masterKey, wrappingKey);
|
|
13289
|
+
return this.decryptChatListPage(cache, limit, page, options, teamId, masterKey, wrappingKey, options.onCachedChats);
|
|
13288
13290
|
}
|
|
13289
13291
|
async listChats(limit = 10, page = 1, options = {}) {
|
|
13290
13292
|
const teamId = this.resolveTeamContext(options);
|
|
@@ -13297,24 +13299,32 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
13297
13299
|
} : void 0, options.signal);
|
|
13298
13300
|
return this.decryptChatListPage(cache, limit, page, options, teamId, masterKey);
|
|
13299
13301
|
}
|
|
13300
|
-
async decryptChatListPage(cache, limit, page, options, teamId, masterKey, cachedWrappingKey) {
|
|
13302
|
+
async decryptChatListPage(cache, limit, page, options, teamId, masterKey, cachedWrappingKey, onCachedChats) {
|
|
13303
|
+
const accountCurrent = this.captureTeamAccountOwner().isCurrent;
|
|
13304
|
+
const current2 = () => {
|
|
13305
|
+
if (!this.hasSession() || !accountCurrent() || teamId !== this.resolveTeamContext(options) || !masterKey.equals(Buffer.from(this.getMasterKeyBytes()))) throw new Error("Chat workspace changed");
|
|
13306
|
+
};
|
|
13301
13307
|
const wrappingKey = cachedWrappingKey ?? await this.getChatWrappingKey(teamId, masterKey);
|
|
13302
13308
|
const total = cache.chats.length;
|
|
13303
13309
|
const offset = (page - 1) * limit;
|
|
13304
13310
|
const slice = cache.chats.slice(offset, offset + limit);
|
|
13305
13311
|
const output = [];
|
|
13306
|
-
|
|
13307
|
-
output.
|
|
13308
|
-
}
|
|
13309
|
-
if (!this.hasSession() || teamId !== this.resolveTeamContext(options) || !masterKey.equals(Buffer.from(this.getMasterKeyBytes()))) throw new Error("Chat workspace changed");
|
|
13310
|
-
return {
|
|
13311
|
-
chats: output,
|
|
13312
|
+
const result = () => ({
|
|
13313
|
+
chats: output.slice(),
|
|
13312
13314
|
pendingRecoveryOutputs: cache.pendingRecoveryOutputs ?? 0,
|
|
13313
13315
|
total,
|
|
13314
13316
|
page,
|
|
13315
13317
|
limit,
|
|
13316
|
-
hasMore: offset +
|
|
13317
|
-
};
|
|
13318
|
+
hasMore: offset + output.length < total
|
|
13319
|
+
});
|
|
13320
|
+
for (let start = 0; start < slice.length; start += 8) {
|
|
13321
|
+
current2();
|
|
13322
|
+
output.push(...await Promise.all(slice.slice(start, start + 8).map((chat) => this.decryptChatListItem(chat, wrappingKey, cache, teamId))));
|
|
13323
|
+
current2();
|
|
13324
|
+
if (onCachedChats && output.length === 32 && output.length < slice.length) onCachedChats(result());
|
|
13325
|
+
}
|
|
13326
|
+
current2();
|
|
13327
|
+
return result();
|
|
13318
13328
|
}
|
|
13319
13329
|
async saveDraft(params) {
|
|
13320
13330
|
const markdown = params.markdown.trim();
|
|
@@ -13881,49 +13891,61 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
13881
13891
|
if (!chatKey) throw new Error(`Chat '${chatId}' is missing locally decryptable key material.`);
|
|
13882
13892
|
return { chatId, chatKey };
|
|
13883
13893
|
}
|
|
13894
|
+
/** Operation-local ciphertext index and nonextractable key; no persistent plaintext cache. */
|
|
13895
|
+
async createRawChatMessageReader(chatItem, chatKeyBytes, embeds, current2 = () => {
|
|
13896
|
+
}) {
|
|
13897
|
+
const embedIdsByMessage = /* @__PURE__ */ new Map();
|
|
13898
|
+
for (const embed of embeds) {
|
|
13899
|
+
if (embed.parent_embed_id || typeof embed.hashed_message_id !== "string") continue;
|
|
13900
|
+
const id = String(embed.embed_id ?? embed.id ?? "");
|
|
13901
|
+
if (!id) continue;
|
|
13902
|
+
const ids = embedIdsByMessage.get(embed.hashed_message_id) ?? [];
|
|
13903
|
+
ids.push(id);
|
|
13904
|
+
embedIdsByMessage.set(embed.hashed_message_id, ids);
|
|
13905
|
+
}
|
|
13906
|
+
const decrypt = chatKeyBytes ? await createAesGcmCombinedDecryptor(chatKeyBytes) : async () => null;
|
|
13907
|
+
return async (rawMessages) => {
|
|
13908
|
+
const messages = new Array(rawMessages.length);
|
|
13909
|
+
let next = 0;
|
|
13910
|
+
await Promise.all(Array.from({ length: Math.min(8, rawMessages.length) }, async () => {
|
|
13911
|
+
while (next < rawMessages.length) {
|
|
13912
|
+
current2();
|
|
13913
|
+
const index = next++, raw = rawMessages[index];
|
|
13914
|
+
const m = typeof raw === "string" ? JSON.parse(raw) : raw;
|
|
13915
|
+
const field3 = (name) => typeof m[name] === "string" ? decrypt(m[name]) : Promise.resolve(null);
|
|
13916
|
+
const [content, senderName, msgCategory, modelName, piiMappings] = await Promise.all([
|
|
13917
|
+
field3("encrypted_content"),
|
|
13918
|
+
field3("encrypted_sender_name"),
|
|
13919
|
+
field3("encrypted_category"),
|
|
13920
|
+
field3("encrypted_model_name"),
|
|
13921
|
+
field3("encrypted_pii_mappings")
|
|
13922
|
+
]);
|
|
13923
|
+
current2();
|
|
13924
|
+
const clientMsgId = String(m.client_message_id ?? m.id ?? m.message_id ?? "");
|
|
13925
|
+
const hashed = clientMsgId ? createHash13("sha256").update(clientMsgId).digest("hex") : "";
|
|
13926
|
+
messages[index] = {
|
|
13927
|
+
id: String(m.id ?? m.message_id ?? ""),
|
|
13928
|
+
clientMessageId: clientMsgId,
|
|
13929
|
+
chatId: String(m.chat_id ?? chatItem.id),
|
|
13930
|
+
role: String(m.role ?? "unknown"),
|
|
13931
|
+
content: content ?? "",
|
|
13932
|
+
senderName,
|
|
13933
|
+
hashedSenderUserId: typeof m.hashed_user_id === "string" ? m.hashed_user_id : null,
|
|
13934
|
+
category: msgCategory,
|
|
13935
|
+
modelName,
|
|
13936
|
+
createdAt: typeof m.created_at === "number" ? m.created_at : 0,
|
|
13937
|
+
embedIds: [...embedIdsByMessage.get(hashed) ?? []],
|
|
13938
|
+
...typeof m.encrypted_pii_mappings === "string" && chatKeyBytes ? { piiMappings: JSON.parse(piiMappings ?? "[]") } : {}
|
|
13939
|
+
};
|
|
13940
|
+
}
|
|
13941
|
+
}));
|
|
13942
|
+
current2();
|
|
13943
|
+
messages.sort((a, b) => a.createdAt - b.createdAt);
|
|
13944
|
+
return messages;
|
|
13945
|
+
};
|
|
13946
|
+
}
|
|
13884
13947
|
async decryptRawChatMessages(rawMessages, chatItem, chatKeyBytes, embeds = []) {
|
|
13885
|
-
|
|
13886
|
-
for (const raw of rawMessages) {
|
|
13887
|
-
const m = typeof raw === "string" ? JSON.parse(raw) : raw;
|
|
13888
|
-
const content = typeof m.encrypted_content === "string" && chatKeyBytes ? await decryptWithAesGcmCombined(m.encrypted_content, chatKeyBytes) : null;
|
|
13889
|
-
const senderName = typeof m.encrypted_sender_name === "string" && chatKeyBytes ? await decryptWithAesGcmCombined(
|
|
13890
|
-
m.encrypted_sender_name,
|
|
13891
|
-
chatKeyBytes
|
|
13892
|
-
) : null;
|
|
13893
|
-
const msgCategory = typeof m.encrypted_category === "string" && chatKeyBytes ? await decryptWithAesGcmCombined(m.encrypted_category, chatKeyBytes) : null;
|
|
13894
|
-
const modelName = typeof m.encrypted_model_name === "string" && chatKeyBytes ? await decryptWithAesGcmCombined(
|
|
13895
|
-
m.encrypted_model_name,
|
|
13896
|
-
chatKeyBytes
|
|
13897
|
-
) : null;
|
|
13898
|
-
const clientMsgId = String(
|
|
13899
|
-
m.client_message_id ?? m.id ?? m.message_id ?? ""
|
|
13900
|
-
);
|
|
13901
|
-
let msgEmbedIds = [];
|
|
13902
|
-
if (clientMsgId && embeds.length > 0) {
|
|
13903
|
-
const hashed = createHash13("sha256").update(clientMsgId).digest("hex");
|
|
13904
|
-
msgEmbedIds = embeds.filter(
|
|
13905
|
-
(e) => e.hashed_message_id === hashed && !e.parent_embed_id
|
|
13906
|
-
).map((e) => String(e.embed_id ?? e.id ?? "")).filter(Boolean);
|
|
13907
|
-
}
|
|
13908
|
-
messages.push({
|
|
13909
|
-
id: String(m.id ?? m.message_id ?? ""),
|
|
13910
|
-
clientMessageId: clientMsgId,
|
|
13911
|
-
chatId: String(m.chat_id ?? chatItem.id),
|
|
13912
|
-
role: String(m.role ?? "unknown"),
|
|
13913
|
-
content: content ?? "",
|
|
13914
|
-
senderName,
|
|
13915
|
-
hashedSenderUserId: typeof m.hashed_user_id === "string" ? m.hashed_user_id : null,
|
|
13916
|
-
category: msgCategory,
|
|
13917
|
-
modelName,
|
|
13918
|
-
createdAt: typeof m.created_at === "number" ? m.created_at : 0,
|
|
13919
|
-
embedIds: msgEmbedIds,
|
|
13920
|
-
...typeof m.encrypted_pii_mappings === "string" && chatKeyBytes ? {
|
|
13921
|
-
piiMappings: JSON.parse(await decryptWithAesGcmCombined(m.encrypted_pii_mappings, chatKeyBytes) ?? "[]")
|
|
13922
|
-
} : {}
|
|
13923
|
-
});
|
|
13924
|
-
}
|
|
13925
|
-
messages.sort((a, b) => a.createdAt - b.createdAt);
|
|
13926
|
-
return coalesceMemoryRequestMessages(messages);
|
|
13948
|
+
return coalesceMemoryRequestMessages(await (await this.createRawChatMessageReader(chatItem, chatKeyBytes, embeds))(rawMessages));
|
|
13927
13949
|
}
|
|
13928
13950
|
async resolveCachedChatForQuery(query, cache, wrappingKey, teamId) {
|
|
13929
13951
|
const normalized = query.trim().toLowerCase();
|
|
@@ -13997,6 +14019,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
13997
14019
|
}
|
|
13998
14020
|
/** Get decrypted messages for a chat resolved by UUID, prefix or title. */
|
|
13999
14021
|
async getChatMessages(query, options = {}) {
|
|
14022
|
+
const accountCurrent = this.captureTeamAccountOwner().isCurrent;
|
|
14000
14023
|
const teamId = this.resolveTeamContext(options);
|
|
14001
14024
|
const masterKey = Buffer.from(this.getMasterKeyBytes());
|
|
14002
14025
|
const localCache = options.preferCache ? loadSyncCache(teamId) : null;
|
|
@@ -14009,8 +14032,10 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
14009
14032
|
embedKeys: []
|
|
14010
14033
|
} : await this.ensureSynced(true, [], options));
|
|
14011
14034
|
const current2 = () => {
|
|
14012
|
-
if (!this.hasSession() || teamId !== this.resolveTeamContext(options) || !masterKey.equals(Buffer.from(this.getMasterKeyBytes()))) throw new Error("Chat workspace changed");
|
|
14035
|
+
if (!this.hasSession() || !accountCurrent() || teamId !== this.resolveTeamContext(options) || !masterKey.equals(Buffer.from(this.getMasterKeyBytes()))) throw new Error("Chat workspace changed");
|
|
14013
14036
|
};
|
|
14037
|
+
current2();
|
|
14038
|
+
options.signal?.throwIfAborted();
|
|
14014
14039
|
const localTeamKey = options.preferCache && teamId ? loadLocalTeamKey(this.requireSession().hashedEmail, teamId) : null;
|
|
14015
14040
|
if (options.preferCache && teamId && !localTeamKey) throw new Error("Team key unavailable offline. Reconnect to refresh Team access.");
|
|
14016
14041
|
const wrappingKey = localTeamKey ? base64ToBytes(localTeamKey) : await this.getChatWrappingKey(teamId, masterKey);
|
|
@@ -14055,11 +14080,17 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
14055
14080
|
const merged = { ...latest, chats: row3 ? latest.chats.map((chat) => chat === row3 ? { ...row3, messages: messages2 } : chat) : [...latest.chats, { ...found, messages: messages2 }] };
|
|
14056
14081
|
saveSyncCache(mergeConcurrentChatMessages(merged, latest), teamId);
|
|
14057
14082
|
};
|
|
14083
|
+
const readMessages = await this.createRawChatMessageReader(chatItem, chatKeyBytes, cache.embeds, () => {
|
|
14084
|
+
current2();
|
|
14085
|
+
options.signal?.throwIfAborted();
|
|
14086
|
+
});
|
|
14087
|
+
let decodedMessages;
|
|
14058
14088
|
let rawMessages = found.messages;
|
|
14059
14089
|
let historyIncomplete = rawMessages.length > 0 && Number(found.details.messages_v) > rawMessages.length;
|
|
14060
14090
|
const hasServerMessages = typeof found.details.messages_v === "number" && found.details.messages_v > 0;
|
|
14061
14091
|
if (rawMessages.length === 0 && (hasServerMessages || fetchedMetadata) && foundChatId) {
|
|
14062
14092
|
const pages = [];
|
|
14093
|
+
const decodedPages = [];
|
|
14063
14094
|
let cursor = null;
|
|
14064
14095
|
let hasMoreBefore = true;
|
|
14065
14096
|
for (let page = 0; page < Math.max(1, Math.min(CLI_MESSAGE_HISTORY_MAX_PAGES, options.maxHistoryPages ?? CLI_MESSAGE_HISTORY_MAX_PAGES)) && hasMoreBefore; page += 1) {
|
|
@@ -14089,20 +14120,33 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
14089
14120
|
if (!response.ok) throw new Error(`Chat messages failed with HTTP ${response.status}`);
|
|
14090
14121
|
const pageMessages = Array.isArray(response.data.messages) ? normalizeSyncedMessages(response.data.messages) : [];
|
|
14091
14122
|
if (pageMessages.length === 0) break;
|
|
14123
|
+
const decoded2 = await readMessages(pageMessages);
|
|
14092
14124
|
if (page === 0 && options.onMessages) {
|
|
14093
|
-
const latest = await this.decryptRawChatMessages(pageMessages, chatItem, chatKeyBytes, cache.embeds);
|
|
14094
14125
|
current2();
|
|
14095
14126
|
if (options.preferCache) persistMessages(pageMessages);
|
|
14096
|
-
options.onMessages({ chat: chatItem, messages:
|
|
14127
|
+
options.onMessages({ chat: chatItem, messages: coalesceMemoryRequestMessages(decoded2) });
|
|
14097
14128
|
}
|
|
14129
|
+
decodedPages.unshift(decoded2);
|
|
14098
14130
|
pages.unshift(pageMessages);
|
|
14099
14131
|
cursor = response.data.start_cursor ?? null;
|
|
14100
14132
|
hasMoreBefore = response.data.has_more_before === true && cursor !== null;
|
|
14101
14133
|
}
|
|
14102
14134
|
rawMessages = pages.flat();
|
|
14135
|
+
decodedMessages = decodedPages.flat();
|
|
14103
14136
|
historyIncomplete ||= hasMoreBefore;
|
|
14104
14137
|
}
|
|
14105
|
-
|
|
14138
|
+
if (!decodedMessages && options.onMessages && rawMessages.length > CLI_MESSAGE_HISTORY_PAGE_LIMIT) {
|
|
14139
|
+
const ordered = rawMessages.map((raw) => typeof raw === "string" ? JSON.parse(raw) : raw).sort((a, b) => (typeof a.created_at === "number" ? a.created_at : 0) - (typeof b.created_at === "number" ? b.created_at : 0));
|
|
14140
|
+
const split = ordered.length - CLI_MESSAGE_HISTORY_PAGE_LIMIT;
|
|
14141
|
+
const latest = await readMessages(ordered.slice(split));
|
|
14142
|
+
current2();
|
|
14143
|
+
options.onMessages({ chat: chatItem, messages: coalesceMemoryRequestMessages(latest) });
|
|
14144
|
+
const older = await readMessages(ordered.slice(0, split));
|
|
14145
|
+
decodedMessages = [...older, ...latest];
|
|
14146
|
+
}
|
|
14147
|
+
const decoded = decodedMessages ?? await readMessages(rawMessages);
|
|
14148
|
+
decoded.sort((a, b) => a.createdAt - b.createdAt);
|
|
14149
|
+
const messages = coalesceMemoryRequestMessages(decoded);
|
|
14106
14150
|
current2();
|
|
14107
14151
|
if (options.preferCache && rawMessages !== found.messages) persistMessages(rawMessages);
|
|
14108
14152
|
return { chat: chatItem, messages, ...historyIncomplete ? { historyIncomplete: true } : {} };
|
|
@@ -15988,6 +16032,18 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
15988
16032
|
remoteCommandReviewInteractive: Boolean(params.onRemoteCommandReview)
|
|
15989
16033
|
});
|
|
15990
16034
|
}
|
|
16035
|
+
const queuedAdmission = !params.incognito && shouldWaitForAi ? ws.waitForMessage("message_queued", (payload) => {
|
|
16036
|
+
const event = payload;
|
|
16037
|
+
return event.chat_id === chatId && event.user_message_id === messageId;
|
|
16038
|
+
}, params.responseTimeoutMs ?? 9e4) : null;
|
|
16039
|
+
if (queuedAdmission) void queuedAdmission.catch(() => {
|
|
16040
|
+
});
|
|
16041
|
+
const pausedHandoff = !params.incognito && shouldWaitForAi ? ws.waitForMessage("queued_handoff_paused", (payload) => {
|
|
16042
|
+
const event = payload;
|
|
16043
|
+
return event.chat_id === chatId && (event.message_id === messageId || event.message_id === void 0);
|
|
16044
|
+
}, params.responseTimeoutMs ?? 9e4) : null;
|
|
16045
|
+
if (pausedHandoff) void pausedHandoff.catch(() => {
|
|
16046
|
+
});
|
|
15991
16047
|
const confirmed = ws.waitForMessage(
|
|
15992
16048
|
"chat_message_confirmed",
|
|
15993
16049
|
(payload) => {
|
|
@@ -16281,11 +16337,56 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
16281
16337
|
}
|
|
16282
16338
|
await this.replayCurrentTurnRecoveryOutputPages(ws, ownerId2, pages, cache, teamId, chatId);
|
|
16283
16339
|
};
|
|
16284
|
-
const
|
|
16340
|
+
const responsePromise = precollectedResponse ?? ws.collectAiResponse(messageId, chatId, {
|
|
16285
16341
|
...streamOpts,
|
|
16286
16342
|
timeoutMs: params.responseTimeoutMs,
|
|
16287
16343
|
recoveryTurnId: savedTurnId
|
|
16288
|
-
})
|
|
16344
|
+
});
|
|
16345
|
+
const outcome = await Promise.race([
|
|
16346
|
+
responsePromise.then((response) => ({ kind: "response", response })),
|
|
16347
|
+
...queuedAdmission ? [queuedAdmission.then(
|
|
16348
|
+
(frame) => ({ kind: "queued", frame }),
|
|
16349
|
+
() => new Promise(() => {
|
|
16350
|
+
})
|
|
16351
|
+
)] : [],
|
|
16352
|
+
...pausedHandoff ? [pausedHandoff.then(
|
|
16353
|
+
(frame) => ({ kind: "paused", frame }),
|
|
16354
|
+
() => new Promise(() => {
|
|
16355
|
+
})
|
|
16356
|
+
)] : []
|
|
16357
|
+
]);
|
|
16358
|
+
if (outcome.kind === "paused") {
|
|
16359
|
+
void responsePromise.catch(() => {
|
|
16360
|
+
});
|
|
16361
|
+
throw new Error("Message saved, but AI handoff is paused. No assistant run started; check the chat before retrying.");
|
|
16362
|
+
}
|
|
16363
|
+
if (outcome.kind === "queued") {
|
|
16364
|
+
void responsePromise.catch(() => {
|
|
16365
|
+
});
|
|
16366
|
+
const frame = outcome.frame.payload;
|
|
16367
|
+
return {
|
|
16368
|
+
status: "queued",
|
|
16369
|
+
chatId,
|
|
16370
|
+
messageId: null,
|
|
16371
|
+
userMessageId: messageId,
|
|
16372
|
+
queueMode: frame.queue_mode === "steer" ? "steer" : "follow_up",
|
|
16373
|
+
queueRevision: typeof frame.queue_revision === "number" ? frame.queue_revision : 1,
|
|
16374
|
+
assistant: "",
|
|
16375
|
+
category: null,
|
|
16376
|
+
modelName: null,
|
|
16377
|
+
mateName: null,
|
|
16378
|
+
followUpSuggestions: [],
|
|
16379
|
+
taskProposals: [],
|
|
16380
|
+
taskUpdateProposals: [],
|
|
16381
|
+
taskEvents: [],
|
|
16382
|
+
pendingTaskUpdateJobs: [],
|
|
16383
|
+
subChatEvents: [],
|
|
16384
|
+
appSettingsMemoryRequests: [],
|
|
16385
|
+
tokenUsage: null,
|
|
16386
|
+
promptBudget: null
|
|
16387
|
+
};
|
|
16388
|
+
}
|
|
16389
|
+
const resp = outcome.response;
|
|
16289
16390
|
assistantMessageId = resp.messageId;
|
|
16290
16391
|
assistant = resp.content;
|
|
16291
16392
|
category = resp.category;
|
|
@@ -18298,7 +18399,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
18298
18399
|
return documents;
|
|
18299
18400
|
}
|
|
18300
18401
|
async decryptTaskContextRecord(record10, options = {}) {
|
|
18301
|
-
const { decryptUserTask: decryptUserTask2 } = await import("./tasksCli-
|
|
18402
|
+
const { decryptUserTask: decryptUserTask2 } = await import("./tasksCli-VEBWWQW4.js");
|
|
18302
18403
|
const teamId = this.resolveTeamContext(options);
|
|
18303
18404
|
if (!teamId || record10.source === "workflow_run") return decryptUserTask2(record10, this.getMasterKeyBytes());
|
|
18304
18405
|
this.requireSession();
|
|
@@ -21201,11 +21302,9 @@ Required: ${schema.required.join(", ")}`
|
|
|
21201
21302
|
const teamId = this.resolveTeamContext(options);
|
|
21202
21303
|
const syncMasterKey = Buffer.from(this.getMasterKeyBytes());
|
|
21203
21304
|
const refreshChatIdSet = new Set(refreshChatIds.filter(Boolean));
|
|
21204
|
-
if (!forceRefresh && refreshChatIdSet.size === 0 && isSyncCacheFresh(3e5, teamId)) {
|
|
21205
|
-
const cache2 = loadSyncCache(teamId);
|
|
21206
|
-
if (cache2) return cache2;
|
|
21207
|
-
}
|
|
21208
21305
|
const existingCache = loadSyncCache(teamId);
|
|
21306
|
+
const maxAgeMs = existingCache?.pendingRecoveryOutputs ? 6e4 : 3e5;
|
|
21307
|
+
if (!forceRefresh && refreshChatIdSet.size === 0 && existingCache && Date.now() - existingCache.syncedAt < maxAgeMs) return existingCache;
|
|
21209
21308
|
const clientChatVersions = {};
|
|
21210
21309
|
const clientChatIds = [];
|
|
21211
21310
|
const clientEmbedIds = [];
|
|
@@ -65624,6 +65723,9 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
|
|
|
65624
65723
|
generated_by: {
|
|
65625
65724
|
text: "generated by {model}"
|
|
65626
65725
|
},
|
|
65726
|
+
using_model: {
|
|
65727
|
+
text: "Using {model}"
|
|
65728
|
+
},
|
|
65627
65729
|
assistant_speech: {
|
|
65628
65730
|
confirmation: {
|
|
65629
65731
|
text: "Confirmation"
|
|
@@ -65831,6 +65933,26 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
|
|
|
65831
65933
|
text: "Stop queue"
|
|
65832
65934
|
}
|
|
65833
65935
|
},
|
|
65936
|
+
response_activity: {
|
|
65937
|
+
using: {
|
|
65938
|
+
text: "Using {apps}"
|
|
65939
|
+
},
|
|
65940
|
+
thinking_using: {
|
|
65941
|
+
text: "Thinking & using {apps}"
|
|
65942
|
+
},
|
|
65943
|
+
response_thinking: {
|
|
65944
|
+
text: "Thinking for this response"
|
|
65945
|
+
},
|
|
65946
|
+
researching: {
|
|
65947
|
+
text: "Researching\u2026"
|
|
65948
|
+
},
|
|
65949
|
+
working: {
|
|
65950
|
+
text: "Working\u2026"
|
|
65951
|
+
},
|
|
65952
|
+
writing: {
|
|
65953
|
+
text: "Writing\u2026"
|
|
65954
|
+
}
|
|
65955
|
+
},
|
|
65834
65956
|
new_chat_suggestions: {
|
|
65835
65957
|
quantum_computing: {
|
|
65836
65958
|
text: "Teach me about quantum computing in simple terms"
|
|
@@ -66558,6 +66680,38 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
|
|
|
66558
66680
|
text: "Could not start the explanation chat. Please try again."
|
|
66559
66681
|
}
|
|
66560
66682
|
},
|
|
66683
|
+
queued_followup: {
|
|
66684
|
+
queued: {
|
|
66685
|
+
text: "Queued"
|
|
66686
|
+
},
|
|
66687
|
+
steering: {
|
|
66688
|
+
text: "Steering current response"
|
|
66689
|
+
},
|
|
66690
|
+
updating: {
|
|
66691
|
+
text: "Updating\u2026"
|
|
66692
|
+
},
|
|
66693
|
+
steer_instead: {
|
|
66694
|
+
text: "Steer instead"
|
|
66695
|
+
},
|
|
66696
|
+
editing: {
|
|
66697
|
+
text: "Editing queued message"
|
|
66698
|
+
},
|
|
66699
|
+
cancel_edit: {
|
|
66700
|
+
text: "Cancel edit"
|
|
66701
|
+
},
|
|
66702
|
+
conflict: {
|
|
66703
|
+
text: "This queued message changed on another device. Reopen it to edit the latest version."
|
|
66704
|
+
},
|
|
66705
|
+
unavailable: {
|
|
66706
|
+
text: "Couldn\u2019t update the queued message. Try again."
|
|
66707
|
+
},
|
|
66708
|
+
steer_deferred: {
|
|
66709
|
+
text: "Couldn\u2019t steer this response. Your message remains queued."
|
|
66710
|
+
},
|
|
66711
|
+
paused: {
|
|
66712
|
+
text: "Saved, but the assistant could not continue with this message."
|
|
66713
|
+
}
|
|
66714
|
+
},
|
|
66561
66715
|
hidden_chats: {
|
|
66562
66716
|
unlock: {
|
|
66563
66717
|
text: "Unlock hidden chats"
|
|
@@ -99283,7 +99437,12 @@ async function loadHomeData(state, client2, render) {
|
|
|
99283
99437
|
state.homeChatsLoading = signedIn && homeChatItems(state).length === 0;
|
|
99284
99438
|
if (signedIn && typeof client2.listCachedChats === "function") {
|
|
99285
99439
|
try {
|
|
99286
|
-
const cached = await client2.listCachedChats(Number.MAX_SAFE_INTEGER, 1)
|
|
99440
|
+
const cached = await client2.listCachedChats(Number.MAX_SAFE_INTEGER, 1, { onCachedChats: (page) => {
|
|
99441
|
+
if (!current2() || state.recentChats.length > 0) return;
|
|
99442
|
+
updateHomeChats(state, page.chats);
|
|
99443
|
+
state.homeChatsLoading = homeChatItems(state).length === 0;
|
|
99444
|
+
render();
|
|
99445
|
+
} });
|
|
99287
99446
|
if (!current2()) return;
|
|
99288
99447
|
if (cached) updateHomeChats(state, cached.chats);
|
|
99289
99448
|
} catch {
|
|
@@ -121448,6 +121607,10 @@ ${renderRemoteCommandReview(review)}
|
|
|
121448
121607
|
const acceptedTaskProposals = params.acceptTaskProposals === true && result.status === "completed" ? await acceptChatTaskProposals(client2, result.chatId, result.taskProposals, `${finalMessage}
|
|
121449
121608
|
|
|
121450
121609
|
${result.assistant}`) : [];
|
|
121610
|
+
if (result.status === "queued") {
|
|
121611
|
+
if (!params.json) process.stderr.write("Message queued for this chat. It will run after the active response finishes.\n");
|
|
121612
|
+
return { ...result, acceptedTaskProposals: [] };
|
|
121613
|
+
}
|
|
121451
121614
|
if (result.status === "waiting_for_user") {
|
|
121452
121615
|
const question = parseInteractiveQuestionBlock(result.assistant);
|
|
121453
121616
|
if (params.json && question) {
|
|
@@ -524,37 +524,48 @@ async function unwrapApiKeyMasterKey(params) {
|
|
|
524
524
|
}
|
|
525
525
|
}
|
|
526
526
|
async function decryptWithAesGcmCombined(encryptedWithIvB64, rawKeyBytes, associatedData) {
|
|
527
|
+
const decrypt = await createAesGcmCombinedDecryptor(rawKeyBytes);
|
|
528
|
+
return decrypt(encryptedWithIvB64, associatedData);
|
|
529
|
+
}
|
|
530
|
+
async function createAesGcmCombinedDecryptor(rawKeyBytes) {
|
|
531
|
+
let key;
|
|
527
532
|
try {
|
|
528
|
-
|
|
529
|
-
if (combined.length <= AES_GCM_IV_LENGTH) {
|
|
530
|
-
return null;
|
|
531
|
-
}
|
|
532
|
-
let offset = 0;
|
|
533
|
-
if (combined.length > CIPHERTEXT_HEADER_LENGTH + AES_GCM_IV_LENGTH && combined[0] === CIPHERTEXT_MAGIC_0 && combined[1] === CIPHERTEXT_MAGIC_1) {
|
|
534
|
-
offset = CIPHERTEXT_HEADER_LENGTH;
|
|
535
|
-
}
|
|
536
|
-
const iv = combined.slice(offset, offset + AES_GCM_IV_LENGTH);
|
|
537
|
-
const ciphertext = combined.slice(offset + AES_GCM_IV_LENGTH);
|
|
538
|
-
const key = await cryptoApi.subtle.importKey(
|
|
533
|
+
key = await cryptoApi.subtle.importKey(
|
|
539
534
|
"raw",
|
|
540
535
|
toArrayBuffer(rawKeyBytes),
|
|
541
536
|
{ name: "AES-GCM" },
|
|
542
537
|
false,
|
|
543
538
|
["decrypt"]
|
|
544
539
|
);
|
|
545
|
-
const decrypted = await cryptoApi.subtle.decrypt(
|
|
546
|
-
{
|
|
547
|
-
name: "AES-GCM",
|
|
548
|
-
iv: toArrayBuffer(iv),
|
|
549
|
-
...associatedData ? { additionalData: toArrayBuffer(new TextEncoder().encode(associatedData)) } : {}
|
|
550
|
-
},
|
|
551
|
-
key,
|
|
552
|
-
toArrayBuffer(ciphertext)
|
|
553
|
-
);
|
|
554
|
-
return new TextDecoder().decode(decrypted);
|
|
555
540
|
} catch {
|
|
556
|
-
return null;
|
|
541
|
+
return async () => null;
|
|
557
542
|
}
|
|
543
|
+
return async (encryptedWithIvB64, associatedData) => {
|
|
544
|
+
try {
|
|
545
|
+
const combined = base64ToBytes(encryptedWithIvB64);
|
|
546
|
+
if (combined.length <= AES_GCM_IV_LENGTH) {
|
|
547
|
+
return null;
|
|
548
|
+
}
|
|
549
|
+
let offset = 0;
|
|
550
|
+
if (combined.length > CIPHERTEXT_HEADER_LENGTH + AES_GCM_IV_LENGTH && combined[0] === CIPHERTEXT_MAGIC_0 && combined[1] === CIPHERTEXT_MAGIC_1) {
|
|
551
|
+
offset = CIPHERTEXT_HEADER_LENGTH;
|
|
552
|
+
}
|
|
553
|
+
const iv = combined.slice(offset, offset + AES_GCM_IV_LENGTH);
|
|
554
|
+
const ciphertext = combined.slice(offset + AES_GCM_IV_LENGTH);
|
|
555
|
+
const decrypted = await cryptoApi.subtle.decrypt(
|
|
556
|
+
{
|
|
557
|
+
name: "AES-GCM",
|
|
558
|
+
iv: toArrayBuffer(iv),
|
|
559
|
+
...associatedData ? { additionalData: toArrayBuffer(new TextEncoder().encode(associatedData)) } : {}
|
|
560
|
+
},
|
|
561
|
+
key,
|
|
562
|
+
toArrayBuffer(ciphertext)
|
|
563
|
+
);
|
|
564
|
+
return new TextDecoder().decode(decrypted);
|
|
565
|
+
} catch {
|
|
566
|
+
return null;
|
|
567
|
+
}
|
|
568
|
+
};
|
|
558
569
|
}
|
|
559
570
|
async function deriveEmailEncryptionKeyB64(email, emailSaltB64) {
|
|
560
571
|
const encoder = new TextEncoder();
|
|
@@ -1292,6 +1303,7 @@ export {
|
|
|
1292
1303
|
createApiKeyCryptoMaterial,
|
|
1293
1304
|
unwrapApiKeyMasterKey,
|
|
1294
1305
|
decryptWithAesGcmCombined,
|
|
1306
|
+
createAesGcmCombinedDecryptor,
|
|
1295
1307
|
deriveEmailEncryptionKeyB64,
|
|
1296
1308
|
decryptBytesWithAesGcm,
|
|
1297
1309
|
deriveEmbedKeyFromChatKey,
|
|
@@ -2715,7 +2715,9 @@ declare class OpenMatesClient {
|
|
|
2715
2715
|
/** Observe lifecycle metadata without claiming or collecting AI responses. */
|
|
2716
2716
|
observeChatActivity(onChange: () => void): Promise<() => void>;
|
|
2717
2717
|
/** Read encrypted local history without refreshing or opening a connection. */
|
|
2718
|
-
listCachedChats(limit?: number, page?: number, options?: TeamContextOptions
|
|
2718
|
+
listCachedChats(limit?: number, page?: number, options?: TeamContextOptions & {
|
|
2719
|
+
onCachedChats?: (page: ChatListPage) => void;
|
|
2720
|
+
}): Promise<ChatListPage | null>;
|
|
2719
2721
|
listChats(limit?: number, page?: number, options?: TeamContextOptions & {
|
|
2720
2722
|
forceRefresh?: boolean;
|
|
2721
2723
|
signal?: AbortSignal;
|
|
@@ -2773,6 +2775,8 @@ declare class OpenMatesClient {
|
|
|
2773
2775
|
chatId: string;
|
|
2774
2776
|
chatKey: Uint8Array;
|
|
2775
2777
|
}>;
|
|
2778
|
+
/** Operation-local ciphertext index and nonextractable key; no persistent plaintext cache. */
|
|
2779
|
+
private createRawChatMessageReader;
|
|
2776
2780
|
private decryptRawChatMessages;
|
|
2777
2781
|
private resolveCachedChatForQuery;
|
|
2778
2782
|
/**
|
|
@@ -2989,11 +2993,13 @@ declare class OpenMatesClient {
|
|
|
2989
2993
|
/** Override WebSocket turn waits for long-running sends and responses. */
|
|
2990
2994
|
responseTimeoutMs?: number;
|
|
2991
2995
|
}): Promise<{
|
|
2992
|
-
status: "completed" | "waiting_for_user";
|
|
2996
|
+
status: "completed" | "waiting_for_user" | "queued";
|
|
2993
2997
|
chatId: string;
|
|
2994
2998
|
messageId: string | null;
|
|
2995
2999
|
/** Canonical ID of the persisted human turn, including sends that skip AI. */
|
|
2996
3000
|
userMessageId?: string;
|
|
3001
|
+
queueMode?: "follow_up" | "steer";
|
|
3002
|
+
queueRevision?: number;
|
|
2997
3003
|
assistant: string;
|
|
2998
3004
|
category: string | null;
|
|
2999
3005
|
modelName: string | null;
|
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-
|
|
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-D2oJ-ctT.js';
|
package/dist/cli.js
CHANGED
|
@@ -21,10 +21,10 @@ import {
|
|
|
21
21
|
shouldRequireTrustedAccountGuard,
|
|
22
22
|
waitForSafeE2ETotpWindow,
|
|
23
23
|
waitForWorkflowRun
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-
|
|
24
|
+
} from "./chunk-6W3OFVOF.js";
|
|
25
|
+
import "./chunk-5SFXCJJ4.js";
|
|
26
26
|
import "./chunk-IWKP55ZB.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-F2U6KIMR.js";
|
|
28
28
|
import "./chunk-TMYEFC7M.js";
|
|
29
29
|
import "./chunk-V2QAI5ET.js";
|
|
30
30
|
export {
|
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-
|
|
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-
|
|
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-D2oJ-ctT.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-D2oJ-ctT.js';
|
|
3
3
|
|
|
4
4
|
type ChatModelSelection = "auto" | (string & {});
|
|
5
5
|
interface ChatModelCatalogEntry {
|
package/dist/index.js
CHANGED
|
@@ -44,10 +44,10 @@ import {
|
|
|
44
44
|
selectAssistantMessagesForSpeech,
|
|
45
45
|
serializeToYaml,
|
|
46
46
|
summarizeAssistantSpeech
|
|
47
|
-
} from "./chunk-
|
|
48
|
-
import "./chunk-
|
|
47
|
+
} from "./chunk-6W3OFVOF.js";
|
|
48
|
+
import "./chunk-5SFXCJJ4.js";
|
|
49
49
|
import "./chunk-IWKP55ZB.js";
|
|
50
|
-
import "./chunk-
|
|
50
|
+
import "./chunk-F2U6KIMR.js";
|
|
51
51
|
import "./chunk-TMYEFC7M.js";
|
|
52
52
|
import "./chunk-V2QAI5ET.js";
|
|
53
53
|
export {
|
package/dist/privacyDaemon.js
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -17,47 +17,47 @@
|
|
|
17
17
|
{
|
|
18
18
|
"name": "libggml-base.so",
|
|
19
19
|
"bytes": 1110088,
|
|
20
|
-
"sha256": "
|
|
20
|
+
"sha256": "6a206cb47287d4597fed24840955504398be4fdb92f1317e36621d7345b64e65"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"name": "libggml-base.so.0",
|
|
24
24
|
"bytes": 1110088,
|
|
25
|
-
"sha256": "
|
|
25
|
+
"sha256": "6a206cb47287d4597fed24840955504398be4fdb92f1317e36621d7345b64e65"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"name": "libggml-base.so.0.15.1",
|
|
29
29
|
"bytes": 1110088,
|
|
30
|
-
"sha256": "
|
|
30
|
+
"sha256": "6a206cb47287d4597fed24840955504398be4fdb92f1317e36621d7345b64e65"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"name": "libggml-cpu.so",
|
|
34
34
|
"bytes": 869800,
|
|
35
|
-
"sha256": "
|
|
35
|
+
"sha256": "50b85ca0cca21bff7709775869e608dcd1b8ce3cb5ba705fa5d8ddc0aa570376"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"name": "libggml-cpu.so.0",
|
|
39
39
|
"bytes": 869800,
|
|
40
|
-
"sha256": "
|
|
40
|
+
"sha256": "50b85ca0cca21bff7709775869e608dcd1b8ce3cb5ba705fa5d8ddc0aa570376"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"name": "libggml-cpu.so.0.15.1",
|
|
44
44
|
"bytes": 869800,
|
|
45
|
-
"sha256": "
|
|
45
|
+
"sha256": "50b85ca0cca21bff7709775869e608dcd1b8ce3cb5ba705fa5d8ddc0aa570376"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"name": "libggml.so",
|
|
49
49
|
"bytes": 1899104,
|
|
50
|
-
"sha256": "
|
|
50
|
+
"sha256": "483f0288f2565ff90cd171543ea0d02b11a10feed555917abdd76a54ac9a9f7d"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"name": "libggml.so.0",
|
|
54
54
|
"bytes": 1899104,
|
|
55
|
-
"sha256": "
|
|
55
|
+
"sha256": "483f0288f2565ff90cd171543ea0d02b11a10feed555917abdd76a54ac9a9f7d"
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
58
|
"name": "libggml.so.0.15.1",
|
|
59
59
|
"bytes": 1899104,
|
|
60
|
-
"sha256": "
|
|
60
|
+
"sha256": "483f0288f2565ff90cd171543ea0d02b11a10feed555917abdd76a54ac9a9f7d"
|
|
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.
|
|
3
|
+
"version": "0.27.0-alpha.55",
|
|
4
4
|
"description": "OpenMates CLI and SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"test:unit:tui": "node --test --experimental-strip-types --loader ./tests/loader.mjs tests/tui.test.ts tests/tuiExampleContinuation.test.ts tests/tuiWorkflowInteraction.test.ts tests/tuiWorkspaceInteraction.test.ts tests/tuiLayout.test.ts tests/tuiTerminal.test.ts tests/tuiRenderCache.test.ts tests/tuiStreamingRender.test.ts tests/tuiStreamingSend.test.ts tests/tuiTerminalFrame.test.ts tests/tuiPrototypeBridge.test.ts tests/tuiStartup.test.ts tests/tuiTasksWorkspace.test.ts tests/tuiProjectsWorkspace.test.ts tests/tuiWorkflowWorkspace.test.ts tests/tuiAttachments.test.ts tests/tuiCancellation.test.ts tests/tuiWorkflowVersion.test.ts tests/tuiAppsWorkspace.test.ts tests/tuiHome.test.ts tests/tuiEmbeds.test.ts tests/tuiEmbedPreviews.test.ts tests/tuiMarkdown.test.ts tests/tuiResultsViews.test.ts tests/tuiRichChatInteraction.test.ts tests/tuiInteractiveQuestions.test.ts tests/tuiCachedWorkspaces.test.ts tests/tuiTaskList.test.ts tests/tuiWorkspaceCache.test.ts tests/tuiProjectCacheInteraction.test.ts tests/tuiChatSidebar.test.ts tests/tuiPointer.test.ts tests/tuiPointerWorkspaces.test.ts tests/tuiPointerChat.test.ts tests/tuiHeaderActions.test.ts tests/tuiSettings.test.ts tests/tuiTeamsSettings.test.ts tests/tuiTeamChat.test.ts tests/tuiChromeShell.test.ts tests/tuiModelSelector.test.ts tests/tuiModelSelectorShell.test.ts",
|
|
54
54
|
"test:unit:connected-account-import": "node --test --experimental-strip-types --loader ./tests/loader.mjs tests/connectedAccountImport.test.ts",
|
|
55
55
|
"test:unit:benchmark": "node --test --experimental-strip-types --loader ./tests/loader.mjs src/__tests__/benchmark.test.ts",
|
|
56
|
-
"test": "node --test --experimental-strip-types --loader ./tests/loader.mjs tests/wiki.test.ts tests/privacy.test.ts tests/crypto.test.ts tests/storage.test.ts tests/keychain.test.ts tests/mentions.test.ts tests/outputRedactor.test.ts tests/fileEmbed.test.ts tests/embedCreator.test.ts tests/shareEncryption.test.ts tests/server.test.ts tests/serverCaddyUpdate.test.ts tests/serverCaddyUpgrade.test.ts tests/serverQuickTest.test.ts tests/ws.test.ts tests/urlEmbed.test.ts tests/tui.test.ts tests/tuiTeamsSettings.test.ts tests/tuiTeamChat.test.ts tests/tuiExampleContinuation.test.ts tests/tuiWorkflowInteraction.test.ts tests/tuiWorkspaceInteraction.test.ts tests/tuiLayout.test.ts tests/tuiTerminal.test.ts tests/tuiRenderCache.test.ts tests/tuiStreamingRender.test.ts tests/tuiStreamingSend.test.ts tests/tuiTerminalFrame.test.ts tests/tuiPrototypeBridge.test.ts tests/tuiStartup.test.ts tests/tuiTasksWorkspace.test.ts tests/tuiProjectsWorkspace.test.ts tests/tuiWorkflowWorkspace.test.ts tests/tuiAttachments.test.ts tests/tuiCancellation.test.ts tests/tuiWorkflowVersion.test.ts tests/tuiAppsWorkspace.test.ts tests/tuiHome.test.ts tests/tuiEmbeds.test.ts tests/tuiEmbedPreviews.test.ts tests/tuiMarkdown.test.ts tests/tuiResultsViews.test.ts tests/tuiRichChatInteraction.test.ts tests/tuiInteractiveQuestions.test.ts tests/tuiCachedWorkspaces.test.ts tests/tuiTaskList.test.ts tests/tuiWorkspaceCache.test.ts tests/tuiProjectCacheInteraction.test.ts tests/tuiChatSidebar.test.ts tests/sdk-chat-sidebar.test.ts tests/workflows.test.ts tests/workflow-file.test.ts tests/sdk-workflows.test.ts tests/draft-sync.test.ts tests/sdk-draft-sync.test.ts tests/ideabucket.test.ts tests/teams-permissions.test.ts tests/sdk-teams.test.ts tests/team-ai-trigger.test.ts src/__tests__/benchmark.test.ts && node --test --experimental-strip-types --loader ./tests/loader.mjs tests/embedRenderers.test.ts tests/connectedAccountImport.test.ts && node --test --experimental-strip-types --loader ./tests/loader.mjs tests/cli.test.ts tests/loginTerminal.test.ts tests/imagesDetectAi.test.ts tests/uploadService.test.ts tests/billing.test.ts tests/account-delete.test.ts tests/signup.test.ts tests/security-setup.test.ts tests/e2e-provisioning.test.ts && npm run test:unit:session && npm run test:unit:task-sync && npm run test:unit:task-pagination",
|
|
56
|
+
"test": "node --test --experimental-strip-types --loader ./tests/loader.mjs tests/wiki.test.ts tests/privacy.test.ts tests/crypto.test.ts tests/cryptoBatch.test.ts tests/clientStartup.test.ts tests/storage.test.ts tests/keychain.test.ts tests/mentions.test.ts tests/outputRedactor.test.ts tests/fileEmbed.test.ts tests/embedCreator.test.ts tests/shareEncryption.test.ts tests/server.test.ts tests/serverCaddyUpdate.test.ts tests/serverCaddyUpgrade.test.ts tests/serverQuickTest.test.ts tests/ws.test.ts tests/urlEmbed.test.ts tests/tui.test.ts tests/tuiTeamsSettings.test.ts tests/tuiTeamChat.test.ts tests/tuiExampleContinuation.test.ts tests/tuiWorkflowInteraction.test.ts tests/tuiWorkspaceInteraction.test.ts tests/tuiLayout.test.ts tests/tuiTerminal.test.ts tests/tuiRenderCache.test.ts tests/tuiStreamingRender.test.ts tests/tuiStreamingSend.test.ts tests/tuiTerminalFrame.test.ts tests/tuiPrototypeBridge.test.ts tests/tuiStartup.test.ts tests/tuiTasksWorkspace.test.ts tests/tuiProjectsWorkspace.test.ts tests/tuiWorkflowWorkspace.test.ts tests/tuiAttachments.test.ts tests/tuiCancellation.test.ts tests/tuiWorkflowVersion.test.ts tests/tuiAppsWorkspace.test.ts tests/tuiHome.test.ts tests/tuiEmbeds.test.ts tests/tuiEmbedPreviews.test.ts tests/tuiMarkdown.test.ts tests/tuiResultsViews.test.ts tests/tuiRichChatInteraction.test.ts tests/tuiInteractiveQuestions.test.ts tests/tuiCachedWorkspaces.test.ts tests/tuiTaskList.test.ts tests/tuiWorkspaceCache.test.ts tests/tuiProjectCacheInteraction.test.ts tests/tuiChatSidebar.test.ts tests/sdk-chat-sidebar.test.ts tests/workflows.test.ts tests/workflow-file.test.ts tests/sdk-workflows.test.ts tests/draft-sync.test.ts tests/sdk-draft-sync.test.ts tests/ideabucket.test.ts tests/teams-permissions.test.ts tests/sdk-teams.test.ts tests/team-ai-trigger.test.ts src/__tests__/benchmark.test.ts && node --test --experimental-strip-types --loader ./tests/loader.mjs tests/embedRenderers.test.ts tests/connectedAccountImport.test.ts && node --test --experimental-strip-types --loader ./tests/loader.mjs tests/cli.test.ts tests/loginTerminal.test.ts tests/imagesDetectAi.test.ts tests/uploadService.test.ts tests/billing.test.ts tests/account-delete.test.ts tests/signup.test.ts tests/security-setup.test.ts tests/e2e-provisioning.test.ts && npm run test:unit:session && npm run test:unit:task-sync && npm run test:unit:task-pagination",
|
|
57
57
|
"test:unit:session": "node --test --experimental-strip-types --loader ./tests/loader.mjs --test-name-pattern \"serializes refreshes|session refresh|rotated|gateway\" tests/client.test.ts",
|
|
58
58
|
"test:unit:task-sync": "node --test --experimental-strip-types --loader ./tests/loader.mjs tests/projectTaskSync.test.ts tests/taskActivityDelivery.test.ts tests/taskCommandDelivery.test.ts tests/taskDelivery.test.ts tests/taskMutationDelivery.test.ts tests/claimConflict.test.ts tests/cliTaskQueue.test.ts tests/codexConnection.test.ts tests/remoteSources.test.ts tests/remoteAccess.test.ts tests/remoteAccessCrypto.test.ts",
|
|
59
59
|
"test:unit:sdk-sidebar": "node --test --experimental-strip-types --loader ./tests/loader.mjs tests/sdk-chat-sidebar.test.ts",
|