greprag 5.73.3 → 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.
- package/dist/codex-fast-hook.js +9 -4
- package/dist/codex-fast-hook.js.map +1 -1
- package/dist/codex-notify-hook.d.ts +2 -0
- package/dist/codex-notify-hook.js +141 -0
- package/dist/codex-notify-hook.js.map +1 -0
- package/dist/codex-prompt-cache.d.ts +11 -0
- package/dist/codex-prompt-cache.js +105 -0
- package/dist/codex-prompt-cache.js.map +1 -0
- package/dist/codex-steering.js +4 -4
- package/dist/codex-steering.js.map +1 -1
- package/dist/commands/init.js +31 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/hook-runtime.d.ts +22 -0
- package/dist/hook-runtime.js +108 -0
- package/dist/hook-runtime.js.map +1 -0
- package/dist/hook.js +54 -354
- package/dist/hook.js.map +1 -1
- package/dist/inline-atom-background.d.ts +9 -0
- package/dist/inline-atom-background.js +68 -0
- package/dist/inline-atom-background.js.map +1 -0
- package/dist/inline-atom-hook.d.ts +5 -2
- package/dist/inline-atom-hook.js +98 -2
- package/dist/inline-atom-hook.js.map +1 -1
- package/dist/inline-atom-worker.d.ts +2 -0
- package/dist/inline-atom-worker.js +70 -0
- package/dist/inline-atom-worker.js.map +1 -0
- package/dist/reminder-injector.d.ts +3 -0
- package/dist/reminder-injector.js +212 -0
- package/dist/reminder-injector.js.map +1 -0
- package/package.json +1 -1
package/dist/codex-fast-hook.js
CHANGED
|
@@ -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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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,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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EA,wCAgCC;AA3GD,uCAAyB;AACzB,2CAA6B;AAC7B,qDAA2D;AAC3D,uEAA0E;AAC1E,yDAAmE;AACnE,qDAA8C;AAC9C,6CAAiD;AACjD,6DAAwD;AACxD,iDAIwB;AAExB,SAAS,iBAAiB,CAAC,KAAgB;IACzC,OAAO,KAAK,CAAC,eAAe,KAAK,kBAAkB;WAC9C,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;WAChC,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;WACvD,CAAC,CAAC,KAAK,CAAC,GAAG;WACX,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;AAC1B,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAA4B,CAAC;QACrF,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAE,IAA+B,CAAC,QAAQ,CAAC;YACvE,CAAC,CAAE,IAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAgB;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,2BAAU,EAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS;YAC5B,CAAC,CAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,MAAM,CAAC,SAAS,OAAO,CAAC,CAAC,EAAE,WAAmD,IAAI,EAAE;YAClI,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,KAAK,IAAI,CAAC;QACnD,IAAI,MAAM,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,KAAgB,EAAE,GAAqC,EAAE,KAAa;IAC7G,6EAA6E;IAC7E,gFAAgF;IAChF,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;IAChE,OAAO,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,KAAgB;IACnD,IAAA,qCAAgB,EAAC,KAAK,CAAC,CAAC;IACxB,MAAM,mBAAmB,GAAG,IAAA,uDAA6B,EAAC,KAAK,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAA,4BAAa,EAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,mBAAmB;YAAE,IAAA,qCAAsB,EAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,8BAAiB,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,IAAI,WAA+B,CAAC;IACpC,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,qBAAqB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QACrE,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,UAAU,IAAI,oBAAoB,IAAI,UAAU;YACjE,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,WAAW,GAAG,UAAU,IAAI,mBAAmB,IAAI,UAAU;YAC3D,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IACD,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QACpD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,MAAM,IAAA,wCAAuB,EAAC,KAAK,EAAE,GAAG,EAAE;QACxD,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;KACxD,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAA,gDAA6B,EAAC,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH,IAAI,KAAK,CAAC,MAAM;QAAE,IAAA,qCAAsB,EAAC,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -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":"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"}
|
package/dist/codex-steering.js
CHANGED
|
@@ -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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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -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:
|
|
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:
|
|
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) {
|