openmates 0.27.0-alpha.54 → 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-W2VJSU3Q.js → chunk-6W3OFVOF.js} +119 -72
- package/dist/{chunk-FC27KZIW.js → chunk-F2U6KIMR.js} +34 -22
- package/dist/{cli-jvpep36C.d.ts → cli-D2oJ-ctT.d.ts} +5 -1
- 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 } : {} };
|
|
@@ -18355,7 +18399,7 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
18355
18399
|
return documents;
|
|
18356
18400
|
}
|
|
18357
18401
|
async decryptTaskContextRecord(record10, options = {}) {
|
|
18358
|
-
const { decryptUserTask: decryptUserTask2 } = await import("./tasksCli-
|
|
18402
|
+
const { decryptUserTask: decryptUserTask2 } = await import("./tasksCli-VEBWWQW4.js");
|
|
18359
18403
|
const teamId = this.resolveTeamContext(options);
|
|
18360
18404
|
if (!teamId || record10.source === "workflow_run") return decryptUserTask2(record10, this.getMasterKeyBytes());
|
|
18361
18405
|
this.requireSession();
|
|
@@ -21258,11 +21302,9 @@ Required: ${schema.required.join(", ")}`
|
|
|
21258
21302
|
const teamId = this.resolveTeamContext(options);
|
|
21259
21303
|
const syncMasterKey = Buffer.from(this.getMasterKeyBytes());
|
|
21260
21304
|
const refreshChatIdSet = new Set(refreshChatIds.filter(Boolean));
|
|
21261
|
-
if (!forceRefresh && refreshChatIdSet.size === 0 && isSyncCacheFresh(3e5, teamId)) {
|
|
21262
|
-
const cache2 = loadSyncCache(teamId);
|
|
21263
|
-
if (cache2) return cache2;
|
|
21264
|
-
}
|
|
21265
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;
|
|
21266
21308
|
const clientChatVersions = {};
|
|
21267
21309
|
const clientChatIds = [];
|
|
21268
21310
|
const clientEmbedIds = [];
|
|
@@ -99395,7 +99437,12 @@ async function loadHomeData(state, client2, render) {
|
|
|
99395
99437
|
state.homeChatsLoading = signedIn && homeChatItems(state).length === 0;
|
|
99396
99438
|
if (signedIn && typeof client2.listCachedChats === "function") {
|
|
99397
99439
|
try {
|
|
99398
|
-
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
|
+
} });
|
|
99399
99446
|
if (!current2()) return;
|
|
99400
99447
|
if (cached) updateHomeChats(state, cached.chats);
|
|
99401
99448
|
} catch {
|
|
@@ -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
|
/**
|
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",
|