@arcships/morula-runtime 0.1.0-alpha.17 → 0.1.0-alpha.18

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 CHANGED
@@ -740,7 +740,7 @@ var BUILD_ID, BUILD_CONTEXTS, BUILD_DEFAULT_CONTEXT;
740
740
  var init_build_env = __esm({
741
741
  "../morula-cli-core/dist/build-env.js"() {
742
742
  "use strict";
743
- BUILD_ID = "20260930065011.80ac5142";
743
+ BUILD_ID = "20260930091135.016ba78e";
744
744
  BUILD_CONTEXTS = {
745
745
  "local": "http://localhost:8080/api",
746
746
  "test": "https://morula.basecastle.com/api",
@@ -4423,7 +4423,7 @@ init_dist2();
4423
4423
  init_dist2();
4424
4424
 
4425
4425
  // src/build-env.ts
4426
- var BUILD_VERSION2 = "0.1.0-alpha.17";
4426
+ var BUILD_VERSION2 = "0.1.0-alpha.18";
4427
4427
 
4428
4428
  // src/commands/daemon.ts
4429
4429
  init_dist();
@@ -5253,7 +5253,7 @@ var COLLABORATION_SKILL_BODY = `# Working on Morula issues\uFF08\u534F\u4F5C\u59
5253
5253
  morula comment list --object <objectId> # \u8BFB\u8BC4\u8BBA\uFF08\u4EFB\u52A1=objectId\uFF09
5254
5254
  morula comment add --object <objectId> --content <\u6587\u672C> # \u53D1\u8BC4\u8BBA\uFF08\u6700\u7EC8\u603B\u7ED3\u52A0 --final\uFF0C\u89C1\u7B2C 5 \u6761\uFF09
5255
5255
  morula task inbox [--peek] # \u8FD0\u884C\u4E2D\u68C0\u67E5\u70B9\uFF1A\u53D6\u672C\u7EBF\u7A0B\u672A\u6D88\u8D39\u6D88\u606F\uFF0C\u7EB3\u5165\u672C\u56DE\u5408\uFF08\u89C1 1.3\uFF09
5256
- # \u6CE8\uFF1A\u4EFB\u52A1\u6536\u5C3E\u5148\u53D1 final \u603B\u7ED3\u8BC4\u8BBA\uFF08morula comment add --final\uFF09\uFF0C\u518D\u4E0A\u62A5\u7ED3\u679C\uFF1B\u670D\u52A1\u7AEF\u53EA\u5728\u4F60\u6CA1\u53D1\u65F6\u515C\u5E95\u4EE3\u53D1\u4E00\u6761\u3002
5256
+ # \u6CE8\uFF1A\u4EFB\u52A1\u6536\u5C3E\u5148\u53D1\u603B\u7ED3\u6027\u8BC4\u8BBA\uFF08\u63A8\u8350 morula comment add --final\uFF0C\u89C1\u7B2C 5 \u6761\uFF09\uFF0C\u518D\u4E0A\u62A5\u7ED3\u679C\uFF1B\u670D\u52A1\u7AEF\u53EA\u5728\u4F60\u4E00\u6761\u8BC4\u8BBA\u90FD\u6CA1\u53D1\u65F6\u515C\u5E95\u4EE3\u53D1\u3002
5257
5257
  \`\`\`
5258
5258
  - **\u53EF\u7528\u4ED3\u5E93\u6E05\u5355**\uFF1A\u7CFB\u7EDF\u63D0\u793A**\u4E0D\u518D\u5217\u51FA**\u4ED3\u5E93\u2014\u2014\u9700\u8981\u679A\u4E3E\u7A7A\u95F4\u7ED1\u5B9A\u7684\u4ED3\u5E93\u65F6\u7528
5259
5259
  \`morula repo list --space <spaceId>\`\uFF08\`<spaceId>\` \u89C1\u7CFB\u7EDF\u63D0\u793A\u300C\u57FA\u672C\u4FE1\u606F\u300D\u6BB5\uFF0C\u6216 \`morula task get\` \u8FD4\u56DE\u7684 \`contextSnapshot.spaceId\`\uFF09\u3002
@@ -5458,7 +5458,8 @@ morula task inbox --peek # \u53EA\u770B\u4E0D\u53D6\uFF08\u786E\u8BA4\u6709\
5458
5458
  morula comment add --object <objectId> --final --content <\u7ED3\u8BBA>
5459
5459
  \`\`\`
5460
5460
  \u4F5C\u8005=\u4F60\uFF08\u667A\u80FD\u4F53\u8EAB\u4EFD\uFF09\uFF1B\u8BC4\u8BBA\u89E6\u53D1\u4EFB\u52A1\u65F6\u670D\u52A1\u7AEF\u4F1A**\u81EA\u52A8\u628A\u5B83\u6302\u5230\u89E6\u53D1\u8BC4\u8BBA\u4E0B**\u4F5C\u4E3A\u56DE\u590D\uFF08\u65E0\u9700\u81EA\u5DF1\u67E5\u8BC4\u8BBA ID\uFF09\u3002
5461
- **\u5148\u53D1 final \u8BC4\u8BBA\u3001\u518D\u4E0A\u62A5\u4EFB\u52A1\u7ED3\u679C**\u2014\u2014\u670D\u52A1\u7AEF\u5728\u4F60\u5B8C\u6210\u65F6\u68C0\u67E5\uFF1A\u6CA1\u53D1\u8FC7 final \u624D\u4F1A\u515C\u5E95\u4EE3\u53D1\u4E00\u6761\uFF08\u540C\u4E00\u4EFB\u52A1\u53EA\u4F1A\u4FDD\u7559\u4E00\u6761\u6700\u7EC8\u603B\u7ED3\uFF0C\u91CD\u590D\u53D1\u9001\u4F1A\u88AB\u670D\u52A1\u7AEF\u62D2\u7EDD\uFF0C\u8FD9\u662F\u9884\u671F\u5185\u7684\u5E42\u7B49\u4FDD\u62A4\uFF09\u3002
5461
+ **\u5B8C\u6210\u540E\u5FC5\u987B\u5728\u4EFB\u52A1\u8BC4\u8BBA\u533A\u7559\u4E0B\u4E00\u6761\u4F60\u81EA\u5DF1\u7684\u603B\u7ED3\u6027\u8BC4\u8BBA\uFF08\u505A\u4E86\u4EC0\u4E48\u3001\u7ED3\u679C\u3001\u540E\u7EED\uFF09\uFF0C\u518D\u4E0A\u62A5\u4EFB\u52A1\u7ED3\u679C**\u2014\u2014\u8FD9\u662F\u4EA4\u4ED8\u7684\u4E00\u90E8\u5206\uFF0C\u4E00\u6761\u8BC4\u8BBA\u90FD\u6CA1\u53D1\u4E0D\u7B97\u5B8C\u6210\u3002\u670D\u52A1\u7AEF\u53EA\u5728\u4F60\u4E00\u6761\u8BC4\u8BBA\u90FD\u6CA1\u53D1\u65F6\u624D\u515C\u5E95\u4EE3\u53D1\u3002
5462
+ \`--final\` \u662F\u9632\u91CD\u6807\u8BB0\uFF08\u540C\u4E00\u4EFB\u52A1\u91CD\u590D\u6267\u884C\u53EA\u4FDD\u7559\u4E00\u6761\u603B\u7ED3\uFF0C\u91CD\u8BD5/\u91CD\u8DD1\u4E0D\u4F1A\u53D1\u7B2C\u4E8C\u6761\uFF1B\u91CD\u590D\u53D1\u9001\u88AB\u670D\u52A1\u7AEF\u62D2\u7EDD\u662F\u9884\u671F\u5185\u7684\u5E42\u7B49\u4FDD\u62A4\uFF09\uFF0C\u4E0D\u662F\u4EA4\u4ED8\u5224\u636E\u2014\u2014\u6536\u5C3E\u603B\u7ED3\u63A8\u8350\u5E26\u4E0A\u3002
5462
5463
  - **\u4F8B\u5916\uFF1A\u8BC4\u5BA1\u4EFB\u52A1\u4E0D\u9700\u8981\uFF08\u4E5F\u4E0D\u5E94\uFF09\u53D1 final**\u2014\u2014\u4F60\u7684\u7ED3\u8BBA\u5DF2\u7ECF\u901A\u8FC7 \`morula review submit\` \u673A\u5668\u534F\u8BAE\u4E0A\u62A5\uFF0C\u5E73\u53F0\u4F1A\u636E\u6B64\u5199\u6743\u5A01\u7ED3\u8BBA\u8BC4\u8BBA\uFF08\u2705 \u901A\u8FC7 / \u{1F4AC} \u975E\u963B\u585E / \u{1F501} \u672A\u901A\u8FC7\uFF09\uFF1B\u518D\u53D1\u4E00\u6761 final \u603B\u7ED3\u4F1A\u8BA9\u540C\u4E00\u7ED3\u8BBA\u5728\u8BC4\u8BBA\u533A**\u8BF4\u4E24\u904D**\uFF08\u670D\u52A1\u7AEF\u4E5F\u4F1A\u62D2\u7EDD\u8BC4\u5BA1\u4EFB\u52A1\u7684 final\uFF09\u3002\u9700\u8981\u53D1 final \u7684\u662F\u5F00\u53D1 / \u4FEE\u590D / \u5206\u6790 / \u95EE\u7B54 / \u8BC4\u8BBA\u89E6\u53D1\u7C7B\u4EFB\u52A1\u2014\u2014\u5185\u5BB9**\u7528\u4F60\u81EA\u5DF1\u7684\u8BDD\u5199**\uFF0C\u4E0D\u8981\u5957\u6A21\u677F\u3002
5463
5464
  - **\u666E\u901A\u8BC4\u8BBA**\uFF08\u8BF4\u660E\u8FDB\u5C55\u3001@ \u5176\u4ED6\u4EBA\u6216\u8FD0\u884C\u65F6\uFF09\u968F\u65F6\u53EF\u53D1\uFF1A
5464
5465
  \`\`\`bash
@@ -5542,7 +5543,7 @@ var COLLABORATION_SKILL_SOURCE_MAP = `# morula-working-on-issues \u2014 \u5951\u
5542
5543
  | \u5951\u7EA6 | \u5B9E\u73B0 | \u4F4D\u7F6E |
5543
5544
  |------|------|------|
5544
5545
  | \u8BC4\u8BBA\u662F\u7528\u6237\u53EF\u89C1\u7684\u4EA7\u51FA\u901A\u9053\uFF1B**\u6700\u7EC8\u603B\u7ED3\u7531 agent \u81EA\u5DF1\u53D1**\uFF08\`morula comment add --final\`\uFF0C\u4F5C\u8005=\u667A\u80FD\u4F53\uFF09 | \`POST /comments\`\uFF08agent_task \u51ED\u8BC1\uFF1B\`kind='final'\` \u670D\u52A1\u7AEF\u56DE\u586B \`taskId\`\uFF0C\`(tenantId, taskId, kind)\` \u552F\u4E00\u7EA6\u675F \u2192 \u540C\u4E00\u4EFB\u52A1\u4E00\u6761\uFF09 | \`packages/morula-cli/src/commands/comment.ts\`\u3001\`src/modules/task-management/comment/comment.service.ts\`\uFF08FINAL-COMMENT-001\uFF09 |
5545
- | **\u670D\u52A1\u7AEF\u7F3A\u5931\u515C\u5E95**\uFF08DP-1\uFF09\uFF1A\u4EFB\u52A1\u5B8C\u6210\u65F6\u68C0\u67E5\u6CA1\u53D1\u8FC7 final \u624D\u4EE3\u53D1\u4E00\u6761\uFF08\u5360\u4F4F\u552F\u4E00\u952E\uFF1B\u8FD0\u884C\u65F6\u8FDF\u5230\u8865\u53D1\u88AB\u62D2\u7EDD\uFF09 | \`task-lifecycle.service.ts\` onTaskCompleted\uFF1A\`runtimeFinalExists\` \u68C0\u67E5 + \u515C\u5E95 create \u5E26 \`taskId/kind\`\uFF08\u5E76\u53D1\u7531 P2002 \u6355\u83B7\uFF09 | \`src/modules/agent-task/task-lifecycle.service.ts\` |
5546
+ | **\u670D\u52A1\u7AEF\u7F3A\u5931\u515C\u5E95**\uFF08DP-1\uFF09\uFF1A\u4EFB\u52A1\u5B8C\u6210\u65F6\u82E5\u8FD0\u884C\u65F6\u5728\u4EFB\u52A1\u4E0A**\u4E00\u6761\u8BC4\u8BBA\u90FD\u6CA1\u53D1**\uFF08\u65E2\u65E0 final \u4E5F\u65E0\u666E\u901A\u8BC4\u8BBA\uFF09\u624D\u4EE3\u53D1\u4E00\u6761\uFF08\u5360\u4F4F\u552F\u4E00\u952E\uFF1B\u4EA4\u4ED8\u5224\u636E=\u603B\u7ED3\u6027\u8BC4\u8BBA\u672C\u8EAB\uFF0C\`--final\` \u4EC5\u9632\u91CD\uFF0C2026-09-30 \u7528\u6237\u5B9A\u6848\uFF09 | \`task-lifecycle.service.ts\` onTaskCompleted\uFF1A\`runtimeFinalExists\` + \`hasAgentRepliedToTrigger\` \u53CC\u68C0\u67E5 \u2192 \u90FD\u6CA1\u6709\u624D\u515C\u5E95 create \u5E26 \`taskId/kind\`\uFF08\u5E76\u53D1\u7531 P2002 \u6355\u83B7\uFF09 | \`src/modules/agent-task/task-lifecycle.service.ts\` |
5546
5547
  | \u515C\u5E95\u8DEF\u5F84\u622A\u53D6\u300C\u603B\u7ED3\u6BB5\u300D\uFF08\`---FINAL---\` \u5206\u9694\u7B26 \u2192 \u603B\u7ED3\u6807\u9898 \u2192 \u6C34\u5E73\u7EBF \u2192 \u539F\u6587\u515C\u5E95\uFF09 | \`cleanFinalOutput\`\uFF08\u4EC5\u515C\u5E95\u4EE3\u53D1\u8DEF\u5F84\u4F7F\u7528\uFF1B\u8FD0\u884C\u65F6\u81EA\u53D1\u8DEF\u5F84\u5185\u5BB9\u7EAA\u5F8B\u9760\u5951\u7EA6\uFF09 | \`src/modules/agent-task/task-lifecycle.service.ts\` |
5547
5548
  | **\u8BC4\u8BBA @\u89E6\u53D1\u4EFB\u52A1 \u2192 agent \u7684 final \u81EA\u52A8\u6302\u5230\u89E6\u53D1\u8BC4\u8BBA\u4E0B**\uFF08agent \u65E0\u9700\u8BC4\u8BBA ID\uFF09 | \u7ED3\u6784\u6027\u6302\u9760\uFF1A\`CommentService.create\`\uFF08resolveCommentAuthor \u8FD4\u56DE triggerCommentId \u2192 parentCommentId \u9ED8\u8BA4\u503C\uFF09\uFF1B\u751F\u547D\u5468\u671F\u515C\u5E95\uFF1AhasAgentRepliedToTrigger / isMentionReply | LOCAL-AGENT-COMMENT-REPLY-001 |
5548
5549
  | **@ \u9636\u6BB5\u8FD0\u884C\u65F6**\uFF08\`--mention-agent <stageExecutorId>\`\uFF09\u2192 \u89E6\u53D1\u8BE5\u6267\u884C\u5668\u5728\u4EFB\u52A1\u4E0A\u5E72\u6D3B | mentions \u6570\u7EC4 agent \u7C7B\u578B\u9879 \u2192 \`comment.mentioned\` \u4E8B\u4EF6 \u2192 AgentCollaborationService \u6D3E\u53D1 | \`comment.service.ts\`\u3001\`agent-collaboration.service.ts\` |
package/dist/morula.js CHANGED
@@ -704,8 +704,8 @@ function page(ok, message) {
704
704
  }
705
705
 
706
706
  // ../morula-cli-core/dist/build-env.js
707
- var BUILD_VERSION = "0.1.0-alpha.17";
708
- var BUILD_ID = "20260930065011.80ac5142";
707
+ var BUILD_VERSION = "0.1.0-alpha.18";
708
+ var BUILD_ID = "20260930091135.016ba78e";
709
709
  var BUILD_CONTEXTS = {
710
710
  "local": "http://localhost:8080/api",
711
711
  "test": "https://morula.basecastle.com/api",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "morula-cli",
3
- "version": "0.1.0-alpha.17",
3
+ "version": "0.1.0-alpha.18",
4
4
  "description": "Use Morula CLI task management from DimCode.",
5
5
  "interface": {
6
6
  "displayName": "Morula CLI",
@@ -174,7 +174,7 @@ allowed-tools: Bash(morula *), Bash(git *), Bash(gh *)
174
174
  morula comment list --object <objectId> # 读评论(任务=objectId)
175
175
  morula comment add --object <objectId> --content <文本> # 发评论(最终总结加 --final,见第 5 条)
176
176
  morula task inbox [--peek] # 运行中检查点:取本线程未消费消息,纳入本回合(见 1.3)
177
- # 注:任务收尾先发 final 总结评论(morula comment add --final),再上报结果;服务端只在你没发时兜底代发一条。
177
+ # 注:任务收尾先发总结性评论(推荐 morula comment add --final,见第 5 条),再上报结果;服务端只在你一条评论都没发时兜底代发。
178
178
  ```
179
179
  - **可用仓库清单**:系统提示**不再列出**仓库——需要枚举空间绑定的仓库时用
180
180
  `morula repo list --space <spaceId>`(`<spaceId>` 见系统提示「基本信息」段,或 `morula task get` 返回的 `contextSnapshot.spaceId`)。
@@ -379,7 +379,8 @@ morula task inbox --peek # 只看不取(确认有没有新意见,不标
379
379
  morula comment add --object <objectId> --final --content <结论>
380
380
  ```
381
381
  作者=你(智能体身份);评论触发任务时服务端会**自动把它挂到触发评论下**作为回复(无需自己查评论 ID)。
382
- **先发 final 评论、再上报任务结果**——服务端在你完成时检查:没发过 final 才会兜底代发一条(同一任务只会保留一条最终总结,重复发送会被服务端拒绝,这是预期内的幂等保护)。
382
+ **完成后必须在任务评论区留下一条你自己的总结性评论(做了什么、结果、后续),再上报任务结果**——这是交付的一部分,一条评论都没发不算完成。服务端只在你一条评论都没发时才兜底代发。
383
+ `--final` 是防重标记(同一任务重复执行只保留一条总结,重试/重跑不会发第二条;重复发送被服务端拒绝是预期内的幂等保护),不是交付判据——收尾总结推荐带上。
383
384
  - **例外:评审任务不需要(也不应)发 final**——你的结论已经通过 `morula review submit` 机器协议上报,平台会据此写权威结论评论(✅ 通过 / 💬 非阻塞 / 🔁 未通过);再发一条 final 总结会让同一结论在评论区**说两遍**(服务端也会拒绝评审任务的 final)。需要发 final 的是开发 / 修复 / 分析 / 问答 / 评论触发类任务——内容**用你自己的话写**,不要套模板。
384
385
  - **普通评论**(说明进展、@ 其他人或运行时)随时可发:
385
386
  ```bash
@@ -56,7 +56,7 @@
56
56
  | 契约 | 实现 | 位置 |
57
57
  |------|------|------|
58
58
  | 评论是用户可见的产出通道;**最终总结由 agent 自己发**(`morula comment add --final`,作者=智能体) | `POST /comments`(agent_task 凭证;`kind='final'` 服务端回填 `taskId`,`(tenantId, taskId, kind)` 唯一约束 → 同一任务一条) | `packages/morula-cli/src/commands/comment.ts`、`src/modules/task-management/comment/comment.service.ts`(FINAL-COMMENT-001) |
59
- | **服务端缺失兜底**(DP-1):任务完成时检查没发过 final 才代发一条(占住唯一键;运行时迟到补发被拒绝) | `task-lifecycle.service.ts` onTaskCompleted:`runtimeFinalExists` 检查 + 兜底 create 带 `taskId/kind`(并发由 P2002 捕获) | `src/modules/agent-task/task-lifecycle.service.ts` |
59
+ | **服务端缺失兜底**(DP-1):任务完成时若运行时在任务上**一条评论都没发**(既无 final 也无普通评论)才代发一条(占住唯一键;交付判据=总结性评论本身,`--final` 仅防重,2026-09-30 用户定案) | `task-lifecycle.service.ts` onTaskCompleted:`runtimeFinalExists` + `hasAgentRepliedToTrigger` 双检查 → 都没有才兜底 create 带 `taskId/kind`(并发由 P2002 捕获) | `src/modules/agent-task/task-lifecycle.service.ts` |
60
60
  | 兜底路径截取「总结段」(`---FINAL---` 分隔符 → 总结标题 → 水平线 → 原文兜底) | `cleanFinalOutput`(仅兜底代发路径使用;运行时自发路径内容纪律靠契约) | `src/modules/agent-task/task-lifecycle.service.ts` |
61
61
  | **评论 @触发任务 → agent 的 final 自动挂到触发评论下**(agent 无需评论 ID) | 结构性挂靠:`CommentService.create`(resolveCommentAuthor 返回 triggerCommentId → parentCommentId 默认值);生命周期兜底:hasAgentRepliedToTrigger / isMentionReply | LOCAL-AGENT-COMMENT-REPLY-001 |
62
62
  | **@ 阶段运行时**(`--mention-agent <stageExecutorId>`)→ 触发该执行器在任务上干活 | mentions 数组 agent 类型项 → `comment.mentioned` 事件 → AgentCollaborationService 派发 | `comment.service.ts`、`agent-collaboration.service.ts` |
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arcships/morula-runtime",
3
3
  "type": "module",
4
- "version": "0.1.0-alpha.17",
4
+ "version": "0.1.0-alpha.18",
5
5
  "description": "Device-level CLI for the Morula local agent runtime (daemon/portal/models/auth) and the Morula business CLI (morula), distributed via npm",
6
6
  "bin": {
7
7
  "morula-runtime": "./bin/morula-runtime.js",