@patze/code-cli 0.43.3 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +231 -0
- package/README.md +84 -57
- package/VERSION +1 -1
- package/dist/backend/auth-token-kind.d.ts +3 -0
- package/dist/backend/auth-token-kind.d.ts.map +1 -0
- package/dist/backend/auth-token-kind.js +6 -0
- package/dist/backend/auth-token-kind.js.map +1 -0
- package/dist/backend/client.d.ts.map +1 -1
- package/dist/backend/client.js +7 -1
- package/dist/backend/client.js.map +1 -1
- package/dist/backend/execute-client.d.ts +1 -1
- package/dist/backend/execute-client.d.ts.map +1 -1
- package/dist/backend/execute-client.js +26 -0
- package/dist/backend/execute-client.js.map +1 -1
- package/dist/backend/plugin-session-client.d.ts +33 -0
- package/dist/backend/plugin-session-client.d.ts.map +1 -0
- package/dist/backend/plugin-session-client.js +108 -0
- package/dist/backend/plugin-session-client.js.map +1 -0
- package/dist/backend/runs-client.d.ts.map +1 -1
- package/dist/backend/runs-client.js +2 -1
- package/dist/backend/runs-client.js.map +1 -1
- package/dist/cli/auth/pairing-login.d.ts +10 -0
- package/dist/cli/auth/pairing-login.d.ts.map +1 -0
- package/dist/cli/auth/pairing-login.js +78 -0
- package/dist/cli/auth/pairing-login.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +10 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/exec.d.ts.map +1 -1
- package/dist/cli/commands/exec.js +33 -8
- package/dist/cli/commands/exec.js.map +1 -1
- package/dist/cli/commands/login.d.ts +1 -0
- package/dist/cli/commands/login.d.ts.map +1 -1
- package/dist/cli/commands/login.js +36 -5
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/runs-format.d.ts.map +1 -1
- package/dist/cli/commands/runs-format.js +2 -1
- package/dist/cli/commands/runs-format.js.map +1 -1
- package/dist/cli/commands/runs.d.ts.map +1 -1
- package/dist/cli/commands/runs.js +63 -5
- package/dist/cli/commands/runs.js.map +1 -1
- package/dist/cli/commands/status-format.d.ts.map +1 -1
- package/dist/cli/commands/status-format.js +4 -3
- package/dist/cli/commands/status-format.js.map +1 -1
- package/dist/cli/doctor/e2e-readiness.d.ts +12 -0
- package/dist/cli/doctor/e2e-readiness.d.ts.map +1 -0
- package/dist/cli/doctor/e2e-readiness.js +95 -0
- package/dist/cli/doctor/e2e-readiness.js.map +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +2 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.js +3 -1
- package/dist/cli/interactive/agent-execute-turn.js.map +1 -1
- package/dist/cli/interactive/agent-turn-context.d.ts +2 -2
- package/dist/cli/interactive/agent-turn-context.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn-context.js +23 -8
- package/dist/cli/interactive/agent-turn-context.js.map +1 -1
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn.js +8 -7
- package/dist/cli/interactive/agent-turn.js.map +1 -1
- package/dist/cli/interactive/auth-credential-resolve.d.ts +20 -0
- package/dist/cli/interactive/auth-credential-resolve.d.ts.map +1 -0
- package/dist/cli/interactive/auth-credential-resolve.js +65 -0
- package/dist/cli/interactive/auth-credential-resolve.js.map +1 -0
- package/dist/cli/interactive/auth-gate.d.ts +1 -1
- package/dist/cli/interactive/auth-gate.d.ts.map +1 -1
- package/dist/cli/interactive/auth-gate.js +12 -3
- package/dist/cli/interactive/auth-gate.js.map +1 -1
- package/dist/cli/interactive/auth-readiness.d.ts +16 -0
- package/dist/cli/interactive/auth-readiness.d.ts.map +1 -0
- package/dist/cli/interactive/auth-readiness.js +50 -0
- package/dist/cli/interactive/auth-readiness.js.map +1 -0
- package/dist/cli/interactive/codex-feed-writer.d.ts.map +1 -1
- package/dist/cli/interactive/codex-feed-writer.js +4 -0
- package/dist/cli/interactive/codex-feed-writer.js.map +1 -1
- package/dist/cli/interactive/composer-edit-keys.d.ts +21 -0
- package/dist/cli/interactive/composer-edit-keys.d.ts.map +1 -0
- package/dist/cli/interactive/composer-edit-keys.js +57 -0
- package/dist/cli/interactive/composer-edit-keys.js.map +1 -0
- package/dist/cli/interactive/ensure-execute-auth.d.ts.map +1 -1
- package/dist/cli/interactive/ensure-execute-auth.js +8 -13
- package/dist/cli/interactive/ensure-execute-auth.js.map +1 -1
- package/dist/cli/interactive/header-refresh-triggers.d.ts +3 -0
- package/dist/cli/interactive/header-refresh-triggers.d.ts.map +1 -0
- package/dist/cli/interactive/header-refresh-triggers.js +16 -0
- package/dist/cli/interactive/header-refresh-triggers.js.map +1 -0
- package/dist/cli/interactive/header-refresh.d.ts +4 -0
- package/dist/cli/interactive/header-refresh.d.ts.map +1 -0
- package/dist/cli/interactive/header-refresh.js +33 -0
- package/dist/cli/interactive/header-refresh.js.map +1 -0
- package/dist/cli/interactive/header.d.ts +3 -2
- package/dist/cli/interactive/header.d.ts.map +1 -1
- package/dist/cli/interactive/header.js +23 -14
- package/dist/cli/interactive/header.js.map +1 -1
- package/dist/cli/interactive/interactive-footer-hints.d.ts +12 -0
- package/dist/cli/interactive/interactive-footer-hints.d.ts.map +1 -0
- package/dist/cli/interactive/interactive-footer-hints.js +32 -0
- package/dist/cli/interactive/interactive-footer-hints.js.map +1 -0
- package/dist/cli/interactive/interactive-model-apply.d.ts +15 -0
- package/dist/cli/interactive/interactive-model-apply.d.ts.map +1 -0
- package/dist/cli/interactive/interactive-model-apply.js +28 -0
- package/dist/cli/interactive/interactive-model-apply.js.map +1 -0
- package/dist/cli/interactive/interactive-ui.d.ts +13 -0
- package/dist/cli/interactive/interactive-ui.d.ts.map +1 -0
- package/dist/cli/interactive/interactive-ui.js +64 -0
- package/dist/cli/interactive/interactive-ui.js.map +1 -0
- package/dist/cli/interactive/launcher.d.ts.map +1 -1
- package/dist/cli/interactive/launcher.js +24 -17
- package/dist/cli/interactive/launcher.js.map +1 -1
- package/dist/cli/interactive/line-editor.d.ts +6 -0
- package/dist/cli/interactive/line-editor.d.ts.map +1 -1
- package/dist/cli/interactive/line-editor.js +102 -8
- package/dist/cli/interactive/line-editor.js.map +1 -1
- package/dist/cli/interactive/model-catalog-resolve.d.ts +11 -0
- package/dist/cli/interactive/model-catalog-resolve.d.ts.map +1 -0
- package/dist/cli/interactive/model-catalog-resolve.js +49 -0
- package/dist/cli/interactive/model-catalog-resolve.js.map +1 -0
- package/dist/cli/interactive/model-picker-panel.d.ts +22 -2
- package/dist/cli/interactive/model-picker-panel.d.ts.map +1 -1
- package/dist/cli/interactive/model-picker-panel.js +99 -16
- package/dist/cli/interactive/model-picker-panel.js.map +1 -1
- package/dist/cli/interactive/model-selector.d.ts.map +1 -1
- package/dist/cli/interactive/model-selector.js +3 -2
- package/dist/cli/interactive/model-selector.js.map +1 -1
- package/dist/cli/interactive/model-tty-picker.d.ts +3 -1
- package/dist/cli/interactive/model-tty-picker.d.ts.map +1 -1
- package/dist/cli/interactive/model-tty-picker.js +154 -24
- package/dist/cli/interactive/model-tty-picker.js.map +1 -1
- package/dist/cli/interactive/plain-codex-feed.d.ts.map +1 -1
- package/dist/cli/interactive/plain-codex-feed.js +48 -0
- package/dist/cli/interactive/plain-codex-feed.js.map +1 -1
- package/dist/cli/interactive/run-cancel.d.ts +23 -0
- package/dist/cli/interactive/run-cancel.d.ts.map +1 -0
- package/dist/cli/interactive/run-cancel.js +67 -0
- package/dist/cli/interactive/run-cancel.js.map +1 -0
- package/dist/cli/interactive/select-list-nav.d.ts +10 -0
- package/dist/cli/interactive/select-list-nav.d.ts.map +1 -0
- package/dist/cli/interactive/select-list-nav.js +45 -0
- package/dist/cli/interactive/select-list-nav.js.map +1 -0
- package/dist/cli/interactive/session-controller.d.ts +1 -0
- package/dist/cli/interactive/session-controller.d.ts.map +1 -1
- package/dist/cli/interactive/session-controller.js +5 -1
- package/dist/cli/interactive/session-controller.js.map +1 -1
- package/dist/cli/interactive/session-hints.d.ts +1 -0
- package/dist/cli/interactive/session-hints.d.ts.map +1 -1
- package/dist/cli/interactive/session-hints.js +24 -8
- package/dist/cli/interactive/session-hints.js.map +1 -1
- package/dist/cli/interactive/shell.d.ts.map +1 -1
- package/dist/cli/interactive/shell.js +17 -5
- package/dist/cli/interactive/shell.js.map +1 -1
- package/dist/cli/interactive/slash-dispatch.d.ts +2 -0
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
- package/dist/cli/interactive/slash-dispatch.js +55 -28
- package/dist/cli/interactive/slash-dispatch.js.map +1 -1
- package/dist/cli/interactive/slash-menu.d.ts.map +1 -1
- package/dist/cli/interactive/slash-menu.js +29 -2
- package/dist/cli/interactive/slash-menu.js.map +1 -1
- package/dist/cli/interactive/slash-registry.js +2 -2
- package/dist/cli/interactive/slash-registry.js.map +1 -1
- package/dist/cli/interactive/smoke-trust-fixture.d.ts +10 -0
- package/dist/cli/interactive/smoke-trust-fixture.d.ts.map +1 -0
- package/dist/cli/interactive/smoke-trust-fixture.js +66 -0
- package/dist/cli/interactive/smoke-trust-fixture.js.map +1 -0
- package/dist/cli/interactive/tools-catalog.d.ts.map +1 -1
- package/dist/cli/interactive/tools-catalog.js +17 -12
- package/dist/cli/interactive/tools-catalog.js.map +1 -1
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +8 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/web-ui.d.ts +5 -0
- package/dist/config/web-ui.d.ts.map +1 -0
- package/dist/config/web-ui.js +12 -0
- package/dist/config/web-ui.js.map +1 -0
- package/docs/beta-release-handoff.md +56 -29
- package/docs/internal-beta.md +6 -3
- package/docs/known-limitations.md +32 -19
- package/docs/release-checklist.md +11 -3
- package/opentui/src/App.tsx +636 -213
- package/package.json +6 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { formatModelPickerLines, resolveEffectiveModel, } from "../../config/models.js";
|
|
2
2
|
import { loadConfig } from "../../config/config.js";
|
|
3
3
|
import { formatModelPickerPanel } from "./model-picker-panel.js";
|
|
4
|
-
import { runModelTtyPicker, formatModelPickerSuccessLine, } from "./model-tty-picker.js";
|
|
4
|
+
import { runModelTtyPicker, formatModelPickerSuccessLine, resolveModelTtyPickerCatalog, } from "./model-tty-picker.js";
|
|
5
5
|
/** Deterministic panel view for tests and scripted selectors. */
|
|
6
6
|
export function formatModelSelectorView(selectedIndex, currentId) {
|
|
7
7
|
return formatModelPickerPanel({
|
|
@@ -43,7 +43,8 @@ async function runScriptedModelSelector(session, currentId, keySequence) {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
async function runTTYModelSelector(session, currentId) {
|
|
46
|
-
const
|
|
46
|
+
const catalog = await resolveModelTtyPickerCatalog();
|
|
47
|
+
const result = await runModelTtyPicker(session, currentId, { catalog });
|
|
47
48
|
if (result.action === "cancel") {
|
|
48
49
|
return { lines: ["Model selection cancelled."], exitCode: 0 };
|
|
49
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-selector.js","sourceRoot":"","sources":["../../../src/cli/interactive/model-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EACL,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAA;AAY9B,iEAAiE;AACjE,MAAM,UAAU,uBAAuB,CACrC,aAAqB,EACrB,SAAiB;IAEjB,OAAO,sBAAsB,CAAC;QAC5B,SAAS;QACT,aAAa;QACb,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,EAAE;KACV,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA2B,EAC3B,OAAe,EACf,UAAgC,EAAE;IAElC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAC9B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;IACnC,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,qBAAqB,CAAC;QACpC,eAAe,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAC3C,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;KAClC,CAAC,CAAA;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAChC,OAAO,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvE,OAAO,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO;QACL,KAAK,EAAE,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACrE,QAAQ,EAAE,CAAC;KACZ,CAAA;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,OAA2B,EAC3B,SAAiB,EACjB,WAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;IAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;IAC/D,CAAC;IACD,OAAO;QACL,KAAK,EAAE,CAAC,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1E,QAAQ,EAAE,CAAC;KACZ,CAAA;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,OAA2B,EAC3B,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"model-selector.js","sourceRoot":"","sources":["../../../src/cli/interactive/model-selector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { ModelReasoningLevel } from "../../config/model-reasoning.js";
|
|
2
|
+
import { type PatzeModelCatalogEntry } from "../../config/models.js";
|
|
2
3
|
import type { InteractiveSession } from "./session.js";
|
|
3
|
-
import type { PatzeModelCatalogEntry } from "../../config/models.js";
|
|
4
4
|
export type ModelTtyPickerOptions = {
|
|
5
5
|
keySequence?: readonly string[];
|
|
6
6
|
input?: NodeJS.ReadStream;
|
|
7
7
|
output?: NodeJS.WriteStream;
|
|
8
|
+
catalog?: readonly PatzeModelCatalogEntry[];
|
|
8
9
|
};
|
|
9
10
|
export type ModelTtyPickerResult = {
|
|
10
11
|
action: "select";
|
|
@@ -15,4 +16,5 @@ export type ModelTtyPickerResult = {
|
|
|
15
16
|
};
|
|
16
17
|
export declare function runModelTtyPicker(session: InteractiveSession, currentId: string, options?: ModelTtyPickerOptions): Promise<ModelTtyPickerResult>;
|
|
17
18
|
export declare function formatModelPickerSuccessLine(entry: PatzeModelCatalogEntry, reasoningLevel: ModelReasoningLevel | null): string;
|
|
19
|
+
export declare function resolveModelTtyPickerCatalog(): Promise<PatzeModelCatalogEntry[]>;
|
|
18
20
|
//# sourceMappingURL=model-tty-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-tty-picker.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/model-tty-picker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"model-tty-picker.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/model-tty-picker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAK1E,OAAO,EAAyC,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAE3G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAyBtD,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;IAC3B,OAAO,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,sBAAsB,CAAC;IAAC,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,GAC/F;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAA;AAExB,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAqB/B;AAmLD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,sBAAsB,EAC7B,cAAc,EAAE,mBAAmB,GAAG,IAAI,GACzC,MAAM,CAER;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAEtF"}
|
|
@@ -1,49 +1,169 @@
|
|
|
1
1
|
import { getReasoningLevelsForModelId, modelSupportsReasoningPicker, } from "../../config/model-reasoning.js";
|
|
2
2
|
import { normalizeModelId, PATZE_MODEL_CATALOG } from "../../config/models.js";
|
|
3
|
-
import {
|
|
3
|
+
import { resolveModelPreferenceToggle } from "../../config/model-preferences.js";
|
|
4
|
+
import { resolvePickerModelCatalog } from "./model-catalog-resolve.js";
|
|
5
|
+
import { catalogEntryAtIndex, filterModelCatalogEntries, formatModelPickerResultLine, formatReasoningPickerPanel, formatSearchableModelPickerPanel, indexForCatalogEntry, indexForFilteredCatalogEntry, indexForReasoningLevel, } from "./model-picker-panel.js";
|
|
4
6
|
import { applyModelSelection, resolveReasoningLevelFromSelection, } from "./model-selection-apply.js";
|
|
5
7
|
import { createKeyReaderFromSequence, readPermissionSelectorKey, } from "./permissions-keys.js";
|
|
8
|
+
import { moveSelection } from "./slash-menu.js";
|
|
6
9
|
import { runArrowSelectorLoop, runTTYArrowSelector } from "./tty-arrow-selector.js";
|
|
10
|
+
import { TtyAnchoredOverlay } from "./tty-frame.js";
|
|
11
|
+
import { emitKeypressEvents } from "node:readline";
|
|
7
12
|
export async function runModelTtyPicker(session, currentId, options = {}) {
|
|
13
|
+
const catalog = options.catalog ?? [...PATZE_MODEL_CATALOG];
|
|
8
14
|
const output = options.output ?? process.stdout;
|
|
9
15
|
const width = output.columns && output.columns > 0 ? output.columns : 80;
|
|
10
16
|
const color = !process.env.NO_COLOR;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
17
|
+
if (options.keySequence?.length) {
|
|
18
|
+
return runScriptedModelTtyPicker(session, currentId, catalog, options.keySequence);
|
|
19
|
+
}
|
|
20
|
+
const input = options.input ?? process.stdin;
|
|
21
|
+
if (!input.isTTY || !output.isTTY) {
|
|
22
|
+
return { action: "cancel" };
|
|
23
|
+
}
|
|
24
|
+
return runInteractiveSearchableModelTtyPicker(session, currentId, catalog, {
|
|
25
|
+
input,
|
|
26
|
+
output,
|
|
27
|
+
width,
|
|
28
|
+
color,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async function runScriptedModelTtyPicker(session, currentId, catalog, keySequence) {
|
|
32
|
+
const sharedReader = createKeyReaderFromSequence(keySequence);
|
|
33
|
+
const modelResult = await runArrowSelectorLoop({
|
|
34
|
+
itemCount: catalog.length,
|
|
35
|
+
selectedIndex: indexForCatalogEntry(catalog, currentId),
|
|
36
|
+
readKey: () => readPermissionSelectorKey(sharedReader),
|
|
37
|
+
digitJump: true,
|
|
38
|
+
});
|
|
29
39
|
if (modelResult.action === "cancel") {
|
|
30
40
|
return { action: "cancel" };
|
|
31
41
|
}
|
|
32
|
-
const entry =
|
|
42
|
+
const entry = catalog[modelResult.selectedIndex];
|
|
33
43
|
if (!entry) {
|
|
34
44
|
return { action: "cancel" };
|
|
35
45
|
}
|
|
36
46
|
return finalizeModelSelection(session, entry, {
|
|
37
47
|
sharedReader,
|
|
38
|
-
width,
|
|
39
|
-
color,
|
|
40
|
-
|
|
41
|
-
|
|
48
|
+
width: 80,
|
|
49
|
+
color: false,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async function runInteractiveSearchableModelTtyPicker(session, currentId, catalog, ctx) {
|
|
53
|
+
let search = "";
|
|
54
|
+
let selectedIndex = indexForFilteredCatalogEntry(filterModelCatalogEntries("", catalog), currentId);
|
|
55
|
+
const filteredCount = () => filterModelCatalogEntries(search, catalog).length;
|
|
56
|
+
emitKeypressEvents(ctx.input);
|
|
57
|
+
const wasRaw = ctx.input.isRaw ?? false;
|
|
58
|
+
ctx.input.setRawMode(true);
|
|
59
|
+
ctx.input.resume();
|
|
60
|
+
const overlay = new TtyAnchoredOverlay();
|
|
61
|
+
overlay.begin(ctx.output);
|
|
62
|
+
const redraw = () => {
|
|
63
|
+
const count = filteredCount();
|
|
64
|
+
selectedIndex = count === 0 ? 0 : Math.min(selectedIndex, count - 1);
|
|
65
|
+
overlay.redraw(ctx.output, formatSearchableModelPickerPanel({
|
|
66
|
+
currentId,
|
|
67
|
+
selectedIndex,
|
|
68
|
+
search,
|
|
69
|
+
thinking: session.getModelThinking(),
|
|
70
|
+
fast: session.getModelFast(),
|
|
71
|
+
catalog,
|
|
72
|
+
width: ctx.width,
|
|
73
|
+
color: ctx.color,
|
|
74
|
+
}), ctx.width);
|
|
75
|
+
};
|
|
76
|
+
return new Promise((resolve) => {
|
|
77
|
+
const finish = (result) => {
|
|
78
|
+
ctx.input.removeListener("keypress", onKeypress);
|
|
79
|
+
if (ctx.input.isTTY) {
|
|
80
|
+
ctx.input.setRawMode(wasRaw);
|
|
81
|
+
}
|
|
82
|
+
ctx.input.pause();
|
|
83
|
+
overlay.clear(ctx.output);
|
|
84
|
+
resolve(result);
|
|
85
|
+
};
|
|
86
|
+
const onKeypress = (str, key) => {
|
|
87
|
+
const name = key?.name ?? "";
|
|
88
|
+
if (key?.ctrl && name === "c") {
|
|
89
|
+
finish({ action: "cancel" });
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (name === "escape") {
|
|
93
|
+
finish({ action: "cancel" });
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (name === "backspace" || name === "delete") {
|
|
97
|
+
search = search.slice(0, -1);
|
|
98
|
+
redraw();
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const pickerChar = getModelPickerSearchCharacter(str, key);
|
|
102
|
+
if (pickerChar === "T") {
|
|
103
|
+
session.setModelThinking(resolveModelPreferenceToggle(session.getModelThinking(), "toggle"));
|
|
104
|
+
redraw();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (pickerChar === "F") {
|
|
108
|
+
session.setModelFast(resolveModelPreferenceToggle(session.getModelFast(), "toggle"));
|
|
109
|
+
redraw();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (isModelPickerSearchInput(pickerChar)) {
|
|
113
|
+
search = `${search}${pickerChar}`;
|
|
114
|
+
selectedIndex = 0;
|
|
115
|
+
redraw();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (str && /^[1-9]$/.test(str)) {
|
|
119
|
+
const jump = Number(str) - 1;
|
|
120
|
+
const count = filteredCount();
|
|
121
|
+
if (jump < count) {
|
|
122
|
+
selectedIndex = jump;
|
|
123
|
+
redraw();
|
|
124
|
+
}
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (name === "up" || (!key?.ctrl && !key?.meta && name === "k")) {
|
|
128
|
+
const count = filteredCount();
|
|
129
|
+
if (count > 0) {
|
|
130
|
+
selectedIndex = moveSelection(selectedIndex, -1, count);
|
|
131
|
+
redraw();
|
|
132
|
+
}
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (name === "down" || (!key?.ctrl && !key?.meta && name === "j")) {
|
|
136
|
+
const count = filteredCount();
|
|
137
|
+
if (count > 0) {
|
|
138
|
+
selectedIndex = moveSelection(selectedIndex, 1, count);
|
|
139
|
+
redraw();
|
|
140
|
+
}
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (name === "return" || name === "enter") {
|
|
144
|
+
const entry = catalogEntryAtIndex(catalog, search, selectedIndex);
|
|
145
|
+
if (!entry) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
void finalizeModelSelection(session, entry, {
|
|
149
|
+
sharedReader: null,
|
|
150
|
+
width: ctx.width,
|
|
151
|
+
color: ctx.color,
|
|
152
|
+
input: ctx.input,
|
|
153
|
+
output: ctx.output,
|
|
154
|
+
}).then(finish);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
ctx.input.on("keypress", onKeypress);
|
|
158
|
+
redraw();
|
|
42
159
|
});
|
|
43
160
|
}
|
|
44
161
|
export function formatModelPickerSuccessLine(entry, reasoningLevel) {
|
|
45
162
|
return formatModelPickerResultLine(entry, reasoningLevel);
|
|
46
163
|
}
|
|
164
|
+
export async function resolveModelTtyPickerCatalog() {
|
|
165
|
+
return resolvePickerModelCatalog();
|
|
166
|
+
}
|
|
47
167
|
async function finalizeModelSelection(session, entry, ctx) {
|
|
48
168
|
if (!modelSupportsReasoningPicker(entry.id)) {
|
|
49
169
|
applyModelSelection(session, entry, null);
|
|
@@ -82,4 +202,14 @@ async function finalizeModelSelection(session, entry, ctx) {
|
|
|
82
202
|
applyModelSelection(session, entry, reasoningLevel);
|
|
83
203
|
return { action: "select", entry, reasoningLevel };
|
|
84
204
|
}
|
|
205
|
+
function getModelPickerSearchCharacter(str, key) {
|
|
206
|
+
const name = key?.name ?? "";
|
|
207
|
+
if (key?.ctrl || key?.meta || name.length !== 1) {
|
|
208
|
+
return str ?? "";
|
|
209
|
+
}
|
|
210
|
+
return key?.shift ? name.toUpperCase() : name;
|
|
211
|
+
}
|
|
212
|
+
function isModelPickerSearchInput(input) {
|
|
213
|
+
return input.length === 1 && !/[\u0000-\u001F\u007F]/.test(input) && input !== "T" && input !== "F";
|
|
214
|
+
}
|
|
85
215
|
//# sourceMappingURL=model-tty-picker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-tty-picker.js","sourceRoot":"","sources":["../../../src/cli/interactive/model-tty-picker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"model-tty-picker.js","sourceRoot":"","sources":["../../../src/cli/interactive/model-tty-picker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plain-codex-feed.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/plain-codex-feed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAejE,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACzC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,EAC5B,eAAe,SAAU,GACxB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"plain-codex-feed.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/plain-codex-feed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAejE,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACzC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,EAC5B,eAAe,SAAU,GACxB,sBAAsB,CA0ExB"}
|
|
@@ -14,22 +14,70 @@ function formatPlainFeedLine(entry) {
|
|
|
14
14
|
}
|
|
15
15
|
export function createPlainCodexFeedRenderer(handlers, assistantTurnId = "plain") {
|
|
16
16
|
let items = [];
|
|
17
|
+
const emittedTextById = new Map();
|
|
18
|
+
const pendingDeferredIds = new Set();
|
|
19
|
+
const flushDeferredUpserts = () => {
|
|
20
|
+
for (const id of pendingDeferredIds) {
|
|
21
|
+
const entry = items.find((item) => item.id === id);
|
|
22
|
+
if (!entry || entry.kind === "assistant") {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const prior = emittedTextById.get(entry.id);
|
|
26
|
+
if (prior === entry.text) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
handlers.annotate(formatPlainFeedLine(entry));
|
|
30
|
+
emittedTextById.set(entry.id, entry.text);
|
|
31
|
+
}
|
|
32
|
+
pendingDeferredIds.clear();
|
|
33
|
+
};
|
|
34
|
+
const shouldDeferStreamingUpsert = (entry) => {
|
|
35
|
+
if (!emittedTextById.has(entry.id)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (entry.label === "think" && !entry.text.startsWith("✓") && !entry.text.startsWith("✗")) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
if (entry.label === "run" && entry.text.startsWith("●") && emittedTextById.get(entry.id)?.startsWith("●")) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
if (entry.kind === "tool" && entry.text.startsWith("●") && emittedTextById.get(entry.id)?.startsWith("●")) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
};
|
|
17
49
|
return {
|
|
18
50
|
reset() {
|
|
19
51
|
items = [];
|
|
52
|
+
emittedTextById.clear();
|
|
53
|
+
pendingDeferredIds.clear();
|
|
20
54
|
},
|
|
21
55
|
onAgentEvent(event) {
|
|
22
56
|
if (event.type === "assistant_delta") {
|
|
57
|
+
flushDeferredUpserts();
|
|
23
58
|
handlers.writeAssistant(event.text);
|
|
24
59
|
return;
|
|
25
60
|
}
|
|
61
|
+
if (event.type === "status" || event.type === "result") {
|
|
62
|
+
flushDeferredUpserts();
|
|
63
|
+
}
|
|
26
64
|
const result = applyAgentEventWithChanges(items, event, assistantTurnId);
|
|
27
65
|
items = result.items;
|
|
28
66
|
for (const entry of result.changed) {
|
|
29
67
|
if (entry.kind === "assistant") {
|
|
30
68
|
continue;
|
|
31
69
|
}
|
|
70
|
+
if (shouldDeferStreamingUpsert(entry)) {
|
|
71
|
+
pendingDeferredIds.add(entry.id);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const prior = emittedTextById.get(entry.id);
|
|
75
|
+
if (prior === entry.text) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
32
78
|
handlers.annotate(formatPlainFeedLine(entry));
|
|
79
|
+
emittedTextById.set(entry.id, entry.text);
|
|
80
|
+
pendingDeferredIds.delete(entry.id);
|
|
33
81
|
}
|
|
34
82
|
},
|
|
35
83
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plain-codex-feed.js","sourceRoot":"","sources":["../../../src/cli/interactive/plain-codex-feed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,0BAA0B,GAE3B,MAAM,uBAAuB,CAAA;AAI9B,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB,SAAS,mBAAmB,CAAC,KAA0B;IACrD,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;QAC7C,CAAC,CAAC,KAAK,CAAC,IAAI;aACP,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;aAC1B,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;IAChB,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAA;AACpD,CAAC;AAOD,MAAM,UAAU,4BAA4B,CAC1C,QAA4B,EAC5B,eAAe,GAAG,OAAO;IAEzB,IAAI,KAAK,GAA0B,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"plain-codex-feed.js","sourceRoot":"","sources":["../../../src/cli/interactive/plain-codex-feed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ResolvedConfig } from "../../config/config.js";
|
|
2
|
+
import type { FetchLike } from "../../backend/preview-client.js";
|
|
3
|
+
import type { InteractiveSession } from "./session.js";
|
|
4
|
+
export type RunCancelOutcome = {
|
|
5
|
+
ok: true;
|
|
6
|
+
runId: string;
|
|
7
|
+
status: string;
|
|
8
|
+
phase?: string;
|
|
9
|
+
} | {
|
|
10
|
+
ok: false;
|
|
11
|
+
exitCode: number;
|
|
12
|
+
message: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function resolveCancelRunId(session: InteractiveSession, explicit?: string | null): string | null;
|
|
15
|
+
export declare function cancelPatzeCodeRun(input: {
|
|
16
|
+
cwd: string;
|
|
17
|
+
runId: string;
|
|
18
|
+
config?: ResolvedConfig;
|
|
19
|
+
fetchImpl?: FetchLike;
|
|
20
|
+
}): Promise<RunCancelOutcome>;
|
|
21
|
+
export declare function formatRunCancelLines(outcome: RunCancelOutcome): string[];
|
|
22
|
+
export declare function cancelPatzeCodeRunForSession(session: InteractiveSession, runId?: string | null, fetchImpl?: FetchLike): Promise<RunCancelOutcome>;
|
|
23
|
+
//# sourceMappingURL=run-cancel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-cancel.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/run-cancel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAMvG;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmC5B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAMxE;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,kBAAkB,EAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAc3B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { PatzeBackendClient } from "../../backend/client.js";
|
|
2
|
+
import { postRunCancel } from "../../backend/cancel-client.js";
|
|
3
|
+
import { isAuthConfigured } from "../../backend/auth.js";
|
|
4
|
+
import { loadConfig } from "../../config/config.js";
|
|
5
|
+
export function resolveCancelRunId(session, explicit) {
|
|
6
|
+
const trimmed = explicit?.trim();
|
|
7
|
+
if (trimmed) {
|
|
8
|
+
return trimmed;
|
|
9
|
+
}
|
|
10
|
+
return session.getLastRunId()?.trim() || null;
|
|
11
|
+
}
|
|
12
|
+
export async function cancelPatzeCodeRun(input) {
|
|
13
|
+
const config = input.config ?? loadConfig(input.cwd);
|
|
14
|
+
if (!isAuthConfigured(config)) {
|
|
15
|
+
return {
|
|
16
|
+
ok: false,
|
|
17
|
+
exitCode: 1,
|
|
18
|
+
message: "Auth incomplete — run `patze login` or set PATZE_CODE_* env vars.",
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (!config.api) {
|
|
22
|
+
return { ok: false, exitCode: 2, message: "API URL not configured." };
|
|
23
|
+
}
|
|
24
|
+
const client = new PatzeBackendClient(config);
|
|
25
|
+
const result = await postRunCancel({
|
|
26
|
+
apiBase: client.baseUrl,
|
|
27
|
+
headers: client.buildHeaders(),
|
|
28
|
+
runId: input.runId,
|
|
29
|
+
fetchImpl: input.fetchImpl,
|
|
30
|
+
});
|
|
31
|
+
if (!result.ok) {
|
|
32
|
+
return {
|
|
33
|
+
ok: false,
|
|
34
|
+
exitCode: 2,
|
|
35
|
+
message: result.message,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
ok: true,
|
|
40
|
+
runId: result.runId,
|
|
41
|
+
status: result.status,
|
|
42
|
+
phase: result.phase,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function formatRunCancelLines(outcome) {
|
|
46
|
+
if (!outcome.ok) {
|
|
47
|
+
return [outcome.message];
|
|
48
|
+
}
|
|
49
|
+
const phase = outcome.phase ? ` · phase ${outcome.phase}` : "";
|
|
50
|
+
return [`Cancel requested for ${outcome.runId} (${outcome.status})${phase}.`];
|
|
51
|
+
}
|
|
52
|
+
export async function cancelPatzeCodeRunForSession(session, runId, fetchImpl) {
|
|
53
|
+
const resolved = resolveCancelRunId(session, runId);
|
|
54
|
+
if (!resolved) {
|
|
55
|
+
return {
|
|
56
|
+
ok: false,
|
|
57
|
+
exitCode: 2,
|
|
58
|
+
message: "No run id — pass one or complete a run first (/runs cancel <id>).",
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return cancelPatzeCodeRun({
|
|
62
|
+
cwd: session.cwd,
|
|
63
|
+
runId: resolved,
|
|
64
|
+
fetchImpl,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=run-cancel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-cancel.js","sourceRoot":"","sources":["../../../src/cli/interactive/run-cancel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAuB,MAAM,wBAAwB,CAAA;AAQxE,MAAM,UAAU,kBAAkB,CAAC,OAA2B,EAAE,QAAwB;IACtF,MAAM,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAA;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,OAAO,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAA;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAKxC;IACC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACpD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,mEAAmE;SAC7E,CAAA;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAA;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACjC,OAAO,EAAE,MAAM,CAAC,OAAQ;QACxB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAA;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC5D,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,OAAO,CAAC,wBAAwB,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,CAAA;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAA2B,EAC3B,KAAqB,EACrB,SAAqB;IAErB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,mEAAmE;SAC7E,CAAA;IACH,CAAC;IACD,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,QAAQ;QACf,SAAS;KACV,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Cap slash-menu rows in one composer redraw (TTY + OpenTUI parity). */
|
|
2
|
+
export declare const COMPOSER_MENU_MAX_ROWS = 6;
|
|
3
|
+
/** Soft ceiling on visual rows for anchored composer overlays. */
|
|
4
|
+
export declare const COMPOSER_FRAME_ROW_BUDGET = 22;
|
|
5
|
+
export type ListNavKey = "up" | "down" | "enter" | "escape";
|
|
6
|
+
export declare function moveListSelection(index: number, delta: number, count: number): number;
|
|
7
|
+
/** 1–9 jump highlight (Codex-style); returns null when digit is out of range. */
|
|
8
|
+
export declare function jumpListSelection(digit: string, count: number): number | null;
|
|
9
|
+
export declare function mapListNavKey(name: string | undefined, str: string | undefined): ListNavKey | null;
|
|
10
|
+
//# sourceMappingURL=select-list-nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-list-nav.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/select-list-nav.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAE3C,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE3D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS7E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,CAqBlG"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { moveSelection } from "./slash-menu.js";
|
|
2
|
+
/** Cap slash-menu rows in one composer redraw (TTY + OpenTUI parity). */
|
|
3
|
+
export const COMPOSER_MENU_MAX_ROWS = 6;
|
|
4
|
+
/** Soft ceiling on visual rows for anchored composer overlays. */
|
|
5
|
+
export const COMPOSER_FRAME_ROW_BUDGET = 22;
|
|
6
|
+
export function moveListSelection(index, delta, count) {
|
|
7
|
+
if (count <= 0) {
|
|
8
|
+
return 0;
|
|
9
|
+
}
|
|
10
|
+
return moveSelection(index, delta, count);
|
|
11
|
+
}
|
|
12
|
+
/** 1–9 jump highlight (Codex-style); returns null when digit is out of range. */
|
|
13
|
+
export function jumpListSelection(digit, count) {
|
|
14
|
+
if (!/^[1-9]$/.test(digit)) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const jump = Number(digit) - 1;
|
|
18
|
+
if (jump >= count) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return jump;
|
|
22
|
+
}
|
|
23
|
+
export function mapListNavKey(name, str) {
|
|
24
|
+
const keyName = name ?? "";
|
|
25
|
+
if (keyName === "up" || str === "k" || keyName === "k") {
|
|
26
|
+
return "up";
|
|
27
|
+
}
|
|
28
|
+
if (keyName === "down" || str === "j" || keyName === "j") {
|
|
29
|
+
return "down";
|
|
30
|
+
}
|
|
31
|
+
if (keyName === "return" || keyName === "enter") {
|
|
32
|
+
return "enter";
|
|
33
|
+
}
|
|
34
|
+
if (keyName === "escape") {
|
|
35
|
+
return "escape";
|
|
36
|
+
}
|
|
37
|
+
if (str === "k") {
|
|
38
|
+
return "up";
|
|
39
|
+
}
|
|
40
|
+
if (str === "j") {
|
|
41
|
+
return "down";
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=select-list-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-list-nav.js","sourceRoot":"","sources":["../../../src/cli/interactive/select-list-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAEvC,kEAAkE;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAI3C,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,KAAa,EAAE,KAAa;IAC3E,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,KAAa;IAC5D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAwB,EAAE,GAAuB;IAC7E,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAA;IAC1B,IAAI,OAAO,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACvD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACzD,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAChD,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-controller.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/session-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"session-controller.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/session-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAejD,MAAM,MAAM,4BAA4B,GAAG;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC3C,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,mBAAmB,EAAE,UAAU,KAAK,IAAI,CAAA;IACtE,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,kBAAkB,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAA;IACjC,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAChC,CAAA;AA+CD,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,qBAAqB,CAAC,CAKhC;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CAuJvB"}
|
|
@@ -10,6 +10,7 @@ import { runApplyConfirmationLine } from "../commands/apply.js";
|
|
|
10
10
|
import { loadPersistedSession, savePersistedSession } from "./session-store.js";
|
|
11
11
|
import { ensureExecuteAuthConfig } from "./ensure-execute-auth.js";
|
|
12
12
|
import { createTtyLiveFeedWriter, shouldUseTtyLiveFeed } from "./tty-live-feed.js";
|
|
13
|
+
import { maybeSeedTrustSmokeFixture } from "./smoke-trust-fixture.js";
|
|
13
14
|
function buildStreamSink(output, options, canStreamPartials) {
|
|
14
15
|
if (!canStreamPartials || !shouldUseTtyLiveFeed(options.interactive)) {
|
|
15
16
|
return {
|
|
@@ -44,7 +45,9 @@ function buildStreamSink(output, options, canStreamPartials) {
|
|
|
44
45
|
}
|
|
45
46
|
export async function prepareInteractiveController(options) {
|
|
46
47
|
await ensureExecuteAuthConfig(options.cwd);
|
|
47
|
-
|
|
48
|
+
const controller = createInteractiveController(options);
|
|
49
|
+
await maybeSeedTrustSmokeFixture(controller.session, options.cwd);
|
|
50
|
+
return controller;
|
|
48
51
|
}
|
|
49
52
|
export function createInteractiveController(options) {
|
|
50
53
|
const cwd = options.cwd;
|
|
@@ -158,6 +161,7 @@ export function createInteractiveController(options) {
|
|
|
158
161
|
exitCode: result.exitCode,
|
|
159
162
|
streamed: result.streamed,
|
|
160
163
|
clearVisibleTranscript: result.clearVisibleTranscript,
|
|
164
|
+
refreshHeader: result.refreshHeader,
|
|
161
165
|
};
|
|
162
166
|
};
|
|
163
167
|
return {
|