context-mode 1.0.169 → 2.0.0-next.6
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/.claude-plugin/marketplace.json +4 -22
- package/.claude-plugin/plugin.json +9 -24
- package/.codex-plugin/hooks.json +18 -33
- package/.codex-plugin/mcp.json +5 -4
- package/.codex-plugin/plugin.json +8 -27
- package/SHA256SUMS +37 -0
- package/claude-code/skills/ctx-doctor/SKILL.md +6 -0
- package/claude-code/skills/ctx-stats/SKILL.md +6 -0
- package/claude-code/skills/ctx-upgrade/SKILL.md +6 -0
- package/cli.mjs +6859 -0
- package/codex/skills/ctx-doctor/SKILL.md +6 -0
- package/codex/skills/ctx-stats/SKILL.md +6 -0
- package/codex/skills/ctx-upgrade/SKILL.md +6 -0
- package/copilot/plugin.json +14 -0
- package/fixtures/hook-roundtrip.json +22 -0
- package/gemini-extension.json +14 -0
- package/hook.mjs +202 -0
- package/hooks/claude-code.json +50 -0
- package/hooks/codex.json +50 -0
- package/hooks/copilot-cli.json +33 -0
- package/hooks/hooks.json +16 -111
- package/hooks/kiro.json +69 -0
- package/hooks/qwen.json +50 -0
- package/hooks/vscode.json +40 -0
- package/hooks/zcode.json +53 -0
- package/opencode/plugin.js +22491 -0
- package/package.json +32 -114
- package/pi/index.js +50876 -0
- package/pi/skills/ctx-doctor/SKILL.md +6 -0
- package/pi/skills/ctx-stats/SKILL.md +6 -0
- package/pi/skills/ctx-upgrade/SKILL.md +6 -0
- package/qwen-extension.json +15 -0
- package/run.mjs +5639 -0
- package/search.mjs +5639 -0
- package/server.mjs +48214 -0
- package/skills/ctx-doctor/SKILL.md +3 -19
- package/skills/ctx-stats/SKILL.md +3 -23
- package/skills/ctx-upgrade/SKILL.md +3 -28
- package/.openclaw-plugin/index.ts +0 -12
- package/.openclaw-plugin/openclaw.plugin.json +0 -38
- package/.openclaw-plugin/package.json +0 -28
- package/LICENSE +0 -94
- package/README.md +0 -1619
- package/bin/statusline.mjs +0 -378
- package/build/adapters/antigravity/index.d.ts +0 -51
- package/build/adapters/antigravity/index.js +0 -169
- package/build/adapters/antigravity-cli/index.d.ts +0 -51
- package/build/adapters/antigravity-cli/index.js +0 -342
- package/build/adapters/base.d.ts +0 -92
- package/build/adapters/base.js +0 -135
- package/build/adapters/claude-code/config.d.ts +0 -8
- package/build/adapters/claude-code/config.js +0 -8
- package/build/adapters/claude-code/hooks.d.ts +0 -106
- package/build/adapters/claude-code/hooks.js +0 -183
- package/build/adapters/claude-code/index.d.ts +0 -80
- package/build/adapters/claude-code/index.js +0 -569
- package/build/adapters/claude-code-base.d.ts +0 -49
- package/build/adapters/claude-code-base.js +0 -113
- package/build/adapters/client-map.d.ts +0 -10
- package/build/adapters/client-map.js +0 -42
- package/build/adapters/codex/config.d.ts +0 -8
- package/build/adapters/codex/config.js +0 -8
- package/build/adapters/codex/hooks.d.ts +0 -55
- package/build/adapters/codex/hooks.js +0 -64
- package/build/adapters/codex/index.d.ts +0 -87
- package/build/adapters/codex/index.js +0 -992
- package/build/adapters/codex/paths.d.ts +0 -1
- package/build/adapters/codex/paths.js +0 -12
- package/build/adapters/codex/usage.d.ts +0 -107
- package/build/adapters/codex/usage.js +0 -227
- package/build/adapters/copilot-base.d.ts +0 -94
- package/build/adapters/copilot-base.js +0 -297
- package/build/adapters/copilot-cli/hooks.d.ts +0 -33
- package/build/adapters/copilot-cli/hooks.js +0 -64
- package/build/adapters/copilot-cli/index.d.ts +0 -48
- package/build/adapters/copilot-cli/index.js +0 -341
- package/build/adapters/cursor/config.d.ts +0 -4
- package/build/adapters/cursor/config.js +0 -4
- package/build/adapters/cursor/hooks.d.ts +0 -55
- package/build/adapters/cursor/hooks.js +0 -82
- package/build/adapters/cursor/index.d.ts +0 -64
- package/build/adapters/cursor/index.js +0 -517
- package/build/adapters/detect.d.ts +0 -136
- package/build/adapters/detect.js +0 -623
- package/build/adapters/gemini-cli/config.d.ts +0 -8
- package/build/adapters/gemini-cli/config.js +0 -8
- package/build/adapters/gemini-cli/hooks.d.ts +0 -83
- package/build/adapters/gemini-cli/hooks.js +0 -115
- package/build/adapters/gemini-cli/index.d.ts +0 -80
- package/build/adapters/gemini-cli/index.js +0 -483
- package/build/adapters/jetbrains-copilot/config.d.ts +0 -8
- package/build/adapters/jetbrains-copilot/config.js +0 -8
- package/build/adapters/jetbrains-copilot/hooks.d.ts +0 -59
- package/build/adapters/jetbrains-copilot/hooks.js +0 -87
- package/build/adapters/jetbrains-copilot/index.d.ts +0 -31
- package/build/adapters/jetbrains-copilot/index.js +0 -131
- package/build/adapters/kimi/config.d.ts +0 -8
- package/build/adapters/kimi/config.js +0 -8
- package/build/adapters/kimi/hooks.d.ts +0 -28
- package/build/adapters/kimi/hooks.js +0 -34
- package/build/adapters/kimi/index.d.ts +0 -66
- package/build/adapters/kimi/index.js +0 -537
- package/build/adapters/kimi/paths.d.ts +0 -21
- package/build/adapters/kimi/paths.js +0 -52
- package/build/adapters/kimi/usage.d.ts +0 -82
- package/build/adapters/kimi/usage.js +0 -217
- package/build/adapters/kiro/hooks.d.ts +0 -61
- package/build/adapters/kiro/hooks.js +0 -94
- package/build/adapters/kiro/index.d.ts +0 -61
- package/build/adapters/kiro/index.js +0 -301
- package/build/adapters/omp/index.d.ts +0 -65
- package/build/adapters/omp/index.js +0 -182
- package/build/adapters/omp/plugin.d.ts +0 -81
- package/build/adapters/omp/plugin.js +0 -331
- package/build/adapters/omp/usage.d.ts +0 -49
- package/build/adapters/omp/usage.js +0 -110
- package/build/adapters/openclaw/config.d.ts +0 -8
- package/build/adapters/openclaw/config.js +0 -8
- package/build/adapters/openclaw/hooks.d.ts +0 -50
- package/build/adapters/openclaw/hooks.js +0 -61
- package/build/adapters/openclaw/index.d.ts +0 -74
- package/build/adapters/openclaw/index.js +0 -439
- package/build/adapters/openclaw/mcp-tools.d.ts +0 -54
- package/build/adapters/openclaw/mcp-tools.js +0 -207
- package/build/adapters/openclaw/plugin.d.ts +0 -141
- package/build/adapters/openclaw/plugin.js +0 -818
- package/build/adapters/openclaw/session-db.d.ts +0 -55
- package/build/adapters/openclaw/session-db.js +0 -88
- package/build/adapters/openclaw/usage.d.ts +0 -34
- package/build/adapters/openclaw/usage.js +0 -52
- package/build/adapters/openclaw/workspace-router.d.ts +0 -29
- package/build/adapters/openclaw/workspace-router.js +0 -64
- package/build/adapters/opencode/config.d.ts +0 -8
- package/build/adapters/opencode/config.js +0 -8
- package/build/adapters/opencode/hooks.d.ts +0 -38
- package/build/adapters/opencode/hooks.js +0 -50
- package/build/adapters/opencode/index.d.ts +0 -67
- package/build/adapters/opencode/index.js +0 -463
- package/build/adapters/opencode/plugin.d.ts +0 -184
- package/build/adapters/opencode/plugin.js +0 -558
- package/build/adapters/opencode/zod3tov4.d.ts +0 -1
- package/build/adapters/opencode/zod3tov4.js +0 -132
- package/build/adapters/pi/extension.d.ts +0 -81
- package/build/adapters/pi/extension.js +0 -861
- package/build/adapters/pi/index.d.ts +0 -57
- package/build/adapters/pi/index.js +0 -173
- package/build/adapters/pi/mcp-bridge.d.ts +0 -268
- package/build/adapters/pi/mcp-bridge.js +0 -894
- package/build/adapters/qwen-code/hooks.d.ts +0 -26
- package/build/adapters/qwen-code/hooks.js +0 -29
- package/build/adapters/qwen-code/index.d.ts +0 -40
- package/build/adapters/qwen-code/index.js +0 -361
- package/build/adapters/qwen-code/usage.d.ts +0 -90
- package/build/adapters/qwen-code/usage.js +0 -222
- package/build/adapters/types.d.ts +0 -360
- package/build/adapters/types.js +0 -118
- package/build/adapters/vscode-copilot/config.d.ts +0 -8
- package/build/adapters/vscode-copilot/config.js +0 -8
- package/build/adapters/vscode-copilot/hooks.d.ts +0 -71
- package/build/adapters/vscode-copilot/hooks.js +0 -98
- package/build/adapters/vscode-copilot/index.d.ts +0 -32
- package/build/adapters/vscode-copilot/index.js +0 -222
- package/build/adapters/zed/index.d.ts +0 -40
- package/build/adapters/zed/index.js +0 -163
- package/build/cli.d.ts +0 -34
- package/build/cli.js +0 -1827
- package/build/db-base.d.ts +0 -179
- package/build/db-base.js +0 -569
- package/build/executor.d.ts +0 -72
- package/build/executor.js +0 -678
- package/build/exit-classify.d.ts +0 -19
- package/build/exit-classify.js +0 -12
- package/build/fetch-cache.d.ts +0 -13
- package/build/fetch-cache.js +0 -15
- package/build/lifecycle.d.ts +0 -124
- package/build/lifecycle.js +0 -278
- package/build/runPool.d.ts +0 -36
- package/build/runPool.js +0 -51
- package/build/runtime.d.ts +0 -71
- package/build/runtime.js +0 -659
- package/build/search/auto-memory.d.ts +0 -47
- package/build/search/auto-memory.js +0 -170
- package/build/search/ctx-search-schema.d.ts +0 -90
- package/build/search/ctx-search-schema.js +0 -135
- package/build/search/flood-guard.d.ts +0 -57
- package/build/search/flood-guard.js +0 -80
- package/build/search/unified.d.ts +0 -56
- package/build/search/unified.js +0 -104
- package/build/security.d.ts +0 -206
- package/build/security.js +0 -780
- package/build/server.d.ts +0 -184
- package/build/server.js +0 -4563
- package/build/session/analytics.d.ts +0 -773
- package/build/session/analytics.js +0 -2420
- package/build/session/db.d.ts +0 -468
- package/build/session/db.js +0 -1308
- package/build/session/error-classifier.d.ts +0 -87
- package/build/session/error-classifier.js +0 -303
- package/build/session/event-emit.d.ts +0 -48
- package/build/session/event-emit.js +0 -101
- package/build/session/extract.d.ts +0 -333
- package/build/session/extract.js +0 -2688
- package/build/session/model-prices.json +0 -429
- package/build/session/persist-tool-calls.d.ts +0 -54
- package/build/session/persist-tool-calls.js +0 -105
- package/build/session/pricing.d.ts +0 -64
- package/build/session/pricing.js +0 -151
- package/build/session/project-attribution.d.ts +0 -73
- package/build/session/project-attribution.js +0 -245
- package/build/session/purge.d.ts +0 -138
- package/build/session/purge.js +0 -240
- package/build/session/retrieval-marker.d.ts +0 -39
- package/build/session/retrieval-marker.js +0 -65
- package/build/session/snapshot.d.ts +0 -46
- package/build/session/snapshot.js +0 -532
- package/build/store-directory.d.ts +0 -56
- package/build/store-directory.js +0 -254
- package/build/store.d.ts +0 -147
- package/build/store.js +0 -1714
- package/build/truncate.d.ts +0 -57
- package/build/truncate.js +0 -142
- package/build/types.d.ts +0 -117
- package/build/types.js +0 -20
- package/build/util/claude-config.d.ts +0 -32
- package/build/util/claude-config.js +0 -84
- package/build/util/hook-config.d.ts +0 -27
- package/build/util/hook-config.js +0 -76
- package/build/util/jsonc.d.ts +0 -14
- package/build/util/jsonc.js +0 -104
- package/build/util/plugin-cache-integrity.d.ts +0 -51
- package/build/util/plugin-cache-integrity.js +0 -146
- package/build/util/project-dir.d.ts +0 -149
- package/build/util/project-dir.js +0 -340
- package/build/util/sibling-mcp.d.ts +0 -79
- package/build/util/sibling-mcp.js +0 -181
- package/cli.bundle.mjs +0 -1236
- package/configs/antigravity/GEMINI.md +0 -68
- package/configs/antigravity/mcp_config.json +0 -7
- package/configs/antigravity-cli/hooks/hooks.json +0 -37
- package/configs/antigravity-cli/hooks.json +0 -37
- package/configs/antigravity-cli/mcp_config.json +0 -10
- package/configs/antigravity-cli/plugin.json +0 -14
- package/configs/antigravity-cli/rules/context-mode.md +0 -77
- package/configs/antigravity-cli/skills/context-mode/SKILL.md +0 -77
- package/configs/claude-code/CLAUDE.md +0 -91
- package/configs/codex/AGENTS.md +0 -99
- package/configs/codex/config.toml +0 -8
- package/configs/codex/hooks.json +0 -47
- package/configs/copilot-cli/.github/plugin/plugin.json +0 -23
- package/configs/copilot-cli/.mcp.json +0 -12
- package/configs/copilot-cli/README.md +0 -47
- package/configs/copilot-cli/hooks.json +0 -41
- package/configs/copilot-cli/skills/context-mode/SKILL.md +0 -38
- package/configs/cursor/context-mode.mdc +0 -76
- package/configs/cursor/hooks.json +0 -21
- package/configs/cursor/mcp.json +0 -7
- package/configs/gemini-cli/GEMINI.md +0 -88
- package/configs/gemini-cli/mcp.json +0 -7
- package/configs/gemini-cli/settings.json +0 -60
- package/configs/jetbrains-copilot/copilot-instructions.md +0 -80
- package/configs/jetbrains-copilot/hooks.json +0 -16
- package/configs/jetbrains-copilot/mcp.json +0 -7
- package/configs/kilo/AGENTS.md +0 -84
- package/configs/kilo/kilo.json +0 -6
- package/configs/kimi/hooks.json +0 -54
- package/configs/kiro/KIRO.md +0 -84
- package/configs/kiro/agent.json +0 -18
- package/configs/kiro/mcp.json +0 -7
- package/configs/omp/SYSTEM.md +0 -85
- package/configs/omp/mcp.json +0 -7
- package/configs/openclaw/AGENTS.md +0 -87
- package/configs/openclaw/openclaw.json +0 -13
- package/configs/opencode/AGENTS.md +0 -84
- package/configs/opencode/opencode.json +0 -6
- package/configs/pi/AGENTS.md +0 -3
- package/configs/qwen-code/QWEN.md +0 -91
- package/configs/vscode-copilot/copilot-instructions.md +0 -80
- package/configs/vscode-copilot/hooks.json +0 -16
- package/configs/vscode-copilot/mcp.json +0 -7
- package/configs/zed/AGENTS.md +0 -68
- package/hooks/antigravity-cli/payload.mjs +0 -98
- package/hooks/antigravity-cli/posttooluse.mjs +0 -138
- package/hooks/antigravity-cli/pretooluse.mjs +0 -78
- package/hooks/antigravity-cli/stop.mjs +0 -58
- package/hooks/auto-injection.mjs +0 -102
- package/hooks/cache-heal-utils.mjs +0 -379
- package/hooks/codex/platform.mjs +0 -1
- package/hooks/codex/posttooluse.mjs +0 -66
- package/hooks/codex/precompact.mjs +0 -70
- package/hooks/codex/pretooluse.mjs +0 -42
- package/hooks/codex/sessionstart.mjs +0 -121
- package/hooks/codex/stop.mjs +0 -138
- package/hooks/codex/userpromptsubmit.mjs +0 -75
- package/hooks/copilot-cli/posttooluse.mjs +0 -79
- package/hooks/copilot-cli/precompact.mjs +0 -66
- package/hooks/copilot-cli/pretooluse.mjs +0 -41
- package/hooks/copilot-cli/sessionstart.mjs +0 -121
- package/hooks/copilot-cli/stop.mjs +0 -59
- package/hooks/copilot-cli/userpromptsubmit.mjs +0 -77
- package/hooks/core/codex-caps.mjs +0 -112
- package/hooks/core/formatters.mjs +0 -356
- package/hooks/core/mcp-ready.mjs +0 -109
- package/hooks/core/platform-detect.mjs +0 -49
- package/hooks/core/routing.mjs +0 -1017
- package/hooks/core/stdin.mjs +0 -90
- package/hooks/core/tool-naming.mjs +0 -57
- package/hooks/cursor/afteragentresponse.mjs +0 -74
- package/hooks/cursor/hooks.json +0 -31
- package/hooks/cursor/posttooluse.mjs +0 -72
- package/hooks/cursor/pretooluse.mjs +0 -26
- package/hooks/cursor/sessionstart.mjs +0 -97
- package/hooks/cursor/stop.mjs +0 -48
- package/hooks/ensure-deps.mjs +0 -254
- package/hooks/formatters/claude-code.mjs +0 -113
- package/hooks/formatters/cursor.mjs +0 -37
- package/hooks/formatters/gemini-cli.mjs +0 -55
- package/hooks/formatters/vscode-copilot.mjs +0 -55
- package/hooks/gemini-cli/aftermodel.mjs +0 -70
- package/hooks/gemini-cli/aftertool.mjs +0 -61
- package/hooks/gemini-cli/beforeagent.mjs +0 -99
- package/hooks/gemini-cli/beforetool.mjs +0 -27
- package/hooks/gemini-cli/precompress.mjs +0 -55
- package/hooks/gemini-cli/sessionstart.mjs +0 -137
- package/hooks/heal-partial-install.mjs +0 -712
- package/hooks/jetbrains-copilot/posttooluse.mjs +0 -61
- package/hooks/jetbrains-copilot/precompact.mjs +0 -55
- package/hooks/jetbrains-copilot/pretooluse.mjs +0 -27
- package/hooks/jetbrains-copilot/sessionstart.mjs +0 -124
- package/hooks/kimi/platform.mjs +0 -1
- package/hooks/kimi/posttooluse.mjs +0 -72
- package/hooks/kimi/precompact.mjs +0 -80
- package/hooks/kimi/pretooluse.mjs +0 -42
- package/hooks/kimi/sessionend.mjs +0 -61
- package/hooks/kimi/sessionstart.mjs +0 -113
- package/hooks/kimi/stop.mjs +0 -132
- package/hooks/kimi/userpromptsubmit.mjs +0 -90
- package/hooks/kiro/agentspawn.mjs +0 -97
- package/hooks/kiro/posttooluse.mjs +0 -51
- package/hooks/kiro/pretooluse.mjs +0 -64
- package/hooks/kiro/userpromptsubmit.mjs +0 -88
- package/hooks/normalize-hooks.mjs +0 -323
- package/hooks/platform-bridge.mjs +0 -340
- package/hooks/posttooluse.mjs +0 -225
- package/hooks/precompact.mjs +0 -100
- package/hooks/pretooluse.mjs +0 -227
- package/hooks/qwen-code/platform.mjs +0 -1
- package/hooks/qwen-code/stop.mjs +0 -168
- package/hooks/routing-block.mjs +0 -105
- package/hooks/run-hook.mjs +0 -95
- package/hooks/security.bundle.mjs +0 -2
- package/hooks/session-attribution.bundle.mjs +0 -1
- package/hooks/session-db.bundle.mjs +0 -144
- package/hooks/session-directive.mjs +0 -520
- package/hooks/session-extract.bundle.mjs +0 -3
- package/hooks/session-helpers.mjs +0 -428
- package/hooks/session-loaders.mjs +0 -448
- package/hooks/session-snapshot.bundle.mjs +0 -32
- package/hooks/sessionstart.mjs +0 -464
- package/hooks/stop.mjs +0 -82
- package/hooks/suppress-stderr.mjs +0 -25
- package/hooks/userpromptsubmit.mjs +0 -108
- package/hooks/vscode-copilot/posttooluse.mjs +0 -61
- package/hooks/vscode-copilot/precompact.mjs +0 -55
- package/hooks/vscode-copilot/pretooluse.mjs +0 -27
- package/hooks/vscode-copilot/sessionstart.mjs +0 -129
- package/openclaw.plugin.json +0 -38
- package/scripts/heal-better-sqlite3.mjs +0 -430
- package/scripts/heal-installed-plugins.mjs +0 -598
- package/scripts/plugin-cache-integrity.mjs +0 -248
- package/scripts/postinstall.mjs +0 -384
- package/server.bundle.mjs +0 -1162
- package/skills/.ignore +0 -7
- package/skills/context-mode/SKILL.md +0 -300
- package/skills/context-mode/references/anti-patterns.md +0 -283
- package/skills/context-mode/references/patterns-javascript.md +0 -298
- package/skills/context-mode/references/patterns-python.md +0 -304
- package/skills/context-mode/references/patterns-shell.md +0 -277
- package/skills/ctx-index/SKILL.md +0 -46
- package/skills/ctx-insight/SKILL.md +0 -24
- package/skills/ctx-purge/SKILL.md +0 -49
- package/skills/ctx-search/SKILL.md +0 -35
- package/start.mjs +0 -616
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zod 3 → Zod 4 shape conversion for in-process plugin hosts that bundle Zod v4.
|
|
3
|
-
*
|
|
4
|
-
* KiloCode (since its inception) and recent OpenCode releases (≥ ~1.14.x)
|
|
5
|
-
* bundle Zod v4 internally. When they receive plugin tool definitions whose
|
|
6
|
-
* `args` contain Zod v3 schemas (with `_def` but no `_zod.def`), they crash
|
|
7
|
-
* with `TypeError: undefined is not an object (evaluating 'n._zod.def')`.
|
|
8
|
-
*
|
|
9
|
-
* This module converts Zod 3 schema shapes into Zod 4 equivalents so both
|
|
10
|
-
* hosts can process them natively.
|
|
11
|
-
*/
|
|
12
|
-
import z from 'zod/v4';
|
|
13
|
-
export function zod3ShapeToV4(shape, depth = 0) {
|
|
14
|
-
const result = {};
|
|
15
|
-
for (const [key, value] of Object.entries(shape)) {
|
|
16
|
-
result[key] = zod3ToV4(value, depth);
|
|
17
|
-
}
|
|
18
|
-
return result;
|
|
19
|
-
}
|
|
20
|
-
function zod3ToV4(v, depth = 0) {
|
|
21
|
-
if (depth > 10)
|
|
22
|
-
return z.unknown();
|
|
23
|
-
if (v == null || typeof v !== "object")
|
|
24
|
-
return z.unknown();
|
|
25
|
-
const obj = v;
|
|
26
|
-
if (!obj._def || typeof obj._def !== "object")
|
|
27
|
-
return z.unknown();
|
|
28
|
-
const def = obj._def;
|
|
29
|
-
let result;
|
|
30
|
-
switch (def.typeName) {
|
|
31
|
-
case "ZodString":
|
|
32
|
-
result = def.coerce === true ? z.coerce.string() : z.string();
|
|
33
|
-
break;
|
|
34
|
-
case "ZodNumber":
|
|
35
|
-
result = def.coerce === true ? z.coerce.number() : z.number();
|
|
36
|
-
break;
|
|
37
|
-
case "ZodBoolean":
|
|
38
|
-
result = def.coerce === true ? z.coerce.boolean() : z.boolean();
|
|
39
|
-
break;
|
|
40
|
-
case "ZodAny":
|
|
41
|
-
result = z.any();
|
|
42
|
-
break;
|
|
43
|
-
case "ZodUnknown":
|
|
44
|
-
result = z.unknown();
|
|
45
|
-
break;
|
|
46
|
-
case "ZodNever":
|
|
47
|
-
result = z.never();
|
|
48
|
-
break;
|
|
49
|
-
case "ZodNull":
|
|
50
|
-
result = z.null();
|
|
51
|
-
break;
|
|
52
|
-
case "ZodUndefined":
|
|
53
|
-
result = z.undefined();
|
|
54
|
-
break;
|
|
55
|
-
case "ZodLiteral":
|
|
56
|
-
result = z.literal(def.value);
|
|
57
|
-
break;
|
|
58
|
-
case "ZodArray":
|
|
59
|
-
result = z.array(zod3ToV4(def.type ?? def.elementType, depth + 1));
|
|
60
|
-
break;
|
|
61
|
-
case "ZodEnum": {
|
|
62
|
-
const values = def.values;
|
|
63
|
-
result = Array.isArray(values) && values.length > 0
|
|
64
|
-
? z.enum(values)
|
|
65
|
-
: z.never();
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
case "ZodObject": {
|
|
69
|
-
const raw = def.shape;
|
|
70
|
-
const inner = typeof raw === "function" ? raw() : raw;
|
|
71
|
-
result = z.object(inner ? zod3ShapeToV4(inner, depth + 1) : {});
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
case "ZodOptional":
|
|
75
|
-
result = z.optional(zod3ToV4(def.innerType ?? def.type, depth + 1));
|
|
76
|
-
break;
|
|
77
|
-
case "ZodNullable":
|
|
78
|
-
result = z.nullable(zod3ToV4(def.innerType ?? def.type, depth + 1));
|
|
79
|
-
break;
|
|
80
|
-
case "ZodDefault": {
|
|
81
|
-
const val = typeof def.defaultValue === "function"
|
|
82
|
-
? def.defaultValue()
|
|
83
|
-
: def.defaultValue;
|
|
84
|
-
result = zod3ToV4(def.innerType ?? def.type, depth + 1).default(val);
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
case "ZodRecord":
|
|
88
|
-
result = z.record(z.string(), zod3ToV4(def.valueType, depth + 1));
|
|
89
|
-
break;
|
|
90
|
-
case "ZodUnion": {
|
|
91
|
-
const opts = def.options;
|
|
92
|
-
if (!opts || opts.length === 0)
|
|
93
|
-
return z.never();
|
|
94
|
-
if (opts.length === 1)
|
|
95
|
-
return zod3ToV4(opts[0], depth + 1);
|
|
96
|
-
result = z.union(opts.map(o => zod3ToV4(o, depth + 1)));
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
case "ZodEffects": {
|
|
100
|
-
// Zod v3 has two patterns for coercion:
|
|
101
|
-
//
|
|
102
|
-
// 1. Native coercion (z.coerce.number()): typeName is ZodNumber
|
|
103
|
-
// with _def.coerce=true. Handled in the ZodNumber case above.
|
|
104
|
-
//
|
|
105
|
-
// 2. Custom preprocess (z.preprocess(fn, schema)): typeName is
|
|
106
|
-
// ZodEffects with effect.type="preprocess". The transform is
|
|
107
|
-
// plain JS and works identically in Zod v4's z.preprocess().
|
|
108
|
-
//
|
|
109
|
-
// We never map ZodEffects→native coerce here because native
|
|
110
|
-
// coerce is already a ZodType (not ZodEffects), and custom
|
|
111
|
-
// transforms can't be safely replaced (e.g., z.coerce.boolean()
|
|
112
|
-
// in v4 converts "false"→true via Boolean(), which is wrong).
|
|
113
|
-
const effect = def.effect;
|
|
114
|
-
if (effect?.type === "preprocess" && typeof effect?.transform === "function") {
|
|
115
|
-
const innerSchema = zod3ToV4(def.schema, depth + 1);
|
|
116
|
-
result = z.preprocess(effect.transform, innerSchema);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
// Refinement / transform effects — host schema only.
|
|
120
|
-
result = zod3ToV4(def.schema, depth + 1);
|
|
121
|
-
}
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
default:
|
|
125
|
-
// Never leak raw Zod 3 schemas back to a v4 host.
|
|
126
|
-
result = z.unknown();
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
return def.description && typeof result.describe === "function"
|
|
130
|
-
? result.describe(String(def.description))
|
|
131
|
-
: result;
|
|
132
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pi coding agent extension for context-mode.
|
|
3
|
-
*
|
|
4
|
-
* Follows the OpenClaw adapter pattern: imports shared session modules,
|
|
5
|
-
* registers Pi-specific hooks. NO copy-paste of session logic.
|
|
6
|
-
* NO external npm dependencies beyond what Pi runtime provides.
|
|
7
|
-
*
|
|
8
|
-
* Entry point: `export default function(pi: ExtensionAPI) { ... }`
|
|
9
|
-
*
|
|
10
|
-
* Lifecycle: session_start, tool_call, tool_result, before_agent_start,
|
|
11
|
-
* session_before_compact, session_compact, session_shutdown.
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Strip heredoc + single-quoted + double-quoted content from a shell command
|
|
15
|
-
* so the routing regex only sees command tokens, not user-provided strings.
|
|
16
|
-
*
|
|
17
|
-
* Mirrors hooks/core/routing.mjs:196–209. Inlined here because the Pi
|
|
18
|
-
* extension is bundled as a standalone build artifact (.pi/extensions/...)
|
|
19
|
-
* and cannot import hooks/core/* at runtime — they live in a sibling tree
|
|
20
|
-
* and may not be present in every Pi installation.
|
|
21
|
-
*
|
|
22
|
-
* Exported for unit tests.
|
|
23
|
-
*/
|
|
24
|
-
export declare function stripQuotedContent(cmd: string): string;
|
|
25
|
-
/**
|
|
26
|
-
* Returns true iff `segment` is a curl/wget invocation that is SAFE to allow
|
|
27
|
-
* through the Pi routing block — i.e. it cannot flood the model's context
|
|
28
|
-
* window because the response body is written to disk (or appended to a file)
|
|
29
|
-
* and no verbose/trace flag is dumping headers to stderr.
|
|
30
|
-
*
|
|
31
|
-
* Mirrors hooks/core/routing.mjs:672–701. Segments that are NOT curl/wget
|
|
32
|
-
* return `true` (nothing to evaluate). The caller is expected to split chained
|
|
33
|
-
* commands on `&&`, `||`, `;` and call this per segment.
|
|
34
|
-
*
|
|
35
|
-
* Issue #625 — without this, the only escape hatch when the MCP bridge dies
|
|
36
|
-
* is `gh` CLI or a full Pi restart. Neither is acceptable as baseline UX.
|
|
37
|
-
*
|
|
38
|
-
* Exported for unit tests.
|
|
39
|
-
*/
|
|
40
|
-
export declare function isSafeCurlWget(segment: string): boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Settles when the MCP bridge bootstrap has finished — resolves on
|
|
43
|
-
* success AND on failure (the bootstrap is best-effort; failures are
|
|
44
|
-
* logged to stderr but never propagated). Exposed for tests so they
|
|
45
|
-
* can `await` the wiring deterministically without relying on internal
|
|
46
|
-
* timing or `setImmediate` polling.
|
|
47
|
-
*
|
|
48
|
-
* Starts as an already-settled promise because the bridge is now bootstrapped
|
|
49
|
-
* lazily from `before_agent_start`, not during extension discovery.
|
|
50
|
-
*/
|
|
51
|
-
export declare let _mcpBridgeReady: Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* Issue #545 — Pi workspace resolver.
|
|
54
|
-
*
|
|
55
|
-
* Pi's runtime sets PI_CONFIG_DIR to ~/.pi (its CONFIG dir, not the user's
|
|
56
|
-
* project). The extension previously used this as the project anchor, which
|
|
57
|
-
* meant every Pi session re-rooted under ~/.pi — collapsing all of a user's
|
|
58
|
-
* projects into a single phantom workspace. This helper picks the user's
|
|
59
|
-
* actual project directory while NEVER returning a path equal to or under
|
|
60
|
-
* ~/.pi/.
|
|
61
|
-
*
|
|
62
|
-
* Cascade:
|
|
63
|
-
* 1. PI_WORKSPACE_DIR — set by Pi's bridge (extension-set, freshest)
|
|
64
|
-
* 2. PI_PROJECT_DIR — legacy/user override
|
|
65
|
-
* 3. PWD — shell-set, survives process.chdir
|
|
66
|
-
* 4. cwd — last resort
|
|
67
|
-
*
|
|
68
|
-
* Each candidate is rejected if it equals ~/.pi or lives under ~/.pi/. If
|
|
69
|
-
* every candidate is poisoned, falls back to homedir() as a safe non-config
|
|
70
|
-
* anchor — caller may still render a "no project context" notice but the
|
|
71
|
-
* function stays total.
|
|
72
|
-
*/
|
|
73
|
-
export declare function resolvePiWorkspaceDir(opts: {
|
|
74
|
-
env: Record<string, string | undefined>;
|
|
75
|
-
pwd: string | undefined;
|
|
76
|
-
cwd: string;
|
|
77
|
-
/** Optional override for tests; defaults to `os.homedir()`. */
|
|
78
|
-
home?: string;
|
|
79
|
-
}): string;
|
|
80
|
-
/** Pi extension default export. Called once by Pi runtime with the extension API. */
|
|
81
|
-
export default function piExtension(pi: any): void;
|