@kontextmind/kxm 0.7.122 → 0.7.124

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 (48) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.kxm/workflows/implement-only.yaml +20 -0
  3. package/.kxm/workflows/review-arch-only.yaml +20 -0
  4. package/.kxm/workflows/review-cli-only.yaml +20 -0
  5. package/CHANGELOG.md +31 -3
  6. package/docs/architecture/access-schema.yaml +60 -0
  7. package/docs/architecture/access.md +33 -0
  8. package/docs/architecture/agent-path.md +36 -0
  9. package/docs/architecture/authentication.md +29 -0
  10. package/docs/architecture/hosted-direction.md +59 -0
  11. package/docs/architecture/index.md +19 -0
  12. package/docs/architecture/inventory.md +38 -0
  13. package/docs/architecture/platform.md +48 -0
  14. package/docs/assets/logo.png +0 -0
  15. package/docs/contributing/assignment-runner.md +15 -4
  16. package/docs/index.md +56 -0
  17. package/docs/javascripts/mermaid-init.js +83 -0
  18. package/docs/javascripts/mermaid.min.js +4376 -0
  19. package/docs/reference/cli-reference.md +57 -4
  20. package/docs/reference/config-reference.md +2 -1
  21. package/docs/reference/workflow-catalog.md +10 -0
  22. package/docs/reference/workflow-definitions.md +1 -1
  23. package/docs/robots.txt +44 -0
  24. package/docs/stylesheets/extra.css +100 -0
  25. package/package.json +1 -1
  26. package/plugins/kxm/.claude-plugin/plugin.json +1 -1
  27. package/plugins/kxm/dist/cli.js +265 -165
  28. package/plugins/kxm/dist/mcp-server.js +1 -1
  29. package/plugins/kxm/dist/runtime-supervisor.js +209 -72
  30. package/plugins/kxm/dist/runtime.js +233 -94
  31. package/plugins/kxm/package.json +1 -1
  32. package/plugins/kxm/skills/kxm/SKILL.md +1 -2
  33. package/plugins/kxm/skills/kxm-runs/SKILL.md +7 -0
  34. package/plugins/kxm/src/cli/docs.ts +78 -0
  35. package/plugins/kxm/src/cli/project.ts +14 -2
  36. package/plugins/kxm/src/cli.ts +14 -0
  37. package/plugins/kxm/src/engine-fold.ts +15 -7
  38. package/plugins/kxm/src/engine-plan.ts +10 -1
  39. package/plugins/kxm/src/engine.ts +105 -2
  40. package/plugins/kxm/src/mcp-server.ts +1 -1
  41. package/plugins/kxm/src/oneshot-evidence.ts +44 -0
  42. package/plugins/kxm/src/oneshot-producer.ts +5 -5
  43. package/plugins/kxm/src/runtime-service.ts +10 -0
  44. package/plugins/kxm/src/runtime-store.ts +1 -0
  45. package/plugins/kxm/src/runtime-supervisor.ts +2 -0
  46. package/schemas/drive-receipt.schema.json +1 -0
  47. package/schemas/project.schema.json +2 -1
  48. package/schemas/roadmap-state.schema.json +147 -0
@@ -14,7 +14,7 @@ Output shown under examples was captured from a source checkout, inside a throwa
14
14
  - Setup: [`init`](#kxm-init), [`config`](#kxm-config), [`completion`](#kxm-completion), [`trust`](#kxm-trust)
15
15
  - Hub and sessions: [`hub`](#kxm-hub-view), [`session`](#kxm-session), [`dash`](#kxm-dash), [`studio`](#kxm-studio)
16
16
  - Harnesses, models, and roles: [`harness`](#kxm-harness), [`auth`](#kxm-auth), [`update`](#kxm-update), [`models`](#kxm-models), [`routes`](#kxm-routes), [`role`](#kxm-role)
17
- - Running work: [`lane`](#kxm-lane), [`assign`](#kxm-assign), [`run`](#kxm-run), [`runs`](#kxm-runs), [`runtime`](#kxm-runtime), [`agent`](#kxm-agent), [`workflow`](#kxm-workflow), [`gate`](#kxm-gate), [`peer`](#kxm-peer), [`task`](#kxm-task), [`goal`](#kxm-goal), [`suggest`](#kxm-suggest), [`explain`](#kxm-explain)
17
+ - Running work: [`lane`](#kxm-lane), [`land`](#kxm-land), [`assign`](#kxm-assign), [`run`](#kxm-run), [`runs`](#kxm-runs), [`docs`](#kxm-docs), [`runtime`](#kxm-runtime), [`agent`](#kxm-agent), [`workflow`](#kxm-workflow), [`gate`](#kxm-gate), [`peer`](#kxm-peer), [`task`](#kxm-task), [`goal`](#kxm-goal), [`suggest`](#kxm-suggest), [`explain`](#kxm-explain)
18
18
  - Context and learning: [`context`](#kxm-context), [`memory`](#kxm-memory), [`skills`](#kxm-skills), [`improve`](#kxm-improve), [`routing`](#kxm-routing), [`prices`](#kxm-prices)
19
19
  - Operations: [`backup`](#kxm-backup), [`restore`](#kxm-restore), [`tenant`](#kxm-tenant), [`ssh`](#kxm-ssh), [`help`](#kxm-help)
20
20
  - [Known behavior gaps](#known-behavior-gaps)
@@ -100,7 +100,7 @@ kxm -V
100
100
  `--dry-run` changes nothing: no file is written, deleted, or moved, no request that changes hub or Runtime state is sent, no process is started, and no remote command runs. A command that cannot say what it would do without doing some of it refuses the flag instead of acting.
101
101
 
102
102
  - Plan with `planned`: `backup`, `restore`, `config set`, `role add|remove|modify|set-host|resume`, `workflow add|remove|modify`, `goal create`, `task create|run|sync`, `memory note|sync`, `skills evaluate|promote|reject`, `context promote`, `context wiki-compile --out`, `auth token`, `session token`, `session brief`, and `ssh run|file|close`. Each prints its normal result plus `dryRun: true` and `planned`, a list of `{action, target}` entries whose `action` is `write`, `delete`, `move`, `request`, or `ssh`. Text mode prints `dry run: <summary>` and one indented `would <action> <target>` line per entry (`session brief` appends `dry run: would write <file>` lines to the brief instead).
103
- - Plan in their own shape (described in each section): `init`, `run`, `runs drive|cancel`, `runtime start|stop|sync-retry`, `hub start|stop|bind|unbind`, `session start|stop`, `agent worker`, `dash`, `studio serve`, `models inventory-refresh`, `routes admit|disable`, `update`, `completion install`, `workflow start|signal|export|checkpoint|record|wait`, every `peer` subcommand, `gate degrade|signal`, `skills create`, and `improve report`. `gate github watch --dry-run` still polls GitHub but does not post the signal.
103
+ - Plan in their own shape (described in each section): `init`, `run`, `runs drive|cancel`, `docs build|serve`, `runtime start|stop|sync-retry`, `hub start|stop|bind|unbind`, `session start|stop`, `agent worker`, `dash`, `studio serve`, `models inventory-refresh`, `routes admit|disable`, `update`, `completion install`, `workflow start|signal|export|checkpoint|record|wait`, every `peer` subcommand, `gate degrade|signal`, `skills create`, and `improve report`. `gate github watch --dry-run` still polls GitHub but does not post the signal.
104
104
  - Read-only commands run as usual, without leaving a trace: a local SQLite store is opened without creating `-wal` or `-shm` files, and `runs status|list|receipt` only attach to a running Runtime supervisor. With no supervisor running they exit 2 with `dry_run_unsupported` instead of starting one. `context wiki-compile --dry-run` still asks the hub to compile, which is a read.
105
105
  - Refused: `kxm models` (the interactive screen) and `kxm prices acknowledge` exit 2 with `dry_run_unsupported`. The CLI keeps one list of the commands that answer `--dry-run` and refuses every other command the same way before it runs, so a command added without dry-run support fails closed.
106
106
 
@@ -147,7 +147,7 @@ Exit 2 covers an unknown command or option, a missing argument or required optio
147
147
  | User config directory (`KXM_USER_CONFIG_DIR`, default `~/.config/kxm`) | `config.yaml` (user scope), `session.token`, global `roles/` and `workflows/`, `role-hosts.yaml`, `completions/` | `config --scope user`, `auth token`, `session brief\|token`, `role`/`workflow` with `--scope global`, `studio serve`, `completion install` |
148
148
  | User state root (`KXM_STATE_HOME`; macOS `~/Library/Application Support/KXM`; Linux `$XDG_STATE_HOME/kxm` or `~/.local/state/kxm`; Windows `%LOCALAPPDATA%\KXM`) | `hub-env.json` (persisted hub credentials), `hub-binding.json`, `runtime/` (Runtime supervisor registry and per-project run stores), `update.yaml`, repository bindings | `hub start\|bind\|unbind`, every hub client, `run`, `runs`, `runtime`, `tenant status`, `update`, `init --repository`, and (read-only, the project's run store) `improve` and `routing report` |
149
149
 
150
- `init`, `trust`, `run`, `runs`, `runtime sync-retry`, `tenant status`, and `studio layout` find the project root by walking up from the current directory. `improve` and `routing report` use the current directory's Git root when it holds `.kxm/project.yaml`, to find the project's Runtime run store (and, for `improve`, its configuration and default candidate directory). `config`, `role`, `workflow definitions|add|remove|modify`, `goal`, `task`, `memory`, `skills`, `backup`, `restore`, `studio serve`, and `ssh` (socket directory) use `.kxm` in the current directory. Run those from the project root.
150
+ `init`, `trust`, `run`, `runs`, `docs build`, `docs serve`, `runtime sync-retry`, `tenant status`, and `studio layout` find the project root by walking up from the current directory. `improve` and `routing report` use the current directory's Git root when it holds `.kxm/project.yaml`, to find the project's Runtime run store (and, for `improve`, its configuration and default candidate directory). `config`, `role`, `workflow definitions|add|remove|modify`, `goal`, `task`, `memory`, `skills`, `backup`, `restore`, `studio serve`, and `ssh` (socket directory) use `.kxm` in the current directory. Run those from the project root.
151
151
 
152
152
  ## Task to command
153
153
 
@@ -1431,7 +1431,7 @@ Refusals (exit 1): `lane_missing`, `lane_dirty`, `lane_run_open`, `lane_git_fail
1431
1431
 
1432
1432
  Creates the lane when the record is absent (same rules as `create`), refuses `lane_run_open` when the last run is not settled, then runs the same path as `kxm run --lane <unit> --brief <file>` and `kxm runs drive <runId> --lane <unit>`. `--wait` and `--timeout-ms` are passed through. The run id is stored on the record. Prints the run envelope and the drive result. That open-run check may start the Runtime supervisor; `--dry-run` only attaches to a supervisor that is already running. `kxm lane status` never starts the supervisor.
1433
1433
 
1434
- `--brief` is required. `--workflow` defaults to the lane project's `defaultWorkflow`. `--base` applies only when the lane is created. A live writer step through this verb is subject to the Runtime's one-shot process timeout, which is 120 seconds until `limits.agentStepTimeoutMs` lands, so long implementation briefs should use `just impl-bg` until then (see section 4 of `plans/plan-lane-cli.md`).
1434
+ `--brief` is required. `--workflow` defaults to the lane project's `defaultWorkflow`. `--base` applies only when the lane is created. A live agent step uses the step `timeoutMs` when it is set, otherwise the project `limits.agentStepTimeoutMs` (default 3,600,000). This repository's `implement-only`, `review-arch-only`, and `review-cli-only` workflows are the lane forms of the retired transport recipes.
1435
1435
 
1436
1436
  Refusals (exit 1): `brief_unreadable`, `lane_unit_invalid`, `lane_exists`, `lane_base_unresolved`, `lane_run_open`, `lane_git_failed`, `lane_not_project`, `lanes_unreadable`.
1437
1437
 
@@ -1562,6 +1562,59 @@ Prints the task's attempts, rework, and spend. The runner keeps provider-reporte
1562
1562
  |---|---|---|
1563
1563
  | `--task-dir` | `<path>` | Absolute path to the task directory |
1564
1564
 
1565
+ ## `kxm docs`
1566
+
1567
+ Build and serve the tailnet docs site from this checkout. Both subcommands need a KXM project: the Git root that contains `.kxm/project.yaml`. They run from that root. No hub and no Runtime supervisor.
1568
+
1569
+ ```text
1570
+ kxm docs build
1571
+ kxm docs serve [--port <port>]
1572
+ ```
1573
+
1574
+ ```bash
1575
+ kxm docs build --dry-run
1576
+ kxm docs serve --dry-run --port 8765
1577
+ ```
1578
+
1579
+ ### `kxm docs build`
1580
+
1581
+ Runs `node plans/kxm-roadmap/update-dashboard.mjs` and returns that process's exit code. The generator refreshes the roadmap pages and the MkDocs inputs from `plans/kxm-roadmap/state.json`. `kxm docs build` validates the state file and refuses on schema failure.
1582
+
1583
+ The build needs either `mkdocs` on `PATH` or `uv`. The command that works on this machine is `uv tool run --from mkdocs-material mkdocs build`. `uv tool install mkdocs-material` does not, because the package exposes no executable. When neither executable exists, the generator refuses with that same pair of options.
1584
+
1585
+ - No command-specific options.
1586
+ - Honors `--dry-run`: prints `node plans/kxm-roadmap/update-dashboard.mjs` and does not start the process. JSON key: `detail` (that command line), plus `dryRun: true`.
1587
+ - Errors (exit 1): `project_required`, `docs_generator_missing` when `plans/kxm-roadmap/update-dashboard.mjs` is absent.
1588
+
1589
+ ### `kxm docs serve`
1590
+
1591
+ Runs `python3 ops/docs-site/serve.py` with output streamed to the terminal, and returns that process's exit code. `--port` is appended as `--port <port>` when it is set. The server binds a tailnet address. With `--port`, it binds only that port and exits if the port is taken. Without `--port`, it tries 80 and then 8765 through 8780. See `ops/docs-site/serve.py`.
1592
+
1593
+ | Option | Argument | Default | Description |
1594
+ |---|---|---|---|
1595
+ | `--port` | `<port>` | the server's own port list | Port passed through to `serve.py` |
1596
+
1597
+ - Honors `--dry-run`: prints `python3 ops/docs-site/serve.py` (and `--port <port>` when given) and does not start the process. JSON key: `detail`.
1598
+ - Errors (exit 1): `project_required`, `docs_server_missing` when `ops/docs-site/serve.py` is absent.
1599
+
1600
+ ```bash
1601
+ kxm docs build --dry-run --json
1602
+ ```
1603
+
1604
+ ```text
1605
+ {"schema":"kxm.cli-result.v1","ok":true,"command":"docs build","dryRun":true,"detail":"node plans/kxm-roadmap/update-dashboard.mjs"}
1606
+ ```
1607
+
1608
+ ```bash
1609
+ kxm docs serve --dry-run --json
1610
+ ```
1611
+
1612
+ ```text
1613
+ {"schema":"kxm.cli-result.v1","ok":true,"command":"docs serve","dryRun":true,"detail":"python3 ops/docs-site/serve.py"}
1614
+ ```
1615
+
1616
+ A live `kxm docs serve` runs until the server exits. Not run for this page.
1617
+
1565
1618
  ## `kxm run`
1566
1619
 
1567
1620
  ```text
@@ -165,6 +165,7 @@ makes a directory a KXM project. Parser: `loadKxmProject` in
165
165
  | `limits.maxConcurrentRuns` | Integer, 1 to 128 | Optional, `1` | Runtime admission. A changed bound is refused (`scheduler_policy_conflict`) while admitted or queued runs still use the previous one. |
166
166
  | `limits.maxRunDurationMs` | Integer, 0 to 31,536,000,000 | Optional | Runtime. Combined with the workflow's own value; the smaller one wins. |
167
167
  | `limits.maxAgentTimeMs` | Integer, 0 to 31,536,000,000 | Optional | Runtime refuses to drive any run while it is set (`limit_unsupported`); leave it out |
168
+ | `limits.agentStepTimeoutMs` | Integer, 60,000 to 31,536,000,000 | Optional, 3,600,000 | Wall clock for one live agent or moa step when the step omits `timeoutMs`. The supervisor passes it to the one-shot producer. A step `timeoutMs` narrower than this wins; a wider step value is refused (`step_unsupported`, field `timeoutMs`) |
168
169
 
169
170
  The Runtime binds one project `id` to one control root per state root, so a
170
171
  second checkout with the same ID is refused with `project_home_conflict`.
@@ -555,7 +556,7 @@ Duration budgets use the wall clock. `maxRunDurationMs` counts from the time the
555
556
  | `signal` | Identifier | Required for `wait` | Compiled and diffed; the Runtime does not match signals to wait steps yet |
556
557
  | `model` | Model selector | Optional | Intersected with each allowed agent's own model ceiling; an empty intersection is `model_selector_incompatible`. Live route resolution ignores it. The Runtime refuses it on gate steps. |
557
558
  | `maxAttempts` | Integer, 1 to 20 | Optional, `1` | Entering the step again after this many attempts fails the run (`budget_step_attempts`) |
558
- | `timeoutMs` | Integer, 0 to 31,536,000,000 | Optional | Not `0`. Gate steps: refused for `artifacts-exist` gates or below the gate's `timeoutMs`. Other kinds: unused; the producer times out at 120 s |
559
+ | `timeoutMs` | Integer, 0 to 31,536,000,000 | Optional | Not `0`. Gate steps: refused for `artifacts-exist` gates or below the gate's `timeoutMs`. Agent and moa steps: the one-shot spawn uses this value when it is at most `limits.agentStepTimeoutMs`; a wider value is refused (`step_unsupported`, field `timeoutMs`). When the step omits it, the project limit applies (default 3,600,000). The process default of 120 seconds is only the last resort when neither is set |
559
560
  | `repositories` | Map of repository ID to `none`, `read`, or `write` | Optional | IDs must be declared (`repository_unknown`); may not exceed the agent's ceiling (`repository_scope_expansion`) |
560
561
  | `tools` | `{preset, allow, deny}` | Optional | Must keep the agent's preset and denials and allow only tools the agent allows (`tool_scope_expansion`). The Runtime refuses steps that declare `tools`. |
561
562
  | `secrets` | `[{ref, as, required}]` | Optional | Only refs the agent grants (`secret_scope_expansion`). The Runtime refuses steps that declare `secrets`. |
@@ -1090,6 +1090,16 @@ This cross-reference points each software and security workflow at the KXM pages
1090
1090
 
1091
1091
  `kxm run land --dry-run --json` may be refused by live prerequisites until gate-only workflows are supported. The command `kxm land` runs the same stages without a run receipt.
1092
1092
 
1093
+ ## Repository developer workflows
1094
+
1095
+ These three files live in this repository's `.kxm/workflows`. `kxm init` does not write them.
1096
+
1097
+ | Workflow | Replaces |
1098
+ |---|---|
1099
+ | `implement-only` | `just impl`. The recipe is retired once this lands. |
1100
+ | `review-arch-only` | `just review-arch`. The recipe is retired once this lands. |
1101
+ | `review-cli-only` | `just review-cli`. The recipe is retired once this lands. |
1102
+
1093
1103
  ## Related
1094
1104
 
1095
1105
  - [Workflow definitions](workflow-definitions.md): write a webhook or Runtime workflow for these stages
@@ -271,7 +271,7 @@ A Runtime workflow is a YAML file whose name is its ID. The [configuration file
271
271
  | Transitions | `on` is required on every step. `$terminal` needs `terminalStatus` (`completed`, `failed` or `cancelled`). Each back-edge needs its own `maxTransitions`, plus `limits.maxTransitions` | [Transitions and outcomes](config-reference.md#transitions-and-outcomes) |
272
272
  | Gate outcome keys | An `expect: pass` gate produces `passed` or `implementation-failure`; an `expect: fail` gate produces `passed` or `repro-missing`. Declare both produced outcomes | [Transitions and outcomes](config-reference.md#transitions-and-outcomes) |
273
273
  | `gate_outcome_impossible` | Refused at load when a gate step declares an outcome it never produces, such as `failed`, and omits one it produces. `gate_outcome_renamed` catches underscore spellings | [Transitions and outcomes](config-reference.md#transitions-and-outcomes) |
274
- | Agent steps | The model returns a JSON `outcome` from the step's declared keys; anything else becomes `failed`, so declare `failed` | [Transitions and outcomes](config-reference.md#transitions-and-outcomes) |
274
+ | Agent steps | The model returns a JSON `outcome` from the step's declared keys; anything else becomes `failed`, so declare `failed`. `timeoutMs` bounds the one-shot spawn for `agent` and `moa` steps, and must not be wider than the project `limits.agentStepTimeoutMs` | [Step fields](config-reference.md#step-fields) |
275
275
  | Not executed yet | Some valid fields make the Runtime hand the run off (`step_unsupported`, `gate_unsupported`, `limit_unsupported`) instead of executing | [Steps the Runtime does not execute yet](config-reference.md#steps-the-runtime-does-not-execute-yet) |
276
276
 
277
277
  `kxm workflow add bug-fix --template implement-and-verify` writes a valid starting file; `dual-critic-review` and `spec-and-plan` are also available. IDs are flat filename-derived slugs, not catalog paths such as `software-engineering/bug-fix`. Installation validates YAML/schema/transitions before writing, including under `--dry-run`. `kxm run <workflow>` creates a run and reports live prerequisites and separate `runs drive/status/receipt` commands. Current live one-shot profiles are read-only, so a writer template can validate but cannot execute live; `task run` refuses incompatible work before creating a run or changing the task. Simulation remains explicitly available and is not proof of implementation. See [`kxm run`](cli-reference.md#kxm-run) and [`kxm runs`](cli-reference.md#kxm-runs).
@@ -0,0 +1,44 @@
1
+ User-agent: *
2
+ Disallow: /
3
+
4
+ User-agent: GPTBot
5
+ Disallow: /
6
+
7
+ User-agent: ChatGPT-User
8
+ Disallow: /
9
+
10
+ User-agent: Google-Extended
11
+ Disallow: /
12
+
13
+ User-agent: Googlebot
14
+ Disallow: /
15
+
16
+ User-agent: Bingbot
17
+ Disallow: /
18
+
19
+ User-agent: ClaudeBot
20
+ Disallow: /
21
+
22
+ User-agent: anthropic-ai
23
+ Disallow: /
24
+
25
+ User-agent: CCBot
26
+ Disallow: /
27
+
28
+ User-agent: Bytespider
29
+ Disallow: /
30
+
31
+ User-agent: Amazonbot
32
+ Disallow: /
33
+
34
+ User-agent: PerplexityBot
35
+ Disallow: /
36
+
37
+ User-agent: Applebot-Extended
38
+ Disallow: /
39
+
40
+ User-agent: meta-externalagent
41
+ Disallow: /
42
+
43
+ User-agent: cohere-ai
44
+ Disallow: /
@@ -0,0 +1,100 @@
1
+ [data-md-color-scheme="slate"] {
2
+ --md-primary-fg-color: #3068da;
3
+ --md-primary-fg-color--light: color-mix(in srgb, #3068da 65%, #f2eee7);
4
+ --md-primary-fg-color--dark: color-mix(in srgb, #3068da 70%, #0e0d0b);
5
+ --md-primary-bg-color: #f2eee7;
6
+ --md-primary-bg-color--light: color-mix(in srgb, #f2eee7 70%, transparent);
7
+ --md-accent-fg-color: #3068da;
8
+ --md-accent-fg-color--transparent: color-mix(in srgb, #3068da 12%, transparent);
9
+ --md-accent-bg-color: #0e0d0b;
10
+ --md-accent-bg-color--light: color-mix(in srgb, #0e0d0b 70%, transparent);
11
+ --md-default-bg-color: #0e0d0b;
12
+ --md-default-fg-color: #f2eee7;
13
+ --md-default-fg-color--light: color-mix(in srgb, #f2eee7 62%, #0e0d0b);
14
+ --md-default-fg-color--lighter: color-mix(in srgb, #f2eee7 40%, #0e0d0b);
15
+ --md-default-fg-color--lightest: color-mix(in srgb, #f2eee7 14%, #0e0d0b);
16
+ --md-code-bg-color: color-mix(in srgb, #f2eee7 8%, #0e0d0b);
17
+ --md-code-fg-color: #f2eee7;
18
+ --md-footer-bg-color: #0e0d0b;
19
+ --md-footer-fg-color: #f2eee7;
20
+ --md-footer-fg-color--light: color-mix(in srgb, #f2eee7 62%, #0e0d0b);
21
+ --md-typeset-a-color: #3068da;
22
+ --md-mermaid-edge-color: #3068da;
23
+ --md-mermaid-node-bg-color: color-mix(in srgb, #3068da 12%, #0e0d0b);
24
+ --md-mermaid-node-fg-color: #3068da;
25
+ --md-mermaid-label-bg-color: #0e0d0b;
26
+ --md-mermaid-label-fg-color: #f2eee7;
27
+ --md-mermaid-sequence-actor-border-color: #3068da;
28
+ --md-mermaid-sequence-message-line-color: #3068da;
29
+ --md-mermaid-sequence-number-bg-color: #3068da;
30
+ }
31
+
32
+ .md-header,
33
+ .md-tabs {
34
+ background-color: #0e0d0b;
35
+ color: #f2eee7;
36
+ }
37
+
38
+ .md-header__button.md-logo {
39
+ display: inline-block;
40
+ }
41
+
42
+ .md-header__button.md-logo img {
43
+ height: 1.6rem;
44
+ width: auto;
45
+ }
46
+
47
+ .md-typeset .grid.cards > ul > li,
48
+ .md-typeset .admonition,
49
+ .md-typeset details {
50
+ background-color: color-mix(in srgb, #f2eee7 8%, #0e0d0b);
51
+ border-color: color-mix(in srgb, #f2eee7 16%, #0e0d0b);
52
+ }
53
+
54
+ .md-typeset .kxm-diagram {
55
+ position: relative;
56
+ background: color-mix(in srgb, #f2eee7 8%, #0e0d0b);
57
+ border: 1px solid color-mix(in srgb, #f2eee7 16%, #0e0d0b);
58
+ border-radius: 8px;
59
+ padding: 1rem;
60
+ }
61
+
62
+ .md-typeset .mermaid svg {
63
+ max-width: 100%;
64
+ height: auto;
65
+ }
66
+
67
+ .md-typeset .kxm-fs {
68
+ position: absolute;
69
+ top: 0.5rem;
70
+ right: 0.5rem;
71
+ z-index: 2;
72
+ background: #0e0d0b;
73
+ color: #3068da;
74
+ border: 1px solid #3068da;
75
+ border-radius: 4px;
76
+ padding: 0.25rem 0.6rem;
77
+ cursor: pointer;
78
+ }
79
+
80
+ .md-typeset .kxm-diagram:fullscreen,
81
+ .md-typeset .kxm-diagram.kxm-fs-open,
82
+ .md-typeset .mermaid:fullscreen,
83
+ .md-typeset .mermaid.kxm-fs-open {
84
+ background: #0e0d0b;
85
+ width: 100vw;
86
+ height: 100vh;
87
+ margin: 0;
88
+ box-sizing: border-box;
89
+ overflow: auto;
90
+ }
91
+
92
+ .md-typeset .kxm-diagram:fullscreen svg,
93
+ .md-typeset .kxm-diagram.kxm-fs-open svg,
94
+ .md-typeset .mermaid:fullscreen svg,
95
+ .md-typeset .mermaid.kxm-fs-open svg {
96
+ width: 100%;
97
+ height: 100%;
98
+ max-width: 100vw;
99
+ max-height: 100vh;
100
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kontextmind/kxm",
3
- "version": "0.7.122",
3
+ "version": "0.7.124",
4
4
  "description": "KXM local-first multi-agent orchestration and operator dashboard",
5
5
  "type": "module",
6
6
  "author": "KontextMind",
@@ -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.122",
5
+ "version": "0.7.124",
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",