pi-umbra 0.1.2 → 0.1.4
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/node_modules/pi-umbra-ask/README.md +13 -1
- package/node_modules/pi-umbra-ask/package.json +37 -37
- package/node_modules/pi-umbra-copy-chat/README.md +8 -1
- package/node_modules/pi-umbra-copy-chat/package.json +32 -32
- package/node_modules/pi-umbra-help/README.md +10 -1
- package/node_modules/pi-umbra-help/package.json +37 -34
- package/node_modules/pi-umbra-inputbar/README.md +11 -1
- package/node_modules/pi-umbra-inputbar/package.json +37 -33
- package/node_modules/pi-umbra-preview/README.md +10 -4
- package/node_modules/pi-umbra-preview/package.json +36 -33
- package/node_modules/pi-umbra-rename/README.md +8 -1
- package/node_modules/pi-umbra-rename/package.json +36 -33
- package/node_modules/pi-umbra-shimmer/README.md +14 -1
- package/node_modules/pi-umbra-shimmer/package.json +36 -33
- package/node_modules/pi-umbra-skill-matcher/README.md +18 -1
- package/node_modules/pi-umbra-skill-matcher/package.json +35 -35
- package/node_modules/pi-umbra-theme/README.md +30 -1
- package/node_modules/pi-umbra-theme/package.json +45 -45
- package/package.json +6 -6
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# pi-umbra-ask
|
|
2
2
|
|
|
3
|
-
A tool the model can call to ask you a question mid-turn
|
|
3
|
+
A tool the model can call to ask you a question mid-turn, instead of guessing or stopping.
|
|
4
|
+
|
|
5
|
+
pi gives a model no way to put a question on screen and wait for the answer. Without one,
|
|
6
|
+
an agent that reaches a fork either picks for you or ends the turn to ask, and both cost
|
|
7
|
+
more than the question would have. This registers that tool.
|
|
8
|
+
|
|
9
|
+
The questionnaire takes single or multiple choice. Layout is one column per element, so a
|
|
10
|
+
row is exactly as wide checked as unchecked and nothing drifts when a glyph changes. There
|
|
11
|
+
is no cursor column: the row under the cursor is coloured instead, which costs no width and
|
|
12
|
+
cannot fall out of alignment.
|
|
13
|
+
|
|
14
|
+
Answers are stripped of control and bidi characters before any renderer sees them, so an
|
|
15
|
+
answer cannot rewrite the screen around it.
|
|
4
16
|
|
|
5
17
|
```
|
|
6
18
|
pi-umbra-ask/
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-ask",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "A tool the model can call to ask you a question mid-turn. Answers are stripped of control and bidi characters before any renderer sees them.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi-extension",
|
|
8
|
-
"tool",
|
|
9
|
-
"prompt"
|
|
10
|
-
],
|
|
11
|
-
"author": "grkn",
|
|
12
|
-
"license": "MIT",
|
|
13
|
-
"repository": {
|
|
14
|
-
"type": "git",
|
|
15
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
16
|
-
"directory": "pi-umbra-ask"
|
|
17
|
-
},
|
|
18
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-ask#readme",
|
|
19
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
20
|
-
"type": "module",
|
|
21
|
-
"files": [
|
|
22
|
-
"extensions",
|
|
23
|
-
"lib",
|
|
24
|
-
"checks",
|
|
25
|
-
"README.md"
|
|
26
|
-
],
|
|
27
|
-
"pi": {
|
|
28
|
-
"extensions": [
|
|
29
|
-
"./extensions"
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
"peerDependencies": {
|
|
33
|
-
"@earendil-works/pi-ai": "*",
|
|
34
|
-
"@earendil-works/pi-coding-agent": "*",
|
|
35
|
-
"@earendil-works/pi-tui": "*"
|
|
36
|
-
}
|
|
37
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-ask",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "A tool the model can call to ask you a question mid-turn. Answers are stripped of control and bidi characters before any renderer sees them.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi-extension",
|
|
8
|
+
"tool",
|
|
9
|
+
"prompt"
|
|
10
|
+
],
|
|
11
|
+
"author": "grkn",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
16
|
+
"directory": "pi-umbra-ask"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-ask#readme",
|
|
19
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"files": [
|
|
22
|
+
"extensions",
|
|
23
|
+
"lib",
|
|
24
|
+
"checks",
|
|
25
|
+
"README.md"
|
|
26
|
+
],
|
|
27
|
+
"pi": {
|
|
28
|
+
"extensions": [
|
|
29
|
+
"./extensions"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"@earendil-works/pi-ai": "*",
|
|
34
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
35
|
+
"@earendil-works/pi-tui": "*"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# pi-umbra-copy-chat
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`/umb-copy-chat` puts the whole session on the clipboard as Markdown.
|
|
4
|
+
|
|
5
|
+
pi has three commands nearby and none of them do this. `/export` writes HTML or JSONL to
|
|
6
|
+
disk. `/copy` takes only the last message. `/share` uploads to a gist.
|
|
7
|
+
|
|
8
|
+
This writes no file, spends no model turn and uploads nothing. Everything the session holds
|
|
9
|
+
between the first user message and the last one goes to the clipboard, and that is the
|
|
10
|
+
whole feature.
|
|
4
11
|
|
|
5
12
|
```
|
|
6
13
|
pi-umbra-copy-chat/
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-copy-chat",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "/copy-chat puts the conversation on the clipboard.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi-extension",
|
|
8
|
-
"clipboard"
|
|
9
|
-
],
|
|
10
|
-
"author": "grkn",
|
|
11
|
-
"license": "MIT",
|
|
12
|
-
"repository": {
|
|
13
|
-
"type": "git",
|
|
14
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
15
|
-
"directory": "pi-umbra-copy-chat"
|
|
16
|
-
},
|
|
17
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-copy-chat#readme",
|
|
18
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
19
|
-
"type": "module",
|
|
20
|
-
"files": [
|
|
21
|
-
"extensions",
|
|
22
|
-
"README.md"
|
|
23
|
-
],
|
|
24
|
-
"pi": {
|
|
25
|
-
"extensions": [
|
|
26
|
-
"./extensions"
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
"peerDependencies": {
|
|
30
|
-
"@earendil-works/pi-coding-agent": "*"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-copy-chat",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "/copy-chat puts the conversation on the clipboard.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi-extension",
|
|
8
|
+
"clipboard"
|
|
9
|
+
],
|
|
10
|
+
"author": "grkn",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
15
|
+
"directory": "pi-umbra-copy-chat"
|
|
16
|
+
},
|
|
17
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-copy-chat#readme",
|
|
18
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
19
|
+
"type": "module",
|
|
20
|
+
"files": [
|
|
21
|
+
"extensions",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"pi": {
|
|
25
|
+
"extensions": [
|
|
26
|
+
"./extensions"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@earendil-works/pi-coding-agent": "*"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
# pi-umbra-help
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`/umb-help` says what is installed and how to configure it. `/umb-doctor` says what is
|
|
4
|
+
broken.
|
|
5
|
+
|
|
6
|
+
Two commands rather than one, because they answer different questions and a help screen
|
|
7
|
+
that also lists faults buries the faults.
|
|
8
|
+
|
|
9
|
+
Neither reads a written-down list, so neither can drift out of date. Commands come from
|
|
10
|
+
`pi.getCommands()`, patches from the bundle on disk, skill roots from the directories pi
|
|
11
|
+
itself walks. Install or remove a package and both commands notice without anything here
|
|
12
|
+
being edited.
|
|
4
13
|
|
|
5
14
|
```
|
|
6
15
|
pi-umbra-help/
|
|
@@ -1,34 +1,37 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-help",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Two commands over the pi-umbra family: /umb-help lists what is installed and how to configure it, /umb-doctor reports the faults that would otherwise stay silent.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi",
|
|
8
|
-
"pi-extension",
|
|
9
|
-
"help",
|
|
10
|
-
"doctor",
|
|
11
|
-
"diagnostics"
|
|
12
|
-
],
|
|
13
|
-
"author": "grkn",
|
|
14
|
-
"license": "MIT",
|
|
15
|
-
"repository": {
|
|
16
|
-
"type": "git",
|
|
17
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
-
"directory": "pi-umbra-help"
|
|
19
|
-
},
|
|
20
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-help#readme",
|
|
21
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
-
"files": [
|
|
23
|
-
"extensions",
|
|
24
|
-
"checks",
|
|
25
|
-
"lib",
|
|
26
|
-
"README.md",
|
|
27
|
-
"LICENSE"
|
|
28
|
-
],
|
|
29
|
-
"pi": {
|
|
30
|
-
"extensions": [
|
|
31
|
-
"./extensions"
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-help",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Two commands over the pi-umbra family: /umb-help lists what is installed and how to configure it, /umb-doctor reports the faults that would otherwise stay silent.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi",
|
|
8
|
+
"pi-extension",
|
|
9
|
+
"help",
|
|
10
|
+
"doctor",
|
|
11
|
+
"diagnostics"
|
|
12
|
+
],
|
|
13
|
+
"author": "grkn",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
+
"directory": "pi-umbra-help"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-help#readme",
|
|
21
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
+
"files": [
|
|
23
|
+
"extensions",
|
|
24
|
+
"checks",
|
|
25
|
+
"lib",
|
|
26
|
+
"README.md",
|
|
27
|
+
"LICENSE"
|
|
28
|
+
],
|
|
29
|
+
"pi": {
|
|
30
|
+
"extensions": [
|
|
31
|
+
"./extensions"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@earendil-works/pi-coding-agent": "*"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
# pi-umbra-inputbar
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The input box, with the session name on its top border and a border colour you pick.
|
|
4
|
+
|
|
5
|
+
In a stack of terminals every pi looks the same. The name on the border says which session
|
|
6
|
+
this window is without opening anything, and the colour tells two of them apart from across
|
|
7
|
+
the screen.
|
|
8
|
+
|
|
9
|
+
`/umb-color` sets the colour and keeps it in `~/.pi/agent/input-color`. The name is read
|
|
10
|
+
from `pi.getSessionName()` at every render, so a rename shows on the next repaint.
|
|
11
|
+
|
|
12
|
+
Nothing here is patched. It rides on `ctx.ui.setEditorComponent` with a `CustomEditor`
|
|
13
|
+
subclass, which is pi's own extension point for exactly this.
|
|
4
14
|
|
|
5
15
|
```
|
|
6
16
|
pi-umbra-inputbar/
|
|
@@ -1,33 +1,37 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-inputbar",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "pi's input bar, rebuilt: a chevron prompt, the session name on the border, a colour you pick, and a command to rename the session.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi",
|
|
8
|
-
"pi-extension",
|
|
9
|
-
"tui",
|
|
10
|
-
"editor",
|
|
11
|
-
"prompt"
|
|
12
|
-
],
|
|
13
|
-
"author": "grkn",
|
|
14
|
-
"license": "MIT",
|
|
15
|
-
"repository": {
|
|
16
|
-
"type": "git",
|
|
17
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
-
"directory": "pi-umbra-inputbar"
|
|
19
|
-
},
|
|
20
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-inputbar#readme",
|
|
21
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
-
"files": [
|
|
23
|
-
"extensions",
|
|
24
|
-
"checks",
|
|
25
|
-
"README.md",
|
|
26
|
-
"LICENSE"
|
|
27
|
-
],
|
|
28
|
-
"pi": {
|
|
29
|
-
"extensions": [
|
|
30
|
-
"./extensions"
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-inputbar",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "pi's input bar, rebuilt: a chevron prompt, the session name on the border, a colour you pick, and a command to rename the session.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi",
|
|
8
|
+
"pi-extension",
|
|
9
|
+
"tui",
|
|
10
|
+
"editor",
|
|
11
|
+
"prompt"
|
|
12
|
+
],
|
|
13
|
+
"author": "grkn",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
+
"directory": "pi-umbra-inputbar"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-inputbar#readme",
|
|
21
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
+
"files": [
|
|
23
|
+
"extensions",
|
|
24
|
+
"checks",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"pi": {
|
|
29
|
+
"extensions": [
|
|
30
|
+
"./extensions"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
35
|
+
"@earendil-works/pi-tui": "*"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# pi-umbra-preview
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`/umb-preview` renders a document with pandoc and opens it in the browser.
|
|
4
|
+
|
|
5
|
+
Reading a Markdown file in a terminal means reading its source: fences, pipes, link
|
|
6
|
+
brackets. This renders it instead. pandoc turns the document into one self-contained HTML
|
|
7
|
+
file and the system browser opens that.
|
|
8
|
+
|
|
9
|
+
A PDF or an HTML file is opened directly. pandoc reads neither, and converting a PDF to
|
|
10
|
+
HTML in order to look at a PDF is work with nothing at the end of it.
|
|
4
11
|
|
|
5
12
|
```
|
|
6
13
|
pi-umbra-preview/
|
|
@@ -13,7 +20,8 @@ pi-umbra-preview/
|
|
|
13
20
|
## Needs pandoc
|
|
14
21
|
|
|
15
22
|
Not bundled, never installed for you. It is looked for when a preview is asked for, not at
|
|
16
|
-
load, so a missing pandoc costs one message rather than a failed extension.
|
|
23
|
+
load, so a missing pandoc costs one message rather than a failed extension. The message
|
|
24
|
+
names the install command for the platform it is printed on.
|
|
17
25
|
|
|
18
26
|
| | |
|
|
19
27
|
|---|---|
|
|
@@ -21,8 +29,6 @@ load, so a missing pandoc costs one message rather than a failed extension.
|
|
|
21
29
|
| macOS | `brew install pandoc` |
|
|
22
30
|
| Linux | `sudo apt install pandoc` |
|
|
23
31
|
|
|
24
|
-
A PDF or an HTML file opens directly and needs no pandoc.
|
|
25
|
-
|
|
26
32
|
## Install
|
|
27
33
|
|
|
28
34
|
```sh
|
|
@@ -1,33 +1,36 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-preview",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Render a document with pandoc and open it in the browser, from inside pi.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi",
|
|
8
|
-
"pi-extension",
|
|
9
|
-
"pandoc",
|
|
10
|
-
"preview",
|
|
11
|
-
"markdown"
|
|
12
|
-
],
|
|
13
|
-
"author": "grkn",
|
|
14
|
-
"license": "MIT",
|
|
15
|
-
"repository": {
|
|
16
|
-
"type": "git",
|
|
17
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
-
"directory": "pi-umbra-preview"
|
|
19
|
-
},
|
|
20
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-preview#readme",
|
|
21
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
-
"files": [
|
|
23
|
-
"extensions",
|
|
24
|
-
"checks",
|
|
25
|
-
"README.md",
|
|
26
|
-
"LICENSE"
|
|
27
|
-
],
|
|
28
|
-
"pi": {
|
|
29
|
-
"extensions": [
|
|
30
|
-
"./extensions"
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-preview",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Render a document with pandoc and open it in the browser, from inside pi.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi",
|
|
8
|
+
"pi-extension",
|
|
9
|
+
"pandoc",
|
|
10
|
+
"preview",
|
|
11
|
+
"markdown"
|
|
12
|
+
],
|
|
13
|
+
"author": "grkn",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
+
"directory": "pi-umbra-preview"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-preview#readme",
|
|
21
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
+
"files": [
|
|
23
|
+
"extensions",
|
|
24
|
+
"checks",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"pi": {
|
|
29
|
+
"extensions": [
|
|
30
|
+
"./extensions"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@earendil-works/pi-coding-agent": "*"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# pi-umbra-rename
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`/umb-rename` sets the session name and the terminal window title in one command.
|
|
4
|
+
|
|
5
|
+
pi keeps them behind two APIs: `setSessionName` on the extension object, `setTitle` on the
|
|
6
|
+
command context's UI. Set only one and the session selector and the window tab disagree
|
|
7
|
+
about what this window is, which is the whole reason you renamed it.
|
|
8
|
+
|
|
9
|
+
Called with a name it renames straight away. Called bare it prompts, seeded with the
|
|
10
|
+
current name.
|
|
4
11
|
|
|
5
12
|
```
|
|
6
13
|
pi-umbra-rename/
|
|
@@ -1,33 +1,36 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-rename",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "One command that renames a pi session and the terminal window title together, which pi keeps behind two separate APIs.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi",
|
|
8
|
-
"pi-extension",
|
|
9
|
-
"session",
|
|
10
|
-
"rename",
|
|
11
|
-
"title"
|
|
12
|
-
],
|
|
13
|
-
"author": "grkn",
|
|
14
|
-
"license": "MIT",
|
|
15
|
-
"repository": {
|
|
16
|
-
"type": "git",
|
|
17
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
-
"directory": "pi-umbra-rename"
|
|
19
|
-
},
|
|
20
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-rename#readme",
|
|
21
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
-
"files": [
|
|
23
|
-
"extensions",
|
|
24
|
-
"checks",
|
|
25
|
-
"README.md",
|
|
26
|
-
"LICENSE"
|
|
27
|
-
],
|
|
28
|
-
"pi": {
|
|
29
|
-
"extensions": [
|
|
30
|
-
"./extensions"
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-rename",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "One command that renames a pi session and the terminal window title together, which pi keeps behind two separate APIs.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi",
|
|
8
|
+
"pi-extension",
|
|
9
|
+
"session",
|
|
10
|
+
"rename",
|
|
11
|
+
"title"
|
|
12
|
+
],
|
|
13
|
+
"author": "grkn",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
+
"directory": "pi-umbra-rename"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-rename#readme",
|
|
21
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
+
"files": [
|
|
23
|
+
"extensions",
|
|
24
|
+
"checks",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"pi": {
|
|
29
|
+
"extensions": [
|
|
30
|
+
"./extensions"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@earendil-works/pi-coding-agent": "*"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
# pi-umbra-shimmer
|
|
2
2
|
|
|
3
|
-
A wave of colour running through pi's working indicator, over both the spinner and the
|
|
3
|
+
A wave of colour running through pi's working indicator, over both the spinner and the
|
|
4
|
+
text.
|
|
5
|
+
|
|
6
|
+
The highlight is not one colour. It travels from white down to the theme's own main colour
|
|
7
|
+
and back, blending the whole way rather than stepping, so the band changes tone while it
|
|
8
|
+
moves.
|
|
9
|
+
|
|
10
|
+
pi builds the working indicator with a colour function already in hand, and paints custom
|
|
11
|
+
spinner frames verbatim without running them through that step at all. Both points are
|
|
12
|
+
past what the extension API exposes, so reaching them needs a bundle patch, which is not
|
|
13
|
+
published in this repo.
|
|
14
|
+
|
|
15
|
+
Installed alone this package does nothing. The patches are inert without it. With neither
|
|
16
|
+
present pi keeps its own behaviour, so nothing here can half-apply.
|
|
4
17
|
|
|
5
18
|
```
|
|
6
19
|
pi-umbra-shimmer/
|
|
@@ -1,33 +1,36 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-shimmer",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "A wave of colour running through pi's working indicator, over both the spinner and the text. Needs the umbra bundle patches; without them it does nothing.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi",
|
|
8
|
-
"pi-extension",
|
|
9
|
-
"tui",
|
|
10
|
-
"spinner",
|
|
11
|
-
"animation"
|
|
12
|
-
],
|
|
13
|
-
"author": "grkn",
|
|
14
|
-
"license": "MIT",
|
|
15
|
-
"repository": {
|
|
16
|
-
"type": "git",
|
|
17
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
-
"directory": "pi-umbra-shimmer"
|
|
19
|
-
},
|
|
20
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-shimmer#readme",
|
|
21
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
-
"files": [
|
|
23
|
-
"extensions",
|
|
24
|
-
"checks",
|
|
25
|
-
"README.md",
|
|
26
|
-
"LICENSE"
|
|
27
|
-
],
|
|
28
|
-
"pi": {
|
|
29
|
-
"extensions": [
|
|
30
|
-
"./extensions"
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-shimmer",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "A wave of colour running through pi's working indicator, over both the spinner and the text. Needs the umbra bundle patches; without them it does nothing.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi",
|
|
8
|
+
"pi-extension",
|
|
9
|
+
"tui",
|
|
10
|
+
"spinner",
|
|
11
|
+
"animation"
|
|
12
|
+
],
|
|
13
|
+
"author": "grkn",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
18
|
+
"directory": "pi-umbra-shimmer"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-shimmer#readme",
|
|
21
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
22
|
+
"files": [
|
|
23
|
+
"extensions",
|
|
24
|
+
"checks",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"pi": {
|
|
29
|
+
"extensions": [
|
|
30
|
+
"./extensions"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@earendil-works/pi-coding-agent": "*"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
# pi-umbra-skill-matcher
|
|
2
2
|
|
|
3
|
-
Type
|
|
3
|
+
Type `/huh` and reach `skill:huh`. Complete a skill anywhere in the line, not only at the
|
|
4
|
+
start of it.
|
|
5
|
+
|
|
6
|
+
pi lists every skill in the completion dropdown under its bare name, but only `/skill:huh`
|
|
7
|
+
runs one. So the dropdown offers `/huh`, you press enter, and pi answers "Unknown command".
|
|
8
|
+
The fuzzy matching is not the problem; the name it matches against is. This wraps the
|
|
9
|
+
built-in provider and rewrites every skill row to the form that dispatches, then re-runs
|
|
10
|
+
the match against the prefixed name so `/skill:hu` still finds it after the built-in pass
|
|
11
|
+
has given up.
|
|
12
|
+
|
|
13
|
+
It also fills the mid-sentence slash menu. pi gates that menu on the line starting with
|
|
14
|
+
`/`, so a `/name` written inside a sentence never reaches a provider at all. Lifting the
|
|
15
|
+
gate needs a bundle patch, which is not published in this repo. What appears behind the
|
|
16
|
+
gate is decided here.
|
|
17
|
+
|
|
18
|
+
The mid-sentence match stays deliberately narrow, so a path keeps behaving like a path:
|
|
19
|
+
the token must be the last one on the line, hold no space, and follow real text ending in
|
|
20
|
+
whitespace. `src/foo` and an indented `/foo` both fail those tests and are left to pi.
|
|
4
21
|
|
|
5
22
|
```
|
|
6
23
|
pi-umbra-skill-matcher/
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-skill-matcher",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Type /huh and reach skill:huh. pi lists every skill under its bare name, which is not the name that dispatches.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi-extension",
|
|
8
|
-
"autocomplete",
|
|
9
|
-
"skills"
|
|
10
|
-
],
|
|
11
|
-
"author": "grkn",
|
|
12
|
-
"license": "MIT",
|
|
13
|
-
"repository": {
|
|
14
|
-
"type": "git",
|
|
15
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
16
|
-
"directory": "pi-umbra-skill-matcher"
|
|
17
|
-
},
|
|
18
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-skill-matcher#readme",
|
|
19
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
20
|
-
"type": "module",
|
|
21
|
-
"files": [
|
|
22
|
-
"extensions",
|
|
23
|
-
"checks",
|
|
24
|
-
"README.md"
|
|
25
|
-
],
|
|
26
|
-
"pi": {
|
|
27
|
-
"extensions": [
|
|
28
|
-
"./extensions"
|
|
29
|
-
]
|
|
30
|
-
},
|
|
31
|
-
"peerDependencies": {
|
|
32
|
-
"@earendil-works/pi-coding-agent": "*",
|
|
33
|
-
"@earendil-works/pi-tui": "*"
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-skill-matcher",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Type /huh and reach skill:huh. pi lists every skill under its bare name, which is not the name that dispatches.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi-extension",
|
|
8
|
+
"autocomplete",
|
|
9
|
+
"skills"
|
|
10
|
+
],
|
|
11
|
+
"author": "grkn",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
16
|
+
"directory": "pi-umbra-skill-matcher"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-skill-matcher#readme",
|
|
19
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"files": [
|
|
22
|
+
"extensions",
|
|
23
|
+
"checks",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"pi": {
|
|
27
|
+
"extensions": [
|
|
28
|
+
"./extensions"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"peerDependencies": {
|
|
32
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
33
|
+
"@earendil-works/pi-tui": "*"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
# pi-umbra-theme
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Seven dark themes, and the five extensions that dress everything a theme cannot reach.
|
|
4
|
+
|
|
5
|
+
A pi theme colours pi's own text: the selected line, your message, the three tool boxes.
|
|
6
|
+
The window behind all of it, the space beside model output, the status line and the frame
|
|
7
|
+
around a tool call sit outside a theme, and pi ships no theme token for any of them.
|
|
8
|
+
|
|
9
|
+
**umbra-background** reads the active theme's `export.pageBg` and sets the terminal
|
|
10
|
+
background to it with OSC 11, then puts it back on exit with OSC 111. pi only ever sends
|
|
11
|
+
the query form of OSC 11, so it reads your background and leaves it alone. A theme without
|
|
12
|
+
an `export.pageBg` is left alone too, so nothing is guessed.
|
|
13
|
+
|
|
14
|
+
**umbra-gutter** draws a bar beside everything the model says, so your text and its text
|
|
15
|
+
stay separable in a long session. It is a Markdown quote rather than a literal prefix: a
|
|
16
|
+
literal prefix breaks the opening fence of a code block, and every code block in the answer
|
|
17
|
+
then renders as paragraph text.
|
|
18
|
+
|
|
19
|
+
**umbra-toolbox** frames each tool call, so a long transcript reads as blocks instead of
|
|
20
|
+
one stream. It wraps `ToolExecutionComponent.prototype.render`, which pi exports and which
|
|
21
|
+
follows the `Component` contract every pi component implements. The wrapper only puts a
|
|
22
|
+
border around lines pi already drew, so highlighting, diffs, images and the expand
|
|
23
|
+
affordance keep working.
|
|
24
|
+
|
|
25
|
+
**umbra-footer** puts two columns under the conversation. On the left the model and its
|
|
26
|
+
thinking level, context used against the window, and the turn cost when the provider
|
|
27
|
+
reports one. On the right the working directory and the git branch. A terminal too narrow
|
|
28
|
+
for both drops the right column whole rather than truncating a path into nonsense.
|
|
29
|
+
|
|
30
|
+
**umbra-working** replaces pi's fixed "Working" with the tool that is running, how long the
|
|
31
|
+
turn has taken and how many output tokens it has cost so far. The words map onto pi's own
|
|
32
|
+
`ToolCallEvent` union, so the grouping is not a guess about which tools exist.
|
|
4
33
|
|
|
5
34
|
```
|
|
6
35
|
pi-umbra-theme/
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-umbra-theme",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "pi's look in one package: seven umbra themes and the terminal background they set, a status footer, a gutter beside model text, a frame around every tool call, and a working line that names the running tool.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"pi-package",
|
|
7
|
-
"pi",
|
|
8
|
-
"pi-extension",
|
|
9
|
-
"pi-theme",
|
|
10
|
-
"tui",
|
|
11
|
-
"theme",
|
|
12
|
-
"footer"
|
|
13
|
-
],
|
|
14
|
-
"author": "grkn",
|
|
15
|
-
"license": "MIT",
|
|
16
|
-
"repository": {
|
|
17
|
-
"type": "git",
|
|
18
|
-
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
19
|
-
"directory": "pi-umbra-theme"
|
|
20
|
-
},
|
|
21
|
-
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-theme#readme",
|
|
22
|
-
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
23
|
-
"type": "module",
|
|
24
|
-
"files": [
|
|
25
|
-
"extensions",
|
|
26
|
-
"checks",
|
|
27
|
-
"lib",
|
|
28
|
-
"themes",
|
|
29
|
-
"README.md",
|
|
30
|
-
"LICENSE"
|
|
31
|
-
],
|
|
32
|
-
"pi": {
|
|
33
|
-
"extensions": [
|
|
34
|
-
"./extensions"
|
|
35
|
-
],
|
|
36
|
-
"themes": [
|
|
37
|
-
"./themes"
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
|
-
"peerDependencies": {
|
|
41
|
-
"@earendil-works/pi-ai": "*",
|
|
42
|
-
"@earendil-works/pi-coding-agent": "*",
|
|
43
|
-
"@earendil-works/pi-tui": "*"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-umbra-theme",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "pi's look in one package: seven umbra themes and the terminal background they set, a status footer, a gutter beside model text, a frame around every tool call, and a working line that names the running tool.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi",
|
|
8
|
+
"pi-extension",
|
|
9
|
+
"pi-theme",
|
|
10
|
+
"tui",
|
|
11
|
+
"theme",
|
|
12
|
+
"footer"
|
|
13
|
+
],
|
|
14
|
+
"author": "grkn",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/grknbyk/pi-umbra.git",
|
|
19
|
+
"directory": "pi-umbra-theme"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://github.com/grknbyk/pi-umbra/tree/main/pi-umbra-theme#readme",
|
|
22
|
+
"bugs": "https://github.com/grknbyk/pi-umbra/issues",
|
|
23
|
+
"type": "module",
|
|
24
|
+
"files": [
|
|
25
|
+
"extensions",
|
|
26
|
+
"checks",
|
|
27
|
+
"lib",
|
|
28
|
+
"themes",
|
|
29
|
+
"README.md",
|
|
30
|
+
"LICENSE"
|
|
31
|
+
],
|
|
32
|
+
"pi": {
|
|
33
|
+
"extensions": [
|
|
34
|
+
"./extensions"
|
|
35
|
+
],
|
|
36
|
+
"themes": [
|
|
37
|
+
"./themes"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"@earendil-works/pi-ai": "*",
|
|
42
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
43
|
+
"@earendil-works/pi-tui": "*"
|
|
44
|
+
}
|
|
45
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-umbra",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Every small thing pi does not build in, in one install: seven themes and the chrome around them, the input bar, session rename, a shimmer through the working indicator, mid-prompt skill completion, ask, copy-chat, preview and help.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"pi-umbra-theme": "0.1.1",
|
|
43
43
|
"pi-umbra-ask": "0.1.1",
|
|
44
44
|
"pi-umbra-copy-chat": "0.1.1",
|
|
45
|
-
"pi-umbra-help": "0.1.
|
|
46
|
-
"pi-umbra-inputbar": "0.1.
|
|
47
|
-
"pi-umbra-preview": "0.1.
|
|
48
|
-
"pi-umbra-rename": "0.1.
|
|
49
|
-
"pi-umbra-shimmer": "0.1.
|
|
45
|
+
"pi-umbra-help": "0.1.2",
|
|
46
|
+
"pi-umbra-inputbar": "0.1.2",
|
|
47
|
+
"pi-umbra-preview": "0.1.2",
|
|
48
|
+
"pi-umbra-rename": "0.1.2",
|
|
49
|
+
"pi-umbra-shimmer": "0.1.2",
|
|
50
50
|
"pi-umbra-skill-matcher": "0.1.1"
|
|
51
51
|
},
|
|
52
52
|
"bundledDependencies": [
|