@sireai/optimus 0.1.1

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 (204) hide show
  1. package/.env.example +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +104 -0
  4. package/dist/cli/optimus.d.ts +2 -0
  5. package/dist/cli/optimus.js +2951 -0
  6. package/dist/cli/optimus.js.map +1 -0
  7. package/dist/cli/self-update.d.ts +49 -0
  8. package/dist/cli/self-update.js +264 -0
  9. package/dist/cli/self-update.js.map +1 -0
  10. package/dist/config/load-config.d.ts +3 -0
  11. package/dist/config/load-config.js +321 -0
  12. package/dist/config/load-config.js.map +1 -0
  13. package/dist/config/optimus-paths.d.ts +13 -0
  14. package/dist/config/optimus-paths.js +44 -0
  15. package/dist/config/optimus-paths.js.map +1 -0
  16. package/dist/index.d.ts +25 -0
  17. package/dist/index.js +27 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/integrations/jira/jira-cli.d.ts +1 -0
  20. package/dist/integrations/jira/jira-cli.js +278 -0
  21. package/dist/integrations/jira/jira-cli.js.map +1 -0
  22. package/dist/integrations/jira/jira-client.d.ts +99 -0
  23. package/dist/integrations/jira/jira-client.js +521 -0
  24. package/dist/integrations/jira/jira-client.js.map +1 -0
  25. package/dist/integrations/jira/jira-submit.d.ts +71 -0
  26. package/dist/integrations/jira/jira-submit.js +351 -0
  27. package/dist/integrations/jira/jira-submit.js.map +1 -0
  28. package/dist/problem-solving-core/codex/codex-auth-resolver.d.ts +23 -0
  29. package/dist/problem-solving-core/codex/codex-auth-resolver.js +136 -0
  30. package/dist/problem-solving-core/codex/codex-auth-resolver.js.map +1 -0
  31. package/dist/problem-solving-core/codex/codex-connectivity-checks.d.ts +6 -0
  32. package/dist/problem-solving-core/codex/codex-connectivity-checks.js +81 -0
  33. package/dist/problem-solving-core/codex/codex-connectivity-checks.js.map +1 -0
  34. package/dist/problem-solving-core/codex/codex-failure-classifier.d.ts +2 -0
  35. package/dist/problem-solving-core/codex/codex-failure-classifier.js +49 -0
  36. package/dist/problem-solving-core/codex/codex-failure-classifier.js.map +1 -0
  37. package/dist/problem-solving-core/codex/codex-global-config.d.ts +17 -0
  38. package/dist/problem-solving-core/codex/codex-global-config.js +100 -0
  39. package/dist/problem-solving-core/codex/codex-global-config.js.map +1 -0
  40. package/dist/problem-solving-core/codex/codex-preflight.d.ts +13 -0
  41. package/dist/problem-solving-core/codex/codex-preflight.js +142 -0
  42. package/dist/problem-solving-core/codex/codex-preflight.js.map +1 -0
  43. package/dist/problem-solving-core/codex/codex-provider-profile.d.ts +14 -0
  44. package/dist/problem-solving-core/codex/codex-provider-profile.js +68 -0
  45. package/dist/problem-solving-core/codex/codex-provider-profile.js.map +1 -0
  46. package/dist/problem-solving-core/codex/codex-required-env.d.ts +3 -0
  47. package/dist/problem-solving-core/codex/codex-required-env.js +21 -0
  48. package/dist/problem-solving-core/codex/codex-required-env.js.map +1 -0
  49. package/dist/problem-solving-core/codex/codex-runner.d.ts +37 -0
  50. package/dist/problem-solving-core/codex/codex-runner.js +926 -0
  51. package/dist/problem-solving-core/codex/codex-runner.js.map +1 -0
  52. package/dist/problem-solving-core/codex/evolution-skill-guard.d.ts +36 -0
  53. package/dist/problem-solving-core/codex/evolution-skill-guard.js +143 -0
  54. package/dist/problem-solving-core/codex/evolution-skill-guard.js.map +1 -0
  55. package/dist/problem-solving-core/codex/repo-memory-service.d.ts +24 -0
  56. package/dist/problem-solving-core/codex/repo-memory-service.js +114 -0
  57. package/dist/problem-solving-core/codex/repo-memory-service.js.map +1 -0
  58. package/dist/problem-solving-core/codex/skill-sync-service.d.ts +35 -0
  59. package/dist/problem-solving-core/codex/skill-sync-service.js +280 -0
  60. package/dist/problem-solving-core/codex/skill-sync-service.js.map +1 -0
  61. package/dist/task-environment/cancellation/task-abort-registry.d.ts +17 -0
  62. package/dist/task-environment/cancellation/task-abort-registry.js +51 -0
  63. package/dist/task-environment/cancellation/task-abort-registry.js.map +1 -0
  64. package/dist/task-environment/cancellation/task-cancellation-service.d.ts +25 -0
  65. package/dist/task-environment/cancellation/task-cancellation-service.js +54 -0
  66. package/dist/task-environment/cancellation/task-cancellation-service.js.map +1 -0
  67. package/dist/task-environment/cancellation/task-cleanup-service.d.ts +22 -0
  68. package/dist/task-environment/cancellation/task-cleanup-service.js +67 -0
  69. package/dist/task-environment/cancellation/task-cleanup-service.js.map +1 -0
  70. package/dist/task-environment/delivery/commit-message/bugfix-commit-message-template.d.ts +13 -0
  71. package/dist/task-environment/delivery/commit-message/bugfix-commit-message-template.js +83 -0
  72. package/dist/task-environment/delivery/commit-message/bugfix-commit-message-template.js.map +1 -0
  73. package/dist/task-environment/delivery/commit-message/commit-message-builder.d.ts +6 -0
  74. package/dist/task-environment/delivery/commit-message/commit-message-builder.js +15 -0
  75. package/dist/task-environment/delivery/commit-message/commit-message-builder.js.map +1 -0
  76. package/dist/task-environment/delivery/commit-message/commit-message-template-types.d.ts +16 -0
  77. package/dist/task-environment/delivery/commit-message/commit-message-template-types.js +2 -0
  78. package/dist/task-environment/delivery/commit-message/commit-message-template-types.js.map +1 -0
  79. package/dist/task-environment/delivery/feishu-analysis-doc-service.d.ts +50 -0
  80. package/dist/task-environment/delivery/feishu-analysis-doc-service.js +454 -0
  81. package/dist/task-environment/delivery/feishu-analysis-doc-service.js.map +1 -0
  82. package/dist/task-environment/delivery/feishu-card-renderer.d.ts +38 -0
  83. package/dist/task-environment/delivery/feishu-card-renderer.js +449 -0
  84. package/dist/task-environment/delivery/feishu-card-renderer.js.map +1 -0
  85. package/dist/task-environment/delivery/feishu-content/feishu-content-renderer.d.ts +34 -0
  86. package/dist/task-environment/delivery/feishu-content/feishu-content-renderer.js +201 -0
  87. package/dist/task-environment/delivery/feishu-content/feishu-content-renderer.js.map +1 -0
  88. package/dist/task-environment/delivery/feishu-content/feishu-copy-config.d.ts +27 -0
  89. package/dist/task-environment/delivery/feishu-content/feishu-copy-config.js +74 -0
  90. package/dist/task-environment/delivery/feishu-content/feishu-copy-config.js.map +1 -0
  91. package/dist/task-environment/delivery/feishu-notifier.d.ts +45 -0
  92. package/dist/task-environment/delivery/feishu-notifier.js +250 -0
  93. package/dist/task-environment/delivery/feishu-notifier.js.map +1 -0
  94. package/dist/task-environment/delivery/feishu-templates/analysis-message-template.d.ts +6 -0
  95. package/dist/task-environment/delivery/feishu-templates/analysis-message-template.js +39 -0
  96. package/dist/task-environment/delivery/feishu-templates/analysis-message-template.js.map +1 -0
  97. package/dist/task-environment/delivery/feishu-templates/bugfix-message-template.d.ts +6 -0
  98. package/dist/task-environment/delivery/feishu-templates/bugfix-message-template.js +40 -0
  99. package/dist/task-environment/delivery/feishu-templates/bugfix-message-template.js.map +1 -0
  100. package/dist/task-environment/delivery/feishu-templates/default-message-template.d.ts +6 -0
  101. package/dist/task-environment/delivery/feishu-templates/default-message-template.js +33 -0
  102. package/dist/task-environment/delivery/feishu-templates/default-message-template.js.map +1 -0
  103. package/dist/task-environment/delivery/feishu-templates/patch-message-template.d.ts +6 -0
  104. package/dist/task-environment/delivery/feishu-templates/patch-message-template.js +40 -0
  105. package/dist/task-environment/delivery/feishu-templates/patch-message-template.js.map +1 -0
  106. package/dist/task-environment/delivery/feishu-templates/template-registry.d.ts +2 -0
  107. package/dist/task-environment/delivery/feishu-templates/template-registry.js +11 -0
  108. package/dist/task-environment/delivery/feishu-templates/template-registry.js.map +1 -0
  109. package/dist/task-environment/delivery/feishu-templates/template-types.d.ts +20 -0
  110. package/dist/task-environment/delivery/feishu-templates/template-types.js +2 -0
  111. package/dist/task-environment/delivery/feishu-templates/template-types.js.map +1 -0
  112. package/dist/task-environment/delivery/task-delivery-dispatcher.d.ts +14 -0
  113. package/dist/task-environment/delivery/task-delivery-dispatcher.js +109 -0
  114. package/dist/task-environment/delivery/task-delivery-dispatcher.js.map +1 -0
  115. package/dist/task-environment/delivery/task-delivery-service.d.ts +33 -0
  116. package/dist/task-environment/delivery/task-delivery-service.js +432 -0
  117. package/dist/task-environment/delivery/task-delivery-service.js.map +1 -0
  118. package/dist/task-environment/delivery/task-publication-service.d.ts +97 -0
  119. package/dist/task-environment/delivery/task-publication-service.js +1369 -0
  120. package/dist/task-environment/delivery/task-publication-service.js.map +1 -0
  121. package/dist/task-environment/execution-addresses.d.ts +40 -0
  122. package/dist/task-environment/execution-addresses.js +63 -0
  123. package/dist/task-environment/execution-addresses.js.map +1 -0
  124. package/dist/task-environment/intake/cli-file-intake.d.ts +12 -0
  125. package/dist/task-environment/intake/cli-file-intake.js +56 -0
  126. package/dist/task-environment/intake/cli-file-intake.js.map +1 -0
  127. package/dist/task-environment/intake/manual-problem-intake.d.ts +3 -0
  128. package/dist/task-environment/intake/manual-problem-intake.js +57 -0
  129. package/dist/task-environment/intake/manual-problem-intake.js.map +1 -0
  130. package/dist/task-environment/intake/polling-problem-intake.d.ts +14 -0
  131. package/dist/task-environment/intake/polling-problem-intake.js +232 -0
  132. package/dist/task-environment/intake/polling-problem-intake.js.map +1 -0
  133. package/dist/task-environment/observability/logger.d.ts +76 -0
  134. package/dist/task-environment/observability/logger.js +604 -0
  135. package/dist/task-environment/observability/logger.js.map +1 -0
  136. package/dist/task-environment/observability/runtime-panel.d.ts +82 -0
  137. package/dist/task-environment/observability/runtime-panel.js +1008 -0
  138. package/dist/task-environment/observability/runtime-panel.js.map +1 -0
  139. package/dist/task-environment/observability/sound-notifier.d.ts +18 -0
  140. package/dist/task-environment/observability/sound-notifier.js +71 -0
  141. package/dist/task-environment/observability/sound-notifier.js.map +1 -0
  142. package/dist/task-environment/orchestration/execution-context-assembler.d.ts +41 -0
  143. package/dist/task-environment/orchestration/execution-context-assembler.js +464 -0
  144. package/dist/task-environment/orchestration/execution-context-assembler.js.map +1 -0
  145. package/dist/task-environment/orchestration/git-change-classifier.d.ts +19 -0
  146. package/dist/task-environment/orchestration/git-change-classifier.js +106 -0
  147. package/dist/task-environment/orchestration/git-change-classifier.js.map +1 -0
  148. package/dist/task-environment/orchestration/harness-registry.d.ts +27 -0
  149. package/dist/task-environment/orchestration/harness-registry.js +116 -0
  150. package/dist/task-environment/orchestration/harness-registry.js.map +1 -0
  151. package/dist/task-environment/orchestration/harness-resolver.d.ts +8 -0
  152. package/dist/task-environment/orchestration/harness-resolver.js +39 -0
  153. package/dist/task-environment/orchestration/harness-resolver.js.map +1 -0
  154. package/dist/task-environment/orchestration/task-orchestrator.d.ts +45 -0
  155. package/dist/task-environment/orchestration/task-orchestrator.js +1122 -0
  156. package/dist/task-environment/orchestration/task-orchestrator.js.map +1 -0
  157. package/dist/task-environment/orchestration/task-package-assembler.d.ts +4 -0
  158. package/dist/task-environment/orchestration/task-package-assembler.js +10 -0
  159. package/dist/task-environment/orchestration/task-package-assembler.js.map +1 -0
  160. package/dist/task-environment/orchestration/triage-agent.d.ts +54 -0
  161. package/dist/task-environment/orchestration/triage-agent.js +636 -0
  162. package/dist/task-environment/orchestration/triage-agent.js.map +1 -0
  163. package/dist/task-environment/orchestration/triage-runner.d.ts +65 -0
  164. package/dist/task-environment/orchestration/triage-runner.js +655 -0
  165. package/dist/task-environment/orchestration/triage-runner.js.map +1 -0
  166. package/dist/task-environment/publication-target.d.ts +12 -0
  167. package/dist/task-environment/publication-target.js +174 -0
  168. package/dist/task-environment/publication-target.js.map +1 -0
  169. package/dist/task-environment/runtime/blocking-event-queue.d.ts +7 -0
  170. package/dist/task-environment/runtime/blocking-event-queue.js +27 -0
  171. package/dist/task-environment/runtime/blocking-event-queue.js.map +1 -0
  172. package/dist/task-environment/runtime/optimus-runtime.d.ts +69 -0
  173. package/dist/task-environment/runtime/optimus-runtime.js +751 -0
  174. package/dist/task-environment/runtime/optimus-runtime.js.map +1 -0
  175. package/dist/task-environment/storage/sqlite-event-store.d.ts +52 -0
  176. package/dist/task-environment/storage/sqlite-event-store.js +288 -0
  177. package/dist/task-environment/storage/sqlite-event-store.js.map +1 -0
  178. package/dist/task-environment/storage/sqlite-task-store.d.ts +122 -0
  179. package/dist/task-environment/storage/sqlite-task-store.js +1182 -0
  180. package/dist/task-environment/storage/sqlite-task-store.js.map +1 -0
  181. package/dist/types.d.ts +629 -0
  182. package/dist/types.js +2 -0
  183. package/dist/types.js.map +1 -0
  184. package/embedded-skills/shared/repo-inspection/SKILL.md +9 -0
  185. package/embedded-skills/shared/repo-inspection/skill.json +5 -0
  186. package/embedded-skills/task/bugfix/android-debug-protocol/SKILL.md +10 -0
  187. package/embedded-skills/task/bugfix/android-debug-protocol/skill.json +6 -0
  188. package/harness/AGENTS.md +30 -0
  189. package/harness/CHECKLIST.md +44 -0
  190. package/harness/CONSTRAINTS.md +60 -0
  191. package/harness/FRAMEWORK.md +28 -0
  192. package/harness/GOAL.md +28 -0
  193. package/harness/HANDOFF.md +45 -0
  194. package/harness/TASK_PLAN.md +79 -0
  195. package/optimus.config.template.json +34 -0
  196. package/package.json +109 -0
  197. package/task-harnesses/bugfix/ACCEPT.md +47 -0
  198. package/task-harnesses/bugfix/CONSTRAINTS.md +46 -0
  199. package/task-harnesses/bugfix/CONTEXT.md +29 -0
  200. package/task-harnesses/bugfix/EVOLUTION.md +82 -0
  201. package/task-harnesses/bugfix/ROLE.md +29 -0
  202. package/task-harnesses/bugfix/STANDARD.md +250 -0
  203. package/task-harnesses/bugfix/manifest.json +13 -0
  204. package/task-harnesses/registry.json +8 -0
@@ -0,0 +1,432 @@
1
+ import { execFile } from "node:child_process";
2
+ import { readFile } from "node:fs/promises";
3
+ import { basename, join } from "node:path";
4
+ import { promisify } from "node:util";
5
+ import { detectPublicationTarget } from "../publication-target.js";
6
+ const execFileAsync = promisify(execFile);
7
+ const RESULT_SUMMARY_PATTERNS = {
8
+ validation: /^(?:[-*]\s*)?(?:Validation Summary|验证摘要)\s*[::]\s*(.+)$/iu,
9
+ rootCauseConclusion: /^(?:[-*]\s*)?(?:Strongest Current Conclusion|当前最强结论)\s*[::]\s*(.+)$/iu,
10
+ analysisSummary: /^(?:[-*]\s*)?(?:Analysis Summary|分析摘要)\s*[::]\s*(.+)$/iu,
11
+ keyEvidence: /^(?:[-*]\s*)?(?:Key Evidence|关键证据)\s*[::]\s*(.+)$/iu,
12
+ recommendedAction: /^(?:[-*]\s*)?(?:Recommended Action|建议动作)\s*[::]\s*(.+)$/iu,
13
+ analysisDocUrl: /^(?:[-*]\s*)?(?:Analysis Doc URL|分析文档链接)\s*[::]\s*(https?:\/\/\S+)$/iu
14
+ };
15
+ export class TaskDeliveryService {
16
+ async buildBundle(input) {
17
+ const resultMd = input.artifacts.find((artifact) => artifact.kind === "result_md")?.path;
18
+ const patchDiff = input.artifacts.find((artifact) => artifact.kind === "patch_diff")?.path;
19
+ const extras = input.artifacts
20
+ .filter((artifact) => artifact.kind !== "result_md" && artifact.kind !== "patch_diff")
21
+ .map((artifact) => artifact.path);
22
+ const resultSummary = await this.readResultSummary(resultMd);
23
+ const warnings = this.buildWarnings(input.task.taskType, resultMd, resultSummary.validation);
24
+ const outcome = this.resolveOutcome(input.task.status, input.artifacts, resultSummary.validation);
25
+ const failureLog = this.extractFailureKeyLog(input.latestRun?.summary, outcome);
26
+ const qAssignee = this.extractQAssignee(input.taskPackage?.metadata);
27
+ const sourceUrl = this.buildSourceUrl(input.taskPackage?.sourceRef);
28
+ const summary = {
29
+ title: input.taskPackage?.title ?? input.task.title,
30
+ ...(input.context?.repoMemory?.repoAlias ? { repo: input.context.repoMemory.repoAlias } : {}),
31
+ ...(input.taskPackage?.sourceRef ? { sourceRef: input.taskPackage.sourceRef } : {}),
32
+ ...(sourceUrl ? { sourceUrl } : {}),
33
+ ...(qAssignee ? { qAssignee } : {}),
34
+ decision: this.buildDecision(outcome),
35
+ ...(failureLog ? { failureLog } : {}),
36
+ ...(resultSummary.validation ? { validation: resultSummary.validation } : {}),
37
+ ...(resultSummary.rootCauseConclusion ? { rootCauseConclusion: resultSummary.rootCauseConclusion } : {}),
38
+ ...(resultSummary.analysisSummary ? { analysisSummary: resultSummary.analysisSummary } : {}),
39
+ ...(resultSummary.keyEvidence ? { keyEvidence: resultSummary.keyEvidence } : {}),
40
+ ...(resultSummary.recommendedAction ? { recommendedAction: resultSummary.recommendedAction } : {}),
41
+ ...(resultSummary.analysisDocUrl ? { analysisDocUrl: resultSummary.analysisDocUrl } : {}),
42
+ nextAction: this.buildNextAction(outcome)
43
+ };
44
+ const publication = await this.buildPublicationStatus(input.task, input.context, patchDiff);
45
+ return {
46
+ taskId: input.task.taskId,
47
+ ...(input.task.activeRunId ? { runId: input.task.activeRunId } : {}),
48
+ taskType: input.task.taskType,
49
+ outcome,
50
+ createdAt: new Date().toISOString(),
51
+ summary,
52
+ ...(warnings.length > 0 ? { warnings } : {}),
53
+ artifacts: {
54
+ ...(resultMd ? { resultMd } : {}),
55
+ ...(patchDiff ? { patchDiff } : {}),
56
+ extras
57
+ },
58
+ ...(publication ? { publication } : {})
59
+ };
60
+ }
61
+ async readResultSummary(resultMdPath) {
62
+ if (!resultMdPath) {
63
+ return {};
64
+ }
65
+ try {
66
+ const content = await readFile(resultMdPath, "utf8");
67
+ const summary = {};
68
+ for (const line of content.split(/\r?\n/u)) {
69
+ const trimmed = line.trim();
70
+ if (!trimmed) {
71
+ continue;
72
+ }
73
+ const validationMatch = trimmed.match(RESULT_SUMMARY_PATTERNS.validation);
74
+ if (validationMatch) {
75
+ const normalized = validationMatch[1]?.trim().replace(/^`|`$/g, "");
76
+ const token = normalized?.split(/\s+/u, 1)[0]?.trim();
77
+ if (token) {
78
+ summary.validation = token;
79
+ }
80
+ continue;
81
+ }
82
+ const rootCauseMatch = trimmed.match(RESULT_SUMMARY_PATTERNS.rootCauseConclusion);
83
+ if (rootCauseMatch?.[1]) {
84
+ summary.rootCauseConclusion = rootCauseMatch[1].trim();
85
+ continue;
86
+ }
87
+ const analysisSummaryMatch = trimmed.match(RESULT_SUMMARY_PATTERNS.analysisSummary);
88
+ if (analysisSummaryMatch?.[1]) {
89
+ summary.analysisSummary = analysisSummaryMatch[1].trim();
90
+ continue;
91
+ }
92
+ const evidenceMatch = trimmed.match(RESULT_SUMMARY_PATTERNS.keyEvidence);
93
+ if (evidenceMatch?.[1]) {
94
+ summary.keyEvidence = evidenceMatch[1].trim();
95
+ continue;
96
+ }
97
+ const actionMatch = trimmed.match(RESULT_SUMMARY_PATTERNS.recommendedAction);
98
+ if (actionMatch?.[1]) {
99
+ summary.recommendedAction = actionMatch[1].trim();
100
+ continue;
101
+ }
102
+ const docUrlMatch = trimmed.match(RESULT_SUMMARY_PATTERNS.analysisDocUrl);
103
+ if (docUrlMatch?.[1]) {
104
+ summary.analysisDocUrl = docUrlMatch[1].trim();
105
+ }
106
+ }
107
+ return summary;
108
+ }
109
+ catch {
110
+ return {};
111
+ }
112
+ }
113
+ buildWarnings(taskType, resultMdPath, validationSummary) {
114
+ if (taskType !== "bugfix" || !resultMdPath || validationSummary) {
115
+ return [];
116
+ }
117
+ return ["bugfix_result_missing_validation_summary"];
118
+ }
119
+ extractQAssignee(metadata) {
120
+ const raw = metadata?.qAssignee;
121
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
122
+ return undefined;
123
+ }
124
+ const record = raw;
125
+ const displayName = this.readOptionalString(record.displayName);
126
+ const login = this.readOptionalString(record.login);
127
+ const email = this.readOptionalString(record.email);
128
+ const openId = this.readOptionalString(record.openId);
129
+ const resolvedBy = this.readOptionalString(record.resolvedBy);
130
+ const qAssignee = {
131
+ ...(displayName ? { displayName } : {}),
132
+ ...(login ? { login } : {}),
133
+ ...(email ? { email } : {}),
134
+ ...(openId ? { openId } : {}),
135
+ ...(resolvedBy ? { resolvedBy } : {})
136
+ };
137
+ return Object.keys(qAssignee).length > 0 ? qAssignee : undefined;
138
+ }
139
+ extractFailureKeyLog(summary, outcome) {
140
+ if (outcome !== "failed") {
141
+ return undefined;
142
+ }
143
+ const normalized = summary?.trim();
144
+ if (!normalized) {
145
+ return undefined;
146
+ }
147
+ const compacted = normalized
148
+ .replace(/^\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\.\d{3}\s+/u, "")
149
+ .replace(/^\[[^\]]+\]\s+/u, "")
150
+ .replace(/^task#[a-z0-9]+\s+/iu, "")
151
+ .replace(/^Task failed:\s*/iu, "")
152
+ .replace(/^Task execution failed:\s*/iu, "")
153
+ .replace(/\s+/gu, " ")
154
+ .trim();
155
+ if (!compacted) {
156
+ return undefined;
157
+ }
158
+ return compacted.length > 140 ? `${compacted.slice(0, 137)}...` : compacted;
159
+ }
160
+ buildSourceUrl(sourceRef) {
161
+ const normalized = sourceRef?.trim();
162
+ if (!normalized) {
163
+ return undefined;
164
+ }
165
+ if (/^[A-Z][A-Z0-9_]+-\d+$/.test(normalized) && process.env.JIRA_BASE_URL?.trim()) {
166
+ return `${process.env.JIRA_BASE_URL.replace(/\/$/, "")}/browse/${normalized}`;
167
+ }
168
+ return undefined;
169
+ }
170
+ readOptionalString(value) {
171
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
172
+ }
173
+ resolveOutcome(status, artifacts, validationSummary) {
174
+ if (status === "canceled") {
175
+ return "canceled";
176
+ }
177
+ if (status === "failed" || status === "needs_human") {
178
+ return "failed";
179
+ }
180
+ const hasPatch = artifacts.some((artifact) => artifact.kind === "patch_diff");
181
+ if (!hasPatch) {
182
+ return "analysis_only";
183
+ }
184
+ const normalizedValidation = validationSummary?.toLowerCase() ?? "";
185
+ if (["compile_passed", "module_build_passed", "code_reviewed"].includes(normalizedValidation)) {
186
+ return "repair_candidate";
187
+ }
188
+ return "verified_fix";
189
+ }
190
+ buildDecision(outcome) {
191
+ switch (outcome) {
192
+ case "analysis_only":
193
+ return "Analysis delivered.";
194
+ case "repair_candidate":
195
+ return "Patch generated as repair candidate.";
196
+ case "verified_fix":
197
+ return "Verified fix delivered.";
198
+ case "canceled":
199
+ return "Task canceled before delivery completion.";
200
+ default:
201
+ return "Task failed before trustworthy delivery.";
202
+ }
203
+ }
204
+ buildNextAction(outcome) {
205
+ switch (outcome) {
206
+ case "analysis_only":
207
+ return "Review analysis artifact.";
208
+ case "repair_candidate":
209
+ case "verified_fix":
210
+ return "Review patch and publication readiness.";
211
+ case "canceled":
212
+ return "Review cancellation reason and retained artifacts if any.";
213
+ default:
214
+ return "Inspect failure and retry conditions.";
215
+ }
216
+ }
217
+ async buildPublicationStatus(task, context, patchDiff) {
218
+ if (task.taskType !== "bugfix") {
219
+ return {
220
+ applicable: false,
221
+ repoBound: false,
222
+ hasPatch: false,
223
+ action: "none",
224
+ reason: "publication_not_applicable"
225
+ };
226
+ }
227
+ const repoDir = context?.addresses.sourceDir ?? context?.addresses.workspaceDir;
228
+ const repoBound = Boolean(repoDir);
229
+ const hasPatch = Boolean(patchDiff);
230
+ if (!repoDir || !hasPatch) {
231
+ return {
232
+ applicable: true,
233
+ repoBound,
234
+ hasPatch,
235
+ action: "none",
236
+ reason: !repoDir ? "workspace_missing" : "patch_missing"
237
+ };
238
+ }
239
+ const git = await this.inspectGitState(repoDir, patchDiff ?? "");
240
+ if (git.targetBranch) {
241
+ return {
242
+ applicable: true,
243
+ repoBound: true,
244
+ hasPatch: true,
245
+ action: "ready_for_publish",
246
+ git
247
+ };
248
+ }
249
+ return {
250
+ applicable: true,
251
+ repoBound: true,
252
+ hasPatch: true,
253
+ action: "none",
254
+ reason: "upstream_missing",
255
+ git
256
+ };
257
+ }
258
+ async inspectGitState(repoDir, patchDiff) {
259
+ const branch = await this.readGit(repoDir, ["rev-parse", "--abbrev-ref", "HEAD"]);
260
+ const headCommit = await this.readGit(repoDir, ["rev-parse", "HEAD"]);
261
+ const upstream = await this.readGit(repoDir, ["rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{upstream}"]);
262
+ const status = await this.readGit(repoDir, ["status", "--short"]);
263
+ const changedPaths = await this.readPatchChangedPaths(patchDiff);
264
+ const publicationTarget = await detectPublicationTarget(repoDir, changedPaths);
265
+ const [upstreamRemote, ...upstreamBranchParts] = upstream ? upstream.split("/") : [];
266
+ const upstreamBranch = upstreamBranchParts.length > 0 ? upstreamBranchParts.join("/") : undefined;
267
+ const manifestRevision = publicationTarget.workspaceKind === "repo_managed" ? publicationTarget.manifestRevision : undefined;
268
+ const reviewSystem = await this.resolveReviewSystem(repoDir, upstreamRemote);
269
+ const repoProjects = publicationTarget.workspaceKind === "repo_managed"
270
+ ? await this.resolveRepoProjectTargets(repoDir, publicationTarget.repoProjects ?? [])
271
+ : undefined;
272
+ const projectTargetBranch = this.findManifestTargetBranch(repoProjects);
273
+ const targetBranch = upstreamBranch ?? projectTargetBranch ?? manifestRevision;
274
+ const targetSource = upstreamBranch
275
+ ? "upstream"
276
+ : projectTargetBranch || manifestRevision
277
+ ? "manifest_revision"
278
+ : undefined;
279
+ return {
280
+ workspaceKind: publicationTarget.workspaceKind,
281
+ repoDir,
282
+ ...(branch ? { branch } : {}),
283
+ ...(headCommit ? { headCommit } : {}),
284
+ ...(upstreamRemote ? { upstreamRemote } : {}),
285
+ ...(upstreamBranch ? { upstreamBranch } : {}),
286
+ ...(manifestRevision ? { manifestRevision } : {}),
287
+ ...(targetBranch ? { targetBranch } : {}),
288
+ ...(targetSource ? { targetSource } : {}),
289
+ ...(reviewSystem ? { reviewSystem } : {}),
290
+ ...(repoProjects && repoProjects.length > 0 ? { repoProjects } : {}),
291
+ ...(publicationTarget.unresolvedPaths && publicationTarget.unresolvedPaths.length > 0 ? { unresolvedPaths: publicationTarget.unresolvedPaths } : {}),
292
+ cleanWorkingTree: !status
293
+ };
294
+ }
295
+ async resolveRepoProjectTargets(repoDir, projects) {
296
+ const resolved = [];
297
+ for (const project of projects) {
298
+ const projectDir = join(repoDir, project.projectPath);
299
+ const upstream = await this.readGit(projectDir, ["rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{upstream}"]);
300
+ const [upstreamRemote, ...upstreamBranchParts] = upstream ? upstream.split("/") : [];
301
+ const upstreamBranch = upstreamBranchParts.length > 0 ? upstreamBranchParts.join("/") : undefined;
302
+ const targetBranch = upstreamBranch ?? project.manifestRevision;
303
+ const targetSource = upstreamBranch ? "upstream" : project.manifestRevision ? "manifest_revision" : undefined;
304
+ const reviewSystem = await this.resolveReviewSystem(projectDir, upstreamRemote);
305
+ resolved.push({
306
+ ...(project.projectName ? { projectName: project.projectName } : {}),
307
+ projectPath: project.projectPath,
308
+ ...(upstreamRemote ? { upstreamRemote } : {}),
309
+ ...(upstreamBranch ? { upstreamBranch } : {}),
310
+ ...(project.manifestRevision ? { manifestRevision: project.manifestRevision } : {}),
311
+ ...(targetBranch ? { targetBranch } : {}),
312
+ ...(targetSource ? { targetSource } : {}),
313
+ ...(reviewSystem ? { reviewSystem } : {})
314
+ });
315
+ }
316
+ return resolved;
317
+ }
318
+ async resolveReviewSystem(repoDir, remoteName) {
319
+ const selectedRemote = remoteName ?? (await this.readGit(repoDir, ["remote"]));
320
+ const firstRemote = selectedRemote?.split(/\r?\n/).map((entry) => entry.trim()).find((entry) => entry.length > 0);
321
+ if (!firstRemote) {
322
+ return undefined;
323
+ }
324
+ const fetchUrl = await this.readGit(repoDir, ["remote", "get-url", firstRemote]);
325
+ const pushUrl = await this.readGit(repoDir, ["remote", "get-url", "--push", firstRemote]);
326
+ const remoteUrl = pushUrl ?? fetchUrl;
327
+ if (!remoteUrl) {
328
+ return {
329
+ type: "unknown",
330
+ strategy: "manual",
331
+ remoteName: firstRemote
332
+ };
333
+ }
334
+ const normalizedCandidates = [pushUrl, fetchUrl]
335
+ .filter((value) => Boolean(value))
336
+ .map((value) => value.toLowerCase());
337
+ const host = this.extractRemoteHost(remoteUrl);
338
+ const repository = this.extractRepositoryName(remoteUrl);
339
+ if (normalizedCandidates.some((value) => value.includes("gerrit"))) {
340
+ return {
341
+ type: "gerrit",
342
+ strategy: "gerrit_change",
343
+ remoteName: firstRemote,
344
+ remoteUrl,
345
+ ...(host ? { host } : {}),
346
+ ...(repository ? { repository } : {})
347
+ };
348
+ }
349
+ if (normalizedCandidates.some((value) => value.includes("github.com") || value.startsWith("git@github.com:"))) {
350
+ return {
351
+ type: "github",
352
+ strategy: "github_pr",
353
+ remoteName: firstRemote,
354
+ remoteUrl,
355
+ ...(host ? { host } : {}),
356
+ ...(repository ? { repository } : {})
357
+ };
358
+ }
359
+ return {
360
+ type: "unknown",
361
+ strategy: "manual",
362
+ remoteName: firstRemote,
363
+ remoteUrl,
364
+ ...(host ? { host } : {}),
365
+ ...(repository ? { repository } : {})
366
+ };
367
+ }
368
+ extractRemoteHost(remoteUrl) {
369
+ const sshMatch = remoteUrl.match(/^[^@]+@([^:]+):/);
370
+ if (sshMatch?.[1]) {
371
+ return sshMatch[1];
372
+ }
373
+ try {
374
+ return new URL(remoteUrl).host;
375
+ }
376
+ catch {
377
+ return undefined;
378
+ }
379
+ }
380
+ extractRepositoryName(remoteUrl) {
381
+ const normalized = remoteUrl.replace(/\.git$/, "");
382
+ const sshMatch = normalized.startsWith("ssh://") ? undefined : normalized.match(/^[^@]+@[^:]+:(.+)$/);
383
+ if (sshMatch?.[1]) {
384
+ return sshMatch[1];
385
+ }
386
+ try {
387
+ const url = new URL(normalized);
388
+ return url.pathname.replace(/^\//, "");
389
+ }
390
+ catch {
391
+ const withoutScheme = normalized.replace(/^[a-z]+:\/\//i, "");
392
+ const firstSlash = withoutScheme.indexOf("/");
393
+ if (firstSlash >= 0) {
394
+ const tail = withoutScheme.slice(firstSlash + 1);
395
+ const portSplit = tail.indexOf("/");
396
+ if (portSplit >= 0 && /^\d+$/.test(tail.slice(0, portSplit))) {
397
+ return tail.slice(portSplit + 1);
398
+ }
399
+ return tail;
400
+ }
401
+ return basename(normalized);
402
+ }
403
+ }
404
+ findManifestTargetBranch(projects) {
405
+ return projects?.find((project) => project.targetBranch)?.targetBranch;
406
+ }
407
+ async readPatchChangedPaths(patchDiff) {
408
+ try {
409
+ const content = await readFile(patchDiff, "utf8");
410
+ const paths = content
411
+ .split(/\r?\n/)
412
+ .filter((line) => line.startsWith("+++ b/"))
413
+ .map((line) => line.slice("+++ b/".length).trim())
414
+ .filter((line) => line.length > 0 && line !== "/dev/null");
415
+ return [...new Set(paths)];
416
+ }
417
+ catch {
418
+ return [];
419
+ }
420
+ }
421
+ async readGit(repoDir, args) {
422
+ try {
423
+ const { stdout } = await execFileAsync("git", ["-C", repoDir, ...args]);
424
+ const trimmed = stdout.trim();
425
+ return trimmed.length > 0 ? trimmed : undefined;
426
+ }
427
+ catch {
428
+ return undefined;
429
+ }
430
+ }
431
+ }
432
+ //# sourceMappingURL=task-delivery-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-delivery-service.js","sourceRoot":"","sources":["../../../src/task-environment/delivery/task-delivery-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import type { TaskDeliveryBundle, TaskExecutionContext, TaskPublicationAttempt } from "../../types.js";
2
+ import { OptimusLogger } from "../observability/logger.js";
3
+ export interface BuildTaskPublicationInput {
4
+ bundle: TaskDeliveryBundle;
5
+ context?: TaskExecutionContext;
6
+ dryRun: boolean;
7
+ reviewMode?: "auto" | "gerrit" | "github" | "manual";
8
+ }
9
+ export interface TaskPublicationResult {
10
+ attempts: TaskPublicationAttempt[];
11
+ artifacts: Array<{
12
+ kind: "publication_plan" | "review_packet";
13
+ path: string;
14
+ createdAt: string;
15
+ }>;
16
+ }
17
+ export declare class TaskPublicationService {
18
+ private readonly logger?;
19
+ private readonly commitMessageBuilder;
20
+ constructor(logger?: Pick<OptimusLogger, "info" | "warn" | "error" | "debug"> | undefined);
21
+ publish(input: BuildTaskPublicationInput): Promise<TaskPublicationResult>;
22
+ private buildAttempt;
23
+ private resolvePlanContext;
24
+ private resolveEffectiveReviewSystem;
25
+ private buildOverrideReviewSystem;
26
+ private buildReviewSystemFromStrategy;
27
+ private renderTarget;
28
+ private renderPlan;
29
+ private renderReviewSystem;
30
+ private renderStrategySection;
31
+ private renderRepoManagedGerritStrategy;
32
+ private renderGerritStrategy;
33
+ private renderGithubStrategy;
34
+ private renderManualStrategy;
35
+ private buildRootProjectTarget;
36
+ private renderProjectTarget;
37
+ private renderTargetLabel;
38
+ private normalizeGerritTarget;
39
+ private normalizeGitHubBaseBranch;
40
+ private renderPlannedNextSteps;
41
+ private executeReviewSubmit;
42
+ private submitBundle;
43
+ private buildPatchTargets;
44
+ private resolveRepositoryKind;
45
+ private submitRepoManagedGerrit;
46
+ private uploadRepoManagedCommit;
47
+ private submitMultiGitRepositories;
48
+ private submitGitRoot;
49
+ private submitGitRootInplaceGerrit;
50
+ private submitGitRootCopyWorkspace;
51
+ private submitGitRootStagedGerrit;
52
+ private submitGithubTarget;
53
+ private captureBranchTrackingSnapshot;
54
+ private restoreBranchTrackingSnapshot;
55
+ private materializePatchCommit;
56
+ private commitExistingWorkspace;
57
+ private pushGerritCommit;
58
+ private refreshRepoProjectTarget;
59
+ private refreshGitTarget;
60
+ private shouldUseDirectWorkspaceCommits;
61
+ private cleanupMaterializedCommits;
62
+ private resetWorkspaceToBase;
63
+ private resolveBaseRef;
64
+ private prepareStageWorktree;
65
+ private cleanupStageWorktree;
66
+ private parsePatchSections;
67
+ private extractPatchPath;
68
+ private buildProjectPatch;
69
+ private rewritePatchForProject;
70
+ private pathMatchesProject;
71
+ private buildCommitMessage;
72
+ private buildGerritChangeId;
73
+ private buildGithubPrBody;
74
+ private buildGithubBranchName;
75
+ private buildTopic;
76
+ private buildGerritPushRef;
77
+ private requireGerritBranch;
78
+ private requireGithubBranch;
79
+ private buildPatchTarget;
80
+ private buildExecutionRecord;
81
+ private buildPatchSection;
82
+ private resolveExecutionStatus;
83
+ private buildExecutionSummary;
84
+ private collectReviewMetadata;
85
+ private renderReviewPacket;
86
+ private extractReviewUrl;
87
+ private buildGerritTopicUrl;
88
+ private extractHostFromRemoteUrl;
89
+ private slugify;
90
+ private compact;
91
+ private ensureTrailingNewline;
92
+ private readGitStatusEntries;
93
+ private stageBusinessChanges;
94
+ private runCommand;
95
+ private readCommand;
96
+ private renderExecError;
97
+ }