@intrect/openswarm 0.8.1 → 0.9.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.
Files changed (86) hide show
  1. package/README.md +15 -28
  2. package/dist/adapters/claude.d.ts +5 -0
  3. package/dist/adapters/claude.d.ts.map +1 -1
  4. package/dist/adapters/claude.js +11 -1
  5. package/dist/adapters/claude.js.map +1 -1
  6. package/dist/adapters/codex.d.ts +2 -0
  7. package/dist/adapters/codex.d.ts.map +1 -1
  8. package/dist/adapters/codex.js +8 -1
  9. package/dist/adapters/codex.js.map +1 -1
  10. package/dist/adapters/codexResponses.d.ts +2 -0
  11. package/dist/adapters/codexResponses.d.ts.map +1 -1
  12. package/dist/adapters/codexResponses.js +7 -1
  13. package/dist/adapters/codexResponses.js.map +1 -1
  14. package/dist/adapters/gpt.d.ts +1 -0
  15. package/dist/adapters/gpt.d.ts.map +1 -1
  16. package/dist/adapters/gpt.js +4 -1
  17. package/dist/adapters/gpt.js.map +1 -1
  18. package/dist/adapters/local.d.ts +2 -0
  19. package/dist/adapters/local.d.ts.map +1 -1
  20. package/dist/adapters/local.js +6 -1
  21. package/dist/adapters/local.js.map +1 -1
  22. package/dist/adapters/memoryMcp.d.ts +21 -0
  23. package/dist/adapters/memoryMcp.d.ts.map +1 -0
  24. package/dist/adapters/memoryMcp.js +51 -0
  25. package/dist/adapters/memoryMcp.js.map +1 -0
  26. package/dist/adapters/openrouter.d.ts +1 -0
  27. package/dist/adapters/openrouter.d.ts.map +1 -1
  28. package/dist/adapters/openrouter.js +4 -1
  29. package/dist/adapters/openrouter.js.map +1 -1
  30. package/dist/adapters/tools.d.ts.map +1 -1
  31. package/dist/adapters/tools.js +32 -0
  32. package/dist/adapters/tools.js.map +1 -1
  33. package/dist/adapters/types.d.ts +8 -0
  34. package/dist/adapters/types.d.ts.map +1 -1
  35. package/dist/agents/draftAnalyzer.js +3 -3
  36. package/dist/agents/draftAnalyzer.js.map +1 -1
  37. package/dist/automation/autonomousRunner.d.ts +4 -4
  38. package/dist/automation/autonomousRunner.d.ts.map +1 -1
  39. package/dist/automation/autonomousRunner.js +19 -22
  40. package/dist/automation/autonomousRunner.js.map +1 -1
  41. package/dist/automation/runnerExecution.d.ts +1 -1
  42. package/dist/automation/runnerExecution.d.ts.map +1 -1
  43. package/dist/automation/runnerExecution.js +8 -9
  44. package/dist/automation/runnerExecution.js.map +1 -1
  45. package/dist/automation/workerAuditLog.d.ts.map +1 -1
  46. package/dist/automation/workerAuditLog.js +30 -31
  47. package/dist/automation/workerAuditLog.js.map +1 -1
  48. package/dist/cli/projectHandler.d.ts +18 -0
  49. package/dist/cli/projectHandler.d.ts.map +1 -0
  50. package/dist/cli/projectHandler.js +92 -0
  51. package/dist/cli/projectHandler.js.map +1 -0
  52. package/dist/cli.js +27 -0
  53. package/dist/cli.js.map +1 -1
  54. package/dist/core/config.d.ts +12 -12
  55. package/dist/core/config.js +2 -2
  56. package/dist/core/config.js.map +1 -1
  57. package/dist/core/types.d.ts +2 -2
  58. package/dist/core/types.d.ts.map +1 -1
  59. package/dist/issues/graphql/resolvers.d.ts +4 -4
  60. package/dist/issues/schema.d.ts +3 -3
  61. package/dist/knowledge/index.d.ts.map +1 -1
  62. package/dist/knowledge/index.js +12 -4
  63. package/dist/knowledge/index.js.map +1 -1
  64. package/dist/linear/format.d.ts +59 -0
  65. package/dist/linear/format.d.ts.map +1 -0
  66. package/dist/linear/format.js +108 -0
  67. package/dist/linear/format.js.map +1 -0
  68. package/dist/linear/linear.d.ts.map +1 -1
  69. package/dist/linear/linear.js +97 -155
  70. package/dist/linear/linear.js.map +1 -1
  71. package/dist/mcp/memoryServer.d.ts +3 -0
  72. package/dist/mcp/memoryServer.d.ts.map +1 -0
  73. package/dist/mcp/memoryServer.js +57 -0
  74. package/dist/mcp/memoryServer.js.map +1 -0
  75. package/dist/memory/memoryCore.d.ts +8 -0
  76. package/dist/memory/memoryCore.d.ts.map +1 -1
  77. package/dist/memory/memoryCore.js +21 -1
  78. package/dist/memory/memoryCore.js.map +1 -1
  79. package/dist/memory/repoKnowledge.d.ts +12 -0
  80. package/dist/memory/repoKnowledge.d.ts.map +1 -1
  81. package/dist/memory/repoKnowledge.js +33 -3
  82. package/dist/memory/repoKnowledge.js.map +1 -1
  83. package/dist/support/web.d.ts.map +1 -1
  84. package/dist/support/web.js +10 -10
  85. package/dist/support/web.js.map +1 -1
  86. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /** Absolute date `YYYY-MM-DD` — bodies never use relative or full-ISO dates. */
2
+ export declare function isoDate(d?: Date): string;
3
+ /** A `file:line` code reference (or just the path when no line is given). */
4
+ export declare function codeRef(file: string, line?: number): string;
5
+ export interface CommentSection {
6
+ /** Short label, e.g. "Reviewer". */
7
+ label: string;
8
+ /** A one-liner (kept inline), a multi-line note, or a list (rendered as bullets). */
9
+ body: string | string[];
10
+ }
11
+ export interface AutomationCommentInput {
12
+ /** Short bold lead, e.g. "Task complete". */
13
+ heading: string;
14
+ /** A natural one- or two-line summary in plain language — the voice of the comment. */
15
+ summary?: string;
16
+ /** Supporting details — empty ones are dropped. */
17
+ sections?: CommentSection[];
18
+ /** Trace facts for the quiet sign-off (session, attempts, …). */
19
+ meta?: Record<string, string | number | undefined>;
20
+ /** Sign-off attribution. Default: "via OpenSwarm". */
21
+ attribution?: string;
22
+ /** Sign-off date (absolute). Defaults to today. */
23
+ date?: Date;
24
+ }
25
+ /**
26
+ * Build a comment that reads like a person wrote it: bold lead, a plain-language
27
+ * summary, a few supporting details, and a single muted (italic) sign-off line
28
+ * carrying just enough trace to find the run later.
29
+ */
30
+ export declare function formatAutomationComment(input: AutomationCommentInput): string;
31
+ export interface IssueDescriptionInput {
32
+ problem?: string;
33
+ cause?: string;
34
+ solution?: string;
35
+ verification?: string;
36
+ }
37
+ /**
38
+ * Build a bug/work issue description in the Problem / Cause / Solution /
39
+ * Verification layout. Empty sections are omitted.
40
+ */
41
+ export declare function formatIssueDescription(input: IssueDescriptionInput): string;
42
+ export interface TaskDescriptionInput {
43
+ /** One-line (or short) summary of the sub-task. */
44
+ summary: string;
45
+ scope?: string[];
46
+ verify?: string[];
47
+ dependsOn?: string[];
48
+ fileScope?: string[];
49
+ estimateMinutes?: number;
50
+ /** Parent title for the auto-decomposition sign-off. */
51
+ parentTitle?: string;
52
+ }
53
+ /**
54
+ * Build a decomposition sub-issue description: a summary, then scannable
55
+ * Scope / Verify sections and a short facts list (depends-on, file scope,
56
+ * estimate), with a quiet sign-off.
57
+ */
58
+ export declare function formatTaskDescription(input: TaskDescriptionInput): string;
59
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/linear/format.ts"],"names":[],"mappings":"AAYA,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,CAAC,GAAE,IAAiB,GAAG,MAAM,CAEpD;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAID,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB;AAkBD,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAqB7E;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAW3E;AAED,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAqBzE"}
@@ -0,0 +1,108 @@
1
+ // ============================================
2
+ // OpenSwarm — Linear output formatter
3
+ // ============================================
4
+ //
5
+ // Writes Linear comments/issues the way an engineer would: a plain-language lead,
6
+ // short facts kept inline, lists only where they help, and a quiet sign-off — not
7
+ // a telemetry dump. Still scannable (conclusion first, code refs, absolute dates),
8
+ // just without the robotic feel.
9
+ //
10
+ // Pure string builders: no I/O, no side effects, so the style lives in one place
11
+ // and stays unit-testable.
12
+ /** Absolute date `YYYY-MM-DD` — bodies never use relative or full-ISO dates. */
13
+ export function isoDate(d = new Date()) {
14
+ return d.toISOString().slice(0, 10);
15
+ }
16
+ /** A `file:line` code reference (or just the path when no line is given). */
17
+ export function codeRef(file, line) {
18
+ return line != null ? `${file}:${line}` : file;
19
+ }
20
+ const BULLET = '- ';
21
+ /**
22
+ * Render a section the way someone would jot it down: a short single-line fact
23
+ * goes inline (`**Label:** value`); a list or a multi-line note gets its own block.
24
+ */
25
+ function renderSection(section) {
26
+ if (Array.isArray(section.body)) {
27
+ const items = section.body.filter((line) => line && line.trim());
28
+ return items.length ? `**${section.label}:**\n${items.map((l) => `${BULLET}${l}`).join('\n')}` : '';
29
+ }
30
+ const text = section.body.trim();
31
+ if (!text)
32
+ return '';
33
+ return text.includes('\n')
34
+ ? `**${section.label}:**\n${text}`
35
+ : `**${section.label}:** ${text}`;
36
+ }
37
+ /**
38
+ * Build a comment that reads like a person wrote it: bold lead, a plain-language
39
+ * summary, a few supporting details, and a single muted (italic) sign-off line
40
+ * carrying just enough trace to find the run later.
41
+ */
42
+ export function formatAutomationComment(input) {
43
+ const parts = [`**${input.heading}**`];
44
+ if (input.summary?.trim())
45
+ parts.push(input.summary.trim());
46
+ for (const section of input.sections ?? []) {
47
+ const rendered = renderSection(section);
48
+ if (rendered)
49
+ parts.push(rendered);
50
+ }
51
+ const trace = [];
52
+ const attribution = input.attribution ?? 'via OpenSwarm';
53
+ if (attribution)
54
+ trace.push(attribution);
55
+ if (input.meta) {
56
+ for (const [key, value] of Object.entries(input.meta)) {
57
+ if (value !== undefined && value !== '')
58
+ trace.push(`${key} ${value}`);
59
+ }
60
+ }
61
+ trace.push(isoDate(input.date));
62
+ return `${parts.join('\n\n')}\n\n_${trace.join(' · ')}_`;
63
+ }
64
+ /**
65
+ * Build a bug/work issue description in the Problem / Cause / Solution /
66
+ * Verification layout. Empty sections are omitted.
67
+ */
68
+ export function formatIssueDescription(input) {
69
+ const order = [
70
+ ['problem', 'Problem'],
71
+ ['cause', 'Cause'],
72
+ ['solution', 'Solution'],
73
+ ['verification', 'Verification'],
74
+ ];
75
+ return order
76
+ .filter(([key]) => input[key]?.trim())
77
+ .map(([key, label]) => `**${label}** — ${input[key].trim()}`)
78
+ .join('\n\n');
79
+ }
80
+ /**
81
+ * Build a decomposition sub-issue description: a summary, then scannable
82
+ * Scope / Verify sections and a short facts list (depends-on, file scope,
83
+ * estimate), with a quiet sign-off.
84
+ */
85
+ export function formatTaskDescription(input) {
86
+ const parts = [input.summary.trim()];
87
+ if (input.scope?.length) {
88
+ parts.push(`**Scope:**\n${input.scope.map((s) => `${BULLET}${s}`).join('\n')}`);
89
+ }
90
+ if (input.verify?.length) {
91
+ parts.push(`**Verify:**\n${input.verify.map((s) => `${BULLET}${s}`).join('\n')}`);
92
+ }
93
+ const facts = [];
94
+ if (input.dependsOn?.length)
95
+ facts.push(`Depends on: ${input.dependsOn.join(', ')}`);
96
+ if (input.fileScope?.length)
97
+ facts.push(`File scope: ${input.fileScope.join(', ')}`);
98
+ if (input.estimateMinutes != null)
99
+ facts.push(`Estimate: ${input.estimateMinutes} min`);
100
+ if (facts.length)
101
+ parts.push(facts.map((f) => `${BULLET}${f}`).join('\n'));
102
+ let body = parts.join('\n\n');
103
+ if (input.parentTitle) {
104
+ body += `\n\n_Split out from "${input.parentTitle}" during planning._`;
105
+ }
106
+ return body;
107
+ }
108
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/linear/format.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/linear/linear.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/linear/linear.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  // OpenSwarm - Linear Integration
3
3
  // ============================================
4
4
  import { LinearClient } from '@linear/sdk';
5
- import { getDateLocale } from '../locale/index.js';
5
+ import { formatAutomationComment } from './format.js';
6
6
  import { setLinearClient } from './projectUpdater.js';
7
7
  import { withRateLimit } from '../support/rateLimiter.js';
8
8
  /**
@@ -654,51 +654,54 @@ export async function addComment(issueId, body) {
654
654
  }
655
655
  /** Log a HALT event (low confidence) as a comment on a Linear issue */
656
656
  export async function logHalt(issueId, sessionId, confidence, iteration, reason) {
657
- await addComment(issueId, `⚠️ **[Automation] HALT - Low Confidence**\n\nSession: \`${sessionId}\` | Confidence: ${confidence}% | Attempt: #${iteration}\nReason: ${reason}\n\n**Action Required:** Review task requirements / provide context / break into sub-tasks\n\n---\n_Auto-generated_`);
657
+ await addComment(issueId, formatAutomationComment({
658
+ heading: 'HALT — low confidence',
659
+ summary: `Confidence ${confidence}% is below threshold on attempt #${iteration}; manual input needed.`,
660
+ sections: [
661
+ { label: 'Reason', body: reason },
662
+ { label: 'Suggested next step', body: ['Review the task requirements', 'Provide more context', 'Break it into smaller sub-tasks'] },
663
+ ],
664
+ meta: { Session: sessionId, Confidence: `${confidence}%`, Attempt: `#${iteration}` },
665
+ }));
658
666
  }
659
667
  /** Log work start comment for an agent */
660
668
  export async function logWorkStart(issueId, sessionName) {
661
- await addComment(issueId, `🤖 **[${sessionName}] Work Started**\n\nTime: ${new Date().toISOString()}\n\n---\n_Auto-generated_`);
669
+ await addComment(issueId, formatAutomationComment({
670
+ heading: 'Work started',
671
+ meta: { Agent: sessionName },
672
+ }));
662
673
  await updateIssueState(issueId, 'In Progress');
663
674
  }
664
675
  /**
665
676
  * Log progress comment for an agent
666
677
  */
667
678
  export async function logProgress(issueId, sessionName, progress) {
668
- const timestamp = new Date().toISOString();
669
- const body = `🤖 **[${sessionName}] Progress Update**
670
-
671
- ${progress}
672
-
673
- Time: ${timestamp}`;
674
- await addComment(issueId, body);
679
+ await addComment(issueId, formatAutomationComment({
680
+ heading: 'Progress update',
681
+ summary: progress,
682
+ meta: { Agent: sessionName },
683
+ }));
675
684
  }
676
685
  /**
677
686
  * Log work completion comment for an agent
678
687
  */
679
688
  export async function logWorkComplete(issueId, sessionName, summary) {
680
- const timestamp = new Date().toISOString();
681
- const body = `🤖 **[${sessionName}] ✅ Work Complete**
682
-
683
- ${summary ?? ''}
684
-
685
- Time: ${timestamp}`;
686
- await addComment(issueId, body);
689
+ await addComment(issueId, formatAutomationComment({
690
+ heading: 'Work complete',
691
+ summary: summary?.trim() || undefined,
692
+ meta: { Agent: sessionName },
693
+ }));
687
694
  await updateIssueState(issueId, 'Done');
688
695
  }
689
696
  /**
690
697
  * Log blocked comment for an agent
691
698
  */
692
699
  export async function logBlocked(issueId, sessionName, reason) {
693
- const timestamp = new Date().toISOString();
694
- const body = `🤖 **[${sessionName}] ⚠️ Blocked**
695
-
696
- Reason: ${reason}
697
-
698
- User intervention required
699
-
700
- Time: ${timestamp}`;
701
- await addComment(issueId, body);
700
+ await addComment(issueId, formatAutomationComment({
701
+ heading: 'Blocked user intervention required',
702
+ sections: [{ label: 'Reason', body: reason }],
703
+ meta: { Agent: sessionName },
704
+ }));
702
705
  // Use 'Todo' instead of 'Blocked' (Blocked state may not exist in team workflow)
703
706
  await updateIssueState(issueId, 'Todo');
704
707
  }
@@ -707,162 +710,107 @@ Time: ${timestamp}`;
707
710
  * Log pair session start comment
708
711
  */
709
712
  export async function logPairStart(issueId, sessionId, projectPath) {
710
- const timestamp = new Date().toLocaleString(getDateLocale());
711
- const body = `👥 **[Pair Session] Work Started**
712
-
713
- 🆔 Session: \`${sessionId}\`
714
- 📁 Project: \`${projectPath}\`
715
- ⏰ Time: ${timestamp}
716
-
717
- Starting work in Worker/Reviewer pair mode.
718
-
719
- ---
720
- _Auto-generated_`;
721
- await addComment(issueId, body);
713
+ await addComment(issueId, formatAutomationComment({
714
+ heading: 'Pair session started',
715
+ summary: 'Starting work in Worker/Reviewer pair mode.',
716
+ meta: { Session: sessionId, Project: projectPath },
717
+ }));
722
718
  await updateIssueState(issueId, 'In Progress');
723
719
  }
724
720
  /**
725
721
  * Log pair session review start comment
726
722
  */
727
723
  export async function logPairReview(issueId, sessionId, attempt) {
728
- const timestamp = new Date().toLocaleString(getDateLocale());
729
- const body = `🔍 **[Pair Session] Reviewing**
730
-
731
- 🆔 Session: \`${sessionId}\`
732
- 🔢 Attempt: #${attempt}
733
- ⏰ Time: ${timestamp}
734
-
735
- Reviewer is reviewing Worker's output.`;
736
- await addComment(issueId, body);
724
+ await addComment(issueId, formatAutomationComment({
725
+ heading: 'Reviewing',
726
+ summary: "Reviewer is evaluating the Worker's output.",
727
+ meta: { Session: sessionId, Attempt: `#${attempt}` },
728
+ }));
737
729
  await updateIssueState(issueId, 'In Review');
738
730
  }
739
731
  /**
740
732
  * Log pair session revision request comment
741
733
  */
742
734
  export async function logPairRevision(issueId, sessionId, feedback, issues) {
743
- const timestamp = new Date().toLocaleString(getDateLocale());
744
- const issueList = issues.length > 0
745
- ? issues.map((i, idx) => `${idx + 1}. ${i}`).join('\n')
746
- : '(none)';
747
- const body = `🔄 **[Pair Session] Revision Requested**
748
-
749
- 🆔 Session: \`${sessionId}\`
750
- Time: ${timestamp}
751
-
752
- **Feedback:** ${feedback}
753
-
754
- **Issues:**
755
- ${issueList}
756
-
757
- Worker will proceed with revisions.`;
758
- await addComment(issueId, body);
735
+ await addComment(issueId, formatAutomationComment({
736
+ heading: 'Revision requested',
737
+ summary: 'Worker will proceed with revisions.',
738
+ sections: [
739
+ { label: 'Feedback', body: feedback },
740
+ { label: 'Issues', body: issues.length > 0 ? issues : ['(none)'] },
741
+ ],
742
+ meta: { Session: sessionId },
743
+ }));
759
744
  await updateIssueState(issueId, 'In Progress');
760
745
  }
761
746
  /**
762
747
  * Log pair session completion comment
763
748
  */
764
749
  export async function logPairComplete(issueId, sessionId, stats) {
765
- const timestamp = new Date().toLocaleString(getDateLocale());
766
750
  const durationStr = stats.duration < 60
767
751
  ? `${stats.duration}s`
768
752
  : `${Math.floor(stats.duration / 60)}m ${stats.duration % 60}s`;
769
- const filesStr = stats.filesChanged.length > 0
770
- ? stats.filesChanged.slice(0, 10).map(f => `- \`${f}\``).join('\n')
771
- : '(none)';
772
- // Build sections
773
753
  const sections = [];
774
- // Worker section
775
- if (stats.workerSummary) {
776
- sections.push(`## 🔨 Worker Report
777
-
778
- **What was done:**
779
- ${stats.workerSummary}`);
780
- if (stats.workerCommands && stats.workerCommands.length > 0) {
781
- const cmdStr = stats.workerCommands.slice(0, 5).map(c => `- \`${c}\``).join('\n');
782
- sections.push(`**Commands executed:**
783
- ${cmdStr}`);
784
- }
754
+ if (stats.workerCommands && stats.workerCommands.length > 0) {
755
+ sections.push({ label: 'Commands run', body: stats.workerCommands.slice(0, 5).map((c) => `\`${c}\``) });
785
756
  }
786
- // Reviewer section
787
757
  if (stats.reviewerFeedback) {
788
- sections.push(`## ✅ Reviewer Report
789
-
790
- **Decision:** ${stats.reviewerDecision || 'APPROVE'}
791
-
792
- **Feedback:**
793
- ${stats.reviewerFeedback}`);
758
+ sections.push({
759
+ label: `Reviewer — ${stats.reviewerDecision || 'APPROVE'}`,
760
+ body: stats.reviewerFeedback.trim(),
761
+ });
794
762
  }
795
- // Tester section
796
763
  if (stats.testResults) {
797
764
  const { passed, failed, coverage, failedTests } = stats.testResults;
798
765
  const totalTests = passed + failed;
799
766
  const passRate = totalTests > 0 ? ((passed / totalTests) * 100).toFixed(1) : '0';
800
- let testSection = `## 🧪 Test Results
801
-
802
- - ✅ Passed: ${passed}/${totalTests} (${passRate}%)`;
803
- if (coverage !== undefined) {
804
- testSection += `\n- 📊 Coverage: ${coverage.toFixed(1)}%`;
805
- }
767
+ const lines = [`Passed ${passed}/${totalTests} (${passRate}%)`];
768
+ if (coverage !== undefined)
769
+ lines.push(`Coverage ${coverage.toFixed(1)}%`);
806
770
  if (failed > 0 && failedTests && failedTests.length > 0) {
807
- const failedStr = failedTests.slice(0, 3).map(t => `- ${t}`).join('\n');
808
- testSection += `\n\n**Failed tests:**\n${failedStr}`;
809
- if (failedTests.length > 3) {
810
- testSection += `\n- ... and ${failedTests.length - 3} more`;
811
- }
771
+ const extra = failedTests.length > 3 ? ` (+${failedTests.length - 3} more)` : '';
772
+ lines.push(`Failed: ${failedTests.slice(0, 3).join(', ')}${extra}`);
812
773
  }
813
- sections.push(testSection);
774
+ sections.push({ label: 'Tests', body: lines });
814
775
  }
815
- // Remaining work section
816
776
  if (stats.remainingWork) {
817
- sections.push(`## 📋 Remaining Work
818
-
819
- ${stats.remainingWork}`);
777
+ sections.push({ label: 'Remaining work', body: stats.remainingWork.trim() });
820
778
  }
821
- const body = `✅ **[Automation] Task Complete**
822
-
823
- 🆔 Session: \`${sessionId}\`
824
- Completed: ${timestamp}
825
-
826
- **📊 Summary:**
827
- - 🔄 Iterations: ${stats.attempts}
828
- - ⏱️ Duration: ${durationStr}
829
- - 📁 Files changed: ${stats.filesChanged.length}
830
-
831
- **Changed files:**
832
- ${filesStr}
833
-
834
- ---
835
-
836
- ${sections.join('\n\n---\n\n')}
837
-
838
- ---
839
- _Automated by Worker/Reviewer/Tester pipeline_`;
840
- await addComment(issueId, body);
779
+ sections.push({
780
+ label: 'Changed files',
781
+ body: stats.filesChanged.length > 0
782
+ ? stats.filesChanged.slice(0, 10).map((f) => `\`${f}\``)
783
+ : ['(none)'],
784
+ });
785
+ await addComment(issueId, formatAutomationComment({
786
+ heading: 'Task complete',
787
+ summary: stats.workerSummary?.trim() || undefined,
788
+ sections,
789
+ meta: {
790
+ Session: sessionId,
791
+ Iterations: stats.attempts,
792
+ Duration: durationStr,
793
+ Files: stats.filesChanged.length,
794
+ },
795
+ attribution: 'Worker/Reviewer/Tester pipeline',
796
+ }));
841
797
  await updateIssueState(issueId, 'Done');
842
798
  }
843
799
  /**
844
800
  * Log pair session failure/rejection comment
845
801
  */
846
802
  export async function logPairFailed(issueId, sessionId, reason, details) {
847
- const timestamp = new Date().toLocaleString(getDateLocale());
848
803
  const reasonText = {
849
- rejected: 'Reviewer rejected the work',
850
- max_attempts: '⚠️ Maximum retry attempts exceeded',
851
- error: '💥 An error occurred',
804
+ rejected: 'Reviewer rejected the work',
805
+ max_attempts: 'Maximum retry attempts exceeded',
806
+ error: 'An error occurred',
852
807
  }[reason];
853
- const body = `❌ **[Pair Session] Work Failed**
854
-
855
- 🆔 Session: \`${sessionId}\`
856
- Time: ${timestamp}
857
-
858
- **Reason:** ${reasonText}
859
-
860
- **Details:**
861
- ${details}
862
-
863
- ---
864
- _Manual intervention required_`;
865
- await addComment(issueId, body);
808
+ await addComment(issueId, formatAutomationComment({
809
+ heading: 'Work failed — manual intervention required',
810
+ summary: reasonText,
811
+ sections: [{ label: 'Details', body: details }],
812
+ meta: { Session: sessionId },
813
+ }));
866
814
  // Don't change state on failure; let the user decide
867
815
  }
868
816
  /**
@@ -973,21 +921,15 @@ export async function createSubIssue(parentId, title, description, options) {
973
921
  * Mark a parent issue as 'decomposed'
974
922
  */
975
923
  export async function markAsDecomposed(issueId, subIssueCount, totalMinutes) {
976
- const timestamp = new Date().toLocaleString(getDateLocale());
977
- const body = `📋 **[Planner] Task Decomposition Complete**
978
-
979
- ⏰ Time: ${timestamp}
980
-
981
- **Decomposition result:**
982
- - Sub-issues created: ${subIssueCount}
983
- - Total estimated time: ${totalMinutes}min
984
-
985
- This issue has been decomposed into sub-issues.
986
- The parent issue remains active while child issues execute.
987
- Once all sub-issues are completed, OpenSwarm will close this issue automatically.
988
-
989
- ---
990
- _Auto-decomposed by Planner agent_`;
924
+ const body = formatAutomationComment({
925
+ heading: 'Decomposed into sub-issues',
926
+ summary: 'The parent stays active while child issues execute; it closes automatically once all sub-issues complete.',
927
+ sections: [{
928
+ label: 'Result',
929
+ body: [`Sub-issues created: ${subIssueCount}`, `Total estimated time: ${totalMinutes} min`],
930
+ }],
931
+ attribution: 'Planner agent',
932
+ });
991
933
  await addComment(issueId, body);
992
934
  // Keep parent issue active until all child issues complete.
993
935
  try {