@kontextmind/kxm 0.7.95 → 0.7.96
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 +39 -9
- package/CHANGELOG.md +1 -1
- package/README.md +147 -257
- package/SECURITY.md +21 -12
- package/docs/README.md +133 -54
- package/docs/adr/ADR-0002-browser-automation-steel-doks.md +24 -18
- package/docs/adr/ADR-0003-sqlite-only-store.md +100 -0
- package/docs/adr/ADR-0004-edge-identity-authentik.md +99 -0
- package/docs/adr/README.md +33 -0
- package/docs/concepts/architecture.md +262 -0
- package/docs/concepts/data-and-storage.md +194 -0
- package/docs/concepts/trust-model.md +152 -0
- package/docs/contracts/README.md +22 -14
- package/docs/contracts/effects-and-recovery.md +3 -0
- package/docs/contracts/migration.md +2 -2
- package/docs/contracts/routing.md +6 -5
- package/docs/contributing/assignment-runner.md +388 -0
- package/docs/contributing/ci-and-release.md +231 -0
- package/docs/contributing/development.md +362 -0
- package/docs/contributing/harness-routing-internals.md +192 -0
- package/docs/{packages.md → contributing/packages.md} +13 -15
- package/docs/{skills → contributing}/repo-work-delivery.md +20 -21
- package/docs/contributing/test-matrix.md +208 -0
- package/docs/{tui-components.md → contributing/tui-components.md} +30 -22
- package/docs/contributing/writing-docs.md +340 -0
- package/docs/glossary.md +471 -0
- package/docs/guides/agent-skills.md +137 -0
- package/docs/guides/browser-automation.md +160 -0
- package/docs/guides/context-and-memory.md +352 -0
- package/docs/guides/continuous-improvement.md +228 -0
- package/docs/guides/governed-skills.md +173 -0
- package/docs/guides/nous-providers.md +186 -0
- package/docs/guides/peer-messaging.md +304 -0
- package/docs/guides/pi-workers.md +219 -0
- package/docs/guides/provenance-gates.md +313 -0
- package/docs/guides/webhook-workflows.md +364 -0
- package/docs/kb/how-credentials-retrieved-safely.md +38 -12
- package/docs/kb/how-to-capture-and-annotate-section.md +15 -13
- package/docs/kb/how-to-connect-playwright-to-steel.md +16 -11
- package/docs/kb/how-to-recover-expired-session-or-orphan.md +26 -16
- package/docs/kb/how-to-resume-after-mfa.md +19 -11
- package/docs/kb/how-to-take-over-session.md +17 -13
- package/docs/kb/why-authentication-disappeared.md +22 -14
- package/docs/kb/why-automation-opened-different-browser.md +23 -14
- package/docs/kb/why-session-viewer-cannot-control.md +13 -12
- package/docs/operations/backup-and-restore.md +248 -0
- package/docs/operations/deploy.md +307 -0
- package/docs/operations/monitoring.md +209 -0
- package/docs/operations/runtime-sync.md +192 -0
- package/docs/operations/troubleshooting.md +265 -0
- package/docs/operations/upgrade.md +124 -0
- package/docs/prompts/browser-annotate-feedback.md +7 -7
- package/docs/prompts/browser-diagnose-recover.md +11 -10
- package/docs/prompts/browser-explore.md +7 -7
- package/docs/prompts/browser-repro-fix.md +7 -7
- package/docs/prompts/browser-start.md +12 -11
- package/docs/prompts/browser-takeover.md +8 -8
- package/docs/{cli-reference.md → reference/cli-reference.md} +83 -41
- package/docs/{config-reference.md → reference/config-reference.md} +159 -148
- package/docs/reference/configuration.md +299 -0
- package/docs/reference/harness-routing.md +508 -0
- package/docs/reference/http-api.md +203 -0
- package/docs/reference/tools.md +370 -0
- package/docs/{workflow-guide.md → reference/workflow-catalog.md} +92 -153
- package/docs/reference/workflow-definitions.md +286 -0
- package/docs/start/first-workflow.md +287 -0
- package/docs/start/install.md +146 -0
- package/docs/start/quickstart-claude-code.md +405 -0
- package/docs/start/quickstart-pi.md +213 -0
- package/docs/templates/README.md +78 -73
- package/docs/templates/adr.md +13 -13
- package/docs/templates/architecture.md +55 -71
- package/docs/templates/bug-fix.md +13 -16
- package/docs/templates/feature.md +14 -19
- package/docs/templates/handoff.md +44 -46
- package/docs/templates/postmortem.md +30 -43
- package/docs/templates/research.md +15 -20
- package/docs/templates/review.md +49 -50
- package/docs/templates/runbook.md +38 -30
- package/docs/templates/test-plan.md +16 -23
- package/docs/templates/test-report.md +14 -17
- package/examples/README.md +9 -5
- package/examples/provenance-workflow.json +1 -1
- package/examples/webhook-workflows/jira-development.json +59 -0
- package/examples/webhook-workflows/jira-issue-updated.json +12 -0
- package/package.json +1 -1
- package/packages/core/tui/README.md +1 -1
- package/plugins/kxm/.claude-plugin/plugin.json +1 -1
- package/plugins/kxm/README.md +31 -32
- package/plugins/kxm/dist/cli.js +5 -5
- package/plugins/kxm/dist/mcp-server.js +1 -1
- package/plugins/kxm/dist/runtime.js +1 -1
- package/plugins/kxm/package.json +1 -1
- package/plugins/kxm/skills/kxm/references/protocol.md +3 -1
- package/plugins/kxm/skills/kxm-browser-auth/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-browser-diagnostics/SKILL.md +5 -5
- package/plugins/kxm/skills/kxm-browser-explore/SKILL.md +2 -2
- package/plugins/kxm/skills/kxm-browser-session/SKILL.md +10 -13
- package/plugins/kxm/skills/kxm-browser-takeover/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-browser-verify/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-context-memory/SKILL.md +13 -4
- package/plugins/kxm/skills/kxm-hub-ops/SKILL.md +3 -1
- package/plugins/kxm/skills/kxm-mind-setup/SKILL.md +2 -1
- package/plugins/kxm/skills/kxm-project-setup/SKILL.md +31 -54
- package/plugins/kxm/skills/kxm-projects/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-protocol/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-routing-improve/SKILL.md +15 -7
- package/plugins/kxm/skills/kxm-runs/SKILL.md +11 -5
- package/plugins/kxm/skills/kxm-session/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-tasks/SKILL.md +9 -7
- package/plugins/kxm/skills/kxm-workflow/SKILL.md +10 -2
- package/plugins/kxm/src/cli/system.ts +1 -1
- package/plugins/kxm/src/cli.ts +3 -3
- package/plugins/kxm/src/init-guide-setup.ts +1 -1
- package/plugins/kxm/src/mcp-server.ts +1 -1
- package/plugins/kxm/src/modes.ts +1 -1
- package/schemas/README.md +1 -1
- package/docs/agent-communication-envelopes-and-gates.md +0 -553
- package/docs/agent-skills.md +0 -198
- package/docs/architecture.md +0 -245
- package/docs/assignment-runner.md +0 -264
- package/docs/browser-automation.md +0 -139
- package/docs/configuration.md +0 -437
- package/docs/continuous-improvement.md +0 -226
- package/docs/getting-started.md +0 -277
- package/docs/harness-routing.md +0 -616
- package/docs/kb/qa-authentik-authentication.md +0 -97
- package/docs/kb/qa-extension-install-and-hub-bootstrap.md +0 -85
- package/docs/kb/qa-hub-on-a-public-host.md +0 -48
- package/docs/kb/qa-sqlite-vs-duckdb.md +0 -35
- package/docs/kb/qa-what-the-hub-stores.md +0 -64
- package/docs/kxm-handbook.md +0 -1181
- package/docs/operations.md +0 -510
- package/docs/operator-pi-packages.md +0 -67
- package/docs/provenance-gates.md +0 -295
- package/docs/skills.md +0 -47
- package/docs/test-matrix.md +0 -132
- package/docs/troubleshooting.md +0 -322
- package/docs/webhook-workflows.md +0 -240
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
schema: "kxm.doc.v1"
|
|
3
3
|
id: "RB-0001"
|
|
4
4
|
type: "runbook"
|
|
5
|
-
title: "Operational
|
|
5
|
+
title: "Operational runbook title"
|
|
6
6
|
project: "kxm"
|
|
7
|
-
status: "approved
|
|
7
|
+
status: "draft" # draft | in_review | approved | superseded | archived
|
|
8
8
|
owner: "@ops"
|
|
9
9
|
created: "2026-09-08"
|
|
10
10
|
updated: "2026-09-08"
|
|
@@ -14,60 +14,68 @@ summary: "Procedures for diagnosing and mitigating <operational incident>."
|
|
|
14
14
|
tags: ["operations", "runbook", "triage"]
|
|
15
15
|
related: []
|
|
16
16
|
details:
|
|
17
|
-
service: "hub"
|
|
17
|
+
service: "hub" # hub | runtime | worker | plugin
|
|
18
18
|
target_environment: "local-or-server"
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
# Operational
|
|
21
|
+
# Operational runbook: <incident or procedure name>
|
|
22
22
|
|
|
23
|
-
## Symptoms
|
|
23
|
+
## Symptoms and alerts
|
|
24
24
|
|
|
25
|
-
- **
|
|
25
|
+
- **Observable signal:** <alert, log event, error code, or metric>
|
|
26
|
+
- **Impact:** <stuck workflow run, idle worker, refused sync, or failed signal>
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
## Triage
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
Check the hub first, then the Runtime, then the workers.
|
|
30
31
|
|
|
31
32
|
```mermaid
|
|
32
33
|
flowchart TD
|
|
33
|
-
Detect[
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
Detect[Signal detected] --> Hub{kxm hub view healthy?}
|
|
35
|
+
Hub -->|No| Start[Restart the hub]
|
|
36
|
+
Hub -->|Yes| Runtime{kxm runtime status running?}
|
|
37
|
+
Runtime -->|No| RtStart[kxm runtime start]
|
|
38
|
+
Runtime -->|Yes| Procs["Inspect workers in kxm dash --screen procs"]
|
|
39
|
+
Procs --> Logs[Read .kxm/logs/ for the failing component]
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
1. **Verify Hub Daemon Status:**
|
|
42
|
+
1. Check hub health and readiness:
|
|
44
43
|
|
|
45
44
|
```bash
|
|
46
45
|
kxm hub view
|
|
47
46
|
```
|
|
48
47
|
|
|
49
|
-
2.
|
|
48
|
+
2. Check the Runtime supervisor:
|
|
50
49
|
|
|
51
50
|
```bash
|
|
52
|
-
kxm
|
|
51
|
+
kxm runtime status
|
|
53
52
|
```
|
|
54
53
|
|
|
55
|
-
3.
|
|
54
|
+
3. Inspect supervised worker processes:
|
|
56
55
|
|
|
57
56
|
```bash
|
|
58
|
-
|
|
57
|
+
kxm dash --screen procs
|
|
59
58
|
```
|
|
60
59
|
|
|
61
|
-
|
|
60
|
+
4. Check SQLite integrity, read-only, after taking a backup:
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
```bash
|
|
63
|
+
kxm backup --out <backup-dir>
|
|
64
|
+
sqlite3 -readonly .kxm/state/kxm.db "PRAGMA integrity_check;"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Safe mitigation commands
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
| Issue | Command | Expected outcome |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| Hub unhealthy or wedged | `kxm hub stop`, then `kxm hub start` | Hub restarts; queued messages are pushed again until acknowledged, and delivered messages are not replayed |
|
|
72
|
+
| Runtime run stuck | `kxm runs cancel <run-id>` | A durable cancellation request is recorded for the run |
|
|
73
|
+
| Model route misbehaving | `kxm routes disable --model <provider/model>` | The route moves to the disabled list in `.kxm/routes.yaml`; commit it |
|
|
74
|
+
| Sync rows refused by the hub | Fix the hub-side cause, then `kxm runtime sync-retry` | Refused outbox rows are queued again |
|
|
75
|
+
| Hub workflow waiting on a lost callback | `kxm gate signal <run-id> <signal-key> failed "<summary>"` | The wait settles with a `failed` result; needs the callback secret |
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
## Rollback and escalation
|
|
72
78
|
|
|
73
|
-
- **
|
|
79
|
+
- **Rollback:** restore the last verified backup with
|
|
80
|
+
`kxm restore <manifest>` while the hub is stopped.
|
|
81
|
+
- **Escalation:** <primary on-call or human operator contact>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
schema: "kxm.doc.v1"
|
|
3
3
|
id: "TEST-0001"
|
|
4
4
|
type: "test_plan"
|
|
5
|
-
title: "Test
|
|
5
|
+
title: "Test plan: <feature or refactor>"
|
|
6
6
|
project: "kxm"
|
|
7
7
|
status: "draft" # draft | in_review | approved | superseded | archived
|
|
8
8
|
owner: "@owner"
|
|
@@ -18,9 +18,9 @@ details:
|
|
|
18
18
|
target_suite: "core" # core | simulations | complete
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
# Test
|
|
21
|
+
# Test plan: <Feature / refactor name>
|
|
22
22
|
|
|
23
|
-
## Objective
|
|
23
|
+
## Objective and scope
|
|
24
24
|
|
|
25
25
|
- **Feature / Change Under Test:** <Link to FEAT-xx, BUG-xx, or ARCH-xx>
|
|
26
26
|
|
|
@@ -28,34 +28,30 @@ details:
|
|
|
28
28
|
|
|
29
29
|
- **Excluded Behavior:** <Explicitly list deferred or out-of-scope scenarios>
|
|
30
30
|
|
|
31
|
-
## Risks
|
|
31
|
+
## Risks and coverage strategy
|
|
32
32
|
|
|
33
33
|
| Risk / Failure Mode | Test Tier | Rationale for Selected Coverage | Target File |
|
|
34
|
-
|
|
35
34
|
|---|---|---|---|
|
|
36
35
|
| Race condition on git index | Unit (Concurrency) | Immediate lock failure detection | `test/core/external-effects.test.ts` |
|
|
37
|
-
|
|
38
36
|
| Context packet token overflow | Unit (Arbiter) | Verifies token pruning order | `test/core/context-packet.test.ts` |
|
|
39
|
-
| Multi-agent peer deadlock | Simulation | Replays multi-turn timeout | `test/simulations
|
|
37
|
+
| Multi-agent peer deadlock | Simulation | Replays multi-turn timeout | `test/simulations/<scenario>.test.ts` |
|
|
40
38
|
|
|
41
|
-
## Test
|
|
39
|
+
## Test environment and preconditions
|
|
42
40
|
|
|
43
|
-
- **Runtime:** Node 22.19
|
|
41
|
+
- **Runtime:** Node 22.19 or newer on the 22 line, and Node 24
|
|
44
42
|
|
|
45
|
-
- **Database Fixture:** In-memory `:memory:` SQLite or
|
|
43
|
+
- **Database Fixture:** In-memory `:memory:` SQLite, or a database under a `mkdtemp` directory
|
|
46
44
|
|
|
47
45
|
- **Harness Preflight:** `kxm harness list` verifying mock or native CLI status
|
|
48
46
|
|
|
49
|
-
## Detailed
|
|
47
|
+
## Detailed test cases
|
|
50
48
|
|
|
51
49
|
| Case ID | Requirement | Precondition | Test Action | Expected Result |
|
|
52
|
-
|
|
53
50
|
|---|---|---|---|---|
|
|
54
|
-
| TC-01 | REQ-01 | Clean database | Call `claimEffect()` twice
|
|
55
|
-
|
|
51
|
+
| TC-01 | REQ-01 | Clean database | Call `claimEffect()` twice for one effect key | The first claim succeeds; the second is refused |
|
|
56
52
|
| TC-02 | REQ-02 | Valid lease | Call `commitEffect()` with effect key | Status transitions to `confirmed` |
|
|
57
53
|
|
|
58
|
-
## Test
|
|
54
|
+
## Test execution workflow
|
|
59
55
|
|
|
60
56
|
```mermaid
|
|
61
57
|
flowchart LR
|
|
@@ -68,20 +64,17 @@ flowchart LR
|
|
|
68
64
|
|
|
69
65
|
*Verification flow: Build runtime artifacts, run core tests, enforce types and linting, and verify generated dist files match staged index.*
|
|
70
66
|
|
|
71
|
-
## Execution
|
|
67
|
+
## Execution commands
|
|
72
68
|
|
|
73
69
|
| Suite | Command | Expected Output |
|
|
74
|
-
|
|
75
70
|
|---|---|---|
|
|
76
|
-
| Core Tests | `npm run test:core` |
|
|
77
|
-
|
|
71
|
+
| Core Tests | `npm run test:core` | `# fail 0` |
|
|
78
72
|
| Typecheck | `npm run typecheck` | Clean exit code 0 |
|
|
79
|
-
| Docs Lint | `npm run lint:docs` | `0 issues
|
|
80
|
-
|
|
73
|
+
| Docs Lint | `npm run lint:docs` | `Summary: 0 issues` |
|
|
81
74
|
| Generated Dist | `npm run check:generated` | `generated artifacts are tracked and current` |
|
|
82
75
|
|
|
83
|
-
## Entry
|
|
76
|
+
## Entry and exit criteria
|
|
84
77
|
|
|
85
78
|
- **Entry Criteria:** Clean git working tree; `npm run build` succeeds without warnings.
|
|
86
79
|
|
|
87
|
-
- **Exit Criteria:** All test cases pass with zero failures; coverage
|
|
80
|
+
- **Exit Criteria:** All test cases pass with zero failures; coverage floors met (91% lines, 80% branches, 92% functions for `npm run test:coverage`).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
schema: "kxm.doc.v1"
|
|
3
3
|
id: "REP-0001"
|
|
4
4
|
type: "test_report"
|
|
5
|
-
title: "Test
|
|
5
|
+
title: "Test execution witness report"
|
|
6
6
|
project: "kxm"
|
|
7
7
|
status: "approved" # draft | approved | archived
|
|
8
8
|
owner: "@verifier"
|
|
@@ -20,52 +20,49 @@ details:
|
|
|
20
20
|
branch: "kxm/run-<id>-<description>"
|
|
21
21
|
---
|
|
22
22
|
|
|
23
|
-
# Test
|
|
23
|
+
# Test execution witness report
|
|
24
24
|
|
|
25
|
-
## Metadata
|
|
25
|
+
## Metadata and execution environment
|
|
26
26
|
|
|
27
27
|
- **Tested Commit:** `<git-sha>`
|
|
28
28
|
|
|
29
29
|
- **Active Branch:** `kxm/run-<id>-<description>`
|
|
30
30
|
|
|
31
|
-
- **Test Plan:**
|
|
31
|
+
- **Test Plan:** `TEST-0001` (`<path to the test plan>`)
|
|
32
32
|
|
|
33
33
|
- **Executed At:** `2026-09-08T15:45:00Z`
|
|
34
34
|
|
|
35
35
|
- **Verifier:** `npm run verify` witness gate runner
|
|
36
36
|
|
|
37
|
-
- **OS & Runtime:**
|
|
37
|
+
- **OS & Runtime:** `<operating system>` / Node `<version>`
|
|
38
38
|
|
|
39
|
-
## Summary of
|
|
39
|
+
## Summary of results
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Replace the example values below with the run's actual counts.
|
|
42
42
|
|
|
43
|
+
| Suite | Total Tests | Passed | Failed | Skipped | Duration | Status |
|
|
43
44
|
|---|---|---|---|---|---|---|
|
|
44
45
|
| `test:core` | 1008 | 1003 | 0 | 5 (Windows) | 271s | PASS |
|
|
45
|
-
|
|
46
46
|
| `typecheck` | N/A | N/A | 0 | 0 | 3s | PASS |
|
|
47
47
|
| `lint:docs` | 57 files | 57 | 0 | 0 | 2s | PASS |
|
|
48
|
-
|
|
49
48
|
| `check:generated` | 14 files | 14 | 0 | 0 | 4s | PASS |
|
|
50
49
|
|
|
51
|
-
## Test
|
|
50
|
+
## Test case execution details
|
|
52
51
|
|
|
53
52
|
| Case ID | Suite File | Result | Duration | Artifact Reference |
|
|
54
|
-
|
|
55
53
|
|---|---|---|---|---|
|
|
56
54
|
| TC-01 | `test/core/external-effects.test.ts` | PASS | 1.8ms | `artifact:.kxm/assets/witness.log@sha256:...` |
|
|
57
|
-
|
|
58
55
|
| TC-02 | `test/core/context-packet.test.ts` | PASS | 0.9ms | `artifact:.kxm/assets/witness.log@sha256:...` |
|
|
59
56
|
|
|
60
|
-
## Test
|
|
57
|
+
## Test coverage metrics
|
|
61
58
|
|
|
62
|
-
- **Line Coverage:** 92.4% (
|
|
59
|
+
- **Line Coverage:** 92.4% (floor: 91%)
|
|
63
60
|
|
|
64
|
-
- **Branch Coverage:** 81.2% (
|
|
61
|
+
- **Branch Coverage:** 81.2% (floor: 80%)
|
|
65
62
|
|
|
66
|
-
- **Function Coverage:** 93.5% (
|
|
63
|
+
- **Function Coverage:** 93.5% (floor: 92%)
|
|
67
64
|
|
|
68
|
-
## Verdict
|
|
65
|
+
## Verdict and recommendation
|
|
69
66
|
|
|
70
67
|
- **Witness Verdict:** **VERIFIED PASS**
|
|
71
68
|
|
package/examples/README.md
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
These examples demonstrate the transport without requiring an AI model. Run them from the repository root after `npm ci`.
|
|
4
4
|
|
|
5
|
-
The [
|
|
5
|
+
The [`webhook-workflows/jira-development.json`](webhook-workflows/jira-development.json)
|
|
6
|
+
definition turns a signed Jira `issue_updated` webhook into a five-stage hub
|
|
7
|
+
workflow run for a long-lived coordinator: reproduce, plan, implement, checks,
|
|
8
|
+
and report. Follow [Webhook workflows](../docs/guides/webhook-workflows.md) to
|
|
9
|
+
configure it.
|
|
6
10
|
|
|
7
11
|
The [`workflow-signal.ts`](workflow-signal.ts) sender demonstrates the signed callback that resumes a coordinator after CI, review, merge, or Jira work completes. The webhook guide documents its required environment and arguments.
|
|
8
12
|
|
|
@@ -12,12 +16,12 @@ one exact run, stage, requirement, and attempt, while demonstrating an optional
|
|
|
12
16
|
admin-approved one-peer degradation. Its tested topology is project
|
|
13
17
|
`provenance-demo`, coordinator `coordinator`, and reviewers `reviewer-claude`
|
|
14
18
|
and `reviewer-grok`. Follow
|
|
15
|
-
[Peer provenance and quorum gates](../docs/provenance-gates.md) for the complete
|
|
19
|
+
[Peer provenance and quorum gates](../docs/guides/provenance-gates.md) for the complete
|
|
16
20
|
runbook and trust boundary.
|
|
17
21
|
|
|
18
|
-
The [`
|
|
19
|
-
fixture for the local-first KXM
|
|
20
|
-
|
|
22
|
+
The [`project`](project/README.md) directory is a machine-validated project
|
|
23
|
+
fixture for the local-first KXM contracts. The configuration loader and
|
|
24
|
+
workflow compiler tests consume it.
|
|
21
25
|
|
|
22
26
|
## Self-contained round trip
|
|
23
27
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
{
|
|
12
12
|
"id": "review",
|
|
13
13
|
"label": "Independent review",
|
|
14
|
-
"instructions": "Ask both eligible reviewers independently with one kxm_fanout call. Set correlationId to the exact run ID, timeoutMs to 120000, and idempotencyKeyPrefix to the deterministic value provenance-review:<runId>:review:<attempt>. The tool call itself must include workflowContext for this run, stage review, requirement independent peer reviews, and the current attempt; stating that context in a plan is not sufficient. Treat every returned messageId as the durable handle immediately. Use kxm_get to verify each stored message has the exact run, stage, requirement, and attempt binding. For every pending reply, call kxm_await with that messageId and timeoutMs
|
|
14
|
+
"instructions": "Ask both eligible reviewers independently with one kxm_fanout call. Set correlationId to the exact run ID, timeoutMs to 120000, and idempotencyKeyPrefix to the deterministic value provenance-review:<runId>:review:<attempt>. The tool call itself must include workflowContext for this run, stage review, requirement independent peer reviews, and the current attempt; stating that context in a plan is not sufficient. Treat every returned messageId as the durable handle immediately. Use kxm_get to verify each stored message has the exact run, stage, requirement, and attempt binding. For every pending reply, call kxm_await with that messageId and timeoutMs 60000 (its maximum), repeating the call while it stays pending; never replace pending work with a new idempotency prefix. On interruption or uncertain delivery, repeat the exact fanout parameters so the hub returns the same messages. Re-read and verify each durable message after it replies. Compare findings, record contradictions and the chosen resolution, then cite only the bound durable replied message IDs.",
|
|
15
15
|
"requiredEvidence": [
|
|
16
16
|
"independent peer reviews",
|
|
17
17
|
"coordinator decision"
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "jira-development",
|
|
4
|
+
"source": "jira",
|
|
5
|
+
"project": "product",
|
|
6
|
+
"target": "coordinator",
|
|
7
|
+
"secretEnv": "JIRA_WEBHOOK_SECRET",
|
|
8
|
+
"signalSecretEnv": "WORKFLOW_SIGNAL_SECRET",
|
|
9
|
+
"event": "jira:issue_updated",
|
|
10
|
+
"filter": {
|
|
11
|
+
"path": "issue.fields.status.name",
|
|
12
|
+
"equals": "In Progress"
|
|
13
|
+
},
|
|
14
|
+
"delivery": "followUp",
|
|
15
|
+
"promptTemplate": "Jira issue {{issue.key}} moved to In Progress: {{issue.fields.summary}}. Deliver a reviewed fix on a branch and a pull request. Do not merge.",
|
|
16
|
+
"stages": [
|
|
17
|
+
{
|
|
18
|
+
"id": "reproduce",
|
|
19
|
+
"label": "Reproduce",
|
|
20
|
+
"instructions": "Reproduce the reported behavior with a deterministic failing test or script before changing product code. Cite the test path and the failing command.",
|
|
21
|
+
"requiredEvidence": ["reproduction"],
|
|
22
|
+
"maxAttempts": 3,
|
|
23
|
+
"area": "implementation"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "plan",
|
|
27
|
+
"label": "Plan and review",
|
|
28
|
+
"instructions": "Write a bounded plan with file ownership. Ask one peer to review it with kxm_send, record contradictions and decisions with kxm_workflow_record, and revise the plan before implementing.",
|
|
29
|
+
"requiredEvidence": ["plan", "plan review"],
|
|
30
|
+
"maxAttempts": 3,
|
|
31
|
+
"area": "workflow"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "implement",
|
|
35
|
+
"label": "Implement and verify locally",
|
|
36
|
+
"instructions": "Implement the plan. Run lint, typecheck, and the test suite, and make the reproduction pass. Cite each command and its result.",
|
|
37
|
+
"requiredEvidence": ["changed files", "local checks"],
|
|
38
|
+
"maxAttempts": 3,
|
|
39
|
+
"area": "implementation"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "checks",
|
|
43
|
+
"label": "Pull request checks",
|
|
44
|
+
"instructions": "Push the branch and open or update the pull request. Then call kxm_workflow_wait on this stage with signal key github-pr-<number>-checks and settle your turn. An operator or CI job runs kxm gate github watch, which posts the signed result.",
|
|
45
|
+
"requiredEvidence": ["github.check:ci"],
|
|
46
|
+
"maxAttempts": 3,
|
|
47
|
+
"area": "gates"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "report",
|
|
51
|
+
"label": "Update Jira and record lessons",
|
|
52
|
+
"instructions": "Comment on the Jira issue with the pull request link and the evidence summary, using your own authorized Jira tool. Record at least one lesson with kxm_workflow_record. Do not merge the pull request.",
|
|
53
|
+
"requiredEvidence": ["jira comment", "lessons"],
|
|
54
|
+
"maxAttempts": 2,
|
|
55
|
+
"area": "documentation"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
]
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ one input decoder, one contribution registry, and thin host adapters.
|
|
|
5
5
|
|
|
6
6
|
`kxm dash` and every configuration surface draw from here so a field looks,
|
|
7
7
|
keys, and fails the same way across the product. Guide:
|
|
8
|
-
[`docs/tui-components.md`](../../../docs/tui-components.md).
|
|
8
|
+
[`docs/tui-components.md`](../../../docs/contributing/tui-components.md).
|
|
9
9
|
|
|
10
10
|
## Layout
|
|
11
11
|
|
|
@@ -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.96",
|
|
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",
|
package/plugins/kxm/README.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
This plugin connects a Claude Code session to a KXM hub. Claude can then exchange requests with Pi and Claude peers, work on durable workflow runs, and read the project's KXM context. The same directory is also the source of the repository's Pi extension and of the KXM Agent Skills.
|
|
4
4
|
|
|
5
|
-
This page is the plugin reference. For the whole path from an empty repository to a first workflow (initialize, start the hub, install this plugin, run a workflow), follow
|
|
5
|
+
This page is the plugin reference. For the whole path from an empty repository to a first workflow (initialize, start the hub, install this plugin, run a workflow), follow [Set up a new project](../../docs/start/quickstart-claude-code.md#set-up-a-new-project) in the Claude Code quick start, then [Run your first workflow](../../docs/start/first-workflow.md).
|
|
6
6
|
|
|
7
7
|
## Requirements
|
|
8
8
|
|
|
9
9
|
- Node.js 22.19 or newer on the 22.x line, or Node.js 24 or newer, on the `PATH` that Claude Code uses. The plugin's MCP server and its hook both run `node`.
|
|
10
|
-
- A running KXM hub that Claude Code can reach. The operator starts it with [`kxm hub start`](../../docs/cli-reference.md#kxm-hub-start).
|
|
10
|
+
- A running KXM hub that Claude Code can reach. The operator starts it with [`kxm hub start`](../../docs/reference/cli-reference.md#kxm-hub-start).
|
|
11
11
|
- A project token for this project on that hub. See [Which token to use](#which-token-to-use).
|
|
12
12
|
- The `kxm` CLI, to create projects and run the hub. The plugin does not install it:
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ This page is the plugin reference. For the whole path from an empty repository t
|
|
|
17
17
|
|
|
18
18
|
The plugin's hook and MCP server run from the plugin's own bundled files, so they do not need `kxm` on `PATH`.
|
|
19
19
|
|
|
20
|
-
`kxm init` writes no Git ignore rules. Add `.kxm/state/` and `.kxm/logs/` to `.gitignore` yourself, and commit the rest of `.kxm/`. [Workspace layout](../../docs/config-reference.md#workspace-layout-tracked-ignored-and-state) lists what to track.
|
|
20
|
+
`kxm init` writes no Git ignore rules. Add `.kxm/state/` and `.kxm/logs/` to `.gitignore` yourself, and commit the rest of `.kxm/`. [Workspace layout](../../docs/reference/config-reference.md#workspace-layout-tracked-ignored-and-state) lists what to track.
|
|
21
21
|
|
|
22
22
|
## Install
|
|
23
23
|
|
|
@@ -55,10 +55,10 @@ Claude Code asks for these options when you install the plugin. Change them late
|
|
|
55
55
|
| Option | Variable | Default | What to enter |
|
|
56
56
|
|---|---|---|---|
|
|
57
57
|
| `server_url` | `KXM_SERVER_URL` | `http://127.0.0.1:7331` | URL of the KXM hub. The SessionStart hook probes the same URL. |
|
|
58
|
-
| `auth_token` | `KXM_AUTH_TOKEN` | Blank |
|
|
58
|
+
| `auth_token` | `KXM_AUTH_TOKEN` | Blank | This project's token from the hub's `KXM_PROJECT_TOKENS`. Leave it blank on the machine that runs the hub. Never the hub admin token. Marked sensitive. |
|
|
59
59
|
| `agent_name` | `KXM_AGENT_NAME` | `claude` | Name other agents see. The first active session in a project keeps it; a later concurrent session registers as `<name>-<pid>`. |
|
|
60
60
|
| `agent_purpose` | `KXM_AGENT_PURPOSE` | `Claude Code implementation and review agent` | One line that peers use to decide what to send this agent. |
|
|
61
|
-
| `project` | `KXM_PROJECT` | Blank | Hub project key
|
|
61
|
+
| `project` | `KXM_PROJECT` | Blank | Hub project key; must match a key in the hub's `KXM_PROJECT_TOKENS`. Blank uses `name` from the project's `package.json`, then the directory name. |
|
|
62
62
|
|
|
63
63
|
The MCP server also receives `KXM_PROJECT_DIR`, set to the directory Claude Code was started in (`CLAUDE_PROJECT_DIR`). It decides the default project key and whether this is a KXM project (one with a `.kxm/` directory).
|
|
64
64
|
|
|
@@ -66,12 +66,12 @@ The MCP server also receives `KXM_PROJECT_DIR`, set to the directory Claude Code
|
|
|
66
66
|
|
|
67
67
|
The plugin acts as an agent of one hub project and authenticates with that project's token. It never uses the hub admin token.
|
|
68
68
|
|
|
69
|
-
- On the machine that runs the hub, leave `auth_token` blank. The MCP server then uses the project token the hub saved for this project in `hub-env.json` under the user state root (`KXM_STATE_HOME`, or the platform default listed in [State outside the project](../../docs/config-reference.md#state-outside-the-project)). It uses only that entry, never the admin token saved beside it.
|
|
69
|
+
- On the machine that runs the hub, leave `auth_token` blank. The MCP server then uses the project token the hub saved for this project in `hub-env.json` under the user state root (`KXM_STATE_HOME`, or the platform default listed in [State outside the project](../../docs/reference/config-reference.md#state-outside-the-project)). It uses only that entry, never the admin token saved beside it.
|
|
70
70
|
- On any other machine, enter this project's token at `/plugin configure kxm@kxm`. Get it from whoever runs the hub, through your password manager.
|
|
71
71
|
- Never enter the hub admin token. It is the operator's credential. The hub accepts it for any project that has no token of its own, so an agent holding it could act in projects it was never given.
|
|
72
72
|
- Without a project token, every `kxm_*` tool fails with `KXM has no project token for project <p> on this machine`, and the MCP server does not contact the hub.
|
|
73
73
|
|
|
74
|
-
To give a project a token, the operator adds it to `KXM_PROJECT_TOKENS` and restarts the hub. That variable replaces the hub's saved token map rather than merging with it, so it must list every project, existing and new.
|
|
74
|
+
To give a project a token, the operator adds it to `KXM_PROJECT_TOKENS` and restarts the hub. That variable replaces the hub's saved token map rather than merging with it, so it must list every project, existing and new. [Add Claude Code to an existing project](../../docs/start/quickstart-claude-code.md#add-claude-code-to-an-existing-project) has a command that builds the full map. Run it in your own terminal, and never paste tokens or `hub-env.json` into Claude.
|
|
75
75
|
|
|
76
76
|
## What the plugin adds
|
|
77
77
|
|
|
@@ -98,7 +98,7 @@ The plugin registers one SessionStart hook: `node ${CLAUDE_PLUGIN_ROOT}/dist/cla
|
|
|
98
98
|
4. Where to start: `kxm_context` with your role and task before planning, `kxm_workflow_get <runId>` for an assigned run, and `kxm_inbox` then `kxm_reply` for peer requests.
|
|
99
99
|
5. When the hub is off or unknown: that `kxm_*` tools will fail until you start it with `kxm hub start`.
|
|
100
100
|
6. When the KXM session token is invalid: the fix, which is `kxm session token --clear` for a token file, or unsetting or replacing `KXM_SESSION_TOKEN` in the environment Claude Code was launched from. See [Troubleshooting](#troubleshooting).
|
|
101
|
-
7. The project memory brief, verbatim: the active facts in `.kxm/memory/`, the same text [`kxm memory brief`](../../docs/cli-reference.md#kxm-memory-brief) prints.
|
|
101
|
+
7. The project memory brief, verbatim: the active facts in `.kxm/memory/`, the same text [`kxm memory brief`](../../docs/reference/cli-reference.md#kxm-memory-brief) prints.
|
|
102
102
|
|
|
103
103
|
Items 1 to 6 are capped at 1,500 characters. The memory brief follows them in full. If the whole context exceeds Claude Code's 10,000-character hook limit, Claude Code saves it to a file and shows a preview; the status lines come first, so they stay in the preview.
|
|
104
104
|
|
|
@@ -110,7 +110,7 @@ Items 1 to 6 are capped at 1,500 characters. The memory brief follows them in fu
|
|
|
110
110
|
|
|
111
111
|
### Skills
|
|
112
112
|
|
|
113
|
-
The plugin ships the KXM Agent Skills. The `kxm` skill teaches Claude when and how to use the tools below safely and points to the rest of the suite. See [Agent Skills](../../docs/agent-skills.md) for the full list.
|
|
113
|
+
The plugin ships the KXM Agent Skills. The `kxm` skill teaches Claude when and how to use the tools below safely and points to the rest of the suite. See [Agent Skills](../../docs/guides/agent-skills.md) for the full list.
|
|
114
114
|
|
|
115
115
|
## MCP tools
|
|
116
116
|
|
|
@@ -121,7 +121,7 @@ Every tool acts as this session's agent (`agent_name`) in the hub project.
|
|
|
121
121
|
| Tool | What it does |
|
|
122
122
|
|---|---|
|
|
123
123
|
| `kxm_list` | Lists peers in this project with their names, purposes, host labels and presence (online, stale, offline). `includeOffline` adds registered peers whose lease expired. |
|
|
124
|
-
| `kxm_send` | Sends one
|
|
124
|
+
| `kxm_send` | Sends one request to a peer and returns a message ID for `kxm_get` or `kxm_await`. Pass `workflowContext` so the reply counts as peer evidence. |
|
|
125
125
|
| `kxm_get` | Checks a sent request's status and reply without waiting. |
|
|
126
126
|
| `kxm_fanout` | Asks one to three peers the same question independently, for comparison. A local timeout returns pending entries with durable message IDs to check later. |
|
|
127
127
|
| `kxm_await` | Waits for the reply to a sent request, for at most 60 seconds. For longer external work, use `kxm_workflow_wait`. |
|
|
@@ -131,28 +131,30 @@ Every tool acts as this session's agent (`agent_name`) in the hub project.
|
|
|
131
131
|
|
|
132
132
|
### Workflows
|
|
133
133
|
|
|
134
|
-
These tools work on durable hub workflows, the ones started by signed webhooks or `kxm workflow start` (see [Webhook workflows](../../docs/webhook-workflows.md)). Runs created with `kxm run` are Runtime runs; inspect those with `kxm runs status` in a terminal.
|
|
134
|
+
These tools work on durable hub workflows, the ones started by signed webhooks or `kxm workflow start` (see [Webhook workflows](../../docs/guides/webhook-workflows.md)). Runs created with `kxm run` are Runtime runs; inspect those with `kxm runs status` in a terminal.
|
|
135
135
|
|
|
136
136
|
| Tool | What it does |
|
|
137
137
|
|---|---|
|
|
138
138
|
| `kxm_workflow_list` | Lists durable workflows assigned to this agent. |
|
|
139
139
|
| `kxm_workflow_get` | Reads a run's stages and its journal. |
|
|
140
|
-
| `kxm_workflow_checkpoint` | Records a stage result (passed, warning or failed) with evidence
|
|
140
|
+
| `kxm_workflow_checkpoint` | Records a stage result (passed, warning or failed) with evidence per required key. Cite peer replies in `evidenceRefs`. Warnings and failures need another attempt. |
|
|
141
141
|
| `kxm_workflow_record` | Adds a journal entry: plan, decision, contradiction, error, lesson, observation, hypothesis, experiment, state-change or skill-candidate. Lessons and skill candidates need evidence. |
|
|
142
142
|
| `kxm_workflow_wait` | Parks the active stage until a signed external callback (CI, review, merge, Jira) checkpoints it and resumes the coordinator. |
|
|
143
143
|
| `kxm_improvement_report` | Summarizes errors, contradictions, lessons and skill candidates by improvement area, with ranked cross-run signals. |
|
|
144
144
|
|
|
145
|
-
Workflow authors can require replies from a snapshotted set of eligible peers. The coordinator passes exact `workflowContext` to `kxm_send` or `kxm_fanout` and later cites the returned message IDs in `evidenceRefs`; the hub derives provenance and counts unique producers. Evidence strings, correlation IDs and idempotency keys do not satisfy a peer policy. See [Peer provenance and quorum gates](../../docs/provenance-gates.md).
|
|
145
|
+
Workflow authors can require replies from a snapshotted set of eligible peers. The coordinator passes exact `workflowContext` to `kxm_send` or `kxm_fanout` and later cites the returned message IDs in `evidenceRefs`; the hub derives provenance and counts unique producers. Evidence strings, correlation IDs and idempotency keys do not satisfy a peer policy. See [Peer provenance and quorum gates](../../docs/guides/provenance-gates.md).
|
|
146
146
|
|
|
147
147
|
### Context
|
|
148
148
|
|
|
149
149
|
| Tool | What it does |
|
|
150
150
|
|---|---|
|
|
151
|
-
| `kxm_context` |
|
|
151
|
+
| `kxm_context` | Start here. Builds a token-budgeted, role-aware packet of evidence, state, episodes, knowledge and skills for a role and task; run and stage are audit-only. |
|
|
152
152
|
| `kxm_recall` | Searches durable context records by query and returns bounded metadata with a relevance score, never summaries. |
|
|
153
153
|
| `kxm_state` | Reads the current value of one temporal state key, or its value as of an ISO-8601 timestamp. |
|
|
154
154
|
| `kxm_episode` | Reads episodic learning (errors, lessons, observations, experiments) from workflow journals, optionally for one run. |
|
|
155
|
-
| `kxm_promote` | Proposes
|
|
155
|
+
| `kxm_promote` | Proposes an evidence-backed change to one authoritative state key and returns a proposal ID. Only an operator applies it, with [`kxm context promote`](../../docs/reference/cli-reference.md#kxm-context-promote). |
|
|
156
|
+
|
|
157
|
+
`kxm_context` leaves out superseded and rejected records. Its `workflowRunId` and `stageId` arguments are recorded in the packet's audit only: they do not filter the packet, which can hold items from any run in the project.
|
|
156
158
|
|
|
157
159
|
## Pushed channel mode and pull mode
|
|
158
160
|
|
|
@@ -162,7 +164,7 @@ Peer requests reach Claude in one of two ways. Everything else, including `kxm_s
|
|
|
162
164
|
|
|
163
165
|
**Pushed channel mode** uses Claude Code channels to inject each peer request into the running session as a `<channel source="kxm" message_id="...">` event, which Claude handles and answers with `kxm_reply`. During the channels research preview, start Claude Code with the community channel explicitly and review the trust prompt:
|
|
164
166
|
|
|
165
|
-
```
|
|
167
|
+
```bash
|
|
166
168
|
claude --dangerously-load-development-channels plugin:kxm@kxm
|
|
167
169
|
```
|
|
168
170
|
|
|
@@ -170,13 +172,9 @@ If your organization has approved the plugin through `allowedChannelPlugins`, us
|
|
|
170
172
|
|
|
171
173
|
## Update
|
|
172
174
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
- User scope: `claude plugin marketplace update kxm`, then `claude plugin update kxm@kxm`.
|
|
176
|
-
- Project scope: `claude plugin marketplace update kxm`, then `claude plugin update kxm@kxm --scope project`. Without `--scope project` the update fails with `Plugin "kxm" is not installed at scope user`.
|
|
177
|
-
- Then restart Claude Code.
|
|
175
|
+
[Update KXM and the plugin](../../docs/start/quickstart-claude-code.md#update-kxm-and-the-plugin) covers the CLI and the plugin together.
|
|
178
176
|
|
|
179
|
-
**
|
|
177
|
+
**Reinstall to upgrade the plugin.** Claude Code installs new plugin code only when the version in `plugin.json` and `marketplace.json` changes. The release job sets that version only inside its own build and never commits the bump to the repository, so the version the marketplace reads does not change between releases. `claude plugin update kxm@kxm` therefore prints `kxm is already at the latest version (<version>).` and keeps the cached copy, which can hold an older SessionStart hook and MCP server than this page describes. Reinstall instead:
|
|
180
178
|
|
|
181
179
|
```bash
|
|
182
180
|
claude plugin marketplace update kxm
|
|
@@ -190,14 +188,14 @@ claude plugin install kxm@kxm --scope project \
|
|
|
190
188
|
|
|
191
189
|
Drop `--scope project` for a user-scope install. Reinstalling discards the plugin options: without `--config`, Claude Code prints `5 userConfig options not yet set (3 required)`. Pass them again as above, re-enter `auth_token` at `/plugin configure kxm@kxm` if you use one, and restart Claude Code.
|
|
192
190
|
|
|
193
|
-
|
|
191
|
+
If the cached copy you replaced was older than the behavior described on this page:
|
|
194
192
|
|
|
195
193
|
- A blank `auth_token` no longer falls back to the hub admin token. Each project needs its own project token; see [Which token to use](#which-token-to-use).
|
|
196
194
|
- The previous SessionStart hooks ran `kxm session brief --status` and `kxm memory brief`. They needed `kxm` on `PATH`, and the first one saved a 24-hour session token. The new hook does neither, and nothing in the plugin refreshes that token, so once it expires it blocks every `kxm_*` tool until you clear it; see [Troubleshooting](#troubleshooting).
|
|
197
195
|
|
|
198
196
|
## Troubleshooting
|
|
199
197
|
|
|
200
|
-
Tool errors and the SessionStart brief name the fix, addressed to you. Run the commands below in your own terminal rather than through Claude, and never paste tokens into Claude. [Troubleshooting](../../docs/troubleshooting.md) covers the hub and workers.
|
|
198
|
+
Tool errors and the SessionStart brief name the fix, addressed to you. Run the commands below in your own terminal rather than through Claude, and never paste tokens into Claude. [Troubleshooting](../../docs/operations/troubleshooting.md) covers the hub and workers.
|
|
201
199
|
|
|
202
200
|
### The `kxm_*` tools do not appear
|
|
203
201
|
|
|
@@ -220,7 +218,7 @@ The MCP server found neither an `auth_token` nor a token the hub saved for `<p>`
|
|
|
220
218
|
|
|
221
219
|
### `tool_policy_denied: Session token on disk is malformed or expired`
|
|
222
220
|
|
|
223
|
-
The same fix applies to `Session token file on disk could not be read`. A KXM session token file in your KXM user configuration directory blocks every `kxm_*` tool. Run [`kxm session token --clear`](../../docs/cli-reference.md#kxm-session-token); it prints `Session token cleared from disk.` `kxm session token --status` prints `No active session token found in env or disk` for such a file even though the file still blocks the tools, so it cannot confirm this problem. Do not use `--issue`: it prints the token and only re-arms it for 24 hours. With no token file and no `KXM_SESSION_TOKEN`, the MCP server applies no session policy.
|
|
221
|
+
The same fix applies to `Session token file on disk could not be read`. A KXM session token file in your KXM user configuration directory blocks every `kxm_*` tool. Run [`kxm session token --clear`](../../docs/reference/cli-reference.md#kxm-session-token); it prints `Session token cleared from disk.` `kxm session token --status` prints `No active session token found in env or disk` for such a file even though the file still blocks the tools, so it cannot confirm this problem. Do not use `--issue`: it prints the token and only re-arms it for 24 hours. With no token file and no `KXM_SESSION_TOKEN`, the MCP server applies no session policy.
|
|
224
222
|
|
|
225
223
|
### `tool_policy_denied: KXM_SESSION_TOKEN is malformed or expired`
|
|
226
224
|
|
|
@@ -234,9 +232,9 @@ Another active session in the same project already uses `agent_name`, so this on
|
|
|
234
232
|
|
|
235
233
|
The hook runs only when the directory Claude Code was started in contains `.kxm/`. Start Claude Code from the project root, or run `kxm init` there. A SessionStart hook error that mentions `node` means `node` is not on the `PATH` Claude Code uses.
|
|
236
234
|
|
|
237
|
-
### `
|
|
235
|
+
### `claude plugin update` reports the latest version, but the plugin is out of date
|
|
238
236
|
|
|
239
|
-
|
|
237
|
+
The release job never commits a version bump, so `claude plugin update` never installs new plugin code. Use the reinstall in [Update](#update).
|
|
240
238
|
|
|
241
239
|
### `kxm_await` reports `timed out waiting for <messageId>`
|
|
242
240
|
|
|
@@ -267,9 +265,10 @@ npm run verify
|
|
|
267
265
|
|
|
268
266
|
The bundles include their dependencies, so marketplace installs need no post-install step. Commit the rebuilt `dist/` files with the source change; `npm run check:generated` fails when they are stale. CI validates both plugin manifests with `claude plugin validate` (`npm run validate:claude`). `test/core/claude-plugin-docs.test.ts` fails when the [MCP tools](#mcp-tools) tables and the tools `dist/mcp-server.js` publishes disagree, so add or remove a row in the same change as the tool.
|
|
269
267
|
|
|
270
|
-
##
|
|
268
|
+
## Related
|
|
271
269
|
|
|
272
|
-
- [KXM
|
|
273
|
-
- [
|
|
274
|
-
- [
|
|
275
|
-
- [
|
|
270
|
+
- [KXM documentation](../../docs/README.md): install, quick starts, guides, reference, concepts and operations.
|
|
271
|
+
- [MCP and Pi tools](../../docs/reference/tools.md): every tool with its parameters, limits and errors.
|
|
272
|
+
- [Getting started](../../docs/start/quickstart-pi.md) and [Operations](../../docs/operations/deploy.md): task-focused guides.
|
|
273
|
+
- [CLI reference](../../docs/reference/cli-reference.md): every `kxm` command, with options and output.
|
|
274
|
+
- [Configuration reference](../../docs/reference/config-reference.md): every `.kxm` file, the workspace layout, and state outside the project.
|