herdctl 0.0.1 → 0.0.2

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 (70) hide show
  1. package/bin/herdctl.js +9 -0
  2. package/dist/commands/__tests__/config.test.d.ts +2 -0
  3. package/dist/commands/__tests__/config.test.d.ts.map +1 -0
  4. package/dist/commands/__tests__/config.test.js +299 -0
  5. package/dist/commands/__tests__/config.test.js.map +1 -0
  6. package/dist/commands/__tests__/init.test.d.ts +2 -0
  7. package/dist/commands/__tests__/init.test.d.ts.map +1 -0
  8. package/dist/commands/__tests__/init.test.js +247 -0
  9. package/dist/commands/__tests__/init.test.js.map +1 -0
  10. package/dist/commands/__tests__/start.test.d.ts +2 -0
  11. package/dist/commands/__tests__/start.test.d.ts.map +1 -0
  12. package/dist/commands/__tests__/start.test.js +185 -0
  13. package/dist/commands/__tests__/start.test.js.map +1 -0
  14. package/dist/commands/__tests__/status.test.d.ts +2 -0
  15. package/dist/commands/__tests__/status.test.d.ts.map +1 -0
  16. package/dist/commands/__tests__/status.test.js +342 -0
  17. package/dist/commands/__tests__/status.test.js.map +1 -0
  18. package/dist/commands/__tests__/stop.test.d.ts +2 -0
  19. package/dist/commands/__tests__/stop.test.d.ts.map +1 -0
  20. package/dist/commands/__tests__/stop.test.js +229 -0
  21. package/dist/commands/__tests__/stop.test.js.map +1 -0
  22. package/dist/commands/__tests__/trigger.test.d.ts +2 -0
  23. package/dist/commands/__tests__/trigger.test.d.ts.map +1 -0
  24. package/dist/commands/__tests__/trigger.test.js +321 -0
  25. package/dist/commands/__tests__/trigger.test.js.map +1 -0
  26. package/dist/commands/cancel.d.ts +20 -0
  27. package/dist/commands/cancel.d.ts.map +1 -0
  28. package/dist/commands/cancel.js +263 -0
  29. package/dist/commands/cancel.js.map +1 -0
  30. package/dist/commands/config.d.ts +26 -0
  31. package/dist/commands/config.d.ts.map +1 -0
  32. package/dist/commands/config.js +287 -0
  33. package/dist/commands/config.js.map +1 -0
  34. package/dist/commands/init.d.ts +16 -0
  35. package/dist/commands/init.d.ts.map +1 -0
  36. package/dist/commands/init.js +305 -0
  37. package/dist/commands/init.js.map +1 -0
  38. package/dist/commands/job.d.ts +19 -0
  39. package/dist/commands/job.d.ts.map +1 -0
  40. package/dist/commands/job.js +460 -0
  41. package/dist/commands/job.js.map +1 -0
  42. package/dist/commands/jobs.d.ts +23 -0
  43. package/dist/commands/jobs.d.ts.map +1 -0
  44. package/dist/commands/jobs.js +328 -0
  45. package/dist/commands/jobs.js.map +1 -0
  46. package/dist/commands/logs.d.ts +25 -0
  47. package/dist/commands/logs.d.ts.map +1 -0
  48. package/dist/commands/logs.js +360 -0
  49. package/dist/commands/logs.js.map +1 -0
  50. package/dist/commands/start.d.ts +17 -0
  51. package/dist/commands/start.d.ts.map +1 -0
  52. package/dist/commands/start.js +166 -0
  53. package/dist/commands/start.js.map +1 -0
  54. package/dist/commands/status.d.ts +18 -0
  55. package/dist/commands/status.d.ts.map +1 -0
  56. package/dist/commands/status.js +373 -0
  57. package/dist/commands/status.js.map +1 -0
  58. package/dist/commands/stop.d.ts +18 -0
  59. package/dist/commands/stop.d.ts.map +1 -0
  60. package/dist/commands/stop.js +161 -0
  61. package/dist/commands/stop.js.map +1 -0
  62. package/dist/commands/trigger.d.ts +23 -0
  63. package/dist/commands/trigger.d.ts.map +1 -0
  64. package/dist/commands/trigger.js +332 -0
  65. package/dist/commands/trigger.js.map +1 -0
  66. package/dist/index.d.ts +23 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +283 -0
  69. package/dist/index.js.map +1 -0
  70. package/package.json +46 -7
@@ -0,0 +1,305 @@
1
+ /**
2
+ * herdctl init - Initialize a new herdctl project
3
+ *
4
+ * Scaffolds a new project with:
5
+ * - herdctl.yaml configuration file
6
+ * - agents/ directory with example agent
7
+ * - .herdctl/ state directory
8
+ */
9
+ import * as fs from "node:fs";
10
+ import * as path from "node:path";
11
+ import { input, confirm, select } from "@inquirer/prompts";
12
+ const TEMPLATES = {
13
+ simple: {
14
+ name: "simple",
15
+ description: "A basic fleet with one agent that runs on a schedule",
16
+ fleetConfig: `# herdctl fleet configuration
17
+ #
18
+ # This file defines your agent fleet.
19
+ # Run \`herdctl start\` to start all agents.
20
+
21
+ version: 1
22
+
23
+ fleet:
24
+ name: {{FLEET_NAME}}
25
+ description: {{FLEET_DESCRIPTION}}
26
+
27
+ defaults:
28
+ model: claude-sonnet-4-20250514
29
+ max_turns: 50
30
+ permission_mode: default
31
+
32
+ agents:
33
+ - path: ./agents/example-agent.yaml
34
+ `,
35
+ agentConfig: `# Example agent configuration
36
+ #
37
+ # This agent runs on a schedule and can be customized
38
+ # to perform various tasks.
39
+
40
+ name: example-agent
41
+ description: An example agent
42
+
43
+ # System prompt defines the agent's behavior
44
+ system_prompt: |
45
+ You are a helpful assistant. When triggered,
46
+ analyze the task and provide a useful response.
47
+
48
+ # Workspace - where the agent operates
49
+ workspace:
50
+ path: ./workspace
51
+
52
+ # Schedules - when the agent runs
53
+ schedules:
54
+ heartbeat:
55
+ type: interval
56
+ interval: 5m
57
+ prompt: |
58
+ Report the current status and any pending tasks.
59
+ Keep your response brief.
60
+
61
+ # Permissions - what the agent can do
62
+ permissions:
63
+ allowed_tools:
64
+ - Read
65
+ - Glob
66
+ - Grep
67
+ - Edit
68
+ - Write
69
+ `,
70
+ agentFilename: "example-agent.yaml",
71
+ },
72
+ quickstart: {
73
+ name: "quickstart",
74
+ description: "Minimal setup - a single agent that says hello",
75
+ fleetConfig: `# herdctl fleet configuration
76
+ #
77
+ # Minimal configuration to get started quickly.
78
+
79
+ version: 1
80
+
81
+ fleet:
82
+ name: {{FLEET_NAME}}
83
+
84
+ agents:
85
+ - path: ./agents/hello-agent.yaml
86
+ `,
87
+ agentConfig: `# Hello Agent
88
+ #
89
+ # A simple agent that demonstrates basic scheduling.
90
+
91
+ name: hello-agent
92
+ description: A simple agent that says hello
93
+
94
+ schedules:
95
+ greet:
96
+ type: interval
97
+ interval: 30s
98
+ prompt: |
99
+ Say hello and report the current date and time.
100
+ Keep your response brief (1-2 sentences).
101
+ `,
102
+ agentFilename: "hello-agent.yaml",
103
+ },
104
+ github: {
105
+ name: "github",
106
+ description: "Agent that processes GitHub issues with 'ready' label",
107
+ fleetConfig: `# herdctl fleet configuration
108
+ #
109
+ # Fleet configured to process GitHub issues.
110
+
111
+ version: 1
112
+
113
+ fleet:
114
+ name: {{FLEET_NAME}}
115
+ description: {{FLEET_DESCRIPTION}}
116
+
117
+ defaults:
118
+ model: claude-sonnet-4-20250514
119
+ max_turns: 100
120
+ permission_mode: acceptEdits
121
+
122
+ agents:
123
+ - path: ./agents/github-agent.yaml
124
+ `,
125
+ agentConfig: `# GitHub Issue Agent
126
+ #
127
+ # Processes issues labeled 'ready' from a GitHub repository.
128
+ # Set GITHUB_TOKEN environment variable for authentication.
129
+
130
+ name: github-agent
131
+ description: Processes GitHub issues
132
+
133
+ system_prompt: |
134
+ You are a developer assistant. When given an issue to work on,
135
+ analyze the requirements and implement the requested changes.
136
+ Follow best practices and write clean, tested code.
137
+
138
+ workspace:
139
+ path: ./workspace
140
+
141
+ schedules:
142
+ process-issues:
143
+ type: interval
144
+ interval: 5m
145
+ work_source:
146
+ type: github_issues
147
+ repo: your-org/your-repo # TODO: Update this
148
+ labels:
149
+ include: ["ready"]
150
+ exclude: ["blocked", "wip"]
151
+ claim_label: in-progress
152
+ complete_action: close
153
+
154
+ permissions:
155
+ allowed_tools:
156
+ - Read
157
+ - Glob
158
+ - Grep
159
+ - Edit
160
+ - Write
161
+ - Bash(git *)
162
+ - Bash(npm *)
163
+ - Bash(pnpm *)
164
+ `,
165
+ agentFilename: "github-agent.yaml",
166
+ },
167
+ };
168
+ const DEFAULT_TEMPLATE = "simple";
169
+ export async function initCommand(options) {
170
+ const cwd = process.cwd();
171
+ const configPath = path.join(cwd, "herdctl.yaml");
172
+ const agentsDir = path.join(cwd, "agents");
173
+ const stateDir = path.join(cwd, ".herdctl");
174
+ const gitignorePath = path.join(cwd, ".gitignore");
175
+ // Check if config already exists
176
+ if (fs.existsSync(configPath) && !options.force) {
177
+ console.error("Error: herdctl.yaml already exists. Use --force to overwrite.");
178
+ process.exit(1);
179
+ }
180
+ // Determine the template to use
181
+ let templateName = options.example || DEFAULT_TEMPLATE;
182
+ if (options.example && !TEMPLATES[options.example]) {
183
+ console.error(`Error: Unknown example template '${options.example}'.`);
184
+ console.error(`Available templates: ${Object.keys(TEMPLATES).join(", ")}`);
185
+ process.exit(1);
186
+ }
187
+ // Interactive mode if not --yes and missing required info
188
+ let fleetName = options.name;
189
+ let fleetDescription = "";
190
+ if (!options.yes) {
191
+ // Ask for fleet name if not provided
192
+ if (!fleetName) {
193
+ fleetName = await input({
194
+ message: "Fleet name:",
195
+ default: path.basename(cwd),
196
+ validate: (value) => {
197
+ if (!value.trim())
198
+ return "Fleet name is required";
199
+ if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(value)) {
200
+ return "Fleet name must start with a letter and contain only letters, numbers, hyphens, and underscores";
201
+ }
202
+ return true;
203
+ },
204
+ });
205
+ }
206
+ // Ask for description
207
+ fleetDescription = await input({
208
+ message: "Fleet description (optional):",
209
+ default: "",
210
+ });
211
+ // Ask for template if not specified
212
+ if (!options.example) {
213
+ templateName = await select({
214
+ message: "Choose a template:",
215
+ choices: Object.entries(TEMPLATES).map(([key, template]) => ({
216
+ name: `${template.name} - ${template.description}`,
217
+ value: key,
218
+ })),
219
+ default: DEFAULT_TEMPLATE,
220
+ });
221
+ }
222
+ // Confirm before proceeding
223
+ console.log("");
224
+ console.log("Will create:");
225
+ console.log(` - herdctl.yaml (${templateName} template)`);
226
+ console.log(` - agents/ directory with example agent`);
227
+ console.log(` - .herdctl/ state directory`);
228
+ console.log("");
229
+ const proceed = await confirm({
230
+ message: "Proceed?",
231
+ default: true,
232
+ });
233
+ if (!proceed) {
234
+ console.log("Aborted.");
235
+ process.exit(0);
236
+ }
237
+ }
238
+ else {
239
+ // In --yes mode, use defaults
240
+ fleetName = fleetName || path.basename(cwd);
241
+ }
242
+ const template = TEMPLATES[templateName];
243
+ // Create agents directory
244
+ if (!fs.existsSync(agentsDir)) {
245
+ fs.mkdirSync(agentsDir, { recursive: true });
246
+ }
247
+ // Create .herdctl directory
248
+ if (!fs.existsSync(stateDir)) {
249
+ fs.mkdirSync(stateDir, { recursive: true });
250
+ }
251
+ // Generate fleet config from template
252
+ const fleetConfig = template.fleetConfig
253
+ .replace(/\{\{FLEET_NAME\}\}/g, fleetName)
254
+ .replace(/\{\{FLEET_DESCRIPTION\}\}/g, fleetDescription || `A herdctl fleet`);
255
+ // Write fleet config
256
+ fs.writeFileSync(configPath, fleetConfig, "utf-8");
257
+ // Write agent config
258
+ const agentPath = path.join(agentsDir, template.agentFilename);
259
+ if (!fs.existsSync(agentPath) || options.force) {
260
+ fs.writeFileSync(agentPath, template.agentConfig, "utf-8");
261
+ }
262
+ // Update .gitignore if it exists
263
+ if (fs.existsSync(gitignorePath)) {
264
+ const gitignoreContent = fs.readFileSync(gitignorePath, "utf-8");
265
+ const linesToAdd = [];
266
+ if (!gitignoreContent.includes(".herdctl/")) {
267
+ linesToAdd.push(".herdctl/");
268
+ }
269
+ if (linesToAdd.length > 0) {
270
+ const newContent = gitignoreContent.trimEnd() +
271
+ "\n\n# herdctl state directory\n" +
272
+ linesToAdd.join("\n") +
273
+ "\n";
274
+ fs.writeFileSync(gitignorePath, newContent, "utf-8");
275
+ }
276
+ }
277
+ // Print success message and next steps
278
+ console.log("");
279
+ console.log("✓ Initialized herdctl project");
280
+ console.log("");
281
+ console.log("Created:");
282
+ console.log(` herdctl.yaml`);
283
+ console.log(` agents/${template.agentFilename}`);
284
+ console.log(` .herdctl/`);
285
+ console.log("");
286
+ console.log("Next steps:");
287
+ console.log("");
288
+ console.log(" 1. Review and customize your configuration:");
289
+ console.log(" - herdctl.yaml (fleet settings)");
290
+ console.log(` - agents/${template.agentFilename} (agent definition)`);
291
+ console.log("");
292
+ console.log(" 2. Start your fleet:");
293
+ console.log(" $ herdctl start");
294
+ console.log("");
295
+ console.log(" 3. Check status:");
296
+ console.log(" $ herdctl status");
297
+ console.log("");
298
+ if (templateName === "github") {
299
+ console.log(" Note: Update the 'repo' field in your agent config");
300
+ console.log(" and set the GITHUB_TOKEN environment variable.");
301
+ console.log("");
302
+ }
303
+ console.log("Documentation: https://herdctl.dev");
304
+ }
305
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * herdctl job - Show job details and logs
3
+ *
4
+ * Commands:
5
+ * - herdctl job <id> Show job details
6
+ * - herdctl job <id> --logs Show job output
7
+ * - herdctl job <id> --json JSON output
8
+ */
9
+ export interface JobOptions {
10
+ logs?: boolean;
11
+ json?: boolean;
12
+ state?: string;
13
+ config?: string;
14
+ }
15
+ /**
16
+ * Show job details (herdctl job)
17
+ */
18
+ export declare function jobCommand(jobId: string, options: JobOptions): Promise<void>;
19
+ //# sourceMappingURL=job.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../src/commands/job.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoSD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CA2Of"}