@suzuke/agend 0.0.1 → 1.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.
- package/README.md +78 -0
- package/README.zh-TW.md +79 -0
- package/dist/access-path.d.ts +7 -0
- package/dist/access-path.js +12 -0
- package/dist/access-path.js.map +1 -0
- package/dist/backend/claude-code.d.ts +13 -0
- package/dist/backend/claude-code.js +114 -0
- package/dist/backend/claude-code.js.map +1 -0
- package/dist/backend/codex.d.ts +10 -0
- package/dist/backend/codex.js +58 -0
- package/dist/backend/codex.js.map +1 -0
- package/dist/backend/factory.d.ts +2 -0
- package/dist/backend/factory.js +19 -0
- package/dist/backend/factory.js.map +1 -0
- package/dist/backend/gemini-cli.d.ts +10 -0
- package/dist/backend/gemini-cli.js +68 -0
- package/dist/backend/gemini-cli.js.map +1 -0
- package/dist/backend/index.d.ts +6 -0
- package/dist/backend/index.js +6 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/opencode.d.ts +10 -0
- package/dist/backend/opencode.js +63 -0
- package/dist/backend/opencode.js.map +1 -0
- package/dist/backend/types.d.ts +26 -0
- package/dist/backend/types.js +2 -0
- package/dist/backend/types.js.map +1 -0
- package/dist/channel/access-manager.d.ts +18 -0
- package/dist/channel/access-manager.js +149 -0
- package/dist/channel/access-manager.js.map +1 -0
- package/dist/channel/adapters/discord.d.ts +45 -0
- package/dist/channel/adapters/discord.js +366 -0
- package/dist/channel/adapters/discord.js.map +1 -0
- package/dist/channel/adapters/telegram.d.ts +58 -0
- package/dist/channel/adapters/telegram.js +569 -0
- package/dist/channel/adapters/telegram.js.map +1 -0
- package/dist/channel/attachment-handler.d.ts +15 -0
- package/dist/channel/attachment-handler.js +55 -0
- package/dist/channel/attachment-handler.js.map +1 -0
- package/dist/channel/factory.d.ts +12 -0
- package/dist/channel/factory.js +38 -0
- package/dist/channel/factory.js.map +1 -0
- package/dist/channel/ipc-bridge.d.ts +26 -0
- package/dist/channel/ipc-bridge.js +170 -0
- package/dist/channel/ipc-bridge.js.map +1 -0
- package/dist/channel/mcp-server.d.ts +10 -0
- package/dist/channel/mcp-server.js +196 -0
- package/dist/channel/mcp-server.js.map +1 -0
- package/dist/channel/mcp-tools.d.ts +909 -0
- package/dist/channel/mcp-tools.js +346 -0
- package/dist/channel/mcp-tools.js.map +1 -0
- package/dist/channel/message-bus.d.ts +17 -0
- package/dist/channel/message-bus.js +86 -0
- package/dist/channel/message-bus.js.map +1 -0
- package/dist/channel/message-queue.d.ts +39 -0
- package/dist/channel/message-queue.js +248 -0
- package/dist/channel/message-queue.js.map +1 -0
- package/dist/channel/tool-router.d.ts +6 -0
- package/dist/channel/tool-router.js +69 -0
- package/dist/channel/tool-router.js.map +1 -0
- package/dist/channel/tool-tracker.d.ts +13 -0
- package/dist/channel/tool-tracker.js +58 -0
- package/dist/channel/tool-tracker.js.map +1 -0
- package/dist/channel/types.d.ts +116 -0
- package/dist/channel/types.js +2 -0
- package/dist/channel/types.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +782 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js +85 -0
- package/dist/config.js.map +1 -0
- package/dist/context-guardian.d.ts +29 -0
- package/dist/context-guardian.js +123 -0
- package/dist/context-guardian.js.map +1 -0
- package/dist/cost-guard.d.ts +21 -0
- package/dist/cost-guard.js +113 -0
- package/dist/cost-guard.js.map +1 -0
- package/dist/daemon-entry.d.ts +1 -0
- package/dist/daemon-entry.js +29 -0
- package/dist/daemon-entry.js.map +1 -0
- package/dist/daemon.d.ts +88 -0
- package/dist/daemon.js +821 -0
- package/dist/daemon.js.map +1 -0
- package/dist/daily-summary.d.ts +13 -0
- package/dist/daily-summary.js +55 -0
- package/dist/daily-summary.js.map +1 -0
- package/dist/event-log.d.ts +22 -0
- package/dist/event-log.js +66 -0
- package/dist/event-log.js.map +1 -0
- package/dist/export-import.d.ts +2 -0
- package/dist/export-import.js +110 -0
- package/dist/export-import.js.map +1 -0
- package/dist/fleet-context.d.ts +36 -0
- package/dist/fleet-context.js +4 -0
- package/dist/fleet-context.js.map +1 -0
- package/dist/fleet-manager.d.ts +115 -0
- package/dist/fleet-manager.js +1739 -0
- package/dist/fleet-manager.js.map +1 -0
- package/dist/fleet-system-prompt.d.ts +11 -0
- package/dist/fleet-system-prompt.js +60 -0
- package/dist/fleet-system-prompt.js.map +1 -0
- package/dist/hang-detector.d.ts +16 -0
- package/dist/hang-detector.js +53 -0
- package/dist/hang-detector.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.js +63 -0
- package/dist/logger.js.map +1 -0
- package/dist/plugin/agend/.claude-plugin/plugin.json +5 -0
- package/dist/scheduler/db.d.ts +16 -0
- package/dist/scheduler/db.js +132 -0
- package/dist/scheduler/db.js.map +1 -0
- package/dist/scheduler/db.test.d.ts +1 -0
- package/dist/scheduler/db.test.js +92 -0
- package/dist/scheduler/db.test.js.map +1 -0
- package/dist/scheduler/index.d.ts +4 -0
- package/dist/scheduler/index.js +4 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/scheduler.d.ts +25 -0
- package/dist/scheduler/scheduler.js +119 -0
- package/dist/scheduler/scheduler.js.map +1 -0
- package/dist/scheduler/scheduler.test.d.ts +1 -0
- package/dist/scheduler/scheduler.test.js +119 -0
- package/dist/scheduler/scheduler.test.js.map +1 -0
- package/dist/scheduler/types.d.ts +47 -0
- package/dist/scheduler/types.js +7 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/service-installer.d.ts +14 -0
- package/dist/service-installer.js +91 -0
- package/dist/service-installer.js.map +1 -0
- package/dist/setup-wizard.d.ts +14 -0
- package/dist/setup-wizard.js +517 -0
- package/dist/setup-wizard.js.map +1 -0
- package/dist/stt.d.ts +10 -0
- package/dist/stt.js +33 -0
- package/dist/stt.js.map +1 -0
- package/dist/tmux-manager.d.ts +22 -0
- package/dist/tmux-manager.js +132 -0
- package/dist/tmux-manager.js.map +1 -0
- package/dist/topic-commands.d.ts +22 -0
- package/dist/topic-commands.js +176 -0
- package/dist/topic-commands.js.map +1 -0
- package/dist/transcript-monitor.d.ts +21 -0
- package/dist/transcript-monitor.js +149 -0
- package/dist/transcript-monitor.js.map +1 -0
- package/dist/types.d.ts +153 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/webhook-emitter.d.ts +15 -0
- package/dist/webhook-emitter.js +41 -0
- package/dist/webhook-emitter.js.map +1 -0
- package/package.json +58 -4
- package/templates/launchd.plist.ejs +29 -0
- package/templates/systemd.service.ejs +15 -0
- package/index.js +0 -1
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
export interface ContextStatus {
|
|
2
|
+
used_percentage: number;
|
|
3
|
+
remaining_percentage: number;
|
|
4
|
+
context_window_size: number;
|
|
5
|
+
}
|
|
6
|
+
export interface StatusLineData {
|
|
7
|
+
session_id: string;
|
|
8
|
+
model: {
|
|
9
|
+
id: string;
|
|
10
|
+
display_name: string;
|
|
11
|
+
};
|
|
12
|
+
context_window: {
|
|
13
|
+
total_input_tokens: number;
|
|
14
|
+
total_output_tokens: number;
|
|
15
|
+
context_window_size: number;
|
|
16
|
+
current_usage: number | null;
|
|
17
|
+
used_percentage: number | null;
|
|
18
|
+
remaining_percentage: number | null;
|
|
19
|
+
};
|
|
20
|
+
cost: {
|
|
21
|
+
total_cost_usd: number;
|
|
22
|
+
total_duration_ms: number;
|
|
23
|
+
};
|
|
24
|
+
rate_limits?: {
|
|
25
|
+
five_hour: {
|
|
26
|
+
used_percentage: number;
|
|
27
|
+
resets_at: string;
|
|
28
|
+
};
|
|
29
|
+
seven_day: {
|
|
30
|
+
used_percentage: number;
|
|
31
|
+
resets_at: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface AccessConfig {
|
|
36
|
+
mode: "pairing" | "locked";
|
|
37
|
+
allowed_users: number[];
|
|
38
|
+
max_pending_codes: number;
|
|
39
|
+
code_expiry_minutes: number;
|
|
40
|
+
}
|
|
41
|
+
export interface CostGuardConfig {
|
|
42
|
+
daily_limit_usd: number;
|
|
43
|
+
warn_at_percentage: number;
|
|
44
|
+
timezone: string;
|
|
45
|
+
}
|
|
46
|
+
export interface HangDetectorConfig {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
timeout_minutes: number;
|
|
49
|
+
}
|
|
50
|
+
export interface DailySummaryConfig {
|
|
51
|
+
enabled: boolean;
|
|
52
|
+
hour: number;
|
|
53
|
+
minute: number;
|
|
54
|
+
}
|
|
55
|
+
export interface ChannelConfig {
|
|
56
|
+
type: string;
|
|
57
|
+
mode: "topic";
|
|
58
|
+
bot_token_env: string;
|
|
59
|
+
group_id?: number;
|
|
60
|
+
access: AccessConfig;
|
|
61
|
+
options?: Record<string, unknown>;
|
|
62
|
+
}
|
|
63
|
+
export interface InstanceConfig {
|
|
64
|
+
working_directory: string;
|
|
65
|
+
/** Human-readable description of what this instance does */
|
|
66
|
+
description?: string;
|
|
67
|
+
/** Tags for capability discovery (e.g. ["code-reviewer", "researcher", "executor"]) */
|
|
68
|
+
tags?: string[];
|
|
69
|
+
topic_id?: number;
|
|
70
|
+
general_topic?: boolean;
|
|
71
|
+
restart_policy: {
|
|
72
|
+
max_retries: number;
|
|
73
|
+
backoff: "exponential" | "linear";
|
|
74
|
+
reset_after: number;
|
|
75
|
+
};
|
|
76
|
+
context_guardian: {
|
|
77
|
+
grace_period_ms: number;
|
|
78
|
+
max_age_hours: number;
|
|
79
|
+
};
|
|
80
|
+
log_level: "debug" | "info" | "warn" | "error";
|
|
81
|
+
/** CLI backend to use. Default: "claude-code" */
|
|
82
|
+
backend?: string;
|
|
83
|
+
/** Skip non-essential subsystems (transcript monitor, context guardian, approval server, prompt detector) */
|
|
84
|
+
lightweight?: boolean;
|
|
85
|
+
/** System prompt for the Claude instance */
|
|
86
|
+
systemPrompt?: string;
|
|
87
|
+
/** Skip permission checks (dangerously-skip-permissions) */
|
|
88
|
+
skipPermissions?: boolean;
|
|
89
|
+
/** Claude model to use (e.g. "sonnet", "opus", "haiku", or full model ID) */
|
|
90
|
+
model?: string;
|
|
91
|
+
/** Ordered fallback models when primary hits rate limit (e.g. ["opus", "sonnet"]) */
|
|
92
|
+
model_failover?: string[];
|
|
93
|
+
/** Per-instance cost guard (overrides fleet defaults) */
|
|
94
|
+
cost_guard?: CostGuardConfig;
|
|
95
|
+
/** Original repo path when this instance uses a git worktree */
|
|
96
|
+
worktree_source?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface WebhookConfig {
|
|
99
|
+
url: string;
|
|
100
|
+
events: string[];
|
|
101
|
+
headers?: Record<string, string>;
|
|
102
|
+
}
|
|
103
|
+
export interface FleetDefaults extends Partial<InstanceConfig> {
|
|
104
|
+
scheduler?: {
|
|
105
|
+
max_schedules?: number;
|
|
106
|
+
default_timezone?: string;
|
|
107
|
+
retry_count?: number;
|
|
108
|
+
retry_interval_ms?: number;
|
|
109
|
+
};
|
|
110
|
+
cost_guard?: CostGuardConfig;
|
|
111
|
+
hang_detector?: HangDetectorConfig;
|
|
112
|
+
daily_summary?: DailySummaryConfig;
|
|
113
|
+
webhooks?: WebhookConfig[];
|
|
114
|
+
}
|
|
115
|
+
export type RotationSnapshotEvent = {
|
|
116
|
+
type: "tool_use";
|
|
117
|
+
name: string;
|
|
118
|
+
preview?: string;
|
|
119
|
+
} | {
|
|
120
|
+
type: "tool_result";
|
|
121
|
+
name: string;
|
|
122
|
+
preview?: string;
|
|
123
|
+
} | {
|
|
124
|
+
type: "assistant_text";
|
|
125
|
+
preview: string;
|
|
126
|
+
};
|
|
127
|
+
export interface RotationSnapshot {
|
|
128
|
+
instance: string;
|
|
129
|
+
reason: string;
|
|
130
|
+
created_at: string;
|
|
131
|
+
working_directory: string;
|
|
132
|
+
session_id?: string | null;
|
|
133
|
+
context_pct?: number | null;
|
|
134
|
+
recent_user_messages?: Array<{
|
|
135
|
+
text: string;
|
|
136
|
+
ts: string;
|
|
137
|
+
}>;
|
|
138
|
+
recent_events?: RotationSnapshotEvent[];
|
|
139
|
+
recent_tool_activity?: string[];
|
|
140
|
+
last_statusline?: {
|
|
141
|
+
model?: string;
|
|
142
|
+
cost_usd?: number;
|
|
143
|
+
five_hour_pct?: number;
|
|
144
|
+
seven_day_pct?: number;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export interface FleetConfig {
|
|
148
|
+
channel?: ChannelConfig;
|
|
149
|
+
project_roots?: string[];
|
|
150
|
+
defaults: FleetDefaults;
|
|
151
|
+
instances: Record<string, InstanceConfig>;
|
|
152
|
+
health_port?: number;
|
|
153
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WebhookConfig } from "./types.js";
|
|
2
|
+
import type { Logger } from "./logger.js";
|
|
3
|
+
export interface WebhookPayload {
|
|
4
|
+
event: string;
|
|
5
|
+
instance: string;
|
|
6
|
+
timestamp: string;
|
|
7
|
+
data: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export declare class WebhookEmitter {
|
|
10
|
+
private configs;
|
|
11
|
+
private logger;
|
|
12
|
+
constructor(configs: WebhookConfig[], logger: Logger);
|
|
13
|
+
emit(event: string, instance: string, data?: Record<string, unknown>): void;
|
|
14
|
+
private post;
|
|
15
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export class WebhookEmitter {
|
|
2
|
+
configs;
|
|
3
|
+
logger;
|
|
4
|
+
constructor(configs, logger) {
|
|
5
|
+
this.configs = configs;
|
|
6
|
+
this.logger = logger;
|
|
7
|
+
}
|
|
8
|
+
emit(event, instance, data = {}) {
|
|
9
|
+
const payload = {
|
|
10
|
+
event,
|
|
11
|
+
instance,
|
|
12
|
+
timestamp: new Date().toISOString(),
|
|
13
|
+
data,
|
|
14
|
+
};
|
|
15
|
+
for (const config of this.configs) {
|
|
16
|
+
if (config.events.includes("*") || config.events.includes(event)) {
|
|
17
|
+
this.post(config, payload);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
post(config, payload, retry = true) {
|
|
22
|
+
const headers = {
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
...config.headers,
|
|
25
|
+
};
|
|
26
|
+
fetch(config.url, {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers,
|
|
29
|
+
body: JSON.stringify(payload),
|
|
30
|
+
signal: AbortSignal.timeout(5000),
|
|
31
|
+
}).catch((err) => {
|
|
32
|
+
if (retry) {
|
|
33
|
+
setTimeout(() => this.post(config, payload, false), 1000);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.logger.warn({ err, url: config.url, event: payload.event }, "Webhook POST failed");
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=webhook-emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-emitter.js","sourceRoot":"","sources":["../src/webhook-emitter.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,cAAc;IAEf;IACA;IAFV,YACU,OAAwB,EACxB,MAAc;QADd,YAAO,GAAP,OAAO,CAAiB;QACxB,WAAM,GAAN,MAAM,CAAQ;IACrB,CAAC;IAEJ,IAAI,CAAC,KAAa,EAAE,QAAgB,EAAE,OAAgC,EAAE;QACtE,MAAM,OAAO,GAAmB;YAC9B,KAAK;YACL,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI;SACL,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,MAAqB,EAAE,OAAuB,EAAE,KAAK,GAAG,IAAI;QACvE,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,GAAG,MAAM,CAAC,OAAO;SAClB,CAAC;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;YAChB,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,KAAK,EAAE,CAAC;gBACV,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,65 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@suzuke/agend",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "Multi-agent fleet daemon — run any coding CLI (Claude, Gemini, Codex, OpenCode) from Telegram",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"agend": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"postbuild": "cp -r src/plugin dist/ && cd dist/plugin/agend && ln -sf ../../channel/mcp-server.js server.js",
|
|
12
|
+
"start": "tsx src/cli.ts start",
|
|
13
|
+
"dev": "tsx src/cli.ts",
|
|
14
|
+
"test": "vitest run",
|
|
15
|
+
"test:watch": "vitest",
|
|
16
|
+
"prepublishOnly": "npm run build"
|
|
17
|
+
},
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=20"
|
|
20
|
+
},
|
|
6
21
|
"license": "MIT",
|
|
7
22
|
"repository": {
|
|
8
23
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/suzuke/
|
|
24
|
+
"url": "https://github.com/suzuke/agend.git"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"agend",
|
|
28
|
+
"agent",
|
|
29
|
+
"fleet",
|
|
30
|
+
"telegram",
|
|
31
|
+
"claude",
|
|
32
|
+
"gemini",
|
|
33
|
+
"codex",
|
|
34
|
+
"opencode",
|
|
35
|
+
"multi-agent",
|
|
36
|
+
"daemon"
|
|
37
|
+
],
|
|
38
|
+
"files": [
|
|
39
|
+
"dist/",
|
|
40
|
+
"templates/",
|
|
41
|
+
"README.md",
|
|
42
|
+
"README.zh-TW.md"
|
|
43
|
+
],
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
46
|
+
"better-sqlite3": "^12.8.0",
|
|
47
|
+
"commander": "^14.0.3",
|
|
48
|
+
"croner": "^10.0.1",
|
|
49
|
+
"discord.js": "^14.25.1",
|
|
50
|
+
"ejs": "^5.0.1",
|
|
51
|
+
"grammy": "^1.41.1",
|
|
52
|
+
"js-yaml": "^4.1.1",
|
|
53
|
+
"pino": "^10.3.1",
|
|
54
|
+
"pino-pretty": "^13.1.3"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
58
|
+
"@types/ejs": "^3.1.5",
|
|
59
|
+
"@types/js-yaml": "^4.0.9",
|
|
60
|
+
"@types/node": "^25.5.0",
|
|
61
|
+
"tsx": "^4.21.0",
|
|
62
|
+
"typescript": "^5.9.3",
|
|
63
|
+
"vitest": "^4.1.0"
|
|
10
64
|
}
|
|
11
65
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>Label</key>
|
|
6
|
+
<string><%= label %></string>
|
|
7
|
+
<key>ProgramArguments</key>
|
|
8
|
+
<array>
|
|
9
|
+
<string><%= execPath %></string>
|
|
10
|
+
<string>fleet</string>
|
|
11
|
+
<string>start</string>
|
|
12
|
+
</array>
|
|
13
|
+
<key>EnvironmentVariables</key>
|
|
14
|
+
<dict>
|
|
15
|
+
<key>PATH</key>
|
|
16
|
+
<string><%= path %></string>
|
|
17
|
+
</dict>
|
|
18
|
+
<key>WorkingDirectory</key>
|
|
19
|
+
<string><%= workingDirectory %></string>
|
|
20
|
+
<key>RunAtLoad</key>
|
|
21
|
+
<true/>
|
|
22
|
+
<key>KeepAlive</key>
|
|
23
|
+
<true/>
|
|
24
|
+
<key>StandardOutPath</key>
|
|
25
|
+
<string><%= logPath %></string>
|
|
26
|
+
<key>StandardErrorPath</key>
|
|
27
|
+
<string><%= logPath %></string>
|
|
28
|
+
</dict>
|
|
29
|
+
</plist>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
[Unit]
|
|
2
|
+
Description=Claude Channel Daemon
|
|
3
|
+
After=network.target
|
|
4
|
+
|
|
5
|
+
[Service]
|
|
6
|
+
Type=simple
|
|
7
|
+
ExecStart=<%= execPath %> fleet start
|
|
8
|
+
Environment=PATH=<%= path %>
|
|
9
|
+
WorkingDirectory=<%= workingDirectory %>
|
|
10
|
+
Restart=no
|
|
11
|
+
StandardOutput=append:<%= logPath %>
|
|
12
|
+
StandardError=append:<%= logPath %>
|
|
13
|
+
|
|
14
|
+
[Install]
|
|
15
|
+
WantedBy=default.target
|
package/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
// AgEnD - Agent End
|