oh-my-claude-sisyphus 1.10.0 → 1.10.2
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/agents/definitions.js +1 -1
- package/dist/agents/model-lists.d.ts +26 -0
- package/dist/agents/model-lists.d.ts.map +1 -0
- package/dist/agents/model-lists.js +62 -0
- package/dist/agents/model-lists.js.map +1 -0
- package/dist/agents/orchestrator-sisyphus.js +1 -1
- package/dist/auth/index.d.ts +10 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +13 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/manager.d.ts +54 -0
- package/dist/auth/manager.d.ts.map +1 -0
- package/dist/auth/manager.js +248 -0
- package/dist/auth/manager.js.map +1 -0
- package/dist/auth/oauth-google.d.ts +47 -0
- package/dist/auth/oauth-google.d.ts.map +1 -0
- package/dist/auth/oauth-google.js +280 -0
- package/dist/auth/oauth-google.js.map +1 -0
- package/dist/auth/oauth-openai.d.ts +46 -0
- package/dist/auth/oauth-openai.d.ts.map +1 -0
- package/dist/auth/oauth-openai.js +264 -0
- package/dist/auth/oauth-openai.js.map +1 -0
- package/dist/auth/pkce.d.ts +14 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +35 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/storage.d.ts +52 -0
- package/dist/auth/storage.d.ts.map +1 -0
- package/dist/auth/storage.js +230 -0
- package/dist/auth/storage.js.map +1 -0
- package/dist/auth/types.d.ts +76 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +5 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli/index.js +0 -0
- package/dist/features/auto-update.d.ts +20 -0
- package/dist/features/auto-update.d.ts.map +1 -1
- package/dist/features/auto-update.js +35 -0
- package/dist/features/auto-update.js.map +1 -1
- package/dist/features/builtin-skills/skills.js +2 -2
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +26 -1
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +126 -4
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/preemptive-compaction/index.js +2 -2
- package/dist/hooks/preemptive-compaction/index.js.map +1 -1
- package/dist/hooks/thinking-block-validator/index.d.ts +3 -34
- package/dist/hooks/thinking-block-validator/index.d.ts.map +1 -1
- package/dist/hooks/thinking-block-validator/index.js +21 -70
- package/dist/hooks/thinking-block-validator/index.js.map +1 -1
- package/dist/installer/hooks.d.ts +2 -2
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +85 -2
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.js +3 -3
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +10 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/registry.d.ts +29 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +162 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/router.d.ts +40 -0
- package/dist/providers/router.d.ts.map +1 -0
- package/dist/providers/router.js +88 -0
- package/dist/providers/router.js.map +1 -0
- package/dist/providers/types.d.ts +92 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +27 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/tools/ast-tools.d.ts +3 -3
- package/dist/tools/ast-tools.d.ts.map +1 -1
- package/dist/tools/ast-tools.js +205 -104
- package/dist/tools/ast-tools.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install.sh +70 -3
- package/scripts/uninstall.sh +116 -3
package/dist/hooks/bridge.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { detectKeywordsWithType, removeCodeBlocks } from './keyword-detector/index.js';
|
|
16
16
|
import { readRalphState, incrementRalphIteration, clearRalphState, detectCompletionPromise } from './ralph-loop/index.js';
|
|
17
|
+
import { readVerificationState, startVerification, getOracleVerificationPrompt, clearVerificationState } from './ralph-verifier/index.js';
|
|
17
18
|
import { checkIncompleteTodos } from './todo-continuation/index.js';
|
|
18
19
|
import { checkPersistentModes, createHookOutput } from './persistent-mode/index.js';
|
|
19
20
|
import { activateUltrawork, readUltraworkState } from './ultrawork-state/index.js';
|
|
@@ -107,7 +108,7 @@ async function processStopContinuation(input) {
|
|
|
107
108
|
}
|
|
108
109
|
/**
|
|
109
110
|
* Process Ralph Loop hook (session.idle event)
|
|
110
|
-
* Continues work loops until completion promise is detected
|
|
111
|
+
* Continues work loops until completion promise is detected and oracle verifies
|
|
111
112
|
*/
|
|
112
113
|
async function processRalphLoop(input) {
|
|
113
114
|
const sessionId = input.sessionId;
|
|
@@ -124,9 +125,32 @@ async function processRalphLoop(input) {
|
|
|
124
125
|
if (state.session_id && state.session_id !== sessionId) {
|
|
125
126
|
return { continue: true };
|
|
126
127
|
}
|
|
128
|
+
// Check for existing verification state (oracle verification in progress)
|
|
129
|
+
const verificationState = readVerificationState(directory);
|
|
130
|
+
if (verificationState?.pending) {
|
|
131
|
+
// Check if oracle has approved (by looking for the tag in transcript)
|
|
132
|
+
// This is handled more thoroughly in persistent-mode hook
|
|
133
|
+
// Here we just remind to spawn oracle if verification is pending
|
|
134
|
+
const verificationPrompt = getOracleVerificationPrompt(verificationState);
|
|
135
|
+
return {
|
|
136
|
+
continue: true,
|
|
137
|
+
message: verificationPrompt
|
|
138
|
+
};
|
|
139
|
+
}
|
|
127
140
|
// Check for completion promise in transcript
|
|
128
141
|
const completed = detectCompletionPromise(sessionId, state.completion_promise);
|
|
129
142
|
if (completed) {
|
|
143
|
+
// Start oracle verification instead of completing immediately
|
|
144
|
+
startVerification(directory, state.completion_promise, state.prompt);
|
|
145
|
+
const newVerificationState = readVerificationState(directory);
|
|
146
|
+
if (newVerificationState) {
|
|
147
|
+
const verificationPrompt = getOracleVerificationPrompt(newVerificationState);
|
|
148
|
+
return {
|
|
149
|
+
continue: true,
|
|
150
|
+
message: verificationPrompt
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
// Fallback if verification couldn't be started
|
|
130
154
|
clearRalphState(directory);
|
|
131
155
|
return {
|
|
132
156
|
continue: true,
|
|
@@ -136,6 +160,7 @@ async function processRalphLoop(input) {
|
|
|
136
160
|
// Check max iterations
|
|
137
161
|
if (state.iteration >= state.max_iterations) {
|
|
138
162
|
clearRalphState(directory);
|
|
163
|
+
clearVerificationState(directory);
|
|
139
164
|
return {
|
|
140
165
|
continue: true,
|
|
141
166
|
message: `[RALPH LOOP STOPPED] Max iterations (${state.max_iterations}) reached without completion.`
|
package/dist/hooks/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/hooks/bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/hooks/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/persistent-mode/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/persistent-mode/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgCH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,mBAAmB,GAAG,MAAM,CAAC;IAChE,0BAA0B;IAC1B,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAsSD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAiC/B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,GAAG;IAC9D,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAcA"}
|
|
@@ -9,15 +9,72 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Priority order: Ralph Loop > Ultrawork > Todo Continuation
|
|
11
11
|
*/
|
|
12
|
+
import { existsSync, readFileSync } from 'fs';
|
|
13
|
+
import { join } from 'path';
|
|
14
|
+
import { homedir } from 'os';
|
|
12
15
|
import { readUltraworkState, incrementReinforcement, deactivateUltrawork, getUltraworkPersistenceMessage } from '../ultrawork-state/index.js';
|
|
13
16
|
import { readRalphState, incrementRalphIteration, clearRalphState, detectCompletionPromise } from '../ralph-loop/index.js';
|
|
17
|
+
import { readVerificationState, startVerification, recordOracleFeedback, getOracleVerificationPrompt, getOracleRejectionContinuationPrompt, detectOracleApproval, detectOracleRejection, clearVerificationState } from '../ralph-verifier/index.js';
|
|
14
18
|
import { checkIncompleteTodos, getNextPendingTodo } from '../todo-continuation/index.js';
|
|
15
19
|
import { TODO_CONTINUATION_PROMPT } from '../../installer/hooks.js';
|
|
20
|
+
/**
|
|
21
|
+
* Check for oracle approval in session transcript
|
|
22
|
+
*/
|
|
23
|
+
function checkOracleApprovalInTranscript(sessionId) {
|
|
24
|
+
const claudeDir = join(homedir(), '.claude');
|
|
25
|
+
const possiblePaths = [
|
|
26
|
+
join(claudeDir, 'sessions', sessionId, 'transcript.md'),
|
|
27
|
+
join(claudeDir, 'sessions', sessionId, 'messages.json'),
|
|
28
|
+
join(claudeDir, 'transcripts', `${sessionId}.md`)
|
|
29
|
+
];
|
|
30
|
+
for (const transcriptPath of possiblePaths) {
|
|
31
|
+
if (existsSync(transcriptPath)) {
|
|
32
|
+
try {
|
|
33
|
+
const content = readFileSync(transcriptPath, 'utf-8');
|
|
34
|
+
if (detectOracleApproval(content)) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check for oracle rejection in session transcript
|
|
47
|
+
*/
|
|
48
|
+
function checkOracleRejectionInTranscript(sessionId) {
|
|
49
|
+
const claudeDir = join(homedir(), '.claude');
|
|
50
|
+
const possiblePaths = [
|
|
51
|
+
join(claudeDir, 'sessions', sessionId, 'transcript.md'),
|
|
52
|
+
join(claudeDir, 'sessions', sessionId, 'messages.json'),
|
|
53
|
+
join(claudeDir, 'transcripts', `${sessionId}.md`)
|
|
54
|
+
];
|
|
55
|
+
for (const transcriptPath of possiblePaths) {
|
|
56
|
+
if (existsSync(transcriptPath)) {
|
|
57
|
+
try {
|
|
58
|
+
const content = readFileSync(transcriptPath, 'utf-8');
|
|
59
|
+
const result = detectOracleRejection(content);
|
|
60
|
+
if (result.rejected) {
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return { rejected: false, feedback: '' };
|
|
70
|
+
}
|
|
16
71
|
/**
|
|
17
72
|
* Check Ralph Loop state and determine if it should continue
|
|
73
|
+
* Now includes Oracle verification for completion claims
|
|
18
74
|
*/
|
|
19
75
|
async function checkRalphLoop(sessionId, directory) {
|
|
20
|
-
const
|
|
76
|
+
const workingDir = directory || process.cwd();
|
|
77
|
+
const state = readRalphState(workingDir);
|
|
21
78
|
if (!state || !state.active) {
|
|
22
79
|
return null;
|
|
23
80
|
}
|
|
@@ -25,10 +82,74 @@ async function checkRalphLoop(sessionId, directory) {
|
|
|
25
82
|
if (state.session_id && sessionId && state.session_id !== sessionId) {
|
|
26
83
|
return null;
|
|
27
84
|
}
|
|
85
|
+
// Check for existing verification state (oracle verification in progress)
|
|
86
|
+
const verificationState = readVerificationState(workingDir);
|
|
87
|
+
if (verificationState?.pending) {
|
|
88
|
+
// Verification is in progress - check for oracle's response
|
|
89
|
+
if (sessionId) {
|
|
90
|
+
// Check for oracle approval
|
|
91
|
+
if (checkOracleApprovalInTranscript(sessionId)) {
|
|
92
|
+
// Oracle approved - truly complete
|
|
93
|
+
clearVerificationState(workingDir);
|
|
94
|
+
clearRalphState(workingDir);
|
|
95
|
+
return {
|
|
96
|
+
shouldBlock: false,
|
|
97
|
+
message: `[RALPH LOOP VERIFIED COMPLETE] Oracle verified task completion after ${state.iteration} iteration(s). Excellent work!`,
|
|
98
|
+
mode: 'none'
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// Check for oracle rejection
|
|
102
|
+
const rejection = checkOracleRejectionInTranscript(sessionId);
|
|
103
|
+
if (rejection.rejected) {
|
|
104
|
+
// Oracle rejected - continue with feedback
|
|
105
|
+
recordOracleFeedback(workingDir, false, rejection.feedback);
|
|
106
|
+
const updatedVerification = readVerificationState(workingDir);
|
|
107
|
+
if (updatedVerification) {
|
|
108
|
+
const continuationPrompt = getOracleRejectionContinuationPrompt(updatedVerification);
|
|
109
|
+
return {
|
|
110
|
+
shouldBlock: true,
|
|
111
|
+
message: continuationPrompt,
|
|
112
|
+
mode: 'ralph-loop',
|
|
113
|
+
metadata: {
|
|
114
|
+
iteration: state.iteration,
|
|
115
|
+
maxIterations: state.max_iterations
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Verification still pending - remind to spawn oracle
|
|
122
|
+
const verificationPrompt = getOracleVerificationPrompt(verificationState);
|
|
123
|
+
return {
|
|
124
|
+
shouldBlock: true,
|
|
125
|
+
message: verificationPrompt,
|
|
126
|
+
mode: 'ralph-loop',
|
|
127
|
+
metadata: {
|
|
128
|
+
iteration: state.iteration,
|
|
129
|
+
maxIterations: state.max_iterations
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
28
133
|
// Check for completion promise in transcript
|
|
29
134
|
const completed = detectCompletionPromise(sessionId || '', state.completion_promise);
|
|
30
135
|
if (completed) {
|
|
31
|
-
|
|
136
|
+
// Completion promise detected - START oracle verification instead of completing
|
|
137
|
+
startVerification(workingDir, state.completion_promise, state.prompt);
|
|
138
|
+
const newVerificationState = readVerificationState(workingDir);
|
|
139
|
+
if (newVerificationState) {
|
|
140
|
+
const verificationPrompt = getOracleVerificationPrompt(newVerificationState);
|
|
141
|
+
return {
|
|
142
|
+
shouldBlock: true,
|
|
143
|
+
message: verificationPrompt,
|
|
144
|
+
mode: 'ralph-loop',
|
|
145
|
+
metadata: {
|
|
146
|
+
iteration: state.iteration,
|
|
147
|
+
maxIterations: state.max_iterations
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Fallback if verification state couldn't be created
|
|
152
|
+
clearRalphState(workingDir);
|
|
32
153
|
return {
|
|
33
154
|
shouldBlock: false,
|
|
34
155
|
message: `[RALPH LOOP COMPLETE] Task completed after ${state.iteration} iteration(s). Great work!`,
|
|
@@ -37,7 +158,8 @@ async function checkRalphLoop(sessionId, directory) {
|
|
|
37
158
|
}
|
|
38
159
|
// Check max iterations
|
|
39
160
|
if (state.iteration >= state.max_iterations) {
|
|
40
|
-
clearRalphState(
|
|
161
|
+
clearRalphState(workingDir);
|
|
162
|
+
clearVerificationState(workingDir);
|
|
41
163
|
return {
|
|
42
164
|
shouldBlock: false,
|
|
43
165
|
message: `[RALPH LOOP STOPPED] Max iterations (${state.max_iterations}) reached without completion promise. Consider reviewing the task requirements.`,
|
|
@@ -45,7 +167,7 @@ async function checkRalphLoop(sessionId, directory) {
|
|
|
45
167
|
};
|
|
46
168
|
}
|
|
47
169
|
// Increment and continue
|
|
48
|
-
const newState = incrementRalphIteration(
|
|
170
|
+
const newState = incrementRalphIteration(workingDir);
|
|
49
171
|
if (!newState) {
|
|
50
172
|
return null;
|
|
51
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/persistent-mode/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/persistent-mode/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,8 +163,8 @@ export function createPreemptiveCompactionHook(config) {
|
|
|
163
163
|
}
|
|
164
164
|
// Only check after tools that produce large outputs
|
|
165
165
|
const toolLower = input.tool_name.toLowerCase();
|
|
166
|
-
const
|
|
167
|
-
if (!
|
|
166
|
+
const largeOutputTools = ['read', 'grep', 'glob', 'bash', 'webfetch'];
|
|
167
|
+
if (!largeOutputTools.includes(toolLower)) {
|
|
168
168
|
return null;
|
|
169
169
|
}
|
|
170
170
|
// Estimate response size
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/preemptive-compaction/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/preemptive-compaction/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,48 +15,17 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Ported from oh-my-opencode's thinking-block-validator hook.
|
|
17
17
|
*/
|
|
18
|
-
import type { MessagePart, MessageWithParts, MessagesTransformHook, ValidationResult } from
|
|
19
|
-
export * from
|
|
20
|
-
export * from
|
|
21
|
-
/**
|
|
22
|
-
* Check if a model has extended thinking enabled
|
|
23
|
-
* Uses patterns from think-mode/switcher.ts for consistency
|
|
24
|
-
*/
|
|
18
|
+
import type { MessagePart, MessageWithParts, MessagesTransformHook, ValidationResult } from "./types.js";
|
|
19
|
+
export * from "./types.js";
|
|
20
|
+
export * from "./constants.js";
|
|
25
21
|
export declare function isExtendedThinkingModel(modelID: string): boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Check if a message has any content parts (tool_use, text, or other non-thinking content)
|
|
28
|
-
*/
|
|
29
22
|
export declare function hasContentParts(parts: MessagePart[]): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Check if a message starts with a thinking/reasoning block
|
|
32
|
-
*/
|
|
33
23
|
export declare function startsWithThinkingBlock(parts: MessagePart[]): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Find the most recent thinking content from previous assistant messages
|
|
36
|
-
*/
|
|
37
24
|
export declare function findPreviousThinkingContent(messages: MessageWithParts[], currentIndex: number): string;
|
|
38
|
-
/**
|
|
39
|
-
* Prepend a thinking block to a message's parts array
|
|
40
|
-
*/
|
|
41
25
|
export declare function prependThinkingBlock(message: MessageWithParts, thinkingContent: string): void;
|
|
42
|
-
/**
|
|
43
|
-
* Validate a single assistant message
|
|
44
|
-
* Returns validation result with details
|
|
45
|
-
*/
|
|
46
26
|
export declare function validateMessage(message: MessageWithParts, messages: MessageWithParts[], index: number, modelID: string): ValidationResult;
|
|
47
|
-
/**
|
|
48
|
-
* Validate and fix assistant messages that have tool_use but no thinking block
|
|
49
|
-
* This is the main hook function
|
|
50
|
-
*/
|
|
51
27
|
export declare function createThinkingBlockValidatorHook(): MessagesTransformHook;
|
|
52
|
-
/**
|
|
53
|
-
* Validate all messages in a conversation
|
|
54
|
-
* Returns array of validation results
|
|
55
|
-
*/
|
|
56
28
|
export declare function validateMessages(messages: MessageWithParts[], modelID: string): ValidationResult[];
|
|
57
|
-
/**
|
|
58
|
-
* Get statistics about validation results
|
|
59
|
-
*/
|
|
60
29
|
export declare function getValidationStats(results: ValidationResult[]): {
|
|
61
30
|
total: number;
|
|
62
31
|
valid: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAUpB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAU/B,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAahE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAI7D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAKrE;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,YAAY,EAAE,MAAM,GACnB,MAAM,CAqBR;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,MAAM,GACtB,IAAI,CAeN;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,gBAAgB,CA2BlB;AAED,wBAAgB,gCAAgC,IAAI,qBAAqB,CA4CxE;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE,CASpB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAOA"}
|
|
@@ -15,67 +15,50 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Ported from oh-my-opencode's thinking-block-validator hook.
|
|
17
17
|
*/
|
|
18
|
-
import { CONTENT_PART_TYPES, THINKING_PART_TYPES, DEFAULT_THINKING_CONTENT, SYNTHETIC_THINKING_ID_PREFIX, HOOK_NAME } from
|
|
19
|
-
|
|
20
|
-
export * from
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
import { CONTENT_PART_TYPES, THINKING_PART_TYPES, DEFAULT_THINKING_CONTENT, SYNTHETIC_THINKING_ID_PREFIX, HOOK_NAME, } from "./constants.js";
|
|
19
|
+
export * from "./types.js";
|
|
20
|
+
export * from "./constants.js";
|
|
21
|
+
function isContentPartType(type) {
|
|
22
|
+
return CONTENT_PART_TYPES.includes(type);
|
|
23
|
+
}
|
|
24
|
+
function isThinkingPartType(type) {
|
|
25
|
+
return THINKING_PART_TYPES.includes(type);
|
|
26
|
+
}
|
|
26
27
|
export function isExtendedThinkingModel(modelID) {
|
|
27
28
|
if (!modelID)
|
|
28
29
|
return false;
|
|
29
30
|
const lower = modelID.toLowerCase();
|
|
30
|
-
// Check for explicit thinking/high variants (always enabled)
|
|
31
31
|
if (lower.includes("thinking") || lower.endsWith("-high")) {
|
|
32
32
|
return true;
|
|
33
33
|
}
|
|
34
|
-
// Check for thinking-capable models (claude-4 family, claude-3)
|
|
35
|
-
// Aligns with THINKING_CAPABLE_MODELS in think-mode/switcher.ts
|
|
36
34
|
return (lower.includes("claude-sonnet-4") ||
|
|
37
35
|
lower.includes("claude-opus-4") ||
|
|
38
36
|
lower.includes("claude-3"));
|
|
39
37
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Check if a message has any content parts (tool_use, text, or other non-thinking content)
|
|
42
|
-
*/
|
|
43
38
|
export function hasContentParts(parts) {
|
|
44
39
|
if (!parts || parts.length === 0)
|
|
45
40
|
return false;
|
|
46
|
-
return parts.some((part) =>
|
|
47
|
-
const type = part.type;
|
|
48
|
-
// Include tool parts and text parts (anything that's not thinking/reasoning)
|
|
49
|
-
return CONTENT_PART_TYPES.includes(type);
|
|
50
|
-
});
|
|
41
|
+
return parts.some((part) => isContentPartType(part.type));
|
|
51
42
|
}
|
|
52
|
-
/**
|
|
53
|
-
* Check if a message starts with a thinking/reasoning block
|
|
54
|
-
*/
|
|
55
43
|
export function startsWithThinkingBlock(parts) {
|
|
56
44
|
if (!parts || parts.length === 0)
|
|
57
45
|
return false;
|
|
58
46
|
const firstPart = parts[0];
|
|
59
|
-
|
|
60
|
-
return THINKING_PART_TYPES.includes(type);
|
|
47
|
+
return isThinkingPartType(firstPart.type);
|
|
61
48
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Find the most recent thinking content from previous assistant messages
|
|
64
|
-
*/
|
|
65
49
|
export function findPreviousThinkingContent(messages, currentIndex) {
|
|
66
|
-
// Search backwards from current message
|
|
67
50
|
for (let i = currentIndex - 1; i >= 0; i--) {
|
|
68
51
|
const msg = messages[i];
|
|
69
52
|
if (msg.info.role !== "assistant")
|
|
70
53
|
continue;
|
|
71
|
-
// Look for thinking parts
|
|
72
54
|
if (!msg.parts)
|
|
73
55
|
continue;
|
|
74
56
|
for (const part of msg.parts) {
|
|
75
|
-
|
|
76
|
-
if (THINKING_PART_TYPES.includes(type)) {
|
|
57
|
+
if (isThinkingPartType(part.type)) {
|
|
77
58
|
const thinking = part.thinking || part.text;
|
|
78
|
-
if (thinking &&
|
|
59
|
+
if (thinking &&
|
|
60
|
+
typeof thinking === "string" &&
|
|
61
|
+
thinking.trim().length > 0) {
|
|
79
62
|
return thinking;
|
|
80
63
|
}
|
|
81
64
|
}
|
|
@@ -83,14 +66,10 @@ export function findPreviousThinkingContent(messages, currentIndex) {
|
|
|
83
66
|
}
|
|
84
67
|
return "";
|
|
85
68
|
}
|
|
86
|
-
/**
|
|
87
|
-
* Prepend a thinking block to a message's parts array
|
|
88
|
-
*/
|
|
89
69
|
export function prependThinkingBlock(message, thinkingContent) {
|
|
90
70
|
if (!message.parts) {
|
|
91
71
|
message.parts = [];
|
|
92
72
|
}
|
|
93
|
-
// Create synthetic thinking part
|
|
94
73
|
const thinkingPart = {
|
|
95
74
|
type: "thinking",
|
|
96
75
|
id: SYNTHETIC_THINKING_ID_PREFIX,
|
|
@@ -99,42 +78,29 @@ export function prependThinkingBlock(message, thinkingContent) {
|
|
|
99
78
|
thinking: thinkingContent,
|
|
100
79
|
synthetic: true,
|
|
101
80
|
};
|
|
102
|
-
// Prepend to parts array
|
|
103
81
|
message.parts.unshift(thinkingPart);
|
|
104
82
|
}
|
|
105
|
-
/**
|
|
106
|
-
* Validate a single assistant message
|
|
107
|
-
* Returns validation result with details
|
|
108
|
-
*/
|
|
109
83
|
export function validateMessage(message, messages, index, modelID) {
|
|
110
|
-
// Only validate assistant messages
|
|
111
84
|
if (message.info.role !== "assistant") {
|
|
112
85
|
return { valid: true, fixed: false };
|
|
113
86
|
}
|
|
114
|
-
// Only validate if extended thinking might be enabled
|
|
115
87
|
if (!isExtendedThinkingModel(modelID)) {
|
|
116
88
|
return { valid: true, fixed: false };
|
|
117
89
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
// Find thinking content from previous turns
|
|
90
|
+
if (hasContentParts(message.parts) &&
|
|
91
|
+
!startsWithThinkingBlock(message.parts)) {
|
|
121
92
|
const previousThinking = findPreviousThinkingContent(messages, index);
|
|
122
|
-
// Prepend thinking block with content from previous turn or placeholder
|
|
123
93
|
const thinkingContent = previousThinking || DEFAULT_THINKING_CONTENT;
|
|
124
94
|
prependThinkingBlock(message, thinkingContent);
|
|
125
95
|
return {
|
|
126
96
|
valid: false,
|
|
127
97
|
fixed: true,
|
|
128
98
|
issue: "Assistant message has content but no thinking block",
|
|
129
|
-
action: `Prepended synthetic thinking block: "${thinkingContent.substring(0, 50)}..."
|
|
99
|
+
action: `Prepended synthetic thinking block: "${thinkingContent.substring(0, 50)}..."`,
|
|
130
100
|
};
|
|
131
101
|
}
|
|
132
102
|
return { valid: true, fixed: false };
|
|
133
103
|
}
|
|
134
|
-
/**
|
|
135
|
-
* Validate and fix assistant messages that have tool_use but no thinking block
|
|
136
|
-
* This is the main hook function
|
|
137
|
-
*/
|
|
138
104
|
export function createThinkingBlockValidatorHook() {
|
|
139
105
|
return {
|
|
140
106
|
"experimental.chat.messages.transform": async (_input, output) => {
|
|
@@ -142,7 +108,6 @@ export function createThinkingBlockValidatorHook() {
|
|
|
142
108
|
if (!messages || messages.length === 0) {
|
|
143
109
|
return;
|
|
144
110
|
}
|
|
145
|
-
// Get the model info from the last user message
|
|
146
111
|
let lastUserMessage;
|
|
147
112
|
for (let i = messages.length - 1; i >= 0; i--) {
|
|
148
113
|
if (messages[i].info.role === "user") {
|
|
@@ -151,38 +116,27 @@ export function createThinkingBlockValidatorHook() {
|
|
|
151
116
|
}
|
|
152
117
|
}
|
|
153
118
|
const modelID = lastUserMessage?.info?.modelID || "";
|
|
154
|
-
// Only process if extended thinking might be enabled
|
|
155
119
|
if (!isExtendedThinkingModel(modelID)) {
|
|
156
120
|
return;
|
|
157
121
|
}
|
|
158
|
-
// Process all assistant messages
|
|
159
122
|
let fixedCount = 0;
|
|
160
123
|
for (let i = 0; i < messages.length; i++) {
|
|
161
124
|
const msg = messages[i];
|
|
162
|
-
// Only check assistant messages
|
|
163
125
|
if (msg.info.role !== "assistant")
|
|
164
126
|
continue;
|
|
165
|
-
// Check if message has content parts but doesn't start with thinking
|
|
166
127
|
if (hasContentParts(msg.parts) && !startsWithThinkingBlock(msg.parts)) {
|
|
167
|
-
// Find thinking content from previous turns
|
|
168
128
|
const previousThinking = findPreviousThinkingContent(messages, i);
|
|
169
|
-
// Prepend thinking block with content from previous turn or placeholder
|
|
170
129
|
const thinkingContent = previousThinking || DEFAULT_THINKING_CONTENT;
|
|
171
130
|
prependThinkingBlock(msg, thinkingContent);
|
|
172
131
|
fixedCount++;
|
|
173
132
|
}
|
|
174
133
|
}
|
|
175
|
-
// Optional: Log validation results in development
|
|
176
134
|
if (fixedCount > 0 && process.env.DEBUG_THINKING_VALIDATOR) {
|
|
177
135
|
console.log(`[${HOOK_NAME}] Fixed ${fixedCount} message(s) by prepending thinking blocks`);
|
|
178
136
|
}
|
|
179
137
|
},
|
|
180
138
|
};
|
|
181
139
|
}
|
|
182
|
-
/**
|
|
183
|
-
* Validate all messages in a conversation
|
|
184
|
-
* Returns array of validation results
|
|
185
|
-
*/
|
|
186
140
|
export function validateMessages(messages, modelID) {
|
|
187
141
|
const results = [];
|
|
188
142
|
for (let i = 0; i < messages.length; i++) {
|
|
@@ -191,15 +145,12 @@ export function validateMessages(messages, modelID) {
|
|
|
191
145
|
}
|
|
192
146
|
return results;
|
|
193
147
|
}
|
|
194
|
-
/**
|
|
195
|
-
* Get statistics about validation results
|
|
196
|
-
*/
|
|
197
148
|
export function getValidationStats(results) {
|
|
198
149
|
return {
|
|
199
150
|
total: results.length,
|
|
200
|
-
valid: results.filter(r => r.valid && !r.fixed).length,
|
|
201
|
-
fixed: results.filter(r => r.fixed).length,
|
|
202
|
-
issues: results.filter(r => !r.valid).length
|
|
151
|
+
valid: results.filter((r) => r.valid && !r.fixed).length,
|
|
152
|
+
fixed: results.filter((r) => r.fixed).length,
|
|
153
|
+
issues: results.filter((r) => !r.valid).length,
|
|
203
154
|
};
|
|
204
155
|
}
|
|
205
156
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/index.ts"],"names":[],"mappings":"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"}
|