@open-agent-toolkit/cli 0.2.20 → 0.2.22
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/assets/docs/workflows/projects/artifacts.md +1 -1
- package/assets/docs/workflows/skills/explainer-kit.md +188 -23
- package/assets/docs/workflows/skills/index.md +1 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/explainer-kit/SKILL.md +87 -25
- package/assets/skills/explainer-kit/briefs/deep-dive.md +35 -0
- package/assets/skills/explainer-kit/briefs/engineer-tour.md +45 -0
- package/assets/skills/explainer-kit/briefs/program-recap.md +41 -0
- package/assets/skills/explainer-kit/briefs/project-explainer.md +38 -0
- package/assets/skills/explainer-kit/briefs/project-page.md +38 -0
- package/assets/skills/explainer-kit/briefs/project-recap.md +47 -0
- package/assets/skills/explainer-kit/briefs/supporting-diagram.md +28 -0
- package/assets/skills/explainer-kit/briefs/walkthrough-deck.md +35 -0
- package/assets/skills/explainer-kit/examples/project-recap/content.md +57 -14
- package/assets/skills/explainer-kit/examples/project-recap/fact-base.json +104 -0
- package/assets/skills/explainer-kit/examples/project-recap/fact-base.md +26 -4
- package/assets/skills/explainer-kit/recipes/engineer-tour.json +27 -10
- package/assets/skills/explainer-kit/recipes/program-recap.json +35 -11
- package/assets/skills/explainer-kit/recipes/project-explainer.json +27 -10
- package/assets/skills/explainer-kit/recipes/project-recap.json +43 -11
- package/assets/skills/explainer-kit/references/contracts.md +45 -19
- package/assets/skills/explainer-kit/schemas/author-request.v2.schema.json +41 -0
- package/assets/skills/explainer-kit/schemas/author-result.v2.schema.json +52 -0
- package/assets/skills/explainer-kit/scripts/lib/browser-runtime.mjs +442 -0
- package/assets/skills/explainer-kit/scripts/lib/content-approval.mjs +223 -10
- package/assets/skills/explainer-kit/scripts/lib/contracts.mjs +28 -43
- package/assets/skills/explainer-kit/scripts/lib/diagram.mjs +237 -0
- package/assets/skills/explainer-kit/scripts/lib/html-safety.mjs +687 -0
- package/assets/skills/explainer-kit/scripts/lib/markdown.mjs +414 -0
- package/assets/skills/explainer-kit/scripts/lib/qa.mjs +313 -14
- package/assets/skills/explainer-kit/scripts/lib/recipes.mjs +314 -41
- package/assets/skills/explainer-kit/scripts/lib/records.mjs +61 -0
- package/assets/skills/explainer-kit/scripts/lib/render.mjs +166 -12
- package/assets/skills/explainer-kit/scripts/render-qa.mjs +152 -2
- package/assets/skills/explainer-kit/scripts/run.mjs +789 -272
- package/assets/skills/explainer-kit/templates/deck-shell.html +25 -5
- package/assets/skills/explainer-kit/templates/diagram-shell.html +29 -7
- package/assets/skills/explainer-kit/templates/engineer-tour.html +133 -9
- package/assets/skills/explainer-kit/templates/house-style.html +82 -0
- package/assets/skills/oat-brainstorm/SKILL.md +1 -1
- package/assets/skills/oat-brainstorm/scripts/helper.js +18 -11
- package/assets/skills/oat-brainstorm/scripts/server.cjs +109 -55
- package/assets/skills/oat-explainer-kit/SKILL.md +16 -9
- package/assets/skills/oat-explainer-kit/references/author-callback.md +51 -0
- package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +10 -8
- package/assets/skills/oat-explainer-kit/scripts/resolve-intent.mjs +14 -0
- package/assets/skills/oat-explainer-kit/scripts/run.mjs +7 -11
- package/assets/skills/oat-project-complete/SKILL.md +18 -2
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +7 -1
- package/assets/skills/oat-wave-execute/SKILL.md +12 -19
- package/assets/skills/oat-wave-program/SKILL.md +12 -13
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +4 -4
- package/dist/engine/compute-plan.js +3 -3
- package/package.json +2 -2
- package/assets/skills/explainer-kit/schemas/author-request.schema.json +0 -85
- package/assets/skills/explainer-kit/schemas/author-result.schema.json +0 -65
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
--sans: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
25
25
|
--serif: ui-serif, Georgia, serif;
|
|
26
26
|
--mono: ui-monospace, SFMono-Regular, Consolas, monospace;
|
|
27
|
+
/* AUTHOR EXTENSION REGION: resolved theme tokens */
|
|
27
28
|
{{THEME_CSS}}
|
|
28
29
|
}
|
|
29
30
|
* {
|
|
@@ -39,6 +40,9 @@
|
|
|
39
40
|
color: var(--ink);
|
|
40
41
|
font-family: var(--sans);
|
|
41
42
|
}
|
|
43
|
+
noscript p {
|
|
44
|
+
color: var(--muted);
|
|
45
|
+
}
|
|
42
46
|
.deck {
|
|
43
47
|
display: flex;
|
|
44
48
|
width: 100%;
|
|
@@ -197,16 +201,28 @@
|
|
|
197
201
|
}
|
|
198
202
|
</style>
|
|
199
203
|
</head>
|
|
200
|
-
<body>
|
|
204
|
+
<body data-explainer-shell="deck-shell">
|
|
201
205
|
<noscript>
|
|
202
206
|
<p>This deck remains available below as a readable vertical document.</p>
|
|
203
207
|
</noscript>
|
|
204
|
-
<main class="deck" aria-label="{{TITLE}}">
|
|
205
|
-
|
|
208
|
+
<main class="deck" data-shell-anchor="deck" aria-label="{{TITLE}}">
|
|
209
|
+
<!-- AUTHOR EXTENSION REGION: semantic section.slide frames -->
|
|
210
|
+
{{SLIDES}}
|
|
211
|
+
<!-- END AUTHOR EXTENSION REGION -->
|
|
212
|
+
</main>
|
|
213
|
+
<nav
|
|
214
|
+
class="deck-controls"
|
|
215
|
+
data-shell-anchor="deck-controls"
|
|
216
|
+
aria-label="Slide navigation"
|
|
217
|
+
>
|
|
206
218
|
<button type="button" data-direction="-1" aria-label="Previous slide">
|
|
207
219
|
←
|
|
208
220
|
</button>
|
|
209
|
-
<span
|
|
221
|
+
<span
|
|
222
|
+
id="deck-counter"
|
|
223
|
+
data-shell-anchor="deck-counter"
|
|
224
|
+
aria-live="polite"
|
|
225
|
+
></span>
|
|
210
226
|
<button type="button" data-direction="1" aria-label="Next slide">
|
|
211
227
|
→
|
|
212
228
|
</button>
|
|
@@ -214,11 +230,15 @@
|
|
|
214
230
|
<div
|
|
215
231
|
class="deck-progress"
|
|
216
232
|
id="deck-progress"
|
|
233
|
+
data-shell-anchor="deck-progress"
|
|
217
234
|
role="progressbar"
|
|
218
235
|
aria-label="Slide progress"
|
|
219
236
|
aria-valuemin="1"
|
|
220
237
|
>
|
|
221
|
-
<span
|
|
238
|
+
<span
|
|
239
|
+
class="deck-progress__bar"
|
|
240
|
+
data-shell-anchor="deck-progress-bar"
|
|
241
|
+
></span>
|
|
222
242
|
</div>
|
|
223
243
|
<script>
|
|
224
244
|
(() => {
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
--accent: hsl(215 28% 32%);
|
|
21
21
|
--sans: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
22
22
|
--mono: ui-monospace, SFMono-Regular, Consolas, monospace;
|
|
23
|
+
/* AUTHOR EXTENSION REGION: resolved theme tokens */
|
|
23
24
|
{{THEME_CSS}}
|
|
24
25
|
}
|
|
25
26
|
* {
|
|
@@ -125,35 +126,56 @@
|
|
|
125
126
|
}
|
|
126
127
|
</style>
|
|
127
128
|
</head>
|
|
128
|
-
<body>
|
|
129
|
+
<body data-explainer-shell="diagram-shell">
|
|
129
130
|
<main>
|
|
130
131
|
<header>
|
|
131
|
-
<h1 id="diagram-title">{{TITLE}}</h1>
|
|
132
|
-
<p id="diagram-description">
|
|
132
|
+
<h1 id="diagram-title" data-shell-anchor="diagram-title">{{TITLE}}</h1>
|
|
133
|
+
<p id="diagram-description" data-shell-anchor="diagram-description">
|
|
134
|
+
{{DESCRIPTION}}
|
|
135
|
+
</p>
|
|
133
136
|
</header>
|
|
134
|
-
<section
|
|
137
|
+
<section
|
|
138
|
+
class="diagram-shell"
|
|
139
|
+
data-shell-anchor="diagram-shell"
|
|
140
|
+
aria-labelledby="diagram-title"
|
|
141
|
+
>
|
|
135
142
|
<p class="diagram-hint">
|
|
136
143
|
Use the controls or Ctrl/Command + wheel to zoom; drag to pan.
|
|
137
144
|
</p>
|
|
138
|
-
<div
|
|
145
|
+
<div
|
|
146
|
+
class="zoom-controls"
|
|
147
|
+
data-shell-anchor="zoom-controls"
|
|
148
|
+
aria-label="Diagram zoom"
|
|
149
|
+
>
|
|
139
150
|
<button type="button" data-zoom="in" aria-label="Zoom in">+</button>
|
|
140
151
|
<button type="button" data-zoom="out" aria-label="Zoom out">−</button>
|
|
141
152
|
<button type="button" data-zoom="reset" aria-label="Reset zoom">
|
|
142
153
|
↺
|
|
143
154
|
</button>
|
|
144
155
|
</div>
|
|
145
|
-
<div class="diagram-viewport">
|
|
156
|
+
<div class="diagram-viewport" data-shell-anchor="diagram-viewport">
|
|
146
157
|
<svg
|
|
147
158
|
class="diagram-canvas"
|
|
159
|
+
data-shell-anchor="diagram-canvas"
|
|
148
160
|
viewBox="0 0 1200 720"
|
|
149
161
|
role="img"
|
|
150
162
|
aria-labelledby="diagram-title diagram-description"
|
|
151
163
|
xmlns="http://www.w3.org/2000/svg"
|
|
152
164
|
>
|
|
165
|
+
<!-- AUTHOR EXTENSION REGION: accessible inline SVG diagram -->
|
|
153
166
|
{{DIAGRAM}}
|
|
167
|
+
<!-- END AUTHOR EXTENSION REGION -->
|
|
154
168
|
</svg>
|
|
155
169
|
</div>
|
|
156
|
-
<div
|
|
170
|
+
<div
|
|
171
|
+
class="legend"
|
|
172
|
+
data-shell-anchor="diagram-legend"
|
|
173
|
+
aria-label="Diagram legend"
|
|
174
|
+
>
|
|
175
|
+
<!-- AUTHOR EXTENSION REGION: optional visual legend -->
|
|
176
|
+
{{LEGEND}}
|
|
177
|
+
<!-- END AUTHOR EXTENSION REGION -->
|
|
178
|
+
</div>
|
|
157
179
|
</section>
|
|
158
180
|
</main>
|
|
159
181
|
<script>
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
--sans: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
25
25
|
--serif: ui-serif, Georgia, serif;
|
|
26
26
|
--mono: ui-monospace, SFMono-Regular, Consolas, monospace;
|
|
27
|
+
/* AUTHOR EXTENSION REGION: resolved theme tokens */
|
|
27
28
|
{{THEME_CSS}}
|
|
28
29
|
}
|
|
29
30
|
* {
|
|
@@ -56,8 +57,7 @@
|
|
|
56
57
|
padding-block: 2.5rem;
|
|
57
58
|
}
|
|
58
59
|
.toc-brand,
|
|
59
|
-
.eyebrow
|
|
60
|
-
.section-number {
|
|
60
|
+
.eyebrow {
|
|
61
61
|
color: var(--muted);
|
|
62
62
|
font: 0.7rem/1.4 var(--mono);
|
|
63
63
|
letter-spacing: 0.12em;
|
|
@@ -116,12 +116,105 @@
|
|
|
116
116
|
max-width: 100%;
|
|
117
117
|
margin: 0;
|
|
118
118
|
overflow-x: auto;
|
|
119
|
+
border: 0;
|
|
120
|
+
border-radius: 0;
|
|
121
|
+
background: transparent;
|
|
119
122
|
padding: 1rem;
|
|
120
123
|
font-family: var(--mono);
|
|
121
124
|
}
|
|
122
125
|
.snippet:not(.open) pre {
|
|
123
126
|
display: none;
|
|
124
127
|
}
|
|
128
|
+
.diagram-scroll {
|
|
129
|
+
max-width: 100%;
|
|
130
|
+
overflow-x: auto;
|
|
131
|
+
}
|
|
132
|
+
.diagram-scroll > svg {
|
|
133
|
+
display: block;
|
|
134
|
+
}
|
|
135
|
+
/* Narrative renderer block output. The renderer emits these for any
|
|
136
|
+
markdown artifact, so the shell must style them or the structure
|
|
137
|
+
renders as unformatted text. */
|
|
138
|
+
.callout {
|
|
139
|
+
min-width: 0;
|
|
140
|
+
border: 1px solid var(--border);
|
|
141
|
+
border-inline-start: 0.25rem solid var(--accent);
|
|
142
|
+
border-radius: 0.6rem;
|
|
143
|
+
background: var(--panel);
|
|
144
|
+
padding: 1rem;
|
|
145
|
+
overflow-wrap: anywhere;
|
|
146
|
+
}
|
|
147
|
+
.callout--important {
|
|
148
|
+
border-inline-start-color: var(--success, var(--accent));
|
|
149
|
+
}
|
|
150
|
+
.callout--warning {
|
|
151
|
+
border-inline-start-color: var(--warning);
|
|
152
|
+
}
|
|
153
|
+
.callout--caution {
|
|
154
|
+
border-inline-start-color: var(--danger, var(--warning));
|
|
155
|
+
}
|
|
156
|
+
.callout__label {
|
|
157
|
+
color: var(--muted);
|
|
158
|
+
font: 0.72rem/1.4 var(--mono);
|
|
159
|
+
font-weight: 700;
|
|
160
|
+
letter-spacing: 0.08em;
|
|
161
|
+
text-transform: uppercase;
|
|
162
|
+
}
|
|
163
|
+
.timeline {
|
|
164
|
+
display: grid;
|
|
165
|
+
gap: 0.8rem;
|
|
166
|
+
padding-inline-start: 0;
|
|
167
|
+
list-style: none;
|
|
168
|
+
}
|
|
169
|
+
.timeline li {
|
|
170
|
+
display: grid;
|
|
171
|
+
grid-template-columns: minmax(7rem, 0.25fr) 1fr;
|
|
172
|
+
gap: 1rem;
|
|
173
|
+
border-inline-start: 0.2rem solid var(--accent);
|
|
174
|
+
padding-inline-start: 1rem;
|
|
175
|
+
}
|
|
176
|
+
.timeline time {
|
|
177
|
+
color: var(--muted);
|
|
178
|
+
font-family: var(--mono);
|
|
179
|
+
}
|
|
180
|
+
.table-scroll,
|
|
181
|
+
pre {
|
|
182
|
+
max-width: 100%;
|
|
183
|
+
overflow-x: auto;
|
|
184
|
+
}
|
|
185
|
+
table {
|
|
186
|
+
width: 100%;
|
|
187
|
+
border-collapse: collapse;
|
|
188
|
+
}
|
|
189
|
+
th,
|
|
190
|
+
td {
|
|
191
|
+
border-block-end: 1px solid var(--border);
|
|
192
|
+
padding: 0.6rem;
|
|
193
|
+
text-align: start;
|
|
194
|
+
}
|
|
195
|
+
pre {
|
|
196
|
+
border: 1px solid var(--border);
|
|
197
|
+
border-radius: 0.6rem;
|
|
198
|
+
background: var(--panel);
|
|
199
|
+
padding: 1rem;
|
|
200
|
+
font-family: var(--mono);
|
|
201
|
+
}
|
|
202
|
+
code {
|
|
203
|
+
font-family: var(--mono);
|
|
204
|
+
}
|
|
205
|
+
blockquote {
|
|
206
|
+
margin-inline: 0;
|
|
207
|
+
border-inline-start: 0.2rem solid var(--border);
|
|
208
|
+
color: var(--muted);
|
|
209
|
+
padding-inline-start: 1rem;
|
|
210
|
+
}
|
|
211
|
+
figure {
|
|
212
|
+
margin-inline: 0;
|
|
213
|
+
}
|
|
214
|
+
figcaption {
|
|
215
|
+
color: var(--muted);
|
|
216
|
+
font: 0.8rem/1.5 var(--mono);
|
|
217
|
+
}
|
|
125
218
|
.diagram-rail {
|
|
126
219
|
position: sticky;
|
|
127
220
|
top: 0;
|
|
@@ -140,6 +233,19 @@
|
|
|
140
233
|
width: 100%;
|
|
141
234
|
height: auto;
|
|
142
235
|
}
|
|
236
|
+
.diagram-card .node rect {
|
|
237
|
+
fill: var(--panel-muted);
|
|
238
|
+
stroke: var(--accent);
|
|
239
|
+
stroke-width: 1.5;
|
|
240
|
+
}
|
|
241
|
+
.diagram-card .edge {
|
|
242
|
+
fill: none;
|
|
243
|
+
stroke: var(--muted);
|
|
244
|
+
}
|
|
245
|
+
.diagram-card text {
|
|
246
|
+
fill: var(--ink);
|
|
247
|
+
font: 0.85rem var(--sans);
|
|
248
|
+
}
|
|
143
249
|
.diagram-card .node,
|
|
144
250
|
.diagram-card .edge {
|
|
145
251
|
transition: opacity 180ms ease, stroke 180ms ease, fill 180ms ease;
|
|
@@ -199,25 +305,43 @@
|
|
|
199
305
|
}
|
|
200
306
|
</style>
|
|
201
307
|
</head>
|
|
202
|
-
<body>
|
|
203
|
-
<div class="layout">
|
|
204
|
-
<nav
|
|
308
|
+
<body data-explainer-shell="engineer-tour">
|
|
309
|
+
<div class="layout" data-shell-anchor="tour-layout">
|
|
310
|
+
<nav
|
|
311
|
+
class="toc"
|
|
312
|
+
data-shell-anchor="tour-navigation"
|
|
313
|
+
aria-label="Tour sections"
|
|
314
|
+
>
|
|
205
315
|
<div class="toc-brand">{{EYEBROW}}</div>
|
|
316
|
+
<!-- AUTHOR EXTENSION REGION: section navigation -->
|
|
206
317
|
{{NAVIGATION}}
|
|
318
|
+
<!-- END AUTHOR EXTENSION REGION -->
|
|
207
319
|
</nav>
|
|
208
|
-
<main class="tour-body">
|
|
320
|
+
<main class="tour-body" data-shell-anchor="tour-body">
|
|
209
321
|
<header>
|
|
210
322
|
<div class="eyebrow">{{EYEBROW}}</div>
|
|
211
323
|
<h1>{{TITLE}}</h1>
|
|
212
324
|
<p>{{DESCRIPTION}}</p>
|
|
213
325
|
</header>
|
|
326
|
+
<!-- AUTHOR EXTENSION REGION: narrative tour sections -->
|
|
214
327
|
{{CONTENT}}
|
|
215
|
-
|
|
328
|
+
<!-- END AUTHOR EXTENSION REGION -->
|
|
329
|
+
<footer>
|
|
330
|
+
<!-- AUTHOR EXTENSION REGION: supporting references and next steps -->
|
|
331
|
+
{{FOOTER}}
|
|
332
|
+
<!-- END AUTHOR EXTENSION REGION -->
|
|
333
|
+
</footer>
|
|
216
334
|
</main>
|
|
217
|
-
<aside
|
|
218
|
-
|
|
335
|
+
<aside
|
|
336
|
+
class="diagram-rail"
|
|
337
|
+
data-shell-anchor="diagram-rail"
|
|
338
|
+
aria-label="System diagram"
|
|
339
|
+
>
|
|
340
|
+
<div class="diagram-card" data-shell-anchor="diagram-card">
|
|
219
341
|
<svg viewBox="0 0 360 540" role="img" aria-label="{{TITLE}}">
|
|
342
|
+
<!-- AUTHOR EXTENSION REGION: synchronized system diagram -->
|
|
220
343
|
{{DIAGRAM}}
|
|
344
|
+
<!-- END AUTHOR EXTENSION REGION -->
|
|
221
345
|
</svg>
|
|
222
346
|
</div>
|
|
223
347
|
</aside>
|
|
@@ -118,11 +118,76 @@
|
|
|
118
118
|
.callout {
|
|
119
119
|
border-inline-start: 0.25rem solid var(--accent);
|
|
120
120
|
}
|
|
121
|
+
.callout--tip,
|
|
122
|
+
.callout--note {
|
|
123
|
+
border-inline-start-color: var(--accent);
|
|
124
|
+
}
|
|
125
|
+
.callout--important {
|
|
126
|
+
border-inline-start-color: var(--success);
|
|
127
|
+
}
|
|
128
|
+
.callout--warning {
|
|
129
|
+
border-inline-start-color: var(--warning);
|
|
130
|
+
}
|
|
131
|
+
.callout--caution {
|
|
132
|
+
border-inline-start-color: var(--danger);
|
|
133
|
+
}
|
|
134
|
+
.callout__label {
|
|
135
|
+
color: var(--muted);
|
|
136
|
+
font: 0.72rem/1.4 var(--mono);
|
|
137
|
+
font-weight: 700;
|
|
138
|
+
letter-spacing: 0.08em;
|
|
139
|
+
text-transform: uppercase;
|
|
140
|
+
}
|
|
141
|
+
blockquote {
|
|
142
|
+
margin-inline: 0;
|
|
143
|
+
border-inline-start: 0.2rem solid var(--border);
|
|
144
|
+
padding-inline-start: 1rem;
|
|
145
|
+
color: var(--muted);
|
|
146
|
+
}
|
|
147
|
+
.task-list {
|
|
148
|
+
padding-inline-start: 0;
|
|
149
|
+
list-style: none;
|
|
150
|
+
}
|
|
151
|
+
.task-list li {
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: baseline;
|
|
154
|
+
gap: 0.5rem;
|
|
155
|
+
}
|
|
156
|
+
.task-list li > p {
|
|
157
|
+
margin-block: 0.2rem;
|
|
158
|
+
}
|
|
159
|
+
.timeline {
|
|
160
|
+
display: grid;
|
|
161
|
+
gap: 0.8rem;
|
|
162
|
+
padding-inline-start: 0;
|
|
163
|
+
list-style: none;
|
|
164
|
+
}
|
|
165
|
+
.timeline li {
|
|
166
|
+
display: grid;
|
|
167
|
+
grid-template-columns: minmax(7rem, 0.25fr) 1fr;
|
|
168
|
+
gap: 1rem;
|
|
169
|
+
border-inline-start: 0.2rem solid var(--accent);
|
|
170
|
+
padding-inline-start: 1rem;
|
|
171
|
+
}
|
|
172
|
+
.timeline time {
|
|
173
|
+
color: var(--muted);
|
|
174
|
+
font-family: var(--mono);
|
|
175
|
+
}
|
|
121
176
|
.table-scroll,
|
|
177
|
+
.diagram-scroll,
|
|
122
178
|
pre {
|
|
123
179
|
max-width: 100%;
|
|
124
180
|
overflow-x: auto;
|
|
125
181
|
}
|
|
182
|
+
.diagram-scroll > svg {
|
|
183
|
+
display: block;
|
|
184
|
+
}
|
|
185
|
+
pre {
|
|
186
|
+
border: 1px solid var(--border);
|
|
187
|
+
border-radius: var(--radius);
|
|
188
|
+
background: var(--panel-muted);
|
|
189
|
+
padding: 1rem;
|
|
190
|
+
}
|
|
126
191
|
table {
|
|
127
192
|
width: 100%;
|
|
128
193
|
border-collapse: collapse;
|
|
@@ -137,6 +202,23 @@
|
|
|
137
202
|
pre {
|
|
138
203
|
font-family: var(--mono);
|
|
139
204
|
}
|
|
205
|
+
:not(pre) > code {
|
|
206
|
+
border-radius: calc(var(--radius) / 2);
|
|
207
|
+
background: var(--panel-muted);
|
|
208
|
+
padding: 0.1em 0.3em;
|
|
209
|
+
}
|
|
210
|
+
figure {
|
|
211
|
+
margin-inline: 0;
|
|
212
|
+
border: 1px solid var(--border);
|
|
213
|
+
border-radius: var(--radius);
|
|
214
|
+
background: var(--panel);
|
|
215
|
+
padding: 1rem;
|
|
216
|
+
}
|
|
217
|
+
figcaption {
|
|
218
|
+
margin-block-start: 0.5rem;
|
|
219
|
+
color: var(--muted);
|
|
220
|
+
font-size: 0.9rem;
|
|
221
|
+
}
|
|
140
222
|
footer {
|
|
141
223
|
border-block-start: 1px solid var(--border);
|
|
142
224
|
color: var(--muted);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-brainstorm
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.2
|
|
4
4
|
description: Use when the user explicitly invokes the `brainstorm` verb, including `/oat-brainstorm`, "let's brainstorm", "brainstorm this", "can we brainstorm X", or "help me brainstorm X". For ambiguous exploratory phrasing ("I've been thinking", "what if", "help me think through"), do NOT auto-enter; respond conversationally and offer mode only after ≥2 sustained exploratory turns. Do NOT use for review, debug, PR, status, implementation, or active-workflow questions.
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(function() {
|
|
2
|
-
const WS_URL =
|
|
1
|
+
(function () {
|
|
2
|
+
const WS_URL = `ws://${window.location.host}`;
|
|
3
3
|
let ws = null;
|
|
4
4
|
let eventQueue = [];
|
|
5
5
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
ws = new WebSocket(WS_URL);
|
|
8
8
|
|
|
9
9
|
ws.onopen = () => {
|
|
10
|
-
eventQueue.forEach(e => ws.send(JSON.stringify(e)));
|
|
10
|
+
eventQueue.forEach((e) => ws.send(JSON.stringify(e)));
|
|
11
11
|
eventQueue = [];
|
|
12
12
|
};
|
|
13
13
|
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
type: 'click',
|
|
42
42
|
text: target.textContent.trim(),
|
|
43
43
|
choice: target.dataset.choice,
|
|
44
|
-
id: target.id || null
|
|
44
|
+
id: target.id || null,
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
// Update indicator bar (defer so toggleSelect runs first)
|
|
@@ -51,12 +51,16 @@
|
|
|
51
51
|
const container = target.closest('.options') || target.closest('.cards');
|
|
52
52
|
const selected = container ? container.querySelectorAll('.selected') : [];
|
|
53
53
|
if (selected.length === 0) {
|
|
54
|
-
indicator.textContent =
|
|
54
|
+
indicator.textContent =
|
|
55
|
+
'Click an option above, then return to the terminal';
|
|
55
56
|
} else if (selected.length === 1) {
|
|
56
|
-
const label =
|
|
57
|
-
|
|
57
|
+
const label =
|
|
58
|
+
selected[0]
|
|
59
|
+
.querySelector('h3, .content h3, .card-body h3')
|
|
60
|
+
?.textContent?.trim() || selected[0].dataset.choice;
|
|
61
|
+
indicator.innerHTML = `<span class="selected-text">${label} selected</span> — return to terminal to continue`;
|
|
58
62
|
} else {
|
|
59
|
-
indicator.innerHTML =
|
|
63
|
+
indicator.innerHTML = `<span class="selected-text">${selected.length} selected</span> — return to terminal to continue`;
|
|
60
64
|
}
|
|
61
65
|
}, 0);
|
|
62
66
|
});
|
|
@@ -64,11 +68,13 @@
|
|
|
64
68
|
// Frame UI: selection tracking
|
|
65
69
|
window.selectedChoice = null;
|
|
66
70
|
|
|
67
|
-
window.toggleSelect = function(el) {
|
|
71
|
+
window.toggleSelect = function (el) {
|
|
68
72
|
const container = el.closest('.options') || el.closest('.cards');
|
|
69
73
|
const multi = container && container.dataset.multiselect !== undefined;
|
|
70
74
|
if (container && !multi) {
|
|
71
|
-
container
|
|
75
|
+
container
|
|
76
|
+
.querySelectorAll('.option, .card')
|
|
77
|
+
.forEach((o) => o.classList.remove('selected'));
|
|
72
78
|
}
|
|
73
79
|
if (multi) {
|
|
74
80
|
el.classList.toggle('selected');
|
|
@@ -81,7 +87,8 @@
|
|
|
81
87
|
// Expose API for explicit use
|
|
82
88
|
window.brainstorm = {
|
|
83
89
|
send: sendEvent,
|
|
84
|
-
choice: (value, metadata = {}) =>
|
|
90
|
+
choice: (value, metadata = {}) =>
|
|
91
|
+
sendEvent({ type: 'choice', value, ...metadata }),
|
|
85
92
|
};
|
|
86
93
|
|
|
87
94
|
connect();
|