@posthog/agent 2.3.172 → 2.3.187
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.js +101 -116
- package/dist/agent.js.map +1 -1
- package/dist/posthog-api.js +1 -1
- package/dist/posthog-api.js.map +1 -1
- package/dist/server/agent-server.d.ts +1 -1
- package/dist/server/agent-server.js +67 -82
- package/dist/server/agent-server.js.map +1 -1
- package/dist/server/bin.cjs +101 -116
- package/dist/server/bin.cjs.map +1 -1
- package/package.json +1 -1
- package/src/acp-extensions.ts +3 -0
- package/src/adapters/claude/claude-agent.ts +13 -9
- package/src/adapters/codex/codex-agent.ts +51 -74
- package/src/adapters/codex/codex-client.ts +8 -7
- package/src/adapters/codex/session-state.ts +5 -8
- package/src/adapters/codex/spawn.ts +2 -0
- package/src/server/bin.ts +1 -1
- package/src/server/schemas.ts +1 -1
package/dist/server/bin.cjs
CHANGED
|
@@ -894,7 +894,7 @@ var require_dist2 = __commonJS({
|
|
|
894
894
|
|
|
895
895
|
// src/server/bin.ts
|
|
896
896
|
var import_commander = require("commander");
|
|
897
|
-
var
|
|
897
|
+
var import_v42 = require("zod/v4");
|
|
898
898
|
|
|
899
899
|
// src/server/agent-server.ts
|
|
900
900
|
var import_sdk5 = require("@agentclientprotocol/sdk");
|
|
@@ -904,7 +904,7 @@ var import_hono = require("hono");
|
|
|
904
904
|
// package.json
|
|
905
905
|
var package_default = {
|
|
906
906
|
name: "@posthog/agent",
|
|
907
|
-
version: "2.3.
|
|
907
|
+
version: "2.3.187",
|
|
908
908
|
repository: "https://github.com/PostHog/code",
|
|
909
909
|
description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
|
|
910
910
|
exports: {
|
|
@@ -1062,7 +1062,9 @@ var POSTHOG_NOTIFICATIONS = {
|
|
|
1062
1062
|
/** Task-level notification (progress, milestones) */
|
|
1063
1063
|
TASK_NOTIFICATION: "_posthog/task_notification",
|
|
1064
1064
|
/** Marks a boundary for log compaction */
|
|
1065
|
-
COMPACT_BOUNDARY: "_posthog/compact_boundary"
|
|
1065
|
+
COMPACT_BOUNDARY: "_posthog/compact_boundary",
|
|
1066
|
+
/** Token usage update for a session turn */
|
|
1067
|
+
USAGE_UPDATE: "_posthog/usage_update"
|
|
1066
1068
|
};
|
|
1067
1069
|
|
|
1068
1070
|
// src/adapters/acp-connection.ts
|
|
@@ -3006,7 +3008,6 @@ var CODE_EXECUTION_MODES = [
|
|
|
3006
3008
|
function getAvailableModes() {
|
|
3007
3009
|
return IS_ROOT ? availableModes.filter((m) => m.id !== "bypassPermissions") : availableModes;
|
|
3008
3010
|
}
|
|
3009
|
-
var CODEX_NATIVE_MODES = ["auto", "read-only", "full-access"];
|
|
3010
3011
|
var codexModes = [
|
|
3011
3012
|
{
|
|
3012
3013
|
id: "read-only",
|
|
@@ -4392,16 +4393,19 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
|
|
|
4392
4393
|
}
|
|
4393
4394
|
});
|
|
4394
4395
|
}
|
|
4395
|
-
await this.client.extNotification(
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4396
|
+
await this.client.extNotification(
|
|
4397
|
+
POSTHOG_NOTIFICATIONS.USAGE_UPDATE,
|
|
4398
|
+
{
|
|
4399
|
+
sessionId: params.sessionId,
|
|
4400
|
+
used: {
|
|
4401
|
+
inputTokens: message.usage.input_tokens,
|
|
4402
|
+
outputTokens: message.usage.output_tokens,
|
|
4403
|
+
cachedReadTokens: message.usage.cache_read_input_tokens,
|
|
4404
|
+
cachedWriteTokens: message.usage.cache_creation_input_tokens
|
|
4405
|
+
},
|
|
4406
|
+
cost: message.total_cost_usd
|
|
4407
|
+
}
|
|
4408
|
+
);
|
|
4405
4409
|
const usage = {
|
|
4406
4410
|
inputTokens: this.session.accumulatedUsage.inputTokens,
|
|
4407
4411
|
outputTokens: this.session.accumulatedUsage.outputTokens,
|
|
@@ -5026,9 +5030,10 @@ var import_sdk3 = require("@agentclientprotocol/sdk");
|
|
|
5026
5030
|
|
|
5027
5031
|
// src/adapters/codex/codex-client.ts
|
|
5028
5032
|
var AUTO_APPROVED_KINDS = {
|
|
5029
|
-
|
|
5030
|
-
|
|
5031
|
-
|
|
5033
|
+
default: /* @__PURE__ */ new Set(["read", "search", "fetch", "think"]),
|
|
5034
|
+
acceptEdits: /* @__PURE__ */ new Set(["read", "edit", "search", "fetch", "think"]),
|
|
5035
|
+
plan: /* @__PURE__ */ new Set(["read", "search", "fetch", "think"]),
|
|
5036
|
+
bypassPermissions: /* @__PURE__ */ new Set([
|
|
5032
5037
|
"read",
|
|
5033
5038
|
"edit",
|
|
5034
5039
|
"delete",
|
|
@@ -5042,7 +5047,7 @@ var AUTO_APPROVED_KINDS = {
|
|
|
5042
5047
|
])
|
|
5043
5048
|
};
|
|
5044
5049
|
function shouldAutoApprove(mode, kind) {
|
|
5045
|
-
if (mode === "
|
|
5050
|
+
if (mode === "bypassPermissions") return true;
|
|
5046
5051
|
if (!kind) return false;
|
|
5047
5052
|
return AUTO_APPROVED_KINDS[mode]?.has(kind) ?? false;
|
|
5048
5053
|
}
|
|
@@ -5149,7 +5154,7 @@ function createSessionState(sessionId, cwd, opts) {
|
|
|
5149
5154
|
return {
|
|
5150
5155
|
sessionId,
|
|
5151
5156
|
cwd,
|
|
5152
|
-
modeId: opts?.modeId ?? "
|
|
5157
|
+
modeId: opts?.modeId ?? "default",
|
|
5153
5158
|
modelId: opts?.modelId,
|
|
5154
5159
|
configOptions: [],
|
|
5155
5160
|
accumulatedUsage: {
|
|
@@ -5158,8 +5163,7 @@ function createSessionState(sessionId, cwd, opts) {
|
|
|
5158
5163
|
cachedReadTokens: 0,
|
|
5159
5164
|
cachedWriteTokens: 0
|
|
5160
5165
|
},
|
|
5161
|
-
permissionMode: opts?.permissionMode ?? "
|
|
5162
|
-
cancelled: false,
|
|
5166
|
+
permissionMode: opts?.permissionMode ?? "default",
|
|
5163
5167
|
taskRunId: opts?.taskRunId,
|
|
5164
5168
|
taskId: opts?.taskId
|
|
5165
5169
|
};
|
|
@@ -5273,7 +5277,7 @@ function buildConfigArgs(options) {
|
|
|
5273
5277
|
args.push("-c", `model="${options.model}"`);
|
|
5274
5278
|
}
|
|
5275
5279
|
if (options.instructions) {
|
|
5276
|
-
const escaped = options.instructions.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
5280
|
+
const escaped = options.instructions.replace(/\\/g, "\\\\").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/"/g, '\\"');
|
|
5277
5281
|
args.push("-c", `instructions="${escaped}"`);
|
|
5278
5282
|
}
|
|
5279
5283
|
return args;
|
|
@@ -5353,12 +5357,18 @@ function spawnCodexProcess(options) {
|
|
|
5353
5357
|
}
|
|
5354
5358
|
|
|
5355
5359
|
// src/adapters/codex/codex-agent.ts
|
|
5356
|
-
function
|
|
5357
|
-
if (mode &&
|
|
5360
|
+
function toCodeExecutionMode(mode) {
|
|
5361
|
+
if (mode && CODE_EXECUTION_MODES.includes(mode)) {
|
|
5358
5362
|
return mode;
|
|
5359
5363
|
}
|
|
5360
|
-
return "
|
|
5364
|
+
return "default";
|
|
5361
5365
|
}
|
|
5366
|
+
var CODEX_NATIVE_MODE = {
|
|
5367
|
+
default: "default",
|
|
5368
|
+
acceptEdits: "default",
|
|
5369
|
+
plan: "plan",
|
|
5370
|
+
bypassPermissions: "default"
|
|
5371
|
+
};
|
|
5362
5372
|
var CodexAcpAgent = class extends BaseAcpAgent {
|
|
5363
5373
|
adapterName = "codex";
|
|
5364
5374
|
codexProcess;
|
|
@@ -5384,25 +5394,9 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5384
5394
|
notificationHistory: [],
|
|
5385
5395
|
cancelled: false
|
|
5386
5396
|
};
|
|
5397
|
+
this.sessionState = createSessionState("", cwd);
|
|
5387
5398
|
this.codexConnection = new import_sdk3.ClientSideConnection(
|
|
5388
|
-
(_agent) => createCodexClient(
|
|
5389
|
-
this.client,
|
|
5390
|
-
this.logger,
|
|
5391
|
-
this.sessionState ?? {
|
|
5392
|
-
sessionId: "",
|
|
5393
|
-
cwd: "",
|
|
5394
|
-
modeId: "auto",
|
|
5395
|
-
configOptions: [],
|
|
5396
|
-
accumulatedUsage: {
|
|
5397
|
-
inputTokens: 0,
|
|
5398
|
-
outputTokens: 0,
|
|
5399
|
-
cachedReadTokens: 0,
|
|
5400
|
-
cachedWriteTokens: 0
|
|
5401
|
-
},
|
|
5402
|
-
permissionMode: "auto",
|
|
5403
|
-
cancelled: false
|
|
5404
|
-
}
|
|
5405
|
-
),
|
|
5399
|
+
(_agent) => createCodexClient(this.client, this.logger, this.sessionState),
|
|
5406
5400
|
codexStream
|
|
5407
5401
|
);
|
|
5408
5402
|
}
|
|
@@ -5439,7 +5433,7 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5439
5433
|
taskId: meta?.taskId ?? meta?.persistence?.taskId,
|
|
5440
5434
|
modeId: response.modes?.currentModeId ?? "default",
|
|
5441
5435
|
modelId: response.models?.currentModelId,
|
|
5442
|
-
permissionMode:
|
|
5436
|
+
permissionMode: toCodeExecutionMode(meta?.permissionMode)
|
|
5443
5437
|
});
|
|
5444
5438
|
this.sessionId = response.sessionId;
|
|
5445
5439
|
this.sessionState.configOptions = response.configOptions ?? [];
|
|
@@ -5458,7 +5452,10 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5458
5452
|
}
|
|
5459
5453
|
async loadSession(params) {
|
|
5460
5454
|
const response = await this.codexConnection.loadSession(params);
|
|
5461
|
-
|
|
5455
|
+
const meta = params._meta;
|
|
5456
|
+
this.sessionState = createSessionState(params.sessionId, params.cwd, {
|
|
5457
|
+
permissionMode: toCodeExecutionMode(meta?.permissionMode)
|
|
5458
|
+
});
|
|
5462
5459
|
this.sessionId = params.sessionId;
|
|
5463
5460
|
this.sessionState.configOptions = response.configOptions ?? [];
|
|
5464
5461
|
return response;
|
|
@@ -5469,10 +5466,14 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5469
5466
|
cwd: params.cwd,
|
|
5470
5467
|
mcpServers: params.mcpServers ?? []
|
|
5471
5468
|
});
|
|
5472
|
-
|
|
5469
|
+
const meta = params._meta;
|
|
5470
|
+
this.sessionState = createSessionState(params.sessionId, params.cwd, {
|
|
5471
|
+
taskRunId: meta?.taskRunId,
|
|
5472
|
+
taskId: meta?.taskId ?? meta?.persistence?.taskId,
|
|
5473
|
+
permissionMode: toCodeExecutionMode(meta?.permissionMode)
|
|
5474
|
+
});
|
|
5473
5475
|
this.sessionId = params.sessionId;
|
|
5474
5476
|
this.sessionState.configOptions = loadResponse.configOptions ?? [];
|
|
5475
|
-
const meta = params._meta;
|
|
5476
5477
|
if (meta?.taskRunId) {
|
|
5477
5478
|
await this.client.extNotification(POSTHOG_NOTIFICATIONS.SDK_SESSION, {
|
|
5478
5479
|
taskRunId: meta.taskRunId,
|
|
@@ -5492,7 +5493,12 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5492
5493
|
mcpServers: params.mcpServers ?? [],
|
|
5493
5494
|
_meta: params._meta
|
|
5494
5495
|
});
|
|
5495
|
-
|
|
5496
|
+
const meta = params._meta;
|
|
5497
|
+
this.sessionState = createSessionState(newResponse.sessionId, params.cwd, {
|
|
5498
|
+
taskRunId: meta?.taskRunId,
|
|
5499
|
+
taskId: meta?.taskId ?? meta?.persistence?.taskId,
|
|
5500
|
+
permissionMode: toCodeExecutionMode(meta?.permissionMode)
|
|
5501
|
+
});
|
|
5496
5502
|
this.sessionId = newResponse.sessionId;
|
|
5497
5503
|
this.sessionState.configOptions = newResponse.configOptions ?? [];
|
|
5498
5504
|
return newResponse;
|
|
@@ -5501,22 +5507,14 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5501
5507
|
return this.codexConnection.listSessions(params);
|
|
5502
5508
|
}
|
|
5503
5509
|
async unstable_listSessions(params) {
|
|
5504
|
-
return this.
|
|
5510
|
+
return this.listSessions(params);
|
|
5505
5511
|
}
|
|
5506
5512
|
async prompt(params) {
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
resetUsage(this.sessionState);
|
|
5511
|
-
}
|
|
5513
|
+
this.session.cancelled = false;
|
|
5514
|
+
this.session.interruptReason = void 0;
|
|
5515
|
+
resetUsage(this.sessionState);
|
|
5512
5516
|
const response = await this.codexConnection.prompt(params);
|
|
5513
|
-
if (this.sessionState
|
|
5514
|
-
this.sessionState.accumulatedUsage.inputTokens += response.usage.inputTokens ?? 0;
|
|
5515
|
-
this.sessionState.accumulatedUsage.outputTokens += response.usage.outputTokens ?? 0;
|
|
5516
|
-
this.sessionState.accumulatedUsage.cachedReadTokens += response.usage.cachedReadTokens ?? 0;
|
|
5517
|
-
this.sessionState.accumulatedUsage.cachedWriteTokens += response.usage.cachedWriteTokens ?? 0;
|
|
5518
|
-
}
|
|
5519
|
-
if (this.sessionState?.taskRunId) {
|
|
5517
|
+
if (this.sessionState.taskRunId) {
|
|
5520
5518
|
const { accumulatedUsage } = this.sessionState;
|
|
5521
5519
|
await this.client.extNotification(POSTHOG_NOTIFICATIONS.TURN_COMPLETE, {
|
|
5522
5520
|
sessionId: params.sessionId,
|
|
@@ -5530,7 +5528,7 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5530
5528
|
}
|
|
5531
5529
|
});
|
|
5532
5530
|
if (response.usage) {
|
|
5533
|
-
await this.client.extNotification(
|
|
5531
|
+
await this.client.extNotification(POSTHOG_NOTIFICATIONS.USAGE_UPDATE, {
|
|
5534
5532
|
sessionId: params.sessionId,
|
|
5535
5533
|
used: {
|
|
5536
5534
|
inputTokens: response.usage.inputTokens ?? 0,
|
|
@@ -5545,38 +5543,24 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5545
5543
|
return response;
|
|
5546
5544
|
}
|
|
5547
5545
|
async interrupt() {
|
|
5548
|
-
if (this.sessionState) {
|
|
5549
|
-
this.sessionState.cancelled = true;
|
|
5550
|
-
}
|
|
5551
5546
|
await this.codexConnection.cancel({
|
|
5552
5547
|
sessionId: this.sessionId
|
|
5553
5548
|
});
|
|
5554
5549
|
}
|
|
5555
|
-
async cancel(params) {
|
|
5556
|
-
if (this.sessionState) {
|
|
5557
|
-
this.sessionState.cancelled = true;
|
|
5558
|
-
const meta = params._meta;
|
|
5559
|
-
if (meta?.interruptReason) {
|
|
5560
|
-
this.sessionState.interruptReason = meta.interruptReason;
|
|
5561
|
-
}
|
|
5562
|
-
}
|
|
5563
|
-
await this.codexConnection.cancel(params);
|
|
5564
|
-
}
|
|
5565
5550
|
async setSessionMode(params) {
|
|
5566
|
-
const
|
|
5551
|
+
const requestedMode = toCodeExecutionMode(params.modeId);
|
|
5552
|
+
const nativeMode = CODEX_NATIVE_MODE[requestedMode];
|
|
5567
5553
|
const response = await this.codexConnection.setSessionMode({
|
|
5568
5554
|
...params,
|
|
5569
|
-
modeId:
|
|
5555
|
+
modeId: nativeMode
|
|
5570
5556
|
});
|
|
5571
|
-
|
|
5572
|
-
|
|
5573
|
-
this.sessionState.permissionMode = permissionMode;
|
|
5574
|
-
}
|
|
5557
|
+
this.sessionState.modeId = nativeMode;
|
|
5558
|
+
this.sessionState.permissionMode = requestedMode;
|
|
5575
5559
|
return response ?? {};
|
|
5576
5560
|
}
|
|
5577
5561
|
async setSessionConfigOption(params) {
|
|
5578
5562
|
const response = await this.codexConnection.setSessionConfigOption(params);
|
|
5579
|
-
if (
|
|
5563
|
+
if (response.configOptions) {
|
|
5580
5564
|
this.sessionState.configOptions = response.configOptions;
|
|
5581
5565
|
}
|
|
5582
5566
|
return response;
|
|
@@ -5585,6 +5569,7 @@ var CodexAcpAgent = class extends BaseAcpAgent {
|
|
|
5585
5569
|
}
|
|
5586
5570
|
async closeSession() {
|
|
5587
5571
|
this.logger.info("Closing Codex session", { sessionId: this.sessionId });
|
|
5572
|
+
this.session.abortController.abort();
|
|
5588
5573
|
this.session.settingsManager.dispose();
|
|
5589
5574
|
try {
|
|
5590
5575
|
this.codexProcess.kill();
|
|
@@ -12117,45 +12102,45 @@ function validateJwt(token, publicKey) {
|
|
|
12117
12102
|
}
|
|
12118
12103
|
|
|
12119
12104
|
// src/server/schemas.ts
|
|
12120
|
-
var
|
|
12121
|
-
var httpHeaderSchema =
|
|
12122
|
-
name:
|
|
12123
|
-
value:
|
|
12105
|
+
var import_v4 = require("zod/v4");
|
|
12106
|
+
var httpHeaderSchema = import_v4.z.object({
|
|
12107
|
+
name: import_v4.z.string(),
|
|
12108
|
+
value: import_v4.z.string()
|
|
12124
12109
|
});
|
|
12125
|
-
var remoteMcpServerSchema =
|
|
12126
|
-
type:
|
|
12127
|
-
name:
|
|
12128
|
-
url:
|
|
12129
|
-
headers:
|
|
12110
|
+
var remoteMcpServerSchema = import_v4.z.object({
|
|
12111
|
+
type: import_v4.z.enum(["http", "sse"]),
|
|
12112
|
+
name: import_v4.z.string().min(1, "MCP server name is required"),
|
|
12113
|
+
url: import_v4.z.url({ error: "MCP server url must be a valid URL" }),
|
|
12114
|
+
headers: import_v4.z.array(httpHeaderSchema).default([])
|
|
12130
12115
|
});
|
|
12131
|
-
var mcpServersSchema =
|
|
12132
|
-
var claudeCodeConfigSchema =
|
|
12133
|
-
systemPrompt:
|
|
12134
|
-
|
|
12135
|
-
|
|
12136
|
-
type:
|
|
12137
|
-
preset:
|
|
12138
|
-
append:
|
|
12116
|
+
var mcpServersSchema = import_v4.z.array(remoteMcpServerSchema);
|
|
12117
|
+
var claudeCodeConfigSchema = import_v4.z.object({
|
|
12118
|
+
systemPrompt: import_v4.z.union([
|
|
12119
|
+
import_v4.z.string(),
|
|
12120
|
+
import_v4.z.object({
|
|
12121
|
+
type: import_v4.z.literal("preset"),
|
|
12122
|
+
preset: import_v4.z.literal("claude_code"),
|
|
12123
|
+
append: import_v4.z.string().optional()
|
|
12139
12124
|
})
|
|
12140
12125
|
]).optional(),
|
|
12141
|
-
plugins:
|
|
12126
|
+
plugins: import_v4.z.array(import_v4.z.object({ type: import_v4.z.literal("local"), path: import_v4.z.string() })).optional()
|
|
12142
12127
|
});
|
|
12143
|
-
var jsonRpcRequestSchema =
|
|
12144
|
-
jsonrpc:
|
|
12145
|
-
method:
|
|
12146
|
-
params:
|
|
12147
|
-
id:
|
|
12128
|
+
var jsonRpcRequestSchema = import_v4.z.object({
|
|
12129
|
+
jsonrpc: import_v4.z.literal("2.0"),
|
|
12130
|
+
method: import_v4.z.string(),
|
|
12131
|
+
params: import_v4.z.record(import_v4.z.string(), import_v4.z.unknown()).optional(),
|
|
12132
|
+
id: import_v4.z.union([import_v4.z.string(), import_v4.z.number()]).optional()
|
|
12148
12133
|
});
|
|
12149
|
-
var userMessageParamsSchema =
|
|
12150
|
-
content:
|
|
12134
|
+
var userMessageParamsSchema = import_v4.z.object({
|
|
12135
|
+
content: import_v4.z.string().min(1, "Content is required")
|
|
12151
12136
|
});
|
|
12152
12137
|
var commandParamsSchemas = {
|
|
12153
12138
|
user_message: userMessageParamsSchema,
|
|
12154
12139
|
"posthog/user_message": userMessageParamsSchema,
|
|
12155
|
-
cancel:
|
|
12156
|
-
"posthog/cancel":
|
|
12157
|
-
close:
|
|
12158
|
-
"posthog/close":
|
|
12140
|
+
cancel: import_v4.z.object({}).optional(),
|
|
12141
|
+
"posthog/cancel": import_v4.z.object({}).optional(),
|
|
12142
|
+
close: import_v4.z.object({}).optional(),
|
|
12143
|
+
"posthog/close": import_v4.z.object({}).optional()
|
|
12159
12144
|
};
|
|
12160
12145
|
function validateCommandParams(method, params) {
|
|
12161
12146
|
const schema = commandParamsSchemas[method] ?? commandParamsSchemas[method.replace("posthog/", "")];
|
|
@@ -13379,17 +13364,17 @@ ${attributionInstructions}
|
|
|
13379
13364
|
};
|
|
13380
13365
|
|
|
13381
13366
|
// src/server/bin.ts
|
|
13382
|
-
var envSchema =
|
|
13383
|
-
JWT_PUBLIC_KEY:
|
|
13367
|
+
var envSchema = import_v42.z.object({
|
|
13368
|
+
JWT_PUBLIC_KEY: import_v42.z.string({
|
|
13384
13369
|
error: "JWT_PUBLIC_KEY is required for authenticating client connections"
|
|
13385
13370
|
}).min(1, "JWT_PUBLIC_KEY cannot be empty"),
|
|
13386
|
-
POSTHOG_API_URL:
|
|
13371
|
+
POSTHOG_API_URL: import_v42.z.url({
|
|
13387
13372
|
error: "POSTHOG_API_URL is required for LLM gateway communication"
|
|
13388
13373
|
}),
|
|
13389
|
-
POSTHOG_PERSONAL_API_KEY:
|
|
13374
|
+
POSTHOG_PERSONAL_API_KEY: import_v42.z.string({
|
|
13390
13375
|
error: "POSTHOG_PERSONAL_API_KEY is required for authenticating with PostHog services"
|
|
13391
13376
|
}).min(1, "POSTHOG_PERSONAL_API_KEY cannot be empty"),
|
|
13392
|
-
POSTHOG_PROJECT_ID:
|
|
13377
|
+
POSTHOG_PROJECT_ID: import_v42.z.string({
|
|
13393
13378
|
error: "POSTHOG_PROJECT_ID is required for routing requests to the correct project"
|
|
13394
13379
|
}).regex(/^\d+$/, "POSTHOG_PROJECT_ID must be a numeric string").transform((val) => parseInt(val, 10))
|
|
13395
13380
|
});
|