pi-umbra 0.1.2 → 0.1.3

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.
@@ -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. Answers are stripped of control and bidi characters before any renderer sees them.
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.0",
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
- /copy-chat puts the conversation on the clipboard.
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.0",
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
- 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.
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,34 @@
1
- {
2
- "name": "pi-umbra-help",
3
- "version": "0.1.0",
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.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,6 +1,16 @@
1
1
  # pi-umbra-inputbar
2
2
 
3
- 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.
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,33 @@
1
- {
2
- "name": "pi-umbra-inputbar",
3
- "version": "0.1.0",
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.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,6 +1,13 @@
1
1
  # pi-umbra-preview
2
2
 
3
- Render a document with pandoc and open it in the browser, from inside pi.
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,33 @@
1
- {
2
- "name": "pi-umbra-preview",
3
- "version": "0.1.0",
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.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,6 +1,13 @@
1
1
  # pi-umbra-rename
2
2
 
3
- One command that renames a pi session and the terminal window title together, which pi keeps behind two separate APIs.
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,33 @@
1
- {
2
- "name": "pi-umbra-rename",
3
- "version": "0.1.0",
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.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,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 text. Needs the umbra bundle patches; without them it does nothing.
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,33 @@
1
- {
2
- "name": "pi-umbra-shimmer",
3
- "version": "0.1.0",
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.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,6 +1,23 @@
1
1
  # pi-umbra-skill-matcher
2
2
 
3
- Type /huh and reach skill:huh. pi lists every skill under its bare name, which is not the name that dispatches.
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.0",
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
- 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.
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.0",
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.2",
3
+ "version": "0.1.3",
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",