@penclipai/server 2026.412.1-canary.1 → 2026.413.0
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/onboarding-assets/ceo/HEARTBEAT.md +48 -47
- package/dist/services/agent-runtime-localization.js +2 -2
- package/dist/services/agent-runtime-localization.js.map +1 -1
- package/dist/services/heartbeat.d.ts.map +1 -1
- package/dist/services/heartbeat.js +65 -21
- package/dist/services/heartbeat.js.map +1 -1
- package/dist/services/workspace-runtime.d.ts.map +1 -1
- package/dist/services/workspace-runtime.js +127 -59
- package/dist/services/workspace-runtime.js.map +1 -1
- package/package.json +14 -14
- package/ui-dist/assets/{_basePickBy-BYgDuN8i.js → _basePickBy-CoOvt48E.js} +1 -1
- package/ui-dist/assets/{_baseUniq-CRjSfvYT.js → _baseUniq-MnI-rwoJ.js} +1 -1
- package/ui-dist/assets/{arc-DsBkYNWF.js → arc-BJTwg03W.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-VXUJARFQ-B1GkeWYk.js → architectureDiagram-VXUJARFQ-DtU926HT.js} +1 -1
- package/ui-dist/assets/{blockDiagram-VD42YOAC-DqPNNrMo.js → blockDiagram-VD42YOAC-BZkR9u7V.js} +1 -1
- package/ui-dist/assets/{browser-ponyfill-Cd4BUygM.js → browser-ponyfill-M57mty6A.js} +1 -1
- package/ui-dist/assets/{c4Diagram-YG6GDRKO-dFoF-lQz.js → c4Diagram-YG6GDRKO-C_iAt3TU.js} +1 -1
- package/ui-dist/assets/channel-CXghPST0.js +1 -0
- package/ui-dist/assets/{chunk-4BX2VUAB-rKJtGKNA.js → chunk-4BX2VUAB-CRPeb0to.js} +1 -1
- package/ui-dist/assets/{chunk-55IACEB6-DQ1bZ0VT.js → chunk-55IACEB6-CHH6eeZA.js} +1 -1
- package/ui-dist/assets/{chunk-B4BG7PRW-SyxOcUYw.js → chunk-B4BG7PRW-Cv4VCjQl.js} +1 -1
- package/ui-dist/assets/{chunk-DI55MBZ5-CwDCACNK.js → chunk-DI55MBZ5-BU1p0o69.js} +1 -1
- package/ui-dist/assets/{chunk-FMBD7UC4-CPCDJBhv.js → chunk-FMBD7UC4-CD_tSQEl.js} +1 -1
- package/ui-dist/assets/{chunk-QN33PNHL-C6jfer6L.js → chunk-QN33PNHL-O3gsX0BW.js} +1 -1
- package/ui-dist/assets/{chunk-QZHKN3VN-Nh6NvU9Y.js → chunk-QZHKN3VN-BK8AYNZg.js} +1 -1
- package/ui-dist/assets/{chunk-TZMSLE5B-DxIsL_1p.js → chunk-TZMSLE5B-BTsBcHdt.js} +1 -1
- package/ui-dist/assets/classDiagram-2ON5EDUG-B7qCNv0-.js +1 -0
- package/ui-dist/assets/classDiagram-v2-WZHVMYZB-B7qCNv0-.js +1 -0
- package/ui-dist/assets/clone-DudZxRd4.js +1 -0
- package/ui-dist/assets/{cose-bilkent-S5V4N54A-BIcbUI0x.js → cose-bilkent-S5V4N54A-BT_PtpHU.js} +1 -1
- package/ui-dist/assets/{dagre-6UL2VRFP-DNls9SiL.js → dagre-6UL2VRFP-B166RScf.js} +1 -1
- package/ui-dist/assets/{diagram-PSM6KHXK-Cv-WiuFx.js → diagram-PSM6KHXK-DShFnFzM.js} +1 -1
- package/ui-dist/assets/{diagram-QEK2KX5R-CqmvEECJ.js → diagram-QEK2KX5R-D2GlNWq0.js} +1 -1
- package/ui-dist/assets/{diagram-S2PKOQOG-lAv5etOD.js → diagram-S2PKOQOG-DUR69PbW.js} +1 -1
- package/ui-dist/assets/{erDiagram-Q2GNP2WA-AslR0P2H.js → erDiagram-Q2GNP2WA-DSmxsXME.js} +1 -1
- package/ui-dist/assets/{flowDiagram-NV44I4VS-NWqqpaop.js → flowDiagram-NV44I4VS-DUJoVSkx.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-JELNMOA3-KSxW9l08.js → ganttDiagram-JELNMOA3-D65EE-0f.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-V2S2FVAM-D-coBrc-.js → gitGraphDiagram-V2S2FVAM-B06W-khA.js} +1 -1
- package/ui-dist/assets/{graph-D8fKyeak.js → graph-CDeGKZUE.js} +1 -1
- package/ui-dist/assets/{index-FzK5qeqC.js → index-4USwimP_.js} +1 -1
- package/ui-dist/assets/index-AvFWBNcP.js +1309 -0
- package/ui-dist/assets/{index-CnOStpig.js → index-BF2HIonv.js} +1 -1
- package/ui-dist/assets/{index-DpYzyYFa.js → index-BG7UdBNB.js} +1 -1
- package/ui-dist/assets/{index-D_mk4-jS.js → index-BIY9d3hQ.js} +1 -1
- package/ui-dist/assets/{index-BD7bUv82.js → index-BQNcpAaQ.js} +1 -1
- package/ui-dist/assets/{index-CloL7GG2.js → index-BSwdm-Qm.js} +1 -1
- package/ui-dist/assets/{index-BwGN7vF0.js → index-BmJtBiew.js} +1 -1
- package/ui-dist/assets/{index-DzJ2j1Ly.js → index-BpbHO7Cj.js} +1 -1
- package/ui-dist/assets/{index-CYiJQMOA.js → index-BvS_rxZN.js} +1 -1
- package/ui-dist/assets/{index-cr2kh1j7.js → index-C2sL1JAQ.js} +1 -1
- package/ui-dist/assets/{index-CHH8WtDq.js → index-CAsepOm1.js} +1 -1
- package/ui-dist/assets/{index-Dh9PX3Xk.js → index-CP2bgJQO.js} +1 -1
- package/ui-dist/assets/{index-y4Ld3okd.js → index-CW16xhOo.js} +1 -1
- package/ui-dist/assets/{index-D0QlWkTA.js → index-CWbv9J8w.js} +1 -1
- package/ui-dist/assets/{index-iBXaRxpb.js → index-DC2wKQ7E.js} +1 -1
- package/ui-dist/assets/{index-qV41Ed6t.js → index-DZ1UPuu8.js} +1 -1
- package/ui-dist/assets/{index-BylfIBUb.js → index-LNJqtATM.js} +1 -1
- package/ui-dist/assets/{index-CqtlSliA.js → index-Y7r5lVN4.js} +1 -1
- package/ui-dist/assets/{index-CEFAvAqA.js → index-_lD2n9gL.js} +1 -1
- package/ui-dist/assets/{index-CrQfEO1p.js → index-aLTI2qdu.js} +1 -1
- package/ui-dist/assets/{index-C4V8v5gD.js → index-arK94my6.js} +1 -1
- package/ui-dist/assets/{index-BBEzW4iY.js → index-uk2auqjZ.js} +1 -1
- package/ui-dist/assets/{infoDiagram-HS3SLOUP-B7bjuuGk.js → infoDiagram-HS3SLOUP-CZ_0WEaq.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-XKPGCS4Q-CC9cfvtc.js → journeyDiagram-XKPGCS4Q-Cc9Xhh1Q.js} +1 -1
- package/ui-dist/assets/{kanban-definition-3W4ZIXB7-B4dRPtrc.js → kanban-definition-3W4ZIXB7-DYmSQpjW.js} +1 -1
- package/ui-dist/assets/{layout-DUOyPFFZ.js → layout-B9ZkiLEI.js} +1 -1
- package/ui-dist/assets/{linear-DJVQdiOw.js → linear-pxwZxqhs.js} +1 -1
- package/ui-dist/assets/{mermaid.core-DNdsUi_1.js → mermaid.core-BiMAwH7A.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-VGOIOE7T-C4IyJ0BC.js → mindmap-definition-VGOIOE7T-Bdo0TWyb.js} +1 -1
- package/ui-dist/assets/{pieDiagram-ADFJNKIX-BXIoTbfm.js → pieDiagram-ADFJNKIX-BWoc5Kbv.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-AYHSOK5B-BfIyXz7x.js → quadrantDiagram-AYHSOK5B-LlrEDadu.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-UZGBJVZJ-BtJTHOpP.js → requirementDiagram-UZGBJVZJ-DzTCknHr.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-TZEHDZUN-BNUyYp9K.js → sankeyDiagram-TZEHDZUN-BwSzleKt.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-WL72ISMW-t2ZFjbXH.js → sequenceDiagram-WL72ISMW-B5D1lDYq.js} +1 -1
- package/ui-dist/assets/{stateDiagram-FKZM4ZOC-BmdjWokK.js → stateDiagram-FKZM4ZOC-BdBVbnKf.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-DWtYhfJQ.js +1 -0
- package/ui-dist/assets/{timeline-definition-IT6M3QCI-CFs6jiks.js → timeline-definition-IT6M3QCI-BmiCGX-c.js} +1 -1
- package/ui-dist/assets/{treemap-GDKQZRPO-DCxq1s0Q.js → treemap-GDKQZRPO-QzlX8_tL.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-PRI3JC2R-rIgrBkUN.js → xychartDiagram-PRI3JC2R-R305sQ3M.js} +1 -1
- package/ui-dist/index.html +1 -1
- package/ui-dist/locales/en/common.json +21 -0
- package/ui-dist/locales/zh-CN/common.json +21 -0
- package/ui-dist/assets/channel-bIpTqifR.js +0 -1
- package/ui-dist/assets/classDiagram-2ON5EDUG-DL0Zc9k9.js +0 -1
- package/ui-dist/assets/classDiagram-v2-WZHVMYZB-DL0Zc9k9.js +0 -1
- package/ui-dist/assets/clone-Cs2UHTDr.js +0 -1
- package/ui-dist/assets/index-DJk_jrV7.js +0 -1309
- package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-QysVRgPw.js +0 -1
|
@@ -1,72 +1,73 @@
|
|
|
1
|
-
# HEARTBEAT.md -- CEO
|
|
1
|
+
# HEARTBEAT.md -- CEO 心跳检查清单
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
每次 heartbeat 都要执行这份清单。它同时覆盖你的本地规划/记忆工作,以及通过 Paperclip skill 进行的组织协作。
|
|
4
4
|
|
|
5
|
-
## 1.
|
|
5
|
+
## 1. 身份与上下文
|
|
6
6
|
|
|
7
|
-
- `GET /api/agents/me` --
|
|
8
|
-
-
|
|
7
|
+
- `GET /api/agents/me` -- 确认你的 id、角色、预算和 chainOfCommand。
|
|
8
|
+
- 检查唤醒上下文:`PAPERCLIP_TASK_ID`、`PAPERCLIP_WAKE_REASON`、`PAPERCLIP_WAKE_COMMENT_ID`。
|
|
9
9
|
|
|
10
|
-
## 2.
|
|
10
|
+
## 2. 本地规划检查
|
|
11
11
|
|
|
12
|
-
1.
|
|
13
|
-
2.
|
|
14
|
-
3.
|
|
15
|
-
4.
|
|
16
|
-
5.
|
|
12
|
+
1. 阅读 `./memory/YYYY-MM-DD.md` 中 `## Today's Plan` 下的今日计划。
|
|
13
|
+
2. 逐项查看计划内容:哪些已经完成、哪些被阻塞、接下来该做什么。
|
|
14
|
+
3. 遇到阻塞时,优先自己解决;无法解决再升级给 board。
|
|
15
|
+
4. 如果进度领先,就开始处理下一个最高优先级事项。
|
|
16
|
+
5. 把进展更新记录到当天笔记里。
|
|
17
17
|
|
|
18
|
-
## 3.
|
|
18
|
+
## 3. 审批跟进
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
如果设置了 `PAPERCLIP_APPROVAL_ID`:
|
|
21
21
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
22
|
+
- 查看对应审批及其关联 issue。
|
|
23
|
+
- 已解决的问题就关闭,未解决的补充评论说明还剩什么。
|
|
24
24
|
|
|
25
|
-
## 4.
|
|
25
|
+
## 4. 获取分配任务
|
|
26
26
|
|
|
27
27
|
- `GET /api/companies/{companyId}/issues?assigneeAgentId={your-id}&status=todo,in_progress,in_review,blocked`
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
28
|
+
- 优先级顺序:先 `in_progress`,其次是因评论唤醒的 `in_review`,最后才是 `todo`。除非你能解除阻塞,否则跳过 `blocked`。
|
|
29
|
+
- 如果某个 `in_progress` 任务已经有 active run 在执行,就继续处理下一件事。
|
|
30
|
+
- 如果设置了 `PAPERCLIP_TASK_ID` 且该任务分配给你,优先处理它。
|
|
31
31
|
|
|
32
|
-
## 5. Checkout
|
|
32
|
+
## 5. Checkout 与执行
|
|
33
33
|
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
34
|
+
- 对于带作用域的 issue 唤醒,Paperclip 可能会在你的运行开始前,先在 harness 里 checkout 当前 issue。
|
|
35
|
+
- 只有在你明确要切换到另一个任务,或唤醒上下文并没有先认领该 issue 时,才自己调用 `POST /api/issues/{id}/checkout`。
|
|
36
|
+
- 永远不要重试 409 -- 那表示该任务已经属于别人。
|
|
37
|
+
- 开始执行工作。完成后更新状态并写评论。
|
|
37
38
|
|
|
38
|
-
## 6.
|
|
39
|
+
## 6. 委派
|
|
39
40
|
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
41
|
+
- 使用 `POST /api/companies/{companyId}/issues` 创建子任务。务必设置 `parentId` 和 `goalId`。如果某个非子任务 follow-up 必须复用同一个 checkout/worktree,请把 `inheritExecutionWorkspaceFromIssueId` 设为源 issue。
|
|
42
|
+
- 需要招聘新 agent 时,使用 `paperclip-create-agent` skill。
|
|
43
|
+
- 把工作分配给最适合的人。
|
|
43
44
|
|
|
44
|
-
## 7.
|
|
45
|
+
## 7. 事实提取
|
|
45
46
|
|
|
46
|
-
1.
|
|
47
|
-
2.
|
|
48
|
-
3.
|
|
49
|
-
4.
|
|
47
|
+
1. 检查自上次提取以来是否出现了新的对话。
|
|
48
|
+
2. 将可长期保留的事实提取到 `./life/`(PARA)中对应的实体。
|
|
49
|
+
3. 在 `./memory/YYYY-MM-DD.md` 中补充时间线记录。
|
|
50
|
+
4. 为所有引用到的事实更新访问元数据(timestamp、access_count)。
|
|
50
51
|
|
|
51
|
-
## 8.
|
|
52
|
+
## 8. 退出
|
|
52
53
|
|
|
53
|
-
-
|
|
54
|
-
-
|
|
54
|
+
- 退出前,对所有 `in_progress` 工作补一条评论。
|
|
55
|
+
- 如果没有分配任务,也没有有效的 mention-handoff,就干净退出。
|
|
55
56
|
|
|
56
57
|
---
|
|
57
58
|
|
|
58
|
-
## CEO
|
|
59
|
+
## CEO 职责
|
|
59
60
|
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
61
|
+
- 战略方向:设定与公司使命一致的目标和优先级。
|
|
62
|
+
- 招聘:当容量不足时,启动新的 agents。
|
|
63
|
+
- 解除阻塞:为下属升级或解决阻塞问题。
|
|
64
|
+
- 预算意识:支出超过 80% 后,只专注关键任务。
|
|
65
|
+
- 不要主动寻找未分配的工作 -- 只处理明确分配给你的事项。
|
|
66
|
+
- 不要取消跨团队任务 -- 应通过评论重新分配给相关 manager。
|
|
66
67
|
|
|
67
|
-
##
|
|
68
|
+
## 规则
|
|
68
69
|
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
70
|
+
- 始终使用 Paperclip skill 进行协作。
|
|
71
|
+
- 所有变更型 API 调用都必须带上 `X-Paperclip-Run-Id` header。
|
|
72
|
+
- 评论请使用简洁 markdown:状态行 + bullets + links。
|
|
73
|
+
- 只有在被明确 @ 提及时,才允许通过 checkout 自行认领任务。
|
|
@@ -95,7 +95,7 @@ function buildZhCnRuntimeLocalizationPrompt(environment) {
|
|
|
95
95
|
"- 输出契约:除非用户本轮明确要求其他语言,所有面向用户的自然语言输出必须使用简体中文;代码、命令、路径、API 字段名和日志原文保持原样。",
|
|
96
96
|
`- 宿主环境:${environment.labelZh}。`,
|
|
97
97
|
"- CLI 契约:执行 Paperclip 命令一律使用 `penclip ...`;仅在逐字引用用户文本、日志或历史文档时保留 `paperclipai ...`。",
|
|
98
|
-
"- API
|
|
98
|
+
"- API 契约:优先使用 `penclip` CLI 完成 Paperclip 操作;只有在 CLI 无法覆盖时,才直接调用 API,并确保带上必需的认证与运行标头。",
|
|
99
99
|
].join("\n");
|
|
100
100
|
}
|
|
101
101
|
function buildEnRuntimeLocalizationPrompt(environment) {
|
|
@@ -104,7 +104,7 @@ function buildEnRuntimeLocalizationPrompt(environment) {
|
|
|
104
104
|
"- Output contract: unless the current user request explicitly asks for another language, all user-facing natural-language output must be in English. Keep code, commands, file paths, API field names, and raw logs verbatim.",
|
|
105
105
|
`- Host runtime: ${environment.labelEn}.`,
|
|
106
106
|
"- CLI contract: use `penclip ...` for Paperclip commands; keep `paperclipai ...` only in verbatim quotes from user text, logs, or historical docs.",
|
|
107
|
-
"- API contract: for
|
|
107
|
+
"- API contract: prefer the `penclip` CLI for Paperclip operations; only call the HTTP API directly when the CLI cannot cover the action, and always include the required auth and run headers.",
|
|
108
108
|
].join("\n");
|
|
109
109
|
}
|
|
110
110
|
export function readRuntimeUiLocaleFromContextSnapshot(contextSnapshot) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runtime-localization.js","sourceRoot":"","sources":["../../src/services/agent-runtime-localization.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-runtime-localization.js","sourceRoot":"","sources":["../../src/services/agent-runtime-localization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/services/heartbeat.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAe,kBAAkB,EAAE,wBAAwB,EAAY,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EACL,MAAM,EAUP,MAAM,eAAe,CAAC;AAMvB,OAAO,KAAK,EAAiD,mBAAmB,EAAgB,MAAM,sBAAsB,CAAC;AAO7H,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAO7C,OAAO,EAOL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAEhC,MAAM,wBAAwB,CAAC;AAahC,OAAO,EAML,6BAA6B,EAC9B,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/services/heartbeat.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { execFile as execFileCallback } from "node:child_process";
|
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { and, asc, desc, eq, gt, inArray, isNull, or, sql } from "drizzle-orm";
|
|
6
6
|
import { agents, agentRuntimeState, agentTaskSessions, agentWakeupRequests, heartbeatRunEvents, heartbeatRuns, issueComments, issues, projects, projectWorkspaces, } from "@penclipai/db";
|
|
7
|
-
import { conflict, notFound } from "../errors.js";
|
|
7
|
+
import { conflict, HttpError, notFound } from "../errors.js";
|
|
8
8
|
import { logger } from "../middleware/logger.js";
|
|
9
9
|
import { publishLiveEvent } from "./live-events.js";
|
|
10
10
|
import { getRunLogStore } from "./run-log-store.js";
|
|
@@ -36,6 +36,7 @@ const HEARTBEAT_MAX_CONCURRENT_RUNS_MAX = 10;
|
|
|
36
36
|
const DEFERRED_WAKE_CONTEXT_KEY = "_paperclipWakeContext";
|
|
37
37
|
const WAKE_COMMENT_IDS_KEY = "wakeCommentIds";
|
|
38
38
|
const PAPERCLIP_WAKE_PAYLOAD_KEY = "paperclipWake";
|
|
39
|
+
const PAPERCLIP_HARNESS_CHECKOUT_KEY = "paperclipHarnessCheckedOut";
|
|
39
40
|
const DETACHED_PROCESS_ERROR_CODE = "process_detached";
|
|
40
41
|
const startLocksByAgent = new Map();
|
|
41
42
|
const REPO_ONLY_CWD_SENTINEL = "/__paperclip_repo_only__";
|
|
@@ -553,6 +554,28 @@ function describeSessionResetReason(contextSnapshot) {
|
|
|
553
554
|
return "wake reason is execution_changes_requested";
|
|
554
555
|
return null;
|
|
555
556
|
}
|
|
557
|
+
function shouldAutoCheckoutIssueForWake(input) {
|
|
558
|
+
if (input.issueAssigneeAgentId !== input.agentId)
|
|
559
|
+
return false;
|
|
560
|
+
const issueStatus = readNonEmptyString(input.issueStatus);
|
|
561
|
+
if (issueStatus !== "todo" &&
|
|
562
|
+
issueStatus !== "backlog" &&
|
|
563
|
+
issueStatus !== "blocked" &&
|
|
564
|
+
issueStatus !== "in_progress") {
|
|
565
|
+
return false;
|
|
566
|
+
}
|
|
567
|
+
const wakeReason = readNonEmptyString(input.contextSnapshot?.wakeReason);
|
|
568
|
+
if (!wakeReason)
|
|
569
|
+
return false;
|
|
570
|
+
if (wakeReason === "issue_comment_mentioned")
|
|
571
|
+
return false;
|
|
572
|
+
if (wakeReason.startsWith("execution_"))
|
|
573
|
+
return false;
|
|
574
|
+
return true;
|
|
575
|
+
}
|
|
576
|
+
function isCheckoutConflictError(error) {
|
|
577
|
+
return error instanceof HttpError && error.status === 409 && error.message === "Issue checkout conflict";
|
|
578
|
+
}
|
|
556
579
|
function deriveCommentId(contextSnapshot, payload) {
|
|
557
580
|
const batchedCommentId = extractWakeCommentIds(contextSnapshot).at(-1);
|
|
558
581
|
return (batchedCommentId ??
|
|
@@ -755,6 +778,7 @@ async function buildPaperclipWakePayload(input) {
|
|
|
755
778
|
priority: issueSummary.priority,
|
|
756
779
|
}
|
|
757
780
|
: null,
|
|
781
|
+
checkedOutByHarness: input.contextSnapshot[PAPERCLIP_HARNESS_CHECKOUT_KEY] === true,
|
|
758
782
|
executionStage: Object.keys(executionStage).length > 0 ? executionStage : null,
|
|
759
783
|
commentIds,
|
|
760
784
|
latestCommentId: commentIds[commentIds.length - 1] ?? null,
|
|
@@ -930,6 +954,26 @@ export function heartbeatService(db) {
|
|
|
930
954
|
.where(eq(heartbeatRuns.id, runId))
|
|
931
955
|
.then((rows) => rows[0] ?? null);
|
|
932
956
|
}
|
|
957
|
+
async function getIssueExecutionContext(companyId, issueId) {
|
|
958
|
+
return db
|
|
959
|
+
.select({
|
|
960
|
+
id: issues.id,
|
|
961
|
+
identifier: issues.identifier,
|
|
962
|
+
title: issues.title,
|
|
963
|
+
status: issues.status,
|
|
964
|
+
priority: issues.priority,
|
|
965
|
+
projectId: issues.projectId,
|
|
966
|
+
projectWorkspaceId: issues.projectWorkspaceId,
|
|
967
|
+
executionWorkspaceId: issues.executionWorkspaceId,
|
|
968
|
+
executionWorkspacePreference: issues.executionWorkspacePreference,
|
|
969
|
+
assigneeAgentId: issues.assigneeAgentId,
|
|
970
|
+
assigneeAdapterOverrides: issues.assigneeAdapterOverrides,
|
|
971
|
+
executionWorkspaceSettings: issues.executionWorkspaceSettings,
|
|
972
|
+
})
|
|
973
|
+
.from(issues)
|
|
974
|
+
.where(and(eq(issues.id, issueId), eq(issues.companyId, companyId)))
|
|
975
|
+
.then((rows) => rows[0] ?? null);
|
|
976
|
+
}
|
|
933
977
|
async function getRuntimeState(agentId) {
|
|
934
978
|
return db
|
|
935
979
|
.select()
|
|
@@ -2112,26 +2156,26 @@ export function heartbeatService(db) {
|
|
|
2112
2156
|
const taskKey = deriveTaskKeyWithHeartbeatFallback(context, null);
|
|
2113
2157
|
const sessionCodec = getAdapterSessionCodec(agent.adapterType);
|
|
2114
2158
|
const issueId = readNonEmptyString(context.issueId);
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2159
|
+
let issueContext = issueId ? await getIssueExecutionContext(agent.companyId, issueId) : null;
|
|
2160
|
+
if (issueId &&
|
|
2161
|
+
issueContext &&
|
|
2162
|
+
shouldAutoCheckoutIssueForWake({
|
|
2163
|
+
contextSnapshot: context,
|
|
2164
|
+
issueStatus: issueContext.status,
|
|
2165
|
+
issueAssigneeAgentId: issueContext.assigneeAgentId,
|
|
2166
|
+
agentId: agent.id,
|
|
2167
|
+
})) {
|
|
2168
|
+
try {
|
|
2169
|
+
await issuesSvc.checkout(issueId, agent.id, ["todo", "backlog", "blocked"], run.id);
|
|
2170
|
+
context[PAPERCLIP_HARNESS_CHECKOUT_KEY] = true;
|
|
2171
|
+
}
|
|
2172
|
+
catch (error) {
|
|
2173
|
+
if (!isCheckoutConflictError(error))
|
|
2174
|
+
throw error;
|
|
2175
|
+
context[PAPERCLIP_HARNESS_CHECKOUT_KEY] = false;
|
|
2176
|
+
}
|
|
2177
|
+
issueContext = await getIssueExecutionContext(agent.companyId, issueId);
|
|
2178
|
+
}
|
|
2135
2179
|
const issueAssigneeOverrides = issueContext && issueContext.assigneeAgentId === agent.id
|
|
2136
2180
|
? parseIssueAssigneeAdapterOverrides(issueContext.assigneeAdapterOverrides)
|
|
2137
2181
|
: null;
|