obsidian-agent-fleet 0.7.1 → 0.9.2
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/LICENSE +21 -0
- package/README.md +14 -8
- package/bin/cli.js +23 -0
- package/package.json +5 -2
- package/plugin/main.js +747 -137
- package/plugin/manifest.json +1 -1
- package/plugin/styles.css +501 -2
package/plugin/manifest.json
CHANGED
package/plugin/styles.css
CHANGED
|
@@ -1301,6 +1301,20 @@
|
|
|
1301
1301
|
gap: 8px 16px;
|
|
1302
1302
|
}
|
|
1303
1303
|
|
|
1304
|
+
.af-form-checkbox-row {
|
|
1305
|
+
display: flex;
|
|
1306
|
+
align-items: center;
|
|
1307
|
+
gap: 6px;
|
|
1308
|
+
margin: 2px 0;
|
|
1309
|
+
font-size: 12px;
|
|
1310
|
+
color: var(--af-text-primary);
|
|
1311
|
+
cursor: pointer;
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
.af-form-checkbox-row input[type="checkbox"] {
|
|
1315
|
+
margin: 0;
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1304
1318
|
.af-form-checkbox-label {
|
|
1305
1319
|
display: flex;
|
|
1306
1320
|
align-items: center;
|
|
@@ -3054,8 +3068,9 @@
|
|
|
3054
3068
|
|
|
3055
3069
|
.af-chat-bubble-user {
|
|
3056
3070
|
align-self: flex-end;
|
|
3057
|
-
background:
|
|
3058
|
-
color:
|
|
3071
|
+
background: transparent;
|
|
3072
|
+
color: var(--af-text-primary);
|
|
3073
|
+
border: 1px solid var(--af-accent);
|
|
3059
3074
|
border-bottom-right-radius: var(--af-radius-sm);
|
|
3060
3075
|
}
|
|
3061
3076
|
|
|
@@ -4027,3 +4042,487 @@
|
|
|
4027
4042
|
opacity: 0.6;
|
|
4028
4043
|
font-style: italic;
|
|
4029
4044
|
}
|
|
4045
|
+
|
|
4046
|
+
/* ── Model picker ── */
|
|
4047
|
+
|
|
4048
|
+
.af-model-picker {
|
|
4049
|
+
display: flex;
|
|
4050
|
+
flex-direction: column;
|
|
4051
|
+
gap: 6px;
|
|
4052
|
+
width: 100%;
|
|
4053
|
+
}
|
|
4054
|
+
|
|
4055
|
+
.af-mp-select {
|
|
4056
|
+
width: 100%;
|
|
4057
|
+
}
|
|
4058
|
+
|
|
4059
|
+
.af-mp-custom-input {
|
|
4060
|
+
font-family: var(--font-monospace, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
4061
|
+
font-size: 12px;
|
|
4062
|
+
}
|
|
4063
|
+
|
|
4064
|
+
/* ── Chat stats strip (terminal-style) ── */
|
|
4065
|
+
|
|
4066
|
+
.af-chat-stats {
|
|
4067
|
+
display: flex;
|
|
4068
|
+
align-items: center;
|
|
4069
|
+
/* Align with input: attach btn (18px) + gap (8px), plus a small inset so
|
|
4070
|
+
* the model name breathes rather than hugging the textarea edge. */
|
|
4071
|
+
padding: 6px 12px 0 calc(18px + 8px + 10px);
|
|
4072
|
+
min-height: 12px;
|
|
4073
|
+
font-family: var(--font-monospace, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
4074
|
+
font-size: 10px;
|
|
4075
|
+
line-height: 1;
|
|
4076
|
+
color: var(--af-text-faint);
|
|
4077
|
+
}
|
|
4078
|
+
|
|
4079
|
+
.af-chat-stats-muted {
|
|
4080
|
+
color: transparent;
|
|
4081
|
+
}
|
|
4082
|
+
|
|
4083
|
+
/* One-line row: `<model> <bar> <pct>` — space-between for nice separation. */
|
|
4084
|
+
.af-chat-stats-line {
|
|
4085
|
+
display: flex;
|
|
4086
|
+
align-items: center;
|
|
4087
|
+
justify-content: space-between;
|
|
4088
|
+
width: 100%;
|
|
4089
|
+
gap: 12px;
|
|
4090
|
+
}
|
|
4091
|
+
|
|
4092
|
+
.af-chat-stats-model {
|
|
4093
|
+
color: var(--af-text-secondary);
|
|
4094
|
+
white-space: nowrap;
|
|
4095
|
+
overflow: hidden;
|
|
4096
|
+
text-overflow: ellipsis;
|
|
4097
|
+
}
|
|
4098
|
+
|
|
4099
|
+
.af-chat-stats-ctx {
|
|
4100
|
+
display: inline-flex;
|
|
4101
|
+
align-items: baseline;
|
|
4102
|
+
gap: 6px;
|
|
4103
|
+
color: var(--af-text-faint);
|
|
4104
|
+
flex-shrink: 0;
|
|
4105
|
+
}
|
|
4106
|
+
|
|
4107
|
+
.af-chat-stats-bar {
|
|
4108
|
+
/* Render the blocks at a reduced size so the bar reads as a thin rule
|
|
4109
|
+
* rather than competing vertically with the model name. */
|
|
4110
|
+
font-size: 8px;
|
|
4111
|
+
line-height: 1;
|
|
4112
|
+
letter-spacing: 0;
|
|
4113
|
+
color: var(--af-text-secondary);
|
|
4114
|
+
}
|
|
4115
|
+
|
|
4116
|
+
.af-chat-stats-pct {
|
|
4117
|
+
color: var(--af-text-secondary);
|
|
4118
|
+
min-width: 28px;
|
|
4119
|
+
text-align: right;
|
|
4120
|
+
}
|
|
4121
|
+
|
|
4122
|
+
.af-chat-stats-ctx.warn .af-chat-stats-bar,
|
|
4123
|
+
.af-chat-stats-ctx.warn .af-chat-stats-pct {
|
|
4124
|
+
color: var(--color-orange, #e8a23a);
|
|
4125
|
+
}
|
|
4126
|
+
|
|
4127
|
+
/* Transient compact notice in the stats strip. Intentionally muted — it's
|
|
4128
|
+
* informational ("we just summarized to free up context"), not an error. */
|
|
4129
|
+
.af-chat-stats-compact {
|
|
4130
|
+
color: var(--af-text-secondary);
|
|
4131
|
+
font-size: 0.85em;
|
|
4132
|
+
opacity: 0.85;
|
|
4133
|
+
white-space: nowrap;
|
|
4134
|
+
overflow: hidden;
|
|
4135
|
+
text-overflow: ellipsis;
|
|
4136
|
+
}
|
|
4137
|
+
|
|
4138
|
+
/* ── Chat threading ── */
|
|
4139
|
+
|
|
4140
|
+
/* Thread badge: mirrors the `.af-chat-tool-summary summary` treatment —
|
|
4141
|
+
* bordered rounded pill, surface bg, muted text, darker-bg on hover. Keeps
|
|
4142
|
+
* thread and tool-calls affordances visually consistent. */
|
|
4143
|
+
/* Affordances row — a horizontal flex container that hosts the thread
|
|
4144
|
+
* badge and the tool-calls summary side-by-side under an assistant bubble.
|
|
4145
|
+
* `flex-start` alignment keeps the two buttons flush at the top even when
|
|
4146
|
+
* the tool-calls <details> is expanded and its block height grows below. */
|
|
4147
|
+
.af-chat-affordances {
|
|
4148
|
+
align-self: flex-start;
|
|
4149
|
+
display: flex;
|
|
4150
|
+
align-items: flex-start;
|
|
4151
|
+
flex-wrap: wrap;
|
|
4152
|
+
gap: 8px;
|
|
4153
|
+
}
|
|
4154
|
+
|
|
4155
|
+
/* The tool-summary already sets `align-self: flex-start` for its messages-list
|
|
4156
|
+
* position, but inside the affordances row we want it to sit on the
|
|
4157
|
+
* baseline next to the thread badge — reset. */
|
|
4158
|
+
.af-chat-affordances .af-chat-tool-summary {
|
|
4159
|
+
align-self: auto;
|
|
4160
|
+
}
|
|
4161
|
+
|
|
4162
|
+
/* Inside the affordances row, keep the original `<details>` + `<summary>` +
|
|
4163
|
+
* `.af-chat-tool-list` structure so that expanding the tool-calls pill
|
|
4164
|
+
* reads as ONE bordered component (summary on top, list below, single
|
|
4165
|
+
* border wraps both). Height matching is done by sizing the inner summary
|
|
4166
|
+
* so that summary+border == thread-badge total height. */
|
|
4167
|
+
.af-thread-badge,
|
|
4168
|
+
.af-chat-affordances .af-chat-tool-summary,
|
|
4169
|
+
.af-chat-affordances .af-chat-tool-summary details,
|
|
4170
|
+
.af-chat-affordances .af-chat-tool-summary summary {
|
|
4171
|
+
font-size: 11px;
|
|
4172
|
+
line-height: 1.4;
|
|
4173
|
+
box-sizing: border-box;
|
|
4174
|
+
margin: 0;
|
|
4175
|
+
}
|
|
4176
|
+
|
|
4177
|
+
/* Border lives on <details> (wraps summary + list). `overflow: hidden`
|
|
4178
|
+
* clips the list's corners to the details radius. */
|
|
4179
|
+
.af-chat-affordances .af-chat-tool-summary details {
|
|
4180
|
+
border: 1px solid var(--af-border);
|
|
4181
|
+
border-radius: var(--af-radius-sm);
|
|
4182
|
+
background: var(--af-bg-surface);
|
|
4183
|
+
overflow: hidden;
|
|
4184
|
+
}
|
|
4185
|
+
|
|
4186
|
+
/* Summary is the button surface — no border of its own (its parent
|
|
4187
|
+
* details provides one). Height 26px + details' 2px border = 28px total,
|
|
4188
|
+
* matching the thread badge exactly. */
|
|
4189
|
+
.af-chat-affordances .af-chat-tool-summary summary {
|
|
4190
|
+
height: 26px;
|
|
4191
|
+
padding: 0 10px;
|
|
4192
|
+
display: flex;
|
|
4193
|
+
align-items: center;
|
|
4194
|
+
gap: 4px;
|
|
4195
|
+
color: var(--af-text-muted);
|
|
4196
|
+
list-style: none;
|
|
4197
|
+
cursor: pointer;
|
|
4198
|
+
user-select: none;
|
|
4199
|
+
}
|
|
4200
|
+
|
|
4201
|
+
.af-chat-affordances .af-chat-tool-summary summary:hover {
|
|
4202
|
+
color: var(--af-text-primary);
|
|
4203
|
+
background: var(--af-bg-secondary);
|
|
4204
|
+
}
|
|
4205
|
+
|
|
4206
|
+
/* Thread badge keeps its own border because it has no details wrapper —
|
|
4207
|
+
* full 28px with border+padding baked in. */
|
|
4208
|
+
.af-thread-badge {
|
|
4209
|
+
height: 28px;
|
|
4210
|
+
}
|
|
4211
|
+
|
|
4212
|
+
.af-chat-affordances .af-chat-tool-summary summary::-webkit-details-marker {
|
|
4213
|
+
display: none;
|
|
4214
|
+
}
|
|
4215
|
+
|
|
4216
|
+
.af-chat-affordances .af-chat-tool-summary summary::marker {
|
|
4217
|
+
content: "";
|
|
4218
|
+
}
|
|
4219
|
+
|
|
4220
|
+
/* When open, a subtle separator line sits between summary and list —
|
|
4221
|
+
* both wrapped by the outer details border, so the whole thing reads as a
|
|
4222
|
+
* single component. */
|
|
4223
|
+
.af-chat-affordances .af-chat-tool-summary details[open] summary {
|
|
4224
|
+
border-bottom: 1px solid var(--af-border);
|
|
4225
|
+
}
|
|
4226
|
+
|
|
4227
|
+
.af-chat-affordances .af-chat-tool-summary .af-chat-tool-list {
|
|
4228
|
+
border: none;
|
|
4229
|
+
background: transparent;
|
|
4230
|
+
padding: 6px 10px 8px 10px;
|
|
4231
|
+
}
|
|
4232
|
+
|
|
4233
|
+
/* Mirrors `.af-chat-tool-summary summary` one-for-one. Rendered as a
|
|
4234
|
+
* `<div role="button">` rather than `<button>` to avoid Obsidian's global
|
|
4235
|
+
* button styling (`--interactive-normal` bg, etc.) bleeding through. */
|
|
4236
|
+
.af-thread-badge {
|
|
4237
|
+
display: inline-flex;
|
|
4238
|
+
align-items: center;
|
|
4239
|
+
gap: 4px;
|
|
4240
|
+
padding: 6px 10px;
|
|
4241
|
+
border: 1px solid var(--af-border);
|
|
4242
|
+
border-radius: var(--af-radius-sm);
|
|
4243
|
+
background: var(--af-bg-surface);
|
|
4244
|
+
color: var(--af-text-muted);
|
|
4245
|
+
font-size: 11px;
|
|
4246
|
+
cursor: pointer;
|
|
4247
|
+
user-select: none;
|
|
4248
|
+
box-shadow: none;
|
|
4249
|
+
outline: none;
|
|
4250
|
+
}
|
|
4251
|
+
|
|
4252
|
+
.af-thread-badge:hover {
|
|
4253
|
+
color: var(--af-text-primary);
|
|
4254
|
+
background: var(--af-bg-secondary);
|
|
4255
|
+
}
|
|
4256
|
+
|
|
4257
|
+
.af-thread-badge:active,
|
|
4258
|
+
.af-thread-badge:focus {
|
|
4259
|
+
box-shadow: none;
|
|
4260
|
+
outline: none;
|
|
4261
|
+
}
|
|
4262
|
+
|
|
4263
|
+
.af-thread-badge svg {
|
|
4264
|
+
width: 12px;
|
|
4265
|
+
height: 12px;
|
|
4266
|
+
}
|
|
4267
|
+
|
|
4268
|
+
.af-thread-badge.expanded {
|
|
4269
|
+
color: var(--af-text-primary);
|
|
4270
|
+
background: var(--af-bg-secondary);
|
|
4271
|
+
border-color: var(--af-accent);
|
|
4272
|
+
}
|
|
4273
|
+
|
|
4274
|
+
.af-thread-badge-label {
|
|
4275
|
+
line-height: 1;
|
|
4276
|
+
}
|
|
4277
|
+
|
|
4278
|
+
/* Thread container: nested region under the anchor bubble, read as an
|
|
4279
|
+
* indented sidebar-style subconversation. */
|
|
4280
|
+
.af-thread-container {
|
|
4281
|
+
margin: 2px 0 14px 0;
|
|
4282
|
+
padding: 10px 12px 10px 14px;
|
|
4283
|
+
border-left: 2px solid var(--af-accent);
|
|
4284
|
+
background: var(--af-bg-surface);
|
|
4285
|
+
border-radius: 0 var(--af-radius-md) var(--af-radius-md) 0;
|
|
4286
|
+
align-self: stretch;
|
|
4287
|
+
}
|
|
4288
|
+
|
|
4289
|
+
.af-thread-wrap {
|
|
4290
|
+
display: flex;
|
|
4291
|
+
flex-direction: column;
|
|
4292
|
+
gap: 10px;
|
|
4293
|
+
}
|
|
4294
|
+
|
|
4295
|
+
.af-thread-messages {
|
|
4296
|
+
display: flex;
|
|
4297
|
+
flex-direction: column;
|
|
4298
|
+
gap: 8px;
|
|
4299
|
+
}
|
|
4300
|
+
|
|
4301
|
+
/* Thread bubbles: same visual language as main chat (accent-fill for user,
|
|
4302
|
+
* surface-fill with border for assistant, asymmetric tail corner) but
|
|
4303
|
+
* denser — smaller font, tighter padding, lower max-width — to read as a
|
|
4304
|
+
* compact subconversation. */
|
|
4305
|
+
.af-thread-bubble {
|
|
4306
|
+
max-width: 82%;
|
|
4307
|
+
padding: 7px 11px;
|
|
4308
|
+
border-radius: var(--af-radius-md);
|
|
4309
|
+
font-size: 12px;
|
|
4310
|
+
line-height: 1.5;
|
|
4311
|
+
white-space: pre-wrap;
|
|
4312
|
+
word-break: break-word;
|
|
4313
|
+
position: relative;
|
|
4314
|
+
}
|
|
4315
|
+
|
|
4316
|
+
.af-thread-bubble-user {
|
|
4317
|
+
align-self: flex-end;
|
|
4318
|
+
background: transparent;
|
|
4319
|
+
color: var(--af-text-primary);
|
|
4320
|
+
border: 1px solid var(--af-accent);
|
|
4321
|
+
border-bottom-right-radius: var(--af-radius-sm);
|
|
4322
|
+
}
|
|
4323
|
+
|
|
4324
|
+
.af-thread-bubble-assistant {
|
|
4325
|
+
align-self: flex-start;
|
|
4326
|
+
background: var(--background-primary);
|
|
4327
|
+
color: var(--af-text-primary);
|
|
4328
|
+
border: 1px solid var(--af-border);
|
|
4329
|
+
border-bottom-left-radius: var(--af-radius-sm);
|
|
4330
|
+
}
|
|
4331
|
+
|
|
4332
|
+
/* Compact markdown tweaks so assistant thread bubbles stay tight. */
|
|
4333
|
+
.af-thread-bubble-assistant.af-compact-md {
|
|
4334
|
+
font-size: 12px;
|
|
4335
|
+
}
|
|
4336
|
+
|
|
4337
|
+
/* Thread composer reuses the main .af-chat-input-row so attach/input/send
|
|
4338
|
+
* styles are inherited verbatim — the one knob is a slightly smaller input
|
|
4339
|
+
* height to match the thread's density. */
|
|
4340
|
+
.af-thread-composer {
|
|
4341
|
+
padding-top: 2px;
|
|
4342
|
+
}
|
|
4343
|
+
|
|
4344
|
+
.af-thread-input {
|
|
4345
|
+
font-size: 12px;
|
|
4346
|
+
min-height: 28px;
|
|
4347
|
+
max-height: 120px;
|
|
4348
|
+
}
|
|
4349
|
+
|
|
4350
|
+
.af-thread-error {
|
|
4351
|
+
padding: 6px 10px;
|
|
4352
|
+
border-radius: var(--af-radius-sm);
|
|
4353
|
+
background: rgba(243, 139, 168, 0.12);
|
|
4354
|
+
color: var(--af-red);
|
|
4355
|
+
border: 1px solid var(--af-red);
|
|
4356
|
+
font-size: 11px;
|
|
4357
|
+
align-self: stretch;
|
|
4358
|
+
}
|
|
4359
|
+
|
|
4360
|
+
/* ── Wiki Keepers settings section ── */
|
|
4361
|
+
.af-wk-list {
|
|
4362
|
+
margin: 8px 0 16px 0;
|
|
4363
|
+
display: flex;
|
|
4364
|
+
flex-direction: column;
|
|
4365
|
+
gap: 6px;
|
|
4366
|
+
}
|
|
4367
|
+
|
|
4368
|
+
.af-wk-row {
|
|
4369
|
+
display: flex;
|
|
4370
|
+
align-items: center;
|
|
4371
|
+
justify-content: space-between;
|
|
4372
|
+
padding: 8px 12px;
|
|
4373
|
+
border: 1px solid var(--af-border);
|
|
4374
|
+
border-radius: var(--af-radius-sm);
|
|
4375
|
+
background: var(--af-bg-surface);
|
|
4376
|
+
}
|
|
4377
|
+
|
|
4378
|
+
.af-wk-row-left {
|
|
4379
|
+
display: flex;
|
|
4380
|
+
align-items: baseline;
|
|
4381
|
+
gap: 12px;
|
|
4382
|
+
}
|
|
4383
|
+
|
|
4384
|
+
.af-wk-name {
|
|
4385
|
+
font-weight: 500;
|
|
4386
|
+
color: var(--af-text-primary);
|
|
4387
|
+
}
|
|
4388
|
+
|
|
4389
|
+
.af-wk-scope {
|
|
4390
|
+
font-size: 11px;
|
|
4391
|
+
color: var(--af-text-secondary);
|
|
4392
|
+
font-family: var(--font-monospace, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
4393
|
+
}
|
|
4394
|
+
|
|
4395
|
+
.af-wk-empty {
|
|
4396
|
+
padding: 10px 12px;
|
|
4397
|
+
color: var(--af-text-muted);
|
|
4398
|
+
font-style: italic;
|
|
4399
|
+
font-size: 12px;
|
|
4400
|
+
}
|
|
4401
|
+
|
|
4402
|
+
.af-wk-row-actions {
|
|
4403
|
+
display: flex;
|
|
4404
|
+
gap: 6px;
|
|
4405
|
+
}
|
|
4406
|
+
|
|
4407
|
+
.af-wk-row-btn {
|
|
4408
|
+
font-size: 11px;
|
|
4409
|
+
padding: 4px 10px;
|
|
4410
|
+
border: 1px solid var(--af-border);
|
|
4411
|
+
border-radius: var(--af-radius-sm);
|
|
4412
|
+
background: var(--af-bg-card);
|
|
4413
|
+
color: var(--af-text-secondary);
|
|
4414
|
+
cursor: pointer;
|
|
4415
|
+
}
|
|
4416
|
+
|
|
4417
|
+
.af-wk-row-btn:hover {
|
|
4418
|
+
background: var(--af-bg-secondary);
|
|
4419
|
+
color: var(--af-text-primary);
|
|
4420
|
+
}
|
|
4421
|
+
|
|
4422
|
+
.af-wk-row-btn-danger:hover {
|
|
4423
|
+
color: var(--af-red);
|
|
4424
|
+
border-color: var(--af-red);
|
|
4425
|
+
}
|
|
4426
|
+
|
|
4427
|
+
/* ── Add / Edit Wiki Keeper modal ── */
|
|
4428
|
+
|
|
4429
|
+
.af-wk-modal .af-wk-banner {
|
|
4430
|
+
padding: 10px 12px;
|
|
4431
|
+
background: var(--af-bg-surface);
|
|
4432
|
+
border: 1px solid var(--af-border);
|
|
4433
|
+
border-radius: var(--af-radius-sm);
|
|
4434
|
+
color: var(--af-text-secondary);
|
|
4435
|
+
font-size: 12px;
|
|
4436
|
+
line-height: 1.5;
|
|
4437
|
+
margin-bottom: 16px;
|
|
4438
|
+
}
|
|
4439
|
+
|
|
4440
|
+
.af-wk-modal .af-wk-banner strong {
|
|
4441
|
+
color: var(--af-text-primary);
|
|
4442
|
+
}
|
|
4443
|
+
|
|
4444
|
+
.af-wk-modal .af-wk-section-h {
|
|
4445
|
+
margin: 18px 0 8px 0;
|
|
4446
|
+
font-size: 12px;
|
|
4447
|
+
font-weight: 600;
|
|
4448
|
+
text-transform: uppercase;
|
|
4449
|
+
letter-spacing: 0.06em;
|
|
4450
|
+
color: var(--af-text-secondary);
|
|
4451
|
+
border-bottom: 1px solid var(--af-border);
|
|
4452
|
+
padding-bottom: 4px;
|
|
4453
|
+
}
|
|
4454
|
+
|
|
4455
|
+
.af-wk-modal .af-wk-name-preview {
|
|
4456
|
+
color: var(--af-text-secondary);
|
|
4457
|
+
font-size: 12px;
|
|
4458
|
+
margin: 4px 0 16px 0;
|
|
4459
|
+
font-family: var(--font-monospace, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
4460
|
+
}
|
|
4461
|
+
|
|
4462
|
+
.af-wk-modal-footer {
|
|
4463
|
+
display: flex;
|
|
4464
|
+
justify-content: flex-end;
|
|
4465
|
+
gap: 8px;
|
|
4466
|
+
margin-top: 20px;
|
|
4467
|
+
padding-top: 12px;
|
|
4468
|
+
border-top: 1px solid var(--af-border);
|
|
4469
|
+
}
|
|
4470
|
+
|
|
4471
|
+
.af-wk-schedule-block {
|
|
4472
|
+
margin-bottom: 12px;
|
|
4473
|
+
}
|
|
4474
|
+
|
|
4475
|
+
/* ── Run-detail transcript disclosure ── */
|
|
4476
|
+
|
|
4477
|
+
.af-run-transcript {
|
|
4478
|
+
margin-top: 12px;
|
|
4479
|
+
border-top: 1px solid var(--af-border);
|
|
4480
|
+
padding-top: 10px;
|
|
4481
|
+
}
|
|
4482
|
+
|
|
4483
|
+
.af-run-transcript > summary {
|
|
4484
|
+
display: inline-flex;
|
|
4485
|
+
align-items: center;
|
|
4486
|
+
gap: 6px;
|
|
4487
|
+
list-style: none;
|
|
4488
|
+
cursor: pointer;
|
|
4489
|
+
font-size: 11px;
|
|
4490
|
+
color: var(--af-text-muted);
|
|
4491
|
+
padding: 4px 8px;
|
|
4492
|
+
border: 1px solid var(--af-border);
|
|
4493
|
+
border-radius: var(--af-radius-sm);
|
|
4494
|
+
background: var(--af-bg-surface);
|
|
4495
|
+
user-select: none;
|
|
4496
|
+
}
|
|
4497
|
+
|
|
4498
|
+
.af-run-transcript > summary:hover {
|
|
4499
|
+
color: var(--af-text-primary);
|
|
4500
|
+
background: var(--af-bg-secondary);
|
|
4501
|
+
}
|
|
4502
|
+
|
|
4503
|
+
.af-run-transcript > summary::-webkit-details-marker { display: none; }
|
|
4504
|
+
.af-run-transcript > summary::marker { content: ""; }
|
|
4505
|
+
|
|
4506
|
+
.af-run-transcript-icon svg {
|
|
4507
|
+
width: 12px;
|
|
4508
|
+
height: 12px;
|
|
4509
|
+
}
|
|
4510
|
+
|
|
4511
|
+
.af-run-transcript-meta {
|
|
4512
|
+
color: var(--af-text-faint);
|
|
4513
|
+
font-size: 10px;
|
|
4514
|
+
margin-left: 4px;
|
|
4515
|
+
}
|
|
4516
|
+
|
|
4517
|
+
.af-run-transcript-body {
|
|
4518
|
+
margin-top: 10px;
|
|
4519
|
+
padding-top: 10px;
|
|
4520
|
+
border-top: 1px dashed var(--af-border);
|
|
4521
|
+
opacity: 0.92;
|
|
4522
|
+
}
|
|
4523
|
+
|
|
4524
|
+
.af-wk-schedule-block .af-form-hint {
|
|
4525
|
+
font-size: 12px;
|
|
4526
|
+
color: var(--af-text-secondary);
|
|
4527
|
+
margin-bottom: 6px;
|
|
4528
|
+
}
|