@steipete/oracle 0.9.0 → 0.11.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/LICENSE +1 -1
- package/README.md +107 -49
- package/dist/bin/oracle-cli.js +551 -410
- package/dist/bin/oracle-mcp.js +2 -2
- package/dist/bin/oracle.js +165 -279
- package/dist/scripts/agent-send.js +31 -31
- package/dist/scripts/check.js +6 -6
- package/dist/scripts/debug/extract-chatgpt-response.js +10 -10
- package/dist/scripts/docs-list.js +30 -30
- package/dist/scripts/git-policy.js +25 -23
- package/dist/scripts/run-cli.js +8 -8
- package/dist/scripts/runner.js +203 -195
- package/dist/scripts/test-browser.js +21 -18
- package/dist/scripts/test-remote-chrome.js +20 -20
- package/dist/src/bridge/connection.js +18 -18
- package/dist/src/bridge/userConfigFile.js +7 -7
- package/dist/src/browser/actions/archiveConversation.js +224 -0
- package/dist/src/browser/actions/assistantResponse.js +175 -101
- package/dist/src/browser/actions/attachmentDataTransfer.js +49 -47
- package/dist/src/browser/actions/attachments.js +246 -150
- package/dist/src/browser/actions/deepResearch.js +662 -0
- package/dist/src/browser/actions/domEvents.js +2 -2
- package/dist/src/browser/actions/modelSelection.js +342 -119
- package/dist/src/browser/actions/navigation.js +183 -137
- package/dist/src/browser/actions/projectSources.js +491 -0
- package/dist/src/browser/actions/promptComposer.js +152 -91
- package/dist/src/browser/actions/remoteFileTransfer.js +10 -10
- package/dist/src/browser/actions/thinkingStatus.js +391 -0
- package/dist/src/browser/actions/thinkingTime.js +207 -110
- package/dist/src/browser/artifacts.js +150 -0
- package/dist/src/browser/attachRunning.js +31 -0
- package/dist/src/browser/chatgptImages.js +315 -0
- package/dist/src/browser/chromeLifecycle.js +276 -63
- package/dist/src/browser/config.js +59 -16
- package/dist/src/browser/constants.js +25 -12
- package/dist/src/browser/controlPlan.js +81 -0
- package/dist/src/browser/cookies.js +19 -19
- package/dist/src/browser/detect.js +250 -77
- package/dist/src/browser/domDebug.js +50 -1
- package/dist/src/browser/index.js +1559 -692
- package/dist/src/browser/liveTabs.js +434 -0
- package/dist/src/browser/modelStrategy.js +1 -1
- package/dist/src/browser/pageActions.js +5 -5
- package/dist/src/browser/policies.js +16 -13
- package/dist/src/browser/profileState.js +127 -42
- package/dist/src/browser/projectSourcesRunner.js +366 -0
- package/dist/src/browser/prompt.js +72 -42
- package/dist/src/browser/promptSummary.js +5 -5
- package/dist/src/browser/providerDomFlow.js +1 -1
- package/dist/src/browser/providers/chatgptDomProvider.js +9 -9
- package/dist/src/browser/providers/geminiDeepThinkDomProvider.js +51 -42
- package/dist/src/browser/providers/index.js +2 -2
- package/dist/src/browser/reattach.js +178 -73
- package/dist/src/browser/reattachHelpers.js +32 -27
- package/dist/src/browser/sessionRunner.js +89 -25
- package/dist/src/browser/tabLeaseRegistry.js +182 -0
- package/dist/src/browser/utils.js +9 -9
- package/dist/src/browserMode.js +1 -1
- package/dist/src/cli/bridge/claudeConfig.js +24 -20
- package/dist/src/cli/bridge/client.js +28 -20
- package/dist/src/cli/bridge/codexConfig.js +16 -16
- package/dist/src/cli/bridge/doctor.js +47 -39
- package/dist/src/cli/bridge/host.js +58 -56
- package/dist/src/cli/browserConfig.js +102 -48
- package/dist/src/cli/browserDefaults.js +51 -26
- package/dist/src/cli/browserTabs.js +228 -0
- package/dist/src/cli/bundleWarnings.js +1 -1
- package/dist/src/cli/clipboard.js +11 -2
- package/dist/src/cli/detach.js +2 -2
- package/dist/src/cli/dryRun.js +62 -26
- package/dist/src/cli/duplicatePromptGuard.js +12 -4
- package/dist/src/cli/engine.js +9 -9
- package/dist/src/cli/errorUtils.js +1 -1
- package/dist/src/cli/fileSize.js +3 -3
- package/dist/src/cli/format.js +2 -2
- package/dist/src/cli/help.js +28 -28
- package/dist/src/cli/hiddenAliases.js +3 -3
- package/dist/src/cli/markdownBundle.js +7 -7
- package/dist/src/cli/markdownRenderer.js +15 -15
- package/dist/src/cli/notifier.js +77 -67
- package/dist/src/cli/options.js +131 -106
- package/dist/src/cli/oscUtils.js +1 -1
- package/dist/src/cli/projectSources.js +116 -0
- package/dist/src/cli/promptRequirement.js +2 -2
- package/dist/src/cli/renderOutput.js +1 -1
- package/dist/src/cli/rootAlias.js +1 -1
- package/dist/src/cli/runOptions.js +32 -28
- package/dist/src/cli/sessionCommand.js +82 -21
- package/dist/src/cli/sessionDisplay.js +213 -87
- package/dist/src/cli/sessionLineage.js +6 -2
- package/dist/src/cli/sessionRunner.js +149 -95
- package/dist/src/cli/sessionTable.js +26 -23
- package/dist/src/cli/stdin.js +22 -0
- package/dist/src/cli/tagline.js +121 -124
- package/dist/src/cli/tui/index.js +139 -128
- package/dist/src/cli/writeOutputPath.js +5 -5
- package/dist/src/config.js +7 -7
- package/dist/src/gemini-web/browserSessionManager.js +19 -15
- package/dist/src/gemini-web/client.js +76 -70
- package/dist/src/gemini-web/executionMode.js +6 -8
- package/dist/src/gemini-web/executor.js +98 -93
- package/dist/src/gemini-web/index.js +1 -1
- package/dist/src/mcp/consultPresets.js +19 -0
- package/dist/src/mcp/server.js +18 -12
- package/dist/src/mcp/tools/consult.js +246 -67
- package/dist/src/mcp/tools/projectSources.js +123 -0
- package/dist/src/mcp/tools/sessionResources.js +12 -12
- package/dist/src/mcp/tools/sessions.js +26 -17
- package/dist/src/mcp/types.js +12 -5
- package/dist/src/mcp/utils.js +21 -8
- package/dist/src/oracle/background.js +15 -15
- package/dist/src/oracle/claude.js +53 -25
- package/dist/src/oracle/client.js +50 -41
- package/dist/src/oracle/config.js +96 -66
- package/dist/src/oracle/errors.js +38 -38
- package/dist/src/oracle/files.js +55 -46
- package/dist/src/oracle/finishLine.js +10 -8
- package/dist/src/oracle/format.js +3 -3
- package/dist/src/oracle/gemini.js +37 -33
- package/dist/src/oracle/logging.js +7 -7
- package/dist/src/oracle/markdown.js +28 -28
- package/dist/src/oracle/modelResolver.js +16 -16
- package/dist/src/oracle/multiModelRunner.js +12 -12
- package/dist/src/oracle/oscProgress.js +8 -8
- package/dist/src/oracle/promptAssembly.js +6 -3
- package/dist/src/oracle/request.js +16 -13
- package/dist/src/oracle/run.js +160 -135
- package/dist/src/oracle/runUtils.js +8 -5
- package/dist/src/oracle/tokenEstimate.js +6 -6
- package/dist/src/oracle/tokenStats.js +5 -5
- package/dist/src/oracle/tokenStringifier.js +5 -5
- package/dist/src/oracle.js +12 -12
- package/dist/src/oracleHome.js +3 -3
- package/dist/src/projectSources/plan.js +27 -0
- package/dist/src/projectSources/url.js +23 -0
- package/dist/src/remote/client.js +25 -25
- package/dist/src/remote/health.js +20 -20
- package/dist/src/remote/remoteServiceConfig.js +9 -9
- package/dist/src/remote/server.js +129 -118
- package/dist/src/sessionManager.js +78 -75
- package/dist/src/sessionStore.js +3 -3
- package/dist/src/version.js +10 -10
- package/dist/vendor/oracle-notifier/README.md +2 -0
- package/package.json +67 -62
- package/vendor/oracle-notifier/README.md +2 -0
- package/dist/markdansi/types/index.js +0 -4
- package/dist/oracle/bin/oracle-cli.js +0 -472
- package/dist/oracle/src/browser/actions/assistantResponse.js +0 -471
- package/dist/oracle/src/browser/actions/attachments.js +0 -82
- package/dist/oracle/src/browser/actions/modelSelection.js +0 -190
- package/dist/oracle/src/browser/actions/navigation.js +0 -75
- package/dist/oracle/src/browser/actions/promptComposer.js +0 -167
- package/dist/oracle/src/browser/chromeLifecycle.js +0 -104
- package/dist/oracle/src/browser/config.js +0 -33
- package/dist/oracle/src/browser/constants.js +0 -40
- package/dist/oracle/src/browser/cookies.js +0 -210
- package/dist/oracle/src/browser/domDebug.js +0 -36
- package/dist/oracle/src/browser/index.js +0 -331
- package/dist/oracle/src/browser/pageActions.js +0 -5
- package/dist/oracle/src/browser/prompt.js +0 -88
- package/dist/oracle/src/browser/promptSummary.js +0 -20
- package/dist/oracle/src/browser/sessionRunner.js +0 -80
- package/dist/oracle/src/browser/utils.js +0 -62
- package/dist/oracle/src/browserMode.js +0 -1
- package/dist/oracle/src/cli/browserConfig.js +0 -44
- package/dist/oracle/src/cli/dryRun.js +0 -59
- package/dist/oracle/src/cli/engine.js +0 -17
- package/dist/oracle/src/cli/errorUtils.js +0 -9
- package/dist/oracle/src/cli/help.js +0 -70
- package/dist/oracle/src/cli/markdownRenderer.js +0 -15
- package/dist/oracle/src/cli/options.js +0 -103
- package/dist/oracle/src/cli/promptRequirement.js +0 -14
- package/dist/oracle/src/cli/rootAlias.js +0 -30
- package/dist/oracle/src/cli/sessionCommand.js +0 -77
- package/dist/oracle/src/cli/sessionDisplay.js +0 -270
- package/dist/oracle/src/cli/sessionRunner.js +0 -94
- package/dist/oracle/src/heartbeat.js +0 -43
- package/dist/oracle/src/oracle/client.js +0 -48
- package/dist/oracle/src/oracle/config.js +0 -29
- package/dist/oracle/src/oracle/errors.js +0 -101
- package/dist/oracle/src/oracle/files.js +0 -220
- package/dist/oracle/src/oracle/format.js +0 -33
- package/dist/oracle/src/oracle/fsAdapter.js +0 -7
- package/dist/oracle/src/oracle/oscProgress.js +0 -60
- package/dist/oracle/src/oracle/request.js +0 -48
- package/dist/oracle/src/oracle/run.js +0 -444
- package/dist/oracle/src/oracle/tokenStats.js +0 -39
- package/dist/oracle/src/oracle/types.js +0 -1
- package/dist/oracle/src/oracle.js +0 -9
- package/dist/oracle/src/sessionManager.js +0 -205
- package/dist/oracle/src/version.js +0 -39
- package/dist/scripts/chrome/browser-tools.js +0 -295
- package/dist/src/browser/profileSync.js +0 -141
- /package/dist/{oracle/src/browser → src/projectSources}/types.js +0 -0
|
@@ -1,47 +1,77 @@
|
|
|
1
|
-
import chalk from
|
|
2
|
-
import { usesDefaultStatusFilters } from
|
|
3
|
-
import { attachSession, showStatus } from
|
|
4
|
-
import {
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { usesDefaultStatusFilters } from "./options.js";
|
|
3
|
+
import { attachSession, showStatus, } from "./sessionDisplay.js";
|
|
4
|
+
import { harvestSessionBrowserOutput, liveTailSessionBrowserOutput, } from "./browserTabs.js";
|
|
5
|
+
import { sessionStore } from "../sessionStore.js";
|
|
5
6
|
const defaultDependencies = {
|
|
6
7
|
showStatus,
|
|
7
8
|
attachSession,
|
|
9
|
+
harvestSessionBrowserOutput,
|
|
10
|
+
liveTailSessionBrowserOutput,
|
|
8
11
|
usesDefaultStatusFilters,
|
|
9
12
|
deleteSessionsOlderThan: (options) => sessionStore.deleteOlderThan(options),
|
|
10
13
|
getSessionPaths: (sessionId) => sessionStore.getPaths(sessionId),
|
|
11
14
|
};
|
|
12
|
-
const SESSION_OPTION_KEYS = new Set([
|
|
15
|
+
const SESSION_OPTION_KEYS = new Set([
|
|
16
|
+
"hours",
|
|
17
|
+
"limit",
|
|
18
|
+
"all",
|
|
19
|
+
"clear",
|
|
20
|
+
"clean",
|
|
21
|
+
"render",
|
|
22
|
+
"renderMarkdown",
|
|
23
|
+
"path",
|
|
24
|
+
"model",
|
|
25
|
+
"harvest",
|
|
26
|
+
"live",
|
|
27
|
+
"writeOutput",
|
|
28
|
+
"browserTab",
|
|
29
|
+
]);
|
|
13
30
|
export async function handleSessionCommand(sessionId, command, deps = defaultDependencies) {
|
|
14
31
|
const sessionOptions = command.opts();
|
|
32
|
+
const allOptions = command.optsWithGlobals?.() ?? sessionOptions;
|
|
33
|
+
const writeOutputPath = sessionOptions.writeOutput ??
|
|
34
|
+
sessionOptions.writeOutputPath ??
|
|
35
|
+
allOptions.writeOutput ??
|
|
36
|
+
allOptions.writeOutputPath ??
|
|
37
|
+
command.getOptionValue?.("writeOutput") ??
|
|
38
|
+
command.getOptionValue?.("writeOutputPath");
|
|
39
|
+
const browserTabRef = sessionOptions.browserTab ??
|
|
40
|
+
sessionOptions.browserTabRef ??
|
|
41
|
+
allOptions.browserTab ??
|
|
42
|
+
allOptions.browserTabRef ??
|
|
43
|
+
command.getOptionValue?.("browserTab") ??
|
|
44
|
+
command.getOptionValue?.("browserTabRef");
|
|
15
45
|
if (sessionOptions.verboseRender) {
|
|
16
|
-
process.env.ORACLE_VERBOSE_RENDER =
|
|
46
|
+
process.env.ORACLE_VERBOSE_RENDER = "1";
|
|
17
47
|
}
|
|
18
|
-
const renderSource = command.getOptionValueSource?.(
|
|
19
|
-
const renderMarkdownSource = command.getOptionValueSource?.(
|
|
20
|
-
const renderExplicit = renderSource ===
|
|
48
|
+
const renderSource = command.getOptionValueSource?.("render");
|
|
49
|
+
const renderMarkdownSource = command.getOptionValueSource?.("renderMarkdown");
|
|
50
|
+
const renderExplicit = renderSource === "cli" || renderMarkdownSource === "cli";
|
|
21
51
|
const autoRender = !renderExplicit && process.stdout.isTTY;
|
|
22
52
|
const pathRequested = Boolean(sessionOptions.path);
|
|
23
53
|
const clearRequested = Boolean(sessionOptions.clear || sessionOptions.clean);
|
|
24
54
|
if (clearRequested) {
|
|
25
55
|
if (sessionId) {
|
|
26
|
-
console.error(
|
|
56
|
+
console.error("Cannot combine a session ID with --clear. Remove the ID to delete cached sessions.");
|
|
27
57
|
process.exitCode = 1;
|
|
28
58
|
return;
|
|
29
59
|
}
|
|
30
60
|
const hours = sessionOptions.hours;
|
|
31
61
|
const includeAll = sessionOptions.all;
|
|
32
62
|
const result = await deps.deleteSessionsOlderThan({ hours, includeAll });
|
|
33
|
-
const scope = includeAll ?
|
|
63
|
+
const scope = includeAll ? "all stored sessions" : `sessions older than ${hours}h`;
|
|
34
64
|
console.log(formatSessionCleanupMessage(result, scope));
|
|
35
65
|
return;
|
|
36
66
|
}
|
|
37
|
-
if (sessionId ===
|
|
67
|
+
if (sessionId === "clear" || sessionId === "clean") {
|
|
38
68
|
console.error('Session cleanup now uses --clear. Run "oracle session --clear --hours <n>" instead.');
|
|
39
69
|
process.exitCode = 1;
|
|
40
70
|
return;
|
|
41
71
|
}
|
|
42
72
|
if (pathRequested) {
|
|
43
73
|
if (!sessionId) {
|
|
44
|
-
console.error(
|
|
74
|
+
console.error("The --path flag requires a session ID.");
|
|
45
75
|
process.exitCode = 1;
|
|
46
76
|
return;
|
|
47
77
|
}
|
|
@@ -50,10 +80,10 @@ export async function handleSessionCommand(sessionId, command, deps = defaultDep
|
|
|
50
80
|
const richTty = Boolean(process.stdout.isTTY && chalk.level > 0);
|
|
51
81
|
const label = (text) => (richTty ? chalk.cyan(text) : text);
|
|
52
82
|
const value = (text) => (richTty ? chalk.dim(text) : text);
|
|
53
|
-
console.log(`${label(
|
|
54
|
-
console.log(`${label(
|
|
55
|
-
console.log(`${label(
|
|
56
|
-
console.log(`${label(
|
|
83
|
+
console.log(`${label("Session dir:")} ${value(paths.dir)}`);
|
|
84
|
+
console.log(`${label("Metadata:")} ${value(paths.metadata)}`);
|
|
85
|
+
console.log(`${label("Request:")} ${value(paths.request)}`);
|
|
86
|
+
console.log(`${label("Log:")} ${value(paths.log)}`);
|
|
57
87
|
}
|
|
58
88
|
catch (error) {
|
|
59
89
|
console.error(error instanceof Error ? error.message : String(error));
|
|
@@ -61,6 +91,37 @@ export async function handleSessionCommand(sessionId, command, deps = defaultDep
|
|
|
61
91
|
}
|
|
62
92
|
return;
|
|
63
93
|
}
|
|
94
|
+
const harvestRequested = Boolean(sessionOptions.harvest);
|
|
95
|
+
const liveRequested = Boolean(sessionOptions.live);
|
|
96
|
+
if (harvestRequested && liveRequested) {
|
|
97
|
+
console.error("Cannot combine --harvest and --live. Choose one.");
|
|
98
|
+
process.exitCode = 1;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (writeOutputPath && !harvestRequested && !liveRequested) {
|
|
102
|
+
console.error("The --write-output flag requires --harvest or --live.");
|
|
103
|
+
process.exitCode = 1;
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (harvestRequested || liveRequested) {
|
|
107
|
+
if (!sessionId) {
|
|
108
|
+
console.error(`The ${harvestRequested ? "--harvest" : "--live"} flag requires a session ID.`);
|
|
109
|
+
process.exitCode = 1;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (harvestRequested) {
|
|
113
|
+
await deps.harvestSessionBrowserOutput(sessionId, {
|
|
114
|
+
writeOutputPath,
|
|
115
|
+
browserTabRef,
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
await deps.liveTailSessionBrowserOutput(sessionId, {
|
|
120
|
+
writeOutputPath,
|
|
121
|
+
browserTabRef,
|
|
122
|
+
});
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
64
125
|
if (!sessionId) {
|
|
65
126
|
const showExamples = deps.usesDefaultStatusFilters(command);
|
|
66
127
|
await deps.showStatus({
|
|
@@ -75,7 +136,7 @@ export async function handleSessionCommand(sessionId, command, deps = defaultDep
|
|
|
75
136
|
// Surface any root-level flags that were provided but are ignored when attaching to a session.
|
|
76
137
|
const ignoredFlags = listIgnoredFlags(command);
|
|
77
138
|
if (ignoredFlags.length > 0) {
|
|
78
|
-
console.log(`Ignoring flags on session attach: ${ignoredFlags.join(
|
|
139
|
+
console.log(`Ignoring flags on session attach: ${ignoredFlags.join(", ")}`);
|
|
79
140
|
}
|
|
80
141
|
const renderMarkdown = Boolean(sessionOptions.render || sessionOptions.renderMarkdown || autoRender);
|
|
81
142
|
await deps.attachSession(sessionId, {
|
|
@@ -85,8 +146,8 @@ export async function handleSessionCommand(sessionId, command, deps = defaultDep
|
|
|
85
146
|
});
|
|
86
147
|
}
|
|
87
148
|
export function formatSessionCleanupMessage(result, scope) {
|
|
88
|
-
const deletedLabel = `${result.deleted} ${result.deleted === 1 ?
|
|
89
|
-
const remainingLabel = `${result.remaining} ${result.remaining === 1 ?
|
|
149
|
+
const deletedLabel = `${result.deleted} ${result.deleted === 1 ? "session" : "sessions"}`;
|
|
150
|
+
const remainingLabel = `${result.remaining} ${result.remaining === 1 ? "session" : "sessions"} remain`;
|
|
90
151
|
const hint = 'Run "oracle session --clear --all" to delete everything.';
|
|
91
152
|
return `Deleted ${deletedLabel} (${scope}). ${remainingLabel}.\n${hint}`;
|
|
92
153
|
}
|
|
@@ -98,7 +159,7 @@ function listIgnoredFlags(command) {
|
|
|
98
159
|
continue;
|
|
99
160
|
}
|
|
100
161
|
const source = command.getOptionValueSource?.(key);
|
|
101
|
-
if (source !==
|
|
162
|
+
if (source !== "cli" && source !== "env") {
|
|
102
163
|
continue;
|
|
103
164
|
}
|
|
104
165
|
const value = opts[key];
|