Skip to content

feat: complete all to-be-completed features (Phase 0-7, +95 tests)#1

Merged
Sj295 merged 13 commits into
mainfrom
feat/complete-to-be-completed
Jul 17, 2026
Merged

feat: complete all to-be-completed features (Phase 0-7, +95 tests)#1
Sj295 merged 13 commits into
mainfrom
feat/complete-to-be-completed

Conversation

@Sj295

@Sj295 Sj295 commented Jul 17, 2026

Copy link
Copy Markdown
Owner

Summary

Completes all 12 "to-be-completed" areas from IMPLEMENTATION_REPORT.md plus 6 structural gaps discovered during planning. 246 tests pass (151 baseline + 95 new).

Changes by Phase

Phase 0 - Foundation (prerequisite for everything)

  • 0.1 ContentBlock.CacheControl + PermissionResult.Ask suggestions (backward-compatible)
  • 0.2 ClaudeCodeRequestAdvisor (Spring AI Advisor chain: system prompt + history + cache_control) + AgentInvoker (replaces bare Function<String,String> lambda)
  • 0.3 PermissionCheckerImpl (bridges Tool.checkPermissions + PermissionChain + PermissionModeStrategy) + StreamingToolExecutor permission check (was bypassed) + DenialTracking fix (3/20 -> ask, not hard deny)

Phase 1 - Critical bug fixes (unblocks 3 dead modules)

  • Register LSP/Plan/Cron tools in AppConfiguration (3 modules were completely unusable)
  • Fix ExitPlanModeTool auto-approve bug + PlanApprovalOption enum (8 options)
  • Fix LspClientImpl.publishDiagnostics dead discard (entire passive-feedback loop was dead)

Phase 2 - Medium completions

  • LSP: sendRequestWithRetry (ContentModified -32801) + filterGitIgnoredLocations (git check-ignore)
  • Cron: WatchService + onFireTask routing (by agentId) + killswitch + gates + agentId/permanent fields
  • ForkedAgent: runForked() returns ForkedAgentResult(text, usage) + AgentSummary (30s scheduled fork)
  • Hooks: HookConfig.Event reconciled to 28 events + FileChangedWatcher + SessionHooks + SkillHookRegistrar
  • Vim: ReplVimContext (production OperatorContext over JLine buffer)

Phase 3 - REPL rebuild

  • PermissionDialog (BlockingQueue + y/n/a/e + per-tool rendering)
  • BackgroundTaskRegistry (sealed 4 types: LocalAgent/Dream/Teammate/Shell)

Phase 4 - MCP full transport layer

  • 8 transport types (stdio/sse/sse-ide/http/ws/ws-ide/sdk/claudeai-proxy) + connect/reconnect/toggleEnabled
  • McpToolNameNormalizer (mcp__server__tool) + McpPolicyFilter (allowed/denied + SDK exempt)
  • headers/oauth/headersHelper fields on McpServerConfig

Phase 5 - Microcompact (both paths)

  • ApiMicrocompact (server-side ContextManagementConfig + ClearToolUses/ClearThinking)
  • CachedMicrocompact (cache_edits block + pin/consume/markTools + dedup)

Phase 6 - Memory (all three subsystems)

  • AutoDream (gate chain + ConsolidationLock + 4-phase consolidation prompt)
  • SessionMemory (10-section template + threshold triggers + forked agent)
  • AwaySummary (haiku + 30-msg window + session memory prepend)

Phase 7 - Plan Mode completion

  • Interview-phase gate (isPlanModeInterviewPhaseEnabled)
  • recoverPlanFromMessages (backward scan for ExitPlanMode tool_use / user planContent)
  • copyPlanForResume

Test Results

Metric Before After
Tests 151 246 (+95)
Test classes 23 33 (+10)
Commits 3 15 (+12)

Documentation

  • IMPLEMENTATION_REPORT.md: all 10 "to-be-completed" items moved to "completed"
  • README.md: badges, test table, module descriptions updated

Checklist

  • All 246 tests pass (mvn -pl ccc-test test)
  • Full build succeeds (mvn clean install -DskipTests)
  • No regressions in existing 151 tests
  • Each phase committed separately for reviewability

Sj295 added 13 commits July 17, 2026 12:46
…ggestions

- Add CacheControl record (ephemeral / ephemeral1h) to ContentBlock
- Extend TextBlock and ToolResultBlock with Optional<CacheControl>
- Backward-compatible 2-arg constructors preserved (151 existing tests green)
- Extend PermissionResult.Ask with List<PermissionSuggestion>
- Add PermissionSuggestion record (rule/destination/behavior) with allowLocal factory
- Add ask(message, suggestions) and Ask.withSuggestion factories
- Add 12 new tests (ContentBlockCacheControlTest)
- New ClaudeCodeRequestAdvisor (BaseAdvisor impl): injects system prompt
  from SystemPromptBuilder + history from CompactingChatMemory into request;
  captures usage in after(); bridges com.ccj Message <-> Spring AI Message
- New AgentInvoker: replaces bare Function<String,String> lambda in
  ClaudeCodeJavaApplication; builds structured Prompt, returns InvocationResult
  (text + usage + error)
- ChatClientFactory.createChatClientWithAdvisor: registers advisor chain on
  ChatClient bean (fulfills the 'advisor chain assembled by ccc-app' comment)
- AppConfiguration.chatClient bean now wires advisor with session context
- All 163 tests green (151 existing + 12 from Phase 0.1)
- New DenialTracking (3 consecutive / 20 total -> fallback to ask, not hard deny)
  Fixes the MAX_CONSECUTIVE_DENIALS=10 hard-deny bug in RuleBasedYoloClassifier
- Update RuleBasedYoloClassifier to use DenialTracking; ask on limit exceeded
- New PermissionCheckerImpl: bridges ToolExecutionPipeline.PermissionChecker with
  PermissionChain (inner 7-layer) + PermissionModeStrategy (outer mode transform)
- Update StreamingToolExecutor: now runs permission check before tool.call;
  blocks on PermissionCallback (REPL-provided) when Ask; fail-closed Deny otherwise
- Add PermissionCallback interface (Phase 3 PermissionDialog will implement)
- Wire PermissionCheckerImpl + DenialTracking beans in AppConfiguration
- Add 9 new tests (DenialTrackingTest)
- All 172 tests green (163 + 9 new)
… ExitPlanMode auto-approve, fix LSP publishDiagnostics

Phase 1.1 - Tool registration gap:
- Register LspTool, EnterPlanModeTool, ExitPlanModeTool, CronTools.all() in AppConfiguration
- Define missing beans: LspServerManager, LspDiagnosticRegistry, LspTool, PlanMode,
  PlanFileStore, CronTaskStore, CronTasksLock, CronScheduler
- Add ccc-lsp/ccc-plan/ccc-cron dependencies to ccc-app and ccc-test poms
- Unblocks 3 previously-dead modules

Phase 1.2 - ExitPlanMode auto-approve bug:
- Remove synchronous planMode.approve(session) in call(); set AWAITING_APPROVAL instead
- Add PlanApprovalOption enum (8 options: bypass/acceptEdits/default/auto + keep/clear context)
- Add validateInput override: reject if not in PLAN mode or blank plan
- Add applyApproval() method for REPL dialog to call on user approval
- Add PlanMode.awaitApproval() + approveWithMode() methods

Phase 1.3 - LSP publishDiagnostics dead discard:
- LspClientImpl now takes (registry, serverName) and calls registry.register()
  instead of just log.debug (fixes dead passive-feedback loop)
- LspServerInstance: add diagnosticRegistry field + 3-arg constructor
- LspServerManager: add setDiagnosticRegistry + pass to LspServerInstance

Tests: +15 new (ExitPlanModeApprovalFlowTest 9, LspDiagnosticRegistrationTest 6)
All 187 tests green
…kedAgent/AgentSummary + Hook enum fix

Phase 2.1 - LSP completions:
- LspServerInstance.sendRequestWithRetry: ContentModified (-32801) retry with
  exponential backoff (500ms * 2^attempt, 3 retries)
- LspTool.filterGitIgnoredLocations: git check-ignore in batches of 50, 5s
  timeout; applied to findReferences/goToDefinition/goToImplementation/workspaceSymbol
- extractLocations helper handles Either<List<Location>, Location>

Phase 2.2 - Cron completions:
- CronTask: add agentId (runtime-only, stripped on persistence) + permanent fields
- CronTaskStore: add(cron,prompt,recurring,durable,agentId), getTasksFile(), reload()
- persist agentId via forPersistence() stripping; load permanent from disk
- CronScheduler: WatchService on scheduled_tasks.json (ENTRY_MODIFY/DELETE -> reload)
- CronScheduler: onFireTask callback for per-task routing by agentId
- CronScheduler: BooleanSupplier isKilled killswitch + lock takeover probe
- CronTools: isKairosCronEnabled/isDurableCronEnabled gates (env-based)
- CronCreateTool.isEnabled() gates; force durable=false when gate off

Phase 2.3 - ForkedAgent + AgentSummary:
- ForkedAgentRunner.runForked(): returns ForkedAgentResult(text, usage) not bare String
- accumulateUsage() static helper + AggregatedUsage record
- New AgentSummary class: 30s scheduled fork, deny-all canUseTool,
  buildSummaryPrompt, previousSummary tracking, SummarizationHandle

Phase 2.4 - Hook enum reconciliation:
- HookConfig.Event: add 12 missing events (FILE_CHANGED, CWD_CHANGED, CONFIG_CHANGE,
  INSTRUCTIONS_LOADED, ELICITATION, ELICITATION_RESULT, TEAMMATE_IDLE,
  TASK_CREATED, TASK_COMPLETED, WORKTREE_CREATE, WORKTREE_REMOVE)
- Now matches HookEvent (executor pkg) 28 events

Tests: +7 new (CronTaskFieldsTest)
All 194 tests green
…r + Vim REPL binding

Phase 2b - Hook infrastructure + Vim integration:

- New FileChangedWatcher (ccc-hooks/watcher): WatchService loop on FileChanged
  hook matchers + dynamic watchPaths; executeFileChangedHooks/executeCwdChangedHooks;
  idempotent initialize; dispose
- New SessionHooks (ccc-hooks/session): session-scoped hook registry with
  once-removal callback; addSessionHook/removeSessionHook/getSessionHooks/
  notifyHookSuccess/clearSessionHooks
- New SkillHookRegistrar (ccc-skills): registerSkillHooks/registerFrontmatterHooks
  (Stop->SubagentStop for agents); parseHooksFrontmatter helper; once:auto-remove
- Add ccc-hooks dependency to ccc-skills pom
- New ReplVimContext (ccc-repl/vim): production OperatorContext impl over JLine
  LineReader buffer + cursor; register/lastFind/lastChange fields; enterInsert
- Add ccc-vim dependency to ccc-repl pom

All 194 tests green
Phase 3.1 - Permission dialog:
- New PermissionDialog (ccc-repl/dialog): BlockingQueue-based permission prompt;
  renders tool/input/message; reads y/n/a/e response; implements
  StreamingToolExecutor.PermissionCallback; 5min timeout
- Provides the missing interactive permission flow (tools returning Ask can
  now surface to the user)

Phase 3.2 - Background task registry:
- New BackgroundTaskRegistry (ccc-tasks/registry): unified registry for all
  background tasks (LocalAgentTask/DreamTask/InProcessTeammateTask/ShellTask);
  register/get/all/update/kill/cleanupTerminated; sealed BackgroundTaskState
- Replaces AgentTool's static backgroundTasks map pattern

Tests: +8 new (BackgroundTaskRegistryTest)
All 202 tests green
…ormalization

- McpServerConfig: expand Transport enum (8 types: stdio/sse/sse-ide/http/ws/
  ws-ide/sdk/claudeai-proxy); add headers/oauth/headersHelper/type/disabled fields;
  add parseTransport() static parser
- McpConnectionManager: add connect(name, config) with per-transport creation
  (stdio/http/sse/ws/sdk/claudeai-proxy); reconnect(); toggleEnabled();
  fetchToolsForServer() with mcp__norm__tool name; isConnected(); getServerConfig()
- New McpToolNameNormalizer: normalizeNameForMCP/buildMcpToolName/parseMcpToolName/
  isMcpToolName (mcp__server__tool format)
- New McpPolicyFilter: filterByPolicy (allowed/denied lists, SDK exempt, disabled
  blocked); isMcpServerDisabled

Tests: +10 new (McpToolsTest)
All 212 tests green
…t paths)

- New ApiMicrocompact: server-side ContextManagementConfig with
  clear_tool_uses_20250919 + clear_thinking_20251015 strategies;
  TOOLS_CLEARABLE_RESULTS/USES sets; DEFAULT_MAX/TARGET tokens;
  Keep.ALL / Keep(thinking_turns,1) for clearAllThinking
- New CachedMicrocompact: cache_edits path (does NOT mutate local messages,
  generates cache_edits block for server-side cache deletion);
  registerToolResult/Message, getToolResultsToDelete (keep recent 5),
  createCacheEditsBlock (dedup via seenDeleteRefs), pinCacheEdits,
  consumePendingCacheEdits, markToolsSentToAPI, reset;
  isCachedMicrocompactEnabled/isModelSupportedForCacheEditing gates
- CacheEditsBlock(type, edits[DeleteEdit(type, cacheReference)]) records

Tests: +14 new (MicrocompactTest)
All 226 tests green
…mary)

- New autodream package:
  - AutoDream: gate chain (isGateOpen -> 24h time -> 10min scan throttle ->
    >=5 sessions -> lock); forked agent 4-phase consolidation; rollback on failure
  - ConsolidationLock: .consolidate-lock file (mtime=lastConsolidatedAt, body=PID);
    HOLDER_STALE_MS=1h; tryAcquireConsolidationLock/rollback/recordConsolidation/
    release; listSessionsTouchedSince
  - AutoDreamConfig: minHours(24)/minSessions(5)/enabled (env-based)
  - ConsolidationPrompt: 4-phase Orient/Gather/Consolidate/Prune-and-index

- New sessionmemory package:
  - SessionMemory: shouldExtractMemory (init 10000/update 5000/3 toolCalls);
    extractSessionMemory via forked agent (FileEdit on memoryPath only);
    path {projectDir}/{sessionId}/session-memory/summary.md
  - SessionMemoryConfig: thresholds + hasMetInitializationThreshold/hasMetUpdateThreshold
  - SessionMemoryPrompts: DEFAULT_SESSION_MEMORY_TEMPLATE (10 sections) +
    buildSessionMemoryUpdatePrompt

- New awaysummary package:
  - AwaySummary: generateAwaySummary (RECENT_MESSAGE_WINDOW=30; prepends session
    memory as broader context; 1-3 sentence summary; inProgress guard)

Tests: +11 new (MemorySubsystemTest)
All 237 tests green
…Messages)

- EnterPlanModeTool: add isPlanModeInterviewPhaseEnabled() gate (env-based,
  default false matching GrowthBook tengu_plan_mode_interview_phase);
  branch tool_result instructions on gate (interview vs direct propose)
- PlanFileStore.recoverPlanFromMessages: scan backwards for ExitPlanMode
  tool_use input.plan, user message planContent, plan_file_reference;
  returns most recent plan found
- PlanFileStore.copyPlanForResume: try source file snapshot first, then
  message recovery, write to target session plan file

Tests: +9 new (PlanModeCompletionTest)
All 246 tests green
- Move all 10 'to-be-completed' items to 'completed' status with details
- Add Phase 0 infrastructure improvements section (Advisor, AgentInvoker,
  CacheControl, PermissionSuggestion)
- Update test count: 19 -> 246 (95 new tests across Phase 0-7)
- Update build section test count reference

All 246 tests green
- Update test badge 151 -> 246
- Add Phase 0-7 complete badge
- Update test table with 10 new test classes (+95 tests)
- Replace 'to-be-completed' table with 'Phase 0-7 completed' table
- Update module count references and ccc-test description
Copilot AI review requested due to automatic review settings July 17, 2026 10:04
@Sj295
Sj295 merged commit 9699b52 into main Jul 17, 2026
@Sj295
Sj295 deleted the feat/complete-to-be-completed branch July 17, 2026 10:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR completes the remaining “to-be-completed” gaps across Phase 0–7, bringing major subsystems (permissions, plan mode, cron, MCP transport/config, microcompact, memory, LSP diagnostics, REPL UX) closer to Claude Code parity and expanding integration test coverage to 246 tests.

Changes:

  • Adds/finishes core runtime implementations: permission checking in streaming tool execution, plan-mode approval flow + plan recovery, cron routing/watch/gates, MCP name/policy/transport scaffolding, microcompact + memory subsystems, LSP diagnostic forwarding + gitignore filtering.
  • Introduces multiple new supporting components (advisor/request builder, agent invoker, background task registry, hook registrars/watchers, vim operator context bridge).
  • Adds extensive new integration tests (+95) and updates documentation to reflect completion status.

Reviewed changes

Copilot reviewed 62 out of 62 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
README.md Updates badges, test counts, and completed feature list.
IMPLEMENTATION_REPORT.md Marks prior “to-be-completed” items as completed and expands phase details.
ccc-tools/src/main/java/com/ccj/tools/execution/StreamingToolExecutor.java Adds permission-checking + callback handling before tool execution.
ccc-tools/src/main/java/com/ccj/tools/execution/PermissionCheckerImpl.java Bridges tool execution permission checks to permission chain + mode strategy.
ccc-test/src/test/java/com/ccj/test/PlanModeCompletionTest.java Adds Phase 7 plan mode completion tests.
ccc-test/src/test/java/com/ccj/test/MicrocompactTest.java Adds Phase 5 microcompact tests.
ccc-test/src/test/java/com/ccj/test/MemorySubsystemTest.java Adds Phase 6 memory subsystem tests.
ccc-test/src/test/java/com/ccj/test/McpToolsTest.java Adds Phase 4 MCP name/policy/transport parsing tests.
ccc-test/src/test/java/com/ccj/test/LspDiagnosticRegistrationTest.java Tests LSP diagnostic forwarding + registry behavior.
ccc-test/src/test/java/com/ccj/test/ExitPlanModeApprovalFlowTest.java Tests fixed ExitPlanMode approval flow + options mapping.
ccc-test/src/test/java/com/ccj/test/DenialTrackingTest.java Tests denial tracking semantics and classifier fallback behavior.
ccc-test/src/test/java/com/ccj/test/CronTaskFieldsTest.java Tests cron task new fields + gating behavior.
ccc-test/src/test/java/com/ccj/test/ContentBlockCacheControlTest.java Tests cache_control blocks and Ask suggestions compatibility.
ccc-test/src/test/java/com/ccj/test/BackgroundTaskRegistryTest.java Tests background task registry lifecycle operations.
ccc-test/pom.xml Adds module dependencies needed by new test coverage.
ccc-tasks/src/main/java/com/ccj/tasks/registry/BackgroundTaskRegistry.java Introduces a unified background task registry with sealed task types.
ccc-skills/src/main/java/com/ccj/skills/SkillHookRegistrar.java Adds session hook registration for skill/agent frontmatter hooks.
ccc-skills/pom.xml Adds hooks module dependency.
ccc-repl/src/main/java/com/ccj/repl/vim/ReplVimContext.java Adds REPL-backed vim OperatorContext implementation using JLine buffer.
ccc-repl/src/main/java/com/ccj/repl/dialog/PermissionDialog.java Implements blocking permission dialog for REPL permission prompts.
ccc-repl/pom.xml Adds vim module dependency.
ccc-plan/src/main/java/com/ccj/plan/PlanMode.java Adds explicit awaiting-approval phase and approve-with-mode support.
ccc-plan/src/main/java/com/ccj/plan/PlanFileStore.java Adds plan recovery from messages and copy-for-resume behavior.
ccc-plan/src/main/java/com/ccj/plan/PlanApprovalOption.java Adds 8-option plan approval enum + restore/clear-context logic.
ccc-plan/src/main/java/com/ccj/plan/ExitPlanModeTool.java Fixes auto-approve bug; introduces validate + applyApproval path.
ccc-plan/src/main/java/com/ccj/plan/EnterPlanModeTool.java Adds interview-phase gate and updated entry messaging.
ccc-permission/src/main/java/com/ccj/permission/chain/DenialTracking.java Implements 3-consecutive / 20-total denial tracking fallback semantics.
ccc-permission/src/main/java/com/ccj/permission/bash/RuleBasedYoloClassifier.java Integrates denial tracking and changes fallback to Ask after limits.
ccc-models/src/main/java/com/ccj/models/ForkedAgentRunner.java Extends forked runner to return usage and adds accumulateUsage helpers.
ccc-models/src/main/java/com/ccj/models/factory/ChatClientFactory.java Adds ChatClient construction with an advisor chain.
ccc-models/src/main/java/com/ccj/models/agentsummary/AgentSummary.java Adds scheduled agent progress summarization via forked agent.
ccc-memory/src/main/java/com/ccj/memory/sessionmemory/SessionMemoryPrompts.java Adds 10-section session-memory template + update prompt builder.
ccc-memory/src/main/java/com/ccj/memory/sessionmemory/SessionMemoryConfig.java Adds token/tool-call threshold config utilities.
ccc-memory/src/main/java/com/ccj/memory/sessionmemory/SessionMemory.java Adds session memory extraction/update manager (async).
ccc-memory/src/main/java/com/ccj/memory/awaysummary/AwaySummary.java Adds away-summary generation over recent message window.
ccc-memory/src/main/java/com/ccj/memory/autodream/ConsolidationPrompt.java Adds 4-phase autoDream consolidation prompt builder.
ccc-memory/src/main/java/com/ccj/memory/autodream/ConsolidationLock.java Adds consolidation lock with PID + mtime semantics and session scanning.
ccc-memory/src/main/java/com/ccj/memory/autodream/AutoDreamConfig.java Adds env-driven autoDream configuration.
ccc-memory/src/main/java/com/ccj/memory/autodream/AutoDream.java Adds gated, throttled autoDream consolidation execution flow.
ccc-mcp/src/main/java/com/ccj/mcp/McpToolNameNormalizer.java Adds MCP tool name normalization/build/parse helpers.
ccc-mcp/src/main/java/com/ccj/mcp/McpPolicyFilter.java Adds allow/deny/disabled filtering rules with SDK exemption.
ccc-mcp/src/main/java/com/ccj/mcp/McpConnectionManager.java Adds connection/reconnect/toggle scaffolding + tool name normalization.
ccc-lsp/src/main/java/com/ccj/lsp/LspTool.java Adds gitignore filtering + result extraction for LSP locations/symbols.
ccc-lsp/src/main/java/com/ccj/lsp/LspServerManager.java Injects diagnostic registry into created server instances.
ccc-lsp/src/main/java/com/ccj/lsp/LspServerInstance.java Adds ContentModified retry + forwards publishDiagnostics to registry.
ccc-hooks/src/main/java/com/ccj/hooks/watcher/FileChangedWatcher.java Adds WatchService-based file/cwd change hook dispatcher.
ccc-hooks/src/main/java/com/ccj/hooks/session/SessionHooks.java Adds session-scoped hook registry with once-hook auto-removal.
ccc-cron/src/main/java/com/ccj/cron/CronTools.java Adds cron/durable gates + agentId routing support in create tool.
ccc-cron/src/main/java/com/ccj/cron/CronTaskStore.java Extends task persistence and reload hooks; strips runtime-only fields.
ccc-cron/src/main/java/com/ccj/cron/CronTask.java Adds agentId/permanent fields + persistence-stripped variant.
ccc-cron/src/main/java/com/ccj/cron/CronScheduler.java Adds file watching, lock takeover probing, routing callback, killswitch.
ccc-core/src/main/java/com/ccj/core/tool/PermissionResult.java Adds Ask suggestions and helper factories for backward compatibility.
ccc-core/src/main/java/com/ccj/core/message/ContentBlock.java Adds cache_control support to text/tool_result blocks (backward compatible).
ccc-context/src/main/java/com/ccj/context/CachedMicrocompact.java Adds cached microcompact state + cache_edits block creation/pinning.
ccc-context/src/main/java/com/ccj/context/ApiMicrocompact.java Adds server-side context management config builder (microcompact).
ccc-config/src/main/java/com/ccj/config/McpServerConfig.java Expands MCP transport types and adds headers/oauth/disabled fields.
ccc-config/src/main/java/com/ccj/config/HookConfig.java Adds missing hook event enum values to align to 28 events.
ccc-app/src/main/java/com/ccj/app/invoker/AgentInvoker.java Adds a structured agent invocation wrapper returning usage/error info.
ccc-app/src/main/java/com/ccj/app/ClaudeCodeJavaApplication.java Switches REPL invocation from raw lambda to AgentInvoker.
ccc-app/src/main/java/com/ccj/app/AppConfiguration.java Wires advisor-based ChatClient and registers missing LSP/Plan/Cron tools + permission beans.
ccc-app/src/main/java/com/ccj/app/advisor/ClaudeCodeRequestAdvisor.java Adds advisor to inject system prompt + history + usage capture + memory writeback.
ccc-app/pom.xml Adds missing module dependencies (lsp/plan/cron).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +115 to +127
// Phase 2.2: 按 agentId 路由
if (onFireTask != null) {
onFireTask.accept(task);
} else {
onFire.accept(task.prompt());
}
// 同时通知 lead 队列(teammate 任务也通知 lead,便于感知)
if (task.isTeammateTask()) {
// teammate 任务:onFireTask 负责路由到 teammate 队列
// 此处不再调 onFire(避免重复入队)
} else {
onFire.accept(task.prompt());
}
Comment on lines +127 to +135
List<SystemPromptBlock> blocks = systemPromptProvider.buildSystemPrompt(sessionContext);
StringBuilder sb = new StringBuilder();
for (SystemPromptBlock block : blocks) {
if (block.text() != null && !block.text().isEmpty()) {
if (!sb.isEmpty()) sb.append("\n\n");
sb.append(block.text());
}
}
return sb.toString();
Comment on lines +78 to +81
public ForkedAgentResult runForked(String taskPrompt, List<Message> parentHistory) {
log.debug("ForkedAgent running task ({} parent messages)", parentHistory.size());
try {
var spec = parentClient.prompt();
Comment on lines +134 to +140
private void handleFileEvent(Path filePath, String eventKind) {
// 检查是否匹配任一监听路径
boolean matched = watchedPaths.stream()
.anyMatch(wp -> wp.getFileName() != null
&& wp.getFileName().toString().equals(
filePath.getFileName() != null ? filePath.getFileName().toString() : ""));
if (!matched) return;
Comment on lines +46 to +63
@Override
public PermissionResult resolve(ContentBlock.ToolUseBlock block, Tool tool,
PermissionResult.Ask askResult) {
// 渲染提示
renderPermissionRequest(block, tool, askResult);

// 等待用户响应(REPL 主线程会调用 provideResponse)
try {
PermissionResponse response = responseQueue.poll(5, TimeUnit.MINUTES);
if (response == null) {
return PermissionResult.deny("Permission request timed out");
}
return applyResponse(response, askResult);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return PermissionResult.deny("Permission request interrupted");
}
}
Comment on lines +86 to +88
public void provideResponse(PermissionResponse response) {
responseQueue.offer(response);
}
Comment on lines +116 to 121
if (durable && !isDurableCronEnabled()) {
durable = false;
}
String agentId = (String) input.get("agentId");
CronTask task = store.add(cron, prompt, recurring, durable, agentId);
if (!scheduler.isRunning()) scheduler.start();
Sj295 added a commit that referenced this pull request Jul 17, 2026
fix: address all Copilot review issues (PR #1, #2, #3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants