@maximoai/maximo-syntax-cli 0.1.21 → 0.1.23
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 +27 -16
- package/dist/cli.mjs +219 -95
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,6 +63,21 @@ After installation, you can invoke the CLI using any of the following commands:
|
|
|
63
63
|
|
|
64
64
|
All five commands are equivalent and natively supported.
|
|
65
65
|
|
|
66
|
+
## Scrolling (app-managed by default)
|
|
67
|
+
|
|
68
|
+
Interactive sessions use **fullscreen alt-screen scroll** by default (`displayMode:
|
|
69
|
+
auto`), the same approach as Grok Build: an in-app ScrollBox owns the wheel and
|
|
70
|
+
keyboard scroll, sticky follow only while you are pinned to the bottom, and
|
|
71
|
+
streaming output cannot yank the viewport while you read earlier turns.
|
|
72
|
+
|
|
73
|
+
- **Wheel / trackpad** — scroll the conversation; follow pauses automatically.
|
|
74
|
+
- **PgUp / PgDn** — page through the transcript from the prompt.
|
|
75
|
+
- **End / jump-to-bottom pill** — resume follow of new output.
|
|
76
|
+
- **Wheel past the bottom** — also re-enables follow.
|
|
77
|
+
|
|
78
|
+
Prefer native terminal scrollback instead? Set Display mode to `inline` in
|
|
79
|
+
`/config`, or `export MAXIMO_SYNTAX_NO_FLICKER=0`.
|
|
80
|
+
|
|
66
81
|
## Prompt mouse controls
|
|
67
82
|
|
|
68
83
|
The prompt supports terminal-native mouse editing in both inline and
|
|
@@ -78,11 +93,6 @@ fullscreen layouts:
|
|
|
78
93
|
- Click a visible slash-command or file suggestion to accept that row
|
|
79
94
|
immediately. Keyboard navigation remains available.
|
|
80
95
|
|
|
81
|
-
Application-level dispatch is limited to the prompt and suggestion boxes. The
|
|
82
|
-
terminal’s mouse-reporting mode is global while it is enabled, so users who
|
|
83
|
-
need native terminal scrollback selection should use this switch before
|
|
84
|
-
starting Maximo Syntax:
|
|
85
|
-
|
|
86
96
|
```bash
|
|
87
97
|
# Keep the prompt from enabling mouse reporting.
|
|
88
98
|
export MAXIMO_SYNTAX_DISABLE_MOUSE=1
|
|
@@ -122,20 +132,21 @@ then `Q` in VS Code). The pane supports:
|
|
|
122
132
|
- `Ctrl+Up` / `Ctrl+Down` to reorder it.
|
|
123
133
|
- Typing to filter the queue.
|
|
124
134
|
|
|
125
|
-
Open the detailed transcript with `Ctrl+O`.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
135
|
+
Open the detailed transcript with `Ctrl+O`. Scrollback supports mouse-wheel
|
|
136
|
+
and keyboard scrolling, `/` incremental search, `N`/`Shift+N` match navigation,
|
|
137
|
+
text selection and copy, and automatic follow while pinned to the bottom.
|
|
138
|
+
Manual scrolling pauses follow; returning to the bottom resumes it. Press
|
|
139
|
+
`Shift+Up` or click a message to focus it, then use Up/Down or `J`/`K` to move
|
|
140
|
+
between turns, Enter to fold or expand supported rows, `C` to copy, `R` for
|
|
141
|
+
raw view, and Escape to return. Press `[` to dump the complete expanded
|
|
132
142
|
transcript into native terminal scrollback, or `V` to open it in `$VISUAL` or
|
|
133
143
|
`$EDITOR`.
|
|
134
144
|
|
|
135
|
-
`/config` also exposes display mode (auto
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
145
|
+
`/config` also exposes display mode (`auto` = fullscreen scroll by default;
|
|
146
|
+
`inline` = native terminal scrollback; `fullscreen` / `compact` force the
|
|
147
|
+
alt-screen layout), UI density, prompt border style, reduced motion, contextual
|
|
148
|
+
shortcut hints, and response-completion notifications. Notifications can be
|
|
149
|
+
limited to times when the terminal is unfocused.
|
|
139
150
|
|
|
140
151
|
## Skills and cross-CLI compatibility
|
|
141
152
|
|
package/dist/cli.mjs
CHANGED
|
@@ -123670,7 +123670,7 @@ var init_metadata = __esm(() => {
|
|
|
123670
123670
|
isMaximoAiAuth: isMaximoAISubscriber(),
|
|
123671
123671
|
version: "99.0.0",
|
|
123672
123672
|
versionBase: getVersionBase(),
|
|
123673
|
-
buildTime: "2026-08-
|
|
123673
|
+
buildTime: "2026-08-03T12:06:47.158Z",
|
|
123674
123674
|
deploymentEnvironment: env3.detectDeploymentEnvironment(),
|
|
123675
123675
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
123676
123676
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -130044,13 +130044,13 @@ function isFullscreenEnvEnabled() {
|
|
|
130044
130044
|
if (isTmuxControlMode()) {
|
|
130045
130045
|
if (!loggedTmuxCcDisable) {
|
|
130046
130046
|
loggedTmuxCcDisable = true;
|
|
130047
|
-
logForDebugging2("fullscreen disabled: tmux -CC (iTerm2 integration mode) detected · set MAXIMO_SYNTAX_NO_FLICKER=1 to override");
|
|
130047
|
+
logForDebugging2("fullscreen disabled: tmux -CC (iTerm2 integration mode) detected · set displayMode=fullscreen or MAXIMO_SYNTAX_NO_FLICKER=1 to override");
|
|
130048
130048
|
}
|
|
130049
130049
|
return false;
|
|
130050
130050
|
}
|
|
130051
130051
|
if (displayMode === "fullscreen" || displayMode === "compact")
|
|
130052
130052
|
return true;
|
|
130053
|
-
return
|
|
130053
|
+
return true;
|
|
130054
130054
|
}
|
|
130055
130055
|
function isMouseTrackingEnabled() {
|
|
130056
130056
|
return !isEnvTruthy(process.env.MAXIMO_SYNTAX_DISABLE_MOUSE);
|
|
@@ -131101,6 +131101,16 @@ var init_terminal_focus_event = __esm(() => {
|
|
|
131101
131101
|
};
|
|
131102
131102
|
});
|
|
131103
131103
|
|
|
131104
|
+
// src/ink/prompt-mouse.ts
|
|
131105
|
+
function toPromptFrameRow(terminalRow, mainScreenRowOffset, altScreen) {
|
|
131106
|
+
return terminalRow - 1 - (altScreen ? 0 : mainScreenRowOffset ?? 0);
|
|
131107
|
+
}
|
|
131108
|
+
function shouldSuspendPromptMouseForNativeScroll(keyName2, altScreenActive) {
|
|
131109
|
+
if (altScreenActive)
|
|
131110
|
+
return false;
|
|
131111
|
+
return keyName2 === "wheelup" || keyName2 === "wheeldown";
|
|
131112
|
+
}
|
|
131113
|
+
|
|
131104
131114
|
// node_modules/scheduler/cjs/scheduler.production.js
|
|
131105
131115
|
var exports_scheduler_production = {};
|
|
131106
131116
|
__export(exports_scheduler_production, {
|
|
@@ -144888,6 +144898,9 @@ function processKeysInBatch(app, items, _unused1, _unused2) {
|
|
|
144888
144898
|
handleMouseEvent(app, item);
|
|
144889
144899
|
continue;
|
|
144890
144900
|
}
|
|
144901
|
+
if (app.props.isAltScreenActive && shouldSuspendPromptMouseForNativeScroll(item.name, app.props.isAltScreenActive())) {
|
|
144902
|
+
app.props.onSuspendPromptMouseForScroll?.();
|
|
144903
|
+
}
|
|
144891
144904
|
const sequence = item.sequence;
|
|
144892
144905
|
if (sequence === FOCUS_IN) {
|
|
144893
144906
|
app.handleTerminalFocus(true);
|
|
@@ -147417,27 +147430,18 @@ function drainAdaptive(node, pending, innerHeight) {
|
|
|
147417
147430
|
const step = abs <= SCROLL_INSTANT_THRESHOLD ? abs : abs < SCROLL_HIGH_PENDING ? SCROLL_STEP_MED : SCROLL_STEP_HIGH;
|
|
147418
147431
|
applied += sign * step;
|
|
147419
147432
|
const rem = abs - step;
|
|
147420
|
-
const
|
|
147433
|
+
const frameCap = Math.max(1, Math.min(innerHeight - 1, Math.floor(innerHeight / SCROLL_MAX_STEP_FRACTION)));
|
|
147421
147434
|
const totalAbs = Math.abs(applied);
|
|
147422
|
-
if (totalAbs >
|
|
147423
|
-
const excess = totalAbs -
|
|
147435
|
+
if (totalAbs > frameCap) {
|
|
147436
|
+
const excess = totalAbs - frameCap;
|
|
147424
147437
|
node.pendingScrollDelta = sign * (rem + excess);
|
|
147425
|
-
return sign *
|
|
147438
|
+
return sign * frameCap;
|
|
147426
147439
|
}
|
|
147427
147440
|
node.pendingScrollDelta = rem > 0 ? sign * rem : undefined;
|
|
147428
147441
|
return applied;
|
|
147429
147442
|
}
|
|
147430
147443
|
function drainProportional(node, pending, innerHeight) {
|
|
147431
|
-
|
|
147432
|
-
const cap = Math.max(1, innerHeight - 1);
|
|
147433
|
-
const step = Math.min(cap, Math.max(SCROLL_MIN_PER_FRAME, abs * 3 >> 2));
|
|
147434
|
-
if (abs <= step) {
|
|
147435
|
-
node.pendingScrollDelta = undefined;
|
|
147436
|
-
return pending;
|
|
147437
|
-
}
|
|
147438
|
-
const applied = pending > 0 ? step : -step;
|
|
147439
|
-
node.pendingScrollDelta = pending - applied;
|
|
147440
|
-
return applied;
|
|
147444
|
+
return drainAdaptive(node, pending, innerHeight);
|
|
147441
147445
|
}
|
|
147442
147446
|
function wrapWithOsc8Link(text, url3) {
|
|
147443
147447
|
return `${OSC3}8;;${url3}${BEL3}${text}${OSC3}8;;${BEL3}`;
|
|
@@ -147718,8 +147722,6 @@ function renderNodeToOutput(node, output, {
|
|
|
147718
147722
|
const content = node.childNodes.find((c5) => isElementNode(c5) && c5.yogaNode !== undefined);
|
|
147719
147723
|
const contentYoga = content?.yogaNode;
|
|
147720
147724
|
const scrollHeight = contentYoga?.getComputedHeight() ?? 0;
|
|
147721
|
-
const prevScrollHeight = node.scrollHeight ?? scrollHeight;
|
|
147722
|
-
const prevInnerHeight = node.scrollViewportHeight ?? innerHeight;
|
|
147723
147725
|
node.scrollHeight = scrollHeight;
|
|
147724
147726
|
node.scrollViewportHeight = innerHeight;
|
|
147725
147727
|
node.scrollViewportTop = (y1 ?? y2) + padTop;
|
|
@@ -147734,15 +147736,9 @@ function renderNodeToOutput(node, output, {
|
|
|
147734
147736
|
}
|
|
147735
147737
|
const scrollTopBeforeFollow = node.scrollTop ?? 0;
|
|
147736
147738
|
const sticky = node.stickyScroll ?? Boolean(node.attributes["stickyScroll"]);
|
|
147737
|
-
|
|
147738
|
-
const grew = scrollHeight >= prevScrollHeight;
|
|
147739
|
-
const atBottom = sticky || grew && scrollTopBeforeFollow >= prevMaxScroll;
|
|
147740
|
-
if (atBottom && (node.pendingScrollDelta ?? 0) >= 0) {
|
|
147739
|
+
if (sticky && (node.pendingScrollDelta ?? 0) >= 0) {
|
|
147741
147740
|
node.scrollTop = maxScroll;
|
|
147742
147741
|
node.pendingScrollDelta = undefined;
|
|
147743
|
-
if (node.stickyScroll === false && scrollTopBeforeFollow >= prevMaxScroll) {
|
|
147744
|
-
node.stickyScroll = true;
|
|
147745
|
-
}
|
|
147746
147742
|
}
|
|
147747
147743
|
const followDelta = (node.scrollTop ?? 0) - scrollTopBeforeFollow;
|
|
147748
147744
|
if (followDelta > 0) {
|
|
@@ -147760,7 +147756,7 @@ function renderNodeToOutput(node, output, {
|
|
|
147760
147756
|
const haveClamp = cMin !== undefined && cMax !== undefined;
|
|
147761
147757
|
if (pending !== undefined && pending !== 0) {
|
|
147762
147758
|
const pastClamp = haveClamp && (pending < 0 && cur < cMin || pending > 0 && cur > cMax);
|
|
147763
|
-
const eff = pastClamp ? Math.min(
|
|
147759
|
+
const eff = pastClamp ? Math.max(8, Math.min(16, innerHeight >> 2)) : innerHeight;
|
|
147764
147760
|
cur += isXtermJsHost() ? drainAdaptive(node, pending, eff) : drainProportional(node, pending, eff);
|
|
147765
147761
|
} else if (pending === 0) {
|
|
147766
147762
|
node.pendingScrollDelta = undefined;
|
|
@@ -148082,7 +148078,7 @@ function dropSubtreeCache(node) {
|
|
|
148082
148078
|
}
|
|
148083
148079
|
}
|
|
148084
148080
|
}
|
|
148085
|
-
var layoutShifted = false, scrollHint = null, absoluteRectsPrev, absoluteRectsCur, scrollDrainNode = null, followScroll = null,
|
|
148081
|
+
var layoutShifted = false, scrollHint = null, absoluteRectsPrev, absoluteRectsCur, scrollDrainNode = null, followScroll = null, SCROLL_INSTANT_THRESHOLD = 3, SCROLL_STEP_MED = 2, SCROLL_STEP_HIGH = 4, SCROLL_HIGH_PENDING = 16, SCROLL_MAX_PENDING = 48, SCROLL_MAX_STEP_FRACTION = 4, OSC3 = "\x1B]", BEL3 = "\x07", render_node_to_output_default;
|
|
148086
148082
|
var init_render_node_to_output = __esm(() => {
|
|
148087
148083
|
init_colorize();
|
|
148088
148084
|
init_get_max_width();
|
|
@@ -148356,11 +148352,6 @@ var init_useTerminalNotification = __esm(() => {
|
|
|
148356
148352
|
TerminalWriteProvider = TerminalWriteContext.Provider;
|
|
148357
148353
|
});
|
|
148358
148354
|
|
|
148359
|
-
// src/ink/prompt-mouse.ts
|
|
148360
|
-
function toPromptFrameRow(terminalRow, mainScreenRowOffset, altScreen) {
|
|
148361
|
-
return terminalRow - 1 - (altScreen ? 0 : mainScreenRowOffset ?? 0);
|
|
148362
|
-
}
|
|
148363
|
-
|
|
148364
148355
|
// src/ink/ink.tsx
|
|
148365
148356
|
import { closeSync as closeSync3, constants as fsConstants, openSync as openSync3, readSync as readSync2, writeSync } from "fs";
|
|
148366
148357
|
import { format as format3 } from "util";
|
|
@@ -148414,6 +148405,9 @@ class Ink {
|
|
|
148414
148405
|
promptMouseTargets = new Map;
|
|
148415
148406
|
promptMouseTarget = null;
|
|
148416
148407
|
promptMouseTracking = false;
|
|
148408
|
+
promptMouseTrackingSuspendedForScroll = false;
|
|
148409
|
+
promptMouseScrollResumeTimer = null;
|
|
148410
|
+
static PROMPT_MOUSE_SCROLL_RESUME_MS = 1500;
|
|
148417
148411
|
prevFrameContaminated = false;
|
|
148418
148412
|
needsEraseBeforePaint = false;
|
|
148419
148413
|
cursorDeclaration = null;
|
|
@@ -148527,7 +148521,7 @@ class Ink {
|
|
|
148527
148521
|
this.log.reset();
|
|
148528
148522
|
this.displayCursor = null;
|
|
148529
148523
|
this.invalidatePromptMouseCalibration();
|
|
148530
|
-
if (this.promptMouseTracking) {
|
|
148524
|
+
if (this.promptMouseTracking && !this.promptMouseTrackingSuspendedForScroll) {
|
|
148531
148525
|
this.options.stdout.write(ENABLE_MOUSE_PROMPT_TRACKING);
|
|
148532
148526
|
}
|
|
148533
148527
|
};
|
|
@@ -148547,7 +148541,7 @@ class Ink {
|
|
|
148547
148541
|
this.resetFramesForAltScreen();
|
|
148548
148542
|
this.needsEraseBeforePaint = true;
|
|
148549
148543
|
}
|
|
148550
|
-
if (!this.altScreenActive && !this.isPaused && this.options.stdout.isTTY && this.promptMouseTracking) {
|
|
148544
|
+
if (!this.altScreenActive && !this.isPaused && this.options.stdout.isTTY && this.promptMouseTracking && !this.promptMouseTrackingSuspendedForScroll) {
|
|
148551
148545
|
this.options.stdout.write(ENABLE_MOUSE_PROMPT_TRACKING);
|
|
148552
148546
|
}
|
|
148553
148547
|
if (this.currentNode !== null) {
|
|
@@ -148687,7 +148681,8 @@ class Ink {
|
|
|
148687
148681
|
}
|
|
148688
148682
|
optimized.push(this.altScreenParkPatch);
|
|
148689
148683
|
}
|
|
148690
|
-
const
|
|
148684
|
+
const suppressMainScreenCursorPark = !this.altScreenActive && this.promptMouseTrackingSuspendedForScroll;
|
|
148685
|
+
const decl = suppressMainScreenCursorPark ? null : this.cursorDeclaration;
|
|
148691
148686
|
const rect = decl !== null ? nodeCache.get(decl.node) : undefined;
|
|
148692
148687
|
const target = decl !== null && rect !== undefined ? {
|
|
148693
148688
|
x: rect.x + decl.relativeX,
|
|
@@ -148760,10 +148755,10 @@ class Ink {
|
|
|
148760
148755
|
}
|
|
148761
148756
|
const tWrite = performance.now();
|
|
148762
148757
|
writeDiffToTerminal(this.terminal, optimized, this.altScreenActive && !SYNC_OUTPUT_SUPPORTED);
|
|
148763
|
-
if (this.promptMouseTracking && !this.altScreenActive && !this.isPaused && this.options.stdout.isTTY) {
|
|
148758
|
+
if (this.promptMouseTracking && !this.promptMouseTrackingSuspendedForScroll && !this.altScreenActive && !this.isPaused && this.options.stdout.isTTY) {
|
|
148764
148759
|
this.options.stdout.write(ENABLE_MOUSE_PROMPT_TRACKING);
|
|
148765
148760
|
}
|
|
148766
|
-
if (target !== null && this.promptMouseTracking && !this.altScreenActive && !this.isPaused && this.options.stdout.isTTY && this.pendingCursorCalibrationY === null && (this.promptMouseRowOffset === null || this.lastCalibratedCursorY !== target.y || this.lastCalibratedFrameCursorY !== frame.cursor.y)) {
|
|
148761
|
+
if (target !== null && this.promptMouseTracking && !this.promptMouseTrackingSuspendedForScroll && !this.altScreenActive && !this.isPaused && this.options.stdout.isTTY && this.pendingCursorCalibrationY === null && (this.promptMouseRowOffset === null || this.lastCalibratedCursorY !== target.y || this.lastCalibratedFrameCursorY !== frame.cursor.y)) {
|
|
148767
148762
|
this.pendingCursorCalibrationY = target.y;
|
|
148768
148763
|
this.pendingCalibrationFrameCursorY = frame.cursor.y;
|
|
148769
148764
|
this.options.stdout.write(REQUEST_CURSOR_POSITION);
|
|
@@ -148839,6 +148834,11 @@ class Ink {
|
|
|
148839
148834
|
this.altScreenActive = active;
|
|
148840
148835
|
this.altScreenMouseTracking = active && mouseTracking;
|
|
148841
148836
|
if (active) {
|
|
148837
|
+
if (this.promptMouseScrollResumeTimer) {
|
|
148838
|
+
clearTimeout(this.promptMouseScrollResumeTimer);
|
|
148839
|
+
this.promptMouseScrollResumeTimer = null;
|
|
148840
|
+
}
|
|
148841
|
+
this.promptMouseTrackingSuspendedForScroll = false;
|
|
148842
148842
|
this.resetFramesForAltScreen();
|
|
148843
148843
|
} else {
|
|
148844
148844
|
this.repaint();
|
|
@@ -148856,7 +148856,7 @@ class Ink {
|
|
|
148856
148856
|
this.options.stdout.write(DISABLE_KITTY_KEYBOARD + ENABLE_KITTY_KEYBOARD + ENABLE_MODIFY_OTHER_KEYS);
|
|
148857
148857
|
}
|
|
148858
148858
|
if (!this.altScreenActive) {
|
|
148859
|
-
if (this.promptMouseTracking) {
|
|
148859
|
+
if (this.promptMouseTracking && !this.promptMouseTrackingSuspendedForScroll) {
|
|
148860
148860
|
this.options.stdout.write(ENABLE_MOUSE_PROMPT_TRACKING);
|
|
148861
148861
|
}
|
|
148862
148862
|
return;
|
|
@@ -148908,11 +148908,38 @@ class Ink {
|
|
|
148908
148908
|
if (!this.options.stdout.isTTY || this.isPaused || this.altScreenActive) {
|
|
148909
148909
|
return;
|
|
148910
148910
|
}
|
|
148911
|
+
if (enabled && this.promptMouseTrackingSuspendedForScroll) {
|
|
148912
|
+
return;
|
|
148913
|
+
}
|
|
148911
148914
|
this.options.stdout.write(enabled ? ENABLE_MOUSE_PROMPT_TRACKING : DISABLE_MOUSE_PROMPT_TRACKING);
|
|
148912
148915
|
}
|
|
148916
|
+
suspendPromptMouseForNativeScroll = () => {
|
|
148917
|
+
if (this.altScreenActive)
|
|
148918
|
+
return;
|
|
148919
|
+
this.promptMouseTrackingSuspendedForScroll = true;
|
|
148920
|
+
if (this.promptMouseScrollResumeTimer) {
|
|
148921
|
+
clearTimeout(this.promptMouseScrollResumeTimer);
|
|
148922
|
+
}
|
|
148923
|
+
this.promptMouseScrollResumeTimer = setTimeout(() => {
|
|
148924
|
+
this.promptMouseScrollResumeTimer = null;
|
|
148925
|
+
this.resumePromptMouseAfterScroll();
|
|
148926
|
+
}, Ink.PROMPT_MOUSE_SCROLL_RESUME_MS);
|
|
148927
|
+
if (this.promptMouseTracking && this.options.stdout.isTTY && !this.isPaused) {
|
|
148928
|
+
this.options.stdout.write(DISABLE_MOUSE_PROMPT_TRACKING);
|
|
148929
|
+
}
|
|
148930
|
+
};
|
|
148931
|
+
resumePromptMouseAfterScroll() {
|
|
148932
|
+
if (!this.promptMouseTrackingSuspendedForScroll)
|
|
148933
|
+
return;
|
|
148934
|
+
this.promptMouseTrackingSuspendedForScroll = false;
|
|
148935
|
+
if (this.promptMouseTracking && this.options.stdout.isTTY && !this.isPaused && !this.altScreenActive) {
|
|
148936
|
+
this.options.stdout.write(ENABLE_MOUSE_PROMPT_TRACKING);
|
|
148937
|
+
}
|
|
148938
|
+
}
|
|
148913
148939
|
dispatchPromptMouse(m) {
|
|
148914
|
-
if (!this.promptMouseTracking || isMouseClicksDisabled())
|
|
148940
|
+
if (!this.promptMouseTracking || this.promptMouseTrackingSuspendedForScroll || isMouseClicksDisabled()) {
|
|
148915
148941
|
return false;
|
|
148942
|
+
}
|
|
148916
148943
|
const col = m.col - 1;
|
|
148917
148944
|
const row = toPromptFrameRow(m.row, this.promptMouseRowOffset, this.altScreenActive);
|
|
148918
148945
|
const baseButton = m.button & 3;
|
|
@@ -149298,6 +149325,7 @@ class Ink {
|
|
|
149298
149325
|
onStdinResume: this.reassertTerminalModes,
|
|
149299
149326
|
onPromptMouse: this.dispatchPromptMouse,
|
|
149300
149327
|
isAltScreenActive: () => this.altScreenActive,
|
|
149328
|
+
onSuspendPromptMouseForScroll: this.suspendPromptMouseForNativeScroll,
|
|
149301
149329
|
onCursorDeclaration: this.setCursorDeclaration,
|
|
149302
149330
|
onCursorPosition: this.handleCursorPosition,
|
|
149303
149331
|
dispatchKeyboardEvent: this.dispatchKeyboardEvent,
|
|
@@ -149343,6 +149371,10 @@ class Ink {
|
|
|
149343
149371
|
clearTimeout(this.drainTimer);
|
|
149344
149372
|
this.drainTimer = null;
|
|
149345
149373
|
}
|
|
149374
|
+
if (this.promptMouseScrollResumeTimer !== null) {
|
|
149375
|
+
clearTimeout(this.promptMouseScrollResumeTimer);
|
|
149376
|
+
this.promptMouseScrollResumeTimer = null;
|
|
149377
|
+
}
|
|
149346
149378
|
reconciler_default.updateContainerSync(null, this.container, null, noop_default);
|
|
149347
149379
|
reconciler_default.flushSyncWork();
|
|
149348
149380
|
instances_default.delete(this.options.stdout);
|
|
@@ -276381,7 +276413,7 @@ import { access as access3, writeFile as writeFile13 } from "fs/promises";
|
|
|
276381
276413
|
import { homedir as homedir22 } from "os";
|
|
276382
276414
|
import { join as join65 } from "path";
|
|
276383
276415
|
function getCurrentRealVersion() {
|
|
276384
|
-
return "0.1.
|
|
276416
|
+
return "0.1.23";
|
|
276385
276417
|
}
|
|
276386
276418
|
async function getRolloutConfig() {
|
|
276387
276419
|
try {
|
|
@@ -280832,7 +280864,7 @@ var init_detection = __esm(() => {
|
|
|
280832
280864
|
});
|
|
280833
280865
|
|
|
280834
280866
|
// src/entrypoints/sdk/coreSchemas.ts
|
|
280835
|
-
var ModelUsageSchema, OutputFormatTypeSchema, BaseOutputFormatSchema, JsonSchemaOutputFormatSchema, OutputFormatSchema, ApiKeySourceSchema, ConfigScopeSchema2, SdkBetaSchema, ThinkingAdaptiveSchema, ThinkingEnabledSchema, ThinkingDisabledSchema, ThinkingConfigSchema, McpStdioServerConfigSchema2, McpSSEServerConfigSchema2, McpHttpServerConfigSchema, McpSdkServerConfigSchema2, McpServerConfigForProcessTransportSchema, McpMaximoAIProxyServerConfigSchema2, McpServerStatusConfigSchema, McpServerStatusSchema, McpSetServersResultSchema, PermissionUpdateDestinationSchema, PermissionBehaviorSchema, PermissionRuleValueSchema, PermissionUpdateSchema, PermissionDecisionClassificationSchema, PermissionResultSchema, PermissionModeSchema, HOOK_EVENTS2, HookEventSchema, BaseHookInputSchema, PreToolUseHookInputSchema, PermissionRequestHookInputSchema, PostToolUseHookInputSchema, PostToolUseFailureHookInputSchema, PermissionDeniedHookInputSchema, NotificationHookInputSchema, UserPromptSubmitHookInputSchema, SessionStartHookInputSchema, SetupHookInputSchema, StopHookInputSchema, StopFailureHookInputSchema, SubagentStartHookInputSchema, SubagentStopHookInputSchema, PreCompactHookInputSchema, PostCompactHookInputSchema, TeammateIdleHookInputSchema, TaskCreatedHookInputSchema, TaskCompletedHookInputSchema, ElicitationHookInputSchema, ElicitationResultHookInputSchema, CONFIG_CHANGE_SOURCES, ConfigChangeHookInputSchema, INSTRUCTIONS_LOAD_REASONS, INSTRUCTIONS_MEMORY_TYPES, InstructionsLoadedHookInputSchema, WorktreeCreateHookInputSchema, WorktreeRemoveHookInputSchema, CwdChangedHookInputSchema, FileChangedHookInputSchema, EXIT_REASONS, ExitReasonSchema, SessionEndHookInputSchema, HookInputSchema, AsyncHookJSONOutputSchema, PreToolUseHookSpecificOutputSchema, UserPromptSubmitHookSpecificOutputSchema, SessionStartHookSpecificOutputSchema, SetupHookSpecificOutputSchema, SubagentStartHookSpecificOutputSchema, PostToolUseHookSpecificOutputSchema, PostToolUseFailureHookSpecificOutputSchema, PermissionDeniedHookSpecificOutputSchema, NotificationHookSpecificOutputSchema, PermissionRequestHookSpecificOutputSchema, CwdChangedHookSpecificOutputSchema, FileChangedHookSpecificOutputSchema, SyncHookJSONOutputSchema, ElicitationHookSpecificOutputSchema, ElicitationResultHookSpecificOutputSchema, WorktreeCreateHookSpecificOutputSchema, HookJSONOutputSchema, PromptRequestOptionSchema, PromptRequestSchema, PromptResponseSchema, SlashCommandSchema, AgentInfoSchema, ModelInfoSchema, AccountInfoSchema, AgentMcpServerSpecSchema2, AgentDefinitionSchema, SettingSourceSchema, SdkPluginConfigSchema, RewindFilesResultSchema, APIUserMessagePlaceholder, APIAssistantMessagePlaceholder, RawMessageStreamEventPlaceholder, UUIDPlaceholder, NonNullableUsagePlaceholder, SDKAssistantMessageErrorSchema, SDKStatusSchema, SDKUserMessageContentSchema, SDKUserMessageSchema, SDKUserMessageReplaySchema, SDKRateLimitInfoSchema, SDKAssistantMessageSchema, SDKRateLimitEventSchema, SDKStreamlinedTextMessageSchema, SDKStreamlinedToolUseSummaryMessageSchema, SDKPermissionDenialSchema, SDKResultSuccessSchema, SDKResultErrorSchema, SDKResultMessageSchema, SDKSystemMessageSchema, SDKPartialAssistantMessageSchema, SDKCompactBoundaryMessageSchema, SDKStatusMessageSchema, SDKPostTurnSummaryMessageSchema, SDKAPIRetryMessageSchema, SDKLocalCommandOutputMessageSchema, SDKHookStartedMessageSchema, SDKHookProgressMessageSchema, SDKHookResponseMessageSchema, SDKToolProgressMessageSchema, SDKAuthStatusMessageSchema, SDKFilesPersistedEventSchema, SDKTaskNotificationMessageSchema, SDKTaskStartedMessageSchema, SDKSessionStateChangedMessageSchema, SDKTaskProgressMessageSchema, SDKToolUseSummaryMessageSchema, SDKElicitationCompleteMessageSchema, SDKPromptSuggestionMessageSchema, SDKSessionInfoSchema, SDKMessageSchema, FastModeStateSchema;
|
|
280867
|
+
var ModelUsageSchema, OutputFormatTypeSchema, BaseOutputFormatSchema, JsonSchemaOutputFormatSchema, OutputFormatSchema, ApiKeySourceSchema, ConfigScopeSchema2, SdkBetaSchema, ThinkingAdaptiveSchema, ThinkingEnabledSchema, ThinkingDisabledSchema, ThinkingConfigSchema, McpStdioServerConfigSchema2, McpSSEServerConfigSchema2, McpHttpServerConfigSchema, McpSdkServerConfigSchema2, McpServerConfigForProcessTransportSchema, McpMaximoAIProxyServerConfigSchema2, McpServerStatusConfigSchema, McpServerStatusSchema, McpSetServersResultSchema, PermissionUpdateDestinationSchema, PermissionBehaviorSchema, PermissionRuleValueSchema, PermissionUpdateSchema, PermissionDecisionClassificationSchema, PermissionResultSchema, PermissionModeSchema, HOOK_EVENTS2, HookEventSchema, BaseHookInputSchema, PreToolUseHookInputSchema, PermissionRequestHookInputSchema, PostToolUseHookInputSchema, PostToolUseFailureHookInputSchema, PermissionDeniedHookInputSchema, NotificationHookInputSchema, UserPromptSubmitHookInputSchema, SessionStartHookInputSchema, SetupHookInputSchema, StopHookInputSchema, StopFailureHookInputSchema, SubagentStartHookInputSchema, SubagentStopHookInputSchema, PreCompactHookInputSchema, PostCompactHookInputSchema, TeammateIdleHookInputSchema, TaskCreatedHookInputSchema, TaskCompletedHookInputSchema, ElicitationHookInputSchema, ElicitationResultHookInputSchema, CONFIG_CHANGE_SOURCES, ConfigChangeHookInputSchema, INSTRUCTIONS_LOAD_REASONS, INSTRUCTIONS_MEMORY_TYPES, InstructionsLoadedHookInputSchema, WorktreeCreateHookInputSchema, WorktreeRemoveHookInputSchema, CwdChangedHookInputSchema, FileChangedHookInputSchema, EXIT_REASONS, ExitReasonSchema, SessionEndHookInputSchema, HookInputSchema, AsyncHookJSONOutputSchema, PreToolUseHookSpecificOutputSchema, UserPromptSubmitHookSpecificOutputSchema, SessionStartHookSpecificOutputSchema, SetupHookSpecificOutputSchema, SubagentStartHookSpecificOutputSchema, PostToolUseHookSpecificOutputSchema, PostToolUseFailureHookSpecificOutputSchema, PermissionDeniedHookSpecificOutputSchema, NotificationHookSpecificOutputSchema, PermissionRequestHookSpecificOutputSchema, CwdChangedHookSpecificOutputSchema, FileChangedHookSpecificOutputSchema, SyncHookJSONOutputSchema, ElicitationHookSpecificOutputSchema, ElicitationResultHookSpecificOutputSchema, WorktreeCreateHookSpecificOutputSchema, HookJSONOutputSchema, PromptRequestOptionSchema, PromptRequestSchema, PromptResponseSchema, SlashCommandSchema, AgentInfoSchema, ModelInfoSchema, AccountInfoSchema, AgentMcpServerSpecSchema2, AgentDefinitionSchema, SettingSourceSchema, SdkPluginConfigSchema, RewindFilesResultSchema, APIUserMessagePlaceholder, APIAssistantMessagePlaceholder, RawMessageStreamEventPlaceholder, UUIDPlaceholder, NonNullableUsagePlaceholder, SDKAssistantMessageErrorSchema, SDKStatusSchema, SDKUserMessageContentSchema, SDKUserMessageSchema, SDKUserMessageReplaySchema, SDKRateLimitInfoSchema, SDKAssistantMessageSchema, SDKRateLimitEventSchema, SDKStreamlinedTextMessageSchema, SDKStreamlinedToolUseSummaryMessageSchema, SDKPermissionDenialSchema, SDKResultSuccessSchema, SDKResultErrorSchema, SDKResultMessageSchema, SDKSystemMessageSchema, SDKPartialAssistantMessageSchema, SDKCompactBoundaryMessageSchema, SDKStatusMessageSchema, SDKPostTurnSummaryMessageSchema, SDKAPIRetryMessageSchema, SDKLocalCommandOutputMessageSchema, SDKClassifierDecisionMessageSchema, SDKHookStartedMessageSchema, SDKHookProgressMessageSchema, SDKHookResponseMessageSchema, SDKToolProgressMessageSchema, SDKAuthStatusMessageSchema, SDKFilesPersistedEventSchema, SDKTaskNotificationMessageSchema, SDKTaskStartedMessageSchema, SDKSessionStateChangedMessageSchema, SDKTaskProgressMessageSchema, SDKToolUseSummaryMessageSchema, SDKElicitationCompleteMessageSchema, SDKPromptSuggestionMessageSchema, SDKSessionInfoSchema, SDKMessageSchema, FastModeStateSchema;
|
|
280836
280868
|
var init_coreSchemas = __esm(() => {
|
|
280837
280869
|
init_v4();
|
|
280838
280870
|
ModelUsageSchema = lazySchema(() => exports_external.object({
|
|
@@ -281692,6 +281724,17 @@ var init_coreSchemas = __esm(() => {
|
|
|
281692
281724
|
uuid: UUIDPlaceholder(),
|
|
281693
281725
|
session_id: exports_external.string()
|
|
281694
281726
|
}).describe("Output from a local slash command (e.g. /voice, /cost). Displayed as assistant-style text in the transcript."));
|
|
281727
|
+
SDKClassifierDecisionMessageSchema = lazySchema(() => exports_external.object({
|
|
281728
|
+
type: exports_external.literal("system"),
|
|
281729
|
+
subtype: exports_external.literal("classifier_decision"),
|
|
281730
|
+
tool_use_id: exports_external.string(),
|
|
281731
|
+
tool_name: exports_external.string(),
|
|
281732
|
+
decision: exports_external.enum(["allowed", "denied"]),
|
|
281733
|
+
classifier: exports_external.string().describe('Classifier id, e.g. "auto-mode" or "bash".'),
|
|
281734
|
+
reason: exports_external.string().optional().describe("Human-readable reason from the classifier, when available."),
|
|
281735
|
+
uuid: UUIDPlaceholder(),
|
|
281736
|
+
session_id: exports_external.string()
|
|
281737
|
+
}).describe("Emitted when auto-mode or bash classifier allows or denies a tool use. Hosts should show this next to the matching tool activity."));
|
|
281695
281738
|
SDKHookStartedMessageSchema = lazySchema(() => exports_external.object({
|
|
281696
281739
|
type: exports_external.literal("system"),
|
|
281697
281740
|
subtype: exports_external.literal("hook_started"),
|
|
@@ -281855,6 +281898,7 @@ var init_coreSchemas = __esm(() => {
|
|
|
281855
281898
|
SDKStatusMessageSchema(),
|
|
281856
281899
|
SDKAPIRetryMessageSchema(),
|
|
281857
281900
|
SDKLocalCommandOutputMessageSchema(),
|
|
281901
|
+
SDKClassifierDecisionMessageSchema(),
|
|
281858
281902
|
SDKHookStartedMessageSchema(),
|
|
281859
281903
|
SDKHookProgressMessageSchema(),
|
|
281860
281904
|
SDKHookResponseMessageSchema(),
|
|
@@ -359896,6 +359940,31 @@ var init_bashPermissions = __esm(() => {
|
|
|
359896
359940
|
speculativeChecks = new Map;
|
|
359897
359941
|
});
|
|
359898
359942
|
|
|
359943
|
+
// src/utils/classifierDecisionEvents.ts
|
|
359944
|
+
function registerClassifierDecisionHandler(next) {
|
|
359945
|
+
handler7 = next;
|
|
359946
|
+
if (handler7 && pending.length > 0) {
|
|
359947
|
+
for (const event of pending.splice(0)) {
|
|
359948
|
+
handler7(event);
|
|
359949
|
+
}
|
|
359950
|
+
}
|
|
359951
|
+
}
|
|
359952
|
+
function emitClassifierDecision(event) {
|
|
359953
|
+
if (!event.toolUseId || !event.toolName)
|
|
359954
|
+
return;
|
|
359955
|
+
if (handler7) {
|
|
359956
|
+
handler7(event);
|
|
359957
|
+
return;
|
|
359958
|
+
}
|
|
359959
|
+
pending.push(event);
|
|
359960
|
+
if (pending.length > MAX_PENDING)
|
|
359961
|
+
pending.shift();
|
|
359962
|
+
}
|
|
359963
|
+
var MAX_PENDING = 50, pending, handler7 = null;
|
|
359964
|
+
var init_classifierDecisionEvents = __esm(() => {
|
|
359965
|
+
pending = [];
|
|
359966
|
+
});
|
|
359967
|
+
|
|
359899
359968
|
// src/utils/sessionActivity.ts
|
|
359900
359969
|
function startHeartbeatTimer() {
|
|
359901
359970
|
clearIdleTimer();
|
|
@@ -360986,6 +361055,15 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
360986
361055
|
if (permissionDurationMs >= SLOW_PHASE_LOG_THRESHOLD_MS && permissionMode === "auto") {
|
|
360987
361056
|
logForDebugging2(`Slow permission decision: ${permissionDurationMs}ms for ${tool.name} ` + `(mode=${permissionMode}, behavior=${permissionDecision.behavior})`, { level: "info" });
|
|
360988
361057
|
}
|
|
361058
|
+
if (permissionDecision.decisionReason?.type === "classifier" && (permissionDecision.behavior === "allow" || permissionDecision.behavior === "deny")) {
|
|
361059
|
+
emitClassifierDecision({
|
|
361060
|
+
toolUseId: toolUseID,
|
|
361061
|
+
toolName: tool.name,
|
|
361062
|
+
decision: permissionDecision.behavior === "allow" ? "allowed" : "denied",
|
|
361063
|
+
classifier: permissionDecision.decisionReason.classifier,
|
|
361064
|
+
reason: permissionDecision.decisionReason.reason
|
|
361065
|
+
});
|
|
361066
|
+
}
|
|
360989
361067
|
if (permissionDecision.behavior !== "ask" && !toolUseContext.toolDecisions?.has(toolUseID)) {
|
|
360990
361068
|
const decision = permissionDecision.behavior === "allow" ? "accept" : "reject";
|
|
360991
361069
|
const source = decisionReasonToOTelSource(permissionDecision.decisionReason, permissionDecision.behavior);
|
|
@@ -361472,6 +361550,7 @@ var init_toolExecution = __esm(() => {
|
|
|
361472
361550
|
init_permissionLogging();
|
|
361473
361551
|
init_Tool();
|
|
361474
361552
|
init_bashPermissions();
|
|
361553
|
+
init_classifierDecisionEvents();
|
|
361475
361554
|
init_prompt2();
|
|
361476
361555
|
init_prompt3();
|
|
361477
361556
|
init_gitOperationTracking();
|
|
@@ -363801,7 +363880,7 @@ function getAnthropicEnvMetadata() {
|
|
|
363801
363880
|
function getBuildAgeMinutes() {
|
|
363802
363881
|
if (false)
|
|
363803
363882
|
;
|
|
363804
|
-
const buildTime = new Date("2026-08-
|
|
363883
|
+
const buildTime = new Date("2026-08-03T12:06:47.158Z").getTime();
|
|
363805
363884
|
if (isNaN(buildTime))
|
|
363806
363885
|
return;
|
|
363807
363886
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -369383,11 +369462,11 @@ For example, to get tab context:
|
|
|
369383
369462
|
2. Then: Call mcp__claude-in-chrome__tabs_context_mcp`, CLAUDE_IN_CHROME_SKILL_HINT = `**Browser Automation**: Chrome browser tools are available via the "claude-in-chrome" skill. CRITICAL: Before using any mcp__claude-in-chrome__* tools, invoke the skill by calling the Skill tool with skill: "claude-in-chrome". The skill provides browser automation instructions and enables the tools.`;
|
|
369384
369463
|
|
|
369385
369464
|
// src/utils/hooks/hookEvents.ts
|
|
369386
|
-
function registerHookEventHandler(
|
|
369387
|
-
eventHandler =
|
|
369388
|
-
if (
|
|
369465
|
+
function registerHookEventHandler(handler8) {
|
|
369466
|
+
eventHandler = handler8;
|
|
369467
|
+
if (handler8 && pendingEvents.length > 0) {
|
|
369389
369468
|
for (const event of pendingEvents.splice(0)) {
|
|
369390
|
-
|
|
369469
|
+
handler8(event);
|
|
369391
369470
|
}
|
|
369392
369471
|
}
|
|
369393
369472
|
}
|
|
@@ -371329,8 +371408,8 @@ async function getVerifyPlanReminderAttachment(messages, toolUseContext) {
|
|
|
371329
371408
|
return [];
|
|
371330
371409
|
}
|
|
371331
371410
|
const appState = toolUseContext.getAppState();
|
|
371332
|
-
const
|
|
371333
|
-
if (!
|
|
371411
|
+
const pending2 = appState.pendingPlanVerification;
|
|
371412
|
+
if (!pending2 || pending2.verificationStarted || pending2.verificationCompleted) {
|
|
371334
371413
|
return [];
|
|
371335
371414
|
}
|
|
371336
371415
|
if (messages && messages.length > 0) {
|
|
@@ -386696,9 +386775,9 @@ var init_directoryCompletion = __esm(() => {
|
|
|
386696
386775
|
});
|
|
386697
386776
|
|
|
386698
386777
|
// src/ink/hooks/use-prompt-mouse-target.ts
|
|
386699
|
-
function usePromptMouseTarget(
|
|
386700
|
-
const handlerRef = import_react94.useRef(
|
|
386701
|
-
handlerRef.current =
|
|
386778
|
+
function usePromptMouseTarget(handler8, enabled = true) {
|
|
386779
|
+
const handlerRef = import_react94.useRef(handler8);
|
|
386780
|
+
handlerRef.current = handler8;
|
|
386702
386781
|
const nodeRef = import_react94.useRef(null);
|
|
386703
386782
|
const registeredNodeRef = import_react94.useRef(null);
|
|
386704
386783
|
const unregisterRef = import_react94.useRef(null);
|
|
@@ -387719,6 +387798,13 @@ function ScrollBox({
|
|
|
387719
387798
|
el.pendingScrollDelta = (el.pendingScrollDelta ?? 0) + Math.floor(dy);
|
|
387720
387799
|
scrollMutated(el);
|
|
387721
387800
|
},
|
|
387801
|
+
nudgeScrollTop(dy) {
|
|
387802
|
+
const el = domRef.current;
|
|
387803
|
+
if (!el || dy === 0)
|
|
387804
|
+
return;
|
|
387805
|
+
el.scrollTop = Math.max(0, Math.floor((el.scrollTop ?? 0) + dy));
|
|
387806
|
+
scrollMutated(el);
|
|
387807
|
+
},
|
|
387722
387808
|
scrollToBottom() {
|
|
387723
387809
|
const el = domRef.current;
|
|
387724
387810
|
if (!el)
|
|
@@ -420267,9 +420353,9 @@ function ManagePlugins({
|
|
|
420267
420353
|
handleSingleOperationRef.current = handleSingleOperation;
|
|
420268
420354
|
import_react143.useEffect(() => {
|
|
420269
420355
|
if (viewState === "plugin-details" && selectedPlugin && pendingAutoActionRef.current) {
|
|
420270
|
-
const
|
|
420356
|
+
const pending2 = pendingAutoActionRef.current;
|
|
420271
420357
|
pendingAutoActionRef.current = undefined;
|
|
420272
|
-
handleSingleOperationRef.current(
|
|
420358
|
+
handleSingleOperationRef.current(pending2);
|
|
420273
420359
|
}
|
|
420274
420360
|
}, [viewState, selectedPlugin]);
|
|
420275
420361
|
const handleToggle = React79.useCallback(() => {
|
|
@@ -429868,7 +429954,7 @@ function getRecentActivitySync() {
|
|
|
429868
429954
|
return cachedActivity;
|
|
429869
429955
|
}
|
|
429870
429956
|
function getLogoDisplayData() {
|
|
429871
|
-
const version2 = process.env.DEMO_VERSION ?? "0.1.
|
|
429957
|
+
const version2 = process.env.DEMO_VERSION ?? "0.1.23" ?? "99.0.0";
|
|
429872
429958
|
const serverUrl = getDirectConnectServerUrl();
|
|
429873
429959
|
const displayPath = process.env.DEMO_VERSION ? "/code/maximo" : getDisplayPath(getCwd());
|
|
429874
429960
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -432772,6 +432858,7 @@ var init_StatusNotices = __esm(() => {
|
|
|
432772
432858
|
function useVirtualScroll(scrollRef, itemKeys, columns) {
|
|
432773
432859
|
const heightCache = import_react156.useRef(new Map);
|
|
432774
432860
|
const offsetVersionRef = import_react156.useRef(0);
|
|
432861
|
+
const [, setMeasureEpoch] = import_react156.useState(0);
|
|
432775
432862
|
const lastScrollTopRef = import_react156.useRef(0);
|
|
432776
432863
|
const offsetsRef = import_react156.useRef({
|
|
432777
432864
|
arr: new Float64Array(0),
|
|
@@ -432965,7 +433052,10 @@ function useVirtualScroll(scrollRef, itemKeys, columns) {
|
|
|
432965
433052
|
skipMeasurementRef.current = false;
|
|
432966
433053
|
return;
|
|
432967
433054
|
}
|
|
433055
|
+
const scrollTopNow = scrollRef.current?.getScrollTop() ?? -1;
|
|
433056
|
+
const stickyNow = scrollRef.current?.isSticky() ?? true;
|
|
432968
433057
|
let anyChanged = false;
|
|
433058
|
+
let anchorDelta = 0;
|
|
432969
433059
|
for (const [key, el] of itemRefs.current) {
|
|
432970
433060
|
const yoga = el.yogaNode;
|
|
432971
433061
|
if (!yoga)
|
|
@@ -432974,16 +433064,34 @@ function useVirtualScroll(scrollRef, itemKeys, columns) {
|
|
|
432974
433064
|
const prev = heightCache.current.get(key);
|
|
432975
433065
|
if (h2 > 0) {
|
|
432976
433066
|
if (prev !== h2) {
|
|
433067
|
+
const oldH = prev ?? DEFAULT_ESTIMATE;
|
|
433068
|
+
const itemTop = yoga.getComputedTop();
|
|
433069
|
+
if (!stickyNow && scrollTopNow >= 0 && itemTop < scrollTopNow) {
|
|
433070
|
+
anchorDelta += h2 - oldH;
|
|
433071
|
+
}
|
|
432977
433072
|
heightCache.current.set(key, h2);
|
|
432978
433073
|
anyChanged = true;
|
|
432979
433074
|
}
|
|
432980
433075
|
} else if (yoga.getComputedWidth() > 0 && prev !== 0) {
|
|
433076
|
+
if (prev !== undefined && prev > 0) {
|
|
433077
|
+
const itemTop = yoga.getComputedTop();
|
|
433078
|
+
if (!stickyNow && scrollTopNow >= 0 && itemTop < scrollTopNow) {
|
|
433079
|
+
anchorDelta += 0 - prev;
|
|
433080
|
+
}
|
|
433081
|
+
}
|
|
432981
433082
|
heightCache.current.set(key, 0);
|
|
432982
433083
|
anyChanged = true;
|
|
432983
433084
|
}
|
|
432984
433085
|
}
|
|
432985
|
-
if (anyChanged)
|
|
432986
|
-
|
|
433086
|
+
if (!anyChanged)
|
|
433087
|
+
return;
|
|
433088
|
+
offsetVersionRef.current++;
|
|
433089
|
+
if (anchorDelta !== 0) {
|
|
433090
|
+
scrollRef.current?.nudgeScrollTop(anchorDelta);
|
|
433091
|
+
}
|
|
433092
|
+
if (!stickyNow) {
|
|
433093
|
+
setMeasureEpoch((e) => e + 1);
|
|
433094
|
+
}
|
|
432987
433095
|
});
|
|
432988
433096
|
const measureRef = import_react156.useCallback((key) => {
|
|
432989
433097
|
let fn = refCache.current.get(key);
|
|
@@ -433035,7 +433143,7 @@ function useVirtualScroll(scrollRef, itemKeys, columns) {
|
|
|
433035
433143
|
scrollToIndex
|
|
433036
433144
|
};
|
|
433037
433145
|
}
|
|
433038
|
-
var import_react156, DEFAULT_ESTIMATE =
|
|
433146
|
+
var import_react156, DEFAULT_ESTIMATE = 4, OVERSCAN_ROWS = 80, COLD_START_COUNT = 30, SCROLL_QUANTUM, PESSIMISTIC_HEIGHT = 1, MAX_MOUNTED_ITEMS = 300, SLIDE_STEP = 25, NOOP_UNSUB = () => {};
|
|
433039
433147
|
var init_useVirtualScroll = __esm(() => {
|
|
433040
433148
|
import_react156 = __toESM(require_react(), 1);
|
|
433041
433149
|
SCROLL_QUANTUM = OVERSCAN_ROWS >> 1;
|
|
@@ -434094,10 +434202,10 @@ function VirtualMessageList({
|
|
|
434094
434202
|
searchState.current.screenOrd = ord;
|
|
434095
434203
|
startPtrRef.current = -1;
|
|
434096
434204
|
highlightRef.current(ord);
|
|
434097
|
-
const
|
|
434098
|
-
if (
|
|
434205
|
+
const pending2 = pendingStepRef.current;
|
|
434206
|
+
if (pending2) {
|
|
434099
434207
|
pendingStepRef.current = 0;
|
|
434100
|
-
stepRef.current(
|
|
434208
|
+
stepRef.current(pending2);
|
|
434101
434209
|
}
|
|
434102
434210
|
}, [seekGen]);
|
|
434103
434211
|
function jump(i3, wantLast) {
|
|
@@ -434383,14 +434491,14 @@ function StickyTracker({
|
|
|
434383
434491
|
}
|
|
434384
434492
|
const baseOffset = firstVisibleTop >= 0 ? firstVisibleTop - offsets[firstVisible] : 0;
|
|
434385
434493
|
const estimate = idx >= 0 ? Math.max(0, baseOffset + offsets[idx]) : -1;
|
|
434386
|
-
const
|
|
434494
|
+
const pending2 = import_react159.useRef({
|
|
434387
434495
|
idx: -1,
|
|
434388
434496
|
tries: 0
|
|
434389
434497
|
});
|
|
434390
434498
|
const suppress = import_react159.useRef("none");
|
|
434391
434499
|
const lastIdx = import_react159.useRef(-1);
|
|
434392
434500
|
import_react159.useEffect(() => {
|
|
434393
|
-
if (
|
|
434501
|
+
if (pending2.current.idx >= 0)
|
|
434394
434502
|
return;
|
|
434395
434503
|
if (suppress.current === "armed") {
|
|
434396
434504
|
suppress.current = "force";
|
|
@@ -434424,7 +434532,7 @@ function StickyTracker({
|
|
|
434424
434532
|
scrollRef.current?.scrollToElement(el, 1);
|
|
434425
434533
|
} else {
|
|
434426
434534
|
scrollRef.current?.scrollTo(capturedEstimate);
|
|
434427
|
-
|
|
434535
|
+
pending2.current = {
|
|
434428
434536
|
idx: capturedIdx,
|
|
434429
434537
|
tries: 0
|
|
434430
434538
|
};
|
|
@@ -434433,17 +434541,17 @@ function StickyTracker({
|
|
|
434433
434541
|
});
|
|
434434
434542
|
});
|
|
434435
434543
|
import_react159.useEffect(() => {
|
|
434436
|
-
if (
|
|
434544
|
+
if (pending2.current.idx < 0)
|
|
434437
434545
|
return;
|
|
434438
|
-
const el = getItemElement(
|
|
434546
|
+
const el = getItemElement(pending2.current.idx);
|
|
434439
434547
|
if (el) {
|
|
434440
434548
|
scrollRef.current?.scrollToElement(el, 1);
|
|
434441
|
-
|
|
434549
|
+
pending2.current = {
|
|
434442
434550
|
idx: -1,
|
|
434443
434551
|
tries: 0
|
|
434444
434552
|
};
|
|
434445
|
-
} else if (++
|
|
434446
|
-
|
|
434553
|
+
} else if (++pending2.current.tries > 5) {
|
|
434554
|
+
pending2.current = {
|
|
434447
434555
|
idx: -1,
|
|
434448
434556
|
tries: 0
|
|
434449
434557
|
};
|
|
@@ -459311,7 +459419,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
459311
459419
|
var call57 = async () => {
|
|
459312
459420
|
return {
|
|
459313
459421
|
type: "text",
|
|
459314
|
-
value: `${"99.0.0"} (built ${"2026-08-
|
|
459422
|
+
value: `${"99.0.0"} (built ${"2026-08-03T12:06:47.158Z"})`
|
|
459315
459423
|
};
|
|
459316
459424
|
}, version2, version_default;
|
|
459317
459425
|
var init_version = __esm(() => {
|
|
@@ -464153,14 +464261,14 @@ var init_effort3 = __esm(() => {
|
|
|
464153
464261
|
});
|
|
464154
464262
|
|
|
464155
464263
|
// native-stub:asciichart
|
|
464156
|
-
var noop16 = () => null,
|
|
464264
|
+
var noop16 = () => null, handler8, stub8, SandboxManager8, plot6;
|
|
464157
464265
|
var init_asciichart = __esm(() => {
|
|
464158
|
-
|
|
464266
|
+
handler8 = {
|
|
464159
464267
|
get(_, prop) {
|
|
464160
464268
|
if (prop === "__esModule")
|
|
464161
464269
|
return true;
|
|
464162
464270
|
if (prop === "default")
|
|
464163
|
-
return new Proxy({},
|
|
464271
|
+
return new Proxy({}, handler8);
|
|
464164
464272
|
if (prop === "ExportResultCode")
|
|
464165
464273
|
return { SUCCESS: 0, FAILED: 1 };
|
|
464166
464274
|
if (prop === "resourceFromAttributes")
|
|
@@ -464170,7 +464278,7 @@ var init_asciichart = __esm(() => {
|
|
|
464170
464278
|
return noop16;
|
|
464171
464279
|
}
|
|
464172
464280
|
};
|
|
464173
|
-
stub8 = new Proxy(noop16,
|
|
464281
|
+
stub8 = new Proxy(noop16, handler8);
|
|
464174
464282
|
SandboxManager8 = new Proxy({}, { get: () => noop16 });
|
|
464175
464283
|
plot6 = noop16;
|
|
464176
464284
|
});
|
|
@@ -492959,8 +493067,8 @@ function useFilePermissionDialog({
|
|
|
492959
493067
|
toolUseConfirm.onAllow = (_input, permissionUpdates, feedback3) => {
|
|
492960
493068
|
originalOnAllow(input, permissionUpdates, feedback3);
|
|
492961
493069
|
};
|
|
492962
|
-
const
|
|
492963
|
-
|
|
493070
|
+
const handler9 = PERMISSION_HANDLERS[option.type];
|
|
493071
|
+
handler9(params, {
|
|
492964
493072
|
feedback: feedback2,
|
|
492965
493073
|
hasFeedback: !!feedback2,
|
|
492966
493074
|
enteredFeedbackMode: option.type === "accept-once" ? yesFeedbackModeEntered : noFeedbackModeEntered,
|
|
@@ -516615,14 +516723,14 @@ __export(exports_cacache, {
|
|
|
516615
516723
|
ATTR_SERVICE_NAME: () => ATTR_SERVICE_NAME8
|
|
516616
516724
|
});
|
|
516617
516725
|
var noop17 = () => null, noopClass6 = class {
|
|
516618
|
-
},
|
|
516726
|
+
}, handler9, stub9, cacache_default, __stub6 = true, SandboxViolationStore7 = null, SandboxManager9, SandboxRuntimeConfigSchema7, BROWSER_TOOLS6, getMcpConfigForManifest6, ColorDiff7 = null, ColorFile7 = null, getSyntaxTheme8, plot7, createMaximoForChromeMcpServer6, ExportResultCode8, resourceFromAttributes8, Resource6, SimpleSpanProcessor6, BatchSpanProcessor7, NodeTracerProvider6, BasicTracerProvider7, OTLPTraceExporter6, OTLPLogExporter6, OTLPMetricExporter6, PrometheusExporter6, LoggerProvider8, SimpleLogRecordProcessor6, BatchLogRecordProcessor8, MeterProvider7, PeriodicExportingMetricReader7, trace8, context7, SpanStatusCode6, ATTR_SERVICE_NAME8 = "service.name", ATTR_SERVICE_VERSION8 = "service.version", SEMRESATTRS_SERVICE_NAME6 = "service.name", SEMRESATTRS_SERVICE_VERSION6 = "service.version", AggregationTemporality7, DataPointType6, InstrumentType6, PushMetricExporter6, SeverityNumber6;
|
|
516619
516727
|
var init_cacache = __esm(() => {
|
|
516620
|
-
|
|
516728
|
+
handler9 = {
|
|
516621
516729
|
get(_, prop) {
|
|
516622
516730
|
if (prop === "__esModule")
|
|
516623
516731
|
return true;
|
|
516624
516732
|
if (prop === "default")
|
|
516625
|
-
return new Proxy({},
|
|
516733
|
+
return new Proxy({}, handler9);
|
|
516626
516734
|
if (prop === "ExportResultCode")
|
|
516627
516735
|
return { SUCCESS: 0, FAILED: 1 };
|
|
516628
516736
|
if (prop === "resourceFromAttributes")
|
|
@@ -516632,7 +516740,7 @@ var init_cacache = __esm(() => {
|
|
|
516632
516740
|
return noop17;
|
|
516633
516741
|
}
|
|
516634
516742
|
};
|
|
516635
|
-
stub9 = new Proxy(noop17,
|
|
516743
|
+
stub9 = new Proxy(noop17, handler9);
|
|
516636
516744
|
cacache_default = stub9;
|
|
516637
516745
|
SandboxManager9 = new Proxy({}, { get: () => noop17 });
|
|
516638
516746
|
SandboxRuntimeConfigSchema7 = { parse: () => ({}) };
|
|
@@ -528745,7 +528853,7 @@ function applyModalPagerAction(s, act, onBeforeJump) {
|
|
|
528745
528853
|
}
|
|
528746
528854
|
}
|
|
528747
528855
|
}
|
|
528748
|
-
var import_react325, WHEEL_ACCEL_WINDOW_MS = 40, WHEEL_ACCEL_STEP = 0.
|
|
528856
|
+
var import_react325, WHEEL_ACCEL_WINDOW_MS = 40, WHEEL_ACCEL_STEP = 0.25, WHEEL_ACCEL_MAX = 4, WHEEL_BOUNCE_GAP_MAX_MS = 200, WHEEL_MODE_STEP = 6, WHEEL_MODE_CAP = 8, WHEEL_MODE_RAMP = 2, WHEEL_MODE_IDLE_DISENGAGE_MS = 1500, WHEEL_DECAY_HALFLIFE_MS = 150, WHEEL_DECAY_STEP = 3, WHEEL_BURST_MS = 5, WHEEL_DECAY_GAP_MS = 80, WHEEL_DECAY_CAP_SLOW = 2, WHEEL_DECAY_CAP_FAST = 4, WHEEL_DECAY_IDLE_MS = 500, AUTOSCROLL_LINES = 2, AUTOSCROLL_INTERVAL_MS = 50, AUTOSCROLL_MAX_TICKS = 200;
|
|
528749
528857
|
var init_ScrollKeybindingHandler = __esm(() => {
|
|
528750
528858
|
init_notifications();
|
|
528751
528859
|
init_useCopyOnSelect();
|
|
@@ -530631,8 +530739,8 @@ Error: sandbox required but unavailable: ${reason}
|
|
|
530631
530739
|
]);
|
|
530632
530740
|
const initialMessageRef = import_react327.useRef(false);
|
|
530633
530741
|
import_react327.useEffect(() => {
|
|
530634
|
-
const
|
|
530635
|
-
if (!
|
|
530742
|
+
const pending2 = initialMessage;
|
|
530743
|
+
if (!pending2 || isLoading || initialMessageRef.current)
|
|
530636
530744
|
return;
|
|
530637
530745
|
initialMessageRef.current = true;
|
|
530638
530746
|
async function processInitialMessage(initialMsg) {
|
|
@@ -530704,7 +530812,7 @@ Error: sandbox required but unavailable: ${reason}
|
|
|
530704
530812
|
ref.current = false;
|
|
530705
530813
|
}, 100, initialMessageRef);
|
|
530706
530814
|
}
|
|
530707
|
-
processInitialMessage(
|
|
530815
|
+
processInitialMessage(pending2);
|
|
530708
530816
|
}, [
|
|
530709
530817
|
initialMessage,
|
|
530710
530818
|
isLoading,
|
|
@@ -532053,16 +532161,16 @@ Note: ctrl + z now suspends Maximo Syntax, ctrl + _ undoes input.
|
|
|
532053
532161
|
idleMinutes: idleReturnPending.idleMinutes,
|
|
532054
532162
|
totalInputTokens: getTotalInputTokens(),
|
|
532055
532163
|
onDone: async (action2) => {
|
|
532056
|
-
const
|
|
532164
|
+
const pending2 = idleReturnPending;
|
|
532057
532165
|
setIdleReturnPending(null);
|
|
532058
532166
|
logEvent("tengu_idle_return_action", {
|
|
532059
532167
|
action: action2,
|
|
532060
|
-
idleMinutes: Math.round(
|
|
532168
|
+
idleMinutes: Math.round(pending2.idleMinutes),
|
|
532061
532169
|
messageCount: messagesRef.current.length,
|
|
532062
532170
|
totalInputTokens: getTotalInputTokens()
|
|
532063
532171
|
});
|
|
532064
532172
|
if (action2 === "dismiss") {
|
|
532065
|
-
setInputValue(
|
|
532173
|
+
setInputValue(pending2.input);
|
|
532066
532174
|
return;
|
|
532067
532175
|
}
|
|
532068
532176
|
if (action2 === "never") {
|
|
@@ -532092,7 +532200,7 @@ Note: ctrl + z now suspends Maximo Syntax, ctrl + _ undoes input.
|
|
|
532092
532200
|
bashToolsProcessedIdx.current = 0;
|
|
532093
532201
|
}
|
|
532094
532202
|
skipIdleCheckRef.current = true;
|
|
532095
|
-
onSubmitRef.current(
|
|
532203
|
+
onSubmitRef.current(pending2.input, {
|
|
532096
532204
|
setCursorOffset: () => {},
|
|
532097
532205
|
clearBuffer: () => {},
|
|
532098
532206
|
resetHistory: () => {}
|
|
@@ -533663,7 +533771,7 @@ function SetupRow({ children }) {
|
|
|
533663
533771
|
}
|
|
533664
533772
|
function WelcomeV2() {
|
|
533665
533773
|
const { columns } = useTerminalSize();
|
|
533666
|
-
const version3 = "0.1.
|
|
533774
|
+
const version3 = "0.1.23";
|
|
533667
533775
|
const width = Math.max(48, Math.min(columns || 92, 92));
|
|
533668
533776
|
const stacked = width < OCTOPUS_COMPACT_WIDTH + 42;
|
|
533669
533777
|
return /* @__PURE__ */ jsx_runtime479.jsx(ThemedBox_default, {
|
|
@@ -545909,6 +546017,21 @@ Error: sandbox required but unavailable: ${sandboxUnavailableReason}
|
|
|
545909
546017
|
structuredIO.write(message);
|
|
545910
546018
|
});
|
|
545911
546019
|
}
|
|
546020
|
+
if (options2.outputFormat === "stream-json") {
|
|
546021
|
+
registerClassifierDecisionHandler((event) => {
|
|
546022
|
+
structuredIO.write({
|
|
546023
|
+
type: "system",
|
|
546024
|
+
subtype: "classifier_decision",
|
|
546025
|
+
tool_use_id: event.toolUseId,
|
|
546026
|
+
tool_name: event.toolName,
|
|
546027
|
+
decision: event.decision,
|
|
546028
|
+
classifier: event.classifier,
|
|
546029
|
+
reason: event.reason,
|
|
546030
|
+
uuid: randomUUID53(),
|
|
546031
|
+
session_id: getSessionId()
|
|
546032
|
+
});
|
|
546033
|
+
});
|
|
546034
|
+
}
|
|
545912
546035
|
if (options2.setupTrigger) {
|
|
545913
546036
|
await processSetupHooks(options2.setupTrigger);
|
|
545914
546037
|
}
|
|
@@ -548604,6 +548727,7 @@ var init_print = __esm(() => {
|
|
|
548604
548727
|
init_path2();
|
|
548605
548728
|
init_queryHelpers();
|
|
548606
548729
|
init_hookEvents();
|
|
548730
|
+
init_classifierDecisionEvents();
|
|
548607
548731
|
init_filePersistence();
|
|
548608
548732
|
init_AsyncHookRegistry();
|
|
548609
548733
|
init_gracefulShutdown();
|
|
@@ -549258,7 +549382,7 @@ var init_server3 = __esm(() => {
|
|
|
549258
549382
|
}
|
|
549259
549383
|
this._capabilities = mergeCapabilities(this._capabilities, capabilities);
|
|
549260
549384
|
}
|
|
549261
|
-
setRequestHandler(requestSchema,
|
|
549385
|
+
setRequestHandler(requestSchema, handler10) {
|
|
549262
549386
|
const shape = getObjectShape(requestSchema);
|
|
549263
549387
|
const methodSchema = shape?.method;
|
|
549264
549388
|
if (!methodSchema) {
|
|
@@ -549286,7 +549410,7 @@ var init_server3 = __esm(() => {
|
|
|
549286
549410
|
throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call request: ${errorMessage4}`);
|
|
549287
549411
|
}
|
|
549288
549412
|
const { params } = validatedRequest.data;
|
|
549289
|
-
const result = await Promise.resolve(
|
|
549413
|
+
const result = await Promise.resolve(handler10(request, extra));
|
|
549290
549414
|
if (params.task) {
|
|
549291
549415
|
const taskValidationResult = safeParse3(CreateTaskResultSchema, result);
|
|
549292
549416
|
if (!taskValidationResult.success) {
|
|
@@ -549304,7 +549428,7 @@ var init_server3 = __esm(() => {
|
|
|
549304
549428
|
};
|
|
549305
549429
|
return super.setRequestHandler(requestSchema, wrappedHandler);
|
|
549306
549430
|
}
|
|
549307
|
-
return super.setRequestHandler(requestSchema,
|
|
549431
|
+
return super.setRequestHandler(requestSchema, handler10);
|
|
549308
549432
|
}
|
|
549309
549433
|
assertCapabilityForMethod(method) {
|
|
549310
549434
|
switch (method) {
|
|
@@ -553574,7 +553698,7 @@ Usage: maximo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
553574
553698
|
pendingHookMessages
|
|
553575
553699
|
}, renderAndRun);
|
|
553576
553700
|
}
|
|
553577
|
-
}).version("0.1.
|
|
553701
|
+
}).version("0.1.23 (Maximo Syntax)", "-v, --version", "Output the version number");
|
|
553578
553702
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
553579
553703
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
553580
553704
|
if (canUserConfigureAdvisor()) {
|
|
@@ -554105,7 +554229,7 @@ function validateProviderEnvOrExit() {
|
|
|
554105
554229
|
async function main2() {
|
|
554106
554230
|
const args = process.argv.slice(2);
|
|
554107
554231
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
554108
|
-
console.log(`${"0.1.
|
|
554232
|
+
console.log(`${"0.1.23"} (Maximo Syntax)`);
|
|
554109
554233
|
return;
|
|
554110
554234
|
}
|
|
554111
554235
|
validateProviderEnvOrExit();
|
|
@@ -554182,4 +554306,4 @@ async function main2() {
|
|
|
554182
554306
|
}
|
|
554183
554307
|
main2();
|
|
554184
554308
|
|
|
554185
|
-
//# debugId=
|
|
554309
|
+
//# debugId=A69DD0EA5FE13F0D64756E2164756E21
|