snow-ai 0.6.22 → 0.6.24
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/bundle/cli.mjs +283 -334
- package/bundle/package.json +1 -1
- package/package.json +1 -1
package/bundle/cli.mjs
CHANGED
|
@@ -1425,9 +1425,9 @@ var require_react_development = __commonJS({
|
|
|
1425
1425
|
var dispatcher = resolveDispatcher();
|
|
1426
1426
|
return dispatcher.useState(initialState);
|
|
1427
1427
|
}
|
|
1428
|
-
function useReducer8(
|
|
1428
|
+
function useReducer8(reducer2, initialArg, init) {
|
|
1429
1429
|
var dispatcher = resolveDispatcher();
|
|
1430
|
-
return dispatcher.useReducer(
|
|
1430
|
+
return dispatcher.useReducer(reducer2, initialArg, init);
|
|
1431
1431
|
}
|
|
1432
1432
|
function useRef16(initialValue) {
|
|
1433
1433
|
var dispatcher = resolveDispatcher();
|
|
@@ -1449,7 +1449,7 @@ var require_react_development = __commonJS({
|
|
|
1449
1449
|
var dispatcher = resolveDispatcher();
|
|
1450
1450
|
return dispatcher.useCallback(callback, deps);
|
|
1451
1451
|
}
|
|
1452
|
-
function
|
|
1452
|
+
function useMemo36(create3, deps) {
|
|
1453
1453
|
var dispatcher = resolveDispatcher();
|
|
1454
1454
|
return dispatcher.useMemo(create3, deps);
|
|
1455
1455
|
}
|
|
@@ -2221,7 +2221,7 @@ var require_react_development = __commonJS({
|
|
|
2221
2221
|
exports2.useImperativeHandle = useImperativeHandle2;
|
|
2222
2222
|
exports2.useInsertionEffect = useInsertionEffect;
|
|
2223
2223
|
exports2.useLayoutEffect = useLayoutEffect2;
|
|
2224
|
-
exports2.useMemo =
|
|
2224
|
+
exports2.useMemo = useMemo36;
|
|
2225
2225
|
exports2.useReducer = useReducer8;
|
|
2226
2226
|
exports2.useRef = useRef16;
|
|
2227
2227
|
exports2.useState = useState67;
|
|
@@ -14919,7 +14919,7 @@ var require_react_reconciler_development = __commonJS({
|
|
|
14919
14919
|
function basicStateReducer(state, action) {
|
|
14920
14920
|
return typeof action === "function" ? action(state) : action;
|
|
14921
14921
|
}
|
|
14922
|
-
function mountReducer(
|
|
14922
|
+
function mountReducer(reducer2, initialArg, init) {
|
|
14923
14923
|
var hook = mountWorkInProgressHook();
|
|
14924
14924
|
var initialState;
|
|
14925
14925
|
if (init !== void 0) {
|
|
@@ -14933,20 +14933,20 @@ var require_react_reconciler_development = __commonJS({
|
|
|
14933
14933
|
interleaved: null,
|
|
14934
14934
|
lanes: NoLanes,
|
|
14935
14935
|
dispatch: null,
|
|
14936
|
-
lastRenderedReducer:
|
|
14936
|
+
lastRenderedReducer: reducer2,
|
|
14937
14937
|
lastRenderedState: initialState
|
|
14938
14938
|
};
|
|
14939
14939
|
hook.queue = queue;
|
|
14940
14940
|
var dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue);
|
|
14941
14941
|
return [hook.memoizedState, dispatch];
|
|
14942
14942
|
}
|
|
14943
|
-
function updateReducer(
|
|
14943
|
+
function updateReducer(reducer2, initialArg, init) {
|
|
14944
14944
|
var hook = updateWorkInProgressHook();
|
|
14945
14945
|
var queue = hook.queue;
|
|
14946
14946
|
if (queue === null) {
|
|
14947
14947
|
throw new Error("Should have a queue. This is likely a bug in React. Please file an issue.");
|
|
14948
14948
|
}
|
|
14949
|
-
queue.lastRenderedReducer =
|
|
14949
|
+
queue.lastRenderedReducer = reducer2;
|
|
14950
14950
|
var current2 = currentHook;
|
|
14951
14951
|
var baseQueue = current2.baseQueue;
|
|
14952
14952
|
var pendingQueue = queue.pending;
|
|
@@ -15008,7 +15008,7 @@ var require_react_reconciler_development = __commonJS({
|
|
|
15008
15008
|
newState = update.eagerState;
|
|
15009
15009
|
} else {
|
|
15010
15010
|
var action = update.action;
|
|
15011
|
-
newState =
|
|
15011
|
+
newState = reducer2(newState, action);
|
|
15012
15012
|
}
|
|
15013
15013
|
}
|
|
15014
15014
|
update = update.next;
|
|
@@ -15041,13 +15041,13 @@ var require_react_reconciler_development = __commonJS({
|
|
|
15041
15041
|
var dispatch = queue.dispatch;
|
|
15042
15042
|
return [hook.memoizedState, dispatch];
|
|
15043
15043
|
}
|
|
15044
|
-
function rerenderReducer(
|
|
15044
|
+
function rerenderReducer(reducer2, initialArg, init) {
|
|
15045
15045
|
var hook = updateWorkInProgressHook();
|
|
15046
15046
|
var queue = hook.queue;
|
|
15047
15047
|
if (queue === null) {
|
|
15048
15048
|
throw new Error("Should have a queue. This is likely a bug in React. Please file an issue.");
|
|
15049
15049
|
}
|
|
15050
|
-
queue.lastRenderedReducer =
|
|
15050
|
+
queue.lastRenderedReducer = reducer2;
|
|
15051
15051
|
var dispatch = queue.dispatch;
|
|
15052
15052
|
var lastRenderPhaseUpdate = queue.pending;
|
|
15053
15053
|
var newState = hook.memoizedState;
|
|
@@ -15057,7 +15057,7 @@ var require_react_reconciler_development = __commonJS({
|
|
|
15057
15057
|
var update = firstRenderPhaseUpdate;
|
|
15058
15058
|
do {
|
|
15059
15059
|
var action = update.action;
|
|
15060
|
-
newState =
|
|
15060
|
+
newState = reducer2(newState, action);
|
|
15061
15061
|
update = update.next;
|
|
15062
15062
|
} while (update !== firstRenderPhaseUpdate);
|
|
15063
15063
|
if (!objectIs(newState, hook.memoizedState)) {
|
|
@@ -15737,13 +15737,13 @@ var require_react_reconciler_development = __commonJS({
|
|
|
15737
15737
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
15738
15738
|
}
|
|
15739
15739
|
},
|
|
15740
|
-
useReducer: function(
|
|
15740
|
+
useReducer: function(reducer2, initialArg, init) {
|
|
15741
15741
|
currentHookNameInDev = "useReducer";
|
|
15742
15742
|
mountHookTypesDev();
|
|
15743
15743
|
var prevDispatcher = ReactCurrentDispatcher$1.current;
|
|
15744
15744
|
ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
|
|
15745
15745
|
try {
|
|
15746
|
-
return mountReducer(
|
|
15746
|
+
return mountReducer(reducer2, initialArg, init);
|
|
15747
15747
|
} finally {
|
|
15748
15748
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
15749
15749
|
}
|
|
@@ -15841,13 +15841,13 @@ var require_react_reconciler_development = __commonJS({
|
|
|
15841
15841
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
15842
15842
|
}
|
|
15843
15843
|
},
|
|
15844
|
-
useReducer: function(
|
|
15844
|
+
useReducer: function(reducer2, initialArg, init) {
|
|
15845
15845
|
currentHookNameInDev = "useReducer";
|
|
15846
15846
|
updateHookTypesDev();
|
|
15847
15847
|
var prevDispatcher = ReactCurrentDispatcher$1.current;
|
|
15848
15848
|
ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
|
|
15849
15849
|
try {
|
|
15850
|
-
return mountReducer(
|
|
15850
|
+
return mountReducer(reducer2, initialArg, init);
|
|
15851
15851
|
} finally {
|
|
15852
15852
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
15853
15853
|
}
|
|
@@ -15945,13 +15945,13 @@ var require_react_reconciler_development = __commonJS({
|
|
|
15945
15945
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
15946
15946
|
}
|
|
15947
15947
|
},
|
|
15948
|
-
useReducer: function(
|
|
15948
|
+
useReducer: function(reducer2, initialArg, init) {
|
|
15949
15949
|
currentHookNameInDev = "useReducer";
|
|
15950
15950
|
updateHookTypesDev();
|
|
15951
15951
|
var prevDispatcher = ReactCurrentDispatcher$1.current;
|
|
15952
15952
|
ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
|
|
15953
15953
|
try {
|
|
15954
|
-
return updateReducer(
|
|
15954
|
+
return updateReducer(reducer2, initialArg, init);
|
|
15955
15955
|
} finally {
|
|
15956
15956
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
15957
15957
|
}
|
|
@@ -16049,13 +16049,13 @@ var require_react_reconciler_development = __commonJS({
|
|
|
16049
16049
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
16050
16050
|
}
|
|
16051
16051
|
},
|
|
16052
|
-
useReducer: function(
|
|
16052
|
+
useReducer: function(reducer2, initialArg, init) {
|
|
16053
16053
|
currentHookNameInDev = "useReducer";
|
|
16054
16054
|
updateHookTypesDev();
|
|
16055
16055
|
var prevDispatcher = ReactCurrentDispatcher$1.current;
|
|
16056
16056
|
ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
|
|
16057
16057
|
try {
|
|
16058
|
-
return rerenderReducer(
|
|
16058
|
+
return rerenderReducer(reducer2, initialArg, init);
|
|
16059
16059
|
} finally {
|
|
16060
16060
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
16061
16061
|
}
|
|
@@ -16161,14 +16161,14 @@ var require_react_reconciler_development = __commonJS({
|
|
|
16161
16161
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
16162
16162
|
}
|
|
16163
16163
|
},
|
|
16164
|
-
useReducer: function(
|
|
16164
|
+
useReducer: function(reducer2, initialArg, init) {
|
|
16165
16165
|
currentHookNameInDev = "useReducer";
|
|
16166
16166
|
warnInvalidHookAccess();
|
|
16167
16167
|
mountHookTypesDev();
|
|
16168
16168
|
var prevDispatcher = ReactCurrentDispatcher$1.current;
|
|
16169
16169
|
ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
|
|
16170
16170
|
try {
|
|
16171
|
-
return mountReducer(
|
|
16171
|
+
return mountReducer(reducer2, initialArg, init);
|
|
16172
16172
|
} finally {
|
|
16173
16173
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
16174
16174
|
}
|
|
@@ -16282,14 +16282,14 @@ var require_react_reconciler_development = __commonJS({
|
|
|
16282
16282
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
16283
16283
|
}
|
|
16284
16284
|
},
|
|
16285
|
-
useReducer: function(
|
|
16285
|
+
useReducer: function(reducer2, initialArg, init) {
|
|
16286
16286
|
currentHookNameInDev = "useReducer";
|
|
16287
16287
|
warnInvalidHookAccess();
|
|
16288
16288
|
updateHookTypesDev();
|
|
16289
16289
|
var prevDispatcher = ReactCurrentDispatcher$1.current;
|
|
16290
16290
|
ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
|
|
16291
16291
|
try {
|
|
16292
|
-
return updateReducer(
|
|
16292
|
+
return updateReducer(reducer2, initialArg, init);
|
|
16293
16293
|
} finally {
|
|
16294
16294
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
16295
16295
|
}
|
|
@@ -16403,14 +16403,14 @@ var require_react_reconciler_development = __commonJS({
|
|
|
16403
16403
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
16404
16404
|
}
|
|
16405
16405
|
},
|
|
16406
|
-
useReducer: function(
|
|
16406
|
+
useReducer: function(reducer2, initialArg, init) {
|
|
16407
16407
|
currentHookNameInDev = "useReducer";
|
|
16408
16408
|
warnInvalidHookAccess();
|
|
16409
16409
|
updateHookTypesDev();
|
|
16410
16410
|
var prevDispatcher = ReactCurrentDispatcher$1.current;
|
|
16411
16411
|
ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
|
|
16412
16412
|
try {
|
|
16413
|
-
return rerenderReducer(
|
|
16413
|
+
return rerenderReducer(reducer2, initialArg, init);
|
|
16414
16414
|
} finally {
|
|
16415
16415
|
ReactCurrentDispatcher$1.current = prevDispatcher;
|
|
16416
16416
|
}
|
|
@@ -48069,11 +48069,9 @@ PLACEHOLDER_FOR_WORKFLOW_SECTION
|
|
|
48069
48069
|
- Reduces cognitive load - AI doesn't need to remember everything
|
|
48070
48070
|
- Enables recovery if conversation is interrupted
|
|
48071
48071
|
|
|
48072
|
-
**Formatting rule
|
|
48073
|
-
- TODO item content
|
|
48072
|
+
**Formatting rule:**
|
|
48073
|
+
- TODO item content should be clear and actionable
|
|
48074
48074
|
- **REQUIRED: Get existing TODOs first** - BEFORE calling todo-add, ALWAYS run todo-get (paired with an action tool in the same call) to inspect current items
|
|
48075
|
-
- **Calculate next sequence number** - Extract the highest existing numeric prefix from todo-get results, then use max(existingPrefix)+1 for new items
|
|
48076
|
-
- **Example workflow**: todo-get + filesystem-read("file.ts") \u2192 see existing "1. Read file", "2. Analyze code" \u2192 add new items starting with "3. ..."
|
|
48077
48075
|
|
|
48078
48076
|
**WHEN TO USE (Default for most work):**
|
|
48079
48077
|
- ANY task touching 2+ files
|
|
@@ -48087,8 +48085,8 @@ PLACEHOLDER_FOR_WORKFLOW_SECTION
|
|
|
48087
48085
|
- Simple queries that don't change code
|
|
48088
48086
|
|
|
48089
48087
|
**STANDARD WORKFLOW - Always Plan First:**
|
|
48090
|
-
1. **Receive task** \u2192 Run todo-get (paired with an action tool) to see current list
|
|
48091
|
-
2. **Plan** \u2192 Create TODO with todo-add (batch add all steps at once
|
|
48088
|
+
1. **Receive task** \u2192 Run todo-get (paired with an action tool) to see current list
|
|
48089
|
+
2. **Plan** \u2192 Create TODO with todo-add (batch add all steps at once)
|
|
48092
48090
|
3. **Execute** \u2192 Update progress with todo-update as each step is completed
|
|
48093
48091
|
4. **Complete** \u2192 Clean up obsolete, incorrect, or superseded items with todo-delete
|
|
48094
48092
|
|
|
@@ -48106,10 +48104,10 @@ ALWAYS pair TODO tools with action tools in same call:
|
|
|
48106
48104
|
**Examples:**
|
|
48107
48105
|
\`\`\`
|
|
48108
48106
|
User: "Fix authentication bug and add logging"
|
|
48109
|
-
AI: todo-add(content=["
|
|
48107
|
+
AI: todo-add(content=["Fix auth bug in auth.ts", "Add logging to login flow", "Test login with new logs"]) + filesystem-read("auth.ts")
|
|
48110
48108
|
|
|
48111
48109
|
User: "Refactor utils module"
|
|
48112
|
-
AI: todo-add(content=["
|
|
48110
|
+
AI: todo-add(content=["Read utils module structure", "Identify refactor targets", "Extract common functions", "Update imports", "Run tests"]) + filesystem-read("utils/")
|
|
48113
48111
|
\`\`\`
|
|
48114
48112
|
|
|
48115
48113
|
|
|
@@ -80447,182 +80445,25 @@ var init_spinner2 = __esm({
|
|
|
80447
80445
|
});
|
|
80448
80446
|
|
|
80449
80447
|
// node_modules/@inkjs/ui/build/components/text-input/use-text-input-state.js
|
|
80450
|
-
var import_react39
|
|
80448
|
+
var import_react39;
|
|
80451
80449
|
var init_use_text_input_state = __esm({
|
|
80452
80450
|
"node_modules/@inkjs/ui/build/components/text-input/use-text-input-state.js"() {
|
|
80453
80451
|
import_react39 = __toESM(require_react(), 1);
|
|
80454
|
-
reducer2 = (state, action) => {
|
|
80455
|
-
switch (action.type) {
|
|
80456
|
-
case "move-cursor-left": {
|
|
80457
|
-
return {
|
|
80458
|
-
...state,
|
|
80459
|
-
cursorOffset: Math.max(0, state.cursorOffset - 1)
|
|
80460
|
-
};
|
|
80461
|
-
}
|
|
80462
|
-
case "move-cursor-right": {
|
|
80463
|
-
return {
|
|
80464
|
-
...state,
|
|
80465
|
-
cursorOffset: Math.min(state.value.length, state.cursorOffset + 1)
|
|
80466
|
-
};
|
|
80467
|
-
}
|
|
80468
|
-
case "insert": {
|
|
80469
|
-
return {
|
|
80470
|
-
...state,
|
|
80471
|
-
previousValue: state.value,
|
|
80472
|
-
value: state.value.slice(0, state.cursorOffset) + action.text + state.value.slice(state.cursorOffset),
|
|
80473
|
-
cursorOffset: state.cursorOffset + action.text.length
|
|
80474
|
-
};
|
|
80475
|
-
}
|
|
80476
|
-
case "delete": {
|
|
80477
|
-
const newCursorOffset = Math.max(0, state.cursorOffset - 1);
|
|
80478
|
-
return {
|
|
80479
|
-
...state,
|
|
80480
|
-
previousValue: state.value,
|
|
80481
|
-
value: state.value.slice(0, newCursorOffset) + state.value.slice(newCursorOffset + 1),
|
|
80482
|
-
cursorOffset: newCursorOffset
|
|
80483
|
-
};
|
|
80484
|
-
}
|
|
80485
|
-
}
|
|
80486
|
-
};
|
|
80487
|
-
useTextInputState = ({ defaultValue = "", suggestions, onChange, onSubmit }) => {
|
|
80488
|
-
const [state, dispatch] = (0, import_react39.useReducer)(reducer2, {
|
|
80489
|
-
previousValue: defaultValue,
|
|
80490
|
-
value: defaultValue,
|
|
80491
|
-
cursorOffset: defaultValue.length
|
|
80492
|
-
});
|
|
80493
|
-
const suggestion = (0, import_react39.useMemo)(() => {
|
|
80494
|
-
var _a21;
|
|
80495
|
-
if (state.value.length === 0) {
|
|
80496
|
-
return;
|
|
80497
|
-
}
|
|
80498
|
-
return (_a21 = suggestions == null ? void 0 : suggestions.find((suggestion2) => suggestion2.startsWith(state.value))) == null ? void 0 : _a21.replace(state.value, "");
|
|
80499
|
-
}, [state.value, suggestions]);
|
|
80500
|
-
const moveCursorLeft = (0, import_react39.useCallback)(() => {
|
|
80501
|
-
dispatch({
|
|
80502
|
-
type: "move-cursor-left"
|
|
80503
|
-
});
|
|
80504
|
-
}, []);
|
|
80505
|
-
const moveCursorRight = (0, import_react39.useCallback)(() => {
|
|
80506
|
-
dispatch({
|
|
80507
|
-
type: "move-cursor-right"
|
|
80508
|
-
});
|
|
80509
|
-
}, []);
|
|
80510
|
-
const insert = (0, import_react39.useCallback)((text3) => {
|
|
80511
|
-
dispatch({
|
|
80512
|
-
type: "insert",
|
|
80513
|
-
text: text3
|
|
80514
|
-
});
|
|
80515
|
-
}, []);
|
|
80516
|
-
const deleteCharacter = (0, import_react39.useCallback)(() => {
|
|
80517
|
-
dispatch({
|
|
80518
|
-
type: "delete"
|
|
80519
|
-
});
|
|
80520
|
-
}, []);
|
|
80521
|
-
const submit = (0, import_react39.useCallback)(() => {
|
|
80522
|
-
if (suggestion) {
|
|
80523
|
-
insert(suggestion);
|
|
80524
|
-
onSubmit == null ? void 0 : onSubmit(state.value + suggestion);
|
|
80525
|
-
return;
|
|
80526
|
-
}
|
|
80527
|
-
onSubmit == null ? void 0 : onSubmit(state.value);
|
|
80528
|
-
}, [state.value, suggestion, insert, onSubmit]);
|
|
80529
|
-
(0, import_react39.useEffect)(() => {
|
|
80530
|
-
if (state.value !== state.previousValue) {
|
|
80531
|
-
onChange == null ? void 0 : onChange(state.value);
|
|
80532
|
-
}
|
|
80533
|
-
}, [state.previousValue, state.value, onChange]);
|
|
80534
|
-
return {
|
|
80535
|
-
...state,
|
|
80536
|
-
suggestion,
|
|
80537
|
-
moveCursorLeft,
|
|
80538
|
-
moveCursorRight,
|
|
80539
|
-
insert,
|
|
80540
|
-
delete: deleteCharacter,
|
|
80541
|
-
submit
|
|
80542
|
-
};
|
|
80543
|
-
};
|
|
80544
80452
|
}
|
|
80545
80453
|
});
|
|
80546
80454
|
|
|
80547
80455
|
// node_modules/@inkjs/ui/build/components/text-input/use-text-input.js
|
|
80548
|
-
var import_react40, cursor
|
|
80456
|
+
var import_react40, cursor;
|
|
80549
80457
|
var init_use_text_input = __esm({
|
|
80550
80458
|
async "node_modules/@inkjs/ui/build/components/text-input/use-text-input.js"() {
|
|
80551
80459
|
import_react40 = __toESM(require_react(), 1);
|
|
80552
80460
|
await init_build2();
|
|
80553
80461
|
init_source();
|
|
80554
80462
|
cursor = source_default.inverse(" ");
|
|
80555
|
-
useTextInput = ({ isDisabled = false, state, placeholder = "" }) => {
|
|
80556
|
-
const renderedPlaceholder = (0, import_react40.useMemo)(() => {
|
|
80557
|
-
if (isDisabled) {
|
|
80558
|
-
return placeholder ? source_default.dim(placeholder) : "";
|
|
80559
|
-
}
|
|
80560
|
-
return placeholder && placeholder.length > 0 ? source_default.inverse(placeholder[0]) + source_default.dim(placeholder.slice(1)) : cursor;
|
|
80561
|
-
}, [isDisabled, placeholder]);
|
|
80562
|
-
const renderedValue = (0, import_react40.useMemo)(() => {
|
|
80563
|
-
if (isDisabled) {
|
|
80564
|
-
return state.value;
|
|
80565
|
-
}
|
|
80566
|
-
let index = 0;
|
|
80567
|
-
let result2 = state.value.length > 0 ? "" : cursor;
|
|
80568
|
-
for (const char of state.value) {
|
|
80569
|
-
result2 += index === state.cursorOffset ? source_default.inverse(char) : char;
|
|
80570
|
-
index++;
|
|
80571
|
-
}
|
|
80572
|
-
if (state.suggestion) {
|
|
80573
|
-
if (state.cursorOffset === state.value.length) {
|
|
80574
|
-
result2 += source_default.inverse(state.suggestion[0]) + source_default.dim(state.suggestion.slice(1));
|
|
80575
|
-
} else {
|
|
80576
|
-
result2 += source_default.dim(state.suggestion);
|
|
80577
|
-
}
|
|
80578
|
-
return result2;
|
|
80579
|
-
}
|
|
80580
|
-
if (state.value.length > 0 && state.cursorOffset === state.value.length) {
|
|
80581
|
-
result2 += cursor;
|
|
80582
|
-
}
|
|
80583
|
-
return result2;
|
|
80584
|
-
}, [isDisabled, state.value, state.cursorOffset, state.suggestion]);
|
|
80585
|
-
use_input_default((input2, key) => {
|
|
80586
|
-
if (key.upArrow || key.downArrow || key.ctrl && input2 === "c" || key.tab || key.shift && key.tab) {
|
|
80587
|
-
return;
|
|
80588
|
-
}
|
|
80589
|
-
if (key.return) {
|
|
80590
|
-
state.submit();
|
|
80591
|
-
return;
|
|
80592
|
-
}
|
|
80593
|
-
if (key.leftArrow) {
|
|
80594
|
-
state.moveCursorLeft();
|
|
80595
|
-
} else if (key.rightArrow) {
|
|
80596
|
-
state.moveCursorRight();
|
|
80597
|
-
} else if (key.backspace || key.delete) {
|
|
80598
|
-
state.delete();
|
|
80599
|
-
} else {
|
|
80600
|
-
state.insert(input2);
|
|
80601
|
-
}
|
|
80602
|
-
}, { isActive: !isDisabled });
|
|
80603
|
-
return {
|
|
80604
|
-
inputValue: state.value.length > 0 ? renderedValue : renderedPlaceholder
|
|
80605
|
-
};
|
|
80606
|
-
};
|
|
80607
80463
|
}
|
|
80608
80464
|
});
|
|
80609
80465
|
|
|
80610
80466
|
// node_modules/@inkjs/ui/build/components/text-input/text-input.js
|
|
80611
|
-
function TextInput({ isDisabled = false, defaultValue, placeholder = "", suggestions, onChange, onSubmit }) {
|
|
80612
|
-
const state = useTextInputState({
|
|
80613
|
-
defaultValue,
|
|
80614
|
-
suggestions,
|
|
80615
|
-
onChange,
|
|
80616
|
-
onSubmit
|
|
80617
|
-
});
|
|
80618
|
-
const { inputValue } = useTextInput({
|
|
80619
|
-
isDisabled,
|
|
80620
|
-
placeholder,
|
|
80621
|
-
state
|
|
80622
|
-
});
|
|
80623
|
-
const { styles: styles6 } = useComponentTheme("TextInput");
|
|
80624
|
-
return import_react41.default.createElement(Text, { ...styles6.value() }, inputValue);
|
|
80625
|
-
}
|
|
80626
80467
|
var import_react41;
|
|
80627
80468
|
var init_text_input = __esm({
|
|
80628
80469
|
async "node_modules/@inkjs/ui/build/components/text-input/text-input.js"() {
|
|
@@ -89174,7 +89015,7 @@ var init_Menu = __esm({
|
|
|
89174
89015
|
});
|
|
89175
89016
|
|
|
89176
89017
|
// node_modules/ink-text-input/build/index.js
|
|
89177
|
-
function
|
|
89018
|
+
function TextInput({ value: originalValue, placeholder = "", focus = true, mask, highlightPastedText = false, showCursor = true, onChange, onSubmit }) {
|
|
89178
89019
|
const [state, setState] = (0, import_react61.useState)({
|
|
89179
89020
|
cursorOffset: (originalValue || "").length,
|
|
89180
89021
|
cursorWidth: 0
|
|
@@ -89266,7 +89107,7 @@ var init_build5 = __esm({
|
|
|
89266
89107
|
import_react61 = __toESM(require_react(), 1);
|
|
89267
89108
|
await init_build2();
|
|
89268
89109
|
init_source();
|
|
89269
|
-
build_default2 =
|
|
89110
|
+
build_default2 = TextInput;
|
|
89270
89111
|
}
|
|
89271
89112
|
});
|
|
89272
89113
|
|
|
@@ -256717,7 +256558,7 @@ var init_map = __esm({
|
|
|
256717
256558
|
|
|
256718
256559
|
// node_modules/underscore/modules/_createReduce.js
|
|
256719
256560
|
function createReduce(dir) {
|
|
256720
|
-
var
|
|
256561
|
+
var reducer2 = function(obj2, iteratee2, memo7, initial2) {
|
|
256721
256562
|
var _keys = !isArrayLike_default(obj2) && keys(obj2), length = (_keys || obj2).length, index = dir > 0 ? 0 : length - 1;
|
|
256722
256563
|
if (!initial2) {
|
|
256723
256564
|
memo7 = obj2[_keys ? _keys[index] : index];
|
|
@@ -256731,7 +256572,7 @@ function createReduce(dir) {
|
|
|
256731
256572
|
};
|
|
256732
256573
|
return function(obj2, iteratee2, memo7, context2) {
|
|
256733
256574
|
var initial2 = arguments.length >= 3;
|
|
256734
|
-
return
|
|
256575
|
+
return reducer2(obj2, optimizeCb(iteratee2, context2, 4), memo7, initial2);
|
|
256735
256576
|
};
|
|
256736
256577
|
}
|
|
256737
256578
|
var init_createReduce = __esm({
|
|
@@ -323848,17 +323689,17 @@ var init_pdf = __esm({
|
|
|
323848
323689
|
});
|
|
323849
323690
|
var reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError("reduce", $TypeError);
|
|
323850
323691
|
$2({ target: "Iterator", proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {
|
|
323851
|
-
reduce: function reduce(
|
|
323692
|
+
reduce: function reduce(reducer2) {
|
|
323852
323693
|
anObject(this);
|
|
323853
323694
|
try {
|
|
323854
|
-
aCallable(
|
|
323695
|
+
aCallable(reducer2);
|
|
323855
323696
|
} catch (error) {
|
|
323856
323697
|
iteratorClose(this, "throw", error);
|
|
323857
323698
|
}
|
|
323858
323699
|
var noInitial = arguments.length < 2;
|
|
323859
323700
|
var accumulator = noInitial ? void 0 : arguments[1];
|
|
323860
323701
|
if (reduceWithoutClosingOnEarlyError) {
|
|
323861
|
-
return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [
|
|
323702
|
+
return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer2] : [reducer2, accumulator]);
|
|
323862
323703
|
}
|
|
323863
323704
|
var record = getIteratorDirect(this);
|
|
323864
323705
|
var counter = 0;
|
|
@@ -323867,7 +323708,7 @@ var init_pdf = __esm({
|
|
|
323867
323708
|
noInitial = false;
|
|
323868
323709
|
accumulator = value;
|
|
323869
323710
|
} else {
|
|
323870
|
-
accumulator =
|
|
323711
|
+
accumulator = reducer2(accumulator, value, counter);
|
|
323871
323712
|
}
|
|
323872
323713
|
counter++;
|
|
323873
323714
|
}, { IS_RECORD: true });
|
|
@@ -363311,6 +363152,7 @@ var init_security_utils = __esm({
|
|
|
363311
363152
|
var useTerminalExecutionState_exports = {};
|
|
363312
363153
|
__export(useTerminalExecutionState_exports, {
|
|
363313
363154
|
appendTerminalOutput: () => appendTerminalOutput,
|
|
363155
|
+
flushOutputBuffer: () => flushOutputBuffer,
|
|
363314
363156
|
registerInputCallback: () => registerInputCallback,
|
|
363315
363157
|
sendTerminalInput: () => sendTerminalInput,
|
|
363316
363158
|
setTerminalExecutionState: () => setTerminalExecutionState,
|
|
@@ -363341,6 +363183,7 @@ function useTerminalExecutionState() {
|
|
|
363341
363183
|
});
|
|
363342
363184
|
}, []);
|
|
363343
363185
|
const endExecution = (0, import_react65.useCallback)(() => {
|
|
363186
|
+
flushOutputBuffer();
|
|
363344
363187
|
setState({
|
|
363345
363188
|
isExecuting: false,
|
|
363346
363189
|
command: null,
|
|
@@ -363369,13 +363212,33 @@ function setTerminalExecutionState(state) {
|
|
|
363369
363212
|
globalSetState(state);
|
|
363370
363213
|
}
|
|
363371
363214
|
}
|
|
363215
|
+
function flushOutputBuffer() {
|
|
363216
|
+
if (outputFlushTimer) {
|
|
363217
|
+
clearTimeout(outputFlushTimer);
|
|
363218
|
+
outputFlushTimer = null;
|
|
363219
|
+
}
|
|
363220
|
+
if (outputBuffer.length === 0 || !globalSetState || !globalState) {
|
|
363221
|
+
return;
|
|
363222
|
+
}
|
|
363223
|
+
const linesToFlush = outputBuffer.splice(0, outputBuffer.length);
|
|
363224
|
+
globalSetState({
|
|
363225
|
+
...globalState,
|
|
363226
|
+
output: [...globalState.output, ...linesToFlush]
|
|
363227
|
+
});
|
|
363228
|
+
}
|
|
363372
363229
|
function appendTerminalOutput(line) {
|
|
363373
|
-
if (globalSetState
|
|
363374
|
-
|
|
363375
|
-
|
|
363376
|
-
|
|
363377
|
-
|
|
363230
|
+
if (!globalSetState || !globalState) {
|
|
363231
|
+
return;
|
|
363232
|
+
}
|
|
363233
|
+
outputBuffer.push(line);
|
|
363234
|
+
if (outputBuffer.length >= OUTPUT_BATCH_SIZE) {
|
|
363235
|
+
flushOutputBuffer();
|
|
363236
|
+
return;
|
|
363237
|
+
}
|
|
363238
|
+
if (outputFlushTimer) {
|
|
363239
|
+
clearTimeout(outputFlushTimer);
|
|
363378
363240
|
}
|
|
363241
|
+
outputFlushTimer = setTimeout(flushOutputBuffer, OUTPUT_FLUSH_DELAY);
|
|
363379
363242
|
}
|
|
363380
363243
|
function setTerminalNeedsInput(needsInput, prompt) {
|
|
363381
363244
|
if (globalSetState && globalState) {
|
|
@@ -363394,13 +363257,17 @@ function sendTerminalInput(input2) {
|
|
|
363394
363257
|
globalInputCallback(input2);
|
|
363395
363258
|
}
|
|
363396
363259
|
}
|
|
363397
|
-
var import_react65, globalSetState, globalState, globalInputCallback;
|
|
363260
|
+
var import_react65, globalSetState, globalState, outputBuffer, outputFlushTimer, OUTPUT_BATCH_SIZE, OUTPUT_FLUSH_DELAY, globalInputCallback;
|
|
363398
363261
|
var init_useTerminalExecutionState = __esm({
|
|
363399
363262
|
"dist/hooks/execution/useTerminalExecutionState.js"() {
|
|
363400
363263
|
"use strict";
|
|
363401
363264
|
import_react65 = __toESM(require_react(), 1);
|
|
363402
363265
|
globalSetState = null;
|
|
363403
363266
|
globalState = null;
|
|
363267
|
+
outputBuffer = [];
|
|
363268
|
+
outputFlushTimer = null;
|
|
363269
|
+
OUTPUT_BATCH_SIZE = 10;
|
|
363270
|
+
OUTPUT_FLUSH_DELAY = 50;
|
|
363404
363271
|
globalInputCallback = null;
|
|
363405
363272
|
}
|
|
363406
363273
|
});
|
|
@@ -363918,6 +363785,7 @@ var init_bash = __esm({
|
|
|
363918
363785
|
clearInterval(inputCheckInterval);
|
|
363919
363786
|
registerInputCallback(null);
|
|
363920
363787
|
setTerminalNeedsInput(false);
|
|
363788
|
+
flushOutputBuffer();
|
|
363921
363789
|
if (backgroundProcessId) {
|
|
363922
363790
|
const status = code2 === 0 ? "completed" : "failed";
|
|
363923
363791
|
Promise.resolve().then(() => (init_useBackgroundProcesses(), useBackgroundProcesses_exports)).then(({ updateBackgroundProcessStatus: updateBackgroundProcessStatus2 }) => {
|
|
@@ -442522,8 +442390,8 @@ This ensures efficient workflow and prevents unnecessary wait times.`,
|
|
|
442522
442390
|
},
|
|
442523
442391
|
status: {
|
|
442524
442392
|
type: "string",
|
|
442525
|
-
enum: ["pending", "completed"],
|
|
442526
|
-
description: 'New status - "pending" (not
|
|
442393
|
+
enum: ["pending", "inProgress", "completed"],
|
|
442394
|
+
description: 'New status - "pending" (not started), "inProgress" (currently working on), or "completed" (100% finished and verified)'
|
|
442527
442395
|
},
|
|
442528
442396
|
content: {
|
|
442529
442397
|
type: "string",
|
|
@@ -442540,12 +442408,6 @@ This ensures efficient workflow and prevents unnecessary wait times.`,
|
|
|
442540
442408
|
PARALLEL CALLS ONLY: MUST pair with other tools (todo-add + filesystem-read/etc).
|
|
442541
442409
|
NEVER call todo-add alone - always combine with an action tool.
|
|
442542
442410
|
|
|
442543
|
-
SEQUENCE NUMBERING - CRITICAL:
|
|
442544
|
-
- ALWAYS run todo-get FIRST (in the same parallel call) to check existing items before adding new ones
|
|
442545
|
-
- Extract the highest numeric prefix from existing TODOs, then continue from max+1
|
|
442546
|
-
- Example: If todo-get returns "1. Read file", "2. Analyze code", new items must start with "3. ..."
|
|
442547
|
-
- This prevents duplicate numbering in continuous conversations
|
|
442548
|
-
|
|
442549
442411
|
WHEN TO USE (Very common):
|
|
442550
442412
|
- Start ANY multi-step task \u2192 Create TODO list immediately
|
|
442551
442413
|
- User adds new requirements \u2192 Add tasks for new work
|
|
@@ -442553,10 +442415,7 @@ WHEN TO USE (Very common):
|
|
|
442553
442415
|
|
|
442554
442416
|
SUPPORTS BATCH ADDING:
|
|
442555
442417
|
- Single: content="Task description"
|
|
442556
|
-
- Multiple: content=["Task 1", "Task 2", "Task 3"] (recommended for multi-step work)
|
|
442557
|
-
|
|
442558
|
-
EXAMPLE (FIRST TIME): todo-add(content=["1. Read file", "2. Modify code"]) + filesystem-read("file.ts")
|
|
442559
|
-
EXAMPLE (CONTINUING): todo-get + todo-add(content=["3. Test changes", "4. Run build"])`,
|
|
442418
|
+
- Multiple: content=["Task 1", "Task 2", "Task 3"] (recommended for multi-step work)`,
|
|
442560
442419
|
inputSchema: {
|
|
442561
442420
|
type: "object",
|
|
442562
442421
|
properties: {
|
|
@@ -443952,16 +443811,25 @@ function toggleSensitiveCommand(id) {
|
|
|
443952
443811
|
}
|
|
443953
443812
|
function patternToRegex(pattern) {
|
|
443954
443813
|
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
|
|
443955
|
-
return new RegExp(
|
|
443814
|
+
return new RegExp(`(^|[;&|\\n])\\s*${escaped}`, "i");
|
|
443815
|
+
}
|
|
443816
|
+
function splitCommand(command) {
|
|
443817
|
+
const cleanCommand = command.trim().replace(/\s+/g, " ");
|
|
443818
|
+
const parts = cleanCommand.split(/\s*(?:;|&&|\|\||\||\n)\s*/);
|
|
443819
|
+
return parts.filter((part) => part.trim().length > 0);
|
|
443956
443820
|
}
|
|
443957
443821
|
function isSensitiveCommand(command) {
|
|
443958
443822
|
const config3 = loadSensitiveCommands();
|
|
443959
443823
|
const enabledCommands = config3.commands.filter((cmd) => cmd.enabled);
|
|
443960
|
-
const
|
|
443961
|
-
for (const
|
|
443962
|
-
const
|
|
443963
|
-
|
|
443964
|
-
|
|
443824
|
+
const commandParts = splitCommand(command);
|
|
443825
|
+
for (const part of commandParts) {
|
|
443826
|
+
const trimmedPart = part.trim();
|
|
443827
|
+
for (const cmd of enabledCommands) {
|
|
443828
|
+
const regex2 = patternToRegex(cmd.pattern);
|
|
443829
|
+
if (regex2.test(`
|
|
443830
|
+
${trimmedPart}`) || regex2.test(trimmedPart)) {
|
|
443831
|
+
return { isSensitive: true, matchedCommand: cmd };
|
|
443832
|
+
}
|
|
443965
443833
|
}
|
|
443966
443834
|
}
|
|
443967
443835
|
return { isSensitive: false };
|
|
@@ -443985,185 +443853,213 @@ var init_sensitiveCommandManager = __esm({
|
|
|
443985
443853
|
PRESET_SENSITIVE_COMMANDS = [
|
|
443986
443854
|
{
|
|
443987
443855
|
id: "rm",
|
|
443988
|
-
pattern: "
|
|
443856
|
+
pattern: "rm ",
|
|
443989
443857
|
description: "Delete files or directories (rm, rm -rf, etc.)",
|
|
443990
443858
|
enabled: true,
|
|
443991
443859
|
isPreset: true
|
|
443992
443860
|
},
|
|
443993
443861
|
{
|
|
443994
443862
|
id: "rmdir",
|
|
443995
|
-
pattern: "
|
|
443863
|
+
pattern: "rmdir ",
|
|
443996
443864
|
description: "Remove directories",
|
|
443997
443865
|
enabled: true,
|
|
443998
443866
|
isPreset: true
|
|
443999
443867
|
},
|
|
444000
443868
|
{
|
|
444001
443869
|
id: "unlink",
|
|
444002
|
-
pattern: "
|
|
443870
|
+
pattern: "unlink ",
|
|
444003
443871
|
description: "Delete files using unlink command",
|
|
444004
443872
|
enabled: true,
|
|
444005
443873
|
isPreset: true
|
|
444006
443874
|
},
|
|
444007
443875
|
{
|
|
444008
443876
|
id: "mv-to-trash",
|
|
444009
|
-
pattern: "
|
|
443877
|
+
pattern: "mv * /tmp",
|
|
444010
443878
|
description: "Move files to trash/tmp (potential data loss)",
|
|
444011
|
-
enabled:
|
|
443879
|
+
enabled: false,
|
|
444012
443880
|
isPreset: true
|
|
444013
443881
|
},
|
|
444014
443882
|
{
|
|
444015
443883
|
id: "chmod",
|
|
444016
|
-
pattern: "
|
|
443884
|
+
pattern: "chmod ",
|
|
444017
443885
|
description: "Change file permissions",
|
|
444018
|
-
enabled:
|
|
443886
|
+
enabled: false,
|
|
444019
443887
|
isPreset: true
|
|
444020
443888
|
},
|
|
444021
443889
|
{
|
|
444022
443890
|
id: "chown",
|
|
444023
|
-
pattern: "
|
|
443891
|
+
pattern: "chown ",
|
|
444024
443892
|
description: "Change file ownership",
|
|
444025
|
-
enabled:
|
|
443893
|
+
enabled: false,
|
|
444026
443894
|
isPreset: true
|
|
444027
443895
|
},
|
|
444028
443896
|
{
|
|
444029
443897
|
id: "dd",
|
|
444030
|
-
pattern: "
|
|
443898
|
+
pattern: "dd ",
|
|
444031
443899
|
description: "Low-level data copy (disk operations)",
|
|
444032
443900
|
enabled: true,
|
|
444033
443901
|
isPreset: true
|
|
444034
443902
|
},
|
|
444035
443903
|
{
|
|
444036
443904
|
id: "mkfs",
|
|
444037
|
-
pattern: "
|
|
443905
|
+
pattern: "mkfs",
|
|
444038
443906
|
description: "Format filesystem",
|
|
444039
443907
|
enabled: true,
|
|
444040
443908
|
isPreset: true
|
|
444041
443909
|
},
|
|
444042
443910
|
{
|
|
444043
443911
|
id: "fdisk",
|
|
444044
|
-
pattern: "
|
|
443912
|
+
pattern: "fdisk ",
|
|
444045
443913
|
description: "Disk partition manipulation",
|
|
444046
443914
|
enabled: true,
|
|
444047
443915
|
isPreset: true
|
|
444048
443916
|
},
|
|
444049
443917
|
{
|
|
444050
443918
|
id: "killall",
|
|
444051
|
-
pattern: "
|
|
443919
|
+
pattern: "killall ",
|
|
444052
443920
|
description: "Kill all processes by name",
|
|
444053
|
-
enabled:
|
|
443921
|
+
enabled: false,
|
|
444054
443922
|
isPreset: true
|
|
444055
443923
|
},
|
|
444056
443924
|
{
|
|
444057
443925
|
id: "pkill",
|
|
444058
|
-
pattern: "
|
|
443926
|
+
pattern: "pkill ",
|
|
444059
443927
|
description: "Kill processes by pattern",
|
|
444060
|
-
enabled:
|
|
443928
|
+
enabled: false,
|
|
444061
443929
|
isPreset: true
|
|
444062
443930
|
},
|
|
444063
443931
|
{
|
|
444064
443932
|
id: "reboot",
|
|
444065
|
-
pattern: "
|
|
443933
|
+
pattern: "reboot",
|
|
444066
443934
|
description: "Reboot the system",
|
|
444067
443935
|
enabled: true,
|
|
444068
443936
|
isPreset: true
|
|
444069
443937
|
},
|
|
444070
443938
|
{
|
|
444071
443939
|
id: "shutdown",
|
|
444072
|
-
pattern: "
|
|
443940
|
+
pattern: "shutdown ",
|
|
444073
443941
|
description: "Shutdown the system",
|
|
444074
443942
|
enabled: true,
|
|
444075
443943
|
isPreset: true
|
|
444076
443944
|
},
|
|
444077
443945
|
{
|
|
444078
443946
|
id: "sudo",
|
|
444079
|
-
pattern: "
|
|
443947
|
+
pattern: "sudo ",
|
|
444080
443948
|
description: "Execute commands with superuser privileges",
|
|
444081
|
-
enabled:
|
|
443949
|
+
enabled: false,
|
|
444082
443950
|
isPreset: true
|
|
444083
443951
|
},
|
|
444084
443952
|
{
|
|
444085
443953
|
id: "su",
|
|
444086
|
-
pattern: "
|
|
443954
|
+
pattern: "su ",
|
|
444087
443955
|
description: "Switch user",
|
|
444088
|
-
enabled:
|
|
443956
|
+
enabled: false,
|
|
444089
443957
|
isPreset: true
|
|
444090
443958
|
},
|
|
444091
443959
|
{
|
|
444092
443960
|
id: "curl-post",
|
|
444093
|
-
pattern: "
|
|
443961
|
+
pattern: "curl*-X POST",
|
|
444094
443962
|
description: "HTTP POST requests (potential data transmission)",
|
|
444095
443963
|
enabled: false,
|
|
444096
443964
|
isPreset: true
|
|
444097
443965
|
},
|
|
444098
443966
|
{
|
|
444099
443967
|
id: "wget",
|
|
444100
|
-
pattern: "
|
|
443968
|
+
pattern: "wget ",
|
|
444101
443969
|
description: "Download files from internet",
|
|
444102
443970
|
enabled: false,
|
|
444103
443971
|
isPreset: true
|
|
444104
443972
|
},
|
|
444105
443973
|
{
|
|
444106
443974
|
id: "git-push",
|
|
444107
|
-
pattern: "git push
|
|
443975
|
+
pattern: "git push",
|
|
444108
443976
|
description: "Push code to remote repository",
|
|
444109
443977
|
enabled: false,
|
|
444110
443978
|
isPreset: true
|
|
444111
443979
|
},
|
|
444112
443980
|
{
|
|
444113
443981
|
id: "git-force-push",
|
|
444114
|
-
pattern: "
|
|
443982
|
+
pattern: "git push*--force",
|
|
444115
443983
|
description: "Force push to remote repository (destructive)",
|
|
444116
443984
|
enabled: true,
|
|
444117
443985
|
isPreset: true
|
|
444118
443986
|
},
|
|
443987
|
+
{
|
|
443988
|
+
id: "git-force-push-short",
|
|
443989
|
+
pattern: "git push*-f ",
|
|
443990
|
+
description: "Force push to remote repository with -f flag (destructive)",
|
|
443991
|
+
enabled: true,
|
|
443992
|
+
isPreset: true
|
|
443993
|
+
},
|
|
444119
443994
|
{
|
|
444120
443995
|
id: "git-reset-hard",
|
|
444121
|
-
pattern: "
|
|
443996
|
+
pattern: "git reset*--hard",
|
|
444122
443997
|
description: "Hard reset git repository (destructive)",
|
|
444123
443998
|
enabled: true,
|
|
444124
443999
|
isPreset: true
|
|
444125
444000
|
},
|
|
444126
444001
|
{
|
|
444127
444002
|
id: "git-clean",
|
|
444128
|
-
pattern: "
|
|
444003
|
+
pattern: "git clean*-f",
|
|
444129
444004
|
description: "Remove untracked files from git repository",
|
|
444130
444005
|
enabled: true,
|
|
444131
444006
|
isPreset: true
|
|
444132
444007
|
},
|
|
444133
444008
|
{
|
|
444134
444009
|
id: "git-revert",
|
|
444135
|
-
pattern: "
|
|
444010
|
+
pattern: "git revert",
|
|
444136
444011
|
description: "Revert git commits",
|
|
444137
|
-
enabled:
|
|
444012
|
+
enabled: false,
|
|
444138
444013
|
isPreset: true
|
|
444139
444014
|
},
|
|
444140
444015
|
{
|
|
444141
444016
|
id: "git-reset",
|
|
444142
|
-
pattern: "
|
|
444017
|
+
pattern: "git reset ",
|
|
444143
444018
|
description: "Reset git repository state",
|
|
444144
|
-
enabled:
|
|
444019
|
+
enabled: false,
|
|
444145
444020
|
isPreset: true
|
|
444146
444021
|
},
|
|
444147
444022
|
{
|
|
444148
444023
|
id: "npm-publish",
|
|
444149
|
-
pattern: "
|
|
444024
|
+
pattern: "npm publish",
|
|
444150
444025
|
description: "Publish package to npm registry",
|
|
444151
444026
|
enabled: true,
|
|
444152
444027
|
isPreset: true
|
|
444153
444028
|
},
|
|
444154
444029
|
{
|
|
444155
444030
|
id: "docker-rm",
|
|
444156
|
-
pattern: "
|
|
444031
|
+
pattern: "docker rm",
|
|
444157
444032
|
description: "Remove Docker containers",
|
|
444158
444033
|
enabled: false,
|
|
444159
444034
|
isPreset: true
|
|
444160
444035
|
},
|
|
444161
444036
|
{
|
|
444162
444037
|
id: "docker-rmi",
|
|
444163
|
-
pattern: "
|
|
444038
|
+
pattern: "docker rmi",
|
|
444164
444039
|
description: "Remove Docker images",
|
|
444165
444040
|
enabled: false,
|
|
444166
444041
|
isPreset: true
|
|
444042
|
+
},
|
|
444043
|
+
{
|
|
444044
|
+
id: "powershell-remove-item",
|
|
444045
|
+
pattern: "Remove-Item ",
|
|
444046
|
+
description: "PowerShell delete files or directories",
|
|
444047
|
+
enabled: true,
|
|
444048
|
+
isPreset: true
|
|
444049
|
+
},
|
|
444050
|
+
{
|
|
444051
|
+
id: "powershell-remove-item-recurse",
|
|
444052
|
+
pattern: "Remove-Item*-Recurse",
|
|
444053
|
+
description: "PowerShell recursive delete (destructive)",
|
|
444054
|
+
enabled: true,
|
|
444055
|
+
isPreset: true
|
|
444056
|
+
},
|
|
444057
|
+
{
|
|
444058
|
+
id: "format-volume",
|
|
444059
|
+
pattern: "Format-Volume",
|
|
444060
|
+
description: "Format disk volume (destructive)",
|
|
444061
|
+
enabled: true,
|
|
444062
|
+
isPreset: true
|
|
444167
444063
|
}
|
|
444168
444064
|
];
|
|
444169
444065
|
}
|
|
@@ -556682,10 +556578,19 @@ function TodoTree({ todos }) {
|
|
|
556682
556578
|
const completedCount = todos.reduce((acc, t2) => acc + (t2.status === "completed" ? 1 : 0), 0);
|
|
556683
556579
|
const sortedTodos = (0, import_react104.useMemo)(() => {
|
|
556684
556580
|
return todos.map((t2, originalIndex) => ({ t: t2, originalIndex })).slice().sort((a, b) => {
|
|
556685
|
-
const
|
|
556686
|
-
|
|
556687
|
-
|
|
556688
|
-
|
|
556581
|
+
const getPriority = (status) => {
|
|
556582
|
+
if (status === "inProgress")
|
|
556583
|
+
return 0;
|
|
556584
|
+
if (status === "pending")
|
|
556585
|
+
return 1;
|
|
556586
|
+
if (status === "completed")
|
|
556587
|
+
return 2;
|
|
556588
|
+
return 1;
|
|
556589
|
+
};
|
|
556590
|
+
const aPriority = getPriority(a.t.status);
|
|
556591
|
+
const bPriority = getPriority(b.t.status);
|
|
556592
|
+
if (aPriority !== bPriority)
|
|
556593
|
+
return aPriority - bPriority;
|
|
556689
556594
|
return a.originalIndex - b.originalIndex;
|
|
556690
556595
|
}).map(({ t: t2 }) => t2);
|
|
556691
556596
|
}, [todos]);
|
|
@@ -556702,10 +556607,18 @@ function TodoTree({ todos }) {
|
|
|
556702
556607
|
const visibleTodos = sortedTodos.slice(pageIndex * PAGE_SIZE2, pageIndex * PAGE_SIZE2 + PAGE_SIZE2);
|
|
556703
556608
|
const hiddenCount = Math.max(0, sortedTodos.length - visibleTodos.length);
|
|
556704
556609
|
const getStatusIcon = (status) => {
|
|
556705
|
-
|
|
556610
|
+
if (status === "completed")
|
|
556611
|
+
return "\u2713";
|
|
556612
|
+
if (status === "inProgress")
|
|
556613
|
+
return "~";
|
|
556614
|
+
return "\u25CB";
|
|
556706
556615
|
};
|
|
556707
556616
|
const getStatusColor = (status) => {
|
|
556708
|
-
|
|
556617
|
+
if (status === "completed")
|
|
556618
|
+
return theme14.colors.success;
|
|
556619
|
+
if (status === "inProgress")
|
|
556620
|
+
return theme14.colors.warning;
|
|
556621
|
+
return theme14.colors.menuSecondary;
|
|
556709
556622
|
};
|
|
556710
556623
|
const renderTodoLine = (todo, index) => {
|
|
556711
556624
|
const statusIcon = getStatusIcon(todo.status);
|
|
@@ -558094,11 +558007,7 @@ var init_AskUserQuestion = __esm({
|
|
|
558094
558007
|
|
|
558095
558008
|
// dist/ui/components/bash/BashCommandConfirmation.js
|
|
558096
558009
|
function sanitizePreviewLine(text3) {
|
|
558097
|
-
|
|
558098
|
-
const withoutAnsi = withoutOsc.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g, "");
|
|
558099
|
-
const withoutControls = withoutAnsi.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "");
|
|
558100
|
-
const withoutTabs = withoutControls.replace(/\t/g, " ");
|
|
558101
|
-
return withoutTabs.replace(/[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]+$/g, "").trim();
|
|
558010
|
+
return text3.replace(/\x1B\][^\x07]*(?:\x07|\x1B\\)/g, "").replace(/\x1B\[[0-?]*[ -/]*[@-~]/g, "").replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "").replace(/\t/g, " ").replace(/[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]+$/g, "").trim();
|
|
558102
558011
|
}
|
|
558103
558012
|
function truncateCommand2(text3, maxWidth = 100) {
|
|
558104
558013
|
if (text3.length <= maxWidth) {
|
|
@@ -558267,13 +558176,16 @@ function BashCommandExecutionStatus({ command, timeout: timeout2 = 3e4, terminal
|
|
|
558267
558176
|
}
|
|
558268
558177
|
};
|
|
558269
558178
|
}, []);
|
|
558270
|
-
const
|
|
558271
|
-
|
|
558272
|
-
|
|
558273
|
-
|
|
558274
|
-
|
|
558275
|
-
|
|
558276
|
-
|
|
558179
|
+
const processedOutput = (0, import_react112.useMemo)(() => {
|
|
558180
|
+
const omittedCount = Math.max(0, totalCommittedLineCountRef.current - maxOutputLines);
|
|
558181
|
+
const visibleOutputLines = omittedCount > 0 ? displayOutputLines.slice(-(maxOutputLines - 1)) : displayOutputLines.slice(-maxOutputLines);
|
|
558182
|
+
const rawProcessedOutput = omittedCount > 0 ? [...visibleOutputLines, `... (${omittedCount} lines omitted)`] : visibleOutputLines;
|
|
558183
|
+
const output3 = [...rawProcessedOutput];
|
|
558184
|
+
while (output3.length < maxOutputLines) {
|
|
558185
|
+
output3.unshift("");
|
|
558186
|
+
}
|
|
558187
|
+
return output3;
|
|
558188
|
+
}, [displayOutputLines, maxOutputLines]);
|
|
558277
558189
|
const handleInputSubmit = (value) => {
|
|
558278
558190
|
sendTerminalInput(value);
|
|
558279
558191
|
setInputValue("");
|
|
@@ -558297,7 +558209,7 @@ function BashCommandExecutionStatus({ command, timeout: timeout2 = 3e4, terminal
|
|
|
558297
558209
|
{ paddingLeft: 2 },
|
|
558298
558210
|
import_react112.default.createElement(Text, { dimColor: true, wrap: "truncate" }, displayCommand)
|
|
558299
558211
|
),
|
|
558300
|
-
import_react112.default.createElement(Box_default, { flexDirection: "column", paddingLeft: 2, marginTop: 1, height: maxOutputLines }, processedOutput.map((line, index) => import_react112.default.createElement(Text, { key: index, wrap: "truncate", dimColor: true }, truncateText2(
|
|
558212
|
+
import_react112.default.createElement(Box_default, { flexDirection: "column", paddingLeft: 2, marginTop: 1, height: maxOutputLines }, processedOutput.map((line, index) => import_react112.default.createElement(Text, { key: index, wrap: "truncate", dimColor: true }, truncateText2(line, maxCommandWidth)))),
|
|
558301
558213
|
needsInput && import_react112.default.createElement(
|
|
558302
558214
|
Box_default,
|
|
558303
558215
|
{ flexDirection: "column", marginTop: 1, paddingLeft: 2 },
|
|
@@ -558867,6 +558779,22 @@ function CodebaseSearchStatus({ status }) {
|
|
|
558867
558779
|
))
|
|
558868
558780
|
);
|
|
558869
558781
|
}
|
|
558782
|
+
if (!status.isSearching) {
|
|
558783
|
+
return import_react117.default.createElement(
|
|
558784
|
+
Box_default,
|
|
558785
|
+
{ flexDirection: "column", paddingLeft: 1 },
|
|
558786
|
+
import_react117.default.createElement(
|
|
558787
|
+
Box_default,
|
|
558788
|
+
{ flexDirection: "row", gap: 1 },
|
|
558789
|
+
import_react117.default.createElement(Text, { color: "green" }, "\u2714 Search Complete")
|
|
558790
|
+
),
|
|
558791
|
+
import_react117.default.createElement(
|
|
558792
|
+
Box_default,
|
|
558793
|
+
{ flexDirection: "column", paddingLeft: 2 },
|
|
558794
|
+
import_react117.default.createElement(Text, { color: "cyan", dimColor: true }, "No relevant results found")
|
|
558795
|
+
)
|
|
558796
|
+
);
|
|
558797
|
+
}
|
|
558870
558798
|
return null;
|
|
558871
558799
|
}
|
|
558872
558800
|
var import_react117;
|
|
@@ -558954,7 +558882,7 @@ var init_CustomCommandConfigPanel = __esm({
|
|
|
558954
558882
|
"use strict";
|
|
558955
558883
|
import_react119 = __toESM(require_react(), 1);
|
|
558956
558884
|
await init_build2();
|
|
558957
|
-
await
|
|
558885
|
+
await init_build5();
|
|
558958
558886
|
init_ThemeContext();
|
|
558959
558887
|
init_I18nContext();
|
|
558960
558888
|
init_custom();
|
|
@@ -558970,7 +558898,19 @@ var init_CustomCommandConfigPanel = __esm({
|
|
|
558970
558898
|
const [errorMessage, setErrorMessage] = (0, import_react119.useState)("");
|
|
558971
558899
|
use_input_default((input2, key) => {
|
|
558972
558900
|
if (key.escape) {
|
|
558973
|
-
|
|
558901
|
+
if (step === "confirm") {
|
|
558902
|
+
setStep("location");
|
|
558903
|
+
} else if (step === "location") {
|
|
558904
|
+
setStep("type");
|
|
558905
|
+
} else if (step === "type") {
|
|
558906
|
+
setStep("description");
|
|
558907
|
+
} else if (step === "description") {
|
|
558908
|
+
setStep("command");
|
|
558909
|
+
} else if (step === "command") {
|
|
558910
|
+
setStep("name");
|
|
558911
|
+
} else if (step === "name") {
|
|
558912
|
+
handleCancel();
|
|
558913
|
+
}
|
|
558974
558914
|
return;
|
|
558975
558915
|
}
|
|
558976
558916
|
if (step === "type") {
|
|
@@ -558993,10 +558933,10 @@ var init_CustomCommandConfigPanel = __esm({
|
|
|
558993
558933
|
if (input2.toLowerCase() === "y") {
|
|
558994
558934
|
handleConfirm();
|
|
558995
558935
|
} else if (input2.toLowerCase() === "n") {
|
|
558996
|
-
|
|
558936
|
+
setStep("location");
|
|
558997
558937
|
}
|
|
558998
558938
|
}
|
|
558999
|
-
}, { isActive:
|
|
558939
|
+
}, { isActive: true });
|
|
559000
558940
|
const handleNameSubmit = (0, import_react119.useCallback)((value) => {
|
|
559001
558941
|
if (value.trim()) {
|
|
559002
558942
|
const trimmedName = value.trim();
|
|
@@ -559062,7 +559002,7 @@ var init_CustomCommandConfigPanel = __esm({
|
|
|
559062
559002
|
{ marginBottom: 1 },
|
|
559063
559003
|
import_react119.default.createElement(Text, { color: theme14.colors.text }, t.customCommand.nameLabel)
|
|
559064
559004
|
),
|
|
559065
|
-
import_react119.default.createElement(
|
|
559005
|
+
import_react119.default.createElement(build_default2, { placeholder: t.customCommand.namePlaceholder, value: commandName, onChange: setCommandName, onSubmit: handleNameSubmit }),
|
|
559066
559006
|
errorMessage && import_react119.default.createElement(
|
|
559067
559007
|
Box_default,
|
|
559068
559008
|
{ marginTop: 1 },
|
|
@@ -559093,7 +559033,7 @@ var init_CustomCommandConfigPanel = __esm({
|
|
|
559093
559033
|
{ marginBottom: 1 },
|
|
559094
559034
|
import_react119.default.createElement(Text, { color: theme14.colors.text }, t.customCommand.commandLabel)
|
|
559095
559035
|
),
|
|
559096
|
-
import_react119.default.createElement(
|
|
559036
|
+
import_react119.default.createElement(build_default2, { placeholder: t.customCommand.commandPlaceholder, value: commandText, onChange: setCommandText, onSubmit: handleCommandSubmit }),
|
|
559097
559037
|
import_react119.default.createElement(
|
|
559098
559038
|
Box_default,
|
|
559099
559039
|
{ marginTop: 1 },
|
|
@@ -559135,7 +559075,7 @@ var init_CustomCommandConfigPanel = __esm({
|
|
|
559135
559075
|
{ marginBottom: 1 },
|
|
559136
559076
|
import_react119.default.createElement(Text, { dimColor: true }, t.customCommand.descriptionHint)
|
|
559137
559077
|
),
|
|
559138
|
-
import_react119.default.createElement(
|
|
559078
|
+
import_react119.default.createElement(build_default2, { placeholder: t.customCommand.descriptionPlaceholder, value: commandDescription, onChange: setCommandDescription, onSubmit: handleDescriptionSubmit }),
|
|
559139
559079
|
import_react119.default.createElement(
|
|
559140
559080
|
Box_default,
|
|
559141
559081
|
{ marginTop: 1 },
|
|
@@ -559390,7 +559330,7 @@ var init_SkillsCreationPanel = __esm({
|
|
|
559390
559330
|
import_react120 = __toESM(require_react(), 1);
|
|
559391
559331
|
await init_build2();
|
|
559392
559332
|
await init_build3();
|
|
559393
|
-
await
|
|
559333
|
+
await init_build5();
|
|
559394
559334
|
init_ThemeContext();
|
|
559395
559335
|
init_I18nContext();
|
|
559396
559336
|
init_skills();
|
|
@@ -559515,10 +559455,31 @@ var init_SkillsCreationPanel = __esm({
|
|
|
559515
559455
|
}
|
|
559516
559456
|
};
|
|
559517
559457
|
}, [step, requirement, projectRoot, t.skillsCreation.errorGeneration]);
|
|
559518
|
-
const keyHandlingActive = step === "mode" || step === "location" || step === "confirm" || step === "ai-location" || step === "ai-generating" || step === "ai-preview" || step === "ai-error";
|
|
559519
559458
|
use_input_default((input2, key) => {
|
|
559520
559459
|
if (key.escape) {
|
|
559521
|
-
|
|
559460
|
+
if (step === "confirm") {
|
|
559461
|
+
setStep("location");
|
|
559462
|
+
} else if (step === "location") {
|
|
559463
|
+
setStep("description");
|
|
559464
|
+
} else if (step === "description") {
|
|
559465
|
+
setStep("name");
|
|
559466
|
+
} else if (step === "name") {
|
|
559467
|
+
setStep("mode");
|
|
559468
|
+
} else if (step === "ai-edit-name") {
|
|
559469
|
+
setStep("ai-preview");
|
|
559470
|
+
} else if (step === "ai-preview") {
|
|
559471
|
+
setStep("ai-location");
|
|
559472
|
+
} else if (step === "ai-location") {
|
|
559473
|
+
setStep("ai-requirement");
|
|
559474
|
+
} else if (step === "ai-requirement") {
|
|
559475
|
+
setStep("mode");
|
|
559476
|
+
} else if (step === "ai-error") {
|
|
559477
|
+
setStep("ai-location");
|
|
559478
|
+
} else if (step === "ai-generating") {
|
|
559479
|
+
handleCancel();
|
|
559480
|
+
} else if (step === "mode") {
|
|
559481
|
+
handleCancel();
|
|
559482
|
+
}
|
|
559522
559483
|
return;
|
|
559523
559484
|
}
|
|
559524
559485
|
if (step === "mode") {
|
|
@@ -559550,7 +559511,7 @@ var init_SkillsCreationPanel = __esm({
|
|
|
559550
559511
|
if (input2.toLowerCase() === "y") {
|
|
559551
559512
|
handleConfirmManual();
|
|
559552
559513
|
} else if (input2.toLowerCase() === "n") {
|
|
559553
|
-
|
|
559514
|
+
setStep("location");
|
|
559554
559515
|
}
|
|
559555
559516
|
return;
|
|
559556
559517
|
}
|
|
@@ -559582,7 +559543,7 @@ var init_SkillsCreationPanel = __esm({
|
|
|
559582
559543
|
setStep("ai-generating");
|
|
559583
559544
|
}
|
|
559584
559545
|
}
|
|
559585
|
-
}, { isActive:
|
|
559546
|
+
}, { isActive: true });
|
|
559586
559547
|
return import_react120.default.createElement(
|
|
559587
559548
|
Box_default,
|
|
559588
559549
|
{ flexDirection: "column", padding: 1, borderStyle: "round", borderColor: theme14.colors.border },
|
|
@@ -559644,7 +559605,7 @@ var init_SkillsCreationPanel = __esm({
|
|
|
559644
559605
|
{ marginBottom: 1 },
|
|
559645
559606
|
import_react120.default.createElement(Text, { dimColor: true }, t.skillsCreation.nameHint)
|
|
559646
559607
|
),
|
|
559647
|
-
import_react120.default.createElement(
|
|
559608
|
+
import_react120.default.createElement(build_default2, { placeholder: t.skillsCreation.namePlaceholder, value: skillName, onChange: setSkillName, onSubmit: handleNameSubmit }),
|
|
559648
559609
|
errorMessage && import_react120.default.createElement(
|
|
559649
559610
|
Box_default,
|
|
559650
559611
|
{ marginTop: 1 },
|
|
@@ -559680,7 +559641,7 @@ var init_SkillsCreationPanel = __esm({
|
|
|
559680
559641
|
{ marginBottom: 1 },
|
|
559681
559642
|
import_react120.default.createElement(Text, { dimColor: true }, t.skillsCreation.descriptionHint)
|
|
559682
559643
|
),
|
|
559683
|
-
import_react120.default.createElement(
|
|
559644
|
+
import_react120.default.createElement(build_default2, { placeholder: t.skillsCreation.descriptionPlaceholder, value: description, onChange: setDescription, onSubmit: handleDescriptionSubmit }),
|
|
559684
559645
|
import_react120.default.createElement(
|
|
559685
559646
|
Box_default,
|
|
559686
559647
|
{ marginTop: 1 },
|
|
@@ -559840,7 +559801,7 @@ var init_SkillsCreationPanel = __esm({
|
|
|
559840
559801
|
{ marginBottom: 1 },
|
|
559841
559802
|
import_react120.default.createElement(Text, { dimColor: true }, t.skillsCreation.requirementHint)
|
|
559842
559803
|
),
|
|
559843
|
-
import_react120.default.createElement(
|
|
559804
|
+
import_react120.default.createElement(build_default2, { placeholder: t.skillsCreation.requirementPlaceholder, value: requirement, onChange: setRequirement, onSubmit: handleRequirementSubmit }),
|
|
559844
559805
|
import_react120.default.createElement(
|
|
559845
559806
|
Box_default,
|
|
559846
559807
|
{ marginTop: 1 },
|
|
@@ -560095,7 +560056,7 @@ var init_SkillsCreationPanel = __esm({
|
|
|
560095
560056
|
{ marginBottom: 1 },
|
|
560096
560057
|
import_react120.default.createElement(Text, { dimColor: true }, t.skillsCreation.editNameHint)
|
|
560097
560058
|
),
|
|
560098
|
-
import_react120.default.createElement(
|
|
560059
|
+
import_react120.default.createElement(build_default2, { placeholder: t.skillsCreation.editNamePlaceholder, value: skillName, onChange: setSkillName, onSubmit: handleEditNameSubmit }),
|
|
560099
560060
|
errorMessage && import_react120.default.createElement(
|
|
560100
560061
|
Box_default,
|
|
560101
560062
|
{ marginTop: 1 },
|
|
@@ -560136,7 +560097,11 @@ var init_RoleCreationPanel = __esm({
|
|
|
560136
560097
|
const keyHandlingActive = step === "location" || step === "confirm";
|
|
560137
560098
|
use_input_default((input2, key) => {
|
|
560138
560099
|
if (key.escape) {
|
|
560139
|
-
|
|
560100
|
+
if (step === "confirm") {
|
|
560101
|
+
setStep("location");
|
|
560102
|
+
} else {
|
|
560103
|
+
handleCancel();
|
|
560104
|
+
}
|
|
560140
560105
|
return;
|
|
560141
560106
|
}
|
|
560142
560107
|
if (step === "location") {
|
|
@@ -560153,7 +560118,7 @@ var init_RoleCreationPanel = __esm({
|
|
|
560153
560118
|
if (input2.toLowerCase() === "y") {
|
|
560154
560119
|
handleConfirm();
|
|
560155
560120
|
} else if (input2.toLowerCase() === "n") {
|
|
560156
|
-
|
|
560121
|
+
setStep("location");
|
|
560157
560122
|
}
|
|
560158
560123
|
}
|
|
560159
560124
|
}, { isActive: keyHandlingActive });
|
|
@@ -561385,15 +561350,11 @@ function WorkingDirectoryPanel({ onClose }) {
|
|
|
561385
561350
|
}
|
|
561386
561351
|
return;
|
|
561387
561352
|
}
|
|
561388
|
-
if (
|
|
561389
|
-
if (
|
|
561353
|
+
if (confirmDelete) {
|
|
561354
|
+
if (key.escape) {
|
|
561390
561355
|
setConfirmDelete(false);
|
|
561391
561356
|
return;
|
|
561392
561357
|
}
|
|
561393
|
-
onClose();
|
|
561394
|
-
return;
|
|
561395
|
-
}
|
|
561396
|
-
if (confirmDelete) {
|
|
561397
561358
|
if (input2.toLowerCase() === "y") {
|
|
561398
561359
|
const pathsToDelete = Array.from(markedDirs);
|
|
561399
561360
|
removeWorkingDirectories(pathsToDelete).then(() => {
|
|
@@ -561412,6 +561373,10 @@ function WorkingDirectoryPanel({ onClose }) {
|
|
|
561412
561373
|
}
|
|
561413
561374
|
return;
|
|
561414
561375
|
}
|
|
561376
|
+
if (key.escape) {
|
|
561377
|
+
onClose();
|
|
561378
|
+
return;
|
|
561379
|
+
}
|
|
561415
561380
|
if (key.upArrow) {
|
|
561416
561381
|
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
561417
561382
|
return;
|
|
@@ -564804,6 +564769,7 @@ function formatTodoContext(todos) {
|
|
|
564804
564769
|
}
|
|
564805
564770
|
const statusSymbol = {
|
|
564806
564771
|
pending: "[ ]",
|
|
564772
|
+
inProgress: "[~]",
|
|
564807
564773
|
completed: "[x]"
|
|
564808
564774
|
};
|
|
564809
564775
|
const lines = [
|
|
@@ -568877,30 +568843,17 @@ var init_codebaseIndexAgent = __esm({
|
|
|
568877
568843
|
this.progressCallback = progressCallback;
|
|
568878
568844
|
}
|
|
568879
568845
|
try {
|
|
568880
|
-
|
|
568881
|
-
|
|
568882
|
-
|
|
568883
|
-
"
|
|
568884
|
-
|
|
568885
|
-
|
|
568886
|
-
|
|
568887
|
-
|
|
568888
|
-
"**/out/**",
|
|
568889
|
-
"**/coverage/**",
|
|
568890
|
-
"**/.next/**",
|
|
568891
|
-
"**/.nuxt/**",
|
|
568892
|
-
"**/.cache/**",
|
|
568893
|
-
"**/*.min.js",
|
|
568894
|
-
"**/*.min.css",
|
|
568895
|
-
"**/*.map",
|
|
568896
|
-
"**/package-lock.json",
|
|
568897
|
-
"**/yarn.lock",
|
|
568898
|
-
"**/pnpm-lock.yaml"
|
|
568899
|
-
],
|
|
568846
|
+
this.fileWatcher = esm_default.watch(this.projectRoot, {
|
|
568847
|
+
ignored: (filePath) => {
|
|
568848
|
+
const relativePath = path50.relative(this.projectRoot, filePath);
|
|
568849
|
+
if (!relativePath || relativePath === ".") {
|
|
568850
|
+
return false;
|
|
568851
|
+
}
|
|
568852
|
+
return this.ignoreFilter.ignores(relativePath);
|
|
568853
|
+
},
|
|
568900
568854
|
ignoreInitial: true,
|
|
568901
|
-
|
|
568902
|
-
|
|
568903
|
-
// Removed awaitWriteFinish - using debounce instead to reduce polling overhead
|
|
568855
|
+
// Don't trigger events for initial scan
|
|
568856
|
+
persistent: true
|
|
568904
568857
|
});
|
|
568905
568858
|
this.fileWatcher.on("add", (filePath) => {
|
|
568906
568859
|
const ext = path50.extname(filePath);
|
|
@@ -570668,16 +570621,13 @@ function usePanelState() {
|
|
|
570668
570621
|
return true;
|
|
570669
570622
|
}
|
|
570670
570623
|
if (showCustomCommandConfig) {
|
|
570671
|
-
|
|
570672
|
-
return true;
|
|
570624
|
+
return false;
|
|
570673
570625
|
}
|
|
570674
570626
|
if (showSkillsCreation) {
|
|
570675
|
-
|
|
570676
|
-
return true;
|
|
570627
|
+
return false;
|
|
570677
570628
|
}
|
|
570678
570629
|
if (showRoleCreation) {
|
|
570679
|
-
|
|
570680
|
-
return true;
|
|
570630
|
+
return false;
|
|
570681
570631
|
}
|
|
570682
570632
|
if (showRoleDeletion) {
|
|
570683
570633
|
setShowRoleDeletion(false);
|
|
@@ -570688,8 +570638,7 @@ function usePanelState() {
|
|
|
570688
570638
|
return true;
|
|
570689
570639
|
}
|
|
570690
570640
|
if (showWorkingDirPanel) {
|
|
570691
|
-
|
|
570692
|
-
return true;
|
|
570641
|
+
return false;
|
|
570693
570642
|
}
|
|
570694
570643
|
if (showReviewCommitPanel) {
|
|
570695
570644
|
setShowReviewCommitPanel(false);
|
package/bundle/package.json
CHANGED