oh-my-codex 0.18.3 → 0.18.4
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/Cargo.lock +6 -6
- package/Cargo.toml +1 -1
- package/README.md +1 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.js +37 -3
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/explore.test.js +8 -7
- package/dist/cli/__tests__/explore.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +63 -5
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +56 -17
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.js +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js +2 -2
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +109 -12
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/explore.d.ts +1 -0
- package/dist/cli/explore.d.ts.map +1 -1
- package/dist/cli/explore.js +6 -0
- package/dist/cli/explore.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +11 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/question.d.ts.map +1 -1
- package/dist/cli/question.js +5 -1
- package/dist/cli/question.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +18 -54
- package/dist/cli/setup.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +5 -5
- package/dist/config/generator.d.ts +8 -2
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +48 -4
- package/dist/config/generator.js.map +1 -1
- package/dist/hooks/__tests__/agents-overlay.test.js +9 -9
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +10 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js +13 -0
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +1 -1
- package/dist/hooks/__tests__/explore-routing.test.js +10 -13
- package/dist/hooks/__tests__/explore-routing.test.js.map +1 -1
- package/dist/hooks/__tests__/explore-sparkshell-guidance-contract.test.js +13 -15
- package/dist/hooks/__tests__/explore-sparkshell-guidance-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js +33 -0
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js +60 -0
- package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js.map +1 -1
- package/dist/hooks/explore-routing.d.ts.map +1 -1
- package/dist/hooks/explore-routing.js +8 -14
- package/dist/hooks/explore-routing.js.map +1 -1
- package/dist/hud/__tests__/hud-tmux-injection.test.js +15 -10
- package/dist/hud/__tests__/hud-tmux-injection.test.js.map +1 -1
- package/dist/hud/__tests__/reconcile.test.js +23 -0
- package/dist/hud/__tests__/reconcile.test.js.map +1 -1
- package/dist/hud/index.d.ts +1 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +24 -2
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/reconcile.d.ts.map +1 -1
- package/dist/hud/reconcile.js +15 -0
- package/dist/hud/reconcile.js.map +1 -1
- package/dist/question/__tests__/deep-interview.test.js +80 -7
- package/dist/question/__tests__/deep-interview.test.js.map +1 -1
- package/dist/question/__tests__/policy.test.js +83 -9
- package/dist/question/__tests__/policy.test.js.map +1 -1
- package/dist/question/autopilot-wait.d.ts +10 -0
- package/dist/question/autopilot-wait.d.ts.map +1 -0
- package/dist/question/autopilot-wait.js +134 -0
- package/dist/question/autopilot-wait.js.map +1 -0
- package/dist/question/deep-interview.d.ts.map +1 -1
- package/dist/question/deep-interview.js +4 -0
- package/dist/question/deep-interview.js.map +1 -1
- package/dist/question/policy.d.ts +1 -0
- package/dist/question/policy.d.ts.map +1 -1
- package/dist/question/policy.js +19 -0
- package/dist/question/policy.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +331 -0
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +45 -3
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/notify-hook.js +13 -0
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/subagents/__tests__/tracker.test.js +69 -0
- package/dist/subagents/__tests__/tracker.test.js.map +1 -1
- package/dist/subagents/tracker.d.ts +5 -0
- package/dist/subagents/tracker.d.ts.map +1 -1
- package/dist/subagents/tracker.js +16 -0
- package/dist/subagents/tracker.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js +126 -0
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +126 -8
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/package.json +1 -1
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/skills/autopilot/SKILL.md +2 -2
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +4 -4
- package/plugins/oh-my-codex/skills/plan/SKILL.md +5 -5
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +5 -5
- package/prompts/executor.md +1 -1
- package/prompts/explore-harness.md +2 -2
- package/prompts/explore.md +1 -1
- package/prompts/planner.md +1 -1
- package/prompts/sisyphus-lite.md +1 -1
- package/skills/autopilot/SKILL.md +2 -2
- package/skills/deep-interview/SKILL.md +1 -1
- package/skills/omx-setup/SKILL.md +4 -4
- package/skills/plan/SKILL.md +5 -5
- package/skills/ralph/SKILL.md +1 -1
- package/skills/ralplan/SKILL.md +5 -5
- package/src/scripts/__tests__/codex-native-hook.test.ts +368 -0
- package/src/scripts/codex-native-hook.ts +50 -2
- package/src/scripts/notify-hook.ts +15 -0
- package/templates/AGENTS.md +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-native-hook.d.ts","sourceRoot":"","sources":["../../src/scripts/codex-native-hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-native-hook.d.ts","sourceRoot":"","sources":["../../src/scripts/codex-native-hook.ts"],"names":[],"mappings":"AAyCA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AA8BtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAmClE,KAAK,kBAAkB,GACnB,cAAc,GACd,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,YAAY,GACZ,aAAa,GACb,MAAM,CAAC;AAEX,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B,CAAC,EAAE,OAAO,2BAA2B,CAAC;CACpE;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC5C;AA4RD,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,kBAAkB,GAAG,IAAI,GACvC,MAAM,GAAG,IAAI,CAmBf;AAwoBD,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC,GACL,MAAM,GAAG,IAAI,CAuBf;AAg8BD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMnE;AA+mDD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAqRnC;AAOD,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAGT;AA2ED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC3D"}
|
|
@@ -8,7 +8,7 @@ import { SKILL_ACTIVE_STATE_FILE, extractSessionIdFromInitializedStatePath, getS
|
|
|
8
8
|
import { readSubagentSessionSummary, readSubagentTrackingState, recordSubagentTurnForSession, } from "../subagents/tracker.js";
|
|
9
9
|
import { resolveCanonicalTeamStateRoot, resolveWorkerNotifyTeamStateRootPath } from "../team/state-root.js";
|
|
10
10
|
import { appendToLog, isSessionStateUsable, readSessionState, readUsableSessionState, reconcileNativeSessionStart, } from "../hooks/session.js";
|
|
11
|
-
import { appendTeamEvent, readTeamLeaderAttention, readTeamManifestV2, readTeamPhase, writeTeamLeaderAttention, writeTeamPhase, } from "../team/state.js";
|
|
11
|
+
import { appendTeamEvent, readTeamLeaderAttention, readTeamConfig, readTeamManifestV2, readTeamPhase, writeTeamLeaderAttention, writeTeamPhase, } from "../team/state.js";
|
|
12
12
|
import { omxNotepadPath, resolveProjectMemoryPath } from "../utils/paths.js";
|
|
13
13
|
import { findGitLayout } from "../utils/git-layout.js";
|
|
14
14
|
import { getBaseStateDir, getStateFilePath, getStatePath } from "../mcp/state-paths.js";
|
|
@@ -33,6 +33,7 @@ import { triagePrompt } from "../hooks/triage-heuristic.js";
|
|
|
33
33
|
import { readTriageConfig } from "../hooks/triage-config.js";
|
|
34
34
|
import { readTriageState, writeTriageState, shouldSuppressFollowup, promptSignature, } from "../hooks/triage-state.js";
|
|
35
35
|
import { isPendingDeepInterviewQuestionEnforcement, reconcileDeepInterviewQuestionEnforcementFromAnsweredRecords, } from "../question/deep-interview.js";
|
|
36
|
+
import { readAutopilotDeepInterviewQuestionWaitState } from "../question/autopilot-wait.js";
|
|
36
37
|
import { buildDocumentRefreshAdvisoryOutput, evaluateFinalHandoffDocumentRefresh, isFinalHandoffDocumentRefreshCandidate, } from "../document-refresh/enforcer.js";
|
|
37
38
|
import { buildExecFollowupStopOutput } from "../exec/followup.js";
|
|
38
39
|
const TERMINAL_MODE_PHASES = new Set(["complete", "completed", "failed", "cancelled"]);
|
|
@@ -1538,6 +1539,23 @@ async function resolveTeamStateDirForWorkerContext(cwd, workerContext) {
|
|
|
1538
1539
|
}
|
|
1539
1540
|
return null;
|
|
1540
1541
|
}
|
|
1542
|
+
async function isConfirmedTeamWorkerPromptSubmitPane(cwd) {
|
|
1543
|
+
const workerContext = parseTeamWorkerEnv(safeString(process.env.OMX_TEAM_INTERNAL_WORKER))
|
|
1544
|
+
|| parseTeamWorkerEnv(safeString(process.env.OMX_TEAM_WORKER));
|
|
1545
|
+
if (!workerContext)
|
|
1546
|
+
return false;
|
|
1547
|
+
const currentPaneId = safeString(process.env.TMUX_PANE).trim();
|
|
1548
|
+
if (!currentPaneId)
|
|
1549
|
+
return false;
|
|
1550
|
+
const config = await readTeamConfig(workerContext.teamName, cwd).catch(() => null);
|
|
1551
|
+
if (!config)
|
|
1552
|
+
return false;
|
|
1553
|
+
const leaderPaneId = safeString(config.leader_pane_id).trim();
|
|
1554
|
+
if (leaderPaneId && leaderPaneId === currentPaneId)
|
|
1555
|
+
return false;
|
|
1556
|
+
const workerPaneId = safeString(config.workers.find((worker) => worker.name === workerContext.workerName)?.pane_id).trim();
|
|
1557
|
+
return workerPaneId !== "" && workerPaneId === currentPaneId;
|
|
1558
|
+
}
|
|
1541
1559
|
async function resolveTeamWorkerStopDecision(cwd) {
|
|
1542
1560
|
const workerContext = parseTeamWorkerEnv(safeString(process.env.OMX_TEAM_INTERNAL_WORKER))
|
|
1543
1561
|
|| parseTeamWorkerEnv(safeString(process.env.OMX_TEAM_WORKER));
|
|
@@ -1652,6 +1670,9 @@ async function buildModeBasedStopOutput(mode, cwd, sessionId) {
|
|
|
1652
1670
|
if (await readCanonicalTerminalRunStateForStop(cwd, sessionId, mode)) {
|
|
1653
1671
|
return null;
|
|
1654
1672
|
}
|
|
1673
|
+
if (mode === "autopilot" && await readAutopilotDeepInterviewQuestionWaitState(cwd, sessionId)) {
|
|
1674
|
+
return null;
|
|
1675
|
+
}
|
|
1655
1676
|
const state = await readModeStateForActiveDecision(mode, sessionId?.trim() || undefined, cwd);
|
|
1656
1677
|
if (!state || !shouldContinueRun(state))
|
|
1657
1678
|
return null;
|
|
@@ -1695,6 +1716,17 @@ function reportsBlockedPerformanceGoalObjectiveMismatch(state) {
|
|
|
1695
1716
|
].join(" ");
|
|
1696
1717
|
return /objective mismatch/i.test(evidence);
|
|
1697
1718
|
}
|
|
1719
|
+
function reportsBlockedUltragoalCompletedAggregateMicrogoalLoop(goal) {
|
|
1720
|
+
const evidence = [
|
|
1721
|
+
safeString(goal.failureReason),
|
|
1722
|
+
safeString(goal.blockedReason),
|
|
1723
|
+
safeString(goal.evidence),
|
|
1724
|
+
].join(" ");
|
|
1725
|
+
return /aggregate codex goal/i.test(evidence)
|
|
1726
|
+
&& /\bcomplete(?:d)?\b/i.test(evidence)
|
|
1727
|
+
&& /microgoal/i.test(evidence)
|
|
1728
|
+
&& /\b(?:unreconcilable|mismatch|loop|already complete|already completed|blocks?)\b/i.test(evidence);
|
|
1729
|
+
}
|
|
1698
1730
|
async function findActiveGoalWorkflowReconciliationRequirement(cwd) {
|
|
1699
1731
|
const ultragoal = await readJsonIfExists(join(cwd, ".omx", "ultragoal", "goals.json"));
|
|
1700
1732
|
const aggregateCompletion = safeObject(ultragoal?.aggregateCompletion);
|
|
@@ -1703,6 +1735,9 @@ async function findActiveGoalWorkflowReconciliationRequirement(cwd) {
|
|
|
1703
1735
|
const activeUltragoal = aggregateProductComplete
|
|
1704
1736
|
? undefined
|
|
1705
1737
|
: ultragoals.find((goal) => safeString(goal.status) === "in_progress" || safeString(goal.id) === safeString(ultragoal?.activeGoalId));
|
|
1738
|
+
if (activeUltragoal && reportsBlockedUltragoalCompletedAggregateMicrogoalLoop(activeUltragoal)) {
|
|
1739
|
+
return null;
|
|
1740
|
+
}
|
|
1706
1741
|
if (activeUltragoal) {
|
|
1707
1742
|
const goalId = safeString(activeUltragoal.id) || "<goal-id>";
|
|
1708
1743
|
return {
|
|
@@ -2309,6 +2344,9 @@ async function readStopAutoNudgePhase(cwd, stateDir, sessionId, threadId) {
|
|
|
2309
2344
|
}
|
|
2310
2345
|
async function buildDeepInterviewQuestionStopOutput(cwd, stateDir, sessionId, threadId) {
|
|
2311
2346
|
await reconcileDeepInterviewQuestionEnforcementFromAnsweredRecords(cwd, sessionId);
|
|
2347
|
+
if (await readAutopilotDeepInterviewQuestionWaitState(cwd, sessionId)) {
|
|
2348
|
+
return null;
|
|
2349
|
+
}
|
|
2312
2350
|
const modeState = await readStopSessionPinnedState("deep-interview-state.json", cwd, sessionId, stateDir);
|
|
2313
2351
|
if (!modeState)
|
|
2314
2352
|
return null;
|
|
@@ -3002,8 +3040,12 @@ export async function dispatchCodexNativeHook(payload, options = {}) {
|
|
|
3002
3040
|
triageAdditionalContext = null;
|
|
3003
3041
|
}
|
|
3004
3042
|
}
|
|
3005
|
-
const
|
|
3006
|
-
|
|
3043
|
+
const skipHudReconcileForTeamWorkerPane = !isSubagentPromptSubmit
|
|
3044
|
+
&& await isConfirmedTeamWorkerPromptSubmitPane(cwd).catch(() => false);
|
|
3045
|
+
if (!skipHudReconcileForTeamWorkerPane) {
|
|
3046
|
+
const reconcileHudForPromptSubmitFn = options.reconcileHudForPromptSubmitFn ?? reconcileHudForPromptSubmit;
|
|
3047
|
+
await reconcileHudForPromptSubmitFn(cwd, { sessionId: canonicalSessionId || sessionIdForState || undefined }).catch(() => { });
|
|
3048
|
+
}
|
|
3007
3049
|
}
|
|
3008
3050
|
if (omxEventName && !skipCanonicalSessionStartContext && !suppressNoisySubagentLifecycleDispatch) {
|
|
3009
3051
|
const baseContext = buildBaseContext(cwd, payload, hookEventName, canonicalSessionId);
|