@fonz/tgcc 0.0.1 → 0.2.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.
- package/LICENSE +21 -0
- package/README.md +266 -0
- package/dist/bridge.d.ts +32 -0
- package/dist/bridge.js +1065 -0
- package/dist/bridge.js.map +1 -0
- package/dist/cc-process.d.ts +75 -0
- package/dist/cc-process.js +397 -0
- package/dist/cc-process.js.map +1 -0
- package/dist/cc-protocol.d.ts +227 -0
- package/dist/cc-protocol.js +108 -0
- package/dist/cc-protocol.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +668 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +75 -0
- package/dist/config.js +268 -0
- package/dist/config.js.map +1 -0
- package/dist/ctl-server.d.ts +57 -0
- package/dist/ctl-server.js +98 -0
- package/dist/ctl-server.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-bridge.d.ts +45 -0
- package/dist/mcp-bridge.js +182 -0
- package/dist/mcp-bridge.js.map +1 -0
- package/dist/mcp-server.d.ts +1 -0
- package/dist/mcp-server.js +109 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/service.d.ts +1 -0
- package/dist/service.js +84 -0
- package/dist/service.js.map +1 -0
- package/dist/session.d.ts +71 -0
- package/dist/session.js +435 -0
- package/dist/session.js.map +1 -0
- package/dist/streaming.d.ts +112 -0
- package/dist/streaming.js +511 -0
- package/dist/streaming.js.map +1 -0
- package/dist/telegram.d.ts +70 -0
- package/dist/telegram.js +380 -0
- package/dist/telegram.js.map +1 -0
- package/package.json +87 -4
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import pino from 'pino';
|
|
3
|
+
export interface GlobalConfig {
|
|
4
|
+
ccBinaryPath: string;
|
|
5
|
+
mediaDir: string;
|
|
6
|
+
socketDir: string;
|
|
7
|
+
logLevel: string;
|
|
8
|
+
stateFile: string;
|
|
9
|
+
}
|
|
10
|
+
export interface AgentDefaults {
|
|
11
|
+
model: string;
|
|
12
|
+
repo: string;
|
|
13
|
+
maxTurns: number;
|
|
14
|
+
idleTimeoutMs: number;
|
|
15
|
+
hangTimeoutMs: number;
|
|
16
|
+
permissionMode: 'dangerously-skip' | 'acceptEdits' | 'default' | 'plan';
|
|
17
|
+
}
|
|
18
|
+
export interface AgentUserOverride {
|
|
19
|
+
model?: string;
|
|
20
|
+
repo?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface AgentConfig {
|
|
23
|
+
botToken: string;
|
|
24
|
+
allowedUsers: string[];
|
|
25
|
+
defaults: AgentDefaults;
|
|
26
|
+
users?: Record<string, AgentUserOverride>;
|
|
27
|
+
}
|
|
28
|
+
export interface TgccConfig {
|
|
29
|
+
global: GlobalConfig;
|
|
30
|
+
repos: Record<string, string>;
|
|
31
|
+
agents: Record<string, AgentConfig>;
|
|
32
|
+
}
|
|
33
|
+
export declare function validateConfig(raw: unknown): TgccConfig;
|
|
34
|
+
export interface ResolvedUserConfig {
|
|
35
|
+
model: string;
|
|
36
|
+
repo: string;
|
|
37
|
+
maxTurns: number;
|
|
38
|
+
idleTimeoutMs: number;
|
|
39
|
+
hangTimeoutMs: number;
|
|
40
|
+
permissionMode: AgentDefaults['permissionMode'];
|
|
41
|
+
}
|
|
42
|
+
export declare function resolveUserConfig(agent: AgentConfig, userId: string): ResolvedUserConfig;
|
|
43
|
+
/** Resolve a repo name or path: if it matches a key in the repos map, return the path; otherwise return as-is. */
|
|
44
|
+
export declare function resolveRepoPath(repos: Record<string, string>, nameOrPath: string): string;
|
|
45
|
+
/** Find which agent owns a given repo path (by matching defaults.repo). Returns agentId or null. */
|
|
46
|
+
export declare function agentForRepo(config: TgccConfig, repoPath: string): string | null;
|
|
47
|
+
export declare function isValidRepoName(name: string): boolean;
|
|
48
|
+
/** Find which agent "owns" a repo key (has it as defaults.repo in the raw config). */
|
|
49
|
+
export declare function findRepoOwner(rawConfig: Record<string, unknown>, repoKey: string): string | null;
|
|
50
|
+
/**
|
|
51
|
+
* Read config, apply a mutator, write back.
|
|
52
|
+
* The file watcher handles hot-reload automatically.
|
|
53
|
+
*/
|
|
54
|
+
export declare function updateConfig(mutator: (config: Record<string, unknown>) => void): void;
|
|
55
|
+
export declare const CONFIG_PATH: string;
|
|
56
|
+
export declare function loadConfig(configPath?: string): TgccConfig;
|
|
57
|
+
export declare function ensureDirectories(config: TgccConfig): void;
|
|
58
|
+
export interface ConfigDiff {
|
|
59
|
+
added: string[];
|
|
60
|
+
removed: string[];
|
|
61
|
+
changed: string[];
|
|
62
|
+
}
|
|
63
|
+
export declare function diffConfigs(oldConfig: TgccConfig, newConfig: TgccConfig): ConfigDiff;
|
|
64
|
+
export type ConfigChangeHandler = (newConfig: TgccConfig, diff: ConfigDiff) => void;
|
|
65
|
+
export declare class ConfigWatcher extends EventEmitter {
|
|
66
|
+
private currentConfig;
|
|
67
|
+
private configPath;
|
|
68
|
+
private debounceTimer;
|
|
69
|
+
private logger;
|
|
70
|
+
constructor(config: TgccConfig, configPath?: string, logger?: pino.Logger);
|
|
71
|
+
get config(): TgccConfig;
|
|
72
|
+
start(): void;
|
|
73
|
+
stop(): void;
|
|
74
|
+
reload(): void;
|
|
75
|
+
}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, watchFile, unwatchFile, existsSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
|
+
import { EventEmitter } from 'node:events';
|
|
5
|
+
import pino from 'pino';
|
|
6
|
+
// ── Defaults ──
|
|
7
|
+
const DEFAULT_GLOBAL = {
|
|
8
|
+
ccBinaryPath: 'claude',
|
|
9
|
+
mediaDir: '/tmp/tgcc/media',
|
|
10
|
+
socketDir: '/tmp/tgcc/sockets',
|
|
11
|
+
logLevel: 'info',
|
|
12
|
+
stateFile: join(homedir(), '.tgcc', 'state.json'),
|
|
13
|
+
};
|
|
14
|
+
const DEFAULT_AGENT_DEFAULTS = {
|
|
15
|
+
model: 'claude-sonnet-4-20250514',
|
|
16
|
+
repo: homedir(),
|
|
17
|
+
maxTurns: 50,
|
|
18
|
+
idleTimeoutMs: 300_000,
|
|
19
|
+
hangTimeoutMs: 300_000,
|
|
20
|
+
permissionMode: 'dangerously-skip',
|
|
21
|
+
};
|
|
22
|
+
// ── Validation ──
|
|
23
|
+
export function validateConfig(raw) {
|
|
24
|
+
if (!raw || typeof raw !== 'object') {
|
|
25
|
+
throw new Error('Config must be a JSON object');
|
|
26
|
+
}
|
|
27
|
+
const obj = raw;
|
|
28
|
+
// Global config with defaults
|
|
29
|
+
const globalRaw = (obj.global ?? {});
|
|
30
|
+
const global = {
|
|
31
|
+
ccBinaryPath: typeof globalRaw.ccBinaryPath === 'string' ? globalRaw.ccBinaryPath : DEFAULT_GLOBAL.ccBinaryPath,
|
|
32
|
+
mediaDir: typeof globalRaw.mediaDir === 'string' ? globalRaw.mediaDir : DEFAULT_GLOBAL.mediaDir,
|
|
33
|
+
socketDir: typeof globalRaw.socketDir === 'string' ? globalRaw.socketDir : DEFAULT_GLOBAL.socketDir,
|
|
34
|
+
logLevel: typeof globalRaw.logLevel === 'string' ? globalRaw.logLevel : DEFAULT_GLOBAL.logLevel,
|
|
35
|
+
stateFile: typeof globalRaw.stateFile === 'string' ? globalRaw.stateFile : DEFAULT_GLOBAL.stateFile,
|
|
36
|
+
};
|
|
37
|
+
// Repos registry
|
|
38
|
+
const repos = {};
|
|
39
|
+
const reposRaw = obj.repos;
|
|
40
|
+
if (reposRaw && typeof reposRaw === 'object') {
|
|
41
|
+
for (const [name, path] of Object.entries(reposRaw)) {
|
|
42
|
+
if (typeof path === 'string') {
|
|
43
|
+
repos[name] = path;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Agents
|
|
48
|
+
const agentsRaw = obj.agents;
|
|
49
|
+
if (!agentsRaw || typeof agentsRaw !== 'object') {
|
|
50
|
+
throw new Error('Config must have an "agents" object with at least one agent');
|
|
51
|
+
}
|
|
52
|
+
const agents = {};
|
|
53
|
+
const seenTokens = new Set();
|
|
54
|
+
const repoOwners = new Map(); // repo key → agentId (exclusivity)
|
|
55
|
+
for (const [agentId, agentRaw] of Object.entries(agentsRaw)) {
|
|
56
|
+
if (!agentRaw || typeof agentRaw !== 'object') {
|
|
57
|
+
throw new Error(`Agent "${agentId}" must be an object`);
|
|
58
|
+
}
|
|
59
|
+
const a = agentRaw;
|
|
60
|
+
if (typeof a.botToken !== 'string' || !a.botToken) {
|
|
61
|
+
throw new Error(`Agent "${agentId}" must have a "botToken" string`);
|
|
62
|
+
}
|
|
63
|
+
if (seenTokens.has(a.botToken)) {
|
|
64
|
+
throw new Error(`Duplicate botToken in agent "${agentId}" — each agent must have a unique token`);
|
|
65
|
+
}
|
|
66
|
+
seenTokens.add(a.botToken);
|
|
67
|
+
if (!Array.isArray(a.allowedUsers) || a.allowedUsers.length === 0) {
|
|
68
|
+
throw new Error(`Agent "${agentId}" must have a non-empty "allowedUsers" array`);
|
|
69
|
+
}
|
|
70
|
+
const defaultsRaw = (a.defaults ?? {});
|
|
71
|
+
// Resolve defaults.repo: if it's a key in the repos map, resolve to the path
|
|
72
|
+
let resolvedRepo = DEFAULT_AGENT_DEFAULTS.repo;
|
|
73
|
+
if (typeof defaultsRaw.repo === 'string') {
|
|
74
|
+
const repoKey = defaultsRaw.repo;
|
|
75
|
+
if (repos[repoKey]) {
|
|
76
|
+
// It's a reference to the repos registry
|
|
77
|
+
resolvedRepo = repos[repoKey];
|
|
78
|
+
// Validate exclusivity: one agent per repo key
|
|
79
|
+
if (repoOwners.has(repoKey)) {
|
|
80
|
+
throw new Error(`Repo "${repoKey}" is already assigned to agent "${repoOwners.get(repoKey)}" — each repo can only be assigned to one agent`);
|
|
81
|
+
}
|
|
82
|
+
repoOwners.set(repoKey, agentId);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Treat as a direct path (backwards compat)
|
|
86
|
+
resolvedRepo = repoKey;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const defaults = {
|
|
90
|
+
model: typeof defaultsRaw.model === 'string' ? defaultsRaw.model : DEFAULT_AGENT_DEFAULTS.model,
|
|
91
|
+
repo: resolvedRepo,
|
|
92
|
+
maxTurns: typeof defaultsRaw.maxTurns === 'number' ? defaultsRaw.maxTurns : DEFAULT_AGENT_DEFAULTS.maxTurns,
|
|
93
|
+
idleTimeoutMs: typeof defaultsRaw.idleTimeoutMs === 'number' ? defaultsRaw.idleTimeoutMs : DEFAULT_AGENT_DEFAULTS.idleTimeoutMs,
|
|
94
|
+
hangTimeoutMs: typeof defaultsRaw.hangTimeoutMs === 'number' ? defaultsRaw.hangTimeoutMs : DEFAULT_AGENT_DEFAULTS.hangTimeoutMs,
|
|
95
|
+
permissionMode: ['dangerously-skip', 'acceptEdits', 'default', 'plan'].includes(defaultsRaw.permissionMode)
|
|
96
|
+
? defaultsRaw.permissionMode
|
|
97
|
+
: DEFAULT_AGENT_DEFAULTS.permissionMode,
|
|
98
|
+
};
|
|
99
|
+
const users = {};
|
|
100
|
+
if (a.users && typeof a.users === 'object') {
|
|
101
|
+
for (const [userId, uRaw] of Object.entries(a.users)) {
|
|
102
|
+
if (uRaw && typeof uRaw === 'object') {
|
|
103
|
+
const u = uRaw;
|
|
104
|
+
users[userId] = {
|
|
105
|
+
...(typeof u.model === 'string' ? { model: u.model } : {}),
|
|
106
|
+
...(typeof u.repo === 'string' ? { repo: u.repo } : {}),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
agents[agentId] = {
|
|
112
|
+
botToken: a.botToken,
|
|
113
|
+
allowedUsers: a.allowedUsers.map(String),
|
|
114
|
+
defaults,
|
|
115
|
+
users,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (Object.keys(agents).length === 0) {
|
|
119
|
+
throw new Error('Config must have at least one agent');
|
|
120
|
+
}
|
|
121
|
+
return { global, repos, agents };
|
|
122
|
+
}
|
|
123
|
+
export function resolveUserConfig(agent, userId) {
|
|
124
|
+
const userOverride = agent.users?.[userId] ?? {};
|
|
125
|
+
return {
|
|
126
|
+
model: userOverride.model ?? agent.defaults.model,
|
|
127
|
+
repo: userOverride.repo ?? agent.defaults.repo,
|
|
128
|
+
maxTurns: agent.defaults.maxTurns,
|
|
129
|
+
idleTimeoutMs: agent.defaults.idleTimeoutMs,
|
|
130
|
+
hangTimeoutMs: agent.defaults.hangTimeoutMs,
|
|
131
|
+
permissionMode: agent.defaults.permissionMode,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
// ── Repo registry helpers ──
|
|
135
|
+
/** Resolve a repo name or path: if it matches a key in the repos map, return the path; otherwise return as-is. */
|
|
136
|
+
export function resolveRepoPath(repos, nameOrPath) {
|
|
137
|
+
return repos[nameOrPath] ?? nameOrPath;
|
|
138
|
+
}
|
|
139
|
+
/** Find which agent owns a given repo path (by matching defaults.repo). Returns agentId or null. */
|
|
140
|
+
export function agentForRepo(config, repoPath) {
|
|
141
|
+
for (const [agentId, agent] of Object.entries(config.agents)) {
|
|
142
|
+
if (agent.defaults.repo === repoPath)
|
|
143
|
+
return agentId;
|
|
144
|
+
}
|
|
145
|
+
// Also check if repoPath is inside an agent's repo
|
|
146
|
+
for (const [agentId, agent] of Object.entries(config.agents)) {
|
|
147
|
+
const agentRepo = agent.defaults.repo;
|
|
148
|
+
if (agentRepo !== DEFAULT_AGENT_DEFAULTS.repo && repoPath.startsWith(agentRepo + '/')) {
|
|
149
|
+
return agentId;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
// ── Repo name validation ──
|
|
155
|
+
const REPO_NAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9-]*$/;
|
|
156
|
+
export function isValidRepoName(name) {
|
|
157
|
+
return REPO_NAME_RE.test(name);
|
|
158
|
+
}
|
|
159
|
+
/** Find which agent "owns" a repo key (has it as defaults.repo in the raw config). */
|
|
160
|
+
export function findRepoOwner(rawConfig, repoKey) {
|
|
161
|
+
const agents = (rawConfig.agents ?? {});
|
|
162
|
+
for (const [agentId, agent] of Object.entries(agents)) {
|
|
163
|
+
const defaults = (agent.defaults ?? {});
|
|
164
|
+
if (defaults.repo === repoKey)
|
|
165
|
+
return agentId;
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
// ── Config mutation helper ──
|
|
170
|
+
/**
|
|
171
|
+
* Read config, apply a mutator, write back.
|
|
172
|
+
* The file watcher handles hot-reload automatically.
|
|
173
|
+
*/
|
|
174
|
+
export function updateConfig(mutator) {
|
|
175
|
+
const dir = dirname(CONFIG_PATH);
|
|
176
|
+
if (!existsSync(dir))
|
|
177
|
+
mkdirSync(dir, { recursive: true });
|
|
178
|
+
let raw = {};
|
|
179
|
+
if (existsSync(CONFIG_PATH)) {
|
|
180
|
+
raw = JSON.parse(readFileSync(CONFIG_PATH, 'utf-8'));
|
|
181
|
+
}
|
|
182
|
+
mutator(raw);
|
|
183
|
+
writeFileSync(CONFIG_PATH, JSON.stringify(raw, null, 2) + '\n');
|
|
184
|
+
}
|
|
185
|
+
// ── Config loading and watching ──
|
|
186
|
+
export const CONFIG_PATH = join(homedir(), '.tgcc', 'config.json');
|
|
187
|
+
export function loadConfig(configPath = CONFIG_PATH) {
|
|
188
|
+
if (!existsSync(configPath)) {
|
|
189
|
+
throw new Error(`Config file not found: ${configPath}`);
|
|
190
|
+
}
|
|
191
|
+
const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
192
|
+
return validateConfig(raw);
|
|
193
|
+
}
|
|
194
|
+
export function ensureDirectories(config) {
|
|
195
|
+
const dirs = [
|
|
196
|
+
config.global.mediaDir,
|
|
197
|
+
config.global.socketDir,
|
|
198
|
+
join(homedir(), '.tgcc'),
|
|
199
|
+
];
|
|
200
|
+
for (const dir of dirs) {
|
|
201
|
+
if (!existsSync(dir)) {
|
|
202
|
+
mkdirSync(dir, { recursive: true });
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
export function diffConfigs(oldConfig, newConfig) {
|
|
207
|
+
// Note: repos changes are detected implicitly via agent config changes
|
|
208
|
+
// since repo keys are resolved to paths during validation
|
|
209
|
+
const oldIds = new Set(Object.keys(oldConfig.agents));
|
|
210
|
+
const newIds = new Set(Object.keys(newConfig.agents));
|
|
211
|
+
const added = [...newIds].filter(id => !oldIds.has(id));
|
|
212
|
+
const removed = [...oldIds].filter(id => !newIds.has(id));
|
|
213
|
+
const changed = [];
|
|
214
|
+
for (const id of oldIds) {
|
|
215
|
+
if (newIds.has(id)) {
|
|
216
|
+
if (JSON.stringify(oldConfig.agents[id]) !== JSON.stringify(newConfig.agents[id])) {
|
|
217
|
+
changed.push(id);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return { added, removed, changed };
|
|
222
|
+
}
|
|
223
|
+
export class ConfigWatcher extends EventEmitter {
|
|
224
|
+
currentConfig;
|
|
225
|
+
configPath;
|
|
226
|
+
debounceTimer = null;
|
|
227
|
+
logger;
|
|
228
|
+
constructor(config, configPath = CONFIG_PATH, logger) {
|
|
229
|
+
super();
|
|
230
|
+
this.currentConfig = config;
|
|
231
|
+
this.configPath = configPath;
|
|
232
|
+
this.logger = logger ?? pino({ level: 'info' });
|
|
233
|
+
}
|
|
234
|
+
get config() {
|
|
235
|
+
return this.currentConfig;
|
|
236
|
+
}
|
|
237
|
+
start() {
|
|
238
|
+
watchFile(this.configPath, { interval: 1000 }, () => {
|
|
239
|
+
if (this.debounceTimer)
|
|
240
|
+
clearTimeout(this.debounceTimer);
|
|
241
|
+
this.debounceTimer = setTimeout(() => this.reload(), 1000);
|
|
242
|
+
});
|
|
243
|
+
this.logger.info({ path: this.configPath }, 'Watching config file');
|
|
244
|
+
}
|
|
245
|
+
stop() {
|
|
246
|
+
unwatchFile(this.configPath);
|
|
247
|
+
if (this.debounceTimer) {
|
|
248
|
+
clearTimeout(this.debounceTimer);
|
|
249
|
+
this.debounceTimer = null;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
reload() {
|
|
253
|
+
try {
|
|
254
|
+
const newConfig = loadConfig(this.configPath);
|
|
255
|
+
const diff = diffConfigs(this.currentConfig, newConfig);
|
|
256
|
+
if (diff.added.length || diff.removed.length || diff.changed.length) {
|
|
257
|
+
this.logger.info({ diff }, 'Config changed');
|
|
258
|
+
this.currentConfig = newConfig;
|
|
259
|
+
this.emit('change', newConfig, diff);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
this.logger.error({ err }, 'Config reload failed — keeping current config');
|
|
264
|
+
this.emit('error', err);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type pino from 'pino';
|
|
2
|
+
export interface CtlMessageRequest {
|
|
3
|
+
type: 'message';
|
|
4
|
+
text: string;
|
|
5
|
+
agent: string;
|
|
6
|
+
session?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CtlStatusRequest {
|
|
9
|
+
type: 'status';
|
|
10
|
+
agent?: string;
|
|
11
|
+
}
|
|
12
|
+
export type CtlRequest = CtlMessageRequest | CtlStatusRequest;
|
|
13
|
+
export interface CtlAckResponse {
|
|
14
|
+
type: 'ack';
|
|
15
|
+
sessionId: string | null;
|
|
16
|
+
state: 'active' | 'spawning' | 'idle';
|
|
17
|
+
}
|
|
18
|
+
export interface CtlAgentInfo {
|
|
19
|
+
id: string;
|
|
20
|
+
state: string;
|
|
21
|
+
sessionId: string | null;
|
|
22
|
+
repo: string;
|
|
23
|
+
}
|
|
24
|
+
export interface CtlSessionInfo {
|
|
25
|
+
id: string;
|
|
26
|
+
agentId: string;
|
|
27
|
+
messageCount: number;
|
|
28
|
+
totalCostUsd: number;
|
|
29
|
+
}
|
|
30
|
+
export interface CtlStatusResponse {
|
|
31
|
+
type: 'status';
|
|
32
|
+
agents: CtlAgentInfo[];
|
|
33
|
+
sessions: CtlSessionInfo[];
|
|
34
|
+
}
|
|
35
|
+
export interface CtlErrorResponse {
|
|
36
|
+
type: 'error';
|
|
37
|
+
message: string;
|
|
38
|
+
}
|
|
39
|
+
export type CtlResponse = CtlAckResponse | CtlStatusResponse | CtlErrorResponse;
|
|
40
|
+
export interface CtlHandler {
|
|
41
|
+
handleCtlMessage(agentId: string, text: string, sessionId?: string): CtlAckResponse;
|
|
42
|
+
handleCtlStatus(agentId?: string): CtlStatusResponse;
|
|
43
|
+
}
|
|
44
|
+
export declare class CtlServer {
|
|
45
|
+
private servers;
|
|
46
|
+
private handler;
|
|
47
|
+
private logger;
|
|
48
|
+
constructor(handler: CtlHandler, logger: pino.Logger);
|
|
49
|
+
/** Start a control socket for a specific agent. */
|
|
50
|
+
listen(socketPath: string): void;
|
|
51
|
+
private handleConnection;
|
|
52
|
+
private processLine;
|
|
53
|
+
/** Stop a specific control socket. */
|
|
54
|
+
close(socketPath: string): void;
|
|
55
|
+
/** Stop all control sockets. */
|
|
56
|
+
closeAll(): void;
|
|
57
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { createServer } from 'node:net';
|
|
2
|
+
import { existsSync, unlinkSync, mkdirSync } from 'node:fs';
|
|
3
|
+
import { dirname } from 'node:path';
|
|
4
|
+
// ── Control Server ──
|
|
5
|
+
export class CtlServer {
|
|
6
|
+
servers = new Map();
|
|
7
|
+
handler;
|
|
8
|
+
logger;
|
|
9
|
+
constructor(handler, logger) {
|
|
10
|
+
this.handler = handler;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
}
|
|
13
|
+
/** Start a control socket for a specific agent. */
|
|
14
|
+
listen(socketPath) {
|
|
15
|
+
if (existsSync(socketPath)) {
|
|
16
|
+
unlinkSync(socketPath);
|
|
17
|
+
}
|
|
18
|
+
const dir = dirname(socketPath);
|
|
19
|
+
if (!existsSync(dir))
|
|
20
|
+
mkdirSync(dir, { recursive: true });
|
|
21
|
+
const server = createServer((socket) => this.handleConnection(socket, socketPath));
|
|
22
|
+
server.on('error', (err) => {
|
|
23
|
+
this.logger.error({ err, socketPath }, 'Ctl socket error');
|
|
24
|
+
});
|
|
25
|
+
server.listen(socketPath, () => {
|
|
26
|
+
this.logger.info({ socketPath }, 'Ctl socket listening');
|
|
27
|
+
});
|
|
28
|
+
this.servers.set(socketPath, server);
|
|
29
|
+
}
|
|
30
|
+
handleConnection(socket, socketPath) {
|
|
31
|
+
this.logger.debug({ socketPath }, 'Ctl client connected');
|
|
32
|
+
let buffer = '';
|
|
33
|
+
socket.on('data', (data) => {
|
|
34
|
+
buffer += data.toString();
|
|
35
|
+
let newlineIdx;
|
|
36
|
+
while ((newlineIdx = buffer.indexOf('\n')) !== -1) {
|
|
37
|
+
const line = buffer.slice(0, newlineIdx);
|
|
38
|
+
buffer = buffer.slice(newlineIdx + 1);
|
|
39
|
+
this.processLine(line, socket);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
socket.on('error', (err) => {
|
|
43
|
+
this.logger.debug({ err, socketPath }, 'Ctl connection error');
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
processLine(line, socket) {
|
|
47
|
+
try {
|
|
48
|
+
const request = JSON.parse(line);
|
|
49
|
+
let response;
|
|
50
|
+
switch (request.type) {
|
|
51
|
+
case 'message':
|
|
52
|
+
response = this.handler.handleCtlMessage(request.agent, request.text, request.session);
|
|
53
|
+
break;
|
|
54
|
+
case 'status':
|
|
55
|
+
response = this.handler.handleCtlStatus(request.agent);
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
response = { type: 'error', message: `Unknown request type: ${request.type}` };
|
|
59
|
+
}
|
|
60
|
+
socket.write(JSON.stringify(response) + '\n');
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
const errResponse = {
|
|
64
|
+
type: 'error',
|
|
65
|
+
message: err instanceof Error ? err.message : 'Unknown error',
|
|
66
|
+
};
|
|
67
|
+
socket.write(JSON.stringify(errResponse) + '\n');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Stop a specific control socket. */
|
|
71
|
+
close(socketPath) {
|
|
72
|
+
const server = this.servers.get(socketPath);
|
|
73
|
+
if (server) {
|
|
74
|
+
server.close();
|
|
75
|
+
this.servers.delete(socketPath);
|
|
76
|
+
if (existsSync(socketPath)) {
|
|
77
|
+
try {
|
|
78
|
+
unlinkSync(socketPath);
|
|
79
|
+
}
|
|
80
|
+
catch { }
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Stop all control sockets. */
|
|
85
|
+
closeAll() {
|
|
86
|
+
for (const [socketPath, server] of this.servers) {
|
|
87
|
+
server.close();
|
|
88
|
+
if (existsSync(socketPath)) {
|
|
89
|
+
try {
|
|
90
|
+
unlinkSync(socketPath);
|
|
91
|
+
}
|
|
92
|
+
catch { }
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
this.servers.clear();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=ctl-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ctl-server.js","sourceRoot":"","sources":["../src/ctl-server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { CCProcess, type CCProcessOptions, type CCUserConfig, type ProcessState, type CCActivityState, hasActiveChildren, generateMcpConfig, } from './cc-process.js';
|
|
2
|
+
export { parseCCOutputLine, createInitializeRequest, createPermissionResponse, createTextMessage, createImageMessage, createDocumentMessage, serializeMessage, extractAssistantText, extractToolUses, isStreamTextDelta, isStreamThinkingDelta, getStreamBlockType, type TextContent, type ImageContent, type ContentBlock, type UserMessage, type ControlRequestInitialize, type PermissionRequest, type ControlRequest, type ControlResponse, type InitEvent, type AssistantTextBlock, type AssistantToolUseBlock, type AssistantThinkingBlock, type AssistantContentBlock, type AssistantMessage, type ToolResultEvent, type ResultEvent, type ApiErrorEvent, type CCOutputEvent, type StreamMessageStart, type StreamContentBlockStart, type StreamContentBlockStartText, type StreamContentBlockStartThinking, type StreamContentBlockStartToolUse, type StreamTextDelta, type StreamThinkingDelta, type StreamInputJsonDelta, type StreamContentBlockDelta, type StreamContentBlockStop, type StreamMessageStop, type StreamInnerEvent, type StreamEvent, } from './cc-protocol.js';
|
|
3
|
+
export { SessionStore, getSessionJsonlPath, findMissedSessions, computeProjectSlug, summarizeJsonlDelta, formatCatchupMessage, type SessionInfo, type UserState, type AgentState, type StateStore, type JsonlTracking, } from './session.js';
|
|
4
|
+
export { StreamAccumulator, SubAgentTracker, markdownToHtml, makeHtmlSafe, escapeHtml, formatUsageFooter, splitText, isSubAgentTool, type TelegramSender, type TurnUsage, type StreamAccumulatorOptions, type SubAgentInfo, type SubAgentSender, type SubAgentTrackerOptions, } from './streaming.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// ── @fonz/tgcc — Library exports ──
|
|
2
|
+
//
|
|
3
|
+
// This file is the public API surface for library consumers.
|
|
4
|
+
// The standalone service entry point is in ./service.ts (invoked via CLI).
|
|
5
|
+
// CC process lifecycle
|
|
6
|
+
export { CCProcess, hasActiveChildren, generateMcpConfig, } from './cc-process.js';
|
|
7
|
+
// Protocol types and parsers
|
|
8
|
+
export { parseCCOutputLine, createInitializeRequest, createPermissionResponse, createTextMessage, createImageMessage, createDocumentMessage, serializeMessage, extractAssistantText, extractToolUses, isStreamTextDelta, isStreamThinkingDelta, getStreamBlockType, } from './cc-protocol.js';
|
|
9
|
+
// Session store
|
|
10
|
+
export { SessionStore, getSessionJsonlPath, findMissedSessions, computeProjectSlug, summarizeJsonlDelta, formatCatchupMessage, } from './session.js';
|
|
11
|
+
// Streaming utilities
|
|
12
|
+
export { StreamAccumulator, SubAgentTracker, markdownToHtml, makeHtmlSafe, escapeHtml, formatUsageFooter, splitText, isSubAgentTool, } from './streaming.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,6DAA6D;AAC7D,2EAA2E;AAE3E,uBAAuB;AACvB,OAAO,EACL,SAAS,EAKT,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,6BAA6B;AAC7B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GAoCnB,MAAM,kBAAkB,CAAC;AAE1B,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GAMrB,MAAM,cAAc,CAAC;AAEtB,sBAAsB;AACtB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,cAAc,GAOf,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import type pino from 'pino';
|
|
3
|
+
export interface McpToolRequest {
|
|
4
|
+
id: string;
|
|
5
|
+
tool: 'send_file' | 'send_image' | 'send_voice';
|
|
6
|
+
agentId: string;
|
|
7
|
+
userId: string;
|
|
8
|
+
params: {
|
|
9
|
+
path: string;
|
|
10
|
+
caption?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface McpToolResponse {
|
|
14
|
+
id: string;
|
|
15
|
+
success: boolean;
|
|
16
|
+
error?: string;
|
|
17
|
+
}
|
|
18
|
+
export type McpToolHandler = (request: McpToolRequest) => Promise<McpToolResponse>;
|
|
19
|
+
export declare class McpBridgeServer extends EventEmitter {
|
|
20
|
+
private servers;
|
|
21
|
+
private handler;
|
|
22
|
+
private logger;
|
|
23
|
+
constructor(handler: McpToolHandler, logger: pino.Logger);
|
|
24
|
+
/** Start listening on a socket path for a specific agent-user pair */
|
|
25
|
+
listen(socketPath: string): void;
|
|
26
|
+
private handleConnection;
|
|
27
|
+
private processLine;
|
|
28
|
+
/** Stop listening on a specific socket */
|
|
29
|
+
close(socketPath: string): void;
|
|
30
|
+
/** Stop all sockets */
|
|
31
|
+
closeAll(): void;
|
|
32
|
+
}
|
|
33
|
+
export declare class McpBridgeClient {
|
|
34
|
+
private socketPath;
|
|
35
|
+
private socket;
|
|
36
|
+
private pendingRequests;
|
|
37
|
+
private buffer;
|
|
38
|
+
private connected;
|
|
39
|
+
constructor(socketPath: string);
|
|
40
|
+
connect(): Promise<void>;
|
|
41
|
+
private handleResponse;
|
|
42
|
+
sendRequest(request: McpToolRequest, timeoutMs?: number): Promise<McpToolResponse>;
|
|
43
|
+
private reconnect;
|
|
44
|
+
close(): void;
|
|
45
|
+
}
|