@shield-agent/kya 0.3.0 → 0.4.1

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 (57) hide show
  1. package/.mcp.json +1 -1
  2. package/LIMITATIONS.md +1 -0
  3. package/README.md +17 -3
  4. package/amp/settings.example.json +1 -1
  5. package/claude/claude_desktop_config.example.json +1 -1
  6. package/cline/cline_mcp_settings.example.json +1 -1
  7. package/copilot/mcp-config.example.json +1 -1
  8. package/dist/cli.d.ts +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +33 -4
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/connect.d.ts +27 -0
  13. package/dist/commands/connect.d.ts.map +1 -1
  14. package/dist/commands/connect.js +43 -8
  15. package/dist/commands/connect.js.map +1 -1
  16. package/dist/commands/hook.d.ts +17 -0
  17. package/dist/commands/hook.d.ts.map +1 -0
  18. package/dist/commands/hook.js +105 -0
  19. package/dist/commands/hook.js.map +1 -0
  20. package/dist/commands/start.d.ts +2 -0
  21. package/dist/commands/start.d.ts.map +1 -1
  22. package/dist/commands/start.js +30 -5
  23. package/dist/commands/start.js.map +1 -1
  24. package/dist/commands/stop.d.ts +21 -1
  25. package/dist/commands/stop.d.ts.map +1 -1
  26. package/dist/commands/stop.js +76 -22
  27. package/dist/commands/stop.js.map +1 -1
  28. package/dist/commands/wire-hooks.d.ts +33 -0
  29. package/dist/commands/wire-hooks.d.ts.map +1 -0
  30. package/dist/commands/wire-hooks.js +213 -0
  31. package/dist/commands/wire-hooks.js.map +1 -0
  32. package/dist/receipt/daemon.d.ts +35 -5
  33. package/dist/receipt/daemon.d.ts.map +1 -1
  34. package/dist/receipt/daemon.js +87 -12
  35. package/dist/receipt/daemon.js.map +1 -1
  36. package/dist/receipt/live-server.d.ts.map +1 -1
  37. package/dist/receipt/live-server.js +7 -4
  38. package/dist/receipt/live-server.js.map +1 -1
  39. package/dist/trail.d.ts +3 -1
  40. package/dist/trail.d.ts.map +1 -1
  41. package/dist/trail.js +20 -0
  42. package/dist/trail.js.map +1 -1
  43. package/droid/README.md +1 -1
  44. package/droid/mcp.example.json +1 -1
  45. package/gemini/settings.example.json +1 -1
  46. package/grok/README.md +1 -1
  47. package/kilo/kilo.example.json +1 -1
  48. package/kimi/mcp.example.json +1 -1
  49. package/kiro/mcp.example.json +1 -1
  50. package/manifest.json +1 -1
  51. package/mastracode/mcp.example.json +1 -1
  52. package/mcp.json +1 -1
  53. package/openai/codex.config.example.toml +1 -1
  54. package/opencode/opencode.example.json +1 -1
  55. package/package.json +1 -1
  56. package/qwen/settings.example.json +1 -1
  57. package/server.json +2 -2
@@ -0,0 +1,105 @@
1
+ /**
2
+ * kya hook — PreToolUse interception for hosts with native hooks
3
+ * (Claude Code, Grok, Kimi Code). Offline local evaluate only: no network,
4
+ * sub-second, fail-open on any internal error. DENY (local never-list)
5
+ * blocks; REQUIRE_APPROVE records advisory unless --strict.
6
+ */
7
+ import { resolveConfig } from "../config.js";
8
+ import { runEvalTool } from "./eval-tool.js";
9
+ import { appendTrail, defaultSessionId, hostToProduct } from "../trail.js";
10
+ import { deriveTrailSummary } from "../trail-summary.js";
11
+ /** Accept snake_case (Claude/Kimi) and camelCase (Grok) envelopes. */
12
+ function parsePayload(stdinText) {
13
+ let raw;
14
+ try {
15
+ raw = JSON.parse(stdinText);
16
+ }
17
+ catch {
18
+ return undefined;
19
+ }
20
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
21
+ return undefined;
22
+ const p = raw;
23
+ const event = (typeof p.hook_event_name === "string" && p.hook_event_name) ||
24
+ (typeof p.hookEventName === "string" && p.hookEventName) ||
25
+ undefined;
26
+ return {
27
+ event,
28
+ sessionId: (typeof p.session_id === "string" && p.session_id) ||
29
+ (typeof p.sessionId === "string" && p.sessionId) ||
30
+ undefined,
31
+ cwd: typeof p.cwd === "string" ? p.cwd : undefined,
32
+ toolName: (typeof p.tool_name === "string" && p.tool_name) ||
33
+ (typeof p.toolName === "string" && p.toolName) ||
34
+ undefined,
35
+ toolInput: p.tool_input ?? p.toolInput,
36
+ };
37
+ }
38
+ const ALLOW = { exitCode: 0, stdout: "", stderr: "" };
39
+ function deny(reason) {
40
+ return {
41
+ exitCode: 2,
42
+ stdout: `${JSON.stringify({
43
+ hookSpecificOutput: {
44
+ hookEventName: "PreToolUse",
45
+ permissionDecision: "deny",
46
+ permissionDecisionReason: reason,
47
+ },
48
+ })}\n`,
49
+ stderr: `${reason}\n`,
50
+ };
51
+ }
52
+ export async function runHook(input) {
53
+ try {
54
+ const payload = parsePayload(input.stdinText);
55
+ if (!payload)
56
+ return ALLOW;
57
+ if (payload.event && !/^(PreToolUse|pre_tool_use)$/i.test(payload.event))
58
+ return ALLOW;
59
+ if (!payload.toolName)
60
+ return ALLOW;
61
+ const config = resolveConfig({
62
+ cwd: input.cwd,
63
+ env: input.env,
64
+ flags: {},
65
+ allowMissingApiKey: true,
66
+ requireApiKey: false,
67
+ offline: true,
68
+ });
69
+ const evaluate = input.evaluate ??
70
+ (async (toolId, args) => (await runEvalTool(config, { toolId, args, offline: true })).response);
71
+ const response = await evaluate(payload.toolName, payload.toolInput ?? {});
72
+ // payload.cwd is host-supplied and only feeds the project-basename stamp;
73
+ // the trail path itself comes from env/KYA_HOME — no traversal risk.
74
+ const trailCwd = payload.cwd?.trim() || input.cwd;
75
+ try {
76
+ appendTrail(trailCwd, {
77
+ ts: new Date().toISOString(),
78
+ sessionId: payload.sessionId ?? defaultSessionId(input.env),
79
+ host: config.host,
80
+ product: hostToProduct(input.host),
81
+ toolId: response.toolId ?? payload.toolName,
82
+ verdict: response.verdict,
83
+ reasonCode: response.reasonCode ?? "",
84
+ mode: "offline",
85
+ neverEvent: response.reasonCode === "NEVER_EVENT",
86
+ argsHash: response.argsHash,
87
+ summary: deriveTrailSummary(payload.toolName, payload.toolInput ?? {}),
88
+ }, input.env);
89
+ }
90
+ catch {
91
+ /* observe path never breaks the gate */
92
+ }
93
+ if (response.verdict === "DENY") {
94
+ return deny(`KYA denied ${payload.toolName}: ${response.reasonCode}`);
95
+ }
96
+ if (input.strict && response.verdict === "REQUIRE_APPROVE") {
97
+ return deny(`KYA strict mode: ${payload.toolName} requires approval (${response.reasonCode})`);
98
+ }
99
+ return ALLOW;
100
+ }
101
+ catch {
102
+ return ALLOW; // fail-open: hook errors must never block the user's agent
103
+ }
104
+ }
105
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA0BzD,sEAAsE;AACtE,SAAS,YAAY,CAAC,SAAiB;IACrC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,KAAK,GACT,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC;QAC5D,CAAC,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,CAAC;QACxD,SAAS,CAAC;IACZ,OAAO;QACL,KAAK;QACL,SAAS,EACP,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC;YAClD,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC;YAChD,SAAS;QACX,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;QAClD,QAAQ,EACN,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC;YAChD,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC;YAC9C,SAAS;QACX,SAAS,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAElE,SAAS,IAAI,CAAC,MAAc;IAC1B,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YACxB,kBAAkB,EAAE;gBAClB,aAAa,EAAE,YAAY;gBAC3B,kBAAkB,EAAE,MAAM;gBAC1B,wBAAwB,EAAE,MAAM;aACjC;SACF,CAAC,IAAI;QACN,MAAM,EAAE,GAAG,MAAM,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAgB;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACvF,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAEpC,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,EAAE;YACT,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,MAAM,QAAQ,GACZ,KAAK,CAAC,QAAQ;YACd,CAAC,KAAK,EAAE,MAAc,EAAE,IAAa,EAAE,EAAE,CACvC,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAE3E,0EAA0E;QAC1E,qEAAqE;QACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC;QAClD,IAAI,CAAC;YACH,WAAW,CAAC,QAAQ,EAAE;gBACpB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC3D,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;gBAClC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ;gBAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;gBACrC,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,QAAQ,CAAC,UAAU,KAAK,aAAa;gBACjD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;aACvE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;QAED,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,cAAc,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,oBAAoB,OAAO,CAAC,QAAQ,uBAAuB,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,2DAA2D;IAC3E,CAAC;AACH,CAAC"}
@@ -10,6 +10,8 @@ export interface StartResult {
10
10
  readonly skipped: readonly string[];
11
11
  /** User-level host configs wired (or created) because the host is installed. */
12
12
  readonly wiredHosts: readonly WiredUserHost[];
13
+ /** PreToolUse hook wiring for installed hook-capable hosts (claude/grok/kimi). */
14
+ readonly hooksWired: readonly WiredUserHost[];
13
15
  readonly liveUrl?: string;
14
16
  readonly reportPid?: number;
15
17
  readonly reportReused?: boolean;
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAgBnD,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,kFAAkF;IAClF,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,CAqHtB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAgBvD"}
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * One-shot OSS onboarding: init → wire local MCP → open live activity report.
3
3
  *
4
- * Wiring has two tiers: project files (`.mcp.json`, `mcp.json`,
5
- * `.cursor/mcp.json` in cwd) and user-level configs for hosts with evidence
6
- * of installation (config file present, or the host's config dir exists).
7
- * Both go through connect's merge logic — merge-only, never clobber.
4
+ * Wiring has three tiers: project files (`.mcp.json`, `mcp.json`,
5
+ * `.cursor/mcp.json` in cwd), user-level MCP configs for hosts with evidence
6
+ * of installation (config file present, or the host's config dir exists),
7
+ * and PreToolUse hooks for hook-capable hosts (claude, grok, kimi).
8
+ * All go through merge-only logic — never clobber.
8
9
  */
9
10
  import { existsSync, readFileSync } from "node:fs";
10
11
  import { homedir } from "node:os";
@@ -16,6 +17,7 @@ import { ensureReceiptDaemon } from "../receipt/daemon.js";
16
17
  import { appendTrail, defaultSessionId, trailPath } from "../trail.js";
17
18
  import { hostReload, hostRunning, listProcessNames, reloadMessage } from "../host-reload.js";
18
19
  import { CONNECT_REGISTRY, connectableHosts, mergeJsonHostConfig, standardServerBlock, wireHost, } from "./connect.js";
20
+ import { HOOK_HOSTS, wireHook } from "./wire-hooks.js";
19
21
  function seedTrailIfEmpty(cwd) {
20
22
  const trail = trailPath(cwd);
21
23
  if (existsSync(trail) && readFileSync(trail, "utf8").trim())
@@ -105,6 +107,22 @@ export async function runStart(config, input = {}) {
105
107
  throw err;
106
108
  }
107
109
  }
110
+ // PreToolUse hook wiring for installed hook-capable hosts.
111
+ const hookHosts = HOOK_HOSTS.filter((id) => hostInstalled(id, home));
112
+ const hooksWired = [];
113
+ for (const id of hookHosts) {
114
+ try {
115
+ const r = wireHook({ host: id, home, force });
116
+ if (r.status !== "skipped")
117
+ hooksWired.push({ host: r.host, label: r.label, path: r.path });
118
+ }
119
+ catch (err) {
120
+ if (err instanceof UsageError)
121
+ skipped.push(String(err.message));
122
+ else
123
+ throw err;
124
+ }
125
+ }
108
126
  seedTrailIfEmpty(config.cwd);
109
127
  let liveUrl;
110
128
  let reportPid;
@@ -137,12 +155,16 @@ export async function runStart(config, input = {}) {
137
155
  wired,
138
156
  skipped,
139
157
  wiredHosts,
158
+ hooksWired,
140
159
  liveUrl,
141
160
  reportPid,
142
161
  reportReused,
143
162
  next: `${hostNotes} ` +
144
163
  "The report runs in the background — reopen with `kya receipt --open`, " +
145
- "stop with `kya stop`.",
164
+ "stop with `kya stop`." +
165
+ (hooksWired.length
166
+ ? " Hooks take effect in new sessions — claude, grok, and kimi all load hooks at session start."
167
+ : ""),
146
168
  };
147
169
  }
148
170
  export function formatStartHuman(r) {
@@ -153,6 +175,9 @@ export function formatStartHuman(r) {
153
175
  r.wiredHosts.length
154
176
  ? `wired hosts: ${r.wiredHosts.map((h) => `${h.label} (${h.path})`).join(", ")}`
155
177
  : undefined,
178
+ r.hooksWired.length
179
+ ? `hooks: ${r.hooksWired.map((h) => h.label).join(", ")} (PreToolUse interception — applies to new sessions)`
180
+ : undefined,
156
181
  r.liveUrl ? `report: ${r.liveUrl}` : undefined,
157
182
  r.next,
158
183
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAsBvD,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO;IACpE,WAAW,CAAC,GAAG,EAAE;QACf,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,SAAS,EAAE,gBAAgB,EAAE;QAC7B,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,2DAA2D;KACrE,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAuD;IACxE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC;CAClC,CAAC;AAEF,SAAS,aAAa,CAAC,MAAc,EAAE,IAAY;IACjD,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAsB,EACtB,QAMI,EAAE;IAEN,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;IAE7E,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,oEAAoE;IACpE,2CAA2C;IAC3C,MAAM,aAAa,GAIZ;QACL,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QAClF,GAAG,EAAE,CAAC,CAAC;YACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;YAClC,MAAM,EAAE,mBAAmB,CACzB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAC5B,YAAY,EACZ,mBAAmB,CAAC,SAAS,CAAC,EAC9B,KAAK,CACN;SACF,CAAC;QACF,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;KACnF,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;gBAC5C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI;gBAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;;gBAC5D,MAAM,GAAG,CAAC;QACjB,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;YAAE,SAAS;QAC/D,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;gBAC5C,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;;gBAC5D,MAAM,GAAG,CAAC;QACjB,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;;gBAC5D,MAAM,GAAG,CAAC;QACjB,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAE7B,IAAI,OAA2B,CAAC;IAChC,IAAI,SAA6B,CAAC;IAClC,IAAI,YAAiC,CAAC;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,wEAAwE;QACxE,+CAA+C;QAC/C,MAAM,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;QACrB,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,qEAAqE;IACrE,gCAAgC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,gBAAgB,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,CAAC,GAAG,YAAY,CAAC;SAChC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;QAC1C,OAAO,IAAI,IAAI,KAAK;YAClB,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC/C,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,KAAK;QACL,OAAO;QACP,UAAU;QACV,UAAU;QACV,OAAO;QACP,SAAS;QACT,YAAY;QACZ,IAAI,EACF,GAAG,SAAS,GAAG;YACf,wEAAwE;YACxE,uBAAuB;YACvB,CAAC,UAAU,CAAC,MAAM;gBAChB,CAAC,CAAC,8FAA8F;gBAChG,CAAC,CAAC,EAAE,CAAC;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAc;IAC7C,OAAO;QACL,WAAW;QACX,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACvE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAC3D,CAAC,CAAC,UAAU,CAAC,MAAM;YACjB,CAAC,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAChF,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,UAAU,CAAC,MAAM;YACjB,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,sDAAsD;YAC7G,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;QAC9C,CAAC,CAAC,IAAI;KACP;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -1,9 +1,29 @@
1
+ /**
2
+ * `kya stop` — stop the background live-receipt server started by `kya start`.
3
+ * `--all` additionally sweeps orphaned `receipt-serve` daemons from other
4
+ * cwds or older installs that the cwd state file does not know about.
5
+ */
6
+ import { type DaemonProc } from "../receipt/daemon.js";
1
7
  export interface StopResult {
2
8
  readonly stopped: boolean;
3
9
  readonly pid?: number;
4
10
  /** State file pointed at a pid that is not our daemon; it was cleared. */
5
11
  readonly stale?: boolean;
12
+ /** Pids of daemons beyond the cwd state file stopped by --all. */
13
+ readonly extraStopped?: readonly number[];
14
+ /** --all was requested but the orphan sweep is unsupported here (win32). */
15
+ readonly sweepUnsupported?: boolean;
6
16
  }
7
- export declare function runStop(cwd: string): Promise<StopResult>;
17
+ export interface StopOptions {
18
+ /** Also stop any running `cli.js receipt-serve` daemon owned by this user. */
19
+ readonly all?: boolean;
20
+ /** Injectable process snapshot (tests); defaults to a live ps listing. */
21
+ readonly procs?: readonly DaemonProc[];
22
+ /** Injectable signaler (tests); defaults to SIGTERM. */
23
+ readonly kill?: (pid: number) => void;
24
+ /** Injectable platform (tests); defaults to process.platform. */
25
+ readonly platform?: NodeJS.Platform;
26
+ }
27
+ export declare function runStop(cwd: string, options?: StopOptions): Promise<StopResult>;
8
28
  export declare function formatStopHuman(r: StopResult): string;
9
29
  //# sourceMappingURL=stop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAMD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB9D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAOrD"}
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,4EAA4E;IAC5E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,wDAAwD;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CACrC;AAcD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDzF;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAuBrD"}
@@ -1,39 +1,93 @@
1
1
  /**
2
2
  * `kya stop` — stop the background live-receipt server started by `kya start`.
3
+ * `--all` additionally sweeps orphaned `receipt-serve` daemons from other
4
+ * cwds or older installs that the cwd state file does not know about.
3
5
  */
4
- import { clearDaemonState, isReceiptDaemonProcess, pidAlive, readDaemonState, } from "../receipt/daemon.js";
6
+ import { clearDaemonState, findReceiptDaemonPids, isReceiptDaemonProcess, listOwnedProcesses, pidAlive, readDaemonState, } from "../receipt/daemon.js";
5
7
  function sleep(ms) {
6
8
  return new Promise((resolve) => setTimeout(resolve, ms));
7
9
  }
8
- export async function runStop(cwd) {
10
+ function defaultKill(pid) {
11
+ try {
12
+ process.kill(pid, "SIGTERM");
13
+ }
14
+ catch {
15
+ /* raced exit */
16
+ }
17
+ }
18
+ export async function runStop(cwd, options = {}) {
9
19
  const state = readDaemonState(cwd);
10
- if (!state)
11
- return { stopped: false };
12
- if (pidAlive(state.pid) && !isReceiptDaemonProcess(state.pid)) {
13
- // Planted or recycled pid — never signal a foreign process.
14
- clearDaemonState(cwd);
15
- return { stopped: false, stale: true, pid: state.pid };
16
- }
17
- if (pidAlive(state.pid)) {
18
- try {
19
- process.kill(state.pid, "SIGTERM");
20
+ let stopped = false;
21
+ let stale = false;
22
+ if (state) {
23
+ if (pidAlive(state.pid) && !isReceiptDaemonProcess(state.pid)) {
24
+ // Planted or recycled pid — never signal a foreign process.
25
+ clearDaemonState(cwd);
26
+ stale = true;
27
+ }
28
+ else {
29
+ if (pidAlive(state.pid)) {
30
+ defaultKill(state.pid);
31
+ for (let waited = 0; waited < 3_000 && pidAlive(state.pid); waited += 100) {
32
+ await sleep(100);
33
+ }
34
+ }
35
+ clearDaemonState(cwd);
36
+ stopped = true;
20
37
  }
21
- catch {
22
- /* raced exit */
38
+ }
39
+ let extraStopped;
40
+ let sweepUnsupported = false;
41
+ if (options.all) {
42
+ const platform = options.platform ?? process.platform;
43
+ if (platform === "win32") {
44
+ // tasklist exposes no command lines, so orphans cannot be identified —
45
+ // report the limitation instead of claiming none are running.
46
+ sweepUnsupported = true;
47
+ extraStopped = [];
23
48
  }
24
- for (let waited = 0; waited < 3_000 && pidAlive(state.pid); waited += 100) {
25
- await sleep(100);
49
+ else {
50
+ const kill = options.kill ?? defaultKill;
51
+ const procs = options.procs ?? listOwnedProcesses(platform);
52
+ const extra = [];
53
+ for (const pid of findReceiptDaemonPids(procs)) {
54
+ if (stopped && pid === state?.pid)
55
+ continue; // already handled above
56
+ kill(pid);
57
+ for (let waited = 0; waited < 3_000 && pidAlive(pid); waited += 100) {
58
+ await sleep(100);
59
+ }
60
+ extra.push(pid);
61
+ }
62
+ extraStopped = extra;
26
63
  }
27
64
  }
28
- clearDaemonState(cwd);
29
- return { stopped: true, pid: state.pid };
65
+ return {
66
+ stopped,
67
+ pid: state?.pid,
68
+ stale: stale || undefined,
69
+ extraStopped,
70
+ sweepUnsupported: sweepUnsupported || undefined,
71
+ };
30
72
  }
31
73
  export function formatStopHuman(r) {
74
+ const lines = [];
32
75
  if (r.stale) {
33
- return `state file was stale (pid ${r.pid} is not the report server) — cleared it`;
76
+ lines.push(`state file was stale (pid ${r.pid} is not the report server) — cleared it`);
77
+ }
78
+ else {
79
+ lines.push(r.stopped ? `stopped report server (pid ${r.pid})` : "no report server running");
80
+ }
81
+ if (r.sweepUnsupported) {
82
+ lines.push("sweep of other receipt daemons is not supported on this platform (win32) — any orphans must be stopped manually");
83
+ }
84
+ else if (r.extraStopped) {
85
+ lines.push(r.extraStopped.length > 0
86
+ ? `stopped ${r.extraStopped.length} other receipt daemon(s): ${r.extraStopped
87
+ .map((pid) => `pid ${pid}`)
88
+ .join(", ")}`
89
+ : "no other receipt daemons running");
34
90
  }
35
- return r.stopped
36
- ? `stopped report server (pid ${r.pid})`
37
- : "no report server running";
91
+ return lines.join("\n");
38
92
  }
39
93
  //# sourceMappingURL=stop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,QAAQ,EACR,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAS9B,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACtC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9D,4DAA4D;QAC5D,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;QACD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC;YAC1E,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAa;IAC3C,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,6BAA6B,CAAC,CAAC,GAAG,yCAAyC,CAAC;IACrF,CAAC;IACD,OAAO,CAAC,CAAC,OAAO;QACd,CAAC,CAAC,8BAA8B,CAAC,CAAC,GAAG,GAAG;QACxC,CAAC,CAAC,0BAA0B,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type ConnectStatus } from "./connect.js";
2
+ export interface WireHookInput {
3
+ readonly host: string;
4
+ readonly home: string;
5
+ readonly force?: boolean;
6
+ }
7
+ export interface WireHookResult {
8
+ readonly host: string;
9
+ readonly label: string;
10
+ readonly path: string;
11
+ readonly status: ConnectStatus;
12
+ }
13
+ export declare const HOOK_HOSTS: readonly ["claude", "grok", "kimi"];
14
+ /** Whether a host has verified PreToolUse hook wiring. */
15
+ export declare function hookSupported(hostId: string): boolean;
16
+ /** Shell command a host's PreToolUse hook runs. JSON-quoted paths are safe to embed. */
17
+ export declare function hookCommand(hostId: string): string;
18
+ /**
19
+ * Build the [[hooks]] TOML block for a command string. The command goes into
20
+ * a TOML literal string (single quotes) so the embedded JSON-quoted paths are
21
+ * safe — but a literal string cannot hold a single quote or a newline, so
22
+ * refuse those instead of writing invalid TOML into the user's config.
23
+ */
24
+ export declare function kimiHooksBlockText(command: string): string;
25
+ /** Wire `kya hook` into one host's user config. Unknown host → UsageError. */
26
+ export declare function wireHook(input: WireHookInput): WireHookResult;
27
+ /** Wire every supported host (or an explicit subset) under one home dir. */
28
+ export declare function wireHooks(input: {
29
+ readonly home: string;
30
+ readonly force?: boolean;
31
+ readonly hosts?: readonly string[];
32
+ }): WireHookResult[];
33
+ //# sourceMappingURL=wire-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-hooks.d.ts","sourceRoot":"","sources":["../../src/commands/wire-hooks.ts"],"names":[],"mappings":"AAWA,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,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;CAChC;AAED,eAAO,MAAM,UAAU,qCAAsC,CAAC;AAI9D,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAID,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD;AA4GD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa1D;AAyDD,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA4B7D;AAED,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,GAAG,cAAc,EAAE,CAKnB"}