@brainervirus/workit-codex 8.26.1 → 8.28.0
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/dist/launch-mcp.js
CHANGED
|
@@ -28202,6 +28202,96 @@ var WRITE_TOOLS = new Set([
|
|
|
28202
28202
|
]);
|
|
28203
28203
|
// packages/workit-core/src/hooks/standing.ts
|
|
28204
28204
|
var sinceStart = new Map;
|
|
28205
|
+
// packages/workit-core/src/core/role-models.ts
|
|
28206
|
+
var MODEL_ROLES = [
|
|
28207
|
+
"decider",
|
|
28208
|
+
"implementer",
|
|
28209
|
+
"verifier",
|
|
28210
|
+
"reviewer",
|
|
28211
|
+
"explore",
|
|
28212
|
+
"babysit"
|
|
28213
|
+
];
|
|
28214
|
+
var MODEL_TIERS = ["mundane", "standard", "hard"];
|
|
28215
|
+
var HOST_KEYS = new Set([
|
|
28216
|
+
"claude_code",
|
|
28217
|
+
"opencode",
|
|
28218
|
+
"codex",
|
|
28219
|
+
"codex_cli",
|
|
28220
|
+
"codex_desktop",
|
|
28221
|
+
"cursor",
|
|
28222
|
+
"pi",
|
|
28223
|
+
"default"
|
|
28224
|
+
]);
|
|
28225
|
+
var BUILT_IN_CLAUDE_CODE = {
|
|
28226
|
+
decider: { model: "fable", effort: "high" },
|
|
28227
|
+
"implementer.hard": { model: "opus" },
|
|
28228
|
+
"implementer.standard": { model: "sonnet" },
|
|
28229
|
+
"implementer.mundane": { model: "haiku" },
|
|
28230
|
+
verifier: { model: "sonnet" },
|
|
28231
|
+
reviewer: { model: "opus" },
|
|
28232
|
+
explore: { model: "haiku" },
|
|
28233
|
+
babysit: { model: "haiku" }
|
|
28234
|
+
};
|
|
28235
|
+
var isObject7 = (value) => !!value && typeof value === "object" && !Array.isArray(value);
|
|
28236
|
+
var name = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
|
|
28237
|
+
var leaf = (value) => {
|
|
28238
|
+
const text = name(value);
|
|
28239
|
+
if (text)
|
|
28240
|
+
return { model: text, effort: null };
|
|
28241
|
+
if (!isObject7(value))
|
|
28242
|
+
return null;
|
|
28243
|
+
const model = name(value.model);
|
|
28244
|
+
return model ? { model, effort: name(value.effort) } : null;
|
|
28245
|
+
};
|
|
28246
|
+
var isFlat = (value) => typeof value === "string" || isObject7(value) && Object.hasOwn(value, "model");
|
|
28247
|
+
var forHost = (value, host) => {
|
|
28248
|
+
if (isFlat(value))
|
|
28249
|
+
return leaf(value);
|
|
28250
|
+
if (!isObject7(value))
|
|
28251
|
+
return null;
|
|
28252
|
+
const family = host ? hostFamily(host) : null;
|
|
28253
|
+
for (const key of [family, host, "default"])
|
|
28254
|
+
if (key && Object.hasOwn(value, key)) {
|
|
28255
|
+
const found = leaf(value[key]);
|
|
28256
|
+
if (found)
|
|
28257
|
+
return found;
|
|
28258
|
+
}
|
|
28259
|
+
return null;
|
|
28260
|
+
};
|
|
28261
|
+
var rolesOf = (models) => isObject7(models) && isObject7(models.roles) ? models.roles : null;
|
|
28262
|
+
var resolveRoleModel = (cwd, selector, host, dir) => {
|
|
28263
|
+
const { role, tier } = selector;
|
|
28264
|
+
for (const source of modelSources(cwd, dir)) {
|
|
28265
|
+
const where = source.global ? "the global default" : `workspace ${source.name}`;
|
|
28266
|
+
const roles = rolesOf(source.models);
|
|
28267
|
+
const configured = roles && Object.hasOwn(roles, role) ? roles[role] : undefined;
|
|
28268
|
+
const fromRoles = role === "implementer" ? tier && isObject7(configured) && Object.hasOwn(configured, tier) ? forHost(configured[tier], host) : null : forHost(configured, host);
|
|
28269
|
+
if (fromRoles)
|
|
28270
|
+
return { ...fromRoles, source: `models.roles in ${where}` };
|
|
28271
|
+
if (role === "implementer" && tier && isObject7(source.tierModels)) {
|
|
28272
|
+
const fromTiers = Object.hasOwn(source.tierModels, tier) ? forHost(source.tierModels[tier], host) : null;
|
|
28273
|
+
if (fromTiers)
|
|
28274
|
+
return { model: fromTiers.model, effort: null, source: `fanout.tierModels in ${where}` };
|
|
28275
|
+
}
|
|
28276
|
+
}
|
|
28277
|
+
if (host && hostFamily(host) === "claude_code") {
|
|
28278
|
+
const builtIn = BUILT_IN_CLAUDE_CODE[tier ? `${role}.${tier}` : role];
|
|
28279
|
+
if (builtIn)
|
|
28280
|
+
return { model: builtIn.model, effort: builtIn.effort ?? null, source: "built-in" };
|
|
28281
|
+
}
|
|
28282
|
+
return null;
|
|
28283
|
+
};
|
|
28284
|
+
var uniformImplementerModel = (cwd, host, dir) => {
|
|
28285
|
+
const tiers = MODEL_TIERS.map((tier) => resolveRoleModel(cwd, { role: "implementer", tier }, host, dir));
|
|
28286
|
+
const [first] = tiers;
|
|
28287
|
+
return first && tiers.every((t) => t?.model === first.model && t.effort === first.effort) ? first : null;
|
|
28288
|
+
};
|
|
28289
|
+
var ROLE_SELECTORS = MODEL_ROLES.flatMap((role) => role === "implementer" ? MODEL_TIERS.map((tier) => ({ role, tier })) : [{ role }]);
|
|
28290
|
+
|
|
28291
|
+
// packages/workit-core/src/hooks/agent-model.ts
|
|
28292
|
+
var MODELS = new Set(["sonnet", "opus", "haiku", "fable"]);
|
|
28293
|
+
var EFFORTS = new Set(["low", "medium", "high", "xhigh", "max"]);
|
|
28294
|
+
|
|
28205
28295
|
// packages/workit-core/src/hooks/cwd-normalize.ts
|
|
28206
28296
|
var DIR = String.raw`[A-Za-z0-9_./@%+:,=-]+|'[^'$${"`"}\\\n]*'|"[^"$${"`"}\\!\n]*"`;
|
|
28207
28297
|
var COMPOUND = new RegExp(String.raw`^\s*cd\s+(${DIR})\s*&&\s*(workit(?:\s[\s\S]*)?)$`, "u");
|
|
@@ -28375,92 +28465,6 @@ var codexCapabilities = (host, availability = {}) => capabilitiesFor(codexDescri
|
|
|
28375
28465
|
if (false)
|
|
28376
28466
|
;
|
|
28377
28467
|
|
|
28378
|
-
// packages/workit-core/src/core/role-models.ts
|
|
28379
|
-
var MODEL_ROLES = [
|
|
28380
|
-
"decider",
|
|
28381
|
-
"implementer",
|
|
28382
|
-
"verifier",
|
|
28383
|
-
"reviewer",
|
|
28384
|
-
"explore",
|
|
28385
|
-
"babysit"
|
|
28386
|
-
];
|
|
28387
|
-
var MODEL_TIERS = ["mundane", "standard", "hard"];
|
|
28388
|
-
var HOST_KEYS = new Set([
|
|
28389
|
-
"claude_code",
|
|
28390
|
-
"opencode",
|
|
28391
|
-
"codex",
|
|
28392
|
-
"codex_cli",
|
|
28393
|
-
"codex_desktop",
|
|
28394
|
-
"cursor",
|
|
28395
|
-
"pi",
|
|
28396
|
-
"default"
|
|
28397
|
-
]);
|
|
28398
|
-
var BUILT_IN_CLAUDE_CODE = {
|
|
28399
|
-
decider: { model: "fable", effort: "high" },
|
|
28400
|
-
"implementer.hard": { model: "opus" },
|
|
28401
|
-
"implementer.standard": { model: "sonnet" },
|
|
28402
|
-
"implementer.mundane": { model: "haiku" },
|
|
28403
|
-
verifier: { model: "sonnet" },
|
|
28404
|
-
reviewer: { model: "opus" },
|
|
28405
|
-
explore: { model: "haiku" },
|
|
28406
|
-
babysit: { model: "haiku" }
|
|
28407
|
-
};
|
|
28408
|
-
var isObject7 = (value) => !!value && typeof value === "object" && !Array.isArray(value);
|
|
28409
|
-
var name = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
|
|
28410
|
-
var leaf = (value) => {
|
|
28411
|
-
const text = name(value);
|
|
28412
|
-
if (text)
|
|
28413
|
-
return { model: text, effort: null };
|
|
28414
|
-
if (!isObject7(value))
|
|
28415
|
-
return null;
|
|
28416
|
-
const model = name(value.model);
|
|
28417
|
-
return model ? { model, effort: name(value.effort) } : null;
|
|
28418
|
-
};
|
|
28419
|
-
var isFlat = (value) => typeof value === "string" || isObject7(value) && Object.hasOwn(value, "model");
|
|
28420
|
-
var forHost = (value, host) => {
|
|
28421
|
-
if (isFlat(value))
|
|
28422
|
-
return leaf(value);
|
|
28423
|
-
if (!isObject7(value))
|
|
28424
|
-
return null;
|
|
28425
|
-
const family = host ? hostFamily(host) : null;
|
|
28426
|
-
for (const key of [family, host, "default"])
|
|
28427
|
-
if (key && Object.hasOwn(value, key)) {
|
|
28428
|
-
const found = leaf(value[key]);
|
|
28429
|
-
if (found)
|
|
28430
|
-
return found;
|
|
28431
|
-
}
|
|
28432
|
-
return null;
|
|
28433
|
-
};
|
|
28434
|
-
var rolesOf = (models) => isObject7(models) && isObject7(models.roles) ? models.roles : null;
|
|
28435
|
-
var resolveRoleModel = (cwd, selector, host, dir) => {
|
|
28436
|
-
const { role, tier } = selector;
|
|
28437
|
-
for (const source of modelSources(cwd, dir)) {
|
|
28438
|
-
const where = source.global ? "the global default" : `workspace ${source.name}`;
|
|
28439
|
-
const roles = rolesOf(source.models);
|
|
28440
|
-
const configured = roles && Object.hasOwn(roles, role) ? roles[role] : undefined;
|
|
28441
|
-
const fromRoles = role === "implementer" ? tier && isObject7(configured) && Object.hasOwn(configured, tier) ? forHost(configured[tier], host) : null : forHost(configured, host);
|
|
28442
|
-
if (fromRoles)
|
|
28443
|
-
return { ...fromRoles, source: `models.roles in ${where}` };
|
|
28444
|
-
if (role === "implementer" && tier && isObject7(source.tierModels)) {
|
|
28445
|
-
const fromTiers = Object.hasOwn(source.tierModels, tier) ? forHost(source.tierModels[tier], host) : null;
|
|
28446
|
-
if (fromTiers)
|
|
28447
|
-
return { model: fromTiers.model, effort: null, source: `fanout.tierModels in ${where}` };
|
|
28448
|
-
}
|
|
28449
|
-
}
|
|
28450
|
-
if (host && hostFamily(host) === "claude_code") {
|
|
28451
|
-
const builtIn = BUILT_IN_CLAUDE_CODE[tier ? `${role}.${tier}` : role];
|
|
28452
|
-
if (builtIn)
|
|
28453
|
-
return { model: builtIn.model, effort: builtIn.effort ?? null, source: "built-in" };
|
|
28454
|
-
}
|
|
28455
|
-
return null;
|
|
28456
|
-
};
|
|
28457
|
-
var uniformImplementerModel = (cwd, host, dir) => {
|
|
28458
|
-
const tiers = MODEL_TIERS.map((tier) => resolveRoleModel(cwd, { role: "implementer", tier }, host, dir));
|
|
28459
|
-
const [first] = tiers;
|
|
28460
|
-
return first && tiers.every((t) => t?.model === first.model && t.effort === first.effort) ? first : null;
|
|
28461
|
-
};
|
|
28462
|
-
var ROLE_SELECTORS = MODEL_ROLES.flatMap((role) => role === "implementer" ? MODEL_TIERS.map((tier) => ({ role, tier })) : [{ role }]);
|
|
28463
|
-
|
|
28464
28468
|
// packages/workit-codex/scripts/agents.ts
|
|
28465
28469
|
import {
|
|
28466
28470
|
existsSync as existsSync10,
|
|
@@ -8814,6 +8814,34 @@ var workspaceTrailers = (cwd, dir) => {
|
|
|
8814
8814
|
};
|
|
8815
8815
|
};
|
|
8816
8816
|
var workspaceLiveSessionGuard = (cwd, dir) => inheritedSetting(cwd, dir, (entry) => typeof entry.liveSessionGuard === "boolean")?.source?.liveSessionGuard !== false;
|
|
8817
|
+
var modelSources = (cwd, dir) => {
|
|
8818
|
+
const out = [];
|
|
8819
|
+
try {
|
|
8820
|
+
const matched = matchRuntimeWorkspace(cwd, dir);
|
|
8821
|
+
if (matched) {
|
|
8822
|
+
const enclosing = matched.matches.filter((entry) => entry !== matched.selected).toSorted((a, b) => globSpecificity(b.glob) - globSpecificity(a.glob));
|
|
8823
|
+
for (const entry of [matched.selected, ...enclosing])
|
|
8824
|
+
out.push({
|
|
8825
|
+
name: entry.name,
|
|
8826
|
+
global: false,
|
|
8827
|
+
models: entry.models,
|
|
8828
|
+
tierModels: entry.fanout?.tierModels
|
|
8829
|
+
});
|
|
8830
|
+
}
|
|
8831
|
+
} catch {}
|
|
8832
|
+
try {
|
|
8833
|
+
const document = JSON.parse(readFileSync2(path6.join(dir ?? configDir(), "workspaces.json"), "utf8"));
|
|
8834
|
+
if (document && typeof document === "object" && !Array.isArray(document))
|
|
8835
|
+
out.push({
|
|
8836
|
+
name: "global",
|
|
8837
|
+
global: true,
|
|
8838
|
+
models: document.models,
|
|
8839
|
+
tierModels: undefined
|
|
8840
|
+
});
|
|
8841
|
+
} catch {}
|
|
8842
|
+
return out;
|
|
8843
|
+
};
|
|
8844
|
+
var hostFamily = (host) => host.replace(/_(?:cli|desktop)$/u, "");
|
|
8817
8845
|
var TIER_KEYS = new Set(["mundane", "standard", "hard"]);
|
|
8818
8846
|
var TIER_HOSTS = new Set([
|
|
8819
8847
|
"claude_code",
|
|
@@ -21921,6 +21949,133 @@ var standingDelta = (input) => {
|
|
|
21921
21949
|
}
|
|
21922
21950
|
};
|
|
21923
21951
|
var sinceStart = new Map;
|
|
21952
|
+
// packages/workit-core/src/core/role-models.ts
|
|
21953
|
+
var MODEL_ROLES = [
|
|
21954
|
+
"decider",
|
|
21955
|
+
"implementer",
|
|
21956
|
+
"verifier",
|
|
21957
|
+
"reviewer",
|
|
21958
|
+
"explore",
|
|
21959
|
+
"babysit"
|
|
21960
|
+
];
|
|
21961
|
+
var MODEL_TIERS = ["mundane", "standard", "hard"];
|
|
21962
|
+
var HOST_KEYS = new Set([
|
|
21963
|
+
"claude_code",
|
|
21964
|
+
"opencode",
|
|
21965
|
+
"codex",
|
|
21966
|
+
"codex_cli",
|
|
21967
|
+
"codex_desktop",
|
|
21968
|
+
"cursor",
|
|
21969
|
+
"pi",
|
|
21970
|
+
"default"
|
|
21971
|
+
]);
|
|
21972
|
+
var BUILT_IN_CLAUDE_CODE = {
|
|
21973
|
+
decider: { model: "fable", effort: "high" },
|
|
21974
|
+
"implementer.hard": { model: "opus" },
|
|
21975
|
+
"implementer.standard": { model: "sonnet" },
|
|
21976
|
+
"implementer.mundane": { model: "haiku" },
|
|
21977
|
+
verifier: { model: "sonnet" },
|
|
21978
|
+
reviewer: { model: "opus" },
|
|
21979
|
+
explore: { model: "haiku" },
|
|
21980
|
+
babysit: { model: "haiku" }
|
|
21981
|
+
};
|
|
21982
|
+
var isObject7 = (value) => !!value && typeof value === "object" && !Array.isArray(value);
|
|
21983
|
+
var name = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
|
|
21984
|
+
var leaf = (value) => {
|
|
21985
|
+
const text = name(value);
|
|
21986
|
+
if (text)
|
|
21987
|
+
return { model: text, effort: null };
|
|
21988
|
+
if (!isObject7(value))
|
|
21989
|
+
return null;
|
|
21990
|
+
const model = name(value.model);
|
|
21991
|
+
return model ? { model, effort: name(value.effort) } : null;
|
|
21992
|
+
};
|
|
21993
|
+
var isFlat = (value) => typeof value === "string" || isObject7(value) && Object.hasOwn(value, "model");
|
|
21994
|
+
var forHost = (value, host) => {
|
|
21995
|
+
if (isFlat(value))
|
|
21996
|
+
return leaf(value);
|
|
21997
|
+
if (!isObject7(value))
|
|
21998
|
+
return null;
|
|
21999
|
+
const family = host ? hostFamily(host) : null;
|
|
22000
|
+
for (const key of [family, host, "default"])
|
|
22001
|
+
if (key && Object.hasOwn(value, key)) {
|
|
22002
|
+
const found = leaf(value[key]);
|
|
22003
|
+
if (found)
|
|
22004
|
+
return found;
|
|
22005
|
+
}
|
|
22006
|
+
return null;
|
|
22007
|
+
};
|
|
22008
|
+
var rolesOf = (models) => isObject7(models) && isObject7(models.roles) ? models.roles : null;
|
|
22009
|
+
var resolveRoleModel = (cwd, selector, host, dir) => {
|
|
22010
|
+
const { role, tier } = selector;
|
|
22011
|
+
for (const source of modelSources(cwd, dir)) {
|
|
22012
|
+
const where = source.global ? "the global default" : `workspace ${source.name}`;
|
|
22013
|
+
const roles = rolesOf(source.models);
|
|
22014
|
+
const configured = roles && Object.hasOwn(roles, role) ? roles[role] : undefined;
|
|
22015
|
+
const fromRoles = role === "implementer" ? tier && isObject7(configured) && Object.hasOwn(configured, tier) ? forHost(configured[tier], host) : null : forHost(configured, host);
|
|
22016
|
+
if (fromRoles)
|
|
22017
|
+
return { ...fromRoles, source: `models.roles in ${where}` };
|
|
22018
|
+
if (role === "implementer" && tier && isObject7(source.tierModels)) {
|
|
22019
|
+
const fromTiers = Object.hasOwn(source.tierModels, tier) ? forHost(source.tierModels[tier], host) : null;
|
|
22020
|
+
if (fromTiers)
|
|
22021
|
+
return { model: fromTiers.model, effort: null, source: `fanout.tierModels in ${where}` };
|
|
22022
|
+
}
|
|
22023
|
+
}
|
|
22024
|
+
if (host && hostFamily(host) === "claude_code") {
|
|
22025
|
+
const builtIn = BUILT_IN_CLAUDE_CODE[tier ? `${role}.${tier}` : role];
|
|
22026
|
+
if (builtIn)
|
|
22027
|
+
return { model: builtIn.model, effort: builtIn.effort ?? null, source: "built-in" };
|
|
22028
|
+
}
|
|
22029
|
+
return null;
|
|
22030
|
+
};
|
|
22031
|
+
var ROLE_SELECTORS = MODEL_ROLES.flatMap((role) => role === "implementer" ? MODEL_TIERS.map((tier) => ({ role, tier })) : [{ role }]);
|
|
22032
|
+
var roleForAgentType = (agentType, prompt) => {
|
|
22033
|
+
switch (agentType) {
|
|
22034
|
+
case "workit:implementer": {
|
|
22035
|
+
const tier = typeof prompt === "string" ? /^[ \t]*TIER:[ \t]*(mundane|standard|hard)\b/im.exec(prompt)?.[1] : undefined;
|
|
22036
|
+
return { role: "implementer", tier: tier?.toLowerCase() ?? "standard" };
|
|
22037
|
+
}
|
|
22038
|
+
case "workit:verifier":
|
|
22039
|
+
return { role: "verifier" };
|
|
22040
|
+
case "workit:reviewer":
|
|
22041
|
+
return { role: "reviewer" };
|
|
22042
|
+
case "Explore":
|
|
22043
|
+
return { role: "explore" };
|
|
22044
|
+
default:
|
|
22045
|
+
return null;
|
|
22046
|
+
}
|
|
22047
|
+
};
|
|
22048
|
+
|
|
22049
|
+
// packages/workit-core/src/hooks/agent-model.ts
|
|
22050
|
+
var MODELS = new Set(["sonnet", "opus", "haiku", "fable"]);
|
|
22051
|
+
var EFFORTS = new Set(["low", "medium", "high", "xhigh", "max"]);
|
|
22052
|
+
var given = (value) => typeof value === "string" && value.trim() !== "";
|
|
22053
|
+
var agentModelDecision = (cwd, tool, env = process.env) => {
|
|
22054
|
+
if (given(tool.model) || env.CLAUDE_CODE_SUBAGENT_MODEL_FORCE)
|
|
22055
|
+
return { kind: "none" };
|
|
22056
|
+
const selector = roleForAgentType(tool.subagent_type, tool.prompt);
|
|
22057
|
+
if (!selector)
|
|
22058
|
+
return { kind: "none" };
|
|
22059
|
+
const resolved = resolveRoleModel(cwd, selector, "claude_code");
|
|
22060
|
+
if (!resolved)
|
|
22061
|
+
return { kind: "none" };
|
|
22062
|
+
const model = resolved.model.toLowerCase();
|
|
22063
|
+
const effort = resolved.effort?.toLowerCase() ?? null;
|
|
22064
|
+
const input = { ...tool };
|
|
22065
|
+
if (MODELS.has(model))
|
|
22066
|
+
input.model = model;
|
|
22067
|
+
if (effort && EFFORTS.has(effort) && !given(tool.effort))
|
|
22068
|
+
input.effort = effort;
|
|
22069
|
+
if (input.model === undefined && input.effort === tool.effort)
|
|
22070
|
+
return { kind: "none" };
|
|
22071
|
+
const label = selector.tier ? `${selector.role} ${selector.tier}` : selector.role;
|
|
22072
|
+
return {
|
|
22073
|
+
kind: "update-input",
|
|
22074
|
+
input,
|
|
22075
|
+
text: `Workit set ${String(input.model ?? "no model")}${input.effort !== tool.effort ? ` (effort ${String(input.effort)})` : ""} on this ${String(tool.subagent_type)} spawn: role ${label}, ${resolved.source}. Name a model to choose another.`
|
|
22076
|
+
};
|
|
22077
|
+
};
|
|
22078
|
+
|
|
21924
22079
|
// packages/workit-core/src/hooks/cwd-normalize.ts
|
|
21925
22080
|
var DIR = String.raw`[A-Za-z0-9_./@%+:,=-]+|'[^'$${"`"}\\\n]*'|"[^"$${"`"}\\!\n]*"`;
|
|
21926
22081
|
var COMPOUND = new RegExp(String.raw`^\s*cd\s+(${DIR})\s*&&\s*(workit(?:\s[\s\S]*)?)$`, "u");
|
|
@@ -22284,7 +22439,7 @@ function handleHook(input, deps) {
|
|
|
22284
22439
|
const delta = standingDelta(input);
|
|
22285
22440
|
if (!delta)
|
|
22286
22441
|
return decision;
|
|
22287
|
-
return decision.kind === "rewrite" ? { ...decision, text: [decision.text, delta].filter(Boolean).join(`
|
|
22442
|
+
return decision.kind === "rewrite" || decision.kind === "update-input" ? { ...decision, text: [decision.text, delta].filter(Boolean).join(`
|
|
22288
22443
|
`) } : withContextLine(decision, delta);
|
|
22289
22444
|
}
|
|
22290
22445
|
function decide(input, deps) {
|
|
@@ -22397,6 +22552,8 @@ function decide(input, deps) {
|
|
|
22397
22552
|
case "tool.pre":
|
|
22398
22553
|
if (event.skill)
|
|
22399
22554
|
recordSkillLoad(input, event.skill, "tool");
|
|
22555
|
+
if (event.agentInput && input.host === "claude_code")
|
|
22556
|
+
return agentModelDecision(input.cwd, event.agentInput);
|
|
22400
22557
|
return NONE6;
|
|
22401
22558
|
case "stop":
|
|
22402
22559
|
return usable2(descriptor.events.stop.support) ? stopDecision(input, descriptor) : NONE6;
|
|
@@ -22680,6 +22837,16 @@ var eventOf = (name, value) => {
|
|
|
22680
22837
|
skill: isRecord5(value.tool_input) ? optionalText(value.tool_input.skill) : null
|
|
22681
22838
|
}
|
|
22682
22839
|
};
|
|
22840
|
+
if (value.tool_name === "Agent" || value.tool_name === "Task")
|
|
22841
|
+
return {
|
|
22842
|
+
ok: true,
|
|
22843
|
+
event: {
|
|
22844
|
+
kind: "tool.pre",
|
|
22845
|
+
tool: value.tool_name,
|
|
22846
|
+
toolUseId,
|
|
22847
|
+
...isRecord5(value.tool_input) ? { agentInput: value.tool_input } : {}
|
|
22848
|
+
}
|
|
22849
|
+
};
|
|
22683
22850
|
if (!SHELL_TOOLS.has(value.tool_name))
|
|
22684
22851
|
return { ok: true, event: { kind: "tool.pre", tool: value.tool_name, toolUseId } };
|
|
22685
22852
|
const command = toolCommand(value);
|
|
@@ -22756,7 +22923,7 @@ var CONTEXT_EVENTS = new Set([
|
|
|
22756
22923
|
"PostToolUse"
|
|
22757
22924
|
]);
|
|
22758
22925
|
var render = (decision, native) => {
|
|
22759
|
-
if (decision.kind === "rewrite" && native === "PreToolUse" && decision.input)
|
|
22926
|
+
if ((decision.kind === "rewrite" || decision.kind === "update-input") && native === "PreToolUse" && decision.input)
|
|
22760
22927
|
return {
|
|
22761
22928
|
json: {
|
|
22762
22929
|
hookSpecificOutput: {
|
package/dist/workit-hook.js
CHANGED
|
@@ -49,6 +49,6 @@ if (quiet)
|
|
|
49
49
|
process.stdout.write(`${JSON.stringify({ hookSpecificOutput: { hookEventName: quiet } })}
|
|
50
50
|
`);
|
|
51
51
|
else {
|
|
52
|
-
const { runCodexHook } = await import("./workit-hook-
|
|
52
|
+
const { runCodexHook } = await import("./workit-hook-ahdnhfdm.js");
|
|
53
53
|
await runCodexHook([payload]);
|
|
54
54
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainervirus/workit-codex",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.28.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Workit Codex CLI/desktop plugin — shared MCP transport, hooks, method skills, and verifier/reviewer/implementer agents",
|
|
6
6
|
"keywords": [
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"build": "bun scripts/build.ts"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@brainervirus/workit-core": "^8.
|
|
43
|
-
"@brainervirus/workit-mcp": "^8.
|
|
42
|
+
"@brainervirus/workit-core": "^8.28.0",
|
|
43
|
+
"@brainervirus/workit-mcp": "^8.28.0"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|
|
46
46
|
"node": ">=24"
|