Shrink workload-router: drop persona-domain re-exports (1.0.0) - #79

Merged
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO
May 11, 2026
Merged

Shrink workload-router: drop persona-domain re-exports (1.0.0)#79
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO

Conversation

@willwashburn

Copy link
Copy Markdown
Member

Closes#68 (persona-kit 5/8).

Summary

Deletes every persona-shape symbol that @agentworkforce/workload-router was re-exporting from @agentworkforce/persona-kit. After this PR, workload-router only owns routing-domain code; persona constants, types, parsing, and skill materialization live exclusively in persona-kit.

What changed

packages/workload-router/src/index.ts

  • Dropped the export { ... } from '@agentworkforce/persona-kit' and export type { ... } from '@agentworkforce/persona-kit' blocks that forwarded:
    • Constants: HARNESS_VALUES, PERSONA_TIERS, PERSONA_TAGS, SIDECAR_MD_MODES, PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES, SKILL_SOURCE_KINDS, HARNESS_SKILL_TARGETS, BUILT_IN_PERSONA_INTENTS, PERSONA_INTENTS.
    • Types: Harness, PersonaTier, PersonaTag, HarnessSettings, PersonaRuntime, PersonaSkill, PersonaInputSpec, PersonaPermissions, PersonaMount, McpServerSpec, PersonaSpec, HarnessSkillTarget, SkillMaterializationOptions, SkillInstall, SkillMaterializationPlan, PersonaInstallContext, PersonaContext, SidecarMdMode, CodexSandboxMode, CodexApprovalPolicy, PermissionMode, PersonaIntent, PersonaSelection, SkillSourceKind.
    • Functions: materializeSkills, materializeSkillsFor, parseSkills, parsePersonaSpec, buildInstallArtifacts, resolveSkillSource, resolveSidecar.

What stays in workload-router: RoutingProfile, RoutingProfileRule, RoutingProfileId, personaCatalog, listBuiltInPersonas, routingProfiles, resolvePersona, resolvePersonaByTier, usePersona, useSelection, and ./eval (evidence/owner-decision types).

Consumers updated to import persona-domain symbols directly from @agentworkforce/persona-kit:

  • packages/cli/src/launch-metadata.ts and launch-metadata.test.ts
  • packages/cli/src/local-personas.test.ts
  • packages/harness-kit/src/runner.ts and runner.test.ts
  • packages/workload-router/src/eval.ts (internal PersonaIntent / PersonaTier import)
  • packages/workload-router/src/index.test.ts

Version + changelog

  • packages/workload-router/package.json: 0.19.01.0.0 (breaking — no back-compat shim).
  • Added a 1.0.0 entry to packages/workload-router/CHANGELOG.md documenting the dropped surface.

Minor

  • Replaced a stale {@link import('@agentworkforce/workload-router').SkillMaterializationOptions...} JSDoc reference inside persona-kit with a local link.

Verification

  • pnpm -r build — all workspaces build clean.
  • pnpm -r test — 252/252 tests pass across persona-kit, workload-router, harness-kit, cli, and agentworkforce.
  • grep -rEn "from '@agentworkforce/workload-router'" packages/cli packages/persona-kit packages/harness-kit packages/agentworkforce — only listBuiltInPersonas, personaCatalog, routingProfiles, usePersona, useSelection, RoutingProfile, RoutingProfileId, and resolvePersona remain. No persona-domain symbols.

Notes

  • Relay's SDK still pins @agentworkforce/workload-router@^0.11.0; per the issue, that migration is relay-side and is intentionally untouched here.
  • packages/workload-router/src/generated/personas.ts and its build script are unchanged — the catalog stays.

Test plan

  • pnpm -r build
  • pnpm -r test
  • agentworkforce smoke test (claude/codex/opencode harnesses) — to be exercised post-merge per release flow

https://claude.ai/code/session_01KNNaWc1Mztn36DqDAxPfXv


Generated by Claude Code

Removes all persona-shape constants, types, and functions that were
previously forwarded from @agentworkforce/persona-kit through
@agentworkforce/workload-router. Consumers (workforce CLI, harness-kit,
and the workload-router test suite itself) now import those symbols
directly from persona-kit.
After this change, workload-router's public surface is routing-only:
RoutingProfile/RoutingProfileRule/RoutingProfileId, personaCatalog,
listBuiltInPersonas, routingProfiles, resolvePersona,
resolvePersonaByTier, usePersona, useSelection, and the evidence /
owner-decision exports from ./eval.
Breaking change for any external consumer that imported persona-domain
symbols from @agentworkforce/workload-router; no back-compat shim.
Version bumped 0.19.0 -> 1.0.0.
Closes#68
@coderabbitai

coderabbitaiBot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c3b1358a-6dd2-4bb5-8d51-18d5040b18cc

📥 Commits

Reviewing files that changed from the base of the PR and between a959028 and f7954f3.

📒 Files selected for processing (1)
  • examples/openclaw-routing.ts
✅ Files skipped from review due to trivial changes (1)
  • examples/openclaw-routing.ts

📝 Walkthrough

Walkthrough

This PR removes persona-domain re-exports from @agentworkforce/workload-router, moves persona-type imports in consumers to @agentworkforce/persona-kit, updates docs/tests, and bumps workload-router to v1.0.0 to signal the breaking change.

Changes

Persona-Kit Consolidation

Layer / File(s)Summary
Core Breaking Change
packages/workload-router/src/index.ts, packages/workload-router/CHANGELOG.md
Removed persona-kit re-exports from workload-router index and documented the breaking change in CHANGELOG (v1.0.0).
Package Version Bump
packages/workload-router/package.json
Version updated from 0.19.0 to 1.0.0.
Workload-router Internal Imports
packages/workload-router/src/eval.ts, packages/workload-router/src/index.test.ts
Switched persona type imports to @agentworkforce/persona-kit and reordered imports in tests.
harness-kit Consumer Updates
packages/harness-kit/src/runner.ts, packages/harness-kit/src/runner.test.ts
runner.ts removes persona types from workload-router import and expands persona-kit imports; runner.test.ts updates PersonaSelection import source.
CLI Consumer Updates
packages/cli/src/launch-metadata.ts, packages/cli/src/launch-metadata.test.ts, packages/cli/src/local-personas.test.ts
CLI modules update persona-related type imports to @agentworkforce/persona-kit.
Persona-Kit Documentation Update
packages/persona-kit/src/interactive-spec.ts
JSDoc link for SkillMaterializationOptions.installRoot updated to remove explicit workload-router import qualifier.
Examples import cleanup
examples/openclaw-routing.ts
Split combined import into separate imports to match updated export locations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit hops through the import lanes,
Routing profiles stay, personas move with grace,
From workload-router's shrinking reins,
To persona-kit's rightful place.
Version one, the breaking way—
Cleaner deps to code and play! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely summarizes the main change: dropping persona-domain re-exports from workload-router and bumping to version 1.0.0.
Description check✅ PassedThe description is detailed and directly related to the changeset, covering what was deleted, what stays, and verification steps taken.
Linked Issues check✅ PassedAll coding objectives from issue #68 are met: persona-domain re-exports deleted from index.ts, internal imports updated to use persona-kit, version bumped to 1.0.0, and verification items completed.
Out of Scope Changes check✅ PassedAll changes are directly related to removing persona re-exports and updating consumers to import from persona-kit; no unrelated modifications detected.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/submit-pr-for-issue-teqBO

Comment @coderabbitai help to get the list of available commands and usage tips.

The openclaw-routing example was still pulling PersonaIntent through
workload-router, which broke the examples typecheck after the
persona-domain re-exports were dropped.

@devin-ai-integrationdevin-ai-integrationBot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Sign up for freeto 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.

[persona-kit 5/8] Shrink @agentworkforce/workload-router (drop persona types, major bump)

2 participants

@willwashburn@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Shrink workload-router: drop persona-domain re-exports (1.0.0) - #79

Merged
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO
May 11, 2026
Merged

Shrink workload-router: drop persona-domain re-exports (1.0.0)#79
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO

Conversation

@willwashburn

Copy link
Copy Markdown
Member

Closes#68 (persona-kit 5/8).

Summary

Deletes every persona-shape symbol that @agentworkforce/workload-router was re-exporting from @agentworkforce/persona-kit. After this PR, workload-router only owns routing-domain code; persona constants, types, parsing, and skill materialization live exclusively in persona-kit.

What changed

packages/workload-router/src/index.ts

  • Dropped the export { ... } from '@agentworkforce/persona-kit' and export type { ... } from '@agentworkforce/persona-kit' blocks that forwarded:
    • Constants: HARNESS_VALUES, PERSONA_TIERS, PERSONA_TAGS, SIDECAR_MD_MODES, PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES, SKILL_SOURCE_KINDS, HARNESS_SKILL_TARGETS, BUILT_IN_PERSONA_INTENTS, PERSONA_INTENTS.
    • Types: Harness, PersonaTier, PersonaTag, HarnessSettings, PersonaRuntime, PersonaSkill, PersonaInputSpec, PersonaPermissions, PersonaMount, McpServerSpec, PersonaSpec, HarnessSkillTarget, SkillMaterializationOptions, SkillInstall, SkillMaterializationPlan, PersonaInstallContext, PersonaContext, SidecarMdMode, CodexSandboxMode, CodexApprovalPolicy, PermissionMode, PersonaIntent, PersonaSelection, SkillSourceKind.
    • Functions: materializeSkills, materializeSkillsFor, parseSkills, parsePersonaSpec, buildInstallArtifacts, resolveSkillSource, resolveSidecar.

What stays in workload-router: RoutingProfile, RoutingProfileRule, RoutingProfileId, personaCatalog, listBuiltInPersonas, routingProfiles, resolvePersona, resolvePersonaByTier, usePersona, useSelection, and ./eval (evidence/owner-decision types).

Consumers updated to import persona-domain symbols directly from @agentworkforce/persona-kit:

  • packages/cli/src/launch-metadata.ts and launch-metadata.test.ts
  • packages/cli/src/local-personas.test.ts
  • packages/harness-kit/src/runner.ts and runner.test.ts
  • packages/workload-router/src/eval.ts (internal PersonaIntent / PersonaTier import)
  • packages/workload-router/src/index.test.ts

Version + changelog

  • packages/workload-router/package.json: 0.19.01.0.0 (breaking — no back-compat shim).
  • Added a 1.0.0 entry to packages/workload-router/CHANGELOG.md documenting the dropped surface.

Minor

  • Replaced a stale {@link import('@agentworkforce/workload-router').SkillMaterializationOptions...} JSDoc reference inside persona-kit with a local link.

Verification

  • pnpm -r build — all workspaces build clean.
  • pnpm -r test — 252/252 tests pass across persona-kit, workload-router, harness-kit, cli, and agentworkforce.
  • grep -rEn "from '@agentworkforce/workload-router'" packages/cli packages/persona-kit packages/harness-kit packages/agentworkforce — only listBuiltInPersonas, personaCatalog, routingProfiles, usePersona, useSelection, RoutingProfile, RoutingProfileId, and resolvePersona remain. No persona-domain symbols.

Notes

  • Relay's SDK still pins @agentworkforce/workload-router@^0.11.0; per the issue, that migration is relay-side and is intentionally untouched here.
  • packages/workload-router/src/generated/personas.ts and its build script are unchanged — the catalog stays.

Test plan

  • pnpm -r build
  • pnpm -r test
  • agentworkforce smoke test (claude/codex/opencode harnesses) — to be exercised post-merge per release flow

https://claude.ai/code/session_01KNNaWc1Mztn36DqDAxPfXv


Generated by Claude Code

Removes all persona-shape constants, types, and functions that were
previously forwarded from @agentworkforce/persona-kit through
@agentworkforce/workload-router. Consumers (workforce CLI, harness-kit,
and the workload-router test suite itself) now import those symbols
directly from persona-kit.
After this change, workload-router's public surface is routing-only:
RoutingProfile/RoutingProfileRule/RoutingProfileId, personaCatalog,
listBuiltInPersonas, routingProfiles, resolvePersona,
resolvePersonaByTier, usePersona, useSelection, and the evidence /
owner-decision exports from ./eval.
Breaking change for any external consumer that imported persona-domain
symbols from @agentworkforce/workload-router; no back-compat shim.
Version bumped 0.19.0 -> 1.0.0.
Closes#68
@coderabbitai

coderabbitaiBot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c3b1358a-6dd2-4bb5-8d51-18d5040b18cc

📥 Commits

Reviewing files that changed from the base of the PR and between a959028 and f7954f3.

📒 Files selected for processing (1)
  • examples/openclaw-routing.ts
✅ Files skipped from review due to trivial changes (1)
  • examples/openclaw-routing.ts

📝 Walkthrough

Walkthrough

This PR removes persona-domain re-exports from @agentworkforce/workload-router, moves persona-type imports in consumers to @agentworkforce/persona-kit, updates docs/tests, and bumps workload-router to v1.0.0 to signal the breaking change.

Changes

Persona-Kit Consolidation

Layer / File(s)Summary
Core Breaking Change
packages/workload-router/src/index.ts, packages/workload-router/CHANGELOG.md
Removed persona-kit re-exports from workload-router index and documented the breaking change in CHANGELOG (v1.0.0).
Package Version Bump
packages/workload-router/package.json
Version updated from 0.19.0 to 1.0.0.
Workload-router Internal Imports
packages/workload-router/src/eval.ts, packages/workload-router/src/index.test.ts
Switched persona type imports to @agentworkforce/persona-kit and reordered imports in tests.
harness-kit Consumer Updates
packages/harness-kit/src/runner.ts, packages/harness-kit/src/runner.test.ts
runner.ts removes persona types from workload-router import and expands persona-kit imports; runner.test.ts updates PersonaSelection import source.
CLI Consumer Updates
packages/cli/src/launch-metadata.ts, packages/cli/src/launch-metadata.test.ts, packages/cli/src/local-personas.test.ts
CLI modules update persona-related type imports to @agentworkforce/persona-kit.
Persona-Kit Documentation Update
packages/persona-kit/src/interactive-spec.ts
JSDoc link for SkillMaterializationOptions.installRoot updated to remove explicit workload-router import qualifier.
Examples import cleanup
examples/openclaw-routing.ts
Split combined import into separate imports to match updated export locations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit hops through the import lanes,
Routing profiles stay, personas move with grace,
From workload-router's shrinking reins,
To persona-kit's rightful place.
Version one, the breaking way—
Cleaner deps to code and play! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely summarizes the main change: dropping persona-domain re-exports from workload-router and bumping to version 1.0.0.
Description check✅ PassedThe description is detailed and directly related to the changeset, covering what was deleted, what stays, and verification steps taken.
Linked Issues check✅ PassedAll coding objectives from issue #68 are met: persona-domain re-exports deleted from index.ts, internal imports updated to use persona-kit, version bumped to 1.0.0, and verification items completed.
Out of Scope Changes check✅ PassedAll changes are directly related to removing persona re-exports and updating consumers to import from persona-kit; no unrelated modifications detected.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/submit-pr-for-issue-teqBO

Comment @coderabbitai help to get the list of available commands and usage tips.

The openclaw-routing example was still pulling PersonaIntent through
workload-router, which broke the examples typecheck after the
persona-domain re-exports were dropped.

@devin-ai-integrationdevin-ai-integrationBot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Sign up for freeto 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.

[persona-kit 5/8] Shrink @agentworkforce/workload-router (drop persona types, major bump)

2 participants

@willwashburn@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Shrink workload-router: drop persona-domain re-exports (1.0.0) - #79

Merged
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO
May 11, 2026
Merged

Shrink workload-router: drop persona-domain re-exports (1.0.0)#79
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO

Conversation

@willwashburn

Copy link
Copy Markdown
Member

Closes#68 (persona-kit 5/8).

Summary

Deletes every persona-shape symbol that @agentworkforce/workload-router was re-exporting from @agentworkforce/persona-kit. After this PR, workload-router only owns routing-domain code; persona constants, types, parsing, and skill materialization live exclusively in persona-kit.

What changed

packages/workload-router/src/index.ts

  • Dropped the export { ... } from '@agentworkforce/persona-kit' and export type { ... } from '@agentworkforce/persona-kit' blocks that forwarded:
    • Constants: HARNESS_VALUES, PERSONA_TIERS, PERSONA_TAGS, SIDECAR_MD_MODES, PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES, SKILL_SOURCE_KINDS, HARNESS_SKILL_TARGETS, BUILT_IN_PERSONA_INTENTS, PERSONA_INTENTS.
    • Types: Harness, PersonaTier, PersonaTag, HarnessSettings, PersonaRuntime, PersonaSkill, PersonaInputSpec, PersonaPermissions, PersonaMount, McpServerSpec, PersonaSpec, HarnessSkillTarget, SkillMaterializationOptions, SkillInstall, SkillMaterializationPlan, PersonaInstallContext, PersonaContext, SidecarMdMode, CodexSandboxMode, CodexApprovalPolicy, PermissionMode, PersonaIntent, PersonaSelection, SkillSourceKind.
    • Functions: materializeSkills, materializeSkillsFor, parseSkills, parsePersonaSpec, buildInstallArtifacts, resolveSkillSource, resolveSidecar.

What stays in workload-router: RoutingProfile, RoutingProfileRule, RoutingProfileId, personaCatalog, listBuiltInPersonas, routingProfiles, resolvePersona, resolvePersonaByTier, usePersona, useSelection, and ./eval (evidence/owner-decision types).

Consumers updated to import persona-domain symbols directly from @agentworkforce/persona-kit:

  • packages/cli/src/launch-metadata.ts and launch-metadata.test.ts
  • packages/cli/src/local-personas.test.ts
  • packages/harness-kit/src/runner.ts and runner.test.ts
  • packages/workload-router/src/eval.ts (internal PersonaIntent / PersonaTier import)
  • packages/workload-router/src/index.test.ts

Version + changelog

  • packages/workload-router/package.json: 0.19.01.0.0 (breaking — no back-compat shim).
  • Added a 1.0.0 entry to packages/workload-router/CHANGELOG.md documenting the dropped surface.

Minor

  • Replaced a stale {@link import('@agentworkforce/workload-router').SkillMaterializationOptions...} JSDoc reference inside persona-kit with a local link.

Verification

  • pnpm -r build — all workspaces build clean.
  • pnpm -r test — 252/252 tests pass across persona-kit, workload-router, harness-kit, cli, and agentworkforce.
  • grep -rEn "from '@agentworkforce/workload-router'" packages/cli packages/persona-kit packages/harness-kit packages/agentworkforce — only listBuiltInPersonas, personaCatalog, routingProfiles, usePersona, useSelection, RoutingProfile, RoutingProfileId, and resolvePersona remain. No persona-domain symbols.

Notes

  • Relay's SDK still pins @agentworkforce/workload-router@^0.11.0; per the issue, that migration is relay-side and is intentionally untouched here.
  • packages/workload-router/src/generated/personas.ts and its build script are unchanged — the catalog stays.

Test plan

  • pnpm -r build
  • pnpm -r test
  • agentworkforce smoke test (claude/codex/opencode harnesses) — to be exercised post-merge per release flow

https://claude.ai/code/session_01KNNaWc1Mztn36DqDAxPfXv


Generated by Claude Code

Removes all persona-shape constants, types, and functions that were
previously forwarded from @agentworkforce/persona-kit through
@agentworkforce/workload-router. Consumers (workforce CLI, harness-kit,
and the workload-router test suite itself) now import those symbols
directly from persona-kit.
After this change, workload-router's public surface is routing-only:
RoutingProfile/RoutingProfileRule/RoutingProfileId, personaCatalog,
listBuiltInPersonas, routingProfiles, resolvePersona,
resolvePersonaByTier, usePersona, useSelection, and the evidence /
owner-decision exports from ./eval.
Breaking change for any external consumer that imported persona-domain
symbols from @agentworkforce/workload-router; no back-compat shim.
Version bumped 0.19.0 -> 1.0.0.
Closes#68
@coderabbitai

coderabbitaiBot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c3b1358a-6dd2-4bb5-8d51-18d5040b18cc

📥 Commits

Reviewing files that changed from the base of the PR and between a959028 and f7954f3.

📒 Files selected for processing (1)
  • examples/openclaw-routing.ts
✅ Files skipped from review due to trivial changes (1)
  • examples/openclaw-routing.ts

📝 Walkthrough

Walkthrough

This PR removes persona-domain re-exports from @agentworkforce/workload-router, moves persona-type imports in consumers to @agentworkforce/persona-kit, updates docs/tests, and bumps workload-router to v1.0.0 to signal the breaking change.

Changes

Persona-Kit Consolidation

Layer / File(s)Summary
Core Breaking Change
packages/workload-router/src/index.ts, packages/workload-router/CHANGELOG.md
Removed persona-kit re-exports from workload-router index and documented the breaking change in CHANGELOG (v1.0.0).
Package Version Bump
packages/workload-router/package.json
Version updated from 0.19.0 to 1.0.0.
Workload-router Internal Imports
packages/workload-router/src/eval.ts, packages/workload-router/src/index.test.ts
Switched persona type imports to @agentworkforce/persona-kit and reordered imports in tests.
harness-kit Consumer Updates
packages/harness-kit/src/runner.ts, packages/harness-kit/src/runner.test.ts
runner.ts removes persona types from workload-router import and expands persona-kit imports; runner.test.ts updates PersonaSelection import source.
CLI Consumer Updates
packages/cli/src/launch-metadata.ts, packages/cli/src/launch-metadata.test.ts, packages/cli/src/local-personas.test.ts
CLI modules update persona-related type imports to @agentworkforce/persona-kit.
Persona-Kit Documentation Update
packages/persona-kit/src/interactive-spec.ts
JSDoc link for SkillMaterializationOptions.installRoot updated to remove explicit workload-router import qualifier.
Examples import cleanup
examples/openclaw-routing.ts
Split combined import into separate imports to match updated export locations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit hops through the import lanes,
Routing profiles stay, personas move with grace,
From workload-router's shrinking reins,
To persona-kit's rightful place.
Version one, the breaking way—
Cleaner deps to code and play! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely summarizes the main change: dropping persona-domain re-exports from workload-router and bumping to version 1.0.0.
Description check✅ PassedThe description is detailed and directly related to the changeset, covering what was deleted, what stays, and verification steps taken.
Linked Issues check✅ PassedAll coding objectives from issue #68 are met: persona-domain re-exports deleted from index.ts, internal imports updated to use persona-kit, version bumped to 1.0.0, and verification items completed.
Out of Scope Changes check✅ PassedAll changes are directly related to removing persona re-exports and updating consumers to import from persona-kit; no unrelated modifications detected.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/submit-pr-for-issue-teqBO

Comment @coderabbitai help to get the list of available commands and usage tips.

The openclaw-routing example was still pulling PersonaIntent through
workload-router, which broke the examples typecheck after the
persona-domain re-exports were dropped.

@devin-ai-integrationdevin-ai-integrationBot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Sign up for freeto 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.

[persona-kit 5/8] Shrink @agentworkforce/workload-router (drop persona types, major bump)

2 participants

@willwashburn@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Shrink workload-router: drop persona-domain re-exports (1.0.0) - #79

Merged
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO
May 11, 2026
Merged

Shrink workload-router: drop persona-domain re-exports (1.0.0)#79
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO

Conversation

@willwashburn

Copy link
Copy Markdown
Member

Closes#68 (persona-kit 5/8).

Summary

Deletes every persona-shape symbol that @agentworkforce/workload-router was re-exporting from @agentworkforce/persona-kit. After this PR, workload-router only owns routing-domain code; persona constants, types, parsing, and skill materialization live exclusively in persona-kit.

What changed

packages/workload-router/src/index.ts

  • Dropped the export { ... } from '@agentworkforce/persona-kit' and export type { ... } from '@agentworkforce/persona-kit' blocks that forwarded:
    • Constants: HARNESS_VALUES, PERSONA_TIERS, PERSONA_TAGS, SIDECAR_MD_MODES, PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES, SKILL_SOURCE_KINDS, HARNESS_SKILL_TARGETS, BUILT_IN_PERSONA_INTENTS, PERSONA_INTENTS.
    • Types: Harness, PersonaTier, PersonaTag, HarnessSettings, PersonaRuntime, PersonaSkill, PersonaInputSpec, PersonaPermissions, PersonaMount, McpServerSpec, PersonaSpec, HarnessSkillTarget, SkillMaterializationOptions, SkillInstall, SkillMaterializationPlan, PersonaInstallContext, PersonaContext, SidecarMdMode, CodexSandboxMode, CodexApprovalPolicy, PermissionMode, PersonaIntent, PersonaSelection, SkillSourceKind.
    • Functions: materializeSkills, materializeSkillsFor, parseSkills, parsePersonaSpec, buildInstallArtifacts, resolveSkillSource, resolveSidecar.

What stays in workload-router: RoutingProfile, RoutingProfileRule, RoutingProfileId, personaCatalog, listBuiltInPersonas, routingProfiles, resolvePersona, resolvePersonaByTier, usePersona, useSelection, and ./eval (evidence/owner-decision types).

Consumers updated to import persona-domain symbols directly from @agentworkforce/persona-kit:

  • packages/cli/src/launch-metadata.ts and launch-metadata.test.ts
  • packages/cli/src/local-personas.test.ts
  • packages/harness-kit/src/runner.ts and runner.test.ts
  • packages/workload-router/src/eval.ts (internal PersonaIntent / PersonaTier import)
  • packages/workload-router/src/index.test.ts

Version + changelog

  • packages/workload-router/package.json: 0.19.01.0.0 (breaking — no back-compat shim).
  • Added a 1.0.0 entry to packages/workload-router/CHANGELOG.md documenting the dropped surface.

Minor

  • Replaced a stale {@link import('@agentworkforce/workload-router').SkillMaterializationOptions...} JSDoc reference inside persona-kit with a local link.

Verification

  • pnpm -r build — all workspaces build clean.
  • pnpm -r test — 252/252 tests pass across persona-kit, workload-router, harness-kit, cli, and agentworkforce.
  • grep -rEn "from '@agentworkforce/workload-router'" packages/cli packages/persona-kit packages/harness-kit packages/agentworkforce — only listBuiltInPersonas, personaCatalog, routingProfiles, usePersona, useSelection, RoutingProfile, RoutingProfileId, and resolvePersona remain. No persona-domain symbols.

Notes

  • Relay's SDK still pins @agentworkforce/workload-router@^0.11.0; per the issue, that migration is relay-side and is intentionally untouched here.
  • packages/workload-router/src/generated/personas.ts and its build script are unchanged — the catalog stays.

Test plan

  • pnpm -r build
  • pnpm -r test
  • agentworkforce smoke test (claude/codex/opencode harnesses) — to be exercised post-merge per release flow

https://claude.ai/code/session_01KNNaWc1Mztn36DqDAxPfXv


Generated by Claude Code

Removes all persona-shape constants, types, and functions that were
previously forwarded from @agentworkforce/persona-kit through
@agentworkforce/workload-router. Consumers (workforce CLI, harness-kit,
and the workload-router test suite itself) now import those symbols
directly from persona-kit.
After this change, workload-router's public surface is routing-only:
RoutingProfile/RoutingProfileRule/RoutingProfileId, personaCatalog,
listBuiltInPersonas, routingProfiles, resolvePersona,
resolvePersonaByTier, usePersona, useSelection, and the evidence /
owner-decision exports from ./eval.
Breaking change for any external consumer that imported persona-domain
symbols from @agentworkforce/workload-router; no back-compat shim.
Version bumped 0.19.0 -> 1.0.0.
Closes#68
@coderabbitai

coderabbitaiBot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c3b1358a-6dd2-4bb5-8d51-18d5040b18cc

📥 Commits

Reviewing files that changed from the base of the PR and between a959028 and f7954f3.

📒 Files selected for processing (1)
  • examples/openclaw-routing.ts
✅ Files skipped from review due to trivial changes (1)
  • examples/openclaw-routing.ts

📝 Walkthrough

Walkthrough

This PR removes persona-domain re-exports from @agentworkforce/workload-router, moves persona-type imports in consumers to @agentworkforce/persona-kit, updates docs/tests, and bumps workload-router to v1.0.0 to signal the breaking change.

Changes

Persona-Kit Consolidation

Layer / File(s)Summary
Core Breaking Change
packages/workload-router/src/index.ts, packages/workload-router/CHANGELOG.md
Removed persona-kit re-exports from workload-router index and documented the breaking change in CHANGELOG (v1.0.0).
Package Version Bump
packages/workload-router/package.json
Version updated from 0.19.0 to 1.0.0.
Workload-router Internal Imports
packages/workload-router/src/eval.ts, packages/workload-router/src/index.test.ts
Switched persona type imports to @agentworkforce/persona-kit and reordered imports in tests.
harness-kit Consumer Updates
packages/harness-kit/src/runner.ts, packages/harness-kit/src/runner.test.ts
runner.ts removes persona types from workload-router import and expands persona-kit imports; runner.test.ts updates PersonaSelection import source.
CLI Consumer Updates
packages/cli/src/launch-metadata.ts, packages/cli/src/launch-metadata.test.ts, packages/cli/src/local-personas.test.ts
CLI modules update persona-related type imports to @agentworkforce/persona-kit.
Persona-Kit Documentation Update
packages/persona-kit/src/interactive-spec.ts
JSDoc link for SkillMaterializationOptions.installRoot updated to remove explicit workload-router import qualifier.
Examples import cleanup
examples/openclaw-routing.ts
Split combined import into separate imports to match updated export locations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit hops through the import lanes,
Routing profiles stay, personas move with grace,
From workload-router's shrinking reins,
To persona-kit's rightful place.
Version one, the breaking way—
Cleaner deps to code and play! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely summarizes the main change: dropping persona-domain re-exports from workload-router and bumping to version 1.0.0.
Description check✅ PassedThe description is detailed and directly related to the changeset, covering what was deleted, what stays, and verification steps taken.
Linked Issues check✅ PassedAll coding objectives from issue #68 are met: persona-domain re-exports deleted from index.ts, internal imports updated to use persona-kit, version bumped to 1.0.0, and verification items completed.
Out of Scope Changes check✅ PassedAll changes are directly related to removing persona re-exports and updating consumers to import from persona-kit; no unrelated modifications detected.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/submit-pr-for-issue-teqBO

Comment @coderabbitai help to get the list of available commands and usage tips.

The openclaw-routing example was still pulling PersonaIntent through
workload-router, which broke the examples typecheck after the
persona-domain re-exports were dropped.

@devin-ai-integrationdevin-ai-integrationBot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Sign up for freeto 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.

[persona-kit 5/8] Shrink @agentworkforce/workload-router (drop persona types, major bump)

2 participants

@willwashburn@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Shrink workload-router: drop persona-domain re-exports (1.0.0) - #79

Merged
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO
May 11, 2026
Merged

Shrink workload-router: drop persona-domain re-exports (1.0.0)#79
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO

Conversation

@willwashburn

Copy link
Copy Markdown
Member

Closes#68 (persona-kit 5/8).

Summary

Deletes every persona-shape symbol that @agentworkforce/workload-router was re-exporting from @agentworkforce/persona-kit. After this PR, workload-router only owns routing-domain code; persona constants, types, parsing, and skill materialization live exclusively in persona-kit.

What changed

packages/workload-router/src/index.ts

  • Dropped the export { ... } from '@agentworkforce/persona-kit' and export type { ... } from '@agentworkforce/persona-kit' blocks that forwarded:
    • Constants: HARNESS_VALUES, PERSONA_TIERS, PERSONA_TAGS, SIDECAR_MD_MODES, PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES, SKILL_SOURCE_KINDS, HARNESS_SKILL_TARGETS, BUILT_IN_PERSONA_INTENTS, PERSONA_INTENTS.
    • Types: Harness, PersonaTier, PersonaTag, HarnessSettings, PersonaRuntime, PersonaSkill, PersonaInputSpec, PersonaPermissions, PersonaMount, McpServerSpec, PersonaSpec, HarnessSkillTarget, SkillMaterializationOptions, SkillInstall, SkillMaterializationPlan, PersonaInstallContext, PersonaContext, SidecarMdMode, CodexSandboxMode, CodexApprovalPolicy, PermissionMode, PersonaIntent, PersonaSelection, SkillSourceKind.
    • Functions: materializeSkills, materializeSkillsFor, parseSkills, parsePersonaSpec, buildInstallArtifacts, resolveSkillSource, resolveSidecar.

What stays in workload-router: RoutingProfile, RoutingProfileRule, RoutingProfileId, personaCatalog, listBuiltInPersonas, routingProfiles, resolvePersona, resolvePersonaByTier, usePersona, useSelection, and ./eval (evidence/owner-decision types).

Consumers updated to import persona-domain symbols directly from @agentworkforce/persona-kit:

  • packages/cli/src/launch-metadata.ts and launch-metadata.test.ts
  • packages/cli/src/local-personas.test.ts
  • packages/harness-kit/src/runner.ts and runner.test.ts
  • packages/workload-router/src/eval.ts (internal PersonaIntent / PersonaTier import)
  • packages/workload-router/src/index.test.ts

Version + changelog

  • packages/workload-router/package.json: 0.19.01.0.0 (breaking — no back-compat shim).
  • Added a 1.0.0 entry to packages/workload-router/CHANGELOG.md documenting the dropped surface.

Minor

  • Replaced a stale {@link import('@agentworkforce/workload-router').SkillMaterializationOptions...} JSDoc reference inside persona-kit with a local link.

Verification

  • pnpm -r build — all workspaces build clean.
  • pnpm -r test — 252/252 tests pass across persona-kit, workload-router, harness-kit, cli, and agentworkforce.
  • grep -rEn "from '@agentworkforce/workload-router'" packages/cli packages/persona-kit packages/harness-kit packages/agentworkforce — only listBuiltInPersonas, personaCatalog, routingProfiles, usePersona, useSelection, RoutingProfile, RoutingProfileId, and resolvePersona remain. No persona-domain symbols.

Notes

  • Relay's SDK still pins @agentworkforce/workload-router@^0.11.0; per the issue, that migration is relay-side and is intentionally untouched here.
  • packages/workload-router/src/generated/personas.ts and its build script are unchanged — the catalog stays.

Test plan

  • pnpm -r build
  • pnpm -r test
  • agentworkforce smoke test (claude/codex/opencode harnesses) — to be exercised post-merge per release flow

https://claude.ai/code/session_01KNNaWc1Mztn36DqDAxPfXv


Generated by Claude Code

Removes all persona-shape constants, types, and functions that were
previously forwarded from @agentworkforce/persona-kit through
@agentworkforce/workload-router. Consumers (workforce CLI, harness-kit,
and the workload-router test suite itself) now import those symbols
directly from persona-kit.
After this change, workload-router's public surface is routing-only:
RoutingProfile/RoutingProfileRule/RoutingProfileId, personaCatalog,
listBuiltInPersonas, routingProfiles, resolvePersona,
resolvePersonaByTier, usePersona, useSelection, and the evidence /
owner-decision exports from ./eval.
Breaking change for any external consumer that imported persona-domain
symbols from @agentworkforce/workload-router; no back-compat shim.
Version bumped 0.19.0 -> 1.0.0.
Closes#68
@coderabbitai

coderabbitaiBot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c3b1358a-6dd2-4bb5-8d51-18d5040b18cc

📥 Commits

Reviewing files that changed from the base of the PR and between a959028 and f7954f3.

📒 Files selected for processing (1)
  • examples/openclaw-routing.ts
✅ Files skipped from review due to trivial changes (1)
  • examples/openclaw-routing.ts

📝 Walkthrough

Walkthrough

This PR removes persona-domain re-exports from @agentworkforce/workload-router, moves persona-type imports in consumers to @agentworkforce/persona-kit, updates docs/tests, and bumps workload-router to v1.0.0 to signal the breaking change.

Changes

Persona-Kit Consolidation

Layer / File(s)Summary
Core Breaking Change
packages/workload-router/src/index.ts, packages/workload-router/CHANGELOG.md
Removed persona-kit re-exports from workload-router index and documented the breaking change in CHANGELOG (v1.0.0).
Package Version Bump
packages/workload-router/package.json
Version updated from 0.19.0 to 1.0.0.
Workload-router Internal Imports
packages/workload-router/src/eval.ts, packages/workload-router/src/index.test.ts
Switched persona type imports to @agentworkforce/persona-kit and reordered imports in tests.
harness-kit Consumer Updates
packages/harness-kit/src/runner.ts, packages/harness-kit/src/runner.test.ts
runner.ts removes persona types from workload-router import and expands persona-kit imports; runner.test.ts updates PersonaSelection import source.
CLI Consumer Updates
packages/cli/src/launch-metadata.ts, packages/cli/src/launch-metadata.test.ts, packages/cli/src/local-personas.test.ts
CLI modules update persona-related type imports to @agentworkforce/persona-kit.
Persona-Kit Documentation Update
packages/persona-kit/src/interactive-spec.ts
JSDoc link for SkillMaterializationOptions.installRoot updated to remove explicit workload-router import qualifier.
Examples import cleanup
examples/openclaw-routing.ts
Split combined import into separate imports to match updated export locations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit hops through the import lanes,
Routing profiles stay, personas move with grace,
From workload-router's shrinking reins,
To persona-kit's rightful place.
Version one, the breaking way—
Cleaner deps to code and play! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely summarizes the main change: dropping persona-domain re-exports from workload-router and bumping to version 1.0.0.
Description check✅ PassedThe description is detailed and directly related to the changeset, covering what was deleted, what stays, and verification steps taken.
Linked Issues check✅ PassedAll coding objectives from issue #68 are met: persona-domain re-exports deleted from index.ts, internal imports updated to use persona-kit, version bumped to 1.0.0, and verification items completed.
Out of Scope Changes check✅ PassedAll changes are directly related to removing persona re-exports and updating consumers to import from persona-kit; no unrelated modifications detected.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/submit-pr-for-issue-teqBO

Comment @coderabbitai help to get the list of available commands and usage tips.

The openclaw-routing example was still pulling PersonaIntent through
workload-router, which broke the examples typecheck after the
persona-domain re-exports were dropped.

@devin-ai-integrationdevin-ai-integrationBot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Sign up for freeto 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.

[persona-kit 5/8] Shrink @agentworkforce/workload-router (drop persona types, major bump)

2 participants

@willwashburn@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Shrink workload-router: drop persona-domain re-exports (1.0.0) - #79

Merged
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO
May 11, 2026
Merged

Shrink workload-router: drop persona-domain re-exports (1.0.0)#79
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO

Conversation

@willwashburn

Copy link
Copy Markdown
Member

Closes#68 (persona-kit 5/8).

Summary

Deletes every persona-shape symbol that @agentworkforce/workload-router was re-exporting from @agentworkforce/persona-kit. After this PR, workload-router only owns routing-domain code; persona constants, types, parsing, and skill materialization live exclusively in persona-kit.

What changed

packages/workload-router/src/index.ts

  • Dropped the export { ... } from '@agentworkforce/persona-kit' and export type { ... } from '@agentworkforce/persona-kit' blocks that forwarded:
    • Constants: HARNESS_VALUES, PERSONA_TIERS, PERSONA_TAGS, SIDECAR_MD_MODES, PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES, SKILL_SOURCE_KINDS, HARNESS_SKILL_TARGETS, BUILT_IN_PERSONA_INTENTS, PERSONA_INTENTS.
    • Types: Harness, PersonaTier, PersonaTag, HarnessSettings, PersonaRuntime, PersonaSkill, PersonaInputSpec, PersonaPermissions, PersonaMount, McpServerSpec, PersonaSpec, HarnessSkillTarget, SkillMaterializationOptions, SkillInstall, SkillMaterializationPlan, PersonaInstallContext, PersonaContext, SidecarMdMode, CodexSandboxMode, CodexApprovalPolicy, PermissionMode, PersonaIntent, PersonaSelection, SkillSourceKind.
    • Functions: materializeSkills, materializeSkillsFor, parseSkills, parsePersonaSpec, buildInstallArtifacts, resolveSkillSource, resolveSidecar.

What stays in workload-router: RoutingProfile, RoutingProfileRule, RoutingProfileId, personaCatalog, listBuiltInPersonas, routingProfiles, resolvePersona, resolvePersonaByTier, usePersona, useSelection, and ./eval (evidence/owner-decision types).

Consumers updated to import persona-domain symbols directly from @agentworkforce/persona-kit:

  • packages/cli/src/launch-metadata.ts and launch-metadata.test.ts
  • packages/cli/src/local-personas.test.ts
  • packages/harness-kit/src/runner.ts and runner.test.ts
  • packages/workload-router/src/eval.ts (internal PersonaIntent / PersonaTier import)
  • packages/workload-router/src/index.test.ts

Version + changelog

  • packages/workload-router/package.json: 0.19.01.0.0 (breaking — no back-compat shim).
  • Added a 1.0.0 entry to packages/workload-router/CHANGELOG.md documenting the dropped surface.

Minor

  • Replaced a stale {@link import('@agentworkforce/workload-router').SkillMaterializationOptions...} JSDoc reference inside persona-kit with a local link.

Verification

  • pnpm -r build — all workspaces build clean.
  • pnpm -r test — 252/252 tests pass across persona-kit, workload-router, harness-kit, cli, and agentworkforce.
  • grep -rEn "from '@agentworkforce/workload-router'" packages/cli packages/persona-kit packages/harness-kit packages/agentworkforce — only listBuiltInPersonas, personaCatalog, routingProfiles, usePersona, useSelection, RoutingProfile, RoutingProfileId, and resolvePersona remain. No persona-domain symbols.

Notes

  • Relay's SDK still pins @agentworkforce/workload-router@^0.11.0; per the issue, that migration is relay-side and is intentionally untouched here.
  • packages/workload-router/src/generated/personas.ts and its build script are unchanged — the catalog stays.

Test plan

  • pnpm -r build
  • pnpm -r test
  • agentworkforce smoke test (claude/codex/opencode harnesses) — to be exercised post-merge per release flow

https://claude.ai/code/session_01KNNaWc1Mztn36DqDAxPfXv


Generated by Claude Code

Removes all persona-shape constants, types, and functions that were
previously forwarded from @agentworkforce/persona-kit through
@agentworkforce/workload-router. Consumers (workforce CLI, harness-kit,
and the workload-router test suite itself) now import those symbols
directly from persona-kit.
After this change, workload-router's public surface is routing-only:
RoutingProfile/RoutingProfileRule/RoutingProfileId, personaCatalog,
listBuiltInPersonas, routingProfiles, resolvePersona,
resolvePersonaByTier, usePersona, useSelection, and the evidence /
owner-decision exports from ./eval.
Breaking change for any external consumer that imported persona-domain
symbols from @agentworkforce/workload-router; no back-compat shim.
Version bumped 0.19.0 -> 1.0.0.
Closes#68
@coderabbitai

coderabbitaiBot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c3b1358a-6dd2-4bb5-8d51-18d5040b18cc

📥 Commits

Reviewing files that changed from the base of the PR and between a959028 and f7954f3.

📒 Files selected for processing (1)
  • examples/openclaw-routing.ts
✅ Files skipped from review due to trivial changes (1)
  • examples/openclaw-routing.ts

📝 Walkthrough

Walkthrough

This PR removes persona-domain re-exports from @agentworkforce/workload-router, moves persona-type imports in consumers to @agentworkforce/persona-kit, updates docs/tests, and bumps workload-router to v1.0.0 to signal the breaking change.

Changes

Persona-Kit Consolidation

Layer / File(s)Summary
Core Breaking Change
packages/workload-router/src/index.ts, packages/workload-router/CHANGELOG.md
Removed persona-kit re-exports from workload-router index and documented the breaking change in CHANGELOG (v1.0.0).
Package Version Bump
packages/workload-router/package.json
Version updated from 0.19.0 to 1.0.0.
Workload-router Internal Imports
packages/workload-router/src/eval.ts, packages/workload-router/src/index.test.ts
Switched persona type imports to @agentworkforce/persona-kit and reordered imports in tests.
harness-kit Consumer Updates
packages/harness-kit/src/runner.ts, packages/harness-kit/src/runner.test.ts
runner.ts removes persona types from workload-router import and expands persona-kit imports; runner.test.ts updates PersonaSelection import source.
CLI Consumer Updates
packages/cli/src/launch-metadata.ts, packages/cli/src/launch-metadata.test.ts, packages/cli/src/local-personas.test.ts
CLI modules update persona-related type imports to @agentworkforce/persona-kit.
Persona-Kit Documentation Update
packages/persona-kit/src/interactive-spec.ts
JSDoc link for SkillMaterializationOptions.installRoot updated to remove explicit workload-router import qualifier.
Examples import cleanup
examples/openclaw-routing.ts
Split combined import into separate imports to match updated export locations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit hops through the import lanes,
Routing profiles stay, personas move with grace,
From workload-router's shrinking reins,
To persona-kit's rightful place.
Version one, the breaking way—
Cleaner deps to code and play! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely summarizes the main change: dropping persona-domain re-exports from workload-router and bumping to version 1.0.0.
Description check✅ PassedThe description is detailed and directly related to the changeset, covering what was deleted, what stays, and verification steps taken.
Linked Issues check✅ PassedAll coding objectives from issue #68 are met: persona-domain re-exports deleted from index.ts, internal imports updated to use persona-kit, version bumped to 1.0.0, and verification items completed.
Out of Scope Changes check✅ PassedAll changes are directly related to removing persona re-exports and updating consumers to import from persona-kit; no unrelated modifications detected.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/submit-pr-for-issue-teqBO

Comment @coderabbitai help to get the list of available commands and usage tips.

The openclaw-routing example was still pulling PersonaIntent through
workload-router, which broke the examples typecheck after the
persona-domain re-exports were dropped.

@devin-ai-integrationdevin-ai-integrationBot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Sign up for freeto 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.

[persona-kit 5/8] Shrink @agentworkforce/workload-router (drop persona types, major bump)

2 participants

@willwashburn@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Shrink workload-router: drop persona-domain re-exports (1.0.0) - #79

Merged
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO
May 11, 2026
Merged

Shrink workload-router: drop persona-domain re-exports (1.0.0)#79
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO

Conversation

@willwashburn

Copy link
Copy Markdown
Member

Closes#68 (persona-kit 5/8).

Summary

Deletes every persona-shape symbol that @agentworkforce/workload-router was re-exporting from @agentworkforce/persona-kit. After this PR, workload-router only owns routing-domain code; persona constants, types, parsing, and skill materialization live exclusively in persona-kit.

What changed

packages/workload-router/src/index.ts

  • Dropped the export { ... } from '@agentworkforce/persona-kit' and export type { ... } from '@agentworkforce/persona-kit' blocks that forwarded:
    • Constants: HARNESS_VALUES, PERSONA_TIERS, PERSONA_TAGS, SIDECAR_MD_MODES, PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES, SKILL_SOURCE_KINDS, HARNESS_SKILL_TARGETS, BUILT_IN_PERSONA_INTENTS, PERSONA_INTENTS.
    • Types: Harness, PersonaTier, PersonaTag, HarnessSettings, PersonaRuntime, PersonaSkill, PersonaInputSpec, PersonaPermissions, PersonaMount, McpServerSpec, PersonaSpec, HarnessSkillTarget, SkillMaterializationOptions, SkillInstall, SkillMaterializationPlan, PersonaInstallContext, PersonaContext, SidecarMdMode, CodexSandboxMode, CodexApprovalPolicy, PermissionMode, PersonaIntent, PersonaSelection, SkillSourceKind.
    • Functions: materializeSkills, materializeSkillsFor, parseSkills, parsePersonaSpec, buildInstallArtifacts, resolveSkillSource, resolveSidecar.

What stays in workload-router: RoutingProfile, RoutingProfileRule, RoutingProfileId, personaCatalog, listBuiltInPersonas, routingProfiles, resolvePersona, resolvePersonaByTier, usePersona, useSelection, and ./eval (evidence/owner-decision types).

Consumers updated to import persona-domain symbols directly from @agentworkforce/persona-kit:

  • packages/cli/src/launch-metadata.ts and launch-metadata.test.ts
  • packages/cli/src/local-personas.test.ts
  • packages/harness-kit/src/runner.ts and runner.test.ts
  • packages/workload-router/src/eval.ts (internal PersonaIntent / PersonaTier import)
  • packages/workload-router/src/index.test.ts

Version + changelog

  • packages/workload-router/package.json: 0.19.01.0.0 (breaking — no back-compat shim).
  • Added a 1.0.0 entry to packages/workload-router/CHANGELOG.md documenting the dropped surface.

Minor

  • Replaced a stale {@link import('@agentworkforce/workload-router').SkillMaterializationOptions...} JSDoc reference inside persona-kit with a local link.

Verification

  • pnpm -r build — all workspaces build clean.
  • pnpm -r test — 252/252 tests pass across persona-kit, workload-router, harness-kit, cli, and agentworkforce.
  • grep -rEn "from '@agentworkforce/workload-router'" packages/cli packages/persona-kit packages/harness-kit packages/agentworkforce — only listBuiltInPersonas, personaCatalog, routingProfiles, usePersona, useSelection, RoutingProfile, RoutingProfileId, and resolvePersona remain. No persona-domain symbols.

Notes

  • Relay's SDK still pins @agentworkforce/workload-router@^0.11.0; per the issue, that migration is relay-side and is intentionally untouched here.
  • packages/workload-router/src/generated/personas.ts and its build script are unchanged — the catalog stays.

Test plan

  • pnpm -r build
  • pnpm -r test
  • agentworkforce smoke test (claude/codex/opencode harnesses) — to be exercised post-merge per release flow

https://claude.ai/code/session_01KNNaWc1Mztn36DqDAxPfXv


Generated by Claude Code

Removes all persona-shape constants, types, and functions that were
previously forwarded from @agentworkforce/persona-kit through
@agentworkforce/workload-router. Consumers (workforce CLI, harness-kit,
and the workload-router test suite itself) now import those symbols
directly from persona-kit.
After this change, workload-router's public surface is routing-only:
RoutingProfile/RoutingProfileRule/RoutingProfileId, personaCatalog,
listBuiltInPersonas, routingProfiles, resolvePersona,
resolvePersonaByTier, usePersona, useSelection, and the evidence /
owner-decision exports from ./eval.
Breaking change for any external consumer that imported persona-domain
symbols from @agentworkforce/workload-router; no back-compat shim.
Version bumped 0.19.0 -> 1.0.0.
Closes#68
@coderabbitai

coderabbitaiBot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c3b1358a-6dd2-4bb5-8d51-18d5040b18cc

📥 Commits

Reviewing files that changed from the base of the PR and between a959028 and f7954f3.

📒 Files selected for processing (1)
  • examples/openclaw-routing.ts
✅ Files skipped from review due to trivial changes (1)
  • examples/openclaw-routing.ts

📝 Walkthrough

Walkthrough

This PR removes persona-domain re-exports from @agentworkforce/workload-router, moves persona-type imports in consumers to @agentworkforce/persona-kit, updates docs/tests, and bumps workload-router to v1.0.0 to signal the breaking change.

Changes

Persona-Kit Consolidation

Layer / File(s)Summary
Core Breaking Change
packages/workload-router/src/index.ts, packages/workload-router/CHANGELOG.md
Removed persona-kit re-exports from workload-router index and documented the breaking change in CHANGELOG (v1.0.0).
Package Version Bump
packages/workload-router/package.json
Version updated from 0.19.0 to 1.0.0.
Workload-router Internal Imports
packages/workload-router/src/eval.ts, packages/workload-router/src/index.test.ts
Switched persona type imports to @agentworkforce/persona-kit and reordered imports in tests.
harness-kit Consumer Updates
packages/harness-kit/src/runner.ts, packages/harness-kit/src/runner.test.ts
runner.ts removes persona types from workload-router import and expands persona-kit imports; runner.test.ts updates PersonaSelection import source.
CLI Consumer Updates
packages/cli/src/launch-metadata.ts, packages/cli/src/launch-metadata.test.ts, packages/cli/src/local-personas.test.ts
CLI modules update persona-related type imports to @agentworkforce/persona-kit.
Persona-Kit Documentation Update
packages/persona-kit/src/interactive-spec.ts
JSDoc link for SkillMaterializationOptions.installRoot updated to remove explicit workload-router import qualifier.
Examples import cleanup
examples/openclaw-routing.ts
Split combined import into separate imports to match updated export locations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit hops through the import lanes,
Routing profiles stay, personas move with grace,
From workload-router's shrinking reins,
To persona-kit's rightful place.
Version one, the breaking way—
Cleaner deps to code and play! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely summarizes the main change: dropping persona-domain re-exports from workload-router and bumping to version 1.0.0.
Description check✅ PassedThe description is detailed and directly related to the changeset, covering what was deleted, what stays, and verification steps taken.
Linked Issues check✅ PassedAll coding objectives from issue #68 are met: persona-domain re-exports deleted from index.ts, internal imports updated to use persona-kit, version bumped to 1.0.0, and verification items completed.
Out of Scope Changes check✅ PassedAll changes are directly related to removing persona re-exports and updating consumers to import from persona-kit; no unrelated modifications detected.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/submit-pr-for-issue-teqBO

Comment @coderabbitai help to get the list of available commands and usage tips.

The openclaw-routing example was still pulling PersonaIntent through
workload-router, which broke the examples typecheck after the
persona-domain re-exports were dropped.

@devin-ai-integrationdevin-ai-integrationBot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Sign up for freeto 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.

[persona-kit 5/8] Shrink @agentworkforce/workload-router (drop persona types, major bump)

2 participants

@willwashburn@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Shrink workload-router: drop persona-domain re-exports (1.0.0) - #79

Merged
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO
May 11, 2026
Merged

Shrink workload-router: drop persona-domain re-exports (1.0.0)#79
willwashburn merged 2 commits into
mainfrom
claude/submit-pr-for-issue-teqBO

Conversation

@willwashburn

Copy link
Copy Markdown
Member

Closes#68 (persona-kit 5/8).

Summary

Deletes every persona-shape symbol that @agentworkforce/workload-router was re-exporting from @agentworkforce/persona-kit. After this PR, workload-router only owns routing-domain code; persona constants, types, parsing, and skill materialization live exclusively in persona-kit.

What changed

packages/workload-router/src/index.ts

  • Dropped the export { ... } from '@agentworkforce/persona-kit' and export type { ... } from '@agentworkforce/persona-kit' blocks that forwarded:
    • Constants: HARNESS_VALUES, PERSONA_TIERS, PERSONA_TAGS, SIDECAR_MD_MODES, PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES, SKILL_SOURCE_KINDS, HARNESS_SKILL_TARGETS, BUILT_IN_PERSONA_INTENTS, PERSONA_INTENTS.
    • Types: Harness, PersonaTier, PersonaTag, HarnessSettings, PersonaRuntime, PersonaSkill, PersonaInputSpec, PersonaPermissions, PersonaMount, McpServerSpec, PersonaSpec, HarnessSkillTarget, SkillMaterializationOptions, SkillInstall, SkillMaterializationPlan, PersonaInstallContext, PersonaContext, SidecarMdMode, CodexSandboxMode, CodexApprovalPolicy, PermissionMode, PersonaIntent, PersonaSelection, SkillSourceKind.
    • Functions: materializeSkills, materializeSkillsFor, parseSkills, parsePersonaSpec, buildInstallArtifacts, resolveSkillSource, resolveSidecar.

What stays in workload-router: RoutingProfile, RoutingProfileRule, RoutingProfileId, personaCatalog, listBuiltInPersonas, routingProfiles, resolvePersona, resolvePersonaByTier, usePersona, useSelection, and ./eval (evidence/owner-decision types).

Consumers updated to import persona-domain symbols directly from @agentworkforce/persona-kit:

  • packages/cli/src/launch-metadata.ts and launch-metadata.test.ts
  • packages/cli/src/local-personas.test.ts
  • packages/harness-kit/src/runner.ts and runner.test.ts
  • packages/workload-router/src/eval.ts (internal PersonaIntent / PersonaTier import)
  • packages/workload-router/src/index.test.ts

Version + changelog

  • packages/workload-router/package.json: 0.19.01.0.0 (breaking — no back-compat shim).
  • Added a 1.0.0 entry to packages/workload-router/CHANGELOG.md documenting the dropped surface.

Minor

  • Replaced a stale {@link import('@agentworkforce/workload-router').SkillMaterializationOptions...} JSDoc reference inside persona-kit with a local link.

Verification

  • pnpm -r build — all workspaces build clean.
  • pnpm -r test — 252/252 tests pass across persona-kit, workload-router, harness-kit, cli, and agentworkforce.
  • grep -rEn "from '@agentworkforce/workload-router'" packages/cli packages/persona-kit packages/harness-kit packages/agentworkforce — only listBuiltInPersonas, personaCatalog, routingProfiles, usePersona, useSelection, RoutingProfile, RoutingProfileId, and resolvePersona remain. No persona-domain symbols.

Notes

  • Relay's SDK still pins @agentworkforce/workload-router@^0.11.0; per the issue, that migration is relay-side and is intentionally untouched here.
  • packages/workload-router/src/generated/personas.ts and its build script are unchanged — the catalog stays.

Test plan

  • pnpm -r build
  • pnpm -r test
  • agentworkforce smoke test (claude/codex/opencode harnesses) — to be exercised post-merge per release flow

https://claude.ai/code/session_01KNNaWc1Mztn36DqDAxPfXv


Generated by Claude Code

Removes all persona-shape constants, types, and functions that were
previously forwarded from @agentworkforce/persona-kit through
@agentworkforce/workload-router. Consumers (workforce CLI, harness-kit,
and the workload-router test suite itself) now import those symbols
directly from persona-kit.
After this change, workload-router's public surface is routing-only:
RoutingProfile/RoutingProfileRule/RoutingProfileId, personaCatalog,
listBuiltInPersonas, routingProfiles, resolvePersona,
resolvePersonaByTier, usePersona, useSelection, and the evidence /
owner-decision exports from ./eval.
Breaking change for any external consumer that imported persona-domain
symbols from @agentworkforce/workload-router; no back-compat shim.
Version bumped 0.19.0 -> 1.0.0.
Closes#68
@coderabbitai

coderabbitaiBot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c3b1358a-6dd2-4bb5-8d51-18d5040b18cc

📥 Commits

Reviewing files that changed from the base of the PR and between a959028 and f7954f3.

📒 Files selected for processing (1)
  • examples/openclaw-routing.ts
✅ Files skipped from review due to trivial changes (1)
  • examples/openclaw-routing.ts

📝 Walkthrough

Walkthrough

This PR removes persona-domain re-exports from @agentworkforce/workload-router, moves persona-type imports in consumers to @agentworkforce/persona-kit, updates docs/tests, and bumps workload-router to v1.0.0 to signal the breaking change.

Changes

Persona-Kit Consolidation

Layer / File(s)Summary
Core Breaking Change
packages/workload-router/src/index.ts, packages/workload-router/CHANGELOG.md
Removed persona-kit re-exports from workload-router index and documented the breaking change in CHANGELOG (v1.0.0).
Package Version Bump
packages/workload-router/package.json
Version updated from 0.19.0 to 1.0.0.
Workload-router Internal Imports
packages/workload-router/src/eval.ts, packages/workload-router/src/index.test.ts
Switched persona type imports to @agentworkforce/persona-kit and reordered imports in tests.
harness-kit Consumer Updates
packages/harness-kit/src/runner.ts, packages/harness-kit/src/runner.test.ts
runner.ts removes persona types from workload-router import and expands persona-kit imports; runner.test.ts updates PersonaSelection import source.
CLI Consumer Updates
packages/cli/src/launch-metadata.ts, packages/cli/src/launch-metadata.test.ts, packages/cli/src/local-personas.test.ts
CLI modules update persona-related type imports to @agentworkforce/persona-kit.
Persona-Kit Documentation Update
packages/persona-kit/src/interactive-spec.ts
JSDoc link for SkillMaterializationOptions.installRoot updated to remove explicit workload-router import qualifier.
Examples import cleanup
examples/openclaw-routing.ts
Split combined import into separate imports to match updated export locations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit hops through the import lanes,
Routing profiles stay, personas move with grace,
From workload-router's shrinking reins,
To persona-kit's rightful place.
Version one, the breaking way—
Cleaner deps to code and play! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely summarizes the main change: dropping persona-domain re-exports from workload-router and bumping to version 1.0.0.
Description check✅ PassedThe description is detailed and directly related to the changeset, covering what was deleted, what stays, and verification steps taken.
Linked Issues check✅ PassedAll coding objectives from issue #68 are met: persona-domain re-exports deleted from index.ts, internal imports updated to use persona-kit, version bumped to 1.0.0, and verification items completed.
Out of Scope Changes check✅ PassedAll changes are directly related to removing persona re-exports and updating consumers to import from persona-kit; no unrelated modifications detected.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/submit-pr-for-issue-teqBO

Comment @coderabbitai help to get the list of available commands and usage tips.

The openclaw-routing example was still pulling PersonaIntent through
workload-router, which broke the examples typecheck after the
persona-domain re-exports were dropped.

@devin-ai-integrationdevin-ai-integrationBot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Sign up for freeto 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.

[persona-kit 5/8] Shrink @agentworkforce/workload-router (drop persona types, major bump)

2 participants

@willwashburn@claude