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.
Files changed (57) hide show
  1. package/CHANGELOG.md +2140 -2110
  2. package/LICENSE +190 -190
  3. package/NOTICE +24 -24
  4. package/README.md +204 -199
  5. package/dist/adapters/mysql-adapter.js +3 -3
  6. package/dist/adapters/postgresql-adapter.js +3 -3
  7. package/dist/cli/db-export.js +32 -32
  8. package/dist/cli/db-import.js +30 -30
  9. package/dist/cli/hooks/codex-transcript.d.ts +23 -0
  10. package/dist/cli/hooks/codex-transcript.d.ts.map +1 -0
  11. package/dist/cli/hooks/codex-transcript.js +134 -0
  12. package/dist/cli/hooks/codex-transcript.js.map +1 -0
  13. package/dist/cli/hooks/on-exit-plan.d.ts.map +1 -1
  14. package/dist/cli/hooks/on-exit-plan.js +30 -3
  15. package/dist/cli/hooks/on-exit-plan.js.map +1 -1
  16. package/dist/cli/hooks/on-prompt.d.ts.map +1 -1
  17. package/dist/cli/hooks/on-prompt.js +33 -16
  18. package/dist/cli/hooks/on-prompt.js.map +1 -1
  19. package/dist/cli/hooks/pr-adr.js +5 -5
  20. package/dist/cli/hooks/stdin-parser.d.ts +4 -2
  21. package/dist/cli/hooks/stdin-parser.d.ts.map +1 -1
  22. package/dist/cli/hooks/stdin-parser.js +79 -9
  23. package/dist/cli/hooks/stdin-parser.js.map +1 -1
  24. package/dist/cli/hooks/track-plan.js +15 -15
  25. package/dist/cli.js +48 -48
  26. package/dist/config/global-config.js +19 -19
  27. package/dist/database/migrations/v4/20251126000000_v4_bootstrap.js +32 -32
  28. package/dist/database/migrations/v4/20260102204000_v4_fix_decision_set_example.js +3 -3
  29. package/dist/help-data/constraint.toml +259 -259
  30. package/dist/help-data/decision.toml +845 -845
  31. package/dist/help-data/queue.toml +134 -134
  32. package/dist/server/tool-schemas.js +30 -30
  33. package/dist/tests/docker/native/db-init.js +9 -9
  34. package/dist/tests/unit/hooks/codex-hook-normalization.test.d.ts +7 -0
  35. package/dist/tests/unit/hooks/codex-hook-normalization.test.d.ts.map +1 -0
  36. package/dist/tests/unit/hooks/codex-hook-normalization.test.js +112 -0
  37. package/dist/tests/unit/hooks/codex-hook-normalization.test.js.map +1 -0
  38. package/dist/tests/unit/hooks/grok-hook-normalization.test.js +45 -7
  39. package/dist/tests/unit/hooks/grok-hook-normalization.test.js.map +1 -1
  40. package/dist/tests/utils/db-schema.js +48 -48
  41. package/dist/tests/utils/test-helpers.js +48 -48
  42. package/dist/tools/constraints/actions/get.js +5 -5
  43. package/dist/utils/project-root.d.ts +1 -0
  44. package/dist/utils/project-root.d.ts.map +1 -1
  45. package/dist/utils/project-root.js +6 -0
  46. package/dist/utils/project-root.js.map +1 -1
  47. package/docs/ADR_CONCEPTS.md +152 -152
  48. package/docs/CLI_USAGE.md +392 -392
  49. package/docs/CONFIGURATION.md +157 -157
  50. package/docs/CROSS_DATABASE.md +66 -66
  51. package/docs/DATABASE_AUTH.md +135 -135
  52. package/docs/HOOKS_GUIDE.md +116 -101
  53. package/docs/MIGRATION_TO_SAAS.md +176 -176
  54. package/docs/SHARED_DATABASE.md +108 -108
  55. package/package.json +88 -88
  56. package/scripts/copy-help-data.js +19 -19
  57. 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;AAYH;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqFvD"}
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
- // Only process ExitPlanMode
31
- if (input.tool_name !== 'ExitPlanMode') {
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":"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"}
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;AASH;;;;;;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,CAyCrD"}
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
- const planInfo = loadCurrentPlan(projectPath);
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,EAAE,MAAM,+BAA+B,CAAC;AAEjF,+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,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAE9C,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"}
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"}
@@ -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
- /** Originating client, set by normalizeHookInput() (e.g., 'grok'). undefined = Claude/native. */
79
- client?: 'grok' | 'claude';
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":"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"}
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
- // Claude / native: pass through unchanged
68
- if (!isGrok) {
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). The actual "active" state is best detected by the
252
- // presence of a tracked plan for the project + tool context, but for simple
253
- // enforcement we also accept explicit tool names in the current hook payload.
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 === 'enter_plan_mode' || tool === 'exit_plan_mode') {
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 || process.env.CLAUDE_PROJECT_DIR || process.env.GROK_WORKSPACE_ROOT;
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;AAgI9D,+EAA+E;AAC/E,2DAA2D;AAC3D,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,cAAc,GAAiD;IACnE,YAAY,EAAE,YAAY;IAC1B,aAAa,EAAE,aAAa;IAC5B,qBAAqB,EAAE,aAAa;IACpC,kBAAkB,EAAE,kBAAkB;IACtC,aAAa,EAAE,cAAc;IAC7B,WAAW,EAAE,YAAY;IACzB,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,YAAY;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,aAAa,GAA2B;IAC5C,eAAe,EAAE,eAAe;IAChC,cAAc,EAAE,cAAc;IAC9B,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,MAAM;IACxB,SAAS,EAAE,MAAM;CAClB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,GAAG,GAAG,EAAE,CAAC;IACX,CAAC;IACD,MAAM,CAAC,GAAG,GAA8B,CAAC;IAEzC,MAAM,MAAM,GAAG,CAAC,CAAC,CACf,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,SAAS;QACX,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAChC,CAAC;IAEF,0CAA0C;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAc,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAExE,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAuB,CAAC;IAElE,OAAO;QACL,GAAI,CAAe;QACnB,MAAM,EAAE,MAAM;QACd,eAAe,EAAE,QAAQ;YACvB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAK,QAAyC;YACxE,CAAC,CAAE,CAAC,CAAC,eAAgD;QACvD,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,SAAgC;QAC5F,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,CAA0B;QAClE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAuB;QAC9F,sFAAsF;QACtF,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAuB;KACzF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB,EAAE,SAAiB;IAC1E,mFAAmF;IACnF,mFAAmF;IACnF,6EAA6E;IAC7E,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,oFAAoF;IACpF,qFAAqF;IACrF,+EAA+E;IAC/E,mHAAmH;IACnH,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACvG,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,8BAA8B;QAC9B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,2BAA2B;QAC3B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,IAAI,IAAI,KAAK,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjB,qFAAqF;gBACrF,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACrG,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAClC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,iBAA0B,EAAE,aAAsB;IAC7E,MAAM,MAAM,GAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IACD,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,iBAAyB;IAC9D,MAAM,MAAM,GAAe;QACzB,QAAQ,EAAE,IAAI;QACd,kBAAkB,EAAE;YAClB,aAAa,EAAE,aAAa;YAC5B,iBAAiB;SAClB;KACF,CAAC;IACF,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,0FAA0F;IAC1F,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAwB,EAAE,aAAiC;IAC1F,MAAM,YAAY,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,aAAa,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAe;QACzB,QAAQ,EAAE,IAAI;QACd,YAAY;KACb,CAAC;IACF,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,KAAgB;IACzC,cAAc;IACd,IAAI,KAAK,CAAC,eAAe,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAElD,mFAAmF;IACnF,gFAAgF;IAChF,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7B,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAA8B;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,KAAgB;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uDAAuD;IACvD,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEpD,kDAAkD;IAClD,+EAA+E;IAC/E,kCAAkC;IAClC,OAAO,mCAAmC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgB;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;IACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC7C,OAAO,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACxF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,0DAA0D;IAC1D,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgB;IAC1C,OAAO,KAAK,CAAC,UAAU,EAAE,aAAa,KAAK,MAAM,CAAC;AACpD,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';