@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.kxm/agents/coordinator.yaml +9 -0
- package/.kxm/agents/critic-arch.yaml +13 -0
- package/.kxm/agents/critic-cli.yaml +13 -0
- package/.kxm/agents/implementer.yaml +13 -0
- package/.kxm/gates.yaml +8 -0
- package/.kxm/producers.yaml +22 -0
- package/.kxm/project.yaml +15 -0
- package/.kxm/roles/writer.yaml +7 -0
- package/.kxm/workflows/default.yaml +47 -0
- package/CHANGELOG.md +39 -7
- package/README.md +1 -0
- package/docs/README.md +4 -0
- package/docs/agent-skills.md +121 -0
- package/docs/architecture.md +1 -1
- package/docs/assignment-runner.md +21 -8
- package/docs/configuration.md +11 -2
- package/docs/getting-started.md +21 -0
- package/docs/kxm-handbook.md +3 -3
- package/docs/operations.md +24 -0
- package/docs/operator-pi-packages.md +63 -0
- package/docs/skills/repo-work-delivery.md +107 -0
- package/docs/skills.md +2 -0
- package/docs/test-matrix.md +4 -3
- package/docs/troubleshooting.md +41 -1
- package/docs/vnext/validation.md +9 -0
- package/docs/webhook-workflows.md +2 -2
- package/examples/README.md +1 -1
- package/package.json +16 -17
- package/plugins/kxm/.claude-plugin/plugin.json +1 -1
- package/plugins/kxm/README.md +1 -1
- package/plugins/kxm/dist/cli.js +8955 -3934
- package/plugins/kxm/dist/core.js +271 -34
- package/plugins/kxm/dist/extension.js +7759 -86
- package/plugins/kxm/dist/mcp-server.js +75 -21
- package/plugins/kxm/dist/runtime.js +5637 -1125
- package/plugins/kxm/dist/server.js +3125 -2260
- package/plugins/kxm/dist/vnext-runtime-supervisor.js +5808 -565
- package/plugins/kxm/package.json +1 -1
- package/plugins/kxm/skills/SUITE.md +5 -0
- package/plugins/kxm/skills/hints.json +73 -0
- package/plugins/kxm/skills/kxm/SKILL.md +30 -83
- package/plugins/kxm/skills/kxm-context-memory/SKILL.md +69 -0
- package/plugins/kxm/skills/kxm-definitions/SKILL.md +65 -0
- package/plugins/kxm/skills/kxm-harness-auth/SKILL.md +34 -0
- package/plugins/kxm/skills/kxm-harvest/SKILL.md +48 -0
- package/plugins/kxm/skills/kxm-hub-ops/SKILL.md +43 -0
- package/plugins/kxm/skills/kxm-insights/SKILL.md +48 -0
- package/plugins/kxm/skills/kxm-mind/SKILL.md +59 -0
- package/plugins/kxm/skills/kxm-peer/SKILL.md +110 -0
- package/plugins/kxm/skills/kxm-project-setup/SKILL.md +42 -0
- package/plugins/kxm/skills/kxm-projects/SKILL.md +43 -0
- package/plugins/kxm/skills/kxm-protocol/SKILL.md +66 -0
- package/plugins/kxm/skills/kxm-query/SKILL.md +45 -0
- package/plugins/kxm/skills/kxm-routing-improve/SKILL.md +30 -0
- package/plugins/kxm/skills/kxm-runs/SKILL.md +29 -0
- package/plugins/kxm/skills/kxm-setup/SKILL.md +55 -0
- package/plugins/kxm/skills/kxm-skill-lifecycle/SKILL.md +31 -0
- package/plugins/kxm/skills/kxm-tasks/SKILL.md +33 -0
- package/plugins/kxm/skills/kxm-triage/SKILL.md +47 -0
- package/plugins/kxm/skills/kxm-work/SKILL.md +44 -0
- package/plugins/kxm/skills/kxm-workflow/SKILL.md +45 -0
- package/plugins/kxm/src/autocomplete.ts +9 -3
- package/plugins/kxm/src/cli.ts +1637 -73
- package/plugins/kxm/src/commands.ts +150 -8
- package/plugins/kxm/src/completion-install.ts +223 -0
- package/plugins/kxm/src/config.ts +7 -4
- package/plugins/kxm/src/context-packet.ts +172 -0
- package/plugins/kxm/src/database.ts +1 -1
- package/plugins/kxm/src/extension.ts +36 -1
- package/plugins/kxm/src/external-effects.ts +357 -8
- package/plugins/kxm/src/hub-env.ts +193 -0
- package/plugins/kxm/src/hub.ts +2 -4
- package/plugins/kxm/src/improve.ts +72 -0
- package/plugins/kxm/src/init-guide-setup.ts +547 -0
- package/plugins/kxm/src/local-snapshot.ts +1 -1
- package/plugins/kxm/src/mcp-server.ts +1 -1
- package/plugins/kxm/src/model-inventory.ts +127 -0
- package/plugins/kxm/src/policy-draft.d.mts +55 -0
- package/plugins/kxm/src/policy-draft.mjs +565 -0
- package/plugins/kxm/src/price-calc.ts +17 -18
- package/plugins/kxm/src/prices.ts +32 -16
- package/plugins/kxm/src/producers.ts +71 -0
- package/plugins/kxm/src/protocol.ts +111 -0
- package/plugins/kxm/src/restricted-yaml.d.mts +31 -0
- package/plugins/kxm/src/restricted-yaml.mjs +145 -0
- package/plugins/kxm/src/role.ts +710 -0
- package/plugins/kxm/src/routing.ts +99 -1
- package/plugins/kxm/src/safety-integrity.ts +76 -0
- package/plugins/kxm/src/session-work.ts +9 -2
- package/plugins/kxm/src/sqlite.ts +76 -0
- package/plugins/kxm/src/store.ts +1 -1
- package/plugins/kxm/src/studio-layout.ts +660 -17
- package/plugins/kxm/src/suggest.ts +7 -13
- package/plugins/kxm/src/telemetry.ts +82 -0
- package/plugins/kxm/src/tui.ts +140 -0
- package/plugins/kxm/src/vnext-bindings.ts +1 -1
- package/plugins/kxm/src/vnext-config.ts +53 -111
- package/plugins/kxm/src/vnext-engine-command.ts +2 -0
- package/plugins/kxm/src/vnext-engine.ts +214 -62
- package/plugins/kxm/src/vnext-harness.ts +267 -83
- package/plugins/kxm/src/vnext-oneshot-evidence.ts +85 -0
- package/plugins/kxm/src/vnext-oneshot-process.ts +166 -0
- package/plugins/kxm/src/vnext-oneshot-producer.ts +179 -224
- package/plugins/kxm/src/vnext-runtime-store.ts +36 -2
- package/plugins/kxm/src/vnext-runtime-supervisor.ts +120 -5
- package/plugins/kxm/src/vnext-runtime.ts +14 -0
- package/plugins/kxm/src/workflow-manager.ts +392 -0
- package/plugins/kxm/src/workflow-tui.ts +255 -0
- package/plugins/kxm/src/workflow.ts +144 -0
- package/schemas/policy-draft/README.md +17 -0
- package/schemas/policy-draft/model.v2.schema.json +140 -0
- package/schemas/policy-draft/role.v2.schema.json +91 -0
- package/schemas/vnext/role.schema.json +76 -0
- package/schemas/vnext/run-event.schema.json +1 -0
- package/scripts/assignment-run.d.mts +1 -1
- package/scripts/assignment-run.mjs +44 -35
- package/scripts/check-generated.mjs +33 -9
- package/scripts/emit-codex-artifacts.mjs +255 -11
- package/scripts/harness-run.d.mts +12 -4
- package/scripts/harness-run.mjs +65 -17
- package/scripts/kxm-bump-version.mjs +146 -0
- package/scripts/kxm-hub.mjs +150 -2
- package/scripts/kxm-publish-npm.mjs +3 -1
- package/scripts/kxm-release-github.mjs +3 -1
- package/scripts/kxm.mjs +0 -0
- package/scripts/native-critic.d.mts +5 -0
- package/scripts/native-critic.mjs +60 -0
- package/.kxm/config/README.md +0 -5
- package/.kxm/config/agents.json +0 -43
- package/.kxm/config/env.example +0 -56
- package/.kxm/config/update.example.yaml +0 -9
- package/.kxm/config/workflows/fix.json +0 -160
- package/.kxm/config/workflows/jira-development.json +0 -116
- package/.kxm/config/workflows/provenance-quorum.json +0 -150
- 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
|
package/docs/test-matrix.md
CHANGED
|
@@ -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/
|
|
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/
|
|
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
|
-
|
|
|
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` |
|
package/docs/troubleshooting.md
CHANGED
|
@@ -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.
|
|
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.
|
package/docs/vnext/validation.md
CHANGED
|
@@ -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/
|
|
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/
|
|
44
|
+
$env:KXM_WEBHOOK_WORKFLOWS_FILE = ".kxm/workflows/default.yaml"
|
|
45
45
|
kxm hub start
|
|
46
46
|
```
|
|
47
47
|
|
package/examples/README.md
CHANGED
|
@@ -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/
|
|
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.
|
|
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=
|
|
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.
|
|
85
|
+
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
86
86
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
87
|
-
"@types/node": "26.4.
|
|
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
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
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/
|
|
101
|
-
".kxm/
|
|
102
|
-
".kxm/
|
|
103
|
-
".kxm/
|
|
104
|
-
".kxm/
|
|
105
|
-
".kxm/
|
|
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.
|
|
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.
|
|
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",
|
package/plugins/kxm/README.md
CHANGED
|
@@ -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
|
|