@pi-unipi/unipi 2.0.6 → 2.0.8
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/LICENSE +21 -0
- package/package.json +22 -38
- package/packages/ask-user/ask-ui.ts +3 -3
- package/packages/ask-user/commands.ts +1 -1
- package/packages/ask-user/handoff.ts +1 -1
- package/packages/ask-user/index.ts +1 -1
- package/packages/ask-user/launcher-ui.ts +2 -2
- package/packages/ask-user/package.json +58 -0
- package/packages/ask-user/settings-tui.ts +2 -2
- package/packages/ask-user/tools.ts +2 -2
- package/packages/autocomplete/package.json +45 -0
- package/packages/autocomplete/src/__tests__/provider.sorting.test.ts +1 -1
- package/packages/autocomplete/src/index.ts +1 -1
- package/packages/autocomplete/src/provider.ts +2 -2
- package/packages/autocomplete/src/sorting.ts +1 -1
- package/packages/btw/extensions/btw.ts +3 -3
- package/packages/btw/package.json +50 -0
- package/packages/cocoindex/commands.ts +1 -1
- package/packages/cocoindex/index.ts +1 -1
- package/packages/cocoindex/installer.ts +1 -1
- package/packages/cocoindex/package.json +42 -0
- package/packages/cocoindex/tools.ts +2 -2
- package/packages/compactor/package.json +61 -0
- package/packages/compactor/src/commands/index.ts +1 -1
- package/packages/compactor/src/compaction/cut.ts +2 -2
- package/packages/compactor/src/compaction/hooks.ts +4 -4
- package/packages/compactor/src/compaction/normalize.ts +1 -1
- package/packages/compactor/src/compaction/summarize.ts +1 -1
- package/packages/compactor/src/display/diff-presentation.ts +1 -1
- package/packages/compactor/src/display/diff-renderer.ts +1 -1
- package/packages/compactor/src/display/diff-width-safety.ts +1 -1
- package/packages/compactor/src/display/line-width-safety.ts +1 -1
- package/packages/compactor/src/index.ts +1 -1
- package/packages/compactor/src/session/recall-blocks.ts +2 -2
- package/packages/compactor/src/tools/register.ts +10 -10
- package/packages/compactor/src/tui/settings-overlay.ts +3 -3
- package/packages/compactor/src/types.ts +1 -1
- package/packages/core/package.json +34 -0
- package/packages/footer/package.json +53 -0
- package/packages/footer/src/commands.ts +1 -1
- package/packages/footer/src/events.ts +1 -1
- package/packages/footer/src/help.ts +2 -2
- package/packages/footer/src/index.ts +3 -3
- package/packages/footer/src/rendering/renderer.ts +2 -2
- package/packages/footer/src/rendering/theme.ts +1 -1
- package/packages/footer/src/segments/status-ext.ts +1 -1
- package/packages/footer/src/tui/settings-tui.ts +2 -2
- package/packages/footer/src/types.ts +1 -1
- package/packages/info-screen/core-groups.ts +3 -3
- package/packages/info-screen/index.ts +1 -1
- package/packages/info-screen/package.json +51 -0
- package/packages/info-screen/tui/info-overlay.ts +3 -3
- package/packages/input-shortcuts/package.json +51 -0
- package/packages/input-shortcuts/src/chord-overlay.ts +2 -2
- package/packages/input-shortcuts/src/index.ts +2 -2
- package/packages/input-shortcuts/src/settings-overlay.ts +2 -2
- package/packages/input-shortcuts/src/status.ts +1 -1
- package/packages/kanboard/commands.ts +1 -1
- package/packages/kanboard/index.ts +1 -1
- package/packages/kanboard/package.json +55 -0
- package/packages/kanboard/tui/kanboard-overlay.ts +2 -2
- package/packages/mcp/package.json +48 -0
- package/packages/mcp/src/index.ts +1 -1
- package/packages/mcp/src/tui/add-overlay.ts +2 -2
- package/packages/mcp/src/tui/settings-overlay.ts +2 -2
- package/packages/memory/commands.ts +1 -1
- package/packages/memory/embedding.ts +1 -1
- package/packages/memory/index.ts +1 -1
- package/packages/memory/package.json +63 -0
- package/packages/memory/tools.ts +2 -2
- package/packages/memory/tui/settings-tui.ts +1 -1
- package/packages/milestone/commands.ts +1 -1
- package/packages/milestone/hooks.ts +1 -1
- package/packages/milestone/index.ts +1 -1
- package/packages/milestone/package.json +51 -0
- package/packages/notify/ask-user-prompt-message.ts +75 -0
- package/packages/notify/commands.ts +1 -1
- package/packages/notify/events.ts +55 -7
- package/packages/notify/index.ts +1 -1
- package/packages/notify/package.json +61 -0
- package/packages/notify/src/__tests__/ask-user-prompt-message.test.ts +159 -0
- package/packages/notify/src/__tests__/event-bus.test.ts +118 -0
- package/packages/notify/tools.ts +2 -2
- package/packages/notify/tui/gotify-setup.ts +3 -3
- package/packages/notify/tui/ntfy-setup.ts +3 -3
- package/packages/notify/tui/recap-model-selector.ts +3 -3
- package/packages/notify/tui/settings-overlay.ts +3 -3
- package/packages/notify/tui/telegram-setup.ts +3 -3
- package/packages/ralph/SKILL.md +86 -0
- package/packages/ralph/index.ts +1 -1
- package/packages/ralph/package.json +47 -0
- package/packages/ralph/ralph-loop.ts +1 -1
- package/packages/ralph/tools.ts +2 -2
- package/packages/subagents/package.json +33 -0
- package/packages/subagents/src/agent-manager.ts +2 -2
- package/packages/subagents/src/agent-runner.ts +3 -3
- package/packages/subagents/src/conversation-viewer.ts +2 -2
- package/packages/subagents/src/custom-agents.ts +1 -1
- package/packages/subagents/src/index.ts +4 -4
- package/packages/subagents/src/model-resolver.ts +1 -1
- package/packages/subagents/src/types.ts +2 -2
- package/packages/subagents/src/widget.ts +3 -3
- package/packages/unipi/index.ts +1 -1
- package/packages/updater/package.json +54 -0
- package/packages/updater/src/commands.ts +1 -1
- package/packages/updater/src/index.ts +1 -1
- package/packages/updater/src/markdown.ts +4 -4
- package/packages/updater/src/tui/changelog-overlay.ts +4 -4
- package/packages/updater/src/tui/readme-overlay.ts +4 -4
- package/packages/updater/src/tui/settings-overlay.ts +3 -3
- package/packages/updater/src/tui/update-overlay.ts +4 -4
- package/packages/utility/package.json +56 -0
- package/packages/utility/src/commands.ts +1 -1
- package/packages/utility/src/diff/renderer.ts +1 -1
- package/packages/utility/src/diff/wrapper.ts +2 -2
- package/packages/utility/src/index.ts +2 -2
- package/packages/utility/src/info-screen.ts +1 -1
- package/packages/utility/src/tools/env.ts +1 -1
- package/packages/utility/src/tui/badge-settings-tui.ts +2 -2
- package/packages/utility/src/tui/name-badge-state.ts +1 -1
- package/packages/utility/src/tui/name-badge.ts +3 -3
- package/packages/utility/src/tui/util-settings-tui.ts +2 -2
- package/packages/web-api/package.json +59 -0
- package/packages/web-api/src/commands.ts +1 -1
- package/packages/web-api/src/index.ts +1 -1
- package/packages/web-api/src/tools.ts +2 -2
- package/packages/web-api/src/tui/settings-dialog.ts +1 -1
- package/packages/workflow/commands.ts +1 -1
- package/packages/workflow/index.ts +1 -1
- package/packages/workflow/package.json +45 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Neuron Mr White
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-unipi/unipi",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"description": "All-in-one extension suite for Pi coding agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,61 +24,45 @@
|
|
|
24
24
|
],
|
|
25
25
|
"scripts": {
|
|
26
26
|
"typecheck": "npx tsc --noEmit --skipLibCheck",
|
|
27
|
-
"test": "npm test --workspaces --if-present",
|
|
27
|
+
"test": "node --test tests/*.test.js && npm test --workspaces --if-present",
|
|
28
28
|
"publish:all": "npm publish --workspaces --access public"
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
|
+
"packages/*/package.json",
|
|
31
32
|
"packages/*/*.ts",
|
|
32
33
|
"packages/*/src/**/*.ts",
|
|
33
34
|
"packages/*/extensions/**/*.ts",
|
|
34
35
|
"packages/*/platforms/*",
|
|
35
36
|
"packages/*/tui/*",
|
|
37
|
+
"packages/*/SKILL.md",
|
|
36
38
|
"packages/*/skills/**/*",
|
|
37
39
|
"packages/*/README.md"
|
|
38
40
|
],
|
|
39
41
|
"pi": {
|
|
40
42
|
"extensions": [
|
|
41
|
-
"
|
|
42
|
-
"node_modules/@pi-unipi/ralph/index.ts",
|
|
43
|
-
"node_modules/@pi-unipi/memory/index.ts",
|
|
44
|
-
"node_modules/@pi-unipi/info-screen/index.ts",
|
|
45
|
-
"node_modules/@pi-unipi/subagents/src/index.ts",
|
|
46
|
-
"node_modules/@pi-unipi/btw/extensions/btw.ts",
|
|
47
|
-
"node_modules/@pi-unipi/web-api/src/index.ts",
|
|
48
|
-
"node_modules/@pi-unipi/utility/src/index.ts",
|
|
49
|
-
"node_modules/@pi-unipi/ask-user/index.ts",
|
|
50
|
-
"node_modules/@pi-unipi/mcp/src/index.ts",
|
|
51
|
-
"node_modules/@pi-unipi/compactor/src/index.ts",
|
|
52
|
-
"node_modules/@pi-unipi/notify/index.ts",
|
|
53
|
-
"node_modules/@pi-unipi/milestone/index.ts",
|
|
54
|
-
"node_modules/@pi-unipi/kanboard/index.ts",
|
|
55
|
-
"node_modules/@pi-unipi/command-enchantment/src/index.ts",
|
|
56
|
-
"node_modules/@pi-unipi/footer/src/index.ts",
|
|
57
|
-
"node_modules/@pi-unipi/updater/src/index.ts",
|
|
58
|
-
"node_modules/@pi-unipi/input-shortcuts/src/index.ts",
|
|
59
|
-
"node_modules/@pi-unipi/cocoindex/index.ts"
|
|
43
|
+
"packages/unipi/index.ts"
|
|
60
44
|
],
|
|
61
45
|
"skills": [
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
46
|
+
"packages/workflow/skills",
|
|
47
|
+
"packages/ralph/SKILL.md",
|
|
48
|
+
"packages/memory/skills",
|
|
49
|
+
"packages/btw/skills",
|
|
50
|
+
"packages/ask-user/skills",
|
|
51
|
+
"packages/mcp/skills",
|
|
52
|
+
"packages/utility/skills",
|
|
53
|
+
"packages/compactor/skills",
|
|
54
|
+
"packages/notify/skills",
|
|
55
|
+
"packages/milestone/skills",
|
|
56
|
+
"packages/kanboard/skills",
|
|
57
|
+
"packages/updater/skills",
|
|
58
|
+
"packages/cocoindex/skills"
|
|
75
59
|
]
|
|
76
60
|
},
|
|
77
61
|
"peerDependencies": {
|
|
78
|
-
"@
|
|
79
|
-
"@
|
|
80
|
-
"@
|
|
81
|
-
"
|
|
62
|
+
"@earendil-works/pi-ai": "^0.75.5",
|
|
63
|
+
"@earendil-works/pi-coding-agent": "^0.75.5",
|
|
64
|
+
"@earendil-works/pi-tui": "^0.75.5",
|
|
65
|
+
"typebox": "^1.1.38"
|
|
82
66
|
},
|
|
83
67
|
"dependencies": {
|
|
84
68
|
"@pi-unipi/ask-user": "*",
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Uses ctx.ui.custom() callback pattern following question.ts/questionnaire.ts.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { Editor, type EditorTheme, Key, matchesKey, Text, truncateToWidth, type TUI, visibleWidth, wrapTextWithAnsi } from "@
|
|
9
|
-
import type { Theme, AgentToolResult } from "@
|
|
8
|
+
import { Editor, type EditorTheme, Key, matchesKey, Text, truncateToWidth, type TUI, visibleWidth, wrapTextWithAnsi } from "@earendil-works/pi-tui";
|
|
9
|
+
import type { Theme, AgentToolResult } from "@earendil-works/pi-coding-agent";
|
|
10
10
|
import type { NormalizedOption, AskUserResponse } from "./types.js";
|
|
11
11
|
|
|
12
12
|
/** Result returned by the ask UI */
|
|
@@ -34,7 +34,7 @@ export function renderAskUI(params: {
|
|
|
34
34
|
}): (
|
|
35
35
|
tui: TUI,
|
|
36
36
|
theme: Theme,
|
|
37
|
-
kb: import("@
|
|
37
|
+
kb: import("@earendil-works/pi-coding-agent").KeybindingsManager,
|
|
38
38
|
done: (result: AskUIResult | null) => void,
|
|
39
39
|
) => {
|
|
40
40
|
render: (width: number) => string[];
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Registers settings command for ask_user tool.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { ExtensionAPI, ExtensionContext } from "@
|
|
7
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
8
8
|
import { UNIPI_PREFIX } from "@pi-unipi/core";
|
|
9
9
|
import { AskUserSettingsOverlay } from "./settings-tui.js";
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Queues launcher prefill messages without waiting for LLM follow-up.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { ExtensionAPI, ExtensionContext } from "@
|
|
7
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
8
8
|
import type { SessionLaunchReason, SessionLaunchStatus } from "./types.js";
|
|
9
9
|
|
|
10
10
|
/** Compact handoff fallback timer. Keeps the launcher from stalling if callbacks wait for the tool turn to finish. */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* multi-select, and freeform modes. Includes bundled skill for agent guidance.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type { ExtensionAPI } from "@
|
|
8
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
9
9
|
import {
|
|
10
10
|
UNIPI_EVENTS,
|
|
11
11
|
MODULES,
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Offers Compact & run, Run directly, or Cancel.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { Key, matchesKey, truncateToWidth, type TUI, visibleWidth } from "@
|
|
9
|
-
import type { Theme, KeybindingsManager } from "@
|
|
8
|
+
import { Key, matchesKey, truncateToWidth, type TUI, visibleWidth } from "@earendil-works/pi-tui";
|
|
9
|
+
import type { Theme, KeybindingsManager } from "@earendil-works/pi-coding-agent";
|
|
10
10
|
import type { SessionLauncherResult } from "./types.js";
|
|
11
11
|
|
|
12
12
|
/** Launcher option definition */
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pi-unipi/ask-user",
|
|
3
|
+
"version": "2.0.8",
|
|
4
|
+
"description": "Structured user input tool for Pi coding agent — single-select, multi-select, freeform",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "index.ts",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Neuron Mr White",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/Neuron-Mr-White/unipi.git",
|
|
12
|
+
"directory": "packages/ask-user"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"pi-package",
|
|
16
|
+
"pi-extension",
|
|
17
|
+
"pi-coding-agent",
|
|
18
|
+
"unipi",
|
|
19
|
+
"ask-user",
|
|
20
|
+
"interactive",
|
|
21
|
+
"user-input"
|
|
22
|
+
],
|
|
23
|
+
"files": [
|
|
24
|
+
"index.ts",
|
|
25
|
+
"types.ts",
|
|
26
|
+
"tools.ts",
|
|
27
|
+
"handoff.ts",
|
|
28
|
+
"ask-ui.ts",
|
|
29
|
+
"launcher-ui.ts",
|
|
30
|
+
"commands.ts",
|
|
31
|
+
"config.ts",
|
|
32
|
+
"settings-tui.ts",
|
|
33
|
+
"skills/**/*",
|
|
34
|
+
"README.md"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"test": "node --experimental-strip-types --test tests/**/*.test.ts"
|
|
38
|
+
},
|
|
39
|
+
"pi": {
|
|
40
|
+
"extensions": [
|
|
41
|
+
"index.ts"
|
|
42
|
+
],
|
|
43
|
+
"skills": [
|
|
44
|
+
"skills"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@pi-unipi/core": "*"
|
|
52
|
+
},
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"@earendil-works/pi-coding-agent": "^0.75.5",
|
|
55
|
+
"@earendil-works/pi-tui": "^0.75.5",
|
|
56
|
+
"typebox": "^1.1.38"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Allows enabling/disabling the tool and configuring allowed question formats.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type { Component } from "@
|
|
9
|
-
import { truncateToWidth, visibleWidth } from "@
|
|
8
|
+
import type { Component } from "@earendil-works/pi-tui";
|
|
9
|
+
import { truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
10
10
|
import { getAskUserSettings, saveAskUserSettings, type AskUserSettings } from "./config.js";
|
|
11
11
|
|
|
12
12
|
/** ANSI escape codes */
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Registers ask_user tool for structured user input.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Type } from "
|
|
8
|
-
import type { ExtensionAPI, ExtensionContext } from "@
|
|
7
|
+
import { Type } from "typebox";
|
|
8
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
9
9
|
import {
|
|
10
10
|
ASK_USER_TOOLS,
|
|
11
11
|
COMPACTOR_INSTRUCTION,
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pi-unipi/command-enchantment",
|
|
3
|
+
"version": "2.0.8",
|
|
4
|
+
"description": "Enhanced TUI autocomplete for /unipi:* commands — colored, sorted, and grouped by package",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "src/index.ts",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Neuron Mr White",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/Neuron-Mr-White/unipi.git",
|
|
12
|
+
"directory": "packages/autocomplete"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/Neuron-Mr-White/unipi#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/Neuron-Mr-White/unipi/issues"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"pi-package",
|
|
20
|
+
"pi-extension",
|
|
21
|
+
"pi-coding-agent",
|
|
22
|
+
"unipi",
|
|
23
|
+
"autocomplete"
|
|
24
|
+
],
|
|
25
|
+
"pi": {
|
|
26
|
+
"extensions": [
|
|
27
|
+
"src/index.ts"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"src/**/*.ts",
|
|
32
|
+
"README.md"
|
|
33
|
+
],
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@earendil-works/pi-coding-agent": "^0.75.5",
|
|
36
|
+
"@earendil-works/pi-tui": "^0.75.5"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"test": "vitest run"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^25.6.0",
|
|
43
|
+
"vitest": "^4.1.5"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
sortTaggedItems,
|
|
12
12
|
type TaggedItem,
|
|
13
13
|
} from "../sorting.js";
|
|
14
|
-
import type { AutocompleteItem } from "@
|
|
14
|
+
import type { AutocompleteItem } from "@earendil-works/pi-tui";
|
|
15
15
|
|
|
16
16
|
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
17
17
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Setting: autocompleteEnhanced (default: true)
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import type { ExtensionAPI } from "@
|
|
12
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
13
13
|
import { createEnchantedProvider } from "./provider.js";
|
|
14
14
|
import { isAutocompleteEnhanced } from "./settings.js";
|
|
15
15
|
|
|
@@ -10,8 +10,8 @@ import type {
|
|
|
10
10
|
AutocompleteItem,
|
|
11
11
|
AutocompleteProvider,
|
|
12
12
|
AutocompleteSuggestions,
|
|
13
|
-
} from "@
|
|
14
|
-
import { fuzzyFilter } from "@
|
|
13
|
+
} from "@earendil-works/pi-tui";
|
|
14
|
+
import { fuzzyFilter } from "@earendil-works/pi-tui";
|
|
15
15
|
|
|
16
16
|
import {
|
|
17
17
|
COMMAND_REGISTRY,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Extracted cross-item priority and merge-sort for testability.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { AutocompleteItem } from "@
|
|
7
|
+
import type { AutocompleteItem } from "@earendil-works/pi-tui";
|
|
8
8
|
|
|
9
9
|
// ─── Types ───────────────────────────────────────────────────────────
|
|
10
10
|
|
|
@@ -27,8 +27,8 @@ import {
|
|
|
27
27
|
type ExtensionCommandContext,
|
|
28
28
|
type ExtensionContext,
|
|
29
29
|
type ResourceLoader,
|
|
30
|
-
} from "@
|
|
31
|
-
import { type AssistantMessage, type Message, type ThinkingLevel as AiThinkingLevel, type UserMessage } from "@
|
|
30
|
+
} from "@earendil-works/pi-coding-agent";
|
|
31
|
+
import { type AssistantMessage, type Message, type ThinkingLevel as AiThinkingLevel, type UserMessage } from "@earendil-works/pi-ai";
|
|
32
32
|
import {
|
|
33
33
|
Box,
|
|
34
34
|
Container,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
type KeybindingsManager,
|
|
44
44
|
type OverlayHandle,
|
|
45
45
|
type TUI,
|
|
46
|
-
} from "@
|
|
46
|
+
} from "@earendil-works/pi-tui";
|
|
47
47
|
import { BTW_COMMANDS, UNIPI_PREFIX } from "@pi-unipi/core";
|
|
48
48
|
|
|
49
49
|
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pi-unipi/btw",
|
|
3
|
+
"version": "2.0.8",
|
|
4
|
+
"description": "A pi extension for parallel side conversations with /unipi:btw — part of the Unipi suite",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "extensions/btw.ts",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Neuron Mr White",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/Neuron-Mr-White/unipi.git",
|
|
12
|
+
"directory": "packages/btw"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/Neuron-Mr-White/unipi#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/Neuron-Mr-White/unipi/issues"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"pi-package",
|
|
20
|
+
"pi-extension",
|
|
21
|
+
"pi-coding-agent",
|
|
22
|
+
"unipi",
|
|
23
|
+
"btw",
|
|
24
|
+
"side-conversation"
|
|
25
|
+
],
|
|
26
|
+
"files": [
|
|
27
|
+
"extensions",
|
|
28
|
+
"skills",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public"
|
|
33
|
+
},
|
|
34
|
+
"pi": {
|
|
35
|
+
"extensions": [
|
|
36
|
+
"./extensions/btw.ts"
|
|
37
|
+
],
|
|
38
|
+
"skills": [
|
|
39
|
+
"./skills"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@earendil-works/pi-ai": "^0.75.5",
|
|
44
|
+
"@earendil-works/pi-coding-agent": "^0.75.5",
|
|
45
|
+
"@earendil-works/pi-tui": "^0.75.5"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@pi-unipi/core": "*"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Project directory is resolved from ctx.cwd at handler invocation time.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import type { ExtensionAPI, ExtensionCommandContext } from "@
|
|
14
|
+
import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
15
15
|
import { COCOINDEX_COMMANDS, COCOINDEX_PACKAGE_SPEC } from "@pi-unipi/core";
|
|
16
16
|
import * as bridge from "./bridge.js";
|
|
17
17
|
import { ensureCocoindex } from "./installer.js";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Embedding model: reuses memory package settings (OpenRouter API key + model).
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type { ExtensionAPI } from "@
|
|
11
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
12
12
|
import { MODULES, UNIPI_EVENTS, COCOINDEX_TOOLS, COCOINDEX_COMMANDS, COCOINDEX_PACKAGE_SPEC, emitEvent } from "@pi-unipi/core";
|
|
13
13
|
import { registerCocoindexTools } from "./tools.js";
|
|
14
14
|
import { registerCocoindexCommands } from "./commands.js";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { execFileSync, spawn } from "node:child_process";
|
|
9
9
|
import { homedir } from "node:os";
|
|
10
10
|
import { delimiter, join } from "node:path";
|
|
11
|
-
import type { ExtensionCommandContext } from "@
|
|
11
|
+
import type { ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
12
12
|
import { COCOINDEX_MIN_VERSION, COCOINDEX_PACKAGE_SPEC } from "@pi-unipi/core";
|
|
13
13
|
import * as bridge from "./bridge.js";
|
|
14
14
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pi-unipi/cocoindex",
|
|
3
|
+
"version": "2.0.8",
|
|
4
|
+
"description": "CocoIndex integration for Pi — AST-aware content indexing, semantic vector search, and incremental pipeline management",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "index.ts",
|
|
7
|
+
"types": "index.ts",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "Neuron Mr White",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"pi-package",
|
|
12
|
+
"pi-extension",
|
|
13
|
+
"pi-coding-agent",
|
|
14
|
+
"cocoindex",
|
|
15
|
+
"content-indexing",
|
|
16
|
+
"vector-search"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"typecheck": "tsc --noEmit"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"@earendil-works/pi-coding-agent": "^0.75.5",
|
|
23
|
+
"@earendil-works/pi-ai": "^0.75.5",
|
|
24
|
+
"@earendil-works/pi-tui": "^0.75.5",
|
|
25
|
+
"typebox": "^1.1.38"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@pi-unipi/core": "*"
|
|
29
|
+
},
|
|
30
|
+
"optionalDependencies": {
|
|
31
|
+
"@lancedb/lancedb": "^0.21.0"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"index.ts",
|
|
35
|
+
"bridge.ts",
|
|
36
|
+
"installer.ts",
|
|
37
|
+
"tools.ts",
|
|
38
|
+
"commands.ts",
|
|
39
|
+
"skills/**/*",
|
|
40
|
+
"README.md"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* - cocoindex_status: Show indexing status
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { Type } from "
|
|
10
|
-
import type { ExtensionAPI } from "@
|
|
9
|
+
import { Type } from "typebox";
|
|
10
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
11
11
|
import { COCOINDEX_PACKAGE_SPEC, COCOINDEX_TOOLS } from "@pi-unipi/core";
|
|
12
12
|
import * as bridge from "./bridge.js";
|
|
13
13
|
import type { CocoindexDeps } from "./bridge.js";
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pi-unipi/compactor",
|
|
3
|
+
"version": "2.0.8",
|
|
4
|
+
"description": "Context engine for Pi — zero-LLM compaction, session continuity, sandbox execution, and tool display optimization",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "src/index.ts",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Neuron Mr White",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/Neuron-Mr-White/unipi.git",
|
|
12
|
+
"directory": "packages/compactor"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"pi-package",
|
|
16
|
+
"pi-extension",
|
|
17
|
+
"pi-coding-agent",
|
|
18
|
+
"unipi",
|
|
19
|
+
"compactor",
|
|
20
|
+
"context",
|
|
21
|
+
"sandbox",
|
|
22
|
+
"fts5"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"test": "bun test tests"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"index.ts",
|
|
29
|
+
"src/**/*.ts",
|
|
30
|
+
"skills/**/*",
|
|
31
|
+
"README.md"
|
|
32
|
+
],
|
|
33
|
+
"pi": {
|
|
34
|
+
"extensions": [
|
|
35
|
+
"src/index.ts"
|
|
36
|
+
],
|
|
37
|
+
"skills": [
|
|
38
|
+
"skills"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@pi-unipi/core": "*",
|
|
46
|
+
"@pi-unipi/info-screen": "*",
|
|
47
|
+
"@earendil-works/pi-agent-core": "^0.75.5"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"@earendil-works/pi-coding-agent": "^0.75.5",
|
|
51
|
+
"@earendil-works/pi-tui": "^0.75.5",
|
|
52
|
+
"typebox": "^1.1.38"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/node": "^25.6.0",
|
|
56
|
+
"typescript": "^6.0.0"
|
|
57
|
+
},
|
|
58
|
+
"optionalDependencies": {
|
|
59
|
+
"better-sqlite3": ">=11.0.0"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Dependencies (sessionDB, sessionId) are injected at registration time.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type { ExtensionAPI, ExtensionCommandContext } from "@
|
|
8
|
+
import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
9
9
|
import { loadConfig, saveConfig } from "../config/manager.js";
|
|
10
10
|
import { applyPreset, parsePreset } from "../config/presets.js";
|
|
11
11
|
import { COMPACTOR_INSTRUCTION } from "@pi-unipi/core";
|
|
@@ -7,8 +7,8 @@ export type OwnCutCancelReason =
|
|
|
7
7
|
| "too_few_live_messages"
|
|
8
8
|
| "no_user_message";
|
|
9
9
|
|
|
10
|
-
import type { SessionEntry, SessionMessageEntry, CompactionEntry } from "@
|
|
11
|
-
import type { AgentMessage } from "@
|
|
10
|
+
import type { SessionEntry, SessionMessageEntry, CompactionEntry } from "@earendil-works/pi-coding-agent";
|
|
11
|
+
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
12
12
|
|
|
13
13
|
export type OwnCutResult =
|
|
14
14
|
| { ok: true; messages: AgentMessage[]; firstKeptEntryId: string; compactAll: boolean }
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Hook integration — session_before_compact + session_compact
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { ExtensionAPI } from "@
|
|
6
|
-
import { convertToLlm } from "@
|
|
5
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
6
|
+
import { convertToLlm } from "@earendil-works/pi-coding-agent";
|
|
7
7
|
import type {
|
|
8
8
|
SessionEntry,
|
|
9
9
|
SessionMessageEntry,
|
|
10
10
|
SessionBeforeCompactEvent,
|
|
11
11
|
SessionCompactEvent,
|
|
12
|
-
} from "@
|
|
13
|
-
import type { AgentMessage } from "@
|
|
12
|
+
} from "@earendil-works/pi-coding-agent";
|
|
13
|
+
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
14
14
|
import { compile } from "./summarize.js";
|
|
15
15
|
import { loadConfig } from "../config/manager.js";
|
|
16
16
|
import { buildOwnCut, type OwnCutResult } from "./cut.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Stage 1: Normalize — Message[] → NormalizedBlock[]
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { Message } from "@
|
|
5
|
+
import type { Message } from "@earendil-works/pi-ai";
|
|
6
6
|
import type { NormalizedBlock } from "../types.js";
|
|
7
7
|
import { textOf } from "./content.js";
|
|
8
8
|
import { sanitize } from "./sanitize.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Main compile() orchestrator — all 6 stages
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { Message } from "@
|
|
5
|
+
import type { Message } from "@earendil-works/pi-ai";
|
|
6
6
|
import type { CompileInput, FileOps } from "../types.js";
|
|
7
7
|
import { normalizeMessages } from "./normalize.js";
|
|
8
8
|
import { filterNoise } from "./filter-noise.js";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* syntax highlighting, and Nerd Font detection
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { visibleWidth, truncateToWidth } from "@
|
|
6
|
+
import { visibleWidth, truncateToWidth } from "@earendil-works/pi-tui";
|
|
7
7
|
|
|
8
8
|
export type DiffLayout = "auto" | "split" | "unified";
|
|
9
9
|
export type DiffIndicator = "bars" | "classic" | "nerd" | "none";
|