shortcutxl 0.3.65 → 0.3.67
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/BINARY-INVENTORY.json +8 -8
- package/CHANGELOG.md +5 -0
- package/agent-docs/README.md +19 -0
- package/agent-docs/docs/custom-provider.md +1 -1
- package/agent-docs/docs/keybindings.md +84 -78
- package/agent-docs/docs/models.md +4 -4
- package/agent-docs/docs/providers.md +2 -2
- package/agent-docs/docs/rpc.md +5 -5
- package/agent-docs/docs/sdk.md +2 -2
- package/agent-docs/docs/session.md +2 -2
- package/agent-docs/docs/settings.md +3 -3
- package/agent-docs/examples/extensions/custom-provider-anthropic/index.ts +5 -5
- package/agent-docs/examples/extensions/custom-provider-gitlab-duo/index.ts +6 -28
- package/agent-docs/examples/extensions/custom-provider-gitlab-duo/test.ts +4 -4
- package/agent-docs/examples/extensions/summarize.ts +3 -3
- package/agent-docs/examples/sdk/02-custom-model.ts +1 -1
- package/agent-docs/examples/sdk/12-full-control.ts +1 -1
- package/agent-docs/examples/sdk/README.md +1 -1
- package/dist/ai/models.d.ts +2 -2
- package/dist/ai/models.generated.d.ts +783 -6311
- package/dist/ai/models.generated.js +2975 -8491
- package/dist/ai/models.js +4 -4
- package/dist/ai/providers/anthropic.js +13 -8
- package/dist/ai/types.d.ts +1 -1
- package/dist/app/background/tool-summaries.d.ts +1 -1
- package/dist/app/background/tool-summaries.js +2 -2
- package/dist/app/index.d.ts +0 -1
- package/dist/app/index.js +0 -1
- package/dist/app/prompts/shared-guidelines.js +3 -128
- package/dist/app/prompts/spreadjs-api-reference.json +2 -104
- package/dist/app/providers/google-vertex-gateway.d.ts +27 -0
- package/dist/app/providers/google-vertex-gateway.js +245 -0
- package/dist/app/providers/model-resolver.js +13 -4
- package/dist/app/providers/register-shortcut-provider.d.ts +21 -11
- package/dist/app/providers/register-shortcut-provider.js +81 -19
- package/dist/app/providers/shortcut-api-v2-transport.d.ts +23 -0
- package/dist/app/providers/shortcut-api-v2-transport.js +51 -0
- package/dist/app/providers/shortcut-llm-proxy-client.d.ts +27 -20
- package/dist/app/providers/shortcut-llm-proxy-client.js +106 -92
- package/dist/app/session/forked-agent.js +7 -3
- package/dist/app/session/model-manager.js +2 -2
- package/dist/app/session/session-models.d.ts +4 -0
- package/dist/app/session/session-models.js +25 -0
- package/dist/app/session/tool-summary-emitter.js +5 -3
- package/dist/app/tools/llm-analysis.js +3 -19
- package/dist/app/tools/take-screenshot.js +2 -18
- package/dist/cli/args.js +2 -2
- package/dist/cli.js +7969 -7843
- package/dist/constants.d.ts +6 -1
- package/dist/constants.js +8 -3
- package/dist/contracts/agent-api.d.ts +2 -4
- package/dist/contracts/agent-snapshot.d.ts +1 -0
- package/dist/contracts/host-tool.d.ts +5 -6
- package/dist/contracts/host-tool.js +5 -6
- package/dist/core/prompts/agent-guidelines.d.ts +18 -0
- package/dist/core/prompts/agent-guidelines.js +117 -0
- package/dist/embedded-agent/anthropic-messages-transport.js +5 -16
- package/dist/embedded-agent/compose.js +47 -26
- package/dist/embedded-agent/gateway-base-url.d.ts +27 -0
- package/dist/embedded-agent/gateway-base-url.js +41 -0
- package/dist/embedded-agent/host-tools/execute-code/allowed-functions.json +2 -62
- package/dist/embedded-agent/host-tools/task/agents/clone.js +8 -7
- package/dist/embedded-agent/host-tools/task/contract.d.ts +13 -0
- package/dist/embedded-agent/host-tools/task/contract.js +24 -6
- package/dist/embedded-agent/host-tools/task/manager.js +1 -1
- package/dist/embedded-agent/model-registry.d.ts +1 -2
- package/dist/embedded-agent/model-registry.js +1 -2
- package/dist/embedded-agent/openai-completions-transport.js +2 -4
- package/dist/embedded-agent/openai-responses-transport.js +2 -4
- package/dist/embedded-agent/prompt/build.js +10 -9
- package/dist/embedded-agent/prompt/modes/action.d.ts +0 -2
- package/dist/embedded-agent/prompt/modes/action.js +0 -25
- package/dist/embedded-agent/prompt/sections.d.ts +1 -6
- package/dist/embedded-agent/prompt/sections.js +1 -100
- package/dist/embedded-agent/stream.js +9 -7
- package/dist/endpoints.d.ts +8 -5
- package/dist/endpoints.js +8 -5
- package/dist/main.js +21 -7
- package/dist/model-display.js +6 -0
- package/dist/model-ids.d.ts +4 -4
- package/dist/model-ids.js +5 -5
- package/dist/packages/mog-sandbox-runtime/src/prompts/mog-api-reference.json +9869 -4686
- package/dist/shell/components/index.d.ts +1 -1
- package/dist/shell/components/index.js +1 -1
- package/dist/shell/components/interactive-shell-layout.d.ts +23 -0
- package/dist/shell/components/interactive-shell-layout.js +33 -1
- package/dist/shell/components/line-selection-scroll-container.js +3 -1
- package/dist/shell/components/primitives/footer.d.ts +9 -1
- package/dist/shell/components/primitives/footer.js +33 -11
- package/dist/shell/components/primitives/index.d.ts +1 -1
- package/dist/shell/components/primitives/index.js +1 -1
- package/dist/shell/components/primitives/keybinding-hints.d.ts +18 -5
- package/dist/shell/components/primitives/keybinding-hints.js +46 -12
- package/dist/shell/components/selectors/model-selector.js +2 -22
- package/dist/shell/index.d.ts +2 -2
- package/dist/shell/index.js +2 -2
- package/dist/shell/interactive/editor-defaults.d.ts +5 -0
- package/dist/shell/interactive/editor-defaults.js +5 -0
- package/dist/shell/interactive/interactive-mode.d.ts +17 -2
- package/dist/shell/interactive/interactive-mode.js +150 -15
- package/dist/shell/interactive/prompt-history-wiring.d.ts +12 -0
- package/dist/shell/interactive/prompt-history-wiring.js +45 -0
- package/dist/shell/keybindings.d.ts +18 -5
- package/dist/shell/keybindings.js +68 -20
- package/dist/shell/presentation/slash-command-rendering.js +3 -11
- package/dist/shell/prompt-history-store.d.ts +39 -0
- package/dist/shell/prompt-history-store.js +154 -0
- package/dist/shell/theme/theme-schema.json +1 -1
- package/dist/shortcut-model-catalog.js +31 -18
- package/dist/startup/timeout-snapshot.d.ts +13 -0
- package/dist/startup/timeout-snapshot.js +43 -0
- package/dist/tui/components/editor.d.ts +20 -1
- package/dist/tui/components/editor.js +264 -10
- package/dist/tui/editor-component.d.ts +16 -1
- package/dist/tui/index.d.ts +1 -0
- package/dist/tui/index.js +1 -0
- package/dist/tui/keybindings.d.ts +5 -1
- package/dist/tui/keybindings.js +9 -3
- package/dist/tui/keys.d.ts +16 -13
- package/dist/tui/keys.js +8 -6
- package/dist/utils/api-reference.js +5 -1
- package/package.json +1 -1
- package/skills/advanced-mog-api/api-reference.json +9869 -4686
- package/skills/skill-creator/references/schemas.md +1 -1
- package/user-docs/dist/shortcutxl-docs.pdf +0 -0
- package/xll/python/Lib/site-packages/httpx-0.28.1.dist-info/RECORD +1 -1
- package/xll/python/Lib/site-packages/idna-3.18.dist-info/RECORD +1 -1
- package/xll/python/Lib/site-packages/pip-26.1.2.dist-info/RECORD +3 -3
- package/xll/python/Lib/site-packages/pywin32-311.dist-info/RECORD +2 -2
- package/xll/python/Scripts/httpx.exe +0 -0
- package/xll/python/Scripts/idna.exe +0 -0
- package/xll/python/Scripts/pip.exe +0 -0
- package/xll/python/Scripts/pip3.13.exe +0 -0
- package/xll/python/Scripts/pip3.exe +0 -0
- package/xll/python/Scripts/pywin32_postinstall.exe +0 -0
- package/xll/python/Scripts/pywin32_testall.exe +0 -0
- package/dist/app/providers/llm-usage.d.ts +0 -16
- package/dist/app/providers/llm-usage.js +0 -42
- package/dist/app/providers/shortcut-invoke.d.ts +0 -15
- package/dist/app/providers/shortcut-invoke.js +0 -146
- package/dist/app/providers/shortcut-sse.d.ts +0 -15
- package/dist/app/providers/shortcut-sse.js +0 -56
- package/dist/app/providers/shortcut-stream.d.ts +0 -32
- package/dist/app/providers/shortcut-stream.js +0 -283
- package/dist/app/providers/sse-protocol.d.ts +0 -79
- package/dist/app/providers/sse-protocol.js +0 -37
package/BINARY-INVENTORY.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-05T22:33:02.450Z",
|
|
4
4
|
"package": "shortcutxl",
|
|
5
5
|
"binaryExtensions": [
|
|
6
6
|
".dll",
|
|
@@ -523,7 +523,7 @@
|
|
|
523
523
|
},
|
|
524
524
|
{
|
|
525
525
|
"path": "xll/python/Scripts/httpx.exe",
|
|
526
|
-
"sha256": "
|
|
526
|
+
"sha256": "031eb3e3b2d40faab175de19ab026c906f258de7e942d03d1e73a18b52d46713",
|
|
527
527
|
"source": "httpx console launcher installed into embedded Python",
|
|
528
528
|
"version": "see packaged httpx distribution",
|
|
529
529
|
"builtBy": "third-party",
|
|
@@ -531,7 +531,7 @@
|
|
|
531
531
|
},
|
|
532
532
|
{
|
|
533
533
|
"path": "xll/python/Scripts/idna.exe",
|
|
534
|
-
"sha256": "
|
|
534
|
+
"sha256": "3507fcce71ef09fdbee695c31827b4fc16be173b856a4851abd821d88590556a",
|
|
535
535
|
"source": "Python package console launcher installed into embedded Python",
|
|
536
536
|
"version": "see owning Python package metadata in site-packages",
|
|
537
537
|
"builtBy": "third-party",
|
|
@@ -539,7 +539,7 @@
|
|
|
539
539
|
},
|
|
540
540
|
{
|
|
541
541
|
"path": "xll/python/Scripts/pip.exe",
|
|
542
|
-
"sha256": "
|
|
542
|
+
"sha256": "6c981a5608712887689c7d809c3c6402bd70b3477517d2a5e37c581cb7273259",
|
|
543
543
|
"source": "pip console launcher installed into embedded Python",
|
|
544
544
|
"version": "see packaged pip distribution",
|
|
545
545
|
"builtBy": "third-party",
|
|
@@ -547,7 +547,7 @@
|
|
|
547
547
|
},
|
|
548
548
|
{
|
|
549
549
|
"path": "xll/python/Scripts/pip3.13.exe",
|
|
550
|
-
"sha256": "
|
|
550
|
+
"sha256": "6c981a5608712887689c7d809c3c6402bd70b3477517d2a5e37c581cb7273259",
|
|
551
551
|
"source": "pip console launcher installed into embedded Python",
|
|
552
552
|
"version": "see packaged pip distribution",
|
|
553
553
|
"builtBy": "third-party",
|
|
@@ -555,7 +555,7 @@
|
|
|
555
555
|
},
|
|
556
556
|
{
|
|
557
557
|
"path": "xll/python/Scripts/pip3.exe",
|
|
558
|
-
"sha256": "
|
|
558
|
+
"sha256": "6c981a5608712887689c7d809c3c6402bd70b3477517d2a5e37c581cb7273259",
|
|
559
559
|
"source": "pip console launcher installed into embedded Python",
|
|
560
560
|
"version": "see packaged pip distribution",
|
|
561
561
|
"builtBy": "third-party",
|
|
@@ -563,7 +563,7 @@
|
|
|
563
563
|
},
|
|
564
564
|
{
|
|
565
565
|
"path": "xll/python/Scripts/pywin32_postinstall.exe",
|
|
566
|
-
"sha256": "
|
|
566
|
+
"sha256": "d9d476c526bf11c4e1230e4df6dd83c35c974b36b1e6db75617757b8c3294def",
|
|
567
567
|
"source": "Python package console launcher installed into embedded Python",
|
|
568
568
|
"version": "see owning Python package metadata in site-packages",
|
|
569
569
|
"builtBy": "third-party",
|
|
@@ -571,7 +571,7 @@
|
|
|
571
571
|
},
|
|
572
572
|
{
|
|
573
573
|
"path": "xll/python/Scripts/pywin32_testall.exe",
|
|
574
|
-
"sha256": "
|
|
574
|
+
"sha256": "acfd69054b6e059bca45a255c20053fee2a6690b3b3a4db8cb0d65736ecfcd06",
|
|
575
575
|
"source": "Python package console launcher installed into embedded Python",
|
|
576
576
|
"version": "see owning Python package metadata in site-packages",
|
|
577
577
|
"builtBy": "third-party",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.67]
|
|
4
|
+
|
|
5
|
+
- **Persistent prompt history** — Your prompt history now persists across CLI sessions and can be accessed by up/down arrows.
|
|
6
|
+
- **GLM 5.2** — Added the GLM 5.2 model with zero data retention.
|
|
7
|
+
|
|
3
8
|
## [0.3.65]
|
|
4
9
|
|
|
5
10
|
- **Fable is back**
|
package/agent-docs/README.md
CHANGED
|
@@ -315,6 +315,25 @@ shortcut config # Enable/disable package resources
|
|
|
315
315
|
| `--session-dir <dir>` | Custom session storage directory |
|
|
316
316
|
| `--no-session` | Ephemeral mode (don't save) |
|
|
317
317
|
|
|
318
|
+
### Permission Options
|
|
319
|
+
|
|
320
|
+
Shortcut has separate controls for runtime permissions and spreadsheet permissions. Use the flag that matches the permission boundary you want to bypass for a single session.
|
|
321
|
+
|
|
322
|
+
| Option | Description |
|
|
323
|
+
|--------|-------------|
|
|
324
|
+
| `--skip-runtime-permissions` | Bypass runtime filesystem and shell approval checks for this session |
|
|
325
|
+
| `--skip-spreadsheet-permissions` | Allow headless spreadsheet auto-approval for this session |
|
|
326
|
+
|
|
327
|
+
Runtime and spreadsheet approvals are separate. `--skip-runtime-permissions` affects runtime-owned filesystem and shell checks; it does not change spreadsheet approvals. `--skip-spreadsheet-permissions` affects headless spreadsheet approval only; it does not bypass runtime filesystem or shell checks.
|
|
328
|
+
|
|
329
|
+
Use both flags when a non-interactive run needs both runtime access and spreadsheet auto-approval:
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
shortcut --skip-runtime-permissions --skip-spreadsheet-permissions -p "..."
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
In an interactive session, use `/permissions skip-runtime-permissions` to inspect or change the runtime bypass setting.
|
|
336
|
+
|
|
318
337
|
### Resource Options
|
|
319
338
|
|
|
320
339
|
| Option | Description |
|
|
@@ -533,7 +533,7 @@ interface ProviderConfig {
|
|
|
533
533
|
|
|
534
534
|
```typescript
|
|
535
535
|
interface ProviderModelConfig {
|
|
536
|
-
/** Model ID (e.g., "claude-sonnet-
|
|
536
|
+
/** Model ID (e.g., "claude-sonnet-5"). */
|
|
537
537
|
id: string;
|
|
538
538
|
|
|
539
539
|
/** Display name (e.g., "Claude 4 Sonnet"). */
|
|
@@ -4,7 +4,7 @@ All keyboard shortcuts can be customized via `~/.shortcut/agent/keybindings.json
|
|
|
4
4
|
|
|
5
5
|
## Key Format
|
|
6
6
|
|
|
7
|
-
`modifier+key` where modifiers are `ctrl`, `shift`, `alt` (combinable) and keys are:
|
|
7
|
+
`modifier+key` where modifiers are `ctrl`, `shift`, `alt`/`option`/`meta` (combinable) and keys are:
|
|
8
8
|
|
|
9
9
|
- **Letters:** `a-z`
|
|
10
10
|
- **Special:** `escape`, `esc`, `enter`, `return`, `tab`, `space`, `backspace`, `delete`, `insert`, `clear`, `home`, `end`, `pageUp`, `pageDown`, `up`, `down`, `left`, `right`
|
|
@@ -13,121 +13,127 @@ All keyboard shortcuts can be customized via `~/.shortcut/agent/keybindings.json
|
|
|
13
13
|
|
|
14
14
|
Modifier combinations: `ctrl+shift+x`, `alt+ctrl+x`, `ctrl+shift+alt+x`, etc.
|
|
15
15
|
|
|
16
|
+
On macOS, Shortcut displays the Alt/Meta modifier as `Option`. In config files, `alt`, `option`, and `meta` are accepted as aliases for the same terminal modifier, so `"option+p"` and `"alt+p"` behave the same when your terminal sends Option as Meta/Alt input.
|
|
17
|
+
|
|
16
18
|
## All Actions
|
|
17
19
|
|
|
18
20
|
### Cursor Movement
|
|
19
21
|
|
|
20
|
-
| Action
|
|
21
|
-
|
|
22
|
-
| `cursorUp`
|
|
23
|
-
| `cursorDown`
|
|
24
|
-
| `cursorLeft`
|
|
25
|
-
| `cursorRight`
|
|
26
|
-
| `cursorWordLeft`
|
|
27
|
-
| `cursorWordRight` | `alt+right`, `ctrl+right`, `alt+f` | Move cursor word right
|
|
28
|
-
| `cursorLineStart` | `home`, `ctrl+a`
|
|
29
|
-
| `cursorLineEnd`
|
|
30
|
-
| `jumpForward`
|
|
31
|
-
| `jumpBackward`
|
|
32
|
-
| `pageUp`
|
|
33
|
-
| `pageDown`
|
|
22
|
+
| Action | Default | Description |
|
|
23
|
+
| ----------------- | ---------------------------------- | -------------------------- |
|
|
24
|
+
| `cursorUp` | `up` | Move cursor up |
|
|
25
|
+
| `cursorDown` | `down` | Move cursor down |
|
|
26
|
+
| `cursorLeft` | `left`, `ctrl+b` | Move cursor left |
|
|
27
|
+
| `cursorRight` | `right`, `ctrl+f` | Move cursor right |
|
|
28
|
+
| `cursorWordLeft` | `alt+left`, `ctrl+left`, `alt+b` | Move cursor word left |
|
|
29
|
+
| `cursorWordRight` | `alt+right`, `ctrl+right`, `alt+f` | Move cursor word right |
|
|
30
|
+
| `cursorLineStart` | `home`, `ctrl+a` | Move to line start |
|
|
31
|
+
| `cursorLineEnd` | `end`, `ctrl+e` | Move to line end |
|
|
32
|
+
| `jumpForward` | `ctrl+]` | Jump forward to character |
|
|
33
|
+
| `jumpBackward` | `ctrl+alt+]` | Jump backward to character |
|
|
34
|
+
| `pageUp` | `pageUp` | Scroll up by page |
|
|
35
|
+
| `pageDown` | `pageDown` | Scroll down by page |
|
|
34
36
|
|
|
35
37
|
### Deletion
|
|
36
38
|
|
|
37
|
-
| Action
|
|
38
|
-
|
|
39
|
-
| `deleteCharBackward` | `backspace`
|
|
40
|
-
| `deleteCharForward`
|
|
41
|
-
| `deleteWordBackward` | `ctrl+w`, `alt+backspace` | Delete word backward
|
|
42
|
-
| `deleteWordForward`
|
|
43
|
-
| `deleteToLineStart`
|
|
44
|
-
| `deleteToLineEnd`
|
|
39
|
+
| Action | Default | Description |
|
|
40
|
+
| -------------------- | ------------------------- | ------------------------- |
|
|
41
|
+
| `deleteCharBackward` | `backspace` | Delete character backward |
|
|
42
|
+
| `deleteCharForward` | `delete`, `ctrl+d` | Delete character forward |
|
|
43
|
+
| `deleteWordBackward` | `ctrl+w`, `alt+backspace` | Delete word backward |
|
|
44
|
+
| `deleteWordForward` | `alt+d`, `alt+delete` | Delete word forward |
|
|
45
|
+
| `deleteToLineStart` | `ctrl+u` | Delete to line start |
|
|
46
|
+
| `deleteToLineEnd` | `ctrl+k` | Delete to line end |
|
|
45
47
|
|
|
46
48
|
### Text Input
|
|
47
49
|
|
|
48
|
-
| Action
|
|
49
|
-
|
|
50
|
-
| `newLine` | `shift+enter` | Insert new line
|
|
51
|
-
| `submit`
|
|
52
|
-
| `tab`
|
|
50
|
+
| Action | Default | Description |
|
|
51
|
+
| --------- | ------------- | ------------------ |
|
|
52
|
+
| `newLine` | `shift+enter` | Insert new line |
|
|
53
|
+
| `submit` | `enter` | Submit input |
|
|
54
|
+
| `tab` | `tab` | Tab / autocomplete |
|
|
53
55
|
|
|
54
56
|
### Kill Ring
|
|
55
57
|
|
|
56
|
-
| Action
|
|
57
|
-
|
|
58
|
-
| `yank`
|
|
59
|
-
| `yankPop` | `alt+y`
|
|
60
|
-
| `undo`
|
|
58
|
+
| Action | Default | Description |
|
|
59
|
+
| --------- | -------- | ------------------------------------- |
|
|
60
|
+
| `yank` | `ctrl+y` | Paste most recently deleted text |
|
|
61
|
+
| `yankPop` | `alt+y` | Cycle through deleted text after yank |
|
|
62
|
+
| `undo` | `ctrl+-` | Undo last edit |
|
|
61
63
|
|
|
62
64
|
### Clipboard
|
|
63
65
|
|
|
64
|
-
| Action
|
|
65
|
-
|
|
66
|
-
| `copy`
|
|
67
|
-
| `pasteImage` | `ctrl+v` | Paste image from clipboard |
|
|
66
|
+
| Action | Default | Description |
|
|
67
|
+
| ------------ | ----------------------------- | -------------------------- |
|
|
68
|
+
| `copy` | `ctrl+c` | Copy selection |
|
|
69
|
+
| `pasteImage` | `ctrl+v` (`alt+v` on Windows) | Paste image from clipboard |
|
|
68
70
|
|
|
69
71
|
### Application
|
|
70
72
|
|
|
71
|
-
| Action
|
|
72
|
-
|
|
73
|
-
| `interrupt`
|
|
74
|
-
| `clear`
|
|
75
|
-
| `exit`
|
|
76
|
-
| `suspend`
|
|
77
|
-
| `
|
|
73
|
+
| Action | Default | Description |
|
|
74
|
+
| ------------------------------- | ----------- | ------------------------------------------------ |
|
|
75
|
+
| `interrupt` | `escape` | Cancel / abort |
|
|
76
|
+
| `clear` | `ctrl+c` | Clear editor |
|
|
77
|
+
| `exit` | `ctrl+d` | Exit (when editor empty) |
|
|
78
|
+
| `suspend` | `ctrl+z` | Suspend to background |
|
|
79
|
+
| `toggleAutoApprove` | `shift+tab` | Toggle auto-approve |
|
|
80
|
+
| `toggleRuntimePermissionBypass` | `alt+r` | Toggle file/shell permission bypass |
|
|
81
|
+
| `toggleFastMode` | `alt+f` | Toggle fast mode |
|
|
82
|
+
| `externalEditor` | `ctrl+g` | Open in external editor (`$VISUAL` or `$EDITOR`) |
|
|
78
83
|
|
|
79
84
|
### Session
|
|
80
85
|
|
|
81
|
-
| Action
|
|
82
|
-
|
|
83
|
-
| `newSession` |
|
|
84
|
-
| `tree`
|
|
85
|
-
| `fork`
|
|
86
|
-
| `resume`
|
|
86
|
+
| Action | Default | Description |
|
|
87
|
+
| ------------ | -------- | -------------------------------------- |
|
|
88
|
+
| `newSession` | _(none)_ | Start a new session (`/new`) |
|
|
89
|
+
| `tree` | _(none)_ | Open session tree navigator (`/tree`) |
|
|
90
|
+
| `fork` | _(none)_ | Fork current session (`/fork`) |
|
|
91
|
+
| `resume` | _(none)_ | Open session resume picker (`/resume`) |
|
|
92
|
+
| `cycleMode` | `alt+m` | Cycle agent mode |
|
|
87
93
|
|
|
88
94
|
### Models & Thinking
|
|
89
95
|
|
|
90
|
-
| Action
|
|
91
|
-
|
|
92
|
-
| `selectModel`
|
|
93
|
-
| `cycleModelForward`
|
|
94
|
-
| `cycleModelBackward` | `shift+
|
|
95
|
-
| `cycleThinkingLevel` | `
|
|
96
|
+
| Action | Default | Description |
|
|
97
|
+
| -------------------- | ------------- | ----------------------- |
|
|
98
|
+
| `selectModel` | `ctrl+l` | Open model selector |
|
|
99
|
+
| `cycleModelForward` | `alt+p` | Cycle to next model |
|
|
100
|
+
| `cycleModelBackward` | `shift+alt+p` | Cycle to previous model |
|
|
101
|
+
| `cycleThinkingLevel` | `alt+t` | Cycle thinking level |
|
|
96
102
|
|
|
97
103
|
### Display
|
|
98
104
|
|
|
99
|
-
| Action
|
|
100
|
-
|
|
101
|
-
| `expandTools`
|
|
105
|
+
| Action | Default | Description |
|
|
106
|
+
| ---------------- | -------- | ------------------------------- |
|
|
107
|
+
| `expandTools` | `ctrl+o` | Collapse/expand tool output |
|
|
102
108
|
| `toggleThinking` | `ctrl+t` | Collapse/expand thinking blocks |
|
|
103
109
|
|
|
104
110
|
### Message Queue
|
|
105
111
|
|
|
106
|
-
| Action
|
|
107
|
-
|
|
108
|
-
| `followUp` | `alt+enter` | Queue follow-up message
|
|
109
|
-
| `dequeue`
|
|
112
|
+
| Action | Default | Description |
|
|
113
|
+
| ---------- | ----------- | --------------------------------- |
|
|
114
|
+
| `followUp` | `alt+enter` | Queue follow-up message |
|
|
115
|
+
| `dequeue` | `alt+up` | Restore queued messages to editor |
|
|
110
116
|
|
|
111
117
|
### Selection (Lists, Pickers)
|
|
112
118
|
|
|
113
|
-
| Action
|
|
114
|
-
|
|
115
|
-
| `selectUp`
|
|
116
|
-
| `selectDown`
|
|
117
|
-
| `selectPageUp`
|
|
118
|
-
| `selectPageDown` | `pageDown`
|
|
119
|
-
| `selectConfirm`
|
|
120
|
-
| `selectCancel`
|
|
119
|
+
| Action | Default | Description |
|
|
120
|
+
| ---------------- | ------------------ | ------------------- |
|
|
121
|
+
| `selectUp` | `up` | Move selection up |
|
|
122
|
+
| `selectDown` | `down` | Move selection down |
|
|
123
|
+
| `selectPageUp` | `pageUp` | Page up in list |
|
|
124
|
+
| `selectPageDown` | `pageDown` | Page down in list |
|
|
125
|
+
| `selectConfirm` | `enter` | Confirm selection |
|
|
126
|
+
| `selectCancel` | `escape`, `ctrl+c` | Cancel selection |
|
|
121
127
|
|
|
122
128
|
### Session Picker
|
|
123
129
|
|
|
124
|
-
| Action
|
|
125
|
-
|
|
126
|
-
| `toggleSessionPath`
|
|
127
|
-
| `toggleSessionSort`
|
|
128
|
-
| `toggleSessionNamedFilter` | `ctrl+n`
|
|
129
|
-
| `renameSession`
|
|
130
|
-
| `deleteSession`
|
|
130
|
+
| Action | Default | Description |
|
|
131
|
+
| -------------------------- | ---------------- | --------------------------------- |
|
|
132
|
+
| `toggleSessionPath` | `ctrl+p` | Toggle path display |
|
|
133
|
+
| `toggleSessionSort` | `ctrl+s` | Toggle sort mode |
|
|
134
|
+
| `toggleSessionNamedFilter` | `ctrl+n` | Toggle named-only filter |
|
|
135
|
+
| `renameSession` | `ctrl+r` | Rename session |
|
|
136
|
+
| `deleteSession` | `ctrl+d` | Delete session |
|
|
131
137
|
| `deleteSessionNoninvasive` | `ctrl+backspace` | Delete session (when query empty) |
|
|
132
138
|
|
|
133
139
|
## Custom Configuration
|
|
@@ -178,8 +178,8 @@ Use `modelOverrides` to customize specific built-in models without replacing the
|
|
|
178
178
|
"providers": {
|
|
179
179
|
"openrouter": {
|
|
180
180
|
"modelOverrides": {
|
|
181
|
-
"anthropic/claude-sonnet-
|
|
182
|
-
"name": "Claude Sonnet
|
|
181
|
+
"anthropic/claude-sonnet-5": {
|
|
182
|
+
"name": "Claude Sonnet 5 (Bedrock Route)",
|
|
183
183
|
"compat": {
|
|
184
184
|
"openRouterRouting": {
|
|
185
185
|
"only": ["amazon-bedrock"]
|
|
@@ -241,8 +241,8 @@ Example:
|
|
|
241
241
|
"api": "openai-completions",
|
|
242
242
|
"models": [
|
|
243
243
|
{
|
|
244
|
-
"id": "openrouter/anthropic/claude-
|
|
245
|
-
"name": "OpenRouter Claude
|
|
244
|
+
"id": "openrouter/anthropic/claude-sonnet-5",
|
|
245
|
+
"name": "OpenRouter Claude Sonnet 5",
|
|
246
246
|
"compat": {
|
|
247
247
|
"openRouterRouting": {
|
|
248
248
|
"order": ["anthropic"],
|
|
@@ -101,7 +101,7 @@ export AZURE_OPENAI_RESOURCE_NAME=your-resource
|
|
|
101
101
|
|
|
102
102
|
# Optional
|
|
103
103
|
export AZURE_OPENAI_API_VERSION=2024-02-01
|
|
104
|
-
export AZURE_OPENAI_DEPLOYMENT_NAME_MAP=gpt-
|
|
104
|
+
export AZURE_OPENAI_DEPLOYMENT_NAME_MAP=gpt-5.5-2026-04-23=my-gpt55
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
### Amazon Bedrock
|
|
@@ -124,7 +124,7 @@ export AWS_REGION=us-west-2
|
|
|
124
124
|
Also supports ECS task roles (`AWS_CONTAINER_CREDENTIALS_*`) and IRSA (`AWS_WEB_IDENTITY_TOKEN_FILE`).
|
|
125
125
|
|
|
126
126
|
```bash
|
|
127
|
-
shortcut --provider amazon-bedrock --model us.anthropic.claude-sonnet-
|
|
127
|
+
shortcut --provider amazon-bedrock --model us.anthropic.claude-sonnet-5-v1:0
|
|
128
128
|
```
|
|
129
129
|
|
|
130
130
|
If you are connecting to a Bedrock API proxy, the following environment variables can be used:
|
package/agent-docs/docs/rpc.md
CHANGED
|
@@ -230,7 +230,7 @@ Messages are `AgentMessage` objects (see [Message Types](#message-types)).
|
|
|
230
230
|
Switch to a specific model.
|
|
231
231
|
|
|
232
232
|
```json
|
|
233
|
-
{ "type": "set_model", "provider": "anthropic", "modelId": "claude-sonnet-
|
|
233
|
+
{ "type": "set_model", "provider": "anthropic", "modelId": "claude-sonnet-5" }
|
|
234
234
|
```
|
|
235
235
|
|
|
236
236
|
Response contains the full [Model](#model) object:
|
|
@@ -302,7 +302,7 @@ Set the reasoning/thinking level for models that support it.
|
|
|
302
302
|
|
|
303
303
|
Levels: `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`, `"xhigh"`
|
|
304
304
|
|
|
305
|
-
Note: `"xhigh"` is only supported by
|
|
305
|
+
Note: `"xhigh"` is only supported by the GPT 5.5 and Claude Opus 4.8 model families.
|
|
306
306
|
|
|
307
307
|
Response:
|
|
308
308
|
|
|
@@ -988,7 +988,7 @@ When recovery falls back to a different model:
|
|
|
988
988
|
{
|
|
989
989
|
"type": "recovery_fallback",
|
|
990
990
|
"category": "overloaded",
|
|
991
|
-
"fallbackModel": "claude-sonnet-
|
|
991
|
+
"fallbackModel": "claude-sonnet-5"
|
|
992
992
|
}
|
|
993
993
|
```
|
|
994
994
|
|
|
@@ -1235,7 +1235,7 @@ Source files:
|
|
|
1235
1235
|
|
|
1236
1236
|
```json
|
|
1237
1237
|
{
|
|
1238
|
-
"id": "claude-sonnet-
|
|
1238
|
+
"id": "claude-sonnet-5",
|
|
1239
1239
|
"name": "Claude Sonnet 4",
|
|
1240
1240
|
"api": "anthropic-messages",
|
|
1241
1241
|
"provider": "anthropic",
|
|
@@ -1278,7 +1278,7 @@ The `content` field can be a string or an array of `TextContent`/`ImageContent`
|
|
|
1278
1278
|
],
|
|
1279
1279
|
"api": "anthropic-messages",
|
|
1280
1280
|
"provider": "anthropic",
|
|
1281
|
-
"model": "claude-sonnet-
|
|
1281
|
+
"model": "claude-sonnet-5",
|
|
1282
1282
|
"usage": {
|
|
1283
1283
|
"input": 100,
|
|
1284
1284
|
"output": 50,
|
package/agent-docs/docs/sdk.md
CHANGED
|
@@ -295,7 +295,7 @@ const authStorage = AuthStorage.create();
|
|
|
295
295
|
const modelRegistry = new ModelRegistry(authStorage);
|
|
296
296
|
|
|
297
297
|
// Find specific built-in model (doesn't check if API key exists)
|
|
298
|
-
const opus = getModel("anthropic", "claude-opus-4-
|
|
298
|
+
const opus = getModel("anthropic", "claude-opus-4-8");
|
|
299
299
|
if (!opus) throw new Error("Model not found");
|
|
300
300
|
|
|
301
301
|
// Find any model by provider/id, including custom models from models.json
|
|
@@ -790,7 +790,7 @@ const statusTool: ToolDefinition = {
|
|
|
790
790
|
}),
|
|
791
791
|
};
|
|
792
792
|
|
|
793
|
-
const model = getModel("anthropic", "claude-opus-4-
|
|
793
|
+
const model = getModel("anthropic", "claude-opus-4-8");
|
|
794
794
|
if (!model) throw new Error("Model not found");
|
|
795
795
|
|
|
796
796
|
// In-memory settings with overrides
|
|
@@ -203,7 +203,7 @@ A message in the conversation. The `message` field contains an `AgentMessage`.
|
|
|
203
203
|
|
|
204
204
|
```json
|
|
205
205
|
{"type":"message","id":"a1b2c3d4","parentId":"prev1234","timestamp":"2024-12-03T14:00:01.000Z","message":{"role":"user","content":"Hello"}}
|
|
206
|
-
{"type":"message","id":"b2c3d4e5","parentId":"a1b2c3d4","timestamp":"2024-12-03T14:00:02.000Z","message":{"role":"assistant","content":[{"type":"text","text":"Hi!"}],"provider":"anthropic","model":"claude-sonnet-
|
|
206
|
+
{"type":"message","id":"b2c3d4e5","parentId":"a1b2c3d4","timestamp":"2024-12-03T14:00:02.000Z","message":{"role":"assistant","content":[{"type":"text","text":"Hi!"}],"provider":"anthropic","model":"claude-sonnet-5","usage":{...},"stopReason":"stop"}}
|
|
207
207
|
{"type":"message","id":"c3d4e5f6","parentId":"b2c3d4e5","timestamp":"2024-12-03T14:00:03.000Z","message":{"role":"toolResult","toolCallId":"call_123","toolName":"bash","content":[{"type":"text","text":"output"}],"isError":false}}
|
|
208
208
|
```
|
|
209
209
|
|
|
@@ -212,7 +212,7 @@ A message in the conversation. The `message` field contains an `AgentMessage`.
|
|
|
212
212
|
Emitted when the user switches models mid-session.
|
|
213
213
|
|
|
214
214
|
```json
|
|
215
|
-
{"type":"model_change","id":"d4e5f6g7","parentId":"c3d4e5f6","timestamp":"2024-12-03T14:05:00.000Z","provider":"openai","modelId":"gpt-
|
|
215
|
+
{"type":"model_change","id":"d4e5f6g7","parentId":"c3d4e5f6","timestamp":"2024-12-03T14:05:00.000Z","provider":"openai","modelId":"gpt-5.5-2026-04-23"}
|
|
216
216
|
```
|
|
217
217
|
|
|
218
218
|
### ThinkingLevelChangeEntry
|
|
@@ -110,7 +110,7 @@ When a provider requests a retry delay longer than `maxDelayMs` (e.g., Google's
|
|
|
110
110
|
|
|
111
111
|
```json
|
|
112
112
|
{
|
|
113
|
-
"enabledModels": ["claude-*", "gpt-
|
|
113
|
+
"enabledModels": ["claude-*", "gpt-5*", "gemini-3*"]
|
|
114
114
|
}
|
|
115
115
|
```
|
|
116
116
|
|
|
@@ -168,7 +168,7 @@ See [packages.md](packages.md) for package management details.
|
|
|
168
168
|
```json
|
|
169
169
|
{
|
|
170
170
|
"defaultProvider": "anthropic",
|
|
171
|
-
"defaultModel": "claude-sonnet-
|
|
171
|
+
"defaultModel": "claude-sonnet-5",
|
|
172
172
|
"defaultThinkingLevel": "medium",
|
|
173
173
|
"theme": "dark",
|
|
174
174
|
"compaction": {
|
|
@@ -180,7 +180,7 @@ See [packages.md](packages.md) for package management details.
|
|
|
180
180
|
"enabled": true,
|
|
181
181
|
"maxRetries": 3
|
|
182
182
|
},
|
|
183
|
-
"enabledModels": ["claude-*", "gpt-
|
|
183
|
+
"enabledModels": ["claude-*", "gpt-5*"],
|
|
184
184
|
"packages": ["pi-skills"]
|
|
185
185
|
}
|
|
186
186
|
```
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* # With API key
|
|
19
19
|
* CUSTOM_ANTHROPIC_API_KEY=sk-ant-... shortcut -e ./packages/coding-agent/examples/extensions/custom-provider
|
|
20
20
|
*
|
|
21
|
-
* Then use /model to select custom-anthropic/claude-sonnet-
|
|
21
|
+
* Then use /model to select custom-anthropic/claude-sonnet-5
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import Anthropic from '@anthropic-ai/sdk';
|
|
@@ -627,8 +627,8 @@ export default function (shortcut: ExtensionAPI) {
|
|
|
627
627
|
|
|
628
628
|
models: [
|
|
629
629
|
{
|
|
630
|
-
id: 'claude-opus-4-
|
|
631
|
-
name: 'Claude Opus 4.
|
|
630
|
+
id: 'claude-opus-4-8',
|
|
631
|
+
name: 'Claude Opus 4.8 (Custom)',
|
|
632
632
|
reasoning: true,
|
|
633
633
|
input: ['text', 'image'],
|
|
634
634
|
cost: { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 },
|
|
@@ -636,8 +636,8 @@ export default function (shortcut: ExtensionAPI) {
|
|
|
636
636
|
maxTokens: 64000
|
|
637
637
|
},
|
|
638
638
|
{
|
|
639
|
-
id: 'claude-sonnet-
|
|
640
|
-
name: 'Claude Sonnet
|
|
639
|
+
id: 'claude-sonnet-5',
|
|
640
|
+
name: 'Claude Sonnet 5 (Custom)',
|
|
641
641
|
reasoning: true,
|
|
642
642
|
input: ['text', 'image'],
|
|
643
643
|
cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
@@ -57,8 +57,8 @@ interface GitLabModel {
|
|
|
57
57
|
export const MODELS: GitLabModel[] = [
|
|
58
58
|
// Anthropic
|
|
59
59
|
{
|
|
60
|
-
id: 'claude-opus-4-
|
|
61
|
-
name: 'Claude Opus 4.
|
|
60
|
+
id: 'claude-opus-4-8',
|
|
61
|
+
name: 'Claude Opus 4.8',
|
|
62
62
|
backend: 'anthropic',
|
|
63
63
|
baseUrl: ANTHROPIC_PROXY_URL,
|
|
64
64
|
reasoning: true,
|
|
@@ -68,8 +68,8 @@ export const MODELS: GitLabModel[] = [
|
|
|
68
68
|
maxTokens: 32000
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
|
-
id: 'claude-sonnet-
|
|
72
|
-
name: 'Claude Sonnet
|
|
71
|
+
id: 'claude-sonnet-5',
|
|
72
|
+
name: 'Claude Sonnet 5',
|
|
73
73
|
backend: 'anthropic',
|
|
74
74
|
baseUrl: ANTHROPIC_PROXY_URL,
|
|
75
75
|
reasoning: true,
|
|
@@ -91,30 +91,8 @@ export const MODELS: GitLabModel[] = [
|
|
|
91
91
|
},
|
|
92
92
|
// OpenAI (all use Responses API)
|
|
93
93
|
{
|
|
94
|
-
id: 'gpt-5.
|
|
95
|
-
name: 'GPT
|
|
96
|
-
backend: 'openai',
|
|
97
|
-
baseUrl: OPENAI_PROXY_URL,
|
|
98
|
-
reasoning: true,
|
|
99
|
-
input: ['text', 'image'],
|
|
100
|
-
cost: { input: 2.5, output: 10, cacheRead: 0, cacheWrite: 0 },
|
|
101
|
-
contextWindow: 128000,
|
|
102
|
-
maxTokens: 16384
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
id: 'gpt-5-mini-2025-08-07',
|
|
106
|
-
name: 'GPT-5 Mini',
|
|
107
|
-
backend: 'openai',
|
|
108
|
-
baseUrl: OPENAI_PROXY_URL,
|
|
109
|
-
reasoning: true,
|
|
110
|
-
input: ['text', 'image'],
|
|
111
|
-
cost: { input: 0.15, output: 0.6, cacheRead: 0, cacheWrite: 0 },
|
|
112
|
-
contextWindow: 128000,
|
|
113
|
-
maxTokens: 16384
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
id: 'gpt-5-codex',
|
|
117
|
-
name: 'GPT-5 Codex',
|
|
94
|
+
id: 'gpt-5.5-2026-04-23',
|
|
95
|
+
name: 'GPT 5.5',
|
|
118
96
|
backend: 'openai',
|
|
119
97
|
baseUrl: OPENAI_PROXY_URL,
|
|
120
98
|
reasoning: true,
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Run: pnpm exec tsx test.ts [model-id] [--thinking]
|
|
4
4
|
*
|
|
5
5
|
* Examples:
|
|
6
|
-
* pnpm exec tsx test.ts # Test default (claude-sonnet-
|
|
7
|
-
* pnpm exec tsx test.ts gpt-5-
|
|
8
|
-
* pnpm exec tsx test.ts claude-sonnet-
|
|
6
|
+
* pnpm exec tsx test.ts # Test default (claude-sonnet-5)
|
|
7
|
+
* pnpm exec tsx test.ts gpt-5.5-2026-04-23 # Test GPT 5.5
|
|
8
|
+
* pnpm exec tsx test.ts claude-sonnet-5 --thinking
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { readFileSync } from 'fs';
|
|
@@ -23,7 +23,7 @@ import { MODELS, streamGitLabDuo } from './index.js';
|
|
|
23
23
|
const MODEL_MAP = new Map(MODELS.map((m) => [m.id, m]));
|
|
24
24
|
|
|
25
25
|
async function main() {
|
|
26
|
-
const modelId = process.argv[2] || 'claude-sonnet-
|
|
26
|
+
const modelId = process.argv[2] || 'claude-sonnet-5';
|
|
27
27
|
const useThinking = process.argv.includes('--thinking');
|
|
28
28
|
|
|
29
29
|
const cfg = MODEL_MAP.get(modelId);
|
|
@@ -160,14 +160,14 @@ export default function (shortcut: ExtensionAPI) {
|
|
|
160
160
|
ctx.ui.notify('Preparing summary...', 'info');
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
const model = getModel('openai', 'gpt-5.
|
|
163
|
+
const model = getModel('openai', 'gpt-5.5-2026-04-23');
|
|
164
164
|
if (!model && ctx.hasUI) {
|
|
165
|
-
ctx.ui.notify('Model openai/gpt-5.
|
|
165
|
+
ctx.ui.notify('Model openai/gpt-5.5-2026-04-23 not found', 'warning');
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
const apiKey = model ? await ctx.modelRegistry.getApiKey(model) : undefined;
|
|
169
169
|
if (!apiKey && ctx.hasUI) {
|
|
170
|
-
ctx.ui.notify('No API key for openai/gpt-5.
|
|
170
|
+
ctx.ui.notify('No API key for openai/gpt-5.5-2026-04-23', 'warning');
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
if (!model || !apiKey) {
|
|
@@ -12,7 +12,7 @@ const authStorage = AuthStorage.create();
|
|
|
12
12
|
const modelRegistry = new ModelRegistry(authStorage);
|
|
13
13
|
|
|
14
14
|
// Option 1: Find a specific built-in model by provider/id
|
|
15
|
-
const opus = getModel('anthropic', 'claude-
|
|
15
|
+
const opus = getModel('anthropic', 'claude-haiku-4-5');
|
|
16
16
|
if (opus) {
|
|
17
17
|
console.log(`Found model: ${opus.provider}/${opus.id}`);
|
|
18
18
|
}
|
|
@@ -32,7 +32,7 @@ if (process.env.MY_ANTHROPIC_KEY) {
|
|
|
32
32
|
// Model registry with no custom models.json
|
|
33
33
|
const modelRegistry = new ModelRegistry(authStorage);
|
|
34
34
|
|
|
35
|
-
const model = getModel('anthropic', 'claude-
|
|
35
|
+
const model = getModel('anthropic', 'claude-haiku-4-5');
|
|
36
36
|
if (!model) throw new Error('Model not found');
|
|
37
37
|
|
|
38
38
|
// In-memory settings with overrides
|