Skip to content

add the app cli#3

Merged
ngduyanhece merged 1 commit intomainfrom
feat/add-cli-app
Jun 28, 2025
Merged

add the app cli#3
ngduyanhece merged 1 commit intomainfrom
feat/add-cli-app

Conversation

@ngduyanhece
Copy link
Copy Markdown
Contributor

add the app cli

@ngduyanhece ngduyanhece merged commit c1bd720 into main Jun 28, 2025
@ngduyanhece ngduyanhece deleted the feat/add-cli-app branch July 6, 2025 11:22
DerAuctor referenced this pull request in DerAuctor/ct-cipher Sep 18, 2025
…etoolnameconflict-for-first-wins_2025-09-18_16-18-04

Handle first-wins conflicts without duplicate registrations
@github-actions github-actions bot mentioned this pull request Apr 4, 2026
29 tasks
RyanNg1403 added a commit that referenced this pull request Apr 13, 2026
Fixes applied (6):
- #1: Path traversal guard — safePath() validates all file paths stay
  within contextTreeDir before write/delete
- #2: SYNTHESIZE/UPDATE throws instead of deleting pre-existing file
  (previousTexts not captured for synthesize operations)
- #3: Remove unnecessary `as number` cast — TypeScript narrows
  log.completedAt after status checks
- #5: Manifest rebuild errors now reported in result.errors instead
  of silently swallowed
- #6: unlinkSafe() only swallows ENOENT, rethrows permission errors
- #9: Added test for SYNTHESIZE/UPDATE error path

Skipped (4):
- #4: lastDreamLogId intentionally NOT cleared — keeping it allows
  "Dream already undone" error which is more informative than
  "No dream to undo" on double-undo
- #7: resolveProject() fallback to cwd follows existing codebase
  pattern (curate/view.ts uses the same approach)
- #8: No exhaustiveness check in switch — silent no-op is correct
  for undo of unknown future operation types (safer than crashing)
- #10: No lastDreamLogId assertion in test — follows from #4 skip
This was referenced Apr 13, 2026
cuongdo-byterover added a commit that referenced this pull request Apr 14, 2026
Blocking (5 fixes):
- #1: Bound resolveUniqueFilename loop to MAX_SUFFIX=10000 with
  timestamp fallback (local-markdown-adapter)
- #2: Make GBrain bin resolution lazy — execFileSync no longer runs
  in constructor, deferred to first executor use
- #3: Replace execFileSync with async execFileAsync in config-validator
  (validateGBrain is now async)
- #4: Add MAX_ARG_LENGTH guard (200KB) in execBrvCurate to prevent
  E2BIG on large content
- #5: Bound memory-wiki store() filename loop with same pattern

Medium (6 fixes):
- #6: Remove unreachable 'creative' from QueryType union and
  SELECTION_MATRIX
- #8: Replace this.index! non-null assertions with explicit null
  guards in obsidian and local-markdown adapters
- #9: Fix byterover writeSupported: true → false in
  createDefaultCapabilities (matches adapter)
- #10: Replace 'as' type assertion with instanceof narrowing in
  execBrvCurate error handler
- #11: Replace 'as Error' assertions with instanceof checks in
  swarm curate and query CLI commands
- Stale JSDoc: remove 'creative' from router comment

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions github-actions bot mentioned this pull request Apr 15, 2026
26 tasks
RyanNg1403 added a commit that referenced this pull request Apr 16, 2026
Addresses 10 review items from RyanNg1403 (Claude Code) and ChatGPT Codex
on PR #434. Two real bugs (1× P1, 1× P2) found by Codex; the rest are
documentation / test-assertion improvements from RyanNg.

P1 (Codex) — task-router pre-dispatch skip polluted AgentPool counter
preDispatchCheck's ineligible branch routed through handleTaskCompleted,
which unconditionally calls agentPool.notifyTaskCompleted(projectPath).
But the task was never submitted to the pool, so decrementing activeTasks
under-represents real load and can let drainQueue dispatch an extra
queued task beyond per-agent concurrency.

Fix: extracted handleTaskSkippedByPreCheck — emits task:completed to
client + project room and calls moveToCompleted, but skips
notifyTaskCompleted AND lifecycle hooks (also resolves RyanNg #5 which
flagged the lifecycle-hook side of the same call site). Three new
regression tests assert the pool counter and onTaskCompleted hooks are
not touched on skip, while the project broadcast still fires.

P2 (Codex) — duplicate review entries on late dream failures
dream-executor's success path runs createReviewEntries (step 6b), then
dreamStateService.update (step 7). If step 7 throws, control jumps to
catch which re-invokes createReviewEntries on the same allOperations,
producing duplicate pending review entries.

Fix: reviewEntriesWritten boolean set after the success-path call;
catch-path call gated on !reviewEntriesWritten in addition to the
existing allOperations.length > 0 invariant. One new regression test
forces step 7 to throw after step 6b succeeds and asserts
createReviewEntries is invoked exactly once.

Doc / test improvements
- dream-state-service.ts: comment on stateMutexes' monotonic growth
  bound (#1); JSDoc on write() cross-referencing update() to warn
  against bypassing the mutex (#2).
- consolidate.ts: JSDoc on loadAndClearPendingMerges explaining the
  intentional two-phase access pattern (unguarded read for hints +
  mutex-guarded update for clear) and the fail-open behavior when the
  initial read throws (#3, #4).
- consolidate.test.ts: assert update.calledOnce instead of
  write.calledOnce — surfaces intent (the contract) rather than the
  stub's implementation detail (#8).

Verification
- Lint: 0 errors (perfectionist/sort-classes flagged class-member order
  during audit; resolved by repositioning handleTaskSkippedByPreCheck
  alphabetically between handleTaskError and handleTaskStarted).
- Typecheck: clean.
- Unit tests: 6238 passing, 16 pre-existing pending, 0 failing.
- /brv-code-quality skill: passed all 6 audit gates.
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.

1 participant