olympus-ai 2.5.2 → 2.6.0
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/__tests__/learning/agent-evaluator.test.d.ts +2 -0
- package/dist/__tests__/learning/agent-evaluator.test.d.ts.map +1 -0
- package/dist/__tests__/learning/agent-evaluator.test.js +29 -0
- package/dist/__tests__/learning/agent-evaluator.test.js.map +1 -0
- package/dist/__tests__/learning/discovery.test.d.ts +2 -0
- package/dist/__tests__/learning/discovery.test.d.ts.map +1 -0
- package/dist/__tests__/learning/discovery.test.js +70 -0
- package/dist/__tests__/learning/discovery.test.js.map +1 -0
- package/dist/__tests__/learning/fixtures/mock-feedback.d.ts +14 -0
- package/dist/__tests__/learning/fixtures/mock-feedback.d.ts.map +1 -0
- package/dist/__tests__/learning/fixtures/mock-feedback.js +146 -0
- package/dist/__tests__/learning/fixtures/mock-feedback.js.map +1 -0
- package/dist/__tests__/learning/pattern-extractor.test.d.ts +2 -0
- package/dist/__tests__/learning/pattern-extractor.test.d.ts.map +1 -0
- package/dist/__tests__/learning/pattern-extractor.test.js +30 -0
- package/dist/__tests__/learning/pattern-extractor.test.js.map +1 -0
- package/dist/__tests__/learning/revision-detector.test.d.ts +2 -0
- package/dist/__tests__/learning/revision-detector.test.d.ts.map +1 -0
- package/dist/__tests__/learning/revision-detector.test.js +54 -0
- package/dist/__tests__/learning/revision-detector.test.js.map +1 -0
- package/dist/cli/index.js +264 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/hooks/agent-usage-reminder/index.d.ts +1 -0
- package/dist/hooks/agent-usage-reminder/index.d.ts.map +1 -1
- package/dist/hooks/agent-usage-reminder/index.js +107 -0
- package/dist/hooks/agent-usage-reminder/index.js.map +1 -1
- package/dist/hooks/agent-usage-reminder/index.test.d.ts +5 -0
- package/dist/hooks/agent-usage-reminder/index.test.d.ts.map +1 -0
- package/dist/hooks/agent-usage-reminder/index.test.js +141 -0
- package/dist/hooks/agent-usage-reminder/index.test.js.map +1 -0
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +14 -2
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/keyword-detector/index.d.ts +1 -1
- package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
- package/dist/hooks/keyword-detector/index.js +2 -1
- package/dist/hooks/keyword-detector/index.js.map +1 -1
- package/dist/hooks/olympus-hooks.cjs +162 -67
- package/dist/hooks/olympus-state/index.d.ts +69 -0
- package/dist/hooks/olympus-state/index.d.ts.map +1 -0
- package/dist/hooks/olympus-state/index.js +226 -0
- package/dist/hooks/olympus-state/index.js.map +1 -0
- package/dist/hooks/persistent-mode/index.d.ts +7 -6
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +94 -5
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/registrations/session-start.d.ts.map +1 -1
- package/dist/hooks/registrations/session-start.js +26 -0
- package/dist/hooks/registrations/session-start.js.map +1 -1
- package/dist/hooks/registrations/stop.d.ts.map +1 -1
- package/dist/hooks/registrations/stop.js +25 -0
- package/dist/hooks/registrations/stop.js.map +1 -1
- package/dist/hooks/registrations/user-prompt-submit.d.ts.map +1 -1
- package/dist/hooks/registrations/user-prompt-submit.js +34 -0
- package/dist/hooks/registrations/user-prompt-submit.js.map +1 -1
- package/dist/installer/hooks.d.ts +7 -1
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +61 -2
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +40 -14
- package/dist/installer/index.js.map +1 -1
- package/dist/learning/agent-evaluator.d.ts +6 -0
- package/dist/learning/agent-evaluator.d.ts.map +1 -0
- package/dist/learning/agent-evaluator.js +116 -0
- package/dist/learning/agent-evaluator.js.map +1 -0
- package/dist/learning/discovery-validator.d.ts +21 -0
- package/dist/learning/discovery-validator.d.ts.map +1 -0
- package/dist/learning/discovery-validator.js +75 -0
- package/dist/learning/discovery-validator.js.map +1 -0
- package/dist/learning/discovery.d.ts +20 -0
- package/dist/learning/discovery.d.ts.map +1 -0
- package/dist/learning/discovery.js +141 -0
- package/dist/learning/discovery.js.map +1 -0
- package/dist/learning/hooks/cancellation-detector.d.ts +8 -0
- package/dist/learning/hooks/cancellation-detector.d.ts.map +1 -0
- package/dist/learning/hooks/cancellation-detector.js +64 -0
- package/dist/learning/hooks/cancellation-detector.js.map +1 -0
- package/dist/learning/hooks/learned-context.d.ts +6 -0
- package/dist/learning/hooks/learned-context.d.ts.map +1 -0
- package/dist/learning/hooks/learned-context.js +104 -0
- package/dist/learning/hooks/learned-context.js.map +1 -0
- package/dist/learning/hooks/revision-detector.d.ts +9 -0
- package/dist/learning/hooks/revision-detector.d.ts.map +1 -0
- package/dist/learning/hooks/revision-detector.js +92 -0
- package/dist/learning/hooks/revision-detector.js.map +1 -0
- package/dist/learning/hooks/success-detector.d.ts +4 -0
- package/dist/learning/hooks/success-detector.d.ts.map +1 -0
- package/dist/learning/hooks/success-detector.js +58 -0
- package/dist/learning/hooks/success-detector.js.map +1 -0
- package/dist/learning/index.d.ts +10 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +17 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/migrate-notepads.d.ts +6 -0
- package/dist/learning/migrate-notepads.d.ts.map +1 -0
- package/dist/learning/migrate-notepads.js +77 -0
- package/dist/learning/migrate-notepads.js.map +1 -0
- package/dist/learning/pattern-extractor.d.ts +6 -0
- package/dist/learning/pattern-extractor.d.ts.map +1 -0
- package/dist/learning/pattern-extractor.js +106 -0
- package/dist/learning/pattern-extractor.js.map +1 -0
- package/dist/learning/preference-learner.d.ts +6 -0
- package/dist/learning/preference-learner.d.ts.map +1 -0
- package/dist/learning/preference-learner.js +96 -0
- package/dist/learning/preference-learner.js.map +1 -0
- package/dist/learning/prompt-patcher.d.ts +24 -0
- package/dist/learning/prompt-patcher.d.ts.map +1 -0
- package/dist/learning/prompt-patcher.js +120 -0
- package/dist/learning/prompt-patcher.js.map +1 -0
- package/dist/learning/session-state.d.ts +18 -0
- package/dist/learning/session-state.d.ts.map +1 -0
- package/dist/learning/session-state.js +78 -0
- package/dist/learning/session-state.js.map +1 -0
- package/dist/learning/storage.d.ts +18 -0
- package/dist/learning/storage.d.ts.map +1 -0
- package/dist/learning/storage.js +74 -0
- package/dist/learning/storage.js.map +1 -0
- package/dist/learning/types.d.ts +138 -0
- package/dist/learning/types.d.ts.map +1 -0
- package/dist/learning/types.js +6 -0
- package/dist/learning/types.js.map +1 -0
- package/dist/shared/types.d.ts +12 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Olympus State Management
|
|
3
|
+
*
|
|
4
|
+
* Manages persistent olympus orchestration mode state across sessions.
|
|
5
|
+
* When olympus is activated and todos remain incomplete,
|
|
6
|
+
* this module ensures the mode persists until all work is done.
|
|
7
|
+
*/
|
|
8
|
+
export interface OlympusState {
|
|
9
|
+
/** Whether olympus mode is currently active */
|
|
10
|
+
active: boolean;
|
|
11
|
+
/** When olympus was activated */
|
|
12
|
+
started_at: string;
|
|
13
|
+
/** The original prompt that triggered olympus */
|
|
14
|
+
original_prompt: string;
|
|
15
|
+
/** Session ID the mode is bound to */
|
|
16
|
+
session_id?: string;
|
|
17
|
+
/** Number of times the mode has been reinforced (for metrics) */
|
|
18
|
+
reinforcement_count: number;
|
|
19
|
+
/** Last time the mode was checked/reinforced */
|
|
20
|
+
last_checked_at: string;
|
|
21
|
+
/** Whether Oracle verification is required before completion */
|
|
22
|
+
requires_oracle_verification: boolean;
|
|
23
|
+
/** Whether Oracle has approved completion */
|
|
24
|
+
oracle_approved: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Read Olympus state from disk (checks both local and global)
|
|
28
|
+
*/
|
|
29
|
+
export declare function readOlympusState(directory?: string): OlympusState | null;
|
|
30
|
+
/**
|
|
31
|
+
* Write Olympus state to disk (both local and global for redundancy)
|
|
32
|
+
*/
|
|
33
|
+
export declare function writeOlympusState(state: OlympusState, directory?: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Activate olympus mode
|
|
36
|
+
*/
|
|
37
|
+
export declare function activateOlympus(prompt: string, sessionId?: string, directory?: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Deactivate olympus mode
|
|
40
|
+
*/
|
|
41
|
+
export declare function deactivateOlympus(directory?: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Increment reinforcement count (called when mode is reinforced on stop)
|
|
44
|
+
*/
|
|
45
|
+
export declare function incrementReinforcement(directory?: string): OlympusState | null;
|
|
46
|
+
/**
|
|
47
|
+
* Check if olympus should be reinforced (active with pending todos)
|
|
48
|
+
*/
|
|
49
|
+
export declare function shouldReinforceOlympus(sessionId?: string, directory?: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Record Oracle approval for task completion
|
|
52
|
+
*/
|
|
53
|
+
export declare function recordOracleApproval(directory?: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Get olympus persistence message for injection
|
|
56
|
+
*/
|
|
57
|
+
export declare function getOlympusPersistenceMessage(state: OlympusState): string;
|
|
58
|
+
/**
|
|
59
|
+
* Create an Olympus State hook instance
|
|
60
|
+
*/
|
|
61
|
+
export declare function createOlympusStateHook(directory: string): {
|
|
62
|
+
activate: (prompt: string, sessionId?: string) => boolean;
|
|
63
|
+
deactivate: () => boolean;
|
|
64
|
+
getState: () => OlympusState | null;
|
|
65
|
+
shouldReinforce: (sessionId?: string) => boolean;
|
|
66
|
+
incrementReinforcement: () => OlympusState | null;
|
|
67
|
+
recordOracleApproval: () => boolean;
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/olympus-state/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,4BAA4B,EAAE,OAAO,CAAC;IACtC,6CAA6C;IAC7C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAiDD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAwBxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBlF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAuB7D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAe9E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CA0BxE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM;uBAEjC,MAAM,cAAc,MAAM;;;kCAIf,MAAM;;;EAKvC"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Olympus State Management
|
|
3
|
+
*
|
|
4
|
+
* Manages persistent olympus orchestration mode state across sessions.
|
|
5
|
+
* When olympus is activated and todos remain incomplete,
|
|
6
|
+
* this module ensures the mode persists until all work is done.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
const _DEFAULT_STATE = {
|
|
12
|
+
active: false,
|
|
13
|
+
started_at: '',
|
|
14
|
+
original_prompt: '',
|
|
15
|
+
reinforcement_count: 0,
|
|
16
|
+
last_checked_at: '',
|
|
17
|
+
requires_oracle_verification: false,
|
|
18
|
+
oracle_approved: false
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Get the state file path for Olympus
|
|
22
|
+
*/
|
|
23
|
+
function getStateFilePath(directory) {
|
|
24
|
+
const baseDir = directory || process.cwd();
|
|
25
|
+
const olympusDir = join(baseDir, '.olympus');
|
|
26
|
+
return join(olympusDir, 'olympus-state.json');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get global state file path (for cross-session persistence)
|
|
30
|
+
*/
|
|
31
|
+
function getGlobalStateFilePath() {
|
|
32
|
+
return join(homedir(), '.claude', 'olympus-state.json');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Ensure the .olympus directory exists
|
|
36
|
+
*/
|
|
37
|
+
function ensureStateDir(directory) {
|
|
38
|
+
const baseDir = directory || process.cwd();
|
|
39
|
+
const olympusDir = join(baseDir, '.olympus');
|
|
40
|
+
if (!existsSync(olympusDir)) {
|
|
41
|
+
mkdirSync(olympusDir, { recursive: true });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Ensure the ~/.claude directory exists
|
|
46
|
+
*/
|
|
47
|
+
function ensureGlobalStateDir() {
|
|
48
|
+
const claudeDir = join(homedir(), '.claude');
|
|
49
|
+
if (!existsSync(claudeDir)) {
|
|
50
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Read Olympus state from disk (checks both local and global)
|
|
55
|
+
*/
|
|
56
|
+
export function readOlympusState(directory) {
|
|
57
|
+
// Check local state first
|
|
58
|
+
const localStateFile = getStateFilePath(directory);
|
|
59
|
+
if (existsSync(localStateFile)) {
|
|
60
|
+
try {
|
|
61
|
+
const content = readFileSync(localStateFile, 'utf-8');
|
|
62
|
+
return JSON.parse(content);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Fall through to global check
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Check global state
|
|
69
|
+
const globalStateFile = getGlobalStateFilePath();
|
|
70
|
+
if (existsSync(globalStateFile)) {
|
|
71
|
+
try {
|
|
72
|
+
const content = readFileSync(globalStateFile, 'utf-8');
|
|
73
|
+
return JSON.parse(content);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Write Olympus state to disk (both local and global for redundancy)
|
|
83
|
+
*/
|
|
84
|
+
export function writeOlympusState(state, directory) {
|
|
85
|
+
try {
|
|
86
|
+
// Write to local .olympus
|
|
87
|
+
ensureStateDir(directory);
|
|
88
|
+
const localStateFile = getStateFilePath(directory);
|
|
89
|
+
writeFileSync(localStateFile, JSON.stringify(state, null, 2));
|
|
90
|
+
// Write to global ~/.claude for cross-session persistence
|
|
91
|
+
ensureGlobalStateDir();
|
|
92
|
+
const globalStateFile = getGlobalStateFilePath();
|
|
93
|
+
writeFileSync(globalStateFile, JSON.stringify(state, null, 2));
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Activate olympus mode
|
|
102
|
+
*/
|
|
103
|
+
export function activateOlympus(prompt, sessionId, directory) {
|
|
104
|
+
const state = {
|
|
105
|
+
active: true,
|
|
106
|
+
started_at: new Date().toISOString(),
|
|
107
|
+
original_prompt: prompt,
|
|
108
|
+
session_id: sessionId,
|
|
109
|
+
reinforcement_count: 0,
|
|
110
|
+
last_checked_at: new Date().toISOString(),
|
|
111
|
+
requires_oracle_verification: true,
|
|
112
|
+
oracle_approved: false
|
|
113
|
+
};
|
|
114
|
+
return writeOlympusState(state, directory);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Deactivate olympus mode
|
|
118
|
+
*/
|
|
119
|
+
export function deactivateOlympus(directory) {
|
|
120
|
+
// Remove local state
|
|
121
|
+
const localStateFile = getStateFilePath(directory);
|
|
122
|
+
if (existsSync(localStateFile)) {
|
|
123
|
+
try {
|
|
124
|
+
unlinkSync(localStateFile);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// Continue to global cleanup
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Remove global state
|
|
131
|
+
const globalStateFile = getGlobalStateFilePath();
|
|
132
|
+
if (existsSync(globalStateFile)) {
|
|
133
|
+
try {
|
|
134
|
+
unlinkSync(globalStateFile);
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Increment reinforcement count (called when mode is reinforced on stop)
|
|
145
|
+
*/
|
|
146
|
+
export function incrementReinforcement(directory) {
|
|
147
|
+
const state = readOlympusState(directory);
|
|
148
|
+
if (!state || !state.active) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
state.reinforcement_count += 1;
|
|
152
|
+
state.last_checked_at = new Date().toISOString();
|
|
153
|
+
if (writeOlympusState(state, directory)) {
|
|
154
|
+
return state;
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Check if olympus should be reinforced (active with pending todos)
|
|
160
|
+
*/
|
|
161
|
+
export function shouldReinforceOlympus(sessionId, directory) {
|
|
162
|
+
const state = readOlympusState(directory);
|
|
163
|
+
if (!state || !state.active) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
// If bound to a session, only reinforce for that session
|
|
167
|
+
if (state.session_id && sessionId && state.session_id !== sessionId) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Record Oracle approval for task completion
|
|
174
|
+
*/
|
|
175
|
+
export function recordOracleApproval(directory) {
|
|
176
|
+
const state = readOlympusState(directory);
|
|
177
|
+
if (!state || !state.active) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
state.oracle_approved = true;
|
|
181
|
+
state.last_checked_at = new Date().toISOString();
|
|
182
|
+
return writeOlympusState(state, directory);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get olympus persistence message for injection
|
|
186
|
+
*/
|
|
187
|
+
export function getOlympusPersistenceMessage(state) {
|
|
188
|
+
const verificationWarning = state.requires_oracle_verification && !state.oracle_approved
|
|
189
|
+
? `\n\n**ORACLE VERIFICATION REQUIRED**: Before declaring complete, you MUST get Oracle approval.`
|
|
190
|
+
: '';
|
|
191
|
+
return `<olympus-persistence>
|
|
192
|
+
|
|
193
|
+
[OLYMPUS MODE STILL ACTIVE - Reinforcement #${state.reinforcement_count + 1}]
|
|
194
|
+
|
|
195
|
+
Your orchestration session is NOT complete. Incomplete todos remain.${verificationWarning}
|
|
196
|
+
|
|
197
|
+
REMEMBER THE CONDUCTOR RULES:
|
|
198
|
+
- **DELEGATE**: Route specialized work to the right agents
|
|
199
|
+
- **PARALLEL**: Fire independent calls simultaneously
|
|
200
|
+
- **TODO**: Track EVERY step. Mark complete IMMEDIATELY
|
|
201
|
+
- **VERIFY**: Oracle must approve before completion
|
|
202
|
+
|
|
203
|
+
Continue working on the next pending task. DO NOT STOP until all tasks are complete.
|
|
204
|
+
|
|
205
|
+
Original task: ${state.original_prompt}
|
|
206
|
+
|
|
207
|
+
</olympus-persistence>
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
`;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Create an Olympus State hook instance
|
|
215
|
+
*/
|
|
216
|
+
export function createOlympusStateHook(directory) {
|
|
217
|
+
return {
|
|
218
|
+
activate: (prompt, sessionId) => activateOlympus(prompt, sessionId, directory),
|
|
219
|
+
deactivate: () => deactivateOlympus(directory),
|
|
220
|
+
getState: () => readOlympusState(directory),
|
|
221
|
+
shouldReinforce: (sessionId) => shouldReinforceOlympus(sessionId, directory),
|
|
222
|
+
incrementReinforcement: () => incrementReinforcement(directory),
|
|
223
|
+
recordOracleApproval: () => recordOracleApproval(directory)
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/olympus-state/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAqB7B,MAAM,cAAc,GAAiB;IACnC,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE;IACnB,mBAAmB,EAAE,CAAC;IACtB,eAAe,EAAE,EAAE;IACnB,4BAA4B,EAAE,KAAK;IACnC,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF;;GAEG;AACH,SAAS,gBAAgB,CAAC,SAAkB;IAC1C,MAAM,OAAO,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB;IAC7B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,SAAkB;IACxC,MAAM,OAAO,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAkB;IACjD,0BAA0B;IAC1B,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,eAAe,GAAG,sBAAsB,EAAE,CAAC;IACjD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAmB,EAAE,SAAkB;IACvE,IAAI,CAAC;QACH,0BAA0B;QAC1B,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACnD,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9D,0DAA0D;QAC1D,oBAAoB,EAAE,CAAC;QACvB,MAAM,eAAe,GAAG,sBAAsB,EAAE,CAAC;QACjD,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,SAAkB,EAClB,SAAkB;IAElB,MAAM,KAAK,GAAiB;QAC1B,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,eAAe,EAAE,MAAM;QACvB,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,CAAC;QACtB,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,4BAA4B,EAAE,IAAI;QAClC,eAAe,EAAE,KAAK;KACvB,CAAC;IAEF,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAkB;IAClD,qBAAqB;IACrB,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,UAAU,CAAC,cAAc,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,eAAe,GAAG,sBAAsB,EAAE,CAAC;IACjD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,UAAU,CAAC,eAAe,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAkB;IACvD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC;IAC/B,KAAK,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEjD,IAAI,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAAkB,EAClB,SAAkB;IAElB,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,IAAI,KAAK,CAAC,UAAU,IAAI,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAkB;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEjD,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAmB;IAC9D,MAAM,mBAAmB,GAAG,KAAK,CAAC,4BAA4B,IAAI,CAAC,KAAK,CAAC,eAAe;QACtF,CAAC,CAAC,gGAAgG;QAClG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;8CAEqC,KAAK,CAAC,mBAAmB,GAAG,CAAC;;sEAEL,mBAAmB;;;;;;;;;;iBAUxE,KAAK,CAAC,eAAe;;;;;;CAMrC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,OAAO;QACL,QAAQ,EAAE,CAAC,MAAc,EAAE,SAAkB,EAAE,EAAE,CAC/C,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;QAC/C,UAAU,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC9C,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAC3C,eAAe,EAAE,CAAC,SAAkB,EAAE,EAAE,CACtC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,sBAAsB,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC;QAC/D,oBAAoB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC;KAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Persistent Mode Hook
|
|
3
3
|
*
|
|
4
|
-
* Unified handler for persistent work modes: ultrawork,
|
|
4
|
+
* Unified handler for persistent work modes: ascent, ultrawork, olympus, and todo-continuation.
|
|
5
5
|
* This hook intercepts Stop events and enforces work continuation based on:
|
|
6
|
-
* 1. Active
|
|
7
|
-
* 2. Active
|
|
8
|
-
* 3.
|
|
6
|
+
* 1. Active ascent with incomplete promise
|
|
7
|
+
* 2. Active ultrawork mode with pending todos
|
|
8
|
+
* 3. Active olympus mode with pending todos or missing Oracle verification
|
|
9
|
+
* 4. Any pending todos (general enforcement)
|
|
9
10
|
*
|
|
10
|
-
* Priority order: The Ascent > Ultrawork > Todo Continuation
|
|
11
|
+
* Priority order: The Ascent > Ultrawork > Olympus > Todo Continuation
|
|
11
12
|
*/
|
|
12
13
|
export interface PersistentModeResult {
|
|
13
14
|
/** Whether to block the stop event */
|
|
@@ -15,7 +16,7 @@ export interface PersistentModeResult {
|
|
|
15
16
|
/** Message to inject into context */
|
|
16
17
|
message: string;
|
|
17
18
|
/** Which mode triggered the block */
|
|
18
|
-
mode: 'ascent' | 'ultrawork' | 'todo-continuation' | 'none';
|
|
19
|
+
mode: 'ascent' | 'ultrawork' | 'olympus' | 'todo-continuation' | 'none';
|
|
19
20
|
/** Additional metadata */
|
|
20
21
|
metadata?: {
|
|
21
22
|
todoCount?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/persistent-mode/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/persistent-mode/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqCH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,mBAAmB,GAAG,MAAM,CAAC;IACxE,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;AAqYD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAuC/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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Persistent Mode Hook
|
|
3
3
|
*
|
|
4
|
-
* Unified handler for persistent work modes: ultrawork,
|
|
4
|
+
* Unified handler for persistent work modes: ascent, ultrawork, olympus, and todo-continuation.
|
|
5
5
|
* This hook intercepts Stop events and enforces work continuation based on:
|
|
6
|
-
* 1. Active
|
|
7
|
-
* 2. Active
|
|
8
|
-
* 3.
|
|
6
|
+
* 1. Active ascent with incomplete promise
|
|
7
|
+
* 2. Active ultrawork mode with pending todos
|
|
8
|
+
* 3. Active olympus mode with pending todos or missing Oracle verification
|
|
9
|
+
* 4. Any pending todos (general enforcement)
|
|
9
10
|
*
|
|
10
|
-
* Priority order: The Ascent > Ultrawork > Todo Continuation
|
|
11
|
+
* Priority order: The Ascent > Ultrawork > Olympus > Todo Continuation
|
|
11
12
|
*/
|
|
12
13
|
import { existsSync, readFileSync } from 'fs';
|
|
13
14
|
import { join } from 'path';
|
|
@@ -15,6 +16,7 @@ import { homedir } from 'os';
|
|
|
15
16
|
import { readUltraworkState, incrementReinforcement, deactivateUltrawork, getUltraworkPersistenceMessage } from '../ultrawork-state/index.js';
|
|
16
17
|
import { readAscentState, incrementAscentIteration, clearAscentState, detectCompletionPromise } from '../ascent/index.js';
|
|
17
18
|
import { readVerificationState, startVerification, recordOracleFeedback, getOracleVerificationPrompt, getOracleRejectionContinuationPrompt, detectOracleApproval, detectOracleRejection, clearVerificationState } from '../ascent-verifier/index.js';
|
|
19
|
+
import { readOlympusState, incrementReinforcement as incrementOlympusReinforcement, deactivateOlympus, getOlympusPersistenceMessage, recordOracleApproval as recordOlympusOracleApproval } from '../olympus-state/index.js';
|
|
18
20
|
import { checkIncompleteTodos, getNextPendingTodo } from '../todo-continuation/index.js';
|
|
19
21
|
import { TODO_CONTINUATION_PROMPT } from '../../installer/hooks.js';
|
|
20
22
|
/**
|
|
@@ -237,6 +239,88 @@ async function checkUltrawork(sessionId, directory, hasIncompleteTodos) {
|
|
|
237
239
|
}
|
|
238
240
|
};
|
|
239
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Check Olympus state and determine if it should reinforce
|
|
244
|
+
* Similar to ultrawork but with Oracle verification requirement
|
|
245
|
+
*/
|
|
246
|
+
async function checkOlympusMode(sessionId, directory, hasIncompleteTodos) {
|
|
247
|
+
const state = readOlympusState(directory);
|
|
248
|
+
if (!state || !state.active) {
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
// If bound to a session, only reinforce for that session
|
|
252
|
+
if (state.session_id && sessionId && state.session_id !== sessionId) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
// If no incomplete todos AND Oracle has approved, olympus can complete
|
|
256
|
+
if (!hasIncompleteTodos && state.oracle_approved) {
|
|
257
|
+
deactivateOlympus(directory);
|
|
258
|
+
return {
|
|
259
|
+
shouldBlock: false,
|
|
260
|
+
message: `[OLYMPUS COMPLETE] All tasks finished and Oracle verified. Orchestration mode deactivated. Excellent work!`,
|
|
261
|
+
mode: 'none'
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
// If no incomplete todos but Oracle hasn't approved, require verification
|
|
265
|
+
if (!hasIncompleteTodos && !state.oracle_approved && state.requires_oracle_verification) {
|
|
266
|
+
// Check if Oracle has approved in transcript
|
|
267
|
+
if (sessionId && checkOracleApprovalInTranscript(sessionId)) {
|
|
268
|
+
recordOlympusOracleApproval(directory);
|
|
269
|
+
deactivateOlympus(directory);
|
|
270
|
+
return {
|
|
271
|
+
shouldBlock: false,
|
|
272
|
+
message: `[OLYMPUS VERIFIED COMPLETE] Oracle approved. Orchestration mode deactivated. Excellent work!`,
|
|
273
|
+
mode: 'none'
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
// Oracle verification required
|
|
277
|
+
return {
|
|
278
|
+
shouldBlock: true,
|
|
279
|
+
message: `<olympus-verification-required>
|
|
280
|
+
|
|
281
|
+
[OLYMPUS MODE - ORACLE VERIFICATION REQUIRED]
|
|
282
|
+
|
|
283
|
+
All todos appear complete, but Oracle verification is MANDATORY before completion.
|
|
284
|
+
|
|
285
|
+
You MUST spawn Oracle to verify your work:
|
|
286
|
+
|
|
287
|
+
\`\`\`
|
|
288
|
+
Task(subagent_type="oracle", prompt="VERIFY COMPLETION:
|
|
289
|
+
Original task: ${state.original_prompt}
|
|
290
|
+
What I implemented: [list all changes]
|
|
291
|
+
Tests run: [test results]
|
|
292
|
+
Please verify this is truly complete and production-ready.
|
|
293
|
+
Return: APPROVED or REJECTED with reasons.")
|
|
294
|
+
\`\`\`
|
|
295
|
+
|
|
296
|
+
DO NOT stop until Oracle has approved.
|
|
297
|
+
|
|
298
|
+
</olympus-verification-required>
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
`,
|
|
303
|
+
mode: 'olympus',
|
|
304
|
+
metadata: {
|
|
305
|
+
reinforcementCount: state.reinforcement_count
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
// Reinforce olympus mode (todos remain)
|
|
310
|
+
const newState = incrementOlympusReinforcement(directory);
|
|
311
|
+
if (!newState) {
|
|
312
|
+
return null;
|
|
313
|
+
}
|
|
314
|
+
const message = getOlympusPersistenceMessage(newState);
|
|
315
|
+
return {
|
|
316
|
+
shouldBlock: true,
|
|
317
|
+
message,
|
|
318
|
+
mode: 'olympus',
|
|
319
|
+
metadata: {
|
|
320
|
+
reinforcementCount: newState.reinforcement_count
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
}
|
|
240
324
|
/**
|
|
241
325
|
* Check for incomplete todos (baseline enforcement)
|
|
242
326
|
*/
|
|
@@ -288,6 +372,11 @@ export async function checkPersistentModes(sessionId, directory) {
|
|
|
288
372
|
if (ultraworkResult?.shouldBlock) {
|
|
289
373
|
return ultraworkResult;
|
|
290
374
|
}
|
|
375
|
+
// Priority 2.5: Olympus Mode (orchestration mode with Oracle verification)
|
|
376
|
+
const olympusResult = await checkOlympusMode(sessionId, workingDir, hasIncompleteTodos);
|
|
377
|
+
if (olympusResult?.shouldBlock) {
|
|
378
|
+
return olympusResult;
|
|
379
|
+
}
|
|
291
380
|
// Priority 3: Todo Continuation (baseline enforcement)
|
|
292
381
|
if (hasIncompleteTodos) {
|
|
293
382
|
const todoContResult = await checkTodoContinuation(sessionId, workingDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/persistent-mode/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/persistent-mode/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../../src/hooks/registrations/session-start.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../../src/hooks/registrations/session-start.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,wBAAgB,yBAAyB,IAAI,IAAI,CAkFhD"}
|
|
@@ -6,7 +6,33 @@
|
|
|
6
6
|
import { registerHook } from '../registry.js';
|
|
7
7
|
import { readUltraworkState } from '../ultrawork-state/index.js';
|
|
8
8
|
import { checkIncompleteTodos } from '../todo-continuation/index.js';
|
|
9
|
+
import { generateLearnedContext, formatDiscoveries } from '../../learning/hooks/learned-context.js';
|
|
10
|
+
import { getDiscoveriesForInjection } from '../../learning/discovery.js';
|
|
9
11
|
export function registerSessionStartHooks() {
|
|
12
|
+
// Learned Context Injection (earliest priority - adds context before other hooks)
|
|
13
|
+
registerHook({
|
|
14
|
+
name: 'learnedContextInjection',
|
|
15
|
+
event: 'SessionStart',
|
|
16
|
+
priority: 5, // Early priority to add context before other hooks
|
|
17
|
+
handler: (ctx) => {
|
|
18
|
+
if (!ctx.directory) {
|
|
19
|
+
return { continue: true };
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const learnedContext = generateLearnedContext(ctx.directory);
|
|
23
|
+
const discoveries = getDiscoveriesForInjection(ctx.directory, 5);
|
|
24
|
+
const discoveriesContext = formatDiscoveries(discoveries);
|
|
25
|
+
const contextToInject = learnedContext + (discoveriesContext ? '\n\n' + discoveriesContext : '');
|
|
26
|
+
if (contextToInject.trim()) {
|
|
27
|
+
return { continue: true, message: contextToInject };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error('[Olympus Learning]', error);
|
|
32
|
+
}
|
|
33
|
+
return { continue: true };
|
|
34
|
+
}
|
|
35
|
+
});
|
|
10
36
|
// Session Start (restore persistent modes and pending tasks)
|
|
11
37
|
registerHook({
|
|
12
38
|
name: 'sessionStart',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../src/hooks/registrations/session-start.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../src/hooks/registrations/session-start.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAGzE,MAAM,UAAU,yBAAyB;IACvC,kFAAkF;IAClF,YAAY,CAAC;QACX,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,CAAC,EAAE,mDAAmD;QAChE,OAAO,EAAE,CAAC,GAAgB,EAAc,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACnB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC7D,MAAM,WAAW,GAAG,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACjE,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBAE1D,MAAM,eAAe,GAAG,cAAc,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAEjG,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC3B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;gBACtD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;IAEH,6DAA6D;IAC7D,YAAY,CAAC;QACX,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,KAAK,EAAE,GAAgB,EAAuB,EAAE;YACvD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAChC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;YAE9B,mCAAmC;YACnC,MAAM,cAAc,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,cAAc,EAAE,MAAM,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC;;;;4CAIsB,cAAc,CAAC,UAAU;iBACpD,cAAc,CAAC,eAAe;;;;;;;;CAQ9C,CAAC,CAAC;YACG,CAAC;YAED,6BAA6B;YAC7B,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACpE,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC;;;;WAIX,UAAU,CAAC,KAAK;;;;;;;CAO1B,CAAC,CAAC;YACG,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/hooks/registrations/stop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/hooks/registrations/stop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,wBAAgB,iBAAiB,IAAI,IAAI,CA8CxC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { registerHook } from '../registry.js';
|
|
8
8
|
import { checkPersistentModes, createHookOutput } from '../persistent-mode/index.js';
|
|
9
|
+
import { handleCancellationDetection } from '../../learning/hooks/cancellation-detector.js';
|
|
9
10
|
export function registerStopHooks() {
|
|
10
11
|
// Persistent Mode (unified handler for ascent, ultrawork, todos)
|
|
11
12
|
registerHook({
|
|
@@ -24,5 +25,29 @@ export function registerStopHooks() {
|
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
27
|
});
|
|
28
|
+
// Learning: Cancellation Detection (lowest priority - passive capture)
|
|
29
|
+
registerHook({
|
|
30
|
+
name: 'learningCancellationCapture',
|
|
31
|
+
event: 'Stop',
|
|
32
|
+
priority: 100, // Runs last - passive capture
|
|
33
|
+
handler: async (ctx) => {
|
|
34
|
+
if (!ctx.directory) {
|
|
35
|
+
return { continue: true };
|
|
36
|
+
}
|
|
37
|
+
// Fire-and-forget
|
|
38
|
+
Promise.resolve().then(async () => {
|
|
39
|
+
try {
|
|
40
|
+
await handleCancellationDetection({
|
|
41
|
+
directory: ctx.directory,
|
|
42
|
+
sessionId: ctx.sessionId,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('[Olympus Learning]', error);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return { continue: true };
|
|
50
|
+
}
|
|
51
|
+
});
|
|
27
52
|
}
|
|
28
53
|
//# sourceMappingURL=stop.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/hooks/registrations/stop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/hooks/registrations/stop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAG5F,MAAM,UAAU,iBAAiB;IAC/B,iEAAiE;IACjE,YAAY,CAAC;QACX,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,KAAK,EAAE,GAAgB,EAAuB,EAAE;YACvD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAChC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAEjD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAExC,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,uEAAuE;IACvE,YAAY,CAAC;QACX,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,GAAG,EAAE,8BAA8B;QAC7C,OAAO,EAAE,KAAK,EAAE,GAAgB,EAAuB,EAAE;YACvD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACnB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5B,CAAC;YAED,kBAAkB;YAClB,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAChC,IAAI,CAAC;oBACH,MAAM,2BAA2B,CAAC;wBAChC,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;qBACzB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-prompt-submit.d.ts","sourceRoot":"","sources":["../../../src/hooks/registrations/user-prompt-submit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"user-prompt-submit.d.ts","sourceRoot":"","sources":["../../../src/hooks/registrations/user-prompt-submit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoCH,wBAAgB,6BAA6B,IAAI,IAAI,CAyIpD"}
|