evil-omo 3.17.5 → 3.17.6
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.
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.ru.md +1 -1
- package/README.zh-cn.md +1 -1
- package/dist/agents/agent-builder.d.ts +2 -3
- package/dist/agents/agent-skill-resolution.d.ts +7 -0
- package/dist/agents/frontier-tool-schema-guard.d.ts +3 -0
- package/dist/agents/hephaestus/agent.d.ts +1 -1
- package/dist/agents/hephaestus/gpt-5-5.d.ts +12 -0
- package/dist/agents/sisyphus/claude-opus-4-7.d.ts +20 -0
- package/dist/agents/sisyphus/gpt-5-5.d.ts +20 -0
- package/dist/agents/sisyphus/index.d.ts +5 -0
- package/dist/agents/sisyphus/kimi-k2-6.d.ts +32 -0
- package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
- package/dist/agents/sisyphus-junior/gpt-5-5.d.ts +14 -0
- package/dist/agents/sisyphus-junior/index.d.ts +2 -0
- package/dist/agents/sisyphus-junior/kimi-k2-6.d.ts +13 -0
- package/dist/agents/types.d.ts +16 -0
- package/dist/cli/doctor/checks/model-resolution.d.ts +4 -0
- package/dist/cli/index.js +132 -79
- package/dist/hooks/ralph-loop/ralph-loop-event-handler.d.ts +1 -6
- package/dist/hooks/ralph-loop/session-event-handler.d.ts +2 -6
- package/dist/hooks/ralph-loop/types.d.ts +5 -0
- package/dist/index.js +2569 -366
- package/dist/plugin/hooks/create-core-hooks.d.ts +2 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts +2 -0
- package/dist/shared/agent-display-names.d.ts +7 -2
- package/dist/shared/agent-sort-shim.d.ts +28 -0
- package/dist/shared/file-reference-resolver.d.ts +1 -0
- package/dist/shared/posthog-activity-state.d.ts +5 -2
- package/dist/shared/posthog.d.ts +5 -0
- package/dist/tools/slashcommand/command-discovery-deps.d.ts +6 -0
- package/package.json +12 -12
- package/dist/hooks/ralph-loop/loop-session-recovery.d.ts +0 -7
package/dist/cli/index.js
CHANGED
|
@@ -6205,7 +6205,8 @@ var init_model_versions = __esm(() => {
|
|
|
6205
6205
|
"anthropic/claude-opus-4-5": "anthropic/claude-opus-4-7",
|
|
6206
6206
|
"anthropic/claude-opus-4-6": "anthropic/claude-opus-4-7",
|
|
6207
6207
|
"anthropic/claude-sonnet-4-5": "anthropic/claude-sonnet-4-6",
|
|
6208
|
-
"openai/gpt-5.3-codex": "openai/gpt-5.4"
|
|
6208
|
+
"openai/gpt-5.3-codex": "openai/gpt-5.4",
|
|
6209
|
+
"openai/gpt-5.4": "openai/gpt-5.5"
|
|
6209
6210
|
};
|
|
6210
6211
|
});
|
|
6211
6212
|
|
|
@@ -6290,12 +6291,15 @@ function migrateConfigFile(configPath, rawConfig) {
|
|
|
6290
6291
|
const copy = JSON.parse(JSON.stringify(rawConfig));
|
|
6291
6292
|
let needsWrite = false;
|
|
6292
6293
|
const sidecarMigrations = readAppliedMigrations(configPath);
|
|
6293
|
-
const inConfigMigrations = Array.isArray(copy._migrations) ? new Set(copy._migrations) : new Set;
|
|
6294
|
+
const inConfigMigrations = Array.isArray(copy._migrations) ? new Set(copy._migrations.filter((migration) => typeof migration === "string")) : new Set;
|
|
6295
|
+
const inlineAppliedMigrations = Array.isArray(copy.appliedMigrations) ? new Set(copy.appliedMigrations.filter((migration) => typeof migration === "string")) : new Set;
|
|
6294
6296
|
const existingMigrations = new Set([
|
|
6295
6297
|
...sidecarMigrations,
|
|
6296
|
-
...inConfigMigrations
|
|
6298
|
+
...inConfigMigrations,
|
|
6299
|
+
...inlineAppliedMigrations
|
|
6297
6300
|
]);
|
|
6298
6301
|
const hadLegacyInConfigMigrations = inConfigMigrations.size > 0;
|
|
6302
|
+
const hadInlineAppliedMigrations = inlineAppliedMigrations.size > 0;
|
|
6299
6303
|
const allNewMigrations = [];
|
|
6300
6304
|
if (copy.agents && typeof copy.agents === "object") {
|
|
6301
6305
|
const { migrated, changed } = migrateAgentNames(copy.agents);
|
|
@@ -6327,11 +6331,12 @@ function migrateConfigFile(configPath, rawConfig) {
|
|
|
6327
6331
|
...existingMigrations,
|
|
6328
6332
|
...newMigrationsToRecord
|
|
6329
6333
|
]);
|
|
6330
|
-
const shouldWriteSidecar = newMigrationsToRecord.length > 0 || hadLegacyInConfigMigrations;
|
|
6334
|
+
const shouldWriteSidecar = newMigrationsToRecord.length > 0 || hadLegacyInConfigMigrations || hadInlineAppliedMigrations;
|
|
6331
6335
|
if (newMigrationsToRecord.length > 0) {
|
|
6332
6336
|
needsWrite = true;
|
|
6333
6337
|
}
|
|
6334
|
-
if (hadLegacyInConfigMigrations) {
|
|
6338
|
+
if (hadLegacyInConfigMigrations || hadInlineAppliedMigrations) {
|
|
6339
|
+
delete copy.appliedMigrations;
|
|
6335
6340
|
needsWrite = true;
|
|
6336
6341
|
}
|
|
6337
6342
|
if (shouldWriteSidecar) {
|
|
@@ -6695,11 +6700,6 @@ function stripInvisibleAgentCharacters(agentName) {
|
|
|
6695
6700
|
function stripAgentListSortPrefix(agentName) {
|
|
6696
6701
|
return stripInvisibleAgentCharacters(agentName);
|
|
6697
6702
|
}
|
|
6698
|
-
function getAgentRuntimeName(configKey) {
|
|
6699
|
-
const displayName = getAgentDisplayName(configKey);
|
|
6700
|
-
const prefix = AGENT_LIST_SORT_PREFIXES[configKey.toLowerCase()];
|
|
6701
|
-
return prefix ? `${prefix}${displayName}` : displayName;
|
|
6702
|
-
}
|
|
6703
6703
|
function getAgentDisplayName(configKey) {
|
|
6704
6704
|
const exactMatch = AGENT_DISPLAY_NAMES[configKey];
|
|
6705
6705
|
if (exactMatch !== undefined)
|
|
@@ -6727,7 +6727,7 @@ function getAgentConfigKey(agentName) {
|
|
|
6727
6727
|
const lower = stripAgentListSortPrefix(agentName).trim().toLowerCase();
|
|
6728
6728
|
return resolveKnownAgentConfigKey(agentName) ?? lower;
|
|
6729
6729
|
}
|
|
6730
|
-
var AGENT_DISPLAY_NAMES,
|
|
6730
|
+
var AGENT_DISPLAY_NAMES, INVISIBLE_AGENT_CHARACTERS_REGEX, REVERSE_DISPLAY_NAMES, LEGACY_DISPLAY_NAMES;
|
|
6731
6731
|
var init_agent_display_names = __esm(() => {
|
|
6732
6732
|
AGENT_DISPLAY_NAMES = {
|
|
6733
6733
|
sisyphus: "Sisyphus - Ultraworker",
|
|
@@ -6745,12 +6745,6 @@ var init_agent_display_names = __esm(() => {
|
|
|
6745
6745
|
"multimodal-looker": "multimodal-looker",
|
|
6746
6746
|
"council-member": "council-member"
|
|
6747
6747
|
};
|
|
6748
|
-
AGENT_LIST_SORT_PREFIXES = {
|
|
6749
|
-
sisyphus: "\u200B",
|
|
6750
|
-
hephaestus: "\u200B\u200B",
|
|
6751
|
-
prometheus: "\u200B\u200B\u200B",
|
|
6752
|
-
atlas: "\u200B\u200B\u200B\u200B"
|
|
6753
|
-
};
|
|
6754
6748
|
INVISIBLE_AGENT_CHARACTERS_REGEX = /[\u200B\u200C\u200D\uFEFF]/g;
|
|
6755
6749
|
REVERSE_DISPLAY_NAMES = Object.fromEntries(Object.entries(AGENT_DISPLAY_NAMES).map(([key, displayName]) => [displayName.toLowerCase(), key]));
|
|
6756
6750
|
LEGACY_DISPLAY_NAMES = {
|
|
@@ -6790,7 +6784,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6790
6784
|
],
|
|
6791
6785
|
model: "kimi-k2.5"
|
|
6792
6786
|
},
|
|
6793
|
-
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5.
|
|
6787
|
+
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5.5", variant: "medium" },
|
|
6794
6788
|
{ providers: ["zai-coding-plan", "opencode", "vercel"], model: "glm-5" },
|
|
6795
6789
|
{ providers: ["opencode"], model: "big-pickle" }
|
|
6796
6790
|
],
|
|
@@ -6800,7 +6794,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6800
6794
|
fallbackChain: [
|
|
6801
6795
|
{
|
|
6802
6796
|
providers: ["openai", "github-copilot", "venice", "opencode", "vercel"],
|
|
6803
|
-
model: "gpt-5.
|
|
6797
|
+
model: "gpt-5.5",
|
|
6804
6798
|
variant: "medium"
|
|
6805
6799
|
}
|
|
6806
6800
|
],
|
|
@@ -6810,7 +6804,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6810
6804
|
fallbackChain: [
|
|
6811
6805
|
{
|
|
6812
6806
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
6813
|
-
model: "gpt-5.
|
|
6807
|
+
model: "gpt-5.5",
|
|
6814
6808
|
variant: "high"
|
|
6815
6809
|
},
|
|
6816
6810
|
{
|
|
@@ -6846,7 +6840,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6846
6840
|
},
|
|
6847
6841
|
"multimodal-looker": {
|
|
6848
6842
|
fallbackChain: [
|
|
6849
|
-
{ providers: ["openai", "opencode", "vercel"], model: "gpt-5.
|
|
6843
|
+
{ providers: ["openai", "opencode", "vercel"], model: "gpt-5.5", variant: "medium" },
|
|
6850
6844
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" },
|
|
6851
6845
|
{ providers: ["zai-coding-plan", "vercel"], model: "glm-4.6v" },
|
|
6852
6846
|
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5-nano" }
|
|
@@ -6861,7 +6855,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6861
6855
|
},
|
|
6862
6856
|
{
|
|
6863
6857
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
6864
|
-
model: "gpt-5.
|
|
6858
|
+
model: "gpt-5.5",
|
|
6865
6859
|
variant: "high"
|
|
6866
6860
|
},
|
|
6867
6861
|
{ providers: ["opencode-go", "vercel"], model: "glm-5" },
|
|
@@ -6880,7 +6874,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6880
6874
|
},
|
|
6881
6875
|
{
|
|
6882
6876
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
6883
|
-
model: "gpt-5.
|
|
6877
|
+
model: "gpt-5.5",
|
|
6884
6878
|
variant: "high"
|
|
6885
6879
|
},
|
|
6886
6880
|
{ providers: ["opencode-go", "vercel"], model: "glm-5" },
|
|
@@ -6891,7 +6885,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6891
6885
|
fallbackChain: [
|
|
6892
6886
|
{
|
|
6893
6887
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
6894
|
-
model: "gpt-5.
|
|
6888
|
+
model: "gpt-5.5",
|
|
6895
6889
|
variant: "xhigh"
|
|
6896
6890
|
},
|
|
6897
6891
|
{
|
|
@@ -6913,7 +6907,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6913
6907
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" },
|
|
6914
6908
|
{
|
|
6915
6909
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
6916
|
-
model: "gpt-5.
|
|
6910
|
+
model: "gpt-5.5",
|
|
6917
6911
|
variant: "medium"
|
|
6918
6912
|
},
|
|
6919
6913
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" }
|
|
@@ -6925,7 +6919,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6925
6919
|
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" },
|
|
6926
6920
|
{
|
|
6927
6921
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
6928
|
-
model: "gpt-5.
|
|
6922
|
+
model: "gpt-5.5",
|
|
6929
6923
|
variant: "medium"
|
|
6930
6924
|
},
|
|
6931
6925
|
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
|
|
@@ -6955,7 +6949,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6955
6949
|
fallbackChain: [
|
|
6956
6950
|
{
|
|
6957
6951
|
providers: ["openai", "opencode", "vercel"],
|
|
6958
|
-
model: "gpt-5.
|
|
6952
|
+
model: "gpt-5.5",
|
|
6959
6953
|
variant: "xhigh"
|
|
6960
6954
|
},
|
|
6961
6955
|
{
|
|
@@ -6975,7 +6969,7 @@ var init_model_requirements = __esm(() => {
|
|
|
6975
6969
|
fallbackChain: [
|
|
6976
6970
|
{
|
|
6977
6971
|
providers: ["openai", "github-copilot", "venice", "opencode", "vercel"],
|
|
6978
|
-
model: "gpt-5.
|
|
6972
|
+
model: "gpt-5.5",
|
|
6979
6973
|
variant: "medium"
|
|
6980
6974
|
},
|
|
6981
6975
|
{
|
|
@@ -7002,7 +6996,7 @@ var init_model_requirements = __esm(() => {
|
|
|
7002
6996
|
model: "claude-opus-4-7",
|
|
7003
6997
|
variant: "max"
|
|
7004
6998
|
},
|
|
7005
|
-
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5.
|
|
6999
|
+
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5.5" }
|
|
7006
7000
|
],
|
|
7007
7001
|
requiresModel: "gemini-3.1-pro"
|
|
7008
7002
|
},
|
|
@@ -7052,7 +7046,7 @@ var init_model_requirements = __esm(() => {
|
|
|
7052
7046
|
},
|
|
7053
7047
|
{
|
|
7054
7048
|
providers: ["openai", "github-copilot", "opencode", "vercel"],
|
|
7055
|
-
model: "gpt-5.
|
|
7049
|
+
model: "gpt-5.5",
|
|
7056
7050
|
variant: "high"
|
|
7057
7051
|
},
|
|
7058
7052
|
{ providers: ["zai-coding-plan", "opencode", "vercel"], model: "glm-5" },
|
|
@@ -49894,6 +49888,22 @@ var init_supplemental_entries = __esm(() => {
|
|
|
49894
49888
|
input: 272000,
|
|
49895
49889
|
output: 128000
|
|
49896
49890
|
}
|
|
49891
|
+
},
|
|
49892
|
+
"gpt-5.5": {
|
|
49893
|
+
id: "gpt-5.5",
|
|
49894
|
+
family: "gpt",
|
|
49895
|
+
reasoning: true,
|
|
49896
|
+
temperature: false,
|
|
49897
|
+
toolCall: true,
|
|
49898
|
+
modalities: {
|
|
49899
|
+
input: ["text", "image", "pdf"],
|
|
49900
|
+
output: ["text"]
|
|
49901
|
+
},
|
|
49902
|
+
limit: {
|
|
49903
|
+
context: 400000,
|
|
49904
|
+
input: 272000,
|
|
49905
|
+
output: 128000
|
|
49906
|
+
}
|
|
49897
49907
|
}
|
|
49898
49908
|
};
|
|
49899
49909
|
});
|
|
@@ -49973,6 +49983,18 @@ var init_model_capability_aliases = __esm(() => {
|
|
|
49973
49983
|
ruleID: "gemini-3-pro-tier-alias",
|
|
49974
49984
|
canonicalModelID: "gemini-3-pro-preview",
|
|
49975
49985
|
rationale: "Legacy Gemini 3 tier suffixes still need to land on the canonical preview model."
|
|
49986
|
+
},
|
|
49987
|
+
{
|
|
49988
|
+
aliasModelID: "k2pb",
|
|
49989
|
+
ruleID: "kimi-k2pb-alias",
|
|
49990
|
+
canonicalModelID: "k2p5",
|
|
49991
|
+
rationale: "Kimi for Coding exposes k2pb while the bundled capabilities snapshot uses the canonical k2p5 ID."
|
|
49992
|
+
},
|
|
49993
|
+
{
|
|
49994
|
+
aliasModelID: "claude-opus-4.7",
|
|
49995
|
+
ruleID: "claude-opus-dotted-version-alias",
|
|
49996
|
+
canonicalModelID: "claude-opus-4-7",
|
|
49997
|
+
rationale: "GitHub Copilot exposes Claude Opus 4.7 with dotted version syntax while the snapshot uses dashed syntax."
|
|
49976
49998
|
}
|
|
49977
49999
|
];
|
|
49978
50000
|
EXACT_ALIAS_RULES_BY_MODEL = new Map(EXACT_ALIAS_RULES.map((rule) => [rule.aliasModelID, rule]));
|
|
@@ -50042,10 +50064,18 @@ var init_model_capability_heuristics = __esm(() => {
|
|
|
50042
50064
|
includes: ["gemini"],
|
|
50043
50065
|
variants: ["low", "medium", "high"]
|
|
50044
50066
|
},
|
|
50067
|
+
{
|
|
50068
|
+
family: "kimi-thinking",
|
|
50069
|
+
includes: ["kimi-thinking", "k2-thinking", "k2-think"],
|
|
50070
|
+
pattern: /(?:kimi|k2).*-(?:thinking|think)/,
|
|
50071
|
+
variants: ["low", "medium", "high"],
|
|
50072
|
+
supportsThinking: true
|
|
50073
|
+
},
|
|
50045
50074
|
{
|
|
50046
50075
|
family: "kimi",
|
|
50047
50076
|
includes: ["kimi", "k2"],
|
|
50048
|
-
variants: ["low", "medium", "high"]
|
|
50077
|
+
variants: ["low", "medium", "high"],
|
|
50078
|
+
supportsThinking: false
|
|
50049
50079
|
},
|
|
50050
50080
|
{
|
|
50051
50081
|
family: "glm",
|
|
@@ -50055,7 +50085,8 @@ var init_model_capability_heuristics = __esm(() => {
|
|
|
50055
50085
|
{
|
|
50056
50086
|
family: "minimax",
|
|
50057
50087
|
includes: ["minimax"],
|
|
50058
|
-
variants: ["low", "medium", "high"]
|
|
50088
|
+
variants: ["low", "medium", "high"],
|
|
50089
|
+
supportsThinking: false
|
|
50059
50090
|
},
|
|
50060
50091
|
{
|
|
50061
50092
|
family: "deepseek",
|
|
@@ -51522,10 +51553,10 @@ var init_openai_only_model_catalog = __esm(() => {
|
|
|
51522
51553
|
librarian: { model: "openai/gpt-5.4-mini-fast" }
|
|
51523
51554
|
};
|
|
51524
51555
|
OPENAI_ONLY_CATEGORY_OVERRIDES = {
|
|
51525
|
-
artistry: { model: "openai/gpt-5.
|
|
51556
|
+
artistry: { model: "openai/gpt-5.5", variant: "xhigh" },
|
|
51526
51557
|
quick: { model: "openai/gpt-5.4-mini" },
|
|
51527
|
-
"visual-engineering": { model: "openai/gpt-5.
|
|
51528
|
-
writing: { model: "openai/gpt-5.
|
|
51558
|
+
"visual-engineering": { model: "openai/gpt-5.5", variant: "high" },
|
|
51559
|
+
writing: { model: "openai/gpt-5.5", variant: "medium" }
|
|
51529
51560
|
};
|
|
51530
51561
|
});
|
|
51531
51562
|
|
|
@@ -51848,6 +51879,30 @@ function archiveLegacyConfigFile(legacyPath) {
|
|
|
51848
51879
|
}
|
|
51849
51880
|
}
|
|
51850
51881
|
}
|
|
51882
|
+
function migrateLegacySidecarFile(legacyPath, canonicalPath) {
|
|
51883
|
+
const legacySidecarPath = getSidecarPath(legacyPath);
|
|
51884
|
+
if (!existsSync14(legacySidecarPath))
|
|
51885
|
+
return true;
|
|
51886
|
+
const canonicalSidecarPath = getSidecarPath(canonicalPath);
|
|
51887
|
+
if (existsSync14(canonicalSidecarPath))
|
|
51888
|
+
return true;
|
|
51889
|
+
try {
|
|
51890
|
+
const content = readFileSync9(legacySidecarPath, "utf-8");
|
|
51891
|
+
writeFileAtomically(canonicalSidecarPath, content);
|
|
51892
|
+
log("[migrateLegacyConfigFile] Migrated legacy migration sidecar to canonical path", {
|
|
51893
|
+
from: legacySidecarPath,
|
|
51894
|
+
to: canonicalSidecarPath
|
|
51895
|
+
});
|
|
51896
|
+
return true;
|
|
51897
|
+
} catch (error) {
|
|
51898
|
+
log("[migrateLegacyConfigFile] Failed to migrate legacy migration sidecar", {
|
|
51899
|
+
legacySidecarPath,
|
|
51900
|
+
canonicalSidecarPath,
|
|
51901
|
+
error
|
|
51902
|
+
});
|
|
51903
|
+
return false;
|
|
51904
|
+
}
|
|
51905
|
+
}
|
|
51851
51906
|
function migrateLegacyConfigFile(legacyPath) {
|
|
51852
51907
|
if (!existsSync14(legacyPath))
|
|
51853
51908
|
return false;
|
|
@@ -51859,10 +51914,12 @@ function migrateLegacyConfigFile(legacyPath) {
|
|
|
51859
51914
|
try {
|
|
51860
51915
|
const content = readFileSync9(legacyPath, "utf-8");
|
|
51861
51916
|
writeFileAtomically(canonicalPath, content);
|
|
51917
|
+
const migratedSidecar = migrateLegacySidecarFile(legacyPath, canonicalPath);
|
|
51862
51918
|
const archivedLegacyConfig = archiveLegacyConfigFile(legacyPath);
|
|
51863
51919
|
log("[migrateLegacyConfigFile] Migrated legacy config to canonical path", {
|
|
51864
51920
|
from: legacyPath,
|
|
51865
51921
|
to: canonicalPath,
|
|
51922
|
+
migratedSidecar,
|
|
51866
51923
|
archivedLegacyConfig
|
|
51867
51924
|
});
|
|
51868
51925
|
return true;
|
|
@@ -51873,6 +51930,7 @@ function migrateLegacyConfigFile(legacyPath) {
|
|
|
51873
51930
|
}
|
|
51874
51931
|
var init_migrate_legacy_config_file = __esm(() => {
|
|
51875
51932
|
init_logger();
|
|
51933
|
+
init_migrations_sidecar();
|
|
51876
51934
|
init_plugin_identity();
|
|
51877
51935
|
init_write_file_atomically();
|
|
51878
51936
|
});
|
|
@@ -53800,7 +53858,7 @@ var {
|
|
|
53800
53858
|
// package.json
|
|
53801
53859
|
var package_default = {
|
|
53802
53860
|
name: "evil-omo",
|
|
53803
|
-
version: "3.17.
|
|
53861
|
+
version: "3.17.6",
|
|
53804
53862
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
53805
53863
|
main: "./dist/index.js",
|
|
53806
53864
|
types: "dist/index.d.ts",
|
|
@@ -53879,17 +53937,17 @@ var package_default = {
|
|
|
53879
53937
|
zod: "^4.3.0"
|
|
53880
53938
|
},
|
|
53881
53939
|
optionalDependencies: {
|
|
53882
|
-
"evil-omo-darwin-arm64": "3.17.
|
|
53883
|
-
"evil-omo-darwin-x64": "3.17.
|
|
53884
|
-
"evil-omo-darwin-x64-baseline": "3.17.
|
|
53885
|
-
"evil-omo-linux-x64": "3.17.
|
|
53886
|
-
"evil-omo-linux-x64-baseline": "3.17.
|
|
53887
|
-
"evil-omo-linux-arm64": "3.17.
|
|
53888
|
-
"evil-omo-linux-x64-musl": "3.17.
|
|
53889
|
-
"evil-omo-linux-x64-musl-baseline": "3.17.
|
|
53890
|
-
"evil-omo-linux-arm64-musl": "3.17.
|
|
53891
|
-
"evil-omo-windows-x64": "3.17.
|
|
53892
|
-
"evil-omo-windows-x64-baseline": "3.17.
|
|
53940
|
+
"evil-omo-darwin-arm64": "3.17.6",
|
|
53941
|
+
"evil-omo-darwin-x64": "3.17.6",
|
|
53942
|
+
"evil-omo-darwin-x64-baseline": "3.17.6",
|
|
53943
|
+
"evil-omo-linux-x64": "3.17.6",
|
|
53944
|
+
"evil-omo-linux-x64-baseline": "3.17.6",
|
|
53945
|
+
"evil-omo-linux-arm64": "3.17.6",
|
|
53946
|
+
"evil-omo-linux-x64-musl": "3.17.6",
|
|
53947
|
+
"evil-omo-linux-x64-musl-baseline": "3.17.6",
|
|
53948
|
+
"evil-omo-linux-arm64-musl": "3.17.6",
|
|
53949
|
+
"evil-omo-windows-x64": "3.17.6",
|
|
53950
|
+
"evil-omo-windows-x64-baseline": "3.17.6"
|
|
53893
53951
|
},
|
|
53894
53952
|
overrides: {},
|
|
53895
53953
|
trustedDependencies: [
|
|
@@ -58569,9 +58627,6 @@ function getPostHogActivityStateFilePath() {
|
|
|
58569
58627
|
function getUtcDayString(date) {
|
|
58570
58628
|
return date.toISOString().slice(0, 10);
|
|
58571
58629
|
}
|
|
58572
|
-
function getUtcHourString(date) {
|
|
58573
|
-
return date.toISOString().slice(0, 13);
|
|
58574
|
-
}
|
|
58575
58630
|
function isPostHogActivityState(value) {
|
|
58576
58631
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
58577
58632
|
}
|
|
@@ -58611,24 +58666,24 @@ function writePostHogActivityState(nextState) {
|
|
|
58611
58666
|
function getPostHogActivityCaptureState(now = new Date) {
|
|
58612
58667
|
const state = readPostHogActivityState();
|
|
58613
58668
|
const dayUTC = getUtcDayString(now);
|
|
58614
|
-
const hourUTC = getUtcHourString(now);
|
|
58615
58669
|
const captureDaily = state.lastActiveDayUTC !== dayUTC;
|
|
58616
|
-
|
|
58617
|
-
if (captureDaily || captureHourly) {
|
|
58670
|
+
if (captureDaily) {
|
|
58618
58671
|
writePostHogActivityState({
|
|
58619
|
-
|
|
58620
|
-
|
|
58672
|
+
...state,
|
|
58673
|
+
lastActiveDayUTC: dayUTC
|
|
58621
58674
|
});
|
|
58622
58675
|
}
|
|
58623
58676
|
return {
|
|
58624
58677
|
dayUTC,
|
|
58625
|
-
|
|
58626
|
-
captureDaily,
|
|
58627
|
-
captureHourly
|
|
58678
|
+
captureDaily
|
|
58628
58679
|
};
|
|
58629
58680
|
}
|
|
58630
58681
|
|
|
58631
58682
|
// src/shared/posthog.ts
|
|
58683
|
+
var activityStateProviderOverride = null;
|
|
58684
|
+
function resolveActivityState() {
|
|
58685
|
+
return (activityStateProviderOverride ?? getPostHogActivityCaptureState)();
|
|
58686
|
+
}
|
|
58632
58687
|
var DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com";
|
|
58633
58688
|
var DEFAULT_POSTHOG_API_KEY = "phc_CFJhj5HyvA62QPhvyaUCtaq23aUfznnijg5VaaGkNk74";
|
|
58634
58689
|
var NO_OP_POSTHOG = {
|
|
@@ -58663,7 +58718,16 @@ function getPostHogApiKey() {
|
|
|
58663
58718
|
function getPostHogHost() {
|
|
58664
58719
|
return process.env.POSTHOG_HOST?.trim() || DEFAULT_POSTHOG_HOST;
|
|
58665
58720
|
}
|
|
58721
|
+
function safeCpus() {
|
|
58722
|
+
try {
|
|
58723
|
+
const cpus = os3.cpus();
|
|
58724
|
+
return { length: cpus.length, model: cpus[0]?.model };
|
|
58725
|
+
} catch {
|
|
58726
|
+
return { length: 0, model: undefined };
|
|
58727
|
+
}
|
|
58728
|
+
}
|
|
58666
58729
|
function getSharedProperties(source) {
|
|
58730
|
+
const cpus = safeCpus();
|
|
58667
58731
|
return {
|
|
58668
58732
|
platform: "evil-omo",
|
|
58669
58733
|
package_name: PUBLISHED_PACKAGE_NAME,
|
|
@@ -58676,8 +58740,8 @@ function getSharedProperties(source) {
|
|
|
58676
58740
|
$os_version: os3.release(),
|
|
58677
58741
|
os_arch: os3.arch(),
|
|
58678
58742
|
os_type: os3.type(),
|
|
58679
|
-
cpu_count:
|
|
58680
|
-
cpu_model:
|
|
58743
|
+
cpu_count: cpus.length,
|
|
58744
|
+
cpu_model: cpus.model,
|
|
58681
58745
|
total_memory_gb: Math.round(os3.totalmem() / 1024 / 1024 / 1024),
|
|
58682
58746
|
locale: Intl.DateTimeFormat().resolvedOptions().locale,
|
|
58683
58747
|
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
@@ -58718,7 +58782,7 @@ function createPostHogClient(source, options) {
|
|
|
58718
58782
|
});
|
|
58719
58783
|
},
|
|
58720
58784
|
trackActive: (distinctId, reason) => {
|
|
58721
|
-
const activityState =
|
|
58785
|
+
const activityState = resolveActivityState();
|
|
58722
58786
|
if (activityState.captureDaily) {
|
|
58723
58787
|
configuredClient.capture({
|
|
58724
58788
|
distinctId,
|
|
@@ -58730,17 +58794,6 @@ function createPostHogClient(source, options) {
|
|
|
58730
58794
|
}
|
|
58731
58795
|
});
|
|
58732
58796
|
}
|
|
58733
|
-
if (activityState.captureHourly) {
|
|
58734
|
-
configuredClient.capture({
|
|
58735
|
-
distinctId,
|
|
58736
|
-
event: "omo_hourly_active",
|
|
58737
|
-
properties: {
|
|
58738
|
-
...sharedProperties,
|
|
58739
|
-
hour_utc: activityState.hourUTC,
|
|
58740
|
-
reason
|
|
58741
|
-
}
|
|
58742
|
-
});
|
|
58743
|
-
}
|
|
58744
58797
|
},
|
|
58745
58798
|
shutdown: async () => configuredClient.shutdown()
|
|
58746
58799
|
};
|
|
@@ -59523,7 +59576,7 @@ async function promptInstallConfig(detected) {
|
|
|
59523
59576
|
message: "Do you have access to OpenCode Zen (opencode/ models)?",
|
|
59524
59577
|
options: [
|
|
59525
59578
|
{ value: "no", label: "No", hint: "Will use other configured providers" },
|
|
59526
|
-
{ value: "yes", label: "Yes", hint: "opencode/claude-opus-4-7, opencode/gpt-5.
|
|
59579
|
+
{ value: "yes", label: "Yes", hint: "opencode/claude-opus-4-7, opencode/gpt-5.5, etc." }
|
|
59527
59580
|
],
|
|
59528
59581
|
initialValue: initial.opencodeZen
|
|
59529
59582
|
});
|
|
@@ -76525,7 +76578,7 @@ var normalizeAgentName = (agent) => {
|
|
|
76525
76578
|
return;
|
|
76526
76579
|
const configKey = getAgentConfigKey(trimmed);
|
|
76527
76580
|
const displayName = getAgentDisplayName(configKey);
|
|
76528
|
-
const runtimeName =
|
|
76581
|
+
const runtimeName = getAgentDisplayName(configKey);
|
|
76529
76582
|
const isKnownAgent = displayName !== configKey;
|
|
76530
76583
|
return {
|
|
76531
76584
|
configKey,
|
|
@@ -76553,12 +76606,12 @@ var resolveRunAgent = (options, pluginConfig, env = process.env) => {
|
|
|
76553
76606
|
const configAgent = normalizeAgentName(pluginConfig.default_run_agent);
|
|
76554
76607
|
const resolved = cliAgent ?? envAgent ?? configAgent ?? {
|
|
76555
76608
|
configKey: DEFAULT_AGENT,
|
|
76556
|
-
resolvedName:
|
|
76609
|
+
resolvedName: getAgentDisplayName(DEFAULT_AGENT)
|
|
76557
76610
|
};
|
|
76558
76611
|
if (isAgentDisabled(resolved.configKey, pluginConfig)) {
|
|
76559
76612
|
const fallback = pickFallbackAgent(pluginConfig);
|
|
76560
76613
|
const fallbackDisplayName = getAgentDisplayName(fallback);
|
|
76561
|
-
const fallbackRuntimeName =
|
|
76614
|
+
const fallbackRuntimeName = getAgentDisplayName(fallback);
|
|
76562
76615
|
const fallbackDisabled = isAgentDisabled(fallback, pluginConfig);
|
|
76563
76616
|
if (fallbackDisabled) {
|
|
76564
76617
|
console.log(import_picocolors12.default.yellow(`Requested agent "${resolved.resolvedName}" is disabled and no enabled core agent was found. Proceeding with "${fallbackDisplayName}".`));
|
|
@@ -78309,7 +78362,7 @@ function buildEffectiveResolution(requirement, userOverride) {
|
|
|
78309
78362
|
|
|
78310
78363
|
// src/cli/doctor/checks/model-resolution.ts
|
|
78311
78364
|
function parseProviderModel(value) {
|
|
78312
|
-
const slashIndex = value.
|
|
78365
|
+
const slashIndex = value.indexOf("/");
|
|
78313
78366
|
if (slashIndex <= 0 || slashIndex === value.length - 1) {
|
|
78314
78367
|
return null;
|
|
78315
78368
|
}
|
|
@@ -78363,7 +78416,7 @@ function collectCapabilityResolutionIssues(info) {
|
|
|
78363
78416
|
const allEntries = [...info.agents, ...info.categories];
|
|
78364
78417
|
const fallbackEntries = allEntries.filter((entry) => {
|
|
78365
78418
|
const mode = entry.capabilityDiagnostics?.resolutionMode;
|
|
78366
|
-
return mode === "
|
|
78419
|
+
return mode === "unknown";
|
|
78367
78420
|
});
|
|
78368
78421
|
if (fallbackEntries.length === 0) {
|
|
78369
78422
|
return issues;
|
|
@@ -80236,7 +80289,7 @@ Examples:
|
|
|
80236
80289
|
$ bunx evil-omo run --on-complete "notify-send Done" "Fix the bug"
|
|
80237
80290
|
$ bunx evil-omo run --session-id ses_abc123 "Continue the work"
|
|
80238
80291
|
$ bunx evil-omo run --model anthropic/claude-sonnet-4 "Fix the bug"
|
|
80239
|
-
$ bunx evil-omo run --agent Sisyphus --model openai/gpt-5.
|
|
80292
|
+
$ bunx evil-omo run --agent Sisyphus --model openai/gpt-5.5 "Implement feature X"
|
|
80240
80293
|
|
|
80241
80294
|
Agent resolution order:
|
|
80242
80295
|
1) --agent flag
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
2
|
import type { RalphLoopOptions, RalphLoopState } from "./types";
|
|
3
|
-
type SessionRecovery = {
|
|
4
|
-
isRecovering: (sessionID: string) => boolean;
|
|
5
|
-
markRecovering: (sessionID: string) => void;
|
|
6
|
-
clear: (sessionID: string) => void;
|
|
7
|
-
};
|
|
8
3
|
type LoopStateController = {
|
|
9
4
|
getState: () => RalphLoopState | null;
|
|
10
5
|
clear: () => boolean;
|
|
@@ -19,7 +14,7 @@ type RalphLoopEventHandlerOptions = {
|
|
|
19
14
|
apiTimeoutMs: number;
|
|
20
15
|
getTranscriptPath: (sessionID: string) => string | undefined;
|
|
21
16
|
checkSessionExists?: RalphLoopOptions["checkSessionExists"];
|
|
22
|
-
|
|
17
|
+
backgroundManager?: RalphLoopOptions["backgroundManager"];
|
|
23
18
|
loopState: LoopStateController;
|
|
24
19
|
};
|
|
25
20
|
export declare function createRalphLoopEventHandler(ctx: PluginInput, options: RalphLoopEventHandlerOptions): ({ event }: {
|
|
@@ -3,10 +3,6 @@ type LoopStateController = {
|
|
|
3
3
|
getState: () => RalphLoopState | null;
|
|
4
4
|
clear: () => boolean;
|
|
5
5
|
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
markRecovering: (sessionID: string) => void;
|
|
9
|
-
};
|
|
10
|
-
export declare function handleDeletedLoopSession(props: Record<string, unknown> | undefined, loopState: LoopStateController, sessionRecovery: SessionRecovery): boolean;
|
|
11
|
-
export declare function handleErroredLoopSession(props: Record<string, unknown> | undefined, loopState: LoopStateController, sessionRecovery: SessionRecovery): boolean;
|
|
6
|
+
export declare function handleDeletedLoopSession(props: Record<string, unknown> | undefined, loopState: LoopStateController): boolean;
|
|
7
|
+
export declare function handleErroredLoopSession(props: Record<string, unknown> | undefined, loopState: LoopStateController): boolean;
|
|
12
8
|
export {};
|
|
@@ -20,4 +20,9 @@ export interface RalphLoopOptions {
|
|
|
20
20
|
getTranscriptPath?: (sessionId: string) => string;
|
|
21
21
|
apiTimeout?: number;
|
|
22
22
|
checkSessionExists?: (sessionId: string) => Promise<boolean>;
|
|
23
|
+
backgroundManager?: {
|
|
24
|
+
getTasksByParentSession: (sessionId: string) => Array<{
|
|
25
|
+
status: string;
|
|
26
|
+
}>;
|
|
27
|
+
};
|
|
23
28
|
}
|