@posthog/agent 1.0.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/CLAUDE.md +296 -0
- package/README.md +142 -0
- package/dist/example.d.ts +3 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +49 -0
- package/dist/example.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/src/agent-registry.d.ts +16 -0
- package/dist/src/agent-registry.d.ts.map +1 -0
- package/dist/src/agent-registry.js +54 -0
- package/dist/src/agent-registry.js.map +1 -0
- package/dist/src/agent.d.ts +60 -0
- package/dist/src/agent.d.ts.map +1 -0
- package/dist/src/agent.js +371 -0
- package/dist/src/agent.js.map +1 -0
- package/dist/src/agents/execution.d.ts +2 -0
- package/dist/src/agents/execution.d.ts.map +1 -0
- package/dist/src/agents/execution.js +54 -0
- package/dist/src/agents/execution.js.map +1 -0
- package/dist/src/agents/planning.d.ts +2 -0
- package/dist/src/agents/planning.d.ts.map +1 -0
- package/dist/src/agents/planning.js +68 -0
- package/dist/src/agents/planning.js.map +1 -0
- package/dist/src/event-transformer.d.ts +7 -0
- package/dist/src/event-transformer.d.ts.map +1 -0
- package/dist/src/event-transformer.js +174 -0
- package/dist/src/event-transformer.js.map +1 -0
- package/dist/src/file-manager.d.ts +30 -0
- package/dist/src/file-manager.d.ts.map +1 -0
- package/dist/src/file-manager.js +181 -0
- package/dist/src/file-manager.js.map +1 -0
- package/dist/src/git-manager.d.ts +49 -0
- package/dist/src/git-manager.d.ts.map +1 -0
- package/dist/src/git-manager.js +278 -0
- package/dist/src/git-manager.js.map +1 -0
- package/dist/src/posthog-api.d.ts +48 -0
- package/dist/src/posthog-api.d.ts.map +1 -0
- package/dist/src/posthog-api.js +110 -0
- package/dist/src/posthog-api.js.map +1 -0
- package/dist/src/prompt-builder.d.ts +17 -0
- package/dist/src/prompt-builder.d.ts.map +1 -0
- package/dist/src/prompt-builder.js +75 -0
- package/dist/src/prompt-builder.js.map +1 -0
- package/dist/src/stage-executor.d.ts +16 -0
- package/dist/src/stage-executor.d.ts.map +1 -0
- package/dist/src/stage-executor.js +119 -0
- package/dist/src/stage-executor.js.map +1 -0
- package/dist/src/task-manager.d.ts +25 -0
- package/dist/src/task-manager.d.ts.map +1 -0
- package/dist/src/task-manager.js +119 -0
- package/dist/src/task-manager.js.map +1 -0
- package/dist/src/template-manager.d.ts +30 -0
- package/dist/src/template-manager.d.ts.map +1 -0
- package/dist/src/template-manager.js +118 -0
- package/dist/src/template-manager.js.map +1 -0
- package/dist/src/types.d.ts +163 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +9 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/logger.d.ts +29 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +66 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/mcp.d.ts +10 -0
- package/dist/src/utils/mcp.d.ts.map +1 -0
- package/dist/src/utils/mcp.js +16 -0
- package/dist/src/utils/mcp.js.map +1 -0
- package/dist/src/workflow-registry.d.ts +11 -0
- package/dist/src/workflow-registry.d.ts.map +1 -0
- package/dist/src/workflow-registry.js +26 -0
- package/dist/src/workflow-registry.js.map +1 -0
- package/dist/src/workflow-types.d.ts +45 -0
- package/dist/src/workflow-types.d.ts.map +1 -0
- package/dist/src/workflow-types.js +2 -0
- package/dist/src/workflow-types.js.map +1 -0
- package/package.json +61 -0
- package/src/agent-registry.ts +60 -0
- package/src/agent.ts +428 -0
- package/src/agents/execution.ts +53 -0
- package/src/agents/planning.ts +67 -0
- package/src/event-transformer.ts +189 -0
- package/src/file-manager.ts +204 -0
- package/src/git-manager.ts +344 -0
- package/src/posthog-api.ts +169 -0
- package/src/prompt-builder.ts +93 -0
- package/src/stage-executor.ts +137 -0
- package/src/task-manager.ts +155 -0
- package/src/template-manager.ts +149 -0
- package/src/templates/plan-template.md +45 -0
- package/src/types.ts +223 -0
- package/src/utils/logger.ts +79 -0
- package/src/utils/mcp.ts +15 -0
- package/src/workflow-registry.ts +31 -0
- package/src/workflow-types.ts +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,QAAQ;IAChB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACZ;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,MAAM;IACf,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,YAAiB;IAKrC,QAAQ,CAAC,OAAO,EAAE,OAAO;IAIzB,OAAO,CAAC,aAAa;IAWrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG;IAY1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAMhC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAMhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAMjC;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAMrC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple logger utility with configurable debug mode
|
|
3
|
+
*/
|
|
4
|
+
export var LogLevel;
|
|
5
|
+
(function (LogLevel) {
|
|
6
|
+
LogLevel[LogLevel["ERROR"] = 0] = "ERROR";
|
|
7
|
+
LogLevel[LogLevel["WARN"] = 1] = "WARN";
|
|
8
|
+
LogLevel[LogLevel["INFO"] = 2] = "INFO";
|
|
9
|
+
LogLevel[LogLevel["DEBUG"] = 3] = "DEBUG";
|
|
10
|
+
})(LogLevel || (LogLevel = {}));
|
|
11
|
+
export class Logger {
|
|
12
|
+
debugEnabled;
|
|
13
|
+
prefix;
|
|
14
|
+
constructor(config = {}) {
|
|
15
|
+
this.debugEnabled = config.debug ?? false;
|
|
16
|
+
this.prefix = config.prefix ?? '[PostHog Agent]';
|
|
17
|
+
}
|
|
18
|
+
setDebug(enabled) {
|
|
19
|
+
this.debugEnabled = enabled;
|
|
20
|
+
}
|
|
21
|
+
formatMessage(level, message, data) {
|
|
22
|
+
const timestamp = new Date().toISOString();
|
|
23
|
+
const base = `${timestamp} ${this.prefix} ${level} ${message}`;
|
|
24
|
+
if (data !== undefined) {
|
|
25
|
+
return `${base} ${JSON.stringify(data, null, 2)}`;
|
|
26
|
+
}
|
|
27
|
+
return base;
|
|
28
|
+
}
|
|
29
|
+
error(message, error) {
|
|
30
|
+
// Always log errors
|
|
31
|
+
if (error instanceof Error) {
|
|
32
|
+
console.error(this.formatMessage('[ERROR]', message, {
|
|
33
|
+
message: error.message,
|
|
34
|
+
stack: error.stack
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.error(this.formatMessage('[ERROR]', message, error));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
warn(message, data) {
|
|
42
|
+
if (this.debugEnabled) {
|
|
43
|
+
console.warn(this.formatMessage('[WARN]', message, data));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
info(message, data) {
|
|
47
|
+
if (this.debugEnabled) {
|
|
48
|
+
console.log(this.formatMessage('[INFO]', message, data));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
debug(message, data) {
|
|
52
|
+
if (this.debugEnabled) {
|
|
53
|
+
console.log(this.formatMessage('[DEBUG]', message, data));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a child logger with additional prefix
|
|
58
|
+
*/
|
|
59
|
+
child(childPrefix) {
|
|
60
|
+
return new Logger({
|
|
61
|
+
debug: this.debugEnabled,
|
|
62
|
+
prefix: `${this.prefix} [${childPrefix}]`
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAChB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACb,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAOD,MAAM,OAAO,MAAM;IACP,YAAY,CAAU;IACtB,MAAM,CAAS;IAEvB,YAAY,SAAuB,EAAE;QACjC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,iBAAiB,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,OAAgB;QACrB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAChC,CAAC;IAEO,aAAa,CAAC,KAAa,EAAE,OAAe,EAAE,IAAU;QAC5D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QAE/D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAAmB;QACtC,oBAAoB;QACpB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE;gBACjD,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;aACrB,CAAC,CAAC,CAAC;QACR,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAU;QAC5B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAU;QAC5B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAU;QAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAmB;QACrB,OAAO,IAAI,MAAM,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,WAAW,GAAG;SAC5C,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/utils/mcp.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;CAcvB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const POSTHOG_MCP = {
|
|
2
|
+
posthog: {
|
|
3
|
+
command: "npx",
|
|
4
|
+
args: [
|
|
5
|
+
"-y",
|
|
6
|
+
"mcp-remote@latest",
|
|
7
|
+
"https://mcp.posthog.com/mcp",
|
|
8
|
+
"--header",
|
|
9
|
+
"Authorization:${POSTHOG_AUTH_HEADER}"
|
|
10
|
+
],
|
|
11
|
+
env: {
|
|
12
|
+
"POSTHOG_AUTH_HEADER": `Bearer ${process.env.POSTHOG_API_KEY}`
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/utils/mcp.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,OAAO,EAAE;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACF,IAAI;YACJ,mBAAmB;YACnB,6BAA6B;YAC7B,UAAU;YACV,sCAAsC;SACzC;QACD,GAAG,EAAE;YACD,qBAAqB,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;SACjE;KACJ;CACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WorkflowDefinition } from './workflow-types';
|
|
2
|
+
import { PostHogAPIClient } from './posthog-api';
|
|
3
|
+
export declare class WorkflowRegistry {
|
|
4
|
+
private workflowsById;
|
|
5
|
+
private apiClient?;
|
|
6
|
+
constructor(apiClient?: PostHogAPIClient, staticDefinitions?: WorkflowDefinition[]);
|
|
7
|
+
loadWorkflows(): Promise<void>;
|
|
8
|
+
getWorkflow(id: string): WorkflowDefinition | undefined;
|
|
9
|
+
listWorkflows(): WorkflowDefinition[];
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=workflow-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-registry.d.ts","sourceRoot":"","sources":["../../src/workflow-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,SAAS,CAAC,CAAmB;gBAEzB,SAAS,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,kBAAkB,EAAE;IAO5E,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIvD,aAAa,IAAI,kBAAkB,EAAE;CAGtC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PostHogAPIClient } from './posthog-api';
|
|
2
|
+
export class WorkflowRegistry {
|
|
3
|
+
workflowsById = new Map();
|
|
4
|
+
apiClient;
|
|
5
|
+
constructor(apiClient, staticDefinitions) {
|
|
6
|
+
this.apiClient = apiClient;
|
|
7
|
+
if (staticDefinitions) {
|
|
8
|
+
for (const w of staticDefinitions)
|
|
9
|
+
this.workflowsById.set(w.id, w);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
async loadWorkflows() {
|
|
13
|
+
if (this.apiClient) {
|
|
14
|
+
const workflows = await this.apiClient.listWorkflows();
|
|
15
|
+
for (const w of workflows)
|
|
16
|
+
this.workflowsById.set(w.id, w);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
getWorkflow(id) {
|
|
20
|
+
return this.workflowsById.get(id);
|
|
21
|
+
}
|
|
22
|
+
listWorkflows() {
|
|
23
|
+
return Array.from(this.workflowsById.values());
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=workflow-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-registry.js","sourceRoot":"","sources":["../../src/workflow-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,OAAO,gBAAgB;IACnB,aAAa,GAAoC,IAAI,GAAG,EAAE,CAAC;IAC3D,SAAS,CAAoB;IAErC,YAAY,SAA4B,EAAE,iBAAwC;QAChF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,iBAAiB,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,IAAI,iBAAiB;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YACvD,KAAK,MAAM,CAAC,IAAI,SAAS;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { PermissionMode, AgentEvent } from './types';
|
|
2
|
+
export type AgentType = 'planning' | 'execution' | 'review' | 'testing';
|
|
3
|
+
export interface AgentDefinition {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
agent_type: AgentType;
|
|
7
|
+
description?: string;
|
|
8
|
+
config?: Record<string, any>;
|
|
9
|
+
}
|
|
10
|
+
export interface WorkflowStage {
|
|
11
|
+
id: string;
|
|
12
|
+
key: string;
|
|
13
|
+
name: string;
|
|
14
|
+
position: number;
|
|
15
|
+
agent_name?: string | null;
|
|
16
|
+
is_manual_only?: boolean;
|
|
17
|
+
color?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface WorkflowDefinition {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
stages: WorkflowStage[];
|
|
24
|
+
}
|
|
25
|
+
export interface StageOverrideOptions {
|
|
26
|
+
permissionMode?: PermissionMode;
|
|
27
|
+
createPlanningBranch?: boolean;
|
|
28
|
+
createImplementationBranch?: boolean;
|
|
29
|
+
openPullRequest?: boolean;
|
|
30
|
+
queryOverrides?: Record<string, any>;
|
|
31
|
+
}
|
|
32
|
+
export interface WorkflowStageExecutionResult {
|
|
33
|
+
plan?: string;
|
|
34
|
+
results?: any[];
|
|
35
|
+
}
|
|
36
|
+
export interface WorkflowExecutionOptions {
|
|
37
|
+
repositoryPath?: string;
|
|
38
|
+
permissionMode?: PermissionMode;
|
|
39
|
+
autoProgress?: boolean;
|
|
40
|
+
resumeFromCurrentStage?: boolean;
|
|
41
|
+
stageOverrides?: Record<string, StageOverrideOptions>;
|
|
42
|
+
onEvent?: (event: AgentEvent) => void;
|
|
43
|
+
queryOverrides?: Record<string, any>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=workflow-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-types.d.ts","sourceRoot":"","sources":["../../src/workflow-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-types.js","sourceRoot":"","sources":["../../src/workflow-types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@posthog/agent",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "TypeScript agent framework wrapping Claude Agent SDK with Git-based workflow for PostHog tasks",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"type": "module",
|
|
15
|
+
"keywords": [
|
|
16
|
+
"posthog",
|
|
17
|
+
"claude",
|
|
18
|
+
"agent",
|
|
19
|
+
"ai",
|
|
20
|
+
"git",
|
|
21
|
+
"workflow",
|
|
22
|
+
"typescript"
|
|
23
|
+
],
|
|
24
|
+
"author": "PostHog",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/PostHog/posthog-agent"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsc --project tsconfig.build.json",
|
|
32
|
+
"example": "bun run example-usage.ts",
|
|
33
|
+
"dev": "bun run example-usage.ts",
|
|
34
|
+
"changeset": "changeset",
|
|
35
|
+
"version-packages": "changeset version",
|
|
36
|
+
"release": "changeset publish",
|
|
37
|
+
"prepublishOnly": "bun run build"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=20.0.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@changesets/cli": "^2.27.8",
|
|
44
|
+
"@types/bun": "latest",
|
|
45
|
+
"typescript": "^5.5.0"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@anthropic-ai/claude-agent-sdk": "^0.1.1",
|
|
49
|
+
"dotenv": "^17.2.3"
|
|
50
|
+
},
|
|
51
|
+
"files": [
|
|
52
|
+
"dist/**/*",
|
|
53
|
+
"src/**/*",
|
|
54
|
+
"README.md",
|
|
55
|
+
"CLAUDE.md"
|
|
56
|
+
],
|
|
57
|
+
"publishConfig": {
|
|
58
|
+
"access": "public"
|
|
59
|
+
},
|
|
60
|
+
"packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748"
|
|
61
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { AgentDefinition, AgentType } from './workflow-types';
|
|
2
|
+
|
|
3
|
+
export class AgentRegistry {
|
|
4
|
+
private agentsByName: Map<string, AgentDefinition> = new Map();
|
|
5
|
+
|
|
6
|
+
constructor(definitions?: AgentDefinition[]) {
|
|
7
|
+
if (definitions) {
|
|
8
|
+
for (const def of definitions) this.register(def);
|
|
9
|
+
} else {
|
|
10
|
+
for (const def of AgentRegistry.getDefaultAgents()) this.register(def);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static getDefaultAgents(): AgentDefinition[] {
|
|
15
|
+
return [
|
|
16
|
+
{
|
|
17
|
+
id: 'planning_basic',
|
|
18
|
+
name: 'planning_basic',
|
|
19
|
+
agent_type: 'planning',
|
|
20
|
+
description: 'Analyze repo and produce implementation plan',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'code_generation',
|
|
24
|
+
name: 'code_generation',
|
|
25
|
+
agent_type: 'execution',
|
|
26
|
+
description: 'Implements code changes using Claude SDK',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'review_basic',
|
|
30
|
+
name: 'review_basic',
|
|
31
|
+
agent_type: 'review',
|
|
32
|
+
description: 'Reviews changes and suggests fixes',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: 'testing_basic',
|
|
36
|
+
name: 'testing_basic',
|
|
37
|
+
agent_type: 'testing',
|
|
38
|
+
description: 'Runs tests and reports results',
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
register(def: AgentDefinition): void {
|
|
44
|
+
this.agentsByName.set(def.name, def);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
getAgent(name: string): AgentDefinition | undefined {
|
|
48
|
+
return this.agentsByName.get(name);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
listAgents(): AgentDefinition[] {
|
|
52
|
+
return Array.from(this.agentsByName.values());
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
exportForPostHog(): { id: string; name: string; agent_type: AgentType; description?: string }[] {
|
|
56
|
+
return this.listAgents().map(({ id, name, agent_type, description }) => ({ id, name, agent_type, description }));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|