@agtd/agent 0.1.2 → 0.1.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.
- package/dist/agent.js +6 -49
- package/dist/{chunk-24ORBJSI.js → chunk-RJLNNX7L.js} +489 -32
- package/dist/cli.js +186 -120
- package/package.json +2 -1
- package/dist/__tests__/codexAdapterFindFile.test.d.ts +0 -2
- package/dist/__tests__/codexAdapterFindFile.test.d.ts.map +0 -1
- package/dist/__tests__/codexAdapterFindFile.test.js +0 -298
- package/dist/__tests__/codexAdapterFindFile.test.js.map +0 -1
- package/dist/__tests__/enrichers.test.d.ts +0 -2
- package/dist/__tests__/enrichers.test.d.ts.map +0 -1
- package/dist/__tests__/enrichers.test.js +0 -47
- package/dist/__tests__/enrichers.test.js.map +0 -1
- package/dist/__tests__/tmux.integration.test.d.ts +0 -2
- package/dist/__tests__/tmux.integration.test.d.ts.map +0 -1
- package/dist/__tests__/tmux.integration.test.js +0 -112
- package/dist/__tests__/tmux.integration.test.js.map +0 -1
- package/dist/__tests__/tmux.test.d.ts +0 -2
- package/dist/__tests__/tmux.test.d.ts.map +0 -1
- package/dist/__tests__/tmux.test.js +0 -26
- package/dist/__tests__/tmux.test.js.map +0 -1
- package/dist/__tests__/transcriptAdapters.test.d.ts +0 -2
- package/dist/__tests__/transcriptAdapters.test.d.ts.map +0 -1
- package/dist/__tests__/transcriptAdapters.test.js +0 -133
- package/dist/__tests__/transcriptAdapters.test.js.map +0 -1
- package/dist/adapters/claude-code.d.ts +0 -3
- package/dist/adapters/claude-code.d.ts.map +0 -1
- package/dist/adapters/claude-code.js +0 -48
- package/dist/adapters/claude-code.js.map +0 -1
- package/dist/adapters/codex.d.ts +0 -3
- package/dist/adapters/codex.d.ts.map +0 -1
- package/dist/adapters/codex.js +0 -33
- package/dist/adapters/codex.js.map +0 -1
- package/dist/adapters/generic.d.ts +0 -3
- package/dist/adapters/generic.d.ts.map +0 -1
- package/dist/adapters/generic.js +0 -38
- package/dist/adapters/generic.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -7
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -12
- package/dist/adapters/index.js.map +0 -1
- package/dist/agent.d.ts +0 -3
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js.map +0 -1
- package/dist/cli.d.ts +0 -11
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts +0 -26
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -48
- package/dist/config.js.map +0 -1
- package/dist/enrichers/git.d.ts +0 -6
- package/dist/enrichers/git.d.ts.map +0 -1
- package/dist/enrichers/git.js +0 -20
- package/dist/enrichers/git.js.map +0 -1
- package/dist/enrichers/pr.d.ts +0 -2
- package/dist/enrichers/pr.d.ts.map +0 -1
- package/dist/enrichers/pr.js +0 -10
- package/dist/enrichers/pr.js.map +0 -1
- package/dist/enrichers/transcript.d.ts +0 -8
- package/dist/enrichers/transcript.d.ts.map +0 -1
- package/dist/enrichers/transcript.js +0 -33
- package/dist/enrichers/transcript.js.map +0 -1
- package/dist/heartbeat.d.ts +0 -4
- package/dist/heartbeat.d.ts.map +0 -1
- package/dist/heartbeat.js +0 -15
- package/dist/heartbeat.js.map +0 -1
- package/dist/init.d.ts +0 -10
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -70
- package/dist/init.js.map +0 -1
- package/dist/register.d.ts +0 -3
- package/dist/register.d.ts.map +0 -1
- package/dist/register.js +0 -22
- package/dist/register.js.map +0 -1
- package/dist/sessionScanner.d.ts +0 -20
- package/dist/sessionScanner.d.ts.map +0 -1
- package/dist/sessionScanner.js +0 -479
- package/dist/sessionScanner.js.map +0 -1
- package/dist/spawn.d.ts +0 -8
- package/dist/spawn.d.ts.map +0 -1
- package/dist/spawn.js +0 -73
- package/dist/spawn.js.map +0 -1
- package/dist/syncProjects.d.ts +0 -3
- package/dist/syncProjects.d.ts.map +0 -1
- package/dist/syncProjects.js +0 -91
- package/dist/syncProjects.js.map +0 -1
- package/dist/terminalBridge.d.ts +0 -4
- package/dist/terminalBridge.d.ts.map +0 -1
- package/dist/terminalBridge.js +0 -42
- package/dist/terminalBridge.js.map +0 -1
- package/dist/tmux.d.ts +0 -21
- package/dist/tmux.d.ts.map +0 -1
- package/dist/tmux.js +0 -89
- package/dist/tmux.js.map +0 -1
- package/dist/transcriptAdapters/claude-code.d.ts +0 -3
- package/dist/transcriptAdapters/claude-code.d.ts.map +0 -1
- package/dist/transcriptAdapters/claude-code.js +0 -147
- package/dist/transcriptAdapters/claude-code.js.map +0 -1
- package/dist/transcriptAdapters/codex.d.ts +0 -3
- package/dist/transcriptAdapters/codex.d.ts.map +0 -1
- package/dist/transcriptAdapters/codex.js +0 -251
- package/dist/transcriptAdapters/codex.js.map +0 -1
- package/dist/transcriptAdapters/index.d.ts +0 -17
- package/dist/transcriptAdapters/index.d.ts.map +0 -1
- package/dist/transcriptAdapters/index.js +0 -9
- package/dist/transcriptAdapters/index.js.map +0 -1
- package/dist/wsClient.d.ts +0 -6
- package/dist/wsClient.d.ts.map +0 -1
- package/dist/wsClient.js +0 -156
- package/dist/wsClient.js.map +0 -1
package/dist/config.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export interface AgentConfig {
|
|
2
|
-
deviceId: string;
|
|
3
|
-
deviceName: string;
|
|
4
|
-
backendUrl: string;
|
|
5
|
-
apiKey: string;
|
|
6
|
-
projects: Array<{
|
|
7
|
-
name: string;
|
|
8
|
-
path: string;
|
|
9
|
-
}>;
|
|
10
|
-
/** Directories to scan for projects (each subdirectory = a project) */
|
|
11
|
-
projectDirs: string[];
|
|
12
|
-
}
|
|
13
|
-
export interface CliOverrides {
|
|
14
|
-
backend?: string;
|
|
15
|
-
apiKey?: string;
|
|
16
|
-
deviceName?: string;
|
|
17
|
-
}
|
|
18
|
-
/** Find the config file path in priority order */
|
|
19
|
-
export declare function resolveConfigPath(cliPath?: string): string | null;
|
|
20
|
-
/** Parse a config file into AgentConfig */
|
|
21
|
-
export declare function parseConfigFile(configPath: string): AgentConfig;
|
|
22
|
-
/** Apply CLI flag overrides to a config */
|
|
23
|
-
export declare function mergeCliOverrides(config: AgentConfig, overrides: CliOverrides): AgentConfig;
|
|
24
|
-
/** Original loadConfig — kept for backwards compat in monorepo dev */
|
|
25
|
-
export declare function loadConfig(cliPath?: string): AgentConfig;
|
|
26
|
-
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,uEAAuE;IACvE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAajE;AAED,2CAA2C;AAC3C,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAU/D;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,YAAY,GACtB,WAAW,CAOb;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAMxD"}
|
package/dist/config.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
-
import { hostname, platform, homedir } from "node:os";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
/** Find the config file path in priority order */
|
|
5
|
-
export function resolveConfigPath(cliPath) {
|
|
6
|
-
if (cliPath)
|
|
7
|
-
return cliPath;
|
|
8
|
-
const envPath = process.env["AGENT_CONFIG"];
|
|
9
|
-
if (envPath && existsSync(envPath))
|
|
10
|
-
return envPath;
|
|
11
|
-
const homePath = resolve(homedir(), ".agtd", "agent.config.json");
|
|
12
|
-
if (existsSync(homePath))
|
|
13
|
-
return homePath;
|
|
14
|
-
const cwdPath = resolve(process.cwd(), "agent.config.json");
|
|
15
|
-
if (existsSync(cwdPath))
|
|
16
|
-
return cwdPath;
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
/** Parse a config file into AgentConfig */
|
|
20
|
-
export function parseConfigFile(configPath) {
|
|
21
|
-
const raw = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
22
|
-
return {
|
|
23
|
-
deviceId: raw.deviceId ?? hostname(),
|
|
24
|
-
deviceName: raw.deviceName ?? `${hostname()}-${platform()}`,
|
|
25
|
-
backendUrl: raw.backendUrl ?? "http://localhost:3001",
|
|
26
|
-
apiKey: raw.apiKey ?? "",
|
|
27
|
-
projects: Array.isArray(raw.projects) ? raw.projects : [],
|
|
28
|
-
projectDirs: Array.isArray(raw.projectDirs) ? raw.projectDirs : [],
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/** Apply CLI flag overrides to a config */
|
|
32
|
-
export function mergeCliOverrides(config, overrides) {
|
|
33
|
-
return {
|
|
34
|
-
...config,
|
|
35
|
-
...(overrides.backend && { backendUrl: overrides.backend }),
|
|
36
|
-
...(overrides.apiKey && { apiKey: overrides.apiKey }),
|
|
37
|
-
...(overrides.deviceName && { deviceName: overrides.deviceName }),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/** Original loadConfig — kept for backwards compat in monorepo dev */
|
|
41
|
-
export function loadConfig(cliPath) {
|
|
42
|
-
const configPath = resolveConfigPath(cliPath);
|
|
43
|
-
if (!configPath) {
|
|
44
|
-
throw new Error("No config file found");
|
|
45
|
-
}
|
|
46
|
-
return parseConfigFile(configPath);
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,kDAAkD;AAClD,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5C,IAAI,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAEnD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC5D,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAExC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,EAAE;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,QAAQ,EAAE,IAAI,QAAQ,EAAE,EAAE;QAC3D,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,uBAAuB;QACrD,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;QACxB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QACzD,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;KACnE,CAAC;AACJ,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,SAAuB;IAEvB,OAAO;QACL,GAAG,MAAM;QACT,GAAG,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;QAC3D,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QACrD,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/enrichers/git.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/enrichers/git.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAatG"}
|
package/dist/enrichers/git.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { execSync } from "node:child_process";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
export function getGitInfo(cwd) {
|
|
4
|
-
if (!existsSync(`${cwd}/.git`))
|
|
5
|
-
return null;
|
|
6
|
-
try {
|
|
7
|
-
const branch = execSync("git rev-parse --abbrev-ref HEAD", { cwd, encoding: "utf-8", timeout: 3000 }).trim();
|
|
8
|
-
const repoName = execSync("git rev-parse --show-toplevel", { cwd, encoding: "utf-8", timeout: 3000 }).trim().split("/").pop() || "";
|
|
9
|
-
let remoteUrl = "";
|
|
10
|
-
try {
|
|
11
|
-
remoteUrl = execSync("git remote get-url origin", { cwd, encoding: "utf-8", timeout: 3000 }).trim();
|
|
12
|
-
}
|
|
13
|
-
catch { }
|
|
14
|
-
return { repoName, branch, remoteUrl };
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=git.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/enrichers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,iCAAiC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7G,MAAM,QAAQ,GAAG,QAAQ,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACpI,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,SAAS,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtG,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/enrichers/pr.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/enrichers/pr.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5E"}
|
package/dist/enrichers/pr.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export function derivePrUrl(remoteUrl, branch) {
|
|
2
|
-
if (!remoteUrl || !branch)
|
|
3
|
-
return null;
|
|
4
|
-
const match = remoteUrl.match(/github\.com[:/](.+?)\/(.+?)(?:\.git)?$/);
|
|
5
|
-
if (!match)
|
|
6
|
-
return null;
|
|
7
|
-
const [, owner, repo] = match;
|
|
8
|
-
return `https://github.com/${owner}/${repo}/pulls?q=head:${encodeURIComponent(branch)}`;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=pr.js.map
|
package/dist/enrichers/pr.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/enrichers/pr.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc;IAC3D,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACxE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IAC9B,OAAO,sBAAsB,KAAK,IAAI,IAAI,iBAAiB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1F,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export interface TranscriptInfo {
|
|
2
|
-
model: string | null;
|
|
3
|
-
contextPercent: number | null;
|
|
4
|
-
task: string | null;
|
|
5
|
-
mcpServers: string[] | null;
|
|
6
|
-
}
|
|
7
|
-
export declare function parseTranscript(output: string): TranscriptInfo;
|
|
8
|
-
//# sourceMappingURL=transcript.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/enrichers/transcript.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CA8B9D"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export function parseTranscript(output) {
|
|
2
|
-
const result = { model: null, contextPercent: null, task: null, mcpServers: null };
|
|
3
|
-
if (!output)
|
|
4
|
-
return result;
|
|
5
|
-
// Model detection
|
|
6
|
-
const modelPatterns = [
|
|
7
|
-
/model[:\s]+([a-z]+-(?:opus|sonnet|haiku)-[\d.-]+)/i,
|
|
8
|
-
/(claude-(?:opus|sonnet|haiku)-[\d.-]+)/i,
|
|
9
|
-
/(gpt-4[o\w-]*)/i,
|
|
10
|
-
/(o[13]-\w+)/i,
|
|
11
|
-
];
|
|
12
|
-
for (const pattern of modelPatterns) {
|
|
13
|
-
const match = output.match(pattern);
|
|
14
|
-
if (match) {
|
|
15
|
-
result.model = match[1] || match[0];
|
|
16
|
-
break;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
// Context usage
|
|
20
|
-
const contextMatch = output.match(/context[:\s]*(\d{1,3})%/i) || output.match(/(\d{1,3})%\s*(?:context|of context)/i);
|
|
21
|
-
if (contextMatch) {
|
|
22
|
-
const pct = parseInt(contextMatch[1]);
|
|
23
|
-
if (pct >= 0 && pct <= 100)
|
|
24
|
-
result.contextPercent = pct;
|
|
25
|
-
}
|
|
26
|
-
// MCP servers
|
|
27
|
-
const mcpMatch = output.match(/mcp[:\s]*\[([^\]]+)\]/i);
|
|
28
|
-
if (mcpMatch) {
|
|
29
|
-
result.mcpServers = mcpMatch[1].split(/[,\s]+/).map(s => s.trim()).filter(Boolean);
|
|
30
|
-
}
|
|
31
|
-
return result;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=transcript.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/enrichers/transcript.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,MAAM,GAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACnG,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAE3B,kBAAkB;IAClB,MAAM,aAAa,GAAG;QACpB,oDAAoD;QACpD,yCAAyC;QACzC,iBAAiB;QACjB,cAAc;KACf,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,MAAM;QAAC,CAAC;IAC5D,CAAC;IAED,gBAAgB;IAChB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtH,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG;YAAE,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC;IAC1D,CAAC;IAED,cAAc;IACd,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/heartbeat.d.ts
DELETED
package/dist/heartbeat.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
package/dist/heartbeat.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export async function sendHeartbeat(config, payload) {
|
|
2
|
-
const res = await fetch(`${config.backendUrl}/api/session-heartbeat`, {
|
|
3
|
-
method: "POST",
|
|
4
|
-
headers: {
|
|
5
|
-
"Content-Type": "application/json",
|
|
6
|
-
"x-api-key": config.apiKey,
|
|
7
|
-
"x-device-id": config.deviceId,
|
|
8
|
-
},
|
|
9
|
-
body: JSON.stringify(payload),
|
|
10
|
-
});
|
|
11
|
-
if (!res.ok) {
|
|
12
|
-
throw new Error(`Heartbeat failed: ${res.status} ${res.statusText}`);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=heartbeat.js.map
|
package/dist/heartbeat.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAmB,EACnB,OAAyB;IAEzB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,wBAAwB,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,MAAM,CAAC,MAAM;YAC1B,aAAa,EAAE,MAAM,CAAC,QAAQ;SAC/B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
|
package/dist/init.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig } from "./config.js";
|
|
2
|
-
export interface WizardAnswers {
|
|
3
|
-
backendUrl: string;
|
|
4
|
-
apiKey: string;
|
|
5
|
-
deviceName: string;
|
|
6
|
-
projectDirs: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function buildConfigFromAnswers(answers: WizardAnswers): AgentConfig;
|
|
9
|
-
export declare function runInitWizard(): Promise<AgentConfig>;
|
|
10
|
-
//# sourceMappingURL=init.d.ts.map
|
package/dist/init.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,CAc1E;AAWD,wBAAsB,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,CAiD1D"}
|
package/dist/init.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { createInterface } from "node:readline/promises";
|
|
2
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
import { hostname, platform, homedir } from "node:os";
|
|
5
|
-
export function buildConfigFromAnswers(answers) {
|
|
6
|
-
return {
|
|
7
|
-
deviceId: hostname(),
|
|
8
|
-
deviceName: answers.deviceName || `${hostname()}-${platform()}`,
|
|
9
|
-
backendUrl: answers.backendUrl,
|
|
10
|
-
apiKey: answers.apiKey,
|
|
11
|
-
projects: [],
|
|
12
|
-
projectDirs: answers.projectDirs
|
|
13
|
-
? answers.projectDirs
|
|
14
|
-
.split(",")
|
|
15
|
-
.map((d) => d.trim())
|
|
16
|
-
.filter(Boolean)
|
|
17
|
-
: [],
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
async function validateBackend(url) {
|
|
21
|
-
try {
|
|
22
|
-
const res = await fetch(`${url}/health`);
|
|
23
|
-
return res.ok;
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export async function runInitWizard() {
|
|
30
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
31
|
-
console.log("\nNo config found. Let's set up your agent.\n");
|
|
32
|
-
try {
|
|
33
|
-
const backendUrl = await rl.question("Backend URL: ");
|
|
34
|
-
if (!backendUrl) {
|
|
35
|
-
throw new Error("Backend URL is required");
|
|
36
|
-
}
|
|
37
|
-
process.stdout.write("Checking backend... ");
|
|
38
|
-
const reachable = await validateBackend(backendUrl);
|
|
39
|
-
if (!reachable) {
|
|
40
|
-
console.log("unreachable (continuing anyway)");
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.log("ok");
|
|
44
|
-
}
|
|
45
|
-
const apiKey = await rl.question("API Key: ");
|
|
46
|
-
if (!apiKey) {
|
|
47
|
-
throw new Error("API Key is required");
|
|
48
|
-
}
|
|
49
|
-
const defaultName = `${hostname()}-${platform()}`;
|
|
50
|
-
const deviceName = await rl.question(`Device name (${defaultName}): `);
|
|
51
|
-
const projectDirs = await rl.question("Project directories (comma-separated, optional): ");
|
|
52
|
-
const config = buildConfigFromAnswers({
|
|
53
|
-
backendUrl,
|
|
54
|
-
apiKey,
|
|
55
|
-
deviceName,
|
|
56
|
-
projectDirs,
|
|
57
|
-
});
|
|
58
|
-
// Save config
|
|
59
|
-
const configDir = resolve(homedir(), ".agtd");
|
|
60
|
-
const configPath = resolve(configDir, "agent.config.json");
|
|
61
|
-
mkdirSync(configDir, { recursive: true });
|
|
62
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
63
|
-
console.log(`\nConfig saved to ${configPath}\n`);
|
|
64
|
-
return config;
|
|
65
|
-
}
|
|
66
|
-
finally {
|
|
67
|
-
rl.close();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/dist/register.d.ts
DELETED
package/dist/register.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBvE"}
|
package/dist/register.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { hostname, platform } from "node:os";
|
|
2
|
-
export async function registerDevice(config) {
|
|
3
|
-
const payload = {
|
|
4
|
-
id: config.deviceId,
|
|
5
|
-
name: config.deviceName,
|
|
6
|
-
host: hostname(),
|
|
7
|
-
os: platform(),
|
|
8
|
-
};
|
|
9
|
-
const res = await fetch(`${config.backendUrl}/api/register-device`, {
|
|
10
|
-
method: "POST",
|
|
11
|
-
headers: {
|
|
12
|
-
"Content-Type": "application/json",
|
|
13
|
-
"x-api-key": config.apiKey,
|
|
14
|
-
},
|
|
15
|
-
body: JSON.stringify(payload),
|
|
16
|
-
});
|
|
17
|
-
if (!res.ok) {
|
|
18
|
-
throw new Error(`Register device failed: ${res.status} ${res.statusText}`);
|
|
19
|
-
}
|
|
20
|
-
console.log(`Device registered: ${config.deviceId}`);
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=register.js.map
|
package/dist/register.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB;IACtD,MAAM,OAAO,GAA0B;QACrC,EAAE,EAAE,MAAM,CAAC,QAAQ;QACnB,IAAI,EAAE,MAAM,CAAC,UAAU;QACvB,IAAI,EAAE,QAAQ,EAAE;QAChB,EAAE,EAAE,QAAQ,EAAE;KACf,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,sBAAsB,EAAE;QAClE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,MAAM,CAAC,MAAM;SAC3B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,CAAC"}
|
package/dist/sessionScanner.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig } from "./config.js";
|
|
2
|
-
interface DiscoveredSession {
|
|
3
|
-
sessionId: string;
|
|
4
|
-
project: string;
|
|
5
|
-
cwd: string;
|
|
6
|
-
branch: string;
|
|
7
|
-
model: string;
|
|
8
|
-
status: "working" | "idle" | "awaiting_permission";
|
|
9
|
-
agentType: string;
|
|
10
|
-
pid: number;
|
|
11
|
-
tmuxSession: string;
|
|
12
|
-
}
|
|
13
|
-
/** Discover all agent sessions (Claude Code + Codex) */
|
|
14
|
-
export declare function discoverAllSessions(): DiscoveredSession[];
|
|
15
|
-
export declare const discoverClaudeSessionsAll: typeof discoverAllSessions;
|
|
16
|
-
/** Post heartbeats for all discovered sessions */
|
|
17
|
-
export declare function scanAndReportSessions(config: AgentConfig): Promise<void>;
|
|
18
|
-
export declare function startSessionScanner(config: AgentConfig): NodeJS.Timeout;
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=sessionScanner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionScanner.d.ts","sourceRoot":"","sources":["../src/sessionScanner.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,qBAAqB,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAqeD,wDAAwD;AACxD,wBAAgB,mBAAmB,IAAI,iBAAiB,EAAE,CAOzD;AAGD,eAAO,MAAM,yBAAyB,4BAAsB,CAAC;AAE7D,kDAAkD;AAClD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAoCf;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAMvE"}
|