forge-openclaw-plugin 0.2.24 → 0.2.26

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 (208) hide show
  1. package/README.md +13 -0
  2. package/dist/assets/{board-_C6oMy5w.js → board-ta0rUHOf.js} +3 -3
  3. package/dist/assets/{board-_C6oMy5w.js.map → board-ta0rUHOf.js.map} +1 -1
  4. package/dist/assets/index-Ro0ZF_az.css +1 -0
  5. package/dist/assets/index-ytlpSj23.js +79 -0
  6. package/dist/assets/index-ytlpSj23.js.map +1 -0
  7. package/dist/assets/{motion-D4sZgCHd.js → motion-fBKPB6yw.js} +3 -3
  8. package/dist/assets/motion-fBKPB6yw.js.map +1 -0
  9. package/dist/assets/{table-BWzTaky1.js → table-C-IGTQni.js} +2 -2
  10. package/dist/assets/{table-BWzTaky1.js.map → table-C-IGTQni.js.map} +1 -1
  11. package/dist/assets/{ui-BzK4azQb.js → ui-DInOpaYF.js} +2 -2
  12. package/dist/assets/{ui-BzK4azQb.js.map → ui-DInOpaYF.js.map} +1 -1
  13. package/dist/assets/vendor-lE3tZJcC.js +876 -0
  14. package/dist/assets/vendor-lE3tZJcC.js.map +1 -0
  15. package/dist/index.html +7 -8
  16. package/dist/openclaw/local-runtime.d.ts +3 -1
  17. package/dist/openclaw/local-runtime.js +51 -15
  18. package/dist/openclaw/parity.d.ts +1 -1
  19. package/dist/openclaw/parity.js +29 -0
  20. package/dist/openclaw/plugin-entry-shared.d.ts +1 -0
  21. package/dist/openclaw/plugin-entry-shared.js +31 -6
  22. package/dist/openclaw/plugin-sdk-types.d.ts +29 -0
  23. package/dist/openclaw/routes.js +236 -0
  24. package/dist/openclaw/session-bootstrap.d.ts +78 -0
  25. package/dist/openclaw/session-bootstrap.js +240 -0
  26. package/dist/openclaw/tools.js +279 -6
  27. package/dist/server/server/migrations/001_core.sql +411 -0
  28. package/dist/server/server/migrations/002_psyche.sql +392 -0
  29. package/dist/server/server/migrations/003_habits.sql +30 -0
  30. package/dist/server/server/migrations/004_habit_links.sql +8 -0
  31. package/dist/server/server/migrations/005_habit_psyche_links.sql +24 -0
  32. package/dist/server/server/migrations/006_work_adjustments.sql +14 -0
  33. package/dist/server/server/migrations/007_weekly_review_closures.sql +17 -0
  34. package/dist/server/server/migrations/008_calendar_execution.sql +147 -0
  35. package/dist/server/server/migrations/009_true_calendar_events.sql +195 -0
  36. package/dist/server/server/migrations/010_calendar_selection_state.sql +6 -0
  37. package/dist/server/server/migrations/011_calendar_timezone_backfill.sql +11 -0
  38. package/dist/server/server/migrations/012_work_block_ranges.sql +7 -0
  39. package/dist/server/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
  40. package/dist/server/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
  41. package/dist/server/server/migrations/015_multi_user_and_strategies.sql +244 -0
  42. package/dist/server/server/migrations/016_health_companion.sql +158 -0
  43. package/dist/server/server/migrations/016_strategy_contracts_and_user_graph.sql +22 -0
  44. package/dist/server/server/migrations/017_preferences.sql +131 -0
  45. package/dist/server/server/migrations/018_preference_catalogs.sql +31 -0
  46. package/dist/server/server/migrations/019_wiki_memory.sql +255 -0
  47. package/dist/server/server/migrations/020_wiki_page_hierarchy.sql +11 -0
  48. package/dist/server/server/migrations/021_hide_evidence_from_wiki_index.sql +3 -0
  49. package/dist/server/server/migrations/022_wiki_ingest_background.sql +85 -0
  50. package/dist/server/server/migrations/023_diagnostic_logs.sql +28 -0
  51. package/dist/server/server/migrations/024_questionnaires.sql +96 -0
  52. package/dist/server/server/migrations/025_ai_model_connections.sql +26 -0
  53. package/dist/server/server/migrations/026_custom_theme_settings.sql +2 -0
  54. package/dist/server/server/migrations/027_ai_processors.sql +31 -0
  55. package/dist/server/server/migrations/028_movement_domain.sql +136 -0
  56. package/dist/server/server/migrations/029_watch_micro_capture.sql +23 -0
  57. package/dist/server/server/migrations/030_surface_layouts.sql +5 -0
  58. package/dist/server/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
  59. package/dist/server/server/migrations/032_ai_connectors.sql +44 -0
  60. package/dist/server/server/migrations/033_movement_trip_point_sync.sql +36 -0
  61. package/dist/server/server/migrations/034_movement_segment_sync.sql +49 -0
  62. package/dist/server/server/migrations/035_google_local_auth_settings.sql +2 -0
  63. package/dist/server/server/migrations/036_google_local_auth_client_secret.sql +2 -0
  64. package/dist/server/{app.js → server/src/app.js} +992 -25
  65. package/dist/server/server/src/connectors/box-registry.js +188 -0
  66. package/dist/server/{db.js → server/src/db.js} +6 -0
  67. package/dist/server/server/src/debug.js +19 -0
  68. package/dist/server/server/src/discovery-advertiser.js +114 -0
  69. package/dist/server/{health.js → server/src/health.js} +39 -11
  70. package/dist/server/{index.js → server/src/index.js} +4 -0
  71. package/dist/server/{managers → server/src/managers}/platform/llm-manager.js +40 -4
  72. package/dist/server/{managers → server/src/managers}/platform/openai-responses-provider.js +129 -19
  73. package/dist/server/server/src/movement.js +2935 -0
  74. package/dist/server/{openapi.js → server/src/openapi.js} +628 -5
  75. package/dist/server/{psyche-types.js → server/src/psyche-types.js} +15 -1
  76. package/dist/server/server/src/questionnaire-flow.js +552 -0
  77. package/dist/server/server/src/questionnaire-seeds.js +853 -0
  78. package/dist/server/server/src/questionnaire-types.js +340 -0
  79. package/dist/server/server/src/repositories/ai-connectors.js +1207 -0
  80. package/dist/server/server/src/repositories/ai-processors.js +547 -0
  81. package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
  82. package/dist/server/{repositories → server/src/repositories}/entity-ownership.js +9 -1
  83. package/dist/server/{repositories → server/src/repositories}/habits.js +69 -5
  84. package/dist/server/server/src/repositories/model-settings.js +216 -0
  85. package/dist/server/{repositories → server/src/repositories}/notes.js +57 -15
  86. package/dist/server/{repositories → server/src/repositories}/preferences.js +124 -0
  87. package/dist/server/server/src/repositories/questionnaires.js +1338 -0
  88. package/dist/server/{repositories → server/src/repositories}/settings.js +156 -12
  89. package/dist/server/server/src/repositories/surface-layouts.js +76 -0
  90. package/dist/server/{repositories → server/src/repositories}/wiki-memory.js +5 -1
  91. package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
  92. package/dist/server/{services → server/src/services}/entity-crud.js +81 -2
  93. package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
  94. package/dist/server/server/src/services/openai-codex-oauth.js +153 -0
  95. package/dist/server/server/src/services/psyche-observation-calendar.js +46 -0
  96. package/dist/server/{types.js → server/src/types.js} +621 -14
  97. package/dist/server/server/src/watch-mobile.js +562 -0
  98. package/dist/server/{web.js → server/src/web.js} +30 -4
  99. package/dist/server/src/components/customization/utility-widgets.js +330 -0
  100. package/dist/server/src/components/workbench-boxes/health/health-boxes.js +92 -0
  101. package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +128 -0
  102. package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +37 -0
  103. package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +114 -0
  104. package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +57 -0
  105. package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +4 -0
  106. package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +13 -0
  107. package/dist/server/src/components/workbench-boxes/today/today-boxes.js +63 -0
  108. package/dist/server/src/lib/api-error.js +37 -0
  109. package/dist/server/src/lib/api.js +1859 -0
  110. package/dist/server/src/lib/calendar-name-deduper.js +144 -0
  111. package/dist/server/src/lib/diagnostics.js +67 -0
  112. package/dist/server/src/lib/psyche-types.js +1 -0
  113. package/dist/server/src/lib/questionnaire-types.js +1 -0
  114. package/dist/server/src/lib/runtime-paths.js +24 -0
  115. package/dist/server/src/lib/schemas.js +234 -0
  116. package/dist/server/src/lib/snapshot-normalizer.js +374 -0
  117. package/dist/server/src/lib/theme-system.js +319 -0
  118. package/dist/server/src/lib/types.js +1 -0
  119. package/dist/server/src/lib/utils.js +22 -0
  120. package/dist/server/src/lib/workbench/boxes.js +16 -0
  121. package/dist/server/src/lib/workbench/nodes.js +15 -0
  122. package/dist/server/src/lib/workbench/registry.js +73 -0
  123. package/dist/server/src/lib/workbench/runtime.js +181 -0
  124. package/openclaw.plugin.json +1 -1
  125. package/package.json +6 -1
  126. package/server/index.js +68 -0
  127. package/server/migrations/024_questionnaires.sql +96 -0
  128. package/server/migrations/025_ai_model_connections.sql +26 -0
  129. package/server/migrations/026_custom_theme_settings.sql +2 -0
  130. package/server/migrations/027_ai_processors.sql +31 -0
  131. package/server/migrations/028_movement_domain.sql +136 -0
  132. package/server/migrations/029_watch_micro_capture.sql +23 -0
  133. package/server/migrations/030_surface_layouts.sql +5 -0
  134. package/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
  135. package/server/migrations/032_ai_connectors.sql +44 -0
  136. package/server/migrations/033_movement_trip_point_sync.sql +36 -0
  137. package/server/migrations/034_movement_segment_sync.sql +49 -0
  138. package/server/migrations/035_google_local_auth_settings.sql +2 -0
  139. package/server/migrations/036_google_local_auth_client_secret.sql +2 -0
  140. package/skills/forge-openclaw/SKILL.md +15 -1
  141. package/skills/forge-openclaw/entity_conversation_playbooks.md +523 -87
  142. package/skills/forge-openclaw/psyche_entity_playbooks.md +331 -221
  143. package/dist/assets/index-DTCwBWAs.js +0 -65
  144. package/dist/assets/index-DTCwBWAs.js.map +0 -1
  145. package/dist/assets/index-DttXlAgi.css +0 -1
  146. package/dist/assets/motion-D4sZgCHd.js.map +0 -1
  147. package/dist/assets/vendor-De38P6YR.js +0 -729
  148. package/dist/assets/vendor-De38P6YR.js.map +0 -1
  149. package/dist/assets/viz-C6hfyqzu.js +0 -34
  150. package/dist/assets/viz-C6hfyqzu.js.map +0 -1
  151. package/skills/forge-openclaw/cron_jobs.md +0 -395
  152. /package/dist/server/{demo-data.js → server/src/demo-data.js} +0 -0
  153. /package/dist/server/{e2e-server.js → server/src/e2e-server.js} +0 -0
  154. /package/dist/server/{errors.js → server/src/errors.js} +0 -0
  155. /package/dist/server/{managers → server/src/managers}/base.js +0 -0
  156. /package/dist/server/{managers → server/src/managers}/contracts.js +0 -0
  157. /package/dist/server/{managers → server/src/managers}/platform/api-gateway-manager.js +0 -0
  158. /package/dist/server/{managers → server/src/managers}/platform/audit-manager.js +0 -0
  159. /package/dist/server/{managers → server/src/managers}/platform/authentication-manager.js +0 -0
  160. /package/dist/server/{managers → server/src/managers}/platform/authorization-manager.js +0 -0
  161. /package/dist/server/{managers → server/src/managers}/platform/background-job-manager.js +0 -0
  162. /package/dist/server/{managers → server/src/managers}/platform/configuration-manager.js +0 -0
  163. /package/dist/server/{managers → server/src/managers}/platform/database-manager.js +0 -0
  164. /package/dist/server/{managers → server/src/managers}/platform/event-bus-manager.js +0 -0
  165. /package/dist/server/{managers → server/src/managers}/platform/external-service-manager.js +0 -0
  166. /package/dist/server/{managers → server/src/managers}/platform/health-manager.js +0 -0
  167. /package/dist/server/{managers → server/src/managers}/platform/migration-manager.js +0 -0
  168. /package/dist/server/{managers → server/src/managers}/platform/search-index-manager.js +0 -0
  169. /package/dist/server/{managers → server/src/managers}/platform/secrets-manager.js +0 -0
  170. /package/dist/server/{managers → server/src/managers}/platform/session-manager.js +0 -0
  171. /package/dist/server/{managers → server/src/managers}/platform/storage-manager.js +0 -0
  172. /package/dist/server/{managers → server/src/managers}/platform/token-manager.js +0 -0
  173. /package/dist/server/{managers → server/src/managers}/platform/transaction-manager.js +0 -0
  174. /package/dist/server/{managers → server/src/managers}/platform/trusted-network.js +0 -0
  175. /package/dist/server/{managers → server/src/managers}/runtime.js +0 -0
  176. /package/dist/server/{managers → server/src/managers}/type-guards.js +0 -0
  177. /package/dist/server/{preferences-seeds.js → server/src/preferences-seeds.js} +0 -0
  178. /package/dist/server/{preferences-types.js → server/src/preferences-types.js} +0 -0
  179. /package/dist/server/{repositories → server/src/repositories}/activity-events.js +0 -0
  180. /package/dist/server/{repositories → server/src/repositories}/collaboration.js +0 -0
  181. /package/dist/server/{repositories → server/src/repositories}/deleted-entities.js +0 -0
  182. /package/dist/server/{repositories → server/src/repositories}/diagnostic-logs.js +0 -0
  183. /package/dist/server/{repositories → server/src/repositories}/domains.js +0 -0
  184. /package/dist/server/{repositories → server/src/repositories}/event-log.js +0 -0
  185. /package/dist/server/{repositories → server/src/repositories}/goals.js +0 -0
  186. /package/dist/server/{repositories → server/src/repositories}/projects.js +0 -0
  187. /package/dist/server/{repositories → server/src/repositories}/psyche.js +0 -0
  188. /package/dist/server/{repositories → server/src/repositories}/rewards.js +0 -0
  189. /package/dist/server/{repositories → server/src/repositories}/strategies.js +0 -0
  190. /package/dist/server/{repositories → server/src/repositories}/tags.js +0 -0
  191. /package/dist/server/{repositories → server/src/repositories}/task-runs.js +0 -0
  192. /package/dist/server/{repositories → server/src/repositories}/tasks.js +0 -0
  193. /package/dist/server/{repositories → server/src/repositories}/users.js +0 -0
  194. /package/dist/server/{repositories → server/src/repositories}/weekly-reviews.js +0 -0
  195. /package/dist/server/{repositories → server/src/repositories}/work-adjustments.js +0 -0
  196. /package/dist/server/{seed-demo.js → server/src/seed-demo.js} +0 -0
  197. /package/dist/server/{services → server/src/services}/context.js +0 -0
  198. /package/dist/server/{services → server/src/services}/dashboard.js +0 -0
  199. /package/dist/server/{services → server/src/services}/gamification.js +0 -0
  200. /package/dist/server/{services → server/src/services}/insights.js +0 -0
  201. /package/dist/server/{services → server/src/services}/projects.js +0 -0
  202. /package/dist/server/{services → server/src/services}/psyche.js +0 -0
  203. /package/dist/server/{services → server/src/services}/relations.js +0 -0
  204. /package/dist/server/{services → server/src/services}/reviews.js +0 -0
  205. /package/dist/server/{services → server/src/services}/run-recovery.js +0 -0
  206. /package/dist/server/{services → server/src/services}/tagging.js +0 -0
  207. /package/dist/server/{services → server/src/services}/task-run-watchdog.js +0 -0
  208. /package/dist/server/{services → server/src/services}/work-time.js +0 -0
@@ -23,6 +23,8 @@ const RESERVED_RESPONSE_TOKENS = 140_000;
23
23
  const APPROX_CHARS_PER_TOKEN = 4;
24
24
  const REQUEST_TIMEOUT_MS = 90_000;
25
25
  const BACKGROUND_POLL_INTERVAL_MS = 2_000;
26
+ const DEFAULT_CODEX_BASE_URL = "https://chatgpt.com/backend-api";
27
+ const CODEX_JWT_CLAIM_PATH = "https://api.openai.com/auth";
26
28
  function closedObject(properties) {
27
29
  return {
28
30
  type: "object",
@@ -172,6 +174,67 @@ function readVerbosity(profile) {
172
174
  ? profile.metadata.verbosity
173
175
  : null;
174
176
  }
177
+ function isCodexProfile(profile) {
178
+ return profile.provider === "openai-codex";
179
+ }
180
+ function normalizeBaseUrl(profile) {
181
+ const trimmed = profile.baseUrl.trim();
182
+ if (trimmed.length > 0) {
183
+ return trimmed.replace(/\/$/, "");
184
+ }
185
+ return isCodexProfile(profile)
186
+ ? DEFAULT_CODEX_BASE_URL
187
+ : "https://api.openai.com/v1";
188
+ }
189
+ function buildResponsesUrl(profile, responseId) {
190
+ const baseUrl = normalizeBaseUrl(profile);
191
+ const root = isCodexProfile(profile)
192
+ ? baseUrl.endsWith("/codex/responses")
193
+ ? baseUrl
194
+ : baseUrl.endsWith("/codex")
195
+ ? `${baseUrl}/responses`
196
+ : `${baseUrl}/codex/responses`
197
+ : baseUrl.endsWith("/responses")
198
+ ? baseUrl
199
+ : `${baseUrl}/responses`;
200
+ return responseId ? `${root}/${responseId}` : root;
201
+ }
202
+ function extractCodexAccountId(accessToken) {
203
+ try {
204
+ const parts = accessToken.split(".");
205
+ if (parts.length !== 3) {
206
+ throw new Error("Invalid token");
207
+ }
208
+ const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf8"));
209
+ const auth = payload[CODEX_JWT_CLAIM_PATH];
210
+ if (!auth || typeof auth !== "object") {
211
+ throw new Error("Missing auth claim");
212
+ }
213
+ const accountId = auth.chatgpt_account_id;
214
+ if (typeof accountId !== "string" || accountId.trim().length === 0) {
215
+ throw new Error("Missing account id");
216
+ }
217
+ return accountId;
218
+ }
219
+ catch {
220
+ throw new Error("Failed to extract accountId from OpenAI Codex token.");
221
+ }
222
+ }
223
+ function buildRequestHeaders(profile, apiKey, options = {}) {
224
+ const headers = {
225
+ authorization: `Bearer ${apiKey}`
226
+ };
227
+ if (options.includeJsonContentType) {
228
+ headers["content-type"] = "application/json";
229
+ }
230
+ if (!isCodexProfile(profile)) {
231
+ return headers;
232
+ }
233
+ headers["OpenAI-Beta"] = "responses=experimental";
234
+ headers.originator = "pi";
235
+ headers["chatgpt-account-id"] = extractCodexAccountId(apiKey);
236
+ return headers;
237
+ }
175
238
  function buildReasoningConfiguration(profile) {
176
239
  const effort = readReasoningEffort(profile);
177
240
  return effort ? { effort } : undefined;
@@ -268,7 +331,13 @@ function normalizeResult(content, input) {
268
331
  }
269
332
  }
270
333
  export class OpenAiResponsesProvider {
271
- providerNames = ["openai", "openai-responses", "openai-compatible"];
334
+ providerNames = [
335
+ "openai",
336
+ "openai-api",
337
+ "openai-codex",
338
+ "openai-responses",
339
+ "openai-compatible"
340
+ ];
272
341
  async testConnection({ apiKey, profile, logger }) {
273
342
  emitDiagnostic(logger, {
274
343
  level: "info",
@@ -283,12 +352,11 @@ export class OpenAiResponsesProvider {
283
352
  });
284
353
  let response;
285
354
  try {
286
- response = await fetch(`${profile.baseUrl.replace(/\/$/, "")}/responses`, {
355
+ response = await fetch(buildResponsesUrl(profile), {
287
356
  method: "POST",
288
- headers: {
289
- "content-type": "application/json",
290
- authorization: `Bearer ${apiKey}`
291
- },
357
+ headers: buildRequestHeaders(profile, apiKey, {
358
+ includeJsonContentType: true
359
+ }),
292
360
  body: JSON.stringify({
293
361
  model: profile.model,
294
362
  input: "Reply with the single word ok.",
@@ -353,6 +421,53 @@ export class OpenAiResponsesProvider {
353
421
  outputPreview: parseOutputText(payload)?.trim() || "ok"
354
422
  };
355
423
  }
424
+ async runText({ apiKey, profile, systemPrompt, prompt, logger }) {
425
+ emitDiagnostic(logger, {
426
+ level: "info",
427
+ message: "Running OpenAI text prompt.",
428
+ details: {
429
+ scope: "ai_processor",
430
+ eventKey: "prompt_run_start",
431
+ provider: profile.provider,
432
+ baseUrl: profile.baseUrl,
433
+ model: profile.model
434
+ }
435
+ });
436
+ const response = await fetch(buildResponsesUrl(profile), {
437
+ method: "POST",
438
+ headers: buildRequestHeaders(profile, apiKey, {
439
+ includeJsonContentType: true
440
+ }),
441
+ body: JSON.stringify({
442
+ model: profile.model,
443
+ input: [
444
+ ...(systemPrompt?.trim()
445
+ ? [
446
+ {
447
+ role: "system",
448
+ content: [{ type: "input_text", text: systemPrompt.trim() }]
449
+ }
450
+ ]
451
+ : []),
452
+ {
453
+ role: "user",
454
+ content: [{ type: "input_text", text: prompt }]
455
+ }
456
+ ],
457
+ reasoning: buildReasoningConfiguration(profile),
458
+ text: buildTextConfiguration({ profile }),
459
+ max_output_tokens: 1200
460
+ })
461
+ });
462
+ if (!response.ok) {
463
+ const message = await response.text();
464
+ throw new Error(`OpenAI text prompt failed (${response.status})${message ? `: ${message}` : ""}`);
465
+ }
466
+ const payload = await readJsonPayload(response);
467
+ return {
468
+ outputText: parseOutputText(payload)?.trim() || ""
469
+ };
470
+ }
356
471
  async compile({ apiKey, profile, input, resumeResponseId, logger }) {
357
472
  const sourceText = input.rawText.trim();
358
473
  const prompt = [
@@ -517,11 +632,9 @@ export class OpenAiResponsesProvider {
517
632
  responseId
518
633
  }
519
634
  });
520
- const resumeResponse = await fetch(`${profile.baseUrl.replace(/\/$/, "")}/responses/${responseId}`, {
635
+ const resumeResponse = await fetch(buildResponsesUrl(profile, responseId), {
521
636
  method: "GET",
522
- headers: {
523
- authorization: `Bearer ${apiKey}`
524
- },
637
+ headers: buildRequestHeaders(profile, apiKey),
525
638
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS)
526
639
  });
527
640
  if (!resumeResponse.ok) {
@@ -547,12 +660,11 @@ export class OpenAiResponsesProvider {
547
660
  else {
548
661
  let createResponse;
549
662
  try {
550
- createResponse = await fetch(`${profile.baseUrl.replace(/\/$/, "")}/responses`, {
663
+ createResponse = await fetch(buildResponsesUrl(profile), {
551
664
  method: "POST",
552
- headers: {
553
- "content-type": "application/json",
554
- authorization: `Bearer ${apiKey}`
555
- },
665
+ headers: buildRequestHeaders(profile, apiKey, {
666
+ includeJsonContentType: true
667
+ }),
556
668
  body: JSON.stringify({
557
669
  model: profile.model,
558
670
  input: inputs,
@@ -646,11 +758,9 @@ export class OpenAiResponsesProvider {
646
758
  while (!isTerminalBackgroundStatus(readResponseStatus(payload))) {
647
759
  await new Promise((resolve) => setTimeout(resolve, BACKGROUND_POLL_INTERVAL_MS));
648
760
  try {
649
- const pollResponse = await fetch(`${profile.baseUrl.replace(/\/$/, "")}/responses/${responseId}`, {
761
+ const pollResponse = await fetch(buildResponsesUrl(profile, responseId), {
650
762
  method: "GET",
651
- headers: {
652
- authorization: `Bearer ${apiKey}`
653
- },
763
+ headers: buildRequestHeaders(profile, apiKey),
654
764
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS)
655
765
  });
656
766
  if (!pollResponse.ok) {