@posthog/agent 1.12.0 → 1.14.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/dist/_virtual/_commonjsHelpers.js +6 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/index.js +4 -0
- package/dist/_virtual/index.js.map +1 -0
- package/dist/node_modules/@ai-sdk/anthropic/dist/index.js +1154 -0
- package/dist/node_modules/@ai-sdk/anthropic/dist/index.js.map +1 -0
- package/dist/node_modules/@ai-sdk/provider/dist/index.js +296 -0
- package/dist/node_modules/@ai-sdk/provider/dist/index.js.map +1 -0
- package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +576 -0
- package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js.map +1 -0
- package/dist/node_modules/@ai-sdk/ui-utils/dist/index.js +741 -0
- package/dist/node_modules/@ai-sdk/ui-utils/dist/index.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/context.js +112 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/context.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/diag.js +123 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/diag.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/metrics.js +62 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/metrics.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/propagation.js +91 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/propagation.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/trace.js +79 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/api/trace.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js +59 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js +99 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/utils.js +31 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/utils.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js +69 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/context/context.js +54 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/context/context.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/context-api.js +22 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/context-api.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js +104 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js +44 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/types.js +43 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/types.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/diag-api.js +27 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/diag-api.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js +62 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/internal/semver.js +121 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/internal/semver.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js +167 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js +33 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics-api.js +22 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics-api.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js +21 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js +35 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js +40 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation-api.js +22 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation-api.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js +70 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js +78 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js +34 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js +55 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js +56 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js +76 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js +27 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js +45 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/status.js +22 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/status.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js +25 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace-api.js +24 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/trace-api.js.map +1 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/version.js +20 -0
- package/dist/node_modules/@opentelemetry/api/build/esm/version.js.map +1 -0
- package/dist/node_modules/ai/dist/index.js +2870 -0
- package/dist/node_modules/ai/dist/index.js.map +1 -0
- package/dist/node_modules/nanoid/non-secure/index.js +13 -0
- package/dist/node_modules/nanoid/non-secure/index.js.map +1 -0
- package/dist/node_modules/secure-json-parse/index.js +133 -0
- package/dist/node_modules/secure-json-parse/index.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js +37 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js +26 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +17 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +11 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/index.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/index.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js +66 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +21 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +30 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +53 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +50 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +11 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +11 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +9 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +56 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +24 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +30 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +19 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +15 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +13 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +37 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +56 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +76 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +25 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +24 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +65 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +24 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +350 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +36 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +10 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +84 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js +110 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +90 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -0
- package/dist/src/agent.d.ts +3 -0
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +93 -291
- package/dist/src/agent.js.map +1 -1
- package/dist/src/agents/execution.d.ts +1 -1
- package/dist/src/agents/execution.d.ts.map +1 -1
- package/dist/src/agents/execution.js +28 -43
- package/dist/src/agents/execution.js.map +1 -1
- package/dist/src/agents/planning.d.ts +1 -1
- package/dist/src/agents/planning.d.ts.map +1 -1
- package/dist/src/agents/planning.js +60 -67
- package/dist/src/agents/planning.js.map +1 -1
- package/dist/src/agents/research.d.ts +1 -1
- package/dist/src/agents/research.d.ts.map +1 -1
- package/dist/src/agents/research.js +68 -91
- package/dist/src/agents/research.js.map +1 -1
- package/dist/src/prompt-builder.d.ts.map +1 -1
- package/dist/src/prompt-builder.js +68 -36
- package/dist/src/prompt-builder.js.map +1 -1
- package/dist/src/structured-extraction.d.ts +2 -2
- package/dist/src/structured-extraction.d.ts.map +1 -1
- package/dist/src/structured-extraction.js +51 -110
- package/dist/src/structured-extraction.js.map +1 -1
- package/dist/src/workflow/config.d.ts +3 -0
- package/dist/src/workflow/config.d.ts.map +1 -0
- package/dist/src/workflow/config.js +43 -0
- package/dist/src/workflow/config.js.map +1 -0
- package/dist/src/workflow/steps/build.d.ts +3 -0
- package/dist/src/workflow/steps/build.d.ts.map +1 -0
- package/dist/src/workflow/steps/build.js +64 -0
- package/dist/src/workflow/steps/build.js.map +1 -0
- package/dist/src/workflow/steps/plan.d.ts +3 -0
- package/dist/src/workflow/steps/plan.d.ts.map +1 -0
- package/dist/src/workflow/steps/plan.js +86 -0
- package/dist/src/workflow/steps/plan.js.map +1 -0
- package/dist/src/workflow/steps/research.d.ts +3 -0
- package/dist/src/workflow/steps/research.d.ts.map +1 -0
- package/dist/src/workflow/steps/research.js +124 -0
- package/dist/src/workflow/steps/research.js.map +1 -0
- package/dist/src/workflow/types.d.ts +48 -0
- package/dist/src/workflow/types.d.ts.map +1 -0
- package/dist/src/workflow/utils.d.ts +12 -0
- package/dist/src/workflow/utils.d.ts.map +1 -0
- package/dist/src/workflow/utils.js +38 -0
- package/dist/src/workflow/utils.js.map +1 -0
- package/package.json +5 -2
- package/src/agent.ts +112 -321
- package/src/agents/execution.ts +28 -43
- package/src/agents/planning.ts +60 -67
- package/src/agents/research.ts +68 -91
- package/src/prompt-builder.ts +71 -37
- package/src/structured-extraction.ts +58 -115
- package/src/workflow/config.ts +42 -0
- package/src/workflow/steps/build.ts +87 -0
- package/src/workflow/steps/plan.ts +112 -0
- package/src/workflow/steps/research.ts +156 -0
- package/src/workflow/types.ts +53 -0
- package/src/workflow/utils.ts +50 -0
package/dist/src/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sources":["../../src/agent.ts"],"sourcesContent":["import { query } from \"@anthropic-ai/claude-agent-sdk\";\nimport type { Task, ExecutionResult, PlanResult, AgentConfig } from './types.js';\nimport { TaskManager } from './task-manager.js';\nimport { PostHogAPIClient } from './posthog-api.js';\nimport { PostHogFileManager } from './file-manager.js';\nimport { GitManager } from './git-manager.js';\nimport { TemplateManager } from './template-manager.js';\nimport { ClaudeAdapter } from './adapters/claude/claude-adapter.js';\nimport type { ProviderAdapter } from './adapters/types.js';\nimport { PLANNING_SYSTEM_PROMPT } from './agents/planning.js';\nimport { EXECUTION_SYSTEM_PROMPT } from './agents/execution.js';\nimport { Logger } from './utils/logger.js';\nimport { PromptBuilder } from './prompt-builder.js';\nimport { TaskProgressReporter } from './task-progress-reporter.js';\nimport { OpenAIExtractor, type ExtractedQuestion, type ExtractedQuestionWithAnswer } from './structured-extraction.js';\n\nexport class Agent {\n private workingDirectory: string;\n private onEvent?: (event: any) => void;\n private taskManager: TaskManager;\n private posthogAPI?: PostHogAPIClient;\n private fileManager: PostHogFileManager;\n private gitManager: GitManager;\n private templateManager: TemplateManager;\n private adapter: ProviderAdapter;\n private logger: Logger;\n private progressReporter: TaskProgressReporter;\n private promptBuilder: PromptBuilder;\n private extractor?: OpenAIExtractor;\n private mcpServers?: Record<string, any>;\n public debug: boolean;\n\n constructor(config: AgentConfig = {}) {\n this.workingDirectory = config.workingDirectory || process.cwd();\n this.onEvent = config.onEvent;\n this.debug = config.debug || false;\n\n // Build default PostHog MCP server configuration\n const posthogMcpUrl = config.posthogMcpUrl\n || process.env.POSTHOG_MCP_URL\n || 'https://mcp.posthog.com/mcp';\n\n // Add auth if API key provided\n const headers: Record<string, string> = {};\n if (config.posthogApiKey) {\n headers['Authorization'] = `Bearer ${config.posthogApiKey}`;\n }\n\n const defaultMcpServers = {\n posthog: {\n type: 'http' as const,\n url: posthogMcpUrl,\n ...(Object.keys(headers).length > 0 ? { headers } : {}),\n }\n };\n\n // Merge default PostHog MCP with user-provided servers (user config takes precedence)\n this.mcpServers = {\n ...defaultMcpServers,\n ...config.mcpServers\n };\n this.logger = new Logger({ debug: this.debug, prefix: '[PostHog Agent]' });\n this.taskManager = new TaskManager();\n // Hardcode Claude adapter for now - extensible for other providers later\n this.adapter = new ClaudeAdapter();\n\n this.fileManager = new PostHogFileManager(\n this.workingDirectory,\n this.logger.child('FileManager')\n );\n this.gitManager = new GitManager({\n repositoryPath: this.workingDirectory,\n logger: this.logger.child('GitManager')\n // TODO: Add author config from environment or config\n });\n this.templateManager = new TemplateManager();\n\n if (config.posthogApiUrl && config.posthogApiKey) {\n this.posthogAPI = new PostHogAPIClient({\n apiUrl: config.posthogApiUrl,\n apiKey: config.posthogApiKey,\n });\n }\n\n this.promptBuilder = new PromptBuilder({\n getTaskFiles: (taskId: string) => this.getTaskFiles(taskId),\n generatePlanTemplate: (vars) => this.templateManager.generatePlan(vars),\n posthogClient: this.posthogAPI,\n logger: this.logger.child('PromptBuilder')\n });\n this.progressReporter = new TaskProgressReporter(this.posthogAPI, this.logger);\n \n // Initialize OpenAI extractor if API key is available\n if (process.env.OPENAI_API_KEY) {\n this.extractor = new OpenAIExtractor(this.logger.child('OpenAIExtractor'));\n }\n }\n\n /**\n * Enable or disable debug logging\n */\n setDebug(enabled: boolean) {\n this.debug = enabled;\n this.logger.setDebug(enabled);\n }\n\n /**\n * Configure LLM gateway environment variables for Claude Code CLI\n */\n private async _configureLlmGateway(): Promise<void> {\n if (!this.posthogAPI) {\n return;\n }\n\n if (process.env.ANTHROPIC_BASE_URL && process.env.ANTHROPIC_AUTH_TOKEN) {\n return;\n }\n\n try {\n const gatewayUrl = await this.posthogAPI.getLlmGatewayUrl();\n const apiKey = this.posthogAPI.getApiKey();\n\n process.env.ANTHROPIC_BASE_URL = gatewayUrl;\n process.env.ANTHROPIC_AUTH_TOKEN = apiKey;\n\n this.logger.debug('Configured LLM gateway', { gatewayUrl });\n } catch (error) {\n this.logger.error('Failed to configure LLM gateway', error);\n throw error;\n }\n }\n\n // Adaptive task execution - 3 phases (research → plan → build)\n async runTask(taskOrId: Task | string, options: import('./types.js').TaskExecutionOptions = {}): Promise<void> {\n await this._configureLlmGateway();\n\n const task = typeof taskOrId === 'string' ? await this.fetchTask(taskOrId) : taskOrId;\n const cwd = options.repositoryPath || this.workingDirectory;\n const isCloudMode = options.isCloudMode ?? false;\n const taskSlug = (task as any).slug || task.id;\n\n this.logger.info('Starting adaptive task execution', { taskId: task.id, taskSlug, isCloudMode });\n\n // Initialize progress reporter for task run tracking (needed for PR attachment)\n await this.progressReporter.start(task.id, { totalSteps: 3 }); // 3 phases: research, plan, build\n this.emitEvent(this.adapter.createStatusEvent('run_started', { runId: this.progressReporter.runId }));\n\n // Phase 1: Branch check\n const existingBranch = await this.gitManager.getTaskBranch(taskSlug);\n if (!existingBranch) {\n this.logger.info('Creating task branch', { taskSlug });\n const branchName = `posthog/task-${taskSlug}`;\n await this.gitManager.createOrSwitchToBranch(branchName);\n this.emitEvent(this.adapter.createStatusEvent('branch_created', { branch: branchName }));\n \n // Initial commit\n await this.fileManager.ensureGitignore();\n await this.gitManager.addAllPostHogFiles();\n if (isCloudMode) {\n await this.gitManager.commitAndPush(`Initialize task ${taskSlug}`, { allowEmpty: true });\n } else {\n await this.gitManager.commitChanges(`Initialize task ${taskSlug}`);\n }\n } else {\n this.logger.info('Switching to existing task branch', { branch: existingBranch });\n await this.gitManager.switchToBranch(existingBranch);\n }\n\n // Phase 2: Research\n const researchExists = await this.fileManager.readResearch(task.id);\n if (!researchExists) {\n this.logger.info('Starting research phase', { taskId: task.id });\n this.emitEvent(this.adapter.createStatusEvent('phase_start', { phase: 'research' }));\n \n // Run research agent\n const researchPrompt = await this.promptBuilder.buildResearchPrompt(task, cwd);\n const { RESEARCH_SYSTEM_PROMPT } = await import('./agents/research.js');\n const fullPrompt = RESEARCH_SYSTEM_PROMPT + '\\n\\n' + researchPrompt;\n \n const baseOptions: Record<string, any> = {\n model: 'claude-sonnet-4-5-20250929',\n cwd,\n permissionMode: 'plan',\n settingSources: ['local'],\n mcpServers: this.mcpServers,\n };\n\n const response = query({\n prompt: fullPrompt,\n options: { ...baseOptions, ...(options.queryOverrides || {}) },\n });\n\n let researchContent = '';\n for await (const message of response) {\n this.emitEvent(this.adapter.createRawSDKEvent(message));\n const transformed = this.adapter.transform(message);\n if (transformed) {\n this.emitEvent(transformed);\n }\n if (message.type === 'assistant' && message.message?.content) {\n for (const c of message.message.content) {\n if (c.type === 'text' && c.text) researchContent += c.text + '\\n';\n }\n }\n }\n\n // Write research.md\n if (researchContent.trim()) {\n await this.fileManager.writeResearch(task.id, researchContent.trim());\n this.logger.info('Research completed', { taskId: task.id });\n }\n\n // Commit research\n await this.gitManager.addAllPostHogFiles();\n \n // Extract questions using structured output and save to questions.json\n if (this.extractor) {\n try {\n this.logger.info('Extracting questions from research.md', { taskId: task.id });\n const questions = await this.extractQuestionsFromResearch(task.id, false);\n \n this.logger.info('Questions extracted successfully', { taskId: task.id, count: questions.length });\n \n // Save questions.json\n await this.fileManager.writeQuestions(task.id, {\n questions,\n answered: false,\n answers: null,\n });\n \n this.logger.info('Questions saved to questions.json', { taskId: task.id });\n \n // Emit event for Array to pick up (local mode)\n if (!isCloudMode) {\n this.emitEvent({\n type: 'artifact',\n ts: Date.now(),\n kind: 'research_questions',\n content: questions,\n });\n this.logger.info('Emitted research_questions artifact event', { taskId: task.id });\n }\n } catch (error) {\n this.logger.error('Failed to extract questions', { error: error instanceof Error ? error.message : String(error) });\n this.emitEvent({\n type: 'error',\n ts: Date.now(),\n message: `Failed to extract questions: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n } else {\n this.logger.warn('OpenAI extractor not available (OPENAI_API_KEY not set), skipping question extraction');\n this.emitEvent({\n type: 'status',\n ts: Date.now(),\n phase: 'extraction_skipped',\n message: 'Question extraction skipped - OPENAI_API_KEY not configured',\n });\n }\n \n if (isCloudMode) {\n await this.gitManager.commitAndPush(`Research phase for ${task.title}`);\n } else {\n await this.gitManager.commitChanges(`Research phase for ${task.title}`);\n this.emitEvent(this.adapter.createStatusEvent('phase_complete', { phase: 'research' }));\n return; // Local mode: return to user\n }\n }\n\n // Phase 3: Auto-answer questions (cloud mode only)\n if (isCloudMode) {\n const questionsData = await this.fileManager.readQuestions(task.id);\n if (questionsData && !questionsData.answered) {\n this.logger.info('Auto-answering research questions', { taskId: task.id });\n \n // Extract questions with recommended answers using structured output\n if (this.extractor) {\n const questionsWithAnswers = await this.extractQuestionsFromResearch(task.id, true) as ExtractedQuestionWithAnswer[];\n \n // Save answers to questions.json\n await this.fileManager.writeQuestions(task.id, {\n questions: questionsWithAnswers.map(qa => ({\n id: qa.id,\n question: qa.question,\n options: qa.options,\n })),\n answered: true,\n answers: questionsWithAnswers.map(qa => ({\n questionId: qa.id,\n selectedOption: qa.recommendedAnswer,\n customInput: qa.justification,\n })),\n });\n \n this.logger.info('Auto-answers saved to questions.json', { taskId: task.id });\n await this.gitManager.addAllPostHogFiles();\n await this.gitManager.commitAndPush(`Answer research questions for ${task.title}`);\n } else {\n this.logger.warn('OpenAI extractor not available, skipping auto-answer');\n }\n }\n }\n\n // Phase 4: Plan\n const planExists = await this.readPlan(task.id);\n if (!planExists) {\n // Check if questions have been answered\n const questionsData = await this.fileManager.readQuestions(task.id);\n if (!questionsData || !questionsData.answered) {\n this.logger.info('Waiting for user answers to research questions');\n this.emitEvent(this.adapter.createStatusEvent('phase_complete', { phase: 'research_questions' }));\n return; // Wait for user to answer questions\n }\n\n this.logger.info('Starting planning phase', { taskId: task.id });\n this.emitEvent(this.adapter.createStatusEvent('phase_start', { phase: 'planning' }));\n \n // Build context with research + questions + answers\n const research = await this.fileManager.readResearch(task.id);\n let researchContext = '';\n if (research) {\n researchContext += `## Research Analysis\\n\\n${research}\\n\\n`;\n }\n \n // Add questions and answers\n researchContext += `## Implementation Decisions\\n\\n`;\n const answers = questionsData.answers || [];\n for (const question of questionsData.questions) {\n const answer = answers.find((a: any) => a.questionId === question.id);\n \n researchContext += `### ${question.question}\\n\\n`;\n if (answer) {\n researchContext += `**Selected:** ${answer.selectedOption}\\n`;\n if (answer.customInput) {\n researchContext += `**Details:** ${answer.customInput}\\n`;\n }\n } else {\n this.logger.warn('No answer found for question', { questionId: question.id });\n researchContext += `**Selected:** Not answered\\n`;\n }\n researchContext += '\\n';\n }\n \n // Run planning agent with full context\n const planningPrompt = await this.promptBuilder.buildPlanningPrompt(task, cwd);\n const { PLANNING_SYSTEM_PROMPT } = await import('./agents/planning.js');\n const fullPrompt = PLANNING_SYSTEM_PROMPT + '\\n\\n' + planningPrompt + '\\n\\n' + researchContext;\n \n const baseOptions: Record<string, any> = {\n model: 'claude-sonnet-4-5-20250929',\n cwd,\n permissionMode: 'plan',\n settingSources: ['local'],\n mcpServers: this.mcpServers,\n };\n\n const response = query({\n prompt: fullPrompt,\n options: { ...baseOptions, ...(options.queryOverrides || {}) },\n });\n\n let planContent = '';\n for await (const message of response) {\n this.emitEvent(this.adapter.createRawSDKEvent(message));\n const transformed = this.adapter.transform(message);\n if (transformed) {\n this.emitEvent(transformed);\n }\n if (message.type === 'assistant' && message.message?.content) {\n for (const c of message.message.content) {\n if (c.type === 'text' && c.text) planContent += c.text + '\\n';\n }\n }\n }\n\n // Write plan.md\n if (planContent.trim()) {\n await this.writePlan(task.id, planContent.trim());\n this.logger.info('Plan completed', { taskId: task.id });\n }\n\n // Commit plan\n await this.gitManager.addAllPostHogFiles();\n if (isCloudMode) {\n await this.gitManager.commitAndPush(`Planning phase for ${task.title}`);\n } else {\n await this.gitManager.commitChanges(`Planning phase for ${task.title}`);\n this.emitEvent(this.adapter.createStatusEvent('phase_complete', { phase: 'planning' }));\n return; // Local mode: return to user\n }\n }\n\n // Phase 5: Build\n const latestRun = task.latest_run;\n const prExists = latestRun?.output && (latestRun.output as any).pr_url;\n \n if (!prExists) {\n this.logger.info('Starting build phase', { taskId: task.id });\n this.emitEvent(this.adapter.createStatusEvent('phase_start', { phase: 'build' }));\n \n // Run execution agent\n const executionPrompt = await this.promptBuilder.buildExecutionPrompt(task, cwd);\n const { EXECUTION_SYSTEM_PROMPT } = await import('./agents/execution.js');\n const fullPrompt = EXECUTION_SYSTEM_PROMPT + '\\n\\n' + executionPrompt;\n \n const { PermissionMode } = await import('./types.js');\n const permissionMode = options.permissionMode || PermissionMode.ACCEPT_EDITS;\n const baseOptions: Record<string, any> = {\n model: 'claude-sonnet-4-5-20250929',\n cwd,\n permissionMode,\n settingSources: ['local'],\n mcpServers: this.mcpServers,\n };\n\n const response = query({\n prompt: fullPrompt,\n options: { ...baseOptions, ...(options.queryOverrides || {}) },\n });\n\n for await (const message of response) {\n this.emitEvent(this.adapter.createRawSDKEvent(message));\n const transformed = this.adapter.transform(message);\n if (transformed) {\n this.emitEvent(transformed);\n }\n }\n\n // Commit and push implementation\n // Stage ALL changes (not just .posthog/)\n const hasChanges = await this.gitManager.hasChanges();\n if (hasChanges) {\n await this.gitManager.addFiles(['.']); // Stage all changes\n await this.gitManager.commitChanges(`Implementation for ${task.title}`);\n \n // Push to origin\n const branchName = await this.gitManager.getCurrentBranch();\n await this.gitManager.pushBranch(branchName);\n \n this.logger.info('Implementation committed and pushed', { taskId: task.id });\n } else {\n this.logger.warn('No changes to commit in build phase', { taskId: task.id });\n }\n\n // Create PR\n const branchName = await this.gitManager.getCurrentBranch();\n const prUrl = await this.createPullRequest(task.id, branchName, task.title, task.description);\n this.logger.info('Pull request created', { taskId: task.id, prUrl });\n this.emitEvent(this.adapter.createStatusEvent('pr_created', { prUrl }));\n \n // Attach PR to task run\n try {\n await this.attachPullRequestToTask(task.id, prUrl, branchName);\n this.logger.info('PR attached to task successfully', { taskId: task.id, prUrl });\n } catch (error) {\n this.logger.warn('Could not attach PR to task', { error: error instanceof Error ? error.message : String(error) });\n }\n } else {\n this.logger.info('PR already exists, skipping build phase', { taskId: task.id });\n }\n\n // Phase 6: Complete\n await this.progressReporter.complete();\n this.logger.info('Task execution complete', { taskId: task.id });\n this.emitEvent(this.adapter.createStatusEvent('task_complete', { taskId: task.id }));\n }\n\n // Direct prompt execution - still supported for low-level usage\n async run(prompt: string, options: { repositoryPath?: string; permissionMode?: import('./types.js').PermissionMode; queryOverrides?: Record<string, any> } = {}): Promise<ExecutionResult> {\n await this._configureLlmGateway();\n const baseOptions: Record<string, any> = {\n model: \"claude-sonnet-4-5-20250929\",\n cwd: options.repositoryPath || this.workingDirectory,\n permissionMode: (options.permissionMode as any) || \"default\",\n settingSources: [\"local\"],\n mcpServers: this.mcpServers,\n };\n\n const response = query({\n prompt,\n options: { ...baseOptions, ...(options.queryOverrides || {}) },\n });\n\n const results = [];\n for await (const message of response) {\n this.logger.debug('Received message in direct run', message);\n // Emit raw SDK event\n this.emitEvent(this.adapter.createRawSDKEvent(message));\n // Emit transformed event\n const transformedEvent = this.adapter.transform(message);\n if (transformedEvent) {\n this.emitEvent(transformedEvent);\n }\n results.push(message);\n }\n \n return { results };\n }\n \n // PostHog task operations\n async fetchTask(taskId: string): Promise<Task> {\n this.logger.debug('Fetching task from PostHog', { taskId });\n if (!this.posthogAPI) {\n const error = new Error('PostHog API not configured. Provide posthogApiUrl and posthogApiKey in constructor.');\n this.logger.error('PostHog API not configured', error);\n throw error;\n }\n return this.posthogAPI.fetchTask(taskId);\n }\n\n getPostHogClient(): PostHogAPIClient | undefined {\n return this.posthogAPI;\n }\n \n async listTasks(filters?: {\n repository?: string;\n organization?: string;\n origin_product?: string;\n }): Promise<Task[]> {\n if (!this.posthogAPI) {\n throw new Error('PostHog API not configured. Provide posthogApiUrl and posthogApiKey in constructor.');\n }\n return this.posthogAPI.listTasks(filters);\n }\n \n // File system operations for task artifacts\n async writeTaskFile(taskId: string, fileName: string, content: string, type: 'plan' | 'context' | 'reference' | 'output' = 'reference'): Promise<void> {\n this.logger.debug('Writing task file', { taskId, fileName, type, contentLength: content.length });\n await this.fileManager.writeTaskFile(taskId, { name: fileName, content, type });\n }\n \n async readTaskFile(taskId: string, fileName: string): Promise<string | null> {\n this.logger.debug('Reading task file', { taskId, fileName });\n return await this.fileManager.readTaskFile(taskId, fileName);\n }\n \n async getTaskFiles(taskId: string): Promise<any[]> {\n this.logger.debug('Getting task files', { taskId });\n const files = await this.fileManager.getTaskFiles(taskId);\n this.logger.debug('Found task files', { taskId, fileCount: files.length });\n return files;\n }\n \n async writePlan(taskId: string, plan: string): Promise<void> {\n this.logger.info('Writing plan', { taskId, planLength: plan.length });\n await this.fileManager.writePlan(taskId, plan);\n }\n \n async readPlan(taskId: string): Promise<string | null> {\n this.logger.debug('Reading plan', { taskId });\n return await this.fileManager.readPlan(taskId);\n }\n\n async extractQuestionsFromResearch(taskId: string, includeAnswers: boolean = false): Promise<ExtractedQuestion[] | ExtractedQuestionWithAnswer[]> {\n this.logger.info('Extracting questions from research.md', { taskId, includeAnswers });\n \n if (!this.extractor) {\n throw new Error('OpenAI extractor not initialized. Set OPENAI_API_KEY environment variable.');\n }\n\n const researchContent = await this.fileManager.readResearch(taskId);\n if (!researchContent) {\n throw new Error('research.md not found for task ' + taskId);\n }\n\n if (includeAnswers) {\n return await this.extractor.extractQuestionsWithAnswers(researchContent);\n } else {\n return await this.extractor.extractQuestions(researchContent);\n }\n }\n\n // Git operations for task execution\n async createPlanningBranch(taskId: string): Promise<string> {\n this.logger.info('Creating planning branch', { taskId });\n const branchName = await this.gitManager.createTaskPlanningBranch(taskId);\n this.logger.debug('Planning branch created', { taskId, branchName });\n // Only create gitignore after we're on the new branch\n await this.fileManager.ensureGitignore();\n return branchName;\n }\n \n async commitPlan(taskId: string, taskTitle: string): Promise<string> {\n this.logger.info('Committing plan', { taskId, taskTitle });\n const commitHash = await this.gitManager.commitPlan(taskId, taskTitle);\n this.logger.debug('Plan committed', { taskId, commitHash });\n return commitHash;\n }\n \n async createImplementationBranch(taskId: string, planningBranchName?: string): Promise<string> {\n this.logger.info('Creating implementation branch', { taskId, fromBranch: planningBranchName });\n const branchName = await this.gitManager.createTaskImplementationBranch(taskId, planningBranchName);\n this.logger.debug('Implementation branch created', { taskId, branchName });\n return branchName;\n }\n \n async commitImplementation(taskId: string, taskTitle: string, planSummary?: string): Promise<string> {\n this.logger.info('Committing implementation', { taskId, taskTitle });\n const commitHash = await this.gitManager.commitImplementation(taskId, taskTitle, planSummary);\n this.logger.debug('Implementation committed', { taskId, commitHash });\n return commitHash;\n }\n\n async createPullRequest(taskId: string, branchName: string, taskTitle: string, taskDescription: string): Promise<string> {\n this.logger.info('Creating pull request', { taskId, branchName, taskTitle });\n\n // Build PR body\n const prBody = `## Task Details\n**Task ID**: ${taskId}\n**Description**: ${taskDescription}\n\n## Changes\nThis PR implements the changes described in the task.\n\nGenerated by PostHog Agent`;\n\n const prUrl = await this.gitManager.createPullRequest(\n branchName,\n taskTitle,\n prBody\n );\n\n this.logger.info('Pull request created', { taskId, prUrl });\n return prUrl;\n }\n\n async attachPullRequestToTask(taskId: string, prUrl: string, branchName?: string): Promise<void> {\n this.logger.info('Attaching PR to task run', { taskId, prUrl, branchName });\n\n if (!this.posthogAPI || !this.progressReporter.runId) {\n const error = new Error('PostHog API not configured or no active run. Cannot attach PR to task.');\n this.logger.error('PostHog API not configured', error);\n throw error;\n }\n\n const updates: any = {\n output: { pr_url: prUrl }\n };\n if (branchName) {\n updates.branch = branchName;\n }\n\n await this.posthogAPI.updateTaskRun(taskId, this.progressReporter.runId, updates);\n this.logger.debug('PR attached to task run', { taskId, runId: this.progressReporter.runId, prUrl });\n }\n\n async updateTaskBranch(taskId: string, branchName: string): Promise<void> {\n this.logger.info('Updating task run branch', { taskId, branchName });\n\n if (!this.posthogAPI || !this.progressReporter.runId) {\n const error = new Error('PostHog API not configured or no active run. Cannot update branch.');\n this.logger.error('PostHog API not configured', error);\n throw error;\n }\n\n await this.posthogAPI.updateTaskRun(taskId, this.progressReporter.runId, { branch: branchName });\n this.logger.debug('Task run branch updated', { taskId, runId: this.progressReporter.runId, branchName });\n }\n\n // Execution management\n cancelTask(taskId: string): void {\n // Find the execution for this task and cancel it\n for (const [executionId, execution] of this.taskManager['executionStates']) {\n if (execution.taskId === taskId && execution.status === 'running') {\n this.taskManager.cancelExecution(executionId);\n break;\n }\n }\n }\n\n getTaskExecutionStatus(taskId: string): string | null {\n // Find the execution for this task\n for (const execution of this.taskManager['executionStates'].values()) {\n if (execution.taskId === taskId) {\n return execution.status;\n }\n }\n return null;\n }\n\n private emitEvent(event: any): void {\n if (this.debug && event.type !== 'token') {\n // Log all events except tokens (too verbose)\n this.logger.debug('Emitting event', { type: event.type, ts: event.ts });\n }\n const persistPromise = this.progressReporter.recordEvent(event);\n if (persistPromise && typeof persistPromise.then === 'function') {\n persistPromise.catch((error: Error) =>\n this.logger.debug('Failed to persist agent event', { message: error.message })\n );\n }\n this.onEvent?.(event);\n }\n}\n\nexport { PermissionMode } from './types.js';\nexport type { Task, SupportingFile, ExecutionResult, AgentConfig } from './types.js';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sources":["../../src/agent.ts"],"sourcesContent":["import { query } from \"@anthropic-ai/claude-agent-sdk\";\nimport type { Task, ExecutionResult, AgentConfig } from './types.js';\nimport { TaskManager } from './task-manager.js';\nimport { PostHogAPIClient } from './posthog-api.js';\nimport { PostHogFileManager } from './file-manager.js';\nimport { GitManager } from './git-manager.js';\nimport { TemplateManager } from './template-manager.js';\nimport { ClaudeAdapter } from './adapters/claude/claude-adapter.js';\nimport type { ProviderAdapter } from './adapters/types.js';\nimport { Logger } from './utils/logger.js';\nimport { PromptBuilder } from './prompt-builder.js';\nimport { TaskProgressReporter } from './task-progress-reporter.js';\nimport { AISDKExtractor, type StructuredExtractor, type ExtractedQuestion, type ExtractedQuestionWithAnswer } from './structured-extraction.js';\nimport { TASK_WORKFLOW } from './workflow/config.js';\nimport type { WorkflowRuntime } from './workflow/types.js';\n\nexport class Agent {\n private workingDirectory: string;\n private onEvent?: (event: any) => void;\n private taskManager: TaskManager;\n private posthogAPI?: PostHogAPIClient;\n private fileManager: PostHogFileManager;\n private gitManager: GitManager;\n private templateManager: TemplateManager;\n private adapter: ProviderAdapter;\n private logger: Logger;\n private progressReporter: TaskProgressReporter;\n private promptBuilder: PromptBuilder;\n private extractor?: StructuredExtractor;\n private mcpServers?: Record<string, any>;\n public debug: boolean;\n\n constructor(config: AgentConfig = {}) {\n this.workingDirectory = config.workingDirectory || process.cwd();\n this.onEvent = config.onEvent;\n this.debug = config.debug || false;\n\n // Build default PostHog MCP server configuration\n const posthogMcpUrl = config.posthogMcpUrl\n || process.env.POSTHOG_MCP_URL\n || 'https://mcp.posthog.com/mcp';\n\n // Add auth if API key provided\n const headers: Record<string, string> = {};\n if (config.posthogApiKey) {\n headers['Authorization'] = `Bearer ${config.posthogApiKey}`;\n }\n\n const defaultMcpServers = {\n posthog: {\n type: 'http' as const,\n url: posthogMcpUrl,\n ...(Object.keys(headers).length > 0 ? { headers } : {}),\n }\n };\n\n // Merge default PostHog MCP with user-provided servers (user config takes precedence)\n this.mcpServers = {\n ...defaultMcpServers,\n ...config.mcpServers\n };\n this.logger = new Logger({ debug: this.debug, prefix: '[PostHog Agent]' });\n this.taskManager = new TaskManager();\n // Hardcode Claude adapter for now - extensible for other providers later\n this.adapter = new ClaudeAdapter();\n\n this.fileManager = new PostHogFileManager(\n this.workingDirectory,\n this.logger.child('FileManager')\n );\n this.gitManager = new GitManager({\n repositoryPath: this.workingDirectory,\n logger: this.logger.child('GitManager')\n // TODO: Add author config from environment or config\n });\n this.templateManager = new TemplateManager();\n\n if (config.posthogApiUrl && config.posthogApiKey) {\n this.posthogAPI = new PostHogAPIClient({\n apiUrl: config.posthogApiUrl,\n apiKey: config.posthogApiKey,\n });\n }\n\n this.promptBuilder = new PromptBuilder({\n getTaskFiles: (taskId: string) => this.getTaskFiles(taskId),\n generatePlanTemplate: (vars) => this.templateManager.generatePlan(vars),\n posthogClient: this.posthogAPI,\n logger: this.logger.child('PromptBuilder')\n });\n this.progressReporter = new TaskProgressReporter(this.posthogAPI, this.logger);\n this.extractor = new AISDKExtractor(this.logger.child('AISDKExtractor'));\n }\n\n /**\n * Enable or disable debug logging\n */\n setDebug(enabled: boolean) {\n this.debug = enabled;\n this.logger.setDebug(enabled);\n }\n\n /**\n * Configure LLM gateway environment variables for Claude Code CLI\n */\n private async _configureLlmGateway(): Promise<void> {\n if (!this.posthogAPI) {\n return;\n }\n\n if (process.env.ANTHROPIC_BASE_URL && process.env.ANTHROPIC_AUTH_TOKEN) {\n this.ensureOpenAIGatewayEnv();\n return;\n }\n\n try {\n const gatewayUrl = await this.posthogAPI.getLlmGatewayUrl();\n const apiKey = this.posthogAPI.getApiKey();\n\n process.env.ANTHROPIC_BASE_URL = gatewayUrl;\n process.env.ANTHROPIC_AUTH_TOKEN = apiKey;\n this.ensureOpenAIGatewayEnv(gatewayUrl, apiKey);\n\n this.logger.debug('Configured LLM gateway', { gatewayUrl });\n } catch (error) {\n this.logger.error('Failed to configure LLM gateway', error);\n throw error;\n }\n }\n\n // Adaptive task execution orchestrated via workflow steps\n async runTask(taskOrId: Task | string, options: import('./types.js').TaskExecutionOptions = {}): Promise<void> {\n await this._configureLlmGateway();\n\n const task = typeof taskOrId === 'string' ? await this.fetchTask(taskOrId) : taskOrId;\n const cwd = options.repositoryPath || this.workingDirectory;\n const isCloudMode = options.isCloudMode ?? false;\n const taskSlug = (task as any).slug || task.id;\n\n this.logger.info('Starting adaptive task execution', { taskId: task.id, taskSlug, isCloudMode });\n\n // Initialize progress reporter for task run tracking (needed for PR attachment)\n await this.progressReporter.start(task.id, { totalSteps: TASK_WORKFLOW.length });\n this.emitEvent(this.adapter.createStatusEvent('run_started', { runId: this.progressReporter.runId }));\n\n await this.prepareTaskBranch(taskSlug, isCloudMode);\n\n const workflowContext: WorkflowRuntime = {\n task,\n taskSlug,\n cwd,\n isCloudMode,\n options,\n logger: this.logger,\n fileManager: this.fileManager,\n gitManager: this.gitManager,\n promptBuilder: this.promptBuilder,\n progressReporter: this.progressReporter,\n adapter: this.adapter,\n mcpServers: this.mcpServers,\n posthogAPI: this.posthogAPI,\n extractor: this.extractor,\n emitEvent: (event: any) => this.emitEvent(event),\n stepResults: {},\n };\n\n for (const step of TASK_WORKFLOW) {\n const result = await step.run({ step, context: workflowContext });\n if (result.halt) {\n return;\n }\n }\n\n if (isCloudMode) {\n await this.ensurePullRequest(task, workflowContext.stepResults);\n }\n\n await this.progressReporter.complete();\n this.logger.info('Task execution complete', { taskId: task.id });\n this.emitEvent(this.adapter.createStatusEvent('task_complete', { taskId: task.id }));\n }\n\n // Direct prompt execution - still supported for low-level usage\n async run(prompt: string, options: { repositoryPath?: string; permissionMode?: import('./types.js').PermissionMode; queryOverrides?: Record<string, any> } = {}): Promise<ExecutionResult> {\n await this._configureLlmGateway();\n const baseOptions: Record<string, any> = {\n model: \"claude-sonnet-4-5-20250929\",\n cwd: options.repositoryPath || this.workingDirectory,\n permissionMode: (options.permissionMode as any) || \"default\",\n settingSources: [\"local\"],\n mcpServers: this.mcpServers,\n };\n\n const response = query({\n prompt,\n options: { ...baseOptions, ...(options.queryOverrides || {}) },\n });\n\n const results = [];\n for await (const message of response) {\n this.logger.debug('Received message in direct run', message);\n // Emit raw SDK event\n this.emitEvent(this.adapter.createRawSDKEvent(message));\n // Emit transformed event\n const transformedEvent = this.adapter.transform(message);\n if (transformedEvent) {\n this.emitEvent(transformedEvent);\n }\n results.push(message);\n }\n \n return { results };\n }\n \n // PostHog task operations\n async fetchTask(taskId: string): Promise<Task> {\n this.logger.debug('Fetching task from PostHog', { taskId });\n if (!this.posthogAPI) {\n const error = new Error('PostHog API not configured. Provide posthogApiUrl and posthogApiKey in constructor.');\n this.logger.error('PostHog API not configured', error);\n throw error;\n }\n return this.posthogAPI.fetchTask(taskId);\n }\n\n getPostHogClient(): PostHogAPIClient | undefined {\n return this.posthogAPI;\n }\n \n async listTasks(filters?: {\n repository?: string;\n organization?: string;\n origin_product?: string;\n }): Promise<Task[]> {\n if (!this.posthogAPI) {\n throw new Error('PostHog API not configured. Provide posthogApiUrl and posthogApiKey in constructor.');\n }\n return this.posthogAPI.listTasks(filters);\n }\n \n // File system operations for task artifacts\n async writeTaskFile(taskId: string, fileName: string, content: string, type: 'plan' | 'context' | 'reference' | 'output' = 'reference'): Promise<void> {\n this.logger.debug('Writing task file', { taskId, fileName, type, contentLength: content.length });\n await this.fileManager.writeTaskFile(taskId, { name: fileName, content, type });\n }\n \n async readTaskFile(taskId: string, fileName: string): Promise<string | null> {\n this.logger.debug('Reading task file', { taskId, fileName });\n return await this.fileManager.readTaskFile(taskId, fileName);\n }\n \n async getTaskFiles(taskId: string): Promise<any[]> {\n this.logger.debug('Getting task files', { taskId });\n const files = await this.fileManager.getTaskFiles(taskId);\n this.logger.debug('Found task files', { taskId, fileCount: files.length });\n return files;\n }\n \n async writePlan(taskId: string, plan: string): Promise<void> {\n this.logger.info('Writing plan', { taskId, planLength: plan.length });\n await this.fileManager.writePlan(taskId, plan);\n }\n \n async readPlan(taskId: string): Promise<string | null> {\n this.logger.debug('Reading plan', { taskId });\n return await this.fileManager.readPlan(taskId);\n }\n\n async extractQuestionsFromResearch(taskId: string, includeAnswers: boolean = false): Promise<ExtractedQuestion[] | ExtractedQuestionWithAnswer[]> {\n this.logger.info('Extracting questions from research.md', { taskId, includeAnswers });\n \n if (!this.extractor) {\n throw new Error('OpenAI extractor not initialized. Ensure the LLM gateway is configured.');\n }\n\n const researchContent = await this.fileManager.readResearch(taskId);\n if (!researchContent) {\n throw new Error('research.md not found for task ' + taskId);\n }\n\n if (includeAnswers) {\n return await this.extractor.extractQuestionsWithAnswers(researchContent);\n } else {\n return await this.extractor.extractQuestions(researchContent);\n }\n }\n\n // Git operations for task execution\n async createPlanningBranch(taskId: string): Promise<string> {\n this.logger.info('Creating planning branch', { taskId });\n const branchName = await this.gitManager.createTaskPlanningBranch(taskId);\n this.logger.debug('Planning branch created', { taskId, branchName });\n // Only create gitignore after we're on the new branch\n await this.fileManager.ensureGitignore();\n return branchName;\n }\n \n async commitPlan(taskId: string, taskTitle: string): Promise<string> {\n this.logger.info('Committing plan', { taskId, taskTitle });\n const commitHash = await this.gitManager.commitPlan(taskId, taskTitle);\n this.logger.debug('Plan committed', { taskId, commitHash });\n return commitHash;\n }\n \n async createImplementationBranch(taskId: string, planningBranchName?: string): Promise<string> {\n this.logger.info('Creating implementation branch', { taskId, fromBranch: planningBranchName });\n const branchName = await this.gitManager.createTaskImplementationBranch(taskId, planningBranchName);\n this.logger.debug('Implementation branch created', { taskId, branchName });\n return branchName;\n }\n \n async commitImplementation(taskId: string, taskTitle: string, planSummary?: string): Promise<string> {\n this.logger.info('Committing implementation', { taskId, taskTitle });\n const commitHash = await this.gitManager.commitImplementation(taskId, taskTitle, planSummary);\n this.logger.debug('Implementation committed', { taskId, commitHash });\n return commitHash;\n }\n\n async createPullRequest(taskId: string, branchName: string, taskTitle: string, taskDescription: string): Promise<string> {\n this.logger.info('Creating pull request', { taskId, branchName, taskTitle });\n\n // Build PR body\n const prBody = `## Task Details\n**Task ID**: ${taskId}\n**Description**: ${taskDescription}\n\n## Changes\nThis PR implements the changes described in the task.\n\nGenerated by PostHog Agent`;\n\n const prUrl = await this.gitManager.createPullRequest(\n branchName,\n taskTitle,\n prBody\n );\n\n this.logger.info('Pull request created', { taskId, prUrl });\n return prUrl;\n }\n\n async attachPullRequestToTask(taskId: string, prUrl: string, branchName?: string): Promise<void> {\n this.logger.info('Attaching PR to task run', { taskId, prUrl, branchName });\n\n if (!this.posthogAPI || !this.progressReporter.runId) {\n const error = new Error('PostHog API not configured or no active run. Cannot attach PR to task.');\n this.logger.error('PostHog API not configured', error);\n throw error;\n }\n\n const updates: any = {\n output: { pr_url: prUrl }\n };\n if (branchName) {\n updates.branch = branchName;\n }\n\n await this.posthogAPI.updateTaskRun(taskId, this.progressReporter.runId, updates);\n this.logger.debug('PR attached to task run', { taskId, runId: this.progressReporter.runId, prUrl });\n }\n\n async updateTaskBranch(taskId: string, branchName: string): Promise<void> {\n this.logger.info('Updating task run branch', { taskId, branchName });\n\n if (!this.posthogAPI || !this.progressReporter.runId) {\n const error = new Error('PostHog API not configured or no active run. Cannot update branch.');\n this.logger.error('PostHog API not configured', error);\n throw error;\n }\n\n await this.posthogAPI.updateTaskRun(taskId, this.progressReporter.runId, { branch: branchName });\n this.logger.debug('Task run branch updated', { taskId, runId: this.progressReporter.runId, branchName });\n }\n\n // Execution management\n cancelTask(taskId: string): void {\n // Find the execution for this task and cancel it\n for (const [executionId, execution] of this.taskManager['executionStates']) {\n if (execution.taskId === taskId && execution.status === 'running') {\n this.taskManager.cancelExecution(executionId);\n break;\n }\n }\n }\n\n getTaskExecutionStatus(taskId: string): string | null {\n // Find the execution for this task\n for (const execution of this.taskManager['executionStates'].values()) {\n if (execution.taskId === taskId) {\n return execution.status;\n }\n }\n return null;\n }\n\n private async prepareTaskBranch(taskSlug: string, isCloudMode: boolean): Promise<void> {\n const existingBranch = await this.gitManager.getTaskBranch(taskSlug);\n if (!existingBranch) {\n this.logger.info('Creating task branch', { taskSlug });\n const branchName = `posthog/task-${taskSlug}`;\n await this.gitManager.createOrSwitchToBranch(branchName);\n this.emitEvent(this.adapter.createStatusEvent('branch_created', { branch: branchName }));\n\n await this.fileManager.ensureGitignore();\n await this.gitManager.addAllPostHogFiles();\n if (isCloudMode) {\n await this.gitManager.commitAndPush(`Initialize task ${taskSlug}`, { allowEmpty: true });\n } else {\n await this.gitManager.commitChanges(`Initialize task ${taskSlug}`);\n }\n } else {\n this.logger.info('Switching to existing task branch', { branch: existingBranch });\n await this.gitManager.switchToBranch(existingBranch);\n }\n }\n\n private ensureOpenAIGatewayEnv(baseUrl?: string, token?: string): void {\n const resolvedBaseUrl = baseUrl || process.env.ANTHROPIC_BASE_URL;\n const resolvedToken = token || process.env.ANTHROPIC_AUTH_TOKEN;\n\n if (resolvedBaseUrl) {\n process.env.OPENAI_BASE_URL = resolvedBaseUrl;\n }\n\n if (resolvedToken) {\n process.env.OPENAI_API_KEY = resolvedToken;\n }\n\n if (!this.extractor) {\n this.extractor = new AISDKExtractor(this.logger.child('AISDKExtractor'));\n }\n }\n\n private async ensurePullRequest(task: Task, stepResults: Record<string, any>): Promise<void> {\n const latestRun = task.latest_run;\n const existingPr =\n latestRun?.output && typeof latestRun.output === 'object'\n ? (latestRun.output as any).pr_url\n : null;\n\n if (existingPr) {\n this.logger.info('PR already exists, skipping creation', { taskId: task.id, prUrl: existingPr });\n return;\n }\n\n const buildResult = stepResults['build'];\n if (!buildResult?.commitCreated) {\n this.logger.warn('Build step did not produce a commit; skipping PR creation', { taskId: task.id });\n return;\n }\n\n const branchName = await this.gitManager.getCurrentBranch();\n const prUrl = await this.createPullRequest(\n task.id,\n branchName,\n task.title,\n task.description ?? ''\n );\n\n this.emitEvent(this.adapter.createStatusEvent('pr_created', { prUrl }));\n\n try {\n await this.attachPullRequestToTask(task.id, prUrl, branchName);\n this.logger.info('PR attached to task successfully', { taskId: task.id, prUrl });\n } catch (error) {\n this.logger.warn('Could not attach PR to task', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n private emitEvent(event: any): void {\n if (this.debug && event.type !== 'token') {\n // Log all events except tokens (too verbose)\n this.logger.debug('Emitting event', { type: event.type, ts: event.ts });\n }\n const persistPromise = this.progressReporter.recordEvent(event);\n if (persistPromise && typeof persistPromise.then === 'function') {\n persistPromise.catch((error: Error) =>\n this.logger.debug('Failed to persist agent event', { message: error.message })\n );\n }\n this.onEvent?.(event);\n }\n}\n\nexport { PermissionMode } from './types.js';\nexport type { Task, SupportingFile, ExecutionResult, AgentConfig } from './types.js';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const EXECUTION_SYSTEM_PROMPT = "<
|
|
1
|
+
export declare const EXECUTION_SYSTEM_PROMPT = "<role>\nPostHog AI Execution Agent \u2014 autonomously implement tasks as merge-ready code following project conventions.\n</role>\n\n<context>\nYou have access to local repository files and PostHog MCP server. Work primarily with local files for implementation. Commit changes regularly.\n</context>\n\n<constraints>\n- Follow existing code style, patterns, and conventions found in the repository\n- Minimize new external dependencies \u2014 only add when necessary\n- Implement structured logging and error handling (never log secrets)\n- Avoid destructive shell commands\n- Create/update .gitignore to exclude build artifacts, dependencies, and temp files\n</constraints>\n\n<approach>\n1. Review the implementation plan if provided, or create your own todo list\n2. Execute changes step by step\n3. Test thoroughly and verify functionality\n4. Commit changes with clear messages\n</approach>\n\n<checklist>\nBefore completing the task, verify:\n- .gitignore includes build artifacts, node_modules, __pycache__, etc.\n- Dependency files (package.json, requirements.txt) use exact versions\n- Code compiles and tests pass\n- Added or updated relevant tests\n- Captured meaningful events with PostHog SDK where appropriate\n- Wrapped new logic in PostHog feature flags where appropriate\n- Updated documentation, README, or type hints as needed\n- No build artifacts or dependencies are being committed\n</checklist>\n\n<output_format>\nProvide a concise summary of changes made when finished.\n</output_format>";
|
|
2
2
|
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/agents/execution.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/agents/execution.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,8+CAqCnB,CAAC"}
|
|
@@ -1,56 +1,41 @@
|
|
|
1
|
-
const EXECUTION_SYSTEM_PROMPT = `<
|
|
2
|
-
|
|
3
|
-
You also have access to GitHub via the GitHub MCP server for additional repository operations.
|
|
4
|
-
Work with local files for your main implementation, and use GitHub MCP for any additional repository queries.
|
|
5
|
-
Commit changes to the repository regularly.
|
|
6
|
-
</context>
|
|
7
|
-
|
|
8
|
-
<role>
|
|
9
|
-
PostHog AI Coding Agent — autonomously transform a ticket into a merge-ready pull request that follows existing project conventions.
|
|
1
|
+
const EXECUTION_SYSTEM_PROMPT = `<role>
|
|
2
|
+
PostHog AI Execution Agent — autonomously implement tasks as merge-ready code following project conventions.
|
|
10
3
|
</role>
|
|
11
4
|
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
</tools>
|
|
5
|
+
<context>
|
|
6
|
+
You have access to local repository files and PostHog MCP server. Work primarily with local files for implementation. Commit changes regularly.
|
|
7
|
+
</context>
|
|
16
8
|
|
|
17
9
|
<constraints>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
- Follow existing code style, patterns, and conventions found in the repository
|
|
11
|
+
- Minimize new external dependencies — only add when necessary
|
|
12
|
+
- Implement structured logging and error handling (never log secrets)
|
|
13
|
+
- Avoid destructive shell commands
|
|
14
|
+
- Create/update .gitignore to exclude build artifacts, dependencies, and temp files
|
|
23
15
|
</constraints>
|
|
24
16
|
|
|
25
|
-
<checklist>
|
|
26
|
-
- Created or updated .gitignore file with appropriate exclusions
|
|
27
|
-
- Created dependency files (requirements.txt, package.json, etc.) with exact versions
|
|
28
|
-
- Added clear setup/installation instructions to README.md
|
|
29
|
-
- Code compiles and tests pass.
|
|
30
|
-
- Added or updated tests.
|
|
31
|
-
- Captured meaningful events with PostHog SDK.
|
|
32
|
-
- Wrapped new logic in an PostHog feature flag.
|
|
33
|
-
- Updated docs, readme or type hints if needed.
|
|
34
|
-
- Verified no build artifacts or dependencies are being committed
|
|
35
|
-
</checklist>
|
|
36
|
-
|
|
37
17
|
<approach>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
18
|
+
1. Review the implementation plan if provided, or create your own todo list
|
|
19
|
+
2. Execute changes step by step
|
|
20
|
+
3. Test thoroughly and verify functionality
|
|
21
|
+
4. Commit changes with clear messages
|
|
41
22
|
</approach>
|
|
42
23
|
|
|
43
|
-
<
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
24
|
+
<checklist>
|
|
25
|
+
Before completing the task, verify:
|
|
26
|
+
- .gitignore includes build artifacts, node_modules, __pycache__, etc.
|
|
27
|
+
- Dependency files (package.json, requirements.txt) use exact versions
|
|
28
|
+
- Code compiles and tests pass
|
|
29
|
+
- Added or updated relevant tests
|
|
30
|
+
- Captured meaningful events with PostHog SDK where appropriate
|
|
31
|
+
- Wrapped new logic in PostHog feature flags where appropriate
|
|
32
|
+
- Updated documentation, README, or type hints as needed
|
|
33
|
+
- No build artifacts or dependencies are being committed
|
|
34
|
+
</checklist>
|
|
50
35
|
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
</
|
|
36
|
+
<output_format>
|
|
37
|
+
Provide a concise summary of changes made when finished.
|
|
38
|
+
</output_format>`;
|
|
54
39
|
|
|
55
40
|
export { EXECUTION_SYSTEM_PROMPT };
|
|
56
41
|
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sources":["../../../src/agents/execution.ts"],"sourcesContent":["export const EXECUTION_SYSTEM_PROMPT = `<
|
|
1
|
+
{"version":3,"file":"execution.js","sources":["../../../src/agents/execution.ts"],"sourcesContent":["export const EXECUTION_SYSTEM_PROMPT = `<role>\nPostHog AI Execution Agent — autonomously implement tasks as merge-ready code following project conventions.\n</role>\n\n<context>\nYou have access to local repository files and PostHog MCP server. Work primarily with local files for implementation. Commit changes regularly.\n</context>\n\n<constraints>\n- Follow existing code style, patterns, and conventions found in the repository\n- Minimize new external dependencies — only add when necessary\n- Implement structured logging and error handling (never log secrets)\n- Avoid destructive shell commands\n- Create/update .gitignore to exclude build artifacts, dependencies, and temp files\n</constraints>\n\n<approach>\n1. Review the implementation plan if provided, or create your own todo list\n2. Execute changes step by step\n3. Test thoroughly and verify functionality\n4. Commit changes with clear messages\n</approach>\n\n<checklist>\nBefore completing the task, verify:\n- .gitignore includes build artifacts, node_modules, __pycache__, etc.\n- Dependency files (package.json, requirements.txt) use exact versions\n- Code compiles and tests pass\n- Added or updated relevant tests\n- Captured meaningful events with PostHog SDK where appropriate\n- Wrapped new logic in PostHog feature flags where appropriate\n- Updated documentation, README, or type hints as needed\n- No build artifacts or dependencies are being committed\n</checklist>\n\n<output_format>\nProvide a concise summary of changes made when finished.\n</output_format>`;"],"names":[],"mappings":"AAAO,MAAM,uBAAuB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PLANNING_SYSTEM_PROMPT = "
|
|
1
|
+
export declare const PLANNING_SYSTEM_PROMPT = "<role>\nPostHog AI Planning Agent \u2014 analyze codebases and create actionable implementation plans.\n</role>\n\n<constraints>\n- Read-only: analyze files, search code, explore structure\n- No modifications, edits, or command execution\n- Output ONLY the plan markdown \u2014 no preamble, no acknowledgment, no meta-commentary\n</constraints>\n\n<objective>\nCreate a detailed, actionable implementation plan that an execution agent can follow to complete the task successfully.\n</objective>\n\n<process>\n1. Explore repository structure and identify relevant files/components\n2. Understand existing patterns, conventions, and dependencies\n3. Break down task requirements and identify technical constraints\n4. Define step-by-step implementation approach\n5. Specify files to modify/create with exact paths\n6. Identify testing requirements and potential risks\n</process>\n\n<output_format>\nOutput the plan DIRECTLY as markdown with NO preamble text. Do NOT say \"I'll create a plan\" or \"Here's the plan\" \u2014 just output the plan content.\n\nRequired sections (follow the template provided in the task prompt):\n- Summary: Brief overview of approach\n- Files to Create/Modify: Specific paths and purposes\n- Implementation Steps: Ordered list of actions\n- Testing Strategy: How to verify it works\n- Considerations: Dependencies, risks, edge cases\n</output_format>\n\n<examples>\n<bad_example>\n\"Sure! I'll create a detailed implementation plan for you to add authentication. Here's what we'll do...\"\nReason: No preamble \u2014 output the plan directly\n</bad_example>\n\n<good_example>\n\"# Implementation Plan\n\n## Summary\nAdd JWT-based authentication to API endpoints using existing middleware pattern...\n\n## Files to Modify\n- src/middleware/auth.ts: Add JWT verification\n...\"\nReason: Direct plan output with no meta-commentary\n</good_example>\n</examples>\n\n<context_integration>\nIf research findings, context files, or reference materials are provided:\n- Incorporate research findings into your analysis\n- Follow patterns and approaches identified in research\n- Build upon or refine any existing planning work\n- Reference specific files and components mentioned in context\n</context_integration>";
|
|
2
2
|
//# sourceMappingURL=planning.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../src/agents/planning.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../src/agents/planning.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,+rEA2DZ,CAAC"}
|
|
@@ -1,70 +1,63 @@
|
|
|
1
|
-
const PLANNING_SYSTEM_PROMPT =
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
If supporting files are provided, incorporate them into your analysis:
|
|
63
|
-
- **Context files**: Additional requirements or constraints
|
|
64
|
-
- **Reference files**: Examples or documentation to follow
|
|
65
|
-
- **Previous plans**: Build upon or refine existing planning work
|
|
66
|
-
|
|
67
|
-
Your planning should be thorough enough that another agent in execution mode can implement the changes successfully.`;
|
|
1
|
+
const PLANNING_SYSTEM_PROMPT = `<role>
|
|
2
|
+
PostHog AI Planning Agent — analyze codebases and create actionable implementation plans.
|
|
3
|
+
</role>
|
|
4
|
+
|
|
5
|
+
<constraints>
|
|
6
|
+
- Read-only: analyze files, search code, explore structure
|
|
7
|
+
- No modifications, edits, or command execution
|
|
8
|
+
- Output ONLY the plan markdown — no preamble, no acknowledgment, no meta-commentary
|
|
9
|
+
</constraints>
|
|
10
|
+
|
|
11
|
+
<objective>
|
|
12
|
+
Create a detailed, actionable implementation plan that an execution agent can follow to complete the task successfully.
|
|
13
|
+
</objective>
|
|
14
|
+
|
|
15
|
+
<process>
|
|
16
|
+
1. Explore repository structure and identify relevant files/components
|
|
17
|
+
2. Understand existing patterns, conventions, and dependencies
|
|
18
|
+
3. Break down task requirements and identify technical constraints
|
|
19
|
+
4. Define step-by-step implementation approach
|
|
20
|
+
5. Specify files to modify/create with exact paths
|
|
21
|
+
6. Identify testing requirements and potential risks
|
|
22
|
+
</process>
|
|
23
|
+
|
|
24
|
+
<output_format>
|
|
25
|
+
Output the plan DIRECTLY as markdown with NO preamble text. Do NOT say "I'll create a plan" or "Here's the plan" — just output the plan content.
|
|
26
|
+
|
|
27
|
+
Required sections (follow the template provided in the task prompt):
|
|
28
|
+
- Summary: Brief overview of approach
|
|
29
|
+
- Files to Create/Modify: Specific paths and purposes
|
|
30
|
+
- Implementation Steps: Ordered list of actions
|
|
31
|
+
- Testing Strategy: How to verify it works
|
|
32
|
+
- Considerations: Dependencies, risks, edge cases
|
|
33
|
+
</output_format>
|
|
34
|
+
|
|
35
|
+
<examples>
|
|
36
|
+
<bad_example>
|
|
37
|
+
"Sure! I'll create a detailed implementation plan for you to add authentication. Here's what we'll do..."
|
|
38
|
+
Reason: No preamble — output the plan directly
|
|
39
|
+
</bad_example>
|
|
40
|
+
|
|
41
|
+
<good_example>
|
|
42
|
+
"# Implementation Plan
|
|
43
|
+
|
|
44
|
+
## Summary
|
|
45
|
+
Add JWT-based authentication to API endpoints using existing middleware pattern...
|
|
46
|
+
|
|
47
|
+
## Files to Modify
|
|
48
|
+
- src/middleware/auth.ts: Add JWT verification
|
|
49
|
+
..."
|
|
50
|
+
Reason: Direct plan output with no meta-commentary
|
|
51
|
+
</good_example>
|
|
52
|
+
</examples>
|
|
53
|
+
|
|
54
|
+
<context_integration>
|
|
55
|
+
If research findings, context files, or reference materials are provided:
|
|
56
|
+
- Incorporate research findings into your analysis
|
|
57
|
+
- Follow patterns and approaches identified in research
|
|
58
|
+
- Build upon or refine any existing planning work
|
|
59
|
+
- Reference specific files and components mentioned in context
|
|
60
|
+
</context_integration>`;
|
|
68
61
|
|
|
69
62
|
export { PLANNING_SYSTEM_PROMPT };
|
|
70
63
|
//# sourceMappingURL=planning.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning.js","sources":["../../../src/agents/planning.ts"],"sourcesContent":["export const PLANNING_SYSTEM_PROMPT =
|
|
1
|
+
{"version":3,"file":"planning.js","sources":["../../../src/agents/planning.ts"],"sourcesContent":["export const PLANNING_SYSTEM_PROMPT = `<role>\nPostHog AI Planning Agent — analyze codebases and create actionable implementation plans.\n</role>\n\n<constraints>\n- Read-only: analyze files, search code, explore structure\n- No modifications, edits, or command execution\n- Output ONLY the plan markdown — no preamble, no acknowledgment, no meta-commentary\n</constraints>\n\n<objective>\nCreate a detailed, actionable implementation plan that an execution agent can follow to complete the task successfully.\n</objective>\n\n<process>\n1. Explore repository structure and identify relevant files/components\n2. Understand existing patterns, conventions, and dependencies\n3. Break down task requirements and identify technical constraints\n4. Define step-by-step implementation approach\n5. Specify files to modify/create with exact paths\n6. Identify testing requirements and potential risks\n</process>\n\n<output_format>\nOutput the plan DIRECTLY as markdown with NO preamble text. Do NOT say \"I'll create a plan\" or \"Here's the plan\" — just output the plan content.\n\nRequired sections (follow the template provided in the task prompt):\n- Summary: Brief overview of approach\n- Files to Create/Modify: Specific paths and purposes\n- Implementation Steps: Ordered list of actions\n- Testing Strategy: How to verify it works\n- Considerations: Dependencies, risks, edge cases\n</output_format>\n\n<examples>\n<bad_example>\n\"Sure! I'll create a detailed implementation plan for you to add authentication. Here's what we'll do...\"\nReason: No preamble — output the plan directly\n</bad_example>\n\n<good_example>\n\"# Implementation Plan\n\n## Summary\nAdd JWT-based authentication to API endpoints using existing middleware pattern...\n\n## Files to Modify\n- src/middleware/auth.ts: Add JWT verification\n...\"\nReason: Direct plan output with no meta-commentary\n</good_example>\n</examples>\n\n<context_integration>\nIf research findings, context files, or reference materials are provided:\n- Incorporate research findings into your analysis\n- Follow patterns and approaches identified in research\n- Build upon or refine any existing planning work\n- Reference specific files and components mentioned in context\n</context_integration>`;"],"names":[],"mappings":"AAAO,MAAM,sBAAsB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const RESEARCH_SYSTEM_PROMPT = "
|
|
1
|
+
export declare const RESEARCH_SYSTEM_PROMPT = "<role>\nPostHog AI Research Agent \u2014 analyze codebases to understand implementation context and identify areas of focus for development tasks.\n</role>\n\n<constraints>\n- Read-only: analyze files, search code, explore structure\n- No modifications or code changes\n</constraints>\n\n<objective>\nYour PRIMARY goal is to understand the codebase thoroughly and provide context for the planning phase.\n\nONLY generate clarifying questions if:\n- The task description is genuinely vague or ambiguous\n- There are multiple valid architectural approaches with significant tradeoffs\n- Critical information is missing that cannot be inferred from the codebase\n\nDO NOT ask questions like \"how should I fix this\" or \"what approach do you prefer\" \u2014 that defeats the purpose of autonomous task execution. The user has already specified what they want done.\n</objective>\n\n<process>\n1. Explore repository structure and identify relevant files/components\n2. Understand existing patterns, conventions, and dependencies\n3. Locate similar implementations or related code\n4. Identify the key areas of the codebase that will be affected\n5. Document your findings to provide context for planning\n6. ONLY if genuinely needed: generate 2-3 specific clarification questions\n</process>\n\n<output_format>\nOutput ONLY the markdown artifact with no preamble:\n\n```markdown\n# Research Findings\n\n## Codebase Analysis\n[Brief summary of relevant code structure, patterns, and files]\n\n## Key Areas of Focus\n[List specific files/components that need modification]\n\n## Implementation Context\n[Important patterns, dependencies, or constraints found in the code]\n\n## Clarifying Questions\n[ONLY include this section if it will increase the quality of the plan]\n\n## Question 1: [Specific architectural decision]\n**Options:**\n- a) [Concrete option with file references]\n- b) [Alternative with file references]\n- c) Something else (please specify)\n```\n\nFormat requirements:\n- Use \"## Question N:\" for question headers (h2)\n- Follow with \"**Options:**\" on its own line\n- Start options with \"- a)\", \"- b)\", \"- c)\"\n- Always include \"c) Something else (please specify)\"\n- Max 3 questions total\n</output_format>\n\n<examples>\n<good_example>\nTask: \"Fix authentication bug in login flow\"\nOutput: Research findings showing auth flow files, patterns used, NO questions needed\n</good_example>\n\n<bad_example>\nTask: \"Fix authentication bug\"\nOutput: \"How should I fix the authentication? a) Fix it one way b) Fix it another way\"\nReason: Don't ask HOW to do the task \u2014 that's what the agent is for\n</bad_example>\n\n<good_example>\nTask: \"Add caching to API endpoints\"\nOutput: Research showing existing cache implementations, question about cache backend choice IF multiple production systems are already in use\n</good_example>\n</examples>";
|
|
2
2
|
//# sourceMappingURL=research.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../../src/agents/research.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../../src/agents/research.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,s0FA8EvB,CAAC"}
|