@mrclrchtr/supi-lsp 1.1.3 → 1.3.0

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/README.md CHANGED
@@ -49,12 +49,19 @@ Configure via `/supi-settings` (LSP panel):
49
49
 
50
50
  Settings are stored in `~/.pi/agent/supi/config.json` (global) or `.pi/supi/config.json` (project). The `/lsp-status` command shows active servers and outstanding diagnostics.
51
51
 
52
+ ## Package surfaces
53
+
54
+ - `@mrclrchtr/supi-lsp/api` — reusable library surface for peer extensions
55
+ - `@mrclrchtr/supi-lsp/extension` — pi extension entrypoint
56
+
57
+ `pi.extensions` still points at the real file path `./src/extension.ts` inside the package. The `/api` and `/extension` paths are consumer-facing package exports, not manifest aliases.
58
+
52
59
  ## For extension developers
53
60
 
54
61
  This package exports a reusable session-scoped LSP service. Peer extensions can query the same LSP runtime without starting duplicate servers:
55
62
 
56
63
  ```ts
57
- import { getSessionLspService, SessionLspService } from "@mrclrchtr/supi-lsp";
64
+ import { getSessionLspService, SessionLspService } from "@mrclrchtr/supi-lsp/api";
58
65
 
59
66
  const state = getSessionLspService("/project");
60
67
  if (state.kind === "ready") {
@@ -62,5 +69,3 @@ if (state.kind === "ready") {
62
69
  const refs = await state.service.references("src/index.ts", { line: 5, character: 10 });
63
70
  }
64
71
  ```
65
-
66
- Import from the package root — no need to reach into internal files.
@@ -12,7 +12,12 @@ pnpm add @mrclrchtr/supi-core
12
12
 
13
13
  ## Package role
14
14
 
15
- `@mrclrchtr/supi-core` is a library package. It does **not** register a pi extension and is not meant to be installed as a standalone pi package.
15
+ `@mrclrchtr/supi-core` now has two explicit surfaces:
16
+
17
+ - `@mrclrchtr/supi-core/api` — shared library helpers for other SuPi packages
18
+ - `@mrclrchtr/supi-core/extension` — a minimal pi extension that registers `/supi-settings`
19
+
20
+ `pi.extensions` still points at the real file path `./src/extension.ts` inside the package. The `/api` and `/extension` paths are consumer-facing package exports, not manifest aliases.
16
21
 
17
22
  ## What it provides
18
23
 
@@ -59,7 +64,7 @@ Main helpers:
59
64
  ## Example
60
65
 
61
66
  ```ts
62
- import { loadSupiConfig, registerConfigSettings, wrapExtensionContext } from "@mrclrchtr/supi-core";
67
+ import { loadSupiConfig, registerConfigSettings, wrapExtensionContext } from "@mrclrchtr/supi-core/api";
63
68
 
64
69
  const config = loadSupiConfig("my-extension", process.cwd(), {
65
70
  enabled: true,
@@ -87,4 +92,5 @@ const message = wrapExtensionContext("my-extension", "hello", {
87
92
 
88
93
  ## Source
89
94
 
90
- - Main exports: `src/index.ts`
95
+ - Library surface: `src/api.ts`
96
+ - Extension surface: `src/extension.ts`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrclrchtr/supi-core",
3
- "version": "1.1.3",
3
+ "version": "1.3.0",
4
4
  "description": "SuPi core — shared infrastructure for SuPi extensions (XML context tags, config system)",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -30,5 +30,15 @@
30
30
  "optional": true
31
31
  }
32
32
  },
33
- "main": "src/index.ts"
33
+ "main": "src/api.ts",
34
+ "exports": {
35
+ "./api": "./src/api.ts",
36
+ "./extension": "./src/extension.ts",
37
+ "./package.json": "./package.json"
38
+ },
39
+ "pi": {
40
+ "extensions": [
41
+ "./src/extension.ts"
42
+ ]
43
+ }
34
44
  }
@@ -0,0 +1,83 @@
1
+ // supi-core — shared infrastructure for SuPi extensions.
2
+ // Provides XML context tag wrapping, unified config system, context-message utilities,
3
+ // and settings registry for supi-wide TUI settings.
4
+
5
+ export type { SupiConfigLocation, SupiConfigOptions } from "./config.ts";
6
+ export {
7
+ loadSupiConfig,
8
+ loadSupiConfigForScope,
9
+ removeSupiConfigKey,
10
+ writeSupiConfig,
11
+ } from "./config.ts";
12
+ export type { ConfigSettingsHelpers, ConfigSettingsOptions } from "./config-settings.ts";
13
+ export { registerConfigSettings } from "./config-settings.ts";
14
+ export type { ContextMessageLike } from "./context-messages.ts";
15
+ export {
16
+ findLastUserMessageIndex,
17
+ getContextToken,
18
+ getPromptContent,
19
+ pruneAndReorderContextMessages,
20
+ restorePromptContent,
21
+ } from "./context-messages.ts";
22
+ export type { ContextProvider } from "./context-provider-registry.ts";
23
+ export {
24
+ clearRegisteredContextProviders,
25
+ getRegisteredContextProviders,
26
+ registerContextProvider,
27
+ } from "./context-provider-registry.ts";
28
+ export { wrapExtensionContext } from "./context-tag.ts";
29
+ export type {
30
+ DebugAgentAccess,
31
+ DebugEvent,
32
+ DebugEventInput,
33
+ DebugEventQuery,
34
+ DebugEventQueryResult,
35
+ DebugEventView,
36
+ DebugLevel,
37
+ DebugNotifyLevel,
38
+ DebugRegistryConfig,
39
+ DebugSummary,
40
+ } from "./debug-registry.ts";
41
+ export {
42
+ clearDebugEvents,
43
+ configureDebugRegistry,
44
+ DEBUG_REGISTRY_DEFAULTS,
45
+ getDebugEvents,
46
+ getDebugRegistryConfig,
47
+ getDebugSummary,
48
+ recordDebugEvent,
49
+ redactDebugData,
50
+ resetDebugRegistry,
51
+ } from "./debug-registry.ts";
52
+ export type { KnownRootEntry } from "./project-roots.ts";
53
+ export {
54
+ buildKnownRootsMap,
55
+ byPathDepth,
56
+ dedupeTopmostRoots,
57
+ findProjectRoot,
58
+ isWithin,
59
+ isWithinOrEqual,
60
+ mergeKnownRoots,
61
+ resolveKnownRoot,
62
+ segmentCount,
63
+ sortRootsBySpecificity,
64
+ walkProject,
65
+ } from "./project-roots.ts";
66
+ export { getActiveBranchEntries } from "./session-utils.ts";
67
+ export { registerSettingsCommand } from "./settings-command.ts";
68
+ export type { SettingsScope, SettingsSection } from "./settings-registry.ts";
69
+ export {
70
+ clearRegisteredSettings,
71
+ getRegisteredSettings,
72
+ registerSettings,
73
+ } from "./settings-registry.ts";
74
+ export { createInputSubmenu, openSettingsOverlay } from "./settings-ui.ts";
75
+ export type { TitleTarget } from "./terminal.ts";
76
+ export {
77
+ DONE_SYMBOL,
78
+ formatTitle,
79
+ signalBell,
80
+ signalDone,
81
+ signalWaiting,
82
+ WAITING_SYMBOL,
83
+ } from "./terminal.ts";
@@ -0,0 +1 @@
1
+ export { registerSettingsCommand as default } from "./settings-command.ts";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrclrchtr/supi-lsp",
3
- "version": "1.1.3",
3
+ "version": "1.3.0",
4
4
  "description": "SuPi LSP extension — Language Server Protocol integration for pi",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -21,7 +21,7 @@
21
21
  "!__tests__"
22
22
  ],
23
23
  "dependencies": {
24
- "@mrclrchtr/supi-core": "1.1.3"
24
+ "@mrclrchtr/supi-core": "1.3.0"
25
25
  },
26
26
  "bundledDependencies": [
27
27
  "@mrclrchtr/supi-core"
@@ -48,8 +48,13 @@
48
48
  },
49
49
  "pi": {
50
50
  "extensions": [
51
- "./src/lsp.ts"
51
+ "./src/extension.ts"
52
52
  ]
53
53
  },
54
- "main": "src/index.ts"
54
+ "main": "src/api.ts",
55
+ "exports": {
56
+ "./api": "./src/api.ts",
57
+ "./extension": "./src/extension.ts",
58
+ "./package.json": "./package.json"
59
+ }
55
60
  }
package/src/api.ts ADDED
@@ -0,0 +1,15 @@
1
+ // Public API surface for the LSP session-scoped service.
2
+
3
+ export type { SessionLspServiceState } from "./service-registry.ts";
4
+ export { getSessionLspService, SessionLspService } from "./service-registry.ts";
5
+ export type {
6
+ Diagnostic,
7
+ DocumentSymbol,
8
+ Hover,
9
+ Location,
10
+ LocationLink,
11
+ Position,
12
+ ProjectServerInfo,
13
+ SymbolInformation,
14
+ WorkspaceSymbol,
15
+ } from "./types.ts";
package/src/config.ts CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  import * as fs from "node:fs";
4
4
  import * as path from "node:path";
5
- import { loadSupiConfigForScope } from "@mrclrchtr/supi-core";
5
+ import { loadSupiConfigForScope } from "@mrclrchtr/supi-core/api";
6
6
  import type { LspConfig, ServerConfig } from "./types.ts";
7
7
 
8
8
  // Load defaults at module level — resolve relative to this file.
@@ -0,0 +1 @@
1
+ export { default } from "./lsp.ts";
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- // Public library entrypoint for @mrclrchtr/supi-lsp.
1
+ // Public library entrypoint for @mrclrchtr/supi-lsp/api.
2
2
  // Import from the package root to reuse session-scoped LSP services
3
3
  // without reaching into private implementation files.
4
4
 
package/src/lsp.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  import * as path from "node:path";
7
7
  import { StringEnum } from "@earendil-works/pi-ai";
8
8
  import type { BeforeAgentStartEventResult, ExtensionAPI } from "@earendil-works/pi-coding-agent";
9
- import { pruneAndReorderContextMessages, restorePromptContent } from "@mrclrchtr/supi-core";
9
+ import { pruneAndReorderContextMessages, restorePromptContent } from "@mrclrchtr/supi-core/api";
10
10
  import { Type } from "typebox";
11
11
  import { loadConfig, resolveLanguageAlias } from "./config.ts";
12
12
  import { formatDiagnosticsDisplayContent } from "./diagnostics/diagnostic-display.ts";
@@ -1,5 +1,5 @@
1
1
  import * as path from "node:path";
2
- import * as projectRoots from "@mrclrchtr/supi-core";
2
+ import * as projectRoots from "@mrclrchtr/supi-core/api";
3
3
  import { isGlobMatch } from "../pattern-matcher.ts";
4
4
 
5
5
  /** Unique key for a client identified by server name and root. */
@@ -2,7 +2,7 @@
2
2
  // biome-ignore-all lint/nursery/noExcessiveLinesPerFile: LspManager stays cohesive; recovery and sync helpers are split into manager-*.ts modules.
3
3
  import * as fs from "node:fs";
4
4
  import * as path from "node:path";
5
- import * as projectRoots from "@mrclrchtr/supi-core";
5
+ import * as projectRoots from "@mrclrchtr/supi-core/api";
6
6
  import { LspClient } from "../client/client.ts";
7
7
  import { getServerForFile } from "../config.ts";
8
8
  import {
package/src/scanner.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
- import { dedupeTopmostRoots, walkProject } from "@mrclrchtr/supi-core";
3
+ import { dedupeTopmostRoots, walkProject } from "@mrclrchtr/supi-core/api";
4
4
  import type { LspManager } from "./manager/manager.ts";
5
5
  import type {
6
6
  DetectedProjectServer,
@@ -7,7 +7,7 @@ import {
7
7
  loadSupiConfig,
8
8
  loadSupiConfigForScope,
9
9
  registerConfigSettings,
10
- } from "@mrclrchtr/supi-core";
10
+ } from "@mrclrchtr/supi-core/api";
11
11
  import { loadConfig } from "./config.ts";
12
12
 
13
13
  // ── Types ────────────────────────────────────────────────────