@kontextmind/kxm 0.7.154 → 0.7.155
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/CHANGELOG.md +6 -3
- package/package.json +1 -1
- package/plugins/kxm/.claude-plugin/plugin.json +1 -1
- package/plugins/kxm/dist/cli.js +7 -0
- package/plugins/kxm/dist/mcp-server.js +1 -1
- package/plugins/kxm/dist/runtime-supervisor.js +7 -0
- package/plugins/kxm/dist/runtime.js +7 -0
- package/plugins/kxm/package.json +1 -1
- package/plugins/kxm/src/harness.ts +10 -0
- package/plugins/kxm/src/mcp-server.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -161,9 +161,12 @@ All notable user-facing changes are documented here. The project follows [Semant
|
|
|
161
161
|
#363 after it stopped reporting tests. `package-install.test.ts` (171s on
|
|
162
162
|
that lane, 67s on Linux) now runs with the serial files. The other light
|
|
163
163
|
files are split into `light-1` and `light-2`. POSIX `#!/bin/sh` shims in
|
|
164
|
-
the land tests are skipped on Windows.
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
the land tests are skipped on Windows. A missing Windows `.cmd` is not
|
|
165
|
+
reported as an installed harness: `cmd.exe` answers for a command that is
|
|
166
|
+
not on `PATH`, and that answer was counted as detection. Unix `0600` mode
|
|
167
|
+
checks and forward-slash path checks in the unit tests match what Windows
|
|
168
|
+
can report. `CI / required` still fails when a lane fails or is cancelled.
|
|
169
|
+
See [CI and release](docs/contributing/ci-and-release.md).
|
|
167
170
|
|
|
168
171
|
- **Workforce ids use one convention, and old ids still resolve.**
|
|
169
172
|
Role ids stay `planner`, `writer`, `reviewer-arch`, and `reviewer-cli`.
|
package/package.json
CHANGED
|
@@ -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.155",
|
|
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/dist/cli.js
CHANGED
|
@@ -18406,10 +18406,17 @@ function resolveDispatchStatus(entry, detected, authenticated, issues) {
|
|
|
18406
18406
|
}
|
|
18407
18407
|
return { status: "yes", supported: true };
|
|
18408
18408
|
}
|
|
18409
|
+
function windowsCmdReportsMissing(result) {
|
|
18410
|
+
if (result.ok) return false;
|
|
18411
|
+
const text = `${result.stdout}
|
|
18412
|
+
${result.stderr}`;
|
|
18413
|
+
return /not recognized as an internal or external command/i.test(text) || /the system cannot find the (?:file|path) specified/i.test(text);
|
|
18414
|
+
}
|
|
18409
18415
|
function tryHarnessCommand(candidate, entry, runCommand, timeoutMs) {
|
|
18410
18416
|
const result = runCommand(candidate, entry.versionArgs, timeoutMs);
|
|
18411
18417
|
if (result.error === "ENOENT") return void 0;
|
|
18412
18418
|
if (result.error && result.code === null && !result.stdout && !result.stderr) return void 0;
|
|
18419
|
+
if (isWindowsHarnessShim(candidate) && windowsCmdReportsMissing(result)) return void 0;
|
|
18413
18420
|
return {
|
|
18414
18421
|
command: candidate,
|
|
18415
18422
|
version: firstLine(result.stdout) ?? firstLine(result.stderr)
|
|
@@ -17313,7 +17313,7 @@ function sessionTokenFixHint(policy) {
|
|
|
17313
17313
|
}
|
|
17314
17314
|
|
|
17315
17315
|
// plugins/kxm/src/mcp-server.ts
|
|
17316
|
-
var VERSION = "0.7.
|
|
17316
|
+
var VERSION = "0.7.155";
|
|
17317
17317
|
var CONFIGURE_PLUGIN = "/plugin configure kxm@kxm";
|
|
17318
17318
|
var inbox = /* @__PURE__ */ new Map();
|
|
17319
17319
|
var notifiedInbox = /* @__PURE__ */ new Set();
|
|
@@ -16889,10 +16889,17 @@ function resolveDispatchStatus(entry, detected, authenticated, issues) {
|
|
|
16889
16889
|
}
|
|
16890
16890
|
return { status: "yes", supported: true };
|
|
16891
16891
|
}
|
|
16892
|
+
function windowsCmdReportsMissing(result) {
|
|
16893
|
+
if (result.ok) return false;
|
|
16894
|
+
const text = `${result.stdout}
|
|
16895
|
+
${result.stderr}`;
|
|
16896
|
+
return /not recognized as an internal or external command/i.test(text) || /the system cannot find the (?:file|path) specified/i.test(text);
|
|
16897
|
+
}
|
|
16892
16898
|
function tryHarnessCommand(candidate, entry, runCommand, timeoutMs) {
|
|
16893
16899
|
const result = runCommand(candidate, entry.versionArgs, timeoutMs);
|
|
16894
16900
|
if (result.error === "ENOENT") return void 0;
|
|
16895
16901
|
if (result.error && result.code === null && !result.stdout && !result.stderr) return void 0;
|
|
16902
|
+
if (isWindowsHarnessShim(candidate) && windowsCmdReportsMissing(result)) return void 0;
|
|
16896
16903
|
return {
|
|
16897
16904
|
command: candidate,
|
|
16898
16905
|
version: firstLine(result.stdout) ?? firstLine(result.stderr)
|
|
@@ -16891,10 +16891,17 @@ function resolveDispatchStatus(entry, detected, authenticated, issues) {
|
|
|
16891
16891
|
}
|
|
16892
16892
|
return { status: "yes", supported: true };
|
|
16893
16893
|
}
|
|
16894
|
+
function windowsCmdReportsMissing(result) {
|
|
16895
|
+
if (result.ok) return false;
|
|
16896
|
+
const text = `${result.stdout}
|
|
16897
|
+
${result.stderr}`;
|
|
16898
|
+
return /not recognized as an internal or external command/i.test(text) || /the system cannot find the (?:file|path) specified/i.test(text);
|
|
16899
|
+
}
|
|
16894
16900
|
function tryHarnessCommand(candidate, entry, runCommand, timeoutMs) {
|
|
16895
16901
|
const result = runCommand(candidate, entry.versionArgs, timeoutMs);
|
|
16896
16902
|
if (result.error === "ENOENT") return void 0;
|
|
16897
16903
|
if (result.error && result.code === null && !result.stdout && !result.stderr) return void 0;
|
|
16904
|
+
if (isWindowsHarnessShim(candidate) && windowsCmdReportsMissing(result)) return void 0;
|
|
16898
16905
|
return {
|
|
16899
16906
|
command: candidate,
|
|
16900
16907
|
version: firstLine(result.stdout) ?? firstLine(result.stderr)
|
package/plugins/kxm/package.json
CHANGED
|
@@ -941,6 +941,13 @@ export function resolveDispatchStatus(
|
|
|
941
941
|
return { status: "yes", supported: true };
|
|
942
942
|
}
|
|
943
943
|
|
|
944
|
+
function windowsCmdReportsMissing(result: HarnessCommandResult): boolean {
|
|
945
|
+
if (result.ok) return false;
|
|
946
|
+
const text = `${result.stdout}\n${result.stderr}`;
|
|
947
|
+
return /not recognized as an internal or external command/i.test(text)
|
|
948
|
+
|| /the system cannot find the (?:file|path) specified/i.test(text);
|
|
949
|
+
}
|
|
950
|
+
|
|
944
951
|
function tryHarnessCommand(
|
|
945
952
|
candidate: string,
|
|
946
953
|
entry: HarnessCatalogEntry,
|
|
@@ -950,6 +957,9 @@ function tryHarnessCommand(
|
|
|
950
957
|
const result = runCommand(candidate, entry.versionArgs, timeoutMs);
|
|
951
958
|
if (result.error === "ENOENT") return undefined;
|
|
952
959
|
if (result.error && result.code === null && !result.stdout && !result.stderr) return undefined;
|
|
960
|
+
// spawn with shell runs cmd.exe, which exists even when the shim does not.
|
|
961
|
+
// Its "not recognized" answer is a miss, not a detected harness.
|
|
962
|
+
if (isWindowsHarnessShim(candidate) && windowsCmdReportsMissing(result)) return undefined;
|
|
953
963
|
return {
|
|
954
964
|
command: candidate,
|
|
955
965
|
version: firstLine(result.stdout) ?? firstLine(result.stderr),
|
|
@@ -11,7 +11,7 @@ import { deliverInboxNotification } from "./inbox.ts";
|
|
|
11
11
|
import type { HubEvent, MessageRecord } from "./protocol.ts";
|
|
12
12
|
import { sessionTokenFixHint } from "./session-token-hint.ts";
|
|
13
13
|
|
|
14
|
-
const VERSION = "0.7.
|
|
14
|
+
const VERSION = "0.7.155";
|
|
15
15
|
const CONFIGURE_PLUGIN = "/plugin configure kxm@kxm";
|
|
16
16
|
const inbox = new Map<string, MessageRecord>();
|
|
17
17
|
const notifiedInbox = new Set<string>();
|