openmates 0.18.0-alpha.32 → 0.18.0-alpha.34
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-6NR3TIBG.js → chunk-DDAEHQGP.js} +64 -112
- package/dist/{cli-Cq6p2ssC.d.ts → cli-v2gypIXn.d.ts} +114 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +3 -113
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -765,7 +765,7 @@ async function buildCreateUserTaskInput(masterKey, input) {
|
|
|
765
765
|
plaintext_description: assignee.assigneeType === "openmates" ? input.description : void 0
|
|
766
766
|
};
|
|
767
767
|
}
|
|
768
|
-
async function buildUpdateUserTaskInput(task, masterKey, input) {
|
|
768
|
+
async function buildUpdateUserTaskInput(task, masterKey, input, projectContext) {
|
|
769
769
|
if (input.chatId && input.externalChat) throw new Error("A task cannot use both native chat and external chat context.");
|
|
770
770
|
const taskKey = await taskKeyFromRecord(task.encrypted, masterKey);
|
|
771
771
|
const patch = { version: task.version, updated_at: nowSeconds() };
|
|
@@ -802,8 +802,43 @@ async function buildUpdateUserTaskInput(task, masterKey, input) {
|
|
|
802
802
|
patch.encrypted_external_chat_title = await encryptWithAesGcmCombined(input.externalChat.title ?? "", taskKey);
|
|
803
803
|
}
|
|
804
804
|
if (input.projectIds !== void 0) {
|
|
805
|
-
|
|
806
|
-
|
|
805
|
+
if (!projectContext) throw new Error("Project relinking requires task wrappers and authorized project keys.");
|
|
806
|
+
const projectIds = [...new Set(input.projectIds)];
|
|
807
|
+
const hashId = (id) => createHash2("sha256").update(id).digest("hex");
|
|
808
|
+
const chatId = input.externalChat ? null : input.chatId !== void 0 ? input.chatId : task.primaryChatId;
|
|
809
|
+
const planId = input.planId !== void 0 ? input.planId : task.planId;
|
|
810
|
+
const wrappers = [{
|
|
811
|
+
key_type: "master",
|
|
812
|
+
encrypted_task_key: task.encrypted.encrypted_task_key,
|
|
813
|
+
created_at: nowSeconds()
|
|
814
|
+
}];
|
|
815
|
+
for (const wrapper of projectContext.keyWrappers) {
|
|
816
|
+
if (wrapper.key_type === "master" || wrapper.key_type === "project") continue;
|
|
817
|
+
if (wrapper.key_type === "chat" && (!chatId || wrapper.hashed_chat_id !== hashId(chatId))) continue;
|
|
818
|
+
if (wrapper.key_type === "plan" && (!planId || wrapper.hashed_plan_id !== hashId(planId))) continue;
|
|
819
|
+
if (!["chat", "plan", "team"].includes(String(wrapper.key_type))) throw new Error("Unsupported task key wrapper type.");
|
|
820
|
+
if (typeof wrapper.encrypted_task_key !== "string" || !wrapper.encrypted_task_key) throw new Error("Missing encrypted task wrapper key.");
|
|
821
|
+
const retained = {};
|
|
822
|
+
for (const field of ["key_type", "encrypted_task_key", "hashed_chat_id", "hashed_plan_id", "hashed_team_id", "team_key_epoch", "created_at", "expires_at"]) {
|
|
823
|
+
if (wrapper[field] !== void 0) retained[field] = wrapper[field];
|
|
824
|
+
}
|
|
825
|
+
wrappers.push(retained);
|
|
826
|
+
}
|
|
827
|
+
if (chatId && !wrappers.some((wrapper) => wrapper.key_type === "chat")) throw new Error("Missing required primary chat key wrapper.");
|
|
828
|
+
if (planId && !wrappers.some((wrapper) => wrapper.key_type === "plan")) throw new Error("Missing required plan key wrapper.");
|
|
829
|
+
for (const projectId of projectIds) {
|
|
830
|
+
const projectKey = projectContext.projectKeys.get(projectId);
|
|
831
|
+
if (!projectKey) throw new Error(`Missing authorized project key for ${projectId}.`);
|
|
832
|
+
wrappers.push({
|
|
833
|
+
key_type: "project",
|
|
834
|
+
hashed_project_id: hashId(projectId),
|
|
835
|
+
encrypted_task_key: await encryptBytesWithAesGcm(taskKey, projectKey),
|
|
836
|
+
created_at: nowSeconds()
|
|
837
|
+
});
|
|
838
|
+
}
|
|
839
|
+
patch.key_wrappers = wrappers;
|
|
840
|
+
patch.linked_project_ids = projectIds;
|
|
841
|
+
patch.encrypted_linked_project_ids = await encryptWithAesGcmCombined(JSON.stringify(projectIds), taskKey);
|
|
807
842
|
}
|
|
808
843
|
if (input.planId !== void 0) patch.plan_id = input.planId;
|
|
809
844
|
const priority = normalizeTaskPriority(input.priority);
|
|
@@ -13552,6 +13587,25 @@ var OpenMatesClient = class _OpenMatesClient {
|
|
|
13552
13587
|
}
|
|
13553
13588
|
return response.data.proposed_tasks;
|
|
13554
13589
|
}
|
|
13590
|
+
/** Resolve membership-authorized Project keys before replacing task wrappers. */
|
|
13591
|
+
async prepareUserTaskUpdate(task, input, context = {}) {
|
|
13592
|
+
const masterKey = this.getMasterKeyBytes();
|
|
13593
|
+
if (input.projectIds === void 0) return buildUpdateUserTaskInput(task, masterKey, input);
|
|
13594
|
+
this.requireSession();
|
|
13595
|
+
if (this.resolveTeamContext(context)) throw new Error("Team Task project relinking is not supported by the task key-wrapper endpoint.");
|
|
13596
|
+
await taskKeyFromRecord(task.encrypted, masterKey);
|
|
13597
|
+
const response = await this.http.get(
|
|
13598
|
+
`/v1/user-tasks/${encodeURIComponent(task.taskId)}/key-wrappers`,
|
|
13599
|
+
this.getCliRequestHeaders()
|
|
13600
|
+
);
|
|
13601
|
+
if (!response.ok || !Array.isArray(response.data.key_wrappers)) throw new Error("Unable to load required task key wrappers.");
|
|
13602
|
+
const projectKeys = /* @__PURE__ */ new Map();
|
|
13603
|
+
for (const projectId of new Set(input.projectIds)) {
|
|
13604
|
+
const detail = await this.getProject(projectId, context);
|
|
13605
|
+
projectKeys.set(projectId, await this.decryptProjectKey(detail.project, context));
|
|
13606
|
+
}
|
|
13607
|
+
return buildUpdateUserTaskInput(task, masterKey, input, { keyWrappers: response.data.key_wrappers, projectKeys });
|
|
13608
|
+
}
|
|
13555
13609
|
async updateUserTask(taskId, input, context = {}) {
|
|
13556
13610
|
this.requireSession();
|
|
13557
13611
|
const teamId = this.resolveTeamContext(context);
|
|
@@ -48750,58 +48804,6 @@ var audioSpeakOpenmatesWelcomeMessageChat = {
|
|
|
48750
48804
|
}
|
|
48751
48805
|
};
|
|
48752
48806
|
|
|
48753
|
-
// ../ui/src/demo_chats/data/example_chats/openmates-workspace-welcome.ts
|
|
48754
|
-
var openmatesWorkspaceWelcomeChat = {
|
|
48755
|
-
chat_id: "example-openmates-workspace-welcome",
|
|
48756
|
-
slug: "openmates-workspace-welcome",
|
|
48757
|
-
title: "example_chats.openmates_workspace_welcome.title",
|
|
48758
|
-
summary: "example_chats.openmates_workspace_welcome.summary",
|
|
48759
|
-
icon: "sparkles",
|
|
48760
|
-
category: "onboarding_support",
|
|
48761
|
-
keywords: ["OpenMates welcome", "workspace tour", "getting started", "assistant speech"],
|
|
48762
|
-
follow_up_suggestions: ["example_chats.openmates_workspace_welcome.follow_up_1", "example_chats.openmates_workspace_welcome.follow_up_2", "example_chats.openmates_workspace_welcome.follow_up_3", "example_chats.openmates_workspace_welcome.follow_up_4", "example_chats.openmates_workspace_welcome.follow_up_5", "example_chats.openmates_workspace_welcome.follow_up_6"],
|
|
48763
|
-
messages: [
|
|
48764
|
-
{
|
|
48765
|
-
"id": "a085622a-f433-468c-8b83-31d5c016b475",
|
|
48766
|
-
"role": "user",
|
|
48767
|
-
"content": "example_chats.openmates_workspace_welcome.message_1",
|
|
48768
|
-
"created_at": 1788341949
|
|
48769
|
-
},
|
|
48770
|
-
{
|
|
48771
|
-
"id": "b6379379-28f1-5e1a-b6ac-74a0bc4b7154",
|
|
48772
|
-
"role": "assistant",
|
|
48773
|
-
"content": "example_chats.openmates_workspace_welcome.message_2",
|
|
48774
|
-
"created_at": 1788341959,
|
|
48775
|
-
"user_message_id": "a085622a-f433-468c-8b83-31d5c016b475",
|
|
48776
|
-
"category": "onboarding_support",
|
|
48777
|
-
"model_name": "Gemini 3.5 Flash-Lite"
|
|
48778
|
-
}
|
|
48779
|
-
],
|
|
48780
|
-
embeds: [],
|
|
48781
|
-
public_speech: {
|
|
48782
|
-
"b6379379-28f1-5e1a-b6ac-74a0bc4b7154": [
|
|
48783
|
-
{
|
|
48784
|
-
"segment_id": "498007c06c12a518ab12a1a8592ca2268bb461dbed704f4ea3418048c19bcab9",
|
|
48785
|
-
"sequence": 0,
|
|
48786
|
-
"public_url": "https://dev-openmates-public-examples.nbg1.your-objectstorage.com/assistant-speech/sha256-790be83b73683ee357ac192807f33016607848d4944ed0b7bf2077bf379fff83.mp3",
|
|
48787
|
-
"sha256": "790be83b73683ee357ac192807f33016607848d4944ed0b7bf2077bf379fff83",
|
|
48788
|
-
"duration_seconds": 4.624
|
|
48789
|
-
},
|
|
48790
|
-
{
|
|
48791
|
-
"segment_id": "38a280c81a8aa38fdc29fbc8131b16f451588c8308f863ec9e4fd468396fbff5",
|
|
48792
|
-
"sequence": 1,
|
|
48793
|
-
"public_url": "https://dev-openmates-public-examples.nbg1.your-objectstorage.com/assistant-speech/sha256-d85b30ca1daa69257cb8c99f3efea51ec7eab3666c2036a133c127ceea0ca461.mp3",
|
|
48794
|
-
"sha256": "d85b30ca1daa69257cb8c99f3efea51ec7eab3666c2036a133c127ceea0ca461",
|
|
48795
|
-
"duration_seconds": 9.822
|
|
48796
|
-
}
|
|
48797
|
-
]
|
|
48798
|
-
},
|
|
48799
|
-
metadata: {
|
|
48800
|
-
featured: true,
|
|
48801
|
-
order: 1
|
|
48802
|
-
}
|
|
48803
|
-
};
|
|
48804
|
-
|
|
48805
48807
|
// ../ui/src/demo_chats/data/example_chats/plumber-message-email-phone-privacy.ts
|
|
48806
48808
|
var plumberMessageEmailPhonePrivacyChat = {
|
|
48807
48809
|
chat_id: "example-plumber-message-email-phone",
|
|
@@ -48963,7 +48965,6 @@ var ALL_EXAMPLE_CHATS = [
|
|
|
48963
48965
|
openMeteoWeatherNotebookChat,
|
|
48964
48966
|
audioGenerateOpenmatesSuccessChimeChat,
|
|
48965
48967
|
audioSpeakOpenmatesWelcomeMessageChat,
|
|
48966
|
-
openmatesWorkspaceWelcomeChat,
|
|
48967
48968
|
plumberMessageEmailPhonePrivacyChat
|
|
48968
48969
|
].sort((a, b) => a.metadata.order - b.metadata.order);
|
|
48969
48970
|
|
|
@@ -54035,6 +54036,9 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
|
|
|
54035
54036
|
},
|
|
54036
54037
|
yesterday: {
|
|
54037
54038
|
text: "Yesterday"
|
|
54039
|
+
},
|
|
54040
|
+
more_actions: {
|
|
54041
|
+
text: "More"
|
|
54038
54042
|
}
|
|
54039
54043
|
},
|
|
54040
54044
|
community: {
|
|
@@ -54150,26 +54154,6 @@ Only output the final Markdown table. Do NOT include explanations, notes, or any
|
|
|
54150
54154
|
email_body: {
|
|
54151
54155
|
text: "Hey there,\n\nOpenMates now has a referral feature: you can share your personal referral link with friends, and when someone joins through it and makes their first eligible credit purchase, both of you receive free OpenMates credits.\n\n[cta]\n\nHere's how it works:\n\n- You share your referral link or QR code from the billing settings.\n- Your friend signs up through that link and makes their first eligible credit purchase.\n- They receive 2,000 free credits, and you receive 2,000 free credits too.\n\nThe current referral campaign applies to first purchases of 10 EUR or more within 7 days. Each account can use one referral code once, and each referrer can receive rewards for up to 10 successful referrals while the referral budget is available.\n\nI added this because word of mouth is the most meaningful way OpenMates can grow: not through tracking ads or dark patterns, but through people recommending it when they genuinely find it useful.\n\nIf you know someone who would like a more privacy-focused, flexible alternative to typical AI chatbots, feel free to invite them.\n\nThanks for helping OpenMates grow in a way that fits the project.\n\nGreetings,\n\nMarco \nCreator of OpenMates"
|
|
54152
54156
|
}
|
|
54153
|
-
},
|
|
54154
|
-
who_develops_openmates: {
|
|
54155
|
-
title: {
|
|
54156
|
-
text: "Who develops OpenMates?"
|
|
54157
|
-
},
|
|
54158
|
-
description: {
|
|
54159
|
-
text: "Meet the creator of OpenMates and learn about the philosophy behind the project"
|
|
54160
|
-
},
|
|
54161
|
-
message: {
|
|
54162
|
-
text: "# \u{1F44B} Who develops OpenMates?\n\nHello!\nMarco here (aka [glowingkitty](https://github.com/glowingkitty)). Designer, software architect, maker. And the creator of OpenMates.\n\nWe all have our share of frustrating experiences with big tech companies. Either because of their bad user experience design, mandatory subscriptions with ever-increasing prices, ads, user data getting stolen because of insufficient security, selling of user data, building products as addictive as useful - and the list goes on and on.\n\nBut software doesn't have to be this frustrating and many developers (especially in the open source community) show this every day with amazing projects. And I have been both excited by the potential of giving everyone access to personal assistants that can do everything from helping you learn new topics, search the web, plan trips, get career advice, build software and much more - but also concerned about allowing big tech companies to define & control this future. Because those companies have shown over and over again that they can't be trusted to prioritize user interests over investor interests.\n\nSo, I started working around end of 2024 on a personal project. A better alternative to existing chatbots / AI agents. With user interests first as the main priority, a better user experience design, better privacy & encryption, independence from individual AI providers, a focus on education & inspiration and with the general focus to make the useful aspects of AI accessible to everyday people for everyday tasks. Instead of building just another slop machine that makes everyone addicted and the internet more miserable to use. And now, it's online. Yes, still an alpha with some bugs and missing features, but it's getting better every week.\n\nOh, and of course OpenMates is fully open source. Because that is the foundation of every software that wants to ensure enshittification resilience and prioritize user interests also in the future.\n\nIf you want to join this journey as a user, thanks a lot & welcome!\nIf you want to join this journey as a contributor and possible team member - check out [OpenMates' git repo](https://github.com/glowingkitty/openmates) and [our developer group](https://signal.group/#CjQKIOlYZ63Rz7sibDjQ680wO1a0NcKxtfL0in2BA6Yvbr82EhDNd6GJYtaPfHn4BFcsETQq) - and I hope to hear from you!\n\nLooking forward to the months ahead. It's gonna be an exciting journey :)"
|
|
54163
|
-
},
|
|
54164
|
-
follow_up_1: {
|
|
54165
|
-
text: "What is the long-term vision for OpenMates?"
|
|
54166
|
-
},
|
|
54167
|
-
follow_up_2: {
|
|
54168
|
-
text: "How can I contribute to OpenMates?"
|
|
54169
|
-
},
|
|
54170
|
-
follow_up_3: {
|
|
54171
|
-
text: "Why is open source important for OpenMates?"
|
|
54172
|
-
}
|
|
54173
54157
|
}
|
|
54174
54158
|
},
|
|
54175
54159
|
design_guidelines: {
|
|
@@ -58576,38 +58560,6 @@ Like [Denis Villeneuve](wiki:Denis_Villeneuve)\u2019s work, *Contact* avoids the
|
|
|
58576
58560
|
text: "List essential items to pack for variable weather bike rides"
|
|
58577
58561
|
}
|
|
58578
58562
|
},
|
|
58579
|
-
openmates_workspace_welcome: {
|
|
58580
|
-
title: {
|
|
58581
|
-
text: "Welcome Back to OpenMates"
|
|
58582
|
-
},
|
|
58583
|
-
summary: {
|
|
58584
|
-
text: "A warm welcome with practical ideas for exploring your OpenMates workspace."
|
|
58585
|
-
},
|
|
58586
|
-
message_1: {
|
|
58587
|
-
text: "Say this as a warm, natural welcome message: Welcome back to OpenMates. Your workspace is ready whenever you are."
|
|
58588
|
-
},
|
|
58589
|
-
message_2: {
|
|
58590
|
-
text: "Welcome back to OpenMates. Your workspace is ready whenever you are!\n\nWhat would you like to explore today? You can ask a question, check your [calendar](/#settings/apps/calendar), manage your [tasks](/#settings/apps/tasks), or try out any of our available apps and skills."
|
|
58591
|
-
},
|
|
58592
|
-
follow_up_1: {
|
|
58593
|
-
text: "Check my upcoming calendar events"
|
|
58594
|
-
},
|
|
58595
|
-
follow_up_2: {
|
|
58596
|
-
text: "What should I focus on today"
|
|
58597
|
-
},
|
|
58598
|
-
follow_up_3: {
|
|
58599
|
-
text: "Search for new productivity apps"
|
|
58600
|
-
},
|
|
58601
|
-
follow_up_4: {
|
|
58602
|
-
text: "Suggest some creative project ideas"
|
|
58603
|
-
},
|
|
58604
|
-
follow_up_5: {
|
|
58605
|
-
text: "Find today's weather forecast"
|
|
58606
|
-
},
|
|
58607
|
-
follow_up_6: {
|
|
58608
|
-
text: "How can I improve my workflow"
|
|
58609
|
-
}
|
|
58610
|
-
},
|
|
58611
58563
|
organic_groceries_berlin: {
|
|
58612
58564
|
title: {
|
|
58613
58565
|
text: "Organic Grocery Delivery in Berlin"
|
|
@@ -75924,7 +75876,7 @@ async function handleTasks(client, subcommand, rest, flags, redactor) {
|
|
|
75924
75876
|
const project = await requiredResolvedProject(client, masterKey, requiredStringFlag(rest[1], "<project-id>"), flags);
|
|
75925
75877
|
const task = await requiredResolvedTask(client, masterKey, subcommand, scope, "add-to-project");
|
|
75926
75878
|
const linkedProjectIds = appendUniqueId(task.linkedProjectIds, project.projectId);
|
|
75927
|
-
const patch = await
|
|
75879
|
+
const patch = await client.prepareUserTaskUpdate(task, { projectIds: linkedProjectIds }, scope);
|
|
75928
75880
|
const updated = flags["delivery-id"] ? await queuedTaskMutation(client, flags, { kind: "update", taskId: task.taskId, input: patch, ownerHash: task.encrypted.external_chat_lookup_hash ?? void 0 }, scope.teamId) : await client.updateUserTask(task.taskId, patch, { teamId: scope.teamId, personal: scope.personal });
|
|
75929
75881
|
if (!updated) return;
|
|
75930
75882
|
printTaskOutput(await decryptUserTask(updated, masterKey), flags);
|
|
@@ -75934,7 +75886,7 @@ async function handleTasks(client, subcommand, rest, flags, redactor) {
|
|
|
75934
75886
|
rejectRemoteCopyFlags(flags);
|
|
75935
75887
|
const project = await requiredResolvedProject(client, masterKey, requiredStringFlag(rest[1], "<project-id>"), flags);
|
|
75936
75888
|
const task = await requiredResolvedTask(client, masterKey, subcommand, scope, "remove-from-project");
|
|
75937
|
-
const patch = await
|
|
75889
|
+
const patch = await client.prepareUserTaskUpdate(task, { projectIds: removeId(task.linkedProjectIds, project.projectId) }, scope);
|
|
75938
75890
|
const updated = await client.updateUserTask(task.taskId, patch, { teamId: scope.teamId, personal: scope.personal });
|
|
75939
75891
|
printTaskOutput(await decryptUserTask(updated, masterKey), flags);
|
|
75940
75892
|
return;
|
|
@@ -76067,7 +76019,7 @@ async function handleTasks(client, subcommand, rest, flags, redactor) {
|
|
|
76067
76019
|
const id = rest[0];
|
|
76068
76020
|
if (!id) throw new Error("Missing task ID. Usage: openmates tasks edit <task-id> [--title ...]");
|
|
76069
76021
|
const task = await resolveTask(client, masterKey, id, taskEditLookupScope(scope));
|
|
76070
|
-
const patch = await
|
|
76022
|
+
const patch = await client.prepareUserTaskUpdate(task, await resolveTaskUpdateOptions(client, masterKey, flags, {
|
|
76071
76023
|
title: typeof flags.title === "string" ? flags.title : void 0,
|
|
76072
76024
|
description: typeof flags.description === "string" ? flags.description : void 0,
|
|
76073
76025
|
labels: flags.label || flags.labels || flags.tag || flags.tags ? labelFlags(flags) : void 0,
|
|
@@ -76081,7 +76033,7 @@ async function handleTasks(client, subcommand, rest, flags, redactor) {
|
|
|
76081
76033
|
planId: flags.plan === true ? null : typeof flags.plan === "string" ? flags.plan : void 0,
|
|
76082
76034
|
priority: typeof flags.priority === "string" ? normalizeTaskPriority(flags.priority) : void 0,
|
|
76083
76035
|
slug: typeof flags.slug === "string" ? flags.slug : void 0
|
|
76084
|
-
}));
|
|
76036
|
+
}), scope);
|
|
76085
76037
|
const updated = flags["delivery-id"] ? await queuedTaskMutation(client, flags, { kind: "update", taskId: task.taskId, input: patch, ownerHash: task.encrypted.external_chat_lookup_hash ?? void 0 }, scope.teamId) : await client.updateUserTask(task.taskId, patch, { teamId: scope.teamId, personal: scope.personal });
|
|
76086
76038
|
if (updated) printTaskOutput(await decryptUserTask(updated, masterKey), flags);
|
|
76087
76039
|
return;
|
|
@@ -456,6 +456,116 @@ interface ProtonLocalConnectorRegistration {
|
|
|
456
456
|
};
|
|
457
457
|
}
|
|
458
458
|
|
|
459
|
+
declare const PRIORITY_LEVELS: readonly ["none", "low", "medium", "high", "urgent"];
|
|
460
|
+
type TaskPriorityLevel = typeof PRIORITY_LEVELS[number];
|
|
461
|
+
interface DecryptedUserTask {
|
|
462
|
+
taskId: string;
|
|
463
|
+
source?: string;
|
|
464
|
+
projectionKind?: string | null;
|
|
465
|
+
workflowId?: string | null;
|
|
466
|
+
workflowRunId?: string | null;
|
|
467
|
+
triggerId?: string | null;
|
|
468
|
+
canCancel?: boolean;
|
|
469
|
+
canDelete?: boolean;
|
|
470
|
+
shortId: string;
|
|
471
|
+
slug: string;
|
|
472
|
+
title: string;
|
|
473
|
+
description: string;
|
|
474
|
+
labels: string[];
|
|
475
|
+
tags: string[];
|
|
476
|
+
latestInstruction: string;
|
|
477
|
+
status: UserTaskStatus;
|
|
478
|
+
assigneeType: UserTaskAssigneeType;
|
|
479
|
+
assigneeIdentity: UserTaskAssigneeIdentity | null;
|
|
480
|
+
assigneeHash: string | null;
|
|
481
|
+
primaryChatId: string | null;
|
|
482
|
+
externalChat: ExternalChatContext | null;
|
|
483
|
+
linkedProjectIds: string[];
|
|
484
|
+
planId: string | null;
|
|
485
|
+
dueAt: number | null;
|
|
486
|
+
priority: number;
|
|
487
|
+
priorityLevel: TaskPriorityLevel;
|
|
488
|
+
position: number;
|
|
489
|
+
queueState: string;
|
|
490
|
+
blockedReasonCode: string | null;
|
|
491
|
+
blockedReason: string;
|
|
492
|
+
aiExecutionState: string | null;
|
|
493
|
+
readOnly?: boolean;
|
|
494
|
+
version: number;
|
|
495
|
+
encrypted: UserTaskRecord;
|
|
496
|
+
}
|
|
497
|
+
interface TaskActivityCreateOptions {
|
|
498
|
+
entryId?: string;
|
|
499
|
+
message: string;
|
|
500
|
+
embedRefs?: string[];
|
|
501
|
+
embedKeyMaterial?: string;
|
|
502
|
+
createdAt?: number;
|
|
503
|
+
}
|
|
504
|
+
interface DecryptedTaskActivityEntry {
|
|
505
|
+
entryId: string;
|
|
506
|
+
taskId: string;
|
|
507
|
+
kind: UserTaskActivityRecord["kind"];
|
|
508
|
+
actorType: string;
|
|
509
|
+
actorHash: string;
|
|
510
|
+
actorIdentity: UserTaskAssigneeIdentity | null;
|
|
511
|
+
actorDisplayName: string | null;
|
|
512
|
+
actorProfileImageUrl: string | null;
|
|
513
|
+
authorHash: string | null;
|
|
514
|
+
eventType: string;
|
|
515
|
+
sourceSurface: string;
|
|
516
|
+
previousStatus: UserTaskStatus | null;
|
|
517
|
+
nextStatus: UserTaskStatus | null;
|
|
518
|
+
createdAt: number;
|
|
519
|
+
deletedAt: number | null;
|
|
520
|
+
deletedByHash: string | null;
|
|
521
|
+
deletedByDisplayName: string | null;
|
|
522
|
+
message?: string;
|
|
523
|
+
embedKeyMaterial?: string;
|
|
524
|
+
embedRefs: string[];
|
|
525
|
+
}
|
|
526
|
+
interface TaskCreateOptions {
|
|
527
|
+
/** Stable ID is used only by validated local recovery restoration. */
|
|
528
|
+
taskId?: string;
|
|
529
|
+
title: string;
|
|
530
|
+
description?: string;
|
|
531
|
+
labels?: string[];
|
|
532
|
+
tags?: string[];
|
|
533
|
+
status?: UserTaskStatus;
|
|
534
|
+
assign?: string;
|
|
535
|
+
chatId?: string | null;
|
|
536
|
+
externalChat?: ExternalChatContext;
|
|
537
|
+
projectIds?: string[];
|
|
538
|
+
planId?: string | null;
|
|
539
|
+
dueAt?: number | null;
|
|
540
|
+
priority?: TaskPriorityLevel | number | null;
|
|
541
|
+
slug?: string;
|
|
542
|
+
}
|
|
543
|
+
interface TaskUpdateOptions {
|
|
544
|
+
title?: string;
|
|
545
|
+
description?: string;
|
|
546
|
+
labels?: string[];
|
|
547
|
+
tags?: string[];
|
|
548
|
+
addLabels?: string[];
|
|
549
|
+
addTags?: string[];
|
|
550
|
+
removeLabels?: string[];
|
|
551
|
+
removeTags?: string[];
|
|
552
|
+
status?: UserTaskStatus;
|
|
553
|
+
assign?: string;
|
|
554
|
+
chatId?: string | null;
|
|
555
|
+
externalChat?: ExternalChatContext;
|
|
556
|
+
projectIds?: string[];
|
|
557
|
+
planId?: string | null;
|
|
558
|
+
priority?: TaskPriorityLevel | number | null;
|
|
559
|
+
slug?: string;
|
|
560
|
+
}
|
|
561
|
+
interface ExternalChatRef {
|
|
562
|
+
provider: "codex" | "opencode";
|
|
563
|
+
id: string;
|
|
564
|
+
}
|
|
565
|
+
interface ExternalChatContext extends ExternalChatRef {
|
|
566
|
+
title?: string;
|
|
567
|
+
}
|
|
568
|
+
|
|
459
569
|
interface CliSubChatRequest {
|
|
460
570
|
id?: string;
|
|
461
571
|
chat_id?: string;
|
|
@@ -900,6 +1010,7 @@ interface UserTaskRecord {
|
|
|
900
1010
|
external_chat_lookup_hash?: string | null;
|
|
901
1011
|
encrypted_external_chat_id?: string | null;
|
|
902
1012
|
encrypted_external_chat_title?: string | null;
|
|
1013
|
+
key_wrappers?: Array<Record<string, unknown>>;
|
|
903
1014
|
linked_project_ids?: string[] | null;
|
|
904
1015
|
linked_project_hashes?: string[] | null;
|
|
905
1016
|
parent_task_id?: string | null;
|
|
@@ -2467,6 +2578,8 @@ declare class OpenMatesClient {
|
|
|
2467
2578
|
contextChatId?: string | null;
|
|
2468
2579
|
projectIds?: string[];
|
|
2469
2580
|
}): Promise<UserTaskProposalRecord[]>;
|
|
2581
|
+
/** Resolve membership-authorized Project keys before replacing task wrappers. */
|
|
2582
|
+
prepareUserTaskUpdate(task: DecryptedUserTask, input: TaskUpdateOptions, context?: TeamContextOptions): Promise<UserTaskUpdateInput>;
|
|
2470
2583
|
updateUserTask(taskId: string, input: UserTaskUpdateInput, context?: TeamContextOptions): Promise<UserTaskRecord>;
|
|
2471
2584
|
startUserTaskWithAI(taskId: string, input: UserTaskStartAIInput): Promise<UserTaskRecord>;
|
|
2472
2585
|
deleteUserTask(taskId: string, version: number): Promise<{
|
|
@@ -2903,4 +3016,4 @@ declare function serializeToYaml(data: Record<string, unknown>, indent?: number)
|
|
|
2903
3016
|
/** Map language identifier to file extension for code embed downloads. */
|
|
2904
3017
|
declare function getExtForLang(language: string): string;
|
|
2905
3018
|
|
|
2906
|
-
export { type
|
|
3019
|
+
export { type ChatListPage as $, type WorkflowRunContentRetention as A, type WorkflowRunDetail as B, type WorkflowRunCancellationResult as C, type DecryptedUserTask as D, type ExternalChatContext as E, type WorkflowTemplateProjectionUpsertParams as F, type WorkflowTemplateProjectionResult as G, type PublicWorkflowTemplateProjection as H, type WorkflowTemplateProjectionRevocationResult as I, type WorkflowTemplateBindingCompletionParams as J, type WorkflowTemplateBindingCompletionResult as K, type WorkflowTemplateShortUrlParams as L, type WorkflowTemplateShortUrlResult as M, type WorkflowTemplateImportPayload as N, type ImportedWorkflowTemplate as O, type ProjectItemRecord as P, type AuthMethodsStatus as Q, type AuthoritativeChatReconciliation as R, type ShortUrlRevokeResult as S, type TaskCreateOptions as T, type UserPlanStatus as U, type BackupCodesResult as V, type WorkflowSummary as W, type BankTransferOrderDetails as X, type BankTransferStatus as Y, type CachedChat as Z, type CachedNewChatSuggestion as _, type UserPlanRecord as a, type CliSignupResult as a0, type DecryptedDraft as a1, type DecryptedEmbed as a2, type DecryptedMemoryEntry as a3, type DecryptedMessage as a4, type DecryptedNewChatSuggestion as a5, type DocsFile as a6, type DocsFolder as a7, type DocsSearchResult as a8, type DocsTree as a9, normalizeInterestTagIds as aA, reconcileAuthoritativeChats as aB, serializeToYaml as aC, assertTrustedAccountCommandAllowed as aD, assertTrustedAccountGuardEnvironment as aE, buildTravelConnectionsRequest as aF, printWhoAmI as aG, requireExactConfirmation as aH, resolveProjectContext as aI, shouldRequireTrustedAccountGuard as aJ, type EncryptedDraft as aa, type GiftCardBankTransferStatus as ab, INTEREST_TAG_IDS as ac, type ImagesAiDetectionClassification as ad, type ImagesAiDetectionSummary as ae, type InterestTagId as af, MATE_NAMES as ag, MEMORY_TYPE_REGISTRY as ah, type MemoryFieldDef as ai, type MemoryTypeDef as aj, OpenMatesClient as ak, type OpenMatesClientOptions as al, type OpenMatesSession as am, type SyncCache as an, type TopicPreferencesPayload as ao, type TotpSetupStartResult as ap, type WorkflowEdge as aq, type WorkflowNode as ar, type WorkflowNodeRun as as, type WorkflowNodeType as at, type WorkflowRunContentStorage as au, buildImagesAiDetectionSummary as av, classifyImagesAiDetection as aw, deriveAppUrl as ax, formatImagesAiDetectionLabel as ay, getExtForLang as az, type UserPlanVerificationStatus as b, type UserPlanLearningType as c, type UserPlanLearningTargetKind as d, type UserPlanLearningStatus as e, type UserPlanLearningLevel as f, type UserPlanLearningRecord as g, type UserPlanCriterionRecord as h, type UserPlanVerificationRecord as i, type UserPlanCreateInput as j, type UserPlanUpdateInput as k, type TaskUpdateOptions as l, type UserPlanLearningCreateTasksInput as m, type UserPlanLearningCreateTasksResult as n, type UserTaskStatus as o, type TaskPriorityLevel as p, type DecryptedTaskActivityEntry as q, type TaskActivityCreateOptions as r, type UserTaskReorderInput as s, type WorkflowCapability as t, type WorkflowDetail as u, type WorkflowInputStartParams as v, type WorkflowInputSessionResult as w, type WorkflowInputSessionDetail as x, type WorkflowInputEvent as y, type WorkflowGraph as z };
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export {
|
|
2
|
+
export { ad as ImagesAiDetectionClassification, ae as ImagesAiDetectionSummary, aD as assertTrustedAccountCommandAllowed, aE as assertTrustedAccountGuardEnvironment, av as buildImagesAiDetectionSummary, aF as buildTravelConnectionsRequest, aw as classifyImagesAiDetection, ay as formatImagesAiDetectionLabel, az as getExtForLang, aG as printWhoAmI, aH as requireExactConfirmation, aI as resolveProjectContext, aC as serializeToYaml, aJ as shouldRequireTrustedAccountGuard } from './cli-v2gypIXn.js';
|
package/dist/cli.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { U as
|
|
2
|
-
export {
|
|
1
|
+
import { 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, 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 WorkflowInputStartParams, w as WorkflowInputSessionResult, x as WorkflowInputSessionDetail, y as WorkflowInputEvent, z as WorkflowGraph, A as WorkflowRunContentRetention, B as WorkflowRunDetail, C as WorkflowRunCancellationResult, F as WorkflowTemplateProjectionUpsertParams, G as WorkflowTemplateProjectionResult, H as PublicWorkflowTemplateProjection, I as WorkflowTemplateProjectionRevocationResult, J as WorkflowTemplateBindingCompletionParams, K as WorkflowTemplateBindingCompletionResult, L as WorkflowTemplateShortUrlParams, M as WorkflowTemplateShortUrlResult, S as ShortUrlRevokeResult, N as WorkflowTemplateImportPayload, O as ImportedWorkflowTemplate } from './cli-v2gypIXn.js';
|
|
2
|
+
export { Q as AuthMethodsStatus, R as AuthoritativeChatReconciliation, V as BackupCodesResult, X as BankTransferOrderDetails, Y as BankTransferStatus, Z as CachedChat, _ as CachedNewChatSuggestion, $ as ChatListPage, a0 as CliSignupResult, a1 as DecryptedDraft, a2 as DecryptedEmbed, a3 as DecryptedMemoryEntry, a4 as DecryptedMessage, a5 as DecryptedNewChatSuggestion, a6 as DocsFile, a7 as DocsFolder, a8 as DocsSearchResult, a9 as DocsTree, aa as EncryptedDraft, ab as GiftCardBankTransferStatus, ac as INTEREST_TAG_IDS, ad as ImagesAiDetectionClassification, ae as ImagesAiDetectionSummary, af as InterestTagId, ag as MATE_NAMES, ah as MEMORY_TYPE_REGISTRY, ai as MemoryFieldDef, aj as MemoryTypeDef, ak as OpenMatesClient, al as OpenMatesClientOptions, am as OpenMatesSession, an as SyncCache, ao as TopicPreferencesPayload, ap as TotpSetupStartResult, aq as WorkflowEdge, ar as WorkflowNode, as as WorkflowNodeRun, at as WorkflowNodeType, au as WorkflowRunContentStorage, av as buildImagesAiDetectionSummary, aw as classifyImagesAiDetection, ax as deriveAppUrl, ay as formatImagesAiDetectionLabel, az as getExtForLang, aA as normalizeInterestTagIds, aB as reconcileAuthoritativeChats, aC as serializeToYaml } from './cli-v2gypIXn.js';
|
|
3
3
|
|
|
4
4
|
interface ProjectedAssistantSpeechSegment {
|
|
5
5
|
sequence: number;
|
|
@@ -3903,116 +3903,6 @@ interface ParsedAccountImport {
|
|
|
3903
3903
|
skippedDomains: string[];
|
|
3904
3904
|
}
|
|
3905
3905
|
|
|
3906
|
-
declare const PRIORITY_LEVELS: readonly ["none", "low", "medium", "high", "urgent"];
|
|
3907
|
-
type TaskPriorityLevel = typeof PRIORITY_LEVELS[number];
|
|
3908
|
-
interface DecryptedUserTask {
|
|
3909
|
-
taskId: string;
|
|
3910
|
-
source?: string;
|
|
3911
|
-
projectionKind?: string | null;
|
|
3912
|
-
workflowId?: string | null;
|
|
3913
|
-
workflowRunId?: string | null;
|
|
3914
|
-
triggerId?: string | null;
|
|
3915
|
-
canCancel?: boolean;
|
|
3916
|
-
canDelete?: boolean;
|
|
3917
|
-
shortId: string;
|
|
3918
|
-
slug: string;
|
|
3919
|
-
title: string;
|
|
3920
|
-
description: string;
|
|
3921
|
-
labels: string[];
|
|
3922
|
-
tags: string[];
|
|
3923
|
-
latestInstruction: string;
|
|
3924
|
-
status: UserTaskStatus;
|
|
3925
|
-
assigneeType: UserTaskAssigneeType;
|
|
3926
|
-
assigneeIdentity: UserTaskAssigneeIdentity | null;
|
|
3927
|
-
assigneeHash: string | null;
|
|
3928
|
-
primaryChatId: string | null;
|
|
3929
|
-
externalChat: ExternalChatContext | null;
|
|
3930
|
-
linkedProjectIds: string[];
|
|
3931
|
-
planId: string | null;
|
|
3932
|
-
dueAt: number | null;
|
|
3933
|
-
priority: number;
|
|
3934
|
-
priorityLevel: TaskPriorityLevel;
|
|
3935
|
-
position: number;
|
|
3936
|
-
queueState: string;
|
|
3937
|
-
blockedReasonCode: string | null;
|
|
3938
|
-
blockedReason: string;
|
|
3939
|
-
aiExecutionState: string | null;
|
|
3940
|
-
readOnly?: boolean;
|
|
3941
|
-
version: number;
|
|
3942
|
-
encrypted: UserTaskRecord;
|
|
3943
|
-
}
|
|
3944
|
-
interface TaskActivityCreateOptions {
|
|
3945
|
-
entryId?: string;
|
|
3946
|
-
message: string;
|
|
3947
|
-
embedRefs?: string[];
|
|
3948
|
-
embedKeyMaterial?: string;
|
|
3949
|
-
createdAt?: number;
|
|
3950
|
-
}
|
|
3951
|
-
interface DecryptedTaskActivityEntry {
|
|
3952
|
-
entryId: string;
|
|
3953
|
-
taskId: string;
|
|
3954
|
-
kind: UserTaskActivityRecord["kind"];
|
|
3955
|
-
actorType: string;
|
|
3956
|
-
actorHash: string;
|
|
3957
|
-
actorIdentity: UserTaskAssigneeIdentity | null;
|
|
3958
|
-
actorDisplayName: string | null;
|
|
3959
|
-
actorProfileImageUrl: string | null;
|
|
3960
|
-
authorHash: string | null;
|
|
3961
|
-
eventType: string;
|
|
3962
|
-
sourceSurface: string;
|
|
3963
|
-
previousStatus: UserTaskStatus | null;
|
|
3964
|
-
nextStatus: UserTaskStatus | null;
|
|
3965
|
-
createdAt: number;
|
|
3966
|
-
deletedAt: number | null;
|
|
3967
|
-
deletedByHash: string | null;
|
|
3968
|
-
deletedByDisplayName: string | null;
|
|
3969
|
-
message?: string;
|
|
3970
|
-
embedKeyMaterial?: string;
|
|
3971
|
-
embedRefs: string[];
|
|
3972
|
-
}
|
|
3973
|
-
interface TaskCreateOptions {
|
|
3974
|
-
/** Stable ID is used only by validated local recovery restoration. */
|
|
3975
|
-
taskId?: string;
|
|
3976
|
-
title: string;
|
|
3977
|
-
description?: string;
|
|
3978
|
-
labels?: string[];
|
|
3979
|
-
tags?: string[];
|
|
3980
|
-
status?: UserTaskStatus;
|
|
3981
|
-
assign?: string;
|
|
3982
|
-
chatId?: string | null;
|
|
3983
|
-
externalChat?: ExternalChatContext;
|
|
3984
|
-
projectIds?: string[];
|
|
3985
|
-
planId?: string | null;
|
|
3986
|
-
dueAt?: number | null;
|
|
3987
|
-
priority?: TaskPriorityLevel | number | null;
|
|
3988
|
-
slug?: string;
|
|
3989
|
-
}
|
|
3990
|
-
interface TaskUpdateOptions {
|
|
3991
|
-
title?: string;
|
|
3992
|
-
description?: string;
|
|
3993
|
-
labels?: string[];
|
|
3994
|
-
tags?: string[];
|
|
3995
|
-
addLabels?: string[];
|
|
3996
|
-
addTags?: string[];
|
|
3997
|
-
removeLabels?: string[];
|
|
3998
|
-
removeTags?: string[];
|
|
3999
|
-
status?: UserTaskStatus;
|
|
4000
|
-
assign?: string;
|
|
4001
|
-
chatId?: string | null;
|
|
4002
|
-
externalChat?: ExternalChatContext;
|
|
4003
|
-
projectIds?: string[];
|
|
4004
|
-
planId?: string | null;
|
|
4005
|
-
priority?: TaskPriorityLevel | number | null;
|
|
4006
|
-
slug?: string;
|
|
4007
|
-
}
|
|
4008
|
-
interface ExternalChatRef {
|
|
4009
|
-
provider: "codex" | "opencode";
|
|
4010
|
-
id: string;
|
|
4011
|
-
}
|
|
4012
|
-
interface ExternalChatContext extends ExternalChatRef {
|
|
4013
|
-
title?: string;
|
|
4014
|
-
}
|
|
4015
|
-
|
|
4016
3906
|
type UserPlanEvidenceReference = {
|
|
4017
3907
|
kind: "embed";
|
|
4018
3908
|
embed_id: string;
|
|
@@ -5530,4 +5420,4 @@ type AssistantFeedbackDecision = {
|
|
|
5530
5420
|
};
|
|
5531
5421
|
declare function buildAssistantFeedbackDecision(rating: number): AssistantFeedbackDecision;
|
|
5532
5422
|
|
|
5533
|
-
export { APP_SKILL_METADATA, ASSISTANT_FEEDBACK_REPORT_TITLE, ASSISTANT_FEEDBACK_THANKS, type ApiKeyCreateOptions, type ApiKeyCreateResult, type ApiKeyRecord, type AssistantFeedbackDecision, type ChatCreateOptions, type ChatListOptions, type ChatResponse,
|
|
5423
|
+
export { APP_SKILL_METADATA, ASSISTANT_FEEDBACK_REPORT_TITLE, ASSISTANT_FEEDBACK_THANKS, type ApiKeyCreateOptions, type ApiKeyCreateResult, type ApiKeyRecord, type AssistantFeedbackDecision, type ChatCreateOptions, type ChatListOptions, type ChatResponse, DecryptedUserTask, type DesignIconExportFormat, type DesignIconExportOptions, type DesignIconExportResult, type DraftRecord, type EncryptedChatMetadata, type EncryptedDraftRecord, type FocusModeSelection, type IdeaBucketAddInput, type IdeaBucketProcessOptions, type IdeaBucketResult, type IdeaBucketSettings, type IdeaBucketSettingsInput, OpenMates, OpenMatesApiError, OpenMatesConfigError, type OpenMatesOptions, type PlanPlainCreateOptions, type PlanPlainUpdateOptions, type PlanRecord, type ProjectPlainCreateOptions, type ProjectPlainUpdateOptions, type ProjectRecordPlain, SUPPORT_URL, type TaskListFilters, type TaskPlainCreateOptions, type TaskPlainUpdateOptions, type TaskRecord, WorkflowCapability, WorkflowDetail, WorkflowGraph, WorkflowRunContentRetention, WorkflowRunDetail, WorkflowSummary, buildAssistantFeedbackDecision, buildCreatePlanCriterionInput, buildCreatePlanLearningInput, buildCreatePlanVerificationInput, buildCreateUserPlanInput, buildPlanVerificationEvidenceInput, buildUpdatePlanLearningInput, buildUpdatePlanVerificationInput, buildUpdateUserPlanInput, decryptPlanLearning, decryptPlanLearnings, decryptUserPlan, decryptUserPlans, defaultCloneBranchForVersion, findPlan, findPlanLearning, projectAssistantSpeech, renderPlanDetail, renderPlanLearningDetail, renderPlanLearningList, renderPlanList, renderSupportInfo, selectAssistantMessagesForSpeech, summarizeAssistantSpeech };
|
package/dist/index.js
CHANGED