Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@ jobs:
- name: Install dependencies
run: python -m pip install -U "jupyterlab>=4,<5"

- name: Check lockfiles are deduplicated
run: |
set -eux
jlpm dedupe --check
cd ui-tests
jlpm dedupe --check

- name: Lint the extension
run: |
set -eux
Expand Down
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ This extension provides a new command, `Load Current File As Extension`, availab

It also adds a single right sidebar panel with two collapsible sections:

- **Extension Points**: token string IDs and command IDs, with a `Tokens` / `Commands` switch. Tokens support search, copy, and import actions. Commands support search and copy actions.
- **Extension Points**: token string IDs and command IDs, with a `Tokens` / `Commands` switch. Tokens support search, copy, and import actions. Commands support search, copy, and insert-at-cursor actions.
- **Extension Examples**: discovered examples from a local checkout of [`jupyterlab/extension-examples`](https://github.com/jupyterlab/extension-examples), so you can open them directly from the panel.

If examples are missing:
Expand Down Expand Up @@ -139,6 +139,24 @@ Plugin Playground supports AI-assisted extension prototyping in both JupyterLite
- [JupyterLite AI documentation](https://jupyterlite-ai.readthedocs.io/en/latest/)
- [Plugin authoring skill for agents](_agents/skills/plugin-authoring/SKILL.md)

### Command Insert Modes (Default + AI Prompt)

The `+` action in the `Commands` tab depends on mode:

- `Insert in selection` inserts:

```ts
app.commands.execute('<command-id>');
```

at the active cursor position.

- `Prompt AI to insert` does not insert directly. It opens JupyterLite AI chat and prefills a prompt with file context so AI can choose the best insertion location before you submit.

The sidebar remembers your last-used command insert mode in:

- `commandInsertDefaultMode` (`insert` or `ai`, `insert` by default)

### Commands for AI Agents and Automation

Plugin Playground now exposes command APIs that mirror sidebar data and support optional `query` filtering:
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
"@codemirror/state": "^6.5.4",
"@codemirror/view": "^6.39.16",
"@jupyter-widgets/base": "^6.0.0",
"@jupyter/chat": "^0.21.0",
"@jupyterlab/application": "^4.5.5",
"@jupyterlab/apputils": "^4.6.5",
"@jupyterlab/codemirror": "^4.5.5",
Expand Down
7 changes: 7 additions & 0 deletions schema/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,13 @@
"default": false,
"type": "boolean"
},
"commandInsertDefaultMode": {
"title": "Default command insertion mode",
"description": "The default action used by the + button in the Commands tab. Use \"insert\" to insert command execution directly at cursor, or \"ai\" to open JupyterLite AI chat with a prefilled prompt so AI can place the insertion in context.",
"default": "insert",
"type": "string",
"enum": ["insert", "ai"]
},
"plugins": {
"title": "Plugins",
"description": "List of strings of plugin text to load automatically. Line breaks are encoded as '\\n'",
Expand Down
Loading
Loading