feat: Vision 2026 — osprotocol, SDK, ops, and full agentic stack#545
Open
synerbot[bot] wants to merge 128 commits intomainfrom
Open
feat: Vision 2026 — osprotocol, SDK, ops, and full agentic stack#545synerbot[bot] wants to merge 128 commits intomainfrom
synerbot[bot] wants to merge 128 commits intomainfrom
Conversation
Enables any new Claude session to automatically find, claim, and implement vision-2026 issues by following the documented workflow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Foundation package for the agent execution protocol — context, action, verification lifecycle. Follows monorepo conventions from packages/syner. Closes #263 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Define SkillManifestV2 extending current SKILL.md fields with preconditions, effects, verification, inputs, outputs, visibility, and notFor. All new fields are optional — v1 SKILL.md still valid. Closes #268 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Operational layer package for friction logging, self-development, and supervisor contracts. Depends on @syner/osprotocol. Closes #271 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Define OspAction, Precondition, and Effect interfaces with createAction and checkPreconditions helpers. Actions declare what an agent is about to do with pre-conditions and expected effects. Closes #265 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Define OspVerification, Assertion, and Escalation interfaces with verify and escalate helpers. Verification checks whether an action produced its intended effects and supports rollback/escalation on failure. Closes #266 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Define OspContext and ContextSource interfaces with createContext helper. Context captures what an agent knows before acting — loaded sources, missing data, and chain linkage via parentContext. Closes #264 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Define ChangeCategory (skill-tweak | new-skill | structural), MetricThreshold, and ChangeProposal types per DEC-001. These types govern the self-development loop's proposal system. Closes #272 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Parse SKILL.md files into SkillManifestV2 via gray-matter frontmatter plus structured markdown sections (Preconditions, Effects, Inputs, Outputs, I am NOT). Backwards compatible — parses all 62 existing v1 SKILL.md files without error. Closes #269 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Define OspResult<T> — the complete lifecycle of one agent action, composing context, action, and verification. Includes createResult helper and chain field for linking handoff sequences. Closes #267 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Runtime type guards for osprotocol types: validateContext, validateAction, validateVerification, validateResult. Zero external dependencies — pure field and type checking. Closes #270 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Define SupervisorDecision and DecisionCorpus types per DEC-001. Decisions require reason + reviewer. JSDoc enforces that the supervisor must be a separate entity from the agent being evaluated. Closes #273 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Replace raw frontmatter parsing with parseSkillManifest() from @syner/osprotocol. Adds manifest: SkillManifestV2 field to Skill type. Backwards compatible — existing code using Skill unchanged. Closes #276 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add optional protocol field with version and capabilities to AgentCard. Existing agents without protocol field load unchanged. Closes #277 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Makes any Next.js app a discoverable agent. Reads SKILL.md from project root via parseSkillManifest(), adds /agent rewrite to /api/agent. Zero breaking changes to existing config. Closes #278 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Log failed OspResults as structured FrictionEvents to .syner/ops/friction.jsonl. Tracks skillRef, failureType, frequency, and temporal range. Reads existing log to update frequency counts for recurring failures. Closes #274 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Wrap session generation in osprotocol lifecycle: context, action, verification. GenerateResult preserved as result.output. All handlers (Slack, GitHub, Chat API) updated to access result.output. Also fixes .js import extensions across osprotocol and ops packages for webpack/Next.js compatibility. Closes #282 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
feat: wrap skill tool invocation in osprotocol lifecycle Skill tool now returns OspResult with context, action, and verification. Raw text output available via result.output. Tracks duration and verification status per skill invocation. Closes #280 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Request handler that wraps execution in full osprotocol lifecycle: context → check preconditions → action → execute → verify → result. Returns 412 with unmet list on precondition failure. Closes #279 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Tools work as before by default. When osprotocol: true is passed to createTools(), each tool invocation is wrapped in context → action → verification lifecycle with duration tracking. Closes #281 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add SKILL.md v2 with preconditions, effects, inputs/outputs, and visibility. Add /agent route that returns SkillManifestV2 JSON. Closes #286 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add SKILL.md v2 with preconditions, effects, inputs/outputs, and visibility. Add /agent route that returns SkillManifestV2 JSON. Closes #287 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
feat: add verification and failure logging to Slack handler Log verification status, duration, and failed assertions when session.generate() returns a failed OspResult. Closes #284 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Chain of steps producing linked OspResults that break on failure. Results linked via chain UUID. Failed steps escalate to caller and halt the chain. Closes #283 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Groups friction events by skill+failure type and detects recurring patterns within a configurable time window. Assigns severity levels and suggests change categories based on frequency thresholds. Closes #275 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
feat(bot): add osprotocol verification to GitHub webhook handler Wraps generateText with context/action/verification lifecycle, logs OspResult status and duration, warns on failed assertions. Closes #285 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
session.generate() now returns OspResult<GenerateResult> with full context, action, verification, and duration tracking. GenerateResult is preserved as result.output. Updated Slack webhook and command handlers to use result.output.text. Also fixes osprotocol barrel imports to drop .js extensions for Next.js transpilePackages compatibility. Closes #282 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
feat(bot): GET /agent returns public SkillManifestV2 listing (#290) Enhance agent route to aggregate all public skills from the registry and return them alongside the bot's own manifest. Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
feat: add skill visibility filtering (public/instance/private) Filter skills by visibility field from SkillManifestV2. Default: instance. New helpers: getPublicSkills(), getInstanceSkills(), getPrivateSkills(app). Closes #292 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
feat: add candidate generator for self-development loop Generates typed ChangeProposal from FrictionPattern. Categorizes changes (skill-tweak/new-skill/structural) and estimates metric thresholds. Closes #293 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* docs(dev): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(dev): address code review feedback on README + AGENTS - Fix skill count from 19 to 18 (excludes _find-ideas with _ prefix) - Fix category casing: "dev" → "Dev" to match SDK source -- syner/dev Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(ui): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(ui): address code review feedback on README + AGENTS - Fix install command to workspace pattern - Clarify font aliases (geistSans is alias for GeistSans) - Add lucide-react to AGENTS.md Dependencies table - Fix constraint 6: undefined behavior, not silent failure - Add theme provider note for dynamic dark mode switching - Note Radix WAI-ARIA accessibility defaults -- syner/ui Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(vaults): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(vaults): address code review feedback on AGENTS.md - Fix channel nesting: move under metadata: to match agents/vaults.md - Add user-invoked note for vaults-grow-specialist - Add state file initialization note for fresh machines -- syner/vaults Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(bot): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(bot): address code review feedback — delegate URL bug + docs - Fix delegate URL: /agent → /api/agent (blocking production bug) - Note step count difference in README (15 webhook vs 10 createSession) - Document chain intent silent fallback in AGENTS.md Status table -- syner/bot Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(ops): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(ops): address code review feedback on README + AGENTS - Correct logFriction frequency description (append-per-call, not in-place update) - Change "6 checks" to "up to 6 checks" for validateRemoteResult - Fix install command to workspace pattern - Note empty-test-suite vacuous truth in evaluate() - Add unbounded growth warning for friction JSONL -- syner/ops Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
docs(github): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(vercel): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(vercel): address code review feedback on README + AGENTS - Fix errors table source: executeEditWithSandbox → createEditTool - Fix missing-entry string to use em dash matching source - Rewrite constraint #10 as known limitation (preconditions always met) - Add default comment to SkillConfig.context - Document $N 0-based indexing in buildSkillInstructions - Add createToolsByName pointer in README -- syner/vercel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(osprotocol): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(osprotocol): address code review feedback on README + AGENTS - Mark reason/timestamp as optional in validateApproval table - Note verify() vacuous truth with empty effects - Fix install command to workspace pattern -- syner/osprotocol Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(sdk): split proposal into README.md + AGENTS.md Split the dual-audience proposal into developer-facing README.md and agent-facing AGENTS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(sdk): address code review feedback on README + AGENTS - Add anthropic/ prefix to FALLBACK_MODELS values - Note getPrivateSkills returns [] for apps with no private skills - Clarify SkillsRegistry is not exported as a type - Clarify targeted scope query source in constraint #10 - Fix install command to workspace pattern -- syner/sdk Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: resolve build errors across bot, design, vaults, and sdk - vaults: add createMDX() wrapper for Turbopack MDX support - design: switch /api/slides/generate from edge to nodejs runtime - bot: extract registerApproval from route to lib/supervisor.ts - bot: fix ToolSet type and inputSchema union inference - bot: move providerOptions from generate() to ToolLoopAgent constructor - bot: import AgentSandbox from @syner/vercel instead of @vercel/sandbox - sdk: refactor getModel/getModelFallbacks into resolveModel(tier) Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This was referenced Mar 15, 2026
Contributor
|
On-hold until code review is finished (issues referenced) |
* feat(osprotocol): rename SkillManifest → Skill (#555) Primitives first — the protocol type gets the clean name. - Rename SkillManifest to Skill in types/skill.ts - Remove SkillManifestV2 deprecated alias - Update parser.ts and index.ts internal references - Consumers update in their own issues Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(osprotocol): align Skill interface with agentskills.io spec Strip invented fields nobody uses (preconditions, effects, verification, inputs, outputs, notFor, category, visibility). Align with the official Agent Skills spec: name, description, license, compatibility, metadata. metadata is now Record<string, string> — the spec's extension point. Parser simplified from 143 to 30 lines — no more 3-tier priority parsing for fields that never existed in any SKILL.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Delete vault-{read,write,delete,list,glob}.ts and their exports.
Vaults are filesystem-only — no Blob storage needed.
Closes #558
Co-authored-by: Ronny Badilla <info@ronnybadilla.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(osprotocol): align Run lifecycle with Vercel Workflow spec RunStatus 9→6 states, rewrite Approval shape, add Cancel interface, update validTransitions and validators to match osprotocol.dev spec. Closes #556 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(osprotocol): migrate validators to zod schemas Zod schemas become the single source of truth — types are inferred via z.infer, validators use .safeParse(), and deprecated Osp* aliases are removed. ~240 lines of manual validation replaced by ~140 lines of declarative schemas. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Delete blob-vault-store.ts, clean exports, remove @vercel/blob and picomatch deps. FileSystemVaultStore is the only vault store. Closes #560 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat(osprotocol,vercel): RunAdapter interface + VercelRunAdapter implementation OSProtocol defines the RunAdapter contract (start, get, cancel, approve) plus RunRequest and RunEvent types. @syner/vercel implements it as VercelRunAdapter with adapter helpers for approval tokens, timeout strategies, retry/backoff, beforeCancel veto, and progress events. Closes #575 Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(vercel,sdk): wire Workflow + clean SDK imports - Install workflow + @workflow/ai in @syner/vercel - Wire VercelRunAdapter to real workflow/api primitives (start, Run.status, Run.cancel) - Re-export DurableAgent from @workflow/ai/agent - Fix SkillManifest → Skill across agent-handler.ts, with-syner.ts - Fix OspResult → Result in tools/skill.ts - Fix SDK SkillManifest → Skill as OspSkill in skills/types.ts - Fix visibility read from manifest.metadata in skills/loader.ts - Remove BlobVaultStore reference from vault-store.ts comment Closes #583 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(sdk): unify Skill type — use osprotocol Skill with metadata Eliminate the SDK's duplicate Skill interface. The osprotocol Skill type is the standard (agentskills.io compatible). Runtime enrichment fields (slug, category, visibility, version, author) now live in metadata. - Remove SDK Skill interface, re-export osprotocol Skill - SkillContent becomes Skill & { content: string } - Loader populates metadata with slug, category, visibility - Update all consumers: skill.slug → skill.name, skill.category → skill.metadata?.category - Fix SkillManifest → Skill in apps/dev candidate.ts and apps/bot instance.ts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: skills architecture prerequisites (#585, #586, #587, #588, #589) Pre-Epic 2 skills architecture — LLM-driven routing replaces regex classification. - sdk: buildSkillsManifest() scans skill dirs, outputs index.json (#585) - osprotocol: remove RunRequest.tools field (no consumer) (#586) - vercel: remove createTools/createToolsByName (tools imported standalone) (#586) - vercel: redesign Skill tool — context injection, not subagent (#587) - vercel: create Run tool — agent starts durable workflows via RunAdapter (#589) - bot: delete router.ts regex classifier, LLM decides via tools (#588) - bot: update Slack handler to use session directly - bot: add routing guidance to agents/bot.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: rename Run tool → Workflow per #588/#589 feedback Tool naming convention from @rbadillap: Skill, Agent, Workflow. - Rename run.ts → workflow.ts - createRunTool → createWorkflowTool - CreateRunToolOptions → CreateWorkflowToolOptions - Update SpecialToolName to include Workflow - Update bot agent routing table - Update skip list in registry (Task → Workflow) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: rename Workflow tool → Task Tool naming: Skill, Agent, Task. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(vercel): remove SpecialToolName, SandboxToolName, ToolName types Dead types from the createTools() era — no consumers remain. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(vercel,bot): Skill tool with prepareStep injection (#587) Hybrid pattern matching Claude Code's skill architecture: - Skill tool has NO execute — calling it pauses the agent loop - prepareStep detects the Skill call and injects content as user message - User message > tool result for LLM attention priority - Explicit /skillname in prompts preprocessed before the loop starts - Skill descriptions always in system prompt (agent knows what's available) - SkillLoader class encapsulates all skill loading + tool creation + prepareStep Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(vercel): validate skill against index before disk I/O - Add has() method for explicit index validation - prepareStep: validate index → clear error if not found, separate error if on-disk missing - preprocessPrompt: check index before loading from disk Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(vercel): add build-skill-manifest script + generated index.json Script scans all skill directories, builds index.json, and verifies the full SkillLoader pipeline: has(), loadContent(), preprocessPrompt(), and createPrepareStep() with simulated tool calls. 31 skills discovered across all apps. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(vercel): move build-skill-manifest to skills/ structure scripts/ → skills/build-skill-manifest/scripts/run.ts Added SKILL.md. Follows same pattern as packages/github/skills/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(vercel): Skill tool execute returns true, prepareStep only injects user message Without execute, AI SDK treats the tool as a stop signal and terminates the loop. execute: async () => true keeps the loop running. prepareStep simplified: only appends skill content as user message. Tool result (true) is already in messages from execute. Unknown skills: prepareStep returns {} (no injection, LLM sees true and moves on). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(sdk): add Tools contracts — SDK defines, adapters implement Tools.Bash, Tools.Read, Tools.Skill, etc. define name, description, and inputSchema (zod). Adapters (@syner/vercel, etc.) implement execute. Agent definitions declare tool names, the runtime resolves implementations. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rcel (#591) * fix(vercel): fix exports after squash merge — SkillLoader, not createSkillTool Squash merge of #584 left stale exports referencing createSkillTool which was replaced by SkillLoader class. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(bot,vercel): true thin consumer — bot only imports @syner/vercel 8 fixes from code review: 1. Split skills system (SkillLoader, SkillsMap, SkillDescriptor) into src/skills/index.ts, Skill tool into src/tools/skill.ts 2. Strip src/index.ts to createRuntime + types, add ./tools subpath 3. Delete legacy filesystem scanner (src/skills/loader.ts), extend SkillDescriptor with command/agent, SkillsMap.commands() 4. Bot routes use console.* instead of @syner/sdk/logger 5. Shared runtime instance (lib/runtime.ts), agents routes use runtime.agents Map 6. runtime.card() for A2A discovery, delete card.ts 7. Slash commands use runtime.skills.commands() 8. Remove @syner/sdk and @syner/osprotocol from bot deps Also: async SkillLoader (fs/promises), load→start rename, regenerated index.json with command/agent fields, deleted agent-handler.ts and with-syner.ts (0 consumers). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(vercel): add TODO for external snapshot cache (Redis/KV) (#593) * feat(vercel): use Sandbox source + snapshots for faster startup Replace manual git clone with native Vercel Sandbox source parameter and add snapshot caching. First generate() call creates sandbox from git source and snapshots it. Subsequent calls restore from snapshot (milliseconds instead of full clone). - Use source: { url, type: 'git' } instead of manual runCommand clone - Add in-memory snapshot cache keyed by repo+branch - Validate cached snapshots before reuse (handles expiry) - Cold path: create → snapshot → create from snapshot - Warm path: create directly from cached snapshot https://claude.ai/code/session_01Dbgkiuu4yoy7s9caDui54Q * refactor(vercel): rename createAgentSandbox → createSandbox, AgentSandbox → SandboxInstance Cleaner API surface — drop the "Agent" prefix since the sandbox module already implies agent context. Snapshot caching optimization stays intact. https://claude.ai/code/session_01Dbgkiuu4yoy7s9caDui54Q * chore(vercel): add TODO for external snapshot cache (Redis/KV) In-memory Map loses snapshot IDs when serverless instances recycle. When we add Redis/KV, this is the integration point. https://claude.ai/code/session_01Dbgkiuu4yoy7s9caDui54Q * refactor(vercel): drop SandboxInstance alias, use Sandbox directly No need for a type alias that just copies the original. Re-export `Sandbox` type from sandbox.ts for consumers. https://claude.ai/code/session_01Dbgkiuu4yoy7s9caDui54Q --------- Co-authored-by: Claude <noreply@anthropic.com> --------- Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…isclosure + dead code (#595) refactor(vercel,ops,design,vaults): kill SkillLoader, progressive disclosure, cleanup dead code SkillsMap cleanup: - Move describe() to SkillsMap (domain method on collection, like commands()) - Kill SkillLoader class — replaced by loadSkills() pure function - Create src/skills/loader.ts with loadSkills() + loadSkillContent() - Delete preprocessPrompt (LLM decides routing via Skill tool, not regex) - In-memory content cache with TODO for Redis/Vercel KV Progressive disclosure (agentskills.io spec): - Build script generates per-skill {name}.json with pre-rendered content - Runtime loads index.json at startup (metadata), {name}.json on activation (lazy) - Zero filesystem scanning at runtime — works in Vercel serverless - Path traversal defense: /^[a-z0-9-]+$/ validation on skill names #566 — ops: Remove all 12 deprecated type aliases (FrictionPattern, ChangeCategory, MetricThreshold, TestCase, MetricResult, etc.) Update consumers in apps/dev/lib/self-dev/ #570 — vaults: Delete deck-parser.ts, og route, remove gray-matter and fumadocs-ui deps #571 — design: Delete app/api/slides/ (2 routes), remove @vercel/blob and nanoid deps Bonus: Fix pre-existing type bugs in dev deploy.ts + corpus.ts (Approval.decision → Approval.approved, .reviewer → .approvedBy) Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…596) feat(design,vaults): migrate deck pipeline from vaults to design #572 — vaults→design migration: - Move source.config.ts, lib/source.ts, content/decks/, app/decks/[slug]/page.tsx - Add fumadocs-core + fumadocs-mdx deps to design - Add postinstall script + createMDX() wrapper in next.config.ts - /decks/example pre-rendered via generateStaticParams (SSG) #573 — vaults cleanup after migration: - Remove all deck files, fumadocs deps, postinstall script - Revert next.config.ts to vanilla Next.js #574 — build-time slide pipeline: - Design uses generateStaticParams for static deck pages - No runtime API, no Blob storage — pure build-time generation Co-authored-by: Ronny Badilla <info@ronnybadilla.com> Co-authored-by: Claude Opus 4.6 (1M context) <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.
syner/vision-2026
121 commits · 180 files · ~10,400 lines added
Motivation
This is the Vision 2026 integration branch — the full agentic runtime stack that transforms Syner from a skill orchestrator into an agent-native platform with protocol-level verification, self-development capabilities, and cross-instance communication.
What changed
New packages
@syner/osprotocol— Protocol types, SKILL.md v2 parser, runtime validators, Run lifecycle, OspResult/OspContext/OspAction/OspVerification core types@syner/ops— Operational runtime: friction analyzer, boundary crossing verification, sandbox evaluator, remote invocation, supervisor contracts@syner/sdk(renamed frompackages/syner) — Core orchestrator withresolveSkill(),resolveContext(),executeSkill(), VaultStore interface (filesystem + Blob), agent model provisioningEnhanced packages
@syner/vercel—createAgentHandler(), Edit tool for sandbox, Vault AI tools (read/write/glob/list/delete),withSyner()Next.js wrapper,executeSkill()bridge@syner/github—getIssue(),listIssues(),removeLabel(),closeIssue(),readThread(), token caching@syner/ui— Slide template registry (title, highlights, metrics, outlook, custom), Satori font exports@syner/slack— Agent definition rewrite for capability descriptionApps
Infrastructure
How it works
The stack flows through osprotocol types at every boundary: skill resolution returns typed manifests, execution produces verified results, cross-instance calls use boundary crossing verification, and the supervisor gate controls approval workflows.
Test plan
bun installsucceedsbun run buildpasses across all packages and appsBreaking changes
packages/synerrenamed topackages/sdk(@syner/sdk)packages/create-syner-agenteliminated (merged into bot)syner/vision-2026