agim-cli 1.4.9 → 1.5.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 +437 -402
- package/README.md +43 -7
- package/README.zh-CN.md +42 -7
- package/bin/agim_rpc.py +12 -12
- package/dist/cli-ui/cmd-handlers.d.ts +25 -4
- package/dist/cli-ui/cmd-handlers.d.ts.map +1 -1
- package/dist/cli-ui/cmd-handlers.js +315 -59
- package/dist/cli-ui/cmd-handlers.js.map +1 -1
- package/dist/cli-ui/config-wizard.d.ts +13 -1
- package/dist/cli-ui/config-wizard.d.ts.map +1 -1
- package/dist/cli-ui/config-wizard.js +120 -48
- package/dist/cli-ui/config-wizard.js.map +1 -1
- package/dist/cli-ui/doctor.d.ts +15 -0
- package/dist/cli-ui/doctor.d.ts.map +1 -0
- package/dist/cli-ui/doctor.js +151 -0
- package/dist/cli-ui/doctor.js.map +1 -0
- package/dist/cli-ui/entry-menu.d.ts +6 -0
- package/dist/cli-ui/entry-menu.d.ts.map +1 -1
- package/dist/cli-ui/entry-menu.js +67 -30
- package/dist/cli-ui/entry-menu.js.map +1 -1
- package/dist/cli-ui/env-file.d.ts +4 -4
- package/dist/cli-ui/env-file.js +13 -13
- package/dist/cli-ui/env-file.js.map +1 -1
- package/dist/cli-ui/i18n.d.ts +17 -8
- package/dist/cli-ui/i18n.d.ts.map +1 -1
- package/dist/cli-ui/i18n.js +39 -21
- package/dist/cli-ui/i18n.js.map +1 -1
- package/dist/cli-ui/lang-picker.js +1 -1
- package/dist/cli-ui/lang-picker.js.map +1 -1
- package/dist/cli-ui/paths.d.ts.map +1 -1
- package/dist/cli-ui/paths.js +2 -4
- package/dist/cli-ui/paths.js.map +1 -1
- package/dist/cli-ui/quickstart.d.ts +3 -0
- package/dist/cli-ui/quickstart.d.ts.map +1 -0
- package/dist/cli-ui/quickstart.js +108 -0
- package/dist/cli-ui/quickstart.js.map +1 -0
- package/dist/cli-ui/readiness.d.ts +10 -0
- package/dist/cli-ui/readiness.d.ts.map +1 -0
- package/dist/cli-ui/readiness.js +75 -0
- package/dist/cli-ui/readiness.js.map +1 -0
- package/dist/cli-ui/service.d.ts +30 -7
- package/dist/cli-ui/service.d.ts.map +1 -1
- package/dist/cli-ui/service.js +171 -77
- package/dist/cli-ui/service.js.map +1 -1
- package/dist/cli-ui/tui/app.js +2 -2
- package/dist/cli-ui/tui/app.js.map +1 -1
- package/dist/cli-ui/tui/index.js +6 -6
- package/dist/cli-ui/tui/index.js.map +1 -1
- package/dist/cli-ui/tui/mouse-stdin.js +1 -1
- package/dist/cli-ui/tui/mouse-stdin.js.map +1 -1
- package/dist/cli-ui/tui/stream-reveal.d.ts +2 -2
- package/dist/cli-ui/tui/stream-reveal.d.ts.map +1 -1
- package/dist/cli-ui/tui/stream-reveal.js +4 -4
- package/dist/cli-ui/tui/stream-reveal.js.map +1 -1
- package/dist/cli.js +118 -436
- package/dist/cli.js.map +1 -1
- package/dist/core/a2a-notify.js +5 -5
- package/dist/core/a2a-notify.js.map +1 -1
- package/dist/core/a2a.d.ts +2 -2
- package/dist/core/a2a.d.ts.map +1 -1
- package/dist/core/a2a.js +12 -12
- package/dist/core/a2a.js.map +1 -1
- package/dist/core/access-token.d.ts +1 -1
- package/dist/core/access-token.js +7 -7
- package/dist/core/access-token.js.map +1 -1
- package/dist/core/acp-server.d.ts.map +1 -1
- package/dist/core/acp-server.js +21 -7
- package/dist/core/acp-server.js.map +1 -1
- package/dist/core/admin-allowlist.js +5 -5
- package/dist/core/admin-allowlist.js.map +1 -1
- package/dist/core/agent-base.d.ts +1 -1
- package/dist/core/agent-base.js +3 -3
- package/dist/core/agent-base.js.map +1 -1
- package/dist/core/agent-cwd.d.ts +13 -6
- package/dist/core/agent-cwd.d.ts.map +1 -1
- package/dist/core/agent-cwd.js +72 -23
- package/dist/core/agent-cwd.js.map +1 -1
- package/dist/core/agim-paths.d.ts +1 -4
- package/dist/core/agim-paths.d.ts.map +1 -1
- package/dist/core/agim-paths.js +18 -35
- package/dist/core/agim-paths.js.map +1 -1
- package/dist/core/approval-bus.d.ts +4 -4
- package/dist/core/approval-bus.d.ts.map +1 -1
- package/dist/core/approval-bus.js +14 -14
- package/dist/core/approval-bus.js.map +1 -1
- package/dist/core/approval-router.js +2 -2
- package/dist/core/artifacts.js +3 -3
- package/dist/core/artifacts.js.map +1 -1
- package/dist/core/ask-user-rpc.js +1 -1
- package/dist/core/ask-user-rpc.js.map +1 -1
- package/dist/core/audit-log.js +2 -2
- package/dist/core/audit-log.js.map +1 -1
- package/dist/core/bgjob-reader.d.ts +1 -1
- package/dist/core/bgjob-reader.js +4 -4
- package/dist/core/bgjob-reader.js.map +1 -1
- package/dist/core/commands/approval.js +2 -2
- package/dist/core/commands/approval.js.map +1 -1
- package/dist/core/commands/builtin.d.ts.map +1 -1
- package/dist/core/commands/builtin.js +12 -2
- package/dist/core/commands/builtin.js.map +1 -1
- package/dist/core/commands/heartbeat.js +2 -2
- package/dist/core/commands/heartbeat.js.map +1 -1
- package/dist/core/commands/memo.js +1 -1
- package/dist/core/commands/memo.js.map +1 -1
- package/dist/core/commands/model.d.ts.map +1 -1
- package/dist/core/commands/model.js +32 -3
- package/dist/core/commands/model.js.map +1 -1
- package/dist/core/commands/plan.js +3 -3
- package/dist/core/commands/plan.js.map +1 -1
- package/dist/core/commands/router-compare.js +3 -3
- package/dist/core/commands/router-compare.js.map +1 -1
- package/dist/core/commands/service.d.ts.map +1 -1
- package/dist/core/commands/service.js +1 -3
- package/dist/core/commands/service.js.map +1 -1
- package/dist/core/commands/sessions.js +4 -4
- package/dist/core/commands/sessions.js.map +1 -1
- package/dist/core/commands/skill.js +1 -1
- package/dist/core/commands/skill.js.map +1 -1
- package/dist/core/commands/stats.js +1 -1
- package/dist/core/commands/stats.js.map +1 -1
- package/dist/core/commands/web.js +5 -5
- package/dist/core/commands/web.js.map +1 -1
- package/dist/core/config-schema.js +1 -1
- package/dist/core/coord-systems.d.ts +1 -1
- package/dist/core/coord-systems.js +4 -4
- package/dist/core/coord-systems.js.map +1 -1
- package/dist/core/event-bus.d.ts +5 -5
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +3 -3
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/feature-flags.d.ts +2 -2
- package/dist/core/feature-flags.js +4 -4
- package/dist/core/feature-flags.js.map +1 -1
- package/dist/core/goal-rpc.js +2 -2
- package/dist/core/goal-rpc.js.map +1 -1
- package/dist/core/goals.d.ts +1 -1
- package/dist/core/goals.js +3 -3
- package/dist/core/goals.js.map +1 -1
- package/dist/core/heartbeat-store.d.ts +1 -1
- package/dist/core/heartbeat-store.d.ts.map +1 -1
- package/dist/core/heartbeat-store.js +3 -3
- package/dist/core/heartbeat-store.js.map +1 -1
- package/dist/core/heartbeat.js +4 -4
- package/dist/core/heartbeat.js.map +1 -1
- package/dist/core/intent-llm.d.ts +2 -2
- package/dist/core/intent-llm.js +5 -5
- package/dist/core/intent-llm.js.map +1 -1
- package/dist/core/job-board.d.ts +5 -5
- package/dist/core/job-board.d.ts.map +1 -1
- package/dist/core/job-board.js +17 -17
- package/dist/core/job-board.js.map +1 -1
- package/dist/core/llm/agent-loop.d.ts +3 -3
- package/dist/core/llm/agent-loop.js +14 -14
- package/dist/core/llm/agent-loop.js.map +1 -1
- package/dist/core/llm/{imhub-dispatcher.d.ts → agim-dispatcher.d.ts} +4 -4
- package/dist/core/llm/agim-dispatcher.d.ts.map +1 -0
- package/dist/core/llm/{imhub-dispatcher.js → agim-dispatcher.js} +43 -43
- package/dist/core/llm/agim-dispatcher.js.map +1 -0
- package/dist/core/llm/agim-rpc-server.js +17 -17
- package/dist/core/llm/agim-rpc-server.js.map +1 -1
- package/dist/core/llm/anthropic-provider.js +2 -1
- package/dist/core/llm/anthropic-provider.js.map +1 -1
- package/dist/core/llm/auto-compact.d.ts +3 -3
- package/dist/core/llm/auto-compact.d.ts.map +1 -1
- package/dist/core/llm/auto-compact.js +5 -5
- package/dist/core/llm/auto-compact.js.map +1 -1
- package/dist/core/llm/builtin-dispatcher.js +3 -3
- package/dist/core/llm/builtin-dispatcher.js.map +1 -1
- package/dist/core/llm/exec-dispatcher.d.ts +2 -2
- package/dist/core/llm/exec-dispatcher.d.ts.map +1 -1
- package/dist/core/llm/exec-dispatcher.js +20 -22
- package/dist/core/llm/exec-dispatcher.js.map +1 -1
- package/dist/core/llm/fs-dispatcher.js +8 -8
- package/dist/core/llm/fs-dispatcher.js.map +1 -1
- package/dist/core/llm/goal-critic.js +4 -4
- package/dist/core/llm/goal-critic.js.map +1 -1
- package/dist/core/llm/hallucination-detector.js +2 -2
- package/dist/core/llm/hallucination-detector.js.map +1 -1
- package/dist/core/llm/mcp-client.d.ts +1 -1
- package/dist/core/llm/mcp-client.js +3 -3
- package/dist/core/llm/mcp-client.js.map +1 -1
- package/dist/core/llm/mcp-registry.js +3 -3
- package/dist/core/llm/mcp-registry.js.map +1 -1
- package/dist/core/llm/openai-compat-provider.d.ts +1 -1
- package/dist/core/llm/openai-compat-provider.js +5 -4
- package/dist/core/llm/openai-compat-provider.js.map +1 -1
- package/dist/core/llm/provider-base.d.ts +5 -5
- package/dist/core/llm/provider-base.d.ts.map +1 -1
- package/dist/core/llm/provider-base.js +1 -1
- package/dist/core/llm/provider-base.js.map +1 -1
- package/dist/core/llm/secrets.d.ts +2 -2
- package/dist/core/llm/secrets.d.ts.map +1 -1
- package/dist/core/llm/tool-dispatcher.d.ts +1 -1
- package/dist/core/llm/web-dispatcher.d.ts +1 -1
- package/dist/core/llm/web-dispatcher.js +15 -15
- package/dist/core/llm/web-dispatcher.js.map +1 -1
- package/dist/core/logger.d.ts +1 -1
- package/dist/core/logger.js +3 -3
- package/dist/core/logger.js.map +1 -1
- package/dist/core/memo-rpc.js +3 -3
- package/dist/core/memo-rpc.js.map +1 -1
- package/dist/core/memory-consolidate.js +4 -4
- package/dist/core/memory-consolidate.js.map +1 -1
- package/dist/core/memory-distill.js +4 -4
- package/dist/core/memory-distill.js.map +1 -1
- package/dist/core/memory-distiller.js +9 -9
- package/dist/core/memory-distiller.js.map +1 -1
- package/dist/core/memory-vector.js +9 -9
- package/dist/core/memory-vector.js.map +1 -1
- package/dist/core/memory.js +2 -2
- package/dist/core/memory.js.map +1 -1
- package/dist/core/memos.js +6 -6
- package/dist/core/memos.js.map +1 -1
- package/dist/core/message-sink.js +13 -13
- package/dist/core/message-sink.js.map +1 -1
- package/dist/core/notification-evaluator.d.ts +2 -2
- package/dist/core/notification-evaluator.js +4 -4
- package/dist/core/notification-evaluator.js.map +1 -1
- package/dist/core/onboarding.js +3 -3
- package/dist/core/onboarding.js.map +1 -1
- package/dist/core/outbox.js +2 -2
- package/dist/core/outbox.js.map +1 -1
- package/dist/core/persona.d.ts +1 -1
- package/dist/core/persona.d.ts.map +1 -1
- package/dist/core/persona.js +2 -2
- package/dist/core/persona.js.map +1 -1
- package/dist/core/plan-history.js +1 -1
- package/dist/core/plan-history.js.map +1 -1
- package/dist/core/plan-intent.js +5 -5
- package/dist/core/plan-intent.js.map +1 -1
- package/dist/core/plan-mode-state.d.ts +1 -1
- package/dist/core/plan-mode-state.js +4 -4
- package/dist/core/plan-mode-state.js.map +1 -1
- package/dist/core/push-rpc.d.ts +1 -1
- package/dist/core/push-rpc.js +6 -6
- package/dist/core/push-rpc.js.map +1 -1
- package/dist/core/registry.d.ts +4 -4
- package/dist/core/registry.js +10 -10
- package/dist/core/registry.js.map +1 -1
- package/dist/core/reminders.js +1 -1
- package/dist/core/reminders.js.map +1 -1
- package/dist/core/restart-flow.d.ts.map +1 -1
- package/dist/core/restart-flow.js +5 -7
- package/dist/core/restart-flow.js.map +1 -1
- package/dist/core/router.d.ts +1 -1
- package/dist/core/router.js +5 -5
- package/dist/core/router.js.map +1 -1
- package/dist/core/schedule.d.ts +2 -2
- package/dist/core/schedule.js +4 -4
- package/dist/core/schedule.js.map +1 -1
- package/dist/core/self-protect.js +3 -3
- package/dist/core/self-protect.js.map +1 -1
- package/dist/core/sender-allowlist.js +7 -7
- package/dist/core/sender-allowlist.js.map +1 -1
- package/dist/core/sensitive-paths.d.ts.map +1 -1
- package/dist/core/sensitive-paths.js +1 -2
- package/dist/core/sensitive-paths.js.map +1 -1
- package/dist/core/session.js +2 -2
- package/dist/core/session.js.map +1 -1
- package/dist/core/skills/builtin/ECC_NOTICE.md +1 -1
- package/dist/core/skills/builtin/agim-memory/SKILL.md +1 -1
- package/dist/core/skills/builtin/agim-reminders/SKILL.md +2 -2
- package/dist/core/skills/builtin/agim-self/SKILL.md +9 -9
- package/dist/core/skills/builtin/agim-skill-discovery/SKILL.md +5 -5
- package/dist/core/skills/builtin/image-generation/SKILL.md +2 -2
- package/dist/core/skills/builtin/long-goal/SKILL.md +7 -7
- package/dist/core/skills/builtin/my/SKILL.md +2 -2
- package/dist/core/skills/builtin/skill-creator/SKILL.md +2 -2
- package/dist/core/skills/loader.d.ts +4 -4
- package/dist/core/skills/loader.js +22 -22
- package/dist/core/skills/loader.js.map +1 -1
- package/dist/core/skills-rpc.js +1 -1
- package/dist/core/skills-rpc.js.map +1 -1
- package/dist/core/transcribe.js +13 -13
- package/dist/core/transcribe.js.map +1 -1
- package/dist/core/tunnel.js +1 -1
- package/dist/core/tunnel.js.map +1 -1
- package/dist/core/types.d.ts +2 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/user-coord-prefs.js +1 -1
- package/dist/core/user-coord-prefs.js.map +1 -1
- package/dist/core/viewer-config.d.ts +8 -8
- package/dist/core/viewer-config.js +17 -17
- package/dist/core/viewer-config.js.map +1 -1
- package/dist/core/viewer-local.js +4 -4
- package/dist/core/viewer-local.js.map +1 -1
- package/dist/core/viewer-remote.js +1 -1
- package/dist/core/viewer-remote.js.map +1 -1
- package/dist/plugins/agents/acp/url-guard.d.ts +1 -1
- package/dist/plugins/agents/acp/url-guard.js +2 -2
- package/dist/plugins/agents/acp/url-guard.js.map +1 -1
- package/dist/plugins/agents/antigravity/ensure-mcp-config.d.ts +6 -6
- package/dist/plugins/agents/antigravity/ensure-mcp-config.d.ts.map +1 -1
- package/dist/plugins/agents/antigravity/ensure-mcp-config.js +12 -12
- package/dist/plugins/agents/antigravity/ensure-mcp-config.js.map +1 -1
- package/dist/plugins/agents/antigravity/index.js +10 -10
- package/dist/plugins/agents/antigravity/index.js.map +1 -1
- package/dist/plugins/agents/claude-code/index.d.ts +2 -2
- package/dist/plugins/agents/claude-code/index.js +16 -16
- package/dist/plugins/agents/claude-code/index.js.map +1 -1
- package/dist/plugins/agents/claude-code/mcp-approval-server.js +13 -13
- package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -1
- package/dist/plugins/agents/codex/build-mcp-cli-args.d.ts +4 -4
- package/dist/plugins/agents/codex/build-mcp-cli-args.js +14 -14
- package/dist/plugins/agents/codex/build-mcp-cli-args.js.map +1 -1
- package/dist/plugins/agents/codex/index.d.ts +3 -3
- package/dist/plugins/agents/codex/index.js +14 -14
- package/dist/plugins/agents/codex/index.js.map +1 -1
- package/dist/plugins/agents/cursor/ensure-mcp-config.d.ts +5 -5
- package/dist/plugins/agents/cursor/ensure-mcp-config.d.ts.map +1 -1
- package/dist/plugins/agents/cursor/ensure-mcp-config.js +11 -11
- package/dist/plugins/agents/cursor/ensure-mcp-config.js.map +1 -1
- package/dist/plugins/agents/cursor/index.d.ts +1 -1
- package/dist/plugins/agents/cursor/index.js +12 -12
- package/dist/plugins/agents/cursor/index.js.map +1 -1
- package/dist/plugins/agents/native/index.d.ts +1 -0
- package/dist/plugins/agents/native/index.d.ts.map +1 -1
- package/dist/plugins/agents/native/index.js +28 -14
- package/dist/plugins/agents/native/index.js.map +1 -1
- package/dist/plugins/agents/native/tool-registry.d.ts +3 -3
- package/dist/plugins/agents/native/tool-registry.d.ts.map +1 -1
- package/dist/plugins/agents/native/tool-registry.js +5 -5
- package/dist/plugins/agents/native/tool-registry.js.map +1 -1
- package/dist/plugins/agents/opencode/ensure-mcp-config.d.ts +1 -1
- package/dist/plugins/agents/opencode/ensure-mcp-config.js +9 -9
- package/dist/plugins/agents/opencode/ensure-mcp-config.js.map +1 -1
- package/dist/plugins/agents/opencode/index.js +3 -3
- package/dist/plugins/agents/opencode/index.js.map +1 -1
- package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts +4 -0
- package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts.map +1 -1
- package/dist/plugins/agents/opencode/opencode-http-adapter.js +16 -12
- package/dist/plugins/agents/opencode/opencode-http-adapter.js.map +1 -1
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts +2 -2
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts.map +1 -1
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.js +7 -5
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.js.map +1 -1
- package/dist/plugins/agents/opencode/serve-manager.d.ts +1 -1
- package/dist/plugins/agents/opencode/serve-manager.d.ts.map +1 -1
- package/dist/plugins/agents/opencode/serve-manager.js +10 -10
- package/dist/plugins/agents/opencode/serve-manager.js.map +1 -1
- package/dist/plugins/agents/pi-native/factory.d.ts.map +1 -1
- package/dist/plugins/agents/pi-native/factory.js +29 -13
- package/dist/plugins/agents/pi-native/factory.js.map +1 -1
- package/dist/plugins/agents/pi-native/index.d.ts +14 -3
- package/dist/plugins/agents/pi-native/index.d.ts.map +1 -1
- package/dist/plugins/agents/pi-native/index.js +58 -4
- package/dist/plugins/agents/pi-native/index.js.map +1 -1
- package/dist/plugins/agents/pi-native/provider-resolver.d.ts +2 -0
- package/dist/plugins/agents/pi-native/provider-resolver.d.ts.map +1 -1
- package/dist/plugins/agents/pi-native/provider-resolver.js +9 -1
- package/dist/plugins/agents/pi-native/provider-resolver.js.map +1 -1
- package/dist/plugins/agents/pi-native/tool-bridge.js +1 -1
- package/dist/plugins/agents/pi-native/tool-bridge.js.map +1 -1
- package/dist/plugins/agents/pi-native/tools.js +4 -4
- package/dist/plugins/agents/pi-native/tools.js.map +1 -1
- package/dist/plugins/messengers/dingtalk/dingtalk-adapter.d.ts +1 -1
- package/dist/plugins/messengers/dingtalk/dingtalk-adapter.js +2 -2
- package/dist/plugins/messengers/dingtalk/dingtalk-adapter.js.map +1 -1
- package/dist/plugins/messengers/email/email-adapter.js +15 -15
- package/dist/plugins/messengers/email/email-adapter.js.map +1 -1
- package/dist/plugins/messengers/telegram/media-download.d.ts +1 -1
- package/dist/plugins/messengers/telegram/media-download.js +4 -4
- package/dist/plugins/messengers/telegram/media-download.js.map +1 -1
- package/dist/plugins/messengers/telegram/telegram-adapter.d.ts +1 -1
- package/dist/plugins/messengers/telegram/telegram-adapter.js +3 -3
- package/dist/plugins/messengers/telegram/telegram-adapter.js.map +1 -1
- package/dist/plugins/messengers/wechat/context-store.js +1 -1
- package/dist/plugins/messengers/wechat/context-store.js.map +1 -1
- package/dist/plugins/messengers/wechat/ilink-adapter.js +1 -1
- package/dist/plugins/messengers/wechat/ilink-adapter.js.map +1 -1
- package/dist/plugins/messengers/wechat/ilink-client.js +1 -1
- package/dist/plugins/messengers/wechat/ilink-client.js.map +1 -1
- package/dist/plugins/messengers/wechat/media-download.js +1 -1
- package/dist/plugins/messengers/wechat/media-download.js.map +1 -1
- package/dist/scripts/migrate-gcj02-to-wgs84.js +1 -1
- package/dist/scripts/migrate-gcj02-to-wgs84.js.map +1 -1
- package/dist/web/public/assets/a2a-CTsDMefo.js +7 -0
- package/dist/web/public/assets/a2a-CTsDMefo.js.map +1 -0
- package/dist/web/public/assets/{activity-BnlFGipw.js → activity-ul8Os7Pz.js} +2 -2
- package/dist/web/public/assets/{activity-BnlFGipw.js.map → activity-ul8Os7Pz.js.map} +1 -1
- package/dist/web/public/assets/{admins-CH84Rw1d.js → admins-ByMAuquy.js} +3 -3
- package/dist/web/public/assets/{admins-CH84Rw1d.js.map → admins-ByMAuquy.js.map} +1 -1
- package/dist/web/public/assets/agents-Ds1zyxBj.js +2 -0
- package/dist/web/public/assets/agents-Ds1zyxBj.js.map +1 -0
- package/dist/web/public/assets/{approvals-DnzjbDR6.js → approvals-DOWlWI7Z.js} +3 -3
- package/dist/web/public/assets/{approvals-DnzjbDR6.js.map → approvals-DOWlWI7Z.js.map} +1 -1
- package/dist/web/public/assets/{arrow-down-DxlRHrs8.js → arrow-down-7i0xwCI2.js} +2 -2
- package/dist/web/public/assets/{arrow-down-DxlRHrs8.js.map → arrow-down-7i0xwCI2.js.map} +1 -1
- package/dist/web/public/assets/arrow-right-A889Wof8.js +7 -0
- package/dist/web/public/assets/arrow-right-A889Wof8.js.map +1 -0
- package/dist/web/public/assets/{arrow-up-CAiQ2jy-.js → arrow-up-Dm0U4-6U.js} +2 -2
- package/dist/web/public/assets/{arrow-up-CAiQ2jy-.js.map → arrow-up-Dm0U4-6U.js.map} +1 -1
- package/dist/web/public/assets/{asks-DyUQopay.js → asks-DGuBsrJ7.js} +3 -3
- package/dist/web/public/assets/{asks-DyUQopay.js.map → asks-DGuBsrJ7.js.map} +1 -1
- package/dist/web/public/assets/{audit-BVHTMS82.js → audit-BRXsplJ2.js} +2 -2
- package/dist/web/public/assets/{audit-BVHTMS82.js.map → audit-BRXsplJ2.js.map} +1 -1
- package/dist/web/public/assets/{bell-D7iS7ctN.js → bell-B-UdeJsp.js} +2 -2
- package/dist/web/public/assets/{bell-D7iS7ctN.js.map → bell-B-UdeJsp.js.map} +1 -1
- package/dist/web/public/assets/bgjobs-CcRiffyJ.js +2 -0
- package/dist/web/public/assets/bgjobs-CcRiffyJ.js.map +1 -0
- package/dist/web/public/assets/book-open-CSCq5cjL.js +7 -0
- package/dist/web/public/assets/book-open-CSCq5cjL.js.map +1 -0
- package/dist/web/public/assets/{brain-CCF25Egu.js → brain-Dl4DF5kX.js} +2 -2
- package/dist/web/public/assets/{brain-CCF25Egu.js.map → brain-Dl4DF5kX.js.map} +1 -1
- package/dist/web/public/assets/{briefcase-BMLMD8nM.js → briefcase-CeKUkFSq.js} +2 -2
- package/dist/web/public/assets/{briefcase-BMLMD8nM.js.map → briefcase-CeKUkFSq.js.map} +1 -1
- package/dist/web/public/assets/chat-rLJMdJBk.js +12 -0
- package/dist/web/public/assets/chat-rLJMdJBk.js.map +1 -0
- package/dist/web/public/assets/{chevron-left-BDO3vw8G.js → chevron-left-01fAFVpo.js} +2 -2
- package/dist/web/public/assets/{chevron-left-BDO3vw8G.js.map → chevron-left-01fAFVpo.js.map} +1 -1
- package/dist/web/public/assets/{chevron-right-5ZUC2opg.js → chevron-right-CFRb-SM_.js} +3 -3
- package/dist/web/public/assets/{chevron-right-5ZUC2opg.js.map → chevron-right-CFRb-SM_.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-big-DHAHqUlS.js → circle-check-big-DBg2BD6o.js} +2 -2
- package/dist/web/public/assets/{circle-check-big-DHAHqUlS.js.map → circle-check-big-DBg2BD6o.js.map} +1 -1
- package/dist/web/public/assets/{circle-x-7VaoZ7dY.js → circle-x-CqFMzO-x.js} +2 -2
- package/dist/web/public/assets/{circle-x-7VaoZ7dY.js.map → circle-x-CqFMzO-x.js.map} +1 -1
- package/dist/web/public/assets/clipboard-list-lnqdk2_J.js +7 -0
- package/dist/web/public/assets/clipboard-list-lnqdk2_J.js.map +1 -0
- package/dist/web/public/assets/{clock-ZPVXnd6V.js → clock-4hd1joQe.js} +3 -3
- package/dist/web/public/assets/{clock-ZPVXnd6V.js.map → clock-4hd1joQe.js.map} +1 -1
- package/dist/web/public/assets/confirm-dialog-BDb0NLny.js +2 -0
- package/dist/web/public/assets/{confirm-dialog-CgpJL9oN.js.map → confirm-dialog-BDb0NLny.js.map} +1 -1
- package/dist/web/public/assets/{copy-BaZl52tH.js → copy-CD4A7VD8.js} +3 -3
- package/dist/web/public/assets/{copy-BaZl52tH.js.map → copy-CD4A7VD8.js.map} +1 -1
- package/dist/web/public/assets/dashboard-CG3WiG7h.js +2 -0
- package/dist/web/public/assets/dashboard-CG3WiG7h.js.map +1 -0
- package/dist/web/public/assets/{data-table-BLYG79TX.js → data-table-BkUshOZz.js} +2 -2
- package/dist/web/public/assets/{data-table-BLYG79TX.js.map → data-table-BkUshOZz.js.map} +1 -1
- package/dist/web/public/assets/database-lQzk64rV.js +7 -0
- package/dist/web/public/assets/database-lQzk64rV.js.map +1 -0
- package/dist/web/public/assets/distill-CPurVW3v.js +7 -0
- package/dist/web/public/assets/distill-CPurVW3v.js.map +1 -0
- package/dist/web/public/assets/{download-bzCepctg.js → download-CVZnHcwj.js} +2 -2
- package/dist/web/public/assets/{download-bzCepctg.js.map → download-CVZnHcwj.js.map} +1 -1
- package/dist/web/public/assets/dropdown-menu-BNH5SrVb.js +7 -0
- package/dist/web/public/assets/dropdown-menu-BNH5SrVb.js.map +1 -0
- package/dist/web/public/assets/email-YlI4MWLp.js +7 -0
- package/dist/web/public/assets/email-YlI4MWLp.js.map +1 -0
- package/dist/web/public/assets/{empty-state-96qpPTNg.js → empty-state-CuiqdZiB.js} +2 -2
- package/dist/web/public/assets/{empty-state-96qpPTNg.js.map → empty-state-CuiqdZiB.js.map} +1 -1
- package/dist/web/public/assets/{external-link-J4nIlCem.js → external-link-1WPpVvdu.js} +2 -2
- package/dist/web/public/assets/{external-link-J4nIlCem.js.map → external-link-1WPpVvdu.js.map} +1 -1
- package/dist/web/public/assets/{eye-BvsBLK42.js → eye-BfPyNFzk.js} +2 -2
- package/dist/web/public/assets/{eye-BvsBLK42.js.map → eye-BfPyNFzk.js.map} +1 -1
- package/dist/web/public/assets/{facts-DMucDXYd.js → facts-xT_24pH8.js} +2 -2
- package/dist/web/public/assets/{facts-DMucDXYd.js.map → facts-xT_24pH8.js.map} +1 -1
- package/dist/web/public/assets/file-text-BxfdLM0-.js +7 -0
- package/dist/web/public/assets/file-text-BxfdLM0-.js.map +1 -0
- package/dist/web/public/assets/{goals-B9ETHgL0.js → goals-C8ZQfbhj.js} +3 -3
- package/dist/web/public/assets/{goals-B9ETHgL0.js.map → goals-C8ZQfbhj.js.map} +1 -1
- package/dist/web/public/assets/health-A2StNEfn.js +2 -0
- package/dist/web/public/assets/{health-DLzZ7KHc.js.map → health-A2StNEfn.js.map} +1 -1
- package/dist/web/public/assets/{heart-pulse-CVEeD2sz.js → heart-pulse-DXlE9oic.js} +2 -2
- package/dist/web/public/assets/{heart-pulse-CVEeD2sz.js.map → heart-pulse-DXlE9oic.js.map} +1 -1
- package/dist/web/public/assets/{heartbeat-B1BEBHge.js → heartbeat-ClO5gJrj.js} +3 -3
- package/dist/web/public/assets/{heartbeat-B1BEBHge.js.map → heartbeat-ClO5gJrj.js.map} +1 -1
- package/dist/web/public/assets/hot-bfTA-V_z.js +7 -0
- package/dist/web/public/assets/{hot-Yc7iad0D.js.map → hot-bfTA-V_z.js.map} +1 -1
- package/dist/web/public/assets/index-Bi2qWb-u.css +1 -0
- package/dist/web/public/assets/index-DCfdN5R7.js +244 -0
- package/dist/web/public/assets/index-DCfdN5R7.js.map +1 -0
- package/dist/web/public/assets/{injection-Ca-9gbo0.js → injection-omvCR6-p.js} +2 -2
- package/dist/web/public/assets/{injection-Ca-9gbo0.js.map → injection-omvCR6-p.js.map} +1 -1
- package/dist/web/public/assets/{installed-Zz34apdi.js → installed-DL6r3ktm.js} +4 -9
- package/dist/web/public/assets/installed-DL6r3ktm.js.map +1 -0
- package/dist/web/public/assets/jobs-Biy5lYd4.js +2 -0
- package/dist/web/public/assets/jobs-Biy5lYd4.js.map +1 -0
- package/dist/web/public/assets/layout-BLm6NJ3V.js +2 -0
- package/dist/web/public/assets/layout-BLm6NJ3V.js.map +1 -0
- package/dist/web/public/assets/layout-BTKafRVZ.js +2 -0
- package/dist/web/public/assets/layout-BTKafRVZ.js.map +1 -0
- package/dist/web/public/assets/layout-Bm-2s2fp.js +2 -0
- package/dist/web/public/assets/layout-Bm-2s2fp.js.map +1 -0
- package/dist/web/public/assets/layout-DsZ8eR4i.js +2 -0
- package/dist/web/public/assets/layout-DsZ8eR4i.js.map +1 -0
- package/dist/web/public/assets/{layout-CtDc2i7w.js → layout-sxvovjEH.js} +2 -2
- package/dist/web/public/assets/{layout-CtDc2i7w.js.map → layout-sxvovjEH.js.map} +1 -1
- package/dist/web/public/assets/llm-JjZDbBvJ.js +37 -0
- package/dist/web/public/assets/llm-JjZDbBvJ.js.map +1 -0
- package/dist/web/public/assets/loader-circle-DDdmcH0k.js +7 -0
- package/dist/web/public/assets/{loader-circle-D8L1w9c1.js.map → loader-circle-DDdmcH0k.js.map} +1 -1
- package/dist/web/public/assets/{map-pin--GMunU9n.js → map-pin-C_jAxukI.js} +2 -2
- package/dist/web/public/assets/{map-pin--GMunU9n.js.map → map-pin-C_jAxukI.js.map} +1 -1
- package/dist/web/public/assets/{mcp-DhnXhO9B.js → mcp-vKajK1F8.js} +3 -3
- package/dist/web/public/assets/{mcp-DhnXhO9B.js.map → mcp-vKajK1F8.js.map} +1 -1
- package/dist/web/public/assets/memos-DAt4k3DO.js +7 -0
- package/dist/web/public/assets/memos-DAt4k3DO.js.map +1 -0
- package/dist/web/public/assets/messengers-GYVTFlAj.js +2 -0
- package/dist/web/public/assets/messengers-GYVTFlAj.js.map +1 -0
- package/dist/web/public/assets/{mobile-CUZ359rQ.js → mobile-VUyTo40E.js} +3 -3
- package/dist/web/public/assets/{mobile-CUZ359rQ.js.map → mobile-VUyTo40E.js.map} +1 -1
- package/dist/web/public/assets/{network-BBdRdrH_.js → network-BUeWK3bs.js} +2 -2
- package/dist/web/public/assets/{network-BBdRdrH_.js.map → network-BUeWK3bs.js.map} +1 -1
- package/dist/web/public/assets/outbox-CEE0rwN3.js +2 -0
- package/dist/web/public/assets/outbox-CEE0rwN3.js.map +1 -0
- package/dist/web/public/assets/overview-BSOZ5gTD.js +12 -0
- package/dist/web/public/assets/overview-BSOZ5gTD.js.map +1 -0
- package/dist/web/public/assets/overview-COop5K2Y.js +12 -0
- package/dist/web/public/assets/overview-COop5K2Y.js.map +1 -0
- package/dist/web/public/assets/overview-DeH5ud6d.js +2 -0
- package/dist/web/public/assets/overview-DeH5ud6d.js.map +1 -0
- package/dist/web/public/assets/{pagination-DcsgDXXM.js → pagination-BBicLzXP.js} +3 -3
- package/dist/web/public/assets/{pagination-DcsgDXXM.js.map → pagination-BBicLzXP.js.map} +1 -1
- package/dist/web/public/assets/persona-CElXQZ4p.js +2 -0
- package/dist/web/public/assets/{persona-ig2ac4mY.js.map → persona-CElXQZ4p.js.map} +1 -1
- package/dist/web/public/assets/{plans-Bzbk8eUr.js → plans-Bo5LlLeH.js} +3 -8
- package/dist/web/public/assets/plans-Bo5LlLeH.js.map +1 -0
- package/dist/web/public/assets/{play-Di1jqulh.js → play-DX5wp4WH.js} +2 -2
- package/dist/web/public/assets/{play-Di1jqulh.js.map → play-DX5wp4WH.js.map} +1 -1
- package/dist/web/public/assets/{plus-C2zyJ1mF.js → plus-DH4J_YhN.js} +2 -2
- package/dist/web/public/assets/{plus-C2zyJ1mF.js.map → plus-DH4J_YhN.js.map} +1 -1
- package/dist/web/public/assets/policy-BrgOuDt_.js +2 -0
- package/dist/web/public/assets/policy-BrgOuDt_.js.map +1 -0
- package/dist/web/public/assets/{qr-code-C-ACsKv_.js → qr-code-YrEuhMPC.js} +2 -2
- package/dist/web/public/assets/{qr-code-C-ACsKv_.js.map → qr-code-YrEuhMPC.js.map} +1 -1
- package/dist/web/public/assets/{refresh-ccw-7HdadG5V.js → refresh-ccw-DlAd-eTQ.js} +2 -2
- package/dist/web/public/assets/{refresh-ccw-7HdadG5V.js.map → refresh-ccw-DlAd-eTQ.js.map} +1 -1
- package/dist/web/public/assets/{reminders-BDeiVYTC.js → reminders-DBEE0zXG.js} +3 -3
- package/dist/web/public/assets/{reminders-BDeiVYTC.js.map → reminders-DBEE0zXG.js.map} +1 -1
- package/dist/web/public/assets/{save-BYFmz9gD.js → save-BDOtZrfp.js} +2 -2
- package/dist/web/public/assets/{save-BYFmz9gD.js.map → save-BDOtZrfp.js.map} +1 -1
- package/dist/web/public/assets/schedules-DAyhVI8-.js +2 -0
- package/dist/web/public/assets/schedules-DAyhVI8-.js.map +1 -0
- package/dist/web/public/assets/search-55mtgHrB.js +17 -0
- package/dist/web/public/assets/search-55mtgHrB.js.map +1 -0
- package/dist/web/public/assets/{search-DxkvV-8p.js → search-CAICU3aU.js} +2 -2
- package/dist/web/public/assets/{search-DxkvV-8p.js.map → search-CAICU3aU.js.map} +1 -1
- package/dist/web/public/assets/security-CbP4QgVp.js +2 -0
- package/dist/web/public/assets/security-CbP4QgVp.js.map +1 -0
- package/dist/web/public/assets/server-Dg4e8pvm.js +7 -0
- package/dist/web/public/assets/server-Dg4e8pvm.js.map +1 -0
- package/dist/web/public/assets/service-gWZa3sup.js +7 -0
- package/dist/web/public/assets/service-gWZa3sup.js.map +1 -0
- package/dist/web/public/assets/{shield-alert-DXGk9Rak.js → shield-alert-DOKK9EnJ.js} +2 -2
- package/dist/web/public/assets/{shield-alert-DXGk9Rak.js.map → shield-alert-DOKK9EnJ.js.map} +1 -1
- package/dist/web/public/assets/sparkles-G0QIs9nP.js +7 -0
- package/dist/web/public/assets/sparkles-G0QIs9nP.js.map +1 -0
- package/dist/web/public/assets/start-D-abhl3q.js +2 -0
- package/dist/web/public/assets/start-D-abhl3q.js.map +1 -0
- package/dist/web/public/assets/{status-badge-D0nbFSom.js → status-badge-CyLdpsXq.js} +2 -2
- package/dist/web/public/assets/{status-badge-D0nbFSom.js.map → status-badge-CyLdpsXq.js.map} +1 -1
- package/dist/web/public/assets/{subtasks-DFiAXvDp.js → subtasks-BnEjSGUR.js} +3 -3
- package/dist/web/public/assets/{subtasks-DFiAXvDp.js.map → subtasks-BnEjSGUR.js.map} +1 -1
- package/dist/web/public/assets/{table-_WsrnZ_T.js → table-sCMZBe_Z.js} +2 -2
- package/dist/web/public/assets/{table-_WsrnZ_T.js.map → table-sCMZBe_Z.js.map} +1 -1
- package/dist/web/public/assets/terminal-_pXeEjXG.js +7 -0
- package/dist/web/public/assets/terminal-_pXeEjXG.js.map +1 -0
- package/dist/web/public/assets/{topn-C2PHE4tX.js → topn-D1B-gS1M.js} +3 -3
- package/dist/web/public/assets/{topn-C2PHE4tX.js.map → topn-D1B-gS1M.js.map} +1 -1
- package/dist/web/public/assets/{trash-2-1Km439fW.js → trash-2-D2x2UPuZ.js} +2 -2
- package/dist/web/public/assets/{trash-2-1Km439fW.js.map → trash-2-D2x2UPuZ.js.map} +1 -1
- package/dist/web/public/assets/use-a2a-C98e2Via.js +2 -0
- package/dist/web/public/assets/use-a2a-C98e2Via.js.map +1 -0
- package/dist/web/public/assets/{use-agim-skills-COSqZrdH.js → use-agim-skills-BbuJP3NT.js} +2 -2
- package/dist/web/public/assets/{use-agim-skills-COSqZrdH.js.map → use-agim-skills-BbuJP3NT.js.map} +1 -1
- package/dist/web/public/assets/use-background-tasks-CwFmOokw.js +2 -0
- package/dist/web/public/assets/{use-background-tasks-wCL7jn68.js.map → use-background-tasks-CwFmOokw.js.map} +1 -1
- package/dist/web/public/assets/use-jobs-BJjeJ5lh.js +2 -0
- package/dist/web/public/assets/use-jobs-BJjeJ5lh.js.map +1 -0
- package/dist/web/public/assets/use-memory-CXDwKCco.js +2 -0
- package/dist/web/public/assets/{use-memory-B9oRyQC8.js.map → use-memory-CXDwKCco.js.map} +1 -1
- package/dist/web/public/assets/use-observability-CY5ZUPrC.js +2 -0
- package/dist/web/public/assets/{use-observability-DGkN80qa.js.map → use-observability-CY5ZUPrC.js.map} +1 -1
- package/dist/web/public/assets/use-outbox-DT_XWB_7.js +7 -0
- package/dist/web/public/assets/use-outbox-DT_XWB_7.js.map +1 -0
- package/dist/web/public/assets/use-schedules-D4W8fMwo.js +7 -0
- package/dist/web/public/assets/use-schedules-D4W8fMwo.js.map +1 -0
- package/dist/web/public/assets/use-settings-DGIjmUX0.js +2 -0
- package/dist/web/public/assets/use-settings-DGIjmUX0.js.map +1 -0
- package/dist/web/public/assets/use-skills-D2bMM580.js +7 -0
- package/dist/web/public/assets/use-skills-D2bMM580.js.map +1 -0
- package/dist/web/public/assets/use-vector-BYOFwjU0.js +2 -0
- package/dist/web/public/assets/use-vector-BYOFwjU0.js.map +1 -0
- package/dist/web/public/assets/use-workspace-CuytyHwb.js +2 -0
- package/dist/web/public/assets/{use-workspace-BDXP5XO1.js.map → use-workspace-CuytyHwb.js.map} +1 -1
- package/dist/web/public/assets/vector-CL8ezpSR.js +2 -0
- package/dist/web/public/assets/vector-CL8ezpSR.js.map +1 -0
- package/dist/web/public/assets/viewer-CD0iEfPU.js +7 -0
- package/dist/web/public/assets/viewer-CD0iEfPU.js.map +1 -0
- package/dist/web/public/assets/workspace-BA1_hso3.js +17 -0
- package/dist/web/public/assets/workspace-BA1_hso3.js.map +1 -0
- package/dist/web/public/assets/workspaces-DyGLJUgB.js +7 -0
- package/dist/web/public/assets/workspaces-DyGLJUgB.js.map +1 -0
- package/dist/web/public/index.html +2 -2
- package/dist/web/public/loc.html +1 -1
- package/dist/web/public/login.html +2 -2
- package/dist/web/server.d.ts +2 -5
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +256 -122
- package/dist/web/server.js.map +1 -1
- package/package.json +2 -3
- package/dist/core/llm/imhub-dispatcher.d.ts.map +0 -1
- package/dist/core/llm/imhub-dispatcher.js.map +0 -1
- package/dist/web/public/assets/a2a-CZxwvgvh.js +0 -7
- package/dist/web/public/assets/a2a-CZxwvgvh.js.map +0 -1
- package/dist/web/public/assets/agents-CFB4Uj6b.js +0 -7
- package/dist/web/public/assets/agents-CFB4Uj6b.js.map +0 -1
- package/dist/web/public/assets/bgjobs-BYCQhd_1.js +0 -7
- package/dist/web/public/assets/bgjobs-BYCQhd_1.js.map +0 -1
- package/dist/web/public/assets/chat-DPkKy5y_.js +0 -17
- package/dist/web/public/assets/chat-DPkKy5y_.js.map +0 -1
- package/dist/web/public/assets/circle-check-COhM5JsK.js +0 -7
- package/dist/web/public/assets/circle-check-COhM5JsK.js.map +0 -1
- package/dist/web/public/assets/confirm-dialog-CgpJL9oN.js +0 -2
- package/dist/web/public/assets/distill-D9p8O8Jf.js +0 -7
- package/dist/web/public/assets/distill-D9p8O8Jf.js.map +0 -1
- package/dist/web/public/assets/email-Douv-rZ5.js +0 -7
- package/dist/web/public/assets/email-Douv-rZ5.js.map +0 -1
- package/dist/web/public/assets/health-DLzZ7KHc.js +0 -2
- package/dist/web/public/assets/hot-Yc7iad0D.js +0 -12
- package/dist/web/public/assets/index-DY2Zglku.js +0 -209
- package/dist/web/public/assets/index-DY2Zglku.js.map +0 -1
- package/dist/web/public/assets/index-DknVjPYB.css +0 -1
- package/dist/web/public/assets/installed-Zz34apdi.js.map +0 -1
- package/dist/web/public/assets/jobs-CtVRpl0r.js +0 -2
- package/dist/web/public/assets/jobs-CtVRpl0r.js.map +0 -1
- package/dist/web/public/assets/layout-BTCLgkgN.js +0 -2
- package/dist/web/public/assets/layout-BTCLgkgN.js.map +0 -1
- package/dist/web/public/assets/layout-Cxch59sI.js +0 -2
- package/dist/web/public/assets/layout-Cxch59sI.js.map +0 -1
- package/dist/web/public/assets/layout-DnANw2Q2.js +0 -2
- package/dist/web/public/assets/layout-DnANw2Q2.js.map +0 -1
- package/dist/web/public/assets/layout-yIZG87fq.js +0 -2
- package/dist/web/public/assets/layout-yIZG87fq.js.map +0 -1
- package/dist/web/public/assets/llm-CMMa85Ig.js +0 -27
- package/dist/web/public/assets/llm-CMMa85Ig.js.map +0 -1
- package/dist/web/public/assets/loader-circle-D8L1w9c1.js +0 -7
- package/dist/web/public/assets/memos-DQZc7llR.js +0 -12
- package/dist/web/public/assets/memos-DQZc7llR.js.map +0 -1
- package/dist/web/public/assets/messengers-DwSmauLs.js +0 -2
- package/dist/web/public/assets/messengers-DwSmauLs.js.map +0 -1
- package/dist/web/public/assets/outbox-CmN0U35l.js +0 -7
- package/dist/web/public/assets/outbox-CmN0U35l.js.map +0 -1
- package/dist/web/public/assets/persona-ig2ac4mY.js +0 -2
- package/dist/web/public/assets/plans-Bzbk8eUr.js.map +0 -1
- package/dist/web/public/assets/policy-yD1c2Pcn.js +0 -2
- package/dist/web/public/assets/policy-yD1c2Pcn.js.map +0 -1
- package/dist/web/public/assets/schedules-BddzBrxI.js +0 -7
- package/dist/web/public/assets/schedules-BddzBrxI.js.map +0 -1
- package/dist/web/public/assets/search-B8PlbtLg.js +0 -17
- package/dist/web/public/assets/search-B8PlbtLg.js.map +0 -1
- package/dist/web/public/assets/security-DpOGp3nS.js +0 -2
- package/dist/web/public/assets/security-DpOGp3nS.js.map +0 -1
- package/dist/web/public/assets/service-BsY8CaNG.js +0 -7
- package/dist/web/public/assets/service-BsY8CaNG.js.map +0 -1
- package/dist/web/public/assets/use-background-tasks-wCL7jn68.js +0 -2
- package/dist/web/public/assets/use-memory-B9oRyQC8.js +0 -2
- package/dist/web/public/assets/use-observability-DGkN80qa.js +0 -2
- package/dist/web/public/assets/use-settings-Co-iafXD.js +0 -2
- package/dist/web/public/assets/use-settings-Co-iafXD.js.map +0 -1
- package/dist/web/public/assets/use-workspace-BDXP5XO1.js +0 -2
- package/dist/web/public/assets/vector-BfIEx8xX.js +0 -2
- package/dist/web/public/assets/vector-BfIEx8xX.js.map +0 -1
- package/dist/web/public/assets/viewer-BPMZkT05.js +0 -12
- package/dist/web/public/assets/viewer-BPMZkT05.js.map +0 -1
- package/dist/web/public/assets/workspace-BbCchiHE.js +0 -17
- package/dist/web/public/assets/workspace-BbCchiHE.js.map +0 -1
- package/dist/web/public/assets/workspaces-5HE7pjdA.js +0 -7
- package/dist/web/public/assets/workspaces-5HE7pjdA.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as u,u as j,j as s,d as o,e as d,p as h}from"./index-DCfdN5R7.js";import{T as f,a as k,b as x,c as r,d as p,e as n}from"./table-sCMZBe_Z.js";import{b as g,e as b}from"./use-background-tasks-CwFmOokw.js";import{L as N}from"./loader-circle-DDdmcH0k.js";import{R as v}from"./refresh-ccw-DlAd-eTQ.js";import{C as w}from"./circle-x-CqFMzO-x.js";import"./react-DlP5eolq.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const y=u("Hourglass",[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M5 2h14",key:"pdyrp9"}],["path",{d:"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22",key:"1d314k"}],["path",{d:"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2",key:"1vvvr6"}]]);function
|
|
7
|
-
//# sourceMappingURL=asks-
|
|
6
|
+
*/const y=u("Hourglass",[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M5 2h14",key:"pdyrp9"}],["path",{d:"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22",key:"1d314k"}],["path",{d:"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2",key:"1vvvr6"}]]);function H(){const{t:e}=j(["tasks","common"]),t=g(),i=b();async function m(a){if(confirm(e("asks.cancelConfirm",{id:a.slice(0,8)})))try{await i.mutateAsync(a),h.success(e("asks.cancelledToast"))}catch(l){h.error(l?.message??String(l))}}const c=t.data?.pending??[];return s.jsxs("div",{className:"mx-auto flex max-w-6xl flex-col gap-4 p-4",children:[s.jsxs("header",{className:"flex items-center gap-3",children:[s.jsx(y,{className:"h-5 w-5 text-text-dim"}),s.jsx("h1",{className:"text-xl font-semibold",children:e("asks.title")}),s.jsx(o,{variant:"info",children:c.length}),s.jsxs(d,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>void t.refetch(),disabled:t.isFetching,"aria-label":e("actions.refresh",{ns:"common"}),children:[t.isFetching?s.jsx(N,{className:"h-4 w-4 animate-spin"}):s.jsx(v,{className:"h-4 w-4"}),s.jsx("span",{className:"hidden sm:inline",children:e("asks.refresh")})]})]}),s.jsx("p",{className:"text-sm text-text-dim",children:e("asks.subtitle")}),t.isLoading?s.jsx("div",{className:"h-32 rounded-md bg-surface-2 animate-pulse"}):c.length===0?s.jsx("section",{className:"rounded-md border border-border bg-surface p-6 text-center text-sm text-text-dim",children:e("asks.empty")}):s.jsx("section",{className:"rounded-md border border-border bg-surface",children:s.jsxs(f,{children:[s.jsx(k,{children:s.jsxs(x,{children:[s.jsx(r,{children:e("asks.col.reqId")}),s.jsx(r,{children:e("asks.col.thread")}),s.jsx(r,{children:e("asks.col.question")}),s.jsx(r,{children:e("asks.col.choices")}),s.jsx(r,{children:e("asks.col.age")}),s.jsx(r,{children:e("asks.col.actions")})]})}),s.jsx(p,{children:c.map(a=>s.jsxs(x,{children:[s.jsxs(n,{className:"font-mono text-[11px]",children:[a.reqId.slice(0,8),"…"]}),s.jsxs(n,{className:"font-mono text-[11px]",children:[a.platform,":",a.threadId]}),s.jsx(n,{className:"max-w-md break-words",children:a.question}),s.jsx(n,{children:s.jsx(o,{variant:"outline",children:a.choices})}),s.jsx(n,{className:"text-xs text-text-dim",children:C(a.ageMs,e)}),s.jsx(n,{children:s.jsxs(d,{variant:"ghost",size:"sm",onClick:()=>void m(a.reqId),disabled:i.isPending,className:"text-danger hover:text-danger",children:[s.jsx(w,{className:"h-4 w-4"}),e("asks.cancel")]})})]},a.reqId))})]})})]})}function C(e,t){return e<1e3?t("asks.justNow"):e<6e4?t("asks.seconds",{count:Math.floor(e/1e3)}):e<36e5?t("asks.minutes",{count:Math.floor(e/6e4)}):t("asks.hours",{count:Math.floor(e/36e5)})}export{H as default};
|
|
7
|
+
//# sourceMappingURL=asks-DGuBsrJ7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asks-
|
|
1
|
+
{"version":3,"file":"asks-DGuBsrJ7.js","sources":["../../node_modules/lucide-react/dist/esm/icons/hourglass.js","../../src/routes/tasks/asks.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Hourglass = createLucideIcon(\"Hourglass\", [\n [\"path\", { d: \"M5 22h14\", key: \"ehvnwv\" }],\n [\"path\", { d: \"M5 2h14\", key: \"pdyrp9\" }],\n [\n \"path\",\n {\n d: \"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22\",\n key: \"1d314k\"\n }\n ],\n [\n \"path\",\n { d: \"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2\", key: \"1vvvr6\" }\n ]\n]);\n\nexport { Hourglass as default };\n//# sourceMappingURL=hourglass.js.map\n","/**\n * /tasks/asks — admin view of pending ask_user (P1).\n */\n\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { Hourglass, Loader2, RefreshCcw, XCircle } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Table, TableBody, TableCell, TableHead, TableHeader, TableRow,\n} from '@/components/ui/table'\nimport {\n useAsksList, useAskCancel,\n} from '@/hooks/use-background-tasks'\n\nexport default function TasksAsksRoute(): JSX.Element {\n const { t } = useTranslation(['tasks', 'common'])\n const listQuery = useAsksList()\n const cancel = useAskCancel()\n\n async function onCancel(reqId: string): Promise<void> {\n if (!confirm(t('asks.cancelConfirm', { id: reqId.slice(0, 8) }))) return\n try {\n await cancel.mutateAsync(reqId)\n toast.success(t('asks.cancelledToast'))\n } catch (err) {\n toast.error(((err as Error)?.message ?? String(err)))\n }\n }\n\n const rows = listQuery.data?.pending ?? []\n return (\n <div className=\"mx-auto flex max-w-6xl flex-col gap-4 p-4\">\n <header className=\"flex items-center gap-3\">\n <Hourglass className=\"h-5 w-5 text-text-dim\" />\n <h1 className=\"text-xl font-semibold\">{t('asks.title')}</h1>\n <Badge variant=\"info\">{rows.length}</Badge>\n <Button\n variant=\"ghost\" size=\"sm\" className=\"ml-auto\"\n onClick={() => void listQuery.refetch()}\n disabled={listQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {listQuery.isFetching\n ? <Loader2 className=\"h-4 w-4 animate-spin\" />\n : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('asks.refresh')}</span>\n </Button>\n </header>\n <p className=\"text-sm text-text-dim\">{t('asks.subtitle')}</p>\n\n {listQuery.isLoading ? (\n <div className=\"h-32 rounded-md bg-surface-2 animate-pulse\" />\n ) : rows.length === 0 ? (\n <section className=\"rounded-md border border-border bg-surface p-6 text-center text-sm text-text-dim\">\n {t('asks.empty')}\n </section>\n ) : (\n <section className=\"rounded-md border border-border bg-surface\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{t('asks.col.reqId')}</TableHead>\n <TableHead>{t('asks.col.thread')}</TableHead>\n <TableHead>{t('asks.col.question')}</TableHead>\n <TableHead>{t('asks.col.choices')}</TableHead>\n <TableHead>{t('asks.col.age')}</TableHead>\n <TableHead>{t('asks.col.actions')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {rows.map((r) => (\n <TableRow key={r.reqId}>\n <TableCell className=\"font-mono text-[11px]\">{r.reqId.slice(0, 8)}…</TableCell>\n <TableCell className=\"font-mono text-[11px]\">{r.platform}:{r.threadId}</TableCell>\n <TableCell className=\"max-w-md break-words\">{r.question}</TableCell>\n <TableCell><Badge variant=\"outline\">{r.choices}</Badge></TableCell>\n <TableCell className=\"text-xs text-text-dim\">{fmtAge(r.ageMs, t)}</TableCell>\n <TableCell>\n <Button\n variant=\"ghost\" size=\"sm\"\n onClick={() => void onCancel(r.reqId)}\n disabled={cancel.isPending}\n className=\"text-danger hover:text-danger\"\n >\n <XCircle className=\"h-4 w-4\" />\n {t('asks.cancel')}\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </section>\n )}\n </div>\n )\n}\n\nfunction fmtAge(ms: number, t: (key: string, opts?: Record<string, unknown>) => string): string {\n if (ms < 1_000) return t('asks.justNow')\n if (ms < 60_000) return t('asks.seconds', { count: Math.floor(ms / 1_000) })\n if (ms < 3_600_000) return t('asks.minutes', { count: Math.floor(ms / 60_000) })\n return t('asks.hours', { count: Math.floor(ms / 3_600_000) })\n}\n"],"names":["Hourglass","createLucideIcon","TasksAsksRoute","t","useTranslation","listQuery","useAsksList","cancel","useAskCancel","onCancel","reqId","toast","err","rows","jsxs","jsx","Badge","Button","Loader2","RefreshCcw","Table","TableHeader","TableRow","TableHead","TableBody","r","TableCell","XCircle","fmtAge","ms"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as
|
|
2
|
-
//# sourceMappingURL=audit-
|
|
1
|
+
import{u as L,i as O,j as t,d as F,e as I,w as P,I as _,f as k}from"./index-DCfdN5R7.js";import{r as i}from"./react-DlP5eolq.js";import{D as B}from"./data-table-BkUshOZz.js";import{E as U}from"./empty-state-CuiqdZiB.js";import{b as $}from"./use-observability-CY5ZUPrC.js";import{L as q}from"./loader-circle-DDdmcH0k.js";import{R as z}from"./refresh-ccw-DlAd-eTQ.js";import{A as H}from"./activity-ul8Os7Pz.js";import"./table-sCMZBe_Z.js";import"./arrow-up-Dm0U4-6U.js";import"./arrow-down-7i0xwCI2.js";const G=300;function it(){const{t:e}=L(["observability","common"]),[s,d]=O(),c=Math.max(1,Number(s.get("days"))||7),n=s.get("agent")??"",l=s.get("platform")??"",r=s.get("user")??"",o=s.get("intent")??"",[u,j]=i.useState(n),[x,b]=i.useState(l),[f,w]=i.useState(r),[h,C]=i.useState(o);i.useEffect(()=>{j(n)},[n]),i.useEffect(()=>{b(l)},[l]),i.useEffect(()=>{w(r)},[r]),i.useEffect(()=>{C(o)},[o]),i.useEffect(()=>{const a=window.setTimeout(()=>{T({agent:u||null,platform:x||null,user:f||null,intent:h||null})},G);return()=>window.clearTimeout(a)},[u,x,f,h]);const E=i.useMemo(()=>({days:c,limit:200,...n?{agent:n}:{},...l?{platform:l}:{},...r?{user:r}:{},...o?{intent:o}:{}}),[c,n,l,r,o]),{data:v,isLoading:S,isFetching:y,refetch:M}=$(E),R=v?.invocations??[],p=v?.stats;function T(a){const g=new URLSearchParams(s);for(const[D,N]of Object.entries(a))N==null||N===""?g.delete(D):g.set(D,N);d(g,{replace:!0})}const A=i.useMemo(()=>[{id:"ts",header:e("audit.col.ts"),cell:a=>t.jsx("span",{className:"text-text-dim text-xs tabular-nums",children:J(a.ts)}),headClassName:"w-32"},{id:"agent",header:e("audit.col.agent"),cell:a=>t.jsx("span",{className:"font-medium",children:a.agent}),headClassName:"w-32"},{id:"platform",header:e("audit.col.platform"),cell:a=>t.jsx("span",{className:"text-text-dim",children:a.platform}),headClassName:"w-24",hideOnMobile:!0},{id:"user",header:e("audit.col.user"),cell:a=>t.jsx("span",{className:"font-mono text-xs text-text-dim line-clamp-1",children:a.user_id}),headClassName:"w-32",hideOnMobile:!0},{id:"intent",header:e("audit.col.intent"),cell:a=>t.jsx("span",{className:"text-text-dim line-clamp-1",children:a.intent||"—"}),asCardTitle:!0},{id:"duration",header:e("audit.col.duration"),cell:a=>t.jsxs("span",{className:"tabular-nums text-text-dim",children:[Math.round(a.duration_ms),"ms"]}),headClassName:"w-20"},{id:"cost",header:e("audit.col.cost"),cell:a=>t.jsxs("span",{className:"tabular-nums text-text-dim",children:["$",a.cost.toFixed(4)]}),headClassName:"w-24",hideOnMobile:!0},{id:"outcome",header:e("audit.col.outcome"),cell:a=>t.jsx(F,{variant:a.success?"success":"danger",title:a.error??"",children:a.success?e("audit.outcome.ok"):e("audit.outcome.fail")}),headClassName:"w-20"}],[e]);return t.jsxs("div",{className:"mx-auto flex max-w-7xl flex-col gap-4",children:[t.jsx("header",{className:"flex flex-col gap-1",children:t.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.jsx("h1",{className:"text-xl font-semibold",children:e("audit.title")}),t.jsxs(I,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>M(),disabled:y,"aria-label":e("actions.refresh",{ns:"common"}),children:[y?t.jsx(q,{className:"h-4 w-4 animate-spin"}):t.jsx(z,{className:"h-4 w-4"}),t.jsx("span",{className:"hidden sm:inline",children:e("actions.refresh",{ns:"common"})})]})]})}),p&&t.jsxs("div",{className:"flex flex-wrap items-center gap-3 text-sm",children:[t.jsxs("span",{className:"text-text-dim",children:[e("audit.stats.total"),": ",t.jsx("span",{className:"tabular-nums font-medium text-text",children:p.total})]}),t.jsxs("span",{className:"text-text-dim",children:[e("audit.stats.totalCost"),": ",t.jsxs("span",{className:"tabular-nums font-medium text-text",children:["$",p.totalCost.toFixed(4)]})]})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-4",children:[t.jsx(m,{id:"agent",label:e("audit.filter.agent"),value:u,onChange:j}),t.jsx(m,{id:"platform",label:e("audit.filter.platform"),value:x,onChange:b}),t.jsx(m,{id:"user",label:e("audit.filter.user"),value:f,onChange:w}),t.jsx(m,{id:"intent",label:e("audit.filter.intent"),value:h,onChange:C})]}),t.jsx(B,{columns:A,rows:R,getRowId:a=>String(a.id),loading:S,emptyState:t.jsx(U,{icon:t.jsx(H,{}),title:e("audit.empty.title"),description:e("audit.empty.description")})})]})}function m({id:e,label:s,value:d,onChange:c}){return t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(P,{htmlFor:e,className:"text-xs text-text-dim",children:s}),t.jsx(_,{id:e,value:d,onChange:n=>c(n.target.value),className:k("h-9")})]})}function J(e){try{const s=new Date(e);return Number.isNaN(s.getTime())?e:s.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return e}}export{it as default};
|
|
2
|
+
//# sourceMappingURL=audit-BRXsplJ2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-BVHTMS82.js","sources":["../../src/routes/observability/audit.tsx"],"sourcesContent":["/**\n * /observability/audit — recent invocations timeline. URL state for\n * the four filter slots (agent / platform / user / intent) so deep-\n * linking works; layout's ?days= window applies too.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useSearchParams } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { Activity, Loader2, RefreshCcw } from 'lucide-react'\n\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport { useAudit } from '@/hooks/use-observability'\nimport type { InvocationRow, ListAuditQuery } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nconst SEARCH_DEBOUNCE_MS = 300\n\nexport default function ObservabilityAuditRoute(): JSX.Element {\n const { t } = useTranslation(['observability', 'common'])\n const [params, setParams] = useSearchParams()\n const days = Math.max(1, Number(params.get('days')) || 7)\n\n const agent = params.get('agent') ?? ''\n const platform = params.get('platform') ?? ''\n const user = params.get('user') ?? ''\n const intent = params.get('intent') ?? ''\n\n // Local drafts for the four free-text filter inputs — debounce so\n // typing doesn't fire one /api/audit per keystroke.\n const [agentDraft, setAgentDraft] = useState(agent)\n const [platformDraft, setPlatformDraft] = useState(platform)\n const [userDraft, setUserDraft] = useState(user)\n const [intentDraft, setIntentDraft] = useState(intent)\n\n useEffect(() => { setAgentDraft(agent) }, [agent])\n useEffect(() => { setPlatformDraft(platform) }, [platform])\n useEffect(() => { setUserDraft(user) }, [user])\n useEffect(() => { setIntentDraft(intent) }, [intent])\n\n useEffect(() => {\n const timer = window.setTimeout(() => {\n patchParams({\n agent: agentDraft || null,\n platform: platformDraft || null,\n user: userDraft || null,\n intent: intentDraft || null,\n })\n }, SEARCH_DEBOUNCE_MS)\n return () => window.clearTimeout(timer)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [agentDraft, platformDraft, userDraft, intentDraft])\n\n const query: ListAuditQuery = useMemo(\n () => ({\n days,\n limit: 200,\n ...(agent ? { agent } : {}),\n ...(platform ? { platform } : {}),\n ...(user ? { user } : {}),\n ...(intent ? { intent } : {}),\n }),\n [days, agent, platform, user, intent],\n )\n\n const { data, isLoading, isFetching, refetch } = useAudit(query)\n const rows = data?.invocations ?? []\n const stats = data?.stats\n\n function patchParams(patch: Record<string, string | null>): void {\n const next = new URLSearchParams(params)\n for (const [k, v] of Object.entries(patch)) {\n if (v == null || v === '') next.delete(k)\n else next.set(k, v)\n }\n setParams(next, { replace: true })\n }\n\n const columns: DataTableColumn<InvocationRow>[] = useMemo(\n () => [\n {\n id: 'ts',\n header: t('audit.col.ts'),\n cell: (r) => <span className=\"text-text-dim text-xs tabular-nums\">{formatTime(r.ts)}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'agent',\n header: t('audit.col.agent'),\n cell: (r) => <span className=\"font-medium\">{r.agent}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'platform',\n header: t('audit.col.platform'),\n cell: (r) => <span className=\"text-text-dim\">{r.platform}</span>,\n headClassName: 'w-24',\n hideOnMobile: true,\n },\n {\n id: 'user',\n header: t('audit.col.user'),\n cell: (r) => <span className=\"font-mono text-xs text-text-dim line-clamp-1\">{r.user_id}</span>,\n headClassName: 'w-32',\n hideOnMobile: true,\n },\n {\n id: 'intent',\n header: t('audit.col.intent'),\n cell: (r) => <span className=\"text-text-dim line-clamp-1\">{r.intent || '—'}</span>,\n asCardTitle: true,\n },\n {\n id: 'duration',\n header: t('audit.col.duration'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">{Math.round(r.duration_ms)}ms</span>,\n headClassName: 'w-20',\n },\n {\n id: 'cost',\n header: t('audit.col.cost'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">${r.cost.toFixed(4)}</span>,\n headClassName: 'w-24',\n hideOnMobile: true,\n },\n {\n id: 'outcome',\n header: t('audit.col.outcome'),\n cell: (r) => (\n <Badge variant={r.success ? 'success' : 'danger'} title={r.error ?? ''}>\n {r.success ? t('audit.outcome.ok') : t('audit.outcome.fail')}\n </Badge>\n ),\n headClassName: 'w-20',\n },\n ],\n [t],\n )\n\n return (\n <div className=\"mx-auto flex max-w-7xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('audit.title')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n </header>\n\n {stats && (\n <div className=\"flex flex-wrap items-center gap-3 text-sm\">\n <span className=\"text-text-dim\">{t('audit.stats.total')}: <span className=\"tabular-nums font-medium text-text\">{stats.total}</span></span>\n <span className=\"text-text-dim\">{t('audit.stats.totalCost')}: <span className=\"tabular-nums font-medium text-text\">${stats.totalCost.toFixed(4)}</span></span>\n </div>\n )}\n\n {/* Filter row */}\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-4\">\n <FilterInput id=\"agent\" label={t('audit.filter.agent')} value={agentDraft} onChange={setAgentDraft} />\n <FilterInput id=\"platform\" label={t('audit.filter.platform')} value={platformDraft} onChange={setPlatformDraft} />\n <FilterInput id=\"user\" label={t('audit.filter.user')} value={userDraft} onChange={setUserDraft} />\n <FilterInput id=\"intent\" label={t('audit.filter.intent')} value={intentDraft} onChange={setIntentDraft} />\n </div>\n\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(r) => String(r.id)}\n loading={isLoading}\n emptyState={\n <EmptyState\n icon={<Activity />}\n title={t('audit.empty.title')}\n description={t('audit.empty.description')}\n />\n }\n />\n </div>\n )\n}\n\ninterface FilterInputProps {\n id: string\n label: string\n value: string\n onChange: (v: string) => void\n}\n\nfunction FilterInput({ id, label, value, onChange }: FilterInputProps): JSX.Element {\n return (\n <div className=\"flex flex-col gap-1\">\n <Label htmlFor={id} className=\"text-xs text-text-dim\">{label}</Label>\n <Input\n id={id}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className={cn('h-9')}\n />\n </div>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["SEARCH_DEBOUNCE_MS","ObservabilityAuditRoute","t","useTranslation","params","setParams","useSearchParams","days","agent","platform","user","intent","agentDraft","setAgentDraft","useState","platformDraft","setPlatformDraft","userDraft","setUserDraft","intentDraft","setIntentDraft","useEffect","timer","patchParams","query","useMemo","data","isLoading","isFetching","refetch","useAudit","rows","stats","patch","next","k","v","columns","r","jsx","formatTime","jsxs","Badge","Button","Loader2","RefreshCcw","FilterInput","DataTable","EmptyState","Activity","id","label","value","onChange","Label","Input","e","cn","iso","d"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit-BRXsplJ2.js","sources":["../../src/routes/observability/audit.tsx"],"sourcesContent":["/**\n * /observability/audit — recent invocations timeline. URL state for\n * the four filter slots (agent / platform / user / intent) so deep-\n * linking works; layout's ?days= window applies too.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useSearchParams } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { Activity, Loader2, RefreshCcw } from 'lucide-react'\n\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport { useAudit } from '@/hooks/use-observability'\nimport type { InvocationRow, ListAuditQuery } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nconst SEARCH_DEBOUNCE_MS = 300\n\nexport default function ObservabilityAuditRoute(): JSX.Element {\n const { t } = useTranslation(['observability', 'common'])\n const [params, setParams] = useSearchParams()\n const days = Math.max(1, Number(params.get('days')) || 7)\n\n const agent = params.get('agent') ?? ''\n const platform = params.get('platform') ?? ''\n const user = params.get('user') ?? ''\n const intent = params.get('intent') ?? ''\n\n // Local drafts for the four free-text filter inputs — debounce so\n // typing doesn't fire one /api/audit per keystroke.\n const [agentDraft, setAgentDraft] = useState(agent)\n const [platformDraft, setPlatformDraft] = useState(platform)\n const [userDraft, setUserDraft] = useState(user)\n const [intentDraft, setIntentDraft] = useState(intent)\n\n useEffect(() => { setAgentDraft(agent) }, [agent])\n useEffect(() => { setPlatformDraft(platform) }, [platform])\n useEffect(() => { setUserDraft(user) }, [user])\n useEffect(() => { setIntentDraft(intent) }, [intent])\n\n useEffect(() => {\n const timer = window.setTimeout(() => {\n patchParams({\n agent: agentDraft || null,\n platform: platformDraft || null,\n user: userDraft || null,\n intent: intentDraft || null,\n })\n }, SEARCH_DEBOUNCE_MS)\n return () => window.clearTimeout(timer)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [agentDraft, platformDraft, userDraft, intentDraft])\n\n const query: ListAuditQuery = useMemo(\n () => ({\n days,\n limit: 200,\n ...(agent ? { agent } : {}),\n ...(platform ? { platform } : {}),\n ...(user ? { user } : {}),\n ...(intent ? { intent } : {}),\n }),\n [days, agent, platform, user, intent],\n )\n\n const { data, isLoading, isFetching, refetch } = useAudit(query)\n const rows = data?.invocations ?? []\n const stats = data?.stats\n\n function patchParams(patch: Record<string, string | null>): void {\n const next = new URLSearchParams(params)\n for (const [k, v] of Object.entries(patch)) {\n if (v == null || v === '') next.delete(k)\n else next.set(k, v)\n }\n setParams(next, { replace: true })\n }\n\n const columns: DataTableColumn<InvocationRow>[] = useMemo(\n () => [\n {\n id: 'ts',\n header: t('audit.col.ts'),\n cell: (r) => <span className=\"text-text-dim text-xs tabular-nums\">{formatTime(r.ts)}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'agent',\n header: t('audit.col.agent'),\n cell: (r) => <span className=\"font-medium\">{r.agent}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'platform',\n header: t('audit.col.platform'),\n cell: (r) => <span className=\"text-text-dim\">{r.platform}</span>,\n headClassName: 'w-24',\n hideOnMobile: true,\n },\n {\n id: 'user',\n header: t('audit.col.user'),\n cell: (r) => <span className=\"font-mono text-xs text-text-dim line-clamp-1\">{r.user_id}</span>,\n headClassName: 'w-32',\n hideOnMobile: true,\n },\n {\n id: 'intent',\n header: t('audit.col.intent'),\n cell: (r) => <span className=\"text-text-dim line-clamp-1\">{r.intent || '—'}</span>,\n asCardTitle: true,\n },\n {\n id: 'duration',\n header: t('audit.col.duration'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">{Math.round(r.duration_ms)}ms</span>,\n headClassName: 'w-20',\n },\n {\n id: 'cost',\n header: t('audit.col.cost'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">${r.cost.toFixed(4)}</span>,\n headClassName: 'w-24',\n hideOnMobile: true,\n },\n {\n id: 'outcome',\n header: t('audit.col.outcome'),\n cell: (r) => (\n <Badge variant={r.success ? 'success' : 'danger'} title={r.error ?? ''}>\n {r.success ? t('audit.outcome.ok') : t('audit.outcome.fail')}\n </Badge>\n ),\n headClassName: 'w-20',\n },\n ],\n [t],\n )\n\n return (\n <div className=\"mx-auto flex max-w-7xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('audit.title')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n </header>\n\n {stats && (\n <div className=\"flex flex-wrap items-center gap-3 text-sm\">\n <span className=\"text-text-dim\">{t('audit.stats.total')}: <span className=\"tabular-nums font-medium text-text\">{stats.total}</span></span>\n <span className=\"text-text-dim\">{t('audit.stats.totalCost')}: <span className=\"tabular-nums font-medium text-text\">${stats.totalCost.toFixed(4)}</span></span>\n </div>\n )}\n\n {/* Filter row */}\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-4\">\n <FilterInput id=\"agent\" label={t('audit.filter.agent')} value={agentDraft} onChange={setAgentDraft} />\n <FilterInput id=\"platform\" label={t('audit.filter.platform')} value={platformDraft} onChange={setPlatformDraft} />\n <FilterInput id=\"user\" label={t('audit.filter.user')} value={userDraft} onChange={setUserDraft} />\n <FilterInput id=\"intent\" label={t('audit.filter.intent')} value={intentDraft} onChange={setIntentDraft} />\n </div>\n\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(r) => String(r.id)}\n loading={isLoading}\n emptyState={\n <EmptyState\n icon={<Activity />}\n title={t('audit.empty.title')}\n description={t('audit.empty.description')}\n />\n }\n />\n </div>\n )\n}\n\ninterface FilterInputProps {\n id: string\n label: string\n value: string\n onChange: (v: string) => void\n}\n\nfunction FilterInput({ id, label, value, onChange }: FilterInputProps): JSX.Element {\n return (\n <div className=\"flex flex-col gap-1\">\n <Label htmlFor={id} className=\"text-xs text-text-dim\">{label}</Label>\n <Input\n id={id}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className={cn('h-9')}\n />\n </div>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["SEARCH_DEBOUNCE_MS","ObservabilityAuditRoute","t","useTranslation","params","setParams","useSearchParams","days","agent","platform","user","intent","agentDraft","setAgentDraft","useState","platformDraft","setPlatformDraft","userDraft","setUserDraft","intentDraft","setIntentDraft","useEffect","timer","patchParams","query","useMemo","data","isLoading","isFetching","refetch","useAudit","rows","stats","patch","next","k","v","columns","r","jsx","formatTime","jsxs","Badge","Button","Loader2","RefreshCcw","FilterInput","DataTable","EmptyState","Activity","id","label","value","onChange","Label","Input","e","cn","iso","d"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as e}from"./index-DCfdN5R7.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/const t=e("Bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]);export{t as B};
|
|
7
|
-
//# sourceMappingURL=bell-
|
|
7
|
+
//# sourceMappingURL=bell-B-UdeJsp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bell-
|
|
1
|
+
{"version":3,"file":"bell-B-UdeJsp.js","sources":["../../node_modules/lucide-react/dist/esm/icons/bell.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Bell = createLucideIcon(\"Bell\", [\n [\"path\", { d: \"M10.268 21a2 2 0 0 0 3.464 0\", key: \"vwvbt9\" }],\n [\n \"path\",\n {\n d: \"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\",\n key: \"11g9vi\"\n }\n ]\n]);\n\nexport { Bell as default };\n//# sourceMappingURL=bell.js.map\n"],"names":["Bell","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAOC,EAAiB,OAAQ,CACpC,CAAC,OAAQ,CAAE,EAAG,+BAAgC,IAAK,QAAQ,CAAE,EAC7D,CACE,OACA,CACE,EAAG,gIACH,IAAK,QACX,CACA,CACA,CAAC","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as f,s as N,u as w,i as _,j as t,e as y,k as S,l as C,m as v,n as I,o as d}from"./index-DCfdN5R7.js";import{r as m}from"./react-DlP5eolq.js";import{D as T}from"./data-table-BkUshOZz.js";import{E as D}from"./empty-state-CuiqdZiB.js";import{S as R}from"./status-badge-CyLdpsXq.js";import{L as B}from"./loader-circle-DDdmcH0k.js";import{R as L}from"./refresh-ccw-DlAd-eTQ.js";import{T as M}from"./terminal-_pXeEjXG.js";import"./table-sCMZBe_Z.js";import"./arrow-up-Dm0U4-6U.js";import"./arrow-down-7i0xwCI2.js";const k={all:["bgjobs"],list:s=>["bgjobs","list",s]};function A(s){return f({queryKey:k.list(s),queryFn:()=>N.listBgJobs(s),refetchInterval:5e3,refetchIntervalInBackground:!1})}function U(){const{t:s}=w(["tasks","common"]),[a,i]=_(),l=a.get("root")??null,{data:o,isLoading:x,isFetching:c,refetch:h}=A(l?{root:l}:{}),n=o?.roots??[],b=m.useMemo(()=>o?o.jobs?o.jobs:o.groups?o.groups.flatMap(e=>e.jobs):[]:[],[o]);function j(e){const r=new URLSearchParams(a);e?r.set("root",e):r.delete("root"),i(r,{replace:!0})}const p=m.useMemo(()=>[{id:"name",header:s("bgjobs.col.name"),cell:e=>t.jsx("span",{className:"font-medium",children:e.name}),asCardTitle:!0},{id:"status",header:s("bgjobs.col.status"),cell:e=>t.jsx(R,{status:e.status,children:e.status}),headClassName:"w-28"},{id:"root",header:s("bgjobs.col.root"),cell:e=>{const r=n.find(g=>g.id===e.rootId);return t.jsx("span",{className:"text-text-dim",title:r?.path??e.rootId,children:r?.label??e.rootId})},headClassName:"w-32"},{id:"pid",header:s("bgjobs.col.pid"),cell:e=>t.jsx("span",{className:"tabular-nums text-text-dim",children:e.pid??"—"}),headClassName:"w-20",hideOnMobile:!0},{id:"startedAt",header:s("bgjobs.col.startedAt"),cell:e=>t.jsx("span",{className:"text-text-dim",children:u(e.started_at)}),headClassName:"w-40",hideOnMobile:!0},{id:"endedAt",header:s("bgjobs.col.endedAt"),cell:e=>t.jsx("span",{className:"text-text-dim",children:u(e.ended_at)}),headClassName:"w-40",hideOnMobile:!0},{id:"exit",header:s("bgjobs.col.exit"),cell:e=>e.ended_at==null?t.jsx("span",{className:"text-text-muted",children:s("bgjobs.stillRunning")}):e.exit_code===0?t.jsx("span",{className:"text-success",children:s("bgjobs.exitOk")}):e.exit_code!=null?t.jsx("span",{className:"text-danger tabular-nums",children:e.exit_code}):t.jsx("span",{className:"text-text-muted",children:"—"}),headClassName:"w-20"}],[s,n]);return t.jsxs("div",{className:"mx-auto flex max-w-7xl flex-col gap-4",children:[t.jsxs("header",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.jsx("h1",{className:"text-xl font-semibold",children:s("bgjobs.title")}),t.jsxs(y,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>h(),disabled:c,"aria-label":s("actions.refresh",{ns:"common"}),children:[c?t.jsx(B,{className:"h-4 w-4 animate-spin"}):t.jsx(L,{className:"h-4 w-4"}),t.jsx("span",{className:"hidden sm:inline",children:s("actions.refresh",{ns:"common"})})]})]}),t.jsx("p",{className:"text-sm text-text-dim",children:s("bgjobs.subtitle")})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("label",{className:"text-sm text-text-dim",htmlFor:"root-filter",children:s("bgjobs.filter.root")}),t.jsxs(S,{value:l??"__any__",onValueChange:e=>j(e==="__any__"?null:e),children:[t.jsx(C,{id:"root-filter",className:"w-[180px]",children:t.jsx(v,{})}),t.jsxs(I,{children:[t.jsx(d,{value:"__any__",children:s("bgjobs.filter.rootAny")}),n.map(e=>t.jsx(d,{value:e.id,children:e.label},e.id))]})]})]}),t.jsx(T,{columns:p,rows:b,getRowId:e=>`${e.rootId}:${e.id}`,loading:x,emptyState:t.jsx(D,{icon:t.jsx(M,{}),title:s("bgjobs.empty.title"),description:s("bgjobs.empty.description")})})]})}function u(s){if(s==null)return"—";try{const a=new Date(s);if(Number.isNaN(a.getTime()))return s;const i=new Date;return a.toDateString()===i.toDateString()?a.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"}):a.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return s}}export{U as default};
|
|
2
|
+
//# sourceMappingURL=bgjobs-CcRiffyJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bgjobs-CcRiffyJ.js","sources":["../../src/hooks/use-bgjobs.ts","../../src/routes/tasks/bgjobs.tsx"],"sourcesContent":["/**\n * useBgjobs — react-query wrapper for /api/bgjobs.\n *\n * Bgjobs are a read-only window into the wrapper-managed bgjob\n * directories (Claude Code's ~/.claude/bgjobs/, opencode's\n * ~/.config/opencode/bgjobs/, codex's ~/.codex/bgjobs/, plus any\n * AGIM_BGJOB_ROOTS custom paths). No SSE channel for bgjob events;\n * the page polls or refresh-on-demand.\n *\n * Response shape varies based on whether `root` is set — when no\n * root filter is applied the backend returns groups keyed by rootId.\n * The hook leaves that shape intact; flattening logic lives in the\n * route's `useMemo` so a future \"show per-root\" view can pivot\n * cheaply.\n */\n\nimport { useQueryClient, useQuery } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type { ListBgjobsQuery, ListBgjobsResponse } from '@/types/api'\n\nexport const bgjobsKeys = {\n all: ['bgjobs'] as const,\n list: (q: ListBgjobsQuery) => ['bgjobs', 'list', q] as const,\n}\n\nexport function useBgjobs(query: ListBgjobsQuery) {\n return useQuery<ListBgjobsResponse>({\n queryKey: bgjobsKeys.list(query),\n queryFn: () => api.listBgJobs(query),\n // Bgjobs file scans are cheap (FS reads) but we don't want to\n // hammer when the user idles on the tab. Auto-refetch every 5s\n // while the tab is focused matches the v1 admin's behavior.\n refetchInterval: 5000,\n refetchIntervalInBackground: false,\n })\n}\n\nexport function useInvalidateBgjobs() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: bgjobsKeys.all })\n}\n","/**\n * /tasks/bgjobs — long-running scripts launched by agent wrappers\n * via their bgjob facility. Read-only; the wrapper is the source of\n * truth for writes (kill / restart).\n *\n * Response shape: when no `?root=` filter, backend returns\n * `{ roots, groups: [{ rootId, jobs }] }`; with a root filter,\n * `{ roots: [oneRoot], jobs }`. We flatten via useMemo so the\n * DataTable consumes one flat list regardless of mode.\n *\n * No SSE: bgjob events aren't on the event-bus. We rely on the 5s\n * react-query poll set in use-bgjobs.ts.\n */\n\nimport { useMemo } from 'react'\nimport { useSearchParams } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { Loader2, RefreshCcw, Terminal } from 'lucide-react'\n\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { StatusBadge } from '@/components/common/status-badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/ui/select'\nimport { useBgjobs } from '@/hooks/use-bgjobs'\nimport type { BgjobSummary } from '@/types/api'\n\nexport default function BgjobsRoute(): JSX.Element {\n const { t } = useTranslation(['tasks', 'common'])\n const [params, setParams] = useSearchParams()\n const rootFilter = params.get('root') ?? null\n\n const { data, isLoading, isFetching, refetch } = useBgjobs(\n rootFilter ? { root: rootFilter } : {},\n )\n\n const roots = data?.roots ?? []\n const rows: BgjobSummary[] = useMemo(() => {\n if (!data) return []\n if (data.jobs) return data.jobs\n if (data.groups) return data.groups.flatMap((g) => g.jobs)\n return []\n }, [data])\n\n function setRoot(next: string | null): void {\n const p = new URLSearchParams(params)\n if (!next) p.delete('root')\n else p.set('root', next)\n setParams(p, { replace: true })\n }\n\n const columns: DataTableColumn<BgjobSummary>[] = useMemo(\n () => [\n {\n id: 'name',\n header: t('bgjobs.col.name'),\n cell: (r) => <span className=\"font-medium\">{r.name}</span>,\n asCardTitle: true,\n },\n {\n id: 'status',\n header: t('bgjobs.col.status'),\n cell: (r) => <StatusBadge status={r.status}>{r.status}</StatusBadge>,\n headClassName: 'w-28',\n },\n {\n id: 'root',\n header: t('bgjobs.col.root'),\n cell: (r) => {\n const root = roots.find((rt) => rt.id === r.rootId)\n return (\n <span className=\"text-text-dim\" title={root?.path ?? r.rootId}>\n {root?.label ?? r.rootId}\n </span>\n )\n },\n headClassName: 'w-32',\n },\n {\n id: 'pid',\n header: t('bgjobs.col.pid'),\n cell: (r) => (\n <span className=\"tabular-nums text-text-dim\">{r.pid ?? '—'}</span>\n ),\n headClassName: 'w-20',\n hideOnMobile: true,\n },\n {\n id: 'startedAt',\n header: t('bgjobs.col.startedAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.started_at)}</span>,\n headClassName: 'w-40',\n hideOnMobile: true,\n },\n {\n id: 'endedAt',\n header: t('bgjobs.col.endedAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.ended_at)}</span>,\n headClassName: 'w-40',\n hideOnMobile: true,\n },\n {\n id: 'exit',\n header: t('bgjobs.col.exit'),\n cell: (r) => {\n if (r.ended_at == null) return <span className=\"text-text-muted\">{t('bgjobs.stillRunning')}</span>\n if (r.exit_code === 0) return <span className=\"text-success\">{t('bgjobs.exitOk')}</span>\n if (r.exit_code != null) return <span className=\"text-danger tabular-nums\">{r.exit_code}</span>\n return <span className=\"text-text-muted\">—</span>\n },\n headClassName: 'w-20',\n },\n ],\n [t, roots],\n )\n\n return (\n <div className=\"mx-auto flex max-w-7xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('bgjobs.title')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('bgjobs.subtitle')}</p>\n </header>\n\n <div className=\"flex flex-wrap items-center gap-2\">\n <label className=\"text-sm text-text-dim\" htmlFor=\"root-filter\">\n {t('bgjobs.filter.root')}\n </label>\n <Select\n value={rootFilter ?? '__any__'}\n onValueChange={(v) => setRoot(v === '__any__' ? null : v)}\n >\n <SelectTrigger id=\"root-filter\" className=\"w-[180px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"__any__\">{t('bgjobs.filter.rootAny')}</SelectItem>\n {roots.map((r) => (\n <SelectItem key={r.id} value={r.id}>\n {r.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(r) => `${r.rootId}:${r.id}`}\n loading={isLoading}\n emptyState={\n <EmptyState\n icon={<Terminal />}\n title={t('bgjobs.empty.title')}\n description={t('bgjobs.empty.description')}\n />\n }\n />\n </div>\n )\n}\n\nfunction formatTime(iso: string | null): string {\n if (iso == null) return '—'\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n const now = new Date()\n const sameDay = d.toDateString() === now.toDateString()\n if (sameDay) {\n return d.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit', second: '2-digit' })\n }\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["bgjobsKeys","q","useBgjobs","query","useQuery","api","BgjobsRoute","t","useTranslation","params","setParams","useSearchParams","rootFilter","data","isLoading","isFetching","refetch","roots","rows","useMemo","g","setRoot","next","p","columns","r","jsx","StatusBadge","root","rt","formatTime","jsxs","Button","Loader2","RefreshCcw","Select","v","SelectTrigger","SelectValue","SelectContent","SelectItem","DataTable","EmptyState","Terminal","iso","d","now"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{h as a}from"./index-DCfdN5R7.js";/**
|
|
2
|
+
* @license lucide-react v0.469.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const e=a("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);export{e as B};
|
|
7
|
+
//# sourceMappingURL=book-open-CSCq5cjL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"book-open-CSCq5cjL.js","sources":["../../node_modules/lucide-react/dist/esm/icons/book-open.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst BookOpen = createLucideIcon(\"BookOpen\", [\n [\"path\", { d: \"M12 7v14\", key: \"1akyts\" }],\n [\n \"path\",\n {\n d: \"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\",\n key: \"ruj8y\"\n }\n ]\n]);\n\nexport { BookOpen as default };\n//# sourceMappingURL=book-open.js.map\n"],"names":["BookOpen","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,WAAY,CAC5C,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CACE,OACA,CACE,EAAG,qIACH,IAAK,OACX,CACA,CACA,CAAC","x_google_ignoreList":[0]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as a}from"./index-DCfdN5R7.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/const t=a("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]);export{t as B};
|
|
7
|
-
//# sourceMappingURL=brain-
|
|
7
|
+
//# sourceMappingURL=brain-Dl4DF5kX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain-
|
|
1
|
+
{"version":3,"file":"brain-Dl4DF5kX.js","sources":["../../node_modules/lucide-react/dist/esm/icons/brain.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Brain = createLucideIcon(\"Brain\", [\n [\n \"path\",\n {\n d: \"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z\",\n key: \"l5xja\"\n }\n ],\n [\n \"path\",\n {\n d: \"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z\",\n key: \"ep3f8r\"\n }\n ],\n [\"path\", { d: \"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4\", key: \"1p4c4q\" }],\n [\"path\", { d: \"M17.599 6.5a3 3 0 0 0 .399-1.375\", key: \"tmeiqw\" }],\n [\"path\", { d: \"M6.003 5.125A3 3 0 0 0 6.401 6.5\", key: \"105sqy\" }],\n [\"path\", { d: \"M3.477 10.896a4 4 0 0 1 .585-.396\", key: \"ql3yin\" }],\n [\"path\", { d: \"M19.938 10.5a4 4 0 0 1 .585.396\", key: \"1qfode\" }],\n [\"path\", { d: \"M6 18a4 4 0 0 1-1.967-.516\", key: \"2e4loj\" }],\n [\"path\", { d: \"M19.967 17.484A4 4 0 0 1 18 18\", key: \"159ez6\" }]\n]);\n\nexport { Brain as default };\n//# sourceMappingURL=brain.js.map\n"],"names":["Brain","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAQC,EAAiB,QAAS,CACtC,CACE,OACA,CACE,EAAG,uFACH,IAAK,OACX,CACA,EACE,CACE,OACA,CACE,EAAG,uFACH,IAAK,QACX,CACA,EACE,CAAC,OAAQ,CAAE,EAAG,6CAA8C,IAAK,QAAQ,CAAE,EAC3E,CAAC,OAAQ,CAAE,EAAG,mCAAoC,IAAK,QAAQ,CAAE,EACjE,CAAC,OAAQ,CAAE,EAAG,mCAAoC,IAAK,QAAQ,CAAE,EACjE,CAAC,OAAQ,CAAE,EAAG,oCAAqC,IAAK,QAAQ,CAAE,EAClE,CAAC,OAAQ,CAAE,EAAG,kCAAmC,IAAK,QAAQ,CAAE,EAChE,CAAC,OAAQ,CAAE,EAAG,6BAA8B,IAAK,QAAQ,CAAE,EAC3D,CAAC,OAAQ,CAAE,EAAG,iCAAkC,IAAK,QAAQ,CAAE,CACjE,CAAC","x_google_ignoreList":[0]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as e}from"./index-DCfdN5R7.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/const a=e("Briefcase",[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]]);export{a as B};
|
|
7
|
-
//# sourceMappingURL=briefcase-
|
|
7
|
+
//# sourceMappingURL=briefcase-CeKUkFSq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefcase-
|
|
1
|
+
{"version":3,"file":"briefcase-CeKUkFSq.js","sources":["../../node_modules/lucide-react/dist/esm/icons/briefcase.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Briefcase = createLucideIcon(\"Briefcase\", [\n [\"path\", { d: \"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\", key: \"jecpp\" }],\n [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"6\", rx: \"2\", key: \"i6l2r4\" }]\n]);\n\nexport { Briefcase as default };\n//# sourceMappingURL=briefcase.js.map\n"],"names":["Briefcase","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAYC,EAAiB,YAAa,CAC9C,CAAC,OAAQ,CAAE,EAAG,6CAA8C,IAAK,OAAO,CAAE,EAC1E,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,CAChF,CAAC","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{h as I,u as G,as as J,at as Q,p as j,j as e,au as W,e as f,f as g,b as N,av as X,aw as Z,ah as ee,d as R,ax as te}from"./index-DCfdN5R7.js";import{r as n}from"./react-DlP5eolq.js";import{C as se}from"./chevron-left-01fAFVpo.js";import{A as ae}from"./arrow-down-7i0xwCI2.js";import{L as A}from"./loader-circle-DDdmcH0k.js";import{S as ne}from"./sparkles-G0QIs9nP.js";import{A as re}from"./activity-ul8Os7Pz.js";/**
|
|
2
|
+
* @license lucide-react v0.469.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const oe=I("Clock3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16.5 12",key:"1aq6pp"}]]);/**
|
|
7
|
+
* @license lucide-react v0.469.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const le=I("EllipsisVertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]]),ce={open:"bg-success",connecting:"bg-warning animate-pulse",closed:"bg-text-muted",error:"bg-danger"};function w(s){return Number.isFinite(s)?s:Date.now()}function ie(s){const o=new Date(w(s)),a=String(o.getMonth()+1).padStart(2,"0"),d=String(o.getDate()).padStart(2,"0");return`${o.getFullYear()}-${a}-${d}`}function ue(s,o){return new Intl.DateTimeFormat(o,{month:"short",day:"numeric",weekday:"short"}).format(new Date(w(s)))}function D(s,o){return new Intl.DateTimeFormat(o,{hour:"2-digit",minute:"2-digit"}).format(new Date(w(s)))}function T(s){return!s||s<=0?"0ms":s<1e3?`${s}ms`:`${(s/1e3).toFixed(s>=1e4?0:1)}s`}function de(s,o){const a=[];let d="";for(const i of s){const m=ie(i.timestamp);m!==d&&(a.push({type:"divider",key:`d-${m}`,label:ue(i.timestamp,o)}),d=m),a.push({type:"message",key:i.id,msg:i})}return a}function me(s){switch(s){case"running":return"bg-info-bg text-info";case"success":return"bg-success-bg text-success";case"error":return"bg-danger-bg text-danger"}}function ye(){const{t:s,i18n:o}=G(["chat","common"]),{state:a,send:d,switchAgent:i,approvalClick:m,newConversation:M,clearError:k}=J(),[p,b]=n.useState(""),[v,l]=n.useState("none"),[E,F]=n.useState(!1),[L,S]=n.useState(!1),[B,q]=n.useState(""),h=n.useRef(null),x=n.useRef(null),$=s(`chat.status.${a.status}`,{defaultValue:a.status}),H=n.useMemo(()=>[s("chat.quickPrompt.plan"),s("chat.quickPrompt.risks"),s("chat.quickPrompt.summary")],[s]),u=n.useMemo(()=>a.messages.filter(t=>!t.approval),[a.messages]),P=n.useMemo(()=>de(u,o.language),[u,o.language]),z=n.useMemo(()=>{const t=u.find(c=>c.role==="user"&&c.content.trim());if(!t)return s("chat.mobileTitle",{defaultValue:"agim chat"});const r=t.content.replace(/\s+/g," ").trim();return r.length>24?`${r.slice(0,24)}…`:r},[u,s]),C=n.useMemo(()=>a.runActivities.slice(0,12),[a.runActivities]),y=n.useMemo(()=>a.runActivities.find(t=>t.runId===a.activeRunId),[a.activeRunId,a.runActivities]);n.useEffect(()=>{const t=h.current;!t||t.scrollHeight-t.scrollTop-t.clientHeight>200&&a.currentReplyId==null||requestAnimationFrame(()=>{t.scrollTop=t.scrollHeight})},[a.messages,a.currentReplyId]),n.useEffect(()=>{const t=h.current;if(!t)return;const r=()=>{const c=t.scrollHeight-t.scrollTop-t.clientHeight;F(c>200)};return t.addEventListener("scroll",r,{passive:!0}),r(),()=>t.removeEventListener("scroll",r)},[]),n.useEffect(()=>{a.error&&(Q(a.error)?(q(a.error),S(!0)):j.error(a.error),k())},[a.error,k]),n.useEffect(()=>{const t=x.current;t&&(t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,24*6+16)}px`)},[p]);function O(t){t?.preventDefault();const r=p.trim();if(r){if(a.status!=="open"){j.error(s("chat.notConnected",{defaultValue:"Not connected. Reconnecting…"}));return}a.currentReplyId||(d(r),b(""),requestAnimationFrame(()=>x.current?.focus()))}}function U(t){t.nativeEvent.isComposing||t.keyCode}function K(){const t=h.current;t&&t.scrollTo({top:t.scrollHeight,behavior:"smooth"})}function Y(){fetch("/api/auth/logout",{method:"POST"}).finally(()=>{try{localStorage.removeItem("agim_token")}catch{}window.location.replace("/login")})}function V(){M(),j.success(s("chat.newConvToast",{defaultValue:"Started a new conversation"})),l("none"),requestAnimationFrame(()=>x.current?.focus())}return e.jsxs("div",{className:"relative flex h-dvh flex-col bg-bg",children:[e.jsx(W,{open:L,reason:B,onOpenChange:S,onConfigured:()=>i("agim")}),e.jsxs("header",{className:"flex items-center gap-2 border-b border-border bg-surface px-3 py-2",style:{paddingTop:"calc(env(safe-area-inset-top) + 0.5rem)"},children:[e.jsx(f,{variant:"ghost",size:"sm","aria-label":s("chat.back",{defaultValue:"Back"}),onClick:()=>window.history.length>1?window.history.back():window.location.assign("/"),className:"h-9 w-9 p-0",children:e.jsx(se,{className:"h-5 w-5"})}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col items-center",children:[e.jsx("span",{className:"truncate text-sm font-semibold",children:z}),e.jsxs("span",{className:"flex items-center gap-1.5 text-[11px] text-text-dim",children:[e.jsx("span",{className:g("inline-block h-1.5 w-1.5 rounded-full",ce[a.status])}),e.jsx("span",{children:a.agent?N(a.agent):"—"}),e.jsx("span",{children:"·"}),e.jsx("span",{children:a.activeRunId?s("chat.running",{defaultValue:"Running"}):$})]})]}),e.jsx(f,{variant:"ghost",size:"sm","aria-label":s("chat.menu",{defaultValue:"Menu"}),onClick:()=>l("menu"),className:"h-9 w-9 p-0",children:e.jsx(le,{className:"h-5 w-5"})})]}),e.jsx("div",{ref:h,className:"flex-1 overflow-y-auto",children:e.jsxs("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-3 px-3 py-4",children:[u.length===0&&a.status==="open"&&e.jsxs("div",{className:"flex flex-col items-center gap-2 py-14 text-center",children:[e.jsx("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-surface-2 text-2xl",children:"💬"}),e.jsx("h2",{className:"text-base font-semibold",children:s("chat.welcomeTitle",{defaultValue:"Start a conversation"})}),e.jsx("p",{className:"max-w-xs text-sm text-text-dim",children:s("chat.welcomeBodyMobile",{defaultValue:"Type a message below. Switch agent or start over from the menu."})})]}),u.length===0&&a.status!=="open"&&e.jsx("div",{className:"grid place-items-center py-16 text-center",children:e.jsx("p",{className:"text-sm text-text-dim",children:a.status==="connecting"?s("chat.connecting",{defaultValue:"Connecting to agim…"}):s("chat.disconnected",{defaultValue:"Disconnected. Reconnecting automatically."})})}),P.map(t=>t.type==="divider"?e.jsx("div",{className:"py-1 text-center text-[11px] text-text-muted",children:t.label},t.key):e.jsxs("div",{className:"space-y-1",children:[e.jsx(X,{msg:t.msg,onApprove:(r,c,_)=>m(r,c,_)}),e.jsx("div",{className:g("px-1 text-[11px] text-text-muted",t.msg.role==="user"?"text-right":"text-left"),children:D(t.msg.timestamp,o.language)})]},t.key))]})}),E&&e.jsx("button",{type:"button",onClick:K,className:"absolute bottom-28 left-1/2 z-20 -translate-x-1/2 rounded-full border border-border bg-surface p-2 shadow-md","aria-label":s("chat.scrollDown",{defaultValue:"Scroll to bottom"}),children:e.jsx(ae,{className:"h-4 w-4"})}),e.jsx(Z,{approvals:a.pendingApprovals,onApprove:(t,r,c)=>m(t,r,c)}),e.jsxs("form",{onSubmit:O,className:"sticky bottom-0 border-t border-border bg-surface px-3 py-2",style:{paddingBottom:"calc(env(safe-area-inset-bottom) + 0.5rem)"},children:[u.length===0&&a.status==="open"&&e.jsx("div",{className:"mb-2 flex gap-2 overflow-x-auto pb-1",children:H.map(t=>e.jsx("button",{type:"button",onClick:()=>{b(t),requestAnimationFrame(()=>x.current?.focus())},className:"shrink-0 rounded-full border border-border bg-surface-2 px-3 py-1.5 text-xs text-text-dim hover:bg-surface-hover",children:t},t))}),y&&e.jsxs("div",{className:"mb-2 flex items-center justify-between rounded-xl border border-info/30 bg-info-bg/50 px-3 py-1.5",children:[e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-info",children:[e.jsx(A,{className:"h-3.5 w-3.5 animate-spin"}),s("chat.running",{defaultValue:"Running"})]}),e.jsxs("span",{className:"truncate text-xs text-text-dim",children:[N(y.agent)," · ",T(y.durationMs)]})]}),e.jsxs("div",{className:"flex items-end gap-2",children:[e.jsx(f,{type:"button",variant:"ghost",onClick:V,disabled:a.status!=="open"||!!a.currentReplyId,"aria-label":s("chat.newConv",{defaultValue:"New conversation"}),className:"h-11 w-11 shrink-0 rounded-full p-0",children:e.jsx(ne,{className:"h-4 w-4"})}),e.jsx("textarea",{ref:x,value:p,onChange:t=>b(t.target.value),onKeyDown:U,placeholder:s("chat.inputPlaceholderMobile",{defaultValue:"Message…"}),rows:1,className:g("flex-1 resize-none rounded-3xl border border-border bg-bg","px-3 py-2 text-[15px] leading-6","focus:outline-none focus:ring-2 focus:ring-accent focus:ring-offset-1 focus:ring-offset-bg")}),e.jsx(f,{type:"submit",disabled:!p.trim()||a.status!=="open"||!!a.currentReplyId,"aria-label":s("chat.send",{defaultValue:"Send"}),className:"h-11 w-11 shrink-0 rounded-full p-0",children:a.currentReplyId?e.jsx(A,{className:"h-4 w-4 animate-spin"}):e.jsx(ee,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"mt-2 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[a.currentReplyId&&e.jsx(R,{variant:"info",children:s("chat.streaming",{defaultValue:"… streaming"})}),!a.currentReplyId&&e.jsx("span",{className:"text-[11px] text-text-muted",children:s("chat.mobileHint")})]}),e.jsxs("button",{type:"button",onClick:()=>l("activity"),className:"inline-flex items-center gap-1 rounded px-1.5 py-1 text-xs text-text-dim hover:bg-surface-hover hover:text-text",children:[e.jsx(re,{className:"h-3.5 w-3.5"}),s("chat.activity",{defaultValue:"Activity"})]})]})]}),v!=="none"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button","aria-label":s("actions.close",{ns:"common",defaultValue:"Close"}),className:"fixed inset-0 z-30 bg-black/35",onClick:()=>l("none")}),e.jsxs("div",{className:"fixed inset-x-0 bottom-0 z-40 rounded-t-2xl border border-border bg-surface px-4 pb-safe pt-3 shadow-lg",children:[e.jsx("div",{className:"mx-auto mb-3 h-1.5 w-12 rounded-full bg-border"}),v==="menu"&&e.jsxs("div",{className:"space-y-3 pb-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"mb-1 text-[11px] uppercase text-text-dim",children:s("chat.agent",{defaultValue:"Agent"})}),e.jsx(te,{agents:a.agents,value:a.agent,onChange:t=>{i(t),l("none")}})]}),e.jsx("button",{type:"button",className:"block w-full rounded-md border border-border px-3 py-2 text-left text-sm hover:bg-surface-hover disabled:opacity-50",disabled:a.status!=="open"||!!a.currentReplyId,onClick:V,children:s("chat.newConv",{defaultValue:"New conversation"})}),e.jsx("button",{type:"button",className:"block w-full rounded-md border border-border px-3 py-2 text-left text-sm hover:bg-surface-hover",onClick:()=>l("activity"),children:s("chat.activity",{defaultValue:"Activity"})}),e.jsx("button",{type:"button",className:"block w-full rounded-md border border-border px-3 py-2 text-left text-sm hover:bg-surface-hover",onClick:()=>{l("none"),window.location.assign("/settings/llm")},children:s("chat.llmSettings",{defaultValue:"LLM settings"})}),e.jsx("button",{type:"button",className:"block w-full rounded-md border border-danger/30 px-3 py-2 text-left text-sm text-danger hover:bg-danger/10",onClick:Y,children:s("chat.logout",{defaultValue:"Log out"})})]}),v==="activity"&&e.jsxs("div",{className:"space-y-3 pb-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-sm font-semibold",children:s("chat.activityTitle",{defaultValue:"Run activity"})}),e.jsx("button",{type:"button",className:"text-xs text-text-dim hover:text-text",onClick:()=>l("menu"),children:s("actions.back",{ns:"common",defaultValue:"Back"})})]}),e.jsxs("div",{className:"rounded-md border border-border bg-surface-2 px-3 py-2 text-xs text-text-dim",children:[s("chat.pendingApprovals",{defaultValue:"Pending approvals"}),": ",a.pendingApprovals.length]}),e.jsxs("div",{className:"max-h-72 space-y-2 overflow-y-auto pr-1",children:[C.length===0&&e.jsx("div",{className:"rounded-md border border-border px-3 py-5 text-center text-xs text-text-dim",children:s("chat.activityEmpty",{defaultValue:"No recent runs yet."})}),C.map(t=>e.jsxs("div",{className:"rounded-md border border-border px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(R,{className:g("border-0",me(t.status)),children:t.status}),e.jsx("span",{className:"truncate text-xs font-medium",children:N(t.agent)}),e.jsx("span",{className:"ml-auto text-[11px] text-text-muted",children:T(t.durationMs)})]}),e.jsxs("div",{className:"mt-1 flex items-center gap-1 text-[11px] text-text-muted",children:[e.jsx(oe,{className:"h-3 w-3"}),D(t.startedAt,o.language),t.outputChars!=null&&e.jsxs("span",{children:["· ",t.outputChars," chars"]})]}),t.error&&e.jsx("p",{className:"mt-1 text-[11px] text-danger",children:t.error})]},t.runId))]})]})]})]})]})}export{ye as default};
|
|
12
|
+
//# sourceMappingURL=chat-rLJMdJBk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-rLJMdJBk.js","sources":["../../node_modules/lucide-react/dist/esm/icons/clock-3.js","../../node_modules/lucide-react/dist/esm/icons/ellipsis-vertical.js","../../src/routes/m/chat.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clock3 = createLucideIcon(\"Clock3\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"polyline\", { points: \"12 6 12 12 16.5 12\", key: \"1aq6pp\" }]\n]);\n\nexport { Clock3 as default };\n//# sourceMappingURL=clock-3.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst EllipsisVertical = createLucideIcon(\"EllipsisVertical\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"1\", key: \"41hilf\" }],\n [\"circle\", { cx: \"12\", cy: \"5\", r: \"1\", key: \"gxeob9\" }],\n [\"circle\", { cx: \"12\", cy: \"19\", r: \"1\", key: \"lyex9k\" }]\n]);\n\nexport { EllipsisVertical as default };\n//# sourceMappingURL=ellipsis-vertical.js.map\n","/**\n * /m/chat — mobile-first chat surface (production-oriented UX pass).\n *\n * Upgrades over v1:\n * - richer hierarchy (thread title + status + execution rail)\n * - date separators + per-message timestamps\n * - quick prompts + larger mobile composer controls\n * - bottom-sheet menu and activity panel for recent runs\n *\n * Keeps compatibility with the existing useChat() transport:\n * same message flow / approvals / reconnect behavior.\n */\n\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport {\n Activity,\n ArrowDown,\n ChevronLeft,\n Clock3,\n Loader2,\n MoreVertical,\n Sparkles,\n Send,\n} from 'lucide-react'\nimport { toast } from 'sonner'\n\nimport { useChat, type ChatMessage, type RunActivity } from '@/hooks/use-chat'\nimport { Button } from '@/components/ui/button'\nimport { Badge } from '@/components/ui/badge'\nimport { MessageBubble } from '@/components/chat/message-bubble'\nimport { ApprovalDock } from '@/components/chat/approval-dock'\nimport { AgentPicker } from '@/components/chat/agent-picker'\nimport { isNativeSetupError } from '@/components/chat/error-hints'\nimport { NativeSetupDialog } from '@/components/chat/native-setup-dialog'\nimport { agentDisplayName } from '@/lib/agent-label'\nimport { cn } from '@/lib/utils'\n\nconst STATUS_STYLES: Record<string, string> = {\n open: 'bg-success',\n connecting: 'bg-warning animate-pulse',\n closed: 'bg-text-muted',\n error: 'bg-danger',\n}\n\ntype SheetMode = 'none' | 'menu' | 'activity'\ntype MessageRow =\n | { type: 'divider'; key: string; label: string }\n | { type: 'message'; key: string; msg: ChatMessage }\n\nfunction safeTs(ts: number): number {\n return Number.isFinite(ts) ? ts : Date.now()\n}\n\nfunction dayKey(ts: number): string {\n const d = new Date(safeTs(ts))\n const m = String(d.getMonth() + 1).padStart(2, '0')\n const day = String(d.getDate()).padStart(2, '0')\n return `${d.getFullYear()}-${m}-${day}`\n}\n\nfunction formatDay(ts: number, locale: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n weekday: 'short',\n }).format(new Date(safeTs(ts)))\n}\n\nfunction formatClock(ts: number, locale: string): string {\n return new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n }).format(new Date(safeTs(ts)))\n}\n\nfunction formatDurationMs(ms?: number): string {\n if (!ms || ms <= 0) return '0ms'\n if (ms < 1000) return `${ms}ms`\n return `${(ms / 1000).toFixed(ms >= 10_000 ? 0 : 1)}s`\n}\n\nfunction buildRows(messages: ChatMessage[], locale: string): MessageRow[] {\n const rows: MessageRow[] = []\n let prevDay = ''\n for (const msg of messages) {\n const k = dayKey(msg.timestamp)\n if (k !== prevDay) {\n rows.push({ type: 'divider', key: `d-${k}`, label: formatDay(msg.timestamp, locale) })\n prevDay = k\n }\n rows.push({ type: 'message', key: msg.id, msg })\n }\n return rows\n}\n\nfunction runStatusBadgeClass(status: RunActivity['status']): string {\n switch (status) {\n case 'running': return 'bg-info-bg text-info'\n case 'success': return 'bg-success-bg text-success'\n case 'error': return 'bg-danger-bg text-danger'\n }\n}\n\nexport default function MobileChatRoute(): JSX.Element {\n const { t, i18n } = useTranslation(['chat', 'common'])\n const {\n state, send, switchAgent, approvalClick, newConversation, clearError,\n } = useChat()\n const [input, setInput] = useState('')\n const [sheet, setSheet] = useState<SheetMode>('none')\n const [showScrollDown, setShowScrollDown] = useState(false)\n const [nativeSetupDialogOpen, setNativeSetupDialogOpen] = useState(false)\n const [nativeSetupReason, setNativeSetupReason] = useState('')\n const listRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLTextAreaElement>(null)\n const statusLabel = t(`chat.status.${state.status}`, { defaultValue: state.status })\n\n const quickPrompts = useMemo(\n () => [\n t('chat.quickPrompt.plan'),\n t('chat.quickPrompt.risks'),\n t('chat.quickPrompt.summary'),\n ],\n [t],\n )\n\n const chatMessages = useMemo(\n () => state.messages.filter((m) => !m.approval),\n [state.messages],\n )\n const rows = useMemo(\n () => buildRows(chatMessages, i18n.language),\n [chatMessages, i18n.language],\n )\n\n const latestUserTitle = useMemo(() => {\n const firstUser = chatMessages.find((m) => m.role === 'user' && m.content.trim())\n if (!firstUser) return t('chat.mobileTitle', { defaultValue: 'agim chat' })\n const compact = firstUser.content.replace(/\\s+/g, ' ').trim()\n return compact.length > 24 ? `${compact.slice(0, 24)}…` : compact\n }, [chatMessages, t])\n\n const latestRuns = useMemo(() => state.runActivities.slice(0, 12), [state.runActivities])\n const activeRun = useMemo(\n () => state.runActivities.find((r) => r.runId === state.activeRunId),\n [state.activeRunId, state.runActivities],\n )\n\n // Auto-scroll to bottom on new messages OR streaming chunk. Same\n // pinch-tolerance as desktop: hold position when user is reading up.\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n const distFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight\n if (distFromBottom > 200 && state.currentReplyId == null) return\n requestAnimationFrame(() => { el.scrollTop = el.scrollHeight })\n }, [state.messages, state.currentReplyId])\n\n // Floating \"scroll to bottom\" pill.\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n const onScroll = (): void => {\n const dist = el.scrollHeight - el.scrollTop - el.clientHeight\n setShowScrollDown(dist > 200)\n }\n el.addEventListener('scroll', onScroll, { passive: true })\n onScroll()\n return () => el.removeEventListener('scroll', onScroll)\n }, [])\n\n // Surface WS errors as toast and clear.\n useEffect(() => {\n if (!state.error) return\n if (isNativeSetupError(state.error)) {\n setNativeSetupReason(state.error)\n setNativeSetupDialogOpen(true)\n } else {\n toast.error(state.error)\n }\n clearError()\n }, [state.error, clearError])\n\n // Auto-grow textarea up to 6 lines.\n useEffect(() => {\n const ta = inputRef.current\n if (!ta) return\n ta.style.height = 'auto'\n ta.style.height = `${Math.min(ta.scrollHeight, 24 * 6 + 16)}px`\n }, [input])\n\n function onSubmit(e?: React.FormEvent): void {\n e?.preventDefault()\n const v = input.trim()\n if (!v) return\n if (state.status !== 'open') {\n toast.error(t('chat.notConnected', { defaultValue: 'Not connected. Reconnecting…' }))\n return\n }\n if (state.currentReplyId) return\n send(v)\n setInput('')\n requestAnimationFrame(() => inputRef.current?.focus())\n }\n\n function onKeyDown(e: React.KeyboardEvent<HTMLTextAreaElement>): void {\n // IME-safe: never submit while composition is active.\n const ne = e.nativeEvent as KeyboardEvent & { isComposing?: boolean }\n if (ne.isComposing || e.keyCode === 229) return\n // Mobile keeps Enter for newline; explicit Send button submits.\n }\n\n function onScrollToBottom(): void {\n const el = listRef.current\n if (!el) return\n el.scrollTo({ top: el.scrollHeight, behavior: 'smooth' })\n }\n\n function onLogout(): void {\n void fetch('/api/auth/logout', { method: 'POST' }).finally(() => {\n try { localStorage.removeItem('agim_token') } catch { /* noop */ }\n window.location.replace('/login')\n })\n }\n\n function onStartNewConversation(): void {\n newConversation()\n toast.success(t('chat.newConvToast', { defaultValue: 'Started a new conversation' }))\n setSheet('none')\n requestAnimationFrame(() => inputRef.current?.focus())\n }\n\n return (\n <div className=\"relative flex h-dvh flex-col bg-bg\">\n <NativeSetupDialog\n open={nativeSetupDialogOpen}\n reason={nativeSetupReason}\n onOpenChange={setNativeSetupDialogOpen}\n onConfigured={() => switchAgent('agim')}\n />\n\n <header\n className=\"flex items-center gap-2 border-b border-border bg-surface px-3 py-2\"\n style={{ paddingTop: 'calc(env(safe-area-inset-top) + 0.5rem)' }}\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label={t('chat.back', { defaultValue: 'Back' })}\n onClick={() => (window.history.length > 1 ? window.history.back() : window.location.assign('/'))}\n className=\"h-9 w-9 p-0\"\n >\n <ChevronLeft className=\"h-5 w-5\" />\n </Button>\n <div className=\"flex min-w-0 flex-1 flex-col items-center\">\n <span className=\"truncate text-sm font-semibold\">{latestUserTitle}</span>\n <span className=\"flex items-center gap-1.5 text-[11px] text-text-dim\">\n <span className={cn('inline-block h-1.5 w-1.5 rounded-full', STATUS_STYLES[state.status])} />\n <span>{state.agent ? agentDisplayName(state.agent) : '—'}</span>\n <span>·</span>\n <span>{state.activeRunId ? t('chat.running', { defaultValue: 'Running' }) : statusLabel}</span>\n </span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label={t('chat.menu', { defaultValue: 'Menu' })}\n onClick={() => setSheet('menu')}\n className=\"h-9 w-9 p-0\"\n >\n <MoreVertical className=\"h-5 w-5\" />\n </Button>\n </header>\n\n <div ref={listRef} className=\"flex-1 overflow-y-auto\">\n <div className=\"mx-auto flex w-full max-w-3xl flex-col gap-3 px-3 py-4\">\n {chatMessages.length === 0 && state.status === 'open' && (\n <div className=\"flex flex-col items-center gap-2 py-14 text-center\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-surface-2 text-2xl\">\n 💬\n </div>\n <h2 className=\"text-base font-semibold\">\n {t('chat.welcomeTitle', { defaultValue: 'Start a conversation' })}\n </h2>\n <p className=\"max-w-xs text-sm text-text-dim\">\n {t('chat.welcomeBodyMobile', {\n defaultValue: 'Type a message below. Switch agent or start over from the menu.',\n })}\n </p>\n </div>\n )}\n {chatMessages.length === 0 && state.status !== 'open' && (\n <div className=\"grid place-items-center py-16 text-center\">\n <p className=\"text-sm text-text-dim\">\n {state.status === 'connecting'\n ? t('chat.connecting', { defaultValue: 'Connecting to agim…' })\n : t('chat.disconnected', {\n defaultValue: 'Disconnected. Reconnecting automatically.',\n })}\n </p>\n </div>\n )}\n {rows.map((row) => row.type === 'divider' ? (\n <div key={row.key} className=\"py-1 text-center text-[11px] text-text-muted\">\n {row.label}\n </div>\n ) : (\n <div key={row.key} className=\"space-y-1\">\n <MessageBubble\n msg={row.msg}\n onApprove={(mid, reqId, choice) => approvalClick(mid, reqId, choice)}\n />\n <div className={cn(\n 'px-1 text-[11px] text-text-muted',\n row.msg.role === 'user' ? 'text-right' : 'text-left',\n )}\n >\n {formatClock(row.msg.timestamp, i18n.language)}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {showScrollDown && (\n <button\n type=\"button\"\n onClick={onScrollToBottom}\n className=\"absolute bottom-28 left-1/2 z-20 -translate-x-1/2 rounded-full border border-border bg-surface p-2 shadow-md\"\n aria-label={t('chat.scrollDown', { defaultValue: 'Scroll to bottom' })}\n >\n <ArrowDown className=\"h-4 w-4\" />\n </button>\n )}\n\n <ApprovalDock\n approvals={state.pendingApprovals}\n onApprove={(mid, reqId, choice) => approvalClick(mid, reqId, choice)}\n />\n\n <form\n onSubmit={onSubmit}\n className=\"sticky bottom-0 border-t border-border bg-surface px-3 py-2\"\n style={{ paddingBottom: 'calc(env(safe-area-inset-bottom) + 0.5rem)' }}\n >\n {chatMessages.length === 0 && state.status === 'open' && (\n <div className=\"mb-2 flex gap-2 overflow-x-auto pb-1\">\n {quickPrompts.map((prompt) => (\n <button\n key={prompt}\n type=\"button\"\n onClick={() => {\n setInput(prompt)\n requestAnimationFrame(() => inputRef.current?.focus())\n }}\n className=\"shrink-0 rounded-full border border-border bg-surface-2 px-3 py-1.5 text-xs text-text-dim hover:bg-surface-hover\"\n >\n {prompt}\n </button>\n ))}\n </div>\n )}\n\n {activeRun && (\n <div className=\"mb-2 flex items-center justify-between rounded-xl border border-info/30 bg-info-bg/50 px-3 py-1.5\">\n <span className=\"inline-flex items-center gap-1 text-xs text-info\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n {t('chat.running', { defaultValue: 'Running' })}\n </span>\n <span className=\"truncate text-xs text-text-dim\">\n {agentDisplayName(activeRun.agent)} · {formatDurationMs(activeRun.durationMs)}\n </span>\n </div>\n )}\n\n <div className=\"flex items-end gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onStartNewConversation}\n disabled={state.status !== 'open' || !!state.currentReplyId}\n aria-label={t('chat.newConv', { defaultValue: 'New conversation' })}\n className=\"h-11 w-11 shrink-0 rounded-full p-0\"\n >\n <Sparkles className=\"h-4 w-4\" />\n </Button>\n <textarea\n ref={inputRef}\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={t('chat.inputPlaceholderMobile', { defaultValue: 'Message…' })}\n rows={1}\n className={cn(\n 'flex-1 resize-none rounded-3xl border border-border bg-bg',\n 'px-3 py-2 text-[15px] leading-6',\n 'focus:outline-none focus:ring-2 focus:ring-accent focus:ring-offset-1 focus:ring-offset-bg',\n )}\n />\n <Button\n type=\"submit\"\n disabled={!input.trim() || state.status !== 'open' || !!state.currentReplyId}\n aria-label={t('chat.send', { defaultValue: 'Send' })}\n className=\"h-11 w-11 shrink-0 rounded-full p-0\"\n >\n {state.currentReplyId ? (\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n ) : (\n <Send className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n <div className=\"mt-2 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {state.currentReplyId && (\n <Badge variant=\"info\">\n {t('chat.streaming', { defaultValue: '… streaming' })}\n </Badge>\n )}\n {!state.currentReplyId && (\n <span className=\"text-[11px] text-text-muted\">\n {t('chat.mobileHint')}\n </span>\n )}\n </div>\n <button\n type=\"button\"\n onClick={() => setSheet('activity')}\n className=\"inline-flex items-center gap-1 rounded px-1.5 py-1 text-xs text-text-dim hover:bg-surface-hover hover:text-text\"\n >\n <Activity className=\"h-3.5 w-3.5\" />\n {t('chat.activity', { defaultValue: 'Activity' })}\n </button>\n </div>\n </form>\n\n {sheet !== 'none' && (\n <>\n <button\n type=\"button\"\n aria-label={t('actions.close', { ns: 'common', defaultValue: 'Close' })}\n className=\"fixed inset-0 z-30 bg-black/35\"\n onClick={() => setSheet('none')}\n />\n <div className=\"fixed inset-x-0 bottom-0 z-40 rounded-t-2xl border border-border bg-surface px-4 pb-safe pt-3 shadow-lg\">\n <div className=\"mx-auto mb-3 h-1.5 w-12 rounded-full bg-border\" />\n\n {sheet === 'menu' && (\n <div className=\"space-y-3 pb-3\">\n <div>\n <div className=\"mb-1 text-[11px] uppercase text-text-dim\">\n {t('chat.agent', { defaultValue: 'Agent' })}\n </div>\n <AgentPicker\n agents={state.agents}\n value={state.agent}\n onChange={(a) => {\n switchAgent(a)\n setSheet('none')\n }}\n />\n </div>\n\n <button\n type=\"button\"\n className=\"block w-full rounded-md border border-border px-3 py-2 text-left text-sm hover:bg-surface-hover disabled:opacity-50\"\n disabled={state.status !== 'open' || !!state.currentReplyId}\n onClick={onStartNewConversation}\n >\n {t('chat.newConv', { defaultValue: 'New conversation' })}\n </button>\n\n <button\n type=\"button\"\n className=\"block w-full rounded-md border border-border px-3 py-2 text-left text-sm hover:bg-surface-hover\"\n onClick={() => setSheet('activity')}\n >\n {t('chat.activity', { defaultValue: 'Activity' })}\n </button>\n\n <button\n type=\"button\"\n className=\"block w-full rounded-md border border-border px-3 py-2 text-left text-sm hover:bg-surface-hover\"\n onClick={() => {\n setSheet('none')\n window.location.assign('/settings/llm')\n }}\n >\n {t('chat.llmSettings', { defaultValue: 'LLM settings' })}\n </button>\n\n <button\n type=\"button\"\n className=\"block w-full rounded-md border border-danger/30 px-3 py-2 text-left text-sm text-danger hover:bg-danger/10\"\n onClick={onLogout}\n >\n {t('chat.logout', { defaultValue: 'Log out' })}\n </button>\n </div>\n )}\n\n {sheet === 'activity' && (\n <div className=\"space-y-3 pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm font-semibold\">\n {t('chat.activityTitle', { defaultValue: 'Run activity' })}\n </div>\n <button\n type=\"button\"\n className=\"text-xs text-text-dim hover:text-text\"\n onClick={() => setSheet('menu')}\n >\n {t('actions.back', { ns: 'common', defaultValue: 'Back' })}\n </button>\n </div>\n\n <div className=\"rounded-md border border-border bg-surface-2 px-3 py-2 text-xs text-text-dim\">\n {t('chat.pendingApprovals', { defaultValue: 'Pending approvals' })}: {state.pendingApprovals.length}\n </div>\n\n <div className=\"max-h-72 space-y-2 overflow-y-auto pr-1\">\n {latestRuns.length === 0 && (\n <div className=\"rounded-md border border-border px-3 py-5 text-center text-xs text-text-dim\">\n {t('chat.activityEmpty', { defaultValue: 'No recent runs yet.' })}\n </div>\n )}\n {latestRuns.map((run) => (\n <div key={run.runId} className=\"rounded-md border border-border px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <Badge className={cn('border-0', runStatusBadgeClass(run.status))}>\n {run.status}\n </Badge>\n <span className=\"truncate text-xs font-medium\">{agentDisplayName(run.agent)}</span>\n <span className=\"ml-auto text-[11px] text-text-muted\">\n {formatDurationMs(run.durationMs)}\n </span>\n </div>\n <div className=\"mt-1 flex items-center gap-1 text-[11px] text-text-muted\">\n <Clock3 className=\"h-3 w-3\" />\n {formatClock(run.startedAt, i18n.language)}\n {run.outputChars != null && (\n <span>· {run.outputChars} chars</span>\n )}\n </div>\n {run.error && (\n <p className=\"mt-1 text-[11px] text-danger\">{run.error}</p>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </>\n )}\n </div>\n )\n}\n"],"names":["Clock3","createLucideIcon","EllipsisVertical","STATUS_STYLES","safeTs","ts","dayKey","d","m","day","formatDay","locale","formatClock","formatDurationMs","ms","buildRows","messages","rows","prevDay","msg","k","runStatusBadgeClass","status","MobileChatRoute","t","i18n","useTranslation","state","send","switchAgent","approvalClick","newConversation","clearError","useChat","input","setInput","useState","sheet","setSheet","showScrollDown","setShowScrollDown","nativeSetupDialogOpen","setNativeSetupDialogOpen","nativeSetupReason","setNativeSetupReason","listRef","useRef","inputRef","statusLabel","quickPrompts","useMemo","chatMessages","latestUserTitle","firstUser","compact","latestRuns","activeRun","r","useEffect","el","onScroll","dist","isNativeSetupError","toast","ta","onSubmit","e","v","onKeyDown","onScrollToBottom","onLogout","onStartNewConversation","jsxs","jsx","NativeSetupDialog","Button","ChevronLeft","cn","agentDisplayName","MoreVertical","row","MessageBubble","mid","reqId","choice","ArrowDown","ApprovalDock","prompt","Loader2","Sparkles","Send","Badge","Activity","Fragment","AgentPicker","a","run"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as e}from"./index-DCfdN5R7.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/const t=e("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);export{t as C};
|
|
7
|
-
//# sourceMappingURL=chevron-left-
|
|
7
|
+
//# sourceMappingURL=chevron-left-01fAFVpo.js.map
|
package/dist/web/public/assets/{chevron-left-BDO3vw8G.js.map → chevron-left-01fAFVpo.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chevron-left-
|
|
1
|
+
{"version":3,"file":"chevron-left-01fAFVpo.js","sources":["../../node_modules/lucide-react/dist/esm/icons/chevron-left.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronLeft = createLucideIcon(\"ChevronLeft\", [\n [\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]\n]);\n\nexport { ChevronLeft as default };\n//# sourceMappingURL=chevron-left.js.map\n"],"names":["ChevronLeft","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAcC,EAAiB,cAAe,CAClD,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,CACjD,CAAC","x_google_ignoreList":[0]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h}from"./index-DCfdN5R7.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const e=
|
|
7
|
-
//# sourceMappingURL=chevron-right-
|
|
6
|
+
*/const e=h("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);export{e as C};
|
|
7
|
+
//# sourceMappingURL=chevron-right-CFRb-SM_.js.map
|
package/dist/web/public/assets/{chevron-right-5ZUC2opg.js.map → chevron-right-CFRb-SM_.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chevron-right-
|
|
1
|
+
{"version":3,"file":"chevron-right-CFRb-SM_.js","sources":["../../node_modules/lucide-react/dist/esm/icons/chevron-right.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronRight = createLucideIcon(\"ChevronRight\", [\n [\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]\n]);\n\nexport { ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n"],"names":["ChevronRight","createLucideIcon"],"mappings":"mCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAeC,EAAiB,eAAgB,CACpD,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAQ,CAAE,CAChD,CAAC","x_google_ignoreList":[0]}
|
package/dist/web/public/assets/{circle-check-big-DHAHqUlS.js → circle-check-big-DBg2BD6o.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as e}from"./index-DCfdN5R7.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/const t=e("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);export{t as C};
|
|
7
|
-
//# sourceMappingURL=circle-check-big-
|
|
7
|
+
//# sourceMappingURL=circle-check-big-DBg2BD6o.js.map
|
package/dist/web/public/assets/{circle-check-big-DHAHqUlS.js.map → circle-check-big-DBg2BD6o.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circle-check-big-
|
|
1
|
+
{"version":3,"file":"circle-check-big-DBg2BD6o.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleCheckBig = createLucideIcon(\"CircleCheckBig\", [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n]);\n\nexport { CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n"],"names":["CircleCheckBig","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAiBC,EAAiB,iBAAkB,CACxD,CAAC,OAAQ,CAAE,EAAG,kCAAmC,IAAK,QAAQ,CAAE,EAChE,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,CACjD,CAAC","x_google_ignoreList":[0]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as c}from"./index-DCfdN5R7.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/const r=c("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);export{r as C};
|
|
7
|
-
//# sourceMappingURL=circle-x-
|
|
7
|
+
//# sourceMappingURL=circle-x-CqFMzO-x.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circle-x-
|
|
1
|
+
{"version":3,"file":"circle-x-CqFMzO-x.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-x.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleX = createLucideIcon(\"CircleX\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n]);\n\nexport { CircleX as default };\n//# sourceMappingURL=circle-x.js.map\n"],"names":["CircleX","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAUC,EAAiB,UAAW,CAC1C,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,EAC1C,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,CAAC","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{h}from"./index-DCfdN5R7.js";/**
|
|
2
|
+
* @license lucide-react v0.469.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const a=h("ClipboardList",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);export{a as C};
|
|
7
|
+
//# sourceMappingURL=clipboard-list-lnqdk2_J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard-list-lnqdk2_J.js","sources":["../../node_modules/lucide-react/dist/esm/icons/clipboard-list.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ClipboardList = createLucideIcon(\"ClipboardList\", [\n [\"rect\", { width: \"8\", height: \"4\", x: \"8\", y: \"2\", rx: \"1\", ry: \"1\", key: \"tgr4d6\" }],\n [\n \"path\",\n {\n d: \"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\",\n key: \"116196\"\n }\n ],\n [\"path\", { d: \"M12 11h4\", key: \"1jrz19\" }],\n [\"path\", { d: \"M12 16h4\", key: \"n85exb\" }],\n [\"path\", { d: \"M8 11h.01\", key: \"1dfujw\" }],\n [\"path\", { d: \"M8 16h.01\", key: \"18s6g9\" }]\n]);\n\nexport { ClipboardList as default };\n//# sourceMappingURL=clipboard-list.js.map\n"],"names":["ClipboardList","createLucideIcon"],"mappings":"mCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAgBC,EAAiB,gBAAiB,CACtD,CAAC,OAAQ,CAAE,MAAO,IAAK,OAAQ,IAAK,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,SAAU,EACrF,CACE,OACA,CACE,EAAG,2EACH,IAAK,QACX,CACA,EACE,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,EAC1C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,CAC5C,CAAC","x_google_ignoreList":[0]}
|