codex-channel-bgos 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +114 -0
  3. package/dist/adapter.d.ts +96 -0
  4. package/dist/adapter.d.ts.map +1 -0
  5. package/dist/adapter.js +677 -0
  6. package/dist/adapter.js.map +1 -0
  7. package/dist/agent-hints.d.ts +20 -0
  8. package/dist/agent-hints.d.ts.map +1 -0
  9. package/dist/agent-hints.js +92 -0
  10. package/dist/agent-hints.js.map +1 -0
  11. package/dist/agent-identity.d.ts +36 -0
  12. package/dist/agent-identity.d.ts.map +1 -0
  13. package/dist/agent-identity.js +42 -0
  14. package/dist/agent-identity.js.map +1 -0
  15. package/dist/attachment-bridge.d.ts +64 -0
  16. package/dist/attachment-bridge.d.ts.map +1 -0
  17. package/dist/attachment-bridge.js +216 -0
  18. package/dist/attachment-bridge.js.map +1 -0
  19. package/dist/auth-mode.d.ts +34 -0
  20. package/dist/auth-mode.d.ts.map +1 -0
  21. package/dist/auth-mode.js +48 -0
  22. package/dist/auth-mode.js.map +1 -0
  23. package/dist/bgos-api.d.ts +191 -0
  24. package/dist/bgos-api.d.ts.map +1 -0
  25. package/dist/bgos-api.js +225 -0
  26. package/dist/bgos-api.js.map +1 -0
  27. package/dist/bgos-ws.d.ts +94 -0
  28. package/dist/bgos-ws.d.ts.map +1 -0
  29. package/dist/bgos-ws.js +310 -0
  30. package/dist/bgos-ws.js.map +1 -0
  31. package/dist/capabilities.d.ts +28 -0
  32. package/dist/capabilities.d.ts.map +1 -0
  33. package/dist/capabilities.js +44 -0
  34. package/dist/capabilities.js.map +1 -0
  35. package/dist/catalog-sync.d.ts +26 -0
  36. package/dist/catalog-sync.d.ts.map +1 -0
  37. package/dist/catalog-sync.js +24 -0
  38. package/dist/catalog-sync.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +152 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/codex-host.d.ts +44 -0
  44. package/dist/codex-host.d.ts.map +1 -0
  45. package/dist/codex-host.js +142 -0
  46. package/dist/codex-host.js.map +1 -0
  47. package/dist/commands-sync.d.ts +24 -0
  48. package/dist/commands-sync.d.ts.map +1 -0
  49. package/dist/commands-sync.js +43 -0
  50. package/dist/commands-sync.js.map +1 -0
  51. package/dist/config.d.ts +4 -0
  52. package/dist/config.d.ts.map +1 -0
  53. package/dist/config.js +36 -0
  54. package/dist/config.js.map +1 -0
  55. package/dist/default-commands.d.ts +27 -0
  56. package/dist/default-commands.d.ts.map +1 -0
  57. package/dist/default-commands.js +64 -0
  58. package/dist/default-commands.js.map +1 -0
  59. package/dist/event-mapper.d.ts +43 -0
  60. package/dist/event-mapper.d.ts.map +1 -0
  61. package/dist/event-mapper.js +127 -0
  62. package/dist/event-mapper.js.map +1 -0
  63. package/dist/heartbeat.d.ts +75 -0
  64. package/dist/heartbeat.d.ts.map +1 -0
  65. package/dist/heartbeat.js +186 -0
  66. package/dist/heartbeat.js.map +1 -0
  67. package/dist/inbound-handler.d.ts +167 -0
  68. package/dist/inbound-handler.d.ts.map +1 -0
  69. package/dist/inbound-handler.js +282 -0
  70. package/dist/inbound-handler.js.map +1 -0
  71. package/dist/inbound-input.d.ts +17 -0
  72. package/dist/inbound-input.d.ts.map +1 -0
  73. package/dist/inbound-input.js +25 -0
  74. package/dist/inbound-input.js.map +1 -0
  75. package/dist/index.d.ts +25 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +18 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/install-service.d.ts +8 -0
  80. package/dist/install-service.d.ts.map +1 -0
  81. package/dist/install-service.js +66 -0
  82. package/dist/install-service.js.map +1 -0
  83. package/dist/last-id-store.d.ts +33 -0
  84. package/dist/last-id-store.d.ts.map +1 -0
  85. package/dist/last-id-store.js +101 -0
  86. package/dist/last-id-store.js.map +1 -0
  87. package/dist/load-config.d.ts +30 -0
  88. package/dist/load-config.d.ts.map +1 -0
  89. package/dist/load-config.js +86 -0
  90. package/dist/load-config.js.map +1 -0
  91. package/dist/media-classify.d.ts +37 -0
  92. package/dist/media-classify.d.ts.map +1 -0
  93. package/dist/media-classify.js +108 -0
  94. package/dist/media-classify.js.map +1 -0
  95. package/dist/media-guard.d.ts +13 -0
  96. package/dist/media-guard.d.ts.map +1 -0
  97. package/dist/media-guard.js +159 -0
  98. package/dist/media-guard.js.map +1 -0
  99. package/dist/outbound-retry.d.ts +24 -0
  100. package/dist/outbound-retry.d.ts.map +1 -0
  101. package/dist/outbound-retry.js +75 -0
  102. package/dist/outbound-retry.js.map +1 -0
  103. package/dist/outbound.d.ts +223 -0
  104. package/dist/outbound.d.ts.map +1 -0
  105. package/dist/outbound.js +366 -0
  106. package/dist/outbound.js.map +1 -0
  107. package/dist/outbox.d.ts +16 -0
  108. package/dist/outbox.d.ts.map +1 -0
  109. package/dist/outbox.js +88 -0
  110. package/dist/outbox.js.map +1 -0
  111. package/dist/pair-cli.d.ts +44 -0
  112. package/dist/pair-cli.d.ts.map +1 -0
  113. package/dist/pair-cli.js +182 -0
  114. package/dist/pair-cli.js.map +1 -0
  115. package/dist/pending-unknown-store.d.ts +26 -0
  116. package/dist/pending-unknown-store.d.ts.map +1 -0
  117. package/dist/pending-unknown-store.js +135 -0
  118. package/dist/pending-unknown-store.js.map +1 -0
  119. package/dist/processed-ids.d.ts +36 -0
  120. package/dist/processed-ids.d.ts.map +1 -0
  121. package/dist/processed-ids.js +55 -0
  122. package/dist/processed-ids.js.map +1 -0
  123. package/dist/reply-markers.d.ts +42 -0
  124. package/dist/reply-markers.d.ts.map +1 -0
  125. package/dist/reply-markers.js +124 -0
  126. package/dist/reply-markers.js.map +1 -0
  127. package/dist/setup/supervisor.d.ts +16 -0
  128. package/dist/setup/supervisor.d.ts.map +1 -0
  129. package/dist/setup/supervisor.js +61 -0
  130. package/dist/setup/supervisor.js.map +1 -0
  131. package/dist/thread-map.d.ts +12 -0
  132. package/dist/thread-map.d.ts.map +1 -0
  133. package/dist/thread-map.js +72 -0
  134. package/dist/thread-map.js.map +1 -0
  135. package/dist/tool-progress.d.ts +103 -0
  136. package/dist/tool-progress.d.ts.map +1 -0
  137. package/dist/tool-progress.js +216 -0
  138. package/dist/tool-progress.js.map +1 -0
  139. package/dist/types.d.ts +244 -0
  140. package/dist/types.d.ts.map +1 -0
  141. package/dist/types.js +16 -0
  142. package/dist/types.js.map +1 -0
  143. package/dist/version.d.ts +2 -0
  144. package/dist/version.d.ts.map +1 -0
  145. package/dist/version.js +28 -0
  146. package/dist/version.js.map +1 -0
  147. package/dist/voice-rpc.d.ts +37 -0
  148. package/dist/voice-rpc.d.ts.map +1 -0
  149. package/dist/voice-rpc.js +44 -0
  150. package/dist/voice-rpc.js.map +1 -0
  151. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Agent-facing capability surface for a Codex agent talking to BGOS.
3
+ *
4
+ * Codex emits a single text stream and cannot call typed host methods, so, like
5
+ * OpenClaw, the BGOS capabilities are exposed as text markers the daemon parses
6
+ * out of the reply (see reply-markers.ts). This string is written to
7
+ * `<workdir>/AGENTS.md` (which Codex reads natively) so every turn sees it, and
8
+ * is also available for a system-prompt-style injection.
9
+ *
10
+ * Keep in sync with the canon at
11
+ * hermes-channel-bgos/docs/bgos-agent-capabilities.md via bgos-plugin-capability-sync.
12
+ */
13
+ export declare const BGOS_AGENT_HINTS = "# BGOS Channel, Agent Capabilities\n\nYou are reachable from the BGOS chat app. Your text reply is delivered to the\nuser as a chat message. A few markers let you use richer BGOS features. Put each\nmarker on its own line. The daemon strips markers from the visible text.\n\n## Markdown\nSupported: **bold**, *italic*, `inline code`, fenced code blocks, [links](url),\n# / ## / ### headings, ordered and unordered lists, > blockquotes.\nNOT supported: tables (they do not lay out on mobile), inline images via\n![alt](url) (use MEDIA: instead), strikethrough. Do not escape punctuation; this\nis not Telegram MarkdownV2.\n\n## Sending files, images, videos (you to user)\nPut `MEDIA:/absolute/path/to/file` on its own line. The daemon infers the type\nfrom the extension and uploads it (inline under 500 KB, presigned S3 otherwise).\nCaps: image 10 MB, video 100 MB, audio 25 MB, document 25 MB. Multiple MEDIA:\nlines send multiple files in one bubble. Surrounding sentences remain visible.\n\n## Inline option buttons (non-blocking)\nOffer up to 6 tappable choices. The user can still type instead.\n[[BGOS_BUTTONS]]\nYes, ship it | ship\nHold off | hold\n[[/BGOS_BUTTONS]]\nEach line is `Label | value`. The value comes back to you as the user's next\nmessage when they tap. Any text before the block is the question.\n\n## ask_user_input (blocking questions)\nAsk 1 to 4 questions the user must answer before continuing.\n[[BGOS_ASK]]\nQ: Which environment?\nStaging | staging\nProduction | prod\nQ: Proceed now?\nnoskip\nYes | yes\n[[/BGOS_ASK]]\nOptions are `Label | value`. Add `noskip` to require an answer, `nofreetext`\nto disallow a typed answer. Each answer arrives as your next message.\n\n## Status line\nShow a short working status with `STATUS: <text>` on its own line (for example\n`STATUS: running tests`). An empty `STATUS:` clears it.\n\n## Tool activity (automatic)\nYour shell commands, file edits, MCP tool calls, and web searches are shown to\nthe user as a live tool-progress card automatically. You do not need to report\nthem.\n\n## Files the user sends you\nImages are attached to your input directly. Other files are downloaded and their\nabsolute path is given to you inline as `[File attached: /path (mime)]`; read\nthem from disk as needed.\n\n## Slash commands\n`/new` starts a fresh conversation (your thread is reset). `/retry` re-runs the\nuser's last message. `/status` shows daemon health. These are handled by the\ndaemon; you will not see them.\n\n## Not supported here\nNo group chats, threads, or message editing. Dangerous-command approval prompts\nare not surfaced to BGOS in this version; run within your sandbox.\n";
14
+ /**
15
+ * Append the BGOS hints to an existing system prompt (idempotent). Kept for the
16
+ * inbound-handler's prompt-injection call site; the primary delivery for Codex is
17
+ * AGENTS.md (see writeAgentsMd).
18
+ */
19
+ export declare function buildSystemPromptWithHints(original: string): string;
20
+ //# sourceMappingURL=agent-hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-hints.d.ts","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB,ymFA+D5B,CAAC;AAKF;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMnE"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Agent-facing capability surface for a Codex agent talking to BGOS.
3
+ *
4
+ * Codex emits a single text stream and cannot call typed host methods, so, like
5
+ * OpenClaw, the BGOS capabilities are exposed as text markers the daemon parses
6
+ * out of the reply (see reply-markers.ts). This string is written to
7
+ * `<workdir>/AGENTS.md` (which Codex reads natively) so every turn sees it, and
8
+ * is also available for a system-prompt-style injection.
9
+ *
10
+ * Keep in sync with the canon at
11
+ * hermes-channel-bgos/docs/bgos-agent-capabilities.md via bgos-plugin-capability-sync.
12
+ */
13
+ export const BGOS_AGENT_HINTS = `# BGOS Channel, Agent Capabilities
14
+
15
+ You are reachable from the BGOS chat app. Your text reply is delivered to the
16
+ user as a chat message. A few markers let you use richer BGOS features. Put each
17
+ marker on its own line. The daemon strips markers from the visible text.
18
+
19
+ ## Markdown
20
+ Supported: **bold**, *italic*, \`inline code\`, fenced code blocks, [links](url),
21
+ # / ## / ### headings, ordered and unordered lists, > blockquotes.
22
+ NOT supported: tables (they do not lay out on mobile), inline images via
23
+ ![alt](url) (use MEDIA: instead), strikethrough. Do not escape punctuation; this
24
+ is not Telegram MarkdownV2.
25
+
26
+ ## Sending files, images, videos (you to user)
27
+ Put \`MEDIA:/absolute/path/to/file\` on its own line. The daemon infers the type
28
+ from the extension and uploads it (inline under 500 KB, presigned S3 otherwise).
29
+ Caps: image 10 MB, video 100 MB, audio 25 MB, document 25 MB. Multiple MEDIA:
30
+ lines send multiple files in one bubble. Surrounding sentences remain visible.
31
+
32
+ ## Inline option buttons (non-blocking)
33
+ Offer up to 6 tappable choices. The user can still type instead.
34
+ [[BGOS_BUTTONS]]
35
+ Yes, ship it | ship
36
+ Hold off | hold
37
+ [[/BGOS_BUTTONS]]
38
+ Each line is \`Label | value\`. The value comes back to you as the user's next
39
+ message when they tap. Any text before the block is the question.
40
+
41
+ ## ask_user_input (blocking questions)
42
+ Ask 1 to 4 questions the user must answer before continuing.
43
+ [[BGOS_ASK]]
44
+ Q: Which environment?
45
+ Staging | staging
46
+ Production | prod
47
+ Q: Proceed now?
48
+ noskip
49
+ Yes | yes
50
+ [[/BGOS_ASK]]
51
+ Options are \`Label | value\`. Add \`noskip\` to require an answer, \`nofreetext\`
52
+ to disallow a typed answer. Each answer arrives as your next message.
53
+
54
+ ## Status line
55
+ Show a short working status with \`STATUS: <text>\` on its own line (for example
56
+ \`STATUS: running tests\`). An empty \`STATUS:\` clears it.
57
+
58
+ ## Tool activity (automatic)
59
+ Your shell commands, file edits, MCP tool calls, and web searches are shown to
60
+ the user as a live tool-progress card automatically. You do not need to report
61
+ them.
62
+
63
+ ## Files the user sends you
64
+ Images are attached to your input directly. Other files are downloaded and their
65
+ absolute path is given to you inline as \`[File attached: /path (mime)]\`; read
66
+ them from disk as needed.
67
+
68
+ ## Slash commands
69
+ \`/new\` starts a fresh conversation (your thread is reset). \`/retry\` re-runs the
70
+ user's last message. \`/status\` shows daemon health. These are handled by the
71
+ daemon; you will not see them.
72
+
73
+ ## Not supported here
74
+ No group chats, threads, or message editing. Dangerous-command approval prompts
75
+ are not surfaced to BGOS in this version; run within your sandbox.
76
+ `;
77
+ const HEADER_MARKER = "# BGOS Channel, Agent Capabilities";
78
+ const SEPARATOR = "\n\n---\n";
79
+ /**
80
+ * Append the BGOS hints to an existing system prompt (idempotent). Kept for the
81
+ * inbound-handler's prompt-injection call site; the primary delivery for Codex is
82
+ * AGENTS.md (see writeAgentsMd).
83
+ */
84
+ export function buildSystemPromptWithHints(original) {
85
+ const base = original ?? "";
86
+ if (base.includes(HEADER_MARKER))
87
+ return base;
88
+ return base.trim().length > 0
89
+ ? `${base}${SEPARATOR}${BGOS_AGENT_HINTS}`
90
+ : BGOS_AGENT_HINTS;
91
+ }
92
+ //# sourceMappingURL=agent-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-hints.js","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D/B,CAAC;AAEF,MAAM,aAAa,GAAG,oCAAoC,CAAC;AAC3D,MAAM,SAAS,GAAG,WAAW,CAAC;AAE9B;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,MAAM,IAAI,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,EAAE;QAC1C,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Inline-agent identity sanitizer.
3
+ *
4
+ * SECURITY: `FromAgentInput.name` (and `avatarUrl`/`color`) is free-form,
5
+ * agent-supplied text. The BGOS backend now binds `fromAgent` identity to
6
+ * the calling assistant and gates inline identities behind a per-user
7
+ * toggle (default off), so a plugin-forwarded display name is untrusted
8
+ * spoofable input - an agent could label its bubble as anyone.
9
+ *
10
+ * By default this plugin therefore strips the free-form display fields and
11
+ * forwards only the resolvable handles (`peerId`/`assistantId`/
12
+ * `externalId`/`type`), letting the backend resolve the real identity.
13
+ * Hosts that genuinely need inline names (e.g. Codex `/board` with the
14
+ * matching backend toggle on) opt in via `CODEX_BGOS_ALLOW_INLINE_AGENT_NAME`.
15
+ *
16
+ * Lives in its own module (rather than inside outbound.ts) so the direct
17
+ * proactive sender can apply the same policy without an import cycle.
18
+ */
19
+ import type { FromAgentInput } from "./types.js";
20
+ /**
21
+ * Whether the agent is allowed to set a free-form inline display name /
22
+ * avatar / color on `fromAgent`. Default OFF. Resolved on every call so
23
+ * the host can flip it without a restart.
24
+ */
25
+ export declare function inlineAgentNameAllowed(): boolean;
26
+ /**
27
+ * Sanitize an agent-supplied `fromAgent` identity for the wire.
28
+ *
29
+ * Always passes through the resolvable handles (`peerId`/`assistantId`/
30
+ * `externalId`/`type`). Drops the free-form `name`/`avatarUrl`/`color`
31
+ * unless `CODEX_BGOS_ALLOW_INLINE_AGENT_NAME` is enabled. Returns `undefined`
32
+ * when nothing meaningful remains, so callers don't stamp an empty
33
+ * `fromAgent` onto the payload.
34
+ */
35
+ export declare function sanitizeFromAgent(from: FromAgentInput | undefined): FromAgentInput | undefined;
36
+ //# sourceMappingURL=agent-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-identity.d.ts","sourceRoot":"","sources":["../src/agent-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAKhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,cAAc,GAAG,SAAS,GAC/B,cAAc,GAAG,SAAS,CAe5B"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Whether the agent is allowed to set a free-form inline display name /
3
+ * avatar / color on `fromAgent`. Default OFF. Resolved on every call so
4
+ * the host can flip it without a restart.
5
+ */
6
+ export function inlineAgentNameAllowed() {
7
+ const raw = (process.env.CODEX_BGOS_ALLOW_INLINE_AGENT_NAME ?? "")
8
+ .trim()
9
+ .toLowerCase();
10
+ return raw === "1" || raw === "true" || raw === "yes" || raw === "on";
11
+ }
12
+ /**
13
+ * Sanitize an agent-supplied `fromAgent` identity for the wire.
14
+ *
15
+ * Always passes through the resolvable handles (`peerId`/`assistantId`/
16
+ * `externalId`/`type`). Drops the free-form `name`/`avatarUrl`/`color`
17
+ * unless `CODEX_BGOS_ALLOW_INLINE_AGENT_NAME` is enabled. Returns `undefined`
18
+ * when nothing meaningful remains, so callers don't stamp an empty
19
+ * `fromAgent` onto the payload.
20
+ */
21
+ export function sanitizeFromAgent(from) {
22
+ if (!from)
23
+ return undefined;
24
+ if (inlineAgentNameAllowed())
25
+ return from;
26
+ const safe = {};
27
+ if (from.peerId !== undefined)
28
+ safe.peerId = from.peerId;
29
+ if (from.assistantId !== undefined)
30
+ safe.assistantId = from.assistantId;
31
+ if (from.externalId !== undefined)
32
+ safe.externalId = from.externalId;
33
+ if (from.type !== undefined)
34
+ safe.type = from.type;
35
+ // Drop name / avatarUrl / color - the backend resolves the identity.
36
+ const hasAny = safe.peerId !== undefined ||
37
+ safe.assistantId !== undefined ||
38
+ safe.externalId !== undefined ||
39
+ safe.type !== undefined;
40
+ return hasAny ? safe : undefined;
41
+ }
42
+ //# sourceMappingURL=agent-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-identity.js","sourceRoot":"","sources":["../src/agent-identity.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,EAAE,CAAC;SAC/D,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC;AACxE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgC;IAEhC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,sBAAsB,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,IAAI,GAAmB,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACxE,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACnD,qEAAqE;IACrE,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,SAAS;QACzB,IAAI,CAAC,WAAW,KAAK,SAAS;QAC9B,IAAI,CAAC,UAAU,KAAK,SAAS;QAC7B,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;IAC1B,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACnC,CAAC"}
@@ -0,0 +1,64 @@
1
+ import type { BgosApi } from "./bgos-api.js";
2
+ /** Threshold below which we inline base64 in a single POST. Mirrors the
3
+ * policy in `openclaw-channel-bgos` and the memory note
4
+ * `bug_base64_body_limit.md`: 500 KB. Above the line we go via S3
5
+ * presigned PUT to avoid hitting the backend body-size limit. */
6
+ export declare const S3_THRESHOLD: number;
7
+ /** Inbound attachment shape - accepts both the camelCase wire format
8
+ * (`fileName`/`mimeType`) and Hermes/legacy snake-case (`filename`/`mime`)
9
+ * so this bridge stays robust to wire-format drift. */
10
+ export interface BgosInboundAttachment {
11
+ /** Camel-case (canonical wire form). */
12
+ fileName?: string;
13
+ mimeType?: string;
14
+ /** Snake-case alternative names backend has used historically. */
15
+ filename?: string;
16
+ mime?: string;
17
+ size?: number;
18
+ /** Either a presigned S3 GET URL OR a base64 data URL - backend always
19
+ * emits one or the other for files >500 KB / <500 KB respectively. */
20
+ url?: string;
21
+ dataUri?: string;
22
+ fileData?: string;
23
+ s3Key?: string;
24
+ }
25
+ /** Outbound files[] entry shape, matching `OutboundMessagePayload.files`. */
26
+ export interface BgosOutboundFileRef {
27
+ fileName: string;
28
+ fileMimeType: string;
29
+ size: number;
30
+ fileData?: string;
31
+ s3Key?: string;
32
+ isImage?: boolean;
33
+ isVideo?: boolean;
34
+ isAudio?: boolean;
35
+ isDocument?: boolean;
36
+ width?: number;
37
+ height?: number;
38
+ }
39
+ /** Coarse inbound classifier for Codex's existing pipelines. */
40
+ export type AttachmentKind = "photo" | "video" | "document" | "voice";
41
+ /**
42
+ * Download a BGOS attachment to a local tempfile and return its path +
43
+ * inferred kind. Caller is responsible for cleaning the file up if
44
+ * desired - Codex's existing pipelines tend to leak temp files anyway,
45
+ * so we keep the lifetime contract loose and let OS temp cleanup handle
46
+ * it.
47
+ */
48
+ export declare function ingestBgosAttachment(att: BgosInboundAttachment): Promise<{
49
+ localPath: string;
50
+ kind: AttachmentKind;
51
+ mimeType: string;
52
+ }>;
53
+ /**
54
+ * Upload an outbound file referenced by absolute path. Returns a
55
+ * `files[]` entry ready to attach to a `POST /messages` payload.
56
+ *
57
+ * Policy: inline base64 if the file is <`S3_THRESHOLD` bytes; otherwise
58
+ * request a presigned PUT URL and stream the bytes to S3 directly.
59
+ */
60
+ export declare function publishMediaPath(api: BgosApi, filePath: string, opts?: {
61
+ fileName?: string;
62
+ mimeType?: string;
63
+ }): Promise<BgosOutboundFileRef>;
64
+ //# sourceMappingURL=attachment-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-bridge.d.ts","sourceRoot":"","sources":["../src/attachment-bridge.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQ7C;;;kEAGkE;AAClE,eAAO,MAAM,YAAY,QAAa,CAAC;AAEvC;;wDAEwD;AACxD,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;2EACuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAgCtE;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDxE;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,mBAAmB,CAAC,CAyD9B"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Bridge BGOS attachments ↔ Codex file paths.
3
+ *
4
+ * Direction 1 (BGOS → Codex): the user uploads an image/document/voice
5
+ * note in the BGOS chat. The backend's `inbound_message` payload carries
6
+ * a `files[]` array. `ingestBgosAttachment` writes one of those entries
7
+ * to the local OS temp dir and returns `{ localPath, kind }` so Codex's
8
+ * existing vision/document/voice pipelines (in the fork) can consume it.
9
+ *
10
+ * Direction 2 (Codex → BGOS): the agent emits a `MEDIA:/abs/path` line
11
+ * in its reply (or a structured tool output). `publishMediaPath` turns
12
+ * the local file into a `files[]` entry the WS `message` event expects:
13
+ * inline base64 below `S3_THRESHOLD`, presigned S3 PUT above.
14
+ *
15
+ * The fork is responsible for plugging these into Codex's photo/document/
16
+ * voice handlers - this module only provides the wire-level shims.
17
+ */
18
+ import { createWriteStream, promises as fsp, } from "node:fs";
19
+ import { tmpdir } from "node:os";
20
+ import { extname, join } from "node:path";
21
+ import { Readable } from "node:stream";
22
+ import { pipeline } from "node:stream/promises";
23
+ import { classifyMedia, sniffImageDimensions, toInlineDataUri, } from "./media-classify.js";
24
+ import { resolveAllowedMediaPath } from "./media-guard.js";
25
+ /** Threshold below which we inline base64 in a single POST. Mirrors the
26
+ * policy in `openclaw-channel-bgos` and the memory note
27
+ * `bug_base64_body_limit.md`: 500 KB. Above the line we go via S3
28
+ * presigned PUT to avoid hitting the backend body-size limit. */
29
+ export const S3_THRESHOLD = 500 * 1024;
30
+ function inferKindFromMime(mime) {
31
+ const m = (mime || "").toLowerCase();
32
+ if (m.startsWith("image/"))
33
+ return "photo";
34
+ if (m.startsWith("video/"))
35
+ return "video";
36
+ // Voice notes are typically Opus/M4A; treat the audio family as "voice"
37
+ // because Codex's voice pipeline (transcription) is the right consumer.
38
+ if (m.startsWith("audio/"))
39
+ return "voice";
40
+ return "document";
41
+ }
42
+ /**
43
+ * Decode a `data:<mime>;base64,...` URL into raw bytes.
44
+ *
45
+ * Throws if the input isn't a valid data URL - callers should fall back
46
+ * to error handling, not silent ingestion of a malformed payload.
47
+ */
48
+ function decodeDataUri(dataUri) {
49
+ // Format: data:[<mime>];base64,<payload>
50
+ const comma = dataUri.indexOf(",");
51
+ if (comma === -1)
52
+ throw new Error("invalid data URI: missing comma");
53
+ const meta = dataUri.slice(0, comma);
54
+ const payload = dataUri.slice(comma + 1);
55
+ if (!meta.toLowerCase().includes("base64")) {
56
+ // Unsupported (URL-encoded payloads are rare and we don't promise
57
+ // to support them - agents would have to re-encode anyway).
58
+ throw new Error("invalid data URI: only base64 encoding supported");
59
+ }
60
+ return Buffer.from(payload, "base64");
61
+ }
62
+ /**
63
+ * Download a BGOS attachment to a local tempfile and return its path +
64
+ * inferred kind. Caller is responsible for cleaning the file up if
65
+ * desired - Codex's existing pipelines tend to leak temp files anyway,
66
+ * so we keep the lifetime contract loose and let OS temp cleanup handle
67
+ * it.
68
+ */
69
+ export async function ingestBgosAttachment(att) {
70
+ const fileName = att.fileName || att.filename || "attachment";
71
+ const mimeType = att.mimeType || att.mime || "application/octet-stream";
72
+ const kind = inferKindFromMime(mimeType);
73
+ // Build a unique temp path that preserves the original extension when
74
+ // possible - Codex's vision/doc pipelines often sniff extensions.
75
+ const ext = extname(fileName) || "";
76
+ const baseName = `bgos-${Date.now()}-${Math.random()
77
+ .toString(36)
78
+ .slice(2, 10)}${ext}`;
79
+ const localPath = join(tmpdir(), baseName);
80
+ if (att.fileData) {
81
+ // Inline base64 - write directly.
82
+ await fsp.writeFile(localPath, Buffer.from(att.fileData, "base64"));
83
+ return { localPath, kind, mimeType };
84
+ }
85
+ if (att.dataUri) {
86
+ await fsp.writeFile(localPath, decodeDataUri(att.dataUri));
87
+ return { localPath, kind, mimeType };
88
+ }
89
+ if (att.url) {
90
+ // Presigned S3 URL - stream to disk so we don't buffer giant files
91
+ // in memory.
92
+ const res = await fetch(att.url);
93
+ if (!res.ok) {
94
+ throw new Error(`download failed: HTTP ${res.status} for ${fileName}`);
95
+ }
96
+ if (!res.body)
97
+ throw new Error(`download produced no body for ${fileName}`);
98
+ // Node 18+ supports converting a fetch ReadableStream to a Node
99
+ // Readable via Readable.fromWeb. The any-cast keeps the typecheck
100
+ // narrow (lib.dom.d.ts inclusion varies by tsconfig).
101
+ await pipeline(Readable.fromWeb(res.body), createWriteStream(localPath));
102
+ return { localPath, kind, mimeType };
103
+ }
104
+ if (att.s3Key) {
105
+ // We have an S3 key but no presigned URL - backend should have
106
+ // included one. This shouldn't happen in practice; surface a useful
107
+ // error rather than silently producing a missing file.
108
+ throw new Error(`attachment ${fileName} has s3Key=${att.s3Key} but no fetch URL - ` +
109
+ "backend should provide a presigned `url`");
110
+ }
111
+ throw new Error(`attachment ${fileName} has no fetch path (no url/dataUri/fileData/s3Key)`);
112
+ }
113
+ /**
114
+ * Upload an outbound file referenced by absolute path. Returns a
115
+ * `files[]` entry ready to attach to a `POST /messages` payload.
116
+ *
117
+ * Policy: inline base64 if the file is <`S3_THRESHOLD` bytes; otherwise
118
+ * request a presigned PUT URL and stream the bytes to S3 directly.
119
+ */
120
+ export async function publishMediaPath(api, filePath, opts = {}) {
121
+ // SECURITY: validate the agent-supplied path against the allowlist
122
+ // BEFORE reading any bytes. Throws (does not publish) on traversal,
123
+ // out-of-root paths, sensitive locations, or escaping symlinks. This is
124
+ // the single choke point for every outbound send path (sendFile /
125
+ // sendImage / sendVideo / uploadFile), so the guard lives here. The
126
+ // returned value is the resolved, symlink-free real path we read from.
127
+ const safePath = resolveAllowedMediaPath(filePath);
128
+ const stat = await fsp.stat(safePath);
129
+ const size = stat.size;
130
+ // Derive the display name from the ORIGINAL request (the real path may
131
+ // differ after symlink resolution) unless the caller overrode it.
132
+ const fileName = opts.fileName ?? filePath.split(/[\\/]/).pop() ?? "file";
133
+ const mimeType = opts.mimeType ?? guessMimeType(fileName);
134
+ // Read once up front: we need the bytes for both the inline path AND the
135
+ // dimension sniff (images only). Files here are bounded by the media-guard.
136
+ const bytes = await fsp.readFile(safePath);
137
+ const flags = classifyMedia(mimeType);
138
+ const dims = flags.isImage ? sniffImageDimensions(bytes) : {};
139
+ if (size < S3_THRESHOLD) {
140
+ return {
141
+ fileName,
142
+ fileMimeType: mimeType,
143
+ size,
144
+ // data: URI so the client's <Image> can load it (bare base64 won't).
145
+ fileData: toInlineDataUri(mimeType, bytes.toString("base64")),
146
+ ...flags,
147
+ ...dims,
148
+ };
149
+ }
150
+ const presigned = await api.createUploadUrl({
151
+ filename: fileName,
152
+ mimeType,
153
+ size,
154
+ });
155
+ const putRes = await fetch(presigned.upload_url, {
156
+ method: "PUT",
157
+ body: new Uint8Array(bytes),
158
+ headers: { "Content-Type": mimeType },
159
+ });
160
+ if (!putRes.ok) {
161
+ throw new Error(`S3 PUT failed: HTTP ${putRes.status} for ${fileName}`);
162
+ }
163
+ return {
164
+ fileName,
165
+ fileMimeType: mimeType,
166
+ size,
167
+ s3Key: presigned.s3_key,
168
+ ...flags,
169
+ ...dims,
170
+ };
171
+ }
172
+ /** Minimal extension → MIME map covering BGOS's five rendered media kinds.
173
+ * Intentionally short - fall through to `application/octet-stream` for
174
+ * unknown types; the receiver still renders these as a download card. */
175
+ function guessMimeType(fileName) {
176
+ const ext = extname(fileName).toLowerCase();
177
+ switch (ext) {
178
+ case ".jpg":
179
+ case ".jpeg":
180
+ return "image/jpeg";
181
+ case ".png":
182
+ return "image/png";
183
+ case ".gif":
184
+ return "image/gif";
185
+ case ".webp":
186
+ return "image/webp";
187
+ case ".svg":
188
+ return "image/svg+xml";
189
+ case ".mp4":
190
+ return "video/mp4";
191
+ case ".webm":
192
+ return "video/webm";
193
+ case ".mov":
194
+ return "video/quicktime";
195
+ case ".mp3":
196
+ return "audio/mpeg";
197
+ case ".m4a":
198
+ return "audio/mp4";
199
+ case ".ogg":
200
+ case ".oga":
201
+ return "audio/ogg";
202
+ case ".pdf":
203
+ return "application/pdf";
204
+ case ".txt":
205
+ return "text/plain";
206
+ case ".csv":
207
+ return "text/csv";
208
+ case ".json":
209
+ return "application/json";
210
+ case ".zip":
211
+ return "application/zip";
212
+ default:
213
+ return "application/octet-stream";
214
+ }
215
+ }
216
+ //# sourceMappingURL=attachment-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-bridge.js","sourceRoot":"","sources":["../src/attachment-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Decision D7: prefer an existing `codex login` (ChatGPT plan, zero marginal
3
+ * cost), fall back to OPENAI_API_KEY (metered), refuse to start with neither.
4
+ *
5
+ * Pure resolver: the daemon feeds it the observable facts (does ~/.codex/auth.json
6
+ * exist, is OPENAI_API_KEY set, was a mode forced) and gets back the active mode,
7
+ * a human label to print at startup, and, for apikey mode, the key to hand the
8
+ * Codex SDK (which injects it as CODEX_API_KEY). See codex-host for how chatgpt
9
+ * mode strips the key from the child env so the CLI uses the login instead.
10
+ */
11
+ export type AuthForce = "auto" | "chatgpt" | "apikey";
12
+ export interface AuthResolutionOk {
13
+ ok: true;
14
+ mode: "chatgpt" | "apikey";
15
+ /** Present only in apikey mode: the key to pass to the Codex SDK. */
16
+ apiKey?: string;
17
+ /** One-line human summary for the startup banner and heartbeat. */
18
+ label: string;
19
+ }
20
+ export interface AuthResolutionErr {
21
+ ok: false;
22
+ error: string;
23
+ }
24
+ export type AuthResolution = AuthResolutionOk | AuthResolutionErr;
25
+ export interface AuthInput {
26
+ /** Whether ~/.codex/auth.json (a prior `codex login`) exists. */
27
+ authJsonExists: boolean;
28
+ /** OPENAI_API_KEY value, if any (env or ~/.env). */
29
+ openaiKey?: string | null;
30
+ /** CODEX_BGOS_AUTH_MODE override; default "auto" prefers the login. */
31
+ forced?: AuthForce;
32
+ }
33
+ export declare function resolveAuthMode(input: AuthInput): AuthResolution;
34
+ //# sourceMappingURL=auth-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-mode.d.ts","sourceRoot":"","sources":["../src/auth-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,cAAc,EAAE,OAAO,CAAC;IACxB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAoBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CA2BhE"}