@kontextmind/kxm 0.6.0 → 0.7.4

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 (136) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.kxm/agents/coordinator.yaml +9 -0
  3. package/.kxm/agents/critic-arch.yaml +13 -0
  4. package/.kxm/agents/critic-cli.yaml +13 -0
  5. package/.kxm/agents/implementer.yaml +13 -0
  6. package/.kxm/gates.yaml +8 -0
  7. package/.kxm/producers.yaml +22 -0
  8. package/.kxm/project.yaml +15 -0
  9. package/.kxm/roles/writer.yaml +7 -0
  10. package/.kxm/workflows/default.yaml +47 -0
  11. package/CHANGELOG.md +39 -7
  12. package/README.md +1 -0
  13. package/docs/README.md +4 -0
  14. package/docs/agent-skills.md +121 -0
  15. package/docs/architecture.md +1 -1
  16. package/docs/assignment-runner.md +21 -8
  17. package/docs/configuration.md +11 -2
  18. package/docs/getting-started.md +21 -0
  19. package/docs/kxm-handbook.md +3 -3
  20. package/docs/operations.md +24 -0
  21. package/docs/operator-pi-packages.md +63 -0
  22. package/docs/skills/repo-work-delivery.md +107 -0
  23. package/docs/skills.md +2 -0
  24. package/docs/test-matrix.md +4 -3
  25. package/docs/troubleshooting.md +41 -1
  26. package/docs/vnext/validation.md +9 -0
  27. package/docs/webhook-workflows.md +2 -2
  28. package/examples/README.md +1 -1
  29. package/package.json +16 -17
  30. package/plugins/kxm/.claude-plugin/plugin.json +1 -1
  31. package/plugins/kxm/README.md +1 -1
  32. package/plugins/kxm/dist/cli.js +8955 -3934
  33. package/plugins/kxm/dist/core.js +271 -34
  34. package/plugins/kxm/dist/extension.js +7759 -86
  35. package/plugins/kxm/dist/mcp-server.js +75 -21
  36. package/plugins/kxm/dist/runtime.js +5637 -1125
  37. package/plugins/kxm/dist/server.js +3125 -2260
  38. package/plugins/kxm/dist/vnext-runtime-supervisor.js +5808 -565
  39. package/plugins/kxm/package.json +1 -1
  40. package/plugins/kxm/skills/SUITE.md +5 -0
  41. package/plugins/kxm/skills/hints.json +73 -0
  42. package/plugins/kxm/skills/kxm/SKILL.md +30 -83
  43. package/plugins/kxm/skills/kxm-context-memory/SKILL.md +69 -0
  44. package/plugins/kxm/skills/kxm-definitions/SKILL.md +65 -0
  45. package/plugins/kxm/skills/kxm-harness-auth/SKILL.md +34 -0
  46. package/plugins/kxm/skills/kxm-harvest/SKILL.md +48 -0
  47. package/plugins/kxm/skills/kxm-hub-ops/SKILL.md +43 -0
  48. package/plugins/kxm/skills/kxm-insights/SKILL.md +48 -0
  49. package/plugins/kxm/skills/kxm-mind/SKILL.md +59 -0
  50. package/plugins/kxm/skills/kxm-peer/SKILL.md +110 -0
  51. package/plugins/kxm/skills/kxm-project-setup/SKILL.md +42 -0
  52. package/plugins/kxm/skills/kxm-projects/SKILL.md +43 -0
  53. package/plugins/kxm/skills/kxm-protocol/SKILL.md +66 -0
  54. package/plugins/kxm/skills/kxm-query/SKILL.md +45 -0
  55. package/plugins/kxm/skills/kxm-routing-improve/SKILL.md +30 -0
  56. package/plugins/kxm/skills/kxm-runs/SKILL.md +29 -0
  57. package/plugins/kxm/skills/kxm-setup/SKILL.md +55 -0
  58. package/plugins/kxm/skills/kxm-skill-lifecycle/SKILL.md +31 -0
  59. package/plugins/kxm/skills/kxm-tasks/SKILL.md +33 -0
  60. package/plugins/kxm/skills/kxm-triage/SKILL.md +47 -0
  61. package/plugins/kxm/skills/kxm-work/SKILL.md +44 -0
  62. package/plugins/kxm/skills/kxm-workflow/SKILL.md +45 -0
  63. package/plugins/kxm/src/autocomplete.ts +9 -3
  64. package/plugins/kxm/src/cli.ts +1637 -73
  65. package/plugins/kxm/src/commands.ts +150 -8
  66. package/plugins/kxm/src/completion-install.ts +223 -0
  67. package/plugins/kxm/src/config.ts +7 -4
  68. package/plugins/kxm/src/context-packet.ts +172 -0
  69. package/plugins/kxm/src/database.ts +1 -1
  70. package/plugins/kxm/src/extension.ts +36 -1
  71. package/plugins/kxm/src/external-effects.ts +357 -8
  72. package/plugins/kxm/src/hub-env.ts +193 -0
  73. package/plugins/kxm/src/hub.ts +2 -4
  74. package/plugins/kxm/src/improve.ts +72 -0
  75. package/plugins/kxm/src/init-guide-setup.ts +547 -0
  76. package/plugins/kxm/src/local-snapshot.ts +1 -1
  77. package/plugins/kxm/src/mcp-server.ts +1 -1
  78. package/plugins/kxm/src/model-inventory.ts +127 -0
  79. package/plugins/kxm/src/policy-draft.d.mts +55 -0
  80. package/plugins/kxm/src/policy-draft.mjs +565 -0
  81. package/plugins/kxm/src/price-calc.ts +17 -18
  82. package/plugins/kxm/src/prices.ts +32 -16
  83. package/plugins/kxm/src/producers.ts +71 -0
  84. package/plugins/kxm/src/protocol.ts +111 -0
  85. package/plugins/kxm/src/restricted-yaml.d.mts +31 -0
  86. package/plugins/kxm/src/restricted-yaml.mjs +145 -0
  87. package/plugins/kxm/src/role.ts +710 -0
  88. package/plugins/kxm/src/routing.ts +99 -1
  89. package/plugins/kxm/src/safety-integrity.ts +76 -0
  90. package/plugins/kxm/src/session-work.ts +9 -2
  91. package/plugins/kxm/src/sqlite.ts +76 -0
  92. package/plugins/kxm/src/store.ts +1 -1
  93. package/plugins/kxm/src/studio-layout.ts +660 -17
  94. package/plugins/kxm/src/suggest.ts +7 -13
  95. package/plugins/kxm/src/telemetry.ts +82 -0
  96. package/plugins/kxm/src/tui.ts +140 -0
  97. package/plugins/kxm/src/vnext-bindings.ts +1 -1
  98. package/plugins/kxm/src/vnext-config.ts +53 -111
  99. package/plugins/kxm/src/vnext-engine-command.ts +2 -0
  100. package/plugins/kxm/src/vnext-engine.ts +214 -62
  101. package/plugins/kxm/src/vnext-harness.ts +267 -83
  102. package/plugins/kxm/src/vnext-oneshot-evidence.ts +85 -0
  103. package/plugins/kxm/src/vnext-oneshot-process.ts +166 -0
  104. package/plugins/kxm/src/vnext-oneshot-producer.ts +179 -224
  105. package/plugins/kxm/src/vnext-runtime-store.ts +36 -2
  106. package/plugins/kxm/src/vnext-runtime-supervisor.ts +120 -5
  107. package/plugins/kxm/src/vnext-runtime.ts +14 -0
  108. package/plugins/kxm/src/workflow-manager.ts +392 -0
  109. package/plugins/kxm/src/workflow-tui.ts +255 -0
  110. package/plugins/kxm/src/workflow.ts +144 -0
  111. package/schemas/policy-draft/README.md +17 -0
  112. package/schemas/policy-draft/model.v2.schema.json +140 -0
  113. package/schemas/policy-draft/role.v2.schema.json +91 -0
  114. package/schemas/vnext/role.schema.json +76 -0
  115. package/schemas/vnext/run-event.schema.json +1 -0
  116. package/scripts/assignment-run.d.mts +1 -1
  117. package/scripts/assignment-run.mjs +44 -35
  118. package/scripts/check-generated.mjs +33 -9
  119. package/scripts/emit-codex-artifacts.mjs +255 -11
  120. package/scripts/harness-run.d.mts +12 -4
  121. package/scripts/harness-run.mjs +65 -17
  122. package/scripts/kxm-bump-version.mjs +146 -0
  123. package/scripts/kxm-hub.mjs +150 -2
  124. package/scripts/kxm-publish-npm.mjs +3 -1
  125. package/scripts/kxm-release-github.mjs +3 -1
  126. package/scripts/kxm.mjs +0 -0
  127. package/scripts/native-critic.d.mts +5 -0
  128. package/scripts/native-critic.mjs +60 -0
  129. package/.kxm/config/README.md +0 -5
  130. package/.kxm/config/agents.json +0 -43
  131. package/.kxm/config/env.example +0 -56
  132. package/.kxm/config/update.example.yaml +0 -9
  133. package/.kxm/config/workflows/fix.json +0 -160
  134. package/.kxm/config/workflows/jira-development.json +0 -116
  135. package/.kxm/config/workflows/provenance-quorum.json +0 -150
  136. package/.kxm/config/workflows/v04-dogfood.json +0 -72
@@ -0,0 +1,107 @@
1
+ # Repository Work Delivery Skill
2
+
3
+ ## Purpose
4
+
5
+ `repo-work-delivery` is a reusable skill for converting an engineering request into an evidence-based, executable delivery prompt. It is designed for repository work that may need discovery, official documentation research, phased delivery, validation, pull requests, CI/review follow-through, policy-gated merge, and safe cleanup.
6
+
7
+ The canonical skill is located at:
8
+
9
+ ```text
10
+ .agents/skills/repo-work-delivery/SKILL.md
11
+ ```
12
+
13
+ ## What it does
14
+
15
+ The skill requires the executor to:
16
+
17
+ - Inspect repository instructions, architecture, workflow guidance, CI, package manifests, and existing patterns.
18
+ - Identify material ambiguity and ask focused questions only when repository evidence cannot safely resolve it.
19
+ - Select the workflow recommended by the repository’s workflow guide.
20
+ - Assign explicit delivery roles, even when one agent performs several roles.
21
+ - Use a one-shot workflow only for genuinely small, low-risk, self-contained changes.
22
+ - Research fresh official documentation for every materially affected package, framework, SDK, platform, or API.
23
+ - Create and maintain a living Markdown plan for multi-phase work.
24
+ - Deliver buildable and testable phases with coherent commits and incremental pushes.
25
+ - Run targeted and broader validation, record commands and outcomes, and inspect the final diff for security issues.
26
+ - Create a pull request, monitor checks/reviews, apply only bounded low-risk fixes, and stop for user direction when scope or risk materially changes.
27
+ - Auto-merge only where explicit authorization and repository policy allow it.
28
+ - Clean up the workspace only after merge is verified and no local work can be lost.
29
+
30
+ ## Workflow selection
31
+
32
+ The skill first reads the repository workflow guide. For KXM, that includes:
33
+
34
+ ```text
35
+ .agents/skills/kxm-workflow/SKILL.md
36
+ ```
37
+
38
+ It chooses the least complex safe workflow prescribed by that guidance.
39
+
40
+ ### One-shot work
41
+
42
+ One-shot is suitable only when all of the following are true:
43
+
44
+ - Scope is narrow and unambiguous.
45
+ - The change is self-contained and can be validated as a single coherent unit.
46
+ - No migration, public contract, authorization/security, irreversible side effect, or production-rollout complexity is involved.
47
+ - No cross-service coordination is needed.
48
+ - Repository policy does not require a phased plan.
49
+
50
+ One-shot work still performs discovery, documentation research, focused validation, commit, push, and required PR work.
51
+
52
+ ### Phased work
53
+
54
+ All other work uses a living plan. Each phase has an objective, owner role, dependencies, expected files, acceptance criteria, test commands, rollback notes when appropriate, commit boundary, and push requirement.
55
+
56
+ ## Required role coverage
57
+
58
+ The generated prompt assigns relevant roles from this set:
59
+
60
+ | Role | Primary responsibility |
61
+ |---|---|
62
+ | Delivery lead | Scope, decisions, workflow, plan, and final reporting |
63
+ | Repository analyst | Architecture, instructions, existing patterns, affected paths |
64
+ | Documentation researcher | Fresh official package/API/framework evidence |
65
+ | Implementer | Minimal compatible code and configuration changes |
66
+ | Test engineer | Focused, regression, integration, and acceptance validation |
67
+ | Security reviewer | Secrets, dependencies, input handling, auth, and data-risk review |
68
+ | Release/CI owner | Required checks, CI monitoring, and safe remediation |
69
+ | Reviewer/merge steward | PR, review resolution, policy gates, merge, and cleanup |
70
+
71
+ ## Gap questions
72
+
73
+ The skill asks the user only when unanswered details would materially affect behavior, scope, data/migration choices, permissions, external integrations, rollout, acceptance criteria, or merge authority. It does not ask for facts that can be established from the repository or official docs.
74
+
75
+ ## Documentation standard
76
+
77
+ For material dependencies, research uses official maintainer or other authoritative primary documentation for the repository’s actual version. The plan or PR records the source, version/date where available, retrieval date, and decision supported.
78
+
79
+ ## Merge and cleanup safety
80
+
81
+ Auto-merge happens only after explicit authorization or policy authorization, passing required checks, required approvals, resolved comments, clean security status, and compliance with branch protection.
82
+
83
+ After verified merge, cleanup is guarded by checks for a clean workspace and fully merged branch. It updates the default branch, removes only safe merged local branches/worktrees, prunes stale references, and never discards uncommitted or user-owned artifacts.
84
+
85
+ ## Expected generated prompt sections
86
+
87
+ A prompt produced with this skill includes:
88
+
89
+ 1. Desired outcome and acceptance criteria
90
+ 2. Gap-resolution gate
91
+ 3. Repository discovery
92
+ 4. Workflow selection and rationale
93
+ 5. Assigned roles
94
+ 6. Fresh official documentation research
95
+ 7. Scope, non-goals, assumptions, and constraints
96
+ 8. Design and integration expectations
97
+ 9. One-shot or phase plan
98
+ 10. Tests and validation
99
+ 11. Commit/push discipline
100
+ 12. PR, CI/review monitoring, bounded remediation, and merge gate
101
+ 13. Verified post-merge cleanup
102
+ 14. Completion report
103
+
104
+ ## Related
105
+
106
+ - [Agent Skills](../agent-skills.md) — bundled command-suite skills
107
+ - [Skill candidate lifecycle](../skills.md) — governed `kxm skills` candidates
package/docs/skills.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  KXM turns verified episodes and lessons into reusable Agent Skills through a governed lifecycle. Runtime experience never becomes promoted skill content automatically, and promoted skills never grant tool or permission authority.
4
4
 
5
+ This page is the governed `kxm skills` lifecycle. For the bundled command-suite skills, see [Agent Skills](agent-skills.md). For converting a repository request into a delivery prompt, see [Repository work delivery](skills/repo-work-delivery.md).
6
+
5
7
  ## Lifecycle
6
8
 
7
9
  ```text
@@ -78,13 +78,14 @@ exercised from `node_modules`.
78
78
  | Non-blocking delegation | `examples/README.md` | Uses send, independent work, and get |
79
79
  | Obsolete-work cancellation | `examples/README.md` | Uses cancel and states rollback boundary |
80
80
  | Safe network retry | `examples/README.md` | Uses stable idempotency keys |
81
- | Jira issue-to-merge workflow | `.kxm/config/workflows/jira-development.json` | Parsed, type-checked through workflow tests, and exercised end to end with representative configuration |
81
+ | Jira issue-to-merge workflow | `.kxm/workflows/default.yaml` | Parsed, type-checked through workflow tests, and exercised end to end with representative configuration |
82
82
  | `.kxm` workspace defaults and persisted hub/worker logs | `.kxm/`, `test/core/server.test.ts`, `test/core/worker.test.ts` | Executed with isolated temporary workspaces |
83
83
  | Signed external result callback | `examples/workflow-signal.ts` | Type-checked; equivalent signed callback path is exercised end to end in `test/core/hub-api.test.ts` |
84
- | Peer provenance and optional explicit degradation | `examples/provenance-workflow.json`, `.kxm/config/workflows/provenance-quorum.json`, `docs/provenance-gates.md` | Both definitions are parser-checked in `test/core/examples.test.ts`; adversarial evidence and degradation behavior is automated in `test/core/workflow-provenance.test.ts` |
84
+ | Peer provenance and optional explicit degradation | `examples/provenance-workflow.json`, `.kxm/workflows/default.yaml`, `docs/provenance-gates.md` | Both definitions are parser-checked in `test/core/examples.test.ts`; adversarial evidence and degradation behavior is automated in `test/core/workflow-provenance.test.ts` |
85
85
  | Quorum parser boundaries and definition identity | `plugins/kxm/src/workflow.ts`, `test/core/workflow-quorum.test.ts`, `test/core/workflow-definition-hash.test.ts` | Rejects impossible peer pools, verifies degradation bounds, and proves secret-free semantic hash stamping plus credential-rotation invariance |
86
86
  | Artifact existence and containment gate | `plugins/kxm/src/artifacts-exist.ts`, `test/core/artifacts-exist.test.ts` | Non-empty regular files pass; missing, empty, non-file, lexical escape, and real-path escape cases fail closed (host-permitted symlink coverage) |
87
- | Headless harness helper | `scripts/harness-run.mjs`, `justfile`, `test/core/harness-run.test.ts` | Offline auth success/logout/garbage, role/mode/pair/provider refusals before spawn, missing brief/schema fail closed with zero spawn, invocation-cwd relative `prompt_file`/`output_schema` vs `request.cwd` (absolute argv tokens; Claude/Codex stdin matches the brief), Pi JSONL multi-`message_end` sums, Claude auxiliary usage, native error-on-exit-0, timeout/empty payload, sidecar-only stderr/answer/error, shell:false argv metacharacters, and win32 `.cmd` rejection. Result v2 transport vs closed model claims, dispatch-before-spawn, grok/codex isolation flags, `max_turns` validation, obsolete v1 diagnosis without rewrite or unknown-schema echo, partial usage on fail/interrupt, signaled null `exitCode` plus exact `signal`, exit-before-stdio-close drain vs bounded linger, type-closed usage/cost (no object leak or zero-coercion), malformed optional text as run-stage failure with retained spend, stdin/pid-record write failures not completed, bounded timeout settle without descendant-death claims, spawn/write-failure stage and spend, and capability-fixture parser evidence (Codex `--ignore-user-config` is not invented in top-level help; captured help bytes are not rescrubbed). Recipe quoting is covered from the justfile body without a just binary (POSIX `sh` + positional argv; Windows uses the recipe's `node -e` / argv shape). Real just integration is optional and skipped when the binary is absent. No live paid smoke. |
87
+ | Harness inventory probe | `plugins/kxm/src/vnext-harness.ts`, `test/core/vnext-harness.test.ts` | Detect/auth/dispatch for the builtin catalog; win32 `.exe` / inner npm-package `.exe` / `.cmd` candidate order for npm shims (issue #168); `windows_shim` issue only when the shim answered; allowlisted `name.cmd` shell spawn only; rejected metacharacter commands; Linux still `not_detected` when the bare command is missing. |
88
+ | Headless harness helper | `scripts/harness-run.mjs`, `justfile`, `test/core/harness-run.test.ts` | Offline auth success/logout/garbage, role/mode/pair/provider refusals before spawn, missing brief/schema fail closed with zero spawn, invocation-cwd relative `prompt_file`/`output_schema` vs `request.cwd` (absolute argv tokens; Claude/Codex stdin matches the brief), Pi JSONL multi-`message_end` sums, Claude auxiliary usage, native error-on-exit-0, timeout/empty payload, sidecar-only stderr/answer/error, shell:false argv metacharacters, win32 `.cmd` rejection, and win32 npm inner `claude.exe` / Pi `node.exe`+`cli.js` unwrap. Result v2 transport vs closed model claims, dispatch-before-spawn, grok/codex isolation flags, `max_turns` validation, obsolete v1 diagnosis without rewrite or unknown-schema echo, partial usage on fail/interrupt, signaled null `exitCode` plus exact `signal`, exit-before-stdio-close drain vs bounded linger, type-closed usage/cost (no object leak or zero-coercion), malformed optional text as run-stage failure with retained spend, stdin/pid-record write failures not completed, bounded timeout settle without descendant-death claims, spawn/write-failure stage and spend, and capability-fixture parser evidence (Codex `--ignore-user-config` is not invented in top-level help; captured help bytes are not rescrubbed). Recipe quoting is covered from the justfile body without a just binary (POSIX `sh` + positional argv; Windows uses the recipe's `node -e` / argv shape). Real just integration is optional and skipped when the binary is absent. No live paid smoke. |
88
89
  | Long-lived headless coordinator | `scripts/kxm-worker.mjs` | Restart limits, spawn failure, collision-resistant ownership, exact resource and tool loading, raw-output isolation, bounded RPC framing, bounded drain, hung-tool recovery, provider/model fallback, and `--continue` fallback are automated; the opt-in real-Pi gate verifies two workers, discovery, request/reply, fanout, durable restart/resume, journal, and checkpoint |
89
90
  | GitHub check signal adapter | `plugins/kxm/src/github-watch.ts` | Deterministic pagination, conclusion, retry, and per-wait delivery-generation states in `test/core/github-watch.test.ts` |
90
91
  | Operator CLI | `scripts/kxm.mjs` | Isolated workspace commands in `test/core/cli.test.ts`; the packed artifact is installed locally and with the documented global `--omit=peer` path by `test/core/package-install.test.ts` |
@@ -28,7 +28,7 @@ Set `KXM_WORKER_TOOL_TIMEOUT_MS` above the longest legitimate tool call. Its 31-
28
28
 
29
29
  ### A hub or worker PID claim is stale
30
30
 
31
- Version 0.4.3 prevents a second wrapper from replacing a live hub or worker claim. `kxm hub stop` ignores an invalid, non-running, or ownership-mismatched record rather than guessing. If a crash or pre-0.4.3 process left one behind, inspect the exact `.pid` JSON and verify that its recorded PID is no longer running; for a hub, also verify the configured port has no listener. Then remove only that exact `.pid` and its recorded `.stop` control file before relaunching once. Worker filenames include a project/agent identity digest and their records include the exact names and generation, so do not substitute a similarly sanitized filename. Never delete the `.kxm/state` directory or SQLite database to clear a claim.
31
+ Version 0.4.3 prevents a second wrapper from replacing a live hub or worker claim. `kxm hub stop` ignores an invalid, non-running, or ownership-mismatched record rather than guessing. A hub claim whose wrapper PID is dead is reclaimed automatically on the next `kxm hub start`; the wrapper also terminates an orphaned hub server child recorded by a dead wrapper (for example after `SIGKILL`) before reclaiming, and `kxm hub stop` can stop such an orphan directly. If a pre-0.4.3 process left a malformed claim behind, inspect the exact `.pid` JSON and verify that its recorded PID is no longer running; for a hub, also verify the configured port has no listener. Then remove only that exact `.pid` and its recorded `.stop` control file before relaunching once. Worker filenames include a project/agent identity digest and their records include the exact names and generation, so do not substitute a similarly sanitized filename. Never delete the `.kxm/state` directory or SQLite database to clear a claim.
32
32
 
33
33
  ### GitHub checks passed but the workflow is still waiting
34
34
 
@@ -44,6 +44,14 @@ Set `KXM_PORT` to a valid integer. Remove the variable to use `7331`.
44
44
 
45
45
  Either restore `KXM_HOST=127.0.0.1` or configure a token before using a non-loopback interface.
46
46
 
47
+ **`KXM hub env file is malformed`**
48
+
49
+ The persisted credential file (`hub-env.json` under the user state root) failed
50
+ validation. It holds only `KXM_AUTH_TOKEN` / `KXM_PROJECT_TOKENS` values in
51
+ `kxm.hub-env.v1` schema; fix its JSON or delete it to have kxm generate a
52
+ fresh admin token on the next start. To rotate the generated token, delete
53
+ the file and run `kxm hub start` again.
54
+
47
55
  #### Database schema is newer than this runtime supports
48
56
 
49
57
  Do not delete or rewrite the database. Start the package version that created it, or upgrade this runtime. Restore the pre-upgrade backup when rolling back.
@@ -52,6 +60,25 @@ Do not delete or rewrite the database. Start the package version that created it
52
60
 
53
61
  Another process owns the port. Stop that process or choose another port, then update every agent's `KXM_SERVER_URL`.
54
62
 
63
+ ### `kxm harness list` says Claude Code is `not_detected` on Windows
64
+
65
+ npm installs Claude Code as `claude.cmd` (and an extensionless shim), not
66
+ `claude.exe` on `PATH`. The native binary lives next to the shim at
67
+ `%AppData%\Roaming\npm\node_modules\@anthropic-ai\claude-code\bin\claude.exe`.
68
+ Older probes spawned `claude` without a shell, got `ENOENT` or `EINVAL`, and
69
+ reported the CLI missing even when `claude --version` worked in cmd or Git Bash.
70
+
71
+ Current `kxm harness list` retries `claude.exe`, then that inner package
72
+ `.exe`, then `claude.cmd` on win32. It sets `issues: ["windows_shim"]` only
73
+ when the npm shim is what answered. If the entry is still `not_detected`,
74
+ confirm `%AppData%\Roaming\npm` is on `PATH` for the same process that runs
75
+ `kxm`, then `claude --version` and `claude auth status`. Assignment dispatch
76
+ (`just assign` / `harness-run`) follows the inner `claude.exe` (and Pi's
77
+ `node.exe` plus `cli.js`) with `shell: false`; unverified `.cmd` launchers
78
+ are still refused.
79
+
80
+ The same npm-shim miss can appear for `pi` on Windows.
81
+
55
82
  ### Pi shows `hub:off`
56
83
 
57
84
  - Confirm the hub is reachable from the Pi terminal.
@@ -88,6 +115,19 @@ release asset through the authenticated `gh release download` flow in
88
115
  `node scripts/kxm.mjs` from a clone after `npm ci`. `npx kxm` and a
89
116
  global `git+https` npm install are not supported installation paths.
90
117
 
118
+ For bash and zsh, `kxm completion install` can add the kxm bin directory to
119
+ `PATH` in the shell rc file when it is missing; restart the shell afterwards.
120
+
121
+ ### Tab completion is not active
122
+
123
+ Run `kxm completion install` for the detected shell, or pass
124
+ `--shell bash|zsh|fish` explicitly. The install appends one guarded stanza to
125
+ the shell rc file and is idempotent: rerunning never duplicates it. Fish needs
126
+ no rc entry because fish auto-loads `~/.config/fish/completions`. After
127
+ installing, start a new terminal or `source` the rc file. To inspect without
128
+ writing, use `--dry-run`; to suppress the post-`kxm init` offer, set
129
+ `KXM_SKIP_COMPLETION_PROMPT=1`.
130
+
91
131
  ### An expected peer is missing
92
132
 
93
133
  The two agents usually have different `KXM_PROJECT` values or one stopped sending heartbeats. Compare settings and check for an `agent_stale` event. Names and projects are case-sensitive for display; live-name uniqueness is case-insensitive.
@@ -22,6 +22,15 @@ The `schema` field is required. For agent, model, and workflow files, identity i
22
22
  the normalized filename without `.yaml`; an in-document identity field is
23
23
  forbidden.
24
24
 
25
+ The shared implementation is `plugins/kxm/src/restricted-yaml.mjs`. Public
26
+ `vnext-config` callers still receive `VnextConfigError` issue codes, paths, and
27
+ messages.
28
+
29
+ `schemas/policy-draft` (`kxm.model.v2`, `kxm.role.v2`) and
30
+ `validatePolicyDraft` are non-authoritative scaffolding. They are not live
31
+ registry identities, operator settings, or admission. Live model files remain
32
+ `kxm.model.v1` under `schemas/vnext`.
33
+
25
34
  ## Validation pipeline
26
35
 
27
36
  ### 1. Parse validation
@@ -21,7 +21,7 @@ The hub stores a SHA-256 payload hash and the rendered coordinator prompt, not t
21
21
 
22
22
  ## Configure the Jira example
23
23
 
24
- The included [`jira-development.json`](../.kxm/config/workflows/jira-development.json) workspace configuration models this path:
24
+ The included [`jira-development.json`](../.kxm/workflows/default.yaml) workspace configuration models this path:
25
25
 
26
26
  1. Jira issue enters **In Progress**.
27
27
  2. Reproduce the defect and create deterministic evidence.
@@ -41,7 +41,7 @@ Load it without storing its secret in the JSON file:
41
41
  ```powershell
42
42
  $env:JIRA_WEBHOOK_SECRET = "replace-with-a-high-entropy-secret"
43
43
  $env:WORKFLOW_SIGNAL_SECRET = "replace-with-a-separate-callback-secret"
44
- $env:KXM_WEBHOOK_WORKFLOWS_FILE = ".kxm/config/workflows/jira-development.json"
44
+ $env:KXM_WEBHOOK_WORKFLOWS_FILE = ".kxm/workflows/default.yaml"
45
45
  kxm hub start
46
46
  ```
47
47
 
@@ -2,7 +2,7 @@
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 [`.kxm/config/workflows/jira-development.json`](../.kxm/config/workflows/jira-development.json) workspace configuration is a production-oriented definition for a long-lived coordinator. It covers reproduction, single-agent or three-agent planning, plan review, implementation, local and repository gates, documentation, push/watch retries, merge, Jira update, and continuous improvement. Follow [Webhook workflows](../docs/webhook-workflows.md) to configure it.
5
+ The [`.kxm/workflows/default.yaml`](../.kxm/workflows/default.yaml) workspace configuration is a production-oriented definition for a long-lived coordinator. It covers reproduction, single-agent or three-agent planning, plan review, implementation, local and repository gates, documentation, push/watch retries, merge, Jira update, and continuous improvement. Follow [Webhook workflows](../docs/webhook-workflows.md) to configure it.
6
6
 
7
7
  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
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kontextmind/kxm",
3
- "version": "0.6.0",
3
+ "version": "0.7.4",
4
4
  "description": "KXM local-first multi-agent orchestration and operator dashboard",
5
5
  "type": "module",
6
6
  "author": "KontextMind",
@@ -38,8 +38,8 @@
38
38
  "test:simulations": "npm run build && node --disable-warning=ExperimentalWarning --experimental-strip-types --test --test-concurrency=4 test/simulations/*.test.ts",
39
39
  "test:complete": "npm run build && node --disable-warning=ExperimentalWarning --experimental-strip-types --test --test-concurrency=4 test/core/*.test.ts test/simulations/*.test.ts",
40
40
  "test": "npm run test:core",
41
- "test:coverage:core": "npm run build && node --disable-warning=ExperimentalWarning --experimental-strip-types --test --test-concurrency=4 --experimental-test-coverage --test-coverage-lines=92 --test-coverage-branches=80 --test-coverage-functions=93 --test-coverage-include=plugins/kxm/src/**/*.ts --test-coverage-exclude=plugins/kxm/src/server.ts --test-coverage-exclude=plugins/kxm/src/mcp-server.ts test/core/*.test.ts",
42
- "test:coverage:complete": "npm run build && node --disable-warning=ExperimentalWarning --experimental-strip-types --test --test-concurrency=4 --experimental-test-coverage --test-coverage-lines=93 --test-coverage-branches=80 --test-coverage-functions=93 --test-coverage-include=plugins/kxm/src/**/*.ts --test-coverage-exclude=plugins/kxm/src/server.ts --test-coverage-exclude=plugins/kxm/src/mcp-server.ts test/core/*.test.ts test/simulations/*.test.ts",
41
+ "test:coverage:core": "npm run build && node --disable-warning=ExperimentalWarning --experimental-strip-types --test --test-concurrency=4 --experimental-test-coverage --test-coverage-lines=91 --test-coverage-branches=80 --test-coverage-functions=92 --test-coverage-include=plugins/kxm/src/**/*.ts --test-coverage-exclude=plugins/kxm/src/server.ts --test-coverage-exclude=plugins/kxm/src/mcp-server.ts --test-coverage-exclude=plugins/kxm/src/vnext-runtime-supervisor.ts test/core/*.test.ts",
42
+ "test:coverage:complete": "npm run build && node --disable-warning=ExperimentalWarning --experimental-strip-types --test --test-concurrency=4 --experimental-test-coverage --test-coverage-lines=93 --test-coverage-branches=80 --test-coverage-functions=93 --test-coverage-include=plugins/kxm/src/**/*.ts --test-coverage-exclude=plugins/kxm/src/server.ts --test-coverage-exclude=plugins/kxm/src/mcp-server.ts --test-coverage-exclude=plugins/kxm/src/vnext-runtime-supervisor.ts test/core/*.test.ts test/simulations/*.test.ts",
43
43
  "test:coverage": "npm run test:coverage:core",
44
44
  "typecheck": "tsc --noEmit",
45
45
  "lint:docs": "markdownlint-cli2",
@@ -82,29 +82,27 @@
82
82
  }
83
83
  },
84
84
  "devDependencies": {
85
- "@earendil-works/pi-coding-agent": "0.84.3",
85
+ "@earendil-works/pi-coding-agent": "0.85.1",
86
86
  "@modelcontextprotocol/sdk": "1.30.0",
87
- "@types/node": "26.4.0",
87
+ "@types/node": "26.4.1",
88
88
  "ajv": "8.20.0",
89
89
  "commander": "15.0.0",
90
90
  "esbuild": "0.28.2",
91
91
  "markdownlint-cli2": "0.23.2",
92
- "typebox": "1.3.19",
93
- "typescript": "7.0.2",
94
- "yaml": "2.9.0"
92
+ "tsx": "^4.23.13",
93
+ "typebox": "1.3.28",
94
+ "typescript": "7.0.2"
95
95
  },
96
96
  "files": [
97
97
  ".kxm/README.md",
98
98
  ".kxm/assets/README.md",
99
99
  ".kxm/assets/retrospectives/README.md",
100
- ".kxm/config/README.md",
101
- ".kxm/config/env.example",
102
- ".kxm/config/update.example.yaml",
103
- ".kxm/config/agents.json",
104
- ".kxm/config/workflows/jira-development.json",
105
- ".kxm/config/workflows/v04-dogfood.json",
106
- ".kxm/config/workflows/fix.json",
107
- ".kxm/config/workflows/provenance-quorum.json",
100
+ ".kxm/project.yaml",
101
+ ".kxm/gates.yaml",
102
+ ".kxm/producers.yaml",
103
+ ".kxm/agents/*.yaml",
104
+ ".kxm/roles/*.yaml",
105
+ ".kxm/workflows/*.yaml",
108
106
  ".claude-plugin",
109
107
  "plugins/kxm/.claude-plugin",
110
108
  "plugins/kxm/.mcp.json",
@@ -124,6 +122,7 @@
124
122
  ],
125
123
  "license": "MIT",
126
124
  "dependencies": {
127
- "@earendil-works/pi-tui": "0.84.4"
125
+ "@earendil-works/pi-tui": "0.85.1",
126
+ "yaml": "^2.9.0"
128
127
  }
129
128
  }
@@ -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.6.0",
5
+ "version": "0.7.4",
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",
@@ -39,7 +39,7 @@ Configure the hub URL, token, unique agent name, purpose, and project when promp
39
39
  | `kxm_workflow_record` | Capture a plan, decision, contradiction, error, or lesson |
40
40
  | `kxm_improvement_report` | Group learning evidence by improvement area |
41
41
 
42
- The bundled `kxm` skill teaches Claude when and how to use these tools safely.
42
+ The bundled `kxm` skill teaches Claude when and how to use these tools safely. For the complete KXM Agent Skills suite covering all KXM commands, see the [Agent Skills documentation](../../docs/agent-skills.md).
43
43
 
44
44
  Signed webhooks can create durable workflows for long-lived Pi coordinators. See the repository's [Webhook workflows](../../docs/webhook-workflows.md) guide and Jira development example.
45
45