@shield-agent/kya 0.1.42 → 0.2.0

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 (47) hide show
  1. package/.mcp.json +1 -1
  2. package/README.md +13 -7
  3. package/amp/settings.example.json +1 -1
  4. package/claude/claude_desktop_config.example.json +1 -1
  5. package/cline/cline_mcp_settings.example.json +1 -1
  6. package/copilot/mcp-config.example.json +1 -1
  7. package/dist/commands/connect.d.ts +22 -1
  8. package/dist/commands/connect.d.ts.map +1 -1
  9. package/dist/commands/connect.js +209 -34
  10. package/dist/commands/connect.js.map +1 -1
  11. package/dist/commands/serve-mcp.d.ts.map +1 -1
  12. package/dist/commands/serve-mcp.js +12 -0
  13. package/dist/commands/serve-mcp.js.map +1 -1
  14. package/dist/commands/start.d.ts +9 -0
  15. package/dist/commands/start.d.ts.map +1 -1
  16. package/dist/commands/start.js +91 -60
  17. package/dist/commands/start.js.map +1 -1
  18. package/dist/mcp/http.d.ts +3 -0
  19. package/dist/mcp/http.d.ts.map +1 -1
  20. package/dist/mcp/http.js +2 -0
  21. package/dist/mcp/http.js.map +1 -1
  22. package/dist/mcp/protocol.d.ts +9 -0
  23. package/dist/mcp/protocol.d.ts.map +1 -1
  24. package/dist/mcp/protocol.js +74 -2
  25. package/dist/mcp/protocol.js.map +1 -1
  26. package/dist/mcp/stdio.d.ts +3 -0
  27. package/dist/mcp/stdio.d.ts.map +1 -1
  28. package/dist/mcp/stdio.js +2 -0
  29. package/dist/mcp/stdio.js.map +1 -1
  30. package/dist/receipt/enrich.d.ts.map +1 -1
  31. package/dist/receipt/enrich.js +10 -6
  32. package/dist/receipt/enrich.js.map +1 -1
  33. package/droid/README.md +1 -1
  34. package/droid/mcp.example.json +1 -1
  35. package/gemini/settings.example.json +1 -1
  36. package/grok/README.md +1 -1
  37. package/kilo/kilo.example.json +1 -1
  38. package/kimi/mcp.example.json +1 -1
  39. package/kiro/mcp.example.json +1 -1
  40. package/manifest.json +1 -1
  41. package/mastracode/mcp.example.json +1 -1
  42. package/mcp.json +1 -1
  43. package/openai/codex.config.example.toml +1 -1
  44. package/opencode/opencode.example.json +1 -1
  45. package/package.json +1 -1
  46. package/qwen/settings.example.json +1 -1
  47. package/server.json +2 -2
package/.mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "shield-kya": {
4
4
  "command": "npx",
5
- "args": ["--no-install", "@shield-agent/kya@0.1.42", "serve-mcp", "--stdio"],
5
+ "args": ["--no-install", "@shield-agent/kya@0.2.0", "serve-mcp", "--stdio"],
6
6
  "env": {
7
7
  "KYA_BASE_URL": "https://shield-agent.com",
8
8
  "KYA_API_KEY": "${KYA_API_KEY}",
package/README.md CHANGED
@@ -43,7 +43,7 @@ npm i -g @shield-agent/kya@latest && kya start
43
43
 
44
44
  Run it in your project directory. (From a clone of this repo, `./scripts/install-local.sh` replaces the npm install.)
45
45
 
46
- That **inits** `.kya/`, **wires** local MCP (`.mcp.json`, `mcp.json`, `.cursor/mcp.json` → `kya serve-mcp --stdio`), and **opens** the live activity report. The report runs in the background — you get your terminal back; `kya stop` stops it, `kya receipt --open` reopens it. Cursor, Kiro, Qwen, Amp, Droid, Cline, and Grok pick the server up live with no restart (Kimi: just a new session); Claude Code, Codex, OpenCode, Gemini, Copilot CLI, and Kilo CLI load it on next launch — `claude --resume` keeps your conversation.
46
+ That **inits** `.kya/`, **wires** local MCP (`.mcp.json`, `mcp.json`, `.cursor/mcp.json` → `kya serve-mcp --stdio`), also **wires user-level configs for every installed host it detects** (`~/.claude.json`, `~/.kimi-code/`, `~/.grok/`, `~/.cursor/`, …), and **opens** the live activity report. The report runs in the background — you get your terminal back; `kya stop` stops it, `kya receipt --open` reopens it. Cursor, Kiro, Qwen, Amp, Droid, Cline, and Grok pick the server up live with no restart (Kimi: just a new session); Claude Code, Codex, OpenCode, Gemini, Copilot CLI, and Kilo CLI load it on next launch — `claude --resume` keeps your conversation.
47
47
 
48
48
  ![KYA activity receipt — agent tool trail with Allow / Deny / Hold](https://raw.githubusercontent.com/The-Pixel-Boys/shield-kya/main/assets/activity-receipt.png)
49
49
 
@@ -58,9 +58,11 @@ kya start --force # rewrite MCP blocks
58
58
 
59
59
  ## One command per host
60
60
 
61
- `kya start` covers Claude Code, Cursor, and any host that reads `.mcp.json`. For the rest, `kya connect` writes the host's own config dialect directly:
61
+ `kya start` covers Claude Code, Cursor, and any host that reads `.mcp.json` — and auto-wires the user-level config of every installed host it detects. For the rest, `kya connect` writes the host's own config dialect directly:
62
62
 
63
63
  ```bash
64
+ kya connect claude # ~/.claude.json (merges mcpServers only)
65
+ kya connect grok # ~/.grok/config.toml (appends [mcp_servers.shield-kya])
64
66
  kya connect opencode # ~/.config/opencode/opencode.json
65
67
  kya connect qwen # ~/.qwen/settings.json
66
68
  kya connect amp # ~/.config/amp/settings.json
@@ -68,7 +70,7 @@ kya connect qwen --project # project scope instead of global
68
70
  kya connect kiro --force # overwrite an existing shield-kya entry
69
71
  ```
70
72
 
71
- Connect merges — it never rewrites a host config it can't parse, and it keeps your other servers and keys. Supported hosts: `opencode`, `kilo`, `kiro`, `qwen`, `kimi`, `mastracode`, `amp`, `copilot`, `cursor`. Each wires `serve-mcp --stdio` with `KYA_OFFLINE=1` so the gate starts keyless; set `KYA_API_KEY` in the host env when you point at an authenticated plane.
73
+ Connect merges — it never rewrites a host config it can't parse, and it keeps your other servers and keys. Supported hosts: `claude`, `grok`, `opencode`, `kilo`, `kiro`, `qwen`, `kimi`, `mastracode`, `amp`, `copilot`, `cursor`. Each wires `serve-mcp --stdio` with `KYA_OFFLINE=1` so the gate starts keyless; set `KYA_API_KEY` in the host env when you point at an authenticated plane.
72
74
 
73
75
  Hosts without a `connect` target still work: `kya wrap --offline -- <agent command>` puts the same evaluate gate in front of any CLI. Per-host recipes with verify steps and troubleshooting live in [docs/hosts/](docs/hosts/).
74
76
 
@@ -129,7 +131,7 @@ MCP Registry entry: `server.json` plus package `mcpName` `io.github.The-Pixel-Bo
129
131
  "mcpServers": {
130
132
  "shield-kya": {
131
133
  "command": "npx",
132
- "args": ["--no-install", "@shield-agent/kya@0.1.42", "serve-mcp", "--stdio"],
134
+ "args": ["--no-install", "@shield-agent/kya@0.2.0", "serve-mcp", "--stdio"],
133
135
  "env": {
134
136
  "KYA_BASE_URL": "http://127.0.0.1:8090",
135
137
  "KYA_API_KEY": "${KYA_API_KEY}",
@@ -156,7 +158,7 @@ npx @shield-agent/kya reject --id <approval-id>
156
158
 
157
159
  ```bash
158
160
  # Prefer a preinstalled package (no registry auto-install):
159
- npx --no-install @shield-agent/kya@0.1.42 serve-mcp --stdio
161
+ npx --no-install @shield-agent/kya@0.2.0 serve-mcp --stdio
160
162
  # Or after npm i -g / local install:
161
163
  kya serve-mcp --stdio
162
164
  ```
@@ -167,7 +169,7 @@ Copy `claude/claude_desktop_config.example.json` into Claude Desktop MCP setting
167
169
 
168
170
  ## OpenAI (Codex / Responses)
169
171
 
170
- **Codex CLI / IDE:** copy `openai/codex.config.example.toml` into `~/.codex/config.toml`. Local stdio uses `npx --no-install @shield-agent/kya@0.1.42 serve-mcp --stdio`. Hosted Codex uses `url = "https://shield-agent.com/mcp"` with `bearer_token_env_var = "KYA_API_KEY"`.
172
+ **Codex CLI / IDE:** copy `openai/codex.config.example.toml` into `~/.codex/config.toml`. Local stdio uses `npx --no-install @shield-agent/kya@0.2.0 serve-mcp --stdio`. Hosted Codex uses `url = "https://shield-agent.com/mcp"` with `bearer_token_env_var = "KYA_API_KEY"`.
171
173
 
172
174
  **Responses API:** see `openai/responses-mcp.example.json` (`server_url` + `Authorization: Bearer <KYA_API_KEY>`).
173
175
 
@@ -179,7 +181,9 @@ Merge `gemini/settings.example.json` (stdio) or `gemini/settings.hosted.example.
179
181
 
180
182
  ## Grok
181
183
 
182
- Hosted custom connector: `https://shield-agent.com/mcp` (see `grok/README.md`). Grok rejects localhost. Prefer a Bearer machine key when the UI offers a request header. For a local agent host, use the same stdio launch as Claude/Codex/Gemini.
184
+ **Grok CLI (local):** `kya connect grok` appends a `[mcp_servers.shield-kya]` table to `~/.grok/config.toml` (`serve-mcp --stdio`, keyless offline sample evaluate). In a running session, press `r` in `/mcps` to refresh.
185
+
186
+ **grok.com (hosted):** custom connector at `https://shield-agent.com/mcp` (see `grok/README.md`). Grok rejects localhost. Prefer a Bearer machine key when the UI offers a request header.
183
187
 
184
188
  ## More hosts
185
189
 
@@ -187,6 +191,8 @@ Each ships a copy-paste example in its own directory; `kya connect <host>` write
187
191
 
188
192
  | Host | Setup | Example |
189
193
  |------|-------|---------|
194
+ | Claude Code | `kya connect claude` (or `kya start`) | — (merges `~/.claude.json` / `.mcp.json`) |
195
+ | Grok CLI | `kya connect grok` | — (appends `[mcp_servers.shield-kya]` to `~/.grok/config.toml`) |
190
196
  | OpenCode | `kya connect opencode` | `opencode/opencode.example.json` |
191
197
  | Kilo Code | `kya connect kilo` | `kilo/kilo.example.json` |
192
198
  | Kiro | `kya connect kiro` | `kiro/mcp.example.json` |
@@ -2,7 +2,7 @@
2
2
  "amp.mcpServers": {
3
3
  "shield-kya": {
4
4
  "command": "npx",
5
- "args": ["--no-install", "@shield-agent/kya@0.1.42", "serve-mcp", "--stdio"],
5
+ "args": ["--no-install", "@shield-agent/kya@0.2.0", "serve-mcp", "--stdio"],
6
6
  "env": {
7
7
  "KYA_BASE_URL": "https://shield-agent.com",
8
8
  "KYA_API_KEY": "${KYA_API_KEY}",
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "shield-kya": {
4
4
  "command": "npx",
5
- "args": ["--no-install", "@shield-agent/kya@0.1.42", "serve-mcp", "--stdio"],
5
+ "args": ["--no-install", "@shield-agent/kya@0.2.0", "serve-mcp", "--stdio"],
6
6
  "env": {
7
7
  "KYA_BASE_URL": "https://shield-agent.com",
8
8
  "KYA_API_KEY": "${KYA_API_KEY}",
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "shield-kya": {
4
4
  "command": "npx",
5
- "args": ["--no-install", "@shield-agent/kya@0.1.42", "serve-mcp", "--stdio"],
5
+ "args": ["--no-install", "@shield-agent/kya@0.2.0", "serve-mcp", "--stdio"],
6
6
  "env": {
7
7
  "KYA_BASE_URL": "https://shield-agent.com",
8
8
  "KYA_API_KEY": "${KYA_API_KEY}",
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "shield-kya": {
4
4
  "command": "npx",
5
- "args": ["--no-install", "@shield-agent/kya@0.1.42", "serve-mcp", "--stdio"],
5
+ "args": ["--no-install", "@shield-agent/kya@0.2.0", "serve-mcp", "--stdio"],
6
6
  "env": {
7
7
  "KYA_BASE_URL": "https://shield-agent.com",
8
8
  "KYA_API_KEY": "${KYA_API_KEY}",
@@ -11,10 +11,11 @@ export interface HostSpec {
11
11
  /** Root key holding the server map ("mcpServers" | "mcp" | "amp.mcpServers"). */
12
12
  readonly rootKey: string;
13
13
  /** Server entry dialect. */
14
- readonly shape: "standard" | "opencode-local";
14
+ readonly shape: "standard" | "opencode-local" | "grok-toml";
15
15
  /** Set when the host has no verified auto-wire: docs/hosts page to follow. */
16
16
  readonly recipeOnly?: string;
17
17
  }
18
+ export declare function standardServerBlock(hostId: string): Record<string, unknown>;
18
19
  export declare const CONNECT_REGISTRY: Readonly<Record<string, HostSpec>>;
19
20
  export declare function connectableHosts(): readonly string[];
20
21
  export declare function knownHosts(): readonly string[];
@@ -33,6 +34,26 @@ export interface ConnectInput {
33
34
  /** Test hook: running process basenames instead of a live ps scan. */
34
35
  readonly procs?: ReadonlySet<string>;
35
36
  }
37
+ /** Merge "shield-kya" into a JSON host config under rootKey. Never clobbers. */
38
+ export declare function mergeJsonHostConfig(path: string, rootKey: string, block: Record<string, unknown>, force: boolean): ConnectStatus;
39
+ export interface WireHostInput {
40
+ readonly host: string;
41
+ readonly scope?: ConnectScope;
42
+ readonly force?: boolean;
43
+ readonly home: string;
44
+ readonly cwd: string;
45
+ }
46
+ export interface WireHostResult {
47
+ readonly host: string;
48
+ readonly label: string;
49
+ readonly path: string;
50
+ readonly status: ConnectStatus;
51
+ readonly scope: ConnectScope;
52
+ }
53
+ /** Shared wiring used by `kya connect` and `kya start`. */
54
+ export declare function wireHost(input: WireHostInput): WireHostResult;
55
+ /** Per-host next-step line after wiring (accurate about restarts). */
56
+ export declare function wireNextMessage(hostId: string, label: string, procs: ReadonlySet<string>): string;
36
57
  export declare function runConnect(config: ResolvedConfig, input: ConnectInput, env?: NodeJS.ProcessEnv): Promise<ConnectResult>;
37
58
  export declare function formatConnectHuman(r: ConnectResult): string;
38
59
  //# sourceMappingURL=connect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAAC;IAC9C,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AA8BD,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CA2E/D,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAEpD;AAED,wBAAgB,UAAU,IAAI,SAAS,MAAM,EAAE,CAE9C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACtC;AA2CD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,YAAY,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,aAAa,CAAC,CAuCxB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAY3D"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * kya connect <host> — wire Shield KYA MCP into a coding host's config file.
3
- * Idempotent create/merge/skip, modeled on start.ts mergeMcpJson.
4
- * Global (home) scope by default; --project for hosts with project-level config.
5
- * Hosts without a verified MCP config stay copy-paste recipes (recipeOnly).
3
+ * Idempotent create/merge/skip. Global (home) scope by default; --project for
4
+ * hosts with project-level config. Hosts without a verified MCP config stay
5
+ * copy-paste recipes (recipeOnly).
6
+ *
7
+ * Home-config writes are merge-only and symlink-safe: an existing target is
8
+ * resolved with realpath and must be a regular file (dotfile setups symlink
9
+ * ~/.claude.json & co. — writing the resolved regular file is supported).
6
10
  */
7
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
11
+ import { chmodSync, existsSync, lstatSync, mkdirSync, readFileSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
8
12
  import { homedir } from "node:os";
9
- import { dirname, join } from "node:path";
13
+ import { dirname, join, resolve } from "node:path";
10
14
  import { fileURLToPath } from "node:url";
11
15
  import { UsageError } from "../errors.js";
12
16
  import { hostReload, hostRunning, listProcessNames, reloadMessage } from "../host-reload.js";
@@ -14,17 +18,19 @@ function cliJsPath() {
14
18
  // connect.ts → ../cli.js in dist; when running from dist/commands/connect.js
15
19
  return fileURLToPath(new URL("../cli.js", import.meta.url));
16
20
  }
17
- function standardBlock() {
21
+ export function standardServerBlock(hostId) {
18
22
  return {
19
23
  command: process.execPath,
20
24
  args: [cliJsPath(), "serve-mcp", "--stdio"],
21
25
  env: {
22
26
  KYA_HOST: "ide",
23
27
  KYA_OFFLINE: "1",
28
+ // Separates MCP-originated activity per host on the report's Sessions panel.
29
+ KYA_SESSION_ID: `mcp:${hostId}`,
24
30
  },
25
31
  };
26
32
  }
27
- function opencodeBlock() {
33
+ function opencodeBlock(hostId) {
28
34
  return {
29
35
  type: "local",
30
36
  command: [process.execPath, cliJsPath(), "serve-mcp", "--stdio"],
@@ -32,10 +38,24 @@ function opencodeBlock() {
32
38
  environment: {
33
39
  KYA_HOST: "ide",
34
40
  KYA_OFFLINE: "1",
41
+ KYA_SESSION_ID: `mcp:${hostId}`,
35
42
  },
36
43
  };
37
44
  }
38
45
  export const CONNECT_REGISTRY = {
46
+ claude: {
47
+ label: "Claude Code",
48
+ globalPath: (h) => join(h, ".claude.json"),
49
+ projectPath: (c) => join(c, ".mcp.json"),
50
+ rootKey: "mcpServers",
51
+ shape: "standard",
52
+ },
53
+ grok: {
54
+ label: "Grok",
55
+ globalPath: (h) => join(h, ".grok", "config.toml"),
56
+ rootKey: "mcp_servers",
57
+ shape: "grok-toml",
58
+ },
39
59
  opencode: {
40
60
  label: "OpenCode",
41
61
  globalPath: (h) => join(h, ".config", "opencode", "opencode.json"),
@@ -117,36 +137,182 @@ export function connectableHosts() {
117
137
  export function knownHosts() {
118
138
  return Object.keys(CONNECT_REGISTRY);
119
139
  }
120
- function serverBlock(spec) {
121
- return spec.shape === "opencode-local" ? opencodeBlock() : standardBlock();
140
+ function serverBlock(hostId, spec) {
141
+ return spec.shape === "opencode-local"
142
+ ? opencodeBlock(hostId)
143
+ : standardServerBlock(hostId);
144
+ }
145
+ /**
146
+ * Resolve the path a write will land on. An existing symlinked host config
147
+ * (dotfiles setups) resolves to its real regular file; anything else that
148
+ * exists but is not a regular file is refused.
149
+ */
150
+ function writeTarget(path) {
151
+ if (!existsSync(path))
152
+ return path;
153
+ let real;
154
+ try {
155
+ real = realpathSync(path);
156
+ }
157
+ catch {
158
+ throw new UsageError(`${path} cannot be resolved — refusing to write`);
159
+ }
160
+ if (!statSync(real).isFile()) {
161
+ throw new UsageError(`${path} does not resolve to a regular file — refusing to write`);
162
+ }
163
+ return real;
122
164
  }
123
- function mergeHostConfig(path, spec, force) {
124
- const block = serverBlock(spec);
165
+ /**
166
+ * Crash-safe write: tmp file in the same directory, then rename onto the
167
+ * target (atomic on POSIX and win32 within one volume). A mid-write crash
168
+ * leaves the original config intact; the tmp file is removed best-effort.
169
+ * An existing target's file mode is carried over — a rename would otherwise
170
+ * turn a 0600 config into the umask default.
171
+ */
172
+ function atomicWriteSync(target, content) {
173
+ const tmp = `${target}.kya-tmp-${process.pid}`;
174
+ try {
175
+ let mode;
176
+ try {
177
+ mode = statSync(target).mode;
178
+ }
179
+ catch {
180
+ /* new file — keep default mode */
181
+ }
182
+ writeFileSync(tmp, content, "utf8");
183
+ if (mode !== undefined) {
184
+ try {
185
+ chmodSync(tmp, mode);
186
+ }
187
+ catch {
188
+ /* win32 chmod semantics differ; POSIX correctness is what matters */
189
+ }
190
+ }
191
+ renameSync(tmp, target);
192
+ }
193
+ catch (err) {
194
+ try {
195
+ rmSync(tmp, { force: true });
196
+ }
197
+ catch {
198
+ /* best-effort cleanup */
199
+ }
200
+ throw err;
201
+ }
202
+ }
203
+ /**
204
+ * Where a create should land. A dangling symlink (dotfiles target not yet
205
+ * materialized) resolves to its link target — relative links resolve against
206
+ * the link's directory — so the rename completes the link instead of
207
+ * replacing it with a regular file.
208
+ */
209
+ function createTarget(path) {
210
+ try {
211
+ if (lstatSync(path).isSymbolicLink()) {
212
+ const resolved = resolve(dirname(path), readlinkSync(path));
213
+ mkdirSync(dirname(resolved), { recursive: true });
214
+ return resolved;
215
+ }
216
+ }
217
+ catch {
218
+ /* not a symlink or unreadable link — plain create below */
219
+ }
220
+ mkdirSync(dirname(path), { recursive: true });
221
+ return path;
222
+ }
223
+ /** Merge "shield-kya" into a JSON host config under rootKey. Never clobbers. */
224
+ export function mergeJsonHostConfig(path, rootKey, block, force) {
125
225
  if (!existsSync(path)) {
126
- mkdirSync(dirname(path), { recursive: true });
127
- writeFileSync(path, `${JSON.stringify({ [spec.rootKey]: { "shield-kya": block } }, null, 2)}\n`, "utf8");
226
+ atomicWriteSync(createTarget(path), `${JSON.stringify({ [rootKey]: { "shield-kya": block } }, null, 2)}\n`);
128
227
  return "created";
129
228
  }
229
+ const target = writeTarget(path);
130
230
  let raw;
131
231
  try {
132
- raw = JSON.parse(readFileSync(path, "utf8"));
232
+ raw = JSON.parse(readFileSync(target, "utf8"));
133
233
  }
134
234
  catch {
135
235
  // Never rewrite a host's real config we cannot parse — that destroys settings.
136
236
  throw new UsageError(`${path} is not valid JSON — fix it by hand or back it up and delete it, then re-run connect`);
137
237
  }
138
- const existing = raw[spec.rootKey];
238
+ const existing = raw[rootKey];
139
239
  if (existing !== undefined && (typeof existing !== "object" || existing === null || Array.isArray(existing))) {
140
- throw new UsageError(`${path} has "${spec.rootKey}" but it is not an object — refusing to clobber it`);
240
+ throw new UsageError(`${path} has "${rootKey}" but it is not an object — refusing to clobber it`);
141
241
  }
142
242
  const servers = (existing ?? {});
143
- if (servers["shield-kya"] && !force)
243
+ // Presence of the key — even a null value — counts as wired: never touch it
244
+ // without --force.
245
+ if (Object.prototype.hasOwnProperty.call(servers, "shield-kya") && !force) {
144
246
  return "skipped";
145
- raw[spec.rootKey] = { ...servers, "shield-kya": block };
146
- writeFileSync(path, `${JSON.stringify(raw, null, 2)}\n`, "utf8");
247
+ }
248
+ raw[rootKey] = { ...servers, "shield-kya": block };
249
+ atomicWriteSync(target, `${JSON.stringify(raw, null, 2)}\n`);
147
250
  return "wired";
148
251
  }
149
- export async function runConnect(config, input, env = process.env) {
252
+ const GROK_TABLE_HEADER = "[mcp_servers.shield-kya]";
253
+ const GROK_TABLE_RE = /^\s*\[mcp_servers\.shield-kya\]\s*(?:#.*)?$/m;
254
+ const GROK_QUOTED_TABLE_RE = /^\s*\[\s*mcp_servers\s*\.\s*["']shield-kya["']\s*\]/m;
255
+ const GROK_INLINE_RE = /^\s*shield-kya\s*=/m;
256
+ function grokTableBlock(hostId) {
257
+ // JSON string literal syntax is valid TOML for these shapes.
258
+ const args = [cliJsPath(), "serve-mcp", "--stdio"]
259
+ .map((s) => JSON.stringify(s))
260
+ .join(", ");
261
+ return [
262
+ GROK_TABLE_HEADER,
263
+ `command = ${JSON.stringify(process.execPath)}`,
264
+ `args = [${args}]`,
265
+ `env = { KYA_HOST = "ide", KYA_OFFLINE = "1", KYA_SESSION_ID = ${JSON.stringify(`mcp:${hostId}`)} }`,
266
+ "enabled = true",
267
+ "",
268
+ ].join("\n");
269
+ }
270
+ /**
271
+ * Minimal TOML wiring for Grok: append the [mcp_servers.shield-kya] table at
272
+ * EOF, skip when present, --force replaces the existing table block. An inline
273
+ * `shield-kya = …` definition under [mcp_servers] cannot be merged safely as
274
+ * text — refuse it with a clear error.
275
+ */
276
+ function mergeGrokToml(path, hostId, force) {
277
+ const block = grokTableBlock(hostId);
278
+ if (!existsSync(path)) {
279
+ atomicWriteSync(createTarget(path), block);
280
+ return "created";
281
+ }
282
+ const target = writeTarget(path);
283
+ const text = readFileSync(target, "utf8");
284
+ const header = GROK_TABLE_RE.exec(text);
285
+ if (header && !force)
286
+ return "skipped";
287
+ if (!header) {
288
+ if (GROK_QUOTED_TABLE_RE.test(text)) {
289
+ throw new UsageError(`${path} has a quoted [mcp_servers."shield-kya"] table — appending an unquoted one would duplicate it; fix the header by hand, then re-run connect`);
290
+ }
291
+ if (GROK_INLINE_RE.test(text)) {
292
+ throw new UsageError(`${path} defines shield-kya inline under [mcp_servers] — remove that line by hand, then re-run connect`);
293
+ }
294
+ const sep = text.length === 0 || text.endsWith("\n") ? "" : "\n";
295
+ atomicWriteSync(target, `${text}${sep}${block}`);
296
+ return "wired";
297
+ }
298
+ // --force: replace the existing table (header line through the next table
299
+ // header or EOF) with a fresh block.
300
+ const start = header.index;
301
+ const lineEnd = text.indexOf("\n", start);
302
+ const bodyStart = lineEnd === -1 ? text.length : lineEnd + 1;
303
+ const nextHeader = text.slice(bodyStart).search(/^\s*\[/m);
304
+ const end = nextHeader === -1 ? text.length : bodyStart + nextHeader;
305
+ const replaced = `${text.slice(0, start)}${block}${text.slice(end)}`;
306
+ atomicWriteSync(target, replaced);
307
+ return "wired";
308
+ }
309
+ function mergeHostConfig(path, hostId, spec, force) {
310
+ if (spec.shape === "grok-toml")
311
+ return mergeGrokToml(path, hostId, force);
312
+ return mergeJsonHostConfig(path, spec.rootKey, serverBlock(hostId, spec), force);
313
+ }
314
+ /** Shared wiring used by `kya connect` and `kya start`. */
315
+ export function wireHost(input) {
150
316
  const key = input.host.trim().toLowerCase();
151
317
  const spec = CONNECT_REGISTRY[key];
152
318
  if (!spec) {
@@ -156,26 +322,35 @@ export async function runConnect(config, input, env = process.env) {
156
322
  throw new UsageError(`${spec.label} has no safe auto-wire — follow the copy-paste recipe in ${spec.recipeOnly}`);
157
323
  }
158
324
  const scope = input.scope ?? "global";
159
- const home = env.KYA_HOME?.trim() || homedir();
160
325
  const path = scope === "project"
161
- ? spec.projectPath?.(config.cwd)
162
- : spec.globalPath?.(home);
326
+ ? spec.projectPath?.(input.cwd)
327
+ : spec.globalPath?.(input.home);
163
328
  if (!path) {
164
329
  throw new UsageError(`${spec.label} has no ${scope}-scope config — try --${scope === "project" ? "global" : "project"}`);
165
330
  }
166
- const status = mergeHostConfig(path, spec, Boolean(input.force));
331
+ const status = mergeHostConfig(path, key, spec, Boolean(input.force));
332
+ return { host: key, label: spec.label, path, status, scope };
333
+ }
334
+ /** Per-host next-step line after wiring (accurate about restarts). */
335
+ export function wireNextMessage(hostId, label, procs) {
167
336
  const verify = "Verify: ask the agent to list its MCP tools — kya.policy_evaluate, kya.session_ingest, kya.request_approval should appear.";
168
- const reload = hostReload(key);
169
- const next = reload
170
- ? `${reloadMessage(reload, spec.label, hostRunning(reload, input.procs ?? listProcessNames()))} ${verify}`
171
- : `Restart ${spec.label} so the shield-kya MCP server loads. ${verify}`;
337
+ const reload = hostReload(hostId);
338
+ return reload
339
+ ? `${reloadMessage(reload, label, hostRunning(reload, procs))} ${verify}`
340
+ : `Restart ${label} so the shield-kya MCP server loads. ${verify}`;
341
+ }
342
+ export async function runConnect(config, input, env = process.env) {
343
+ const home = env.KYA_HOME?.trim() || homedir();
344
+ const wired = wireHost({
345
+ host: input.host,
346
+ scope: input.scope,
347
+ force: input.force,
348
+ home,
349
+ cwd: config.cwd,
350
+ });
172
351
  return {
173
- host: key,
174
- label: spec.label,
175
- path,
176
- status,
177
- scope,
178
- next,
352
+ ...wired,
353
+ next: wireNextMessage(wired.host, wired.label, input.procs ?? listProcessNames()),
179
354
  };
180
355
  }
181
356
  export function formatConnectHuman(r) {
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serve-mcp.d.ts","sourceRoot":"","sources":["../../src/commands/serve-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAQ3E;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,cAAc,CAAC,CAgCzB"}
1
+ {"version":3,"file":"serve-mcp.d.ts","sourceRoot":"","sources":["../../src/commands/serve-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAQ3E;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,cAAc,CAAC,CA4CzB"}
@@ -28,6 +28,12 @@ export async function runServeMcp(config, options, client) {
28
28
  client: httpClient,
29
29
  kyaHost: config.host,
30
30
  agentId: config.agentId,
31
+ offline: config.offline,
32
+ trail: {
33
+ cwd: config.cwd,
34
+ offline: config.offline,
35
+ holdEnabled: config.holdEnabled,
36
+ },
31
37
  });
32
38
  return { mode: "stdio", stdio };
33
39
  }
@@ -38,6 +44,12 @@ export async function runServeMcp(config, options, client) {
38
44
  client: httpClient,
39
45
  kyaHost: config.host,
40
46
  agentId: config.agentId,
47
+ offline: config.offline,
48
+ trail: {
49
+ cwd: config.cwd,
50
+ offline: config.offline,
51
+ holdEnabled: config.holdEnabled,
52
+ },
41
53
  });
42
54
  return { mode: "http", http };
43
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serve-mcp.js","sourceRoot":"","sources":["../../src/commands/serve-mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAuB,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,UAAU,uBAAuB,CAAC,MAAkB;IACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QAC9B,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACjC,UAAU,EAAE,WAAW;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAsB,EACtB,OAAwB,EACxB,MAAsB;IAEtB,MAAM,UAAU,GACd,MAAM;QACN,IAAI,aAAa,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,wEAAwE;YACxE,oEAAoE;YACpE,qCAAqC;YACrC,aAAa,EAAE,CAAC,MAAM,CAAC,OAAO;SAC/B,CAAC,CAAC;IAEL,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,aAAa,CAAC;YAC1B,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,MAAM,CAAC,IAAI;YACpB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC;QAC9B,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,WAAW;QACvC,IAAI;QACJ,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"serve-mcp.js","sourceRoot":"","sources":["../../src/commands/serve-mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAuB,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,UAAU,uBAAuB,CAAC,MAAkB;IACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QAC9B,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACjC,UAAU,EAAE,WAAW;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAsB,EACtB,OAAwB,EACxB,MAAsB;IAEtB,MAAM,UAAU,GACd,MAAM;QACN,IAAI,aAAa,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,wEAAwE;YACxE,oEAAoE;YACpE,qCAAqC;YACrC,aAAa,EAAE,CAAC,MAAM,CAAC,OAAO;SAC/B,CAAC,CAAC;IAEL,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,aAAa,CAAC;YAC1B,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,MAAM,CAAC,IAAI;YACpB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE;gBACL,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC;SACF,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC;QAC9B,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,WAAW;QACvC,IAAI;QACJ,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE;YACL,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC;KACF,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC"}
@@ -1,8 +1,15 @@
1
1
  import type { ResolvedConfig } from "../config.js";
2
+ export interface WiredUserHost {
3
+ readonly host: string;
4
+ readonly label: string;
5
+ readonly path: string;
6
+ }
2
7
  export interface StartResult {
3
8
  readonly initCreated: readonly string[];
4
9
  readonly wired: readonly string[];
5
10
  readonly skipped: readonly string[];
11
+ /** User-level host configs wired (or created) because the host is installed. */
12
+ readonly wiredHosts: readonly WiredUserHost[];
6
13
  readonly liveUrl?: string;
7
14
  readonly reportPid?: number;
8
15
  readonly reportReused?: boolean;
@@ -12,6 +19,8 @@ export declare function runStart(config: ResolvedConfig, input?: {
12
19
  force?: boolean;
13
20
  open?: boolean;
14
21
  procs?: ReadonlySet<string>;
22
+ /** Test hook: home dir for user-level host wiring. */
23
+ home?: string;
15
24
  }): Promise<StartResult>;
16
25
  export declare function formatStartHuman(r: StartResult): string;
17
26
  //# sourceMappingURL=start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAOnD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAoED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,KAAK,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAO,GAC3E,OAAO,CAAC,WAAW,CAAC,CA2DtB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAUvD"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAenD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAoCD,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,KAAK,GAAE;IACL,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;CACV,GACL,OAAO,CAAC,WAAW,CAAC,CAoGtB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAavD"}