@dexto/tui 1.6.8 → 1.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/overlays/LoginOverlay.cjs +41 -50
- package/dist/components/overlays/LoginOverlay.d.ts.map +1 -1
- package/dist/components/overlays/LoginOverlay.js +43 -44
- package/dist/components/overlays/ModelSelectorRefactored.cjs +543 -221
- package/dist/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
- package/dist/components/overlays/ModelSelectorRefactored.js +553 -223
- package/dist/components/overlays/SessionSelectorRefactored.cjs +3 -0
- package/dist/components/overlays/SessionSelectorRefactored.d.ts.map +1 -1
- package/dist/components/overlays/SessionSelectorRefactored.js +3 -0
- package/dist/containers/OverlayContainer.cjs +35 -3
- package/dist/containers/OverlayContainer.d.ts.map +1 -1
- package/dist/containers/OverlayContainer.js +36 -3
- package/dist/hooks/useInputOrchestrator.cjs +1 -1
- package/dist/hooks/useInputOrchestrator.d.ts.map +1 -1
- package/dist/hooks/useInputOrchestrator.js +1 -1
- package/dist/host/index.cjs +12 -13
- package/dist/host/index.d.ts +23 -15
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +10 -11
- package/dist/index.d.cts +17 -12
- package/dist/interactive-commands/auth/index.d.ts +1 -1
- package/dist/interactive-commands/commands.cjs +2 -0
- package/dist/interactive-commands/commands.d.ts.map +1 -1
- package/dist/interactive-commands/commands.js +3 -1
- package/dist/interactive-commands/model/index.cjs +1 -1
- package/dist/interactive-commands/model/index.js +1 -1
- package/dist/interactive-commands/session/index.cjs +2 -0
- package/dist/interactive-commands/session/index.d.ts +2 -1
- package/dist/interactive-commands/session/index.d.ts.map +1 -1
- package/dist/interactive-commands/session/index.js +2 -1
- package/dist/interactive-commands/session/session-commands.cjs +26 -0
- package/dist/interactive-commands/session/session-commands.d.ts +5 -0
- package/dist/interactive-commands/session/session-commands.d.ts.map +1 -1
- package/dist/interactive-commands/session/session-commands.js +25 -0
- package/dist/utils/modelOrdering.cjs +106 -0
- package/dist/utils/modelOrdering.d.ts +7 -0
- package/dist/utils/modelOrdering.d.ts.map +1 -0
- package/dist/utils/modelOrdering.js +81 -0
- package/dist/utils/modelOrdering.test.cjs +59 -0
- package/dist/utils/modelOrdering.test.d.ts +2 -0
- package/dist/utils/modelOrdering.test.d.ts.map +1 -0
- package/dist/utils/modelOrdering.test.js +61 -0
- package/package.json +4 -4
|
@@ -101,6 +101,9 @@ const SessionSelector = (0, import_react.forwardRef)(
|
|
|
101
101
|
} else {
|
|
102
102
|
parts.push("New Session");
|
|
103
103
|
}
|
|
104
|
+
if (session.metadata?.parentSessionId) {
|
|
105
|
+
parts.push(`forked from ${session.metadata.parentSessionId.slice(0, 8)}`);
|
|
106
|
+
}
|
|
104
107
|
parts.push(session.id.slice(0, 8));
|
|
105
108
|
if (session.metadata?.lastActivity) {
|
|
106
109
|
const now = Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionSelectorRefactored.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/SessionSelectorRefactored.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAuE,MAAM,OAAO,CAAC;AAE5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAI/D,UAAU,oBAAoB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAQD;;;;GAIG;AACH,QAAA,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"SessionSelectorRefactored.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/SessionSelectorRefactored.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAuE,MAAM,OAAO,CAAC;AAE5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAI/D,UAAU,oBAAoB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAQD;;;;GAIG;AACH,QAAA,MAAM,eAAe,oGAmKpB,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -78,6 +78,9 @@ const SessionSelector = forwardRef(
|
|
|
78
78
|
} else {
|
|
79
79
|
parts.push("New Session");
|
|
80
80
|
}
|
|
81
|
+
if (session.metadata?.parentSessionId) {
|
|
82
|
+
parts.push(`forked from ${session.metadata.parentSessionId.slice(0, 8)}`);
|
|
83
|
+
}
|
|
81
84
|
parts.push(session.id.slice(0, 8));
|
|
82
85
|
if (session.metadata?.lastActivity) {
|
|
83
86
|
const now = Date.now();
|
|
@@ -336,6 +336,18 @@ const OverlayContainer = (0, import_react.forwardRef)(
|
|
|
336
336
|
}
|
|
337
337
|
return null;
|
|
338
338
|
};
|
|
339
|
+
const persistRecentModel = (0, import_react.useCallback)(
|
|
340
|
+
async (provider, model) => {
|
|
341
|
+
try {
|
|
342
|
+
await (0, import_agent_management.recordRecentModel)({ provider, model });
|
|
343
|
+
} catch (error) {
|
|
344
|
+
agent.logger.debug(
|
|
345
|
+
`Failed to persist recent model (${provider}/${model}): ${error instanceof Error ? error.message : String(error)}`
|
|
346
|
+
);
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
[agent]
|
|
350
|
+
);
|
|
339
351
|
const handleModelSelect = (0, import_react.useCallback)(
|
|
340
352
|
async (provider, model, displayName, baseURL, reasoningVariant) => {
|
|
341
353
|
if (provider === "dexto-nova") {
|
|
@@ -388,6 +400,7 @@ const OverlayContainer = (0, import_react.forwardRef)(
|
|
|
388
400
|
},
|
|
389
401
|
session.id || void 0
|
|
390
402
|
);
|
|
403
|
+
await persistRecentModel(provider, model);
|
|
391
404
|
setSession((prev) => ({ ...prev, modelName: displayName || model }));
|
|
392
405
|
setMessages((prev) => [
|
|
393
406
|
...prev,
|
|
@@ -434,7 +447,16 @@ const OverlayContainer = (0, import_react.forwardRef)(
|
|
|
434
447
|
]);
|
|
435
448
|
}
|
|
436
449
|
},
|
|
437
|
-
[
|
|
450
|
+
[
|
|
451
|
+
setUi,
|
|
452
|
+
setInput,
|
|
453
|
+
setMessages,
|
|
454
|
+
setSession,
|
|
455
|
+
agent,
|
|
456
|
+
session.id,
|
|
457
|
+
buffer,
|
|
458
|
+
persistRecentModel
|
|
459
|
+
]
|
|
438
460
|
);
|
|
439
461
|
const handleSetDefaultModel = (0, import_react.useCallback)(
|
|
440
462
|
async (provider, model, displayName, baseURL, reasoningVariant) => {
|
|
@@ -489,6 +511,7 @@ const OverlayContainer = (0, import_react.forwardRef)(
|
|
|
489
511
|
},
|
|
490
512
|
session.id || void 0
|
|
491
513
|
);
|
|
514
|
+
await persistRecentModel(provider, model);
|
|
492
515
|
setSession((prev) => ({ ...prev, modelName: displayName || model }));
|
|
493
516
|
setMessages((prev) => [
|
|
494
517
|
...prev,
|
|
@@ -538,7 +561,7 @@ const OverlayContainer = (0, import_react.forwardRef)(
|
|
|
538
561
|
]);
|
|
539
562
|
}
|
|
540
563
|
},
|
|
541
|
-
[agent, setMessages, setSession, setUi, session.id]
|
|
564
|
+
[agent, setMessages, setSession, setUi, session.id, persistRecentModel]
|
|
542
565
|
);
|
|
543
566
|
const [editingModel, setEditingModel] = (0, import_react.useState)(null);
|
|
544
567
|
const handleAddCustomModel = (0, import_react.useCallback)(() => {
|
|
@@ -638,6 +661,7 @@ const OverlayContainer = (0, import_react.forwardRef)(
|
|
|
638
661
|
},
|
|
639
662
|
session.id || void 0
|
|
640
663
|
);
|
|
664
|
+
await persistRecentModel(pending.provider, pending.model);
|
|
641
665
|
setSession((prev) => ({ ...prev, modelName: pendingDisplayName }));
|
|
642
666
|
setMessages((prev) => [
|
|
643
667
|
...prev,
|
|
@@ -660,7 +684,15 @@ const OverlayContainer = (0, import_react.forwardRef)(
|
|
|
660
684
|
]);
|
|
661
685
|
}
|
|
662
686
|
},
|
|
663
|
-
[
|
|
687
|
+
[
|
|
688
|
+
ui.pendingModelSwitch,
|
|
689
|
+
setUi,
|
|
690
|
+
setMessages,
|
|
691
|
+
setSession,
|
|
692
|
+
agent,
|
|
693
|
+
session.id,
|
|
694
|
+
persistRecentModel
|
|
695
|
+
]
|
|
664
696
|
);
|
|
665
697
|
const handleApiKeyClose = (0, import_react.useCallback)(() => {
|
|
666
698
|
setUi((prev) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../src/containers/OverlayContainer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAyE,MAAM,OAAO,CAAC;AAG9F,OAAO,KAAK,EAAE,UAAU,EAAmD,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../src/containers/OverlayContainer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAyE,MAAM,OAAO,CAAC;AAG9F,OAAO,KAAK,EAAE,UAAU,EAAmD,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,iCAAiC,CAAC;AAuIzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAsC3D,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,qBAAqB;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,mDAAmD;IACnD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,sGA6vF5B,CAAC"}
|
|
@@ -33,6 +33,7 @@ import CustomModelWizard from "../components/overlays/CustomModelWizard.js";
|
|
|
33
33
|
import {
|
|
34
34
|
getProviderKeyStatus,
|
|
35
35
|
loadGlobalPreferences,
|
|
36
|
+
recordRecentModel,
|
|
36
37
|
updateGlobalPreferences
|
|
37
38
|
} from "@dexto/agent-management";
|
|
38
39
|
import ApiKeyInput from "../components/overlays/ApiKeyInput.js";
|
|
@@ -321,6 +322,18 @@ const OverlayContainer = forwardRef(
|
|
|
321
322
|
}
|
|
322
323
|
return null;
|
|
323
324
|
};
|
|
325
|
+
const persistRecentModel = useCallback(
|
|
326
|
+
async (provider, model) => {
|
|
327
|
+
try {
|
|
328
|
+
await recordRecentModel({ provider, model });
|
|
329
|
+
} catch (error) {
|
|
330
|
+
agent.logger.debug(
|
|
331
|
+
`Failed to persist recent model (${provider}/${model}): ${error instanceof Error ? error.message : String(error)}`
|
|
332
|
+
);
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
[agent]
|
|
336
|
+
);
|
|
324
337
|
const handleModelSelect = useCallback(
|
|
325
338
|
async (provider, model, displayName, baseURL, reasoningVariant) => {
|
|
326
339
|
if (provider === "dexto-nova") {
|
|
@@ -373,6 +386,7 @@ const OverlayContainer = forwardRef(
|
|
|
373
386
|
},
|
|
374
387
|
session.id || void 0
|
|
375
388
|
);
|
|
389
|
+
await persistRecentModel(provider, model);
|
|
376
390
|
setSession((prev) => ({ ...prev, modelName: displayName || model }));
|
|
377
391
|
setMessages((prev) => [
|
|
378
392
|
...prev,
|
|
@@ -419,7 +433,16 @@ const OverlayContainer = forwardRef(
|
|
|
419
433
|
]);
|
|
420
434
|
}
|
|
421
435
|
},
|
|
422
|
-
[
|
|
436
|
+
[
|
|
437
|
+
setUi,
|
|
438
|
+
setInput,
|
|
439
|
+
setMessages,
|
|
440
|
+
setSession,
|
|
441
|
+
agent,
|
|
442
|
+
session.id,
|
|
443
|
+
buffer,
|
|
444
|
+
persistRecentModel
|
|
445
|
+
]
|
|
423
446
|
);
|
|
424
447
|
const handleSetDefaultModel = useCallback(
|
|
425
448
|
async (provider, model, displayName, baseURL, reasoningVariant) => {
|
|
@@ -474,6 +497,7 @@ const OverlayContainer = forwardRef(
|
|
|
474
497
|
},
|
|
475
498
|
session.id || void 0
|
|
476
499
|
);
|
|
500
|
+
await persistRecentModel(provider, model);
|
|
477
501
|
setSession((prev) => ({ ...prev, modelName: displayName || model }));
|
|
478
502
|
setMessages((prev) => [
|
|
479
503
|
...prev,
|
|
@@ -523,7 +547,7 @@ const OverlayContainer = forwardRef(
|
|
|
523
547
|
]);
|
|
524
548
|
}
|
|
525
549
|
},
|
|
526
|
-
[agent, setMessages, setSession, setUi, session.id]
|
|
550
|
+
[agent, setMessages, setSession, setUi, session.id, persistRecentModel]
|
|
527
551
|
);
|
|
528
552
|
const [editingModel, setEditingModel] = useState(null);
|
|
529
553
|
const handleAddCustomModel = useCallback(() => {
|
|
@@ -623,6 +647,7 @@ const OverlayContainer = forwardRef(
|
|
|
623
647
|
},
|
|
624
648
|
session.id || void 0
|
|
625
649
|
);
|
|
650
|
+
await persistRecentModel(pending.provider, pending.model);
|
|
626
651
|
setSession((prev) => ({ ...prev, modelName: pendingDisplayName }));
|
|
627
652
|
setMessages((prev) => [
|
|
628
653
|
...prev,
|
|
@@ -645,7 +670,15 @@ const OverlayContainer = forwardRef(
|
|
|
645
670
|
]);
|
|
646
671
|
}
|
|
647
672
|
},
|
|
648
|
-
[
|
|
673
|
+
[
|
|
674
|
+
ui.pendingModelSwitch,
|
|
675
|
+
setUi,
|
|
676
|
+
setMessages,
|
|
677
|
+
setSession,
|
|
678
|
+
agent,
|
|
679
|
+
session.id,
|
|
680
|
+
persistRecentModel
|
|
681
|
+
]
|
|
649
682
|
);
|
|
650
683
|
const handleApiKeyClose = useCallback(() => {
|
|
651
684
|
setUi((prev) => ({
|
|
@@ -355,7 +355,7 @@ function useInputOrchestrator({
|
|
|
355
355
|
handleCtrlC();
|
|
356
356
|
return;
|
|
357
357
|
}
|
|
358
|
-
if (key.shift && key.tab && !key.ctrl && !key.meta && currentApproval === null) {
|
|
358
|
+
if (key.shift && key.tab && !key.ctrl && !key.meta && currentApproval === null && currentUi.activeOverlay === "none") {
|
|
359
359
|
setUi((prev) => {
|
|
360
360
|
const isNormal = !prev.planModeActive && !prev.autoApproveEdits && !prev.bypassPermissions;
|
|
361
361
|
if (isNormal) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputOrchestrator.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputOrchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAe,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAMtE;;;GAGG;AACH,MAAM,WAAW,GAAG;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAC;CAClB;AAyCD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,yDAAyD;IACzD,OAAO,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,4CAA4C;IAC5C,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,qDAAqD;IACrD,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzE,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;CAC3B;AAsBD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,EAAE,EACF,QAAQ,EACR,KAAK,EACL,OAAO,EACP,cAAc,EACd,MAAM,EACN,KAAK,EACL,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,QAAQ,GACX,EAAE,yBAAyB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"useInputOrchestrator.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -328,7 +328,7 @@ function useInputOrchestrator({
|
|
|
328
328
|
handleCtrlC();
|
|
329
329
|
return;
|
|
330
330
|
}
|
|
331
|
-
if (key.shift && key.tab && !key.ctrl && !key.meta && currentApproval === null) {
|
|
331
|
+
if (key.shift && key.tab && !key.ctrl && !key.meta && currentApproval === null && currentUi.activeOverlay === "none") {
|
|
332
332
|
setUi((prev) => {
|
|
333
333
|
const isNormal = !prev.planModeActive && !prev.autoApproveEdits && !prev.bypassPermissions;
|
|
334
334
|
if (isNormal) {
|
package/dist/host/index.cjs
CHANGED
|
@@ -19,17 +19,17 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var host_exports = {};
|
|
20
20
|
__export(host_exports, {
|
|
21
21
|
applyLayeredEnvironmentLoading: () => applyLayeredEnvironmentLoading,
|
|
22
|
-
beginOAuthLogin: () => beginOAuthLogin,
|
|
23
22
|
canUseDextoProvider: () => canUseDextoProvider,
|
|
24
23
|
captureAnalytics: () => captureAnalytics,
|
|
25
24
|
ensureDextoApiKeyForAuthToken: () => ensureDextoApiKeyForAuthToken,
|
|
26
|
-
getDefaultOAuthConfig: () => getDefaultOAuthConfig,
|
|
27
25
|
getProviderDisplayName: () => getProviderDisplayName,
|
|
28
26
|
getProviderInstructions: () => getProviderInstructions,
|
|
29
27
|
getTuiRuntimeServices: () => getTuiRuntimeServices,
|
|
30
28
|
isUsingDextoCredits: () => isUsingDextoCredits,
|
|
31
29
|
isValidApiKeyFormat: () => isValidApiKeyFormat,
|
|
32
30
|
loadAuth: () => loadAuth,
|
|
31
|
+
performDeviceCodeLogin: () => performDeviceCodeLogin,
|
|
32
|
+
persistOAuthLoginResult: () => persistOAuthLoginResult,
|
|
33
33
|
registerGracefulShutdown: () => registerGracefulShutdown,
|
|
34
34
|
removeAuth: () => removeAuth,
|
|
35
35
|
removeDextoApiKeyFromEnv: () => removeDextoApiKeyFromEnv,
|
|
@@ -67,18 +67,17 @@ function isValidApiKeyFormat(apiKey, provider) {
|
|
|
67
67
|
function getProviderInstructions(provider) {
|
|
68
68
|
return runtimeServices.getProviderInstructions?.(provider) ?? null;
|
|
69
69
|
}
|
|
70
|
-
function
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
throw missingHostMethod("defaultOAuthConfig");
|
|
70
|
+
async function performDeviceCodeLogin(options) {
|
|
71
|
+
if (!runtimeServices.performDeviceCodeLogin) {
|
|
72
|
+
throw missingHostMethod("performDeviceCodeLogin");
|
|
74
73
|
}
|
|
75
|
-
return
|
|
74
|
+
return runtimeServices.performDeviceCodeLogin(options);
|
|
76
75
|
}
|
|
77
|
-
async function
|
|
78
|
-
if (!runtimeServices.
|
|
79
|
-
throw missingHostMethod("
|
|
76
|
+
async function persistOAuthLoginResult(result, options) {
|
|
77
|
+
if (!runtimeServices.persistOAuthLoginResult) {
|
|
78
|
+
throw missingHostMethod("persistOAuthLoginResult");
|
|
80
79
|
}
|
|
81
|
-
return runtimeServices.
|
|
80
|
+
return runtimeServices.persistOAuthLoginResult(result, options);
|
|
82
81
|
}
|
|
83
82
|
async function ensureDextoApiKeyForAuthToken(authToken, options) {
|
|
84
83
|
if (!runtimeServices.ensureDextoApiKeyForAuthToken) {
|
|
@@ -125,17 +124,17 @@ async function canUseDextoProvider() {
|
|
|
125
124
|
// Annotate the CommonJS export names for ESM import in node:
|
|
126
125
|
0 && (module.exports = {
|
|
127
126
|
applyLayeredEnvironmentLoading,
|
|
128
|
-
beginOAuthLogin,
|
|
129
127
|
canUseDextoProvider,
|
|
130
128
|
captureAnalytics,
|
|
131
129
|
ensureDextoApiKeyForAuthToken,
|
|
132
|
-
getDefaultOAuthConfig,
|
|
133
130
|
getProviderDisplayName,
|
|
134
131
|
getProviderInstructions,
|
|
135
132
|
getTuiRuntimeServices,
|
|
136
133
|
isUsingDextoCredits,
|
|
137
134
|
isValidApiKeyFormat,
|
|
138
135
|
loadAuth,
|
|
136
|
+
performDeviceCodeLogin,
|
|
137
|
+
persistOAuthLoginResult,
|
|
139
138
|
registerGracefulShutdown,
|
|
140
139
|
removeAuth,
|
|
141
140
|
removeDextoApiKeyFromEnv,
|
package/dist/host/index.d.ts
CHANGED
|
@@ -10,12 +10,6 @@ export interface TuiAuthConfig {
|
|
|
10
10
|
dextoKeyId?: string | undefined;
|
|
11
11
|
dextoApiKeySource?: 'provisioned' | 'user-supplied' | undefined;
|
|
12
12
|
}
|
|
13
|
-
export interface TuiOAuthConfig {
|
|
14
|
-
authUrl: string;
|
|
15
|
-
clientId: string;
|
|
16
|
-
provider?: string;
|
|
17
|
-
scopes?: string[];
|
|
18
|
-
}
|
|
19
13
|
export interface TuiOAuthResult {
|
|
20
14
|
accessToken: string;
|
|
21
15
|
refreshToken?: string | undefined;
|
|
@@ -26,15 +20,23 @@ export interface TuiOAuthResult {
|
|
|
26
20
|
name?: string | undefined;
|
|
27
21
|
} | undefined;
|
|
28
22
|
}
|
|
29
|
-
export interface
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
export interface TuiDeviceLoginPrompt {
|
|
24
|
+
userCode: string;
|
|
25
|
+
verificationUrl: string;
|
|
26
|
+
verificationUrlComplete: string | null;
|
|
27
|
+
expiresIn: number;
|
|
32
28
|
}
|
|
33
29
|
export type TuiDextoApiKeyProvisionStatusLevel = 'info' | 'success' | 'warning' | 'error';
|
|
34
30
|
export interface TuiDextoApiKeyProvisionStatus {
|
|
35
31
|
level: TuiDextoApiKeyProvisionStatusLevel;
|
|
36
32
|
message: string;
|
|
37
33
|
}
|
|
34
|
+
export interface TuiPersistedLoginResult {
|
|
35
|
+
email?: string | undefined;
|
|
36
|
+
userId?: string | undefined;
|
|
37
|
+
keyId?: string | undefined;
|
|
38
|
+
hasDextoApiKey: boolean;
|
|
39
|
+
}
|
|
38
40
|
export interface TuiRuntimeServices {
|
|
39
41
|
registerGracefulShutdown?: (getAgent: () => DextoAgent, options: {
|
|
40
42
|
inkMode: boolean;
|
|
@@ -48,10 +50,13 @@ export interface TuiRuntimeServices {
|
|
|
48
50
|
content: string;
|
|
49
51
|
url?: string | undefined;
|
|
50
52
|
} | null;
|
|
51
|
-
|
|
53
|
+
performDeviceCodeLogin?: (options?: {
|
|
52
54
|
signal?: AbortSignal | undefined;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
onPrompt?: ((prompt: TuiDeviceLoginPrompt) => void) | undefined;
|
|
56
|
+
}) => Promise<TuiOAuthResult>;
|
|
57
|
+
persistOAuthLoginResult?: (result: TuiOAuthResult, options?: {
|
|
58
|
+
onProvisionStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
|
|
59
|
+
}) => Promise<TuiPersistedLoginResult>;
|
|
55
60
|
ensureDextoApiKeyForAuthToken?: (authToken: string, options?: {
|
|
56
61
|
onStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
|
|
57
62
|
}) => Promise<{
|
|
@@ -84,10 +89,13 @@ export declare function getProviderInstructions(provider: LLMProvider): {
|
|
|
84
89
|
content: string;
|
|
85
90
|
url?: string | undefined;
|
|
86
91
|
} | null;
|
|
87
|
-
export declare function
|
|
88
|
-
export declare function beginOAuthLogin(config: TuiOAuthConfig, options?: {
|
|
92
|
+
export declare function performDeviceCodeLogin(options?: {
|
|
89
93
|
signal?: AbortSignal | undefined;
|
|
90
|
-
|
|
94
|
+
onPrompt?: ((prompt: TuiDeviceLoginPrompt) => void) | undefined;
|
|
95
|
+
}): Promise<TuiOAuthResult>;
|
|
96
|
+
export declare function persistOAuthLoginResult(result: TuiOAuthResult, options?: {
|
|
97
|
+
onProvisionStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
|
|
98
|
+
}): Promise<TuiPersistedLoginResult>;
|
|
91
99
|
export declare function ensureDextoApiKeyForAuthToken(authToken: string, options?: {
|
|
92
100
|
onStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
|
|
93
101
|
}): Promise<{
|
package/dist/host/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iBAAiB,CAAC,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS,CAAC;CACnE;AAED,MAAM,WAAW,cAAc;IAC3B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"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"}
|
package/dist/host/index.js
CHANGED
|
@@ -28,18 +28,17 @@ function isValidApiKeyFormat(apiKey, provider) {
|
|
|
28
28
|
function getProviderInstructions(provider) {
|
|
29
29
|
return runtimeServices.getProviderInstructions?.(provider) ?? null;
|
|
30
30
|
}
|
|
31
|
-
function
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
throw missingHostMethod("defaultOAuthConfig");
|
|
31
|
+
async function performDeviceCodeLogin(options) {
|
|
32
|
+
if (!runtimeServices.performDeviceCodeLogin) {
|
|
33
|
+
throw missingHostMethod("performDeviceCodeLogin");
|
|
35
34
|
}
|
|
36
|
-
return
|
|
35
|
+
return runtimeServices.performDeviceCodeLogin(options);
|
|
37
36
|
}
|
|
38
|
-
async function
|
|
39
|
-
if (!runtimeServices.
|
|
40
|
-
throw missingHostMethod("
|
|
37
|
+
async function persistOAuthLoginResult(result, options) {
|
|
38
|
+
if (!runtimeServices.persistOAuthLoginResult) {
|
|
39
|
+
throw missingHostMethod("persistOAuthLoginResult");
|
|
41
40
|
}
|
|
42
|
-
return runtimeServices.
|
|
41
|
+
return runtimeServices.persistOAuthLoginResult(result, options);
|
|
43
42
|
}
|
|
44
43
|
async function ensureDextoApiKeyForAuthToken(authToken, options) {
|
|
45
44
|
if (!runtimeServices.ensureDextoApiKeyForAuthToken) {
|
|
@@ -85,17 +84,17 @@ async function canUseDextoProvider() {
|
|
|
85
84
|
}
|
|
86
85
|
export {
|
|
87
86
|
applyLayeredEnvironmentLoading,
|
|
88
|
-
beginOAuthLogin,
|
|
89
87
|
canUseDextoProvider,
|
|
90
88
|
captureAnalytics,
|
|
91
89
|
ensureDextoApiKeyForAuthToken,
|
|
92
|
-
getDefaultOAuthConfig,
|
|
93
90
|
getProviderDisplayName,
|
|
94
91
|
getProviderInstructions,
|
|
95
92
|
getTuiRuntimeServices,
|
|
96
93
|
isUsingDextoCredits,
|
|
97
94
|
isValidApiKeyFormat,
|
|
98
95
|
loadAuth,
|
|
96
|
+
performDeviceCodeLogin,
|
|
97
|
+
persistOAuthLoginResult,
|
|
99
98
|
registerGracefulShutdown,
|
|
100
99
|
removeAuth,
|
|
101
100
|
removeDextoApiKeyFromEnv,
|
package/dist/index.d.cts
CHANGED
|
@@ -130,12 +130,6 @@ interface TuiAuthConfig {
|
|
|
130
130
|
dextoKeyId?: string | undefined;
|
|
131
131
|
dextoApiKeySource?: 'provisioned' | 'user-supplied' | undefined;
|
|
132
132
|
}
|
|
133
|
-
interface TuiOAuthConfig {
|
|
134
|
-
authUrl: string;
|
|
135
|
-
clientId: string;
|
|
136
|
-
provider?: string;
|
|
137
|
-
scopes?: string[];
|
|
138
|
-
}
|
|
139
133
|
interface TuiOAuthResult {
|
|
140
134
|
accessToken: string;
|
|
141
135
|
refreshToken?: string | undefined;
|
|
@@ -146,15 +140,23 @@ interface TuiOAuthResult {
|
|
|
146
140
|
name?: string | undefined;
|
|
147
141
|
} | undefined;
|
|
148
142
|
}
|
|
149
|
-
interface
|
|
150
|
-
|
|
151
|
-
|
|
143
|
+
interface TuiDeviceLoginPrompt {
|
|
144
|
+
userCode: string;
|
|
145
|
+
verificationUrl: string;
|
|
146
|
+
verificationUrlComplete: string | null;
|
|
147
|
+
expiresIn: number;
|
|
152
148
|
}
|
|
153
149
|
type TuiDextoApiKeyProvisionStatusLevel = 'info' | 'success' | 'warning' | 'error';
|
|
154
150
|
interface TuiDextoApiKeyProvisionStatus {
|
|
155
151
|
level: TuiDextoApiKeyProvisionStatusLevel;
|
|
156
152
|
message: string;
|
|
157
153
|
}
|
|
154
|
+
interface TuiPersistedLoginResult {
|
|
155
|
+
email?: string | undefined;
|
|
156
|
+
userId?: string | undefined;
|
|
157
|
+
keyId?: string | undefined;
|
|
158
|
+
hasDextoApiKey: boolean;
|
|
159
|
+
}
|
|
158
160
|
interface TuiRuntimeServices {
|
|
159
161
|
registerGracefulShutdown?: (getAgent: () => DextoAgent, options: {
|
|
160
162
|
inkMode: boolean;
|
|
@@ -168,10 +170,13 @@ interface TuiRuntimeServices {
|
|
|
168
170
|
content: string;
|
|
169
171
|
url?: string | undefined;
|
|
170
172
|
} | null;
|
|
171
|
-
|
|
173
|
+
performDeviceCodeLogin?: (options?: {
|
|
172
174
|
signal?: AbortSignal | undefined;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
+
onPrompt?: ((prompt: TuiDeviceLoginPrompt) => void) | undefined;
|
|
176
|
+
}) => Promise<TuiOAuthResult>;
|
|
177
|
+
persistOAuthLoginResult?: (result: TuiOAuthResult, options?: {
|
|
178
|
+
onProvisionStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
|
|
179
|
+
}) => Promise<TuiPersistedLoginResult>;
|
|
175
180
|
ensureDextoApiKeyForAuthToken?: (authToken: string, options?: {
|
|
176
181
|
onStatus?: ((status: TuiDextoApiKeyProvisionStatus) => void) | undefined;
|
|
177
182
|
}) => Promise<{
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { CommandDefinition } from '../command-parser.js';
|
|
7
7
|
/**
|
|
8
|
-
* Login command - triggers
|
|
8
|
+
* Login command - triggers device-code login overlay for Dexto authentication
|
|
9
9
|
* Only available when DEXTO_FEATURE_AUTH=true
|
|
10
10
|
*/
|
|
11
11
|
export declare const loginCommand: CommandDefinition;
|
|
@@ -56,6 +56,8 @@ const baseCommands = [
|
|
|
56
56
|
// /resume - opens session selector overlay
|
|
57
57
|
import_session.renameCommand,
|
|
58
58
|
// /rename <title> - rename current session
|
|
59
|
+
import_session.forkCommand,
|
|
60
|
+
// /fork - creates a forked session from current session
|
|
59
61
|
import_export.exportCommand,
|
|
60
62
|
// /export - opens export wizard overlay
|
|
61
63
|
// Model management
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAgBnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAgBnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAAO,CAAC;AA8CpD;;;;;GAKG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAyD/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isDextoAuthEnabled } from "@dexto/agent-management";
|
|
2
2
|
import { generalCommands, createHelpCommand } from "./general-commands.js";
|
|
3
|
-
import { searchCommand, resumeCommand, renameCommand } from "./session/index.js";
|
|
3
|
+
import { searchCommand, resumeCommand, renameCommand, forkCommand } from "./session/index.js";
|
|
4
4
|
import { exportCommand } from "./export/index.js";
|
|
5
5
|
import { modelCommands } from "./model/index.js";
|
|
6
6
|
import { mcpCommands } from "./mcp/index.js";
|
|
@@ -21,6 +21,8 @@ const baseCommands = [
|
|
|
21
21
|
// /resume - opens session selector overlay
|
|
22
22
|
renameCommand,
|
|
23
23
|
// /rename <title> - rename current session
|
|
24
|
+
forkCommand,
|
|
25
|
+
// /fork - creates a forked session from current session
|
|
24
26
|
exportCommand,
|
|
25
27
|
// /export - opens export wizard overlay
|
|
26
28
|
// Model management
|
|
@@ -27,7 +27,7 @@ const modelCommands = {
|
|
|
27
27
|
description: "Switch AI model (interactive selector)",
|
|
28
28
|
usage: "/model",
|
|
29
29
|
category: "General",
|
|
30
|
-
aliases: ["m"],
|
|
30
|
+
aliases: ["m", "models"],
|
|
31
31
|
handler: import_command_parser.overlayOnlyHandler
|
|
32
32
|
};
|
|
33
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var session_exports = {};
|
|
20
20
|
__export(session_exports, {
|
|
21
|
+
forkCommand: () => import_session_commands.forkCommand,
|
|
21
22
|
renameCommand: () => import_session_commands.renameCommand,
|
|
22
23
|
resumeCommand: () => import_session_commands.resumeCommand,
|
|
23
24
|
searchCommand: () => import_session_commands.searchCommand
|
|
@@ -26,6 +27,7 @@ module.exports = __toCommonJS(session_exports);
|
|
|
26
27
|
var import_session_commands = require("./session-commands.js");
|
|
27
28
|
// Annotate the CommonJS export names for ESM import in node:
|
|
28
29
|
0 && (module.exports = {
|
|
30
|
+
forkCommand,
|
|
29
31
|
renameCommand,
|
|
30
32
|
resumeCommand,
|
|
31
33
|
searchCommand
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* - searchCommand: Opens interactive search overlay
|
|
9
9
|
* - resumeCommand: Shows interactive session selector
|
|
10
10
|
* - renameCommand: Rename the current session
|
|
11
|
+
* - forkCommand: Fork the current session
|
|
11
12
|
*
|
|
12
13
|
* Note: For non-interactive session subcommands (list, history, delete),
|
|
13
14
|
* see src/cli/commands/session-commands.ts
|
|
14
15
|
*/
|
|
15
|
-
export { searchCommand, resumeCommand, renameCommand } from './session-commands.js';
|
|
16
|
+
export { searchCommand, resumeCommand, renameCommand, forkCommand } from './session-commands.js';
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interactive-commands/session/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interactive-commands/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC"}
|