Repository navigation
Conversation
* fix(harness): retry transient provider failures in the loop (#47) * feat(plugin): structured system-prompt sections (#48) * feat(plugin): structured system-prompt sections Replace the single-string PromptRegistry with a foundation (the untagged head) and named sections. Plugins write sections by value -- Section.Rules, Addendum, ProjectContext, Skills, or Section.define(name, { format }) -- so two plugins merge into one <rules> instead of overwriting the prompt. The harness now renders the prompt: foundation, <tools>, the built-in sections, <cwd>, then custom sections in first-write order. Tool promptGuidelines lead <rules>; list sections dedupe into bullets; a format mismatch on one name fails the snapshot. codework.prompt.default is reduced to content, and the tool index now covers the final catalog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(harness): drop Location.Ref; location is always the mount cwd Ref.directory let a Location point somewhere other than the mount's cwd, where tools actually run. Only a test fixture set it, and Location.layerWith and defaultLayer took a Ref with no callers at all. Remove all three; the fixture mounts the remote sandbox at the repo instead, as the runner mounts at the session directory. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(harness): regenerate retry artifacts from the tests The committed artifacts had been reformatted outside the test (tab-indented, mixed with spaces), so the retry snapshots never matched what vitest writes and failed on every run. Regenerate them with `-u`; the recorded content is unchanged, only the bytes now come from the test. `__artifacts__/**` is already excluded from `vp fmt`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(plugin): trim prompt section comments to decisions Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(plugin): allow hyphens in prompt section names Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(harness): tweak default plugin prompt & rules to the registered tools Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(harness): load AGENTS.md and CLAUDE.md into the system prompt (#49) * feat(plugin): structured system-prompt sections Replace the single-string PromptRegistry with a foundation (the untagged head) and named sections. Plugins write sections by value -- Section.Rules, Addendum, ProjectContext, Skills, or Section.define(name, { format }) -- so two plugins merge into one <rules> instead of overwriting the prompt. The harness now renders the prompt: foundation, <tools>, the built-in sections, <cwd>, then custom sections in first-write order. Tool promptGuidelines lead <rules>; list sections dedupe into bullets; a format mismatch on one name fails the snapshot. codework.prompt.default is reduced to content, and the tool index now covers the final catalog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(harness): drop Location.Ref; location is always the mount cwd Ref.directory let a Location point somewhere other than the mount's cwd, where tools actually run. Only a test fixture set it, and Location.layerWith and defaultLayer took a Ref with no callers at all. Remove all three; the fixture mounts the remote sandbox at the repo instead, as the runner mounts at the session directory. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(harness): regenerate retry artifacts from the tests The committed artifacts had been reformatted outside the test (tab-indented, mixed with spaces), so the retry snapshots never matched what vitest writes and failed on every run. Regenerate them with `-u`; the recorded content is unchanged, only the bytes now come from the test. `__artifacts__/**` is already excluded from `vp fmt`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(plugin): trim prompt section comments to decisions Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(plugin): allow hyphens in prompt section names Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(harness): tweak default plugin prompt & rules to the registered tools Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(harness): load AGENTS.md and CLAUDE.md into the system prompt A built-in prompt plugin, codework.prompt.instruction, walks from the sandbox cwd up to the sandbox root and appends the first readable instruction file per directory to <project_context>, closest last. Overrides (AGENTS.override.md, CLAUDE.override.md) beat AGENTS.md and CLAUDE.md in their directory. Files are read only through the sandbox, so local and remote sandboxes behave alike and nothing on the host is read. Inside a linked worktree nested in its main checkout, the main checkout's same-named file is skipped so it is not applied twice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(harness): instruction discovery across host, Daytona and Vercel sandboxes One scenario runs on the host sandbox (every vp test) and on Daytona and Vercel (test:sandbox:e2e), all against a shared artifact: nested files, overrides, a nested git worktree, and a host-dir link whose settings turn the plugin off while host files are never read. A relink case moves one session Daytona -> Vercel -> host, and a real-repository case clones a pinned fixture branch of codeworksh/69th into all three and requires the same context per directory. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * chore: upgrade effect to 4.0.1 and refresh dependencies Move effect and @effect/* from 4.0.0-rc.115 to stable 4.0.1. The rc pin let @effect/platform-node resolve platform-node-shared@4.0.1 on fresh installs, which crashes against effect rc.115. - effect/unstable/* modules are now effect/* - Encoding.encodeHex is Hex.encode from effect/encoding - Schema.isStartsWith is Schema.isStartingWith - serve the RPC server through RpcServer.layerHttp; the shared websocket protocol layer was built twice under 4.0.1 and RPCs over WebSocket hung Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * release: @codeworksh/aikit@0.10.0 * release: @codeworksh/plugin@0.1.0 * release: @codeworksh/harness@0.1.0 * release: @codeworksh/cli@0.1.0 * docs(aikit): release notes for 0.10.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(www): drop the CodeWork theme and default to Tokyo Night Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(www): add YouTube video carousel to the watch section Videos show as thumbnails until played, then swap in a youtube-nocookie embed. The rail is full-bleed with neighbours peeking in; arrows and the scroll bar appear once there is more than one video. The lede gets a beating pixel heart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(www): allow ngrok hosts on the dev server Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(www): spread hero extension tiles to all four corners Tiles now fill the top corners too, keeping the middle band clear. Small screens, where tiles grow and slots are few, fill every slot, and resting tiles are lifted a tenth from dim toward lit so their labels read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(www): balance hero extension tiles across corners on small screens Small screens have few tile slots, each with a fixed dither threshold, so whole corners went dark. There, tiles stay visible and each corner keeps up to three slots nearest its own corner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fix(harness): retry transient provider failures in the loop (fix(harness): retry transient provider failures in the loop #47)
feat(plugin): structured system-prompt sections (feat(plugin): structured system-prompt sections #48)
feat(plugin): structured system-prompt sections
Replace the single-string PromptRegistry with a foundation (the untagged head) and named sections. Plugins write sections by value -- Section.Rules, Addendum, ProjectContext, Skills, or Section.define(name, { format }) -- so two plugins merge into one instead of overwriting the prompt.
The harness now renders the prompt: foundation, , the built-in sections, , then custom sections in first-write order. Tool promptGuidelines lead ; list sections dedupe into bullets; a format mismatch on one name fails the snapshot. codework.prompt.default is reduced to content, and the tool index now covers the final catalog.
Ref.directory let a Location point somewhere other than the mount's cwd, where tools actually run. Only a test fixture set it, and Location.layerWith and defaultLayer took a Ref with no callers at all. Remove all three; the fixture mounts the remote sandbox at the repo instead, as the runner mounts at the session directory.
The committed artifacts had been reformatted outside the test (tab-indented, mixed with spaces), so the retry snapshots never matched what vitest writes and failed on every run. Regenerate them with
-u; the recorded content is unchanged, only the bytes now come from the test.__artifacts__/**is already excluded fromvp fmt.chore(plugin): trim prompt section comments to decisions
feat(plugin): allow hyphens in prompt section names
feat(harness): tweak default plugin prompt & rules to the registered tools
feat(harness): load AGENTS.md and CLAUDE.md into the system prompt (feat(harness): load AGENTS.md and CLAUDE.md into the system prompt #49)
feat(plugin): structured system-prompt sections
Replace the single-string PromptRegistry with a foundation (the untagged head) and named sections. Plugins write sections by value -- Section.Rules, Addendum, ProjectContext, Skills, or Section.define(name, { format }) -- so two plugins merge into one instead of overwriting the prompt.
The harness now renders the prompt: foundation, , the built-in sections, , then custom sections in first-write order. Tool promptGuidelines lead ; list sections dedupe into bullets; a format mismatch on one name fails the snapshot. codework.prompt.default is reduced to content, and the tool index now covers the final catalog.
Ref.directory let a Location point somewhere other than the mount's cwd, where tools actually run. Only a test fixture set it, and Location.layerWith and defaultLayer took a Ref with no callers at all. Remove all three; the fixture mounts the remote sandbox at the repo instead, as the runner mounts at the session directory.
The committed artifacts had been reformatted outside the test (tab-indented, mixed with spaces), so the retry snapshots never matched what vitest writes and failed on every run. Regenerate them with
-u; the recorded content is unchanged, only the bytes now come from the test.__artifacts__/**is already excluded fromvp fmt.chore(plugin): trim prompt section comments to decisions
feat(plugin): allow hyphens in prompt section names
feat(harness): tweak default plugin prompt & rules to the registered tools
feat(harness): load AGENTS.md and CLAUDE.md into the system prompt
A built-in prompt plugin, codework.prompt.instruction, walks from the sandbox cwd up to the sandbox root and appends the first readable instruction file per directory to <project_context>, closest last. Overrides (AGENTS.override.md, CLAUDE.override.md) beat AGENTS.md and CLAUDE.md in their directory. Files are read only through the sandbox, so local and remote sandboxes behave alike and nothing on the host is read. Inside a linked worktree nested in its main checkout, the main checkout's same-named file is skipped so it is not applied twice.
One scenario runs on the host sandbox (every vp test) and on Daytona and Vercel (test:sandbox:e2e), all against a shared artifact: nested files, overrides, a nested git worktree, and a host-dir link whose settings turn the plugin off while host files are never read. A relink case moves one session Daytona -> Vercel -> host, and a real-repository case clones a pinned fixture branch of codeworksh/69th into all three and requires the same context per directory.
Move effect and @effect/* from 4.0.0-rc.115 to stable 4.0.1. The rc pin let @effect/platform-node resolve platform-node-shared@4.0.1 on fresh installs, which crashes against effect rc.115.
release: @codeworksh/aikit@0.10.0
release: @codeworksh/plugin@0.1.0
release: @codeworksh/harness@0.1.0
release: @codeworksh/cli@0.1.0
docs(aikit): release notes for 0.10.0
fix(www): drop the CodeWork theme and default to Tokyo Night
feat(www): add YouTube video carousel to the watch section
Videos show as thumbnails until played, then swap in a youtube-nocookie embed. The rail is full-bleed with neighbours peeking in; arrows and the scroll bar appear once there is more than one video. The lede gets a beating pixel heart.
chore(www): allow ngrok hosts on the dev server
feat(www): spread hero extension tiles to all four corners
Tiles now fill the top corners too, keeping the middle band clear. Small screens, where tiles grow and slots are few, fill every slot, and resting tiles are lifted a tenth from dim toward lit so their labels read.
Small screens have few tile slots, each with a fixed dither threshold, so whole corners went dark. There, tiles stay visible and each corner keeps up to three slots nearest its own corner.