@steipete/oracle 0.18.0 → 0.19.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/README.md +1 -1
- package/dist/bin/oracle-cli.js +65 -63
- package/dist/bin/oracle-mcp.js +0 -0
- package/dist/src/browser/actions/archiveConversation.js +31 -7
- package/dist/src/browser/actions/assistantResponse.js +43 -1
- package/dist/src/browser/actions/attachmentContext.js +239 -0
- package/dist/src/browser/actions/attachmentDataTransfer.js +19 -1
- package/dist/src/browser/actions/attachmentEvidence.js +78 -0
- package/dist/src/browser/actions/attachmentProgress.js +41 -0
- package/dist/src/browser/actions/attachmentPrompt.js +130 -0
- package/dist/src/browser/actions/attachments.js +306 -355
- package/dist/src/browser/actions/deepResearch.js +2 -1
- package/dist/src/browser/actions/modelSelection.js +13 -3
- package/dist/src/browser/actions/navigation.js +1 -1
- package/dist/src/browser/actions/promptComposer.js +361 -186
- package/dist/src/browser/actions/remoteFileTransfer.js +4 -2
- package/dist/src/browser/actions/thinkingStatus.js +2 -5
- package/dist/src/browser/actions/thinkingTime.js +119 -16
- package/dist/src/browser/attachRunning.js +46 -2
- package/dist/src/browser/attachmentValidation.js +53 -0
- package/dist/src/browser/cancellation.js +105 -0
- package/dist/src/browser/chatgptImages.js +2 -0
- package/dist/src/browser/chatgptThrottle.js +104 -0
- package/dist/src/browser/chromeLifecycle.js +267 -43
- package/dist/src/browser/config.js +13 -0
- package/dist/src/browser/detect.js +1 -1
- package/dist/src/browser/index.js +444 -261
- package/dist/src/browser/modelDisplay.js +9 -0
- package/dist/src/browser/pageActions.js +2 -2
- package/dist/src/browser/profileState.js +114 -9
- package/dist/src/browser/projectSourcesRunner.js +83 -15
- package/dist/src/browser/prompt.js +272 -113
- package/dist/src/browser/providers/chatgptDomProvider.js +2 -0
- package/dist/src/browser/reattach.js +10 -3
- package/dist/src/browser/sessionRunner.js +71 -11
- package/dist/src/browser/tabLeaseRegistry.js +414 -38
- package/dist/src/browser/utils.js +20 -2
- package/dist/src/cli/browserConfig.js +3 -1
- package/dist/src/cli/browserDefaults.js +10 -0
- package/dist/src/cli/browserTabs.js +12 -29
- package/dist/src/cli/detachedSession.js +69 -0
- package/dist/src/cli/dryRun.js +58 -48
- package/dist/src/cli/harvestIntegrity.js +140 -0
- package/dist/src/cli/serveBrowserConfig.js +24 -0
- package/dist/src/cli/sessionDisplay.js +9 -2
- package/dist/src/cli/sessionRunner.js +91 -7
- package/dist/src/config.js +1 -0
- package/dist/src/gemini-web/client.js +67 -21
- package/dist/src/gemini-web/executor.js +4 -0
- package/dist/src/gemini-web/http.js +15 -0
- package/dist/src/gemini-web/models.js +15 -11
- package/dist/src/mcp/server.js +11 -14
- package/dist/src/mcp/tools/chatgptImage.js +4 -4
- package/dist/src/mcp/tools/consult.js +84 -22
- package/dist/src/mcp/tools/projectSources.js +4 -6
- package/dist/src/mcp/tools/sessionResources.js +1 -1
- package/dist/src/mcp/tools/sessions.js +2 -2
- package/dist/src/mcp/tools/wait.js +182 -0
- package/dist/src/mcp/types.js +7 -0
- package/dist/src/oracle/errors.js +11 -0
- package/dist/src/oracle/providerRoutePlan.js +3 -2
- package/dist/src/remote/client.js +70 -6
- package/dist/src/remote/health.js +6 -2
- package/dist/src/remote/runSlots.js +83 -0
- package/dist/src/remote/server.js +345 -71
- package/dist/src/sessionManager.js +36 -1
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/CodeResources +0 -0
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/MacOS/OracleNotifier +0 -0
- package/package.json +25 -23
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/CodeResources +0 -0
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/MacOS/OracleNotifier +0 -0
- package/dist/bin/oracle.js +0 -683
- package/dist/docs-site/.nojekyll +0 -0
- package/dist/docs-site/CNAME +0 -1
- package/dist/docs-site/RELEASING.html +0 -410
- package/dist/docs-site/agents.html +0 -374
- package/dist/docs-site/anthropic.html +0 -368
- package/dist/docs-site/bridge.html +0 -400
- package/dist/docs-site/browser-mode.html +0 -588
- package/dist/docs-site/chromium-forks.html +0 -347
- package/dist/docs-site/cli-reference.html +0 -346
- package/dist/docs-site/configuration.html +0 -436
- package/dist/docs-site/favicon.svg +0 -14
- package/dist/docs-site/followup.html +0 -368
- package/dist/docs-site/gemini.html +0 -379
- package/dist/docs-site/grok.html +0 -325
- package/dist/docs-site/index.html +0 -360
- package/dist/docs-site/install.html +0 -335
- package/dist/docs-site/linux.html +0 -321
- package/dist/docs-site/llms.txt +0 -43
- package/dist/docs-site/manual-tests.html +0 -595
- package/dist/docs-site/mcp.html +0 -368
- package/dist/docs-site/multimodel.html +0 -364
- package/dist/docs-site/mythical-pro-agents.html +0 -360
- package/dist/docs-site/notifier.html +0 -338
- package/dist/docs-site/openai-endpoints.html +0 -387
- package/dist/docs-site/openrouter.html +0 -344
- package/dist/docs-site/quickstart.html +0 -369
- package/dist/docs-site/refactor/ux.html +0 -532
- package/dist/docs-site/sessions.html +0 -388
- package/dist/docs-site/social-card.png +0 -0
- package/dist/docs-site/social-card.svg +0 -79
- package/dist/docs-site/spec.html +0 -363
- package/dist/docs-site/testing.html +0 -320
- package/dist/docs-site/tui-debug.html +0 -326
- package/dist/docs-site/windows-work.html +0 -323
- package/dist/docs-site/windows.html +0 -320
- 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/types.js +0 -1
- 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/chromeCookies.js +0 -312
- package/dist/src/browser/keytarShim.js +0 -56
- package/dist/src/browser/profileSync.js +0 -141
- package/dist/src/browser/windowsCookies.js +0 -219
|
@@ -3,7 +3,7 @@ import { buildConversationTurnListExpression } from "../conversationTurns.js";
|
|
|
3
3
|
import { delay } from "../utils.js";
|
|
4
4
|
import { isDeepResearchIncompleteText } from "../deepResearchResult.js";
|
|
5
5
|
import { buildClickDispatcher } from "./domEvents.js";
|
|
6
|
-
import { captureAssistantMarkdown, readAssistantSnapshot } from "./assistantResponse.js";
|
|
6
|
+
import { captureAssistantMarkdown, readAssistantSnapshot, throwIfAssistantUiError, } from "./assistantResponse.js";
|
|
7
7
|
import { BrowserAutomationError } from "../../oracle/errors.js";
|
|
8
8
|
/**
|
|
9
9
|
* Activates Deep Research mode through ChatGPT's composer tools menu and
|
|
@@ -248,6 +248,7 @@ export async function waitForDeepResearchCompletion(Runtime, logger, timeoutMs =
|
|
|
248
248
|
*/
|
|
249
249
|
export async function extractDeepResearchResult(Runtime, logger, minTurnIndex) {
|
|
250
250
|
const snapshot = await readAssistantSnapshot(Runtime, minTurnIndex);
|
|
251
|
+
throwIfAssistantUiError(snapshot);
|
|
251
252
|
const meta = {
|
|
252
253
|
turnId: snapshot?.turnId ?? null,
|
|
253
254
|
messageId: snapshot?.messageId ?? null,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { COMPOSER_MODEL_SIGNAL_SELECTOR, MENU_CONTAINER_SELECTOR, MENU_ITEM_SELECTOR, MODEL_BUTTON_SELECTOR, } from "../constants.js";
|
|
2
2
|
import { logDomFailure } from "../domDebug.js";
|
|
3
3
|
import { buildClickDispatcher } from "./domEvents.js";
|
|
4
|
+
import { throwIfThrottled } from "../chatgptThrottle.js";
|
|
4
5
|
import { delay } from "../utils.js";
|
|
5
6
|
const LEGACY_PRO_VERSION_WORD_TOKENS = ["5 4", "5 2", "5 1", "5 0", "gpt 5 pro"];
|
|
6
7
|
const LEGACY_PRO_VERSION_COMPACT_TOKENS = ["gpt54", "gpt52", "gpt51", "gpt50"];
|
|
@@ -55,6 +56,11 @@ export async function ensureModelSelection(Runtime, desiredModel, logger, strate
|
|
|
55
56
|
}
|
|
56
57
|
case "option-not-found": {
|
|
57
58
|
await logDomFailure(Runtime, logger, "model-switcher-option");
|
|
59
|
+
// Check for a rate-limit notice before blaming the model name. The notice
|
|
60
|
+
// is a plain dialog, so its "Got it" button reads as an available option to
|
|
61
|
+
// the menu scrape — which turns "wait a few minutes" into "your model does
|
|
62
|
+
// not exist", and sends the reader after the wrong bug.
|
|
63
|
+
await throwIfThrottled(Runtime, { stage: "model-selection" }, logger);
|
|
58
64
|
const isTemporary = result.hint?.temporaryChat ?? false;
|
|
59
65
|
const available = (result.hint?.availableOptions ?? []).filter(Boolean);
|
|
60
66
|
const availableHint = available.length > 0 ? ` Available: ${available.join(", ")}.` : "";
|
|
@@ -65,6 +71,7 @@ export async function ensureModelSelection(Runtime, desiredModel, logger, strate
|
|
|
65
71
|
}
|
|
66
72
|
default: {
|
|
67
73
|
await logDomFailure(Runtime, logger, "model-switcher-button");
|
|
74
|
+
await throwIfThrottled(Runtime, { stage: "model-selection" }, logger);
|
|
68
75
|
throw new Error("Unable to locate the ChatGPT model selector button. If the desired model is already selected in the browser, retry with --browser-model-strategy current; otherwise retry with --browser-model-strategy ignore to skip model selection.");
|
|
69
76
|
}
|
|
70
77
|
}
|
|
@@ -406,10 +413,10 @@ function buildModelSelectionExpression(targetModel, strategy) {
|
|
|
406
413
|
const ADVANCED_VIEW_SELECTOR = '[data-testid="composer-model-picker-slider-advanced-view"]';
|
|
407
414
|
const INTELLIGENCE_PICKER_SELECTOR = '[data-testid="composer-intelligence-picker-content"]';
|
|
408
415
|
const SUBMENU_OPENER_SELECTOR = '[role="menuitem"][aria-haspopup="menu"]';
|
|
409
|
-
const ADVANCED_WORDS = ['advanced', 'erweitert', '高级', 'avanzado', 'avancado', 'avance'];
|
|
410
|
-
const MODEL_WORDS = ['model', 'modell', '模型', 'modelo', 'modello', 'modele'];
|
|
416
|
+
const ADVANCED_WORDS = ['advanced', 'erweitert', '高级', '고급', 'avanzado', 'avancado', 'avance'];
|
|
417
|
+
const MODEL_WORDS = ['model', 'modell', '模型', '모델', 'modelo', 'modello', 'modele'];
|
|
411
418
|
const EFFORT_WORDS = [
|
|
412
|
-
'effort', 'aufwand', '强度', '努力',
|
|
419
|
+
'effort', 'aufwand', '强度', '努力', '추론 수준',
|
|
413
420
|
'esfuerzo', 'esforco', 'sforzo', 'inspanning', 'wysilek',
|
|
414
421
|
];
|
|
415
422
|
const pickerNodeLabel = (node) => {
|
|
@@ -420,6 +427,7 @@ function buildModelSelectionExpression(targetModel, strategy) {
|
|
|
420
427
|
.toLowerCase()
|
|
421
428
|
.normalize('NFD')
|
|
422
429
|
.replace(/[\u0300-\u036f]/g, '')
|
|
430
|
+
.normalize('NFC')
|
|
423
431
|
.replace(/\\s+/g, ' ')
|
|
424
432
|
.trim();
|
|
425
433
|
} catch {
|
|
@@ -686,6 +694,8 @@ function buildModelSelectionExpression(targetModel, strategy) {
|
|
|
686
694
|
node.getAttribute('data-composer-intelligence-pro-effort-action') === 'true' ||
|
|
687
695
|
Boolean(node.closest('[data-model-picker-thinking-effort-action="true"]')) ||
|
|
688
696
|
Boolean(node.closest('[data-composer-intelligence-pro-effort-action="true"]')) ||
|
|
697
|
+
(isUnifiedPickerMenu(menu) && isSubmenuOpener(node) &&
|
|
698
|
+
containsPickerWord(pickerNodeLabel(node), EFFORT_WORDS)) ||
|
|
689
699
|
isDetachedProEffortMenu(menu));
|
|
690
700
|
const optionIsSelected = (node) => {
|
|
691
701
|
if (!(node instanceof HTMLElement)) {
|
|
@@ -483,7 +483,7 @@ export async function ensurePromptReady(Runtime, timeoutMs, logger) {
|
|
|
483
483
|
throw new Error("Prompt textarea did not appear before timeout");
|
|
484
484
|
}
|
|
485
485
|
}
|
|
486
|
-
function conversationIdFromUrl(value) {
|
|
486
|
+
export function conversationIdFromUrl(value) {
|
|
487
487
|
if (!value)
|
|
488
488
|
return null;
|
|
489
489
|
try {
|