greprag 5.73.2 → 5.73.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.
@@ -34,7 +34,6 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  };
35
35
  })();
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
- const codex_chip_hooks_1 = require("./codex-chip-hooks");
38
37
  async function readInput() {
39
38
  try {
40
39
  const chunks = [];
@@ -49,12 +48,18 @@ async function readInput() {
49
48
  }
50
49
  async function main() {
51
50
  const subcommand = process.argv[2];
52
- if (subcommand !== 'codex-chip-hook' && subcommand !== 'codex-pretooluse') {
53
- process.stderr.write('Usage: greprag-codex-hook <codex-chip-hook|codex-pretooluse>\n');
51
+ if (subcommand !== 'codex-chip-hook' && subcommand !== 'codex-pretooluse' && subcommand !== 'codex-notify') {
52
+ process.stderr.write('Usage: greprag-codex-hook <codex-chip-hook|codex-pretooluse|codex-notify>\n');
54
53
  process.exit(1);
55
54
  }
56
55
  const input = await readInput();
57
- const chipResult = (0, codex_chip_hooks_1.evaluateCodexChipHook)(input);
56
+ if (subcommand === 'codex-notify') {
57
+ const { runCodexNotify } = await Promise.resolve().then(() => __importStar(require('./codex-notify-hook')));
58
+ await runCodexNotify(input);
59
+ return;
60
+ }
61
+ const { evaluateCodexChipHook } = await Promise.resolve().then(() => __importStar(require('./codex-chip-hooks')));
62
+ const chipResult = evaluateCodexChipHook(input);
58
63
  if (subcommand === 'codex-chip-hook') {
59
64
  if (chipResult)
60
65
  process.stdout.write(JSON.stringify(chipResult) + '\n');
@@ -1 +1 @@
1
- {"version":3,"file":"codex-fast-hook.js","sourceRoot":"","sources":["../src/codex-fast-hook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yDAA+E;AAE/E,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,UAAU,KAAK,iBAAiB,IAAI,UAAU,KAAK,kBAAkB,EAAE,CAAC;QAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,IAAA,wCAAqB,EAAC,KAAK,CAAC,CAAC;IAChD,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;QACrC,IAAI,UAAU;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,GAAG,UAAU,CAAC;IACxB,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,kBAAkB,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACjF,MAAM,EAAE,mCAAmC,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QACnF,MAAM,GAAG,MAAM,mCAAmC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACtE,CAAC;IACD,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"codex-fast-hook.js","sourceRoot":"","sources":["../src/codex-fast-hook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8B,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,UAAU,KAAK,iBAAiB,IAAI,UAAU,KAAK,kBAAkB,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QAC3G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACpG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QAClC,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;QAC/D,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,EAAE,qBAAqB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;IACrE,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;QACrC,IAAI,UAAU;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,GAAG,UAAU,CAAC;IACxB,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,kBAAkB,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACjF,MAAM,EAAE,mCAAmC,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QACnF,MAAM,GAAG,MAAM,mCAAmC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACtE,CAAC;IACD,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type HookInput } from './hook-runtime';
2
+ export declare function runCodexNotify(input: HookInput): Promise<void>;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runCodexNotify = runCodexNotify;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const codex_steering_1 = require("./codex-steering");
40
+ const codex_delegation_dedupe_1 = require("./codex-delegation-dedupe");
41
+ const inline_atom_hook_1 = require("./inline-atom-hook");
42
+ const project_anchor_1 = require("./project-anchor");
43
+ const session_id_1 = require("./session-id");
44
+ const codex_prompt_cache_1 = require("./codex-prompt-cache");
45
+ const hook_runtime_1 = require("./hook-runtime");
46
+ function mayBindNativeChip(input) {
47
+ return input.hook_event_name === 'UserPromptSubmit'
48
+ && typeof input.prompt === 'string'
49
+ && /durable manifest is [0-9a-f-]{36}/i.test(input.prompt)
50
+ && !!input.cwd
51
+ && !!input.session_id;
52
+ }
53
+ function stateDir() {
54
+ const home = process.env.HOME || process.env.USERPROFILE || '';
55
+ return path.join(home, '.greprag', 'state');
56
+ }
57
+ function readJson(file) {
58
+ try {
59
+ const parsed = JSON.parse(fs.readFileSync(file, 'utf-8'));
60
+ return parsed && typeof parsed === 'object' ? parsed : null;
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
66
+ function hasLoadoutKeyword(prompt) {
67
+ const parsed = readJson(path.join(stateDir(), 'equipped-loadouts.json'));
68
+ const loadouts = Array.isArray(parsed?.loadouts) ? parsed.loadouts : [];
69
+ if (!loadouts.length)
70
+ return false;
71
+ const haystack = prompt.toLowerCase();
72
+ for (const item of loadouts) {
73
+ if (!item || typeof item !== 'object')
74
+ continue;
75
+ const keywords = Array.isArray(item.keywords)
76
+ ? item.keywords : [];
77
+ if (keywords.some(k => typeof k === 'string' && k && haystack.includes(k.toLowerCase()))) {
78
+ return true;
79
+ }
80
+ }
81
+ return false;
82
+ }
83
+ function reminderMayFire(input) {
84
+ try {
85
+ const anchor = (0, project_anchor_1.readAnchor)(input.cwd || process.cwd());
86
+ const state = anchor.projectId
87
+ ? readJson(path.join(stateDir(), `matchset-${anchor.projectId}.json`))?.stateValues || {}
88
+ : {};
89
+ const stress = typeof state.stress === 'number' ? state.stress : 0;
90
+ const bootstrap = state.bootstrapFriction === true;
91
+ if (stress || bootstrap)
92
+ return true;
93
+ return typeof input.prompt === 'string' && hasLoadoutKeyword(input.prompt);
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ }
99
+ async function maybeBuildReminderContext(input, cfg, short) {
100
+ // Codex prompt submit is UI-critical. The reminder registry is comparatively
101
+ // heavy, so load it only when local state says a prompt-side reminder can fire.
102
+ if (!reminderMayFire(input))
103
+ return null;
104
+ const { injectReminders } = await Promise.resolve().then(() => __importStar(require('./reminder-injector')));
105
+ return injectReminders(input, cfg, short, 'codex');
106
+ }
107
+ async function runCodexNotify(input) {
108
+ (0, codex_prompt_cache_1.cacheCodexPrompt)(input);
109
+ const duplicateDelegation = (0, codex_delegation_dedupe_1.checkCodexDelegationDuplicate)(input);
110
+ const cfg = (0, hook_runtime_1.getHookConfig)(input.cwd || process.cwd());
111
+ if (!cfg.enabled || !cfg.apiKey) {
112
+ if (duplicateDelegation)
113
+ (0, hook_runtime_1.writeAdditionalContext)('UserPromptSubmit', duplicateDelegation);
114
+ return;
115
+ }
116
+ const short = (0, session_id_1.truncateSessionId)(input.session_id);
117
+ if (!short)
118
+ return;
119
+ let chipContext;
120
+ if (mayBindNativeChip(input)) {
121
+ const { evaluateCodexChipHook } = await Promise.resolve().then(() => __importStar(require('./codex-chip-hooks')));
122
+ const chipResult = evaluateCodexChipHook(input);
123
+ const chipOutput = chipResult && 'hookSpecificOutput' in chipResult
124
+ ? chipResult.hookSpecificOutput : undefined;
125
+ chipContext = chipOutput && 'additionalContext' in chipOutput
126
+ ? chipOutput.additionalContext : undefined;
127
+ }
128
+ const liveMessageId = typeof input.prompt === 'string'
129
+ ? input.prompt.match(/^\[GrepRAG live (?:inbox|mechanic) message\]\r?\nMessage id: ([^\s]+)/)?.[1]
130
+ : undefined;
131
+ const context = await (0, codex_steering_1.buildCodexInboxSteering)(input, cfg, {
132
+ debounce: true,
133
+ excludeMessageIds: liveMessageId ? [liveMessageId] : [],
134
+ });
135
+ const reminders = await maybeBuildReminderContext(input, cfg, short);
136
+ const inlineAtoms = (0, inline_atom_hook_1.buildPendingInlineAtomContext)(input, short, { debounceMs: 15_000 });
137
+ const parts = [duplicateDelegation, chipContext, context, reminders, inlineAtoms].filter((p) => !!p);
138
+ if (parts.length)
139
+ (0, hook_runtime_1.writeAdditionalContext)('UserPromptSubmit', parts.join('\n\n'));
140
+ }
141
+ //# sourceMappingURL=codex-notify-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-notify-hook.js","sourceRoot":"","sources":["../src/codex-notify-hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { HookInput } from './hook-runtime';
2
+ export interface PromptCacheEntry {
3
+ sessionId: string;
4
+ turnId: string | null;
5
+ prompt: string;
6
+ model: string | null;
7
+ cwd: string;
8
+ createdAt: string;
9
+ }
10
+ export declare function cacheCodexPrompt(input: HookInput): void;
11
+ export declare function readCodexPromptCache(input: HookInput): PromptCacheEntry | null;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.cacheCodexPrompt = cacheCodexPrompt;
37
+ exports.readCodexPromptCache = readCodexPromptCache;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ function codexCacheDir() {
41
+ const home = process.env.HOME || process.env.USERPROFILE || '';
42
+ if (!home)
43
+ return null;
44
+ return path.join(home, '.greprag', 'codex');
45
+ }
46
+ function promptCachePath(sessionId, turnId) {
47
+ const dir = codexCacheDir();
48
+ if (!dir || !sessionId)
49
+ return null;
50
+ const raw = turnId || sessionId;
51
+ const safe = raw.replace(/[^a-zA-Z0-9_.-]/g, '_').slice(0, 160);
52
+ return path.join(dir, `${safe}.json`);
53
+ }
54
+ function latestPromptCachePath(sessionId) {
55
+ const dir = codexCacheDir();
56
+ if (!dir || !sessionId)
57
+ return null;
58
+ const safe = sessionId.replace(/[^a-zA-Z0-9_.-]/g, '_').slice(0, 160);
59
+ return path.join(dir, `${safe}.latest.json`);
60
+ }
61
+ function cacheCodexPrompt(input) {
62
+ if (typeof input.prompt !== 'string' || !input.prompt.trim() || !input.session_id)
63
+ return;
64
+ const entry = {
65
+ sessionId: input.session_id,
66
+ turnId: input.turn_id || null,
67
+ prompt: input.prompt,
68
+ model: input.model || null,
69
+ cwd: input.cwd || process.cwd(),
70
+ createdAt: new Date().toISOString(),
71
+ };
72
+ const paths = [
73
+ promptCachePath(input.session_id, input.turn_id),
74
+ latestPromptCachePath(input.session_id),
75
+ ].filter((p) => !!p);
76
+ for (const file of paths) {
77
+ try {
78
+ const dir = path.dirname(file);
79
+ if (!fs.existsSync(dir))
80
+ fs.mkdirSync(dir, { recursive: true });
81
+ fs.writeFileSync(file, JSON.stringify(entry, null, 2) + '\n');
82
+ }
83
+ catch {
84
+ // Prompt cache is best-effort.
85
+ }
86
+ }
87
+ }
88
+ function readCodexPromptCache(input) {
89
+ const paths = [
90
+ promptCachePath(input.session_id, input.turn_id),
91
+ latestPromptCachePath(input.session_id),
92
+ ].filter((p) => !!p);
93
+ for (const file of paths) {
94
+ try {
95
+ const parsed = JSON.parse(fs.readFileSync(file, 'utf-8'));
96
+ if (parsed && typeof parsed.prompt === 'string' && parsed.prompt.trim())
97
+ return parsed;
98
+ }
99
+ catch {
100
+ // Try the next cache file.
101
+ }
102
+ }
103
+ return null;
104
+ }
105
+ //# sourceMappingURL=codex-prompt-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-prompt-cache.js","sourceRoot":"","sources":["../src/codex-prompt-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,4CAyBC;AAED,oDAeC;AA5ED,uCAAyB;AACzB,2CAA6B;AAY7B,SAAS,aAAa;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,SAA6B,EAAE,MAA0B;IAChF,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,IAAI,SAAS,CAAC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,qBAAqB,CAAC,SAA6B;IAC1D,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAgB;IAC/C,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO;IAC1F,MAAM,KAAK,GAAqB;QAC9B,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,MAAM,KAAK,GAAG;QACZ,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;QAChD,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC;KACxC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAgB;IACnD,MAAM,KAAK,GAAG;QACZ,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;QAChD,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC;KACxC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAqB,CAAC;YAC9E,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;gBAAE,OAAO,MAAM,CAAC;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -164,10 +164,6 @@ function formatCodexInboxSteering(messages, session8, excludedIds = new Set()) {
164
164
  async function buildCodexInboxSteering(input, cfg, opts = {}) {
165
165
  if (!cfg.enabled || !cfg.apiKey)
166
166
  return null;
167
- const cwd = input.cwd || process.cwd();
168
- const anchor = (0, project_anchor_1.readAnchor)(cwd);
169
- if (!anchor.projectId)
170
- return null;
171
167
  const session8 = (0, session_id_1.truncateSessionId)(input.session_id);
172
168
  if (!session8)
173
169
  return null;
@@ -175,6 +171,10 @@ async function buildCodexInboxSteering(input, cfg, opts = {}) {
175
171
  return null;
176
172
  if (opts.debounce)
177
173
  stampPoll(input.session_id || session8);
174
+ const cwd = input.cwd || process.cwd();
175
+ const anchor = (0, project_anchor_1.readAnchor)(cwd);
176
+ if (!anchor.projectId)
177
+ return null;
178
178
  const base = cfg.apiUrl.replace(/\/+$/, '');
179
179
  const url = new URL(`${base}/v1/inbox`);
180
180
  url.searchParams.set('project_id', anchor.projectId);
@@ -1 +1 @@
1
- {"version":3,"file":"codex-steering.js","sourceRoot":"","sources":["../src/codex-steering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-steering.js","sourceRoot":"","sources":["../src/codex-steering.ts"],"names":[],"mappings":"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"}
@@ -1060,8 +1060,19 @@ function applyCodexHooks(config) {
1060
1060
  hook.commandWindows = windowsCommandForRunner(runner, subcommand);
1061
1061
  return hook;
1062
1062
  };
1063
+ const normalized = normalizeCodexHookCommands(config.hooks);
1064
+ if (normalized > 0)
1065
+ changes.push(`Updated ${normalized} Codex hook command(s) for Windows launcher compatibility`);
1066
+ const recapMatcher = 'startup|clear|compact';
1067
+ const drainMatcher = 'startup|compact';
1068
+ const retargetedResumeHooks = retargetGrepragHookMatcher(config.hooks.SessionStart, 'codex-recap', ['startup|resume|clear|compact'], recapMatcher)
1069
+ + retargetGrepragHookMatcher(config.hooks.SessionStart, 'recap', ['startup|resume|clear|compact'], recapMatcher)
1070
+ + retargetGrepragHookMatcher(config.hooks.SessionStart, 'drain', ['startup|resume|compact'], drainMatcher);
1071
+ if (retargetedResumeHooks > 0) {
1072
+ changes.push(`Updated ${retargetedResumeHooks} Codex SessionStart hook matcher(s) so resume stays input-fast`);
1073
+ }
1063
1074
  const recapHook = {
1064
- matcher: 'startup|resume|clear|compact',
1075
+ matcher: recapMatcher,
1065
1076
  hooks: [commandHook('codex-recap', 10, 'Loading GrepRAG memory')],
1066
1077
  };
1067
1078
  if (!hasGrepragHookWithMatcher(config.hooks.SessionStart, 'codex-recap', recapHook.matcher)
@@ -1088,7 +1099,7 @@ function applyCodexHooks(config) {
1088
1099
  changes.push('Codex SessionStart session-id hook already configured (skipped)');
1089
1100
  }
1090
1101
  const drainHook = {
1091
- matcher: 'startup|resume|compact',
1102
+ matcher: drainMatcher,
1092
1103
  hooks: [commandHook('drain', 5, 'Draining GrepRAG inbox')],
1093
1104
  };
1094
1105
  if (!hasGrepragHookWithMatcher(config.hooks.SessionStart, 'drain', drainHook.matcher)) {
@@ -1104,7 +1115,7 @@ function applyCodexHooks(config) {
1104
1115
  matcher: '',
1105
1116
  // The first native chip prompt may run locked npm bootstrap before binding;
1106
1117
  // keep ordinary turns fast while allowing that one-time install to finish.
1107
- hooks: [commandHook('codex-notify', 300, 'Checking GrepRAG inbox')],
1118
+ hooks: [commandHook('codex-notify', 300, 'Checking GrepRAG inbox', 'greprag-codex-hook')],
1108
1119
  };
1109
1120
  if (!hasGrepragHook(config.hooks.UserPromptSubmit, 'codex-notify')) {
1110
1121
  if (!config.hooks.UserPromptSubmit)
@@ -1240,9 +1251,6 @@ function applyCodexHooks(config) {
1240
1251
  else {
1241
1252
  changes.push('Codex PostCompact session-id hook already configured (skipped)');
1242
1253
  }
1243
- const normalized = normalizeCodexHookCommands(config.hooks);
1244
- if (normalized > 0)
1245
- changes.push(`Updated ${normalized} Codex hook command(s) for Windows launcher compatibility`);
1246
1254
  return changes;
1247
1255
  }
1248
1256
  function normalizeCodexHookCommands(hooks) {
@@ -1253,7 +1261,7 @@ function normalizeCodexHookCommands(hooks) {
1253
1261
  'codex-recap': { timeout: 10, statusMessage: 'Loading GrepRAG memory' },
1254
1262
  'session-id': { timeout: 3, statusMessage: 'Loading GrepRAG session id' },
1255
1263
  drain: { timeout: 5, statusMessage: 'Draining GrepRAG inbox' },
1256
- 'codex-notify': { timeout: 300, statusMessage: 'Checking GrepRAG inbox' },
1264
+ 'codex-notify': { timeout: 300, statusMessage: 'Checking GrepRAG inbox', runner: 'greprag-codex-hook' },
1257
1265
  'codex-permission-context': { timeout: 3, statusMessage: 'Loading GrepRAG approval context' },
1258
1266
  'codex-subagent-start': { timeout: 3, statusMessage: 'Recording GrepRAG subagent metadata' },
1259
1267
  'codex-chip-hook': { timeout: 3, statusMessage: 'Enforcing Codex chip contract', runner: 'greprag-codex-hook' },
@@ -1674,6 +1682,22 @@ function hasGrepragHookWithMatcher(hookConfigs, subcommand, matcher) {
1674
1682
  return hookConfigs.some(cfg => (cfg.matcher ?? '') === matcher
1675
1683
  && (cfg.hooks?.some(h => commandInvokesSub(h, subcommand)) ?? false));
1676
1684
  }
1685
+ function retargetGrepragHookMatcher(hookConfigs, subcommand, fromMatchers, toMatcher) {
1686
+ if (!hookConfigs)
1687
+ return 0;
1688
+ let retargeted = 0;
1689
+ for (const cfg of hookConfigs) {
1690
+ if ((cfg.matcher ?? '') === toMatcher)
1691
+ continue;
1692
+ if (!fromMatchers.includes(cfg.matcher ?? ''))
1693
+ continue;
1694
+ if (!(cfg.hooks?.some(h => commandInvokesSub(h, subcommand)) ?? false))
1695
+ continue;
1696
+ cfg.matcher = toMatcher;
1697
+ retargeted++;
1698
+ }
1699
+ return retargeted;
1700
+ }
1677
1701
  /** The greprag-hook subcommand a hook-config registers (scanning command +
1678
1702
  * commandWindows + the `.cmd` form), or null if it isn't a greprag hook. */
1679
1703
  function grepragSubOf(cfg) {