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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces-DyGLJUgB.js","sources":["../../node_modules/lucide-react/dist/esm/icons/pencil.js","../../src/routes/settings/workspaces.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 Pencil = createLucideIcon(\"Pencil\", [\n [\n \"path\",\n {\n d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n key: \"1a8usu\"\n }\n ],\n [\"path\", { d: \"m15 5 4 4\", key: \"1mk7zo\" }]\n]);\n\nexport { Pencil as default };\n//# sourceMappingURL=pencil.js.map\n","/**\n * /settings/workspaces — multi-tenant workspace registry editor.\n *\n * Lists every workspace (id / name / agent whitelist count / member\n * count / rate-limit) and provides an inline form to add new ones\n * or upsert existing. The backend's POST handler is upsert-by-id, so\n * editing means \"click Edit on a row → form pre-fills → tweak → Save\"\n * — same endpoint, same semantics as Add.\n *\n * Open vs gated workspaces:\n * * `members: []` (empty array) means the workspace is open to any\n * user. The backend treats `undefined` and `[]` identically; we\n * normalise to `[]` for the round-trip.\n * * `agents: []` means \"allow every registered agent\".\n *\n * Rate-limit fields are optional triple (rate / intervalSec / burst).\n * Leaving them blank submits `rateLimit: undefined` and the backend\n * falls back to defaults.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { Briefcase, Loader2, Pencil, Plus, RefreshCcw, Save, Trash2, X } from 'lucide-react'\n\nimport { ConfirmDialog } from '@/components/common/confirm-dialog'\nimport { EmptyState } from '@/components/common/empty-state'\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport { useAgentsStatus } from '@/hooks/use-workspace'\nimport { useAdminAllowlist, useDeleteWorkspace, useUpsertWorkspace, useWorkspaces } from '@/hooks/use-settings'\nimport { describeError } from '@/lib/api/errors'\nimport { cn } from '@/lib/utils'\nimport type { KnownImUser, WorkspaceConfig } from '@/types/api'\n\ninterface DraftFields {\n id: string\n name: string\n agents: string[]\n members: string[]\n rate: string\n intervalSec: string\n burst: string\n}\n\ninterface Choice {\n value: string\n label: string\n detail?: string\n badge?: string\n muted?: boolean\n}\n\ninterface RatePreset {\n id: 'default' | 'strict' | 'busy'\n labelKey: string\n descriptionKey: string\n rate: string\n intervalSec: string\n burst: string\n}\n\nconst EMPTY_DRAFT: DraftFields = {\n id: '', name: '',\n agents: [], members: [],\n rate: '', intervalSec: '', burst: '',\n}\n\nconst RATE_PRESETS: RatePreset[] = [\n {\n id: 'default',\n labelKey: 'workspaces.form.ratePresets.default',\n descriptionKey: 'workspaces.form.ratePresetDescriptions.default',\n rate: '',\n intervalSec: '',\n burst: '',\n },\n {\n id: 'strict',\n labelKey: 'workspaces.form.ratePresets.strict',\n descriptionKey: 'workspaces.form.ratePresetDescriptions.strict',\n rate: '3',\n intervalSec: '60',\n burst: '5',\n },\n {\n id: 'busy',\n labelKey: 'workspaces.form.ratePresets.busy',\n descriptionKey: 'workspaces.form.ratePresetDescriptions.busy',\n rate: '30',\n intervalSec: '60',\n burst: '45',\n },\n]\n\nfunction toDraft(ws: WorkspaceConfig): DraftFields {\n return {\n id: ws.id,\n name: ws.name,\n agents: uniqueStrings(ws.agents),\n members: uniqueStrings(ws.members ?? []),\n rate: ws.rateLimit ? String(ws.rateLimit.rate) : '',\n intervalSec: ws.rateLimit ? String(ws.rateLimit.intervalSec) : '',\n burst: ws.rateLimit ? String(ws.rateLimit.burst) : '',\n }\n}\n\nfunction fromDraft(d: DraftFields): WorkspaceConfig {\n const cfg: WorkspaceConfig = {\n id: d.id.trim(),\n name: d.name.trim() || d.id.trim(),\n agents: uniqueStrings(d.agents),\n members: uniqueStrings(d.members),\n }\n // Rate limit only when all three fields parse as positive numbers.\n const rate = Number(d.rate)\n const ivl = Number(d.intervalSec)\n const burst = Number(d.burst)\n if (Number.isFinite(rate) && rate > 0\n && Number.isFinite(ivl) && ivl > 0\n && Number.isFinite(burst) && burst > 0) {\n cfg.rateLimit = { rate, intervalSec: ivl, burst }\n }\n return cfg\n}\n\nfunction isRatePresetActive(draft: DraftFields, preset: RatePreset): boolean {\n return draft.rate === preset.rate\n && draft.intervalSec === preset.intervalSec\n && draft.burst === preset.burst\n}\n\nexport default function SettingsWorkspacesRoute(): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const list = useWorkspaces()\n const agentsQuery = useAgentsStatus()\n const adminsQuery = useAdminAllowlist()\n const upsert = useUpsertWorkspace()\n const removeWorkspace = useDeleteWorkspace()\n\n const [draft, setDraft] = useState<DraftFields>(EMPTY_DRAFT)\n const [editing, setEditing] = useState<string | null>(null)\n const [deleteTarget, setDeleteTarget] = useState<WorkspaceConfig | null>(null)\n\n useEffect(() => {\n if (draft.id || draft.name) return\n // Keep the form blank on first paint; pre-fill happens via Edit.\n }, [draft.id, draft.name])\n\n function startEdit(ws: WorkspaceConfig): void {\n setDraft(toDraft(ws))\n setEditing(ws.id)\n }\n\n function resetForm(): void {\n setDraft(EMPTY_DRAFT)\n setEditing(null)\n }\n\n async function onSubmit(e: React.FormEvent): Promise<void> {\n e.preventDefault()\n const cfg = fromDraft(draft)\n if (!cfg.id) return\n try {\n await upsert.mutateAsync(cfg)\n toast.success(t('workspaces.toast.saved'))\n resetForm()\n } catch (err) {\n toast.error(describeError(err, t).message)\n }\n }\n\n async function onConfirmDelete(): Promise<void> {\n if (!deleteTarget) return\n try {\n await removeWorkspace.mutateAsync(deleteTarget.id)\n toast.success(t('workspaces.toast.deleted'))\n if (editing === deleteTarget.id) resetForm()\n setDeleteTarget(null)\n } catch (err) {\n toast.error(describeError(err, t).message)\n throw err\n }\n }\n\n function applyRatePreset(preset: RatePreset): void {\n setDraft((d) => ({\n ...d,\n rate: preset.rate,\n intervalSec: preset.intervalSec,\n burst: preset.burst,\n }))\n }\n\n const workspaces = list.data?.workspaces ?? []\n const hasOnlyDefault = workspaces.length <= 1\n && workspaces.every((w) => w.id === 'default')\n const agentChoices = useMemo<Choice[]>(() => {\n const status = agentsQuery.data ?? {}\n return Object.entries(status)\n .sort(([aName, aOnline], [bName, bOnline]) => {\n if (aOnline !== bOnline) return aOnline ? -1 : 1\n return aName.localeCompare(bName)\n })\n .map(([name, online]) => ({\n value: name,\n label: name,\n badge: online ? t('workspaces.form.agentOnline') : t('workspaces.form.agentOffline'),\n muted: !online,\n }))\n }, [agentsQuery.data, t])\n const memberChoices = useMemo<Choice[]>(() => {\n const m = new Map<string, Choice>()\n for (const u of adminsQuery.data?.knownUsers ?? []) {\n const key = imUserKey(u)\n m.set(key, {\n value: key,\n label: key,\n detail: t('workspaces.form.memberLastSeen', { time: formatSeenAt(u.lastSeenAt) }),\n })\n }\n for (const ws of workspaces) {\n for (const member of ws.members ?? []) {\n if (!member) continue\n if (!m.has(member)) {\n m.set(member, {\n value: member,\n label: member,\n detail: t('workspaces.form.memberFromScope', { scope: ws.id }),\n })\n }\n }\n }\n return [...m.values()].sort((a, b) => a.label.localeCompare(b.label))\n }, [adminsQuery.data?.knownUsers, t, workspaces])\n\n return (\n <div className=\"mx-auto flex max-w-5xl 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('workspaces.title')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => list.refetch()}\n disabled={list.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {list.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('workspaces.subtitle')}</p>\n </header>\n\n {list.isLoading ? (\n <div className=\"h-32 rounded-md bg-surface-2 animate-pulse\" />\n ) : hasOnlyDefault ? (\n <EmptyState\n icon={<Briefcase />}\n title={t('workspaces.empty.title')}\n description={t('workspaces.empty.description')}\n />\n ) : (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-32\">{t('workspaces.col.id')}</TableHead>\n <TableHead>{t('workspaces.col.name')}</TableHead>\n <TableHead>{t('workspaces.col.agents')}</TableHead>\n <TableHead>{t('workspaces.col.members')}</TableHead>\n <TableHead>{t('workspaces.col.rateLimit')}</TableHead>\n <TableHead className=\"w-36\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {workspaces.map((ws) => (\n <TableRow key={ws.id}>\n <TableCell className=\"font-mono text-xs\">{ws.id}</TableCell>\n <TableCell className=\"font-medium\">{ws.name}</TableCell>\n <TableCell>\n {ws.agents.length === 0 ? (\n <span className=\"text-text-muted text-xs\">—</span>\n ) : (\n <div className=\"flex flex-wrap gap-1\">\n {ws.agents.map((a) => (\n <Badge key={a} variant=\"secondary\">{a}</Badge>\n ))}\n </div>\n )}\n </TableCell>\n <TableCell>\n {(ws.members ?? []).length === 0 ? (\n <span className=\"text-text-muted text-xs\">{t('workspaces.membersOpen')}</span>\n ) : (\n <span className=\"text-text-dim text-xs\">\n {t('workspaces.membersCount', { count: ws.members!.length })}\n </span>\n )}\n </TableCell>\n <TableCell className=\"text-xs text-text-dim\">\n {ws.rateLimit\n ? t('workspaces.rateLimitFormat', {\n rate: ws.rateLimit.rate,\n intervalSec: ws.rateLimit.intervalSec,\n burst: ws.rateLimit.burst,\n })\n : '—'}\n </TableCell>\n <TableCell>\n <div className=\"flex flex-wrap justify-end gap-1\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => startEdit(ws)}\n >\n <Pencil className=\"h-3 w-3\" />\n {t('workspaces.edit')}\n </Button>\n {ws.id !== 'default' && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setDeleteTarget(ws)}\n disabled={removeWorkspace.isPending}\n aria-label={t('workspaces.remove.ariaLabel', { id: ws.id })}\n >\n <Trash2 className=\"h-3 w-3\" />\n {t('workspaces.remove.label')}\n </Button>\n )}\n </div>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n )}\n\n {/* Form */}\n <form\n onSubmit={(e) => void onSubmit(e)}\n className=\"rounded-md border border-border bg-surface p-4\"\n >\n <div className=\"mb-1 text-sm font-medium\">{t('workspaces.form.title')}</div>\n {editing && (\n <p className=\"mb-3 text-xs text-text-dim\">{t('workspaces.form.subtitleEdit')}</p>\n )}\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n <FormField\n id=\"ws-id\"\n label={t('workspaces.form.id')}\n hint={t('workspaces.form.idHint')}\n value={draft.id}\n onChange={(v) => setDraft((d) => ({ ...d, id: v }))}\n placeholder=\"team-foo\"\n mono\n />\n <FormField\n id=\"ws-name\"\n label={t('workspaces.form.name')}\n value={draft.name}\n onChange={(v) => setDraft((d) => ({ ...d, name: v }))}\n placeholder=\"Team Foo\"\n />\n <MultiSelectField\n id=\"ws-agents\"\n label={t('workspaces.form.agents')}\n hint={t('workspaces.form.agentsHint')}\n emptyText={t('workspaces.form.emptyAgents')}\n chooseLabel={t('workspaces.form.selectAgents')}\n customPlaceholder={t('workspaces.form.customAgentPlaceholder')}\n choices={agentChoices}\n value={draft.agents}\n loading={agentsQuery.isLoading}\n onChange={(agents) => setDraft((d) => ({ ...d, agents }))}\n />\n <MultiSelectField\n id=\"ws-members\"\n label={t('workspaces.form.members')}\n hint={t('workspaces.form.membersHint')}\n emptyText={t('workspaces.form.emptyMembers')}\n chooseLabel={t('workspaces.form.selectMembers')}\n customPlaceholder={t('workspaces.form.customMemberPlaceholder')}\n choices={memberChoices}\n value={draft.members}\n loading={adminsQuery.isLoading || list.isLoading}\n onChange={(members) => setDraft((d) => ({ ...d, members }))}\n />\n </div>\n <div className=\"mt-3\">\n <div className=\"text-xs font-medium text-text-dim\">{t('workspaces.form.rateLimit')}</div>\n <div className=\"mt-2 grid grid-cols-1 gap-2 sm:grid-cols-3\">\n {RATE_PRESETS.map((preset) => {\n const active = isRatePresetActive(draft, preset)\n return (\n <Button\n key={preset.id}\n type=\"button\"\n variant={active ? 'default' : 'secondary'}\n size=\"sm\"\n className=\"h-auto flex-col items-start gap-0.5 whitespace-normal px-3 py-2 text-left\"\n onClick={() => applyRatePreset(preset)}\n aria-pressed={active}\n >\n <span>{t(preset.labelKey)}</span>\n <span className={cn('text-[10px] font-normal', active ? 'text-accent-fg/80' : 'text-text-muted')}>\n {t(preset.descriptionKey)}\n </span>\n </Button>\n )\n })}\n </div>\n <p className=\"mt-2 text-[10px] text-text-muted\">{t('workspaces.form.ratePresetHint')}</p>\n <div className=\"mt-1 grid grid-cols-3 gap-2\">\n <FormField\n id=\"ws-rate\"\n label={t('workspaces.form.rate')}\n value={draft.rate}\n onChange={(v) => setDraft((d) => ({ ...d, rate: v }))}\n placeholder=\"10\"\n mono\n />\n <FormField\n id=\"ws-ivl\"\n label={t('workspaces.form.intervalSec')}\n value={draft.intervalSec}\n onChange={(v) => setDraft((d) => ({ ...d, intervalSec: v }))}\n placeholder=\"60\"\n mono\n />\n <FormField\n id=\"ws-burst\"\n label={t('workspaces.form.burst')}\n value={draft.burst}\n onChange={(v) => setDraft((d) => ({ ...d, burst: v }))}\n placeholder=\"15\"\n mono\n />\n </div>\n </div>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={resetForm}\n disabled={upsert.isPending}\n >\n {t('workspaces.form.reset')}\n </Button>\n <Button\n type=\"submit\"\n size=\"sm\"\n className=\"ml-auto\"\n disabled={upsert.isPending || !draft.id.trim()}\n >\n {upsert.isPending ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <Save className=\"h-4 w-4\" />}\n {t('workspaces.form.submit')}\n </Button>\n </div>\n </form>\n\n <ConfirmDialog\n open={deleteTarget != null}\n onOpenChange={(open) => { if (!open) setDeleteTarget(null) }}\n title={t('workspaces.remove.confirmTitle', { id: deleteTarget?.id ?? '' })}\n description={t('workspaces.remove.confirmDescription', { name: deleteTarget?.name ?? '' })}\n intent=\"danger\"\n confirmLabel={t('workspaces.remove.confirm')}\n onConfirm={onConfirmDelete}\n />\n </div>\n )\n}\n\nfunction MultiSelectField({\n id,\n label,\n hint,\n emptyText,\n chooseLabel,\n customPlaceholder,\n choices,\n value,\n loading,\n onChange,\n}: {\n id: string\n label: string\n hint?: string\n emptyText: string\n chooseLabel: string\n customPlaceholder: string\n choices: Choice[]\n value: string[]\n loading?: boolean\n onChange: (next: string[]) => void\n}): JSX.Element {\n const { t } = useTranslation('settings')\n const [custom, setCustom] = useState('')\n const selected = uniqueStrings(value)\n const selectedSet = useMemo(() => new Set(selected), [selected])\n\n function toggle(nextValue: string): void {\n if (selectedSet.has(nextValue)) {\n onChange(selected.filter((v) => v !== nextValue))\n } else {\n onChange([...selected, nextValue])\n }\n }\n\n function remove(nextValue: string): void {\n onChange(selected.filter((v) => v !== nextValue))\n }\n\n function addCustom(): void {\n const parsed = uniqueStrings(custom.split(','))\n if (parsed.length === 0) return\n onChange(uniqueStrings([...selected, ...parsed]))\n setCustom('')\n }\n\n return (\n <div className=\"flex flex-col gap-1 sm:col-span-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <Label id={`${id}-label`} className=\"text-xs text-text-dim\">\n {label}\n </Label>\n <Badge variant=\"secondary\">{t('workspaces.form.selectedCount', { count: selected.length })}</Badge>\n </div>\n\n <div className=\"rounded-md border border-border bg-surface-2 p-2\">\n <div className=\"flex min-h-8 flex-wrap items-center gap-1.5\">\n {selected.length === 0 ? (\n <span className=\"px-1 text-xs text-text-muted\">{emptyText}</span>\n ) : selected.map((item) => (\n <Badge key={item} variant=\"secondary\" className=\"normal-case tracking-normal\">\n <span className=\"font-mono\">{item}</span>\n <button\n type=\"button\"\n className=\"ml-1 rounded-full text-text-dim hover:text-text\"\n onClick={() => remove(item)}\n aria-label={t('workspaces.form.removeSelected', { value: item })}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n ))}\n </div>\n\n <div className=\"mt-2 flex flex-wrap gap-2\">\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button type=\"button\" variant=\"outline\" size=\"sm\" disabled={loading}>\n {loading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <Plus className=\"h-4 w-4\" />}\n {chooseLabel}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"max-h-80 w-80 overflow-y-auto\">\n <DropdownMenuLabel>{chooseLabel}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {choices.length === 0 ? (\n <div className=\"px-2 py-2 text-sm text-text-muted\">{t('workspaces.form.noChoices')}</div>\n ) : choices.map((choice) => (\n <DropdownMenuCheckboxItem\n key={choice.value}\n checked={selectedSet.has(choice.value)}\n onCheckedChange={() => toggle(choice.value)}\n onSelect={(event) => event.preventDefault()}\n className={cn('items-start gap-2', choice.muted && 'text-text-muted')}\n >\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate font-mono text-xs\">{choice.label}</span>\n {choice.detail && (\n <span className=\"mt-0.5 block truncate text-xs text-text-muted\">{choice.detail}</span>\n )}\n </span>\n {choice.badge && (\n <Badge variant={choice.muted ? 'outline' : 'success'}>{choice.badge}</Badge>\n )}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n <div className=\"flex min-w-[220px] flex-1 gap-2\">\n <Input\n id={id}\n value={custom}\n onChange={(e) => setCustom(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n addCustom()\n }\n }}\n placeholder={customPlaceholder}\n className=\"h-7 font-mono text-xs\"\n aria-labelledby={`${id}-label`}\n />\n <Button type=\"button\" variant=\"secondary\" size=\"sm\" onClick={addCustom} disabled={!custom.trim()}>\n {t('workspaces.form.addCustom')}\n </Button>\n </div>\n </div>\n </div>\n {hint && <span className=\"text-[10px] text-text-muted\">{hint}</span>}\n </div>\n )\n}\n\ninterface FormFieldProps {\n id: string\n label: string\n hint?: string\n value: string\n onChange: (v: string) => void\n placeholder?: string\n mono?: boolean\n}\n\nfunction FormField({ id, label, hint, value, onChange, placeholder, mono }: FormFieldProps): 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 placeholder={placeholder}\n className={mono ? 'font-mono text-xs' : ''}\n />\n {hint && <span className=\"text-[10px] text-text-muted\">{hint}</span>}\n </div>\n )\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n const out: string[] = []\n const seen = new Set<string>()\n for (const raw of values) {\n const value = raw.trim()\n if (!value || seen.has(value)) continue\n seen.add(value)\n out.push(value)\n }\n return out\n}\n\nfunction imUserKey(user: KnownImUser): string {\n return `${user.platform}:${user.userId}`\n}\n\nfunction formatSeenAt(value: string): string {\n const dt = new Date(value)\n if (Number.isNaN(dt.getTime())) return value\n return dt.toLocaleString()\n}\n"],"names":["Pencil","createLucideIcon","EMPTY_DRAFT","RATE_PRESETS","toDraft","ws","uniqueStrings","fromDraft","d","cfg","rate","ivl","burst","isRatePresetActive","draft","preset","SettingsWorkspacesRoute","t","useTranslation","list","useWorkspaces","agentsQuery","useAgentsStatus","adminsQuery","useAdminAllowlist","upsert","useUpsertWorkspace","removeWorkspace","useDeleteWorkspace","setDraft","useState","editing","setEditing","deleteTarget","setDeleteTarget","useEffect","startEdit","resetForm","onSubmit","e","toast","err","describeError","onConfirmDelete","applyRatePreset","workspaces","hasOnlyDefault","w","agentChoices","useMemo","status","aName","aOnline","bName","bOnline","name","online","memberChoices","m","u","key","imUserKey","formatSeenAt","member","b","jsxs","jsx","Button","Loader2","RefreshCcw","EmptyState","Briefcase","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","Badge","Trash2","FormField","v","MultiSelectField","agents","members","active","cn","Save","ConfirmDialog","open","id","label","hint","emptyText","chooseLabel","customPlaceholder","choices","value","loading","onChange","custom","setCustom","selected","selectedSet","toggle","nextValue","remove","addCustom","parsed","Label","item","X","DropdownMenu","DropdownMenuTrigger","Plus","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","choice","DropdownMenuCheckboxItem","event","Input","placeholder","mono","values","out","seen","raw","user","dt"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
} catch (e) { /* private-mode storage exceptions: noop */ }
|
|
36
36
|
})()
|
|
37
37
|
</script>
|
|
38
|
-
<script type="module" crossorigin src="/assets/index-
|
|
38
|
+
<script type="module" crossorigin src="/assets/index-DCfdN5R7.js"></script>
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/react-DlP5eolq.js">
|
|
40
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
40
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Bi2qWb-u.css">
|
|
41
41
|
</head>
|
|
42
42
|
<body>
|
|
43
43
|
<div id="root"></div>
|
package/dist/web/public/loc.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
|
6
|
-
<title>共享位置 ·
|
|
6
|
+
<title>共享位置 · Agim</title>
|
|
7
7
|
<!-- Leaflet for the interactive map preview. Loaded from unpkg CDN; both
|
|
8
8
|
the page and Leaflet itself fall back gracefully if the CDN is
|
|
9
9
|
blocked — see the `typeof L === 'undefined'` branch in the script. -->
|
|
@@ -123,10 +123,10 @@ button:disabled{opacity:0.6;cursor:default}
|
|
|
123
123
|
document.documentElement.lang = lang === 'zh' ? 'zh' : 'en';
|
|
124
124
|
document.getElementById('lang-en').classList.toggle('active', lang === 'en');
|
|
125
125
|
document.getElementById('lang-zh').classList.toggle('active', lang === 'zh');
|
|
126
|
-
localStorage.setItem('
|
|
126
|
+
localStorage.setItem('agim-lang', lang);
|
|
127
127
|
window.__lang = lang;
|
|
128
128
|
}
|
|
129
|
-
var initial = localStorage.getItem('
|
|
129
|
+
var initial = localStorage.getItem('agim-lang') || (navigator.language && navigator.language.toLowerCase().startsWith('zh') ? 'zh' : 'en');
|
|
130
130
|
applyLang(initial);
|
|
131
131
|
document.getElementById('lang-en').addEventListener('click', function(){ applyLang('en'); });
|
|
132
132
|
document.getElementById('lang-zh').addEventListener('click', function(){ applyLang('zh'); });
|
package/dist/web/server.d.ts
CHANGED
|
@@ -6,14 +6,14 @@ declare function isTrustedLoopbackPeer(req: IncomingMessage): boolean;
|
|
|
6
6
|
* can't elevate to control plane (R13 A1).
|
|
7
7
|
*
|
|
8
8
|
* Trust order:
|
|
9
|
-
* 1.
|
|
9
|
+
* 1. AGIM_WEB_AUTH=off → admin (operator explicitly disabled auth)
|
|
10
10
|
* 2. Trusted loopback → admin (operator on the host)
|
|
11
11
|
* 3. Bearer token → token.role === 'admin'
|
|
12
12
|
* 4. Otherwise → not admin
|
|
13
13
|
*
|
|
14
14
|
* Note: when no token has been created yet (pre-bootstrap), the
|
|
15
15
|
* trusted-loopback branch still grants admin so the CLI bootstrap flow
|
|
16
|
-
* works. Disable it with
|
|
16
|
+
* works. Disable it with AGIM_TRUST_LOOPBACK=off. Reverse-proxied
|
|
17
17
|
* requests with Forwarded / X-Forwarded-* peer headers never qualify. */
|
|
18
18
|
declare function isRequestAdmin(req: IncomingMessage): boolean;
|
|
19
19
|
export declare const __webAuthForTesting: {
|
|
@@ -23,9 +23,6 @@ export declare const __webAuthForTesting: {
|
|
|
23
23
|
setTokenModule(mod: typeof import("../core/access-token.js") | null): void;
|
|
24
24
|
};
|
|
25
25
|
export declare function createSerialQueue(): (fn: () => Promise<void>) => void;
|
|
26
|
-
/**
|
|
27
|
-
* Start the web chat server
|
|
28
|
-
*/
|
|
29
26
|
export declare function startWebServer(options: {
|
|
30
27
|
port?: number;
|
|
31
28
|
defaultAgent: string;
|
package/dist/web/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,eAAe,EAAuB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,eAAe,EAAuB,MAAM,WAAW,CAAA;AAoGnF,iBAAS,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAO/D;AAwBD,iBAAS,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAQ5D;AAyID;;;;;;;;;;;;;0EAa0E;AAC1E,iBAAS,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAcrD;AAaD,eAAO,MAAM,mBAAmB;;;;wBAIV,cAAc,yBAAyB,CAAC,GAAG,IAAI,GAAG,IAAI;CAG3E,CAAA;AAED,wBAAgB,iBAAiB,IAAI,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAOrE;AAiCD,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAwyC/C"}
|