sqlew 5.2.0 → 5.2.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/CHANGELOG.md +2140 -2110
- package/LICENSE +190 -190
- package/NOTICE +24 -24
- package/README.md +204 -199
- package/dist/adapters/mysql-adapter.js +3 -3
- package/dist/adapters/postgresql-adapter.js +3 -3
- package/dist/cli/db-export.js +32 -32
- package/dist/cli/db-import.js +30 -30
- package/dist/cli/hooks/codex-transcript.d.ts +23 -0
- package/dist/cli/hooks/codex-transcript.d.ts.map +1 -0
- package/dist/cli/hooks/codex-transcript.js +134 -0
- package/dist/cli/hooks/codex-transcript.js.map +1 -0
- package/dist/cli/hooks/on-exit-plan.d.ts.map +1 -1
- package/dist/cli/hooks/on-exit-plan.js +30 -3
- package/dist/cli/hooks/on-exit-plan.js.map +1 -1
- package/dist/cli/hooks/on-prompt.d.ts.map +1 -1
- package/dist/cli/hooks/on-prompt.js +33 -16
- package/dist/cli/hooks/on-prompt.js.map +1 -1
- package/dist/cli/hooks/pr-adr.js +5 -5
- package/dist/cli/hooks/stdin-parser.d.ts +4 -2
- package/dist/cli/hooks/stdin-parser.d.ts.map +1 -1
- package/dist/cli/hooks/stdin-parser.js +79 -9
- package/dist/cli/hooks/stdin-parser.js.map +1 -1
- package/dist/cli/hooks/track-plan.js +15 -15
- package/dist/cli.js +48 -48
- package/dist/config/global-config.js +19 -19
- package/dist/database/migrations/v4/20251126000000_v4_bootstrap.js +32 -32
- package/dist/database/migrations/v4/20260102204000_v4_fix_decision_set_example.js +3 -3
- package/dist/help-data/constraint.toml +259 -259
- package/dist/help-data/decision.toml +845 -845
- package/dist/help-data/queue.toml +134 -134
- package/dist/server/tool-schemas.js +30 -30
- package/dist/tests/docker/native/db-init.js +9 -9
- package/dist/tests/unit/hooks/codex-hook-normalization.test.d.ts +7 -0
- package/dist/tests/unit/hooks/codex-hook-normalization.test.d.ts.map +1 -0
- package/dist/tests/unit/hooks/codex-hook-normalization.test.js +112 -0
- package/dist/tests/unit/hooks/codex-hook-normalization.test.js.map +1 -0
- package/dist/tests/unit/hooks/grok-hook-normalization.test.js +45 -7
- package/dist/tests/unit/hooks/grok-hook-normalization.test.js.map +1 -1
- package/dist/tests/utils/db-schema.js +48 -48
- package/dist/tests/utils/test-helpers.js +48 -48
- package/dist/tools/constraints/actions/get.js +5 -5
- package/dist/utils/project-root.d.ts +1 -0
- package/dist/utils/project-root.d.ts.map +1 -1
- package/dist/utils/project-root.js +6 -0
- package/dist/utils/project-root.js.map +1 -1
- package/docs/ADR_CONCEPTS.md +152 -152
- package/docs/CLI_USAGE.md +392 -392
- package/docs/CONFIGURATION.md +157 -157
- package/docs/CROSS_DATABASE.md +66 -66
- package/docs/DATABASE_AUTH.md +135 -135
- package/docs/HOOKS_GUIDE.md +116 -101
- package/docs/MIGRATION_TO_SAAS.md +176 -176
- package/docs/SHARED_DATABASE.md +108 -108
- package/package.json +88 -88
- package/scripts/copy-help-data.js +19 -19
- package/scripts/filter-test-output.js +78 -78
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex transcript helpers for Plan-to-ADR extraction.
|
|
3
|
+
*
|
|
4
|
+
* Codex stores session rollouts as JSONL under ~/.codex/sessions/ rather than
|
|
5
|
+
* a dedicated plan.md file. These helpers locate the transcript and extract
|
|
6
|
+
* assistant plan text written during collaboration Plan mode.
|
|
7
|
+
*
|
|
8
|
+
* @since v5.2.1
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'fs';
|
|
11
|
+
import { homedir } from 'os';
|
|
12
|
+
import { join } from 'path';
|
|
13
|
+
const SESSION_ID_PATTERN = /^[A-Za-z0-9_-]+$/;
|
|
14
|
+
/**
|
|
15
|
+
* Recursively search ~/.codex/sessions for a rollout JSONL ending with sessionId.
|
|
16
|
+
*/
|
|
17
|
+
export function findCodexTranscriptPath(sessionId) {
|
|
18
|
+
if (!sessionId || !SESSION_ID_PATTERN.test(sessionId)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const suffix = `${sessionId}.jsonl`;
|
|
22
|
+
const root = join(homedir(), '.codex', 'sessions');
|
|
23
|
+
if (!existsSync(root)) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
return searchJsonlBySuffix(root, suffix);
|
|
27
|
+
}
|
|
28
|
+
function searchJsonlBySuffix(dir, suffix) {
|
|
29
|
+
for (const entry of readdirSync(dir)) {
|
|
30
|
+
const fullPath = join(dir, entry);
|
|
31
|
+
const stat = statSync(fullPath);
|
|
32
|
+
if (stat.isDirectory()) {
|
|
33
|
+
const found = searchJsonlBySuffix(fullPath, suffix);
|
|
34
|
+
if (found) {
|
|
35
|
+
return found;
|
|
36
|
+
}
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (entry.endsWith(suffix)) {
|
|
40
|
+
return fullPath;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
function isPlanCollaborationMode(mode) {
|
|
46
|
+
if (typeof mode === 'string') {
|
|
47
|
+
return mode.toLowerCase() === 'plan';
|
|
48
|
+
}
|
|
49
|
+
if (mode && typeof mode === 'object') {
|
|
50
|
+
const record = mode;
|
|
51
|
+
if (typeof record.mode === 'string') {
|
|
52
|
+
return record.mode.toLowerCase() === 'plan';
|
|
53
|
+
}
|
|
54
|
+
if (typeof record.kind === 'string') {
|
|
55
|
+
return record.kind.toLowerCase() === 'plan';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract assistant plan text from a Codex rollout JSONL transcript.
|
|
62
|
+
* Returns concatenated assistant output from turns that ran in Plan mode.
|
|
63
|
+
*/
|
|
64
|
+
export function extractPlanMarkdownFromCodexTranscript(transcriptPath) {
|
|
65
|
+
if (!existsSync(transcriptPath)) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const lines = readFileSync(transcriptPath, 'utf-8').split('\n').filter((line) => line.trim());
|
|
69
|
+
const chunks = [];
|
|
70
|
+
let inPlanMode = false;
|
|
71
|
+
for (const line of lines) {
|
|
72
|
+
let entry;
|
|
73
|
+
try {
|
|
74
|
+
entry = JSON.parse(line);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const type = entry.type;
|
|
80
|
+
const payload = entry.payload;
|
|
81
|
+
if (!payload) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (type === 'turn_context') {
|
|
85
|
+
inPlanMode = isPlanCollaborationMode(payload.collaboration_mode);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (type === 'event_msg') {
|
|
89
|
+
if (isPlanCollaborationMode(payload.collaboration_mode_kind)) {
|
|
90
|
+
inPlanMode = true;
|
|
91
|
+
}
|
|
92
|
+
if (payload.type === 'task_complete' || payload.type === 'turn_complete') {
|
|
93
|
+
// Keep plan mode sticky until an explicit default-mode turn_context arrives.
|
|
94
|
+
}
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (!inPlanMode || type !== 'response_item') {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const item = payload;
|
|
101
|
+
if (item.type !== 'message' || item.role !== 'assistant') {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const content = item.content;
|
|
105
|
+
if (!Array.isArray(content)) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
for (const part of content) {
|
|
109
|
+
if (!part || typeof part !== 'object') {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const block = part;
|
|
113
|
+
if (block.type === 'output_text' && typeof block.text === 'string' && block.text.trim()) {
|
|
114
|
+
chunks.push(block.text.trim());
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (chunks.length === 0) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
return chunks.join('\n\n');
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Write extracted Codex plan text to a project-local temp markdown file.
|
|
125
|
+
*/
|
|
126
|
+
export function materializeCodexPlanFile(projectPath, sessionId, content) {
|
|
127
|
+
const dir = join(projectPath, '.sqlew', 'tmp');
|
|
128
|
+
mkdirSync(dir, { recursive: true });
|
|
129
|
+
const safeId = sessionId.replace(/[^A-Za-z0-9_-]/g, '').slice(0, 32) || 'codex';
|
|
130
|
+
const planPath = join(dir, `codex-plan-${safeId}.md`);
|
|
131
|
+
writeFileSync(planPath, content, 'utf-8');
|
|
132
|
+
return planPath;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=codex-transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-transcript.js","sourceRoot":"","sources":["../../../src/cli/hooks/codex-transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-exit-plan.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/on-exit-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"on-exit-plan.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/on-exit-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuHvD"}
|
|
@@ -14,6 +14,7 @@ import { randomUUID } from 'crypto';
|
|
|
14
14
|
import { readStdinJson, sendContinue, sendPostToolUseContext, getProjectPath, computeGrokPlanPath } from './stdin-parser.js';
|
|
15
15
|
import { loadCurrentPlan, saveCurrentPlan } from '../../config/global-config.js';
|
|
16
16
|
import { processPlanPatterns } from './plan-processor.js';
|
|
17
|
+
import { extractPlanMarkdownFromCodexTranscript, findCodexTranscriptPath, materializeCodexPlanFile, } from './codex-transcript.js';
|
|
17
18
|
import { debugLog } from '../../utils/debug-logger.js';
|
|
18
19
|
// ============================================================================
|
|
19
20
|
// Main Entry Point
|
|
@@ -27,12 +28,16 @@ import { debugLog } from '../../utils/debug-logger.js';
|
|
|
27
28
|
export async function onExitPlanCommand() {
|
|
28
29
|
try {
|
|
29
30
|
const input = await readStdinJson();
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
const projectPath = getProjectPath(input);
|
|
32
|
+
const isExitPlanTool = input.tool_name === 'ExitPlanMode';
|
|
33
|
+
const isCodexStopWithPendingPlan = input.client === 'codex' &&
|
|
34
|
+
input.hook_event_name === 'Stop' &&
|
|
35
|
+
!!projectPath &&
|
|
36
|
+
!!loadCurrentPlan(projectPath)?.decision_pending;
|
|
37
|
+
if (!isExitPlanTool && !isCodexStopWithPendingPlan) {
|
|
32
38
|
sendContinue();
|
|
33
39
|
return;
|
|
34
40
|
}
|
|
35
|
-
const projectPath = getProjectPath(input);
|
|
36
41
|
if (!projectPath) {
|
|
37
42
|
debugLog('WARN', '[on-exit-plan] No project path', {
|
|
38
43
|
client: input.client,
|
|
@@ -70,6 +75,28 @@ export async function onExitPlanCommand() {
|
|
|
70
75
|
saveCurrentPlan(projectPath, planInfo);
|
|
71
76
|
}
|
|
72
77
|
}
|
|
78
|
+
if (input.client === 'codex') {
|
|
79
|
+
const existing = loadCurrentPlan(projectPath);
|
|
80
|
+
const transcriptPath = input.transcript_path ||
|
|
81
|
+
existing?.plan_path ||
|
|
82
|
+
(input.session_id ? findCodexTranscriptPath(input.session_id) : null);
|
|
83
|
+
if (transcriptPath) {
|
|
84
|
+
const extracted = extractPlanMarkdownFromCodexTranscript(transcriptPath);
|
|
85
|
+
if (extracted) {
|
|
86
|
+
const materializedPath = materializeCodexPlanFile(projectPath, input.session_id || existing?.plan_id || 'codex', extracted);
|
|
87
|
+
const planInfo = {
|
|
88
|
+
plan_id: existing?.plan_id || randomUUID(),
|
|
89
|
+
plan_file: 'codex-plan.md',
|
|
90
|
+
plan_path: materializedPath,
|
|
91
|
+
plan_updated_at: new Date().toISOString(),
|
|
92
|
+
recorded: existing?.recorded ?? false,
|
|
93
|
+
decision_pending: existing?.decision_pending ?? true,
|
|
94
|
+
enforcement_shown_at: existing?.enforcement_shown_at,
|
|
95
|
+
};
|
|
96
|
+
saveCurrentPlan(projectPath, planInfo);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
73
100
|
// Delegate to shared processor
|
|
74
101
|
const result = processPlanPatterns(projectPath);
|
|
75
102
|
debugLog('DEBUG', '[on-exit-plan] Result', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-exit-plan.js","sourceRoot":"","sources":["../../../src/cli/hooks/on-exit-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7H,OAAO,EAAE,eAAe,EAAE,eAAe,EAAwB,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;QAEpC,
|
|
1
|
+
{"version":3,"file":"on-exit-plan.js","sourceRoot":"","sources":["../../../src/cli/hooks/on-exit-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-prompt.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/on-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"on-prompt.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/on-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAWH;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,6eAeY,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,oDAAoD,CAAC;AAEnF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,6eAAmB,CAAC;AAMtD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA0DrD"}
|
|
@@ -18,8 +18,10 @@
|
|
|
18
18
|
* @since v5.0.6
|
|
19
19
|
* @modified v5.0.7 - First/repeat message split, inline template, isPlanMode()
|
|
20
20
|
*/
|
|
21
|
+
import { randomUUID } from 'crypto';
|
|
21
22
|
import { readStdinJson, isPlanMode, getProjectPath } from './stdin-parser.js';
|
|
22
23
|
import { loadCurrentPlan, saveCurrentPlan } from '../../config/global-config.js';
|
|
24
|
+
import { findCodexTranscriptPath } from './codex-transcript.js';
|
|
23
25
|
// ============================================================================
|
|
24
26
|
// Plan Mode Enforcement Context
|
|
25
27
|
// ============================================================================
|
|
@@ -30,21 +32,21 @@ import { loadCurrentPlan, saveCurrentPlan } from '../../config/global-config.js'
|
|
|
30
32
|
* Includes the exact 📌/🚫 format so the AI doesn't need to
|
|
31
33
|
* invoke a separate skill — direct embedding improves compliance.
|
|
32
34
|
*/
|
|
33
|
-
export const ENFORCEMENT_FULL = `[sqlew] Plan mode active. REQUIRED:
|
|
34
|
-
1. suggest { action: "by_context", key: "<keyword>" } BEFORE planning
|
|
35
|
-
2. Include "Related Context (from sqlew)" section
|
|
36
|
-
3. Format decisions/constraints EXACTLY like this:
|
|
37
|
-
|
|
38
|
-
### 📌 Decision: key-name
|
|
39
|
-
- **Value**: description
|
|
40
|
-
- **Layer**: business
|
|
41
|
-
- **Rationale**: why
|
|
42
|
-
|
|
43
|
-
### 🚫 Constraint: category
|
|
44
|
-
- **Rule**: description
|
|
45
|
-
- **Priority**: high
|
|
46
|
-
- **Tags**: comma-separated
|
|
47
|
-
|
|
35
|
+
export const ENFORCEMENT_FULL = `[sqlew] Plan mode active. REQUIRED:
|
|
36
|
+
1. suggest { action: "by_context", key: "<keyword>" } BEFORE planning
|
|
37
|
+
2. Include "Related Context (from sqlew)" section
|
|
38
|
+
3. Format decisions/constraints EXACTLY like this:
|
|
39
|
+
|
|
40
|
+
### 📌 Decision: key-name
|
|
41
|
+
- **Value**: description
|
|
42
|
+
- **Layer**: business
|
|
43
|
+
- **Rationale**: why
|
|
44
|
+
|
|
45
|
+
### 🚫 Constraint: category
|
|
46
|
+
- **Rule**: description
|
|
47
|
+
- **Priority**: high
|
|
48
|
+
- **Tags**: comma-separated
|
|
49
|
+
|
|
48
50
|
4. Check queue: queue { action: "list" }`;
|
|
49
51
|
/**
|
|
50
52
|
* Short reminder for subsequent prompts in the same plan session.
|
|
@@ -87,7 +89,22 @@ export async function onPromptCommand() {
|
|
|
87
89
|
process.stdout.write(ENFORCEMENT_FULL);
|
|
88
90
|
return;
|
|
89
91
|
}
|
|
90
|
-
|
|
92
|
+
let planInfo = loadCurrentPlan(projectPath);
|
|
93
|
+
if (input.client === 'codex' && !planInfo) {
|
|
94
|
+
const transcriptPath = input.transcript_path ||
|
|
95
|
+
(input.session_id ? findCodexTranscriptPath(input.session_id) : undefined) ||
|
|
96
|
+
undefined;
|
|
97
|
+
const codexPlanInfo = {
|
|
98
|
+
plan_id: randomUUID(),
|
|
99
|
+
plan_file: 'codex-plan.md',
|
|
100
|
+
plan_path: transcriptPath,
|
|
101
|
+
plan_updated_at: new Date().toISOString(),
|
|
102
|
+
recorded: false,
|
|
103
|
+
decision_pending: true,
|
|
104
|
+
};
|
|
105
|
+
saveCurrentPlan(projectPath, codexPlanInfo);
|
|
106
|
+
planInfo = codexPlanInfo;
|
|
107
|
+
}
|
|
91
108
|
if (!planInfo || !planInfo.enforcement_shown_at) {
|
|
92
109
|
// First prompt in this plan session → full message with inline template
|
|
93
110
|
process.stdout.write(ENFORCEMENT_FULL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-prompt.js","sourceRoot":"","sources":["../../../src/cli/hooks/on-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"on-prompt.js","sourceRoot":"","sources":["../../../src/cli/hooks/on-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAwB,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;yCAeS,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,iDAAiD,CAAC;AAEnF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAEtD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;QAEpC,sEAAsE;QACtE,6DAA6D;QAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,uEAAuE;YACvE,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,6DAA6D;YAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,cAAc,GAClB,KAAK,CAAC,eAAe;gBACrB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1E,SAAS,CAAC;YACZ,MAAM,aAAa,GAAoB;gBACrC,OAAO,EAAE,UAAU,EAAE;gBACrB,SAAS,EAAE,eAAe;gBAC1B,SAAS,EAAE,cAAc;gBACzB,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACzC,QAAQ,EAAE,KAAK;gBACf,gBAAgB,EAAE,IAAI;aACvB,CAAC;YACF,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC5C,QAAQ,GAAG,aAAa,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;YAChD,wEAAwE;YACxE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAEvC,4BAA4B;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,oBAAoB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACzD,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC"}
|
package/dist/cli/hooks/pr-adr.js
CHANGED
|
@@ -16,11 +16,11 @@ import { readStdinJson, sendContinue, sendBlock } from './stdin-parser.js';
|
|
|
16
16
|
// ============================================================================
|
|
17
17
|
// Constants
|
|
18
18
|
// ============================================================================
|
|
19
|
-
const BLOCK_MESSAGE = `[sqlew] PR requires ADR context. Before creating:
|
|
20
|
-
1. git diff <base>...HEAD --stat
|
|
21
|
-
2. suggest { action: "by_context", key: "<keyword>" } for each changed area
|
|
22
|
-
3. decision { action: "get", key: "<key>", include_context: true } for matches (score >= 35)
|
|
23
|
-
4. Format PR body with "## Architecture Decisions" or "## Other Changes"
|
|
19
|
+
const BLOCK_MESSAGE = `[sqlew] PR requires ADR context. Before creating:
|
|
20
|
+
1. git diff <base>...HEAD --stat
|
|
21
|
+
2. suggest { action: "by_context", key: "<keyword>" } for each changed area
|
|
22
|
+
3. decision { action: "get", key: "<key>", include_context: true } for matches (score >= 35)
|
|
23
|
+
4. Format PR body with "## Architecture Decisions" or "## Other Changes"
|
|
24
24
|
5. Re-run gh pr create`;
|
|
25
25
|
// ============================================================================
|
|
26
26
|
// Helpers
|
|
@@ -75,8 +75,10 @@ export interface HookInput {
|
|
|
75
75
|
source?: 'startup' | 'resume' | 'clear' | 'compact';
|
|
76
76
|
/** SessionEnd reason: clear | logout | prompt_input_exit | other */
|
|
77
77
|
reason?: 'clear' | 'logout' | 'prompt_input_exit' | 'other';
|
|
78
|
-
/**
|
|
79
|
-
|
|
78
|
+
/** Codex collaboration mode (e.g. plan, default). */
|
|
79
|
+
collaboration_mode?: string;
|
|
80
|
+
/** Originating client, set by normalizeHookInput() (e.g., 'grok', 'codex'). undefined = Claude/native. */
|
|
81
|
+
client?: 'grok' | 'codex' | 'claude';
|
|
80
82
|
}
|
|
81
83
|
/**
|
|
82
84
|
* Hook-specific output for PreToolUse (v4.2.0+)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdin-parser.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/stdin-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,8BAA8B;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,eAAe,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,kBAAkB,CAAC;IAC9J,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,uCAAuC;IACvC,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,sBAAsB;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,mBAAmB,GAAG,OAAO,CAAC;IAC5D,
|
|
1
|
+
{"version":3,"file":"stdin-parser.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/stdin-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,62 @@ const GROK_TOOL_MAP = {
|
|
|
40
40
|
run_terminal_cmd: 'Bash',
|
|
41
41
|
read_file: 'Read',
|
|
42
42
|
};
|
|
43
|
+
/** Codex CLI tool names mapped to Claude-shaped names used by sqlew hook handlers. */
|
|
44
|
+
const CODEX_TOOL_MAP = {
|
|
45
|
+
shell_command: 'Bash',
|
|
46
|
+
shell: 'Bash',
|
|
47
|
+
exec_command: 'Bash',
|
|
48
|
+
apply_patch: 'Edit',
|
|
49
|
+
enter_plan_mode: 'EnterPlanMode',
|
|
50
|
+
exit_plan_mode: 'ExitPlanMode',
|
|
51
|
+
};
|
|
52
|
+
const CODEX_NATIVE_TOOLS = new Set(Object.keys(CODEX_TOOL_MAP));
|
|
53
|
+
function extractCollaborationMode(raw) {
|
|
54
|
+
const direct = raw.collaboration_mode ?? raw.collaborationMode;
|
|
55
|
+
if (typeof direct === 'string') {
|
|
56
|
+
return direct;
|
|
57
|
+
}
|
|
58
|
+
if (direct && typeof direct === 'object') {
|
|
59
|
+
const record = direct;
|
|
60
|
+
if (typeof record.mode === 'string') {
|
|
61
|
+
return record.mode;
|
|
62
|
+
}
|
|
63
|
+
if (typeof record.kind === 'string') {
|
|
64
|
+
return record.kind;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const kind = raw.collaboration_mode_kind ?? raw.collaborationModeKind;
|
|
68
|
+
return typeof kind === 'string' ? kind : undefined;
|
|
69
|
+
}
|
|
70
|
+
function isCodexPayload(raw) {
|
|
71
|
+
const tool = (raw.tool_name || raw.toolName);
|
|
72
|
+
if (tool && CODEX_NATIVE_TOOLS.has(tool)) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (extractCollaborationMode(raw)) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
if (process.env.CODEX_SESSION_ID || process.env.CODEX_CWD || process.env.CODEX_HOME) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
function normalizeCodexPayload(raw) {
|
|
84
|
+
const rawTool = (raw.tool_name || raw.toolName);
|
|
85
|
+
const collaborationMode = extractCollaborationMode(raw);
|
|
86
|
+
return {
|
|
87
|
+
...raw,
|
|
88
|
+
client: 'codex',
|
|
89
|
+
tool_name: rawTool ? CODEX_TOOL_MAP[rawTool] || rawTool : raw.tool_name,
|
|
90
|
+
tool_input: (raw.tool_input || raw.toolInput),
|
|
91
|
+
session_id: (raw.session_id || raw.sessionId || process.env.CODEX_SESSION_ID),
|
|
92
|
+
cwd: (raw.cwd || process.env.CODEX_CWD || process.env.CLAUDE_PROJECT_DIR),
|
|
93
|
+
transcript_path: (raw.transcript_path || raw.transcriptPath),
|
|
94
|
+
collaboration_mode: collaborationMode,
|
|
95
|
+
permission_mode: raw.permission_mode ||
|
|
96
|
+
(collaborationMode?.toLowerCase() === 'plan' ? 'plan' : raw.permission_mode),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
43
99
|
/**
|
|
44
100
|
* Normalize a raw hook payload into the canonical (Claude-shaped) HookInput.
|
|
45
101
|
*
|
|
@@ -64,8 +120,14 @@ export function normalizeHookInput(raw) {
|
|
|
64
120
|
r.sessionId ||
|
|
65
121
|
process.env.GROK_HOOK_EVENT ||
|
|
66
122
|
process.env.GROK_WORKSPACE_ROOT);
|
|
67
|
-
|
|
68
|
-
|
|
123
|
+
if (isGrok) {
|
|
124
|
+
// Grok branch below
|
|
125
|
+
}
|
|
126
|
+
else if (isCodexPayload(r)) {
|
|
127
|
+
return normalizeCodexPayload(r);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Claude / native: pass through unchanged
|
|
69
131
|
return r;
|
|
70
132
|
}
|
|
71
133
|
const rawEvent = (r.hookEventName || r.hook_event_name || process.env.GROK_HOOK_EVENT);
|
|
@@ -244,18 +306,23 @@ export function sendUpdatedInput(originalInput, modifications) {
|
|
|
244
306
|
* @returns true if the current session is in plan mode
|
|
245
307
|
*/
|
|
246
308
|
export function isPlanMode(input) {
|
|
247
|
-
// Claude Code
|
|
309
|
+
// Claude Code / Codex collaboration Plan mode
|
|
248
310
|
if (input.permission_mode === 'plan')
|
|
249
311
|
return true;
|
|
312
|
+
if (input.collaboration_mode?.toLowerCase() === 'plan')
|
|
313
|
+
return true;
|
|
250
314
|
// Grok Build: plan mode is signaled via the enter_plan_mode / exit_plan_mode tools
|
|
251
|
-
// (no permission_mode field).
|
|
252
|
-
//
|
|
253
|
-
//
|
|
315
|
+
// (no permission_mode field). normalizeHookInput() maps these to the Claude-shaped
|
|
316
|
+
// EnterPlanMode / ExitPlanMode before any detection runs, so match the normalized
|
|
317
|
+
// names. Raw snake_case names are also accepted defensively for callers that
|
|
318
|
+
// bypass normalization.
|
|
254
319
|
const tool = input.tool_name;
|
|
255
|
-
if (tool === '
|
|
320
|
+
if (tool === 'EnterPlanMode' ||
|
|
321
|
+
tool === 'ExitPlanMode' ||
|
|
322
|
+
tool === 'enter_plan_mode' ||
|
|
323
|
+
tool === 'exit_plan_mode') {
|
|
256
324
|
return true;
|
|
257
325
|
}
|
|
258
|
-
// Future: Codex, Cursor, etc.
|
|
259
326
|
return false;
|
|
260
327
|
}
|
|
261
328
|
// ============================================================================
|
|
@@ -304,7 +371,10 @@ export function areAllTodosCompleted(input) {
|
|
|
304
371
|
* @returns Project path or undefined
|
|
305
372
|
*/
|
|
306
373
|
export function getProjectPath(input) {
|
|
307
|
-
return input.cwd ||
|
|
374
|
+
return (input.cwd ||
|
|
375
|
+
process.env.CLAUDE_PROJECT_DIR ||
|
|
376
|
+
process.env.CODEX_CWD ||
|
|
377
|
+
process.env.GROK_WORKSPACE_ROOT);
|
|
308
378
|
}
|
|
309
379
|
/**
|
|
310
380
|
* Returns the best available absolute path to the currently tracked plan file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdin-parser.js","sourceRoot":"","sources":["../../../src/cli/hooks/stdin-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"stdin-parser.js","sourceRoot":"","sources":["../../../src/cli/hooks/stdin-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,21 +32,21 @@ import { debugLog } from '../../utils/debug-logger.js';
|
|
|
32
32
|
* Decision/Constraint template to inject on new plan creation
|
|
33
33
|
* Compact format for context window efficiency
|
|
34
34
|
*/
|
|
35
|
-
const PLAN_TEMPLATE = `
|
|
36
|
-
---
|
|
37
|
-
## 📝 Decision/Constraint Recording (auto-detected on ExitPlanMode)
|
|
38
|
-
|
|
39
|
-
### 📌 Decision: [key/path]
|
|
40
|
-
- **Value**: Description
|
|
41
|
-
- **Layer**: presentation | business | data | infrastructure | cross-cutting
|
|
42
|
-
- **Rationale**: Why this decision was made
|
|
43
|
-
|
|
44
|
-
### 🚫 Constraint: [category]
|
|
45
|
-
- **Rule**: Description (category: architecture | security | code-style | performance)
|
|
46
|
-
- **Priority**: critical | high | medium | low
|
|
47
|
-
- **Tags**: comma-separated tags
|
|
48
|
-
|
|
49
|
-
---
|
|
35
|
+
const PLAN_TEMPLATE = `
|
|
36
|
+
---
|
|
37
|
+
## 📝 Decision/Constraint Recording (auto-detected on ExitPlanMode)
|
|
38
|
+
|
|
39
|
+
### 📌 Decision: [key/path]
|
|
40
|
+
- **Value**: Description
|
|
41
|
+
- **Layer**: presentation | business | data | infrastructure | cross-cutting
|
|
42
|
+
- **Rationale**: Why this decision was made
|
|
43
|
+
|
|
44
|
+
### 🚫 Constraint: [category]
|
|
45
|
+
- **Rule**: Description (category: architecture | security | code-style | performance)
|
|
46
|
+
- **Priority**: critical | high | medium | low
|
|
47
|
+
- **Tags**: comma-separated tags
|
|
48
|
+
|
|
49
|
+
---
|
|
50
50
|
`.trim();
|
|
51
51
|
/** Marker heading written with PLAN_TEMPLATE; used to avoid duplicate injection. */
|
|
52
52
|
export const PLAN_TEMPLATE_MARKER = '## 📝 Decision/Constraint Recording';
|