@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,321 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { dirname, isAbsolute, join, resolve } from "node:path";
4
+ import { resolveBundledEmbeddedSkillsRootDir, resolveBundledTaskHarnessRootDir, resolveDefaultCodexHomeDir, resolveDefaultConfigPath, resolveDefaultEvolutionRootDir, resolveDefaultMemoryRootDir, resolveDefaultRuntimeRootDir } from "./optimus-paths.js";
5
+ // Default config is intentionally complete so partial project config can stay minimal.
6
+ const DEFAULT_CONFIG = {
7
+ intake: {
8
+ pollingEnabled: false,
9
+ pollingIntervalMs: 300000,
10
+ pollingProvider: "noop",
11
+ pollingSources: [],
12
+ cliWatchEnabled: true,
13
+ cliInboxDir: join(resolveDefaultRuntimeRootDir(), "inbox"),
14
+ cliSignalWatchIntervalMs: 2000
15
+ },
16
+ runtime: {
17
+ workerConcurrency: 1,
18
+ startupTimeoutMs: 60000,
19
+ idleTimeoutMs: 600000,
20
+ stallWarningMs: 300000,
21
+ runTimeoutMs: 86400000,
22
+ repoRoots: [],
23
+ taskHarnessRootDir: resolveBundledTaskHarnessRootDir(),
24
+ networkAccessEnabled: true
25
+ },
26
+ storage: {
27
+ rootDir: resolveDefaultRuntimeRootDir()
28
+ },
29
+ observability: {
30
+ enabled: true,
31
+ mode: "debug",
32
+ consoleLevel: "info",
33
+ fileLevel: "debug",
34
+ healthLogIntervalMs: 60000,
35
+ logEmptyPolls: false,
36
+ retentionDays: 7,
37
+ repeatFallbackCooldownMs: 300000,
38
+ maxRecentTasksInHealthLog: 5,
39
+ soundEnabled: true,
40
+ soundTheme: {
41
+ taskStarted: "Glass",
42
+ taskCompleted: "Hero",
43
+ taskFailed: "Basso"
44
+ }
45
+ },
46
+ jira: {
47
+ enabled: false,
48
+ baseUrl: "https://jira.example.com/",
49
+ mcpUrl: "https://jira-mcp.example.com/mcp",
50
+ authType: "http_headers",
51
+ httpHeaders: {}
52
+ },
53
+ codex: {
54
+ homeDir: resolveDefaultCodexHomeDir(),
55
+ model: "openai/gpt-5.4",
56
+ reasoningEffort: "medium",
57
+ approvalPolicy: "never",
58
+ sandboxMode: "workspace-write",
59
+ auth: {
60
+ mode: "model_provider"
61
+ }
62
+ },
63
+ skills: {
64
+ embeddedRootDir: resolveBundledEmbeddedSkillsRootDir(),
65
+ evolutionRootDir: resolveDefaultEvolutionRootDir(),
66
+ storeDir: join(resolveDefaultRuntimeRootDir(), "skills-store"),
67
+ sharedEnabled: true,
68
+ taskLevelEnabled: true,
69
+ disabledSkills: []
70
+ },
71
+ memory: {
72
+ rootDir: resolveDefaultMemoryRootDir()
73
+ },
74
+ delivery: {
75
+ enabled: true,
76
+ channels: ["console"],
77
+ summaryStyle: "dense",
78
+ feishu: {
79
+ format: "card"
80
+ },
81
+ retry: {
82
+ enabled: false,
83
+ maxAttempts: 3,
84
+ backoffMs: 1000,
85
+ backgroundEnabled: false,
86
+ backgroundCooldownMs: 300000,
87
+ backgroundScanLimit: 20
88
+ }
89
+ },
90
+ publication: {
91
+ enabled: true,
92
+ dryRun: true,
93
+ reviewMode: "auto"
94
+ },
95
+ selfUpdate: {
96
+ enabled: true,
97
+ mode: "notify",
98
+ checkIntervalHours: 24,
99
+ startupCommands: ["start", "submit"]
100
+ }
101
+ };
102
+ export function buildDefaultConfig() {
103
+ return JSON.parse(JSON.stringify(DEFAULT_CONFIG));
104
+ }
105
+ function normalizeDotEnvValue(rawValue) {
106
+ const trimmed = rawValue.trim();
107
+ if ((trimmed.startsWith("\"") && trimmed.endsWith("\"")) || (trimmed.startsWith(String.fromCharCode(39)) && trimmed.endsWith(String.fromCharCode(39)))) {
108
+ return trimmed.slice(1, -1);
109
+ }
110
+ return trimmed;
111
+ }
112
+ // Lightweight .env loading keeps auth setup local to the Optimus home directory without another runtime dependency.
113
+ function loadDotEnv(configPath, envFiles = [".env.local", ".env"]) {
114
+ const configDir = dirname(resolve(configPath));
115
+ const candidates = envFiles.map((name) => join(configDir, name));
116
+ for (const path of candidates) {
117
+ try {
118
+ const raw = readFileSync(path, "utf8");
119
+ for (const line of raw.split(/\r?\n/)) {
120
+ const trimmed = line.trim();
121
+ if (!trimmed || trimmed.startsWith("#")) {
122
+ continue;
123
+ }
124
+ const index = trimmed.indexOf("=");
125
+ if (index <= 0) {
126
+ continue;
127
+ }
128
+ const key = trimmed.slice(0, index).trim();
129
+ const value = normalizeDotEnvValue(trimmed.slice(index + 1));
130
+ if (!process.env[key] && value.length > 0) {
131
+ process.env[key] = value;
132
+ }
133
+ }
134
+ }
135
+ catch {
136
+ continue;
137
+ }
138
+ }
139
+ }
140
+ function resolveConfigRelativePath(configDir, targetPath) {
141
+ if (!targetPath) {
142
+ return targetPath;
143
+ }
144
+ return isAbsolute(targetPath) ? targetPath : resolve(configDir, targetPath);
145
+ }
146
+ function resolvePollingSourcePaths(configDir, sources) {
147
+ return (sources ?? []).map((source) => {
148
+ const resolvedSource = {
149
+ ...source
150
+ };
151
+ if (source.jsonFile) {
152
+ resolvedSource.jsonFile = resolveConfigRelativePath(configDir, source.jsonFile);
153
+ }
154
+ if (source.sampleFile) {
155
+ resolvedSource.sampleFile = resolveConfigRelativePath(configDir, source.sampleFile);
156
+ }
157
+ return resolvedSource;
158
+ });
159
+ }
160
+ function resolveJiraHttpHeadersFromEnv(processEnv = process.env) {
161
+ const headers = {};
162
+ const jiraUrl = processEnv.JIRA_BASE_URL?.trim();
163
+ const username = processEnv.JIRA_USERNAME?.trim();
164
+ const personalToken = processEnv.JIRA_PERSONAL_TOKEN?.trim() || processEnv.JIRA_API_TOKEN?.trim();
165
+ if (jiraUrl) {
166
+ headers["X-Atlassian-Jira-Url"] = jiraUrl;
167
+ }
168
+ if (username) {
169
+ headers["X-Atlassian-Username"] = username;
170
+ }
171
+ if (personalToken) {
172
+ headers["X-Atlassian-Jira-Personal-Token"] = personalToken;
173
+ }
174
+ return headers;
175
+ }
176
+ function normalizeCodexProviderConfig(input, fallback) {
177
+ if (!input || typeof input !== "object") {
178
+ return fallback;
179
+ }
180
+ const candidate = input;
181
+ const id = typeof candidate.id === "string" ? candidate.id.trim() : "";
182
+ const displayName = typeof candidate.displayName === "string" ? candidate.displayName.trim() : "";
183
+ const baseUrl = typeof candidate.baseUrl === "string" ? candidate.baseUrl.trim() : "";
184
+ const apiKeyEnvName = typeof candidate.apiKeyEnvName === "string" ? candidate.apiKeyEnvName.trim() : "";
185
+ const wireApi = candidate.wireApi === "chat" ? "chat" : candidate.wireApi === "responses" ? "responses" : undefined;
186
+ if (!id || !displayName || !baseUrl || !apiKeyEnvName || !wireApi) {
187
+ return fallback;
188
+ }
189
+ return {
190
+ id,
191
+ displayName,
192
+ baseUrl,
193
+ apiKeyEnvName,
194
+ wireApi
195
+ };
196
+ }
197
+ // Config loading merges user overrides onto stable defaults instead of requiring every field.
198
+ export async function loadConfig(path = resolveDefaultConfigPath()) {
199
+ loadDotEnv(path);
200
+ const resolvedConfigPath = resolve(path);
201
+ const configDir = dirname(resolvedConfigPath);
202
+ const raw = await readFile(resolvedConfigPath, "utf8");
203
+ const parsed = JSON.parse(raw);
204
+ return {
205
+ intake: {
206
+ ...DEFAULT_CONFIG.intake,
207
+ ...parsed.intake,
208
+ cliInboxDir: resolveConfigRelativePath(configDir, parsed.intake?.cliInboxDir ?? DEFAULT_CONFIG.intake.cliInboxDir),
209
+ pollingSources: resolvePollingSourcePaths(configDir, parsed.intake?.pollingSources ?? [])
210
+ },
211
+ runtime: {
212
+ ...DEFAULT_CONFIG.runtime,
213
+ ...parsed.runtime,
214
+ repoRoots: (parsed.runtime?.repoRoots ?? DEFAULT_CONFIG.runtime.repoRoots).map((entry) => resolveConfigRelativePath(configDir, entry)),
215
+ taskHarnessRootDir: resolveConfigRelativePath(configDir, parsed.runtime?.taskHarnessRootDir ?? DEFAULT_CONFIG.runtime.taskHarnessRootDir)
216
+ },
217
+ storage: {
218
+ ...DEFAULT_CONFIG.storage,
219
+ ...parsed.storage,
220
+ rootDir: resolveConfigRelativePath(configDir, parsed.storage?.rootDir ?? DEFAULT_CONFIG.storage.rootDir)
221
+ },
222
+ observability: {
223
+ ...DEFAULT_CONFIG.observability,
224
+ ...parsed.observability
225
+ },
226
+ jira: (() => {
227
+ const baseUrl = parsed.jira?.baseUrl ?? process.env.JIRA_BASE_URL?.trim() ?? DEFAULT_CONFIG.jira.baseUrl;
228
+ const mcpUrl = parsed.jira?.mcpUrl ?? process.env.JIRA_MCP_URL?.trim() ?? DEFAULT_CONFIG.jira.mcpUrl;
229
+ const authType = parsed.jira?.authType ?? process.env.JIRA_AUTH_TYPE?.trim() ?? DEFAULT_CONFIG.jira.authType;
230
+ const bearerToken = parsed.jira?.bearerToken ?? process.env.JIRA_BEARER_TOKEN?.trim();
231
+ const username = parsed.jira?.username ?? process.env.JIRA_USERNAME?.trim();
232
+ const apiToken = parsed.jira?.apiToken ?? process.env.JIRA_API_TOKEN?.trim();
233
+ const password = parsed.jira?.password ?? process.env.JIRA_PASSWORD?.trim();
234
+ const jiraConfig = {
235
+ ...DEFAULT_CONFIG.jira,
236
+ ...parsed.jira,
237
+ enabled: parsed.jira?.enabled ?? DEFAULT_CONFIG.jira.enabled,
238
+ baseUrl,
239
+ authType,
240
+ httpHeaders: {
241
+ ...resolveJiraHttpHeadersFromEnv(),
242
+ ...(parsed.jira?.httpHeaders ?? DEFAULT_CONFIG.jira.httpHeaders)
243
+ }
244
+ };
245
+ if (mcpUrl) {
246
+ jiraConfig.mcpUrl = mcpUrl;
247
+ }
248
+ if (bearerToken) {
249
+ jiraConfig.bearerToken = bearerToken;
250
+ }
251
+ if (username) {
252
+ jiraConfig.username = username;
253
+ }
254
+ if (apiToken) {
255
+ jiraConfig.apiToken = apiToken;
256
+ }
257
+ if (password) {
258
+ jiraConfig.password = password;
259
+ }
260
+ return jiraConfig;
261
+ })(),
262
+ codex: {
263
+ ...DEFAULT_CONFIG.codex,
264
+ ...parsed.codex,
265
+ auth: {
266
+ ...DEFAULT_CONFIG.codex.auth,
267
+ ...(parsed.codex?.auth ?? {}),
268
+ mode: parsed.codex?.auth?.mode
269
+ ?? (parsed.codex?.provider ? "model_provider" : DEFAULT_CONFIG.codex.auth.mode)
270
+ },
271
+ ...(() => {
272
+ const authMode = parsed.codex?.auth?.mode
273
+ ?? (parsed.codex?.provider ? "model_provider" : DEFAULT_CONFIG.codex.auth.mode);
274
+ if (authMode !== "model_provider") {
275
+ return {};
276
+ }
277
+ const provider = normalizeCodexProviderConfig(parsed.codex?.provider, DEFAULT_CONFIG.codex.provider);
278
+ return provider ? { provider } : {};
279
+ })(),
280
+ homeDir: resolveConfigRelativePath(configDir, parsed.codex?.homeDir ?? DEFAULT_CONFIG.codex.homeDir)
281
+ },
282
+ skills: {
283
+ ...DEFAULT_CONFIG.skills,
284
+ ...parsed.skills,
285
+ embeddedRootDir: resolveConfigRelativePath(configDir, parsed.skills?.embeddedRootDir ?? DEFAULT_CONFIG.skills.embeddedRootDir),
286
+ evolutionRootDir: resolveConfigRelativePath(configDir, parsed.skills?.evolutionRootDir ?? DEFAULT_CONFIG.skills.evolutionRootDir),
287
+ storeDir: resolveConfigRelativePath(configDir, parsed.skills?.storeDir ?? DEFAULT_CONFIG.skills.storeDir),
288
+ disabledSkills: parsed.skills?.disabledSkills ?? DEFAULT_CONFIG.skills.disabledSkills
289
+ },
290
+ memory: {
291
+ rootDir: resolveConfigRelativePath(configDir, parsed.memory?.rootDir ?? DEFAULT_CONFIG.memory.rootDir)
292
+ },
293
+ delivery: {
294
+ ...DEFAULT_CONFIG.delivery,
295
+ ...parsed.delivery,
296
+ channels: parsed.delivery?.channels ?? DEFAULT_CONFIG.delivery.channels,
297
+ feishu: {
298
+ ...DEFAULT_CONFIG.delivery.feishu,
299
+ ...(parsed.delivery?.feishu ?? {}),
300
+ ...(parsed.delivery?.feishu?.webhook?.trim() ? { webhook: parsed.delivery.feishu.webhook.trim() } : {}),
301
+ ...(parsed.delivery?.feishu?.webhooks?.length ? { webhooks: parsed.delivery.feishu.webhooks } : {}),
302
+ ...(parsed.delivery?.feishu?.secret?.trim() ? { secret: parsed.delivery.feishu.secret.trim() } : {})
303
+ },
304
+ retry: {
305
+ ...DEFAULT_CONFIG.delivery.retry,
306
+ ...(parsed.delivery?.retry ?? {})
307
+ }
308
+ },
309
+ publication: {
310
+ ...DEFAULT_CONFIG.publication,
311
+ ...parsed.publication
312
+ },
313
+ selfUpdate: {
314
+ ...DEFAULT_CONFIG.selfUpdate,
315
+ ...parsed.selfUpdate,
316
+ startupCommands: (parsed.selfUpdate?.startupCommands ?? DEFAULT_CONFIG.selfUpdate.startupCommands)
317
+ .filter((value) => value === "start" || value === "submit")
318
+ }
319
+ };
320
+ }
321
+ //# sourceMappingURL=load-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../src/config/load-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare function resolveOptimusHomeDir(): string;
2
+ export declare function resolveOptimusConfigDir(): string;
3
+ export declare function resolveDefaultConfigPath(): string;
4
+ export declare function resolveDefaultEnvPath(): string;
5
+ export declare function resolveDefaultRuntimeRootDir(): string;
6
+ export declare function resolveDefaultCodexHomeDir(): string;
7
+ export declare function resolveDefaultDataRootDir(): string;
8
+ export declare function resolveDefaultMemoryRootDir(): string;
9
+ export declare function resolveDefaultEvolutionRootDir(): string;
10
+ export declare function resolveDefaultUpdateStatePath(): string;
11
+ export declare function resolveDefaultTaskWorkspaceRootDir(): string;
12
+ export declare function resolveBundledTaskHarnessRootDir(): string;
13
+ export declare function resolveBundledEmbeddedSkillsRootDir(): string;
@@ -0,0 +1,44 @@
1
+ import { homedir } from "node:os";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const PACKAGE_ROOT_DIR = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
5
+ export function resolveOptimusHomeDir() {
6
+ return join(homedir(), ".optimus");
7
+ }
8
+ export function resolveOptimusConfigDir() {
9
+ return join(resolveOptimusHomeDir(), "config");
10
+ }
11
+ export function resolveDefaultConfigPath() {
12
+ return join(resolveOptimusConfigDir(), "optimus.config.json");
13
+ }
14
+ export function resolveDefaultEnvPath() {
15
+ return join(resolveOptimusConfigDir(), ".env.local");
16
+ }
17
+ export function resolveDefaultRuntimeRootDir() {
18
+ return join(resolveOptimusHomeDir(), "runtime");
19
+ }
20
+ export function resolveDefaultCodexHomeDir() {
21
+ return join(resolveDefaultRuntimeRootDir(), "codex-home");
22
+ }
23
+ export function resolveDefaultDataRootDir() {
24
+ return join(resolveOptimusHomeDir(), "data");
25
+ }
26
+ export function resolveDefaultMemoryRootDir() {
27
+ return join(resolveDefaultDataRootDir(), "repo-memory");
28
+ }
29
+ export function resolveDefaultEvolutionRootDir() {
30
+ return join(resolveDefaultDataRootDir(), "evolution-skills");
31
+ }
32
+ export function resolveDefaultUpdateStatePath() {
33
+ return join(resolveDefaultDataRootDir(), "update-state.json");
34
+ }
35
+ export function resolveDefaultTaskWorkspaceRootDir() {
36
+ return join(resolveDefaultRuntimeRootDir(), "workspaces");
37
+ }
38
+ export function resolveBundledTaskHarnessRootDir() {
39
+ return join(PACKAGE_ROOT_DIR, "task-harnesses");
40
+ }
41
+ export function resolveBundledEmbeddedSkillsRootDir() {
42
+ return join(PACKAGE_ROOT_DIR, "embedded-skills");
43
+ }
44
+ //# sourceMappingURL=optimus-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimus-paths.js","sourceRoot":"","sources":["../../src/config/optimus-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEtF,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,uBAAuB,EAAE,EAAE,qBAAqB,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,uBAAuB,EAAE,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,IAAI,CAAC,qBAAqB,EAAE,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,CAAC,4BAA4B,EAAE,EAAE,YAAY,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,CAAC,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,CAAC,yBAAyB,EAAE,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO,IAAI,CAAC,yBAAyB,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,IAAI,CAAC,yBAAyB,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,kCAAkC;IAChD,OAAO,IAAI,CAAC,4BAA4B,EAAE,EAAE,YAAY,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,OAAO,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,25 @@
1
+ export * from "./types.js";
2
+ export * from "./config/load-config.js";
3
+ export * from "./task-environment/storage/sqlite-event-store.js";
4
+ export * from "./task-environment/storage/sqlite-task-store.js";
5
+ export * from "./task-environment/intake/cli-file-intake.js";
6
+ export * from "./task-environment/intake/manual-problem-intake.js";
7
+ export * from "./task-environment/intake/polling-problem-intake.js";
8
+ export * from "./task-environment/orchestration/harness-resolver.js";
9
+ export * from "./task-environment/orchestration/harness-registry.js";
10
+ export * from "./task-environment/orchestration/task-package-assembler.js";
11
+ export * from "./task-environment/orchestration/execution-context-assembler.js";
12
+ export * from "./task-environment/orchestration/task-orchestrator.js";
13
+ export * from "./task-environment/orchestration/triage-runner.js";
14
+ export * from "./task-environment/runtime/blocking-event-queue.js";
15
+ export * from "./task-environment/runtime/optimus-runtime.js";
16
+ export * from "./task-environment/delivery/task-delivery-service.js";
17
+ export * from "./task-environment/delivery/task-delivery-dispatcher.js";
18
+ export * from "./task-environment/delivery/feishu-notifier.js";
19
+ export * from "./task-environment/delivery/task-publication-service.js";
20
+ export * from "./problem-solving-core/codex/codex-auth-resolver.js";
21
+ export * from "./problem-solving-core/codex/codex-preflight.js";
22
+ export * from "./problem-solving-core/codex/codex-runner.js";
23
+ export * from "./problem-solving-core/codex/skill-sync-service.js";
24
+ export * from "./integrations/jira/jira-client.js";
25
+ export * from "./task-environment/observability/runtime-panel.js";
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ // Public entrypoint re-exports the runtime building blocks for external integration.
2
+ export * from "./types.js";
3
+ export * from "./config/load-config.js";
4
+ export * from "./task-environment/storage/sqlite-event-store.js";
5
+ export * from "./task-environment/storage/sqlite-task-store.js";
6
+ export * from "./task-environment/intake/cli-file-intake.js";
7
+ export * from "./task-environment/intake/manual-problem-intake.js";
8
+ export * from "./task-environment/intake/polling-problem-intake.js";
9
+ export * from "./task-environment/orchestration/harness-resolver.js";
10
+ export * from "./task-environment/orchestration/harness-registry.js";
11
+ export * from "./task-environment/orchestration/task-package-assembler.js";
12
+ export * from "./task-environment/orchestration/execution-context-assembler.js";
13
+ export * from "./task-environment/orchestration/task-orchestrator.js";
14
+ export * from "./task-environment/orchestration/triage-runner.js";
15
+ export * from "./task-environment/runtime/blocking-event-queue.js";
16
+ export * from "./task-environment/runtime/optimus-runtime.js";
17
+ export * from "./task-environment/delivery/task-delivery-service.js";
18
+ export * from "./task-environment/delivery/task-delivery-dispatcher.js";
19
+ export * from "./task-environment/delivery/feishu-notifier.js";
20
+ export * from "./task-environment/delivery/task-publication-service.js";
21
+ export * from "./problem-solving-core/codex/codex-auth-resolver.js";
22
+ export * from "./problem-solving-core/codex/codex-preflight.js";
23
+ export * from "./problem-solving-core/codex/codex-runner.js";
24
+ export * from "./problem-solving-core/codex/skill-sync-service.js";
25
+ export * from "./integrations/jira/jira-client.js";
26
+ export * from "./task-environment/observability/runtime-panel.js";
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kDAAkD,CAAC;AACjE,cAAc,iDAAiD,CAAC;AAChE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,sDAAsD,CAAC;AACrE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,iEAAiE,CAAC;AAChF,cAAc,uDAAuD,CAAC;AACtE,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,sDAAsD,CAAC;AACrE,cAAc,yDAAyD,CAAC;AACxE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yDAAyD,CAAC;AACxE,cAAc,qDAAqD,CAAC;AACpE,cAAc,iDAAiD,CAAC;AAChE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,oDAAoD,CAAC;AACnE,cAAc,oCAAoC,CAAC;AACnD,cAAc,mDAAmD,CAAC"}
@@ -0,0 +1 @@
1
+ export {};