Add session messages and repo info caching to avoid repeated JSONL
parsing and git subprocess spawning across tasks.
Share state across all tasks in a single batch to minimize file lock
contention and JSON parse overhead.
Convert queue operations from sync to async to prevent event loop
blocking in the main process.
Restore inline batch worker fallback when external spawn fails,
and increase worker interval from 30s to 2min to reduce CPU impact.
Add 5s debounce per session+messageID to prevent duplicate enqueues.
Improve binary mode spawn reliability by falling back to node runtime
when bun is not available.
Signed-off-by: 林凯90331 <90331@sangfor.com>
Co-authored-by: CoStrict <zgsm@sangfor.com.cn>
Implement the raw dump data reporting module for uploading conversation,
summary, and commit data to the CoStrict endpoint.
Key features:
- Local dump mode for debugging without network
- PID-based file locking to prevent state corruption with multiple csc instances
- 5-minute deduplication window for summary uploads
- Auto-detect sender (user/agent) and conditional user_input
- Repository fields (repo_addr, repo_branch, work_dir) in conversation
- Anonymous interface fallback when auth fails
- Filter commits to current user and limit fetch range
- Skip empty intermediate conversation turns
- Fix worker spawning for build and binary modes
- Remove git diff HEAD fallback to avoid unrelated working tree changes
Signed-off-by: 林凯90331 <90331@sangfor.com>
Co-authored-by: CoStrict <zgsm@sangfor.com.cn>
Remove embedded files, use Skill tool to load review/security-review
skill instead, matching the same mechanism as /review.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
All review commands now exclusively use extract-to-disk + skill scanner,
no registerBundledSkill duplication.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Remove registerBundledSkill for /review and /security-review since
extract-to-disk + skill scanner already registers them. Only register
/strict:review and /strict:security-review via bundled skill.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Set disableModelInvocation to false so the model can use the Skill tool
to load review/security-review skills as instructed by locale templates.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Remove context:'fork' from strict variants, all four commands now
execute inline in the main session.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace indirect Skill-tool-based routing with direct bundled skill
registration using SKILL_FILES, matching /strict:review approach.
- reviewSkills.ts registers all four commands (review, security-review,
strict:review, strict:security-review) with embedded files
- Remove review command from commands.ts (now bundled skill)
- Simplify review.ts to only export ultrareview
- Update mcp.ts to get review command from bundled skills
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The session.created event only had session_id and status, causing
downstream adapters to produce empty time objects and new sessions
landing in the 'older' group.
Add strictReview.ts to register strict review variants as bundled skills
with context:'fork' (sub-agent mode), using SKILL_FILES and CommandLocale.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add fallback in readSessionMessages() to locate subagent transcript files under <project>/<session>/subagents/agent-<id>.jsonl when the sessionId is actually an agentId. Extract entryToSessionMessage and readMessagesFromLines helpers for reuse between main and subagent transcripts.
Also route 'system' messages through the 'message' event in sessionMessageRouter so subscribers can observe them.
Signed-off-by: 林凯90331 <90331@sangfor.com>
Co-authored-by: CoStrict <zgsm@sangfor.com.cn>
Restore files to match the verified commit state:
- generate-review-builtin.ts: skill-only generation, SSH clone, optimize/agent-prompts branch
- extension.ts: listBuiltinSkillNames, getClaudeConfigHomeDir approach
- lang.ts: re-extract review skills on language switch
- locales: use Skill tool prompt format
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Revert PR #43 agent-based code that was brought in during the main merge:
- Remove generateBuiltinAgents and all agent-related logic from generate script
- Delete src/costrict/review/agent/ directory
- Delete src/commands/security-review.ts (handled by bundled skill)
- Restore PR #64 extension.ts with getClaudeConfigHomeDir approach
- Remove REVIEW_AGENTS from builtInAgents.ts
- Keep review command (needed for MCP entry), but use CommandLocale instead of agent
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When /lang is used to switch language, immediately re-extract review
skills for the new locale and refresh skill caches so changes take
effect without restart.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add 'Skill' to allowedTools so model can invoke Skill tool to load
review/security-review SKILL.md content
- Restore src/costrict/command/locales/ with zh-CN/en templates telling
model to use Skill tool (aligns with opencode PR #360 approach)
- Remove model: 'inherit' from review registration (was resolving to
wrong model, strict:plan works without it)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Merge strict:review/strict:security-review into reviewSkills.ts (single
file registers all four commands: /review, /security-review,
/strict:review, /strict:security-review)
- Remove conflicting prompt commands from src/commands/ (review.ts,
security-review.ts) so bundled skills take precedence
- Remove REVIEW_AGENTS import from builtInAgents.ts and mcp.ts
- Remove agent generation logic from generate-review-builtin.ts
- Configure allowedTools and model: 'inherit' per claudecode spec
- Switch test branch to optimize/agent-prompts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Invert the enablement logic so raw dump is disabled unless
CSC_DISABLE_RAW_DUMP or COSTRICT_DISABLE_RAW_DUMP is explicitly
set to 0 or false.
Signed-off-by: 林凯90331 <90331@sangfor.com>
Co-authored-by: CoStrict <zgsm@sangfor.com.cn>
Include commit short hash and formatted build timestamp in the
version string, matching the output format of cs --version.
Signed-off-by: 林凯90331 <90331@sangfor.com>
Co-authored-by: CoStrict <zgsm@sangfor.com.cn>
Replace custom extension.ts initialization and agent-based routing with
csc's built-in registerBundledSkill({ files }) mechanism. Review and
security-review skills are now registered with embedded files that
get lazily extracted to disk on first invocation. Locale is resolved
at startup via getResolvedLanguage().
- Remove agent generation from generate-review-builtin.ts (skill-only)
- Remove extension.ts, REVIEW_AGENTS registration, strict:* skills
- Add reviewSkills.ts with registerReviewSkills() for unified registration
- Adapt to new costrict-review index.json format (skills-only, new paths)
- Remove src/costrict/command/locales/ (no longer needed)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- emit opencode-compatible SSE events for questions and permissions
(flat shape with top-level session_id for wrapEventStream routing)
- adapt question API (/question, /question/:id/reply, /question/:id/reject)
for AskUserQuestion and elicitation workflows
- fix AskUserQuestion tool name matching and guard against double-wrapped events
- allow requiresUserInteraction tools to ask user even in bypassPermissions mode
- avoid blocking on session init to prevent cold-start timeout
- add /global/event SSE endpoint and cwdFilter support
- add question routes and session handle tests
Co-authored-by: CoStrict <zgsm@sangfor.com.cn>
- Add in-process isRunning flag to block reentrant runBatch (file lock
fails when pid === process.pid)
- Replace setInterval + double immediate trigger with self-scheduling
setTimeout that only fires after previous batch awaits
- Move clearQueue() to right after readQueue() so any unexpected
concurrent runBatch sees an empty queue and exits immediately
- Cache repoInfo and workingTreeDiff in processTask, pass into all three
upload functions to halve git invocations per task
- Add 30s AbortController timeout on postJson fetch so the worker no
longer hangs indefinitely on unresponsive networks
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>