herdctl 1.4.0 → 1.4.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.
- package/README.md +110 -68
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +2 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/utils/banner.d.ts +11 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +47 -0
- package/dist/utils/banner.js.map +1 -0
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,104 +1,146 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/edspencer/herdctl/main/docs/public/herdctl-logo.svg" alt="herdctl" width="120" />
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
>
|
|
5
|
+
<h1 align="center">herdctl</h1>
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>Let Claude Code invoke itself.</strong><br/>
|
|
9
|
+
Run agents on schedules, chat with them on Discord, and resume any session in your terminal.
|
|
10
|
+
</p>
|
|
7
11
|
|
|
8
|
-
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/herdctl"><img src="https://img.shields.io/npm/v/herdctl.svg" alt="npm version"></a>
|
|
14
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a>
|
|
15
|
+
<a href="https://github.com/edspencer/herdctl/actions"><img src="https://github.com/edspencer/herdctl/workflows/CI/badge.svg" alt="CI Status"></a>
|
|
16
|
+
</p>
|
|
9
17
|
|
|
10
|
-
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="https://herdctl.dev">Documentation</a> •
|
|
20
|
+
<a href="https://herdctl.dev/getting-started/">Getting Started</a> •
|
|
21
|
+
<a href="https://discord.gg/d2eXZKtNrh">Discord</a> •
|
|
22
|
+
<a href="https://github.com/edspencer/herdctl/issues">Issues</a>
|
|
23
|
+
</p>
|
|
11
24
|
|
|
12
|
-
|
|
25
|
+
---
|
|
13
26
|
|
|
14
|
-
|
|
27
|
+
<p align="center">
|
|
28
|
+
<img src="https://raw.githubusercontent.com/edspencer/herdctl/main/docs/public/demo/herdctl-demo.gif" alt="herdctl demo — fleet startup and web dashboard" width="720">
|
|
29
|
+
</p>
|
|
15
30
|
|
|
16
|
-
##
|
|
31
|
+
## The Vision
|
|
17
32
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
33
|
+
Claude Code has changed the world, but most of the work it does is supervised by a human. What if Claude Code could invoke itself?
|
|
34
|
+
|
|
35
|
+
**herdctl** is an orchestration layer for Claude Code. Under the hood, it uses the Claude Agents SDK to trigger Claude Code sessions on schedules, via webhooks, or via chat messages.
|
|
36
|
+
|
|
37
|
+
It uses simple .yml files that are a thin wrapper around Claude Agents SDK configs, plus a couple of extra features provided by herdctl - `schedules`, `chat` and `hooks`. Each Agent defined this way can have any number of **schedules** that trigger the agent to do something automatically.
|
|
38
|
+
|
|
39
|
+
herdctl can run **fleets of agents**, each with their own source-controllable configurations. Agent fleets can be run anywhere via a simple `herdctl start` command.
|
|
40
|
+
|
|
41
|
+
herdctl allows you to interact with all of your existing Claude Code projects via **chat apps like Discord and Slack** (Telegram support coming soon).
|
|
42
|
+
|
|
43
|
+
## Key Features
|
|
44
|
+
|
|
45
|
+
- **Self-Invoking Agents** — Define agents that wake themselves up on schedules or triggers. Coordinate an entire fleet from a single `herdctl start` command.
|
|
46
|
+
|
|
47
|
+
- **Fleet Composition** — Build "super-fleets" from multiple project fleets. Each project keeps its own agent configurations, but they all run together with a unified web dashboard and CLI.
|
|
48
|
+
|
|
49
|
+
- **Full Claude Code Power** — If Claude Code can do it, your herdctl agent can do it. Same tools, same MCP servers, same capabilities. herdctl is a thin orchestration layer, not a sandbox.
|
|
50
|
+
|
|
51
|
+
- **Two Runtimes** — CLI runtime uses your Claude Max subscription (much cheaper per token). SDK runtime uses API pricing. Both support Docker isolation with resource limits and network controls.
|
|
52
|
+
|
|
53
|
+
- **Chat From Anywhere** — Connect agents to Discord or Slack. Message your agents from your phone, get responses, and they continue working based on your conversation. Your PR reviewer bot becomes a team member you can @ mention.
|
|
54
|
+
|
|
55
|
+
- **Session Continuity** — Every job creates a real Claude SDK session. When an agent finishes, you can `claude --resume` that exact session in your terminal. Pick up where the agent left off with full context intact.
|
|
56
|
+
|
|
57
|
+
- **Bidirectional Communication** — Agents write structured data back to herdctl via metadata files. Hooks act on that data. Coming soon: agents that request schedule changes, store persistent context, and evolve their own behavior over time.
|
|
58
|
+
|
|
59
|
+
## Intro Video
|
|
60
|
+
|
|
61
|
+
In which we try to cover all of the main parts of herdctl in 20 minutes:
|
|
62
|
+
|
|
63
|
+
<div align="center">
|
|
64
|
+
<a href="https://www.youtube.com/watch?v=b3MRrpHLu8M">
|
|
65
|
+
<img src="https://img.youtube.com/vi/b3MRrpHLu8M/maxresdefault.jpg" alt="herdctl demo" width="600">
|
|
66
|
+
</a>
|
|
67
|
+
<p><em>Watch the demo</em></p>
|
|
68
|
+
</div>
|
|
21
69
|
|
|
22
70
|
## Quick Start
|
|
23
71
|
|
|
24
72
|
```bash
|
|
25
|
-
#
|
|
73
|
+
# Install herdctl globally
|
|
74
|
+
npm install -g herdctl
|
|
75
|
+
|
|
76
|
+
# Initialize a new project with example agents
|
|
26
77
|
herdctl init
|
|
27
78
|
|
|
28
79
|
# Start your agent fleet
|
|
29
80
|
herdctl start
|
|
81
|
+
```
|
|
30
82
|
|
|
31
|
-
|
|
32
|
-
herdctl status
|
|
33
|
-
|
|
34
|
-
# Manually trigger an agent
|
|
35
|
-
herdctl trigger my-agent
|
|
36
|
-
|
|
37
|
-
# List agent sessions
|
|
38
|
-
herdctl sessions
|
|
83
|
+
Your agents are now running. Check their status:
|
|
39
84
|
|
|
40
|
-
|
|
41
|
-
herdctl
|
|
85
|
+
```bash
|
|
86
|
+
herdctl status
|
|
42
87
|
```
|
|
43
88
|
|
|
44
|
-
##
|
|
45
|
-
|
|
46
|
-
Create a `herdctl.yaml` in your project root:
|
|
89
|
+
## Web Dashboard
|
|
47
90
|
|
|
48
|
-
|
|
49
|
-
fleet
|
|
50
|
-
|
|
91
|
+
<div align="center">
|
|
92
|
+
<img src="https://raw.githubusercontent.com/edspencer/herdctl/main/docs/src/assets/screenshots/fleet-overview.png" alt="herdctl web dashboard" width="800">
|
|
93
|
+
<p><em>Fleet overview showing agents, status, and recent jobs</em></p>
|
|
94
|
+
</div>
|
|
51
95
|
|
|
52
|
-
|
|
53
|
-
- path: ./agents/my-agent.yaml
|
|
54
|
-
```
|
|
96
|
+
The web dashboard gives you a browser-based control panel for your fleet. Enable it with `herdctl start --web` or `web.enabled: true` in your config.
|
|
55
97
|
|
|
56
|
-
|
|
98
|
+
- **Fleet overview** — real-time status of all agents and recent jobs
|
|
99
|
+
- **Agent detail** — live output streaming, schedule controls, job history
|
|
100
|
+
- **Interactive chat** — message any agent directly from the browser
|
|
101
|
+
- **Schedule management** — trigger, enable, and disable schedules
|
|
102
|
+
- **Job management** — cancel, fork, and inspect jobs
|
|
57
103
|
|
|
58
|
-
|
|
59
|
-
name: my-agent
|
|
60
|
-
model: claude-sonnet-4-20250514
|
|
104
|
+
See the [web dashboard documentation](https://herdctl.dev/integrations/web-dashboard/) for full details.
|
|
61
105
|
|
|
62
|
-
|
|
63
|
-
daily-review:
|
|
64
|
-
type: cron
|
|
65
|
-
cron: "0 9 * * *"
|
|
66
|
-
prompt: "Review open PRs and provide feedback"
|
|
106
|
+
## Packages
|
|
67
107
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
108
|
+
| Package | Description |
|
|
109
|
+
|---------|-------------|
|
|
110
|
+
| [`herdctl`](https://www.npmjs.com/package/herdctl) | CLI for fleet management. Install globally, run `herdctl start`. |
|
|
111
|
+
| [`@herdctl/core`](https://www.npmjs.com/package/@herdctl/core) | Core library. Embed fleet management in your own applications. |
|
|
112
|
+
| [`@herdctl/web`](https://www.npmjs.com/package/@herdctl/web) | Web dashboard. Real-time fleet monitoring, agent chat, and job management in your browser. |
|
|
113
|
+
| [`@herdctl/discord`](https://www.npmjs.com/package/@herdctl/discord) | Discord connector. Chat with your agents via Discord DMs and channels. |
|
|
114
|
+
| [`@herdctl/slack`](https://www.npmjs.com/package/@herdctl/slack) | Slack connector. Chat with your agents via Slack channels and DMs. |
|
|
115
|
+
| [`@herdctl/chat`](https://www.npmjs.com/package/@herdctl/chat) | Shared chat infrastructure. Session management, streaming, and message handling used by all connectors. |
|
|
74
116
|
|
|
75
|
-
##
|
|
117
|
+
## Documentation
|
|
76
118
|
|
|
77
|
-
|
|
78
|
-
- **Declarative Config** - Define agents, schedules, and permissions in YAML
|
|
79
|
-
- **Multiple Triggers** - Interval, cron, webhooks, chat messages
|
|
80
|
-
- **Work Sources** - GitHub Issues integration (Jira/Linear planned)
|
|
81
|
-
- **Execution Hooks** - Shell commands, webhooks, Discord notifications
|
|
82
|
-
- **Chat Integration** - Discord connector for conversational agents
|
|
83
|
-
- **Session Management** - List and resume Claude Code sessions from CLI
|
|
119
|
+
Full documentation at [herdctl.dev](https://herdctl.dev):
|
|
84
120
|
|
|
85
|
-
|
|
121
|
+
- [Getting Started](https://herdctl.dev/getting-started/)
|
|
122
|
+
- [Configuration Reference](https://herdctl.dev/configuration/fleet-config/)
|
|
123
|
+
- [CLI Reference](https://herdctl.dev/cli-reference/)
|
|
124
|
+
- [Library Reference](https://herdctl.dev/library-reference/fleet-manager/)
|
|
125
|
+
- [Guides & Recipes](https://herdctl.dev/guides/recipes/)
|
|
86
126
|
|
|
87
|
-
|
|
127
|
+
## Contributing
|
|
88
128
|
|
|
89
|
-
|
|
90
|
-
- [Configuration Reference](https://herdctl.dev/configuration/fleet/)
|
|
91
|
-
- [CLI Reference](https://herdctl.dev/cli-reference/commands/)
|
|
92
|
-
- [Guides](https://herdctl.dev/guides/github-issues/)
|
|
129
|
+
Contributions welcome! See [CONTRIBUTING.md](https://github.com/edspencer/herdctl/blob/main/CONTRIBUTING.md) for development setup and guidelines.
|
|
93
130
|
|
|
94
|
-
##
|
|
131
|
+
## Community
|
|
95
132
|
|
|
96
|
-
- [
|
|
97
|
-
- [
|
|
98
|
-
- [
|
|
99
|
-
- [
|
|
100
|
-
- [`@herdctl/chat`](https://www.npmjs.com/package/@herdctl/chat) - Shared chat infrastructure
|
|
133
|
+
- [Discord](https://discord.gg/d2eXZKtNrh) - Chat with the community
|
|
134
|
+
- [GitHub Discussions](https://github.com/edspencer/herdctl/discussions) - Ask questions, share ideas
|
|
135
|
+
- [Developer Blog](https://edspencer.net/blog/tag/herdctl) - Articles and deep dives
|
|
136
|
+
- [Twitter/X](https://twitter.com/edspencer) - Updates and announcements
|
|
101
137
|
|
|
102
138
|
## License
|
|
103
139
|
|
|
104
|
-
MIT
|
|
140
|
+
MIT License - see [LICENSE](https://github.com/edspencer/herdctl/blob/main/LICENSE) for details.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
<p align="center">
|
|
145
|
+
Built by <a href="https://edspencer.net">Ed Spencer</a>
|
|
146
|
+
</p>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwBH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsID;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwBH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsID;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuIvE"}
|
package/dist/commands/start.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import * as fs from "node:fs";
|
|
10
10
|
import * as path from "node:path";
|
|
11
11
|
import { ConfigNotFoundError, FleetManager, isFleetManagerError, setLogHandler, shouldLog, } from "@herdctl/core";
|
|
12
|
+
import { getBanner } from "../utils/banner.js";
|
|
12
13
|
import { colorize, colors, getLevelColor, getMessageColor, getSourceColor, } from "../utils/colors.js";
|
|
13
14
|
/**
|
|
14
15
|
* Default state directory
|
|
@@ -155,6 +156,7 @@ export async function startCommand(options) {
|
|
|
155
156
|
},
|
|
156
157
|
};
|
|
157
158
|
}
|
|
159
|
+
console.log(getBanner());
|
|
158
160
|
console.log("Starting fleet...");
|
|
159
161
|
// Create FleetManager (uses global log handler automatically)
|
|
160
162
|
const manager = new FleetManager({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAEL,mBAAmB,EAEnB,YAAY,EAEZ,mBAAmB,EAEnB,aAAa,EACb,SAAS,GACV,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ASCII art banner for herdctl start
|
|
3
|
+
*
|
|
4
|
+
* Gradient from light blue to deep navy, centered on herdctl brand blue (#326CE5).
|
|
5
|
+
* Respects NO_COLOR / FORCE_COLOR / TTY detection via shouldUseColor().
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Return the herdctl banner string, colorized if the terminal supports it.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getBanner(): string;
|
|
11
|
+
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiCH;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAalC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ASCII art banner for herdctl start
|
|
3
|
+
*
|
|
4
|
+
* Gradient from light blue to deep navy, centered on herdctl brand blue (#326CE5).
|
|
5
|
+
* Respects NO_COLOR / FORCE_COLOR / TTY detection via shouldUseColor().
|
|
6
|
+
*/
|
|
7
|
+
import { shouldUseColor } from "./colors.js";
|
|
8
|
+
const BANNER_LINES = [
|
|
9
|
+
" ▃▃▂ ▗▃▃ ▃▃▃ ",
|
|
10
|
+
" ██▊ ▐█▉ ▐▇▇ ██▊ ",
|
|
11
|
+
" ██▊▃▅▅▅▃ ▃▅▅▅▅▃ ▄▄▖▃▅▅ ▂▄▅▅▃▐█▉ ▂▄▅▅▅▃ ▄▟██▄▖ ██▊ ",
|
|
12
|
+
" ███▛▀▀██▊ ▟█▛▀▀▜█▙ ████▛▊ ▟██▀▀▜██▉ ▟██▀▀▜██▖▀▜██▀▘ ██▊ ",
|
|
13
|
+
" ██▊ ▜█▉ ▐██▄▄▄▄██▌ ██▊ ▐██▎ ▜█▉ ▕██▍ ▀▀▘ ▐██ ██▊ ",
|
|
14
|
+
" ██▊ ▐█▉ ▐██▀▀▀▀▀▀▘ ██▋ ▐██▎ ▐█▉ ▐██▎ ▂▂ ▐██ ██▊ ",
|
|
15
|
+
" ██▊ ▐█▉ ▝██▙▃▃▟██▘ ██▋ ▜██▄▃▅██▉ ▜██▄▃▟██ ▐██▃▖ ██▊ ",
|
|
16
|
+
" ▀▀▘ ▝▀▀ ▀▀▜▛▀▀ ▀▀▘ ▀▀█▀▀▝▀▀ ▀▀▜▛▀▀ ▀▀▀▘ ▀▀▘ ",
|
|
17
|
+
];
|
|
18
|
+
/** RGB gradient stops from light blue → herdctl blue → deep navy */
|
|
19
|
+
const GRADIENT = [
|
|
20
|
+
[165, 216, 255],
|
|
21
|
+
[130, 195, 255],
|
|
22
|
+
[95, 172, 248],
|
|
23
|
+
[70, 148, 240],
|
|
24
|
+
[50, 108, 229],
|
|
25
|
+
[40, 88, 200],
|
|
26
|
+
[32, 70, 175],
|
|
27
|
+
[25, 55, 145],
|
|
28
|
+
];
|
|
29
|
+
function rgb(r, g, b) {
|
|
30
|
+
return `\x1b[38;2;${r};${g};${b}m`;
|
|
31
|
+
}
|
|
32
|
+
const RESET = "\x1b[0m";
|
|
33
|
+
/**
|
|
34
|
+
* Return the herdctl banner string, colorized if the terminal supports it.
|
|
35
|
+
*/
|
|
36
|
+
export function getBanner() {
|
|
37
|
+
const useColor = shouldUseColor();
|
|
38
|
+
if (!useColor) {
|
|
39
|
+
return `\n${BANNER_LINES.join("\n")}\n`;
|
|
40
|
+
}
|
|
41
|
+
const colored = BANNER_LINES.map((line, i) => {
|
|
42
|
+
const [r, g, b] = GRADIENT[i];
|
|
43
|
+
return `${rgb(r, g, b)}${line}${RESET}`;
|
|
44
|
+
});
|
|
45
|
+
return `\n${colored.join("\n")}\n`;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,YAAY,GAAG;IACnB,4FAA4F;IAC5F,4FAA4F;IAC5F,4FAA4F;IAC5F,4FAA4F;IAC5F,4FAA4F;IAC5F,4FAA4F;IAC5F,4FAA4F;IAC5F,4FAA4F;CAC7F,CAAC;AAEF,oEAAoE;AACpE,MAAM,QAAQ,GAA+B;IAC3C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACf,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACd,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACd,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACd,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC1C,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "herdctl",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2",
|
|
4
4
|
"description": "Autonomous Agent Fleet Management for Claude Code",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"@inquirer/prompts": "^8.2.0",
|
|
18
18
|
"commander": "^12",
|
|
19
19
|
"yaml": "^2",
|
|
20
|
-
"@herdctl/core": "5.
|
|
21
|
-
"@herdctl/discord": "1.0.
|
|
22
|
-
"@herdctl/slack": "1.2.
|
|
23
|
-
"@herdctl/web": "0.
|
|
20
|
+
"@herdctl/core": "5.7.1",
|
|
21
|
+
"@herdctl/discord": "1.0.13",
|
|
22
|
+
"@herdctl/slack": "1.2.7",
|
|
23
|
+
"@herdctl/web": "0.9.1"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"typescript": "^5",
|