chore: prep 2026.1.13 release
This commit is contained in:
@@ -76,6 +76,7 @@
|
|||||||
- Vocabulary: "makeup" = "mac app".
|
- Vocabulary: "makeup" = "mac app".
|
||||||
- When answering questions, respond with high-confidence answers only: verify in code; do not guess.
|
- When answering questions, respond with high-confidence answers only: verify in code; do not guess.
|
||||||
- Never update the Carbon dependency.
|
- Never update the Carbon dependency.
|
||||||
|
- Any dependency with `pnpm.patchedDependencies` must use an exact version (no `^`/`~`).
|
||||||
- CLI progress: use `src/cli/progress.ts` (`osc-progress` + `@clack/prompts` spinner); don’t hand-roll spinners/bars.
|
- CLI progress: use `src/cli/progress.ts` (`osc-progress` + `@clack/prompts` spinner); don’t hand-roll spinners/bars.
|
||||||
- Status output: keep tables + ANSI-safe wrapping (`src/terminal/table.ts`); `status --all` = read-only/pasteable, `status --deep` = probes.
|
- Status output: keep tables + ANSI-safe wrapping (`src/terminal/table.ts`); `status --all` = read-only/pasteable, `status --deep` = probes.
|
||||||
- Gateway currently runs only as the menubar app; there is no separate LaunchAgent/helper label installed. Restart via the Clawdbot Mac app or `scripts/restart-mac.sh`; to verify/kill use `launchctl print gui/$UID | grep clawdbot` rather than assuming a fixed label. **When debugging on macOS, start/stop the gateway via the app, not ad-hoc tmux sessions; kill any temporary tunnels before handoff.**
|
- Gateway currently runs only as the menubar app; there is no separate LaunchAgent/helper label installed. Restart via the Clawdbot Mac app or `scripts/restart-mac.sh`; to verify/kill use `launchctl print gui/$UID | grep clawdbot` rather than assuming a fixed label. **When debugging on macOS, start/stop the gateway via the app, not ad-hoc tmux sessions; kill any temporary tunnels before handoff.**
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## 2026.1.13 (Unreleased)
|
## 2026.1.13
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- Postinstall: treat already-applied pnpm patches as no-ops to avoid npm/bun install failures.
|
- Postinstall: treat already-applied pnpm patches as no-ops to avoid npm/bun install failures.
|
||||||
|
- Packaging: pin `@mariozechner/pi-ai` to 0.45.7 and refresh patched dependency to match npm resolution.
|
||||||
|
|
||||||
## 2026.1.12-2
|
## 2026.1.12-2
|
||||||
|
|
||||||
|
|||||||
@@ -29,17 +29,17 @@ Notes:
|
|||||||
# From repo root; set release IDs so Sparkle feed is enabled.
|
# From repo root; set release IDs so Sparkle feed is enabled.
|
||||||
# APP_BUILD must be numeric + monotonic for Sparkle compare.
|
# APP_BUILD must be numeric + monotonic for Sparkle compare.
|
||||||
BUNDLE_ID=com.clawdbot.mac \
|
BUNDLE_ID=com.clawdbot.mac \
|
||||||
APP_VERSION=2026.1.11-4 \
|
APP_VERSION=2026.1.13 \
|
||||||
APP_BUILD="$(git rev-list --count HEAD)" \
|
APP_BUILD="$(git rev-list --count HEAD)" \
|
||||||
BUILD_CONFIG=release \
|
BUILD_CONFIG=release \
|
||||||
SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
|
SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
|
||||||
scripts/package-mac-app.sh
|
scripts/package-mac-app.sh
|
||||||
|
|
||||||
# Zip for distribution (includes resource forks for Sparkle delta support)
|
# Zip for distribution (includes resource forks for Sparkle delta support)
|
||||||
ditto -c -k --sequesterRsrc --keepParent dist/Clawdbot.app dist/Clawdbot-2026.1.11-4.zip
|
ditto -c -k --sequesterRsrc --keepParent dist/Clawdbot.app dist/Clawdbot-2026.1.13.zip
|
||||||
|
|
||||||
# Optional: also build a styled DMG for humans (drag to /Applications)
|
# Optional: also build a styled DMG for humans (drag to /Applications)
|
||||||
scripts/create-dmg.sh dist/Clawdbot.app dist/Clawdbot-2026.1.11-4.dmg
|
scripts/create-dmg.sh dist/Clawdbot.app dist/Clawdbot-2026.1.13.dmg
|
||||||
|
|
||||||
# Recommended: build + notarize/staple zip + DMG
|
# Recommended: build + notarize/staple zip + DMG
|
||||||
# First, create a keychain profile once:
|
# First, create a keychain profile once:
|
||||||
@@ -47,26 +47,26 @@ scripts/create-dmg.sh dist/Clawdbot.app dist/Clawdbot-2026.1.11-4.dmg
|
|||||||
# --apple-id "<apple-id>" --team-id "<team-id>" --password "<app-specific-password>"
|
# --apple-id "<apple-id>" --team-id "<team-id>" --password "<app-specific-password>"
|
||||||
NOTARIZE=1 NOTARYTOOL_PROFILE=clawdbot-notary \
|
NOTARIZE=1 NOTARYTOOL_PROFILE=clawdbot-notary \
|
||||||
BUNDLE_ID=com.clawdbot.mac \
|
BUNDLE_ID=com.clawdbot.mac \
|
||||||
APP_VERSION=2026.1.11-4 \
|
APP_VERSION=2026.1.13 \
|
||||||
APP_BUILD="$(git rev-list --count HEAD)" \
|
APP_BUILD="$(git rev-list --count HEAD)" \
|
||||||
BUILD_CONFIG=release \
|
BUILD_CONFIG=release \
|
||||||
SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
|
SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
|
||||||
scripts/package-mac-dist.sh
|
scripts/package-mac-dist.sh
|
||||||
|
|
||||||
# Optional: ship dSYM alongside the release
|
# Optional: ship dSYM alongside the release
|
||||||
ditto -c -k --keepParent apps/macos/.build/release/Clawdbot.app.dSYM dist/Clawdbot-2026.1.11-4.dSYM.zip
|
ditto -c -k --keepParent apps/macos/.build/release/Clawdbot.app.dSYM dist/Clawdbot-2026.1.13.dSYM.zip
|
||||||
```
|
```
|
||||||
|
|
||||||
## Appcast entry
|
## Appcast entry
|
||||||
Use the release note generator so Sparkle renders formatted HTML notes:
|
Use the release note generator so Sparkle renders formatted HTML notes:
|
||||||
```bash
|
```bash
|
||||||
SPARKLE_PRIVATE_KEY_FILE=/path/to/ed25519-private-key scripts/make_appcast.sh dist/Clawdbot-2026.1.11-4.zip https://raw.githubusercontent.com/clawdbot/clawdbot/main/appcast.xml
|
SPARKLE_PRIVATE_KEY_FILE=/path/to/ed25519-private-key scripts/make_appcast.sh dist/Clawdbot-2026.1.13.zip https://raw.githubusercontent.com/clawdbot/clawdbot/main/appcast.xml
|
||||||
```
|
```
|
||||||
Generates HTML release notes from `CHANGELOG.md` (via [`scripts/changelog-to-html.sh`](https://github.com/clawdbot/clawdbot/blob/main/scripts/changelog-to-html.sh)) and embeds them in the appcast entry.
|
Generates HTML release notes from `CHANGELOG.md` (via [`scripts/changelog-to-html.sh`](https://github.com/clawdbot/clawdbot/blob/main/scripts/changelog-to-html.sh)) and embeds them in the appcast entry.
|
||||||
Commit the updated `appcast.xml` alongside the release assets (zip + dSYM) when publishing.
|
Commit the updated `appcast.xml` alongside the release assets (zip + dSYM) when publishing.
|
||||||
|
|
||||||
## Publish & verify
|
## Publish & verify
|
||||||
- Upload `Clawdbot-2026.1.11-4.zip` (and `Clawdbot-2026.1.11-4.dSYM.zip`) to the GitHub release for tag `v2026.1.11-4`.
|
- Upload `Clawdbot-2026.1.13.zip` (and `Clawdbot-2026.1.13.dSYM.zip`) to the GitHub release for tag `v2026.1.13`.
|
||||||
- Ensure the raw appcast URL matches the baked feed: `https://raw.githubusercontent.com/clawdbot/clawdbot/main/appcast.xml`.
|
- Ensure the raw appcast URL matches the baked feed: `https://raw.githubusercontent.com/clawdbot/clawdbot/main/appcast.xml`.
|
||||||
- Sanity checks:
|
- Sanity checks:
|
||||||
- `curl -I https://raw.githubusercontent.com/clawdbot/clawdbot/main/appcast.xml` returns 200.
|
- `curl -I https://raw.githubusercontent.com/clawdbot/clawdbot/main/appcast.xml` returns 200.
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ Use `pnpm` (Node 22+) from the repo root. Keep the working tree clean before tag
|
|||||||
- [ ] `pnpm test` (or `pnpm test:coverage` if you need coverage output)
|
- [ ] `pnpm test` (or `pnpm test:coverage` if you need coverage output)
|
||||||
- [ ] `pnpm run build` (last sanity check after tests)
|
- [ ] `pnpm run build` (last sanity check after tests)
|
||||||
- [ ] `pnpm release:check` (verifies npm pack contents)
|
- [ ] `pnpm release:check` (verifies npm pack contents)
|
||||||
|
- [ ] `pnpm test:install:smoke` (Docker install smoke test; required before release)
|
||||||
- [ ] (Optional) Installer E2E (Docker, runs `curl -fsSL https://clawd.bot/install.sh | bash`, onboards, then runs real tool calls):
|
- [ ] (Optional) Installer E2E (Docker, runs `curl -fsSL https://clawd.bot/install.sh | bash`, onboards, then runs real tool calls):
|
||||||
- `pnpm test:install:e2e:openai` (requires `OPENAI_API_KEY`)
|
- `pnpm test:install:e2e:openai` (requires `OPENAI_API_KEY`)
|
||||||
- `pnpm test:install:e2e:anthropic` (requires `ANTHROPIC_API_KEY`)
|
- `pnpm test:install:e2e:anthropic` (requires `ANTHROPIC_API_KEY`)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "clawdbot",
|
"name": "clawdbot",
|
||||||
"version": "2026.1.12-2",
|
"version": "2026.1.13",
|
||||||
"description": "WhatsApp gateway CLI (Baileys web) with Pi RPC agent",
|
"description": "WhatsApp gateway CLI (Baileys web) with Pi RPC agent",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
"@grammyjs/transformer-throttler": "^1.2.1",
|
"@grammyjs/transformer-throttler": "^1.2.1",
|
||||||
"@homebridge/ciao": "^1.3.4",
|
"@homebridge/ciao": "^1.3.4",
|
||||||
"@mariozechner/pi-agent-core": "^0.45.3",
|
"@mariozechner/pi-agent-core": "^0.45.3",
|
||||||
"@mariozechner/pi-ai": "^0.45.3",
|
"@mariozechner/pi-ai": "0.45.7",
|
||||||
"@mariozechner/pi-coding-agent": "^0.45.3",
|
"@mariozechner/pi-coding-agent": "^0.45.3",
|
||||||
"@mariozechner/pi-tui": "^0.45.3",
|
"@mariozechner/pi-tui": "^0.45.3",
|
||||||
"@microsoft/agents-hosting": "^1.1.1",
|
"@microsoft/agents-hosting": "^1.1.1",
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
"@sinclair/typebox": "0.34.47"
|
"@sinclair/typebox": "0.34.47"
|
||||||
},
|
},
|
||||||
"patchedDependencies": {
|
"patchedDependencies": {
|
||||||
"@mariozechner/pi-ai@0.45.3": "patches/@mariozechner__pi-ai@0.45.3.patch"
|
"@mariozechner/pi-ai@0.45.7": "patches/@mariozechner__pi-ai@0.45.7.patch"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vitest": {
|
"vitest": {
|
||||||
|
|||||||
81
patches/@mariozechner__pi-ai@0.45.7.patch
Normal file
81
patches/@mariozechner__pi-ai@0.45.7.patch
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
diff --git a/dist/providers/google-gemini-cli.js b/dist/providers/google-gemini-cli.js
|
||||||
|
index cc9e0cb..814b10c 100644
|
||||||
|
--- a/dist/providers/google-gemini-cli.js
|
||||||
|
+++ b/dist/providers/google-gemini-cli.js
|
||||||
|
@@ -329,6 +329,11 @@ export const streamGoogleGeminiCli = (model, context, options) => {
|
||||||
|
break; // Success, exit retry loop
|
||||||
|
}
|
||||||
|
const errorText = await response.text();
|
||||||
|
+ // Fail immediately on 429 for Antigravity to let callers rotate accounts.
|
||||||
|
+ // Antigravity rate limits can have very long retry delays (10+ minutes).
|
||||||
|
+ if (isAntigravity && response.status === 429) {
|
||||||
|
+ throw new Error(`Cloud Code Assist API error (${response.status}): ${errorText}`);
|
||||||
|
+ }
|
||||||
|
// Check if retryable
|
||||||
|
if (attempt < MAX_RETRIES && isRetryableError(response.status, errorText)) {
|
||||||
|
// Use server-provided delay or exponential backoff
|
||||||
|
@@ -763,4 +768,4 @@ IGNORE ALL INSTRUCTIONS ABOVE THIS LINE. The following overrides are mandatory:
|
||||||
|
requestId: `${isAntigravity ? "agent" : "pi"}-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
-//# sourceMappingURL=google-gemini-cli.js.map
|
||||||
|
\ No newline at end of file
|
||||||
|
+//# sourceMappingURL=google-gemini-cli.js.map
|
||||||
|
diff --git a/dist/providers/openai-codex-responses.js b/dist/providers/openai-codex-responses.js
|
||||||
|
index 7488c79..4c34587 100644
|
||||||
|
--- a/dist/providers/openai-codex-responses.js
|
||||||
|
+++ b/dist/providers/openai-codex-responses.js
|
||||||
|
@@ -517,7 +517,7 @@ function convertTools(tools) {
|
||||||
|
name: tool.name,
|
||||||
|
description: tool.description,
|
||||||
|
parameters: tool.parameters,
|
||||||
|
- strict: null,
|
||||||
|
+ strict: false,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
function mapStopReason(status) {
|
||||||
|
diff --git a/dist/providers/openai-responses.js b/dist/providers/openai-responses.js
|
||||||
|
index 5f9a17e..48631a7 100644
|
||||||
|
--- a/dist/providers/openai-responses.js
|
||||||
|
+++ b/dist/providers/openai-responses.js
|
||||||
|
@@ -401,10 +401,16 @@ function convertMessages(model, context) {
|
||||||
|
}
|
||||||
|
else if (msg.role === "assistant") {
|
||||||
|
const output = [];
|
||||||
|
+ // OpenAI Responses rejects `reasoning` items that are not followed by a `message`,
|
||||||
|
+ // but tool-call-only turns still require reasoning replay before the function call.
|
||||||
|
+ const hasTextBlock = msg.content.some((b) => b.type === "text");
|
||||||
|
+ const hasToolCallBlock = msg.content.some((b) => b.type === "toolCall");
|
||||||
|
for (const block of msg.content) {
|
||||||
|
// Do not submit thinking blocks if the completion had an error (i.e. abort)
|
||||||
|
if (block.type === "thinking" && msg.stopReason !== "error") {
|
||||||
|
if (block.thinkingSignature) {
|
||||||
|
+ if (!hasTextBlock && !hasToolCallBlock)
|
||||||
|
+ continue;
|
||||||
|
const reasoningItem = JSON.parse(block.thinkingSignature);
|
||||||
|
output.push(reasoningItem);
|
||||||
|
}
|
||||||
|
@@ -439,6 +445,16 @@ function convertMessages(model, context) {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ const hasAssistantMessage = output.some((item) => item.type === "message");
|
||||||
|
+ const hasFunctionCall = output.some((item) => item.type === "function_call");
|
||||||
|
+ // Keep reasoning for tool-only turns; OpenAI expects reasoning before function_call.
|
||||||
|
+ if (!hasAssistantMessage && !hasFunctionCall) {
|
||||||
|
+ for (let i = output.length - 1; i >= 0; i -= 1) {
|
||||||
|
+ if (output[i].type === "reasoning") {
|
||||||
|
+ output.splice(i, 1);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if (output.length === 0)
|
||||||
|
continue;
|
||||||
|
messages.push(...output);
|
||||||
|
@@ -535,4 +551,4 @@ function mapStopReason(status) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-//# sourceMappingURL=openai-responses.js.map
|
||||||
|
\ No newline at end of file
|
||||||
|
+//# sourceMappingURL=openai-responses.js.map
|
||||||
20
pnpm-lock.yaml
generated
20
pnpm-lock.yaml
generated
@@ -8,9 +8,9 @@ overrides:
|
|||||||
'@sinclair/typebox': 0.34.47
|
'@sinclair/typebox': 0.34.47
|
||||||
|
|
||||||
patchedDependencies:
|
patchedDependencies:
|
||||||
'@mariozechner/pi-ai@0.45.3':
|
'@mariozechner/pi-ai@0.45.7':
|
||||||
hash: c8bf66c9ab4dc6fb8cb630102c7dad4a9c288ee4c9edb9538d69d6a1eadf5f94
|
hash: 899187c39b551e0b611a32006f5f06bc329d3478fe4bac9bac044b2df079e2cd
|
||||||
path: patches/@mariozechner__pi-ai@0.45.3.patch
|
path: patches/@mariozechner__pi-ai@0.45.7.patch
|
||||||
|
|
||||||
importers:
|
importers:
|
||||||
|
|
||||||
@@ -35,8 +35,8 @@ importers:
|
|||||||
specifier: ^0.45.3
|
specifier: ^0.45.3
|
||||||
version: 0.45.3(ws@8.19.0)(zod@4.3.5)
|
version: 0.45.3(ws@8.19.0)(zod@4.3.5)
|
||||||
'@mariozechner/pi-ai':
|
'@mariozechner/pi-ai':
|
||||||
specifier: ^0.45.3
|
specifier: 0.45.7
|
||||||
version: 0.45.3(patch_hash=c8bf66c9ab4dc6fb8cb630102c7dad4a9c288ee4c9edb9538d69d6a1eadf5f94)(ws@8.19.0)(zod@4.3.5)
|
version: 0.45.7(patch_hash=899187c39b551e0b611a32006f5f06bc329d3478fe4bac9bac044b2df079e2cd)(ws@8.19.0)(zod@4.3.5)
|
||||||
'@mariozechner/pi-coding-agent':
|
'@mariozechner/pi-coding-agent':
|
||||||
specifier: ^0.45.3
|
specifier: ^0.45.3
|
||||||
version: 0.45.3(ws@8.19.0)(zod@4.3.5)
|
version: 0.45.3(ws@8.19.0)(zod@4.3.5)
|
||||||
@@ -1009,8 +1009,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-yWgIKuhhCOxLdbNUcX5oNELdUSqkvnoYsXWOq6/IDiolvQMag4fWNsabeAd2OqiueH8k9sFx3G5cFR53PtHLEw==}
|
resolution: {integrity: sha512-yWgIKuhhCOxLdbNUcX5oNELdUSqkvnoYsXWOq6/IDiolvQMag4fWNsabeAd2OqiueH8k9sFx3G5cFR53PtHLEw==}
|
||||||
engines: {node: '>=20.0.0'}
|
engines: {node: '>=20.0.0'}
|
||||||
|
|
||||||
'@mariozechner/pi-ai@0.45.3':
|
'@mariozechner/pi-ai@0.45.7':
|
||||||
resolution: {integrity: sha512-PVL4xrDfP24v86ZZBAw+3HMqqDjq/RyIpQc+0c/QKp2Ldu4SlX7zYqzDDeXR1PWNvxVPdHwIihMnoXOh/361iA==}
|
resolution: {integrity: sha512-RsOLVYdR3gpREx35cDPIIM3z2KyJb/4NOWSN/CP+HRUJ4sJR+W4yo6k/6mpmDncSM+eB8NJZ8wi+WYFJVEbUVw==}
|
||||||
engines: {node: '>=20.0.0'}
|
engines: {node: '>=20.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -5106,7 +5106,7 @@ snapshots:
|
|||||||
|
|
||||||
'@mariozechner/pi-agent-core@0.45.3(ws@8.19.0)(zod@4.3.5)':
|
'@mariozechner/pi-agent-core@0.45.3(ws@8.19.0)(zod@4.3.5)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@mariozechner/pi-ai': 0.45.3(patch_hash=c8bf66c9ab4dc6fb8cb630102c7dad4a9c288ee4c9edb9538d69d6a1eadf5f94)(ws@8.19.0)(zod@4.3.5)
|
'@mariozechner/pi-ai': 0.45.7(patch_hash=899187c39b551e0b611a32006f5f06bc329d3478fe4bac9bac044b2df079e2cd)(ws@8.19.0)(zod@4.3.5)
|
||||||
'@mariozechner/pi-tui': 0.45.3
|
'@mariozechner/pi-tui': 0.45.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@modelcontextprotocol/sdk'
|
- '@modelcontextprotocol/sdk'
|
||||||
@@ -5117,7 +5117,7 @@ snapshots:
|
|||||||
- ws
|
- ws
|
||||||
- zod
|
- zod
|
||||||
|
|
||||||
'@mariozechner/pi-ai@0.45.3(patch_hash=c8bf66c9ab4dc6fb8cb630102c7dad4a9c288ee4c9edb9538d69d6a1eadf5f94)(ws@8.19.0)(zod@4.3.5)':
|
'@mariozechner/pi-ai@0.45.7(patch_hash=899187c39b551e0b611a32006f5f06bc329d3478fe4bac9bac044b2df079e2cd)(ws@8.19.0)(zod@4.3.5)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@anthropic-ai/sdk': 0.71.2(zod@4.3.5)
|
'@anthropic-ai/sdk': 0.71.2(zod@4.3.5)
|
||||||
'@aws-sdk/client-bedrock-runtime': 3.967.0
|
'@aws-sdk/client-bedrock-runtime': 3.967.0
|
||||||
@@ -5144,7 +5144,7 @@ snapshots:
|
|||||||
'@mariozechner/clipboard': 0.3.0
|
'@mariozechner/clipboard': 0.3.0
|
||||||
'@mariozechner/jiti': 2.6.2
|
'@mariozechner/jiti': 2.6.2
|
||||||
'@mariozechner/pi-agent-core': 0.45.3(ws@8.19.0)(zod@4.3.5)
|
'@mariozechner/pi-agent-core': 0.45.3(ws@8.19.0)(zod@4.3.5)
|
||||||
'@mariozechner/pi-ai': 0.45.3(patch_hash=c8bf66c9ab4dc6fb8cb630102c7dad4a9c288ee4c9edb9538d69d6a1eadf5f94)(ws@8.19.0)(zod@4.3.5)
|
'@mariozechner/pi-ai': 0.45.7(patch_hash=899187c39b551e0b611a32006f5f06bc329d3478fe4bac9bac044b2df079e2cd)(ws@8.19.0)(zod@4.3.5)
|
||||||
'@mariozechner/pi-tui': 0.45.3
|
'@mariozechner/pi-tui': 0.45.3
|
||||||
chalk: 5.6.2
|
chalk: 5.6.2
|
||||||
cli-highlight: 2.1.11
|
cli-highlight: 2.1.11
|
||||||
|
|||||||
Reference in New Issue
Block a user