@sireai/optimus 0.1.13 → 0.1.15

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 (77) hide show
  1. package/README.md +1 -2
  2. package/dist/cli/feedback-delivery.d.ts +56 -0
  3. package/dist/cli/feedback-delivery.js +297 -0
  4. package/dist/cli/feedback-delivery.js.map +1 -0
  5. package/dist/cli/feedback.d.ts +25 -0
  6. package/dist/cli/feedback.js +143 -0
  7. package/dist/cli/feedback.js.map +1 -0
  8. package/dist/cli/optimus.js +385 -196
  9. package/dist/cli/optimus.js.map +1 -1
  10. package/dist/config/load-config.js +5 -4
  11. package/dist/config/load-config.js.map +1 -1
  12. package/dist/config/optimus-paths.d.ts +1 -0
  13. package/dist/config/optimus-paths.js +3 -0
  14. package/dist/config/optimus-paths.js.map +1 -1
  15. package/dist/integrations/feishu/feishu-auth-config.d.ts +5 -1
  16. package/dist/integrations/feishu/feishu-auth-config.js +9 -6
  17. package/dist/integrations/feishu/feishu-auth-config.js.map +1 -1
  18. package/dist/integrations/feishu/feishu-client.d.ts +2 -6
  19. package/dist/integrations/feishu/feishu-client.js +16 -41
  20. package/dist/integrations/feishu/feishu-client.js.map +1 -1
  21. package/dist/integrations/feishu/feishu-doc-service.d.ts +8 -3
  22. package/dist/integrations/feishu/feishu-doc-service.js +16 -2
  23. package/dist/integrations/feishu/feishu-doc-service.js.map +1 -1
  24. package/dist/integrations/feishu/feishu-user-service.d.ts +1 -2
  25. package/dist/integrations/feishu/feishu-user-service.js +1 -2
  26. package/dist/integrations/feishu/feishu-user-service.js.map +1 -1
  27. package/dist/integrations/jira/jira-cli.js +21 -2
  28. package/dist/integrations/jira/jira-cli.js.map +1 -1
  29. package/dist/integrations/jira/jira-client.d.ts +2 -1
  30. package/dist/integrations/jira/jira-client.js +19 -2
  31. package/dist/integrations/jira/jira-client.js.map +1 -1
  32. package/dist/integrations/jira/jira-submit.js +24 -24
  33. package/dist/integrations/jira/jira-submit.js.map +1 -1
  34. package/dist/integrations/sentry/sentry-cli.js +21 -1
  35. package/dist/integrations/sentry/sentry-cli.js.map +1 -1
  36. package/dist/problem-solving-core/codex/codex-preflight.js +8 -0
  37. package/dist/problem-solving-core/codex/codex-preflight.js.map +1 -1
  38. package/dist/problem-solving-core/codex/codex-provider-profile.js +3 -0
  39. package/dist/problem-solving-core/codex/codex-provider-profile.js.map +1 -1
  40. package/dist/task-environment/delivery/feishu-analysis-doc-service.d.ts +7 -3
  41. package/dist/task-environment/delivery/feishu-analysis-doc-service.js +62 -3
  42. package/dist/task-environment/delivery/feishu-analysis-doc-service.js.map +1 -1
  43. package/dist/task-environment/delivery/feishu-card-renderer.d.ts +1 -0
  44. package/dist/task-environment/delivery/feishu-card-renderer.js +17 -6
  45. package/dist/task-environment/delivery/feishu-card-renderer.js.map +1 -1
  46. package/dist/task-environment/delivery/feishu-notifier.d.ts +13 -0
  47. package/dist/task-environment/delivery/feishu-notifier.js +206 -22
  48. package/dist/task-environment/delivery/feishu-notifier.js.map +1 -1
  49. package/dist/task-environment/delivery/sentry-feishu-card-renderer.d.ts +1 -0
  50. package/dist/task-environment/delivery/sentry-feishu-card-renderer.js +16 -5
  51. package/dist/task-environment/delivery/sentry-feishu-card-renderer.js.map +1 -1
  52. package/dist/task-environment/observability/runtime-panel.d.ts +1 -1
  53. package/dist/task-environment/observability/runtime-panel.js +4 -1
  54. package/dist/task-environment/observability/runtime-panel.js.map +1 -1
  55. package/dist/task-environment/orchestration/task-orchestrator.d.ts +0 -1
  56. package/dist/task-environment/orchestration/task-orchestrator.js +3 -23
  57. package/dist/task-environment/orchestration/task-orchestrator.js.map +1 -1
  58. package/dist/task-environment/runtime/optimus-runtime.d.ts +1 -0
  59. package/dist/task-environment/runtime/optimus-runtime.js +2 -1
  60. package/dist/task-environment/runtime/optimus-runtime.js.map +1 -1
  61. package/dist/types.d.ts +3 -2
  62. package/package.json +3 -5
  63. package/dist/integrations/feishu/feishu-auth-service.d.ts +0 -71
  64. package/dist/integrations/feishu/feishu-auth-service.js +0 -399
  65. package/dist/integrations/feishu/feishu-auth-service.js.map +0 -1
  66. package/dist/integrations/feishu/feishu-auth-store.d.ts +0 -29
  67. package/dist/integrations/feishu/feishu-auth-store.js +0 -113
  68. package/dist/integrations/feishu/feishu-auth-store.js.map +0 -1
  69. package/dist/integrations/jira/jira-cli-config.d.ts +0 -15
  70. package/dist/integrations/jira/jira-cli-config.js +0 -100
  71. package/dist/integrations/jira/jira-cli-config.js.map +0 -1
  72. package/dist/problem-solving-core/codex/codex-global-config.d.ts +0 -17
  73. package/dist/problem-solving-core/codex/codex-global-config.js +0 -100
  74. package/dist/problem-solving-core/codex/codex-global-config.js.map +0 -1
  75. package/dist/task-environment/orchestration/triage-agent.d.ts +0 -54
  76. package/dist/task-environment/orchestration/triage-agent.js +0 -636
  77. package/dist/task-environment/orchestration/triage-agent.js.map +0 -1
@@ -1,100 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { homedir } from "node:os";
3
- import { join } from "node:path";
4
- const REQUIRED_MCP_HEADERS = [
5
- "X-Atlassian-Jira-Url",
6
- "X-Atlassian-Username",
7
- "X-Atlassian-Jira-Personal-Token"
8
- ];
9
- function isNonEmptyString(value) {
10
- return typeof value === "string" && value.trim().length > 0;
11
- }
12
- function hasCompleteMcpConfig(config) {
13
- if (config.authType !== "http_headers" || !isNonEmptyString(config.mcpUrl)) {
14
- return false;
15
- }
16
- return REQUIRED_MCP_HEADERS.every((header) => isNonEmptyString(config.httpHeaders[header]));
17
- }
18
- function extractTomlSection(raw, sectionName) {
19
- const targetHeader = `[${sectionName}]`;
20
- const lines = raw.split(/\r?\n/);
21
- const sectionLines = [];
22
- let inSection = false;
23
- for (const line of lines) {
24
- const trimmed = line.trim();
25
- if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
26
- if (trimmed === targetHeader) {
27
- inSection = true;
28
- continue;
29
- }
30
- if (inSection) {
31
- break;
32
- }
33
- }
34
- if (inSection) {
35
- sectionLines.push(line);
36
- }
37
- }
38
- return sectionLines.length > 0 ? sectionLines.join("\n") : undefined;
39
- }
40
- function extractTomlStringValue(raw, key) {
41
- const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
42
- const match = raw.match(new RegExp(`^${escapedKey}\\s*=\\s*\"([^\"]*)\"\\s*$`, "m"));
43
- return match?.[1]?.trim();
44
- }
45
- export async function readCodexJiraMcpProfile(configPath = join(homedir(), ".codex", "config.toml")) {
46
- let raw;
47
- try {
48
- raw = await readFile(configPath, "utf8");
49
- }
50
- catch {
51
- return undefined;
52
- }
53
- const jiraSection = extractTomlSection(raw, "mcp_servers.jira");
54
- const headersSection = extractTomlSection(raw, "mcp_servers.jira.http_headers");
55
- if (!jiraSection || !headersSection) {
56
- return undefined;
57
- }
58
- const mcpUrl = extractTomlStringValue(jiraSection, "url");
59
- const httpHeaders = {};
60
- for (const header of REQUIRED_MCP_HEADERS) {
61
- const value = extractTomlStringValue(headersSection, `"${header}"`);
62
- if (!isNonEmptyString(value)) {
63
- return undefined;
64
- }
65
- httpHeaders[header] = value;
66
- }
67
- if (!isNonEmptyString(mcpUrl)) {
68
- return undefined;
69
- }
70
- const baseUrl = httpHeaders["X-Atlassian-Jira-Url"];
71
- if (!isNonEmptyString(baseUrl)) {
72
- return undefined;
73
- }
74
- return {
75
- mcpUrl,
76
- baseUrl,
77
- httpHeaders
78
- };
79
- }
80
- export async function resolveJiraCliConfig(config, options = {}) {
81
- if (hasCompleteMcpConfig(config)) {
82
- return { config, source: "optimus_config" };
83
- }
84
- const codexMcpProfile = await readCodexJiraMcpProfile(options.codexConfigPath);
85
- if (!codexMcpProfile) {
86
- return { config, source: "optimus_config" };
87
- }
88
- return {
89
- source: "codex_mcp",
90
- config: {
91
- ...config,
92
- enabled: true,
93
- baseUrl: codexMcpProfile.baseUrl,
94
- mcpUrl: codexMcpProfile.mcpUrl,
95
- authType: "http_headers",
96
- httpHeaders: codexMcpProfile.httpHeaders
97
- }
98
- };
99
- }
100
- //# sourceMappingURL=jira-cli-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jira-cli-config.js","sourceRoot":"","sources":["../../../src/integrations/jira/jira-cli-config.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { OptimusConfig } from "../../types.js";
2
- export interface GlobalCodexModelProviderConfig {
3
- providerId: string;
4
- displayName?: string;
5
- baseUrl?: string;
6
- envKey?: string;
7
- wireApi?: "responses" | "chat";
8
- }
9
- export interface GlobalCodexConfigSnapshot {
10
- sourcePath: string;
11
- model?: string;
12
- modelProvider?: string;
13
- providers: Record<string, GlobalCodexModelProviderConfig>;
14
- }
15
- export declare function resolveGlobalCodexConfigPath(config: OptimusConfig, processEnv?: NodeJS.ProcessEnv): string;
16
- export declare function resolveGlobalCodexHomeDir(config: OptimusConfig, processEnv?: NodeJS.ProcessEnv): string;
17
- export declare function readGlobalCodexConfigSnapshot(config: OptimusConfig, processEnv?: NodeJS.ProcessEnv): GlobalCodexConfigSnapshot | undefined;
@@ -1,100 +0,0 @@
1
- // Global Codex config helpers read user-level Codex settings when Optimus is configured to inherit them.
2
- // They provide a minimal parser for the subset of config we need: model, model_provider, and model_providers.* provider definitions.
3
- // This module only reads and interprets config.toml state; it does not resolve secrets, mutate CODEX_HOME, or execute SDK calls.
4
- import { readFileSync } from "node:fs";
5
- import { homedir } from "node:os";
6
- import { dirname, join } from "node:path";
7
- export function resolveGlobalCodexConfigPath(config, processEnv = process.env) {
8
- const configuredPath = config.codex.globalConfigPath?.trim();
9
- if (configuredPath) {
10
- return configuredPath;
11
- }
12
- const homeDir = processEnv.HOME?.trim() || homedir();
13
- return join(homeDir, ".codex", "config.toml");
14
- }
15
- export function resolveGlobalCodexHomeDir(config, processEnv = process.env) {
16
- return dirname(resolveGlobalCodexConfigPath(config, processEnv));
17
- }
18
- export function readGlobalCodexConfigSnapshot(config, processEnv = process.env) {
19
- const sourcePath = resolveGlobalCodexConfigPath(config, processEnv);
20
- let raw = "";
21
- try {
22
- raw = readFileSync(sourcePath, "utf8");
23
- }
24
- catch {
25
- return undefined;
26
- }
27
- let model;
28
- let modelProvider;
29
- let currentSection;
30
- const providers = {};
31
- for (const line of raw.split(/\r?\n/)) {
32
- const trimmed = line.trim();
33
- if (!trimmed || trimmed.startsWith("#")) {
34
- continue;
35
- }
36
- const sectionMatch = trimmed.match(/^\[(.+)\]$/);
37
- if (sectionMatch?.[1]) {
38
- currentSection = sectionMatch[1].trim();
39
- continue;
40
- }
41
- const assignment = trimmed.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.+)$/);
42
- if (!assignment?.[1] || assignment[2] === undefined) {
43
- continue;
44
- }
45
- const key = assignment[1].trim();
46
- const value = normalizeTomlString(assignment[2]);
47
- if (!value) {
48
- continue;
49
- }
50
- if (!currentSection) {
51
- if (key === "model") {
52
- model = value;
53
- }
54
- if (key === "model_provider") {
55
- modelProvider = value;
56
- }
57
- continue;
58
- }
59
- const providerPrefix = "model_providers.";
60
- if (!currentSection.startsWith(providerPrefix)) {
61
- continue;
62
- }
63
- const providerId = currentSection.slice(providerPrefix.length).trim();
64
- if (!providerId) {
65
- continue;
66
- }
67
- const provider = (providers[providerId] ??= { providerId });
68
- if (key === "name") {
69
- provider.displayName = value;
70
- }
71
- if (key === "base_url") {
72
- provider.baseUrl = value;
73
- }
74
- if (key === "env_key") {
75
- provider.envKey = value;
76
- }
77
- if (key === "wire_api" && (value === "responses" || value === "chat")) {
78
- provider.wireApi = value;
79
- }
80
- }
81
- return {
82
- sourcePath,
83
- ...(model ? { model } : {}),
84
- ...(modelProvider ? { modelProvider } : {}),
85
- providers
86
- };
87
- }
88
- function normalizeTomlString(rawValue) {
89
- const commentIndex = rawValue.indexOf(" #");
90
- const trimmed = (commentIndex >= 0 ? rawValue.slice(0, commentIndex) : rawValue).trim();
91
- if (trimmed.length === 0) {
92
- return undefined;
93
- }
94
- const singleQuote = String.fromCharCode(39);
95
- if ((trimmed.startsWith("\"") && trimmed.endsWith("\"")) || (trimmed.startsWith(singleQuote) && trimmed.endsWith(singleQuote))) {
96
- return trimmed.slice(1, -1).trim() || undefined;
97
- }
98
- return trimmed;
99
- }
100
- //# sourceMappingURL=codex-global-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-global-config.js","sourceRoot":"","sources":["../../../src/problem-solving-core/codex/codex-global-config.ts"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- import type { CodexSandboxMode, OptimusConfig, RuntimeEvent, TriageDecision } from "../../types.js";
2
- interface TriageAgentDependencies {
3
- runCodexTurn?: (input: {
4
- prompt: Array<{
5
- type: "text";
6
- text: string;
7
- }>;
8
- outputSchema: Record<string, unknown>;
9
- timeoutMs: number;
10
- sandboxMode: CodexSandboxMode;
11
- }) => Promise<{
12
- response: string;
13
- sdkThreadId?: string;
14
- }>;
15
- }
16
- export declare class TriageAgent {
17
- private readonly config;
18
- private readonly harnessRegistry;
19
- private readonly logger;
20
- private readonly dependencies;
21
- private initialized;
22
- constructor(config: OptimusConfig, dependencies?: TriageAgentDependencies);
23
- initialize(): Promise<void>;
24
- decide(event: RuntimeEvent): Promise<TriageDecision>;
25
- private loadRoleContracts;
26
- private readRoleContract;
27
- private decideWithCodex;
28
- private materializeDecision;
29
- private decideLocally;
30
- private matchesRoleContract;
31
- private looksLikeBugReport;
32
- private looksLikeNonBugRequest;
33
- private buildCodexPrompt;
34
- private buildOutputSchema;
35
- private parseCodexDecision;
36
- private parseWarmupResponse;
37
- private runCodexTurn;
38
- private buildThreadOptions;
39
- private createExecutionSignal;
40
- private ensureCodexHome;
41
- private createCodexClient;
42
- private writeDebugResponseArtifact;
43
- private previewResponse;
44
- private resolveFailureCategory;
45
- private buildObjective;
46
- private resolveDesiredArtifactKinds;
47
- private buildRequestedCapabilities;
48
- private buildConstraints;
49
- private deriveTitle;
50
- private buildIdempotencyKey;
51
- private extractSection;
52
- private extractList;
53
- }
54
- export {};