@shield-agent/kya 0.24.2 → 0.26.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 (113) hide show
  1. package/.cursor-plugin/plugin.json +1 -1
  2. package/.mcp.json +1 -1
  3. package/LIMITATIONS.md +3 -3
  4. package/README.md +27 -5
  5. package/amp/README.md +2 -2
  6. package/amp/settings.example.json +1 -1
  7. package/claude/claude_desktop_config.example.json +1 -1
  8. package/claude/run-stdio.mjs +1 -1
  9. package/cline/README.md +1 -1
  10. package/cline/cline_mcp_settings.example.json +1 -1
  11. package/copilot/README.md +1 -1
  12. package/copilot/mcp-config.example.json +1 -1
  13. package/dist/cli.d.ts +3 -1
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +109 -9
  16. package/dist/cli.js.map +1 -1
  17. package/dist/commands/connect.d.ts +3 -0
  18. package/dist/commands/connect.d.ts.map +1 -1
  19. package/dist/commands/connect.js +16 -1
  20. package/dist/commands/connect.js.map +1 -1
  21. package/dist/commands/discover.d.ts +21 -0
  22. package/dist/commands/discover.d.ts.map +1 -0
  23. package/dist/commands/discover.js +140 -0
  24. package/dist/commands/discover.js.map +1 -0
  25. package/dist/commands/hook.d.ts +17 -0
  26. package/dist/commands/hook.d.ts.map +1 -1
  27. package/dist/commands/hook.js +199 -6
  28. package/dist/commands/hook.js.map +1 -1
  29. package/dist/commands/hosted-hook.d.ts +164 -0
  30. package/dist/commands/hosted-hook.d.ts.map +1 -0
  31. package/dist/commands/hosted-hook.js +610 -0
  32. package/dist/commands/hosted-hook.js.map +1 -0
  33. package/dist/commands/import-traces.js +2 -2
  34. package/dist/commands/import-traces.js.map +1 -1
  35. package/dist/commands/team.d.ts +35 -0
  36. package/dist/commands/team.d.ts.map +1 -0
  37. package/dist/commands/team.js +174 -0
  38. package/dist/commands/team.js.map +1 -0
  39. package/dist/commands/wire-hooks.d.ts +9 -1
  40. package/dist/commands/wire-hooks.d.ts.map +1 -1
  41. package/dist/commands/wire-hooks.js +38 -9
  42. package/dist/commands/wire-hooks.js.map +1 -1
  43. package/dist/discover/catalog.d.ts +30 -0
  44. package/dist/discover/catalog.d.ts.map +1 -0
  45. package/dist/discover/catalog.js +166 -0
  46. package/dist/discover/catalog.js.map +1 -0
  47. package/dist/discover/push.d.ts +21 -0
  48. package/dist/discover/push.d.ts.map +1 -0
  49. package/dist/discover/push.js +40 -0
  50. package/dist/discover/push.js.map +1 -0
  51. package/dist/discover/scan.d.ts +74 -0
  52. package/dist/discover/scan.d.ts.map +1 -0
  53. package/dist/discover/scan.js +448 -0
  54. package/dist/discover/scan.js.map +1 -0
  55. package/dist/discover/snapshot.d.ts +32 -0
  56. package/dist/discover/snapshot.d.ts.map +1 -0
  57. package/dist/discover/snapshot.js +92 -0
  58. package/dist/discover/snapshot.js.map +1 -0
  59. package/dist/fs-atomic.d.ts +8 -3
  60. package/dist/fs-atomic.d.ts.map +1 -1
  61. package/dist/fs-atomic.js +42 -17
  62. package/dist/fs-atomic.js.map +1 -1
  63. package/dist/importers/adr-sensor.d.ts +12 -0
  64. package/dist/importers/adr-sensor.d.ts.map +1 -0
  65. package/dist/importers/adr-sensor.js +272 -0
  66. package/dist/importers/adr-sensor.js.map +1 -0
  67. package/dist/importers/formats.d.ts.map +1 -1
  68. package/dist/importers/formats.js +4 -0
  69. package/dist/importers/formats.js.map +1 -1
  70. package/dist/importers/index.d.ts.map +1 -1
  71. package/dist/importers/index.js +3 -0
  72. package/dist/importers/index.js.map +1 -1
  73. package/dist/parse-args.d.ts.map +1 -1
  74. package/dist/parse-args.js +3 -1
  75. package/dist/parse-args.js.map +1 -1
  76. package/dist/receipt/enrich.d.ts +12 -0
  77. package/dist/receipt/enrich.d.ts.map +1 -1
  78. package/dist/receipt/enrich.js +30 -0
  79. package/dist/receipt/enrich.js.map +1 -1
  80. package/dist/receipt/live-server.d.ts +2 -0
  81. package/dist/receipt/live-server.d.ts.map +1 -1
  82. package/dist/receipt/live-server.js +28 -2
  83. package/dist/receipt/live-server.js.map +1 -1
  84. package/dist/receipt/render-receipt.d.ts +3 -1
  85. package/dist/receipt/render-receipt.d.ts.map +1 -1
  86. package/dist/receipt/render-receipt.js +48 -7
  87. package/dist/receipt/render-receipt.js.map +1 -1
  88. package/dist/trail.d.ts +5 -1
  89. package/dist/trail.d.ts.map +1 -1
  90. package/dist/trail.js +3 -1
  91. package/dist/trail.js.map +1 -1
  92. package/droid/README.md +3 -3
  93. package/droid/mcp.example.json +1 -1
  94. package/gemini/settings.example.json +1 -1
  95. package/grok/README.md +1 -1
  96. package/kilo/README.md +1 -1
  97. package/kilo/kilo.example.json +1 -1
  98. package/kimi/README.md +1 -1
  99. package/kimi/mcp.example.json +1 -1
  100. package/kiro/README.md +1 -1
  101. package/kiro/mcp.example.json +1 -1
  102. package/manifest.json +1 -1
  103. package/mastracode/README.md +1 -1
  104. package/mastracode/mcp.example.json +1 -1
  105. package/mcp.json +1 -1
  106. package/openai/codex.config.example.toml +2 -2
  107. package/openai/responses-mcp.example.json +1 -1
  108. package/opencode/README.md +1 -1
  109. package/opencode/opencode.example.json +1 -1
  110. package/package.json +2 -2
  111. package/qwen/README.md +1 -1
  112. package/qwen/settings.example.json +1 -1
  113. package/server.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"import-traces.js","sourceRoot":"","sources":["../../src/commands/import-traces.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,GAEpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAO,GAA4B,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAO7F,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAChD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAsB,EACtB,EAA4D,EAC5D,GAAW,EACX,GAAsB;IAEtB,8DAA8D;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvF,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,EAAE,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAClG,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE;QAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"import-traces.js","sourceRoot":"","sources":["../../src/commands/import-traces.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,GAEpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAO,GAA4B,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAO3G,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAChD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAsB,EACtB,EAA4D,EAC5D,GAAW,EACX,GAAsB;IAEtB,8DAA8D;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvF,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,EAAE,CAAC,KAAK,CAAC,kGAAkG,CAAC,CAAC;QAC7G,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE;QAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,35 @@
1
+ export declare const MARKETPLACE = "shield-kya";
2
+ export declare const PLUGIN_ID = "kya@shield-kya";
3
+ export declare const PUBLIC_REPO = "The-Pixel-Boys/shield-kya";
4
+ /** Public repo release tags are `v<version>` (the `kya-v*` tags live only in the private monorepo). */
5
+ export declare function releaseRef(version?: string): string;
6
+ export declare function marketplaceSource(version?: string): {
7
+ source: string;
8
+ repo: string;
9
+ ref: string;
10
+ };
11
+ /** The managed-settings document an admin deploys. Same pin as `team init`. */
12
+ export declare function managedSettings(version?: string): Record<string, unknown>;
13
+ export interface TeamInitResult {
14
+ readonly path: string;
15
+ readonly written: boolean;
16
+ readonly dryRun: boolean;
17
+ /** Human-readable change lines, empty when the file already matches. */
18
+ readonly changes: readonly string[];
19
+ readonly content: string;
20
+ readonly ref: string;
21
+ /** The existing file was not in canonical JSON.stringify layout, so unrelated lines are re-laid out. */
22
+ readonly reformatted: boolean;
23
+ }
24
+ type Obj = Record<string, unknown>;
25
+ /** Merge our two keys into `settings`; returns change lines. Throws (nothing written) on conflicts. */
26
+ export declare function mergeTeamSettings(settings: Obj, version?: string): string[];
27
+ export declare function runTeamInit(opts: {
28
+ readonly cwd: string;
29
+ readonly env?: NodeJS.ProcessEnv;
30
+ readonly dryRun?: boolean;
31
+ readonly version?: string;
32
+ }): TeamInitResult;
33
+ export declare function formatTeamInitHuman(r: TeamInitResult): string;
34
+ export {};
35
+ //# sourceMappingURL=team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/commands/team.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAC1C,eAAO,MAAM,WAAW,8BAA8B,CAAC;AAEvD,uGAAuG;AACvG,wBAAgB,UAAU,CAAC,OAAO,GAAE,MAAoB,GAAG,MAAM,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAoB;;;;EAE9D;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,OAAO,GAAE,MAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKtF;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,wGAAwG;IACxG,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAgDnC,uGAAuG;AACvG,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAE,MAAoB,GAAG,MAAM,EAAE,CA0CxF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,cAAc,CA4BjB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAkB7D"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * `kya team init` / `kya team managed-settings`: spread the Claude Code plugin to a team.
3
+ *
4
+ * init merges two keys into the CURRENT PROJECT's `.claude/settings.json` (never the user's):
5
+ * extraKnownMarketplaces["shield-kya"] = github The-Pixel-Boys/shield-kya at ref v<version>
6
+ * enabledPlugins["kya@shield-kya"] = true
7
+ * Every other key is kept. No network, no permissions, nothing auto-accepted: Claude Code still
8
+ * shows each teammate its folder trust prompt. managed-settings prints the same two keys as an
9
+ * admin policy document. Schema: code.claude.com/docs/en/plugins/org and
10
+ * /docs/en/plugins/marketplace-reference (marketplace `github` source: repo, ref, path; no sha).
11
+ */
12
+ import { existsSync, lstatSync, mkdirSync, readFileSync, realpathSync } from "node:fs";
13
+ import { homedir } from "node:os";
14
+ import { basename, dirname, join } from "node:path";
15
+ import { KyaError } from "../errors.js";
16
+ import { atomicWriteSync } from "../fs-atomic.js";
17
+ import { CLI_VERSION } from "../version.js";
18
+ export const MARKETPLACE = "shield-kya";
19
+ export const PLUGIN_ID = "kya@shield-kya";
20
+ export const PUBLIC_REPO = "The-Pixel-Boys/shield-kya";
21
+ /** Public repo release tags are `v<version>` (the `kya-v*` tags live only in the private monorepo). */
22
+ export function releaseRef(version = CLI_VERSION) {
23
+ return `v${version}`;
24
+ }
25
+ export function marketplaceSource(version = CLI_VERSION) {
26
+ return { source: "github", repo: PUBLIC_REPO, ref: releaseRef(version) };
27
+ }
28
+ /** The managed-settings document an admin deploys. Same pin as `team init`. */
29
+ export function managedSettings(version = CLI_VERSION) {
30
+ return {
31
+ extraKnownMarketplaces: { [MARKETPLACE]: { source: marketplaceSource(version) } },
32
+ enabledPlugins: { [PLUGIN_ID]: true },
33
+ };
34
+ }
35
+ const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
36
+ const refuse = (msg) => new KyaError(msg, "TEAM_REFUSED", 1);
37
+ function real(p) {
38
+ try {
39
+ return realpathSync(p);
40
+ }
41
+ catch {
42
+ return undefined;
43
+ }
44
+ }
45
+ /** Refuse anything that would land outside the project: symlinks, or the user-level Claude dir. */
46
+ function guardPaths(cwd, env) {
47
+ const root = real(cwd);
48
+ if (!root)
49
+ throw refuse(`project directory not found: ${cwd}`);
50
+ const dir = join(root, ".claude");
51
+ const file = join(dir, "settings.json");
52
+ // Resolve even when the user dir does not exist yet (HOME behind a symlink, fresh machine).
53
+ const loose = (p) => real(p) ?? join(real(dirname(p)) ?? dirname(p), basename(p));
54
+ const userDirs = [join(homedir(), ".claude"), env.CLAUDE_CONFIG_DIR].filter((p) => !!p).map(loose);
55
+ if (userDirs.includes(dir)) {
56
+ throw refuse(`${dir} is your user-level Claude Code directory; run kya team init inside a project`);
57
+ }
58
+ for (const [p, kind] of [[dir, "directory"], [file, "file"]]) {
59
+ const st = lstatSync(p, { throwIfNoEntry: false });
60
+ if (!st)
61
+ continue;
62
+ if (st.isSymbolicLink())
63
+ throw refuse(`${p} is a symlink; refusing to write through it`);
64
+ if (kind === "directory" ? !st.isDirectory() : !st.isFile())
65
+ throw refuse(`${p} is not a regular ${kind}`);
66
+ }
67
+ return { dir, file };
68
+ }
69
+ function detectIndent(text) {
70
+ const m = /\n([ \t]+)"/.exec(text);
71
+ return m ? m[1] : 2;
72
+ }
73
+ /** True when tag `a` (vX.Y.Z) is a strictly newer release than `b`; non-semver refs compare as not newer. */
74
+ function newerThan(a, b) {
75
+ const parse = (t) => /^v(\d+)\.(\d+)\.(\d+)$/.exec(t)?.slice(1).map(Number);
76
+ const x = parse(a);
77
+ const y = parse(b);
78
+ if (!x || !y)
79
+ return false;
80
+ const d = x.map((n, i) => n - y[i]).find((n) => n !== 0);
81
+ return d !== undefined && d > 0;
82
+ }
83
+ /** Merge our two keys into `settings`; returns change lines. Throws (nothing written) on conflicts. */
84
+ export function mergeTeamSettings(settings, version = CLI_VERSION) {
85
+ const changes = [];
86
+ const want = marketplaceSource(version);
87
+ // Claude Code reads the alias only when the canonical key is absent: adding ours would drop theirs.
88
+ if (settings.additionalMarketplaces !== undefined) {
89
+ throw refuse("settings use the additionalMarketplaces alias; rename it to extraKnownMarketplaces by hand first");
90
+ }
91
+ const markets = settings.extraKnownMarketplaces ?? {};
92
+ if (!isObj(markets))
93
+ throw refuse("extraKnownMarketplaces is not an object; fix it by hand first");
94
+ const entry = markets[MARKETPLACE];
95
+ if (entry === undefined) {
96
+ markets[MARKETPLACE] = { source: want };
97
+ changes.push(`+ extraKnownMarketplaces.${MARKETPLACE}.source = github ${want.repo} ref ${want.ref}`);
98
+ }
99
+ else {
100
+ const src = isObj(entry) ? entry.source : undefined;
101
+ if (!isObj(src) || src.source !== "github" || src.repo !== PUBLIC_REPO) {
102
+ throw refuse(`extraKnownMarketplaces.${MARKETPLACE} already points somewhere else; remove or fix it by hand, then rerun`);
103
+ }
104
+ if (src.ref !== want.ref) {
105
+ if (typeof src.ref === "string" && newerThan(src.ref, want.ref)) {
106
+ changes.push(`! downgrade: the file pins ${src.ref}, newer than this kya (${want.ref}); upgrade kya instead if that is not intended`);
107
+ }
108
+ changes.push(`~ extraKnownMarketplaces.${MARKETPLACE}.source.ref: ${JSON.stringify(src.ref ?? null)} -> "${want.ref}"`);
109
+ src.ref = want.ref;
110
+ }
111
+ }
112
+ settings.extraKnownMarketplaces = markets;
113
+ const enabled = settings.enabledPlugins ?? {};
114
+ if (!isObj(enabled))
115
+ throw refuse("enabledPlugins is not an object; fix it by hand first");
116
+ if (enabled[PLUGIN_ID] === false) {
117
+ throw refuse(`enabledPlugins["${PLUGIN_ID}"] is false (someone turned it off); change it by hand if you want it on`);
118
+ }
119
+ if (enabled[PLUGIN_ID] !== true) {
120
+ enabled[PLUGIN_ID] = true;
121
+ changes.push(`+ enabledPlugins["${PLUGIN_ID}"] = true`);
122
+ }
123
+ settings.enabledPlugins = enabled;
124
+ return changes;
125
+ }
126
+ export function runTeamInit(opts) {
127
+ const { dir, file } = guardPaths(opts.cwd, opts.env ?? process.env);
128
+ const before = existsSync(file) ? readFileSync(file, "utf8") : undefined;
129
+ let settings = {};
130
+ if (before !== undefined && before.trim() !== "") {
131
+ try {
132
+ settings = JSON.parse(before);
133
+ }
134
+ catch (err) {
135
+ throw refuse(`${file} is not valid JSON (${err.message}); nothing was written`);
136
+ }
137
+ }
138
+ if (!isObj(settings))
139
+ throw refuse(`${file} is not a JSON object; nothing was written`);
140
+ const changes = mergeTeamSettings(settings, opts.version);
141
+ const indent = before ? detectIndent(before) : 2;
142
+ // ponytail: re-serializes the whole file; a surgical text insert would keep a hand-made layout.
143
+ const reformatted = !!before?.trim() && `${JSON.stringify(JSON.parse(before), null, indent)}\n` !== before;
144
+ const content = `${JSON.stringify(settings, null, indent)}\n`;
145
+ const base = { path: file, dryRun: opts.dryRun === true, changes, content, ref: releaseRef(opts.version), reformatted };
146
+ if (base.dryRun || changes.length === 0)
147
+ return { ...base, written: false };
148
+ if (!existsSync(dir))
149
+ mkdirSync(dir);
150
+ // Re-check right before the rename that .claude and settings.json are still not symlinks and still the
151
+ // project's. Residual: a same-user process can still swap them between this check and the rename (TOCTOU);
152
+ // a planted temp file or symlink cannot be followed, since atomicWriteSync creates its temp with O_EXCL.
153
+ atomicWriteSync(file, content, () => {
154
+ const again = guardPaths(opts.cwd, opts.env ?? process.env);
155
+ if (again.file !== file)
156
+ throw refuse(`${dir} changed while writing; nothing was written`);
157
+ });
158
+ return { ...base, written: true };
159
+ }
160
+ export function formatTeamInitHuman(r) {
161
+ const lines = [];
162
+ if (r.changes.length === 0)
163
+ lines.push(`${r.path} already enables ${PLUGIN_ID} at ${r.ref}; nothing to do.`);
164
+ else
165
+ lines.push(`${r.dryRun ? "Would write" : "Wrote"} ${r.path}:`, ...r.changes.map((c) => ` ${c}`));
166
+ if (r.changes.length > 0 && r.reformatted) {
167
+ lines.push("Note: the existing file's layout is normalized to standard JSON (keys and values unchanged).");
168
+ }
169
+ if (r.dryRun && r.changes.length > 0)
170
+ lines.push("", "Resulting file:", r.content.trimEnd());
171
+ lines.push("", "Next: commit .claude/settings.json. Teammates see Claude Code's folder trust prompt once;", `after they accept it, the ${MARKETPLACE} marketplace is added and ${PLUGIN_ID} installs at the next session.`, `Pinned to tag ${r.ref} of ${PUBLIC_REPO}. Rerun kya team init after upgrading kya to move the pin.`, `Verify the public tag ${r.ref} exists (git ls-remote https://github.com/${PUBLIC_REPO} refs/tags/${r.ref});`, "if it does not, teammates will see the plugin skipped, not an error.", "OSS plugin is advisory and fails open: it records tool calls and blocks only the never-list.");
172
+ return lines.join("\n");
173
+ }
174
+ //# sourceMappingURL=team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/commands/team.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAEvD,uGAAuG;AACvG,MAAM,UAAU,UAAU,CAAC,UAAkB,WAAW;IACtD,OAAO,IAAI,OAAO,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAkB,WAAW;IAC7D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,UAAkB,WAAW;IAC3D,OAAO;QACL,sBAAsB,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE;QACjF,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE;KACtC,CAAC;AACJ,CAAC;AAeD,MAAM,KAAK,GAAG,CAAC,CAAU,EAAY,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjG,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AAErE,SAAS,IAAI,CAAC,CAAS;IACrB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,SAAS,UAAU,CAAC,GAAW,EAAE,GAAsB;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,MAAM,MAAM,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACxC,4FAA4F;IAC5F,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChH,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,GAAG,GAAG,+EAA+E,CAAC,CAAC;IACtG,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAU,EAAE,CAAC;QACtE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,IAAI,EAAE,CAAC,cAAc,EAAE;YAAE,MAAM,MAAM,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QACzF,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,MAAM,MAAM,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,6GAA6G;AAC7G,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpF,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,iBAAiB,CAAC,QAAa,EAAE,UAAkB,WAAW;IAC5E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAExC,oGAAoG;IACpG,IAAI,QAAQ,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,MAAM,CAAC,kGAAkG,CAAC,CAAC;IACnH,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,sBAAsB,IAAI,EAAE,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,MAAM,MAAM,CAAC,+DAA+D,CAAC,CAAC;IACnG,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,4BAA4B,WAAW,oBAAoB,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvG,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACvE,MAAM,MAAM,CACV,0BAA0B,WAAW,sEAAsE,CAC5G,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,GAAG,0BAA0B,IAAI,CAAC,GAAG,gDAAgD,CAAC,CAAC;YACxI,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,4BAA4B,WAAW,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACxH,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,sBAAsB,GAAG,OAAO,CAAC;IAE1C,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,MAAM,MAAM,CAAC,uDAAuD,CAAC,CAAC;IAC3F,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC;QACjC,MAAM,MAAM,CAAC,mBAAmB,SAAS,0EAA0E,CAAC,CAAC;IACvH,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,qBAAqB,SAAS,WAAW,CAAC,CAAC;IAC1D,CAAC;IACD,QAAQ,CAAC,cAAc,GAAG,OAAO,CAAC;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAK3B;IACC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,IAAI,QAAQ,GAAY,EAAE,CAAC;IAC3B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,GAAG,IAAI,uBAAwB,GAAa,CAAC,OAAO,wBAAwB,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,MAAM,MAAM,CAAC,GAAG,IAAI,4CAA4C,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,gGAAgG;IAChG,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;IAC3G,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;IAC9D,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxH,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACrC,uGAAuG;IACvG,2GAA2G;IAC3G,yGAAyG;IACzG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YAAE,MAAM,MAAM,CAAC,GAAG,GAAG,6CAA6C,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAiB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,oBAAoB,SAAS,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC;;QACxG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CACR,EAAE,EACF,2FAA2F,EAC3F,6BAA6B,WAAW,6BAA6B,SAAS,gCAAgC,EAC9G,iBAAiB,CAAC,CAAC,GAAG,OAAO,WAAW,4DAA4D,EACpG,yBAAyB,CAAC,CAAC,GAAG,6CAA6C,WAAW,cAAc,CAAC,CAAC,GAAG,IAAI,EAC7G,sEAAsE,EACtE,8FAA8F,CAC/F,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -3,6 +3,14 @@ export interface WireHookInput {
3
3
  readonly host: string;
4
4
  readonly home: string;
5
5
  readonly force?: boolean;
6
+ /** Hosted-plane hook (beta, claude only): flags appended to the command. Never the key. */
7
+ readonly hosted?: HostedHookWiring;
8
+ }
9
+ export interface HostedHookWiring {
10
+ /** Absolute path of the 0600 plane config file (validated by the caller). */
11
+ readonly configPath: string;
12
+ readonly strict?: boolean;
13
+ readonly shadow?: boolean;
6
14
  }
7
15
  export interface WireHookResult {
8
16
  readonly host: string;
@@ -14,7 +22,7 @@ export declare const HOOK_HOSTS: readonly ["claude", "grok", "kimi"];
14
22
  /** Whether a host has verified PreToolUse hook wiring. */
15
23
  export declare function hookSupported(hostId: string): boolean;
16
24
  /** Shell command a host's PreToolUse hook runs. JSON-quoted paths are safe to embed. */
17
- export declare function hookCommand(hostId: string): string;
25
+ export declare function hookCommand(hostId: string, hosted?: HostedHookWiring): string;
18
26
  /**
19
27
  * Build the [[hooks]] TOML block for a command string. The command goes into
20
28
  * a TOML literal string (single quotes) so the embedded JSON-quoted paths are
@@ -1 +1 @@
1
- {"version":3,"file":"wire-hooks.d.ts","sourceRoot":"","sources":["../../src/commands/wire-hooks.ts"],"names":[],"mappings":"AAYA,OAAO,EAKL,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"}
1
+ {"version":3,"file":"wire-hooks.d.ts","sourceRoot":"","sources":["../../src/commands/wire-hooks.ts"],"names":[],"mappings":"AAYA,OAAO,EAKL,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;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;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,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAY7E;AA+HD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa1D;AAyDD,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAiC7D;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"}
@@ -18,20 +18,38 @@ export function hookSupported(hostId) {
18
18
  }
19
19
  const HOOK_TIMEOUT_SECONDS = 5;
20
20
  /** Shell command a host's PreToolUse hook runs. JSON-quoted paths are safe to embed. */
21
- export function hookCommand(hostId) {
22
- return [process.execPath, cliJsPath()]
21
+ export function hookCommand(hostId, hosted) {
22
+ const base = [process.execPath, cliJsPath()]
23
23
  .map((s) => JSON.stringify(s))
24
24
  .join(" ") + ` hook --host ${hostId}`;
25
+ if (!hosted)
26
+ return base;
27
+ // Inside double quotes the shell still expands $ and backticks: refuse them.
28
+ if (/[$`"\\\n\r]/.test(hosted.configPath)) {
29
+ throw new UsageError("--plane-config path must not contain $, backtick, quote, backslash or newline");
30
+ }
31
+ return `${base} --plane-config ${JSON.stringify(hosted.configPath)}` +
32
+ (hosted.strict ? " --strict" : "") +
33
+ (hosted.shadow ? " --plane-shadow" : "");
25
34
  }
26
35
  function hookIdentity(hostId) {
27
36
  return `hook --host ${hostId}`;
28
37
  }
29
- /** Claude/Grok JSON entry shape: matcher "" matches every tool. */
30
- function preToolUseEntry(hostId) {
38
+ /**
39
+ * Claude/Grok JSON entry shape: matcher "" matches every tool. The hosted hook
40
+ * also sets onFailure "block" (Claude Code 2.1.295+), so a crash or host
41
+ * timeout blocks the call instead of letting it through.
42
+ */
43
+ function preToolUseEntry(hostId, hosted) {
31
44
  return {
32
45
  matcher: "",
33
46
  hooks: [
34
- { type: "command", command: hookCommand(hostId), timeout: HOOK_TIMEOUT_SECONDS },
47
+ {
48
+ type: "command",
49
+ command: hookCommand(hostId, hosted),
50
+ timeout: HOOK_TIMEOUT_SECONDS,
51
+ ...(hosted ? { onFailure: "block" } : {}),
52
+ },
35
53
  ],
36
54
  };
37
55
  }
@@ -41,8 +59,8 @@ function preToolUseEntry(hostId) {
41
59
  * instead of rewritten. An existing kya entry (matched by command identity)
42
60
  * means skipped; --force replaces that one entry, preserving all others.
43
61
  */
44
- function wireClaudeSettings(path, force) {
45
- const entry = preToolUseEntry("claude");
62
+ function wireClaudeSettings(path, force, hosted) {
63
+ const entry = preToolUseEntry("claude", hosted);
46
64
  if (!existsSync(path)) {
47
65
  atomicWriteSync(createTarget(path), `${JSON.stringify({ hooks: { PreToolUse: [entry] } }, null, 2)}\n`);
48
66
  return "created";
@@ -73,7 +91,15 @@ function wireClaudeSettings(path, force) {
73
91
  Array.isArray(e.hooks) &&
74
92
  e.hooks.some((h) => typeof h.command === "string" && h.command.includes(hookIdentity("claude")));
75
93
  const kyaIndex = entries.findIndex(isKyaEntry);
76
- if (kyaIndex !== -1 && !force)
94
+ const existingHosted = kyaIndex !== -1 &&
95
+ (entries[kyaIndex].hooks ?? []).some((h) => typeof h.command === "string" && h.command.includes("--plane-config"));
96
+ if (existingHosted && !hosted) {
97
+ // Never silently swap a fail-closed hosted hook for the fail-open OSS one.
98
+ throw new UsageError(`${path} already has the hosted-plane kya hook; re-run with --hosted to change it, or remove that entry by hand to go back to the local hook`);
99
+ }
100
+ // Hosted always replaces the kya entry: keeping the OSS copy next to it would
101
+ // leave a second, fail-open hook (and two plane calls) per tool call.
102
+ if (kyaIndex !== -1 && !force && !hosted)
77
103
  return "skipped";
78
104
  if (kyaIndex !== -1) {
79
105
  entries[kyaIndex] = entry;
@@ -182,6 +208,9 @@ function wireKimiToml(path, force) {
182
208
  export function wireHook(input) {
183
209
  const key = input.host.trim().toLowerCase();
184
210
  const force = Boolean(input.force);
211
+ if (input.hosted && key !== "claude") {
212
+ throw new UsageError(`--hosted hook wiring is claude only in this beta (needs the host's onFailure "block"); ${input.host} is not supported`);
213
+ }
185
214
  let label;
186
215
  let path;
187
216
  let status;
@@ -189,7 +218,7 @@ export function wireHook(input) {
189
218
  case "claude":
190
219
  label = CONNECT_REGISTRY["claude"].label;
191
220
  path = join(input.home, ".claude", "settings.json");
192
- status = wireClaudeSettings(path, force);
221
+ status = wireClaudeSettings(path, force, input.hosted);
193
222
  break;
194
223
  case "grok":
195
224
  label = CONNECT_REGISTRY["grok"].label;
@@ -1 +1 @@
1
- {"version":3,"file":"wire-hooks.js","sourceRoot":"","sources":["../../src/commands/wire-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,uFAAuF;AACvF,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,WAAW,GAEZ,MAAM,cAAc,CAAC;AAetB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAI9D,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAQ,UAAgC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,wFAAwF;AACxF,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,eAAe,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,mEAAmE;AACnE,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO;QACL,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE;SACjF;KACF,CAAC;AACJ,CAAC;AAMD;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAc;IACtD,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,eAAe,CACb,YAAY,CAAC,IAAI,CAAC,EAClB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACnE,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,GAA4B,CAAC;IACjC,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAA4B,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;QAC/E,MAAM,IAAI,UAAU,CAClB,GAAG,IAAI,8FAA8F,CACtG,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,UAAU,CAClB,GAAG,IAAI,2DAA2D,CACnE,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,UAAU,CAClB,GAAG,IAAI,+DAA+D,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;IAC1D,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1C,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,UAAU,CAClB,GAAG,IAAI,yEAAyE,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,UAAU,IAAI,EAAE,CAA8B,CAAC;IAChE,MAAM,UAAU,GAAG,CAAC,CAA0B,EAAW,EAAE,CACzD,CAAC,IAAI,IAAI;QACT,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,KAAK,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CACnF,CAAC;IACJ,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAgC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC;IACjD,CAAC;IACD,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;IACjC,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;IACxB,eAAe,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACrG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/D,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,oBAAoB,GAAG,0CAA0C,CAAC;AAExE,8EAA8E;AAC9E,kEAAkE;AAClE,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AACxD,+EAA+E;AAC/E,oEAAoE;AACpE,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,UAAU,CAClB,iLAAiL,CAClL,CAAC;IACJ,CAAC;IACD,OAAO;QACL,WAAW;QACX,sBAAsB;QACtB,cAAc,OAAO,GAAG;QACxB,aAAa,oBAAoB,EAAE;QACnC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,IAAY;IACtD,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,UAAU,CAClB,GAAG,IAAI,6JAA6J,CACrK,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,KAAc;IAChD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,aAAa,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;QACzB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,eAAe,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,4EAA4E;IAC5E,+CAA+C;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC;IAC7E,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,8DAA8D;QAC9D,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,eAAe,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC;IACrE,eAAe,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,KAAa,CAAC;IAClB,IAAI,IAAY,CAAC;IACjB,IAAI,MAAqB,CAAC;IAC1B,QAAQ,GAAiB,EAAE,CAAC;QAC1B,KAAK,QAAQ;YACX,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAE,CAAC,KAAK,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YACpD,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM;QACR,KAAK,MAAM;YACT,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAE,CAAC,KAAK,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC7D,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,MAAM;YACT,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAE,CAAC,KAAK,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;YACrD,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM;QACR;YACE,MAAM,IAAI,UAAU,CAClB,sBAAsB,KAAK,CAAC,IAAI,kBAAkB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAC;IACN,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,KAIzB;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CACzD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"wire-hooks.js","sourceRoot":"","sources":["../../src/commands/wire-hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Known-tool catalog for endpoint discovery.
3
+ *
4
+ * The catalog maps a stable short id to display metadata and a default
5
+ * sanction. The defaults are advisory; the hosted console can override them.
6
+ * v1 deliberately has no UNSANCTIONED defaults - unknown tooling defaults to
7
+ * REVIEW so operators can inspect before classifying.
8
+ */
9
+ export type DiscoveryCategory = "cli-agent" | "ide-extension" | "desktop-app" | "model-runtime" | "mcp-server" | "other";
10
+ export type Sanction = "SANCTIONED" | "REVIEW" | "UNSANCTIONED";
11
+ export interface CatalogEntry {
12
+ readonly name: string;
13
+ readonly vendor: string;
14
+ readonly category: DiscoveryCategory;
15
+ readonly defaultSanction: Sanction;
16
+ }
17
+ export interface CatalogEntryWithId extends CatalogEntry {
18
+ readonly id: string;
19
+ readonly binaries: readonly string[];
20
+ readonly appNames: readonly string[];
21
+ readonly extensionMarkers: readonly string[];
22
+ readonly defaultPorts: readonly number[];
23
+ }
24
+ /** Read-only catalog of tools the discovery scanner knows about. */
25
+ export declare function discoveryCatalog(): ReadonlyMap<string, CatalogEntryWithId>;
26
+ export declare function lookupDiscoveryId(id: string): CatalogEntryWithId | undefined;
27
+ /** All binary names across the catalog, useful for PATH scanning. */
28
+ export declare function knownDiscoveryBinaries(): ReadonlySet<string>;
29
+ export declare function knownDiscoveryVendors(): readonly string[];
30
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/discover/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,eAAe,GACf,aAAa,GACb,eAAe,GACf,YAAY,GACZ,OAAO,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;CACpC;AAoID,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAoBD,oEAAoE;AACpE,wBAAgB,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAE5E;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,IAAI,WAAW,CAAC,MAAM,CAAC,CAM5D;AAED,wBAAgB,qBAAqB,IAAI,SAAS,MAAM,EAAE,CAQzD"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Known-tool catalog for endpoint discovery.
3
+ *
4
+ * The catalog maps a stable short id to display metadata and a default
5
+ * sanction. The defaults are advisory; the hosted console can override them.
6
+ * v1 deliberately has no UNSANCTIONED defaults - unknown tooling defaults to
7
+ * REVIEW so operators can inspect before classifying.
8
+ */
9
+ const CATALOG_DEFS = [
10
+ {
11
+ id: "claude",
12
+ name: "Claude Code",
13
+ vendor: "Anthropic",
14
+ category: "cli-agent",
15
+ defaultSanction: "SANCTIONED",
16
+ binaries: ["claude", "claude-code"],
17
+ appNames: ["Claude", "Claude.app"],
18
+ extensionMarkers: ["anthropic", "claude"],
19
+ },
20
+ {
21
+ id: "cursor-agent",
22
+ name: "Cursor",
23
+ vendor: "Cursor Inc",
24
+ category: "cli-agent",
25
+ defaultSanction: "SANCTIONED",
26
+ binaries: ["cursor", "cursor-agent"],
27
+ appNames: ["Cursor", "Cursor.app"],
28
+ extensionMarkers: ["cursor"],
29
+ },
30
+ {
31
+ id: "codex",
32
+ name: "Codex CLI",
33
+ vendor: "OpenAI",
34
+ category: "cli-agent",
35
+ defaultSanction: "SANCTIONED",
36
+ binaries: ["codex"],
37
+ appNames: ["Codex"],
38
+ extensionMarkers: ["codex"],
39
+ },
40
+ {
41
+ id: "gemini",
42
+ name: "Gemini CLI",
43
+ vendor: "Google",
44
+ category: "cli-agent",
45
+ defaultSanction: "SANCTIONED",
46
+ binaries: ["gemini"],
47
+ appNames: ["Gemini"],
48
+ extensionMarkers: ["gemini"],
49
+ },
50
+ {
51
+ id: "opencode",
52
+ name: "OpenCode",
53
+ vendor: "OpenCode",
54
+ category: "cli-agent",
55
+ defaultSanction: "SANCTIONED",
56
+ binaries: ["opencode"],
57
+ appNames: ["OpenCode"],
58
+ extensionMarkers: ["opencode"],
59
+ },
60
+ {
61
+ id: "kyo",
62
+ name: "Kyo",
63
+ vendor: "Kyo",
64
+ category: "cli-agent",
65
+ defaultSanction: "REVIEW",
66
+ binaries: ["kyo"],
67
+ appNames: ["Kyo"],
68
+ extensionMarkers: ["kyo"],
69
+ },
70
+ {
71
+ id: "aider",
72
+ name: "Aider",
73
+ vendor: "Aider",
74
+ category: "cli-agent",
75
+ defaultSanction: "SANCTIONED",
76
+ binaries: ["aider"],
77
+ appNames: ["Aider"],
78
+ extensionMarkers: ["aider"],
79
+ },
80
+ {
81
+ id: "ollama",
82
+ name: "Ollama",
83
+ vendor: "Ollama",
84
+ category: "model-runtime",
85
+ defaultSanction: "SANCTIONED",
86
+ binaries: ["ollama"],
87
+ appNames: ["Ollama"],
88
+ extensionMarkers: ["ollama"],
89
+ defaultPorts: [11434],
90
+ },
91
+ {
92
+ id: "lm-studio",
93
+ name: "LM Studio",
94
+ vendor: "LM Studio",
95
+ category: "model-runtime",
96
+ defaultSanction: "SANCTIONED",
97
+ binaries: ["lmstudio", "lm-studio"],
98
+ appNames: ["LM Studio", "LMStudio"],
99
+ extensionMarkers: ["lmstudio"],
100
+ defaultPorts: [1234],
101
+ },
102
+ {
103
+ id: "llama-server",
104
+ name: "llama.cpp server",
105
+ vendor: "llama.cpp",
106
+ category: "model-runtime",
107
+ defaultSanction: "REVIEW",
108
+ binaries: ["llama-server", "llama-server.exe"],
109
+ appNames: ["llama-server"],
110
+ extensionMarkers: ["llama"],
111
+ },
112
+ {
113
+ id: "mcpserver",
114
+ name: "Generic MCP server",
115
+ vendor: "unknown",
116
+ category: "mcp-server",
117
+ defaultSanction: "REVIEW",
118
+ binaries: ["mcpserver"],
119
+ extensionMarkers: ["mcp"],
120
+ },
121
+ ];
122
+ const ENTRIES = (() => {
123
+ const map = new Map();
124
+ for (const def of CATALOG_DEFS) {
125
+ map.set(def.id, {
126
+ id: def.id,
127
+ name: def.name,
128
+ vendor: def.vendor,
129
+ category: def.category,
130
+ defaultSanction: def.defaultSanction,
131
+ binaries: def.binaries ?? [],
132
+ appNames: def.appNames ?? [],
133
+ extensionMarkers: def.extensionMarkers ?? [],
134
+ defaultPorts: def.defaultPorts ?? [],
135
+ });
136
+ }
137
+ return map;
138
+ })();
139
+ /** Read-only catalog of tools the discovery scanner knows about. */
140
+ export function discoveryCatalog() {
141
+ return ENTRIES;
142
+ }
143
+ export function lookupDiscoveryId(id) {
144
+ return ENTRIES.get(id);
145
+ }
146
+ /** All binary names across the catalog, useful for PATH scanning. */
147
+ export function knownDiscoveryBinaries() {
148
+ const set = new Set();
149
+ for (const entry of ENTRIES.values()) {
150
+ for (const b of entry.binaries)
151
+ set.add(b);
152
+ }
153
+ return set;
154
+ }
155
+ export function knownDiscoveryVendors() {
156
+ const set = new Set();
157
+ for (const entry of ENTRIES.values()) {
158
+ if (entry.vendor && entry.vendor !== "unknown")
159
+ set.add(entry.vendor.toLowerCase());
160
+ set.add(entry.id.toLowerCase());
161
+ for (const m of entry.extensionMarkers)
162
+ set.add(m.toLowerCase());
163
+ }
164
+ return [...set];
165
+ }
166
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/discover/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Hosted sync for discovery snapshots.
3
+ *
4
+ * Pushes the local endpoint inventory to `POST /api/v1/kya/endpoints` on the
5
+ * hosted console. This is fire-and-forget from the scanner's perspective: it
6
+ * returns an outcome object so the CLI can print status, but it never throws.
7
+ */
8
+ import type { DiscoverySnapshot } from "./scan.js";
9
+ export interface PushOptions {
10
+ readonly baseUrl: string;
11
+ readonly apiKey: string;
12
+ readonly fetchFn?: typeof fetch;
13
+ readonly timeoutMs?: number;
14
+ }
15
+ export interface PushResult {
16
+ readonly ok: boolean;
17
+ readonly status: number;
18
+ readonly error?: string;
19
+ }
20
+ export declare function pushDiscoverySnapshot(snapshot: DiscoverySnapshot, opts: PushOptions): Promise<PushResult>;
21
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/discover/push.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,CA2BrB"}