@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.
Files changed (97) hide show
  1. package/CLAUDE.md +296 -0
  2. package/README.md +142 -0
  3. package/dist/example.d.ts +3 -0
  4. package/dist/example.d.ts.map +1 -0
  5. package/dist/example.js +49 -0
  6. package/dist/example.js.map +1 -0
  7. package/dist/index.d.ts +7 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +5 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/src/agent-registry.d.ts +16 -0
  12. package/dist/src/agent-registry.d.ts.map +1 -0
  13. package/dist/src/agent-registry.js +54 -0
  14. package/dist/src/agent-registry.js.map +1 -0
  15. package/dist/src/agent.d.ts +60 -0
  16. package/dist/src/agent.d.ts.map +1 -0
  17. package/dist/src/agent.js +371 -0
  18. package/dist/src/agent.js.map +1 -0
  19. package/dist/src/agents/execution.d.ts +2 -0
  20. package/dist/src/agents/execution.d.ts.map +1 -0
  21. package/dist/src/agents/execution.js +54 -0
  22. package/dist/src/agents/execution.js.map +1 -0
  23. package/dist/src/agents/planning.d.ts +2 -0
  24. package/dist/src/agents/planning.d.ts.map +1 -0
  25. package/dist/src/agents/planning.js +68 -0
  26. package/dist/src/agents/planning.js.map +1 -0
  27. package/dist/src/event-transformer.d.ts +7 -0
  28. package/dist/src/event-transformer.d.ts.map +1 -0
  29. package/dist/src/event-transformer.js +174 -0
  30. package/dist/src/event-transformer.js.map +1 -0
  31. package/dist/src/file-manager.d.ts +30 -0
  32. package/dist/src/file-manager.d.ts.map +1 -0
  33. package/dist/src/file-manager.js +181 -0
  34. package/dist/src/file-manager.js.map +1 -0
  35. package/dist/src/git-manager.d.ts +49 -0
  36. package/dist/src/git-manager.d.ts.map +1 -0
  37. package/dist/src/git-manager.js +278 -0
  38. package/dist/src/git-manager.js.map +1 -0
  39. package/dist/src/posthog-api.d.ts +48 -0
  40. package/dist/src/posthog-api.d.ts.map +1 -0
  41. package/dist/src/posthog-api.js +110 -0
  42. package/dist/src/posthog-api.js.map +1 -0
  43. package/dist/src/prompt-builder.d.ts +17 -0
  44. package/dist/src/prompt-builder.d.ts.map +1 -0
  45. package/dist/src/prompt-builder.js +75 -0
  46. package/dist/src/prompt-builder.js.map +1 -0
  47. package/dist/src/stage-executor.d.ts +16 -0
  48. package/dist/src/stage-executor.d.ts.map +1 -0
  49. package/dist/src/stage-executor.js +119 -0
  50. package/dist/src/stage-executor.js.map +1 -0
  51. package/dist/src/task-manager.d.ts +25 -0
  52. package/dist/src/task-manager.d.ts.map +1 -0
  53. package/dist/src/task-manager.js +119 -0
  54. package/dist/src/task-manager.js.map +1 -0
  55. package/dist/src/template-manager.d.ts +30 -0
  56. package/dist/src/template-manager.d.ts.map +1 -0
  57. package/dist/src/template-manager.js +118 -0
  58. package/dist/src/template-manager.js.map +1 -0
  59. package/dist/src/types.d.ts +163 -0
  60. package/dist/src/types.d.ts.map +1 -0
  61. package/dist/src/types.js +9 -0
  62. package/dist/src/types.js.map +1 -0
  63. package/dist/src/utils/logger.d.ts +29 -0
  64. package/dist/src/utils/logger.d.ts.map +1 -0
  65. package/dist/src/utils/logger.js +66 -0
  66. package/dist/src/utils/logger.js.map +1 -0
  67. package/dist/src/utils/mcp.d.ts +10 -0
  68. package/dist/src/utils/mcp.d.ts.map +1 -0
  69. package/dist/src/utils/mcp.js +16 -0
  70. package/dist/src/utils/mcp.js.map +1 -0
  71. package/dist/src/workflow-registry.d.ts +11 -0
  72. package/dist/src/workflow-registry.d.ts.map +1 -0
  73. package/dist/src/workflow-registry.js +26 -0
  74. package/dist/src/workflow-registry.js.map +1 -0
  75. package/dist/src/workflow-types.d.ts +45 -0
  76. package/dist/src/workflow-types.d.ts.map +1 -0
  77. package/dist/src/workflow-types.js +2 -0
  78. package/dist/src/workflow-types.js.map +1 -0
  79. package/package.json +61 -0
  80. package/src/agent-registry.ts +60 -0
  81. package/src/agent.ts +428 -0
  82. package/src/agents/execution.ts +53 -0
  83. package/src/agents/planning.ts +67 -0
  84. package/src/event-transformer.ts +189 -0
  85. package/src/file-manager.ts +204 -0
  86. package/src/git-manager.ts +344 -0
  87. package/src/posthog-api.ts +169 -0
  88. package/src/prompt-builder.ts +93 -0
  89. package/src/stage-executor.ts +137 -0
  90. package/src/task-manager.ts +155 -0
  91. package/src/template-manager.ts +149 -0
  92. package/src/templates/plan-template.md +45 -0
  93. package/src/types.ts +223 -0
  94. package/src/utils/logger.ts +79 -0
  95. package/src/utils/mcp.ts +15 -0
  96. package/src/workflow-registry.ts +31 -0
  97. package/src/workflow-types.ts +53 -0
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Simple logger utility with configurable debug mode
3
+ */
4
+ export enum LogLevel {
5
+ ERROR = 0,
6
+ WARN = 1,
7
+ INFO = 2,
8
+ DEBUG = 3
9
+ }
10
+
11
+ export interface LoggerConfig {
12
+ debug?: boolean;
13
+ prefix?: string;
14
+ }
15
+
16
+ export class Logger {
17
+ private debugEnabled: boolean;
18
+ private prefix: string;
19
+
20
+ constructor(config: LoggerConfig = {}) {
21
+ this.debugEnabled = config.debug ?? false;
22
+ this.prefix = config.prefix ?? '[PostHog Agent]';
23
+ }
24
+
25
+ setDebug(enabled: boolean) {
26
+ this.debugEnabled = enabled;
27
+ }
28
+
29
+ private formatMessage(level: string, message: string, data?: any): string {
30
+ const timestamp = new Date().toISOString();
31
+ const base = `${timestamp} ${this.prefix} ${level} ${message}`;
32
+
33
+ if (data !== undefined) {
34
+ return `${base} ${JSON.stringify(data, null, 2)}`;
35
+ }
36
+
37
+ return base;
38
+ }
39
+
40
+ error(message: string, error?: Error | any) {
41
+ // Always log errors
42
+ if (error instanceof Error) {
43
+ console.error(this.formatMessage('[ERROR]', message, {
44
+ message: error.message,
45
+ stack: error.stack
46
+ }));
47
+ } else {
48
+ console.error(this.formatMessage('[ERROR]', message, error));
49
+ }
50
+ }
51
+
52
+ warn(message: string, data?: any) {
53
+ if (this.debugEnabled) {
54
+ console.warn(this.formatMessage('[WARN]', message, data));
55
+ }
56
+ }
57
+
58
+ info(message: string, data?: any) {
59
+ if (this.debugEnabled) {
60
+ console.log(this.formatMessage('[INFO]', message, data));
61
+ }
62
+ }
63
+
64
+ debug(message: string, data?: any) {
65
+ if (this.debugEnabled) {
66
+ console.log(this.formatMessage('[DEBUG]', message, data));
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Create a child logger with additional prefix
72
+ */
73
+ child(childPrefix: string): Logger {
74
+ return new Logger({
75
+ debug: this.debugEnabled,
76
+ prefix: `${this.prefix} [${childPrefix}]`
77
+ });
78
+ }
79
+ }
@@ -0,0 +1,15 @@
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
+ };
@@ -0,0 +1,31 @@
1
+ import type { WorkflowDefinition } from './workflow-types';
2
+ import { PostHogAPIClient } from './posthog-api';
3
+
4
+ export class WorkflowRegistry {
5
+ private workflowsById: Map<string, WorkflowDefinition> = new Map();
6
+ private apiClient?: PostHogAPIClient;
7
+
8
+ constructor(apiClient?: PostHogAPIClient, staticDefinitions?: WorkflowDefinition[]) {
9
+ this.apiClient = apiClient;
10
+ if (staticDefinitions) {
11
+ for (const w of staticDefinitions) this.workflowsById.set(w.id, w);
12
+ }
13
+ }
14
+
15
+ async loadWorkflows(): Promise<void> {
16
+ if (this.apiClient) {
17
+ const workflows = await this.apiClient.listWorkflows();
18
+ for (const w of workflows) this.workflowsById.set(w.id, w);
19
+ }
20
+ }
21
+
22
+ getWorkflow(id: string): WorkflowDefinition | undefined {
23
+ return this.workflowsById.get(id);
24
+ }
25
+
26
+ listWorkflows(): WorkflowDefinition[] {
27
+ return Array.from(this.workflowsById.values());
28
+ }
29
+ }
30
+
31
+
@@ -0,0 +1,53 @@
1
+ import type { PermissionMode, AgentEvent } from './types';
2
+
3
+ export type AgentType = 'planning' | 'execution' | 'review' | 'testing';
4
+
5
+ export interface AgentDefinition {
6
+ id: string;
7
+ name: string;
8
+ agent_type: AgentType;
9
+ description?: string;
10
+ config?: Record<string, any>;
11
+ }
12
+
13
+ export interface WorkflowStage {
14
+ id: string;
15
+ key: string;
16
+ name: string;
17
+ position: number;
18
+ agent_name?: string | null;
19
+ is_manual_only?: boolean;
20
+ color?: string;
21
+ }
22
+
23
+ export interface WorkflowDefinition {
24
+ id: string;
25
+ name: string;
26
+ description?: string;
27
+ stages: WorkflowStage[];
28
+ }
29
+
30
+ export interface StageOverrideOptions {
31
+ permissionMode?: PermissionMode;
32
+ createPlanningBranch?: boolean;
33
+ createImplementationBranch?: boolean;
34
+ openPullRequest?: boolean;
35
+ queryOverrides?: Record<string, any>;
36
+ }
37
+
38
+ export interface WorkflowStageExecutionResult {
39
+ plan?: string;
40
+ results?: any[];
41
+ }
42
+
43
+ export interface WorkflowExecutionOptions {
44
+ repositoryPath?: string;
45
+ permissionMode?: PermissionMode;
46
+ autoProgress?: boolean;
47
+ resumeFromCurrentStage?: boolean;
48
+ stageOverrides?: Record<string, StageOverrideOptions>;
49
+ onEvent?: (event: AgentEvent) => void;
50
+ queryOverrides?: Record<string, any>;
51
+ }
52
+
53
+