crewly 1.20.310 → 1.20.311

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.
Files changed (34) hide show
  1. package/config/skills/agent/core/reply/SKILL.md +2 -0
  2. package/dist/backend/backend/src/constants.d.ts +7 -1
  3. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  4. package/dist/backend/backend/src/constants.js +8 -1
  5. package/dist/backend/backend/src/constants.js.map +1 -1
  6. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +22 -2
  7. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  8. package/dist/backend/backend/src/services/open-items/open-items.service.js +47 -9
  9. package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
  10. package/dist/backend/backend/src/services/open-items/open-items.wiring.d.ts.map +1 -1
  11. package/dist/backend/backend/src/services/open-items/open-items.wiring.js +3 -1
  12. package/dist/backend/backend/src/services/open-items/open-items.wiring.js.map +1 -1
  13. package/dist/backend/backend/src/services/open-items/stale-commitment.d.ts +40 -0
  14. package/dist/backend/backend/src/services/open-items/stale-commitment.d.ts.map +1 -0
  15. package/dist/backend/backend/src/services/open-items/stale-commitment.js +56 -0
  16. package/dist/backend/backend/src/services/open-items/stale-commitment.js.map +1 -0
  17. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts +2 -0
  18. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts.map +1 -1
  19. package/dist/backend/backend/src/services/restart/interrupted-turns.js +9 -1
  20. package/dist/backend/backend/src/services/restart/interrupted-turns.js.map +1 -1
  21. package/dist/backend/build-info.json +2 -2
  22. package/dist/cli/backend/src/constants.d.ts +7 -1
  23. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  24. package/dist/cli/backend/src/constants.js +8 -1
  25. package/dist/cli/backend/src/constants.js.map +1 -1
  26. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts +22 -2
  27. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  28. package/dist/cli/backend/src/services/open-items/open-items.service.js +47 -9
  29. package/dist/cli/backend/src/services/open-items/open-items.service.js.map +1 -1
  30. package/dist/cli/backend/src/services/open-items/stale-commitment.d.ts +40 -0
  31. package/dist/cli/backend/src/services/open-items/stale-commitment.d.ts.map +1 -0
  32. package/dist/cli/backend/src/services/open-items/stale-commitment.js +56 -0
  33. package/dist/cli/backend/src/services/open-items/stale-commitment.js.map +1 -0
  34. package/package.json +1 -1
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Stale commitments: an old owner promise is re-checked before it is
3
+ * resurfaced (incident 2026-10-12, TKT-334).
4
+ *
5
+ * @module services/open-items/stale-commitment
6
+ */
7
+ import { OPEN_ITEMS_CONSTANTS } from '../../constants.js';
8
+ /**
9
+ * Whether a commitment is old enough that it must be re-checked before it is
10
+ * resurfaced (incident 2026-10-12, TKT-334: a five-day-old "save the draft in
11
+ * info@ once Zoho is connected" was acted on after the owner had sent the
12
+ * email himself).
13
+ *
14
+ * @param item - Commitment
15
+ * @param now - Clock
16
+ * @returns True when older than {@link OPEN_ITEMS_CONSTANTS.STALE_VERIFY_AFTER_MS}
17
+ */
18
+ export function isStaleCommitment(item, now) {
19
+ const made = Date.parse(item.createdAt);
20
+ return Number.isFinite(made) && now.getTime() - made >= OPEN_ITEMS_CONSTANTS.STALE_VERIFY_AFTER_MS;
21
+ }
22
+ /**
23
+ * Why an old commitment no longer needs doing, judged only from what Crewly
24
+ * already knows: its ticket is done / cancelled, or someone other than the
25
+ * promising agent (the owner) posted in the ticket's thread after the promise.
26
+ * Young commitments are never judged here.
27
+ *
28
+ * @param request - Its request
29
+ * @param item - Commitment
30
+ * @param now - Clock
31
+ * @returns The reason (for `closedReason`), or null when it may still be needed
32
+ */
33
+ export function supersededReason(request, item, now) {
34
+ if (item.type !== 'commitment' || !isStaleCommitment(item, now))
35
+ return null;
36
+ if (request.status === 'done' || request.status === 'cancelled')
37
+ return `superseded: the ticket is ${request.status}`;
38
+ const made = Date.parse(item.createdAt);
39
+ const reply = (request.discussion ?? []).find((d) => d.author !== item.agent && Date.parse(d.at) > made);
40
+ return reply ? `superseded: the owner posted in the thread on ${reply.at.slice(0, 10)} after the promise` : null;
41
+ }
42
+ /**
43
+ * The line added to every prompt that resurfaces an old commitment.
44
+ *
45
+ * @param item - Commitment
46
+ * @param now - Clock
47
+ * @returns The notice, or '' when the commitment is not old
48
+ */
49
+ export function staleCommitmentNotice(item, now) {
50
+ if (!isStaleCommitment(item, now))
51
+ return '';
52
+ return (`\nThis is from ${item.createdAt.slice(0, 10)}. Before contacting the owner, verify it is still needed: check the thread since then, ` +
53
+ `the ticket status, and for email work the Sent folder and existing drafts (you have read access). ` +
54
+ `If it was already done, close it without messaging the owner.`);
55
+ }
56
+ //# sourceMappingURL=stale-commitment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stale-commitment.js","sourceRoot":"","sources":["../../../../../../backend/src/services/open-items/stale-commitment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI1D;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAwC,EAAE,GAAS;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,oBAAoB,CAAC,qBAAqB,CAAC;AACrG,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA+C,EAAE,IAAqB,EAAE,GAAS;IAChH,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,6BAA6B,OAAO,CAAC,MAAM,EAAE,CAAC;IACtH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACzG,OAAO,KAAK,CAAC,CAAC,CAAC,iDAAiD,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;AACnH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAwC,EAAE,GAAS;IACvF,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,CACL,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,yFAAyF;QACtI,oGAAoG;QACpG,+DAA+D,CAChE,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crewly",
3
- "version": "1.20.310",
3
+ "version": "1.20.311",
4
4
  "type": "module",
5
5
  "description": "Multi-agent orchestration platform for AI coding teams — coordinates Claude Code, Gemini CLI, and Codex agents with a real-time web dashboard",
6
6
  "workspaces": [