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,61 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import "../suppress-stderr.mjs";
|
|
3
|
-
import "../ensure-deps.mjs";
|
|
4
|
-
/**
|
|
5
|
-
* VS Code Copilot PostToolUse hook — session event capture.
|
|
6
|
-
*
|
|
7
|
-
* Captures session events from tool calls (13 categories) and stores
|
|
8
|
-
* them in the per-project SessionDB for later resume snapshot building.
|
|
9
|
-
*
|
|
10
|
-
* Must be fast (<20ms). No network, no LLM, just SQLite writes.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { createSessionLoaders, attributeAndInsertEvents } from "../session-loaders.mjs";
|
|
14
|
-
import { readStdin, parseStdin, getSessionId, getSessionDBPath, getInputProjectDir, VSCODE_OPTS } from "../session-helpers.mjs";
|
|
15
|
-
import { appendFileSync } from "node:fs";
|
|
16
|
-
import { join, dirname } from "node:path";
|
|
17
|
-
import { fileURLToPath } from "node:url";
|
|
18
|
-
import { homedir } from "node:os";
|
|
19
|
-
|
|
20
|
-
const HOOK_DIR = dirname(fileURLToPath(import.meta.url));
|
|
21
|
-
const { loadSessionDB, loadExtract, loadProjectAttribution } = createSessionLoaders(HOOK_DIR);
|
|
22
|
-
const OPTS = VSCODE_OPTS;
|
|
23
|
-
const DEBUG_LOG = join(homedir(), ".vscode", "context-mode", "posttooluse-debug.log");
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
const raw = await readStdin();
|
|
27
|
-
const input = parseStdin(raw);
|
|
28
|
-
const projectDir = getInputProjectDir(input, OPTS);
|
|
29
|
-
|
|
30
|
-
appendFileSync(DEBUG_LOG, `[${new Date().toISOString()}] CALL: ${input.tool_name}\n`);
|
|
31
|
-
|
|
32
|
-
const { extractEvents } = await loadExtract();
|
|
33
|
-
const { resolveProjectAttributions } = await loadProjectAttribution();
|
|
34
|
-
const { SessionDB } = await loadSessionDB();
|
|
35
|
-
|
|
36
|
-
const dbPath = getSessionDBPath(OPTS, projectDir);
|
|
37
|
-
const db = new SessionDB({ dbPath });
|
|
38
|
-
const sessionId = getSessionId(input, OPTS);
|
|
39
|
-
|
|
40
|
-
db.ensureSession(sessionId, projectDir);
|
|
41
|
-
|
|
42
|
-
const events = extractEvents({
|
|
43
|
-
tool_name: input.tool_name,
|
|
44
|
-
tool_input: input.tool_input ?? {},
|
|
45
|
-
tool_response: typeof input.tool_response === "string"
|
|
46
|
-
? input.tool_response
|
|
47
|
-
: JSON.stringify(input.tool_response ?? ""),
|
|
48
|
-
tool_output: input.tool_output,
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
attributeAndInsertEvents(db, sessionId, events, input, projectDir, "PostToolUse", resolveProjectAttributions);
|
|
52
|
-
|
|
53
|
-
appendFileSync(DEBUG_LOG, `[${new Date().toISOString()}] OK: ${input.tool_name} → ${events.length} events\n`);
|
|
54
|
-
db.close();
|
|
55
|
-
} catch (err) {
|
|
56
|
-
try {
|
|
57
|
-
appendFileSync(DEBUG_LOG, `[${new Date().toISOString()}] ERR: ${err?.message || err}\n`);
|
|
58
|
-
} catch { /* silent */ }
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// PostToolUse — no stdout output
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import "../suppress-stderr.mjs";
|
|
3
|
-
import "../ensure-deps.mjs";
|
|
4
|
-
/**
|
|
5
|
-
* VS Code Copilot PreCompact hook — snapshot generation.
|
|
6
|
-
*
|
|
7
|
-
* Triggered when VS Code Copilot is about to compact the conversation.
|
|
8
|
-
* Reads all captured session events, builds a priority-sorted resume
|
|
9
|
-
* snapshot (<2KB XML), and stores it for injection after compact.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { createSessionLoaders } from "../session-loaders.mjs";
|
|
13
|
-
import { readStdin, parseStdin, getSessionId, getSessionDBPath, getInputProjectDir, VSCODE_OPTS } from "../session-helpers.mjs";
|
|
14
|
-
import { appendFileSync } from "node:fs";
|
|
15
|
-
import { join, dirname } from "node:path";
|
|
16
|
-
import { fileURLToPath } from "node:url";
|
|
17
|
-
import { homedir } from "node:os";
|
|
18
|
-
|
|
19
|
-
const HOOK_DIR = dirname(fileURLToPath(import.meta.url));
|
|
20
|
-
const { loadSessionDB, loadSnapshot } = createSessionLoaders(HOOK_DIR);
|
|
21
|
-
const OPTS = VSCODE_OPTS;
|
|
22
|
-
const DEBUG_LOG = join(homedir(), ".vscode", "context-mode", "precompact-debug.log");
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
const raw = await readStdin();
|
|
26
|
-
const input = parseStdin(raw);
|
|
27
|
-
const projectDir = getInputProjectDir(input, OPTS);
|
|
28
|
-
|
|
29
|
-
const { buildResumeSnapshot } = await loadSnapshot();
|
|
30
|
-
const { SessionDB } = await loadSessionDB();
|
|
31
|
-
|
|
32
|
-
const dbPath = getSessionDBPath(OPTS, projectDir);
|
|
33
|
-
const db = new SessionDB({ dbPath });
|
|
34
|
-
const sessionId = getSessionId(input, OPTS);
|
|
35
|
-
|
|
36
|
-
const events = db.getEvents(sessionId);
|
|
37
|
-
|
|
38
|
-
if (events.length > 0) {
|
|
39
|
-
const stats = db.getSessionStats(sessionId);
|
|
40
|
-
const snapshot = buildResumeSnapshot(events, {
|
|
41
|
-
compactCount: (stats?.compact_count ?? 0) + 1,
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
db.upsertResume(sessionId, snapshot, events.length);
|
|
45
|
-
db.incrementCompactCount(sessionId);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
db.close();
|
|
49
|
-
} catch (err) {
|
|
50
|
-
try {
|
|
51
|
-
appendFileSync(DEBUG_LOG, `[${new Date().toISOString()}] ${err?.message || err}\n`);
|
|
52
|
-
} catch { /* silent */ }
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// PreCompact — no stdout output needed
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import "../suppress-stderr.mjs";
|
|
3
|
-
/**
|
|
4
|
-
* VS Code Copilot PreToolUse hook for context-mode
|
|
5
|
-
* Thin wrapper — uses shared routing core, no self-heal, no Claude Code-specific logic.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { dirname, resolve } from "node:path";
|
|
9
|
-
import { fileURLToPath } from "node:url";
|
|
10
|
-
import { readStdin } from "../core/stdin.mjs";
|
|
11
|
-
import { routePreToolUse, initSecurity } from "../core/routing.mjs";
|
|
12
|
-
import { formatDecision } from "../core/formatters.mjs";
|
|
13
|
-
import { parseStdin, getSessionId, VSCODE_OPTS } from "../session-helpers.mjs";
|
|
14
|
-
|
|
15
|
-
const __hookDir = dirname(fileURLToPath(import.meta.url));
|
|
16
|
-
await initSecurity(resolve(__hookDir, "..", "..", "build"));
|
|
17
|
-
|
|
18
|
-
const raw = await readStdin();
|
|
19
|
-
const input = parseStdin(raw);
|
|
20
|
-
const tool = input.tool_name ?? "";
|
|
21
|
-
const toolInput = input.tool_input ?? {};
|
|
22
|
-
|
|
23
|
-
const decision = routePreToolUse(tool, toolInput, process.env.VSCODE_CWD || process.env.CLAUDE_PROJECT_DIR, "vscode-copilot", getSessionId(input, VSCODE_OPTS));
|
|
24
|
-
const response = formatDecision("vscode-copilot", decision);
|
|
25
|
-
if (response !== null) {
|
|
26
|
-
process.stdout.write(JSON.stringify(response) + "\n");
|
|
27
|
-
}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import "../suppress-stderr.mjs";
|
|
3
|
-
import "../ensure-deps.mjs";
|
|
4
|
-
/**
|
|
5
|
-
* VS Code Copilot SessionStart hook for context-mode (v1.0.107)
|
|
6
|
-
*
|
|
7
|
-
* Created to close the v1.0.107 audit-flagged path bug: hooks.ts:98
|
|
8
|
-
* was resolving SessionStart to the Claude-Code generic top-level
|
|
9
|
-
* `hooks/sessionstart.mjs`. With the fix, the path now resolves
|
|
10
|
-
* to this file. Mirrors the JetBrains Copilot hook (same shape,
|
|
11
|
-
* same Microsoft Copilot wire contract).
|
|
12
|
-
*
|
|
13
|
-
* Session lifecycle management:
|
|
14
|
-
* - "startup" → Cleanup old sessions, capture .github/copilot-instructions.md as rule events
|
|
15
|
-
* - "compact" → Write events file, inject session knowledge directive
|
|
16
|
-
* - "resume" → Load previous session events, inject directive
|
|
17
|
-
* - "clear" → No action needed
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
import { createSessionLoaders } from "../session-loaders.mjs";
|
|
21
|
-
import { createRoutingBlock } from "../routing-block.mjs";
|
|
22
|
-
import { createToolNamer } from "../core/tool-naming.mjs";
|
|
23
|
-
|
|
24
|
-
const toolNamer = createToolNamer("vscode-copilot");
|
|
25
|
-
const ROUTING_BLOCK = createRoutingBlock(toolNamer);
|
|
26
|
-
import { writeSessionEventsFile, buildSessionDirective, getSessionEvents } from "../session-directive.mjs";
|
|
27
|
-
import {
|
|
28
|
-
readStdin, parseStdin, getSessionId, getSessionDBPath, getSessionEventsPath, getCleanupFlagPath,
|
|
29
|
-
getInputProjectDir, VSCODE_OPTS,
|
|
30
|
-
} from "../session-helpers.mjs";
|
|
31
|
-
import { join } from "node:path";
|
|
32
|
-
import { readFileSync, unlinkSync } from "node:fs";
|
|
33
|
-
import { fileURLToPath } from "node:url";
|
|
34
|
-
|
|
35
|
-
const HOOK_DIR = fileURLToPath(new URL(".", import.meta.url));
|
|
36
|
-
const { loadSessionDB } = createSessionLoaders(HOOK_DIR);
|
|
37
|
-
const OPTS = VSCODE_OPTS;
|
|
38
|
-
|
|
39
|
-
let additionalContext = ROUTING_BLOCK;
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
const raw = await readStdin();
|
|
43
|
-
const input = parseStdin(raw);
|
|
44
|
-
const source = input.source ?? "startup";
|
|
45
|
-
const projectDir = getInputProjectDir(input, OPTS);
|
|
46
|
-
|
|
47
|
-
if (source === "compact") {
|
|
48
|
-
const { SessionDB } = await loadSessionDB();
|
|
49
|
-
const dbPath = getSessionDBPath(OPTS, projectDir);
|
|
50
|
-
const db = new SessionDB({ dbPath });
|
|
51
|
-
const sessionId = getSessionId(input, OPTS);
|
|
52
|
-
const resume = db.getResume(sessionId);
|
|
53
|
-
|
|
54
|
-
if (resume && !resume.consumed) {
|
|
55
|
-
db.markResumeConsumed(sessionId);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const events = getSessionEvents(db, sessionId);
|
|
59
|
-
if (events.length > 0) {
|
|
60
|
-
const eventMeta = writeSessionEventsFile(events, getSessionEventsPath(OPTS, projectDir));
|
|
61
|
-
additionalContext += buildSessionDirective("compact", eventMeta, toolNamer);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
db.close();
|
|
65
|
-
} else if (source === "resume") {
|
|
66
|
-
try { unlinkSync(getCleanupFlagPath(OPTS, projectDir)); } catch { /* no flag */ }
|
|
67
|
-
|
|
68
|
-
const { SessionDB } = await loadSessionDB();
|
|
69
|
-
const dbPath = getSessionDBPath(OPTS, projectDir);
|
|
70
|
-
const db = new SessionDB({ dbPath });
|
|
71
|
-
|
|
72
|
-
// Filter events to the session being resumed (cross-session bleed guard).
|
|
73
|
-
const sessionId = getSessionId(input, OPTS);
|
|
74
|
-
const events = sessionId ? getSessionEvents(db, sessionId) : [];
|
|
75
|
-
if (events.length > 0) {
|
|
76
|
-
const eventMeta = writeSessionEventsFile(events, getSessionEventsPath(OPTS, projectDir));
|
|
77
|
-
additionalContext += buildSessionDirective("resume", eventMeta, toolNamer);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
db.close();
|
|
81
|
-
} else if (source === "startup") {
|
|
82
|
-
const { SessionDB } = await loadSessionDB();
|
|
83
|
-
const dbPath = getSessionDBPath(OPTS, projectDir);
|
|
84
|
-
const db = new SessionDB({ dbPath });
|
|
85
|
-
try { unlinkSync(getSessionEventsPath(OPTS, projectDir)); } catch { /* no stale file */ }
|
|
86
|
-
|
|
87
|
-
db.cleanupOldSessions(7);
|
|
88
|
-
db.db.exec(`DELETE FROM session_events WHERE session_id NOT IN (SELECT session_id FROM session_meta)`);
|
|
89
|
-
|
|
90
|
-
const sessionId = getSessionId(input, OPTS);
|
|
91
|
-
db.ensureSession(sessionId, projectDir);
|
|
92
|
-
|
|
93
|
-
// VSCode Copilot's canonical project-level instruction file.
|
|
94
|
-
// Captured as rule_content events so they survive compact and become
|
|
95
|
-
// searchable via ctx_search() — same pattern as Claude Code captures CLAUDE.md.
|
|
96
|
-
const ruleFilePaths = [
|
|
97
|
-
join(projectDir, ".github", "copilot-instructions.md"),
|
|
98
|
-
];
|
|
99
|
-
for (const p of ruleFilePaths) {
|
|
100
|
-
try {
|
|
101
|
-
const content = readFileSync(p, "utf-8");
|
|
102
|
-
if (content.trim()) {
|
|
103
|
-
db.insertEvent(sessionId, { type: "rule", category: "rule", data: p, priority: 1 });
|
|
104
|
-
db.insertEvent(sessionId, { type: "rule_content", category: "rule", data: content, priority: 1 });
|
|
105
|
-
}
|
|
106
|
-
} catch { /* file doesn't exist — skip */ }
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
db.close();
|
|
110
|
-
}
|
|
111
|
-
// "clear" — no action needed
|
|
112
|
-
} catch (err) {
|
|
113
|
-
try {
|
|
114
|
-
const { appendFileSync } = await import("node:fs");
|
|
115
|
-
const { join: pjoin } = await import("node:path");
|
|
116
|
-
const { homedir: hd } = await import("node:os");
|
|
117
|
-
appendFileSync(
|
|
118
|
-
pjoin(hd(), ".vscode", "context-mode", "sessionstart-debug.log"),
|
|
119
|
-
`[${new Date().toISOString()}] ${err?.message || err}\n${err?.stack || ""}\n`,
|
|
120
|
-
);
|
|
121
|
-
} catch { /* ignore logging failure */ }
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
console.log(JSON.stringify({
|
|
125
|
-
hookSpecificOutput: {
|
|
126
|
-
hookEventName: "SessionStart",
|
|
127
|
-
additionalContext,
|
|
128
|
-
},
|
|
129
|
-
}));
|
package/openclaw.plugin.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "context-mode",
|
|
3
|
-
"name": "Context Mode",
|
|
4
|
-
"kind": "tool",
|
|
5
|
-
"description": "OpenClaw plugin that saves 98% of your context window. Sandboxed code execution in 11 languages, FTS5 knowledge base with BM25 ranking, and intent-driven search.",
|
|
6
|
-
"version": "1.0.169",
|
|
7
|
-
"sandbox": {
|
|
8
|
-
"mode": "permissive",
|
|
9
|
-
"filesystem_access": "full",
|
|
10
|
-
"system_access": "full"
|
|
11
|
-
},
|
|
12
|
-
"contracts": {
|
|
13
|
-
"tools": [
|
|
14
|
-
"ctx_execute",
|
|
15
|
-
"ctx_execute_file",
|
|
16
|
-
"ctx_index",
|
|
17
|
-
"ctx_search",
|
|
18
|
-
"ctx_fetch_and_index",
|
|
19
|
-
"ctx_batch_execute",
|
|
20
|
-
"ctx_stats",
|
|
21
|
-
"ctx_doctor",
|
|
22
|
-
"ctx_upgrade",
|
|
23
|
-
"ctx_purge",
|
|
24
|
-
"ctx_insight"
|
|
25
|
-
]
|
|
26
|
-
},
|
|
27
|
-
"configSchema": {
|
|
28
|
-
"type": "object",
|
|
29
|
-
"properties": {
|
|
30
|
-
"enabled": {
|
|
31
|
-
"type": "boolean",
|
|
32
|
-
"default": true,
|
|
33
|
-
"description": "Enable or disable the context-mode plugin."
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"additionalProperties": false
|
|
37
|
-
}
|
|
38
|
-
}
|