doer-agent 0.5.1 → 0.5.2

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.
@@ -34,13 +34,6 @@ export function createDefaultAgentSettingsConfig() {
34
34
  oauthLogin: null,
35
35
  oauthScope: null,
36
36
  },
37
- aws: {
38
- enabled: true,
39
- accessKeyId: null,
40
- defaultRegion: null,
41
- secretAccessKey: null,
42
- sessionToken: null,
43
- },
44
37
  jira: {
45
38
  baseUrl: null,
46
39
  email: null,
@@ -63,6 +56,9 @@ export function createDefaultAgentSettingsConfig() {
63
56
  enabled: false,
64
57
  apiToken: null,
65
58
  },
59
+ env: {
60
+ variables: [],
61
+ },
66
62
  databases: {
67
63
  defaultConnectionId: null,
68
64
  connections: [],
@@ -167,6 +163,38 @@ function normalizeAgentDatabaseSettings(value, fallback) {
167
163
  connections,
168
164
  };
169
165
  }
166
+ function normalizeAgentEnvironmentVariable(value) {
167
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
168
+ return null;
169
+ }
170
+ const raw = value;
171
+ const key = normalizeEnvVarName(raw.key);
172
+ if (!key || typeof raw.value !== "string") {
173
+ return null;
174
+ }
175
+ return {
176
+ key,
177
+ value: raw.value.replace(/\r/g, ""),
178
+ };
179
+ }
180
+ function normalizeAgentEnvironmentSettings(value, fallback) {
181
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
182
+ return fallback;
183
+ }
184
+ const raw = value;
185
+ const variablesRaw = Array.isArray(raw.variables) ? raw.variables : [];
186
+ const variables = [];
187
+ const seenKeys = new Set();
188
+ for (const item of variablesRaw) {
189
+ const normalized = normalizeAgentEnvironmentVariable(item);
190
+ if (!normalized || seenKeys.has(normalized.key)) {
191
+ continue;
192
+ }
193
+ seenKeys.add(normalized.key);
194
+ variables.push(normalized);
195
+ }
196
+ return { variables };
197
+ }
170
198
  export function getAgentDatabaseConnectionById(config, connectionId) {
171
199
  const normalizedId = normalizeDatabaseConnectionId(connectionId);
172
200
  if (!normalizedId) {
@@ -188,11 +216,11 @@ export function normalizeAgentSettingsConfig(value, fallback) {
188
216
  const codex = raw.codex && typeof raw.codex === "object" ? raw.codex : {};
189
217
  const realtime = raw.realtime && typeof raw.realtime === "object" ? raw.realtime : {};
190
218
  const git = raw.git && typeof raw.git === "object" ? raw.git : {};
191
- const aws = raw.aws && typeof raw.aws === "object" ? raw.aws : {};
192
219
  const jira = raw.jira && typeof raw.jira === "object" ? raw.jira : {};
193
220
  const notion = raw.notion && typeof raw.notion === "object" ? raw.notion : {};
194
221
  const slack = raw.slack && typeof raw.slack === "object" ? raw.slack : {};
195
222
  const figma = raw.figma && typeof raw.figma === "object" ? raw.figma : {};
223
+ const env = raw.env && typeof raw.env === "object" ? raw.env : null;
196
224
  const databases = raw.databases && typeof raw.databases === "object" ? raw.databases : null;
197
225
  return {
198
226
  general: {
@@ -218,15 +246,6 @@ export function normalizeAgentSettingsConfig(value, fallback) {
218
246
  oauthLogin: git.oauthLogin === null ? null : normalizeNullableString(git.oauthLogin) ?? base.git.oauthLogin,
219
247
  oauthScope: git.oauthScope === null ? null : normalizeNullableString(git.oauthScope) ?? base.git.oauthScope,
220
248
  },
221
- aws: {
222
- enabled: typeof aws.enabled === "boolean" ? aws.enabled : base.aws.enabled,
223
- accessKeyId: aws.accessKeyId === null ? null : normalizeNullableString(aws.accessKeyId) ?? base.aws.accessKeyId,
224
- defaultRegion: aws.defaultRegion === null ? null : normalizeNullableString(aws.defaultRegion) ?? base.aws.defaultRegion,
225
- secretAccessKey: aws.secretAccessKey === null
226
- ? null
227
- : normalizeNullableString(aws.secretAccessKey) ?? base.aws.secretAccessKey,
228
- sessionToken: aws.sessionToken === null ? null : normalizeNullableString(aws.sessionToken) ?? base.aws.sessionToken,
229
- },
230
249
  jira: {
231
250
  baseUrl: jira.baseUrl === null ? null : normalizeNullableString(jira.baseUrl) ?? base.jira.baseUrl,
232
251
  email: jira.email === null ? null : normalizeNullableString(jira.email) ?? base.jira.email,
@@ -249,6 +268,7 @@ export function normalizeAgentSettingsConfig(value, fallback) {
249
268
  enabled: typeof figma.enabled === "boolean" ? figma.enabled : base.figma.enabled,
250
269
  apiToken: figma.apiToken === null ? null : normalizeNullableString(figma.apiToken) ?? base.figma.apiToken,
251
270
  },
271
+ env: normalizeAgentEnvironmentSettings(env, base.env),
252
272
  databases: normalizeAgentDatabaseSettings(databases, base.databases),
253
273
  };
254
274
  }
@@ -300,8 +320,6 @@ function toMaskedSecret(value) {
300
320
  export async function toAgentSettingsPublic(args) {
301
321
  const realtimeKey = toMaskedSecret(args.config.realtime.apiKey);
302
322
  const gitOauth = toMaskedSecret(args.config.git.oauthToken);
303
- const awsSecret = toMaskedSecret(args.config.aws.secretAccessKey);
304
- const awsSession = toMaskedSecret(args.config.aws.sessionToken);
305
323
  const jiraToken = toMaskedSecret(args.config.jira.apiToken);
306
324
  const notionToken = toMaskedSecret(args.config.notion.apiToken);
307
325
  const slackToken = toMaskedSecret(args.config.slack.botToken);
@@ -339,17 +357,6 @@ export async function toAgentSettingsPublic(args) {
339
357
  oauthLogin: args.config.git.oauthLogin,
340
358
  oauthScope: args.config.git.oauthScope,
341
359
  },
342
- aws: {
343
- enabled: args.config.aws.enabled,
344
- accessKeyId: args.config.aws.accessKeyId,
345
- defaultRegion: args.config.aws.defaultRegion,
346
- hasSecretAccessKey: awsSecret.has,
347
- secretAccessKeyMasked: awsSecret.masked,
348
- secretAccessKeyLength: awsSecret.length,
349
- hasSessionToken: awsSession.has,
350
- sessionTokenMasked: awsSession.masked,
351
- sessionTokenLength: awsSession.length,
352
- },
353
360
  jira: {
354
361
  baseUrl: args.config.jira.baseUrl,
355
362
  email: args.config.jira.email,
@@ -380,6 +387,12 @@ export async function toAgentSettingsPublic(args) {
380
387
  apiTokenMasked: figmaToken.masked,
381
388
  apiTokenLength: figmaToken.length,
382
389
  },
390
+ env: {
391
+ variables: args.config.env.variables.map((variable) => ({
392
+ key: variable.key,
393
+ value: variable.value,
394
+ })),
395
+ },
383
396
  databases: {
384
397
  defaultConnectionId: args.config.databases.defaultConnectionId,
385
398
  connections: args.config.databases.connections.map((connection) => ({
@@ -436,11 +449,6 @@ export function normalizeAgentSettingsPatch(value) {
436
449
  move("gitOauthToken", "git", "oauthToken");
437
450
  move("gitOauthLogin", "git", "oauthLogin");
438
451
  move("gitOauthScope", "git", "oauthScope");
439
- move("awsEnabled", "aws", "enabled");
440
- move("awsAccessKeyId", "aws", "accessKeyId");
441
- move("awsDefaultRegion", "aws", "defaultRegion");
442
- move("awsSecretAccessKey", "aws", "secretAccessKey");
443
- move("awsSessionToken", "aws", "sessionToken");
444
452
  move("jiraBaseUrl", "jira", "baseUrl");
445
453
  move("jiraEmail", "jira", "email");
446
454
  move("jiraEnabled", "jira", "enabled");
@@ -455,6 +463,7 @@ export function normalizeAgentSettingsPatch(value) {
455
463
  move("figmaBaseUrl", "figma", "baseUrl");
456
464
  move("figmaEnabled", "figma", "enabled");
457
465
  move("figmaApiToken", "figma", "apiToken");
466
+ move("environmentVariables", "env", "variables");
458
467
  return patch;
459
468
  }
460
469
  export function buildAgentSettingsEnvPatch(config) {
@@ -477,18 +486,6 @@ export function buildAgentSettingsEnvPatch(config) {
477
486
  if (config.git.oauthScope)
478
487
  envPatch.DOER_GIT_OAUTH_SCOPE = config.git.oauthScope;
479
488
  }
480
- if (config.aws.enabled) {
481
- if (config.aws.accessKeyId)
482
- envPatch.AWS_ACCESS_KEY_ID = config.aws.accessKeyId;
483
- if (config.aws.defaultRegion)
484
- envPatch.AWS_DEFAULT_REGION = config.aws.defaultRegion;
485
- if (config.aws.defaultRegion)
486
- envPatch.AWS_REGION = config.aws.defaultRegion;
487
- if (config.aws.secretAccessKey)
488
- envPatch.AWS_SECRET_ACCESS_KEY = config.aws.secretAccessKey;
489
- if (config.aws.sessionToken)
490
- envPatch.AWS_SESSION_TOKEN = config.aws.sessionToken;
491
- }
492
489
  if (config.jira.enabled) {
493
490
  if (config.jira.baseUrl)
494
491
  envPatch.JIRA_BASE_URL = config.jira.baseUrl;
@@ -517,5 +514,8 @@ export function buildAgentSettingsEnvPatch(config) {
517
514
  if (config.figma.apiToken)
518
515
  envPatch.FIGMA_API_TOKEN = config.figma.apiToken;
519
516
  }
517
+ for (const variable of config.env.variables) {
518
+ envPatch[variable.key] = variable.value;
519
+ }
520
520
  return envPatch;
521
521
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "doer-agent",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Reverse-polling agent runtime for doer",
5
5
  "type": "module",
6
6
  "main": "dist/agent.js",