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,151 @@
|
|
|
1
|
+
// cli-ui/doctor.ts — one-command local health check for first-run and
|
|
2
|
+
// support conversations. It stays network-light: LLM pinging remains in
|
|
3
|
+
// `agim diag llm` so `agim doctor` is safe to run on fragile installs.
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { CONFIG_FILE, WORKSPACES_DIR } from './paths.js';
|
|
6
|
+
import { checkTcpListenAvailable, detectService, readAcpEndpoint, readWebEndpoint } from './service.js';
|
|
7
|
+
import { loadConfig } from '../core/onboarding.js';
|
|
8
|
+
import { hasAnyToken, getWebBootstrapTokenFile, isAuthEnabled } from '../core/access-token.js';
|
|
9
|
+
import { describeSecretSource } from '../core/llm/secrets.js';
|
|
10
|
+
import { checkAgentsFresh } from './readiness.js';
|
|
11
|
+
import { resolveCliLang } from './i18n.js';
|
|
12
|
+
const label = {
|
|
13
|
+
ok: '[ok]',
|
|
14
|
+
warn: '[warn]',
|
|
15
|
+
fail: '[fail]',
|
|
16
|
+
info: '[info]',
|
|
17
|
+
};
|
|
18
|
+
function line(row) {
|
|
19
|
+
return `${label[row.level].padEnd(7)} ${row.title} — ${row.detail}`;
|
|
20
|
+
}
|
|
21
|
+
function text(lang, zh, en) {
|
|
22
|
+
return lang === 'zh' ? zh : en;
|
|
23
|
+
}
|
|
24
|
+
function nodeAtLeast18() {
|
|
25
|
+
const major = Number.parseInt(process.versions.node.split('.')[0] ?? '', 10);
|
|
26
|
+
return Number.isFinite(major) && major >= 18;
|
|
27
|
+
}
|
|
28
|
+
export async function collectDoctorRows(lang = resolveCliLang()) {
|
|
29
|
+
const rows = [];
|
|
30
|
+
const config = await loadConfig();
|
|
31
|
+
rows.push({
|
|
32
|
+
level: nodeAtLeast18() ? 'ok' : 'fail',
|
|
33
|
+
title: 'Node.js',
|
|
34
|
+
detail: `v${process.versions.node} (${text(lang, '需要 >=18,推荐 22 LTS 或更新', 'requires >=18, recommends 22 LTS or newer')})`,
|
|
35
|
+
});
|
|
36
|
+
rows.push({
|
|
37
|
+
level: existsSync(CONFIG_FILE) ? 'ok' : 'warn',
|
|
38
|
+
title: text(lang, '配置文件', 'Config'),
|
|
39
|
+
detail: existsSync(CONFIG_FILE)
|
|
40
|
+
? CONFIG_FILE
|
|
41
|
+
: text(lang, `尚未创建;运行 agim go 会生成`, 'not created yet; run agim go to generate it'),
|
|
42
|
+
});
|
|
43
|
+
const readiness = await checkAgentsFresh(config);
|
|
44
|
+
rows.push({
|
|
45
|
+
level: readiness.available.length > 0 ? 'ok' : 'fail',
|
|
46
|
+
title: 'Agent',
|
|
47
|
+
detail: readiness.available.length > 0
|
|
48
|
+
? text(lang, `可用:${readiness.available.join(', ')}`, `available: ${readiness.available.join(', ')}`)
|
|
49
|
+
: text(lang, '没有可用 agent;运行 agim go 配置 Agim Agent 或安装 Claude Code / Codex', 'no available agent; run agim go to configure Agim Agent or install Claude Code / Codex'),
|
|
50
|
+
});
|
|
51
|
+
const raw = config;
|
|
52
|
+
const backends = Array.isArray(raw.llmBackends) ? raw.llmBackends : [];
|
|
53
|
+
if (backends.length === 0) {
|
|
54
|
+
rows.push({
|
|
55
|
+
level: 'info',
|
|
56
|
+
title: text(lang, '大模型 API', 'Model API'),
|
|
57
|
+
detail: text(lang, '未配置;如果已有 Claude Code / Codex CLI,可暂时不需要', 'not configured; optional when a Claude Code / Codex CLI is available'),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const keyed = backends.filter((b) => {
|
|
62
|
+
if (!b || typeof b.name !== 'string')
|
|
63
|
+
return false;
|
|
64
|
+
const provider = typeof b.provider === 'string' ? b.provider : undefined;
|
|
65
|
+
const baseUrl = typeof b.baseUrl === 'string' ? b.baseUrl : undefined;
|
|
66
|
+
return describeSecretSource(b.name, { provider, baseUrl }).source !== 'none';
|
|
67
|
+
});
|
|
68
|
+
rows.push({
|
|
69
|
+
level: keyed.length > 0 ? 'ok' : 'warn',
|
|
70
|
+
title: text(lang, '大模型 API', 'Model API'),
|
|
71
|
+
detail: text(lang, `${keyed.length}/${backends.length} 个 backend 有密钥`, `${keyed.length}/${backends.length} backend(s) have keys`),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
rows.push({
|
|
75
|
+
level: (config.messengers?.length ?? 0) > 0 ? 'ok' : 'info',
|
|
76
|
+
title: 'IM',
|
|
77
|
+
detail: (config.messengers?.length ?? 0) > 0
|
|
78
|
+
? text(lang, `已配置:${config.messengers.join(', ')}`, `configured: ${config.messengers.join(', ')}`)
|
|
79
|
+
: text(lang, '未配置;Web-only 首次体验是支持的', 'not configured; web-only first use is supported'),
|
|
80
|
+
});
|
|
81
|
+
const st = detectService();
|
|
82
|
+
rows.push({
|
|
83
|
+
level: st.mode === 'none' ? 'warn' : 'ok',
|
|
84
|
+
title: text(lang, '服务', 'Service'),
|
|
85
|
+
detail: st.mode === 'none'
|
|
86
|
+
? text(lang, '未运行;可用 agim start --bg 启动', 'not running; start with agim start --bg')
|
|
87
|
+
: `${st.mode}${st.pid ? ` pid=${st.pid}` : ''}${st.active ? ` active=${st.active}` : ''}`,
|
|
88
|
+
});
|
|
89
|
+
const web = readWebEndpoint();
|
|
90
|
+
rows.push({
|
|
91
|
+
level: web ? 'ok' : 'warn',
|
|
92
|
+
title: 'Web',
|
|
93
|
+
detail: web
|
|
94
|
+
? `http://${web.bind === '0.0.0.0' ? '127.0.0.1' : web.bind}:${web.port}`
|
|
95
|
+
: text(lang, '未找到 Web 端口配置,默认启动会使用 3000', 'no web port config found; startup defaults to 3000'),
|
|
96
|
+
});
|
|
97
|
+
const acp = readAcpEndpoint();
|
|
98
|
+
if (st.mode === 'none') {
|
|
99
|
+
const acpCheck = await checkTcpListenAvailable(acp);
|
|
100
|
+
rows.push({
|
|
101
|
+
level: acpCheck.available ? 'ok' : 'warn',
|
|
102
|
+
title: 'ACP',
|
|
103
|
+
detail: acpCheck.available
|
|
104
|
+
? `http://${acp.bind}:${acp.port}`
|
|
105
|
+
: text(lang, `端口 ${acp.bind}:${acp.port} 被占用${acpCheck.owner ? `(${acpCheck.owner})` : ''};Web-only 首次体验可继续,ACP 将不可用`, `port ${acp.bind}:${acp.port} is occupied${acpCheck.owner ? ` (${acpCheck.owner})` : ''}; web-only first use can continue, ACP will be unavailable`),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
rows.push({
|
|
110
|
+
level: 'info',
|
|
111
|
+
title: 'ACP',
|
|
112
|
+
detail: text(lang, `随服务运行;配置端口 ${acp.bind}:${acp.port}`, `runs with the service; configured port ${acp.bind}:${acp.port}`),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
const bootstrapFile = getWebBootstrapTokenFile();
|
|
116
|
+
if (!isAuthEnabled()) {
|
|
117
|
+
rows.push({ level: 'warn', title: 'Web token', detail: 'AGIM_WEB_AUTH=off' });
|
|
118
|
+
}
|
|
119
|
+
else if (hasAnyToken()) {
|
|
120
|
+
rows.push({ level: 'ok', title: 'Web token', detail: text(lang, '已存在访问 token', 'access token exists') });
|
|
121
|
+
}
|
|
122
|
+
else if (existsSync(bootstrapFile)) {
|
|
123
|
+
rows.push({ level: 'warn', title: 'Web token', detail: text(lang, `bootstrap token 待读取:${bootstrapFile}`, `bootstrap token waiting at ${bootstrapFile}`) });
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
rows.push({ level: 'warn', title: 'Web token', detail: text(lang, '尚未生成;首次启动 Web 后会生成', 'not generated yet; first web start will create one') });
|
|
127
|
+
}
|
|
128
|
+
rows.push({
|
|
129
|
+
level: existsSync(WORKSPACES_DIR) ? 'ok' : 'info',
|
|
130
|
+
title: text(lang, '工作区', 'Workspaces'),
|
|
131
|
+
detail: existsSync(WORKSPACES_DIR)
|
|
132
|
+
? WORKSPACES_DIR
|
|
133
|
+
: text(lang, `尚未创建;首次启动时自动生成`, 'not created yet; generated on first start'),
|
|
134
|
+
});
|
|
135
|
+
return rows;
|
|
136
|
+
}
|
|
137
|
+
export async function runDoctor() {
|
|
138
|
+
const lang = resolveCliLang();
|
|
139
|
+
const rows = await collectDoctorRows(lang);
|
|
140
|
+
console.log();
|
|
141
|
+
console.log(text(lang, 'Agim 本机体检', 'Agim local doctor'));
|
|
142
|
+
console.log('='.repeat(34));
|
|
143
|
+
for (const row of rows)
|
|
144
|
+
console.log(line(row));
|
|
145
|
+
console.log();
|
|
146
|
+
console.log(text(lang, '提示:需要真实请求大模型时,继续运行 agim diag llm。', 'Tip: run agim diag llm when you want a real model API ping.'));
|
|
147
|
+
console.log(text(lang, '入口:agim web 查看控制台地址;首次配置/启动用 agim go。', 'Entry: agim web shows the console URL; use agim go for first setup/start.'));
|
|
148
|
+
return rows.some((r) => r.level === 'fail') ? 1 : 0;
|
|
149
|
+
}
|
|
150
|
+
export const _internal = { line };
|
|
151
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli-ui/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-menu.d.ts","sourceRoot":"","sources":["../../src/cli-ui/entry-menu.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entry-menu.d.ts","sourceRoot":"","sources":["../../src/cli-ui/entry-menu.ts"],"names":[],"mappings":"AAYA,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,WAAW,CAAA;AAEvD,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAyBpB;;;;;GAKG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CA0CjF"}
|
|
@@ -1,14 +1,37 @@
|
|
|
1
1
|
// cli-ui/entry-menu.ts — what bare `agim` shows when invoked with
|
|
2
|
-
// no args. Drops the user at the language picker, then a
|
|
3
|
-
//
|
|
2
|
+
// no args. Drops the user at the language picker, then a short "start
|
|
3
|
+
// here" menu. Service maintenance stays available, but behind a submenu
|
|
4
|
+
// so first-run users see the product path before the ops path.
|
|
4
5
|
//
|
|
5
6
|
// We dispatch to the existing commander actions by calling them directly
|
|
6
7
|
// (they're exposed via the cli.ts module via `exec*` helpers). Could also
|
|
7
8
|
// re-spawn `agim <subcmd>` but that doubles startup time; direct
|
|
8
9
|
// dispatch keeps everything in one process.
|
|
9
|
-
import { menu, UserAbortError } from './prompts.js';
|
|
10
|
+
import { BACK, menu, UserAbortError } from './prompts.js';
|
|
10
11
|
import { pickLang } from './lang-picker.js';
|
|
11
|
-
import { t } from './i18n.js';
|
|
12
|
+
import { readSavedLang, t } from './i18n.js';
|
|
13
|
+
async function pickServiceAction(lang) {
|
|
14
|
+
console.log();
|
|
15
|
+
const picked = await menu({
|
|
16
|
+
lang,
|
|
17
|
+
message: t(lang, 'menu.service.subtitle'),
|
|
18
|
+
choices: [
|
|
19
|
+
{ value: 'start_bg', name: t(lang, 'menu.start_bg') },
|
|
20
|
+
{ value: 'restart', name: t(lang, 'menu.restart') },
|
|
21
|
+
{ value: 'stop', name: t(lang, 'menu.stop') },
|
|
22
|
+
{ value: 'status', name: t(lang, 'menu.status'), separatorBefore: true },
|
|
23
|
+
{ value: 'start', name: t(lang, 'menu.start') },
|
|
24
|
+
],
|
|
25
|
+
back: 'back',
|
|
26
|
+
});
|
|
27
|
+
if (picked === BACK)
|
|
28
|
+
return null;
|
|
29
|
+
if (picked === 'start_bg')
|
|
30
|
+
return { kind: 'start', bg: true };
|
|
31
|
+
if (picked === 'start')
|
|
32
|
+
return { kind: 'start', bg: false };
|
|
33
|
+
return { kind: picked };
|
|
34
|
+
}
|
|
12
35
|
/**
|
|
13
36
|
* Run the language picker + entry menu, return the action the user picked
|
|
14
37
|
* AND the lang they picked. The dispatcher needs the lang to localize
|
|
@@ -16,36 +39,50 @@ import { t } from './i18n.js';
|
|
|
16
39
|
* user already chose; asking again is a regression.
|
|
17
40
|
*/
|
|
18
41
|
export async function runEntryMenu() {
|
|
19
|
-
|
|
20
|
-
console.log();
|
|
21
|
-
console.log(t(lang, 'menu.title'));
|
|
22
|
-
console.log();
|
|
42
|
+
let lang;
|
|
23
43
|
try {
|
|
24
|
-
|
|
25
|
-
lang,
|
|
26
|
-
message: t(lang, 'menu.subtitle'),
|
|
27
|
-
choices: [
|
|
28
|
-
{ value: 'config', name: t(lang, 'menu.config') },
|
|
29
|
-
{ value: 'status', name: t(lang, 'menu.status'), separatorBefore: true },
|
|
30
|
-
{ value: 'start', name: t(lang, 'menu.start') },
|
|
31
|
-
{ value: 'start_bg', name: t(lang, 'menu.start_bg') },
|
|
32
|
-
{ value: 'restart', name: t(lang, 'menu.restart') },
|
|
33
|
-
{ value: 'stop', name: t(lang, 'menu.stop') },
|
|
34
|
-
{ value: 'token', name: t(lang, 'menu.token'), separatorBefore: true },
|
|
35
|
-
{ value: 'uninstall', name: t(lang, 'menu.uninstall') },
|
|
36
|
-
{ value: 'quit', name: t(lang, 'menu.quit'), separatorBefore: true },
|
|
37
|
-
],
|
|
38
|
-
}));
|
|
39
|
-
if (picked === 'start_bg')
|
|
40
|
-
return { action: { kind: 'start', bg: true }, lang };
|
|
41
|
-
if (picked === 'start')
|
|
42
|
-
return { action: { kind: 'start', bg: false }, lang };
|
|
43
|
-
return { action: { kind: picked }, lang };
|
|
44
|
+
lang = await pickLang();
|
|
44
45
|
}
|
|
45
46
|
catch (err) {
|
|
46
|
-
if (err instanceof UserAbortError)
|
|
47
|
-
return { action: { kind: 'quit' }, lang };
|
|
47
|
+
if (err instanceof UserAbortError) {
|
|
48
|
+
return { action: { kind: 'quit' }, lang: readSavedLang() ?? 'zh' };
|
|
49
|
+
}
|
|
48
50
|
throw err;
|
|
49
51
|
}
|
|
52
|
+
console.log();
|
|
53
|
+
console.log(t(lang, 'menu.title'));
|
|
54
|
+
console.log();
|
|
55
|
+
while (true) {
|
|
56
|
+
try {
|
|
57
|
+
const picked = await menu({
|
|
58
|
+
lang,
|
|
59
|
+
message: t(lang, 'menu.subtitle'),
|
|
60
|
+
choices: [
|
|
61
|
+
{ value: 'quickstart', name: t(lang, 'menu.quickstart') },
|
|
62
|
+
{ value: 'web', name: t(lang, 'menu.web') },
|
|
63
|
+
{ value: 'config', name: t(lang, 'menu.config') },
|
|
64
|
+
{ value: 'doctor', name: t(lang, 'menu.doctor'), separatorBefore: true },
|
|
65
|
+
{ value: 'status', name: t(lang, 'menu.status') },
|
|
66
|
+
{ value: 'service', name: t(lang, 'menu.service') },
|
|
67
|
+
{ value: 'token', name: t(lang, 'menu.token'), separatorBefore: true },
|
|
68
|
+
{ value: 'uninstall', name: t(lang, 'menu.uninstall') },
|
|
69
|
+
{ value: 'quit', name: t(lang, 'menu.quit'), separatorBefore: true },
|
|
70
|
+
],
|
|
71
|
+
});
|
|
72
|
+
if (picked === 'service') {
|
|
73
|
+
const action = await pickServiceAction(lang);
|
|
74
|
+
if (action)
|
|
75
|
+
return { action, lang };
|
|
76
|
+
console.log();
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
return { action: { kind: picked }, lang };
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
if (err instanceof UserAbortError)
|
|
83
|
+
return { action: { kind: 'quit' }, lang };
|
|
84
|
+
throw err;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
50
87
|
}
|
|
51
88
|
//# sourceMappingURL=entry-menu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-menu.js","sourceRoot":"","sources":["../../src/cli-ui/entry-menu.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"entry-menu.js","sourceRoot":"","sources":["../../src/cli-ui/entry-menu.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ export declare const ENV_FILE: string;
|
|
|
2
2
|
/**
|
|
3
3
|
* Defense-in-depth against the v1.0.14 class of incident: a `bun test` run
|
|
4
4
|
* on a box that doubles as the agim host silently clobbering the operator's
|
|
5
|
-
* real ~/.agim/env — observed as `
|
|
5
|
+
* real ~/.agim/env — observed as `AGIM_ADMIN_USERS=telegram:123` (the
|
|
6
6
|
* admin-bootstrap test fixture) overwriting the real admin list and locking
|
|
7
7
|
* the operator out of every admin command.
|
|
8
8
|
*
|
|
@@ -26,14 +26,14 @@ export declare function assertEnvWriteAllowed(target?: string): void;
|
|
|
26
26
|
* are dropped from the returned map but PRESERVED on write via merge. */
|
|
27
27
|
export declare function readEnvFile(): Record<string, string>;
|
|
28
28
|
/** Parse `Environment="KEY=value"` and `Environment=KEY=value` lines out
|
|
29
|
-
* of the
|
|
30
|
-
* on machines where the wizard hasn't yet written to ~/.
|
|
29
|
+
* of the agim systemd unit. Used as a fallback for `readEffectiveEnv()`
|
|
30
|
+
* on machines where the wizard hasn't yet written to ~/.agim/env AND
|
|
31
31
|
* the user's interactive shell doesn't export the keys — the unit file
|
|
32
32
|
* is world-readable on standard installs, so this works for `agim
|
|
33
33
|
* config` invoked as the user. Returns {} if the file is missing/unreadable. */
|
|
34
34
|
export declare function readSystemdUnitEnv(): Record<string, string>;
|
|
35
35
|
/** Read priority:
|
|
36
|
-
* 1. ~/.
|
|
36
|
+
* 1. ~/.agim/env (canonical, what the wizard writes)
|
|
37
37
|
* 2. process.env (current shell / inherited)
|
|
38
38
|
* 3. systemd unit's Environment= lines (what's actually in effect for
|
|
39
39
|
* the running service when the wizard is invoked from a shell that
|
package/dist/cli-ui/env-file.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// cli-ui/env-file.ts — read / write key=value pairs in ~/.
|
|
1
|
+
// cli-ui/env-file.ts — read / write key=value pairs in ~/.agim/env.
|
|
2
2
|
//
|
|
3
3
|
// The env file is sourced by the systemd unit (`EnvironmentFile=`) AND by
|
|
4
4
|
// `agim start --bg` via process.env when we re-exec ourselves. It's
|
|
@@ -14,7 +14,7 @@ export const ENV_FILE = join(AGIM_HOME, 'env');
|
|
|
14
14
|
/**
|
|
15
15
|
* Defense-in-depth against the v1.0.14 class of incident: a `bun test` run
|
|
16
16
|
* on a box that doubles as the agim host silently clobbering the operator's
|
|
17
|
-
* real ~/.agim/env — observed as `
|
|
17
|
+
* real ~/.agim/env — observed as `AGIM_ADMIN_USERS=telegram:123` (the
|
|
18
18
|
* admin-bootstrap test fixture) overwriting the real admin list and locking
|
|
19
19
|
* the operator out of every admin command.
|
|
20
20
|
*
|
|
@@ -92,18 +92,18 @@ export function readEnvFile() {
|
|
|
92
92
|
* via the systemd unit's `Environment=` lines (the install pattern used
|
|
93
93
|
* before the wizard existed) still appear in the prefill UI. */
|
|
94
94
|
const WIZARD_ENV_KEYS = [
|
|
95
|
-
'
|
|
96
|
-
'
|
|
97
|
-
'
|
|
98
|
-
'
|
|
99
|
-
'
|
|
100
|
-
'
|
|
101
|
-
'
|
|
95
|
+
'AGIM_SMTP_HOST',
|
|
96
|
+
'AGIM_SMTP_PORT',
|
|
97
|
+
'AGIM_SMTP_USER',
|
|
98
|
+
'AGIM_SMTP_PASS',
|
|
99
|
+
'AGIM_SMTP_FROM',
|
|
100
|
+
'AGIM_SMTP_SECURE',
|
|
101
|
+
'AGIM_BAIDU_MAP_AK',
|
|
102
102
|
];
|
|
103
|
-
const SYSTEMD_UNIT_PATH = '/etc/systemd/system/
|
|
103
|
+
const SYSTEMD_UNIT_PATH = '/etc/systemd/system/agim.service';
|
|
104
104
|
/** Parse `Environment="KEY=value"` and `Environment=KEY=value` lines out
|
|
105
|
-
* of the
|
|
106
|
-
* on machines where the wizard hasn't yet written to ~/.
|
|
105
|
+
* of the agim systemd unit. Used as a fallback for `readEffectiveEnv()`
|
|
106
|
+
* on machines where the wizard hasn't yet written to ~/.agim/env AND
|
|
107
107
|
* the user's interactive shell doesn't export the keys — the unit file
|
|
108
108
|
* is world-readable on standard installs, so this works for `agim
|
|
109
109
|
* config` invoked as the user. Returns {} if the file is missing/unreadable. */
|
|
@@ -141,7 +141,7 @@ export function readSystemdUnitEnv() {
|
|
|
141
141
|
return result;
|
|
142
142
|
}
|
|
143
143
|
/** Read priority:
|
|
144
|
-
* 1. ~/.
|
|
144
|
+
* 1. ~/.agim/env (canonical, what the wizard writes)
|
|
145
145
|
* 2. process.env (current shell / inherited)
|
|
146
146
|
* 3. systemd unit's Environment= lines (what's actually in effect for
|
|
147
147
|
* the running service when the wizard is invoked from a shell that
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../src/cli-ui/env-file.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../src/cli-ui/env-file.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-ui/i18n.d.ts
CHANGED
|
@@ -4,12 +4,17 @@ declare const en: {
|
|
|
4
4
|
readonly 'lang.label.en': "English";
|
|
5
5
|
readonly 'lang.label.zh': "中文";
|
|
6
6
|
readonly 'lang.saved': "Language preference saved to {file}";
|
|
7
|
-
readonly 'menu.title': "Agim ·
|
|
8
|
-
readonly 'menu.subtitle': "
|
|
9
|
-
readonly 'menu.
|
|
10
|
-
readonly 'menu.
|
|
11
|
-
readonly 'menu.
|
|
12
|
-
readonly 'menu.
|
|
7
|
+
readonly 'menu.title': "Agim · start here";
|
|
8
|
+
readonly 'menu.subtitle': "Pick what you need next.";
|
|
9
|
+
readonly 'menu.quickstart': "Go — first run: agent + Web console";
|
|
10
|
+
readonly 'menu.web': "Web console — URL, service state, login help";
|
|
11
|
+
readonly 'menu.config': "Configure — Agent, IM, Web, admins";
|
|
12
|
+
readonly 'menu.doctor': "Doctor — explain readiness problems";
|
|
13
|
+
readonly 'menu.status': "Status — service and Web endpoint";
|
|
14
|
+
readonly 'menu.service': "Service — start, restart, stop";
|
|
15
|
+
readonly 'menu.service.subtitle': "Service actions";
|
|
16
|
+
readonly 'menu.start': "Start foreground (advanced)";
|
|
17
|
+
readonly 'menu.start_bg': "Start background service";
|
|
13
18
|
readonly 'menu.restart': "Restart the service";
|
|
14
19
|
readonly 'menu.stop': "Stop the service";
|
|
15
20
|
readonly 'menu.token': "Manage web access tokens";
|
|
@@ -38,6 +43,8 @@ declare const en: {
|
|
|
38
43
|
readonly 'config.section.web': "Web admin — port";
|
|
39
44
|
readonly 'config.section.smtp': "SMTP — email reminder delivery";
|
|
40
45
|
readonly 'config.section.baidu': "Baidu Maps AK — /memo address geocoding";
|
|
46
|
+
readonly 'config.shortcut.redirect': "`{shortcut}` now opens the unified config wizard: {section}.";
|
|
47
|
+
readonly 'config.shortcut.unknown': "Unknown config shortcut: {component}. Run `agim config` and pick a section.";
|
|
41
48
|
readonly 'web.title': "Web admin — port";
|
|
42
49
|
readonly 'web.subtitle': "Set only the web console port here. Bind and ACP endpoint keep safe defaults unless you edit env manually.";
|
|
43
50
|
readonly 'web.current': "Current port: {port}";
|
|
@@ -47,7 +54,7 @@ declare const en: {
|
|
|
47
54
|
readonly 'web.bind.prompt': "Pick a bind address:";
|
|
48
55
|
readonly 'web.bind.option.loopback': "127.0.0.1 — loopback only (recommended)";
|
|
49
56
|
readonly 'web.bind.option.public': "0.0.0.0 — all interfaces (requires reverse-proxy TLS in front!)";
|
|
50
|
-
readonly 'web.bind.public_warn': "⚠️ 0.0.0.0 binds every network interface. Web auth tokens will travel cleartext unless you put a TLS-terminating reverse proxy (nginx / caddy / traefik) in front of agim. Set
|
|
57
|
+
readonly 'web.bind.public_warn': "⚠️ 0.0.0.0 binds every network interface. Web auth tokens will travel cleartext unless you put a TLS-terminating reverse proxy (nginx / caddy / traefik) in front of agim. Set AGIM_WEB_TLS_ACK=1 to silence the boot banner once your TLS terminator is verified.";
|
|
51
58
|
readonly 'web.bind.public_confirm': "You have a TLS reverse proxy in front of agim. Continue?";
|
|
52
59
|
readonly 'web.bind.saved': "✅ bind set to {bind} (written to {file}). Restart agim to pick up the new address.";
|
|
53
60
|
readonly 'web.port.prompt': "Enter port (current: {current}):";
|
|
@@ -241,6 +248,8 @@ declare const en: {
|
|
|
241
248
|
readonly 'svc.status.not_running': "no running Agim instance found";
|
|
242
249
|
readonly 'svc.status.web': "web console: http://{bind}:{port}";
|
|
243
250
|
readonly 'svc.status.uptime': "uptime: {duration}";
|
|
251
|
+
readonly 'svc.status.next_not_running': "next: run `agim go` for first run, or `agim start --bg` if setup is done.";
|
|
252
|
+
readonly 'svc.status.next_running': "next: run `agim web` for login and token help.";
|
|
244
253
|
readonly 'svc.start.starting_fg': "Starting in foreground — Ctrl-C to stop.";
|
|
245
254
|
readonly 'svc.start.starting_bg': "Starting in background…";
|
|
246
255
|
readonly 'svc.start.bg_ready': "✅ Background daemon started (pid {pid}, log: {log})";
|
|
@@ -251,7 +260,7 @@ declare const en: {
|
|
|
251
260
|
readonly 'svc.stop.stopping_bg': "Stopping background daemon (pid {pid})…";
|
|
252
261
|
readonly 'svc.stop.not_running': "Nothing to stop — Agim is not running.";
|
|
253
262
|
readonly 'svc.stop.stopped': "✅ Stopped.";
|
|
254
|
-
readonly 'svc.restart.systemd': "Restarting via `systemctl restart
|
|
263
|
+
readonly 'svc.restart.systemd': "Restarting via `systemctl restart agim.service`…";
|
|
255
264
|
readonly 'svc.restart.bg': "Restarting background daemon…";
|
|
256
265
|
readonly 'svc.restart.fg_warning': "A foreground process is running; cannot restart from another shell. Stop it (Ctrl-C) and run `agim start --bg`.";
|
|
257
266
|
readonly 'svc.restart.done': "✅ Restarted.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/cli-ui/i18n.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAI9B,QAAA,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/cli-ui/i18n.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAI9B,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsXE,CAAA;AAEV,MAAM,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAA;AAkYjC,0FAA0F;AAC1F,wBAAgB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAM,GAAG,MAAM,CAM1F;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,IAAI,IAAI,GAAG,IAAI,CAM3C;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAOzC;AAID,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAoB5E;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,eAAO,MAAM,cAAc,QAAY,CAAA"}
|