@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,629 @@
1
+ export type TaskSource = "polling" | "manual" | "api" | "system";
2
+ export type RuntimeEventProcessingStatus = "received" | "triaging" | "accepted" | "rejected" | "failed";
3
+ export type TriageDecisionType = "accepted" | "rejected";
4
+ export type TaskRunStatus = "created" | "leased" | "bootstrapping" | "sdk_starting" | "sdk_running" | "sdk_streaming" | "validating" | "completed" | "failed" | "timed_out" | "cancel_requested" | "canceled" | "recovered";
5
+ export type TaskRunHealth = "waiting_start" | "healthy_running" | "slow_running" | "suspected_stall" | "completed" | "failed" | "timed_out" | "cancel_requested" | "canceled" | "recovered";
6
+ export type TaskStatus = "queued" | "preparing" | "running" | "patch_generated" | "validating" | "completed" | "needs_human" | "failed" | "canceled";
7
+ export type Severity = "low" | "medium" | "high";
8
+ export type FailureCategory = "timeout" | "process_exit" | "parse_error" | "schema_error" | "config_error" | "network_error" | "provider_error" | "environment_error" | "input_missing" | "auth_missing" | "unknown";
9
+ export type CodexApprovalPolicy = "never" | "on-request" | "on-failure" | "untrusted";
10
+ export type CodexSandboxMode = "read-only" | "workspace-write" | "danger-full-access";
11
+ export type CodexReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh";
12
+ export type CodexAuthMode = "openai_api_key" | "codex_cli_login" | "model_provider";
13
+ export type SelfUpdateMode = "off" | "notify" | "auto";
14
+ export type SelfUpdateStartupCommand = "start" | "submit";
15
+ export type CodexWireApi = "responses" | "chat";
16
+ export type CodexConfigValue = string | number | boolean | CodexConfigValue[] | {
17
+ [key: string]: CodexConfigValue;
18
+ };
19
+ export interface CodexAuthDiagnostics {
20
+ mode: CodexAuthMode;
21
+ authenticated: boolean;
22
+ source: "config" | "env" | "cli_login" | "unknown";
23
+ apiKeyEnvName?: string;
24
+ requiredEnvVars: string[];
25
+ presentEnvVars: string[];
26
+ missingEnvVars: string[];
27
+ baseUrl?: string;
28
+ verification: "static" | "runtime_required";
29
+ providerId?: string;
30
+ providerDisplayName?: string;
31
+ }
32
+ export interface CodexPreflightCheck {
33
+ name: string;
34
+ ok: boolean;
35
+ detail: string;
36
+ failureCategory?: FailureCategory;
37
+ }
38
+ export interface CodexConnectivityCheck {
39
+ name: "sandbox_network" | "codex_auxiliary_connectivity" | "provider_connectivity";
40
+ ok: boolean;
41
+ detail: string;
42
+ host?: string;
43
+ failureCategory?: FailureCategory;
44
+ }
45
+ export interface CodexPreflightReport {
46
+ ok: boolean;
47
+ summary: string;
48
+ auth: CodexAuthDiagnostics;
49
+ checks: CodexPreflightCheck[];
50
+ resolvedModel?: string;
51
+ resolvedProvider?: string;
52
+ failureCategory?: FailureCategory;
53
+ }
54
+ export interface CodexHealthCheckResult {
55
+ ok: boolean;
56
+ summary: string;
57
+ diagnostics: {
58
+ model?: string;
59
+ provider?: string;
60
+ codexHomeDir: string;
61
+ timeoutMs: number;
62
+ approvalPolicy: CodexApprovalPolicy;
63
+ sandboxMode: CodexSandboxMode;
64
+ failureCategory?: FailureCategory;
65
+ auth?: CodexAuthDiagnostics;
66
+ preflightChecks?: CodexPreflightCheck[];
67
+ connectivityChecks?: CodexConnectivityCheck[];
68
+ };
69
+ rawOutput?: string;
70
+ }
71
+ export interface EvolutionSkillSummary {
72
+ taskType: string;
73
+ createdSkillIds: string[];
74
+ updatedSkillIds: string[];
75
+ violations: string[];
76
+ }
77
+ export interface ObservationHint {
78
+ area: string;
79
+ signal: string;
80
+ reason: string;
81
+ suggestedAction: string;
82
+ }
83
+ export interface RuntimeEventContent {
84
+ source: TaskSource;
85
+ sourceRef?: string;
86
+ sourceRecordId?: string;
87
+ contentFingerprint?: string;
88
+ title?: string;
89
+ description?: string;
90
+ content: string;
91
+ repo?: string;
92
+ branch?: string;
93
+ metadata?: Record<string, unknown>;
94
+ }
95
+ export interface FeishuAssigneeIdentity {
96
+ displayName?: string;
97
+ login?: string;
98
+ email?: string;
99
+ openId?: string;
100
+ resolvedBy?: string;
101
+ }
102
+ export interface PollingCheckpoint {
103
+ cursor?: string;
104
+ lastSourceRecordId?: string;
105
+ observedAt?: string;
106
+ acceptedCount?: number;
107
+ duplicateCount?: number;
108
+ updatedCount?: number;
109
+ skippedCount?: number;
110
+ }
111
+ export type RepositoryExecutionMode = "copy" | "inplace";
112
+ export interface RepositoryRoot {
113
+ path: string;
114
+ alias?: string;
115
+ executionMode: RepositoryExecutionMode;
116
+ enabled: boolean;
117
+ createdAt: string;
118
+ updatedAt: string;
119
+ }
120
+ export interface PollingSourceAutomationConfig {
121
+ enabled: boolean;
122
+ taskTypeHint?: string;
123
+ metadata?: Record<string, unknown>;
124
+ }
125
+ export interface PollingIntakeSourceConfig {
126
+ id: string;
127
+ type: "noop" | "sample_file" | "json_file";
128
+ enabled: boolean;
129
+ intervalMs?: number;
130
+ sampleFile?: string;
131
+ jsonFile?: string;
132
+ removeAfterRead?: boolean;
133
+ eventType?: Extract<RuntimeEventType, "problem.discovered" | "bug.discovered">;
134
+ defaultRepo?: string;
135
+ automation?: PollingSourceAutomationConfig;
136
+ }
137
+ export interface SourceRecord {
138
+ pollerId: string;
139
+ sourceRecordId: string;
140
+ contentFingerprint: string;
141
+ eventType: Extract<RuntimeEventType, "problem.discovered" | "bug.discovered">;
142
+ content: RuntimeEventContent;
143
+ }
144
+ export interface PollingEnqueueResult {
145
+ pollerId: string;
146
+ acceptedCount: number;
147
+ duplicateCount: number;
148
+ updatedCount: number;
149
+ skippedCount: number;
150
+ checkpoint?: PollingCheckpoint;
151
+ }
152
+ export type PollerStatus = "idle" | "running" | "backoff" | "failed" | "disabled";
153
+ export interface PollerStateSnapshot {
154
+ pollerId: string;
155
+ pollerType: PollingIntakeSourceConfig["type"];
156
+ enabled: boolean;
157
+ eventType: Extract<RuntimeEventType, "problem.discovered" | "bug.discovered">;
158
+ pollingIntervalMs: number;
159
+ status: PollerStatus;
160
+ lastPolledAt?: string;
161
+ lastSucceededAt?: string;
162
+ lastFailedAt?: string;
163
+ failureCount: number;
164
+ lastError?: string;
165
+ nextPollAt?: string;
166
+ lastAcceptedCount: number;
167
+ lastDuplicateCount: number;
168
+ lastUpdatedCount: number;
169
+ lastSkippedCount: number;
170
+ checkpoint?: PollingCheckpoint;
171
+ sourceRecordCount: number;
172
+ }
173
+ export type RuntimeEventType = "task.submitted_manually" | "problem.discovered" | "bug.discovered" | "task.retry_requested" | "task.cancel_requested";
174
+ export interface RuntimeEvent {
175
+ eventId: string;
176
+ type: RuntimeEventType;
177
+ content: RuntimeEventContent;
178
+ createdAt: string;
179
+ processedAt?: string;
180
+ }
181
+ export interface TriageDecisionAccepted {
182
+ decision: "accepted";
183
+ summary: string;
184
+ taskType: string;
185
+ taskPackage: TaskPackage;
186
+ }
187
+ export interface TriageDecisionRejected {
188
+ decision: "rejected";
189
+ summary: string;
190
+ reason: string;
191
+ missingInfo?: string[];
192
+ }
193
+ export type TriageDecision = TriageDecisionAccepted | TriageDecisionRejected;
194
+ export type TaskArtifactKind = "result_md" | "patch_diff" | "publication_plan" | "verification" | "review_packet" | "log" | "attachment";
195
+ export interface TaskArtifact {
196
+ kind?: TaskArtifactKind;
197
+ path: string;
198
+ createdAt: string;
199
+ }
200
+ export type DeliveryOutcome = "analysis_only" | "repair_candidate" | "verified_fix" | "canceled" | "failed";
201
+ export type TaskPublicationReviewSystemType = "gerrit" | "github" | "unknown" | "mixed";
202
+ export type TaskPublicationReviewStrategy = "gerrit_change" | "github_pr" | "manual";
203
+ export interface TaskPublicationReviewSystem {
204
+ type: TaskPublicationReviewSystemType;
205
+ strategy: TaskPublicationReviewStrategy;
206
+ remoteName?: string;
207
+ remoteUrl?: string;
208
+ host?: string;
209
+ repository?: string;
210
+ }
211
+ export interface TaskPublicationProjectState {
212
+ projectName?: string;
213
+ projectPath: string;
214
+ upstreamRemote?: string;
215
+ upstreamBranch?: string;
216
+ manifestRevision?: string;
217
+ targetBranch?: string;
218
+ targetSource?: "upstream" | "manifest_revision";
219
+ reviewSystem?: TaskPublicationReviewSystem;
220
+ }
221
+ export interface TaskPublicationGitState {
222
+ workspaceKind?: "git_root" | "repo_managed" | "plain_directory";
223
+ repoDir?: string;
224
+ branch?: string;
225
+ upstreamRemote?: string;
226
+ upstreamBranch?: string;
227
+ manifestRevision?: string;
228
+ targetBranch?: string;
229
+ targetSource?: "upstream" | "manifest_revision";
230
+ reviewSystem?: TaskPublicationReviewSystem;
231
+ repoProjects?: TaskPublicationProjectState[];
232
+ unresolvedPaths?: string[];
233
+ headCommit?: string;
234
+ cleanWorkingTree?: boolean;
235
+ }
236
+ export interface TaskPublicationStatus {
237
+ applicable: boolean;
238
+ repoBound: boolean;
239
+ hasPatch: boolean;
240
+ action: "none" | "ready_for_publish" | "published";
241
+ reason?: string;
242
+ git?: TaskPublicationGitState;
243
+ }
244
+ export interface TaskDeliveryBundle {
245
+ taskId: string;
246
+ runId?: string;
247
+ taskType: string;
248
+ outcome: DeliveryOutcome;
249
+ createdAt: string;
250
+ summary: {
251
+ title: string;
252
+ repo?: string;
253
+ sourceRef?: string;
254
+ sourceUrl?: string;
255
+ qAssignee?: FeishuAssigneeIdentity;
256
+ decision: string;
257
+ failureLog?: string;
258
+ validation?: string;
259
+ rootCauseConclusion?: string;
260
+ analysisSummary?: string;
261
+ keyEvidence?: string;
262
+ recommendedAction?: string;
263
+ analysisDocUrl?: string;
264
+ risk?: string;
265
+ nextAction?: string;
266
+ };
267
+ warnings?: string[];
268
+ artifacts: {
269
+ resultMd?: string;
270
+ patchDiff?: string;
271
+ extras: string[];
272
+ };
273
+ publication?: TaskPublicationStatus;
274
+ }
275
+ export type DeliveryChannel = "console" | "feishu";
276
+ export type TaskDeliveryAttemptStatus = "dispatched" | "skipped" | "failed";
277
+ export interface TaskDeliveryAttempt {
278
+ taskId: string;
279
+ runId?: string;
280
+ channel: DeliveryChannel;
281
+ status: TaskDeliveryAttemptStatus;
282
+ summary: string;
283
+ createdAt: string;
284
+ deliveredAt?: string;
285
+ error?: string;
286
+ }
287
+ export type TaskPublicationAttemptMode = "dry_run" | "review_submit";
288
+ export type TaskPublicationAttemptStatus = "planned" | "submitted" | "partial" | "skipped" | "failed";
289
+ export interface TaskPublicationAttempt {
290
+ taskId: string;
291
+ runId?: string;
292
+ mode: TaskPublicationAttemptMode;
293
+ status: TaskPublicationAttemptStatus;
294
+ summary: string;
295
+ createdAt: string;
296
+ artifactPath?: string;
297
+ topic?: string;
298
+ topicUrl?: string;
299
+ reviewUrl?: string;
300
+ reviewUrls?: string[];
301
+ changeId?: string;
302
+ changeIds?: string[];
303
+ error?: string;
304
+ }
305
+ export interface TaskPackage {
306
+ taskPackageId: string;
307
+ sourceEventId: string;
308
+ source: TaskSource;
309
+ sourceRef?: string;
310
+ idempotencyKey?: string;
311
+ taskType: string;
312
+ title: string;
313
+ repo?: string;
314
+ branch?: string;
315
+ input: {
316
+ description?: string;
317
+ content: string;
318
+ metadata?: Record<string, unknown>;
319
+ };
320
+ createdAt: string;
321
+ }
322
+ export interface OrchestratorTask {
323
+ taskId: string;
324
+ taskPackageId: string;
325
+ sourceEventId: string;
326
+ taskType: string;
327
+ title: string;
328
+ status: TaskStatus;
329
+ riskLevel: Severity;
330
+ createdAt: string;
331
+ updatedAt: string;
332
+ activeRunId?: string;
333
+ runCount?: number;
334
+ abortSignal?: AbortSignal;
335
+ }
336
+ export interface TaskEvent {
337
+ taskId: string;
338
+ type: string;
339
+ detail: string;
340
+ createdAt: string;
341
+ runId?: string;
342
+ sourceEventId?: string;
343
+ }
344
+ export interface TaskRun {
345
+ runId: string;
346
+ taskId: string;
347
+ taskPackageId: string;
348
+ sourceEventId?: string;
349
+ status: TaskRunStatus;
350
+ taskStatus: TaskStatus;
351
+ health?: TaskRunHealth;
352
+ startedAt: string;
353
+ endedAt?: string;
354
+ summary?: string;
355
+ failureCategory?: FailureCategory;
356
+ addresses?: {
357
+ workspaceDir?: string;
358
+ visibleRepoDir?: string;
359
+ configuredExecutionMode?: RepositoryExecutionMode;
360
+ resolvedExecutionMode?: RepositoryExecutionMode;
361
+ };
362
+ sandboxMode?: CodexSandboxMode;
363
+ approvalPolicy?: CodexApprovalPolicy;
364
+ sdkThreadId?: string;
365
+ workspaceSkillMountDir?: string;
366
+ mountedSkills?: WorkspaceSkillMount[];
367
+ lastEventAt?: string;
368
+ lastEventType?: string;
369
+ heartbeatAt?: string;
370
+ progressCounter?: number;
371
+ commandCount?: number;
372
+ fileChangeCount?: number;
373
+ lastAgentMessagePreview?: string;
374
+ cancelRequestedAt?: string;
375
+ cancelRequestSourceEventId?: string;
376
+ }
377
+ export interface PanelEvent {
378
+ at: string;
379
+ scope: "runtime" | "triage" | "task" | "runner" | "repo" | "alert";
380
+ level: "info" | "warn" | "error";
381
+ headline: string;
382
+ detail?: string;
383
+ taskId?: string;
384
+ runId?: string;
385
+ }
386
+ export interface RuntimePanelTaskSnapshot {
387
+ taskId: string;
388
+ runId?: string;
389
+ taskType: string;
390
+ status: TaskStatus;
391
+ phase: TaskRunStatus | TaskStatus;
392
+ health?: TaskRunHealth;
393
+ repo?: string;
394
+ lastHeadline: string;
395
+ currentAction?: string;
396
+ elapsedMs: number;
397
+ idleMs: number;
398
+ artifacts: string[];
399
+ }
400
+ export interface RuntimePanelState {
401
+ runtime: {
402
+ running: boolean;
403
+ queueDepth: number;
404
+ activeWorkers: number;
405
+ activeRuns: number;
406
+ stalledRuns: number;
407
+ triageStatus: string;
408
+ uptimeMs: number;
409
+ databasePath?: string;
410
+ lastEventAt?: string;
411
+ };
412
+ activeTasks: RuntimePanelTaskSnapshot[];
413
+ recentEvents: PanelEvent[];
414
+ alerts: PanelEvent[];
415
+ }
416
+ export interface ResolvedHarnessDocument {
417
+ fileName: string;
418
+ title: string;
419
+ content: string;
420
+ }
421
+ export interface ResolvedHarness {
422
+ taskType: string;
423
+ roleDocument: ResolvedHarnessDocument;
424
+ constraintsDocument: ResolvedHarnessDocument;
425
+ contextDocument: ResolvedHarnessDocument;
426
+ standardDocument: ResolvedHarnessDocument;
427
+ evolutionDocument: ResolvedHarnessDocument;
428
+ }
429
+ export interface TaskExecutionRequest {
430
+ task: OrchestratorTask;
431
+ taskPackage: TaskPackage;
432
+ harness: ResolvedHarness;
433
+ }
434
+ export interface TaskExecutionDiagnostics {
435
+ usedFallback?: boolean;
436
+ fallbackReason?: string;
437
+ failureCategory?: FailureCategory;
438
+ sdkThreadId?: string;
439
+ }
440
+ export interface TaskExecutionError {
441
+ category: FailureCategory;
442
+ message: string;
443
+ }
444
+ export interface TaskResult {
445
+ status: "completed" | "failed";
446
+ error?: TaskExecutionError;
447
+ resultPath?: string;
448
+ diagnostics?: TaskExecutionDiagnostics;
449
+ }
450
+ export type TaskExecutionResult = TaskResult;
451
+ export interface TaskStatusUpdate {
452
+ status: TaskStatus;
453
+ detail: string;
454
+ runStatus?: TaskRunStatus;
455
+ health?: TaskRunHealth;
456
+ eventType?: string;
457
+ sdkThreadId?: string;
458
+ agentMessagePreview?: string;
459
+ incrementProgressCounter?: boolean;
460
+ incrementCommandCount?: boolean;
461
+ incrementFileChangeCount?: boolean;
462
+ heartbeatAt?: string;
463
+ }
464
+ export type BuiltinSkillLevel = "shared" | "task";
465
+ export type SkillSourceKind = "embedded" | "evolution";
466
+ export interface InstalledBuiltinSkill {
467
+ id: string;
468
+ level: BuiltinSkillLevel;
469
+ sourceKind: SkillSourceKind;
470
+ version: string;
471
+ taskTypes: string[];
472
+ sourceDir: string;
473
+ storeDir: string;
474
+ mountName: string;
475
+ contentHash: string;
476
+ }
477
+ export interface WorkspaceSkillMount {
478
+ id: string;
479
+ level: BuiltinSkillLevel;
480
+ sourceKind: SkillSourceKind;
481
+ version: string;
482
+ taskTypes: string[];
483
+ sourceDir: string;
484
+ targetDir: string;
485
+ mountName: string;
486
+ }
487
+ export interface RepositoryMemoryContext {
488
+ taskType: string;
489
+ repoAlias: string;
490
+ memoryDir: string;
491
+ memoryFilePath: string;
492
+ metaFilePath: string;
493
+ exists: boolean;
494
+ content?: string;
495
+ baselineContentHash?: string;
496
+ }
497
+ export interface TaskExecutionContext {
498
+ taskRootDir: string;
499
+ addresses: import("./task-environment/execution-addresses.js").ExecutionAddresses;
500
+ sandboxMode: CodexSandboxMode;
501
+ approvalPolicy: CodexApprovalPolicy;
502
+ configuredExecutionMode?: RepositoryExecutionMode;
503
+ cleanupRequired?: boolean;
504
+ workspaceSkillMountDir?: string;
505
+ mountedSkills?: WorkspaceSkillMount[];
506
+ repoMemory?: RepositoryMemoryContext;
507
+ allowedEvolutionSkillDir?: string;
508
+ cleanup?: () => Promise<void>;
509
+ abortSignal?: AbortSignal;
510
+ onStatusUpdate?: (update: TaskStatusUpdate) => Promise<void> | void;
511
+ }
512
+ export interface OptimusConfig {
513
+ intake: {
514
+ pollingEnabled: boolean;
515
+ pollingIntervalMs: number;
516
+ pollingProvider: "noop" | "sample_file" | "json_file";
517
+ pollingSampleFile?: string;
518
+ pollingSources?: PollingIntakeSourceConfig[];
519
+ cliWatchEnabled: boolean;
520
+ cliInboxDir: string;
521
+ cliSignalWatchIntervalMs: number;
522
+ };
523
+ runtime: {
524
+ workerConcurrency: number;
525
+ startupTimeoutMs: number;
526
+ idleTimeoutMs: number;
527
+ stallWarningMs: number;
528
+ runTimeoutMs: number;
529
+ repoRoots: string[];
530
+ taskHarnessRootDir: string;
531
+ networkAccessEnabled: boolean;
532
+ };
533
+ storage: {
534
+ rootDir: string;
535
+ };
536
+ observability: {
537
+ enabled: boolean;
538
+ mode: "debug" | "release";
539
+ consoleLevel: "error" | "warn" | "info" | "debug";
540
+ fileLevel: "error" | "warn" | "info" | "debug";
541
+ healthLogIntervalMs: number;
542
+ logEmptyPolls: boolean;
543
+ retentionDays: number;
544
+ repeatFallbackCooldownMs: number;
545
+ maxRecentTasksInHealthLog: number;
546
+ soundEnabled: boolean;
547
+ soundTheme: {
548
+ taskStarted: string;
549
+ taskCompleted: string;
550
+ taskFailed: string;
551
+ };
552
+ };
553
+ jira: {
554
+ enabled: boolean;
555
+ baseUrl: string;
556
+ mcpUrl?: string;
557
+ authType: "http_headers" | "bearer" | "basic";
558
+ httpHeaders: Record<string, string>;
559
+ bearerToken?: string;
560
+ username?: string;
561
+ apiToken?: string;
562
+ password?: string;
563
+ };
564
+ codex: {
565
+ homeDir: string;
566
+ model?: string;
567
+ reasoningEffort: CodexReasoningEffort;
568
+ approvalPolicy: CodexApprovalPolicy;
569
+ sandboxMode: CodexSandboxMode;
570
+ auth: {
571
+ mode: CodexAuthMode;
572
+ };
573
+ provider?: {
574
+ id: string;
575
+ displayName: string;
576
+ baseUrl: string;
577
+ apiKeyEnvName: string;
578
+ wireApi: CodexWireApi;
579
+ };
580
+ apiKey?: string;
581
+ baseUrl?: string;
582
+ };
583
+ skills: {
584
+ embeddedRootDir: string;
585
+ evolutionRootDir: string;
586
+ storeDir: string;
587
+ sharedEnabled: boolean;
588
+ taskLevelEnabled: boolean;
589
+ disabledSkills: string[];
590
+ };
591
+ memory: {
592
+ rootDir: string;
593
+ };
594
+ delivery: {
595
+ enabled: boolean;
596
+ channels: Array<"console" | "feishu">;
597
+ summaryStyle: "dense";
598
+ feishu: {
599
+ format: "text" | "card";
600
+ webhook?: string;
601
+ webhooks?: string[];
602
+ secret?: string;
603
+ userMappings?: Record<string, {
604
+ openId: string;
605
+ displayName?: string;
606
+ email?: string;
607
+ }>;
608
+ };
609
+ retry: {
610
+ enabled: boolean;
611
+ maxAttempts: number;
612
+ backoffMs: number;
613
+ backgroundEnabled: boolean;
614
+ backgroundCooldownMs: number;
615
+ backgroundScanLimit: number;
616
+ };
617
+ };
618
+ publication: {
619
+ enabled: boolean;
620
+ dryRun: boolean;
621
+ reviewMode: "auto" | "gerrit" | "github" | "manual";
622
+ };
623
+ selfUpdate: {
624
+ enabled: boolean;
625
+ mode: SelfUpdateMode;
626
+ checkIntervalHours: number;
627
+ startupCommands: SelfUpdateStartupCommand[];
628
+ };
629
+ }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ # Repo Inspection
2
+
3
+ Use this skill when the task requires quickly understanding repository layout, module boundaries, entrypoints, or key build and test commands before making changes.
4
+
5
+ ## Workflow
6
+ - Read the task package first and identify the suspected repository area.
7
+ - Inspect repository structure, build files, and task-relevant docs before editing.
8
+ - Summarize the likely execution chain and the files that matter most to the bug.
9
+ - Prefer targeted searches and file reads over broad scans.
@@ -0,0 +1,5 @@
1
+ {
2
+ "id": "repo-inspection",
3
+ "level": "shared",
4
+ "version": "1.0.0"
5
+ }
@@ -0,0 +1,10 @@
1
+ # Android Debug Protocol
2
+
3
+ Use this skill for Android bugfix tasks that need validation planning or debugging evidence.
4
+
5
+ ## Workflow
6
+ - Prefer the strongest available validation path in the current environment.
7
+ - Try real-device or emulator functional validation first when the environment allows it.
8
+ - If functional validation is not feasible, fall back to local unit tests or a minimal focused test harness.
9
+ - Use connected Android tests only when they are the strongest practical automated check.
10
+ - If runtime validation is blocked, keep compile or code-evidence checks explicit and explain the limitation in the result.
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "android-debug-protocol",
3
+ "level": "task",
4
+ "version": "1.0.0",
5
+ "taskTypes": ["bugfix"]
6
+ }
@@ -0,0 +1,30 @@
1
+ # Harness Entry
2
+
3
+ You are working inside the Optimus relay harness.
4
+
5
+ ## Read Order
6
+
7
+ 1. `harness/CONSTRAINTS.md`
8
+ 2. `harness/CHECKLIST.md`
9
+ 3. `doc/optimus_product_prd.md`
10
+ 4. `doc/optimus_architecture_design.md`
11
+ 5. `harness/FRAMEWORK.md`
12
+ 6. `harness/GOAL.md`
13
+ 7. `harness/TASK_PLAN.md`
14
+ 8. `harness/HANDOFF.md`
15
+
16
+ ## File Roles
17
+
18
+ - `CONSTRAINTS.md`: project invariants
19
+ - `CHECKLIST.md`: end-of-change self-review
20
+ - `FRAMEWORK.md`: harness document boundaries
21
+ - `GOAL.md`: current-stage goal and non-goals
22
+ - `TASK_PLAN.md`: prioritized work queue
23
+ - `HANDOFF.md`: current state, risks, next entry point
24
+
25
+ ## Rules
26
+
27
+ - do not skip constraints or checklist
28
+ - do not put long-term rules into `HANDOFF.md`
29
+ - do not put stage status into `CONSTRAINTS.md`
30
+ - when product, architecture, state, or validation conclusions change, update the matching document