@iowarp/clio-coder 0.3.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 (226) hide show
  1. package/CHANGELOG.md +407 -0
  2. package/CODE_OF_CONDUCT.md +21 -0
  3. package/CONTRIBUTING.md +224 -0
  4. package/LICENSE +202 -0
  5. package/NOTICE +9 -0
  6. package/README.md +798 -0
  7. package/SECURITY.md +72 -0
  8. package/assets/clio-coder-logo-128.webp +0 -0
  9. package/damage-control-rules.yaml +419 -0
  10. package/dist/acp-UMLFVA3F.js +92 -0
  11. package/dist/agents-Q4MYPMUW.js +91 -0
  12. package/dist/auth-O6HYIJ6J.js +521 -0
  13. package/dist/chunk-262G75JS.js +35 -0
  14. package/dist/chunk-26BZQOAD.js +1281 -0
  15. package/dist/chunk-2J63S4SF.js +508 -0
  16. package/dist/chunk-3DANZDGR.js +717 -0
  17. package/dist/chunk-4UQA7NCT.js +29 -0
  18. package/dist/chunk-527KG6XR.js +497 -0
  19. package/dist/chunk-5LDRNKX2.js +1063 -0
  20. package/dist/chunk-5N2FG33Q.js +25 -0
  21. package/dist/chunk-67MTHP2E.js +135 -0
  22. package/dist/chunk-6CWDTGUC.js +20 -0
  23. package/dist/chunk-7BHLZB3A.js +2115 -0
  24. package/dist/chunk-7RBKDI66.js +348 -0
  25. package/dist/chunk-AMFR5YA3.js +541 -0
  26. package/dist/chunk-BBUH4VAA.js +1224 -0
  27. package/dist/chunk-BYEU76JP.js +899 -0
  28. package/dist/chunk-CLJ5HLUD.js +458 -0
  29. package/dist/chunk-D5YD55AR.js +116 -0
  30. package/dist/chunk-DXQNI4PC.js +61 -0
  31. package/dist/chunk-E3NYWENM.js +1004 -0
  32. package/dist/chunk-GNGDQYDU.js +34688 -0
  33. package/dist/chunk-GOTUR54M.js +9 -0
  34. package/dist/chunk-HBU5MTAM.js +41 -0
  35. package/dist/chunk-HMYNFFY4.js +28 -0
  36. package/dist/chunk-JPOWPFCU.js +1010 -0
  37. package/dist/chunk-JWHCJDCI.js +1215 -0
  38. package/dist/chunk-KBR4MZZR.js +41 -0
  39. package/dist/chunk-KKKPTZLM.js +93 -0
  40. package/dist/chunk-ME6DNWIU.js +66 -0
  41. package/dist/chunk-NI4DEJMC.js +88 -0
  42. package/dist/chunk-O4EJEDHO.js +659 -0
  43. package/dist/chunk-PIDUD6M2.js +31 -0
  44. package/dist/chunk-PS4PFJQP.js +29459 -0
  45. package/dist/chunk-QV47YRF4.js +48 -0
  46. package/dist/chunk-RQDWMVRB.js +279 -0
  47. package/dist/chunk-TFSSEXL6.js +136 -0
  48. package/dist/chunk-TKHQ4DGZ.js +8290 -0
  49. package/dist/chunk-TPOCL34A.js +2876 -0
  50. package/dist/chunk-UGYAX5YI.js +565 -0
  51. package/dist/chunk-UHTSULZS.js +461 -0
  52. package/dist/chunk-UU3R62TT.js +128 -0
  53. package/dist/chunk-UWIJNAOB.js +3906 -0
  54. package/dist/chunk-VOO7NYPP.js +914 -0
  55. package/dist/chunk-VPAWTYLY.js +117 -0
  56. package/dist/chunk-WD6AJM35.js +1216 -0
  57. package/dist/chunk-X3BR7HWV.js +115 -0
  58. package/dist/chunk-X3NE4WVW.js +120 -0
  59. package/dist/chunk-XNISANGE.js +1395 -0
  60. package/dist/chunk-XV4ZJ6ZM.js +3177 -0
  61. package/dist/cli/index.js +236 -0
  62. package/dist/clio-KIQ5SNDS.js +53 -0
  63. package/dist/components-JVHMUBEB.js +653 -0
  64. package/dist/config-ZFCDBMDC.js +372 -0
  65. package/dist/configure-G4E3A2PG.js +27 -0
  66. package/dist/context-CDXTP2MP.js +293 -0
  67. package/dist/context-E3KIFVXI.js +185 -0
  68. package/dist/context-clear-3F4PLXOS.js +102 -0
  69. package/dist/context-index-Q7YSYTR3.js +106 -0
  70. package/dist/docs-YIETIWZI.js +280 -0
  71. package/dist/doctor-M5HJJZOL.js +61 -0
  72. package/dist/domains/agents/builtins/architect.md +33 -0
  73. package/dist/domains/agents/builtins/coder.md +31 -0
  74. package/dist/domains/agents/builtins/context-bootstrap.md +38 -0
  75. package/dist/domains/agents/builtins/debugger.md +30 -0
  76. package/dist/domains/agents/builtins/documenter.md +31 -0
  77. package/dist/domains/agents/builtins/git-master.md +30 -0
  78. package/dist/domains/agents/builtins/provenance.md +30 -0
  79. package/dist/domains/agents/builtins/researcher.md +71 -0
  80. package/dist/domains/agents/builtins/scout.md +42 -0
  81. package/dist/domains/agents/builtins/tester.md +31 -0
  82. package/dist/domains/agents/builtins/verifier.md +30 -0
  83. package/dist/domains/agents/builtins/wiki-writer.md +41 -0
  84. package/dist/eval-B3KZZESM.js +2674 -0
  85. package/dist/evidence-V67CHM35.js +233 -0
  86. package/dist/evolve-YDZSUQYA.js +518 -0
  87. package/dist/extensions-SRG7XCAH.js +207 -0
  88. package/dist/fleet-CA2CRTVG.js +760 -0
  89. package/dist/fleet-preflight-CLIAX7YR.js +21 -0
  90. package/dist/init-2OZDJE2D.js +227 -0
  91. package/dist/memory-3PIQQAKX.js +207 -0
  92. package/dist/models-DY35XI7Y.js +237 -0
  93. package/dist/paths-5OMXW7Z4.js +57 -0
  94. package/dist/preload-KZVHET2B.js +11 -0
  95. package/dist/reset-PIFYNOS3.js +216 -0
  96. package/dist/run-3VSPP24F.js +735 -0
  97. package/dist/share-D36RQCXM.js +241 -0
  98. package/dist/skills-F2MRLELY.js +445 -0
  99. package/dist/skills-eval-E2ZTW4PL.js +932 -0
  100. package/dist/targets-DZMEZAH4.js +977 -0
  101. package/dist/trace-7NYCUI2J.js +250 -0
  102. package/dist/uninstall-AD3JWHBB.js +322 -0
  103. package/dist/upgrade-WYYBKGDY.js +301 -0
  104. package/dist/usage-ULIDAGFF.js +755 -0
  105. package/dist/version-ROZ6CZKH.js +16 -0
  106. package/dist/wiki-generate-PKFIX6OB.js +377 -0
  107. package/dist/worker/entry.js +1739 -0
  108. package/docs/README.md +93 -0
  109. package/docs/acp.md +120 -0
  110. package/docs/alcf-provider.md +72 -0
  111. package/docs/architecture.md +172 -0
  112. package/docs/artifact-versions.md +54 -0
  113. package/docs/built-in-agents.md +265 -0
  114. package/docs/capacity-and-scheduling.md +97 -0
  115. package/docs/commands-and-modes.md +554 -0
  116. package/docs/config-knobs-audit.md +115 -0
  117. package/docs/configuration-and-targets.md +812 -0
  118. package/docs/context-engine.md +236 -0
  119. package/docs/dispatch-architecture-rationale.md +126 -0
  120. package/docs/documentation-coverage.md +46 -0
  121. package/docs/documentation-guide.md +166 -0
  122. package/docs/environment-variables.md +105 -0
  123. package/docs/eval-runner.md +205 -0
  124. package/docs/evals-internal.md +298 -0
  125. package/docs/evidence-and-memory.md +243 -0
  126. package/docs/evolution.md +143 -0
  127. package/docs/exit-codes-and-output.md +74 -0
  128. package/docs/extensions-and-sharing.md +306 -0
  129. package/docs/fleet-demo-runbook.md +179 -0
  130. package/docs/fleet-dispatch.md +591 -0
  131. package/docs/glossary.md +75 -0
  132. package/docs/html/agents_blueprint.html +936 -0
  133. package/docs/html/alcf_blueprint.html +324 -0
  134. package/docs/html/architecture_blueprint.html +850 -0
  135. package/docs/html/commands_blueprint.html +794 -0
  136. package/docs/html/config_knobs_audit_blueprint.html +178 -0
  137. package/docs/html/configuration_blueprint.html +1080 -0
  138. package/docs/html/context_blueprint.html +603 -0
  139. package/docs/html/documentation_blueprint.html +832 -0
  140. package/docs/html/environment_blueprint.html +404 -0
  141. package/docs/html/eval_blueprint.html +743 -0
  142. package/docs/html/evals_internal_blueprint.html +190 -0
  143. package/docs/html/evolution_blueprint.html +674 -0
  144. package/docs/html/extensions_blueprint.html +2065 -0
  145. package/docs/html/fleet_dispatch_blueprint.html +286 -0
  146. package/docs/html/index.html +919 -0
  147. package/docs/html/lifecycle_blueprint.html +723 -0
  148. package/docs/html/memory_blueprint.html +699 -0
  149. package/docs/html/middleware_blueprint.html +664 -0
  150. package/docs/html/models_blueprint.html +2366 -0
  151. package/docs/html/observability_blueprint.html +683 -0
  152. package/docs/html/provider_adapter_blueprint.html +245 -0
  153. package/docs/html/safety_blueprint.html +1386 -0
  154. package/docs/html/shared.css +571 -0
  155. package/docs/html/shared.js +143 -0
  156. package/docs/html/skills_blueprint.html +671 -0
  157. package/docs/html/soak_blueprint.html +182 -0
  158. package/docs/html/tool_usage_blueprint.html +350 -0
  159. package/docs/html/tools_blueprint.html +2249 -0
  160. package/docs/html/trace_blueprint.html +235 -0
  161. package/docs/html/tui_design_blueprint.html +314 -0
  162. package/docs/html/validation_blueprint.html +961 -0
  163. package/docs/html/worker_dispatch_blueprint.html +231 -0
  164. package/docs/installation-and-lifecycle.md +308 -0
  165. package/docs/middleware-and-components.md +148 -0
  166. package/docs/model-catalog.md +189 -0
  167. package/docs/observability.md +233 -0
  168. package/docs/proactive-memory.md +452 -0
  169. package/docs/prompt-envelope-and-tools.md +142 -0
  170. package/docs/provider-adapter-cookbook.md +148 -0
  171. package/docs/release-cut-checklist.md +138 -0
  172. package/docs/safety-model.md +357 -0
  173. package/docs/scientific-validation.md +105 -0
  174. package/docs/session-lifecycle.md +156 -0
  175. package/docs/skills-marketplace.md +46 -0
  176. package/docs/tool-usage.md +527 -0
  177. package/docs/trace-store.md +132 -0
  178. package/docs/troubleshooting.md +33 -0
  179. package/docs/tui-design.md +239 -0
  180. package/docs/worker-dispatch-mechanics.md +242 -0
  181. package/package.json +132 -0
  182. package/skills/README.md +408 -0
  183. package/skills/git/commit-crafting/SKILL.md +79 -0
  184. package/skills/git/commit-crafting/evals.md +92 -0
  185. package/skills/git/create-pr/SKILL.md +116 -0
  186. package/skills/git/create-pr/evals.md +114 -0
  187. package/skills/git/investigate-issue/SKILL.md +139 -0
  188. package/skills/git/investigate-issue/evals.md +94 -0
  189. package/skills/git/resolve-merge-conflicts/SKILL.md +96 -0
  190. package/skills/git/resolve-merge-conflicts/evals.md +58 -0
  191. package/skills/git/review-changes/SKILL.md +103 -0
  192. package/skills/git/review-changes/evals.md +85 -0
  193. package/skills/git/worktree-create/SKILL.md +92 -0
  194. package/skills/git/worktree-create/evals.md +97 -0
  195. package/skills/git/worktree-create/references/worktree-setup.md +66 -0
  196. package/skills/git/worktree-merge/SKILL.md +95 -0
  197. package/skills/git/worktree-merge/evals.md +114 -0
  198. package/skills/skill-marketplace.json +261 -0
  199. package/skills/workflow/cut-it/SKILL.md +86 -0
  200. package/skills/workflow/cut-it/evals.md +42 -0
  201. package/src/domains/agents/builtins/architect.md +33 -0
  202. package/src/domains/agents/builtins/coder.md +31 -0
  203. package/src/domains/agents/builtins/context-bootstrap.md +38 -0
  204. package/src/domains/agents/builtins/debugger.md +30 -0
  205. package/src/domains/agents/builtins/documenter.md +31 -0
  206. package/src/domains/agents/builtins/git-master.md +30 -0
  207. package/src/domains/agents/builtins/provenance.md +30 -0
  208. package/src/domains/agents/builtins/researcher.md +71 -0
  209. package/src/domains/agents/builtins/scout.md +42 -0
  210. package/src/domains/agents/builtins/tester.md +31 -0
  211. package/src/domains/agents/builtins/verifier.md +30 -0
  212. package/src/domains/agents/builtins/wiki-writer.md +41 -0
  213. package/src/domains/agents/fleets/build-review.md +34 -0
  214. package/src/domains/agents/fleets/build-test.md +35 -0
  215. package/src/domains/agents/fleets/sdlc.md +86 -0
  216. package/src/domains/prompts/fragments/identity/clio-worker.md +11 -0
  217. package/src/domains/prompts/fragments/identity/clio.md +26 -0
  218. package/src/domains/prompts/fragments/operating/contract.md +64 -0
  219. package/src/domains/prompts/fragments/safety/auto-edit.md +14 -0
  220. package/src/domains/prompts/fragments/safety/full-auto.md +14 -0
  221. package/src/domains/prompts/fragments/safety/read-only.md +13 -0
  222. package/src/domains/prompts/fragments/safety/suggest.md +13 -0
  223. package/src/domains/prompts/fragments/wiki/page.md +75 -0
  224. package/src/domains/prompts/fragments/wiki/plan.md +48 -0
  225. package/src/domains/providers/models/cloud-models/alcf.yaml +40 -0
  226. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +993 -0
@@ -0,0 +1,324 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>ALCF Inference Provider Blueprint (v0.3.0)</title>
7
+ <link rel="stylesheet" href="shared.css">
8
+ <style>
9
+ /* Flow diagram custom styles */
10
+ .flow-diagram {
11
+ margin: 1.5rem 0;
12
+ padding: 1.5rem;
13
+ background: rgba(0, 0, 0, 0.3);
14
+ border: 1px solid var(--border-card);
15
+ border-radius: 12px;
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: 1rem;
19
+ }
20
+ .flow-step {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: 1rem;
24
+ padding: 0.75rem;
25
+ border-radius: 8px;
26
+ background: rgba(255, 255, 255, 0.02);
27
+ border: 1px solid transparent;
28
+ transition: all 0.25s;
29
+ }
30
+ .flow-step.active {
31
+ background: rgba(0, 212, 219, 0.05);
32
+ border-color: rgba(0, 212, 219, 0.3);
33
+ }
34
+ .step-number {
35
+ width: 28px;
36
+ height: 28px;
37
+ border-radius: 50%;
38
+ background: rgba(255, 255, 255, 0.05);
39
+ border: 1px solid var(--border-card);
40
+ display: inline-flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ font-weight: 700;
44
+ font-size: 0.85rem;
45
+ color: var(--text-muted);
46
+ }
47
+ .flow-step.active .step-number {
48
+ background: var(--color-cyan);
49
+ color: #090d16;
50
+ border-color: transparent;
51
+ box-shadow: 0 0 10px rgba(0, 212, 219, 0.4);
52
+ }
53
+ .step-details h4 {
54
+ font-size: 0.9rem;
55
+ font-weight: 700;
56
+ color: #fff;
57
+ }
58
+ .step-details p {
59
+ font-size: 0.775rem;
60
+ color: var(--text-muted);
61
+ margin: 0;
62
+ }
63
+
64
+ .oauth-btn {
65
+ background: var(--color-cyan);
66
+ color: #090d16;
67
+ border: none;
68
+ padding: 0.5rem 1rem;
69
+ border-radius: 6px;
70
+ font-size: 0.85rem;
71
+ font-weight: 600;
72
+ cursor: pointer;
73
+ transition: background 0.2s;
74
+ }
75
+ .oauth-btn:hover {
76
+ background: #00b4bc;
77
+ }
78
+ </style>
79
+ </head>
80
+ <body>
81
+ <div class="container">
82
+ <header>
83
+ <div class="header-left">
84
+ <div class="header-logo">
85
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color: var(--color-cyan);"><title>Icon</title>
86
+ <path d="M12 2L2 7L12 12L22 7L12 2Z"></path>
87
+ <path d="M2 17L12 22L22 17"></path>
88
+ <path d="M2 12L12 17L22 12"></path>
89
+ </svg>
90
+ </div>
91
+ <div class="header-title-wrapper">
92
+ <h1>ALCF Inference Provider</h1>
93
+ <p>Argonne Sophia and Metis gateway configuration backed by Globus OAuth</p>
94
+ <div class="meta-chips-row">
95
+ <span class="chip">Source: docs/alcf-provider.md</span>
96
+ <span class="chip chip-orange">clio-coder docs alcf</span>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ <div class="header-right">
101
+ <span class="version-badge">Clio Coder v0.3.0</span>
102
+ <a href="index.html" class="back-btn">
103
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><title>Icon</title><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>
104
+ Dashboard Hub
105
+ </a>
106
+ </div>
107
+ </header>
108
+
109
+ <div class="page-layout-grid">
110
+ <nav class="sidebar" aria-label="Table of Contents">
111
+ <div class="toc-container">
112
+ <div class="toc-title">On This Page</div>
113
+ <ul class="toc-list">
114
+ <!-- Dynamically populated -->
115
+ </ul>
116
+ </div>
117
+ </nav>
118
+
119
+ <main>
120
+ <div class="glass-card">
121
+ <h2>Overview Summary</h2>
122
+ <p>Clio connects directly to Argonne National Laboratory's ALCF inference gateways Sophia and Metis. This connection uses an OpenAI-compatible API target authenticated via Globus OAuth client PKCE flows.</p>
123
+ </div>
124
+
125
+ <div class="tabs-nav">
126
+ <button type="button" class="tab-btn active" onclick="switchTab('configurator')">
127
+ Target Configurator
128
+ </button>
129
+ <button type="button" class="tab-btn" onclick="switchTab('oauth-flow')">
130
+ Globus OAuth Flow
131
+ </button>
132
+ <button type="button" class="tab-btn" onclick="switchTab('reference')">
133
+ Technical Specs
134
+ </button>
135
+ </div>
136
+
137
+ <!-- Tab 1: Configurator -->
138
+ <div class="tab-pane active" id="pane-configurator">
139
+ <div class="blueprint-layout">
140
+ <div class="specs-col">
141
+ <div class="glass-card">
142
+ <h3>Select Gateway Target</h3>
143
+ <p>Choose an ALCF supercomputing cluster to generate configure commands.</p>
144
+
145
+ <div class="form-group">
146
+ <label for="clusterSelect">Cluster Gateway</label>
147
+ <select id="clusterSelect" onchange="updateConfigSim()">
148
+ <option value="sophia">Sophia Cluster (uses /resource_server/sophia/vllm/v1)</option>
149
+ <option value="metis">Metis Cluster (uses /resource_server/metis/api/v1)</option>
150
+ </select>
151
+ </div>
152
+
153
+ <div class="form-group">
154
+ <label for="modelSelect">Target Model</label>
155
+ <select id="modelSelect" onchange="updateConfigSim()">
156
+ <option value="openai/gpt-oss-120b">openai/gpt-oss-120b (Sophia vLLM id)</option>
157
+ <option value="gpt-oss-120b">gpt-oss-120b (Metis bare id)</option>
158
+ <option value="custom">Custom model ID...</option>
159
+ </select>
160
+ </div>
161
+
162
+ <div id="customModelGroup" class="form-group" style="display: none;">
163
+ <label for="customModelText">Custom Model ID</label>
164
+ <input type="text" id="customModelText" value="openai/gpt-custom-model" oninput="updateConfigSim()">
165
+ </div>
166
+
167
+ <div class="form-group">
168
+ <label for="maxTokens">Max Tokens Limit</label>
169
+ <input type="number" id="maxTokens" value="4096" min="512" max="16384" step="512" oninput="updateConfigSim()">
170
+ </div>
171
+ </div>
172
+ </div>
173
+
174
+ <div class="specs-col">
175
+ <div class="glass-card">
176
+ <h3>Generated Configuration Commands</h3>
177
+ <p>Run these commands inside your Clio Coder session to login and save the target profile:</p>
178
+
179
+ <pre><code id="generatedCommand1">clio-coder auth login alcf</code></pre>
180
+ <pre><code id="generatedCommand2">clio-coder configure ...</code></pre>
181
+ <pre><code id="generatedCommand3">clio-coder targets use alcf-sophia</code></pre>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+
187
+ <!-- Tab 2: OAuth Flow -->
188
+ <div class="tab-pane" id="pane-oauth-flow">
189
+ <div class="glass-card">
190
+ <h3>Globus OAuth Paste-Code Login</h3>
191
+ <p>Clio's interactive SSH-friendly OAuth PKCE loop sequence:</p>
192
+
193
+ <div class="flow-diagram">
194
+ <div class="flow-step active" id="step1">
195
+ <span class="step-number">1</span>
196
+ <div class="step-details">
197
+ <h4>Launch Authentication Command</h4>
198
+ <p>Operator executes: <code>clio-coder auth login alcf</code></p>
199
+ </div>
200
+ </div>
201
+ <div class="flow-step" id="step2">
202
+ <span class="step-number">2</span>
203
+ <div class="step-details">
204
+ <h4>Authorize via Browser</h4>
205
+ <p>Clio prints a secure Globus URL. Click to approve and log in through ANL portal.</p>
206
+ <button type="button" class="oauth-btn" style="margin-top: 0.5rem;" onclick="simulateOAuthStep(2)">Simulate ANL Globus Portal Login</button>
207
+ </div>
208
+ </div>
209
+ <div class="flow-step" id="step3">
210
+ <span class="step-number">3</span>
211
+ <div class="step-details">
212
+ <h4>Paste Authorization Code</h4>
213
+ <p>Globus displays a code. Paste it back into the Clio prompt: <input type="text" id="pasteCodeSim" placeholder="e.g. abcd1234ef..." style="width:150px; padding:0.25rem 0.5rem; font-size:0.8rem; display:inline-block; vertical-align:middle; margin-left:0.5rem;" oninput="simulateOAuthStep(3)"></p>
214
+ </div>
215
+ </div>
216
+ <div class="flow-step" id="step4">
217
+ <span class="step-number">4</span>
218
+ <div class="step-details">
219
+ <h4>Token Resolved &amp; Saved</h4>
220
+ <p>Clio exchanges code for OAuth token, verifies it, and stores the encrypted credential locally.</p>
221
+ </div>
222
+ </div>
223
+ </div>
224
+ </div>
225
+ </div>
226
+
227
+ <!-- Tab 3: Reference -->
228
+ <div class="tab-pane" id="pane-reference">
229
+ <div class="glass-card">
230
+ <h3>Configure Details</h3>
231
+ <p>Sophia currently maps to <code>/resource_server/sophia/vllm/v1</code> and Metis maps to <code>/resource_server/metis/api/v1</code>. Wire model IDs must be exact; Metis uses bare names while Sophia uses <code>openai/</code> prefixes.</p>
232
+
233
+ <h3>Implementation files</h3>
234
+ <ul>
235
+ <li><code>src/engine/alcf-oauth.ts</code>: PKCE pasting flows</li>
236
+ <li><code>src/domains/providers/runtimes/cloud/alcf.ts</code>: Sophia/Metis discovery models</li>
237
+ </ul>
238
+
239
+ <h3 style="margin-top:1.5rem;">Chat Templates Exception</h3>
240
+ <p>ALCF gateways reject custom client-side <code>chat_template_kwargs</code>. Clio automatically handles this by flagging target profiles with <code>clio.chatTemplateKwargsUnsupported</code>, which strips this field from request bodies before transmitting.</p>
241
+ </div>
242
+ </div>
243
+
244
+ <!-- Related Navigation -->
245
+ <nav class="related-nav" aria-label="Related Pages">
246
+ <a href="lifecycle_blueprint.html" class="nav-link-card">
247
+ <span class="nav-label">Previous Blueprint</span>
248
+ <span class="nav-title">Installation &amp; Lifecycle</span>
249
+ </a>
250
+ <a href="environment_blueprint.html" class="nav-link-card next">
251
+ <span class="nav-label">Next Blueprint</span>
252
+ <span class="nav-title">Environment Variables</span>
253
+ </a>
254
+ </nav>
255
+ </main>
256
+ </div>
257
+
258
+ <footer>
259
+ <p>Clio Coder ALCF Inference Blueprint &bull; Version 0.3.0 &bull; Gnosis Research Center</p>
260
+ </footer>
261
+ </div>
262
+
263
+ <script src="shared.js"></script>
264
+ <script>
265
+ function updateConfigSim() {
266
+ const cluster = document.getElementById("clusterSelect").value;
267
+ const modelMode = document.getElementById("modelSelect").value;
268
+ const customModelGroup = document.getElementById("customModelGroup");
269
+
270
+ let modelId = modelMode;
271
+ if (modelMode === "custom") {
272
+ customModelGroup.style.display = "block";
273
+ modelId = document.getElementById("customModelText").value;
274
+ } else {
275
+ customModelGroup.style.display = "none";
276
+ // Auto select appropriate model based on cluster
277
+ if (cluster === "sophia" && modelMode === "gpt-oss-120b") {
278
+ document.getElementById("modelSelect").value = "openai/gpt-oss-120b";
279
+ modelId = "openai/gpt-oss-120b";
280
+ } else if (cluster === "metis" && modelMode === "openai/gpt-oss-120b") {
281
+ document.getElementById("modelSelect").value = "gpt-oss-120b";
282
+ modelId = "gpt-oss-120b";
283
+ }
284
+ }
285
+
286
+ const tokens = document.getElementById("maxTokens").value;
287
+ const targetId = `alcf-${cluster}`;
288
+ const url = cluster === "sophia"
289
+ ? "https://inference-api.alcf.anl.gov/resource_server/sophia/vllm/v1"
290
+ : "https://inference-api.alcf.anl.gov/resource_server/metis/api/v1";
291
+
292
+ document.getElementById("generatedCommand2").innerText = `clio-coder configure \\\n --id ${targetId} \\\n --runtime alcf \\\n --url ${url} \\\n --model ${modelId} \\\n --max-tokens ${tokens}`;
293
+ document.getElementById("generatedCommand3").innerText = `clio-coder targets use ${targetId}`;
294
+
295
+ // Update TOC just in case
296
+ if (window.initTableOfContents) window.initTableOfContents();
297
+ }
298
+
299
+ let currentSimStep = 1;
300
+ function simulateOAuthStep(step) {
301
+ document.querySelectorAll(".flow-step").forEach(s => s.classList.remove("active"));
302
+
303
+ if (step === 2) {
304
+ document.getElementById("step2").classList.add("active");
305
+ } else if (step === 3) {
306
+ document.getElementById("step3").classList.add("active");
307
+ const val = document.getElementById("pasteCodeSim").value.trim();
308
+ if (val.length > 5) {
309
+ setTimeout(() => {
310
+ simulateOAuthStep(4);
311
+ }, 600);
312
+ }
313
+ } else if (step === 4) {
314
+ document.getElementById("step4").classList.add("active");
315
+ }
316
+ }
317
+
318
+ // Init
319
+ window.onload = () => {
320
+ updateConfigSim();
321
+ };
322
+ </script>
323
+ </body>
324
+ </html>