kimi-plugin-cc 2.3.1 → 2.4.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 (61) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +5 -3
  3. package/.mcp.json +13 -0
  4. package/CHANGELOG.md +10 -0
  5. package/README.md +57 -5
  6. package/dist/cli-client.js +11 -1
  7. package/dist/commands/ask.js +4 -2
  8. package/dist/commands/cancel.js +43 -4
  9. package/dist/commands/pursue.js +3 -2
  10. package/dist/commands/rescue.js +3 -2
  11. package/dist/commands/review-gate.js +2 -4
  12. package/dist/commands/review.js +4 -2
  13. package/dist/commands/swarm.js +4 -3
  14. package/dist/companion.js +13 -40
  15. package/dist/help.js +2 -0
  16. package/dist/job-id.js +12 -0
  17. package/dist/job-store.js +59 -0
  18. package/dist/jobs.js +9 -1
  19. package/dist/mcp/binding.js +58 -0
  20. package/dist/mcp/job-control.js +345 -0
  21. package/dist/mcp/launcher.js +257 -0
  22. package/dist/mcp/operations.js +301 -0
  23. package/dist/mcp/protocol.js +275 -0
  24. package/dist/mcp/server.js +8 -0
  25. package/dist/mcp/stdio.js +78 -0
  26. package/dist/mcp/supervised-child.js +15 -0
  27. package/dist/mcp/tool-result.js +7 -0
  28. package/dist/mcp/workspace.js +34 -0
  29. package/dist/model-command.js +32 -0
  30. package/dist/version.js +1 -1
  31. package/docs/migration.md +2 -2
  32. package/docs/registry-releases.md +6 -8
  33. package/docs/safety.md +16 -2
  34. package/package.json +7 -3
  35. package/plugins/kimi-codex/.codex-plugin/plugin.json +7 -4
  36. package/plugins/kimi-codex/.mcp.json +28 -0
  37. package/plugins/kimi-codex/dist/cli-client.js +11 -1
  38. package/plugins/kimi-codex/dist/commands/ask.js +4 -2
  39. package/plugins/kimi-codex/dist/commands/cancel.js +43 -4
  40. package/plugins/kimi-codex/dist/commands/pursue.js +3 -2
  41. package/plugins/kimi-codex/dist/commands/rescue.js +3 -2
  42. package/plugins/kimi-codex/dist/commands/review-gate.js +2 -4
  43. package/plugins/kimi-codex/dist/commands/review.js +4 -2
  44. package/plugins/kimi-codex/dist/commands/swarm.js +4 -3
  45. package/plugins/kimi-codex/dist/companion.js +13 -40
  46. package/plugins/kimi-codex/dist/help.js +2 -0
  47. package/plugins/kimi-codex/dist/job-id.js +12 -0
  48. package/plugins/kimi-codex/dist/job-store.js +59 -0
  49. package/plugins/kimi-codex/dist/jobs.js +9 -1
  50. package/plugins/kimi-codex/dist/mcp/binding.js +58 -0
  51. package/plugins/kimi-codex/dist/mcp/job-control.js +345 -0
  52. package/plugins/kimi-codex/dist/mcp/launcher.js +257 -0
  53. package/plugins/kimi-codex/dist/mcp/operations.js +301 -0
  54. package/plugins/kimi-codex/dist/mcp/protocol.js +275 -0
  55. package/plugins/kimi-codex/dist/mcp/server.js +8 -0
  56. package/plugins/kimi-codex/dist/mcp/stdio.js +78 -0
  57. package/plugins/kimi-codex/dist/mcp/supervised-child.js +15 -0
  58. package/plugins/kimi-codex/dist/mcp/tool-result.js +7 -0
  59. package/plugins/kimi-codex/dist/mcp/workspace.js +34 -0
  60. package/plugins/kimi-codex/dist/model-command.js +32 -0
  61. package/plugins/kimi-codex/dist/version.js +1 -1
@@ -0,0 +1,7 @@
1
+ export function textResult(text, structuredContent, isError = false) {
2
+ return {
3
+ content: [{ type: "text", text }],
4
+ ...(structuredContent ? { structuredContent } : {}),
5
+ isError,
6
+ };
7
+ }
@@ -0,0 +1,34 @@
1
+ import { realpath, stat } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { RuntimeError } from "../errors.js";
4
+ import { resolveRepoIdentity } from "../git.js";
5
+ export async function resolveMcpWorkspace(env, requested) {
6
+ const defaultCandidate = env.KIMI_PLUGIN_CC_MCP_WORKSPACE;
7
+ const candidate = requested ?? defaultCandidate;
8
+ if (!candidate) {
9
+ throw new RuntimeError("MCP_WORKSPACE_REQUIRED", "This MCP server has no default workspace. Supply the absolute workspace directory explicitly; Codex calls normally require it.", "mcp.workspace");
10
+ }
11
+ const cwd = await canonicalDirectory(candidate, "workspace");
12
+ if (defaultCandidate) {
13
+ const defaultCwd = await canonicalDirectory(defaultCandidate, "host workspace");
14
+ const relative = path.relative(defaultCwd, cwd);
15
+ if (relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) {
16
+ throw new RuntimeError("MCP_WORKSPACE_OUTSIDE_DEFAULT", `workspace must be the host workspace or one of its descendants, not ${cwd} (host: ${defaultCwd}).`, "mcp.workspace");
17
+ }
18
+ }
19
+ return { cwd, repo: await resolveRepoIdentity(cwd) };
20
+ }
21
+ async function canonicalDirectory(candidate, label) {
22
+ if (!path.isAbsolute(candidate)) {
23
+ throw new RuntimeError("MCP_WORKSPACE_NOT_ABSOLUTE", `${label} must be an absolute existing directory.`, "mcp.workspace");
24
+ }
25
+ try {
26
+ const cwd = await realpath(candidate);
27
+ if (!(await stat(cwd)).isDirectory())
28
+ throw new Error("not a directory");
29
+ return cwd;
30
+ }
31
+ catch (error) {
32
+ throw new RuntimeError("MCP_WORKSPACE_INVALID", `${label} is not an accessible existing directory: ${candidate}`, "mcp.workspace", error instanceof Error ? { cause: error } : undefined);
33
+ }
34
+ }
@@ -0,0 +1,32 @@
1
+ import { runAsk } from "./commands/ask.js";
2
+ import { notImplementedCompanionCommand } from "./commands/not-implemented.js";
3
+ import { runPursue } from "./commands/pursue.js";
4
+ import { runRescue } from "./commands/rescue.js";
5
+ import { runReview } from "./commands/review.js";
6
+ import { runSwarm } from "./commands/swarm.js";
7
+ export async function runModelCommand(argv, context) {
8
+ const [command, ...rest] = argv;
9
+ switch (command) {
10
+ case "review":
11
+ return `${await runReview(rest, context, "review")}\n`;
12
+ case "ask":
13
+ return `${await runAsk(rest, context)}\n`;
14
+ case "task": {
15
+ const [taskType, ...taskArgs] = rest;
16
+ switch (taskType) {
17
+ case "rescue":
18
+ return runRescue(taskArgs, context);
19
+ case "challenge":
20
+ return `${await runReview(taskArgs, context, "challenge")}\n`;
21
+ case "pursue":
22
+ return runPursue(taskArgs, context);
23
+ case "swarm":
24
+ return runSwarm(taskArgs, context);
25
+ default:
26
+ notImplementedCompanionCommand(taskType ? `task ${taskType}` : "task");
27
+ }
28
+ }
29
+ default:
30
+ return undefined;
31
+ }
32
+ }
@@ -4,4 +4,4 @@
4
4
  // and AGENTS.md on every release. A future improvement would read this from
5
5
  // package.json at build time, but that adds a build-step dependency we
6
6
  // don't want yet.
7
- export const KIMI_PLUGIN_CC_VERSION = "2.3.1";
7
+ export const KIMI_PLUGIN_CC_VERSION = "2.4.0";