palmier 0.6.2 → 0.6.3

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.
@@ -10,8 +10,10 @@ import { GooseAgent } from "./goose.js";
10
10
  import { OpenCodeAgent } from "./opencode.js";
11
11
  import { DeepAgents } from "./deepagents.js";
12
12
  import { Aider } from "./aider.js";
13
- import { OpenHands } from "./openhands.js";
14
13
  import { Cursor } from "./cursor.js";
14
+ import { Kiro } from "./kiro.js";
15
+ import { Cline } from "./cline.js";
16
+ import { Qoder } from "./qoder.js";
15
17
  const agentRegistry = {
16
18
  claude: new ClaudeAgent(),
17
19
  gemini: new GeminiAgent(),
@@ -25,8 +27,10 @@ const agentRegistry = {
25
27
  opencode: new OpenCodeAgent(),
26
28
  deepagents: new DeepAgents(),
27
29
  aider: new Aider(),
28
- openhands: new OpenHands(),
29
30
  cursor: new Cursor(),
31
+ kiro: new Kiro(),
32
+ cline: new Cline(),
33
+ qoder: new Qoder(),
30
34
  };
31
35
  const agentLabels = {
32
36
  claude: "Claude Code",
@@ -41,8 +45,10 @@ const agentLabels = {
41
45
  opencode: "OpenCode",
42
46
  deepagents: "Deep Agents CLI",
43
47
  aider: "Aider",
44
- openhands: "OpenHands",
45
48
  cursor: "Cursor CLI",
49
+ kiro: "Kiro",
50
+ cline: "Cline",
51
+ qoder: "Qoder",
46
52
  };
47
53
  export async function detectAgents() {
48
54
  const detected = [];
@@ -1,9 +1,9 @@
1
1
  import type { ParsedTask, RequiredPermission } from "../types.js";
2
2
  import type { AgentTool, CommandLine } from "./agent.js";
3
- export declare class OpenHands implements AgentTool {
3
+ export declare class Cline implements AgentTool {
4
4
  supportsPermissions: boolean;
5
5
  getPlanGenerationCommandLine(prompt: string): CommandLine;
6
6
  getTaskRunCommandLine(task: ParsedTask, followupPrompt?: string, extraPermissions?: RequiredPermission[] | "yolo"): CommandLine;
7
7
  init(): Promise<boolean>;
8
8
  }
9
- //# sourceMappingURL=openhands.d.ts.map
9
+ //# sourceMappingURL=cline.d.ts.map
@@ -0,0 +1,32 @@
1
+ import { execSync } from "child_process";
2
+ import { getAgentInstructions } from "./shared-prompt.js";
3
+ import { SHELL } from "../platform/index.js";
4
+ export class Cline {
5
+ supportsPermissions = false;
6
+ getPlanGenerationCommandLine(prompt) {
7
+ return {
8
+ command: "cline ",
9
+ args: ["--yolo", "-p", prompt],
10
+ };
11
+ }
12
+ getTaskRunCommandLine(task, followupPrompt, extraPermissions) {
13
+ const yolo = extraPermissions === "yolo";
14
+ const prompt = followupPrompt ?? (getAgentInstructions(task.frontmatter.id, yolo || !this.supportsPermissions) + "\n\n" + (task.body || task.frontmatter.user_prompt));
15
+ const args = [];
16
+ if (yolo) {
17
+ args.push("--yolo");
18
+ }
19
+ args.push(prompt);
20
+ return { command: "cline ", args };
21
+ }
22
+ async init() {
23
+ try {
24
+ execSync("cline --version", { stdio: "ignore", shell: SHELL });
25
+ }
26
+ catch {
27
+ return false;
28
+ }
29
+ return true;
30
+ }
31
+ }
32
+ //# sourceMappingURL=cline.js.map
@@ -0,0 +1,9 @@
1
+ import type { ParsedTask, RequiredPermission } from "../types.js";
2
+ import type { AgentTool, CommandLine } from "./agent.js";
3
+ export declare class Kiro implements AgentTool {
4
+ supportsPermissions: boolean;
5
+ getPlanGenerationCommandLine(prompt: string): CommandLine;
6
+ getTaskRunCommandLine(task: ParsedTask, followupPrompt?: string, extraPermissions?: RequiredPermission[] | "yolo"): CommandLine;
7
+ init(): Promise<boolean>;
8
+ }
9
+ //# sourceMappingURL=kiro.d.ts.map
@@ -1,30 +1,30 @@
1
1
  import { execSync } from "child_process";
2
2
  import { getAgentInstructions } from "./shared-prompt.js";
3
3
  import { SHELL } from "../platform/index.js";
4
- export class OpenHands {
4
+ export class Kiro {
5
5
  supportsPermissions = false;
6
6
  getPlanGenerationCommandLine(prompt) {
7
7
  return {
8
- command: "openhands",
9
- args: ["--headless", "-t", prompt],
8
+ command: "kiro-cli",
9
+ args: ["--no-interactive", prompt],
10
10
  };
11
11
  }
12
12
  getTaskRunCommandLine(task, followupPrompt, extraPermissions) {
13
13
  const yolo = extraPermissions === "yolo";
14
14
  const prompt = followupPrompt ?? (getAgentInstructions(task.frontmatter.id, yolo || !this.supportsPermissions) + "\n\n" + (task.body || task.frontmatter.user_prompt));
15
- const args = ["--headless"];
15
+ const args = [];
16
16
  if (yolo) {
17
- args.push("--always-approve");
17
+ args.push("--trust-all-tools");
18
18
  }
19
19
  if (followupPrompt) {
20
- args.push("--resume", "--last");
20
+ args.push("--resume");
21
21
  } // continue mode for followups
22
- args.push("-t", prompt);
23
- return { command: "openhands", args };
22
+ args.push("--no-interactive", prompt);
23
+ return { command: "kiro-cli", args };
24
24
  }
25
25
  async init() {
26
26
  try {
27
- execSync("openhands --version", { stdio: "ignore", shell: SHELL });
27
+ execSync("kiro-cli --version", { stdio: "ignore", shell: SHELL });
28
28
  }
29
29
  catch {
30
30
  return false;
@@ -32,4 +32,4 @@ export class OpenHands {
32
32
  return true;
33
33
  }
34
34
  }
35
- //# sourceMappingURL=openhands.js.map
35
+ //# sourceMappingURL=kiro.js.map
@@ -0,0 +1,9 @@
1
+ import type { ParsedTask, RequiredPermission } from "../types.js";
2
+ import type { AgentTool, CommandLine } from "./agent.js";
3
+ export declare class Qoder implements AgentTool {
4
+ supportsPermissions: boolean;
5
+ getPlanGenerationCommandLine(prompt: string): CommandLine;
6
+ getTaskRunCommandLine(task: ParsedTask, followupPrompt?: string, extraPermissions?: RequiredPermission[] | "yolo"): CommandLine;
7
+ init(): Promise<boolean>;
8
+ }
9
+ //# sourceMappingURL=qoder.d.ts.map
@@ -0,0 +1,35 @@
1
+ import { execSync } from "child_process";
2
+ import { getAgentInstructions } from "./shared-prompt.js";
3
+ import { SHELL } from "../platform/index.js";
4
+ export class Qoder {
5
+ supportsPermissions = false;
6
+ getPlanGenerationCommandLine(prompt) {
7
+ return {
8
+ command: "qodercli",
9
+ args: ["-p", prompt],
10
+ };
11
+ }
12
+ getTaskRunCommandLine(task, followupPrompt, extraPermissions) {
13
+ const yolo = extraPermissions === "yolo";
14
+ const prompt = followupPrompt ?? (getAgentInstructions(task.frontmatter.id, yolo || !this.supportsPermissions) + "\n\n" + (task.body || task.frontmatter.user_prompt));
15
+ const args = [];
16
+ if (yolo) {
17
+ args.push("--yolo");
18
+ }
19
+ if (followupPrompt) {
20
+ args.push("-c");
21
+ } // continue mode for followups
22
+ args.push("-p", prompt);
23
+ return { command: "qodercli", args };
24
+ }
25
+ async init() {
26
+ try {
27
+ execSync("qodercli --version", { stdio: "ignore", shell: SHELL });
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ return true;
33
+ }
34
+ }
35
+ //# sourceMappingURL=qoder.js.map
@@ -15,7 +15,7 @@ task_name: <concise label, 3-6 words>
15
15
  - Write a numbered sequence of concrete, actionable steps.
16
16
  - If the task produces formatted output (report, email, summary, etc.), specify the structure, sections, and tone.
17
17
  - When a step requires user input, simply state what information is needed from the user. Do not specify how to obtain it — the agent has its own tool for requesting user input.
18
- - Relative times in the task description (e.g., "yesterday", "last week") refer to execution time, not plan generation time.
18
+ - Relative times in the task description (e.g., "today", "yesterday", "last week") refer to execution time, not plan generation time. Keep them as-is in the plan — do not convert them to specific dates.
19
19
 
20
20
  ## Task Description
21
21
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "palmier",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "Palmier host CLI - provisions, executes tasks, and serves NATS RPC",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Hongxu Cai",
@@ -11,8 +11,10 @@ import { GooseAgent } from "./goose.js";
11
11
  import { OpenCodeAgent } from "./opencode.js";
12
12
  import { DeepAgents } from "./deepagents.js";
13
13
  import { Aider } from "./aider.js";
14
- import { OpenHands } from "./openhands.js";
15
14
  import { Cursor } from "./cursor.js";
15
+ import { Kiro } from "./kiro.js";
16
+ import { Cline } from "./cline.js";
17
+ import { Qoder } from "./qoder.js";
16
18
 
17
19
  export interface CommandLine {
18
20
  command: string;
@@ -59,8 +61,10 @@ const agentRegistry: Record<string, AgentTool> = {
59
61
  opencode: new OpenCodeAgent(),
60
62
  deepagents: new DeepAgents(),
61
63
  aider: new Aider(),
62
- openhands: new OpenHands(),
63
64
  cursor: new Cursor(),
65
+ kiro: new Kiro(),
66
+ cline: new Cline(),
67
+ qoder: new Qoder(),
64
68
  };
65
69
 
66
70
  const agentLabels: Record<string, string> = {
@@ -76,8 +80,10 @@ const agentLabels: Record<string, string> = {
76
80
  opencode: "OpenCode",
77
81
  deepagents: "Deep Agents CLI",
78
82
  aider: "Aider",
79
- openhands: "OpenHands",
80
83
  cursor: "Cursor CLI",
84
+ kiro: "Kiro",
85
+ cline: "Cline",
86
+ qoder: "Qoder",
81
87
  };
82
88
 
83
89
  export interface DetectedAgent {
@@ -4,32 +4,31 @@ import type { AgentTool, CommandLine } from "./agent.js";
4
4
  import { getAgentInstructions } from "./shared-prompt.js";
5
5
  import { SHELL } from "../platform/index.js";
6
6
 
7
- export class OpenHands implements AgentTool {
7
+ export class Cline implements AgentTool {
8
8
  supportsPermissions = false;
9
9
  getPlanGenerationCommandLine(prompt: string): CommandLine {
10
10
  return {
11
- command: "openhands",
12
- args: ["--headless", "-t", prompt],
11
+ command: "cline ",
12
+ args: ["--yolo", "-p", prompt],
13
13
  };
14
14
  }
15
15
 
16
16
  getTaskRunCommandLine(task: ParsedTask, followupPrompt?: string, extraPermissions?: RequiredPermission[] | "yolo"): CommandLine {
17
17
  const yolo = extraPermissions === "yolo";
18
18
  const prompt = followupPrompt ?? (getAgentInstructions(task.frontmatter.id, yolo || !this.supportsPermissions) + "\n\n" + (task.body || task.frontmatter.user_prompt));
19
- const args = ["--headless"];
19
+ const args = [];
20
20
 
21
21
  if (yolo) {
22
- args.push("--always-approve");
22
+ args.push("--yolo");
23
23
  }
24
- if (followupPrompt) {args.push("--resume", "--last");} // continue mode for followups
25
- args.push("-t", prompt);
24
+ args.push(prompt);
26
25
 
27
- return { command: "openhands", args};
26
+ return { command: "cline ", args};
28
27
  }
29
28
 
30
29
  async init(): Promise<boolean> {
31
30
  try {
32
- execSync("openhands --version", { stdio: "ignore", shell: SHELL });
31
+ execSync("cline --version", { stdio: "ignore", shell: SHELL });
33
32
  } catch {
34
33
  return false;
35
34
  }
@@ -0,0 +1,38 @@
1
+ import type { ParsedTask, RequiredPermission } from "../types.js";
2
+ import { execSync } from "child_process";
3
+ import type { AgentTool, CommandLine } from "./agent.js";
4
+ import { getAgentInstructions } from "./shared-prompt.js";
5
+ import { SHELL } from "../platform/index.js";
6
+
7
+ export class Kiro implements AgentTool {
8
+ supportsPermissions = false;
9
+ getPlanGenerationCommandLine(prompt: string): CommandLine {
10
+ return {
11
+ command: "kiro-cli",
12
+ args: ["--no-interactive", prompt],
13
+ };
14
+ }
15
+
16
+ getTaskRunCommandLine(task: ParsedTask, followupPrompt?: string, extraPermissions?: RequiredPermission[] | "yolo"): CommandLine {
17
+ const yolo = extraPermissions === "yolo";
18
+ const prompt = followupPrompt ?? (getAgentInstructions(task.frontmatter.id, yolo || !this.supportsPermissions) + "\n\n" + (task.body || task.frontmatter.user_prompt));
19
+ const args = [];
20
+
21
+ if (yolo) {
22
+ args.push("--trust-all-tools");
23
+ }
24
+ if (followupPrompt) {args.push("--resume");} // continue mode for followups
25
+ args.push("--no-interactive", prompt);
26
+
27
+ return { command: "kiro-cli", args};
28
+ }
29
+
30
+ async init(): Promise<boolean> {
31
+ try {
32
+ execSync("kiro-cli --version", { stdio: "ignore", shell: SHELL });
33
+ } catch {
34
+ return false;
35
+ }
36
+ return true;
37
+ }
38
+ }
@@ -0,0 +1,38 @@
1
+ import type { ParsedTask, RequiredPermission } from "../types.js";
2
+ import { execSync } from "child_process";
3
+ import type { AgentTool, CommandLine } from "./agent.js";
4
+ import { getAgentInstructions } from "./shared-prompt.js";
5
+ import { SHELL } from "../platform/index.js";
6
+
7
+ export class Qoder implements AgentTool {
8
+ supportsPermissions = false;
9
+ getPlanGenerationCommandLine(prompt: string): CommandLine {
10
+ return {
11
+ command: "qodercli",
12
+ args: ["-p", prompt],
13
+ };
14
+ }
15
+
16
+ getTaskRunCommandLine(task: ParsedTask, followupPrompt?: string, extraPermissions?: RequiredPermission[] | "yolo"): CommandLine {
17
+ const yolo = extraPermissions === "yolo";
18
+ const prompt = followupPrompt ?? (getAgentInstructions(task.frontmatter.id, yolo || !this.supportsPermissions) + "\n\n" + (task.body || task.frontmatter.user_prompt));
19
+ const args = [];
20
+
21
+ if (yolo) {
22
+ args.push("--yolo");
23
+ }
24
+ if (followupPrompt) {args.push("-c");} // continue mode for followups
25
+ args.push("-p", prompt);
26
+
27
+ return { command: "qodercli", args};
28
+ }
29
+
30
+ async init(): Promise<boolean> {
31
+ try {
32
+ execSync("qodercli --version", { stdio: "ignore", shell: SHELL });
33
+ } catch {
34
+ return false;
35
+ }
36
+ return true;
37
+ }
38
+ }
@@ -15,7 +15,7 @@ task_name: <concise label, 3-6 words>
15
15
  - Write a numbered sequence of concrete, actionable steps.
16
16
  - If the task produces formatted output (report, email, summary, etc.), specify the structure, sections, and tone.
17
17
  - When a step requires user input, simply state what information is needed from the user. Do not specify how to obtain it — the agent has its own tool for requesting user input.
18
- - Relative times in the task description (e.g., "yesterday", "last week") refer to execution time, not plan generation time.
18
+ - Relative times in the task description (e.g., "today", "yesterday", "last week") refer to execution time, not plan generation time. Keep them as-is in the plan — do not convert them to specific dates.
19
19
 
20
20
  ## Task Description
21
21