@messenger-agent/codex-agent 0.29.0-alpha.2 → 0.30.0-alpha.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/config.js CHANGED
@@ -1 +1 @@
1
- import{existsSync as I,readFileSync as L}from"node:fs";import{tmpdir as b}from"node:os";import{join as a}from"node:path";import{parse as A}from"yaml";import{z as e}from"zod";import{normalizeOptional as n,parseAgentAuthConfig as v,parseAgentWorkspacesConfig as h,parseGitInitConfig as x}from"@messenger-agent/shared/agent-config";import{logger as s,normalizeLogLevel as D,setLogFile as y,setLogLevel as j}from"@messenger-agent/shared/logger";import{deriveScheduleServiceConfig as F}from"@messenger-agent/shared/schedule-tools";const S="wss://m.elevo.vip/agent-bridge/tunnel",k="https://m.elevo.vip/agent-bridge/llm/v1",w=e.object({log_level:e.string().optional(),port:e.coerce.number().int().positive().optional(),auth_tokens:e.record(e.string(),e.string()).optional(),workspaces:e.array(e.object({id:e.string().optional(),name:e.string().optional(),path:e.string().optional()})).optional(),file_uploads:e.object({temp_dir:e.string().optional()}).optional(),data_dir:e.string().optional(),codex:e.object({port:e.coerce.number().int().positive().optional(),data_dir:e.string().optional(),file_uploads:e.object({temp_dir:e.string().optional()}).optional(),api_key:e.string().optional(),base_url:e.string().optional()}).optional(),openai:e.object({api_key:e.string().optional(),base_url:e.string().optional(),image_model:e.string().optional()}).optional(),schedule:e.object({enabled:e.boolean().optional()}).optional(),gitlab:e.object({ca_cert_path:e.string().optional(),host:e.string().optional()}).optional(),git:e.object({co_authors:e.array(e.string()).optional()}).optional(),tunnel:e.object({enabled:e.boolean().optional(),server_url:e.string().optional(),tunnel_id:e.string().optional(),token:e.string().optional(),reconnect_initial_ms:e.number().int().positive().optional(),reconnect_max_ms:e.number().int().positive().optional(),heartbeat_interval_ms:e.number().int().positive().optional()}).optional()}).loose();function P(){const t=process.env.AGENT_CONFIG_PATH??"./agent-config.yaml";if(!I(t)){const l="./data",_=a(l,"logs","codex-agent.log");return j("info"),y(_),s.warn(`Config file not found at ${t}`),{configPath:t,logLevel:"info",logFile:_,port:3e3,fileUploads:{tempDir:a(b(),"codex-agent-uploads")},dataDir:l,sessionsDbPath:a(l,"sessions.db"),codex:{},openai:{imageModel:"gpt-image-2"},schedule:{enabled:!0},tunnel:{enabled:!1,reconnectInitialMs:1e3,reconnectMaxMs:3e4,heartbeatIntervalMs:3e4},...v({}),...h({}),...x({})}}let p;try{p=A(L(t,"utf-8"))}catch(l){s.error(`Failed to parse config file at ${t}:`,l),p={}}const r=w.safeParse(p??{});r.success||s.error(`Invalid config format at ${t}:`,r.error.issues);const o=r.success?r.data:{},g=D(o.log_level),c=n(o.codex?.data_dir)??n(o.data_dir)??"./data",u=a(c,"logs","codex-agent.log"),i=o.tunnel?.enabled??!1,d=n(o.tunnel?.token),m=n(o.codex?.api_key)??(i?d:void 0),f=n(o.codex?.base_url)??(i?k:void 0),C=n(o.openai?.api_key)??(i?d:void 0),M=n(o.openai?.base_url)??(i?k:void 0);j(g),y(u);const U={configPath:t,logLevel:g,logFile:u,port:o.codex?.port??o.port??3e3,fileUploads:{tempDir:n(o.codex?.file_uploads?.temp_dir)??n(o.file_uploads?.temp_dir)??a(b(),"codex-agent-uploads")},dataDir:c,sessionsDbPath:a(c,"sessions.db"),codex:{apiKey:m,baseUrl:f},openai:{apiKey:C,baseUrl:M,imageModel:n(o.openai?.image_model)??"gpt-image-2"},schedule:{enabled:o.schedule?.enabled??!0,...F(f,m)},tunnel:{enabled:i,serverUrl:n(o.tunnel?.server_url)??(i?S:void 0),tunnelId:n(o.tunnel?.tunnel_id),token:d,reconnectInitialMs:o.tunnel?.reconnect_initial_ms??1e3,reconnectMaxMs:o.tunnel?.reconnect_max_ms??3e4,heartbeatIntervalMs:o.tunnel?.heartbeat_interval_ms??3e4},...v(o),...h(o),...x(o)};return s.info(`Loaded agent config from ${t}`),U}const O=P();export{O as appConfig};
1
+ import{existsSync as A,readFileSync as I}from"node:fs";import{tmpdir as v}from"node:os";import{join as a}from"node:path";import{parse as L}from"yaml";import{z as e}from"zod";import{normalizeOptional as n,parseAgentAuthConfig as h,parseAgentWorkspacesConfig as x,parseGitInitConfig as y,resolveAgentBridgeUrls as D}from"@messenger-agent/shared/agent-config";import{logger as s,normalizeLogLevel as F,setLogFile as j,setLogLevel as k}from"@messenger-agent/shared/logger";import{deriveScheduleServiceConfig as P}from"@messenger-agent/shared/schedule-tools";const S=e.object({server:e.string().optional(),log_level:e.string().optional(),port:e.coerce.number().int().positive().optional(),auth_tokens:e.record(e.string(),e.string()).optional(),workspaces:e.array(e.object({id:e.string().optional(),name:e.string().optional(),path:e.string().optional()})).optional(),file_uploads:e.object({temp_dir:e.string().optional()}).optional(),data_dir:e.string().optional(),codex:e.object({port:e.coerce.number().int().positive().optional(),data_dir:e.string().optional(),file_uploads:e.object({temp_dir:e.string().optional()}).optional(),api_key:e.string().optional(),base_url:e.string().optional()}).optional(),openai:e.object({api_key:e.string().optional(),base_url:e.string().optional(),image_model:e.string().optional()}).optional(),schedule:e.object({enabled:e.boolean().optional()}).optional(),gitlab:e.object({ca_cert_path:e.string().optional(),host:e.string().optional()}).optional(),git:e.object({co_authors:e.array(e.string()).optional()}).optional(),tunnel:e.object({enabled:e.boolean().optional(),server_url:e.string().optional(),tunnel_id:e.string().optional(),token:e.string().optional(),reconnect_initial_ms:e.number().int().positive().optional(),reconnect_max_ms:e.number().int().positive().optional(),heartbeat_interval_ms:e.number().int().positive().optional()}).optional()}).loose();function w(){const t=process.env.AGENT_CONFIG_PATH??"./agent-config.yaml";if(!A(t)){const r="./data",b=a(r,"logs","codex-agent.log");return k("info"),j(b),s.warn(`Config file not found at ${t}`),{configPath:t,logLevel:"info",logFile:b,port:3e3,fileUploads:{tempDir:a(v(),"codex-agent-uploads")},dataDir:r,sessionsDbPath:a(r,"sessions.db"),codex:{},openai:{imageModel:"gpt-image-2"},schedule:{enabled:!0},tunnel:{enabled:!1,reconnectInitialMs:1e3,reconnectMaxMs:3e4,heartbeatIntervalMs:3e4},...h({}),...x({}),...y({})}}let p;try{p=L(I(t,"utf-8"))}catch(r){s.error(`Failed to parse config file at ${t}:`,r),p={}}const l=S.safeParse(p??{});l.success||s.error(`Invalid config format at ${t}:`,l.error.issues);const o=l.success?l.data:{},u=F(o.log_level),c=n(o.codex?.data_dir)??n(o.data_dir)??"./data",m=a(c,"logs","codex-agent.log"),i=o.tunnel?.enabled??!1,d=n(o.tunnel?.token),g=D(o.server),f=n(o.codex?.api_key)??(i?d:void 0),_=n(o.codex?.base_url)??(i?g.openai:void 0),M=n(o.openai?.api_key)??(i?d:void 0),C=n(o.openai?.base_url)??(i?g.openai:void 0);k(u),j(m);const U={configPath:t,logLevel:u,logFile:m,port:o.codex?.port??o.port??3e3,fileUploads:{tempDir:n(o.codex?.file_uploads?.temp_dir)??n(o.file_uploads?.temp_dir)??a(v(),"codex-agent-uploads")},dataDir:c,sessionsDbPath:a(c,"sessions.db"),codex:{apiKey:f,baseUrl:_},openai:{apiKey:M,baseUrl:C,imageModel:n(o.openai?.image_model)??"gpt-image-2"},schedule:{enabled:o.schedule?.enabled??!0,...P(_,f)},tunnel:{enabled:i,serverUrl:n(o.tunnel?.server_url)??(i?g.tunnel:void 0),tunnelId:n(o.tunnel?.tunnel_id),token:d,reconnectInitialMs:o.tunnel?.reconnect_initial_ms??1e3,reconnectMaxMs:o.tunnel?.reconnect_max_ms??3e4,heartbeatIntervalMs:o.tunnel?.heartbeat_interval_ms??3e4},...h(o),...x(o),...y(o)};return s.info(`Loaded agent config from ${t}`),U}const O=w();export{O as appConfig};
@@ -1,4 +1,4 @@
1
- import{existsSync as i,readFileSync as c}from"node:fs";import{fileURLToPath as o}from"node:url";import{logger as d}from"@messenger-agent/shared/logger";const m=[o(new URL("./assets/codex-home/AGENTS.md",import.meta.url)),o(new URL("../../../assets/codex-home/AGENTS.md",import.meta.url)),"/app/assets/codex-home/AGENTS.md"],n="## Codex Managed Task Tools\n\nWhen using managed task tools in Codex, call these tool names directly: `search_managed_tasks`, `get_managed_task`, `create_managed_task`, `update_managed_task`, `apply_managed_task_patch`, and `delete_managed_task`.\n",l='## Schedule Tool\n\nUse the single `schedule` tool to prepare create/update proposals or list, inspect, pause, resume, and cancel schedules in the current trusted Matrix context. The action is selected inside `input.action`; never ask for or invent a Room ID, actor ID, source event, service credential, `executor`, `target`, or `agentId` field. To wake an Agent, include its Matrix Markdown mention in `message` and its MXID in `mentionUserIds`. For a one-time create, compute `trigger.at` from the user\'s requested time as a future UTC RFC 3339 instant with millisecond precision; never reuse a fixed example timestamp. Use `misfirePolicy: {"type":"grace_window","graceWindowSeconds":300}`. For cron triggers, provide `expression` and an IANA `timezone`; DST policy and no end time have defaults. A successful create/update result is a proposal awaiting one explicit Messenger confirmation, not an active schedule. Summarize it, but do not ask for a chat reply or invoke another confirmation tool.\n';function f(s,r=!1){const e=r?`
1
+ import{existsSync as i,readFileSync as c}from"node:fs";import{fileURLToPath as n}from"node:url";import{logger as d}from"@messenger-agent/shared/logger";const m=[n(new URL("./assets/codex-home/AGENTS.md",import.meta.url)),n(new URL("../../../assets/codex-home/AGENTS.md",import.meta.url)),"/app/assets/codex-home/AGENTS.md"],o="## Codex Managed Task Tools\n\nWhen using managed task tools in Codex, call these tool names directly: `search_managed_tasks`, `get_managed_task`, `create_managed_task`, `update_managed_task`, `apply_managed_task_patch`, and `delete_managed_task`.\n",l='## Schedule Tool\n\nUse the single `schedule` tool to prepare create/update proposals or list, inspect, pause, resume, and cancel schedules in the current trusted Matrix context. The action is selected inside `input.action`; never ask for or invent a Room ID, actor ID, source event, service credential, `executor`, `target`, or `agentId` field. Every create and update must include a Matrix Markdown mention in `message` and at least one Agent MXID in `mentionUserIds`; `mentionUserIds` must exactly match the MXIDs targeted by the message mentions. For a one-time create, compute `trigger.at` from the user\'s requested time as a future UTC RFC 3339 instant with millisecond precision; never reuse a fixed example timestamp. Use `misfirePolicy: {"type":"grace_window","graceWindowSeconds":300}`. For cron triggers, provide `expression` and an IANA `timezone`; DST policy and no end time have defaults. A successful create/update result is a proposal awaiting one explicit Messenger confirmation, not an active schedule. Summarize it, but do not ask for a chat reply or invoke another confirmation tool.\n';function h(s,r=!1){const e=r?`
2
2
  ${l}`:"",t=[s??process.env.CODEX_AGENTS_TEMPLATE_PATH,...m].find(a=>!!(a&&i(a)));return t?`${c(t,"utf-8").trimEnd()}
3
3
 
4
- ${n}${e}`:(d.warn("Codex platform instructions template not found"),`${n}${e}`)}export{f as loadCodexPlatformInstructions};
4
+ ${o}${e}`:(d.warn("Codex platform instructions template not found"),`${o}${e}`)}export{h as loadCodexPlatformInstructions};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messenger-agent/codex-agent",
3
- "version": "0.29.0-alpha.2",
3
+ "version": "0.30.0-alpha.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -22,7 +22,7 @@
22
22
  "ws": "^8.21.0",
23
23
  "yaml": "^2.9.0",
24
24
  "zod": "^4.4.3",
25
- "@messenger-agent/shared": "0.29.0-alpha.2"
25
+ "@messenger-agent/shared": "0.30.0-alpha.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/ws": "^8.18.1"