mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-22 01:02:16 +00:00
Release v0.13.1
This commit is contained in:
parent
2641424bfa
commit
95eadb9ed7
14 changed files with 132 additions and 35 deletions
18
package-lock.json
generated
18
package-lock.json
generated
|
|
@ -6459,7 +6459,7 @@
|
||||||
},
|
},
|
||||||
"packages/agent": {
|
"packages/agent": {
|
||||||
"name": "@mariozechner/pi-agent-core",
|
"name": "@mariozechner/pi-agent-core",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-ai": "^0.13.0",
|
"@mariozechner/pi-ai": "^0.13.0",
|
||||||
|
|
@ -6493,7 +6493,7 @@
|
||||||
},
|
},
|
||||||
"packages/ai": {
|
"packages/ai": {
|
||||||
"name": "@mariozechner/pi-ai",
|
"name": "@mariozechner/pi-ai",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@anthropic-ai/sdk": "^0.61.0",
|
"@anthropic-ai/sdk": "^0.61.0",
|
||||||
|
|
@ -6534,7 +6534,7 @@
|
||||||
},
|
},
|
||||||
"packages/coding-agent": {
|
"packages/coding-agent": {
|
||||||
"name": "@mariozechner/pi-coding-agent",
|
"name": "@mariozechner/pi-coding-agent",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-agent-core": "^0.13.0",
|
"@mariozechner/pi-agent-core": "^0.13.0",
|
||||||
|
|
@ -6576,7 +6576,7 @@
|
||||||
},
|
},
|
||||||
"packages/mom": {
|
"packages/mom": {
|
||||||
"name": "@mariozechner/pi-mom",
|
"name": "@mariozechner/pi-mom",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@anthropic-ai/sandbox-runtime": "^0.0.16",
|
"@anthropic-ai/sandbox-runtime": "^0.0.16",
|
||||||
|
|
@ -6619,7 +6619,7 @@
|
||||||
},
|
},
|
||||||
"packages/pods": {
|
"packages/pods": {
|
||||||
"name": "@mariozechner/pi",
|
"name": "@mariozechner/pi",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-agent-core": "^0.13.0",
|
"@mariozechner/pi-agent-core": "^0.13.0",
|
||||||
|
|
@ -6635,7 +6635,7 @@
|
||||||
},
|
},
|
||||||
"packages/proxy": {
|
"packages/proxy": {
|
||||||
"name": "@mariozechner/pi-proxy",
|
"name": "@mariozechner/pi-proxy",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@hono/node-server": "^1.14.0",
|
"@hono/node-server": "^1.14.0",
|
||||||
"hono": "^4.6.16"
|
"hono": "^4.6.16"
|
||||||
|
|
@ -6651,7 +6651,7 @@
|
||||||
},
|
},
|
||||||
"packages/tui": {
|
"packages/tui": {
|
||||||
"name": "@mariozechner/pi-tui",
|
"name": "@mariozechner/pi-tui",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/mime-types": "^2.1.4",
|
"@types/mime-types": "^2.1.4",
|
||||||
|
|
@ -6695,7 +6695,7 @@
|
||||||
},
|
},
|
||||||
"packages/web-ui": {
|
"packages/web-ui": {
|
||||||
"name": "@mariozechner/pi-web-ui",
|
"name": "@mariozechner/pi-web-ui",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lmstudio/sdk": "^1.5.0",
|
"@lmstudio/sdk": "^1.5.0",
|
||||||
|
|
@ -6721,7 +6721,7 @@
|
||||||
},
|
},
|
||||||
"packages/web-ui/example": {
|
"packages/web-ui/example": {
|
||||||
"name": "pi-web-ui-example",
|
"name": "pi-web-ui-example",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/mini-lit": "^0.2.0",
|
"@mariozechner/mini-lit": "^0.2.0",
|
||||||
"@mariozechner/pi-ai": "file:../../ai",
|
"@mariozechner/pi-ai": "file:../../ai",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-agent-core",
|
"name": "@mariozechner/pi-agent-core",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"description": "General-purpose agent with transport abstraction, state management, and attachment support",
|
"description": "General-purpose agent with transport abstraction, state management, and attachment support",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.js",
|
"main": "./dist/index.js",
|
||||||
|
|
@ -18,8 +18,8 @@
|
||||||
"prepublishOnly": "npm run clean && npm run build"
|
"prepublishOnly": "npm run clean && npm run build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-ai": "^0.13.0",
|
"@mariozechner/pi-ai": "^0.13.1",
|
||||||
"@mariozechner/pi-tui": "^0.13.0"
|
"@mariozechner/pi-tui": "^0.13.1"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"ai",
|
"ai",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-ai",
|
"name": "@mariozechner/pi-ai",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"description": "Unified LLM API with automatic model discovery and provider configuration",
|
"description": "Unified LLM API with automatic model discovery and provider configuration",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.js",
|
"main": "./dist/index.js",
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,12 @@
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.13.1] - 2025-12-06
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **Flexible Windows shell configuration**: The bash tool now supports multiple shell sources beyond Git Bash. Resolution order: (1) custom `shellPath` in settings.json, (2) Git Bash in standard locations, (3) any bash.exe on PATH. This enables Cygwin, MSYS2, and other bash environments. Configure with `~/.pi/agent/settings.json`: `{"shellPath": "C:\\cygwin64\\bin\\bash.exe"}`.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- **Windows binary detection**: Fixed Bun compiled binary detection on Windows by checking for URL-encoded `%7EBUN` in addition to `$bunfs` and `~BUN` in `import.meta.url`. This ensures the binary correctly locates supporting files (package.json, themes, etc.) next to the executable.
|
- **Windows binary detection**: Fixed Bun compiled binary detection on Windows by checking for URL-encoded `%7EBUN` in addition to `$bunfs` and `~BUN` in `import.meta.url`. This ensures the binary correctly locates supporting files (package.json, themes, etc.) next to the executable.
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,12 @@
|
||||||
|
|
||||||
A radically simple and opinionated coding agent with multi-model support (including mid-session switching), a simple yet powerful CLI for headless coding tasks, and many creature comforts you might be used to from other coding agents.
|
A radically simple and opinionated coding agent with multi-model support (including mid-session switching), a simple yet powerful CLI for headless coding tasks, and many creature comforts you might be used to from other coding agents.
|
||||||
|
|
||||||
Works on Linux, macOS, and Windows (barely tested, needs Git Bash running in the "modern" Windows Terminal).
|
Works on Linux, macOS, and Windows (needs a bash shell, see [Windows Shell Configuration](#windows-shell-configuration)).
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
- [Installation](#installation)
|
- [Installation](#installation)
|
||||||
|
- [Windows Shell Configuration](#windows-shell-configuration)
|
||||||
- [Quick Start](#quick-start)
|
- [Quick Start](#quick-start)
|
||||||
- [API Keys](#api-keys)
|
- [API Keys](#api-keys)
|
||||||
- [OAuth Authentication (Optional)](#oauth-authentication-optional)
|
- [OAuth Authentication (Optional)](#oauth-authentication-optional)
|
||||||
|
|
@ -81,6 +82,29 @@ npm run build:binary
|
||||||
./dist/pi
|
./dist/pi
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Windows Shell Configuration
|
||||||
|
|
||||||
|
On Windows, pi requires a bash shell. The following locations are checked in order:
|
||||||
|
|
||||||
|
1. **Custom shell path** from `~/.pi/agent/settings.json` (if configured)
|
||||||
|
2. **Git Bash** in standard locations (`C:\Program Files\Git\bin\bash.exe`)
|
||||||
|
3. **bash.exe on PATH** (Cygwin, MSYS2, WSL, etc.)
|
||||||
|
|
||||||
|
For most users, installing [Git for Windows](https://git-scm.com/download/win) is sufficient.
|
||||||
|
|
||||||
|
### Custom Shell Path
|
||||||
|
|
||||||
|
If you use Cygwin, MSYS2, or have bash in a non-standard location, add the path to your settings:
|
||||||
|
|
||||||
|
```json
|
||||||
|
// ~/.pi/agent/settings.json
|
||||||
|
{
|
||||||
|
"shellPath": "C:\\cygwin64\\bin\\bash.exe"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, ensure your bash is on the system PATH.
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-coding-agent",
|
"name": "@mariozechner/pi-coding-agent",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"piConfig": {
|
"piConfig": {
|
||||||
|
|
@ -28,9 +28,9 @@
|
||||||
"prepublishOnly": "npm run clean && npm run build"
|
"prepublishOnly": "npm run clean && npm run build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-agent-core": "^0.13.0",
|
"@mariozechner/pi-agent-core": "^0.13.1",
|
||||||
"@mariozechner/pi-ai": "^0.13.0",
|
"@mariozechner/pi-ai": "^0.13.1",
|
||||||
"@mariozechner/pi-tui": "^0.13.0",
|
"@mariozechner/pi-tui": "^0.13.1",
|
||||||
"chalk": "^5.5.0",
|
"chalk": "^5.5.0",
|
||||||
"diff": "^8.0.2",
|
"diff": "^8.0.2",
|
||||||
"glob": "^11.0.3"
|
"glob": "^11.0.3"
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ export interface Settings {
|
||||||
theme?: string;
|
theme?: string;
|
||||||
compaction?: CompactionSettings;
|
compaction?: CompactionSettings;
|
||||||
hideThinkingBlock?: boolean;
|
hideThinkingBlock?: boolean;
|
||||||
|
shellPath?: string; // Custom shell path (e.g., for Cygwin users on Windows)
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SettingsManager {
|
export class SettingsManager {
|
||||||
|
|
@ -153,4 +154,13 @@ export class SettingsManager {
|
||||||
this.settings.hideThinkingBlock = hide;
|
this.settings.hideThinkingBlock = hide;
|
||||||
this.save();
|
this.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getShellPath(): string | undefined {
|
||||||
|
return this.settings.shellPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
setShellPath(path: string | undefined): void {
|
||||||
|
this.settings.shellPath = path;
|
||||||
|
this.save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,57 @@
|
||||||
import type { AgentTool } from "@mariozechner/pi-ai";
|
import type { AgentTool } from "@mariozechner/pi-ai";
|
||||||
import { Type } from "@sinclair/typebox";
|
import { Type } from "@sinclair/typebox";
|
||||||
import { spawn } from "child_process";
|
import { spawn, spawnSync } from "child_process";
|
||||||
import { existsSync } from "fs";
|
import { existsSync } from "fs";
|
||||||
|
import { SettingsManager } from "../settings-manager.js";
|
||||||
|
|
||||||
|
let cachedShellConfig: { shell: string; args: string[] } | null = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get shell configuration based on platform
|
* Find bash executable on PATH (Windows)
|
||||||
|
*/
|
||||||
|
function findBashOnPath(): string | null {
|
||||||
|
try {
|
||||||
|
const result = spawnSync("where", ["bash.exe"], { encoding: "utf-8", timeout: 5000 });
|
||||||
|
if (result.status === 0 && result.stdout) {
|
||||||
|
const firstMatch = result.stdout.trim().split(/\r?\n/)[0];
|
||||||
|
if (firstMatch && existsSync(firstMatch)) {
|
||||||
|
return firstMatch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// Ignore errors
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get shell configuration based on platform.
|
||||||
|
* Resolution order:
|
||||||
|
* 1. User-specified shellPath in settings.json
|
||||||
|
* 2. On Windows: Git Bash in known locations
|
||||||
|
* 3. Fallback: bash on PATH (Windows) or sh (Unix)
|
||||||
*/
|
*/
|
||||||
function getShellConfig(): { shell: string; args: string[] } {
|
function getShellConfig(): { shell: string; args: string[] } {
|
||||||
|
if (cachedShellConfig) {
|
||||||
|
return cachedShellConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
const settings = new SettingsManager();
|
||||||
|
const customShellPath = settings.getShellPath();
|
||||||
|
|
||||||
|
// 1. Check user-specified shell path
|
||||||
|
if (customShellPath) {
|
||||||
|
if (existsSync(customShellPath)) {
|
||||||
|
cachedShellConfig = { shell: customShellPath, args: ["-c"] };
|
||||||
|
return cachedShellConfig;
|
||||||
|
}
|
||||||
|
throw new Error(
|
||||||
|
`Custom shell path not found: ${customShellPath}\n` + `Please update shellPath in ~/.pi/agent/settings.json`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (process.platform === "win32") {
|
if (process.platform === "win32") {
|
||||||
|
// 2. Try Git Bash in known locations
|
||||||
const paths: string[] = [];
|
const paths: string[] = [];
|
||||||
const programFiles = process.env.ProgramFiles;
|
const programFiles = process.env.ProgramFiles;
|
||||||
if (programFiles) {
|
if (programFiles) {
|
||||||
|
|
@ -20,16 +64,29 @@ function getShellConfig(): { shell: string; args: string[] } {
|
||||||
|
|
||||||
for (const path of paths) {
|
for (const path of paths) {
|
||||||
if (existsSync(path)) {
|
if (existsSync(path)) {
|
||||||
return { shell: path, args: ["-c"] };
|
cachedShellConfig = { shell: path, args: ["-c"] };
|
||||||
|
return cachedShellConfig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 3. Fallback: search bash.exe on PATH (Cygwin, MSYS2, WSL, etc.)
|
||||||
|
const bashOnPath = findBashOnPath();
|
||||||
|
if (bashOnPath) {
|
||||||
|
cachedShellConfig = { shell: bashOnPath, args: ["-c"] };
|
||||||
|
return cachedShellConfig;
|
||||||
|
}
|
||||||
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Git Bash not found. Please install Git for Windows from https://git-scm.com/download/win\n` +
|
`No bash shell found. Options:\n` +
|
||||||
`Searched in:\n${paths.map((p) => ` ${p}`).join("\n")}`,
|
` 1. Install Git for Windows: https://git-scm.com/download/win\n` +
|
||||||
|
` 2. Add your bash to PATH (Cygwin, MSYS2, etc.)\n` +
|
||||||
|
` 3. Set shellPath in ~/.pi/agent/settings.json\n\n` +
|
||||||
|
`Searched Git Bash in:\n${paths.map((p) => ` ${p}`).join("\n")}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return { shell: "sh", args: ["-c"] };
|
|
||||||
|
cachedShellConfig = { shell: "sh", args: ["-c"] };
|
||||||
|
return cachedShellConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-mom",
|
"name": "@mariozechner/pi-mom",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"description": "Slack bot that delegates messages to the pi coding agent",
|
"description": "Slack bot that delegates messages to the pi coding agent",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@anthropic-ai/sandbox-runtime": "^0.0.16",
|
"@anthropic-ai/sandbox-runtime": "^0.0.16",
|
||||||
"@mariozechner/pi-agent-core": "^0.13.0",
|
"@mariozechner/pi-agent-core": "^0.13.1",
|
||||||
"@mariozechner/pi-ai": "^0.13.0",
|
"@mariozechner/pi-ai": "^0.13.1",
|
||||||
"@sinclair/typebox": "^0.34.0",
|
"@sinclair/typebox": "^0.34.0",
|
||||||
"@slack/socket-mode": "^2.0.0",
|
"@slack/socket-mode": "^2.0.0",
|
||||||
"@slack/web-api": "^7.0.0",
|
"@slack/web-api": "^7.0.0",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi",
|
"name": "@mariozechner/pi",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"description": "CLI tool for managing vLLM deployments on GPU pods",
|
"description": "CLI tool for managing vLLM deployments on GPU pods",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
"node": ">=20.0.0"
|
"node": ">=20.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-agent-core": "^0.13.0",
|
"@mariozechner/pi-agent-core": "^0.13.1",
|
||||||
"chalk": "^5.5.0"
|
"chalk": "^5.5.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {}
|
"devDependencies": {}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-proxy",
|
"name": "@mariozechner/pi-proxy",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "CORS and authentication proxy for pi-ai",
|
"description": "CORS and authentication proxy for pi-ai",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-tui",
|
"name": "@mariozechner/pi-tui",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"description": "Terminal User Interface library with differential rendering for efficient text-based applications",
|
"description": "Terminal User Interface library with differential rendering for efficient text-based applications",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "pi-web-ui-example",
|
"name": "pi-web-ui-example",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-web-ui",
|
"name": "@mariozechner/pi-web-ui",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"description": "Reusable web UI components for AI chat interfaces powered by @mariozechner/pi-ai",
|
"description": "Reusable web UI components for AI chat interfaces powered by @mariozechner/pi-ai",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
|
@ -18,8 +18,8 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lmstudio/sdk": "^1.5.0",
|
"@lmstudio/sdk": "^1.5.0",
|
||||||
"@mariozechner/pi-ai": "^0.13.0",
|
"@mariozechner/pi-ai": "^0.13.1",
|
||||||
"@mariozechner/pi-tui": "^0.13.0",
|
"@mariozechner/pi-tui": "^0.13.1",
|
||||||
"docx-preview": "^0.3.7",
|
"docx-preview": "^0.3.7",
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
"lucide": "^0.544.0",
|
"lucide": "^0.544.0",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue