Commit Graph

278 Commits

Author SHA1 Message Date
e763ceb0ad Merge pull request 'feat(context): add context dump/load for session isolation' (#139) from feat/context-dump-load into main 2026-04-05 06:23:40 +02:00
shokollm
61f06f825f Add context dump/load feature
Adds session context management to prevent session poisoning:
- CONTEXT_DIR and ENABLE_CONTEXT_DUMP config options
- issue_ref_to_context_file() - derive context file path
- kugetsu_context_load() - load previous context
- kugetsu_context_dump() - save context on session start
- kugetsu_context_update_message() - append to conversation history
- Integration in cmd_start and cmd_continue
- New 'kugetsu context' command
2026-04-05 04:23:26 +00:00
b76a9b883a Merge pull request 'feat(worktree-lifecycle): add PR tracking and safe destroy' (#138) from feat/worktree-lifecycle into main 2026-04-05 06:00:15 +02:00
shokollm
ac850869fd fix(worktree-lifecycle): use github.com as example in set-pr help
- Remove accidentally committed worktree directory
2026-04-05 03:56:48 +00:00
shokollm
3107dbf1e5 fix(worktree-lifecycle): use GIT_SERVERS config for check_pr_status
- Extract hostname from pr_url instead of hardcoding domains
- Look up server base URL from GIT_SERVERS config
- Append /api/v1 to derive API URL (configurable per server)
- Works with any server configured in GIT_SERVERS
2026-04-05 03:41:41 +00:00
shokollm
b8b97e3c09 fix(worktree-lifecycle): address PR review feedback
- Rename update-pr to set-pr for clarity (it's setting the PR URL, not updating PR)
- Add optional pr-url argument to kugetsu start command
  Usage: kugetsu start <issue-ref> <message> [pr-url]
- If pr-url is provided at start, it's stored directly in session file
2026-04-05 03:16:05 +00:00
shokollm
d8af560e6d feat(worktree-lifecycle): add PR tracking and safe destroy
- Add WORKTREE_CHECK_PR_STATUS config (default: true)
- Add pr_url and branch_name fields to session files
- Add check_pr_status() to query PR status via API (Gitea/GitHub)
- Add update_session_pr_url() to update PR URL in session
- Add kugetsu update-pr command to set PR URL
- Modify cmd_destroy to check PR status before destroying worktree

Closes #135
2026-04-05 02:50:09 +00:00
5d12f6ca42 Merge pull request 'feat(kugetsu): smart delegate with worktree awareness' (#130) from feature/smart-delegate-worktree-awareness into main 2026-04-03 16:31:30 +02:00
shokollm
91505345a2 feat(kugetsu): smart delegate with worktree awareness
- Parse issue refs from message (gitserver.com/owner/repo/issues/123 or owner/repo#123)
- Find existing worktrees/sessions by issue number
- Ask user to confirm which worktree to use, or delegate anyway
- Inject missing info context to PM agent
- Inject selected worktree context to PM agent

Fixes #128
2026-04-03 14:20:48 +00:00
f7fe22de25 Merge pull request 'fix(kugetsu): wrap cmd_continue in subshell with cd for correct worktree dir' (#129) from fix/cmd-continue-worktree-dir into main 2026-04-03 15:58:19 +02:00
shokollm
3ce43ffa65 fix(kugetsu): wrap cmd_continue in subshell with cd for correct worktree dir
The --dir flag only sets directory for the subprocess, not the session's
stored directory in opencode's SQLite DB. This was already fixed for
cmd_start in v0.1.10, but cmd_continue still had the bug.

Fixes #127
v0.1.11
2026-04-03 13:06:02 +00:00
shokollm
416e8e5757 fix(kugetsu): destroy --base now also deletes PM agent session
When destroying base session, we now also delete the PM agent session
and all issue session files. This ensures clean slate on re-init.
v0.1.10
2026-04-02 14:47:40 +00:00
1c1d18b9ae Merge pull request 'fix(kugetsu): init creates base session in ~/.kugetsu-worktrees and adds context to forked sessions' (#114) from fix/session-context-and-init-worktree into main v0.1.9 2026-04-02 16:35:12 +02:00
shokollm
8c639e2928 fix(kugetsu): init creates base session in ~/.kugetsu-worktrees, adds context to forked sessions, and clears logs
1. Init: cd to ~/.kugetsu-worktrees before creating base session
   This keeps all worktrees inside a predictable directory structure
   and avoids external_directory permission issues

2. Init: Clear old logs but keep repos.json, config, and env files

3. Fork context: Add kugetsu_get_fork_context() that provides:
   - Important working rules (stop on error, don't pivot)
   - Repository configuration from repos.json
   - Environment file location info

4. Fork message: Prepend context to user message when forking session
2026-04-02 14:32:07 +00:00
c4c3556247 Merge pull request 'fix(kugetsu): destroy --base and --pm-agent actually delete opencode sessions' (#113) from fix/destroy-removes-opencode-session into main v0.1.8 2026-04-02 15:30:48 +02:00
shokollm
4342347ac6 fix(kugetsu): destroy --base and --pm-agent actually delete opencode sessions
Previously destroy only removed local session files but didn't delete
the sessions from opencode's database. This caused init to reuse the
same session with old context.

Now destroy calls 'opencode session delete <id>' to properly remove
the session from opencode.
2026-04-02 13:28:47 +00:00
7888a34bd9 Merge pull request 'fix(kugetsu): warn if init run from non-empty directory' (#112) from fix/init-directory-warning into main v0.1.7 2026-04-02 15:21:30 +02:00
shokollm
e2a37cdbb9 fix(kugetsu): warn if init run from non-empty directory
Warn users if running kugetsu init from a directory with files or
git repository. This prevents project context from contaminating the
base session, which causes forked sessions to have unwanted context.
2026-04-02 13:19:49 +00:00
shokollm
6e9472b5e2 fix(kugetsu): detect session via DB query instead of opencode session list
opencode session list doesn't show sessions in ~/.kugetsu-worktrees/ directories.
This caused detection to fail even though sessions were being created.

Now we query the database directly for sessions matching the worktree path.
Also fixed database path in fix_session_permissions (was ~/.opencode/, should be ~/.local/share/opencode/).
v0.1.6
2026-04-02 11:45:35 +00:00
shokollm
775f73348a fix(kugetsu): update forked session permissions after detection
Previously we only fixed base session permissions before forking.
But permissions are NOT inherited from parent to child.

Now we update the newly created session's permissions immediately
after detection, ensuring the forked session can access external
directories like ~/.kugetsu/worktrees/.
v0.1.5
2026-04-02 11:15:27 +00:00
2e9081f4f5 Merge pull request 'fix(kugetsu): call fix_session_permissions before forking' (#109) from fix/prefork-permissions into main v0.1.4 2026-04-02 13:10:54 +02:00
shokollm
f7ac2f35fe fix(kugetsu): call fix_session_permissions before forking
- Call fix_session_permissions in cmd_start before forking to ensure
  base session has correct permissions for external_directory access
- Add debug logging to show forked session's directory and permissions
  after creation to help diagnose permission inheritance issues
2026-04-02 11:08:30 +00:00
97d7511e56 Merge pull request 'fix(kugetsu): session detection ordering bug and debugging' (#108) from fix/session-detection-v2 into main v0.1.3 2026-04-02 12:26:57 +02:00
shokollm
cd12a0cda8 fix(kugetsu): fix session detection ordering and add DB debugging
1. Move session detection BEFORE checking if fork process is still running.
   Previous code broke out of loop if forked process exited, skipping detection.

2. Add database query debugging when detection fails to help diagnose
   why opencode session list might miss newly created sessions.
2026-04-02 09:57:27 +00:00
ffdf5e34c8 Merge pull request 'fix(kugetsu): improve session detection in cmd_start with retry logic and logging' (#107) from fix/start-session-detection into main v0.1.2 2026-04-02 11:41:52 +02:00
shokollm
b3ac73a283 Merge origin/main into fix/start-session-detection
Resolve conflict: use cd approach for worktree, keep retry logic
2026-04-02 09:39:45 +00:00
shokollm
1128b3dfa8 fix(kugetsu): improve session detection in cmd_start with retry logic and logging
- Capture fork output to log file for debugging
- Track fork PID to detect if process exits early
- Retry session detection up to 10 seconds instead of 1 second
- Show fork log output when session creation fails
- Improve error message to indicate timeout
2026-04-02 09:29:30 +00:00
90f46a778a Merge pull request 'fix: use cd + worktree inside parent dir instead of --dir flag (fixes #105)' (#106) from fix/worktree-isolation-via-cd into main 2026-04-02 10:29:32 +02:00
shokollm
ede47439b0 fix: use cd + worktree inside parent dir instead of --dir flag
Issue #105: opencode run --fork/--continue --dir <path> fails to create sessions

Root cause: The --dir flag breaks session creation in opencode. Sessions
fail to be created when --dir is used with --fork or --continue.

Solution: Instead of using --dir flag, create worktrees inside the parent
session's directory and use 'cd $worktree_path && opencode run ...' to
change directory before running opencode.

Key changes:
- Worktrees now created at $PWD/.kugetsu-worktrees/{issue-ref}/ instead
  of $WORKTREES_DIR/{issue-ref}/
- .kugetsu-worktrees is a hidden directory (git ignored by default)
- cmd_start and cmd_continue now use 'cd && opencode run' instead of
  'opencode run --dir'

This approach works because:
1. Worktree is inside parent's directory tree (permission granted)
2. cd properly changes working directory before opencode runs
3. Session gets created with correct directory set
4. No .gitignore entry needed (. prefix makes it hidden from git)
v0.1.1
2026-04-02 08:18:17 +00:00
a690788498 Merge pull request 'chore: documentation updates and quick fixes' (#104) from fix/documentation-and-quick-fixes into main 2026-04-02 06:07:13 +02:00
shokollm
5f841e6e4a chore: documentation updates and quick fixes
- Add missing command docs to SKILL.md (delegate, logs, status, doctor, notify, server, queue)
- Add KUGETSU_VERBOSITY to config options table
- Delete outdated test-kugetsu.sh (tests non-existent resume/stop commands)
- Fix Phase 3 status in kugetsu-architecture.md (was In Progress, now Implemented)
- Fix env rm quote handling (use grep -v instead of sed)
- Add error handling for opencode init command
v0.1.0
2026-04-02 04:06:39 +00:00
3d6abdf678 Merge pull request 'feat(kugetsu): add KUGETSU_VERBOSITY for PM agent output control' (#103) from feat/issue-46-verbosity-v6 into main 2026-04-02 05:48:10 +02:00
shokollm
538d9fba80 feat(kugetsu): add KUGETSU_VERBOSITY with verbose/default/quiet modes 2026-04-02 03:47:40 +00:00
shokollm
1e69b1abc4 Revert "feat(kugetsu): add lock mechanism for worktree coordination"
This reverts commit d62ecb884e.
2026-04-02 03:26:39 +00:00
shokollm
dbfd8e7028 Revert "feat(kugetsu): add queue infrastructure for autonomous PM"
This reverts commit 21a32cd937.
2026-04-02 03:25:56 +00:00
shokollm
d62ecb884e feat(kugetsu): add lock mechanism for worktree coordination 2026-04-02 03:18:36 +00:00
shokollm
21a32cd937 feat(kugetsu): add queue infrastructure for autonomous PM 2026-04-02 03:18:28 +00:00
shokollm
785e4edad5 feat(kugetsu): add KUGETSU_VERBOSITY for PM agent output control (total|verbose|hybrid) 2026-04-02 03:18:03 +00:00
caf1e9cdcd Merge pull request 'fix(kugetsu): add fix_session_permissions command for cmd_doctor' (#93) from fix/issue-36-permissions-v2 into main 2026-04-02 04:37:39 +02:00
73f9c03e18 Merge pull request 'fix(kugetsu): export KUGETSU_TEMP_DIR for subagent workflows' (#92) from fix/issue-73-temp-dir-v2 into main 2026-04-02 04:37:25 +02:00
shokollm
b2f2df7b06 test(kugetsu): add comprehensive tests for fix_session_permissions
- Test E7: verify fix_session_permissions function exists
- Test E8: verify cmd_doctor --fix-permissions flag is recognized
- Test E9: verify permission JSON is valid JSON
- Test E10: verify SQL UPDATE syntax works correctly

These tests verify the fix without requiring actual opencode installation.
2026-04-02 02:12:38 +00:00
shokollm
2060c4ffbe test: add fix_session_permissions tests
- Add test E7: verify fix_session_permissions function exists
- Add test E8: verify cmd_doctor --fix-permissions flag is recognized
- Add fix_session_permissions call to cmd_init to set permissions
  when initializing new sessions
2026-04-02 01:37:14 +00:00
shokollm
c0d4314933 test: add KUGETSU_TEMP_DIR export test
Add unit test to verify KUGETSU_TEMP_DIR is exported in cmd_delegate.
Also update SKILL.md to document KUGETSU_TEMP_DIR config option.
2026-04-02 01:18:49 +00:00
shokollm
74468af7c8 fix(kugetsu): add fix_session_permissions command for cmd_doctor
Add --fix-permissions flag to cmd_doctor:
  kugetsu doctor --fix-permissions

The fix_session_permissions() function:
- Updates base session and PM agent session permissions in SQLite
- Sets external_directory pattern to '*' with action 'allow'
- This fixes the issue where PM agent cannot access external directories

This addresses issue #36 where PM agent external_directory permission fails.

Fixes #36
2026-04-02 00:57:14 +00:00
shokollm
e184b1e5b0 fix(kugetsu): export KUGETSU_TEMP_DIR for subagent workflows
Export KUGETSU_TEMP_DIR in cmd_delegate so subagents can use it
instead of /tmp which may be blocked by opencode.

Default: ~/.local/share/opencode/tool-output

This allows agents to write temp files in an allowed directory
instead of /tmp which is blocked in headless mode.

Fixes #73
2026-04-02 00:55:41 +00:00
shokollm
e758b04619 Merge pull request #91 from feat/issue-76-env-v2 2026-04-02 00:49:48 +00:00
shokollm
454a019721 test: add env pass-through tests to test suite
Add tests for env pass-through feature:
- Test env command exists and lists files
- Test env set creates env file
- Test env show masks sensitive values (GITEA_TOKEN)
- Test set -a exports variables to child processes
- Test pm-agent.env takes precedence over default.env
- Test cmd_init creates env template files

These tests ensure the env pass-through mechanism works correctly
and that variables are properly exported to subagents.
2026-04-02 00:46:09 +00:00
shokollm
163160cef4 fix: ensure env variables are exported to subagents
The issue: variables sourced in cmd_delegate were not being passed
to child processes (subagents) because 'source' doesn't automatically
export variables to child processes.

Fix:
1. Use 'set -a' before sourcing to auto-export all variables
2. Use 'set +a' after sourcing to disable auto-export
3. Updated template comments to recommend 'export' prefix

Also added unit test to verify env pass-through works.

Verified with tests that child processes now see the exported variables.
2026-04-02 00:42:33 +00:00
shokollm
484fb5262e docs: add env command documentation to SKILL.md
Add section on Environment Variables for Agents:
- Explain env files (default.env, pm-agent.env)
- Document kugetsu env commands (list, show, set, get, rm)
- Show example usage for GITEA_TOKEN
- Note sensitive value masking
- Explain delegation usage

This ensures agents know to use kugetsu env instead of manually
injecting variables on each command.
2026-04-02 00:37:25 +00:00
shokollm
af564a452b feat(kugetsu): create env directory and files during init
Update cmd_init to create:
- ~/.kugetsu/env/ directory
- ~/.kugetsu/env/default.env (template)
- ~/.kugetsu/env/pm-agent.env (template)

Users can then edit these files to add their tokens/secrets.
2026-04-02 00:35:47 +00:00