@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,723 @@
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>Clio Coder Lifecycle Operations Blueprint (v0.3.0)</title>
7
+
8
+ <style>
9
+ :root {
10
+ --bg-dark: #090d16;
11
+ --bg-grid: rgba(255, 255, 255, 0.02);
12
+ --bg-card: rgba(13, 20, 38, 0.45);
13
+ --bg-card-hover: rgba(20, 30, 58, 0.6);
14
+ --border-card: rgba(255, 255, 255, 0.08);
15
+ --border-card-hover: rgba(0, 240, 255, 0.3);
16
+ --text-main: #f3f4f6;
17
+ --text-muted: #9ca3af;
18
+ --text-dim: #6b7280;
19
+
20
+ --color-cyan: #00f0ff;
21
+ --color-cyan-rgb: 0, 240, 255;
22
+ --color-purple: #bd00ff;
23
+ --color-purple-rgb: 189, 0, 255;
24
+ --color-emerald: #10b981;
25
+ --color-emerald-rgb: 16, 185, 129;
26
+ --color-amber: #f59e0b;
27
+ --color-amber-rgb: 245, 158, 11;
28
+ --color-rose: #ef4444;
29
+ --color-rose-rgb: 239, 68, 68;
30
+
31
+ --gradient-main: linear-gradient(135deg, var(--color-cyan), var(--color-purple));
32
+ --shadow-glow: 0 0 25px rgba(0, 240, 255, 0.15);
33
+ --font-sans: "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", Arial, sans-serif;
34
+ --font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
35
+
36
+ --glass-blur: blur(12px);
37
+ }
38
+
39
+ * {
40
+ box-sizing: border-box;
41
+ margin: 0;
42
+ padding: 0;
43
+ }
44
+
45
+ body {
46
+ background-color: var(--bg-dark);
47
+ background-image:
48
+ radial-gradient(circle at 10% 20%, rgba(var(--color-cyan-rgb), 0.05) 0%, transparent 40%),
49
+ radial-gradient(circle at 90% 80%, rgba(var(--color-purple-rgb), 0.05) 0%, transparent 40%),
50
+ radial-gradient(circle at 50% 50%, #0d1527 0%, var(--bg-dark) 100%);
51
+ color: var(--text-main);
52
+ font-family: var(--font-sans);
53
+ min-height: 100vh;
54
+ line-height: 1.6;
55
+ overflow-x: hidden;
56
+ position: relative;
57
+ }
58
+
59
+ body::before {
60
+ content: '';
61
+ position: absolute;
62
+ inset: 0;
63
+ background-image: linear-gradient(var(--bg-grid) 1px, transparent 1px),
64
+ linear-gradient(90deg, var(--bg-grid) 1px, transparent 1px);
65
+ background-size: 40px 40px;
66
+ background-position: center top;
67
+ pointer-events: none;
68
+ z-index: 0;
69
+ opacity: 0.8;
70
+ }
71
+
72
+ .container {
73
+ max-width: 1400px;
74
+ margin: 0 auto;
75
+ padding: 2rem;
76
+ position: relative;
77
+ z-index: 1;
78
+ }
79
+
80
+ /* Header Styling */
81
+ header {
82
+ display: flex;
83
+ justify-content: space-between;
84
+ align-items: center;
85
+ margin-bottom: 2.5rem;
86
+ padding-bottom: 1.5rem;
87
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
88
+ }
89
+
90
+ .header-left {
91
+ display: flex;
92
+ align-items: center;
93
+ gap: 1rem;
94
+ }
95
+
96
+ .header-logo {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ width: 48px;
101
+ height: 48px;
102
+ background: rgba(255, 255, 255, 0.02);
103
+ border: 1px solid var(--border-card);
104
+ border-radius: 12px;
105
+ }
106
+
107
+ .header-logo svg {
108
+ width: 28px;
109
+ height: 28px;
110
+ }
111
+
112
+ .header-title-wrapper h1 {
113
+ font-size: 1.5rem;
114
+ font-weight: 800;
115
+ letter-spacing: -0.03em;
116
+ background: linear-gradient(to right, #ffffff, #c7d2fe, var(--color-cyan));
117
+ -webkit-background-clip: text;
118
+ -webkit-text-fill-color: transparent;
119
+ }
120
+
121
+ .header-title-wrapper p {
122
+ font-size: 0.825rem;
123
+ color: var(--text-muted);
124
+ }
125
+
126
+ .header-right {
127
+ display: flex;
128
+ align-items: center;
129
+ gap: 1rem;
130
+ }
131
+
132
+ .back-btn {
133
+ background: rgba(255, 255, 255, 0.03);
134
+ border: 1px solid var(--border-card);
135
+ color: var(--text-muted);
136
+ padding: 0.5rem 1rem;
137
+ border-radius: 8px;
138
+ font-size: 0.875rem;
139
+ font-weight: 600;
140
+ text-decoration: none;
141
+ display: inline-flex;
142
+ align-items: center;
143
+ gap: 0.5rem;
144
+ transition: all 0.2s;
145
+ }
146
+
147
+ .back-btn:hover {
148
+ background: rgba(255, 255, 255, 0.08);
149
+ color: var(--text-main);
150
+ border-color: rgba(var(--color-cyan-rgb), 0.3);
151
+ }
152
+
153
+ .version-badge {
154
+ background: rgba(0, 240, 255, 0.08);
155
+ border: 1px solid rgba(0, 240, 255, 0.25);
156
+ color: var(--color-cyan);
157
+ padding: 0.35rem 0.75rem;
158
+ border-radius: 50px;
159
+ font-size: 0.75rem;
160
+ font-weight: 600;
161
+ font-family: var(--font-mono);
162
+ }
163
+
164
+ /* Tabs Navigation */
165
+ .tabs-nav {
166
+ display: flex;
167
+ gap: 0.75rem;
168
+ margin-bottom: 2rem;
169
+ }
170
+
171
+ .tab-btn {
172
+ background: rgba(255, 255, 255, 0.03);
173
+ border: 1px solid var(--border-card);
174
+ color: var(--text-muted);
175
+ padding: 0.6rem 1.25rem;
176
+ border-radius: 8px;
177
+ font-size: 0.875rem;
178
+ font-weight: 600;
179
+ cursor: pointer;
180
+ display: flex;
181
+ align-items: center;
182
+ gap: 0.5rem;
183
+ transition: all 0.2s;
184
+ }
185
+
186
+ .tab-btn:hover {
187
+ background: rgba(255, 255, 255, 0.06);
188
+ color: var(--text-main);
189
+ }
190
+
191
+ .tab-btn.active {
192
+ background: var(--gradient-main);
193
+ color: #090d16;
194
+ border-color: transparent;
195
+ box-shadow: 0 4px 15px rgba(var(--color-cyan-rgb), 0.25);
196
+ }
197
+
198
+ /* Content Layout */
199
+ .tab-pane {
200
+ display: none;
201
+ animation: fadeIn 0.3s ease-out forwards;
202
+ }
203
+
204
+ .tab-pane.active {
205
+ display: block;
206
+ }
207
+
208
+ @keyframes fadeIn {
209
+ from { opacity: 0; transform: translateY(8px); }
210
+ to { opacity: 1; transform: translateY(0); }
211
+ }
212
+
213
+ /* Split layout */
214
+ .blueprint-layout {
215
+ display: grid;
216
+ grid-template-columns: 1fr 1.1fr;
217
+ gap: 2rem;
218
+ align-items: start;
219
+ }
220
+
221
+ @media (max-width: 1100px) {
222
+ .blueprint-layout {
223
+ grid-template-columns: 1fr;
224
+ }
225
+ }
226
+
227
+ .glass-card {
228
+ background: var(--bg-card);
229
+ border: 1px solid var(--border-card);
230
+ border-radius: 16px;
231
+ padding: 1.75rem;
232
+ margin-bottom: 2rem;
233
+ backdrop-filter: var(--glass-blur);
234
+ box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3);
235
+ }
236
+
237
+ .glass-card h2 {
238
+ font-size: 1.25rem;
239
+ font-weight: 700;
240
+ color: #ffffff;
241
+ margin-bottom: 1.25rem;
242
+ display: flex;
243
+ align-items: center;
244
+ gap: 0.5rem;
245
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
246
+ padding-bottom: 0.75rem;
247
+ }
248
+
249
+ .glass-card h2 svg {
250
+ width: 18px;
251
+ height: 18px;
252
+ color: var(--color-cyan);
253
+ }
254
+
255
+ .glass-card p {
256
+ font-size: 0.925rem;
257
+ color: var(--text-muted);
258
+ margin-bottom: 1rem;
259
+ }
260
+
261
+ /* Form selectors */
262
+ .form-group {
263
+ margin-bottom: 1rem;
264
+ }
265
+
266
+ .form-group label {
267
+ display: block;
268
+ font-size: 0.8rem;
269
+ font-weight: 600;
270
+ color: var(--text-muted);
271
+ margin-bottom: 0.5rem;
272
+ text-transform: uppercase;
273
+ letter-spacing: 0.05em;
274
+ }
275
+
276
+ .form-row {
277
+ display: grid;
278
+ grid-template-columns: 1fr 1fr;
279
+ gap: 1rem;
280
+ }
281
+
282
+ select, input {
283
+ width: 100%;
284
+ background: rgba(9, 13, 22, 0.7);
285
+ border: 1px solid var(--border-card);
286
+ border-radius: 8px;
287
+ padding: 0.65rem 0.85rem;
288
+ color: #fff;
289
+ font-family: var(--font-sans);
290
+ font-size: 0.9rem;
291
+ outline: none;
292
+ }
293
+
294
+ /* Path outcomes panel */
295
+ .resolved-paths-panel {
296
+ background: rgba(0,0,0,0.3);
297
+ border: 1px solid var(--border-card);
298
+ border-radius: 8px;
299
+ padding: 1rem;
300
+ margin-top: 1.25rem;
301
+ }
302
+
303
+ .path-row {
304
+ margin-bottom: 0.75rem;
305
+ font-size: 0.875rem;
306
+ }
307
+
308
+ .path-row:last-child {
309
+ margin-bottom: 0;
310
+ }
311
+
312
+ .path-row strong {
313
+ display: block;
314
+ color: var(--color-cyan);
315
+ }
316
+
317
+ .path-row span {
318
+ font-family: var(--font-mono);
319
+ font-size: 0.8rem;
320
+ color: #fff;
321
+ word-break: break-all;
322
+ }
323
+
324
+ /* Boot console */
325
+ .boot-console {
326
+ background: #020408;
327
+ border: 1px solid var(--border-card);
328
+ border-radius: 8px;
329
+ padding: 1rem;
330
+ font-family: var(--font-mono);
331
+ font-size: 0.8rem;
332
+ height: 180px;
333
+ overflow-y: auto;
334
+ white-space: pre-wrap;
335
+ color: var(--color-emerald);
336
+ box-shadow: inset 0 2px 10px rgba(0,0,0,0.8);
337
+ margin-top: 1rem;
338
+ }
339
+
340
+ .action-btn {
341
+ width: 100%;
342
+ background: var(--gradient-main);
343
+ color: #090d16;
344
+ border: none;
345
+ padding: 0.65rem;
346
+ border-radius: 8px;
347
+ font-weight: 700;
348
+ font-family: var(--font-sans);
349
+ cursor: pointer;
350
+ transition: opacity 0.2s;
351
+ }
352
+
353
+ .action-btn:hover {
354
+ opacity: 0.9;
355
+ }
356
+
357
+ /* Ref styling */
358
+ .ref-table {
359
+ width: 100%;
360
+ border-collapse: collapse;
361
+ margin: 1.5rem 0;
362
+ font-size: 0.9rem;
363
+ }
364
+
365
+ .ref-table th, .ref-table td {
366
+ padding: 0.65rem 0.85rem;
367
+ border: 1px solid var(--border-card);
368
+ text-align: left;
369
+ }
370
+
371
+ .ref-table th {
372
+ background: rgba(255,255,255,0.03);
373
+ }
374
+
375
+ pre {
376
+ background: rgba(0,0,0,0.3);
377
+ border: 1px solid var(--border-card);
378
+ border-radius: 8px;
379
+ padding: 1rem;
380
+ overflow-x: auto;
381
+ margin: 1rem 0;
382
+ }
383
+
384
+ code {
385
+ font-family: var(--font-mono);
386
+ font-size: 0.85rem;
387
+ }
388
+
389
+ /* Footer */
390
+ footer {
391
+ text-align: center;
392
+ margin-top: 4rem;
393
+ padding-top: 2rem;
394
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
395
+ color: var(--text-dim);
396
+ font-size: 0.875rem;
397
+ }
398
+ </style>
399
+ </head>
400
+ <body>
401
+ <div class="container">
402
+ <header>
403
+ <div class="header-left">
404
+ <div class="header-logo">
405
+ <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>
406
+ <path d="M12 2L2 7L12 12L22 7L12 2Z"></path>
407
+ <path d="M2 17L12 22L22 17"></path>
408
+ <path d="M2 12L12 17L22 12"></path>
409
+ </svg>
410
+ </div>
411
+ <div class="header-title-wrapper">
412
+ <h1>Clio Coder Installation &amp; Lifecycle</h1>
413
+ <p>Directory path setups, credentials security, and installation operations</p>
414
+ </div>
415
+ </div>
416
+ <div class="header-right">
417
+ <span class="version-badge">Clio Coder v0.3.0</span>
418
+ <a href="index.html" class="back-btn">
419
+ <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>
420
+ Dashboard Hub
421
+ </a>
422
+ </div>
423
+ </header>
424
+
425
+ <div class="tabs-nav">
426
+ <button type="button" class="tab-btn active" onclick="switchTab('interactive')">
427
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>Icon</title><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
428
+ Interactive Path Resolver &amp; Bootstrap
429
+ </button>
430
+ <button type="button" class="tab-btn" onclick="switchTab('reference')">
431
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>Icon</title><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
432
+ Full Technical Reference
433
+ </button>
434
+ </div>
435
+
436
+ <!-- TAB 1: INTERACTIVE -->
437
+ <main class="tab-pane active" id="pane-interactive">
438
+ <div class="blueprint-layout">
439
+
440
+ <!-- Left: Path Resolver inputs -->
441
+ <div class="specs-col">
442
+ <div class="glass-card">
443
+ <h2>
444
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>Icon</title><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line></svg>
445
+ Platform path overrides
446
+ </h2>
447
+ <p>Simulate how environment variables redirect config, data, state, and cache folders.</p>
448
+
449
+ <div class="form-group">
450
+ <label for="platformSelect">Target OS</label>
451
+ <select id="platformSelect" onchange="resolvePaths()">
452
+ <option value="linux">Linux / Unix</option>
453
+ <option value="macos">macOS</option>
454
+ <option value="windows">Windows</option>
455
+ </select>
456
+ </div>
457
+
458
+ <div class="form-group">
459
+ <label for="clioHomeInput">CLIO_CODER_HOME (Unified override)</label>
460
+ <input type="text" id="clioHomeInput" value="" placeholder="e.g. /home/user/my-clio-home" oninput="resolvePaths()">
461
+ </div>
462
+
463
+ <div class="form-row">
464
+ <div class="form-group">
465
+ <label for="configDirInput">CLIO_CODER_CONFIG_DIR</label>
466
+ <input type="text" id="configDirInput" value="" placeholder="Default" oninput="resolvePaths()">
467
+ </div>
468
+ <div class="form-group">
469
+ <label for="dataDirInput">CLIO_CODER_DATA_DIR</label>
470
+ <input type="text" id="dataDirInput" value="" placeholder="Default" oninput="resolvePaths()">
471
+ </div>
472
+ </div>
473
+
474
+ <div class="form-row">
475
+ <div class="form-group">
476
+ <label for="stateDirInput">CLIO_CODER_STATE_DIR</label>
477
+ <input type="text" id="stateDirInput" value="" placeholder="Default" oninput="resolvePaths()">
478
+ </div>
479
+ <div class="form-group">
480
+ <label for="cacheDirInput">CLIO_CODER_CACHE_DIR</label>
481
+ <input type="text" id="cacheDirInput" value="" placeholder="Default" oninput="resolvePaths()">
482
+ </div>
483
+ </div>
484
+
485
+ <div class="resolved-paths-panel">
486
+ <div class="path-row">
487
+ <strong>Config Directory (settings/keys)</strong>
488
+ <span id="resolvedConfig">~/.config/clio-coder</span>
489
+ </div>
490
+ <div class="path-row">
491
+ <strong>Data Directory (memory/evidence/evals)</strong>
492
+ <span id="resolvedData">~/.local/share/clio-coder</span>
493
+ </div>
494
+ <div class="path-row">
495
+ <strong>State Directory (sessions/audit/receipts)</strong>
496
+ <span id="resolvedState">~/.local/state/clio-coder</span>
497
+ </div>
498
+ <div class="path-row">
499
+ <strong>Cache Directory</strong>
500
+ <span id="resolvedCache">~/.cache/clio-coder</span>
501
+ </div>
502
+ </div>
503
+ </div>
504
+ </div>
505
+
506
+ <!-- Right: Bootstrap Console -->
507
+ <div class="specs-col">
508
+ <div class="glass-card">
509
+ <h2>
510
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><title>Icon</title><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
511
+ Bootstrap Initialization Simulator
512
+ </h2>
513
+ <p>Run the initialization sequence to test directory trees creation and credentials file permission locks.</p>
514
+
515
+ <button type="button" class="action-btn" onclick="runBootstrapSim()">Run initializeClioHome() Simulation</button>
516
+
517
+ <div class="boot-console" id="bootConsole">Console ready. Click button to bootstrap.</div>
518
+ </div>
519
+ </div>
520
+
521
+ </div>
522
+ </main>
523
+
524
+ <!-- TAB 2: TECHNICAL REFERENCE -->
525
+ <main class="tab-pane" id="pane-reference">
526
+ <div class="glass-card">
527
+ <h2>Clio Coder Platform Specifications</h2>
528
+
529
+ <h3 style="margin: 1.5rem 0 0.5rem 0; color:#fff;">Platform Path Defaults</h3>
530
+ <table class="ref-table">
531
+ <thead>
532
+ <tr>
533
+ <th>OS</th>
534
+ <th>Config Directory</th>
535
+ <th>Data Directory</th>
536
+ <th>State Directory</th>
537
+ <th>Cache Directory</th>
538
+ </tr>
539
+ </thead>
540
+ <tbody>
541
+ <tr>
542
+ <td>Linux / Unix</td>
543
+ <td><code>~/.config/clio-coder</code></td>
544
+ <td><code>~/.local/share/clio-coder</code></td>
545
+ <td><code>~/.local/state/clio-coder</code></td>
546
+ <td><code>~/.cache/clio-coder</code></td>
547
+ </tr>
548
+ <tr>
549
+ <td>macOS</td>
550
+ <td><code>~/Library/Application Support/clio-coder/config</code></td>
551
+ <td><code>~/Library/Application Support/clio-coder/data</code></td>
552
+ <td><code>~/Library/Application Support/clio-coder/state</code></td>
553
+ <td><code>~/Library/Caches/clio-coder</code></td>
554
+ </tr>
555
+ <tr>
556
+ <td>Windows</td>
557
+ <td><code>%APPDATA%\clio-coder\config</code></td>
558
+ <td><code>%APPDATA%\clio-coder\data</code></td>
559
+ <td><code>%LOCALAPPDATA%\clio-coder\state</code></td>
560
+ <td><code>%LOCALAPPDATA%\clio-coder\cache</code></td>
561
+ </tr>
562
+ </tbody>
563
+ </table>
564
+
565
+ <h3 style="margin: 1.5rem 0 0.5rem 0; color:#fff;">File &amp; Permissions Matrix</h3>
566
+ <table class="ref-table">
567
+ <thead>
568
+ <tr>
569
+ <th>File Name</th>
570
+ <th>Role</th>
571
+ <th>Permissions</th>
572
+ <th>Removal Condition</th>
573
+ </tr>
574
+ </thead>
575
+ <tbody>
576
+ <tr>
577
+ <td><code>settings.yaml</code></td>
578
+ <td> Runtimes/Theme configurations </td>
579
+ <td><code>0o644</code></td>
580
+ <td>Uninstall Wiped</td>
581
+ </tr>
582
+ <tr>
583
+ <td><code>credentials.yaml</code></td>
584
+ <td>API Keys/Tokens</td>
585
+ <td><code>0o600</code> (Strict owner rw)</td>
586
+ <td>Uninstall Wiped</td>
587
+ </tr>
588
+ <tr>
589
+ <td><code>install.json</code></td>
590
+ <td>Platform Installation version state</td>
591
+ <td><code>0o644</code></td>
592
+ <td>Uninstall Wiped</td>
593
+ </tr>
594
+ <tr>
595
+ <td><code>audit/*.jsonl</code></td>
596
+ <td> Daily safety audit logs </td>
597
+ <td><code>0o644</code></td>
598
+ <td>Uninstall Wiped</td>
599
+ </tr>
600
+ </tbody>
601
+ </table>
602
+
603
+ <h3 style="margin: 1.5rem 0 0.5rem 0; color:#fff;">Doctor Repair Semantics</h3>
604
+ <p><code>clio-coder doctor</code> is read-only. <code>clio-coder doctor --fix</code> creates missing structure and templates, repairs credential permissions, and refreshes install metadata. Settings are validated directly against the current schema; <code>--fix</code> never rewrites removed keys or migrates an older settings file.</p>
605
+
606
+ <h3 style="margin: 1.5rem 0 0.5rem 0; color:#fff;">Durable symlink setup</h3>
607
+ <pre><code># checkout repo
608
+ git clone https://github.com/iowarp/clio-coder.git
609
+ cd clio-coder
610
+
611
+ # install and link
612
+ npm run install:local
613
+ hash -r
614
+ clio-coder --version</code></pre>
615
+ </div>
616
+ </main>
617
+
618
+ <footer>
619
+ <p>Clio Coder Lifecycle spec &bull; Version 0.3.0</p>
620
+ </footer>
621
+ </div>
622
+
623
+ <script>
624
+ // Tab switching
625
+ function switchTab(tabId) {
626
+ document.querySelectorAll('.tab-btn').forEach(btn => { btn.classList.remove('active'); });
627
+ document.querySelectorAll('.tab-pane').forEach(pane => { pane.classList.remove('active'); });
628
+
629
+ if (tabId === 'interactive') {
630
+ document.querySelector('.tab-btn:nth-child(1)').classList.add('active');
631
+ document.getElementById('pane-interactive').classList.add('active');
632
+ } else {
633
+ document.querySelector('.tab-btn:nth-child(2)').classList.add('active');
634
+ document.getElementById('pane-reference').classList.add('active');
635
+ }
636
+ }
637
+
638
+ function resolvePaths() {
639
+ const platform = document.getElementById('platformSelect').value;
640
+ const clioHome = document.getElementById('clioHomeInput').value.trim();
641
+ const configOverride = document.getElementById('configDirInput').value.trim();
642
+ const dataOverride = document.getElementById('dataDirInput').value.trim();
643
+ const stateOverride = document.getElementById('stateDirInput').value.trim();
644
+ const cacheOverride = document.getElementById('cacheDirInput').value.trim();
645
+
646
+ let defConfig = '';
647
+ let defData = '';
648
+ let defState = '';
649
+ let defCache = '';
650
+
651
+ if (platform === 'linux') {
652
+ defConfig = '/home/user/.config/clio-coder';
653
+ defData = '/home/user/.local/share/clio-coder';
654
+ defState = '/home/user/.local/state/clio-coder';
655
+ defCache = '/home/user/.cache/clio-coder';
656
+ } else if (platform === 'macos') {
657
+ defConfig = '/Users/user/Library/Application Support/clio-coder/config';
658
+ defData = '/Users/user/Library/Application Support/clio-coder/data';
659
+ defState = '/Users/user/Library/Application Support/clio-coder/state';
660
+ defCache = '/Users/user/Library/Caches/clio-coder';
661
+ } else {
662
+ defConfig = 'C:\\Users\\user\\AppData\\Roaming\\clio-coder\\config';
663
+ defData = 'C:\\Users\\user\\AppData\\Roaming\\clio-coder\\data';
664
+ defState = 'C:\\Users\\user\\AppData\\Local\\clio-coder\\state';
665
+ defCache = 'C:\\Users\\user\\AppData\\Local\\clio-coder\\cache';
666
+ }
667
+
668
+ // apply overrides
669
+ const finalConfig = configOverride || (clioHome ? `${clioHome}/config` : defConfig);
670
+ const finalData = dataOverride || (clioHome ? `${clioHome}/data` : defData);
671
+ const finalState = stateOverride || (clioHome ? `${clioHome}/state` : defState);
672
+ const finalCache = cacheOverride || (clioHome ? `${clioHome}/cache` : defCache);
673
+
674
+ document.getElementById('resolvedConfig').innerText = finalConfig;
675
+ document.getElementById('resolvedData').innerText = finalData;
676
+ document.getElementById('resolvedState').innerText = finalState;
677
+ document.getElementById('resolvedCache').innerText = finalCache;
678
+ }
679
+
680
+ function runBootstrapSim() {
681
+ const consoleEl = document.getElementById('bootConsole');
682
+ const conf = document.getElementById('resolvedConfig').innerText;
683
+ const data = document.getElementById('resolvedData').innerText;
684
+ const state = document.getElementById('resolvedState').innerText;
685
+ const cache = document.getElementById('resolvedCache').innerText;
686
+
687
+ consoleEl.innerHTML = `[BOOT] Calling initializeClioHome()...`;
688
+
689
+ setTimeout(() => {
690
+ consoleEl.innerHTML += `\n[BOOT] Resolving config root: ${conf}`;
691
+ consoleEl.innerHTML += `\n[BOOT] Resolving data root: ${data}`;
692
+ consoleEl.innerHTML += `\n[BOOT] Resolving state root: ${state}`;
693
+ consoleEl.innerHTML += `\n[BOOT] Resolving cache root: ${cache}`;
694
+ }, 300);
695
+
696
+ setTimeout(() => {
697
+ consoleEl.innerHTML += `\n[FS] Creating directory tree structure...`;
698
+ consoleEl.innerHTML += `\n[FS] -> ${data}/memory/ (rw-r--r--)`;
699
+ consoleEl.innerHTML += `\n[FS] -> ${data}/evidence/ (rw-r--r--)`;
700
+ consoleEl.innerHTML += `\n[FS] -> ${state}/sessions/ (rw-r--r--)`;
701
+ consoleEl.innerHTML += `\n[FS] -> ${state}/audit/ (rw-r--r--)`;
702
+ consoleEl.innerHTML += `\n[FS] -> ${state}/receipts/ (rw-r--r--)`;
703
+ }, 600);
704
+
705
+ setTimeout(() => {
706
+ consoleEl.innerHTML += `\n[SETTINGS] settings.yaml not found. Deploying default template...`;
707
+ consoleEl.innerHTML += `\n[SECURITY] credentials.yaml not found. Creating locked credential segment...`;
708
+ consoleEl.innerHTML += `\n[SECURITY] chmod 0o600 ${conf}/credentials.yaml (Owner RW only)`;
709
+ }, 1000);
710
+
711
+ setTimeout(() => {
712
+ consoleEl.innerHTML += `\n[METADATA] Writing ${state}/install.json: { version: "0.3.0", node: "v22.19.0" }`;
713
+ consoleEl.innerHTML += `\n[BOOT] initializeClioHome() completed successfully.`;
714
+ }, 1400);
715
+ }
716
+
717
+ // Init
718
+ window.onload = () => {
719
+ resolvePaths();
720
+ };
721
+ </script>
722
+ </body>
723
+ </html>