Skip to content

Add symlink feature to adapt command - #30

Merged
joelteply merged 3 commits into
mainfrom
feature/symlinks
Apr 9, 2025
Merged

Add symlink feature to adapt command#30
joelteply merged 3 commits into
mainfrom
feature/symlinks

Conversation

@joelteply

@joelteply joelteply commented Apr 9, 2025

Copy link
Copy Markdown
Contributor

Summary

  • Add option to command that creates symlinks at root level
  • Create symlinks like CLAUDE.md, GPT.json based on assistant type
  • Enable easy integration with Claude Code via .clauderc systemPromptFile setting
  • Update README with expanded project description and benefits
  • Refactor CLI to delegate to adapt.ts module for command implementation

Problem Solved

This PR solves the integration issue with tools that expect configuration files in standard locations:

  1. Claude Code Integration - Creates a symlink at CLAUDE.md that can be referenced in .clauderc with
  2. GPT API Integration - Creates a symlink at GPT.json that can be referenced in API calls
  3. Maintains Directory Structure - Still uses .continuum directory for actual files, symlinks point to the proper location

Test Plan

  • Added unit tests specifically for symlink functionality
  • Verified all existing tests still pass
  • Manual testing of symlink creation works on Unix systems

Usage Examples

🤖 Generated with Claude Code

This change adds a new --create-link option to the adapt command, which creates
a symlink to the assistant config file in the root directory. This enables
seamless integration with Claude Code, OpenAI API, and other tools that expect
configuration files in standard locations.

- Add --create-link option to adapt command
- Create symlinks like CLAUDE.md, GPT.json based on assistant type
- Update help text with usage examples
- Add unit tests for symlink functionality
- Refactor to delegate command handling to adapt.ts module

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 9, 2025 05:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread packages/cli/src/commands/adapt.ts Outdated
joelteply and others added 2 commits April 9, 2025 00:25
- Complete revision of the project description
- Add explanation of symlink feature for Claude Code integration
- Update usage examples to show how to use --create-link
- Expand on vision and benefits for individuals and teams
- Clarify configuration directory structure (.continuum)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Improve error handling in symlink removal by checking error code
- Only ignore ENOENT errors (file doesn't exist) when removing symlinks
- Rethrow other errors with descriptive message for better debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@joelteply

Copy link
Copy Markdown
Contributor Author

Thank you for the review! I've addressed Copilot's suggestion by improving the error handling when removing existing symlinks.

Now we only ignore ENOENT errors (file doesn't exist) and properly rethrow other errors with a descriptive message, which will make debugging easier if there are permission issues or other unexpected problems.

@joelteply
joelteply merged commit 9b01e30 into main Apr 9, 2025
@joelteply
joelteply deleted the feature/symlinks branch April 9, 2025 05:28
joelteply added a commit that referenced this pull request Nov 30, 2025
Add symlink feature to adapt command
joelteply added a commit that referenced this pull request Jun 19, 2026
…g dataset (#1691)

The rooms→training-data bridge of the coordination↔learning flywheel: a
persona's recorded room turns become the data that trains its LoRA genome.
Coordination (rooms) IS the training data for learning (genome) — and a
better genome collaborates better, producing richer turns. This is the first
concrete brick of that loop.

`dataset/from-turns` reads the recorder's per-turn JSON captures (default
~/.continuum/fixtures/persona-respond), converts each SPOKE turn (system
prompt + user message → the persona's spoken response) into a chat SFT
example in the SAME {messages:[{role,content}]} format the CSV importer
emits, and flows them through the SAME split/write/manifest path
(split_and_write). The JSONL is unsloth's canonical training input.

Reuses dataset.rs end-to-end (no parallel allocator). Source = recorder
turns, NOT engrams — engrams are curated recall memory, not paired SFT
turns; only `spoke` turns are training pairs (silent/errored/malformed are
skipped). Params: turnsDir, name, splitRatio, includeSystem, includeHistory
(role-attributed by sender), personaId/roomId filters, outputDir.

Tests (extend the existing dataset test mod): spoke turns → 3-message SFT
example through the real write path; a turnsDir with no spoke turns errors
loudly rather than writing an empty dataset.

Roadmap: #30 (this), #31 (unsloth inference adapter), #32 (close the loop:
ForgeRecipe→unsloth train→LoRA→genome page-in). See memory
coordination-learning-flywheel.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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