@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.kxm/README.md +20 -2
- package/.kxm/agents/{coordinator.yaml → planner.yaml} +2 -0
- package/.kxm/agents/{critic-arch.yaml → reviewer-arch.yaml} +2 -0
- package/.kxm/agents/{critic-cli.yaml → reviewer-cli.yaml} +2 -0
- package/.kxm/agents/{implementer.yaml → writer.yaml} +2 -0
- package/.kxm/roles/planner.yaml +4 -2
- package/.kxm/roles/reviewer-arch.yaml +4 -2
- package/.kxm/roles/reviewer-cli.yaml +4 -2
- package/.kxm/roles/writer.yaml +6 -3
- package/.kxm/workflows/default.yaml +20 -12
- package/.kxm/workflows/land.yaml +1 -1
- package/.kxm/workflows/{review-arch-only.yaml → reviewer-arch-only.yaml} +7 -3
- package/.kxm/workflows/{review-cli-only.yaml → reviewer-cli-only.yaml} +7 -3
- package/.kxm/workflows/{implement-only.yaml → writer-only.yaml} +8 -4
- package/CHANGELOG.md +22 -5
- package/docs/contributing/harness-routing-internals.md +17 -11
- package/docs/reference/cli-reference.md +23 -24
- package/docs/reference/config-reference.md +69 -62
- package/docs/reference/harness-routing.md +6 -5
- package/docs/reference/workflow-catalog.md +3 -3
- package/package.json +3 -3
- package/plugins/kxm/.claude-plugin/plugin.json +1 -1
- package/plugins/kxm/dist/cli.js +1144 -804
- package/plugins/kxm/dist/mcp-server.js +1 -1
- package/plugins/kxm/dist/runtime-supervisor.js +636 -308
- package/plugins/kxm/dist/runtime.js +707 -379
- package/plugins/kxm/dist/server.js +49 -5
- package/plugins/kxm/package.json +1 -1
- package/plugins/kxm/skills/kxm-project-setup/SKILL.md +3 -3
- package/plugins/kxm/src/cli/project.ts +2 -1
- package/plugins/kxm/src/cli/roles.ts +3 -4
- package/plugins/kxm/src/engine.ts +9 -6
- package/plugins/kxm/src/mcp-server.ts +1 -1
- package/plugins/kxm/src/policy-draft.mjs +11 -5
- package/plugins/kxm/src/project-config.ts +49 -11
- package/plugins/kxm/src/runtime-service.ts +2 -1
- package/plugins/kxm/src/template.ts +39 -10
- package/plugins/kxm/src/workflow-manager.ts +34 -28
- package/plugins/kxm/src/workforce-names.d.mts +38 -0
- package/plugins/kxm/src/workforce-names.mjs +317 -0
- package/schemas/agent.schema.json +7 -0
- package/schemas/model.schema.json +12 -0
- package/schemas/workflow.schema.json +14 -0
- package/scripts/harness-run.mjs +1 -1
- package/scripts/native-critic.mjs +5 -5
- package/scripts/roster-policy.mjs +9 -3
- 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/
|
|
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 `
|
|
364
|
+
Example (the shape `kxm init` writes for `writer`):
|
|
365
365
|
|
|
366
366
|
```yaml
|
|
367
|
-
# .kxm/agents/
|
|
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 `
|
|
387
|
-
(`role: writer`) without `harness` or `model`, and admits
|
|
388
|
-
and `xai/grok-4.6` in `.kxm/routes.yaml`.
|
|
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` |
|
|
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-
|
|
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 `
|
|
670
|
-
the `critic-claude` profile shown above, it needs a `
|
|
671
|
-
`
|
|
672
|
-
`
|
|
673
|
-
|
|
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:
|
|
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
|
-
-
|
|
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:
|
|
711
|
+
passed: writer # shorthand transition: a step id
|
|
708
712
|
blocked:
|
|
709
713
|
target: $terminal
|
|
710
714
|
terminalStatus: failed
|
|
711
715
|
|
|
712
|
-
- id:
|
|
716
|
+
- id: writer
|
|
713
717
|
kind: agent
|
|
714
|
-
agent:
|
|
718
|
+
agent: writer
|
|
719
|
+
aliases: [implement]
|
|
715
720
|
maxAttempts: 3
|
|
716
721
|
repositories:
|
|
717
722
|
control: write
|
|
718
723
|
assignments:
|
|
719
|
-
allowedAgents: [
|
|
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:
|
|
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: [
|
|
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: [
|
|
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:
|
|
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:
|
|
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 `
|
|
811
|
-
(write access), at `review` (`
|
|
812
|
-
`approve` and `ci` (dispatched to `coordinator`, which
|
|
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`
|
|
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-
|
|
939
|
+
- route: grok-grok-4-7
|
|
935
940
|
effort: medium
|
|
936
|
-
- route:
|
|
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-
|
|
1038
|
+
grok-grok-4-7:
|
|
1032
1039
|
harness: grok
|
|
1033
|
-
model: grok-4.
|
|
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
|
-
|
|
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
|
|
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
|
|
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-
|
|
1061
|
-
planner: [fable-
|
|
1062
|
-
reviewer-arch: [fable-
|
|
1063
|
-
reviewer-cli: [sol-
|
|
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
|
|
1066
|
-
review-cli: sol
|
|
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:
|
|
1072
|
-
|
|
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/
|
|
1689
|
-
├── agents/
|
|
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/
|
|
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/
|
|
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
|
-
|
|
1740
|
-
|
|
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:
|
|
1774
|
+
coordinator: planner
|
|
1769
1775
|
limits:
|
|
1770
1776
|
maxTransitions: 4
|
|
1771
1777
|
steps:
|
|
1772
|
-
- id:
|
|
1778
|
+
- id: writer
|
|
1773
1779
|
kind: agent
|
|
1774
|
-
agent:
|
|
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:
|
|
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
|
-
- `
|
|
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 `
|
|
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 `
|
|
1845
|
-
`
|
|
1846
|
-
today, because the `
|
|
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-
|
|
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-
|
|
154
|
+
- route: grok-grok-4-7
|
|
155
155
|
effort: medium
|
|
156
|
-
- route:
|
|
156
|
+
- route: pi-qwen3-coder-plus-openrouter
|
|
157
157
|
effort: medium
|
|
158
|
-
- route: gemini-
|
|
158
|
+
- route: agy-gemini-3-8-flash-high
|
|
159
|
+
- route: agy-gemini-3-8-flash-medium
|
|
159
160
|
```
|
|
160
161
|
|
|
161
|
-
`grok-
|
|
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
|
-
| `
|
|
1100
|
-
| `
|
|
1101
|
-
| `
|
|
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.
|
|
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.
|
|
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",
|