@kontextmind/kxm 0.7.144 → 0.7.146

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.kxm/README.md +20 -2
  3. package/.kxm/agents/{coordinator.yaml → planner.yaml} +2 -0
  4. package/.kxm/agents/{critic-arch.yaml → reviewer-arch.yaml} +2 -0
  5. package/.kxm/agents/{critic-cli.yaml → reviewer-cli.yaml} +2 -0
  6. package/.kxm/agents/{implementer.yaml → writer.yaml} +2 -0
  7. package/.kxm/roles/planner.yaml +4 -2
  8. package/.kxm/roles/reviewer-arch.yaml +4 -2
  9. package/.kxm/roles/reviewer-cli.yaml +4 -2
  10. package/.kxm/roles/writer.yaml +6 -3
  11. package/.kxm/workflows/default.yaml +20 -12
  12. package/.kxm/workflows/land.yaml +1 -1
  13. package/.kxm/workflows/{review-arch-only.yaml → reviewer-arch-only.yaml} +7 -3
  14. package/.kxm/workflows/{review-cli-only.yaml → reviewer-cli-only.yaml} +7 -3
  15. package/.kxm/workflows/{implement-only.yaml → writer-only.yaml} +8 -4
  16. package/CHANGELOG.md +22 -5
  17. package/docs/contributing/harness-routing-internals.md +17 -11
  18. package/docs/reference/cli-reference.md +23 -24
  19. package/docs/reference/config-reference.md +69 -62
  20. package/docs/reference/harness-routing.md +6 -5
  21. package/docs/reference/workflow-catalog.md +3 -3
  22. package/package.json +3 -3
  23. package/plugins/kxm/.claude-plugin/plugin.json +1 -1
  24. package/plugins/kxm/dist/cli.js +1144 -804
  25. package/plugins/kxm/dist/mcp-server.js +1 -1
  26. package/plugins/kxm/dist/runtime-supervisor.js +636 -308
  27. package/plugins/kxm/dist/runtime.js +707 -379
  28. package/plugins/kxm/dist/server.js +49 -5
  29. package/plugins/kxm/package.json +1 -1
  30. package/plugins/kxm/skills/kxm-project-setup/SKILL.md +3 -3
  31. package/plugins/kxm/src/cli/project.ts +2 -1
  32. package/plugins/kxm/src/cli/roles.ts +3 -4
  33. package/plugins/kxm/src/engine.ts +9 -6
  34. package/plugins/kxm/src/mcp-server.ts +1 -1
  35. package/plugins/kxm/src/policy-draft.mjs +11 -5
  36. package/plugins/kxm/src/project-config.ts +49 -11
  37. package/plugins/kxm/src/runtime-service.ts +2 -1
  38. package/plugins/kxm/src/template.ts +39 -10
  39. package/plugins/kxm/src/workflow-manager.ts +34 -28
  40. package/plugins/kxm/src/workforce-names.d.mts +38 -0
  41. package/plugins/kxm/src/workforce-names.mjs +317 -0
  42. package/schemas/agent.schema.json +7 -0
  43. package/schemas/model.schema.json +12 -0
  44. package/schemas/workflow.schema.json +14 -0
  45. package/scripts/harness-run.mjs +1 -1
  46. package/scripts/native-critic.mjs +5 -5
  47. package/scripts/roster-policy.mjs +9 -3
  48. package/scripts/workforce-lint.mjs +18 -0
@@ -55,7 +55,7 @@ to add.
55
55
  .kxm/project.yaml ── repositories[] ──> .kxm/repo/repo.yaml (+ env.yaml) in each repository
56
56
  │ defaultWorkflow, defaultHarness, limits
57
57
  ▼
58
- .kxm/workflows/<id>.yaml ── coordinator ──> .kxm/agents/coordinator.yaml
58
+ .kxm/workflows/<id>.yaml ── coordinator ──> .kxm/agents/planner.yaml
59
59
  │ steps[]
60
60
  ├─ kind agent | moa | approval | wait ──> .kxm/agents/<id>.yaml
61
61
  │ ├─ role ──> .kxm/roles/<role>.yaml
@@ -361,13 +361,14 @@ tool call, shell commands included, and neither confines the process to the
361
361
  checkout. A live write step on any other harness is handed off; see
362
362
  [Steps the Runtime does not execute yet](#steps-the-runtime-does-not-execute-yet).
363
363
 
364
- Example (the shape `kxm init` writes for `implementer`):
364
+ Example (the shape `kxm init` writes for `writer`):
365
365
 
366
366
  ```yaml
367
- # .kxm/agents/implementer.yaml. The filename is the agent id.
367
+ # .kxm/agents/writer.yaml. The filename is the agent id, and it matches role.
368
368
  schema: kxm.agent.v1
369
369
  purpose: Implement the approved change within the declared repository scope.
370
370
  role: writer # .kxm/roles/writer.yaml -> .kxm/models/<route>.yaml
371
+ aliases: [implementer] # deprecated id; still resolves, with a warning
371
372
  tools:
372
373
  preset: workspace-writer # coordinator | read-only | workspace-writer | tests-writer
373
374
  allow: [read, edit, write, bash]
@@ -383,9 +384,10 @@ network: provider-only # none | provider-only | restricted | host
383
384
  resultSchema: kxm.assignment-result.v1
384
385
  ```
385
386
 
386
- `kxm init` creates `coordinator` (`role: planner`) and `implementer`
387
- (`role: writer`) without `harness` or `model`, and admits `anthropic/fable`
388
- and `xai/grok-4.6` in `.kxm/routes.yaml`. An interactive `kxm init` can add
387
+ `kxm init` creates `planner` (`role: planner`, alias `coordinator`) and `writer`
388
+ (`role: writer`, alias `implementer`) without `harness` or `model`, and admits
389
+ `anthropic/fable` and `xai/grok-4.6` in `.kxm/routes.yaml`. The model files are
390
+ `claude-fable` and `grok-grok-4-6`. An interactive `kxm init` can add
389
391
  workflow-guide agents for reviewed pairs whose harness is authenticated, and
390
392
  admits their selectors too, but skips Google guide candidates because the
391
393
  Runtime cannot reach the `antigravity` Pi provider yet. `kxm run` and the
@@ -408,7 +410,8 @@ bytes.
408
410
  | Field | Type and allowed values | Required, default | What reads it |
409
411
  |---|---|---|---|
410
412
  | `schema` | `kxm.model.v2` | Required | Loader |
411
- | `id` | Kebab identifier, 1 to 64 characters | Optional; the filename is the id | Loader |
413
+ | `id` | `<harness>-<model-slug>[-<provider>]`, 1 to 64 characters | Optional; the filename is the id | Loader. This repository's workforce lint requires the pattern |
414
+ | `aliases` | Deprecated route ids, at most 16 | Optional | Still resolve to this file; a warning names the canonical id |
412
415
  | `harness` | Identifier, 1 to 64 characters | Required | Developer ceilings and dispatch membership |
413
416
  | `model` | String, 1 to 200 characters | Required | Dispatch membership (`model`, `vendor/model`, `harness/model`) |
414
417
  | `vendor` | String, 1 to 64 characters | Required | The lab that trained the model, not the biller |
@@ -425,7 +428,8 @@ bytes.
425
428
 
426
429
  ```yaml
427
430
  schema: kxm.model.v2
428
- id: grok-native
431
+ id: grok-grok-4-7 # <harness>-<model-slug>; "." in the model id is "-"
432
+ aliases: [grok-native] # deprecated id; still resolves, with a warning
429
433
  harness: grok
430
434
  model: grok-4.7
431
435
  vendor: xai
@@ -666,11 +670,11 @@ the reason, field, and detail. The Runtime uses these reasons:
666
670
  | `gate_uncertain_blocked` | The run is `blocked_uncertain` and waits for an external signal or an operator |
667
671
 
668
672
  Example (validated with `kxm init --json` and compiled with
669
- `compileKxmWorkflow`). Besides the `implementer` and `critic-arch` agents and
670
- the `critic-claude` profile shown above, it needs a `coordinator` agent, a
671
- `planner` agent (harness `claude`, model `anthropic/fable`, read access), a
672
- `critic-cli` agent (harness `codex`, model `openai/gpt-5.6-sol`, read access),
673
- and a second profile tagged `critic`, `critic-sol` (`openai/gpt-5.6-sol`).
673
+ `compileKxmWorkflow`). Besides the `writer` and `reviewer-arch` agents and
674
+ the `critic-claude` profile shown above, it needs a `planner` agent (the
675
+ workflow coordinator; `coordinator` still resolves as an alias), a
676
+ `reviewer-cli` agent, and a second profile tagged `critic`, `critic-sol`
677
+ (`openai/gpt-5.6-sol`). Routes, not agent files, name the harness and model.
674
678
  The two providers among the `critic` candidates satisfy
675
679
  `distinctBy: [provider]` with `target: 2`.
676
680
 
@@ -678,7 +682,7 @@ The two providers among the `critic` candidates satisfy
678
682
  # .kxm/workflows/review.yaml — the filename is the workflow id.
679
683
  schema: kxm.workflow.v1
680
684
  description: Plan, implement, review with two critics, verify, approve, and wait for CI.
681
- coordinator: coordinator # agent id; defaults to "coordinator"
685
+ coordinator: planner # agent id; omitted value falls back to "coordinator", an alias of planner
682
686
  limits:
683
687
  maxTransitions: 12 # required once any back-edge exists
684
688
  maxRunDurationMs: 14400000
@@ -688,7 +692,7 @@ planHash: # capture the approved plan when "plan" pass
688
692
  stageId: plan
689
693
  evidenceKey: plan
690
694
  requirePlanHash: # writing steps after "plan" must be listed here
691
- - implement
695
+ - writer
692
696
  - verify
693
697
  steps:
694
698
  - id: plan
@@ -704,19 +708,20 @@ steps:
704
708
  - key: plan
705
709
  kind: artifact
706
710
  on:
707
- passed: implement # shorthand transition: a step id
711
+ passed: writer # shorthand transition: a step id
708
712
  blocked:
709
713
  target: $terminal
710
714
  terminalStatus: failed
711
715
 
712
- - id: implement
716
+ - id: writer
713
717
  kind: agent
714
- agent: implementer
718
+ agent: writer
719
+ aliases: [implement]
715
720
  maxAttempts: 3
716
721
  repositories:
717
722
  control: write
718
723
  assignments:
719
- allowedAgents: [implementer]
724
+ allowedAgents: [writer]
720
725
  minimum: 1
721
726
  target: 1
722
727
  maximum: 1
@@ -734,13 +739,13 @@ steps:
734
739
 
735
740
  - id: review
736
741
  kind: moa # panel of agents
737
- agent: critic-arch # primary agent; must be in allowedAgents
742
+ agent: reviewer-arch # primary agent; must be in allowedAgents
738
743
  model:
739
744
  tag: critic # intersected with each agent's own model ceiling
740
745
  repositories:
741
746
  control: read
742
747
  assignments:
743
- allowedAgents: [critic-arch, critic-cli]
748
+ allowedAgents: [reviewer-arch, reviewer-cli]
744
749
  minimum: 2
745
750
  target: 2
746
751
  maximum: 2
@@ -754,14 +759,14 @@ steps:
754
759
  kind: assignment-result
755
760
  producerPolicy:
756
761
  minimumProducers: 2
757
- eligibleAgents: [critic-arch, critic-cli]
762
+ eligibleAgents: [reviewer-arch, reviewer-cli]
758
763
  acceptedStatuses: [passed]
759
764
  degradation:
760
765
  minimumProducers: 1
761
766
  on:
762
767
  passed: verify
763
768
  changes-requested: # back-edge: needs maxTransitions
764
- target: implement
769
+ target: writer
765
770
  maxTransitions: 2
766
771
 
767
772
  - id: verify
@@ -777,7 +782,7 @@ steps:
777
782
  on:
778
783
  passed: approve
779
784
  implementation-failure:
780
- target: implement
785
+ target: writer
781
786
  maxTransitions: 2
782
787
 
783
788
  - id: approve
@@ -807,9 +812,9 @@ steps:
807
812
  terminalStatus: failed
808
813
  ```
809
814
 
810
- This example validates, but a live drive would be handed off at `implement`
811
- (write access), at `review` (`critic-arch` uses a profile selector), and at
812
- `approve` and `ci` (dispatched to `coordinator`, which declares no model). Use
815
+ This example validates, but a live drive would be handed off at `writer`
816
+ (write access), at `review` (`reviewer-arch` uses a profile selector), and at
817
+ `approve` and `ci` (dispatched to `coordinator`, which resolves to `planner`). Use
813
818
  it as a field reference; the
814
819
  [worked example](#worked-example-a-minimal-two-step-project) is one that runs.
815
820
 
@@ -822,7 +827,7 @@ compiles and pins the plan, then drives it live, or without models with
822
827
  `kxm workflow add <id>` a one-step scaffold, under `.kxm/workflows/` (or
823
828
  `~/.config/kxm/workflows/` with `--scope global`, which the loader never
824
829
  reads). Both are valid `kxm.workflow.v1` definitions that use only what
825
- `kxm init` creates: the `coordinator` and `implementer` agents, the `control`
830
+ `kxm init` creates: the `planner` and `writer` agents (`coordinator` and `implementer` remain aliases), the `control`
826
831
  repository, and the `test` gate. The templates route gate failures on
827
832
  `implementation-failure`. A local add is checked by the project loader first:
828
833
  if the project would not load with the new file, it is refused with
@@ -931,9 +936,9 @@ purpose: writer
931
936
  permission: edit
932
937
  description: Primary implementation agent.
933
938
  roster:
934
- - route: grok-native
939
+ - route: grok-grok-4-7
935
940
  effort: medium
936
- - route: qwen-openrouter-pi
941
+ - route: pi-qwen3-coder-plus-openrouter
937
942
  effort: medium
938
943
  ```
939
944
 
@@ -1027,50 +1032,51 @@ independent vendors`, and `retired .kxm/roster.json present`.
1027
1032
 
1028
1033
  ```yaml
1029
1034
  # Assembled by scripts/roster-policy.mjs from .kxm/roles/*.yaml and .kxm/models/*.yaml.
1035
+ # Route ids are <harness>-<model-slug>[-<provider>]. The first critic in each
1036
+ # lineup is the required critic. Later entries are read-only fallbacks.
1030
1037
  routes:
1031
- grok-native: # route id: lowercase words joined by "-"
1038
+ grok-grok-4-7:
1032
1039
  harness: grok
1033
- model: grok-4.6 # native harnesses take a bare model id
1040
+ model: grok-4.7 # native harnesses take a bare model id
1034
1041
  vendor: xai
1035
1042
  roles: [writer]
1036
1043
  permissions: [edit]
1037
1044
  status: admitted # admitted | retired
1038
- qwen-openrouter-pi:
1045
+ pi-qwen3-coder-plus-openrouter:
1039
1046
  harness: pi
1040
1047
  model: openrouter/qwen/qwen3-coder-plus # Pi: allowed provider prefix + vendor/model
1041
1048
  vendor: alibaba
1042
1049
  roles: [writer]
1043
1050
  permissions: [edit]
1044
1051
  status: admitted
1045
- fable-claude:
1052
+ claude-fable:
1046
1053
  harness: claude
1047
1054
  model: fable
1048
1055
  vendor: anthropic
1049
1056
  roles: [planner, reviewer-arch]
1050
1057
  permissions: [read-only]
1051
1058
  status: admitted
1052
- sol-codex:
1059
+ codex-gpt-5-6-sol:
1053
1060
  harness: codex
1054
1061
  model: gpt-5.6-sol
1055
1062
  vendor: openai
1056
1063
  roles: [reviewer-cli]
1057
1064
  permissions: [read-only]
1058
1065
  status: admitted
1059
- lineup: # routes admitted for each role
1060
- writer: [grok-native, qwen-openrouter-pi, gemini-agy]
1061
- planner: [fable-claude]
1062
- reviewer-arch: [fable-claude]
1063
- reviewer-cli: [sol-codex]
1066
+ lineup: # routes admitted for each role, preference order
1067
+ writer: [grok-grok-4-7, pi-qwen3-coder-plus-openrouter, agy-gemini-3-8-flash-high, agy-gemini-3-8-flash-medium]
1068
+ planner: [claude-fable, pi-qwen3-8-flash-openrouter]
1069
+ reviewer-arch: [claude-fable, pi-glm-5-3-flash-openrouter]
1070
+ reviewer-cli: [codex-gpt-5-6-sol, pi-qwen3-8-flash-openrouter]
1064
1071
  required_critics:
1065
- review-arch: fable-claude
1066
- review-cli: sol-codex
1072
+ review-arch: claude-fable
1073
+ review-cli: codex-gpt-5-6-sol
1067
1074
  model_origins: # required for every Pi route model
1068
1075
  openrouter/qwen/qwen3-coder-plus:
1069
1076
  vendor: alibaba
1070
1077
  evidence:
1071
- source: docs/workflow-guide.md
1072
- commit: 69341ca200c31b98b5ba2371437398f0ce501089
1073
- sha256: 358d436dbf1b6f3904252afba167e643d33d597d16148ac1286b1c21b81448a4
1078
+ source: plans/evidence/route-qwen-openrouter-pi.md
1079
+ sha256: b15f8a54adc398b33e75609e959076eee310bf4ff6623d0b8470ea3da95e6c54
1074
1080
  ```
1075
1081
 
1076
1082
  Validated with `validateRosterDocument` from `scripts/roster-policy.mjs`,
@@ -1685,8 +1691,8 @@ Directory layout (inside a Git repository):
1685
1691
  └── .kxm/
1686
1692
  ├── project.yaml
1687
1693
  ├── repo/repo.yaml
1688
- ├── agents/coordinator.yaml
1689
- ├── agents/implementer.yaml
1694
+ ├── agents/planner.yaml
1695
+ ├── agents/writer.yaml
1690
1696
  ├── gates.yaml
1691
1697
  ├── routes.yaml
1692
1698
  └── workflows/default.yaml
@@ -1717,11 +1723,13 @@ repositoryId: control
1717
1723
  defaultAccess: write
1718
1724
  ```
1719
1725
 
1720
- `.kxm/agents/coordinator.yaml` (every workflow needs its coordinator agent):
1726
+ `.kxm/agents/planner.yaml` (every workflow needs its coordinator agent):
1721
1727
 
1722
1728
  ```yaml
1723
1729
  schema: kxm.agent.v1
1724
1730
  purpose: Coordinate the pinned workflow.
1731
+ role: planner
1732
+ aliases: [coordinator]
1725
1733
  tools:
1726
1734
  preset: coordinator
1727
1735
  defaultRepositoryAccess: read
@@ -1731,15 +1739,13 @@ network: provider-only
1731
1739
  resultSchema: kxm.assignment-result.v1
1732
1740
  ```
1733
1741
 
1734
- `.kxm/agents/implementer.yaml`:
1742
+ `.kxm/agents/writer.yaml`:
1735
1743
 
1736
1744
  ```yaml
1737
1745
  schema: kxm.agent.v1
1738
1746
  purpose: Implement the requested change in the control repository.
1739
- harness: grok
1740
- model:
1741
- provider: xai
1742
- model: grok-4.6
1747
+ role: writer
1748
+ aliases: [implementer]
1743
1749
  tools:
1744
1750
  preset: workspace-writer
1745
1751
  defaultRepositoryAccess: none
@@ -1765,13 +1771,14 @@ gates:
1765
1771
  ```yaml
1766
1772
  schema: kxm.workflow.v1
1767
1773
  description: Implement a change, then run the test suite.
1768
- coordinator: coordinator
1774
+ coordinator: planner
1769
1775
  limits:
1770
1776
  maxTransitions: 4
1771
1777
  steps:
1772
- - id: implement
1778
+ - id: writer
1773
1779
  kind: agent
1774
- agent: implementer
1780
+ agent: writer
1781
+ aliases: [implement]
1775
1782
  maxAttempts: 2
1776
1783
  repositories:
1777
1784
  control: write
@@ -1798,7 +1805,7 @@ steps:
1798
1805
  target: $terminal
1799
1806
  terminalStatus: completed
1800
1807
  implementation-failure:
1801
- target: implement
1808
+ target: writer
1802
1809
  maxTransitions: 2
1803
1810
  ```
1804
1811
 
@@ -1814,11 +1821,11 @@ disabled: []
1814
1821
 
1815
1822
  Why each piece is there:
1816
1823
 
1817
- - `implement` routes a failure straight to a terminal `failed` status and
1824
+ - `writer` routes a failure straight to a terminal `failed` status and
1818
1825
  declares `failed`, the outcome the producer falls back to.
1819
1826
  - `verify` declares `implementation-failure`, the outcome a failing command
1820
1827
  produces. Routing that edge on `failed` instead is refused when the project
1821
- loads (`gate_outcome_impossible`). The edge back to `implement` makes it a
1828
+ loads (`gate_outcome_impossible`). The edge back to `writer` makes it a
1822
1829
  back-edge, so it carries `maxTransitions: 2` and the workflow carries
1823
1830
  `limits.maxTransitions`.
1824
1831
  - The gate step lists `control: write`; the Runtime refuses command gate steps
@@ -1841,9 +1848,9 @@ kxm runs drive <runId> --simulated --wait # model-free drive; runs npm test f
1841
1848
 
1842
1849
  The simulated drive records `passed` for the agent step, runs `npm test` in the
1843
1850
  project root, and settles `completed` when it exits 0. When `npm test` fails,
1844
- the run returns to `implement` and fails with `budget_step_attempts` once
1845
- `implement` has used its two attempts. A live drive of this workflow is refused
1846
- today, because the `implement` step has write access (see
1851
+ the run returns to `writer` and fails with `budget_step_attempts` once
1852
+ `writer` has used its two attempts. A live drive of this workflow is refused
1853
+ today, because the `writer` step has write access (see
1847
1854
  [Steps the Runtime does not execute yet](#steps-the-runtime-does-not-execute-yet)).
1848
1855
  Stop the Runtime afterwards with `kxm runtime stop`.
1849
1856
 
@@ -117,7 +117,7 @@ role: writer
117
117
 
118
118
  ### Model file
119
119
 
120
- This is the native route, from `.kxm/models/grok-native.yaml`:
120
+ This is the native route, from `.kxm/models/grok-grok-4-7.yaml` (alias `grok-native`):
121
121
 
122
122
  ```yaml
123
123
  harness: grok
@@ -151,14 +151,15 @@ permission: edit
151
151
  description: Primary implementation agent.
152
152
  # Rotation priority = order. Effort default: medium for implementation.
153
153
  roster:
154
- - route: grok-native
154
+ - route: grok-grok-4-7
155
155
  effort: medium
156
- - route: qwen-openrouter-pi
156
+ - route: pi-qwen3-coder-plus-openrouter
157
157
  effort: medium
158
- - route: gemini-agy
158
+ - route: agy-gemini-3-8-flash-high
159
+ - route: agy-gemini-3-8-flash-medium
159
160
  ```
160
161
 
161
- `grok-native` resolves to `.kxm/models/grok-native.yaml`: harness `grok`, model `grok-4.7`, vendor `xai`, status `admitted`, permission `edit`. `qwen-openrouter-pi` is harness `pi`, model `openrouter/qwen/qwen3-coder-plus`, vendor `alibaba`. `gemini-agy` is harness `agy`, model `gemini-3.8-flash-high`, vendor `google`. `kxm role list` prints the first route id as the primary, for example `(grok-native)`.
162
+ `grok-grok-4-7` resolves to `.kxm/models/grok-grok-4-7.yaml`: harness `grok`, model `grok-4.7`, vendor `xai`, status `admitted`, permission `edit`. `pi-qwen3-coder-plus-openrouter` is harness `pi`, model `openrouter/qwen/qwen3-coder-plus`, vendor `alibaba`. `agy-gemini-3-8-flash-high` is harness `agy`, model `gemini-3.8-flash-high`, vendor `google`. `kxm role list` prints the first route id as the primary, for example `(grok-grok-4-7)`. The previous ids (`grok-native`, `qwen-openrouter-pi`, `gemini-agy`) are aliases.
162
163
 
163
164
  Dispatch resolves a step from the agent `role`, then `.kxm/roles/<role>.yaml`, then the selected `.kxm/models/<route>.yaml`. That model file carries `harness`, `model`, `vendor`, `status`, and `permissions`. The engine walks the roster in order and uses the first admitted route whose model file is readable. A missing or unreadable model file is a refusal (`roster_model_unreadable` at load, `producer_route_unsupported` at dispatch), not a skip to the next entry. A route file that names a harness the model cannot run on still fails closed with `harness_unhosted_model`.
164
165
 
@@ -1096,9 +1096,9 @@ These three files live in this repository's `.kxm/workflows`. `kxm init` does no
1096
1096
 
1097
1097
  | Workflow | Runs through |
1098
1098
  |---|---|
1099
- | `implement-only` | `kxm lane run`. Replaces a retired transport recipe. |
1100
- | `review-arch-only` | `kxm lane run`. Replaces a retired transport recipe. |
1101
- | `review-cli-only` | `kxm lane run`. Replaces a retired transport recipe. |
1099
+ | `writer-only` | `kxm lane run`. `implement-only` still resolves to this file. |
1100
+ | `reviewer-arch-only` | `kxm lane run`. `review-arch-only` still resolves to this file. |
1101
+ | `reviewer-cli-only` | `kxm lane run`. `review-cli-only` still resolves to this file. |
1102
1102
 
1103
1103
  ## Related
1104
1104
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kontextmind/kxm",
3
- "version": "0.7.144",
3
+ "version": "0.7.146",
4
4
  "description": "KXM local-first multi-agent orchestration and operator dashboard",
5
5
  "type": "module",
6
6
  "author": "KontextMind",
@@ -45,11 +45,11 @@
45
45
  "typecheck": "tsc --noEmit",
46
46
  "lint:docs": "markdownlint-cli2",
47
47
  "check:versions": "node scripts/check-versions.mjs",
48
- "check": "npm run typecheck && npm run lint:docs && npm run check:versions",
48
+ "check": "npm run typecheck && npm run lint:docs && npm run check:versions && node scripts/workforce-lint.mjs",
49
49
  "verify": "npm test && npm run check && npm run check:generated",
50
50
  "validate:claude": "claude plugin validate . --strict && claude plugin validate plugins/kxm --strict",
51
51
  "validate:ci": "npm run test:coverage && npm run check && npm pack --dry-run",
52
- "validate:pr": "npm run build && npm run typecheck && node scripts/run-bounded.mjs 1200000 node --disable-warning=ExperimentalWarning --experimental-strip-types --test --test-force-exit --test-concurrency=4 test/core/artifacts-exist.test.ts test/core/ci-contract.test.ts test/core/envelope.test.ts test/core/envelope-contract.test.ts test/core/protocol.test.ts test/core/repo-root.test.ts test/core/routes-count.test.ts test/core/smoke.test.ts test/core/version-surfaces.test.ts && npm run check:versions && node scripts/check-generated.mjs",
52
+ "validate:pr": "npm run build && npm run typecheck && node scripts/run-bounded.mjs 1200000 node --disable-warning=ExperimentalWarning --experimental-strip-types --test --test-force-exit --test-concurrency=4 test/core/artifacts-exist.test.ts test/core/ci-contract.test.ts test/core/envelope.test.ts test/core/envelope-contract.test.ts test/core/protocol.test.ts test/core/repo-root.test.ts test/core/routes-count.test.ts test/core/smoke.test.ts test/core/version-surfaces.test.ts && npm run check:versions && node scripts/workforce-lint.mjs && node scripts/check-generated.mjs",
53
53
  "validate": "npm run validate:ci && npm run validate:claude",
54
54
  "test:packages": "npx nx run-many -t test --output-style=static",
55
55
  "check:packages": "npx nx run-many -t build,test:coverage,typecheck --output-style=static",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "kxm",
4
4
  "displayName": "KXM",
5
- "version": "0.7.144",
5
+ "version": "0.7.146",
6
6
  "description": "Headless multi-agent orchestration, durable workflows, and a live operator dashboard for Pi and Claude Code",
7
7
  "author": {
8
8
  "name": "KontextMind",