8aaa62c794
* feat(session-export): scaffold module with config constants * feat(session-export): add zstd compression wrapper * feat(session-export): event and envelope type definitions * feat(session-export): eligibility check with kill-switch * feat(session-export): org signal collector with auth resolver * feat(session-export): worker SQLite schema and storage helpers * feat(session-export): content-addressed chunker with zstd dedup * feat(session-export): client-side light scrubber * feat(session-export): IPC contract and inbox with back-pressure * feat(session-export): persist scrubbed events with chunked payloads * feat(session-export): worker entry point with inbox drain loop * feat(session-export): main-thread capture module * feat(session-export): workspace baseline and delta fibers * feat(session-export): sync subscriber and tool io chunking * feat(session-export): bootstrap wiring and compaction hook * feat(session-export): wire capture hooks into sessions * feat(session-export): uploader and buffer cap * chore(session-export): annotate shared session hooks * changeset(session-export): add release note * fix(session-export): keep bootstrap non-blocking without instance context * feat(session-export): respawn worker after failures * test(session-export): add performance budget assertions * test(session-export): add worker end-to-end smoke test * fix(session-export): strip identity and high-risk baseline paths * test(session-export): gate perf assertions for stable sweeps * fix(session-export): bundle worker in single-file builds * fix(session-export): make capture envelopes cloneable * fix(session-export): drain worker on CLI shutdown * feat(session-export): capture workspace baseline and deltas * fix(session-export): preserve request metadata * test(session-export): cover request metadata capture * feat(cli): send indexed session export batches * feat(cli): authorize session export uploads * fix(cli): flush session export shutdown uploads * feat(cli): optimize session export replay payloads * fix(cli): include session export surface metadata * fix(session-export): decrement chunk refs after upload decRefChunks was never called, so chunk ref_count stayed at 1 (or higher with dedup) and DELETE FROM chunk WHERE ref_count <= 0 never matched. Chunks accumulated in the local SQLite buffer until the 50 GB cap. Call decRefChunks alongside markUploaded so deleteUploaded can reclaim the rows. * fix(session-export): add periodic uploader flush timer flushIntervalMs and retryBackoffMaxMs were both defined in config and neither was referenced anywhere; scheduleFlush only ran on inbound events or reconnect. After a 5xx or network failure the row was backed off for 1 s, but if no further event arrived the retry never fired and the events stranded until the CLI restarted. Drive a periodic flush from a setInterval, unref the handle so it doesn't pin the process, and clear it from a new dispose() hook the worker calls on shutdown. * fix(session-export): stop emitting absolute workspace root in baseline CaptureMetadata.root was the literal absolute filesystem path (/Users/<name>/Projects/<repo>), shipped in every workspace_baseline_completed event and not stripped by handlers' identity filter. The field was set but never read anywhere downstream — file paths in the baseline are already relative, so the root added no replay signal. Remove the field outright. * fix(session-export): cap pendingEvents result set The SELECT had no LIMIT clause, so under a backlog (network outage, crashed receiver) it would materialize the full pending table into a JavaScript array before the byte-limit truncation applied. With a 50 GB buffer cap that is hundreds of MB of heap inside the worker per drain. Add LIMIT 500 — the drain loop already re-queries until empty, so no events are missed. * fix(session-export): exponential retry backoff up to retryBackoffMaxMs Both the 5xx and network-error branches always retried after the floor delay regardless of how many attempts had already failed, and retryBackoffMaxMs was unreferenced. During a sustained outage every session re-tried at roughly 1 Hz against the dead receiver. Surface upload_attempts on EventRow and compute the next delay as min * 2^attempts capped at max. * fix(session-export): evict superseded workspace snapshots on remember createWorkspaceProvider retained every captured snapshot — in-memory and inside the persisted state file — even after the session moved on to a newer one. For a 1k-file repo over a 100-turn session that is ~2 GB of unreachable heap plus a state file that grows monotonically. Drop the previous snapshot for the session on remember() when no other session still references it. * fix(session-export): anchor aws_secret_key scrubber to key name The bare 40-char base64 pattern matched every 40-character hex string, including all git commit SHAs. Tool outputs, diffs, and conversation messages were silently rewritten as <<REDACTED:aws_secret_key>>, destroying lineage information in training data. Require the key name context — naked secrets in unstructured text are rare and the .env / .aws/credentials high-risk path strip already covers the common case. * fix(session-export): preserve root linkage in SyncSubscriber events SyncSubscriber hardcoded rootSessionId = sessionId on every tool, permission, and feedback event, so sub-agent sessions lost their root linkage and a future training pipeline could not reconstruct the agent topology from these side-channel events. Expose the rootSessionId mapping from Capture and plumb it through the same pattern as getTurnId. * fix(session-export): atomic chunk GC after upload markUploaded + decRefChunks + deleteUploaded were three separate SQL statements; a crash between markUploaded and decRefChunks would leave events flagged uploaded (never retried) and chunks with stale ref_count (never reclaimed by deleteUploaded). Bundle the three calls into a single transactional commitUploaded helper so either all three land or none of them do. * fix(session-export): wait on transient sqlite locks * fix(session-export): snapshot current workspace directory * fix(cli): preserve Kilo model export metadata * fix(cli): send anon id for session export * fix(cli): fallback to telemetry anon id * chore(cli): annotate session export config test * chore: remove session export docs * fix(cli): harden session export uploads * fix(cli): preserve stream lifecycle for session export * fix(kilo-docs): exclude session export ingest link * fix(cli): restrict session export workspace sync to git repos * chore: remove session export changeset * fix(cli): tighten session export payload types * fix(cli): type session export model payloads * fix(cli): simplify session export cleanup * fix(cli): avoid session export shutdown race * refactor(cli): use drizzle for session export storage * fix(cli): finalize session export sqlite statements * fix(cli): link compaction exports to root sessions * fix(cli): stop exporting raw stream parts * fix(cli): prune stale workspace snapshots * refactor(cli): clarify chunk ref counting * test(cli): clarify dropped upload assertions * ci: avoid visual path filter action failure * fix(cli): preserve in-flight workspace snapshots * fix(cli): stop uploading baseline start events * fix(cli): trim redundant export metadata * fix(cli): trim workspace export bookkeeping * fix(cli): fold terminal outcome into tool exports * fix(cli): dedupe request context in export batches * fix(cli): normalize compaction export payloads * fix(cli): avoid duplicate tool result exports * test(cli): align session export expectations * fix(cli): run secretlint during session export scrubbing * fix(cli): keep retried export batches contiguous * fix(cli): include agent info in session exports * fix(cli): flush pending session exports on serve startup * fix(cli): drop exports when scrubbing fails * fix(cli): narrow secretlint value extraction * fix(cli): limit exported agent info * test(cli): remove brittle agent export source assertion * fix(cli): ignore corrupt session export workspace state * fix(cli): keep session export close best effort * fix(cli): avoid following session export symlinks * fix(cli): preserve session export chunk ref counts * fix(cli): retry transient session export uploads * fix(cli): validate session export ingest endpoint * fix(cli): tolerate missing export token details * fix(cli): fail closed on session export org lookup * fix(cli): decode session export permission replies * fix(cli): finalize session export on stream close * fix(cli): bound session export baseline timeout * fix(cli): avoid persisting workspace file contents * fix(cli): bound workspace snapshot capture * fix(cli): validate session export worker messages * fix(cli): revoke stale session export eligibility * fix(cli): scope session export workspaces * fix(cli): extend session export shutdown flush * fix(cli): infer free Kilo models for export * fix(cli): avoid duplicate chunk refs * fix(cli): throttle session export uploads * fix(cli): harden session export capture * feat: disclose free model data collection (#10767) * feat: disclose free model data collection * chore(cli): document free model footer sorting * fix(vscode): add free model data translations * fix: simplify free model data label * fix: simplify data collection badges * fix: remove duplicate model info disclosure * fix: restore composer data tooltip * fix: align jetbrains data collection indicator * fix: align free model data indicators * fix(vscode): show data collection in model preview * fix: limit data indicators to kilo gateway * test(cli): relax prompt cancel timeout * test(cli): annotate prompt cancel timeout * test(cli): classify prompt queue runtime test * fix(cli): defer session export startup
203 lines
6.7 KiB
JSON
203 lines
6.7 KiB
JSON
{
|
|
"$schema": "https://json.schemastore.org/package.json",
|
|
"version": "7.3.22",
|
|
"name": "@kilocode/cli",
|
|
"type": "module",
|
|
"license": "MIT",
|
|
"private": true,
|
|
"scripts": {
|
|
"typecheck": "tsgo --noEmit",
|
|
"test": "bun run script/test-runner.ts",
|
|
"test:ci": "bun run script/test-runner.ts --ci",
|
|
"test:httpapi": "bun run script/httpapi-exercise.ts --mode coverage --fail-on-missing --fail-on-skip && bun run script/httpapi-exercise.ts --mode auth --fail-on-missing --fail-on-skip && bun run script/httpapi-exercise.ts --mode effect --fail-on-missing --fail-on-skip",
|
|
"build": "bun run script/build.ts",
|
|
"fix-node-pty": "bun run script/fix-node-pty.ts",
|
|
"dev": "bun run --conditions=browser ./src/index.ts",
|
|
"dev:temporary": "bun run --conditions=browser ./src/temporary.ts",
|
|
"db": "bun drizzle-kit"
|
|
},
|
|
"bin": {
|
|
"kilo": "./bin/kilo",
|
|
"kilocode": "./bin/kilo"
|
|
},
|
|
"exports": {
|
|
"./*": "./src/*.ts"
|
|
},
|
|
"imports": {
|
|
"#db": {
|
|
"bun": "./src/storage/db.bun.ts",
|
|
"node": "./src/storage/db.node.ts",
|
|
"default": "./src/storage/db.bun.ts"
|
|
},
|
|
"#pty": {
|
|
"bun": "./src/pty/pty.bun.ts",
|
|
"node": "./src/pty/pty.node.ts",
|
|
"default": "./src/pty/pty.bun.ts"
|
|
},
|
|
"#httpapi-server": {
|
|
"bun": "./src/server/httpapi-server.node.ts",
|
|
"node": "./src/server/httpapi-server.node.ts",
|
|
"default": "./src/server/httpapi-server.node.ts"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "7.28.4",
|
|
"@effect/language-service": "0.84.2",
|
|
"@octokit/webhooks-types": "7.6.1",
|
|
"@opencode-ai/script": "workspace:*",
|
|
"@opencode-ai/core": "workspace:*",
|
|
"@parcel/watcher-darwin-arm64": "2.5.1",
|
|
"@parcel/watcher-darwin-x64": "2.5.1",
|
|
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
|
|
"@parcel/watcher-linux-arm64-musl": "2.5.1",
|
|
"@parcel/watcher-linux-x64-glibc": "2.5.1",
|
|
"@parcel/watcher-linux-x64-musl": "2.5.1",
|
|
"@parcel/watcher-win32-arm64": "2.5.1",
|
|
"@parcel/watcher-win32-x64": "2.5.1",
|
|
"@standard-schema/spec": "1.0.0",
|
|
"@tsconfig/bun": "catalog:",
|
|
"@types/babel__core": "7.20.5",
|
|
"@types/bun": "catalog:",
|
|
"@types/cross-spawn": "catalog:",
|
|
"@types/mime-types": "3.0.1",
|
|
"@types/npm-package-arg": "6.1.4",
|
|
"@types/semver": "^7.5.8",
|
|
"@types/turndown": "5.0.5",
|
|
"@types/which": "3.0.4",
|
|
"@types/yargs": "17.0.33",
|
|
"@typescript/native-preview": "catalog:",
|
|
"drizzle-kit": "catalog:",
|
|
"drizzle-orm": "catalog:",
|
|
"prettier": "3.6.2",
|
|
"typescript": "catalog:",
|
|
"vscode-languageserver-types": "3.17.5",
|
|
"why-is-node-running": "3.2.2",
|
|
"zod-to-json-schema": "3.24.5",
|
|
"@types/npmcli__arborist": "6.3.3"
|
|
},
|
|
"dependencies": {
|
|
"@actions/core": "1.11.1",
|
|
"@actions/github": "6.0.1",
|
|
"@agentclientprotocol/sdk": "0.21.0",
|
|
"@ai-sdk/alibaba": "1.0.17",
|
|
"@ai-sdk/amazon-bedrock": "4.0.96",
|
|
"@ai-sdk/anthropic": "3.0.71",
|
|
"@ai-sdk/azure": "3.0.49",
|
|
"@ai-sdk/cerebras": "2.0.41",
|
|
"@ai-sdk/cohere": "3.0.27",
|
|
"@ai-sdk/deepinfra": "2.0.41",
|
|
"@ai-sdk/gateway": "3.0.104",
|
|
"@ai-sdk/google": "3.0.63",
|
|
"@ai-sdk/google-vertex": "4.0.112",
|
|
"@ai-sdk/groq": "3.0.31",
|
|
"@ai-sdk/mistral": "3.0.27",
|
|
"@ai-sdk/openai": "3.0.53",
|
|
"@ai-sdk/openai-compatible": "2.0.41",
|
|
"@ai-sdk/perplexity": "3.0.26",
|
|
"@ai-sdk/provider": "3.0.8",
|
|
"@ai-sdk/provider-utils": "4.0.23",
|
|
"@ai-sdk/togetherai": "2.0.41",
|
|
"@ai-sdk/vercel": "2.0.39",
|
|
"@ai-sdk/xai": "3.0.82",
|
|
"@aws-sdk/credential-providers": "3.1025.0",
|
|
"@clack/prompts": "1.0.0-alpha.1",
|
|
"@effect/opentelemetry": "catalog:",
|
|
"@effect/platform-node": "catalog:",
|
|
"@gitlab/gitlab-ai-provider": "3.6.0",
|
|
"@gitlab/opencode-gitlab-auth": "1.3.3",
|
|
"@hono/node-server": "1.19.13",
|
|
"@hono/node-ws": "1.3.0",
|
|
"@hono/standard-validator": "0.1.5",
|
|
"@hono/zod-validator": "catalog:",
|
|
"@kilocode/kilo-gateway": "workspace:*",
|
|
"@kilocode/kilo-indexing": "workspace:*",
|
|
"@kilocode/kilo-telemetry": "workspace:*",
|
|
"@kilocode/plugin": "workspace:*",
|
|
"@kilocode/sdk": "workspace:*",
|
|
"@lydell/node-pty": "catalog:",
|
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
"@morphllm/morphsdk": "0.2.166",
|
|
"@npmcli/arborist": "9.4.0",
|
|
"@npmcli/config": "10.8.1",
|
|
"@octokit/graphql": "9.0.2",
|
|
"@octokit/rest": "catalog:",
|
|
"@openauthjs/openauth": "catalog:",
|
|
"@opencode-ai/script": "workspace:*",
|
|
"@openrouter/ai-sdk-provider": "2.8.1",
|
|
"@opentelemetry/api": "1.9.0",
|
|
"@opentelemetry/context-async-hooks": "2.6.1",
|
|
"@opentelemetry/exporter-trace-otlp-http": "0.214.0",
|
|
"@opentelemetry/sdk-trace-base": "2.6.1",
|
|
"@opentelemetry/sdk-trace-node": "2.6.1",
|
|
"@opentui/core": "catalog:",
|
|
"@opentui/keymap": "catalog:",
|
|
"@opentui/solid": "catalog:",
|
|
"@parcel/watcher": "2.5.1",
|
|
"@pierre/diffs": "catalog:",
|
|
"@secretlint/core": "10.2.2",
|
|
"@secretlint/secretlint-rule-preset-recommend": "10.2.2",
|
|
"@solid-primitives/event-bus": "1.1.2",
|
|
"@solid-primitives/scheduled": "1.5.2",
|
|
"@standard-schema/spec": "1.0.0",
|
|
"@zip.js/zip.js": "2.7.62",
|
|
"ai": "catalog:",
|
|
"ai-gateway-provider": "3.1.2",
|
|
"bonjour-service": "1.3.0",
|
|
"bun-pty": "0.4.8",
|
|
"chardet": "2.1.1",
|
|
"chokidar": "4.0.3",
|
|
"cli-sound": "1.1.3",
|
|
"clipboardy": "4.0.0",
|
|
"cross-spawn": "catalog:",
|
|
"decimal.js": "10.5.0",
|
|
"diff": "catalog:",
|
|
"drizzle-orm": "catalog:",
|
|
"effect": "catalog:",
|
|
"fuzzysort": "3.1.0",
|
|
"gitlab-ai-provider": "6.6.0",
|
|
"glob": "13.0.5",
|
|
"google-auth-library": "10.5.0",
|
|
"gray-matter": "4.0.3",
|
|
"hono": "catalog:",
|
|
"hono-openapi": "catalog:",
|
|
"iconv-lite": "0.7.2",
|
|
"ignore": "7.0.5",
|
|
"immer": "11.1.4",
|
|
"jsonc-parser": "3.3.1",
|
|
"mammoth": "1.12.0",
|
|
"mime-types": "3.0.2",
|
|
"minimatch": "10.2.5",
|
|
"npm-package-arg": "13.0.2",
|
|
"open": "10.1.2",
|
|
"opencode-gitlab-auth": "2.0.1",
|
|
"opencode-poe-auth": "0.0.1",
|
|
"opentui-spinner": "catalog:",
|
|
"partial-json": "0.1.7",
|
|
"remeda": "catalog:",
|
|
"ripgrep": "0.3.1",
|
|
"rotating-file-stream": "3.2.9",
|
|
"semver": "^7.6.3",
|
|
"simple-git": "3.36.0",
|
|
"solid-js": "catalog:",
|
|
"strip-ansi": "7.1.2",
|
|
"tree-sitter-bash": "0.25.0",
|
|
"tree-sitter-powershell": "0.25.10",
|
|
"tree-sitter-wasms": "^0.1.12",
|
|
"turndown": "7.2.0",
|
|
"ulid": "catalog:",
|
|
"venice-ai-sdk-provider": "2.0.1",
|
|
"vscode-jsonrpc": "8.2.1",
|
|
"web-tree-sitter": "0.25.10",
|
|
"which": "6.0.1",
|
|
"xdg-basedir": "5.1.0",
|
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
|
|
"yargs": "18.0.0",
|
|
"zod": "catalog:",
|
|
"zod-to-json-schema": "3.24.5"
|
|
},
|
|
"overrides": {
|
|
"drizzle-orm": "catalog:"
|
|
},
|
|
"peerDependencies": {}
|
|
}
|