@mosse-ai/cli 0.1.2 → 0.1.4
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/index.js +190 -7
- package/package.json +3 -3
- package/skill/SKILL.md +1 -1
package/dist/index.js
CHANGED
|
@@ -48,6 +48,9 @@ var exact = {
|
|
|
48
48
|
"/v1/my/scope-overview": ["GET"],
|
|
49
49
|
"/v1/my/keychain/overview": ["GET"],
|
|
50
50
|
"/v1/connections": ["GET", "POST"],
|
|
51
|
+
"/v1/github/app/install": ["POST"],
|
|
52
|
+
"/v1/github/app/bind/start": ["POST"],
|
|
53
|
+
"/v1/github/app/installations": ["GET"],
|
|
51
54
|
"/v1/connections-maintained": ["GET"],
|
|
52
55
|
"/v1/my/keychain/drops": ["POST"],
|
|
53
56
|
"/v1/my/connectors/oauth/status": ["GET"],
|
|
@@ -189,6 +192,36 @@ var patterns = [
|
|
|
189
192
|
methods: ["GET", "DELETE"],
|
|
190
193
|
sample: "/v1/my/scope-skills/sk-1"
|
|
191
194
|
},
|
|
195
|
+
{
|
|
196
|
+
pattern: /^\/v1\/github\/app\/installations\/[A-Za-z0-9_-]+$/,
|
|
197
|
+
methods: ["DELETE"],
|
|
198
|
+
sample: "/v1/github/app/installations/c-1"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
pattern: /^\/v1\/github\/app\/repositories\/[A-Za-z0-9_-]+\/branches$/,
|
|
202
|
+
methods: ["GET"],
|
|
203
|
+
sample: "/v1/github/app/repositories/r-1/branches"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
pattern: /^\/v1\/github\/app\/repositories\/[A-Za-z0-9_-]+\/policy$/,
|
|
207
|
+
methods: ["PUT"],
|
|
208
|
+
sample: "/v1/github/app/repositories/r-1/policy"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
pattern: /^\/v1\/github\/app\/repositories\/[A-Za-z0-9_-]+\/grants$/,
|
|
212
|
+
methods: ["PUT"],
|
|
213
|
+
sample: "/v1/github/app/repositories/r-1/grants"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
pattern: /^\/v1\/github\/app\/installations\/[A-Za-z0-9_-]+\/repositories$/,
|
|
217
|
+
methods: ["GET"],
|
|
218
|
+
sample: "/v1/github/app/installations/c-1/repositories"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
pattern: /^\/v1\/github\/app\/installations\/[A-Za-z0-9_-]+\/refresh$/,
|
|
222
|
+
methods: ["POST"],
|
|
223
|
+
sample: "/v1/github/app/installations/c-1/refresh"
|
|
224
|
+
},
|
|
192
225
|
{
|
|
193
226
|
pattern: /^\/v1\/connections\/[A-Za-z0-9_-]+\/rotate$/,
|
|
194
227
|
methods: ["POST"],
|
|
@@ -21264,7 +21297,7 @@ function actionOf(id) {
|
|
|
21264
21297
|
return id.slice(id.indexOf(".") + 1);
|
|
21265
21298
|
}
|
|
21266
21299
|
function patScopeOf(spec) {
|
|
21267
|
-
return `${domainOf(spec.id)}:${spec.effect === "read" ? "read" : "write"}`;
|
|
21300
|
+
return spec.patScope ?? `${domainOf(spec.id)}:${spec.effect === "read" ? "read" : "write"}`;
|
|
21268
21301
|
}
|
|
21269
21302
|
function mcpToolNameOf(spec) {
|
|
21270
21303
|
return spec.mcpName ?? spec.id.replace(".", "_");
|
|
@@ -21308,6 +21341,14 @@ function registryProblems(specs) {
|
|
|
21308
21341
|
if (mcpNames.has(mcp))
|
|
21309
21342
|
problems6.push(`${s.id}: duplicate MCP tool name ${mcp}`);
|
|
21310
21343
|
mcpNames.add(mcp);
|
|
21344
|
+
if (s.patScope) {
|
|
21345
|
+
if (!s.patScope.startsWith(`${domainOf(s.id)}:`))
|
|
21346
|
+
problems6.push(`${s.id}: patScope ${s.patScope} must stay in domain ${domainOf(s.id)}`);
|
|
21347
|
+
if (!/^[a-z]+:(read|write|admin)$/.test(s.patScope))
|
|
21348
|
+
problems6.push(`${s.id}: invalid patScope ${s.patScope}`);
|
|
21349
|
+
if (s.effect === "read" && s.patScope !== `${domainOf(s.id)}:read`)
|
|
21350
|
+
problems6.push(`${s.id}: read capabilities cannot use patScope ${s.patScope}`);
|
|
21351
|
+
}
|
|
21311
21352
|
if (s.principals && s.principals.length < 2 && !s.reason)
|
|
21312
21353
|
problems6.push(`${s.id}: narrowed principals need a reason`);
|
|
21313
21354
|
if (s.runScoped && (s.principals?.length !== 1 || s.principals[0] !== "agent"))
|
|
@@ -21397,7 +21438,7 @@ var BoardUpdateTask = defineCapability({
|
|
|
21397
21438
|
id: "board.update_task",
|
|
21398
21439
|
summary: "Update task fields.",
|
|
21399
21440
|
usageRules: [
|
|
21400
|
-
"expectedUpdatedAt guards status/assignee/reviewer/
|
|
21441
|
+
"expectedUpdatedAt guards status/assignee/reviewer/due fields; always pass it. Others: last-write-wins, reread first. todos/acceptanceChecks REPLACE the whole list (max 50 each): read full/fields; retain items with IDs, new items without IDs; omissions delete. Tick via {{board.check_todo}}. Unchecked todos block review/done. Project completion/review rules apply. Done: {{board.reopen_task}} first. Scheduling: dueTime needs dueDate; durationMin needs dueTime; clearing dueDate clears both.",
|
|
21401
21442
|
{ text: "A project admin other than the assignee can override designated review.", principal: "human" },
|
|
21402
21443
|
{ text: "Cannot mark your assigned task done; a person confirms.", principal: "agent" }
|
|
21403
21444
|
],
|
|
@@ -21411,6 +21452,18 @@ var BoardUpdateTask = defineCapability({
|
|
|
21411
21452
|
assignee: memberRef.nullable().optional(),
|
|
21412
21453
|
reviewer: memberRef.nullable().optional(),
|
|
21413
21454
|
dueDate: external_exports.string().nullable().optional(),
|
|
21455
|
+
/** 钟点 "HH:MM"(本地墙上时间;要求 dueDate 非空)。 */
|
|
21456
|
+
dueTime: external_exports.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/).nullable().optional(),
|
|
21457
|
+
/** 预计时长(分钟,1–10080;要求 dueTime 非空)。 */
|
|
21458
|
+
durationMin: external_exports.number().int().min(1).max(10080).nullable().optional(),
|
|
21459
|
+
/** 重复预设:完成时生成下一次(同一套 task,不另建实体)。 */
|
|
21460
|
+
recurrence: external_exports.enum(["daily", "weekly", "monthly"]).nullable().optional(),
|
|
21461
|
+
/** 重复结束日期(YYYY-MM-DD,含当天)。 */
|
|
21462
|
+
recurrenceUntil: external_exports.string().date().nullable().optional(),
|
|
21463
|
+
/** 到点提醒提前量(分钟;0 = 准点,5/10/15/30/60/120)。 */
|
|
21464
|
+
reminderLeadMin: external_exports.union([external_exports.literal(0), external_exports.literal(5), external_exports.literal(10), external_exports.literal(15), external_exports.literal(30), external_exports.literal(60), external_exports.literal(120)]).optional(),
|
|
21465
|
+
/** 跳过一次重复:当前任务置 canceled 并生成下一次(不能与 status 同时给)。 */
|
|
21466
|
+
skipOccurrence: external_exports.boolean().optional(),
|
|
21414
21467
|
todos: todoItems.optional(),
|
|
21415
21468
|
acceptanceChecks: acceptanceCheckItems.optional(),
|
|
21416
21469
|
/** 管理员绕过(完成规则 v2 §3:档 3 只绕过「只有审阅人能通过」;项目管理员、本人不是负责人;原因选填)。Agent 一律拒(策略表)。 */
|
|
@@ -21476,7 +21529,7 @@ var BoardCreateTask = defineCapability({
|
|
|
21476
21529
|
id: "board.create_task",
|
|
21477
21530
|
summary: "Create one backlog/todo task.",
|
|
21478
21531
|
usageRules: [
|
|
21479
|
-
"Reuse clientId. parentTaskId: same-project
|
|
21532
|
+
"Reuse clientId. parentTaskId: same-project, one level. Scheduling: dueTime needs dueDate; durationMin needs dueTime; recurrence (daily/weekly/monthly) spawns next on completion; recurrenceUntil caps. Todos/checks/labels/links/deps via their actions.",
|
|
21480
21533
|
{
|
|
21481
21534
|
text: "Prefer {{board.create_tasks}} for discussed work; partner confirms.",
|
|
21482
21535
|
principal: "agent"
|
|
@@ -21491,6 +21544,18 @@ var BoardCreateTask = defineCapability({
|
|
|
21491
21544
|
reviewer: memberRef.nullable().optional(),
|
|
21492
21545
|
priority: external_exports.enum(TASK_PRIORITIES).optional(),
|
|
21493
21546
|
dueDate: external_exports.string().nullable().optional(),
|
|
21547
|
+
/** 钟点 "HH:MM"(本地墙上时间;要求 dueDate 非空)。 */
|
|
21548
|
+
dueTime: external_exports.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/).nullable().optional(),
|
|
21549
|
+
/** 预计时长(分钟,1–10080;要求 dueTime 非空)。 */
|
|
21550
|
+
durationMin: external_exports.number().int().min(1).max(10080).nullable().optional(),
|
|
21551
|
+
/** 重复预设(MD-512 P3):daily / weekly / monthly;完成时生成下一次。 */
|
|
21552
|
+
recurrence: external_exports.enum(["daily", "weekly", "monthly"]).nullable().optional(),
|
|
21553
|
+
/** 重复结束日期(YYYY-MM-DD,含当天)。 */
|
|
21554
|
+
recurrenceUntil: external_exports.string().date().nullable().optional(),
|
|
21555
|
+
/** 到点提醒提前量(分钟;0 = 准点)。 */
|
|
21556
|
+
reminderLeadMin: external_exports.union([external_exports.literal(0), external_exports.literal(5), external_exports.literal(10), external_exports.literal(15), external_exports.literal(30), external_exports.literal(60), external_exports.literal(120)]).optional(),
|
|
21557
|
+
/** 跳过一次重复(当前任务置 canceled 并生成下一次;不能与 status 同时给)。 */
|
|
21558
|
+
skipOccurrence: external_exports.boolean().optional(),
|
|
21494
21559
|
parentTaskId: uuid8.nullable().optional(),
|
|
21495
21560
|
clientId: external_exports.string().max(200).nullable().optional(),
|
|
21496
21561
|
/** 来源消息(任务回链到它,进展回到它的 thread)。系统内 Agent 不给,由会话派生(与 create_tasks 同一规则)。 */
|
|
@@ -21536,6 +21601,21 @@ var BoardCreateTasks = defineCapability({
|
|
|
21536
21601
|
title: external_exports.string(),
|
|
21537
21602
|
description: external_exports.string().optional(),
|
|
21538
21603
|
priority: external_exports.enum(TASK_PRIORITIES).optional(),
|
|
21604
|
+
/** 每张任务各自的时间(与 create_task 同一套字段/约束)。 */
|
|
21605
|
+
dueDate: external_exports.string().nullable().optional(),
|
|
21606
|
+
dueTime: external_exports.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/).nullable().optional(),
|
|
21607
|
+
durationMin: external_exports.number().int().min(1).max(10080).nullable().optional(),
|
|
21608
|
+
recurrence: external_exports.enum(["daily", "weekly", "monthly"]).nullable().optional(),
|
|
21609
|
+
recurrenceUntil: external_exports.string().date().nullable().optional(),
|
|
21610
|
+
reminderLeadMin: external_exports.union([
|
|
21611
|
+
external_exports.literal(0),
|
|
21612
|
+
external_exports.literal(5),
|
|
21613
|
+
external_exports.literal(10),
|
|
21614
|
+
external_exports.literal(15),
|
|
21615
|
+
external_exports.literal(30),
|
|
21616
|
+
external_exports.literal(60),
|
|
21617
|
+
external_exports.literal(120)
|
|
21618
|
+
]).optional(),
|
|
21539
21619
|
todos: external_exports.array(external_exports.strictObject({ text: external_exports.string() })).optional(),
|
|
21540
21620
|
acceptanceChecks: external_exports.array(external_exports.strictObject({ desc: external_exports.string() })).optional(),
|
|
21541
21621
|
dependsOn: external_exports.array(external_exports.number().int().min(0)).optional(),
|
|
@@ -22351,6 +22431,7 @@ var KnowledgePurgeKb = defineCapability({
|
|
|
22351
22431
|
summary: "Permanently delete an archived knowledge base with its documents and sharing. This cannot be undone. For in-product agents: this always asks the person you are talking with to confirm.",
|
|
22352
22432
|
input: external_exports.strictObject({ kbId }),
|
|
22353
22433
|
effect: "destructive",
|
|
22434
|
+
patScope: "knowledge:admin",
|
|
22354
22435
|
external: true,
|
|
22355
22436
|
highRisk: "always"
|
|
22356
22437
|
});
|
|
@@ -22359,6 +22440,7 @@ var KnowledgeGrantKb = defineCapability({
|
|
|
22359
22440
|
summary: "Share a knowledge base with a person's personal scope or a channel, for reading or writing. Takes effect immediately; setting it again changes the permission.",
|
|
22360
22441
|
input: external_exports.strictObject({ kbId, granteeScopeId: scopeId, permission: external_exports.enum(["read", "write"]) }),
|
|
22361
22442
|
effect: "write",
|
|
22443
|
+
patScope: "knowledge:admin",
|
|
22362
22444
|
external: true,
|
|
22363
22445
|
highRisk: "always",
|
|
22364
22446
|
idempotent: true
|
|
@@ -22376,6 +22458,7 @@ var KnowledgeAddManager = defineCapability({
|
|
|
22376
22458
|
summary: "Make a person a manager of a shared knowledge base you created. Managers can add files, share it and change its settings; only the creator can add or remove managers, archive or delete it. For in-product agents: this always asks the person you are talking with to confirm.",
|
|
22377
22459
|
input: external_exports.strictObject({ kbId, userId: external_exports.uuid() }),
|
|
22378
22460
|
effect: "write",
|
|
22461
|
+
patScope: "knowledge:admin",
|
|
22379
22462
|
external: true,
|
|
22380
22463
|
highRisk: "always",
|
|
22381
22464
|
idempotent: true
|
|
@@ -22385,6 +22468,7 @@ var KnowledgeRemoveManager = defineCapability({
|
|
|
22385
22468
|
summary: "Stop a person managing a shared knowledge base you created. For in-product agents: this always asks the person you are talking with to confirm.",
|
|
22386
22469
|
input: external_exports.strictObject({ kbId, userId: external_exports.uuid() }),
|
|
22387
22470
|
effect: "write",
|
|
22471
|
+
patScope: "knowledge:admin",
|
|
22388
22472
|
external: true,
|
|
22389
22473
|
highRisk: "always",
|
|
22390
22474
|
idempotent: true
|
|
@@ -22394,6 +22478,7 @@ var KnowledgeRevokeKb = defineCapability({
|
|
|
22394
22478
|
summary: "Stop sharing a knowledge base with a scope. The one it was shared with (yourself, or a channel you manage) can also use this to leave it.",
|
|
22395
22479
|
input: external_exports.strictObject({ kbId, granteeScopeId: scopeId }),
|
|
22396
22480
|
effect: "write",
|
|
22481
|
+
patScope: "knowledge:admin",
|
|
22397
22482
|
external: true,
|
|
22398
22483
|
highRisk: "always",
|
|
22399
22484
|
idempotent: true
|
|
@@ -22456,6 +22541,7 @@ var KnowledgeSetModels = defineCapability({
|
|
|
22456
22541
|
confirmKeyHandoff: external_exports.boolean().optional()
|
|
22457
22542
|
}),
|
|
22458
22543
|
effect: "write",
|
|
22544
|
+
patScope: "knowledge:admin",
|
|
22459
22545
|
external: true,
|
|
22460
22546
|
highRisk: "always",
|
|
22461
22547
|
idempotent: true
|
|
@@ -22562,6 +22648,84 @@ var ChatSetPinBarVisibility = defineCapability({
|
|
|
22562
22648
|
effect: "write",
|
|
22563
22649
|
idempotent: true
|
|
22564
22650
|
});
|
|
22651
|
+
var ChatListChannels = defineCapability({
|
|
22652
|
+
id: "chat.list_channels",
|
|
22653
|
+
summary: "List the channels and one-to-one DMs you belong to, with unread counts, last activity and your role. Start here when you need a channelId for reading or sending messages.",
|
|
22654
|
+
input: external_exports.strictObject({}),
|
|
22655
|
+
effect: "read",
|
|
22656
|
+
idempotent: true,
|
|
22657
|
+
cli: { path: ["chat", "channels"] }
|
|
22658
|
+
});
|
|
22659
|
+
var ChatListMessages = defineCapability({
|
|
22660
|
+
id: "chat.list_messages",
|
|
22661
|
+
summary: "Read a page of messages in a conversation you belong to (oldest first). Page backwards with beforeSeq or catch up with afterSeq; excludeDeleted drops tombstones, topLevelOnly hides thread replies.",
|
|
22662
|
+
input: external_exports.strictObject({
|
|
22663
|
+
channelId: channelId2,
|
|
22664
|
+
beforeSeq: external_exports.number().int().min(0).optional(),
|
|
22665
|
+
afterSeq: external_exports.number().int().min(0).optional(),
|
|
22666
|
+
limit: external_exports.number().int().min(1).max(200).optional(),
|
|
22667
|
+
topLevelOnly: external_exports.boolean().optional()
|
|
22668
|
+
}),
|
|
22669
|
+
effect: "read",
|
|
22670
|
+
idempotent: true,
|
|
22671
|
+
cli: { path: ["chat", "messages", "list"] }
|
|
22672
|
+
});
|
|
22673
|
+
var ChatSearchMessages = defineCapability({
|
|
22674
|
+
id: "chat.search_messages",
|
|
22675
|
+
summary: "Search message text across channels you belong to (optionally limited to one channel). Only messages visible to you are returned; deleted messages are excluded.",
|
|
22676
|
+
input: external_exports.strictObject({
|
|
22677
|
+
q: external_exports.string().trim().min(1).max(200),
|
|
22678
|
+
channelId: channelId2.optional(),
|
|
22679
|
+
limit: external_exports.number().int().min(1).max(100).optional()
|
|
22680
|
+
}),
|
|
22681
|
+
effect: "read",
|
|
22682
|
+
idempotent: true,
|
|
22683
|
+
cli: { path: ["chat", "messages", "search"] }
|
|
22684
|
+
});
|
|
22685
|
+
var ChatSendMessage = defineCapability({
|
|
22686
|
+
id: "chat.send_message",
|
|
22687
|
+
summary: "Send a text message to a conversation you belong to, as the token owner (or as the in-product Agent). Use replyToId to quote a message and threadRootId to reply in a thread. Reuse clientId after an unknown result so a retry does not post twice.",
|
|
22688
|
+
input: external_exports.strictObject({
|
|
22689
|
+
channelId: channelId2,
|
|
22690
|
+
text: external_exports.string().trim().min(1).max(2e4),
|
|
22691
|
+
replyToId: messageId.optional(),
|
|
22692
|
+
threadRootId: messageId.optional(),
|
|
22693
|
+
clientId: external_exports.uuid().optional()
|
|
22694
|
+
}),
|
|
22695
|
+
effect: "write",
|
|
22696
|
+
idempotent: true,
|
|
22697
|
+
cli: { path: ["chat", "messages", "send"] }
|
|
22698
|
+
});
|
|
22699
|
+
var ChatThreadList = defineCapability({
|
|
22700
|
+
id: "chat.thread_list",
|
|
22701
|
+
summary: "Read the replies of a message thread you can see, oldest first. Page with beforeSeq / afterSeq; the thread root message is included.",
|
|
22702
|
+
input: external_exports.strictObject({
|
|
22703
|
+
messageId,
|
|
22704
|
+
beforeSeq: external_exports.number().int().min(0).optional(),
|
|
22705
|
+
afterSeq: external_exports.number().int().min(0).optional(),
|
|
22706
|
+
limit: external_exports.number().int().min(1).max(200).optional(),
|
|
22707
|
+
newestFirst: external_exports.boolean().optional()
|
|
22708
|
+
}),
|
|
22709
|
+
effect: "read",
|
|
22710
|
+
idempotent: true,
|
|
22711
|
+
cli: { path: ["chat", "thread", "list"] }
|
|
22712
|
+
});
|
|
22713
|
+
var ChatAddReaction = defineCapability({
|
|
22714
|
+
id: "chat.add_reaction",
|
|
22715
|
+
summary: "Add an emoji reaction to a visible message as the token owner. Repeating the same reaction is a no-op.",
|
|
22716
|
+
input: external_exports.strictObject({ messageId, emoji: external_exports.string().trim().min(1).max(32) }),
|
|
22717
|
+
effect: "write",
|
|
22718
|
+
idempotent: true,
|
|
22719
|
+
cli: { path: ["chat", "reaction", "add"] }
|
|
22720
|
+
});
|
|
22721
|
+
var ChatRemoveReaction = defineCapability({
|
|
22722
|
+
id: "chat.remove_reaction",
|
|
22723
|
+
summary: "Remove your own emoji reaction from a visible message.",
|
|
22724
|
+
input: external_exports.strictObject({ messageId, emoji: external_exports.string().trim().min(1).max(32) }),
|
|
22725
|
+
effect: "write",
|
|
22726
|
+
idempotent: true,
|
|
22727
|
+
cli: { path: ["chat", "reaction", "remove"] }
|
|
22728
|
+
});
|
|
22565
22729
|
var ChatResolveMessageContext = defineCapability({
|
|
22566
22730
|
id: "chat.resolve_message_context",
|
|
22567
22731
|
summary: "Locate a visible message in a bounded context window (at most 100 messages), including old thread replies. The server resolves its conversation stream and thread root. Follow direction/cursor to extend before or after; never scan every old history page to find the target.",
|
|
@@ -22577,6 +22741,13 @@ var ChatResolveMessageContext = defineCapability({
|
|
|
22577
22741
|
idempotent: true
|
|
22578
22742
|
});
|
|
22579
22743
|
var CHAT_CAPABILITIES = [
|
|
22744
|
+
ChatListChannels,
|
|
22745
|
+
ChatListMessages,
|
|
22746
|
+
ChatSearchMessages,
|
|
22747
|
+
ChatSendMessage,
|
|
22748
|
+
ChatThreadList,
|
|
22749
|
+
ChatAddReaction,
|
|
22750
|
+
ChatRemoveReaction,
|
|
22580
22751
|
ChatListPins,
|
|
22581
22752
|
ChatPinMessage,
|
|
22582
22753
|
ChatUnpinMessage,
|
|
@@ -23159,7 +23330,7 @@ function buildCommandTree(options = {}) {
|
|
|
23159
23330
|
}
|
|
23160
23331
|
|
|
23161
23332
|
// src/api.ts
|
|
23162
|
-
var CLI_VERSION = true ? "0.1.
|
|
23333
|
+
var CLI_VERSION = true ? "0.1.4" : "0.0.0";
|
|
23163
23334
|
var CLI_USER_AGENT = `mosse-cli/${CLI_VERSION}`;
|
|
23164
23335
|
async function callApi(request) {
|
|
23165
23336
|
const headers = {
|
|
@@ -23564,7 +23735,13 @@ var SKILL_COMMAND_PATHS = [
|
|
|
23564
23735
|
["board", "task", "dependency-remove"],
|
|
23565
23736
|
["board", "task", "link-add"],
|
|
23566
23737
|
["board", "activity", "list"],
|
|
23567
|
-
["knowledge", "search"]
|
|
23738
|
+
["knowledge", "search"],
|
|
23739
|
+
["chat", "channels"],
|
|
23740
|
+
["chat", "messages", "list"],
|
|
23741
|
+
["chat", "messages", "search"],
|
|
23742
|
+
["chat", "messages", "send"],
|
|
23743
|
+
["chat", "thread", "list"],
|
|
23744
|
+
["chat", "reaction", "add"]
|
|
23568
23745
|
];
|
|
23569
23746
|
function renderSkill(tree) {
|
|
23570
23747
|
const line = (path, suffix) => {
|
|
@@ -23596,7 +23773,7 @@ function renderSkill(tree) {
|
|
|
23596
23773
|
...missing.length ? ["", `[warn] skill references missing commands: ${missing.map((p) => p.join(" ")).join(", ")}`] : []
|
|
23597
23774
|
].join("\n");
|
|
23598
23775
|
}
|
|
23599
|
-
var SKILL_DESCRIPTION = "Use the Mosse CLI (mosse) to read and write Mosse boards: tasks and checklists, dependencies, links, activity, projects, and knowledge search. Use when the user asks about Mosse tasks or
|
|
23776
|
+
var SKILL_DESCRIPTION = "Use the Mosse CLI (mosse) to read and write Mosse boards and chat: tasks and checklists, dependencies, links, activity, projects, sending and searching messages, reactions and threads, and knowledge search. Use when the user asks about Mosse tasks, projects, channels or messages, or when a mosse command is needed.";
|
|
23600
23777
|
var skillVersionMark = (version3) => `<!-- mosse-skill-version: ${version3} -->`;
|
|
23601
23778
|
function renderSkillMd(tree, version3 = CLI_VERSION) {
|
|
23602
23779
|
return [
|
|
@@ -24024,7 +24201,13 @@ var HTTP_ERROR_HINTS = [
|
|
|
24024
24201
|
/can't depend on itself/i,
|
|
24025
24202
|
"dependsOn \u7528\u300C\u6279\u5185\u4E0B\u6807\u300D(0 = \u6279\u91CC\u7B2C\u4E00\u4E2A\u4EFB\u52A1),\u4E0D\u662F\u4EFB\u52A1 id;\u4E24\u4E2A\u5DF2\u6709\u4EFB\u52A1\u4E4B\u95F4\u7528 board task dependency-add\u3002"
|
|
24026
24203
|
],
|
|
24027
|
-
[/invalid arguments/i, "\u5165\u53C2\u5F62\u72B6\u4E0D\u5BF9:\u770B\u8BE5\u547D\u4EE4\u7684 --help \u793A\u4F8B;\u6570\u7EC4/\u5BF9\u8C61\u53C2\u6570\u53EF\u4EE5\u5199\u6210 --tasks @file(\u6587\u4EF6\u91CC\u653E JSON)\u3002"]
|
|
24204
|
+
[/invalid arguments/i, "\u5165\u53C2\u5F62\u72B6\u4E0D\u5BF9:\u770B\u8BE5\u547D\u4EE4\u7684 --help \u793A\u4F8B;\u6570\u7EC4/\u5BF9\u8C61\u53C2\u6570\u53EF\u4EE5\u5199\u6210 --tasks @file(\u6587\u4EF6\u91CC\u653E JSON)\u3002"],
|
|
24205
|
+
[
|
|
24206
|
+
/lacks the `?[a-z]+:(read|write|admin)`? permission/i,
|
|
24207
|
+
"\u4EE4\u724C\u7F3A\u8FD9\u4E2A\u6743\u9650\u6863:\u53BB Settings \u2192 Agent access \u65B0\u5EFA\u4E00\u4E2A\u5E26\u8BE5\u6863\u7684\u4EE4\u724C(\u4EE4\u724C\u7684\u6863\u4F4D\u4E0D\u4F1A\u968F\u89D2\u8272\u53D8\u5316)\u3002"
|
|
24208
|
+
],
|
|
24209
|
+
[/invalid, expired or revoked/i, "\u91CD\u65B0\u767B\u5F55:mosse auth login;\u6216\u6362\u4E00\u628A MOSSE_TOKEN\u3002"],
|
|
24210
|
+
[/not a member of workspace/i, "\u4F60\u4E0D\u5728\u8FD9\u4E2A workspace(\u6216\u88AB\u79FB\u9664):\u8BA9\u7BA1\u7406\u5458\u52A0\u56DE,\u6216\u6362\u4E00\u4E2A --workspace\u3002"]
|
|
24028
24211
|
];
|
|
24029
24212
|
function withHttpHint(message) {
|
|
24030
24213
|
for (const [pattern, hint] of HTTP_ERROR_HINTS) if (pattern.test(message)) return `${message}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mosse-ai/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"mosse": "./dist/index.js"
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"typescript": "^5.7.3",
|
|
17
17
|
"esbuild": "^0.25.0",
|
|
18
18
|
"get-east-asian-width": "1.7.0",
|
|
19
|
-
"@mosse/
|
|
20
|
-
"@mosse/
|
|
19
|
+
"@mosse/tool-surface": "0.0.0",
|
|
20
|
+
"@mosse/contract": "0.0.0"
|
|
21
21
|
},
|
|
22
22
|
"description": "Mosse command-line client: boards, tasks, knowledge search, and agent-friendly device login.",
|
|
23
23
|
"license": "UNLICENSED",
|
package/skill/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mosse
|
|
3
|
-
description: "Use the Mosse CLI (mosse) to read and write Mosse boards: tasks and checklists, dependencies, links, activity, projects, and knowledge search. Use when the user asks about Mosse tasks or
|
|
3
|
+
description: "Use the Mosse CLI (mosse) to read and write Mosse boards and chat: tasks and checklists, dependencies, links, activity, projects, sending and searching messages, reactions and threads, and knowledge search. Use when the user asks about Mosse tasks, projects, channels or messages, or when a mosse command is needed."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- mosse-skill-version: 0.0.0 -->
|