@pi-unipi/unipi 2.0.7 → 2.0.9

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.
Files changed (126) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +5 -5
  3. package/packages/ask-user/ask-ui.ts +3 -3
  4. package/packages/ask-user/commands.ts +1 -1
  5. package/packages/ask-user/handoff.ts +1 -1
  6. package/packages/ask-user/index.ts +1 -1
  7. package/packages/ask-user/launcher-ui.ts +2 -2
  8. package/packages/ask-user/package.json +5 -4
  9. package/packages/ask-user/settings-tui.ts +2 -2
  10. package/packages/ask-user/tools.ts +2 -2
  11. package/packages/autocomplete/package.json +4 -3
  12. package/packages/autocomplete/src/__tests__/provider.sorting.test.ts +1 -1
  13. package/packages/autocomplete/src/index.ts +1 -1
  14. package/packages/autocomplete/src/provider.ts +2 -2
  15. package/packages/autocomplete/src/sorting.ts +1 -1
  16. package/packages/btw/extensions/btw.ts +3 -3
  17. package/packages/btw/package.json +5 -4
  18. package/packages/cocoindex/commands.ts +1 -1
  19. package/packages/cocoindex/index.ts +1 -1
  20. package/packages/cocoindex/installer.ts +1 -1
  21. package/packages/cocoindex/package.json +5 -5
  22. package/packages/cocoindex/tools.ts +2 -2
  23. package/packages/compactor/package.json +7 -5
  24. package/packages/compactor/src/commands/index.ts +1 -1
  25. package/packages/compactor/src/compaction/cut.ts +2 -2
  26. package/packages/compactor/src/compaction/hooks.ts +4 -4
  27. package/packages/compactor/src/compaction/normalize.ts +1 -1
  28. package/packages/compactor/src/compaction/summarize.ts +1 -1
  29. package/packages/compactor/src/display/diff-presentation.ts +1 -1
  30. package/packages/compactor/src/display/diff-renderer.ts +1 -1
  31. package/packages/compactor/src/display/diff-width-safety.ts +1 -1
  32. package/packages/compactor/src/display/line-width-safety.ts +1 -1
  33. package/packages/compactor/src/index.ts +1 -1
  34. package/packages/compactor/src/session/recall-blocks.ts +2 -2
  35. package/packages/compactor/src/tools/register.ts +10 -10
  36. package/packages/compactor/src/tui/settings-overlay.ts +3 -3
  37. package/packages/compactor/src/types.ts +1 -1
  38. package/packages/core/package.json +5 -5
  39. package/packages/footer/package.json +4 -3
  40. package/packages/footer/src/commands.ts +1 -1
  41. package/packages/footer/src/events.ts +1 -1
  42. package/packages/footer/src/help.ts +2 -2
  43. package/packages/footer/src/index.ts +3 -3
  44. package/packages/footer/src/rendering/renderer.ts +2 -2
  45. package/packages/footer/src/rendering/theme.ts +1 -1
  46. package/packages/footer/src/segments/status-ext.ts +1 -1
  47. package/packages/footer/src/tui/settings-tui.ts +2 -2
  48. package/packages/footer/src/types.ts +1 -1
  49. package/packages/info-screen/core-groups.ts +3 -3
  50. package/packages/info-screen/index.ts +1 -1
  51. package/packages/info-screen/package.json +5 -4
  52. package/packages/info-screen/tui/info-overlay.ts +3 -3
  53. package/packages/input-shortcuts/package.json +4 -3
  54. package/packages/input-shortcuts/src/chord-overlay.ts +2 -2
  55. package/packages/input-shortcuts/src/index.ts +2 -2
  56. package/packages/input-shortcuts/src/settings-overlay.ts +2 -2
  57. package/packages/input-shortcuts/src/status.ts +1 -1
  58. package/packages/kanboard/commands.ts +1 -1
  59. package/packages/kanboard/index.ts +1 -1
  60. package/packages/kanboard/package.json +10 -4
  61. package/packages/kanboard/tui/kanboard-overlay.ts +2 -2
  62. package/packages/mcp/package.json +5 -4
  63. package/packages/mcp/src/index.ts +1 -1
  64. package/packages/mcp/src/tui/add-overlay.ts +2 -2
  65. package/packages/mcp/src/tui/settings-overlay.ts +2 -2
  66. package/packages/memory/commands.ts +1 -1
  67. package/packages/memory/embedding.ts +1 -1
  68. package/packages/memory/index.ts +1 -1
  69. package/packages/memory/package.json +4 -3
  70. package/packages/memory/tools.ts +2 -2
  71. package/packages/memory/tui/settings-tui.ts +1 -1
  72. package/packages/milestone/commands.ts +1 -1
  73. package/packages/milestone/hooks.ts +1 -1
  74. package/packages/milestone/index.ts +1 -1
  75. package/packages/milestone/package.json +5 -4
  76. package/packages/notify/commands.ts +1 -1
  77. package/packages/notify/events.ts +1 -1
  78. package/packages/notify/index.ts +1 -1
  79. package/packages/notify/package.json +5 -4
  80. package/packages/notify/tools.ts +2 -2
  81. package/packages/notify/tui/gotify-setup.ts +3 -3
  82. package/packages/notify/tui/ntfy-setup.ts +3 -3
  83. package/packages/notify/tui/recap-model-selector.ts +3 -3
  84. package/packages/notify/tui/settings-overlay.ts +3 -3
  85. package/packages/notify/tui/telegram-setup.ts +3 -3
  86. package/packages/ralph/index.ts +1 -1
  87. package/packages/ralph/package.json +6 -5
  88. package/packages/ralph/ralph-loop.ts +1 -1
  89. package/packages/ralph/tools.ts +2 -2
  90. package/packages/subagents/package.json +6 -5
  91. package/packages/subagents/src/agent-manager.ts +2 -2
  92. package/packages/subagents/src/agent-runner.ts +3 -3
  93. package/packages/subagents/src/conversation-viewer.ts +2 -2
  94. package/packages/subagents/src/custom-agents.ts +1 -1
  95. package/packages/subagents/src/index.ts +4 -4
  96. package/packages/subagents/src/model-resolver.ts +1 -1
  97. package/packages/subagents/src/types.ts +2 -2
  98. package/packages/subagents/src/widget.ts +3 -3
  99. package/packages/unipi/index.ts +1 -1
  100. package/packages/updater/package.json +4 -3
  101. package/packages/updater/src/commands.ts +1 -1
  102. package/packages/updater/src/index.ts +1 -1
  103. package/packages/updater/src/markdown.ts +4 -4
  104. package/packages/updater/src/tui/changelog-overlay.ts +4 -4
  105. package/packages/updater/src/tui/readme-overlay.ts +4 -4
  106. package/packages/updater/src/tui/settings-overlay.ts +3 -3
  107. package/packages/updater/src/tui/update-overlay.ts +4 -4
  108. package/packages/utility/package.json +4 -3
  109. package/packages/utility/src/commands.ts +1 -1
  110. package/packages/utility/src/diff/renderer.ts +1 -1
  111. package/packages/utility/src/diff/wrapper.ts +2 -2
  112. package/packages/utility/src/index.ts +2 -2
  113. package/packages/utility/src/info-screen.ts +1 -1
  114. package/packages/utility/src/tools/env.ts +1 -1
  115. package/packages/utility/src/tui/badge-settings-tui.ts +2 -2
  116. package/packages/utility/src/tui/name-badge-state.ts +1 -1
  117. package/packages/utility/src/tui/name-badge.ts +3 -3
  118. package/packages/utility/src/tui/util-settings-tui.ts +2 -2
  119. package/packages/web-api/package.json +6 -4
  120. package/packages/web-api/src/commands.ts +1 -1
  121. package/packages/web-api/src/index.ts +1 -1
  122. package/packages/web-api/src/tools.ts +2 -2
  123. package/packages/web-api/src/tui/settings-dialog.ts +1 -1
  124. package/packages/workflow/commands.ts +1 -1
  125. package/packages/workflow/index.ts +1 -1
  126. package/packages/workflow/package.json +6 -5
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.7",
3
+ "version": "2.0.9",
4
4
  "description": "All-in-one extension suite for Pi coding agent",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -59,10 +59,10 @@
59
59
  ]
60
60
  },
61
61
  "peerDependencies": {
62
- "@mariozechner/pi-ai": "*",
63
- "@mariozechner/pi-coding-agent": "*",
64
- "@mariozechner/pi-tui": "*",
65
- "@sinclair/typebox": "*"
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"
66
66
  },
67
67
  "dependencies": {
68
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 "@mariozechner/pi-tui";
9
- import type { Theme, AgentToolResult } from "@mariozechner/pi-coding-agent";
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("@mariozechner/pi-coding-agent").KeybindingsManager,
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 "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-tui";
9
- import type { Theme, KeybindingsManager } from "@mariozechner/pi-coding-agent";
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 */
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@pi-unipi/ask-user",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Structured user input tool for Pi coding agent — single-select, multi-select, freeform",
5
5
  "type": "module",
6
+ "main": "index.ts",
6
7
  "license": "MIT",
7
8
  "author": "Neuron Mr White",
8
9
  "repository": {
@@ -50,8 +51,8 @@
50
51
  "@pi-unipi/core": "*"
51
52
  },
52
53
  "peerDependencies": {
53
- "@mariozechner/pi-coding-agent": "*",
54
- "@mariozechner/pi-tui": "*",
55
- "@sinclair/typebox": "*"
54
+ "@earendil-works/pi-coding-agent": "^0.75.5",
55
+ "@earendil-works/pi-tui": "^0.75.5",
56
+ "typebox": "^1.1.38"
56
57
  }
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 "@mariozechner/pi-tui";
9
- import { truncateToWidth, visibleWidth } from "@mariozechner/pi-tui";
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 "@sinclair/typebox";
8
- import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent";
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,
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@pi-unipi/command-enchantment",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Enhanced TUI autocomplete for /unipi:* commands — colored, sorted, and grouped by package",
5
5
  "type": "module",
6
+ "main": "src/index.ts",
6
7
  "license": "MIT",
7
8
  "author": "Neuron Mr White",
8
9
  "repository": {
@@ -31,8 +32,8 @@
31
32
  "README.md"
32
33
  ],
33
34
  "peerDependencies": {
34
- "@mariozechner/pi-coding-agent": "*",
35
- "@mariozechner/pi-tui": "*"
35
+ "@earendil-works/pi-coding-agent": "^0.75.5",
36
+ "@earendil-works/pi-tui": "^0.75.5"
36
37
  },
37
38
  "scripts": {
38
39
  "test": "vitest run"
@@ -11,7 +11,7 @@ import {
11
11
  sortTaggedItems,
12
12
  type TaggedItem,
13
13
  } from "../sorting.js";
14
- import type { AutocompleteItem } from "@mariozechner/pi-tui";
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 "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-tui";
14
- import { fuzzyFilter } from "@mariozechner/pi-tui";
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 "@mariozechner/pi-tui";
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 "@mariozechner/pi-coding-agent";
31
- import { type AssistantMessage, type Message, type ThinkingLevel as AiThinkingLevel, type UserMessage } from "@mariozechner/pi-ai";
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 "@mariozechner/pi-tui";
46
+ } from "@earendil-works/pi-tui";
47
47
  import { BTW_COMMANDS, UNIPI_PREFIX } from "@pi-unipi/core";
48
48
 
49
49
  // ─── Constants ──────────────────────────────────────────────────────────────
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@pi-unipi/btw",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "A pi extension for parallel side conversations with /unipi:btw — part of the Unipi suite",
5
5
  "type": "module",
6
+ "main": "extensions/btw.ts",
6
7
  "license": "MIT",
7
8
  "author": "Neuron Mr White",
8
9
  "repository": {
@@ -39,9 +40,9 @@
39
40
  ]
40
41
  },
41
42
  "peerDependencies": {
42
- "@mariozechner/pi-ai": "*",
43
- "@mariozechner/pi-coding-agent": "*",
44
- "@mariozechner/pi-tui": "*"
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"
45
46
  },
46
47
  "dependencies": {
47
48
  "@pi-unipi/core": "*"
@@ -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 "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-coding-agent";
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
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/cocoindex",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "CocoIndex integration for Pi — AST-aware content indexing, semantic vector search, and incremental pipeline management",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -19,10 +19,10 @@
19
19
  "typecheck": "tsc --noEmit"
20
20
  },
21
21
  "peerDependencies": {
22
- "@mariozechner/pi-coding-agent": "*",
23
- "@mariozechner/pi-ai": "*",
24
- "@mariozechner/pi-tui": "*",
25
- "@sinclair/typebox": "*"
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
26
  },
27
27
  "dependencies": {
28
28
  "@pi-unipi/core": "*"
@@ -6,8 +6,8 @@
6
6
  * - cocoindex_status: Show indexing status
7
7
  */
8
8
 
9
- import { Type } from "@sinclair/typebox";
10
- import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
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";
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@pi-unipi/compactor",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Context engine for Pi — zero-LLM compaction, session continuity, sandbox execution, and tool display optimization",
5
5
  "type": "module",
6
+ "main": "src/index.ts",
6
7
  "license": "MIT",
7
8
  "author": "Neuron Mr White",
8
9
  "repository": {
@@ -42,12 +43,13 @@
42
43
  },
43
44
  "dependencies": {
44
45
  "@pi-unipi/core": "*",
45
- "@pi-unipi/info-screen": "*"
46
+ "@pi-unipi/info-screen": "*",
47
+ "@earendil-works/pi-agent-core": "^0.75.5"
46
48
  },
47
49
  "peerDependencies": {
48
- "@mariozechner/pi-coding-agent": "*",
49
- "@mariozechner/pi-tui": "*",
50
- "@sinclair/typebox": "*"
50
+ "@earendil-works/pi-coding-agent": "^0.75.5",
51
+ "@earendil-works/pi-tui": "^0.75.5",
52
+ "typebox": "^1.1.38"
51
53
  },
52
54
  "devDependencies": {
53
55
  "@types/node": "^25.6.0",
@@ -5,7 +5,7 @@
5
5
  * Dependencies (sessionDB, sessionId) are injected at registration time.
6
6
  */
7
7
 
8
- import type { ExtensionAPI, ExtensionCommandContext } from "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-coding-agent";
11
- import type { AgentMessage } from "@mariozechner/pi-agent-core";
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 "@mariozechner/pi-coding-agent";
6
- import { convertToLlm } from "@mariozechner/pi-coding-agent";
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 "@mariozechner/pi-coding-agent";
13
- import type { AgentMessage } from "@mariozechner/pi-agent-core";
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 "@mariozechner/pi-ai";
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 "@mariozechner/pi-ai";
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
  */
4
4
 
5
5
  import type { DiffLayout } from "../types.js";
6
- import { visibleWidth, truncateToWidth } from "@mariozechner/pi-tui";
6
+ import { visibleWidth, truncateToWidth } from "@earendil-works/pi-tui";
7
7
 
8
8
  export function selectDiffLayout(
9
9
  terminalWidth: number,
@@ -3,7 +3,7 @@
3
3
  * syntax highlighting, and Nerd Font detection
4
4
  */
5
5
 
6
- import { visibleWidth, truncateToWidth } from "@mariozechner/pi-tui";
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";
@@ -18,7 +18,7 @@
18
18
  * edit tool's Box nesting (approx 4-6 chars of padding).
19
19
  */
20
20
 
21
- import { visibleWidth, truncateToWidth } from "@mariozechner/pi-tui";
21
+ import { visibleWidth, truncateToWidth } from "@earendil-works/pi-tui";
22
22
 
23
23
  /** Rendering overhead from Box nesting in edit tool components */
24
24
  const RENDER_OVERHEAD = 6;
@@ -6,7 +6,7 @@
6
6
  * measurement when pi-tui is unavailable.
7
7
  */
8
8
 
9
- import { visibleWidth, truncateToWidth } from "@mariozechner/pi-tui";
9
+ import { visibleWidth, truncateToWidth } from "@earendil-works/pi-tui";
10
10
 
11
11
  /**
12
12
  * Clamp each line to maxWidth visible columns.
@@ -2,7 +2,7 @@
2
2
  * @pi-unipi/compactor — Extension entry point
3
3
  */
4
4
 
5
- import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
5
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
6
6
  import { MODULES, UNIPI_EVENTS, COMPACTOR_COMMANDS, COMPACTOR_TOOLS, COMPACTOR_INSTRUCTION, emitEvent } from "@pi-unipi/core";
7
7
  import { scaffoldConfig, loadConfig } from "./config/manager.js";
8
8
  import { registerCompactionHooks } from "./compaction/hooks.js";
@@ -7,8 +7,8 @@
7
7
  * branch directly.
8
8
  */
9
9
 
10
- import type { SessionEntry } from "@mariozechner/pi-coding-agent";
11
- import type { AgentMessage } from "@mariozechner/pi-agent-core";
10
+ import type { SessionEntry } from "@earendil-works/pi-coding-agent";
11
+ import type { AgentMessage } from "@earendil-works/pi-agent-core";
12
12
  import { normalizeMessages } from "../compaction/normalize.js";
13
13
  import { sanitize } from "../compaction/sanitize.js";
14
14
  import { textOf } from "../compaction/content.js";
@@ -13,8 +13,8 @@
13
13
  * ctx_stats, ctx_doctor
14
14
  */
15
15
 
16
- import { Type } from "@sinclair/typebox";
17
- import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent";
16
+ import { Type } from "typebox";
17
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
18
18
  import { compactTool } from "./compact.js";
19
19
  import { vccRecall, type RecallInput } from "./vcc-recall.js";
20
20
  import { ctxExecute, type CtxExecuteInput } from "./ctx-execute.js";
@@ -140,7 +140,7 @@ export function registerCompactorTools(pi: ExtensionAPI, deps: CompactorToolDeps
140
140
  label: "Compact",
141
141
  description: "Trigger manual context compaction. Reduces session history while preserving continuity. Use dryRun:true to preview without compacting.",
142
142
  parameters: CompactParams,
143
- async execute(_toolCallId: string, params: any): Promise<import("@mariozechner/pi-coding-agent").AgentToolResult<unknown>> {
143
+ async execute(_toolCallId: string, params: any): Promise<import("@earendil-works/pi-coding-agent").AgentToolResult<unknown>> {
144
144
  if (params.dryRun) {
145
145
  const blocks = deps.getBlocks();
146
146
  const totalMessages = blocks.length;
@@ -160,7 +160,7 @@ export function registerCompactorTools(pi: ExtensionAPI, deps: CompactorToolDeps
160
160
  } as any));
161
161
 
162
162
  // 2. session_recall (new) / vcc_recall (deprecated) — search session history
163
- const recallExec = async (_toolCallId: string, params: any, _signal?: AbortSignal, _onUpdate?: unknown, ctx?: ExtensionContext): Promise<import("@mariozechner/pi-coding-agent").AgentToolResult<unknown>> => {
163
+ const recallExec = async (_toolCallId: string, params: any, _signal?: AbortSignal, _onUpdate?: unknown, ctx?: ExtensionContext): Promise<import("@earendil-works/pi-coding-agent").AgentToolResult<unknown>> => {
164
164
  const c = deps.getCounters?.();
165
165
  if (c) { c.recallQueries++; }
166
166
  const config = loadConfig(ctx?.cwd ?? process.cwd());
@@ -190,7 +190,7 @@ export function registerCompactorTools(pi: ExtensionAPI, deps: CompactorToolDeps
190
190
  pi.registerTool({ name: "vcc_recall", label: "Session Recall", description: "Search session history using BM25 or regex. (DEPRECATED: use session_recall instead)", parameters: VccRecallParams, async execute(tcId: string, p: any) { deprecationLog("vcc_recall", "session_recall"); return recallExec(tcId, p); } } as any);
191
191
 
192
192
  // 3. sandbox (new) / ctx_execute (deprecated) — run code in sandbox
193
- const sandboxExec = async (_toolCallId: string, params: any): Promise<import("@mariozechner/pi-coding-agent").AgentToolResult<unknown>> => {
193
+ const sandboxExec = async (_toolCallId: string, params: any): Promise<import("@earendil-works/pi-coding-agent").AgentToolResult<unknown>> => {
194
194
  try {
195
195
  const c = deps.getCounters?.();
196
196
  if (c) { c.sandboxRuns++; }
@@ -210,7 +210,7 @@ export function registerCompactorTools(pi: ExtensionAPI, deps: CompactorToolDeps
210
210
  pi.registerTool({ name: "ctx_execute", label: "Sandbox", description: "Run code in sandbox. (DEPRECATED: use sandbox instead)", parameters: CtxExecuteParams, async execute(tcId: string, p: any) { deprecationLog("ctx_execute", "sandbox"); return sandboxExec(tcId, p); } } as any);
211
211
 
212
212
  // 4. sandbox_file (new) / ctx_execute_file (deprecated) — execute file
213
- const sandboxFileExec = async (_toolCallId: string, params: any): Promise<import("@mariozechner/pi-coding-agent").AgentToolResult<unknown>> => {
213
+ const sandboxFileExec = async (_toolCallId: string, params: any): Promise<import("@earendil-works/pi-coding-agent").AgentToolResult<unknown>> => {
214
214
  try {
215
215
  const c = deps.getCounters?.();
216
216
  if (c) { c.sandboxRuns++; }
@@ -229,7 +229,7 @@ export function registerCompactorTools(pi: ExtensionAPI, deps: CompactorToolDeps
229
229
  pi.registerTool({ name: "ctx_execute_file", label: "Sandbox File", description: "Execute file in sandbox. (DEPRECATED: use sandbox_file instead)", parameters: CtxExecuteFileParams, async execute(tcId: string, p: any) { deprecationLog("ctx_execute_file", "sandbox_file"); return sandboxFileExec(tcId, p); } } as any);
230
230
 
231
231
  // 5. sandbox_batch (new) / ctx_batch_execute (deprecated) — atomic batch (execute only)
232
- const sandboxBatchExec = async (_toolCallId: string, params: any): Promise<import("@mariozechner/pi-coding-agent").AgentToolResult<unknown>> => {
232
+ const sandboxBatchExec = async (_toolCallId: string, params: any): Promise<import("@earendil-works/pi-coding-agent").AgentToolResult<unknown>> => {
233
233
  try {
234
234
  const c = deps.getCounters?.();
235
235
  if (c) { c.sandboxRuns++; }
@@ -248,7 +248,7 @@ export function registerCompactorTools(pi: ExtensionAPI, deps: CompactorToolDeps
248
248
  pi.registerTool({ name: "ctx_batch_execute", label: "Sandbox Batch", description: "Run batch operations. (DEPRECATED: use sandbox_batch instead)", parameters: CtxBatchExecuteParams, async execute(tcId: string, p: any) { deprecationLog("ctx_batch_execute", "sandbox_batch"); return sandboxBatchExec(tcId, p); } } as any);
249
249
 
250
250
  // 6. compactor_stats (new) / ctx_stats (deprecated) — context savings dashboard
251
- const statsExec = async (): Promise<import("@mariozechner/pi-coding-agent").AgentToolResult<unknown>> => {
251
+ const statsExec = async (): Promise<import("@earendil-works/pi-coding-agent").AgentToolResult<unknown>> => {
252
252
  try {
253
253
  const result = await ctxStats(deps.sessionDB, deps.getSessionId(), deps.getCounters?.());
254
254
  const lines = [
@@ -268,7 +268,7 @@ export function registerCompactorTools(pi: ExtensionAPI, deps: CompactorToolDeps
268
268
  pi.registerTool({ name: "ctx_stats", label: "Compactor Stats", description: "Show stats dashboard. (DEPRECATED: use compactor_stats instead)", parameters: CtxStatsParams, async execute() { deprecationLog("ctx_stats", "compactor_stats"); return statsExec(); } } as any);
269
269
 
270
270
  // 7. compactor_doctor (new) / ctx_doctor (deprecated) — diagnostics checklist
271
- const doctorExec = async (): Promise<import("@mariozechner/pi-coding-agent").AgentToolResult<unknown>> => {
271
+ const doctorExec = async (): Promise<import("@earendil-works/pi-coding-agent").AgentToolResult<unknown>> => {
272
272
  try {
273
273
  const result = await ctxDoctor(deps.sessionDB);
274
274
  const icon = (s: string) => (s === "pass" ? "✅" : s === "warn" ? "⚠️" : "❌");
@@ -291,7 +291,7 @@ export function registerCompactorTools(pi: ExtensionAPI, deps: CompactorToolDeps
291
291
  label: "Context Budget",
292
292
  description: "Estimate remaining context window (% full, tokens left) and get advice on whether to compact.",
293
293
  parameters: Type.Object({}),
294
- async execute(_toolCallId: string, _params: any, _signal?: AbortSignal, _onUpdate?: unknown, ctx?: ExtensionContext): Promise<import("@mariozechner/pi-coding-agent").AgentToolResult<unknown>> {
294
+ async execute(_toolCallId: string, _params: any, _signal?: AbortSignal, _onUpdate?: unknown, ctx?: ExtensionContext): Promise<import("@earendil-works/pi-coding-agent").AgentToolResult<unknown>> {
295
295
  const config = loadConfig(ctx?.cwd ?? process.cwd());
296
296
  const liveUsage = ctx?.getContextUsage?.();
297
297
  let estimatedTokens: number | undefined = liveUsage?.tokens ?? undefined;
@@ -7,9 +7,9 @@
7
7
  * preset preview, per-project override.
8
8
  */
9
9
 
10
- import type { Component, TUI } from "@mariozechner/pi-tui";
11
- import { truncateToWidth, visibleWidth, SettingsList, type SettingItem, type SettingsListTheme } from "@mariozechner/pi-tui";
12
- import type { Theme, KeybindingsManager } from "@mariozechner/pi-coding-agent";
10
+ import type { Component, TUI } from "@earendil-works/pi-tui";
11
+ import { truncateToWidth, visibleWidth, SettingsList, type SettingItem, type SettingsListTheme } from "@earendil-works/pi-tui";
12
+ import type { Theme, KeybindingsManager } from "@earendil-works/pi-coding-agent";
13
13
  import { loadConfig, saveConfig, projectConfigPath } from "../config/manager.js";
14
14
  import { applyPreset, detectPreset } from "../config/presets.js";
15
15
  import type { CompactorPreset } from "../types.js";
@@ -2,7 +2,7 @@
2
2
  * @pi-unipi/compactor — Shared TypeScript types
3
3
  */
4
4
 
5
- import type { Message } from "@mariozechner/pi-ai";
5
+ import type { Message } from "@earendil-works/pi-ai";
6
6
 
7
7
  // ─────────────────────────────────────────────────────────
8
8
  // Normalized blocks (from pi-vcc)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/core",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Shared utilities, event types, and constants for Unipi extension suite",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -23,12 +23,12 @@
23
23
  "access": "public"
24
24
  },
25
25
  "peerDependencies": {
26
- "@mariozechner/pi-coding-agent": ">=0.70.0",
27
- "@sinclair/typebox": ">=0.34.0"
26
+ "@earendil-works/pi-coding-agent": "^0.75.5",
27
+ "typebox": "^1.1.38"
28
28
  },
29
29
  "devDependencies": {
30
- "@mariozechner/pi-coding-agent": "^0.70.2",
31
- "@sinclair/typebox": "^0.34.49",
30
+ "@earendil-works/pi-coding-agent": "^0.75.5",
31
+ "typebox": "^1.1.38",
32
32
  "@types/node": "^22.0.0"
33
33
  }
34
34
  }