relmio 0.2.15 → 0.3.1
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/CHANGELOG.md +43 -0
- package/README.md +96 -26
- package/docs/images/examples/gpt-56-model-selector.png +0 -0
- package/docs/images/examples/n8n-openai-credential-connected.png +0 -0
- package/docs/images/examples/telegram-model-results.png +0 -0
- package/docs/images/examples/telegram-n8n-workflow-execution.png +0 -0
- package/docs/images/setup/00-install-methods.png +0 -0
- package/docs/images/setup/01-local-sign-in-ready.png +0 -0
- package/docs/images/setup/02-vps-identity-confirmed.png +0 -0
- package/docs/images/setup/03-n8n-detected.png +0 -0
- package/docs/images/setup/04-install-plan.png +0 -0
- package/docs/images/setup/05-bridge-ready.png +0 -0
- package/docs/n8n-configuration.md +94 -24
- package/package.json +1 -1
- package/src/ui/app.js +32 -5
- package/src/ui/index.html +138 -113
- package/src/ui/styles.css +577 -278
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,49 @@ checks the registry separately after publication.
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## [0.3.1] - 2026-08-10
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Make the browser wizard beginner-friendly with a modern fixed-viewport
|
|
15
|
+
layout: all five active steps fit without document scrolling on common
|
|
16
|
+
1280x720 laptops, while progress and safety context stay persistent beside
|
|
17
|
+
the active task.
|
|
18
|
+
- Keep narrow-phone documents fixed to the viewport and contain unavoidable
|
|
19
|
+
long-form overflow within the active task panel instead of the page.
|
|
20
|
+
- Expand the GitHub and npm walkthroughs with a hosted-install selector and
|
|
21
|
+
packaged, sanitized screenshots that document the current n8n workflow.
|
|
22
|
+
|
|
23
|
+
### Security
|
|
24
|
+
|
|
25
|
+
- Restore a clean hosted-web dependency audit by pinning patched `js-yaml`
|
|
26
|
+
and `nanoid` releases and using the compatible `vinext` release that does
|
|
27
|
+
not include the currently vulnerable `image-size` parser.
|
|
28
|
+
|
|
29
|
+
## [0.3.0] - 2026-08-05
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- Add a copy-ready n8n HTTP Request recipe to the local wizard, including the
|
|
34
|
+
private Chat Completions URL, Generic Credential Type → Bearer Auth fields,
|
|
35
|
+
the harmless `local-only` bearer placeholder, JSON headers, the structured
|
|
36
|
+
response-format body, and a full recipe copy action.
|
|
37
|
+
- Add the same structured `gpt-5.6-sol` example and importable cURL recipe to
|
|
38
|
+
the GitHub README, npm README, and n8n configuration guide.
|
|
39
|
+
- Add a repository-local changelog skill that standardizes Relmio's patch,
|
|
40
|
+
pre-1.0 feature, and stable major release numbering and metadata checks.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- Treat `0.3.0` as Relmio's major feature release within the pre-1.0 series;
|
|
45
|
+
it consolidates the key improvements shipped from v0.2.10 through v0.2.14:
|
|
46
|
+
resilient Windows OAuth/bootstrap flows, native Command Prompt installation,
|
|
47
|
+
compact accessible wizard recipes, verified Homebrew/package-manager
|
|
48
|
+
preparation, and release-time package checks.
|
|
49
|
+
- Keep the HTTP Request body aligned with n8n's `messages` format by targeting
|
|
50
|
+
`/v1/chat/completions`; the separate OpenAI Chat Model guidance continues to
|
|
51
|
+
support the Responses API where that node exposes the switch.
|
|
52
|
+
|
|
10
53
|
## [0.2.15] - 2026-08-05
|
|
11
54
|
|
|
12
55
|
### Fixed
|
package/README.md
CHANGED
|
@@ -15,21 +15,29 @@
|
|
|
15
15
|
|
|
16
16
|
## See it working first
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
This documented example follows a tested n8n OpenAI credential through a
|
|
19
|
+
published Telegram-triggered workflow. It is a product-operation record, not
|
|
20
|
+
an endorsement, sponsorship, or affiliation by OpenAI, n8n, Hostinger,
|
|
21
|
+
Telegram, or AppBuildersPH.
|
|
21
22
|
|
|
22
23
|
<figure>
|
|
23
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/
|
|
24
|
-
<figcaption>
|
|
24
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/n8n-openai-credential-connected.png" alt="n8n OpenAI credential dialog showing that the connection test succeeded" width="960">
|
|
25
|
+
<figcaption>The n8n OpenAI credential connection test succeeded; the credential value itself is obscured.</figcaption>
|
|
25
26
|
</figure>
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
<figure>
|
|
29
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/gpt-56-model-selector.png" alt="n8n model selector with gpt-5.6-terra selected and an account-specific model list" width="500">
|
|
30
|
+
<figcaption>This signed-in account's n8n model list includes <code>gpt-5.6-terra</code>; model availability is account-dependent and can change.</figcaption>
|
|
31
|
+
</figure>
|
|
32
|
+
|
|
33
|
+
<figure>
|
|
34
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/telegram-n8n-workflow-execution.png" alt="Successful n8n execution of a Telegram-triggered workflow with HTTP Request, Basic LLM Chain, and AI Agent branches" width="960">
|
|
35
|
+
<figcaption>The published Telegram-triggered n8n workflow completed successfully across its HTTP Request, Basic LLM Chain, and AI Agent branches.</figcaption>
|
|
36
|
+
</figure>
|
|
29
37
|
|
|
30
38
|
<figure>
|
|
31
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/
|
|
32
|
-
<figcaption>
|
|
39
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/telegram-model-results.png" alt="Telegram conversation receiving HTTP Request, Basic LLM Chain, and AI Agent outputs" width="682">
|
|
40
|
+
<figcaption>Telegram received the HTTP Request, Basic LLM Chain, and AI Agent outputs sent by that workflow.</figcaption>
|
|
33
41
|
</figure>
|
|
34
42
|
|
|
35
43
|
Relmio is a local browser wizard that installs a private
|
|
@@ -80,10 +88,11 @@ tailored to the current self-hosted n8n and Hostinger VPS setup path.
|
|
|
80
88
|
The hosted site and local wizard keep the original Relmio relay layout while
|
|
81
89
|
adding a compact **System / Light / Dark** appearance control. System follows
|
|
82
90
|
the computer's preference; Light and Dark are remembered on that browser only.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
91
|
+
On desktop, the local wizard keeps progress and sidecar-only safety notes in a
|
|
92
|
+
persistent rail beside the active task; its compact fixed-screen shell avoids
|
|
93
|
+
document scrolling on common laptop screens. On narrow phones, it switches to
|
|
94
|
+
a horizontal progress strip and keeps task scrolling inside the active panel.
|
|
95
|
+
The hosted site keeps the live GitHub star/version control visible.
|
|
87
96
|
|
|
88
97
|
## Quick start
|
|
89
98
|
|
|
@@ -184,28 +193,51 @@ it is not currently advertised as supported.
|
|
|
184
193
|
|
|
185
194
|
## Visual walkthrough
|
|
186
195
|
|
|
187
|
-
|
|
188
|
-
|
|
196
|
+
These current product screenshots use sanitized sample values wherever a setup
|
|
197
|
+
field might otherwise identify an environment. The VPS identity screen shows a
|
|
198
|
+
reserved sample address and sample SSH fingerprint; none of the images includes
|
|
199
|
+
an OAuth token, password, private key, or live wizard session URL.
|
|
200
|
+
|
|
201
|
+
### 1. Choose a hosted installation method
|
|
202
|
+
|
|
203
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/00-install-methods.png" alt="Hosted Relmio installation page with macOS/Linux, Homebrew, PowerShell, Command Prompt, and NPX choices" width="720">
|
|
204
|
+
|
|
205
|
+
The hosted page starts with the installation-method selector. Run the selected
|
|
206
|
+
command locally, not on the VPS.
|
|
189
207
|
|
|
190
|
-
###
|
|
208
|
+
### 2. Complete the local ChatGPT/Codex sign-in
|
|
191
209
|
|
|
192
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/01-local-sign-in-ready.png" alt="Sanitized
|
|
210
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/01-local-sign-in-ready.png" alt="Sanitized preview-mode sample credential state, not a real saved-login confirmation" width="626">
|
|
193
211
|
|
|
194
|
-
|
|
212
|
+
This image shows a sanitized preview-mode sample credential state; it does not
|
|
213
|
+
confirm that a real local ChatGPT login was saved. During a real fresh login,
|
|
214
|
+
the browser confirmation states that the credentials were saved locally.
|
|
195
215
|
|
|
196
|
-
|
|
216
|
+
### 3. Verify the VPS identity
|
|
197
217
|
|
|
198
|
-
|
|
218
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/02-vps-identity-confirmed.png" alt="VPS identity confirmation with a sanitized sample address and SSH fingerprint" width="720">
|
|
199
219
|
|
|
200
|
-
|
|
220
|
+
Confirm the SSH host fingerprint before authentication. The screenshot uses the
|
|
221
|
+
reserved sample host `vps.example.test`, a sample fingerprint, and a blank
|
|
222
|
+
password field.
|
|
201
223
|
|
|
202
|
-
### 4.
|
|
224
|
+
### 4. Choose the detected n8n container and network
|
|
203
225
|
|
|
204
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/
|
|
226
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/03-n8n-detected.png" alt="Detected n8n container and shared Docker network" width="720">
|
|
205
227
|
|
|
206
|
-
|
|
228
|
+
Discovery is read-only; choose the existing n8n container and shared Docker
|
|
229
|
+
network.
|
|
207
230
|
|
|
208
|
-
|
|
231
|
+
### 5. Review the exact sidecar-only plan
|
|
232
|
+
|
|
233
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/04-install-plan.png" alt="Exact sidecar-only installation plan, including forbidden actions" width="720">
|
|
234
|
+
|
|
235
|
+
The plan names the allowed sidecar work and explicitly excludes edits or
|
|
236
|
+
restarts of n8n, a published host port, and a Traefik route.
|
|
237
|
+
|
|
238
|
+
### 6. Copy the verified n8n settings
|
|
239
|
+
|
|
240
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/05-bridge-ready.png" alt="Private bridge ready screen with n8n OpenAI credential settings" width="720">
|
|
209
241
|
|
|
210
242
|
Use these values in an n8n OpenAI credential:
|
|
211
243
|
|
|
@@ -219,6 +251,43 @@ Add Custom Header: Off
|
|
|
219
251
|
The `local-only` value is a placeholder required by n8n. It is not an OpenAI
|
|
220
252
|
Platform API key.
|
|
221
253
|
|
|
254
|
+
For an n8n **HTTP Request** node, use **Generic Credential Type** → **Bearer
|
|
255
|
+
Auth**, name the credential `openai-oauth`, and enter `local-only` as the
|
|
256
|
+
bearer token. Enable **Send Headers** with `Content-Type: application/json`,
|
|
257
|
+
then enable **Send Body** → **JSON** → **Using JSON** and paste:
|
|
258
|
+
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"model": "gpt-5.6-sol",
|
|
262
|
+
"messages": [
|
|
263
|
+
{
|
|
264
|
+
"role": "user",
|
|
265
|
+
"content": "What is a robot?"
|
|
266
|
+
}
|
|
267
|
+
],
|
|
268
|
+
"response_format": {
|
|
269
|
+
"type": "json_schema",
|
|
270
|
+
"json_schema": {
|
|
271
|
+
"name": "answer",
|
|
272
|
+
"schema": {
|
|
273
|
+
"type": "object",
|
|
274
|
+
"properties": {
|
|
275
|
+
"content": { "type": "string" }
|
|
276
|
+
},
|
|
277
|
+
"required": ["content"],
|
|
278
|
+
"additionalProperties": false
|
|
279
|
+
},
|
|
280
|
+
"strict": true
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Use `POST http://n8n-openai-oauth:10531/v1/chat/completions` as the URL. The
|
|
287
|
+
local wizard's **Copy HTTP request recipe** action supplies the same fields.
|
|
288
|
+
Replace the model only if the wizard reports a different ID. The full guide
|
|
289
|
+
has the importable cURL version.
|
|
290
|
+
|
|
222
291
|
## Important boundaries
|
|
223
292
|
|
|
224
293
|
- Relmio does not create an OpenAI Platform API key.
|
|
@@ -228,7 +297,8 @@ Platform API key.
|
|
|
228
297
|
- Relmio never edits, rebuilds, recreates, stops, or restarts the existing n8n
|
|
229
298
|
container.
|
|
230
299
|
- This is an unofficial community project, not affiliated with or endorsed by
|
|
231
|
-
OpenAI, xAI,
|
|
300
|
+
OpenAI, xAI, n8n, Hostinger, Telegram, or AppBuildersPH. Provider access,
|
|
301
|
+
models, limits, and policies can change.
|
|
232
302
|
- Use it only where your account, subscription, provider terms, and applicable
|
|
233
303
|
policies allow.
|
|
234
304
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -97,8 +97,9 @@ the chain.
|
|
|
97
97
|
|
|
98
98
|
## 3. HTTP Request node
|
|
99
99
|
|
|
100
|
-
The HTTP Request recipe calls the bridge directly
|
|
101
|
-
|
|
100
|
+
The HTTP Request recipe calls the bridge directly with n8n's generic Bearer
|
|
101
|
+
Auth credential. It uses the Chat Completions route because the body below uses
|
|
102
|
+
the `messages` format shown in the n8n node.
|
|
102
103
|
|
|
103
104
|
### Copy-paste fields
|
|
104
105
|
|
|
@@ -111,69 +112,120 @@ POST
|
|
|
111
112
|
URL:
|
|
112
113
|
|
|
113
114
|
```text
|
|
114
|
-
http://n8n-openai-oauth:10531/v1/
|
|
115
|
+
http://n8n-openai-oauth:10531/v1/chat/completions
|
|
115
116
|
```
|
|
116
117
|
|
|
117
118
|
Authentication:
|
|
118
119
|
|
|
119
120
|
```text
|
|
120
|
-
|
|
121
|
+
Generic Credential Type
|
|
121
122
|
```
|
|
122
123
|
|
|
123
|
-
|
|
124
|
+
Generic Auth Type:
|
|
124
125
|
|
|
125
126
|
```text
|
|
126
|
-
|
|
127
|
+
Bearer Auth
|
|
127
128
|
```
|
|
128
129
|
|
|
129
|
-
|
|
130
|
+
Credential name:
|
|
130
131
|
|
|
131
132
|
```text
|
|
132
|
-
|
|
133
|
+
openai-oauth
|
|
133
134
|
```
|
|
134
135
|
|
|
135
|
-
|
|
136
|
+
Bearer token:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
local-only
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Enable **Send Headers** and add this header:
|
|
143
|
+
|
|
144
|
+
Header name:
|
|
136
145
|
|
|
137
146
|
```text
|
|
138
147
|
Content-Type
|
|
139
148
|
```
|
|
140
149
|
|
|
141
|
-
Header
|
|
150
|
+
Header value:
|
|
142
151
|
|
|
143
152
|
```text
|
|
144
153
|
application/json
|
|
145
154
|
```
|
|
146
155
|
|
|
147
|
-
JSON
|
|
156
|
+
Enable **Send Body**, select **JSON** for **Body Content Type**, and choose
|
|
157
|
+
**Using JSON** for **Specify Body**. Paste this body:
|
|
148
158
|
|
|
149
159
|
```json
|
|
150
160
|
{
|
|
151
|
-
"model": "
|
|
152
|
-
"
|
|
161
|
+
"model": "gpt-5.6-sol",
|
|
162
|
+
"messages": [
|
|
163
|
+
{
|
|
164
|
+
"role": "user",
|
|
165
|
+
"content": "What is a robot?"
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"response_format": {
|
|
169
|
+
"type": "json_schema",
|
|
170
|
+
"json_schema": {
|
|
171
|
+
"name": "answer",
|
|
172
|
+
"schema": {
|
|
173
|
+
"type": "object",
|
|
174
|
+
"properties": {
|
|
175
|
+
"content": { "type": "string" }
|
|
176
|
+
},
|
|
177
|
+
"required": ["content"],
|
|
178
|
+
"additionalProperties": false
|
|
179
|
+
},
|
|
180
|
+
"strict": true
|
|
181
|
+
}
|
|
182
|
+
}
|
|
153
183
|
}
|
|
154
184
|
```
|
|
155
185
|
|
|
156
|
-
|
|
157
|
-
|
|
186
|
+
If the wizard reports a different model ID, replace only `gpt-5.6-sol` with
|
|
187
|
+
that detected ID. The `local-only` bearer value is a harmless n8n placeholder;
|
|
188
|
+
it is not an OpenAI Platform API key.
|
|
158
189
|
|
|
159
190
|
### Importable cURL version
|
|
160
191
|
|
|
161
|
-
The n8n HTTP Request node can import
|
|
162
|
-
|
|
192
|
+
The n8n HTTP Request node can import this cURL command. Replace only the model
|
|
193
|
+
if the wizard reports a different ID:
|
|
163
194
|
|
|
164
195
|
```bash
|
|
165
196
|
curl --request POST \
|
|
166
|
-
--url http://n8n-openai-oauth:10531/v1/
|
|
197
|
+
--url http://n8n-openai-oauth:10531/v1/chat/completions \
|
|
167
198
|
--header 'Authorization: Bearer local-only' \
|
|
168
199
|
--header 'Content-Type: application/json' \
|
|
169
200
|
--data '{
|
|
170
|
-
"model": "
|
|
171
|
-
"
|
|
201
|
+
"model": "gpt-5.6-sol",
|
|
202
|
+
"messages": [
|
|
203
|
+
{
|
|
204
|
+
"role": "user",
|
|
205
|
+
"content": "What is a robot?"
|
|
206
|
+
}
|
|
207
|
+
],
|
|
208
|
+
"response_format": {
|
|
209
|
+
"type": "json_schema",
|
|
210
|
+
"json_schema": {
|
|
211
|
+
"name": "answer",
|
|
212
|
+
"schema": {
|
|
213
|
+
"type": "object",
|
|
214
|
+
"properties": {
|
|
215
|
+
"content": { "type": "string" }
|
|
216
|
+
},
|
|
217
|
+
"required": ["content"],
|
|
218
|
+
"additionalProperties": false
|
|
219
|
+
},
|
|
220
|
+
"strict": true
|
|
221
|
+
}
|
|
222
|
+
}
|
|
172
223
|
}'
|
|
173
224
|
```
|
|
174
225
|
|
|
175
|
-
The
|
|
176
|
-
|
|
226
|
+
The cURL `Authorization` header is equivalent to the n8n Bearer Auth
|
|
227
|
+
credential. It is included so the command can be imported or run as a direct
|
|
228
|
+
connectivity check.
|
|
177
229
|
|
|
178
230
|
### Expression-driven HTTP body
|
|
179
231
|
|
|
@@ -182,8 +234,26 @@ After the fixed test succeeds, switch the entire JSON body field to
|
|
|
182
234
|
|
|
183
235
|
```javascript
|
|
184
236
|
={{ {
|
|
185
|
-
model: "
|
|
186
|
-
|
|
237
|
+
model: "gpt-5.6-sol",
|
|
238
|
+
messages: [
|
|
239
|
+
{
|
|
240
|
+
role: "user",
|
|
241
|
+
content: $json.prompt
|
|
242
|
+
}
|
|
243
|
+
],
|
|
244
|
+
response_format: {
|
|
245
|
+
type: "json_schema",
|
|
246
|
+
json_schema: {
|
|
247
|
+
name: "answer",
|
|
248
|
+
schema: {
|
|
249
|
+
type: "object",
|
|
250
|
+
properties: { content: { type: "string" } },
|
|
251
|
+
required: ["content"],
|
|
252
|
+
additionalProperties: false
|
|
253
|
+
},
|
|
254
|
+
strict: true
|
|
255
|
+
}
|
|
256
|
+
}
|
|
187
257
|
} }}
|
|
188
258
|
```
|
|
189
259
|
|
package/package.json
CHANGED
package/src/ui/app.js
CHANGED
|
@@ -123,8 +123,28 @@ async function copyText(value) {
|
|
|
123
123
|
function renderHttpRequestBody(model) {
|
|
124
124
|
element("result-http-body").textContent = JSON.stringify(
|
|
125
125
|
{
|
|
126
|
-
model,
|
|
127
|
-
|
|
126
|
+
model: model === "Not detected" ? "gpt-5.6-sol" : model,
|
|
127
|
+
messages: [
|
|
128
|
+
{
|
|
129
|
+
role: "user",
|
|
130
|
+
content: "What is a robot?",
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
response_format: {
|
|
134
|
+
type: "json_schema",
|
|
135
|
+
json_schema: {
|
|
136
|
+
name: "answer",
|
|
137
|
+
schema: {
|
|
138
|
+
type: "object",
|
|
139
|
+
properties: {
|
|
140
|
+
content: { type: "string" },
|
|
141
|
+
},
|
|
142
|
+
required: ["content"],
|
|
143
|
+
additionalProperties: false,
|
|
144
|
+
},
|
|
145
|
+
strict: true,
|
|
146
|
+
},
|
|
147
|
+
},
|
|
128
148
|
},
|
|
129
149
|
null,
|
|
130
150
|
2,
|
|
@@ -144,9 +164,16 @@ function copyHttpRecipe() {
|
|
|
144
164
|
return [
|
|
145
165
|
"Method: POST",
|
|
146
166
|
`URL: ${element("result-http-url").textContent}`,
|
|
147
|
-
"
|
|
167
|
+
"Authentication: Generic Credential Type",
|
|
168
|
+
"Generic Auth Type: Bearer Auth",
|
|
169
|
+
"Credential: openai-oauth",
|
|
170
|
+
`Bearer token: ${element("result-key").textContent}`,
|
|
171
|
+
`Authorization: ${element("result-http-auth").textContent}`,
|
|
148
172
|
"Content-Type: application/json",
|
|
149
|
-
"
|
|
173
|
+
"Send Headers: On",
|
|
174
|
+
"Send Body: On",
|
|
175
|
+
"Body Content Type: JSON",
|
|
176
|
+
"Specify Body: Using JSON",
|
|
150
177
|
"JSON body:",
|
|
151
178
|
element("result-http-body").textContent,
|
|
152
179
|
].join("\n");
|
|
@@ -598,7 +625,7 @@ element("install-button").addEventListener("click", async (event) => {
|
|
|
598
625
|
element("result-model").textContent = firstModel;
|
|
599
626
|
element("result-models").textContent = result.models.join(", ");
|
|
600
627
|
element("result-http-url").textContent =
|
|
601
|
-
`${result.baseUrl.replace(/\/$/u, "")}/
|
|
628
|
+
`${result.baseUrl.replace(/\/$/u, "")}/chat/completions`;
|
|
602
629
|
renderHttpRequestBody(firstModel);
|
|
603
630
|
showStep(5);
|
|
604
631
|
setMessage(
|