oh-my-codex 0.18.0 → 0.18.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.
- package/Cargo.lock +6 -6
- package/Cargo.toml +1 -1
- package/README.md +43 -19
- package/crates/omx-api/src/lib.rs +66 -9
- package/crates/omx-sparkshell/src/exec.rs +125 -3
- package/crates/omx-sparkshell/src/main.rs +126 -36
- package/crates/omx-sparkshell/tests/execution.rs +225 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +15 -7
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +76 -3
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +49 -1
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/install-docs-contract.test.d.ts +2 -0
- package/dist/cli/__tests__/install-docs-contract.test.d.ts.map +1 -0
- package/dist/cli/__tests__/install-docs-contract.test.js +55 -0
- package/dist/cli/__tests__/install-docs-contract.test.js.map +1 -0
- package/dist/cli/__tests__/launch-fallback.test.js +115 -0
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/question.test.js +27 -41
- package/dist/cli/__tests__/question.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +94 -35
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js +20 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-packaging.test.js +1 -0
- package/dist/cli/__tests__/sparkshell-packaging.test.js.map +1 -1
- package/dist/cli/__tests__/ultragoal.test.js +227 -4
- package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
- package/dist/cli/__tests__/update.test.js +72 -1
- package/dist/cli/__tests__/update.test.js.map +1 -1
- package/dist/cli/codex-feature-probe.d.ts +5 -0
- package/dist/cli/codex-feature-probe.d.ts.map +1 -1
- package/dist/cli/codex-feature-probe.js +13 -7
- package/dist/cli/codex-feature-probe.js.map +1 -1
- package/dist/cli/doctor.d.ts +7 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +119 -10
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +3 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +345 -90
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plugin-marketplace.d.ts +2 -0
- package/dist/cli/plugin-marketplace.d.ts.map +1 -1
- package/dist/cli/plugin-marketplace.js +15 -1
- package/dist/cli/plugin-marketplace.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +71 -11
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/sparkshell.d.ts +7 -1
- package/dist/cli/sparkshell.d.ts.map +1 -1
- package/dist/cli/sparkshell.js +13 -3
- package/dist/cli/sparkshell.js.map +1 -1
- package/dist/cli/ultragoal.d.ts +1 -1
- package/dist/cli/ultragoal.d.ts.map +1 -1
- package/dist/cli/ultragoal.js +184 -10
- package/dist/cli/ultragoal.js.map +1 -1
- package/dist/cli/update.d.ts +2 -0
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +14 -3
- package/dist/cli/update.js.map +1 -1
- package/dist/compat/__tests__/doctor-contract.test.js +3 -0
- package/dist/compat/__tests__/doctor-contract.test.js.map +1 -1
- package/dist/config/__tests__/codex-feature-flags.test.js +11 -1
- package/dist/config/__tests__/codex-feature-flags.test.js.map +1 -1
- package/dist/config/__tests__/codex-hooks.test.js +19 -8
- package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
- package/dist/config/__tests__/commit-lore-guard.test.d.ts +2 -0
- package/dist/config/__tests__/commit-lore-guard.test.d.ts.map +1 -0
- package/dist/config/__tests__/commit-lore-guard.test.js +20 -0
- package/dist/config/__tests__/commit-lore-guard.test.js.map +1 -0
- package/dist/config/codex-feature-flags.d.ts +4 -0
- package/dist/config/codex-feature-flags.d.ts.map +1 -1
- package/dist/config/codex-feature-flags.js +4 -0
- package/dist/config/codex-feature-flags.js.map +1 -1
- package/dist/config/codex-hooks.js +6 -6
- package/dist/config/codex-hooks.js.map +1 -1
- package/dist/config/commit-lore-guard.d.ts +1 -0
- package/dist/config/commit-lore-guard.d.ts.map +1 -1
- package/dist/config/commit-lore-guard.js +29 -3
- package/dist/config/commit-lore-guard.js.map +1 -1
- package/dist/config/generator.d.ts +3 -1
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +24 -10
- package/dist/config/generator.js.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.d.ts +1 -0
- package/dist/goal-workflows/codex-goal-snapshot.d.ts.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.js +5 -1
- package/dist/goal-workflows/codex-goal-snapshot.js.map +1 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +10 -6
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/consensus-execution-handoff.test.d.ts +1 -1
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js +13 -11
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js +4 -3
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +4 -3
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js +33 -0
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js +26 -3
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -1
- package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
- package/dist/hooks/extensibility/dispatcher.js +29 -14
- package/dist/hooks/extensibility/dispatcher.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +8 -3
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hooks/prompt-guidance-contract.d.ts.map +1 -1
- package/dist/hooks/prompt-guidance-contract.js +3 -2
- package/dist/hooks/prompt-guidance-contract.js.map +1 -1
- package/dist/hud/__tests__/hud-tmux-injection.test.js +14 -8
- package/dist/hud/__tests__/hud-tmux-injection.test.js.map +1 -1
- package/dist/hud/__tests__/reconcile.test.js +2 -2
- package/dist/hud/__tests__/reconcile.test.js.map +1 -1
- package/dist/hud/__tests__/resource-leak-watch.test.d.ts +2 -0
- package/dist/hud/__tests__/resource-leak-watch.test.d.ts.map +1 -0
- package/dist/hud/__tests__/resource-leak-watch.test.js +28 -0
- package/dist/hud/__tests__/resource-leak-watch.test.js.map +1 -0
- package/dist/hud/index.d.ts +1 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +10 -4
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/tmux.js +2 -2
- package/dist/hud/tmux.js.map +1 -1
- package/dist/notifications/__tests__/http-client-resource.test.d.ts +2 -0
- package/dist/notifications/__tests__/http-client-resource.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/http-client-resource.test.js +41 -0
- package/dist/notifications/__tests__/http-client-resource.test.js.map +1 -0
- package/dist/notifications/__tests__/verbosity.test.js +20 -0
- package/dist/notifications/__tests__/verbosity.test.js.map +1 -1
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +6 -3
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/http-client.d.ts.map +1 -1
- package/dist/notifications/http-client.js +78 -27
- package/dist/notifications/http-client.js.map +1 -1
- package/dist/notifications/types.d.ts +2 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/openclaw/__tests__/dispatcher.test.js +49 -1
- package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -1
- package/dist/openclaw/dispatcher.d.ts +7 -4
- package/dist/openclaw/dispatcher.d.ts.map +1 -1
- package/dist/openclaw/dispatcher.js +32 -69
- package/dist/openclaw/dispatcher.js.map +1 -1
- package/dist/pipeline/__tests__/orchestrator.test.js +65 -3
- package/dist/pipeline/__tests__/orchestrator.test.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +50 -5
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/index.d.ts +8 -2
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js +5 -2
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/orchestrator.d.ts +5 -4
- package/dist/pipeline/orchestrator.d.ts.map +1 -1
- package/dist/pipeline/orchestrator.js +56 -15
- package/dist/pipeline/orchestrator.js.map +1 -1
- package/dist/pipeline/stages/code-review.d.ts +2 -2
- package/dist/pipeline/stages/code-review.d.ts.map +1 -1
- package/dist/pipeline/stages/code-review.js +5 -3
- package/dist/pipeline/stages/code-review.js.map +1 -1
- package/dist/pipeline/stages/deep-interview.d.ts +15 -0
- package/dist/pipeline/stages/deep-interview.d.ts.map +1 -0
- package/dist/pipeline/stages/deep-interview.js +32 -0
- package/dist/pipeline/stages/deep-interview.js.map +1 -0
- package/dist/pipeline/stages/ralph-verify.d.ts +5 -5
- package/dist/pipeline/stages/ralph-verify.d.ts.map +1 -1
- package/dist/pipeline/stages/ralph-verify.js +2 -2
- package/dist/pipeline/stages/ralph-verify.js.map +1 -1
- package/dist/pipeline/stages/ultragoal.d.ts +19 -0
- package/dist/pipeline/stages/ultragoal.d.ts.map +1 -0
- package/dist/pipeline/stages/ultragoal.js +38 -0
- package/dist/pipeline/stages/ultragoal.js.map +1 -0
- package/dist/pipeline/stages/ultraqa.d.ts +30 -0
- package/dist/pipeline/stages/ultraqa.d.ts.map +1 -0
- package/dist/pipeline/stages/ultraqa.js +46 -0
- package/dist/pipeline/stages/ultraqa.js.map +1 -0
- package/dist/pipeline/types.d.ts +8 -6
- package/dist/pipeline/types.d.ts.map +1 -1
- package/dist/pipeline/types.js +2 -2
- package/dist/scripts/__tests__/codex-native-hook.test.js +705 -45
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js +23 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
- package/dist/scripts/__tests__/verify-native-agents.test.js +16 -1
- package/dist/scripts/__tests__/verify-native-agents.test.js.map +1 -1
- package/dist/scripts/cleanup-explore-harness.js +1 -0
- package/dist/scripts/cleanup-explore-harness.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +158 -10
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/codex-native-pre-post.d.ts.map +1 -1
- package/dist/scripts/codex-native-pre-post.js +9 -1
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/notify-hook/process-runner.d.ts.map +1 -1
- package/dist/scripts/notify-hook/process-runner.js +39 -17
- package/dist/scripts/notify-hook/process-runner.js.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.js +9 -5
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.js +7 -1
- package/dist/scripts/notify-hook/team-tmux-guard.js.map +1 -1
- package/dist/scripts/smoke-packed-install.d.ts +3 -0
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
- package/dist/scripts/smoke-packed-install.js +99 -1
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/scripts/sync-plugin-mirror.js +2 -2
- package/dist/scripts/sync-plugin-mirror.js.map +1 -1
- package/dist/scripts/verify-native-agents.js +2 -2
- package/dist/scripts/verify-native-agents.js.map +1 -1
- package/dist/sidecar/__tests__/resource-leak-watch.test.d.ts +2 -0
- package/dist/sidecar/__tests__/resource-leak-watch.test.d.ts.map +1 -0
- package/dist/sidecar/__tests__/resource-leak-watch.test.js +38 -0
- package/dist/sidecar/__tests__/resource-leak-watch.test.js.map +1 -0
- package/dist/sidecar/index.d.ts +1 -1
- package/dist/sidecar/index.d.ts.map +1 -1
- package/dist/sidecar/index.js +29 -12
- package/dist/sidecar/index.js.map +1 -1
- package/dist/state/__tests__/operations-ralph-phase.test.js +88 -1
- package/dist/state/__tests__/operations-ralph-phase.test.js.map +1 -1
- package/dist/state/operations.d.ts.map +1 -1
- package/dist/state/operations.js +11 -0
- package/dist/state/operations.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +111 -3
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +39 -18
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js +714 -10
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/__tests__/docs-contract.test.js +57 -1
- package/dist/ultragoal/__tests__/docs-contract.test.js.map +1 -1
- package/dist/ultragoal/__tests__/steering-fixtures.d.ts +68 -0
- package/dist/ultragoal/__tests__/steering-fixtures.d.ts.map +1 -0
- package/dist/ultragoal/__tests__/steering-fixtures.js +259 -0
- package/dist/ultragoal/__tests__/steering-fixtures.js.map +1 -0
- package/dist/ultragoal/__tests__/steering-fixtures.test.d.ts +2 -0
- package/dist/ultragoal/__tests__/steering-fixtures.test.d.ts.map +1 -0
- package/dist/ultragoal/__tests__/steering-fixtures.test.js +65 -0
- package/dist/ultragoal/__tests__/steering-fixtures.test.js.map +1 -0
- package/dist/ultragoal/artifacts.d.ts +97 -2
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +811 -256
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/dist/utils/__tests__/sleep-resource.test.d.ts +2 -0
- package/dist/utils/__tests__/sleep-resource.test.d.ts.map +1 -0
- package/dist/utils/__tests__/sleep-resource.test.js +39 -0
- package/dist/utils/__tests__/sleep-resource.test.js.map +1 -0
- package/dist/utils/sleep.d.ts.map +1 -1
- package/dist/utils/sleep.js +17 -6
- package/dist/utils/sleep.js.map +1 -1
- package/package.json +2 -1
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +4 -3
- package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +56 -0
- package/plugins/oh-my-codex/hooks/hooks.json +77 -0
- package/plugins/oh-my-codex/skills/autopilot/SKILL.md +77 -47
- package/plugins/oh-my-codex/skills/cancel/SKILL.md +2 -2
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +8 -8
- package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/pipeline/SKILL.md +22 -11
- package/plugins/oh-my-codex/skills/plan/SKILL.md +8 -8
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +7 -0
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +4 -4
- package/plugins/oh-my-codex/skills/team/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/ultragoal/SKILL.md +38 -4
- package/plugins/oh-my-codex/skills/ultrawork/SKILL.md +1 -1
- package/prompts/planner.md +1 -1
- package/skills/autopilot/SKILL.md +77 -47
- package/skills/cancel/SKILL.md +2 -2
- package/skills/deep-interview/SKILL.md +8 -8
- package/skills/omx-setup/SKILL.md +1 -1
- package/skills/pipeline/SKILL.md +22 -11
- package/skills/plan/SKILL.md +8 -8
- package/skills/ralph/SKILL.md +7 -0
- package/skills/ralplan/SKILL.md +4 -4
- package/skills/team/SKILL.md +1 -1
- package/skills/ultragoal/SKILL.md +38 -4
- package/skills/ultrawork/SKILL.md +1 -1
- package/src/scripts/__tests__/codex-native-hook.test.ts +867 -81
- package/src/scripts/__tests__/smoke-packed-install.test.ts +31 -0
- package/src/scripts/__tests__/verify-native-agents.test.ts +21 -1
- package/src/scripts/cleanup-explore-harness.ts +1 -0
- package/src/scripts/codex-native-hook.ts +156 -10
- package/src/scripts/codex-native-pre-post.ts +16 -1
- package/src/scripts/notify-hook/process-runner.ts +40 -16
- package/src/scripts/notify-hook/team-dispatch.ts +9 -5
- package/src/scripts/notify-hook/team-tmux-guard.ts +7 -0
- package/src/scripts/smoke-packed-install.ts +105 -0
- package/src/scripts/sync-plugin-mirror.ts +3 -3
- package/src/scripts/verify-native-agents.ts +2 -2
|
@@ -4,7 +4,7 @@ import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises';
|
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { test } from 'node:test';
|
|
7
|
-
import { ensureRepoDependencies, hasUsableNodeModules, PACKED_INSTALL_SMOKE_CORE_COMMANDS, parseNpmPackJsonOutput, resolveGitCommonDir, resolveReusableNodeModulesSource, } from '../smoke-packed-install.js';
|
|
7
|
+
import { ensureRepoDependencies, hasUsableNodeModules, buildNativeHookSmokePayload, PACKED_INSTALL_NATIVE_HOOK_SMOKE_EVENTS, PACKED_INSTALL_SMOKE_CORE_COMMANDS, parseNpmPackJsonOutput, resolveGitCommonDir, resolveReusableNodeModulesSource, validateHookStdout, } from '../smoke-packed-install.js';
|
|
8
8
|
test('packed install smoke stays limited to boot + core commands', () => {
|
|
9
9
|
assert.deepEqual(PACKED_INSTALL_SMOKE_CORE_COMMANDS, [
|
|
10
10
|
['--help'],
|
|
@@ -15,6 +15,28 @@ test('packed install smoke stays limited to boot + core commands', () => {
|
|
|
15
15
|
assert.equal(PACKED_INSTALL_SMOKE_CORE_COMMANDS.some((argv) => argv.includes('api')), true);
|
|
16
16
|
assert.equal(PACKED_INSTALL_SMOKE_CORE_COMMANDS.some((argv) => argv.includes('sparkshell')), true);
|
|
17
17
|
});
|
|
18
|
+
test('packed install smoke covers every installed native hook event with minimal payloads', () => {
|
|
19
|
+
assert.deepEqual(PACKED_INSTALL_NATIVE_HOOK_SMOKE_EVENTS, [
|
|
20
|
+
'SessionStart',
|
|
21
|
+
'PreToolUse',
|
|
22
|
+
'PostToolUse',
|
|
23
|
+
'UserPromptSubmit',
|
|
24
|
+
'PreCompact',
|
|
25
|
+
'PostCompact',
|
|
26
|
+
'Stop',
|
|
27
|
+
]);
|
|
28
|
+
for (const eventName of PACKED_INSTALL_NATIVE_HOOK_SMOKE_EVENTS) {
|
|
29
|
+
const payload = buildNativeHookSmokePayload(eventName, '/tmp/omx-packed-hook-smoke');
|
|
30
|
+
assert.equal(payload.hook_event_name, eventName);
|
|
31
|
+
assert.equal(typeof payload.session_id, 'string');
|
|
32
|
+
assert.equal(payload.cwd, '/tmp/omx-packed-hook-smoke');
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
test('packed install native hook stdout validation allows empty or JSON output only', () => {
|
|
36
|
+
assert.doesNotThrow(() => validateHookStdout('PostCompact', ''));
|
|
37
|
+
assert.doesNotThrow(() => validateHookStdout('Stop', '{}\n'));
|
|
38
|
+
assert.throws(() => validateHookStdout('UserPromptSubmit', '{not json'), /native hook UserPromptSubmit emitted invalid JSON stdout/);
|
|
39
|
+
});
|
|
18
40
|
test('parseNpmPackJsonOutput ignores prepack logs before npm pack JSON', () => {
|
|
19
41
|
const parsed = parseNpmPackJsonOutput([
|
|
20
42
|
'[sync-plugin-mirror] synced 29 canonical skill directories and plugin metadata',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoke-packed-install.test.js","sourceRoot":"","sources":["../../../src/scripts/__tests__/smoke-packed-install.test.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,kCAAkC,EAClC,sBAAsB,EACtB,mBAAmB,EACnB,gCAAgC,
|
|
1
|
+
{"version":3,"file":"smoke-packed-install.test.js","sourceRoot":"","sources":["../../../src/scripts/__tests__/smoke-packed-install.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ describe("verify-native-agents", () => {
|
|
|
41
41
|
]),
|
|
42
42
|
definitions: { executor: definition, "style-reviewer": { ...definition, name: "style-reviewer" } },
|
|
43
43
|
promptNames: new Set(["executor", "style-reviewer", "explore-harness"]),
|
|
44
|
-
pluginManifest: { skills: "./skills/" },
|
|
44
|
+
pluginManifest: { skills: "./skills/", hooks: "./hooks/hooks.json" },
|
|
45
45
|
});
|
|
46
46
|
assert.deepEqual(result.installableAgentNames, ["executor"]);
|
|
47
47
|
});
|
|
@@ -146,6 +146,21 @@ describe("verify-native-agents", () => {
|
|
|
146
146
|
promptNames: new Set(["executor"]),
|
|
147
147
|
pluginManifest: { agents: "./agents/" },
|
|
148
148
|
}));
|
|
149
|
+
await rejectsWithCode("native_agent_plugin_boundary_violation", () => verifyNativeAgents({
|
|
150
|
+
manifest: manifest([{ name: "executor", category: "build", status: "active" }]),
|
|
151
|
+
definitions: { executor: definition },
|
|
152
|
+
promptNames: new Set(["executor"]),
|
|
153
|
+
pluginManifest: { prompts: "./prompts/" },
|
|
154
|
+
}));
|
|
155
|
+
});
|
|
156
|
+
it("allows plugin-scoped lifecycle hooks without treating them as native agents", async () => {
|
|
157
|
+
const result = await verifyNativeAgents({
|
|
158
|
+
manifest: manifest([{ name: "executor", category: "build", status: "active" }]),
|
|
159
|
+
definitions: { executor: definition },
|
|
160
|
+
promptNames: new Set(["executor"]),
|
|
161
|
+
pluginManifest: { hooks: "./hooks/hooks.json" },
|
|
162
|
+
});
|
|
163
|
+
assert.deepEqual(result.installableAgentNames, ["executor"]);
|
|
149
164
|
});
|
|
150
165
|
it("keeps merged prompt-backed agents out of the installable set", () => {
|
|
151
166
|
const nativeManifest = manifest([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-native-agents.test.js","sourceRoot":"","sources":["../../../src/scripts/__tests__/verify-native-agents.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,UAAU,GAAoB;IAClC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,qBAAqB;IAClC,eAAe,EAAE,QAAQ;IACzB,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;IACvB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF,SAAS,QAAQ,CAAC,MAA2B;IAC3C,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,MAAM;QACtB,MAAM,EAAE,EAAE;QACV,MAAM;KACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,MAA8B;IAE9B,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACrC,MAAM,CAAC,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,QAAQ,EAAE,QAAQ,CAAC;gBACjB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACzD;oBACE,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,QAAQ;oBAClB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,UAAU;iBACtB;aACF,CAAC;YACF,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE;YAClG,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;YACvE,cAAc,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"verify-native-agents.test.js","sourceRoot":"","sources":["../../../src/scripts/__tests__/verify-native-agents.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ for (const path of [
|
|
|
10
10
|
join(root, 'bin', 'omx-explore-harness.exe'),
|
|
11
11
|
join(root, 'bin', 'omx-explore-harness.meta.json'),
|
|
12
12
|
join(root, 'bin', 'native'),
|
|
13
|
+
join(root, 'crates', 'omx-sparkshell', '.omx'),
|
|
13
14
|
]) {
|
|
14
15
|
await rm(path, { recursive: true, force: true });
|
|
15
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup-explore-harness.js","sourceRoot":"","sources":["../../src/scripts/cleanup-explore-harness.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzC,KAAK,MAAM,IAAI,IAAI;IACjB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,qBAAqB,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,yBAAyB,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,+BAA+B,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"cleanup-explore-harness.js","sourceRoot":"","sources":["../../src/scripts/cleanup-explore-harness.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzC,KAAK,MAAM,IAAI,IAAI;IACjB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,qBAAqB,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,yBAAyB,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,+BAA+B,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC;CAC/C,EAAE,CAAC;IACF,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-native-hook.d.ts","sourceRoot":"","sources":["../../src/scripts/codex-native-hook.ts"],"names":[],"mappings":"AAsCA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-native-hook.d.ts","sourceRoot":"","sources":["../../src/scripts/codex-native-hook.ts"],"names":[],"mappings":"AAsCA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AA6BtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAkClE,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;AA8QD,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;AAo4BD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMnE;AA86CD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAgRnC;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"}
|
|
@@ -20,12 +20,14 @@ import { maybeNudgeLeaderForAllowedWorkerStop } from "./notify-hook/team-worker-
|
|
|
20
20
|
import { resolveCodexExecutionSurface, } from "./codex-execution-surface.js";
|
|
21
21
|
import { buildNativeHookEvent, } from "../hooks/extensibility/events.js";
|
|
22
22
|
import { dispatchHookEventRuntime } from "../hooks/extensibility/runtime.js";
|
|
23
|
+
import { getNotificationConfig, getVerbosity } from "../notifications/config.js";
|
|
23
24
|
import { reconcileHudForPromptSubmit } from "../hud/reconcile.js";
|
|
24
25
|
import { onPreCompact as buildWikiPreCompactContext, onSessionStart as buildWikiSessionStartContext, } from "../wiki/lifecycle.js";
|
|
25
26
|
import { readAutoresearchCompletionStatus, readAutoresearchModeStateForActiveDecision } from "../autoresearch/skill-validation.js";
|
|
26
27
|
import { readRunState } from "../runtime/run-state.js";
|
|
27
28
|
import { evaluateRalphCompletionAuditEvidence, isRalphCompletePhase } from "../ralph/completion-audit.js";
|
|
28
29
|
import { getRunContinuationSnapshot, shouldContinueRun } from "../runtime/run-loop.js";
|
|
30
|
+
import { parseUltragoalSteeringDirective, steerUltragoal, } from "../ultragoal/artifacts.js";
|
|
29
31
|
import { triagePrompt } from "../hooks/triage-heuristic.js";
|
|
30
32
|
import { readTriageConfig } from "../hooks/triage-config.js";
|
|
31
33
|
import { readTriageState, writeTriageState, shouldSuppressFollowup, promptSignature, } from "../hooks/triage-state.js";
|
|
@@ -186,6 +188,13 @@ async function isNativeSubagentHook(cwd, canonicalSessionId, nativeSessionId, th
|
|
|
186
188
|
return false;
|
|
187
189
|
return candidateIds.some((id) => summary.allSubagentThreadIds.includes(id));
|
|
188
190
|
}
|
|
191
|
+
function shouldSuppressSubagentLifecycleHookDispatch() {
|
|
192
|
+
const config = getNotificationConfig();
|
|
193
|
+
if (config?.includeChildAgents === true)
|
|
194
|
+
return false;
|
|
195
|
+
const verbosity = getVerbosity(config);
|
|
196
|
+
return verbosity !== "agent" && verbosity !== "verbose";
|
|
197
|
+
}
|
|
189
198
|
async function recordIgnoredNativeSubagentSessionStart(cwd, canonicalSessionId, childSessionId, metadata, transcriptPath) {
|
|
190
199
|
await appendToLog(cwd, {
|
|
191
200
|
event: "subagent_session_start_ignored",
|
|
@@ -286,6 +295,110 @@ function readPromptText(payload) {
|
|
|
286
295
|
}
|
|
287
296
|
return "";
|
|
288
297
|
}
|
|
298
|
+
function extractBalancedJsonObject(text, startIndex) {
|
|
299
|
+
let depth = 0;
|
|
300
|
+
let inString = false;
|
|
301
|
+
let escaped = false;
|
|
302
|
+
for (let index = startIndex; index < text.length; index++) {
|
|
303
|
+
const char = text[index];
|
|
304
|
+
if (inString) {
|
|
305
|
+
if (escaped)
|
|
306
|
+
escaped = false;
|
|
307
|
+
else if (char === "\\")
|
|
308
|
+
escaped = true;
|
|
309
|
+
else if (char === '"')
|
|
310
|
+
inString = false;
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
if (char === '"') {
|
|
314
|
+
inString = true;
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
if (char === "{")
|
|
318
|
+
depth += 1;
|
|
319
|
+
else if (char === "}") {
|
|
320
|
+
depth -= 1;
|
|
321
|
+
if (depth === 0)
|
|
322
|
+
return text.slice(startIndex, index + 1);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return null;
|
|
326
|
+
}
|
|
327
|
+
function normalizePromptSteeringProposal(raw, prompt) {
|
|
328
|
+
const candidate = safeObject(raw);
|
|
329
|
+
const nested = candidate.omx_ultragoal_steer ?? candidate.ultragoal_steer ?? candidate.steering ?? candidate;
|
|
330
|
+
const proposal = parseUltragoalSteeringDirective(JSON.stringify(nested));
|
|
331
|
+
if (!proposal)
|
|
332
|
+
return null;
|
|
333
|
+
if (proposal.source !== "user_prompt_submit")
|
|
334
|
+
return null;
|
|
335
|
+
const normalized = prompt.trim().toLowerCase();
|
|
336
|
+
return {
|
|
337
|
+
...proposal,
|
|
338
|
+
directiveText: proposal.directiveText ?? safeContextSnippet(prompt, 600),
|
|
339
|
+
promptSignature: proposal.promptSignature ?? promptSignature(normalized),
|
|
340
|
+
idempotencyKey: proposal.idempotencyKey ?? `user_prompt_submit:${promptSignature(normalized)}`,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
function parseUserPromptUltragoalSteeringDirective(prompt) {
|
|
344
|
+
const trimmed = prompt.trim();
|
|
345
|
+
if (!trimmed)
|
|
346
|
+
return null;
|
|
347
|
+
const fenced = trimmed.match(/```(?:omx-ultragoal-steer|ultragoal-steer)\s*([\s\S]*?)```/i);
|
|
348
|
+
if (fenced?.[1]) {
|
|
349
|
+
try {
|
|
350
|
+
return normalizePromptSteeringProposal(JSON.parse(fenced[1]), prompt);
|
|
351
|
+
}
|
|
352
|
+
catch {
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
const label = trimmed.match(/(?:^|\n)\s*(?:OMX_ULTRAGOAL_STEER|omx\.ultragoal\.steer|omx ultragoal steer)\s*:\s*{/i);
|
|
357
|
+
if (label?.index !== undefined) {
|
|
358
|
+
const brace = trimmed.indexOf("{", label.index);
|
|
359
|
+
const json = brace >= 0 ? extractBalancedJsonObject(trimmed, brace) : null;
|
|
360
|
+
if (json) {
|
|
361
|
+
try {
|
|
362
|
+
return normalizePromptSteeringProposal(JSON.parse(json), prompt);
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
if (trimmed.startsWith("{")) {
|
|
370
|
+
try {
|
|
371
|
+
const parsed = JSON.parse(trimmed);
|
|
372
|
+
const object = safeObject(parsed);
|
|
373
|
+
if ("omx_ultragoal_steer" in object || "ultragoal_steer" in object) {
|
|
374
|
+
return normalizePromptSteeringProposal(parsed, prompt);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
return null;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return null;
|
|
382
|
+
}
|
|
383
|
+
async function applyUserPromptUltragoalSteering(cwd, prompt) {
|
|
384
|
+
const proposal = parseUserPromptUltragoalSteeringDirective(prompt);
|
|
385
|
+
if (!proposal)
|
|
386
|
+
return null;
|
|
387
|
+
try {
|
|
388
|
+
const result = await steerUltragoal(cwd, proposal);
|
|
389
|
+
const status = result.deduped ? "deduped" : result.accepted ? "accepted" : "rejected";
|
|
390
|
+
const reasons = result.rejectedReasons.length > 0 ? ` rejectedReasons=${result.rejectedReasons.join("; ")}` : "";
|
|
391
|
+
return [
|
|
392
|
+
`OMX native UserPromptSubmit applied bounded .omx/ultragoal steering for G002-cli-and-prompt-submit-bridge: ${status}.`,
|
|
393
|
+
`mutation=${result.audit.kind}; source=${result.audit.source}; targets=${result.audit.targetGoalIds.join(",") || "none"}; idempotencyKey=${result.audit.idempotencyKey ?? "none"}.${reasons}`,
|
|
394
|
+
"Only explicit structured steering directives are parsed; normal prose is ignored and cannot mutate .omx/ultragoal.",
|
|
395
|
+
].join(" ");
|
|
396
|
+
}
|
|
397
|
+
catch (error) {
|
|
398
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
399
|
+
return `OMX native UserPromptSubmit rejected bounded .omx/ultragoal steering for G002-cli-and-prompt-submit-bridge: ${message}`;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
289
402
|
function sanitizePayloadForHookContext(payload, hookEventName, canonicalSessionId = "") {
|
|
290
403
|
const sanitized = { ...payload };
|
|
291
404
|
if (hookEventName === "UserPromptSubmit") {
|
|
@@ -582,13 +695,12 @@ async function reopenRalphCompletionAuditBlock(block) {
|
|
|
582
695
|
const nowIso = new Date().toISOString();
|
|
583
696
|
const next = {
|
|
584
697
|
...block.state,
|
|
585
|
-
active:
|
|
586
|
-
current_phase: "
|
|
698
|
+
active: false,
|
|
699
|
+
current_phase: "complete",
|
|
587
700
|
completion_audit_gate: "blocked",
|
|
588
701
|
completion_audit_missing_reason: block.reason,
|
|
589
702
|
completion_audit_blocked_at: nowIso,
|
|
590
703
|
};
|
|
591
|
-
delete next.completed_at;
|
|
592
704
|
await writeFile(block.path, JSON.stringify(next, null, 2));
|
|
593
705
|
}
|
|
594
706
|
async function readActiveRalphState(cwd, stateDir, preferredSessionId, ownerContext) {
|
|
@@ -1277,7 +1389,7 @@ function buildAdditionalContextMessage(prompt, skillState, cwd = process.cwd(),
|
|
|
1277
1389
|
? "Ultrawork protocol: ground the task before editing, define pass/fail acceptance criteria, keep shared-file work local, and use direct-tool plus background evidence lanes only for truly independent work. Direct ultrawork provides lightweight verification only; Ralph owns persistence and the full verified-completion promise."
|
|
1278
1390
|
: null;
|
|
1279
1391
|
const ultragoalPromptActivationNote = match.skill === "ultragoal"
|
|
1280
|
-
? "Ultragoal protocol: use `omx ultragoal create-goals` / `complete-goals` / `checkpoint` for `.omx/ultragoal` artifacts, then use Codex goal model tools only from the active agent handoff (`get_goal`, `create_goal`, `update_goal`) and never overwrite a different active Codex goal."
|
|
1392
|
+
? "Ultragoal protocol: use `omx ultragoal create-goals` / `complete-goals` / `checkpoint` for `.omx/ultragoal` artifacts, then use Codex goal model tools only from the active agent handoff (`get_goal`, `create_goal`, `update_goal`) and never overwrite a different active Codex goal. Ultragoal does not call `/goal clear`; for multiple sequential ultragoal runs in one Codex session/thread, manually clear the completed Codex goal in the UI before creating the next aggregate goal."
|
|
1281
1393
|
: null;
|
|
1282
1394
|
const combinedTransitionMessage = (() => {
|
|
1283
1395
|
if (!skillState?.transition_message)
|
|
@@ -1489,6 +1601,9 @@ function isStopExempt(payload) {
|
|
|
1489
1601
|
|| value.includes("limit"));
|
|
1490
1602
|
}
|
|
1491
1603
|
async function buildModeBasedStopOutput(mode, cwd, sessionId) {
|
|
1604
|
+
if (await readCanonicalTerminalRunStateForStop(cwd, sessionId, mode)) {
|
|
1605
|
+
return null;
|
|
1606
|
+
}
|
|
1492
1607
|
const state = await readModeStateForActiveDecision(mode, sessionId?.trim() || undefined, cwd);
|
|
1493
1608
|
if (!state || !shouldContinueRun(state))
|
|
1494
1609
|
return null;
|
|
@@ -1515,6 +1630,23 @@ function reportsAutoresearchGoalObjectiveMismatch(text) {
|
|
|
1515
1630
|
&& /\b(?:complete|completion|reconciliation)\b/i.test(text)
|
|
1516
1631
|
&& /objective mismatch/i.test(text);
|
|
1517
1632
|
}
|
|
1633
|
+
function reportsBlockedPerformanceGoalObjectiveMismatch(state) {
|
|
1634
|
+
const performanceState = safeObject(state);
|
|
1635
|
+
const lastValidation = safeObject(performanceState.lastValidation);
|
|
1636
|
+
if (safeString(performanceState.workflow) !== "performance-goal")
|
|
1637
|
+
return false;
|
|
1638
|
+
if (safeString(performanceState.status) !== "blocked")
|
|
1639
|
+
return false;
|
|
1640
|
+
if (safeString(lastValidation.status) !== "blocked")
|
|
1641
|
+
return false;
|
|
1642
|
+
const evidence = [
|
|
1643
|
+
safeString(lastValidation.evidence),
|
|
1644
|
+
safeString(lastValidation.message),
|
|
1645
|
+
safeString(performanceState.evidence),
|
|
1646
|
+
safeString(performanceState.message),
|
|
1647
|
+
].join(" ");
|
|
1648
|
+
return /objective mismatch/i.test(evidence);
|
|
1649
|
+
}
|
|
1518
1650
|
async function findActiveGoalWorkflowReconciliationRequirement(cwd) {
|
|
1519
1651
|
const ultragoal = await readJsonIfExists(join(cwd, ".omx", "ultragoal", "goals.json"));
|
|
1520
1652
|
const aggregateCompletion = safeObject(ultragoal?.aggregateCompletion);
|
|
@@ -1532,7 +1664,7 @@ async function findActiveGoalWorkflowReconciliationRequirement(cwd) {
|
|
|
1532
1664
|
`If get_goal returns a completed task-scoped objective for the same aggregate ultragoal plan, checkpoint ${goalId} with evidence naming ${goalId} plus .omx/ultragoal/goals.json or ledger.jsonl and pass final quality-gate JSON; OMX will reconcile the completed planned scope without mutating Codex goal state.`,
|
|
1533
1665
|
`If get_goal instead returns a different completed legacy objective and complete checkpointing fails, do not repeat --status complete in this thread.`,
|
|
1534
1666
|
`Record the non-terminal blocker with: omx ultragoal checkpoint --goal-id ${goalId} --status blocked --codex-goal-json '<different completed get_goal JSON or path>' --evidence '<completed legacy Codex goal blocks create_goal in this thread>'.`,
|
|
1535
|
-
"Then continue
|
|
1667
|
+
"Then continue only from a Codex goal context with no active/completed conflicting goal in the same repo/worktree and create the intended goal there.",
|
|
1536
1668
|
].join(" "),
|
|
1537
1669
|
};
|
|
1538
1670
|
}
|
|
@@ -1542,6 +1674,9 @@ async function findActiveGoalWorkflowReconciliationRequirement(cwd) {
|
|
|
1542
1674
|
continue;
|
|
1543
1675
|
const state = await readJsonIfExists(join(performanceRoot, entry.name, "state.json"));
|
|
1544
1676
|
const status = safeString(state?.status);
|
|
1677
|
+
if (reportsBlockedPerformanceGoalObjectiveMismatch(state)) {
|
|
1678
|
+
continue;
|
|
1679
|
+
}
|
|
1545
1680
|
if (state?.workflow === "performance-goal" && status && status !== "complete") {
|
|
1546
1681
|
return {
|
|
1547
1682
|
workflow: "performance-goal",
|
|
@@ -1566,8 +1701,8 @@ async function findActiveGoalWorkflowReconciliationRequirement(cwd) {
|
|
|
1566
1701
|
workflow: "autoresearch-goal",
|
|
1567
1702
|
command: `omx autoresearch-goal complete --slug ${safeString(mission.slug) || entry.name} --codex-goal-json '<get_goal JSON or path>'`,
|
|
1568
1703
|
remediation: [
|
|
1569
|
-
"If that command fails with a Codex goal objective mismatch after a
|
|
1570
|
-
"Either retry with a correct
|
|
1704
|
+
"If that command fails with a Codex goal objective mismatch after a refreshed get_goal snapshot, do not repeat the same complete command blindly in this thread.",
|
|
1705
|
+
"Either retry with a correct refreshed snapshot or record an explicit blocked verdict for this autoresearch-goal and continue from the explicit blocker path.",
|
|
1571
1706
|
].join(" "),
|
|
1572
1707
|
};
|
|
1573
1708
|
}
|
|
@@ -2373,7 +2508,7 @@ async function buildStopHookOutput(payload, cwd, stateDir, options = {}) {
|
|
|
2373
2508
|
`OMX Ralph completion audit is missing required evidence (${ralphCompletionAuditBlock.reason}; state: ${blockingPath}).`,
|
|
2374
2509
|
"Continue verification and do not report complete yet.",
|
|
2375
2510
|
"Record machine-readable completion evidence before stopping:",
|
|
2376
|
-
|
|
2511
|
+
'- either set "completion_audit" on the Ralph state object, for example: omx state write --input \'{"mode":"ralph","active":false,"current_phase":"complete","completion_audit":{"passed":true,"prompt_to_artifact_checklist":["..."],"verification_evidence":["..."]}}\' --json',
|
|
2377
2512
|
"- or set completion_audit_path / completion_audit_evidence_path to a repo-relative JSON file with those same fields.",
|
|
2378
2513
|
"Markdown artifacts and flat top-level checklist/evidence fields are not accepted by the Ralph Stop gate.",
|
|
2379
2514
|
].join(" ");
|
|
@@ -2512,6 +2647,7 @@ export async function dispatchCodexNativeHook(payload, options = {}) {
|
|
|
2512
2647
|
let skillState = null;
|
|
2513
2648
|
let triageAdditionalContext = null;
|
|
2514
2649
|
let goalWorkflowAdditionalContext = null;
|
|
2650
|
+
let ultragoalSteeringAdditionalContext = null;
|
|
2515
2651
|
const nativeSessionId = safeString(payload.session_id ?? payload.sessionId).trim();
|
|
2516
2652
|
const threadId = safeString(payload.thread_id ?? payload.threadId).trim();
|
|
2517
2653
|
const turnId = safeString(payload.turn_id ?? payload.turnId).trim();
|
|
@@ -2519,10 +2655,12 @@ export async function dispatchCodexNativeHook(payload, options = {}) {
|
|
|
2519
2655
|
let canonicalSessionId = safeString(currentSessionState?.session_id).trim();
|
|
2520
2656
|
let resolvedNativeSessionId = nativeSessionId;
|
|
2521
2657
|
let skipCanonicalSessionStartContext = false;
|
|
2658
|
+
let isSubagentSessionStart = false;
|
|
2522
2659
|
if (hookEventName === "SessionStart" && nativeSessionId) {
|
|
2523
2660
|
const transcriptPath = safeString(payload.transcript_path ?? payload.transcriptPath).trim();
|
|
2524
2661
|
const subagentSessionStart = readNativeSubagentSessionStartMetadata(transcriptPath);
|
|
2525
2662
|
if (subagentSessionStart && canonicalSessionId) {
|
|
2663
|
+
isSubagentSessionStart = true;
|
|
2526
2664
|
const belongsToCanonicalSession = await nativeSubagentSessionStartBelongsToCanonicalSession(cwd, canonicalSessionId, currentSessionState, subagentSessionStart);
|
|
2527
2665
|
if (belongsToCanonicalSession) {
|
|
2528
2666
|
resolvedNativeSessionId = nativeSessionId;
|
|
@@ -2570,9 +2708,14 @@ export async function dispatchCodexNativeHook(payload, options = {}) {
|
|
|
2570
2708
|
].filter(Boolean))]
|
|
2571
2709
|
.map((candidateSessionId) => isNativeSubagentHook(cwd, candidateSessionId, nativeSessionId, threadId)))).some(Boolean)
|
|
2572
2710
|
: false;
|
|
2711
|
+
const suppressNoisySubagentLifecycleDispatch = (isSubagentSessionStart || isSubagentStop)
|
|
2712
|
+
&& shouldSuppressSubagentLifecycleHookDispatch();
|
|
2573
2713
|
if (hookEventName === "UserPromptSubmit") {
|
|
2574
2714
|
const prompt = readPromptText(payload);
|
|
2575
2715
|
goalWorkflowAdditionalContext = await buildGoalWorkflowReconciliationPromptWarning(cwd, prompt).catch(() => null);
|
|
2716
|
+
ultragoalSteeringAdditionalContext = prompt && !isSubagentPromptSubmit
|
|
2717
|
+
? await applyUserPromptUltragoalSteering(cwd, prompt).catch((error) => `OMX native UserPromptSubmit rejected bounded .omx/ultragoal steering for G002-cli-and-prompt-submit-bridge: ${error instanceof Error ? error.message : String(error)}`)
|
|
2718
|
+
: null;
|
|
2576
2719
|
if (prompt && !isSubagentPromptSubmit) {
|
|
2577
2720
|
skillState = buildNativeOutsideTmuxTeamPromptBlockState(prompt, cwd, payload, sessionIdForState, threadId || undefined, turnId || undefined) ?? await recordSkillActivation({
|
|
2578
2721
|
stateDir,
|
|
@@ -2661,7 +2804,7 @@ export async function dispatchCodexNativeHook(payload, options = {}) {
|
|
|
2661
2804
|
const reconcileHudForPromptSubmitFn = options.reconcileHudForPromptSubmitFn ?? reconcileHudForPromptSubmit;
|
|
2662
2805
|
await reconcileHudForPromptSubmitFn(cwd, { sessionId: canonicalSessionId || sessionIdForState || undefined }).catch(() => { });
|
|
2663
2806
|
}
|
|
2664
|
-
if (omxEventName && !skipCanonicalSessionStartContext) {
|
|
2807
|
+
if (omxEventName && !skipCanonicalSessionStartContext && !suppressNoisySubagentLifecycleDispatch) {
|
|
2665
2808
|
const baseContext = buildBaseContext(cwd, payload, hookEventName, canonicalSessionId);
|
|
2666
2809
|
if (resolvedNativeSessionId) {
|
|
2667
2810
|
baseContext.native_session_id = resolvedNativeSessionId;
|
|
@@ -2698,7 +2841,12 @@ export async function dispatchCodexNativeHook(payload, options = {}) {
|
|
|
2698
2841
|
})
|
|
2699
2842
|
: isSubagentPromptSubmit
|
|
2700
2843
|
? null
|
|
2701
|
-
:
|
|
2844
|
+
: [
|
|
2845
|
+
buildAdditionalContextMessage(readPromptText(payload), skillState, cwd, payload),
|
|
2846
|
+
ultragoalSteeringAdditionalContext,
|
|
2847
|
+
goalWorkflowAdditionalContext,
|
|
2848
|
+
triageAdditionalContext,
|
|
2849
|
+
].filter((entry) => Boolean(entry)).join("\n\n") || null;
|
|
2702
2850
|
if (additionalContext) {
|
|
2703
2851
|
outputJson = {
|
|
2704
2852
|
hookSpecificOutput: {
|