micro-models-agent 2.16.1 → 2.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/assets/app.js +1 -314
- package/dist/assets/hljs.js +5 -1244
- package/dist/assets/index.html +11 -0
- package/dist/assets/js/api.js +1 -28
- package/dist/assets/js/core/menus.js +1 -0
- package/dist/assets/js/core/store/feed.js +1 -0
- package/dist/assets/js/core/store/index.js +1 -0
- package/dist/assets/js/core/store/session.js +1 -0
- package/dist/assets/js/core/store/settings.js +1 -0
- package/dist/assets/js/core/store/tabs.js +1 -0
- package/dist/assets/js/dialog.js +1 -105
- package/dist/assets/js/dom.js +1 -178
- package/dist/assets/js/feed/core.js +1 -0
- package/dist/assets/js/feed/history.js +1 -0
- package/dist/assets/js/feed/plan.js +1 -0
- package/dist/assets/js/feed/question.js +3 -0
- package/dist/assets/js/feed/sidebar.js +1 -0
- package/dist/assets/js/feed/stream.js +1 -0
- package/dist/assets/js/feed/turn.js +5 -0
- package/dist/assets/js/feed.js +1 -1250
- package/dist/assets/js/format.js +2 -122
- package/dist/assets/js/i18n.js +1 -46
- package/dist/assets/js/rail.js +1 -114
- package/dist/assets/js/session/cmdk.js +1 -0
- package/dist/assets/js/session/composer.js +1 -0
- package/dist/assets/js/session/sessions-menu.js +1 -0
- package/dist/assets/js/session/tabs.js +1 -0
- package/dist/assets/js/settings/controls.js +1 -0
- package/dist/assets/js/settings/editors.js +1 -0
- package/dist/assets/js/settings/form.js +1 -0
- package/dist/assets/js/settings/modal.js +1 -0
- package/dist/assets/js/settings/panels.js +1 -0
- package/dist/assets/js/settings/providers.js +1 -0
- package/dist/assets/js/settings/search.js +1 -0
- package/dist/assets/js/settings/subdialog.js +1 -0
- package/dist/assets/js/settings/write.js +1 -0
- package/dist/assets/js/settings.js +1 -1914
- package/dist/assets/js/sidebar/core.js +1 -0
- package/dist/assets/js/sidebar/lsp.js +2 -0
- package/dist/assets/js/sidebar/map.js +1 -0
- package/dist/assets/js/sidebar/state.js +1 -0
- package/dist/assets/js/sidebar/trace.js +5 -0
- package/dist/assets/js/sidebar.js +1 -705
- package/dist/assets/js/store.js +1 -82
- package/dist/assets/js/subdialog.js +1 -0
- package/dist/assets/md.js +1 -291
- package/dist/assets/setup.js +3 -816
- package/dist/assets/smd.js +29 -1665
- package/dist/assets/styles.css +1 -1598
- package/dist/certification/certifications.json +1 -494
- package/dist/i18n/en.json +1 -1851
- package/dist/i18n/ru.json +1 -1854
- package/dist/main.js +815 -55797
- package/dist/modules/browser/bridge-server.mjs +2 -252
- package/package.json +10 -5
- package/dist/assets/js/settings-controls.js +0 -452
- package/dist/assets/js/tabs.js +0 -867
- package/dist/cli/cache-line.js +0 -31
- package/dist/cli/command-suggest.js +0 -39
- package/dist/cli/commands.js +0 -781
- package/dist/cli/completer.js +0 -268
- package/dist/cli/index.js +0 -3
- package/dist/cli/json-payload.js +0 -32
- package/dist/cli/main.js +0 -346
- package/dist/cli/onboarding-commands.js +0 -126
- package/dist/cli/plugin-commands.js +0 -38
- package/dist/cli/relaunch.js +0 -40
- package/dist/cli/repl-commands-lsp.js +0 -75
- package/dist/cli/repl-commands-skills.js +0 -105
- package/dist/cli/repl-commands.js +0 -1218
- package/dist/cli/repl.js +0 -1238
- package/dist/cli/run-result.js +0 -38
- package/dist/cli/security-commands.js +0 -177
- package/dist/cli/setup-order.js +0 -6
- package/dist/cli/setup-prompt.js +0 -50
- package/dist/cli/setup.js +0 -161
- package/dist/cli/web-command.js +0 -98
- package/dist/config/budget.js +0 -48
- package/dist/config/config.js +0 -345
- package/dist/config/defaults.js +0 -197
- package/dist/config/domains.js +0 -135
- package/dist/config/env.js +0 -46
- package/dist/config/experts.js +0 -17
- package/dist/config/index.js +0 -5
- package/dist/config/paths.js +0 -56
- package/dist/config/redact.js +0 -44
- package/dist/config/registry-extra.js +0 -334
- package/dist/config/registry.js +0 -584
- package/dist/config/security.js +0 -212
- package/dist/config/timeouts.js +0 -74
- package/dist/config/types.js +0 -1
- package/dist/config/utils.js +0 -57
- package/dist/core/agent/artifact-progress.js +0 -59
- package/dist/core/agent/artifact-resolve.js +0 -79
- package/dist/core/agent/audit-gate.js +0 -53
- package/dist/core/agent/compaction.js +0 -89
- package/dist/core/agent/constants.js +0 -90
- package/dist/core/agent/context-log.js +0 -454
- package/dist/core/agent/context-renderer.js +0 -45
- package/dist/core/agent/critic-gate.js +0 -132
- package/dist/core/agent/hallucination-gate.js +0 -197
- package/dist/core/agent/loop-state.js +0 -68
- package/dist/core/agent/prefix-monitor.js +0 -101
- package/dist/core/agent/reasoning-resolver.js +0 -65
- package/dist/core/agent/token-tracker.js +0 -99
- package/dist/core/agent/tool-batch.js +0 -312
- package/dist/core/agent/tool-images.js +0 -18
- package/dist/core/agent/tool-output.js +0 -116
- package/dist/core/agent/tool-pairing.js +0 -60
- package/dist/core/agent-moe.js +0 -248
- package/dist/core/agent.js +0 -1299
- package/dist/core/bootstrap/agent-phase.js +0 -66
- package/dist/core/bootstrap/config-phase.js +0 -86
- package/dist/core/bootstrap/modules-phase.js +0 -269
- package/dist/core/bootstrap/provider-phase.js +0 -183
- package/dist/core/bootstrap/session-phase.js +0 -204
- package/dist/core/bootstrap/state.js +0 -94
- package/dist/core/bootstrap/workspace-phase.js +0 -115
- package/dist/core/bootstrap.js +0 -112
- package/dist/core/crash-handler.js +0 -62
- package/dist/core/environment.js +0 -224
- package/dist/core/host-plan.js +0 -43
- package/dist/core/host.js +0 -23
- package/dist/core/index.js +0 -3
- package/dist/core/prompt-builder.js +0 -95
- package/dist/core/prompt-overflow.js +0 -306
- package/dist/core/session-logger.js +0 -375
- package/dist/core/system-prompt.js +0 -117
- package/dist/core/types.js +0 -1
- package/dist/core/version.js +0 -28
- package/dist/core/web-host.js +0 -34
- package/dist/core/workspace.js +0 -80
- package/dist/i18n/index.js +0 -80
- package/dist/index.js +0 -30
- package/dist/llm/cache-usage.js +0 -76
- package/dist/llm/image-utils.js +0 -138
- package/dist/llm/index.js +0 -4
- package/dist/llm/llm-errors.js +0 -50
- package/dist/llm/model-loader.js +0 -86
- package/dist/llm/models-dev.js +0 -121
- package/dist/llm/openai-compat.js +0 -756
- package/dist/llm/orchestrator.js +0 -294
- package/dist/llm/provider-budget.js +0 -68
- package/dist/llm/provider-context.js +0 -233
- package/dist/llm/provider.js +0 -9
- package/dist/llm/response.js +0 -44
- package/dist/llm/stream-state.js +0 -26
- package/dist/llm/token-counter.js +0 -83
- package/dist/llm/types.js +0 -1
- package/dist/logger/app-logger.js +0 -212
- package/dist/logger/file-log.js +0 -160
- package/dist/logger/index.js +0 -2
- package/dist/migration/backup.js +0 -56
- package/dist/migration/detect.js +0 -61
- package/dist/migration/index.js +0 -3
- package/dist/modules/artifacts/store.js +0 -62
- package/dist/modules/browser/actions.js +0 -79
- package/dist/modules/browser/bridge-client.js +0 -203
- package/dist/modules/browser/bridge-path.js +0 -10
- package/dist/modules/browser/console-buffer.js +0 -37
- package/dist/modules/browser/cookie-store.js +0 -29
- package/dist/modules/browser/driver-types.js +0 -1
- package/dist/modules/browser/driver.js +0 -186
- package/dist/modules/browser/index.js +0 -9
- package/dist/modules/browser/module.js +0 -30
- package/dist/modules/browser/session.js +0 -322
- package/dist/modules/browser/snapshot.js +0 -154
- package/dist/modules/browser/types.js +0 -13
- package/dist/modules/certification/cli.js +0 -264
- package/dist/modules/certification/fact-checker.js +0 -90
- package/dist/modules/certification/loader.js +0 -127
- package/dist/modules/certification/manifest.js +0 -231
- package/dist/modules/certification/runner.js +0 -233
- package/dist/modules/certification/scenarios.js +0 -586
- package/dist/modules/certification/syntax-scenarios.js +0 -50
- package/dist/modules/certification/types.js +0 -1
- package/dist/modules/context/chunk-query.js +0 -122
- package/dist/modules/context/fact-extractor.js +0 -170
- package/dist/modules/context/history.js +0 -15
- package/dist/modules/context/index.js +0 -2
- package/dist/modules/context/manager.js +0 -482
- package/dist/modules/critic/client.js +0 -176
- package/dist/modules/critic/evidence.js +0 -81
- package/dist/modules/critic/provider.js +0 -45
- package/dist/modules/critic/tools.js +0 -78
- package/dist/modules/critic/types.js +0 -1
- package/dist/modules/execution/audit-runners.js +0 -206
- package/dist/modules/execution/auditor.js +0 -222
- package/dist/modules/execution/execution-plugin.js +0 -478
- package/dist/modules/execution/index.js +0 -8
- package/dist/modules/execution/input-from.js +0 -70
- package/dist/modules/execution/module.js +0 -891
- package/dist/modules/execution/moe-executor.js +0 -443
- package/dist/modules/execution/plan-actions.js +0 -642
- package/dist/modules/execution/plan-checks.js +0 -35
- package/dist/modules/execution/plan-coverage.js +0 -71
- package/dist/modules/execution/plan-persister.js +0 -46
- package/dist/modules/execution/plan-steps.js +0 -31
- package/dist/modules/execution/plan-store.js +0 -274
- package/dist/modules/execution/plan-tool.js +0 -249
- package/dist/modules/execution/plan-validator.js +0 -197
- package/dist/modules/execution/planner.js +0 -103
- package/dist/modules/execution/stuck-detector.js +0 -834
- package/dist/modules/execution/tracker.js +0 -92
- package/dist/modules/execution/transient-error.js +0 -30
- package/dist/modules/execution/types.js +0 -1
- package/dist/modules/execution/verifier.js +0 -343
- package/dist/modules/execution/windows-commands.js +0 -52
- package/dist/modules/hallucination/artifact-claim.js +0 -93
- package/dist/modules/hallucination/confidence.js +0 -81
- package/dist/modules/hallucination/consistency.js +0 -37
- package/dist/modules/hallucination/detector.js +0 -57
- package/dist/modules/hallucination/factual.js +0 -205
- package/dist/modules/hallucination/index.js +0 -6
- package/dist/modules/hallucination/js-identifiers.js +0 -261
- package/dist/modules/hallucination/llm-judge.js +0 -116
- package/dist/modules/hallucination/success-claim.js +0 -59
- package/dist/modules/index.js +0 -5
- package/dist/modules/indexer/cache.js +0 -88
- package/dist/modules/indexer/index.js +0 -4
- package/dist/modules/indexer/map-command.js +0 -33
- package/dist/modules/indexer/map-select.js +0 -87
- package/dist/modules/indexer/module.js +0 -293
- package/dist/modules/indexer/project-profile.js +0 -184
- package/dist/modules/indexer/symbols.js +0 -189
- package/dist/modules/indexer/walker.js +0 -285
- package/dist/modules/lsp/check-tool.js +0 -61
- package/dist/modules/lsp/client.js +0 -406
- package/dist/modules/lsp/command.js +0 -53
- package/dist/modules/lsp/config.js +0 -189
- package/dist/modules/lsp/index.js +0 -4
- package/dist/modules/lsp/module.js +0 -295
- package/dist/modules/lsp/probe.js +0 -86
- package/dist/modules/lsp/project-root.js +0 -69
- package/dist/modules/lsp/startup-check.js +0 -154
- package/dist/modules/lsp/types.js +0 -1
- package/dist/modules/mcp/client.js +0 -445
- package/dist/modules/mcp/index.js +0 -4
- package/dist/modules/mcp/module.js +0 -295
- package/dist/modules/mcp/registry.js +0 -20
- package/dist/modules/memory/index.js +0 -2
- package/dist/modules/memory/module.js +0 -101
- package/dist/modules/memory/search.js +0 -45
- package/dist/modules/memory/store.js +0 -107
- package/dist/modules/onboarding/init.js +0 -47
- package/dist/modules/onboarding/meet.js +0 -30
- package/dist/modules/onboarding/mode.js +0 -30
- package/dist/modules/onboarding/prompts.js +0 -43
- package/dist/modules/pipelines/engine.js +0 -70
- package/dist/modules/pipelines/index.js +0 -4
- package/dist/modules/pipelines/parser.js +0 -59
- package/dist/modules/pipelines/template.js +0 -18
- package/dist/modules/plugins/builtin/lint-on-write.js +0 -377
- package/dist/modules/plugins/builtin/notify.js +0 -11
- package/dist/modules/plugins/index.js +0 -2
- package/dist/modules/plugins/loader.js +0 -85
- package/dist/modules/plugins/manager.js +0 -244
- package/dist/modules/plugins/types.js +0 -1
- package/dist/modules/pricing/index.js +0 -70
- package/dist/modules/pricing/prices.js +0 -147
- package/dist/modules/processes/detect.js +0 -34
- package/dist/modules/processes/index.js +0 -4
- package/dist/modules/processes/kill-tree.js +0 -52
- package/dist/modules/processes/registry.js +0 -294
- package/dist/modules/processes/runner.js +0 -23
- package/dist/modules/providers/cache.js +0 -23
- package/dist/modules/providers/capabilities.js +0 -28
- package/dist/modules/providers/create.js +0 -21
- package/dist/modules/providers/factory.js +0 -28
- package/dist/modules/providers/fallback.js +0 -81
- package/dist/modules/providers/health.js +0 -47
- package/dist/modules/providers/index.js +0 -6
- package/dist/modules/providers/manager.js +0 -207
- package/dist/modules/providers/naming.js +0 -15
- package/dist/modules/providers/preflight.js +0 -71
- package/dist/modules/providers/presets.js +0 -232
- package/dist/modules/providers/registry.js +0 -27
- package/dist/modules/providers/types.js +0 -1
- package/dist/modules/reasoning/policy.js +0 -42
- package/dist/modules/reasoning/probe.js +0 -116
- package/dist/modules/registry.js +0 -48
- package/dist/modules/security/audit-log.js +0 -119
- package/dist/modules/security/audit-notifier.js +0 -267
- package/dist/modules/security/command-validator.js +0 -272
- package/dist/modules/security/content-scanner.js +0 -53
- package/dist/modules/security/data-sanitizer.js +0 -82
- package/dist/modules/security/encryption.js +0 -216
- package/dist/modules/security/index.js +0 -15
- package/dist/modules/security/network-validator.js +0 -236
- package/dist/modules/security/path-validator.js +0 -261
- package/dist/modules/security/protected-paths.js +0 -73
- package/dist/modules/security/rate-limiter.js +0 -98
- package/dist/modules/security/security-policies.js +0 -499
- package/dist/modules/security/session-encryption.js +0 -182
- package/dist/modules/security/session-isolation.js +0 -75
- package/dist/modules/session/auto-name.js +0 -63
- package/dist/modules/session/export.js +0 -98
- package/dist/modules/session/index.js +0 -4
- package/dist/modules/session/manager.js +0 -234
- package/dist/modules/session/module.js +0 -33
- package/dist/modules/session/store.js +0 -295
- package/dist/modules/session/types.js +0 -1
- package/dist/modules/setup/answers.js +0 -35
- package/dist/modules/setup/apply.js +0 -79
- package/dist/modules/setup/discovery.js +0 -72
- package/dist/modules/skills/index.js +0 -3
- package/dist/modules/skills/loader.js +0 -86
- package/dist/modules/skills/matcher.js +0 -27
- package/dist/modules/skills/module.js +0 -141
- package/dist/modules/types.js +0 -1
- package/dist/modules/updater/changelog-reader.js +0 -93
- package/dist/modules/updater/checker.js +0 -101
- package/dist/modules/updater/dev-detect.js +0 -18
- package/dist/modules/updater/index.js +0 -4
- package/dist/modules/updater/module.js +0 -129
- package/dist/modules/user-profile/compressor.js +0 -18
- package/dist/modules/user-profile/index.js +0 -2
- package/dist/modules/user-profile/profile.js +0 -77
- package/dist/modules/webui/answer-api.js +0 -29
- package/dist/modules/webui/assets.js +0 -50
- package/dist/modules/webui/body.js +0 -21
- package/dist/modules/webui/commands-settings.js +0 -209
- package/dist/modules/webui/commands-shared.js +0 -60
- package/dist/modules/webui/commands.js +0 -174
- package/dist/modules/webui/config-api.js +0 -134
- package/dist/modules/webui/file-api.js +0 -202
- package/dist/modules/webui/forward.js +0 -159
- package/dist/modules/webui/history-api.js +0 -112
- package/dist/modules/webui/host-state.js +0 -60
- package/dist/modules/webui/i18n-api.js +0 -9
- package/dist/modules/webui/limits.js +0 -6
- package/dist/modules/webui/log-forward.js +0 -20
- package/dist/modules/webui/memory-commands.js +0 -64
- package/dist/modules/webui/model-cache.js +0 -18
- package/dist/modules/webui/module.js +0 -148
- package/dist/modules/webui/persist.js +0 -24
- package/dist/modules/webui/prompt-io.js +0 -97
- package/dist/modules/webui/providers-api.js +0 -337
- package/dist/modules/webui/providers-view.js +0 -56
- package/dist/modules/webui/reasoning-view.js +0 -15
- package/dist/modules/webui/run-agent.js +0 -81
- package/dist/modules/webui/server.js +0 -284
- package/dist/modules/webui/sessions-api.js +0 -178
- package/dist/modules/webui/settings-api.js +0 -561
- package/dist/modules/webui/setup-api.js +0 -201
- package/dist/modules/webui/state.js +0 -74
- package/dist/modules/webui/util.js +0 -261
- package/dist/output/bus.js +0 -37
- package/dist/output/channel.js +0 -285
- package/dist/output/format.js +0 -15
- package/dist/output/index.js +0 -8
- package/dist/output/json-sink.js +0 -24
- package/dist/output/machine.js +0 -9
- package/dist/output/session-sink.js +0 -27
- package/dist/output/types.js +0 -1
- package/dist/tools/approve.js +0 -41
- package/dist/tools/attach-image.js +0 -102
- package/dist/tools/auto-fixer.js +0 -180
- package/dist/tools/auto-tags.js +0 -83
- package/dist/tools/bash.js +0 -649
- package/dist/tools/browser.js +0 -160
- package/dist/tools/chunk-query.js +0 -112
- package/dist/tools/create-dir.js +0 -60
- package/dist/tools/delete-file.js +0 -67
- package/dist/tools/download-file.js +0 -142
- package/dist/tools/edit-file.js +0 -136
- package/dist/tools/enable-tools.js +0 -59
- package/dist/tools/executor.js +0 -304
- package/dist/tools/file-info.js +0 -49
- package/dist/tools/filter-tools.js +0 -17
- package/dist/tools/glob-tool.js +0 -37
- package/dist/tools/grep-tool.js +0 -142
- package/dist/tools/hidden-tools-block.js +0 -37
- package/dist/tools/index.js +0 -88
- package/dist/tools/list-dir.js +0 -53
- package/dist/tools/load-skill.js +0 -51
- package/dist/tools/mcp-call.js +0 -80
- package/dist/tools/meet-done.js +0 -14
- package/dist/tools/move-file.js +0 -94
- package/dist/tools/path-utils.js +0 -108
- package/dist/tools/pipeline-run.js +0 -167
- package/dist/tools/preview.js +0 -2
- package/dist/tools/process-ids.js +0 -31
- package/dist/tools/process-kill.js +0 -33
- package/dist/tools/process-list.js +0 -38
- package/dist/tools/process-log.js +0 -49
- package/dist/tools/process-wait.js +0 -63
- package/dist/tools/prompt-io.js +0 -29
- package/dist/tools/question.js +0 -288
- package/dist/tools/read-file.js +0 -200
- package/dist/tools/recall.js +0 -124
- package/dist/tools/registry.js +0 -48
- package/dist/tools/remember.js +0 -72
- package/dist/tools/scope-check.js +0 -32
- package/dist/tools/scope-request.js +0 -96
- package/dist/tools/search-history.js +0 -88
- package/dist/tools/session-info.js +0 -46
- package/dist/tools/set-thinking.js +0 -75
- package/dist/tools/subagent.js +0 -257
- package/dist/tools/syntax-validator.js +0 -379
- package/dist/tools/types.js +0 -1
- package/dist/tools/user-input.js +0 -134
- package/dist/tools/web-browse.js +0 -93
- package/dist/tools/web-fetch.js +0 -108
- package/dist/tools/web-search.js +0 -107
- package/dist/tools/write-file.js +0 -128
- package/dist/ui/action-log.js +0 -13
- package/dist/ui/box.js +0 -78
- package/dist/ui/colors.js +0 -6
- package/dist/ui/diff.js +0 -189
- package/dist/ui/index.js +0 -7
- package/dist/ui/line-editor.js +0 -1083
- package/dist/ui/line-math.js +0 -98
- package/dist/ui/md-formatter.js +0 -322
- package/dist/ui/output.js +0 -19
- package/dist/ui/plan-view.js +0 -109
- package/dist/ui/renderer.js +0 -589
- package/dist/ui/spinner.js +0 -91
- package/dist/ui/table.js +0 -142
- package/dist/ui/theme.js +0 -143
- package/dist/utils/child-run.js +0 -20
- package/dist/utils/error.js +0 -4
- package/dist/utils/index.js +0 -6
- package/dist/utils/retry.js +0 -17
- package/dist/utils/sleep.js +0 -23
- package/dist/utils/truncate.js +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{icon as m}from"../dom.js";import{session as g}from"../store.js";import{t as b}from"../i18n.js";import{sb as e,TABS as i,ICON_NAME as f,paneEl as B,mqMobile as S,readStored as h,storeTab as v}from"./state.js";import{collapseDetail as d,renderList as u,renderDetail as x}from"./trace.js";import{sidebarMapState as y,sidebarMapIndicator as I}from"./map.js";import{renderLsp as E,sidebarLspState as p}from"./lsp.js";export function setSidebarTab(n,a=!0){i.includes(n)||(n="session"),a&&v(n);const t=n==="trace"&&S()?"session":n;t!==e.active&&d(),e.active=t,i.forEach(l=>{const s=B(l);s&&(s.hidden=l!==t);const r=e.el&&e.el.querySelector('.sb-tab[data-tab="'+l+'"]');if(r){const c=l===t;r.classList.toggle("on",c),r.setAttribute("aria-selected",c?"true":"false")}}),e.nameTextEl&&(e.nameTextEl.textContent=b("web.sidebar.tab_"+t));const o=e.nameEl&&e.nameEl.querySelector(".sb-ico");o&&(o.textContent="",o.appendChild(m(f[t]))),t==="lsp"&&p()}export function sidebarBusy(n){const a=e.el&&e.el.querySelector('.sb-tab[data-tab="trace"]');a&&(a.dataset.indicator=n?"live":"")}export function applySidebarI18n(){if(e.el){if(i.forEach(n=>{const a=e.el?.querySelector('.sb-tab[data-tab="'+n+'"]');if(a){const t=b("web.sidebar.tab_"+n);a.title=t,a.setAttribute("aria-label",t)}}),setSidebarTab(e.active,!1),u(),e.selected){const n=e.trace.find(a=>a.id===e.selected);n&&x(n)}y(g.host),E()}}export function initSidebar(){if(e.el||(e.el=document.querySelector(".sb"),!e.el))return;const n=e.el;e.nameEl=document.getElementById("sbName"),e.nameTextEl=document.getElementById("sbNameText"),e.mapEl=document.getElementById("mapBody"),e.lspEl=document.getElementById("lspBody"),e.listEl=document.getElementById("traceList"),e.detailEl=document.getElementById("traceDetail"),e.detailGlyph=document.getElementById("detailGlyph"),e.detailTitle=document.getElementById("detailTitle"),e.detailBody=document.getElementById("detailBody"),e.detailClose=document.getElementById("detailClose"),e.detailClose&&e.detailClose.addEventListener("click",d),n.querySelectorAll(".sb-tab .sb-ico").forEach(t=>{const o=t.closest(".sb-tab")?.dataset.tab||"session";t.textContent="",t.appendChild(m(f[o]))}),n.querySelectorAll(".sb-tab").forEach(t=>{t.addEventListener("click",()=>setSidebarTab(t.dataset.tab||"session")),t.addEventListener("keydown",o=>{if(o.key!=="ArrowLeft"&&o.key!=="ArrowRight")return;o.preventDefault();const l=i.indexOf(t.dataset.tab||"session"),s=i[(l+(o.key==="ArrowRight"?1:i.length-1))%i.length];setSidebarTab(s);const r=n.querySelector('.sb-tab[data-tab="'+s+'"]');r&&r.focus()})}),document.addEventListener("keydown",t=>{if(!t.altKey||!["1","2","3","4"].includes(t.key))return;const o=document.activeElement?String(document.activeElement.tagName):"";o==="INPUT"||o==="TEXTAREA"||(t.preventDefault(),setSidebarTab(i[Number(t.key)-1]))}),document.addEventListener("keydown",t=>{t.key==="Escape"&&e.selected&&d()});const a=h();setSidebarTab(a&&i.includes(a)?a:"session"),u()}export{y as sidebarMapState,I as sidebarMapIndicator,E as renderLsp,p as sidebarLspState};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{el as l,icon as _,makeToggle as v}from"../dom.js";import{api as C}from"../api.js";import{t as n}from"../i18n.js";import{formatMs as x}from"../format.js";import{setIndicator as E}from"../dialog.js";import{openSubDialog as S}from"../subdialog.js";import{sb as a}from"./state.js";import{mapKv as w}from"./map.js";function k(e){return"web.sidebar.lsp_reason_"+String(e||"").replace(/-/g,"_")}function y(e){return e==="ok"?["✓","ok"]:e==="disabled"||e==="not-applicable"||e==="deadline"?["–","dim"]:["✗","fail"]}const T=new Set(["not-applicable","disabled"]);function N(e){if(e.reason==="ok"){const i=[],s=x(e.durationMs||0);return s&&i.push(s),e.useNpxFallback&&i.push(n("web.sidebar.lsp_via_npx")),i.join(" · ")}return e.reason==="binary-missing"||e.reason==="offline"||e.reason==="network"?e.binaryName||e.command||"":e.reason==="spawn-failed"||e.reason==="server-error"?String(e.error||"").split(`
|
|
2
|
+
`)[0]:""}function F(e){const i=l("div","lsp-row");i.appendChild(l("span","lsp-lang",e.language));const s=l("span","lsp-status"),[t,p]=y(e.reason);s.appendChild(l("span","lsp-g "+p,t)),s.appendChild(document.createTextNode(" "+n(k(e.reason))));const d=N(e);if(d&&s.appendChild(document.createTextNode(" · "+d)),e.reason==="ok"){const r=e.useNpxFallback?n("web.sidebar.lsp_via_npx"):n("web.sidebar.lsp_via_global");i.title=n("web.sidebar.lsp_via")+" "+r}return i.appendChild(s),i}function U(e,i){const s=l("div","lsp-row lsp-muted"),t=l("span","lsp-lang",i.map(o=>o.language).join(", "));t.title=t.textContent,s.appendChild(t);const p=l("span","lsp-status"),[d,r]=y(e);return p.appendChild(l("span","lsp-g "+r,d)),p.appendChild(document.createTextNode(" "+n(k(e)))),s.appendChild(p),s}export function renderLsp(){const e=a.lspEl;if(!e)return;e.textContent="";const i=l("div","lsp-head");i.appendChild(l("span","lsp-what",n("web.sidebar.lsp_what")));const s=l("button","lsp-info-btn");if(s.type="button",s.title=n("web.sidebar.lsp_info"),s.setAttribute("aria-label",n("web.sidebar.lsp_info")),s.appendChild(_("info")),s.addEventListener("click",A),i.appendChild(s),e.appendChild(i),a.lspUnavailable){e.appendChild(w(n("web.sidebar.lsp_status"),n("web.sidebar.lsp_unavailable")));return}if(a.lspProbing)e.appendChild(w(n("web.sidebar.lsp_status"),n("web.sidebar.lsp_checking")));else if(!a.lspDiag)e.appendChild(w(n("web.sidebar.lsp_status"),n("web.sidebar.lsp_not_checked")));else{const p=h=>h?n("web.sidebar.map_on"):n("web.sidebar.map_off"),d=a.lspDiag,r=d.enabled,o=l("div","lsp-row lsp-flags");o.appendChild(l("span","lsp-lang","LSP"));const f=l("span","lsp-status");f.appendChild(l("span","lsp-g "+(r?"ok":"dim"),r?"✓":"–")),f.appendChild(document.createTextNode(" "+(r?n("web.sidebar.lsp_enabled"):n("web.sidebar.lsp_reason_disabled")))),d.offline&&f.appendChild(document.createTextNode(" · "+n("web.sidebar.lsp_offline")+" "+p(!0))),o.appendChild(f),e.appendChild(o);const b=Array.isArray(d.servers)?d.servers:[];if(b.length===0)e.appendChild(w(n("web.sidebar.lsp_status"),n("web.sidebar.lsp_none")));else{const h=[],g=new Map;b.forEach(c=>{T.has(c.reason)?(g.has(c.reason)||g.set(c.reason,[]),g.get(c.reason)?.push(c)):h.push(c)}),h.forEach(c=>e.appendChild(F(c))),g.forEach((c,P)=>e.appendChild(U(P,c)))}}const t=l("button","map-reindex",a.lspProbing?n("web.sidebar.lsp_checking"):n("web.sidebar.lsp_check"));t.type="button",t.disabled=a.lspProbing||a.lspUnavailable,t.addEventListener("click",()=>{m()}),e.appendChild(t)}let u=null;function A(){const e=l("div","lsp-info");u=()=>R(e),u(),S(n("web.sidebar.lsp_info"),e,()=>{u=null})}function R(e){e.textContent="";const i=a.lspFlags||(a.lspDiag?{enabled:a.lspDiag.enabled,offline:a.lspDiag.offline}:null);if(!i){e.appendChild(l("div","lsp-hint",n("web.sidebar.lsp_not_checked")));return}const s=l("div","kv lsp-toggle");s.appendChild(l("span","dim",n("web.sidebar.lsp_switch_enabled")));const t=v(i.enabled,o=>(D("lsp.enabled",o),!1));t.title=n("web.sidebar.lsp_switch_enabled"),s.appendChild(t),e.appendChild(s);const p=l("div","kv lsp-toggle");p.appendChild(l("span","dim",n("web.sidebar.lsp_switch_offline")));const d=v(i.offline,o=>(D("lsp.offline",o),!1));d.title=n("web.sidebar.lsp_switch_offline"),p.appendChild(d),e.appendChild(p),e.appendChild(l("div","lsp-hint",n("web.sidebar.lsp_offline_hint")));const r=(a.lspDiag&&Array.isArray(a.lspDiag.servers)?a.lspDiag.servers:[]).filter(o=>o.installCommand);r.length&&(e.appendChild(l("div","lsp-install-title",n("web.sidebar.lsp_install_title"))),r.forEach(o=>{const f=l("div","lsp-install");f.appendChild(l("span","dim",o.language)),f.appendChild(l("code","lsp-cmd",o.installCommand));const b=l("button","linkbtn lsp-copy");b.type="button",b.title=n("web.sidebar.lsp_copy"),b.setAttribute("aria-label",n("web.sidebar.lsp_copy")),b.appendChild(_("copy")),b.addEventListener("click",()=>I(o.installCommand,b)),f.appendChild(b),e.appendChild(f)}))}async function D(e,i){const s=await C("/api/config",{method:"POST",body:{key:e,value:i}});if(!s.ok||!s.data||!s.data.ok){const p=s.data&&(s.data.error||s.data.reason)||String(s.status);E(p==="busy"?n("web.sidebar.lsp_busy"):n("web.settings.save_failed"),!0);return}const t=e==="lsp.enabled"?"enabled":"offline";a.lspFlags={...a.lspFlags||{enabled:!0,offline:!1},[t]:i},a.lspDiag=null,u?.(),m()}function I(e,i){const s=p=>{i.textContent="",i.appendChild(_(p))},t=()=>{s("check"),setTimeout(()=>s("copy"),1500)};navigator.clipboard&&navigator.clipboard.writeText(e).then(t).catch(()=>{})}async function L(){const e=await C("/api/lsp/doctor");if(!e.ok){a.lspUnavailable=!0,a.lspProbing=!1,renderLsp();return}a.lspUnavailable=!1,a.lspDiag=e.data&&e.data.diagnosis||null,a.lspProbing=!!(e.data&&e.data.probing),a.lspFlags=e.data&&e.data.flags||a.lspFlags,a.lspLoaded=!0,renderLsp(),u?.(),a.lspDiag===null&&!a.lspProbing&&m()}async function m(){if(a.lspUnavailable||a.lspProbing)return;a.lspProbing=!0,renderLsp(),(await C("/api/lsp/doctor",{method:"POST"})).status===503&&(a.lspUnavailable=!0,a.lspProbing=!1,renderLsp())}export function sidebarLspState(){a.active!=="lsp"||a.lspUnavailable||(a.lspLoaded?a.lspDiag===null&&!a.lspProbing&&m():L())}export function sidebarLspEvent(e){if(e){if(e.phase==="start"){a.lspProbing=!0,renderLsp();return}L()}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{el as p}from"../dom.js";import{api as b}from"../api.js";import{t as n}from"../i18n.js";import{fmtTokens as c}from"../format.js";import{sb as a}from"./state.js";function f(t){if(typeof t!="number")return n("web.sidebar.map_never");const e=new Date(t),i=new Date,d=l=>String(l).padStart(2,"0"),r=d(e.getHours())+":"+d(e.getMinutes());return e.toDateString()===i.toDateString()?n("web.sidebar.map_today",{time:r}):d(e.getDate())+"."+d(e.getMonth()+1)+" "+r}export function mapKv(t,e,i){const d=p("div",("kv"+(i?" "+i:"")).trim());d.appendChild(p("span","dim",t));const r=p("b");return r.textContent=e,d.appendChild(r),d}function u(t,e){const i=p("div","map-path");i.appendChild(p("span","dim",t));const d=p("b");return d.textContent=e,d.title=e,i.appendChild(d),i}export function sidebarMapState(t){if(!a.mapEl)return;const e=t&&t.projectMap||{indexed:!1,files:0,symbols:0,tokens:0,languages:[]},i=!!(e&&e.indexing);a.postResolved&&!i&&(a.reindexing=!1,a.postResolved=!1);const d=i||a.reindexing,r=s=>e.indexed?String(s||0):"—";a.mapEl.textContent="";const l=d?n("web.sidebar.map_indexing"):e.indexed?e.watcher?n("web.sidebar.map_ready"):n("web.sidebar.map_stale"):n("web.sidebar.map_never");if(a.mapEl.appendChild(mapKv(n("web.sidebar.map_status"),l)),a.mapEl.appendChild(mapKv(n("web.sidebar.map_updated"),f(e.updatedAt))),a.mapEl.appendChild(mapKv(n("web.sidebar.map_watcher"),e.watcher?n("web.sidebar.map_on"):n("web.sidebar.map_off"))),a.mapEl.appendChild(mapKv(n("web.sidebar.map_files"),r(e.files))),a.mapEl.appendChild(mapKv(n("web.sidebar.map_symbols"),r(e.symbols))),a.mapEl.appendChild(mapKv(n("web.sidebar.map_tokens"),e.indexed?c(e.tokens||0):"—")),t&&t.workspace&&a.mapEl.appendChild(u(n("web.sidebar.map_root"),t.workspace)),Array.isArray(e.languages)&&e.languages.length>0){const s=p("div","kv");s.appendChild(p("span","dim",n("web.sidebar.map_languages"))),a.mapEl.appendChild(s),e.languages.forEach(m=>a.mapEl?.appendChild(mapKv(m.language,m.files+" · "+m.symbols)))}a.reindexError&&a.mapEl.appendChild(mapKv(n("web.sidebar.map_reindex_failed"),"—","wn"));const o=p("button","map-reindex",d?n("web.sidebar.map_reindexing"):n("web.sidebar.map_reindex"));o.type="button",o.disabled=d||!e.indexed,o.addEventListener("click",async()=>{if(a.reindexing=!0,a.postResolved=!1,a.reindexError=!1,sidebarMapState(t),sidebarMapIndicator(t),!(await b("/api/index",{method:"POST"})).ok){a.reindexing=!1,a.postResolved=!1,a.reindexError=!0,sidebarMapState(t);return}a.postResolved=!0}),a.mapEl.appendChild(o)}export function sidebarMapIndicator(t){const e=a.el&&a.el.querySelector('.sb-tab[data-tab="map"]');if(!e)return;const i=t&&t.projectMap||null,r=i&&i.indexing||a.reindexing?"busy":i&&i.indexed&&!i.watcher?"stale":"";e.dataset.indicator=r}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const TAB_KEY="mma-sidebar-tab",TABS=["session","map","trace","lsp"],ICON_NAME={session:"list-checks",map:"map",trace:"activity",lsp:"stethoscope"},TRACE_CAP=500,MAX_OUTPUT_CHARS=2e4,sb={el:null,nameEl:null,nameTextEl:null,mapEl:null,listEl:null,detailEl:null,detailGlyph:null,detailTitle:null,detailBody:null,detailClose:null,lspEl:null,active:"session",trace:[],selected:null,turn:0,seq:0,logCursor:null,logPulling:!1,nodeById:new Map,callIndex:new Map,headerByTurn:new Map,textEntry:null,lspDiag:null,lspFlags:null,lspProbing:!1,lspLoaded:!1,lspUnavailable:!1,reindexing:!1,postResolved:!1,reindexError:!1};export function paneEl(e){return document.getElementById("pane-"+e)}export function mqMobile(){return typeof window<"u"&&window.matchMedia?window.matchMedia("(max-width: 760px)").matches:!1}export function readStored(){try{return localStorage.getItem(TAB_KEY)}catch{return null}}export function storeTab(e){try{localStorage.setItem(TAB_KEY,e)}catch{}}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{el as r}from"../dom.js";import{api as v}from"../api.js";import{t as a}from"../i18n.js";import{labelOf as T,categoryOf as B,argText as A,formatMs as E}from"../format.js";import{sb as i,paneEl as S,TRACE_CAP as L,MAX_OUTPUT_CHARS as x}from"./state.js";function M(e){return e==="composing"?a("web.rail.composing"):e==="tool"?a("web.rail.working"):e==="thinking"?a("web.action.thinking"):String(e||"")}function q(e,t){return e==="tool"||e==="tool_fail"?B(t):e==="phase"?"phase":"meta"}function C(e){switch(e.kind){case"phase":return M(e.phase);case"plan":return a("web.sidebar.trace_plan");case"question":return a("web.sidebar.trace_question");case"text":return a("web.sidebar.trace_text",{count:e.chars||0});case"status":return a("web.sidebar.trace_status");case"log":return a("web.sidebar.trace_log",{level:e.level||""});case"retract":return a("web.sidebar.trace_retract");case"index":return a("web.sidebar.trace_index",{phase:e.phase||""});case"critic":return a("web.sidebar.trace_critic",{status:e.status||""});case"moe":return a("web.sidebar.trace_moe");case"compaction":return a("web.sidebar.trace_compaction");case"probe":return a("web.sidebar.trace_probe");case"usage":return a("web.sidebar.trace_usage");case"audit":return a("web.sidebar.trace_audit");case"claim":return a("web.sidebar.trace_claim",{kind:e.subkind||""});case"output":return a("web.sidebar.trace_output");default:return T(e.name)}}function R(e){if(e.kind==="text"||e.kind==="phase")return"";if(e.kind==="plan"){const t=typeof e.currentIndex=="number"?e.currentIndex:0,s=Array.isArray(e.steps)?e.steps.length:0;return s?a("web.rail.step_of",{cur:Math.min(t+1,s),total:s}):""}return e.kind==="question"?e.text||"":e.text&&typeof e.text=="string"&&e.kind!=="tool"&&e.kind!=="tool_fail"?(e.text.split(`
|
|
2
|
+
`).map(s=>s.trim()).find(s=>s.length>0)||"").slice(0,160):A(e.args)}function w(e){return e.kind==="tool_fail"||e.kind==="error"||e.kind==="claim"||e.kind==="critic"&&e.status==="critical"||e.kind==="log"&&(e.level==="warn"||e.level==="error")}function _(e){const t=["trc",q(e.kind,e.name)];w(e)&&t.push("warn"),i.selected===e.id&&t.push("sel");const s=r("div",t.join(" "));s.dataset.id=String(e.id),s.appendChild(r("span","g",w(e)?"⚠":e.kind==="question"?"?":"◇")),s.appendChild(r("span","lab",C(e)));const n=R(e);return n&&s.appendChild(r("span","args",n)),e.durationMs&&s.appendChild(r("span","t",E(e.durationMs))),s.addEventListener("click",()=>{if(i.selected===e.id){collapseDetail();return}i.listEl&&i.listEl.querySelectorAll(".trc.sel").forEach(d=>d.classList.remove("sel")),i.selected=e.id,s.classList.add("sel"),renderDetail(e),i.el&&i.el.classList.add("sb-expanded")}),s}export function renderList(){const e=i.listEl;if(!e)return;if(e.textContent="",e.dataset.lastTurn="-1",i.nodeById.clear(),i.headerByTurn.clear(),i.selected&&!i.trace.some(s=>s.id===i.selected)&&(i.selected=null),i.trace.length===0){e.appendChild(r("div","trace-turn",a("web.sidebar.trace_empty")));return}let t=-1;for(const s of i.trace){if(s.turn!==t){t=s.turn;const d=r("div","trace-turn",a("web.sidebar.trace_turn",{n:s.turn}));i.headerByTurn.set(s.turn,d),e.appendChild(d)}const n=_(s);i.nodeById.set(s.id,n),e.appendChild(n)}e.dataset.lastTurn=String(t),e.scrollTop=e.scrollHeight}function o(e){for(e.id=++i.seq,e.turn=i.turn,e.ts=Date.now(),i.trace.push(e);i.trace.length>L;){const t=i.trace.shift();if(!t)break;const s=i.nodeById.get(t.id);if(s&&(s.remove(),i.nodeById.delete(t.id)),t.toolCallId!=null&&i.callIndex.delete(t.toolCallId),!i.trace.some(n=>n.turn===t.turn)){const n=i.headerByTurn.get(t.turn);n&&(n.remove(),i.headerByTurn.delete(t.turn))}}return e}function l(e){const t=i.listEl;if(!t)return;const s=t.dataset.lastTurn?Number(t.dataset.lastTurn):-1;if(e.turn!==s){const d=r("div","trace-turn",a("web.sidebar.trace_turn",{n:e.turn}));i.headerByTurn.set(e.turn,d),t.appendChild(d),t.dataset.lastTurn=String(e.turn)}const n=_(e);i.nodeById.set(e.id,n),t.appendChild(n),t.scrollTop=t.scrollHeight}function j(e){const t=i.nodeById.get(e.id),s=_(e);i.nodeById.set(e.id,s),t&&t.parentNode?t.replaceWith(s):i.listEl&&i.listEl.appendChild(s),i.listEl&&(i.listEl.scrollTop=i.listEl.scrollHeight)}function P(e){const t=i.nodeById.get(e.id);t&&(t.textContent="",t.appendChild(r("span","g","✦")),t.appendChild(r("span","lab",C(e))),i.listEl&&(i.listEl.scrollTop=i.listEl.scrollHeight))}export function sidebarSessionChanged(e){(i.el&&i.el.dataset.sid)!==(e||"")&&(i.el&&(i.el.dataset.sid=e||""),i.trace=[],i.callIndex.clear(),i.textEntry=null,i.turn=0,i.seq=0,i.logCursor=new Date().toISOString(),i.logPulling=!1,collapseDetail(),renderList())}export function sidebarSessionId(){return i.el&&i.el.dataset.sid||null}export function setSessionLoading(e){if(!i.el)return;i.el.classList.toggle("sb-loading",!!e);const t=S("session");t&&t.setAttribute("aria-busy",e?"true":"false")}export function sidebarTurnEnd(e){i.turn=typeof e=="number"&&e>i.turn?e:i.turn+1,i.textEntry=null}export function sidebarTraceEvent(e,t){if(t)switch(e){case"tool_start":{const s=o({kind:"tool",name:t.name,args:t.args||{},toolCallId:t.toolCallId});t.toolCallId!=null&&i.callIndex.set(t.toolCallId,s),l(s);break}case"tool_end":{const s=t.toolCallId!=null?i.callIndex.get(t.toolCallId):void 0;if(t.toolCallId!=null&&i.callIndex.delete(t.toolCallId),s)s.kind=t.success===!1?"tool_fail":"tool",s.success=t.success!==!1,s.durationMs=t.durationMs,s.output=t.output||"",j(s);else{const n=o({kind:t.success===!1?"tool_fail":"tool",name:t.name,args:t.args||{},toolCallId:t.toolCallId,success:t.success!==!1,durationMs:t.durationMs,output:t.output||""});l(n)}break}case"phase":t.phase!=="done"&&l(o({kind:"phase",phase:t.phase}));break;case"plan":l(o({kind:"plan",steps:Array.isArray(t.steps)?t.steps:[],currentIndex:typeof t.currentIndex=="number"?t.currentIndex:0}));break;case"question":l(o({kind:"question",text:t.question||t.text||""}));break;case"text":{i.textEntry||(i.textEntry=o({kind:"text",text:"",chars:0}),l(i.textEntry));const s=t.chunk||"";i.textEntry.chars+=s.length,i.textEntry.text+=s,i.textEntry.text.length>x&&(i.textEntry.text=i.textEntry.text.slice(0,x)+`
|
|
3
|
+
… [truncated from `+i.textEntry.chars+" chars]"),P(i.textEntry);break}case"error":l(o({kind:"error",message:t.message||t.error||""}));break;case"meta":{if(t.kind!==void 0&&t.kind!=="status")break;const s=t.chunk||"";if(!s.trim())break;l(o({kind:"status",text:s}));break}case"log":{if(t.diagnostic&&t.level==="info")break;const s=t.text||"";if(!s.trim())break;l(o({kind:"log",text:s,level:t.level||"",source:t.source||""}));break}case"retract":l(o({kind:"retract",text:t.reason||""}));break;case"index":{const s=t.stats&&typeof t.stats=="object"?Object.entries(t.stats).map(([n,d])=>n+": "+d).join(", "):"";l(o({kind:"index",phase:t.phase||"",text:s}));break}default:break}}export async function sidebarPullLog(){const e=i.el&&i.el.dataset.sid;if(!(!e||i.logPulling)){i.logPulling=!0;try{let t="/api/sessions/"+encodeURIComponent(e)+"/log?limit=100";i.logCursor&&(t+="&since="+encodeURIComponent(i.logCursor));const s=await v(t);if(!s.ok||!s.data||!Array.isArray(s.data.log))return;for(const n of s.data.log)typeof n.ts=="string"&&(i.logCursor===null||n.ts>i.logCursor)&&(i.logCursor=n.ts),O(n)}catch{}finally{i.logPulling=!1}}}function O(e){if(!(!e||typeof e.type!="string"))switch(e.type){case"critic_check":l(o({kind:"critic",status:"check",text:"",iteration:e.iteration}));break;case"critic_verdict":l(o({kind:"critic",status:e.status||"",text:e.content||"",iteration:e.iteration}));break;case"critic_escalation":l(o({kind:"critic",status:"escalation",text:e.content||"",iteration:e.iteration}));break;case"moe_plan":case"moe_subtask":case"moe_replan":case"moe_verify":{const t=[e.title,e.subtaskId,e.expertTag,e.status].filter(s=>typeof s=="string"&&s).join(" · ");l(o({kind:"moe",subtype:e.type,text:t,iteration:e.iteration}));break}case"compaction":l(o({kind:"compaction",text:e.content||"",iteration:e.iteration}));break;case"context_probe":l(o({kind:"probe",text:e.content||""}));break;case"llm_usage":{const t=typeof e.totalTokens=="number"?e.totalTokens:(e.promptTokens||0)+(e.completionTokens||0),s=[e.model||e.provider,t?t+" tok":""].filter(Boolean).join(" · ");l(o({kind:"usage",text:s,iteration:e.iteration}));break}case"audit":l(o({kind:"audit",text:e.content||"",iteration:e.iteration}));break;case"claim_retry":l(o({kind:"claim",subkind:e.kind||"",text:e.content||"",iteration:e.iteration}));break;case"output":l(o({kind:"output",text:e.content||"",iteration:e.iteration}));break;default:break}}function b(e,t){const s=r("div");return s.appendChild(r("h5","",e)),s.appendChild(t),s}function k(e,t){const s=r("div","kv");s.appendChild(r("span","dim",e));const n=r("b");return n.textContent=t,s.appendChild(n),s}function h(e){const t=r("div","code");return t.textContent=e,t}function D(e){return typeof e!="string"?"":e.length<=x?e:e.slice(0,x)+`
|
|
4
|
+
… [truncated from `+e.length+" chars]"}export function renderDetail(e){const t=i.detailGlyph,s=i.detailTitle,n=i.detailBody,d=i.detailEl;if(!d||!t||!s||!n)return;d.hidden=!1;const m=w(e);t.textContent=m?"⚠":e.kind==="question"?"?":"◇",t.style.color=m?"var(--yellow)":"var(--accent)",s.textContent=C(e),n.textContent="";const c=r("div");c.appendChild(r("h5","",a("web.sidebar.detail_metadata")));const g=e.ts?new Date(e.ts):null;if((e.kind==="tool"||e.kind==="tool_fail")&&(c.appendChild(k(a("web.sidebar.detail_status"),e.success===!1?a("web.sidebar.detail_fail"):a("web.sidebar.detail_ok"))),e.durationMs&&c.appendChild(k(a("web.sidebar.detail_duration"),E(e.durationMs)))),g&&c.appendChild(k(a("web.sidebar.detail_time"),g.toLocaleTimeString())),e.toolCallId&&c.appendChild(k(a("web.sidebar.detail_tool_call"),String(e.toolCallId))),i.el&&i.el.dataset.sid&&c.appendChild(k(a("web.sidebar.detail_session"),i.el.dataset.sid)),c.appendChild(k(a("web.sidebar.detail_turn"),String(e.turn))),typeof e.iteration=="number"&&c.appendChild(k(a("web.sidebar.detail_iteration"),String(e.iteration))),n.appendChild(c),e.kind==="tool"||e.kind==="tool_fail")n.appendChild(b(a("web.sidebar.detail_arguments"),h(JSON.stringify(e.args||{},null,2)))),n.appendChild(b(a("web.sidebar.detail_output"),h(D(e.output))));else if(e.kind==="text")n.appendChild(b(a("web.sidebar.detail_text"),h(e.text||""))),H(e);else if(e.kind==="plan"){const u=r("div");(e.steps||[]).forEach(p=>{const f=p.status==="done"?"✓":p.status==="failed"?"✗":p.status==="in_progress"?"▸":"○",I=p.status==="failed"?"fail":p.status==="in_progress"?"cur":p.status==="done"?"done":"";u.appendChild(r("div",("plan-step "+I).trim(),f+" "+p.text))}),n.appendChild(b(a("web.sidebar.detail_plan"),u))}else if(e.kind==="question")n.appendChild(b(a("web.sidebar.trace_question"),h(e.text||"")));else if(e.kind==="error")n.appendChild(b(a("web.sidebar.detail_error"),h(e.message||"")));else if(e.kind==="status"||e.kind==="log"||e.kind==="retract"||e.kind==="index"||e.kind==="critic"||e.kind==="moe"||e.kind==="compaction"||e.kind==="probe"||e.kind==="usage"||e.kind==="audit"||e.kind==="claim"||e.kind==="output"){const u=e.kind==="moe"&&e.subtype?e.subtype:e.kind==="log"&&e.level?"log · "+e.level:e.kind==="index"&&e.phase?"index · "+e.phase:e.kind==="critic"&&e.status?"critic · "+e.status:e.kind==="claim"&&e.subkind?"claim_retry · "+e.subkind:C(e);n.appendChild(b(u,h(e.text||"")))}}async function H(e){const t=i.el&&i.el.dataset.sid,s=i.detailBody;if(!(!t||!s||i.selected!==e.id))try{const n=await v("/api/sessions/"+encodeURIComponent(t)+"/log?types=assistant,llm_usage&limit=20");if(!n.ok||!n.data||!Array.isArray(n.data.log)||i.selected!==e.id)return;const d=n.data.log,m=d.filter(f=>f.type==="assistant"),c=d.filter(f=>f.type==="llm_usage"),g=m.map(f=>f.iteration).filter(f=>typeof f=="number"),u=c.length>0?c[c.length-1]:null,p=[a("web.sidebar.detail_provenance_count",{n:m.length})+(g.length>0?" · iter "+Math.min(...g)+"–"+Math.max(...g):""),u?[u.model||u.provider,u.totalTokens??(u.promptTokens||0)+(u.completionTokens||0)].filter(Boolean).join(" · "):""].filter(Boolean).join(`
|
|
5
|
+
`);p&&s.appendChild(b(a("web.sidebar.detail_provenance"),h(p)))}catch{}}export function collapseDetail(){i.selected=null,i.el&&i.el.classList.remove("sb-expanded"),i.detailEl&&(i.detailEl.hidden=!0),i.listEl&&i.listEl.querySelectorAll(".trc.sel").forEach(e=>e.classList.remove("sel"))}
|