@qlingzzy/qling 1.0.0
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 +122 -0
- package/LICENSE +21 -0
- package/README.en.md +129 -0
- package/README.md +416 -0
- package/dist/agent/subtask.d.ts +21 -0
- package/dist/agent/subtask.d.ts.map +1 -0
- package/dist/agent/subtask.js +55 -0
- package/dist/agent-loop.d.ts +151 -0
- package/dist/agent-loop.d.ts.map +1 -0
- package/dist/agent-loop.js +1498 -0
- package/dist/agents/isolation-policy.d.ts +14 -0
- package/dist/agents/isolation-policy.d.ts.map +1 -0
- package/dist/agents/isolation-policy.js +52 -0
- package/dist/channels/console-channel.d.ts +15 -0
- package/dist/channels/console-channel.d.ts.map +1 -0
- package/dist/channels/console-channel.js +66 -0
- package/dist/channels/registry.d.ts +10 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +25 -0
- package/dist/channels/slack-channel.d.ts +35 -0
- package/dist/channels/slack-channel.d.ts.map +1 -0
- package/dist/channels/slack-channel.js +232 -0
- package/dist/channels/telegram-channel.d.ts +32 -0
- package/dist/channels/telegram-channel.d.ts.map +1 -0
- package/dist/channels/telegram-channel.js +167 -0
- package/dist/channels/types.d.ts +31 -0
- package/dist/channels/types.d.ts.map +1 -0
- package/dist/channels/types.js +4 -0
- package/dist/cli/bootstrap.d.ts +39 -0
- package/dist/cli/bootstrap.d.ts.map +1 -0
- package/dist/cli/bootstrap.js +138 -0
- package/dist/cli/channel-bootstrap.d.ts +23 -0
- package/dist/cli/channel-bootstrap.d.ts.map +1 -0
- package/dist/cli/channel-bootstrap.js +46 -0
- package/dist/cli/daemon-control.d.ts +31 -0
- package/dist/cli/daemon-control.d.ts.map +1 -0
- package/dist/cli/daemon-control.js +177 -0
- package/dist/cli/guidance-panel.d.ts +11 -0
- package/dist/cli/guidance-panel.d.ts.map +1 -0
- package/dist/cli/guidance-panel.js +16 -0
- package/dist/cli/mcp-control.d.ts +7 -0
- package/dist/cli/mcp-control.d.ts.map +1 -0
- package/dist/cli/mcp-control.js +119 -0
- package/dist/cli/mission-views.d.ts +13 -0
- package/dist/cli/mission-views.d.ts.map +1 -0
- package/dist/cli/mission-views.js +82 -0
- package/dist/cli/setup.d.ts +9 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +140 -0
- package/dist/cli/startup-contract.d.ts +23 -0
- package/dist/cli/startup-contract.d.ts.map +1 -0
- package/dist/cli/startup-contract.js +694 -0
- package/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +44 -0
- package/dist/commands/checkpoint.d.ts +3 -0
- package/dist/commands/checkpoint.d.ts.map +1 -0
- package/dist/commands/checkpoint.js +52 -0
- package/dist/commands/claude-style.d.ts +12 -0
- package/dist/commands/claude-style.d.ts.map +1 -0
- package/dist/commands/claude-style.js +560 -0
- package/dist/commands/clear.d.ts +3 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +20 -0
- package/dist/commands/compact.d.ts +3 -0
- package/dist/commands/compact.d.ts.map +1 -0
- package/dist/commands/compact.js +23 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +22 -0
- package/dist/commands/connect.d.ts +3 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +102 -0
- package/dist/commands/context.d.ts +3 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +13 -0
- package/dist/commands/dashboard.d.ts +3 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +22 -0
- package/dist/commands/detach.d.ts +3 -0
- package/dist/commands/detach.d.ts.map +1 -0
- package/dist/commands/detach.js +44 -0
- package/dist/commands/distill.d.ts +3 -0
- package/dist/commands/distill.d.ts.map +1 -0
- package/dist/commands/distill.js +23 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +13 -0
- package/dist/commands/dream.d.ts +3 -0
- package/dist/commands/dream.d.ts.map +1 -0
- package/dist/commands/dream.js +59 -0
- package/dist/commands/export.d.ts +3 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +18 -0
- package/dist/commands/exports.d.ts +3 -0
- package/dist/commands/exports.d.ts.map +1 -0
- package/dist/commands/exports.js +15 -0
- package/dist/commands/goal.d.ts +3 -0
- package/dist/commands/goal.d.ts.map +1 -0
- package/dist/commands/goal.js +147 -0
- package/dist/commands/help.d.ts +4 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +75 -0
- package/dist/commands/hooks.d.ts +3 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +14 -0
- package/dist/commands/index.d.ts +29 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +417 -0
- package/dist/commands/knowledge.d.ts +8 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +191 -0
- package/dist/commands/loop.d.ts +3 -0
- package/dist/commands/loop.d.ts.map +1 -0
- package/dist/commands/loop.js +138 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +57 -0
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +215 -0
- package/dist/commands/mission.d.ts +3 -0
- package/dist/commands/mission.d.ts.map +1 -0
- package/dist/commands/mission.js +129 -0
- package/dist/commands/permissions.d.ts +3 -0
- package/dist/commands/permissions.d.ts.map +1 -0
- package/dist/commands/permissions.js +82 -0
- package/dist/commands/privacy.d.ts +3 -0
- package/dist/commands/privacy.d.ts.map +1 -0
- package/dist/commands/privacy.js +13 -0
- package/dist/commands/recap.d.ts +3 -0
- package/dist/commands/recap.d.ts.map +1 -0
- package/dist/commands/recap.js +11 -0
- package/dist/commands/repomap.d.ts +3 -0
- package/dist/commands/repomap.d.ts.map +1 -0
- package/dist/commands/repomap.js +146 -0
- package/dist/commands/resume.d.ts +3 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +42 -0
- package/dist/commands/runtime.d.ts +61 -0
- package/dist/commands/runtime.d.ts.map +1 -0
- package/dist/commands/runtime.js +20 -0
- package/dist/commands/sessions.d.ts +3 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +34 -0
- package/dist/commands/shortcuts.d.ts +3 -0
- package/dist/commands/shortcuts.d.ts.map +1 -0
- package/dist/commands/shortcuts.js +12 -0
- package/dist/commands/skill.d.ts +3 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +20 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +31 -0
- package/dist/commands/statusline.d.ts +3 -0
- package/dist/commands/statusline.d.ts.map +1 -0
- package/dist/commands/statusline.js +40 -0
- package/dist/commands/storage.d.ts +3 -0
- package/dist/commands/storage.d.ts.map +1 -0
- package/dist/commands/storage.js +122 -0
- package/dist/commands/tasks.d.ts +3 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +117 -0
- package/dist/commands/types.d.ts +14 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +1 -0
- package/dist/commands/verify.d.ts +3 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +86 -0
- package/dist/config-report.d.ts +35 -0
- package/dist/config-report.d.ts.map +1 -0
- package/dist/config-report.js +100 -0
- package/dist/config.d.ts +217 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +690 -0
- package/dist/context-compactor.d.ts +27 -0
- package/dist/context-compactor.d.ts.map +1 -0
- package/dist/context-compactor.js +489 -0
- package/dist/context-report.d.ts +35 -0
- package/dist/context-report.d.ts.map +1 -0
- package/dist/context-report.js +172 -0
- package/dist/daemon.d.ts +2 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +316 -0
- package/dist/dashboard-server.d.ts +18 -0
- package/dist/dashboard-server.d.ts.map +1 -0
- package/dist/dashboard-server.js +325 -0
- package/dist/discovery-registry.d.ts +28 -0
- package/dist/discovery-registry.d.ts.map +1 -0
- package/dist/discovery-registry.js +106 -0
- package/dist/discovery-types.d.ts +54 -0
- package/dist/discovery-types.d.ts.map +1 -0
- package/dist/discovery-types.js +5 -0
- package/dist/doctor.d.ts +31 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +343 -0
- package/dist/eval/runner.d.ts +10 -0
- package/dist/eval/runner.d.ts.map +1 -0
- package/dist/eval/runner.js +78 -0
- package/dist/eval/tasks.d.ts +3 -0
- package/dist/eval/tasks.d.ts.map +1 -0
- package/dist/eval/tasks.js +179 -0
- package/dist/eval/types.d.ts +31 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +4 -0
- package/dist/git/auto-commit.d.ts +28 -0
- package/dist/git/auto-commit.d.ts.map +1 -0
- package/dist/git/auto-commit.js +112 -0
- package/dist/guard/approval.d.ts +16 -0
- package/dist/guard/approval.d.ts.map +1 -0
- package/dist/guard/approval.js +68 -0
- package/dist/guard/content-filter.d.ts +15 -0
- package/dist/guard/content-filter.d.ts.map +1 -0
- package/dist/guard/content-filter.js +102 -0
- package/dist/guard/permissions.d.ts +17 -0
- package/dist/guard/permissions.d.ts.map +1 -0
- package/dist/guard/permissions.js +54 -0
- package/dist/guard/rate-limit.d.ts +14 -0
- package/dist/guard/rate-limit.d.ts.map +1 -0
- package/dist/guard/rate-limit.js +47 -0
- package/dist/guard.d.ts +21 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +144 -0
- package/dist/help-topics.d.ts +19 -0
- package/dist/help-topics.d.ts.map +1 -0
- package/dist/help-topics.js +391 -0
- package/dist/hooks-report.d.ts +23 -0
- package/dist/hooks-report.d.ts.map +1 -0
- package/dist/hooks-report.js +44 -0
- package/dist/i18n/index.d.ts +5 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +4 -0
- package/dist/i18n/zh-cn.d.ts +180 -0
- package/dist/i18n/zh-cn.d.ts.map +1 -0
- package/dist/i18n/zh-cn.js +184 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1157 -0
- package/dist/knowledge-agent.d.ts +47 -0
- package/dist/knowledge-agent.d.ts.map +1 -0
- package/dist/knowledge-agent.js +320 -0
- package/dist/local-status-report.d.ts +23 -0
- package/dist/local-status-report.d.ts.map +1 -0
- package/dist/local-status-report.js +63 -0
- package/dist/local-storage-report.d.ts +32 -0
- package/dist/local-storage-report.d.ts.map +1 -0
- package/dist/local-storage-report.js +171 -0
- package/dist/mcp/bridge.d.ts +11 -0
- package/dist/mcp/bridge.d.ts.map +1 -0
- package/dist/mcp/bridge.js +37 -0
- package/dist/mcp/client.d.ts +26 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +209 -0
- package/dist/mcp/http-transport.d.ts +21 -0
- package/dist/mcp/http-transport.d.ts.map +1 -0
- package/dist/mcp/http-transport.js +126 -0
- package/dist/mcp/presets.d.ts +22 -0
- package/dist/mcp/presets.d.ts.map +1 -0
- package/dist/mcp/presets.js +80 -0
- package/dist/mcp/registry.d.ts +23 -0
- package/dist/mcp/registry.d.ts.map +1 -0
- package/dist/mcp/registry.js +85 -0
- package/dist/mcp/stdio-transport.d.ts +25 -0
- package/dist/mcp/stdio-transport.d.ts.map +1 -0
- package/dist/mcp/stdio-transport.js +92 -0
- package/dist/mcp/store.d.ts +41 -0
- package/dist/mcp/store.d.ts.map +1 -0
- package/dist/mcp/store.js +100 -0
- package/dist/mcp/types.d.ts +40 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +4 -0
- package/dist/mcp-report.d.ts +30 -0
- package/dist/mcp-report.d.ts.map +1 -0
- package/dist/mcp-report.js +104 -0
- package/dist/memory/cognitive-index.d.ts +56 -0
- package/dist/memory/cognitive-index.d.ts.map +1 -0
- package/dist/memory/cognitive-index.js +265 -0
- package/dist/memory/compactor.d.ts +28 -0
- package/dist/memory/compactor.d.ts.map +1 -0
- package/dist/memory/compactor.js +92 -0
- package/dist/memory/consolidation.d.ts +13 -0
- package/dist/memory/consolidation.d.ts.map +1 -0
- package/dist/memory/consolidation.js +77 -0
- package/dist/memory/embedding.d.ts +15 -0
- package/dist/memory/embedding.d.ts.map +1 -0
- package/dist/memory/embedding.js +59 -0
- package/dist/memory/memory-llm-dream.d.ts +3 -0
- package/dist/memory/memory-llm-dream.d.ts.map +1 -0
- package/dist/memory/memory-llm-dream.js +59 -0
- package/dist/memory/projection-worker.d.ts +30 -0
- package/dist/memory/projection-worker.d.ts.map +1 -0
- package/dist/memory/projection-worker.js +92 -0
- package/dist/memory/semantic-index.d.ts +18 -0
- package/dist/memory/semantic-index.d.ts.map +1 -0
- package/dist/memory/semantic-index.js +86 -0
- package/dist/memory/wal.d.ts +33 -0
- package/dist/memory/wal.d.ts.map +1 -0
- package/dist/memory/wal.js +131 -0
- package/dist/memory-report.d.ts +120 -0
- package/dist/memory-report.d.ts.map +1 -0
- package/dist/memory-report.js +726 -0
- package/dist/memory.d.ts +149 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +632 -0
- package/dist/metrics/agent-telemetry.d.ts +14 -0
- package/dist/metrics/agent-telemetry.d.ts.map +1 -0
- package/dist/metrics/agent-telemetry.js +44 -0
- package/dist/metrics/collector.d.ts +17 -0
- package/dist/metrics/collector.d.ts.map +1 -0
- package/dist/metrics/collector.js +137 -0
- package/dist/metrics/types.d.ts +14 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +4 -0
- package/dist/mission/manager.d.ts +28 -0
- package/dist/mission/manager.d.ts.map +1 -0
- package/dist/mission/manager.js +208 -0
- package/dist/mission/types.d.ts +37 -0
- package/dist/mission/types.d.ts.map +1 -0
- package/dist/mission/types.js +5 -0
- package/dist/onboarding/tutorial.d.ts +33 -0
- package/dist/onboarding/tutorial.d.ts.map +1 -0
- package/dist/onboarding/tutorial.js +96 -0
- package/dist/output-style.d.ts +14 -0
- package/dist/output-style.d.ts.map +1 -0
- package/dist/output-style.js +29 -0
- package/dist/package-version.d.ts +12 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +42 -0
- package/dist/permissions-report.d.ts +42 -0
- package/dist/permissions-report.d.ts.map +1 -0
- package/dist/permissions-report.js +120 -0
- package/dist/pipeline/consistency-checker.d.ts +8 -0
- package/dist/pipeline/consistency-checker.d.ts.map +1 -0
- package/dist/pipeline/consistency-checker.js +40 -0
- package/dist/pipeline/example-generator.d.ts +4 -0
- package/dist/pipeline/example-generator.d.ts.map +1 -0
- package/dist/pipeline/example-generator.js +64 -0
- package/dist/pipeline/hooks.d.ts +68 -0
- package/dist/pipeline/hooks.d.ts.map +1 -0
- package/dist/pipeline/hooks.js +377 -0
- package/dist/pipeline/sections.d.ts +41 -0
- package/dist/pipeline/sections.d.ts.map +1 -0
- package/dist/pipeline/sections.js +244 -0
- package/dist/pipeline/verification.d.ts +12 -0
- package/dist/pipeline/verification.d.ts.map +1 -0
- package/dist/pipeline/verification.js +138 -0
- package/dist/privacy-report.d.ts +24 -0
- package/dist/privacy-report.d.ts.map +1 -0
- package/dist/privacy-report.js +78 -0
- package/dist/providers/presets.d.ts +25 -0
- package/dist/providers/presets.d.ts.map +1 -0
- package/dist/providers/presets.js +205 -0
- package/dist/recap.d.ts +38 -0
- package/dist/recap.d.ts.map +1 -0
- package/dist/recap.js +154 -0
- package/dist/repl.d.ts +41 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +396 -0
- package/dist/runtime-paths.d.ts +32 -0
- package/dist/runtime-paths.d.ts.map +1 -0
- package/dist/runtime-paths.js +134 -0
- package/dist/sdk.d.ts +12 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +18 -0
- package/dist/session/daemon-session-api.d.ts +22 -0
- package/dist/session/daemon-session-api.d.ts.map +1 -0
- package/dist/session/daemon-session-api.js +48 -0
- package/dist/session/durable-session-supervisor.d.ts +24 -0
- package/dist/session/durable-session-supervisor.d.ts.map +1 -0
- package/dist/session/durable-session-supervisor.js +195 -0
- package/dist/session/goal-controller.d.ts +43 -0
- package/dist/session/goal-controller.d.ts.map +1 -0
- package/dist/session/goal-controller.js +77 -0
- package/dist/session/goal-evaluator.d.ts +29 -0
- package/dist/session/goal-evaluator.d.ts.map +1 -0
- package/dist/session/goal-evaluator.js +100 -0
- package/dist/session/loop-prompt.d.ts +14 -0
- package/dist/session/loop-prompt.d.ts.map +1 -0
- package/dist/session/loop-prompt.js +49 -0
- package/dist/session/session-goal-manager.d.ts +51 -0
- package/dist/session/session-goal-manager.d.ts.map +1 -0
- package/dist/session/session-goal-manager.js +118 -0
- package/dist/session/session-registry.d.ts +40 -0
- package/dist/session/session-registry.d.ts.map +1 -0
- package/dist/session/session-registry.js +124 -0
- package/dist/session/session-scheduler.d.ts +59 -0
- package/dist/session/session-scheduler.d.ts.map +1 -0
- package/dist/session/session-scheduler.js +170 -0
- package/dist/session-checkpoint-report.d.ts +22 -0
- package/dist/session-checkpoint-report.d.ts.map +1 -0
- package/dist/session-checkpoint-report.js +99 -0
- package/dist/session-export-index.d.ts +23 -0
- package/dist/session-export-index.d.ts.map +1 -0
- package/dist/session-export-index.js +96 -0
- package/dist/session-export.d.ts +28 -0
- package/dist/session-export.d.ts.map +1 -0
- package/dist/session-export.js +99 -0
- package/dist/session-goal-report.d.ts +37 -0
- package/dist/session-goal-report.d.ts.map +1 -0
- package/dist/session-goal-report.js +219 -0
- package/dist/session-list-report.d.ts +16 -0
- package/dist/session-list-report.d.ts.map +1 -0
- package/dist/session-list-report.js +60 -0
- package/dist/session-task-report.d.ts +23 -0
- package/dist/session-task-report.d.ts.map +1 -0
- package/dist/session-task-report.js +183 -0
- package/dist/shortcuts.d.ts +2 -0
- package/dist/shortcuts.d.ts.map +1 -0
- package/dist/shortcuts.js +32 -0
- package/dist/skills/registry.d.ts +8 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +119 -0
- package/dist/skills/types.d.ts +7 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +4 -0
- package/dist/statusline.d.ts +37 -0
- package/dist/statusline.d.ts.map +1 -0
- package/dist/statusline.js +207 -0
- package/dist/tools/bash.d.ts +10 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +278 -0
- package/dist/tools/browser-fetch.d.ts +7 -0
- package/dist/tools/browser-fetch.d.ts.map +1 -0
- package/dist/tools/browser-fetch.js +133 -0
- package/dist/tools/error-utils.d.ts +9 -0
- package/dist/tools/error-utils.d.ts.map +1 -0
- package/dist/tools/error-utils.js +35 -0
- package/dist/tools/index.d.ts +27 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +86 -0
- package/dist/tools/patch.d.ts +22 -0
- package/dist/tools/patch.d.ts.map +1 -0
- package/dist/tools/patch.js +458 -0
- package/dist/tools/planner.d.ts +7 -0
- package/dist/tools/planner.d.ts.map +1 -0
- package/dist/tools/planner.js +148 -0
- package/dist/tools/read.d.ts +8 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +114 -0
- package/dist/tools/search.d.ts +11 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +636 -0
- package/dist/tools/skill.d.ts +8 -0
- package/dist/tools/skill.d.ts.map +1 -0
- package/dist/tools/skill.js +181 -0
- package/dist/tools/subtask.d.ts +9 -0
- package/dist/tools/subtask.d.ts.map +1 -0
- package/dist/tools/subtask.js +120 -0
- package/dist/tools/todo.d.ts +8 -0
- package/dist/tools/todo.d.ts.map +1 -0
- package/dist/tools/todo.js +170 -0
- package/dist/tools/url-fetch.d.ts +11 -0
- package/dist/tools/url-fetch.d.ts.map +1 -0
- package/dist/tools/url-fetch.js +208 -0
- package/dist/tools/vision-analyze.d.ts +9 -0
- package/dist/tools/vision-analyze.d.ts.map +1 -0
- package/dist/tools/vision-analyze.js +179 -0
- package/dist/tools/write.d.ts +7 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +128 -0
- package/dist/tui/chrome.d.ts +7 -0
- package/dist/tui/chrome.d.ts.map +1 -0
- package/dist/tui/chrome.js +22 -0
- package/dist/tui/input-buffer.d.ts +37 -0
- package/dist/tui/input-buffer.d.ts.map +1 -0
- package/dist/tui/input-buffer.js +228 -0
- package/dist/tui/input-history.d.ts +11 -0
- package/dist/tui/input-history.d.ts.map +1 -0
- package/dist/tui/input-history.js +69 -0
- package/dist/tui/input-queue.d.ts +27 -0
- package/dist/tui/input-queue.d.ts.map +1 -0
- package/dist/tui/input-queue.js +85 -0
- package/dist/tui/markdown.d.ts +10 -0
- package/dist/tui/markdown.d.ts.map +1 -0
- package/dist/tui/markdown.js +396 -0
- package/dist/tui/progress.d.ts +3 -0
- package/dist/tui/progress.d.ts.map +1 -0
- package/dist/tui/progress.js +13 -0
- package/dist/tui/shell.d.ts +67 -0
- package/dist/tui/shell.d.ts.map +1 -0
- package/dist/tui/shell.js +271 -0
- package/dist/tui/streaming-repl.d.ts +39 -0
- package/dist/tui/streaming-repl.d.ts.map +1 -0
- package/dist/tui/streaming-repl.js +460 -0
- package/dist/tui/streaming-tui.d.ts +174 -0
- package/dist/tui/streaming-tui.d.ts.map +1 -0
- package/dist/tui/streaming-tui.js +1049 -0
- package/dist/types.d.ts +221 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/utils/symbol-extractor.d.ts +8 -0
- package/dist/utils/symbol-extractor.d.ts.map +1 -0
- package/dist/utils/symbol-extractor.js +190 -0
- package/dist/workflow-runtime.d.ts +45 -0
- package/dist/workflow-runtime.d.ts.map +1 -0
- package/dist/workflow-runtime.js +146 -0
- package/dist/workflow-types.d.ts +73 -0
- package/dist/workflow-types.d.ts.map +1 -0
- package/dist/workflow-types.js +34 -0
- package/docs/docker.md +66 -0
- package/docs/install.md +159 -0
- package/docs/sdk.md +67 -0
- package/docs/skills.md +51 -0
- package/package.json +102 -0
- package/scripts/bootstrap.mjs +63 -0
- package/scripts/check_image.ps1 +18 -0
- package/scripts/clean-dist.mjs +18 -0
- package/scripts/copy_image.ps1 +5 -0
- package/scripts/eval-smoke.mjs +17 -0
- package/skills/examples/repo-triage/SKILL.md +50 -0
- package/skills/qling.md +42 -0
- package/skills/templates/SKILL.md +37 -0
package/dist/repl.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AgentLoop } from "./agent-loop.js";
|
|
2
|
+
export type ReplInputResult = "continue" | "exit";
|
|
3
|
+
export declare class Repl {
|
|
4
|
+
private agent;
|
|
5
|
+
private rl;
|
|
6
|
+
private readonly startupResumeTarget?;
|
|
7
|
+
private readonly startupContinue;
|
|
8
|
+
private scheduler;
|
|
9
|
+
private goalController;
|
|
10
|
+
private controllersSessionId;
|
|
11
|
+
private immediatePrompt;
|
|
12
|
+
private runningScheduledTask;
|
|
13
|
+
constructor(agent?: AgentLoop, options?: {
|
|
14
|
+
resumeSession?: string;
|
|
15
|
+
continueSession?: boolean;
|
|
16
|
+
});
|
|
17
|
+
start(): Promise<void>;
|
|
18
|
+
private loop;
|
|
19
|
+
handleInputLine(input: string): Promise<ReplInputResult>;
|
|
20
|
+
private processPrompt;
|
|
21
|
+
private resolveGoalContinuationPrompt;
|
|
22
|
+
private cleanupLocalControlStateForReset;
|
|
23
|
+
private createSlashContext;
|
|
24
|
+
private listSavedSessionSummariesForSlash;
|
|
25
|
+
private writeLegacySessionList;
|
|
26
|
+
private formatLegacyDetailedSessionList;
|
|
27
|
+
private resolveLegacyLoadTarget;
|
|
28
|
+
private parseLegacyLoadIndex;
|
|
29
|
+
private listLegacyLoadCandidates;
|
|
30
|
+
private formatSessionTime;
|
|
31
|
+
private ensureLocalSessionControllers;
|
|
32
|
+
private resetLocalSessionControllers;
|
|
33
|
+
private switchSession;
|
|
34
|
+
private finalizeRestoredSession;
|
|
35
|
+
private withLocalRestoreStatus;
|
|
36
|
+
private formatLegacyRestoreMessage;
|
|
37
|
+
private formatStartupRestoreMessage;
|
|
38
|
+
private formatLocalRestoreStatusSuffix;
|
|
39
|
+
private restoreStartupSessionIfNeeded;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=repl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,CAAC;AAMlD,qBAAa,IAAI;IACf,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,oBAAoB,CAAS;gBAGnC,KAAK,CAAC,EAAE,SAAS,EACjB,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;KACtB;IAWF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBd,IAAI;IAeZ,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YA+EhD,aAAa;YA8Bb,6BAA6B;YAqC7B,gCAAgC;IAoB9C,OAAO,CAAC,kBAAkB;YAkBZ,iCAAiC;YAwBjC,sBAAsB;IAepC,OAAO,CAAC,+BAA+B;YAezB,uBAAuB;IAWrC,OAAO,CAAC,oBAAoB;YASd,wBAAwB;IAatC,OAAO,CAAC,iBAAiB;YAKX,6BAA6B;YAwC7B,4BAA4B;YAS5B,aAAa;YAWb,uBAAuB;YAMvB,sBAAsB;IAcpC,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,8BAA8B;YAYxB,6BAA6B;CAS5C"}
|
package/dist/repl.js
ADDED
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// 轻灵 - 交互模式 REPL
|
|
3
|
+
// 多轮对话,不用每次都重开
|
|
4
|
+
// ============================================================
|
|
5
|
+
import * as readline from "readline";
|
|
6
|
+
import { AgentLoop } from "./agent-loop.js";
|
|
7
|
+
import { handleSlashCommand } from "./commands/index.js";
|
|
8
|
+
import { SessionGoalController } from "./session/goal-controller.js";
|
|
9
|
+
import { SessionGoalManager } from "./session/session-goal-manager.js";
|
|
10
|
+
import { SessionScheduler } from "./session/session-scheduler.js";
|
|
11
|
+
export class Repl {
|
|
12
|
+
agent;
|
|
13
|
+
rl;
|
|
14
|
+
startupResumeTarget;
|
|
15
|
+
startupContinue;
|
|
16
|
+
scheduler = null;
|
|
17
|
+
goalController = null;
|
|
18
|
+
controllersSessionId = null;
|
|
19
|
+
immediatePrompt = null;
|
|
20
|
+
runningScheduledTask = false;
|
|
21
|
+
constructor(agent, options = {}) {
|
|
22
|
+
this.agent = agent ?? new AgentLoop();
|
|
23
|
+
this.startupResumeTarget = options.resumeSession;
|
|
24
|
+
this.startupContinue = options.continueSession ?? false;
|
|
25
|
+
this.rl = readline.createInterface({
|
|
26
|
+
input: process.stdin,
|
|
27
|
+
output: process.stdout,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async start() {
|
|
31
|
+
console.log(`
|
|
32
|
+
╔══════════════════════════════════════════╗
|
|
33
|
+
║ 🌬️ 轻灵 REPL 模式 ║
|
|
34
|
+
║ 输入任务,回车执行。输入 q 退出。 ║
|
|
35
|
+
║ 输入 !reset 重置对话。 ║
|
|
36
|
+
║ 输入 !save [name] 保存会话。 ║
|
|
37
|
+
║ 输入 !load [name] 恢复会话。 ║
|
|
38
|
+
║ 输入 !sessions 查看已保存会话。 ║
|
|
39
|
+
╚══════════════════════════════════════════╝
|
|
40
|
+
`);
|
|
41
|
+
const restored = await this.restoreStartupSessionIfNeeded();
|
|
42
|
+
const restoredWithLocalStatus = restored
|
|
43
|
+
? await this.finalizeRestoredSession(restored)
|
|
44
|
+
: null;
|
|
45
|
+
if (restoredWithLocalStatus) {
|
|
46
|
+
console.log(`${this.formatStartupRestoreMessage(restoredWithLocalStatus)}\n`);
|
|
47
|
+
}
|
|
48
|
+
this.loop();
|
|
49
|
+
}
|
|
50
|
+
async loop() {
|
|
51
|
+
const prompt = () => new Promise((resolve) => {
|
|
52
|
+
this.rl.question("🎋 > ", (answer) => resolve(answer));
|
|
53
|
+
});
|
|
54
|
+
while (true) {
|
|
55
|
+
const input = await prompt();
|
|
56
|
+
const result = await this.handleInputLine(input);
|
|
57
|
+
if (result === "exit") {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async handleInputLine(input) {
|
|
63
|
+
const trimmedInput = input.trim();
|
|
64
|
+
if (trimmedInput === "q" || trimmedInput === "quit" || trimmedInput === "exit") {
|
|
65
|
+
console.log("👋 再见!");
|
|
66
|
+
try {
|
|
67
|
+
await this.agent.shutdown();
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// ignore shutdown cleanup failures in REPL exit path
|
|
71
|
+
}
|
|
72
|
+
await this.resetLocalSessionControllers();
|
|
73
|
+
this.rl.close();
|
|
74
|
+
process.stdin.pause();
|
|
75
|
+
return "exit";
|
|
76
|
+
}
|
|
77
|
+
if (trimmedInput === "!reset" || trimmedInput === "reset") {
|
|
78
|
+
this.agent.reset();
|
|
79
|
+
const canceledTasks = await this.cleanupLocalControlStateForReset();
|
|
80
|
+
await this.agent.checkpointSession();
|
|
81
|
+
console.log(`✅ 对话已重置。${canceledTasks > 0 ? `已同步取消 ${canceledTasks} 个 loop 任务。` : ""}\n`);
|
|
82
|
+
return "continue";
|
|
83
|
+
}
|
|
84
|
+
if (trimmedInput === "!save" || trimmedInput.startsWith("!save ")) {
|
|
85
|
+
const name = trimmedInput.replace(/^!save\s*/, "") || undefined;
|
|
86
|
+
const file = await this.agent.saveSession(name);
|
|
87
|
+
console.log(`💾 会话已保存: ${file}\n`);
|
|
88
|
+
return "continue";
|
|
89
|
+
}
|
|
90
|
+
if (trimmedInput === "!load" || trimmedInput.startsWith("!load ")) {
|
|
91
|
+
const name = trimmedInput.replace(/^!load\s*/, "");
|
|
92
|
+
if (!name) {
|
|
93
|
+
await this.writeLegacySessionList();
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
const restoreTarget = await this.resolveLegacyLoadTarget(name);
|
|
97
|
+
const restored = await this.agent.restoreSession(restoreTarget);
|
|
98
|
+
const restoredWithLocalStatus = restored
|
|
99
|
+
? await this.finalizeRestoredSession(restored)
|
|
100
|
+
: null;
|
|
101
|
+
console.log(restoredWithLocalStatus
|
|
102
|
+
? `${this.formatLegacyRestoreMessage(restoredWithLocalStatus)}\n`
|
|
103
|
+
: `❌ 找不到会话: ${name}\n`);
|
|
104
|
+
}
|
|
105
|
+
return "continue";
|
|
106
|
+
}
|
|
107
|
+
if (trimmedInput === "!sessions" || trimmedInput === "!ls") {
|
|
108
|
+
await this.writeLegacySessionList();
|
|
109
|
+
return "continue";
|
|
110
|
+
}
|
|
111
|
+
if (!trimmedInput) {
|
|
112
|
+
return "continue";
|
|
113
|
+
}
|
|
114
|
+
if (trimmedInput.startsWith("/")) {
|
|
115
|
+
await this.ensureLocalSessionControllers();
|
|
116
|
+
this.immediatePrompt = null;
|
|
117
|
+
const handledSlashCommand = await handleSlashCommand(trimmedInput, this.createSlashContext());
|
|
118
|
+
if (handledSlashCommand) {
|
|
119
|
+
if (this.immediatePrompt) {
|
|
120
|
+
const nextPrompt = this.immediatePrompt;
|
|
121
|
+
this.immediatePrompt = null;
|
|
122
|
+
await this.processPrompt(nextPrompt);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
await this.scheduler?.runDueTasksOnce();
|
|
126
|
+
}
|
|
127
|
+
return "continue";
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
await this.processPrompt(input);
|
|
131
|
+
return "continue";
|
|
132
|
+
}
|
|
133
|
+
async processPrompt(input) {
|
|
134
|
+
let currentPrompt = input;
|
|
135
|
+
this.scheduler?.setBusy(true);
|
|
136
|
+
try {
|
|
137
|
+
while (currentPrompt) {
|
|
138
|
+
console.log("\n🎋 轻灵正在思考...\n");
|
|
139
|
+
try {
|
|
140
|
+
this.agent.addUserMessage(currentPrompt);
|
|
141
|
+
const response = await this.agent.run();
|
|
142
|
+
await this.agent.checkpointSession();
|
|
143
|
+
console.log(`\n${response}\n`);
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
console.error(`\n❌ 出错: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
147
|
+
console.log("💡 输入 !reset 重置对话,或继续输入新任务。\n");
|
|
148
|
+
currentPrompt = null;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
currentPrompt = await this.resolveGoalContinuationPrompt();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
this.scheduler?.setBusy(false);
|
|
156
|
+
if (!this.runningScheduledTask) {
|
|
157
|
+
await this.scheduler?.runDueTasksOnce();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async resolveGoalContinuationPrompt() {
|
|
162
|
+
if (!this.goalController) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
if (typeof this.agent.getMessagesSnapshot !== "function" ||
|
|
166
|
+
typeof this.agent.getSessionStats !== "function") {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const stats = this.agent.getSessionStats();
|
|
171
|
+
const goalResult = await this.goalController.afterTurn({
|
|
172
|
+
transcript: SessionGoalController.messagesToTranscript(this.agent.getMessagesSnapshot()),
|
|
173
|
+
stats: {
|
|
174
|
+
turnCount: stats.turnCount ?? 0,
|
|
175
|
+
tokens: stats.tokens ?? 0,
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
if (goalResult.status === "continue" && goalResult.continuePrompt) {
|
|
179
|
+
console.log(`⚠️ goal 未达成: ${goalResult.reason ?? "条件未满足"}\n`);
|
|
180
|
+
return goalResult.continuePrompt;
|
|
181
|
+
}
|
|
182
|
+
if (goalResult.status === "achieved") {
|
|
183
|
+
console.log(`✅ goal 已达成: ${goalResult.reason ?? "条件满足"}\n`);
|
|
184
|
+
}
|
|
185
|
+
else if (goalResult.status === "cleared") {
|
|
186
|
+
console.log(`⚠️ goal 已停止: ${goalResult.reason ?? "已清除"}\n`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
console.error(`⚠️ goal 评估失败: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
191
|
+
}
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
async cleanupLocalControlStateForReset() {
|
|
195
|
+
let canceledTasks = 0;
|
|
196
|
+
if (this.scheduler && typeof this.scheduler.cancelAllTasks === "function") {
|
|
197
|
+
canceledTasks = await this.scheduler.cancelAllTasks();
|
|
198
|
+
}
|
|
199
|
+
if (this.goalController &&
|
|
200
|
+
typeof this.goalController.getGoalStatus === "function" &&
|
|
201
|
+
typeof this.goalController.clearGoal === "function") {
|
|
202
|
+
const goalStatus = await this.goalController.getGoalStatus();
|
|
203
|
+
if (goalStatus?.status === "active") {
|
|
204
|
+
await this.goalController.clearGoal("conversation_reset");
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return canceledTasks;
|
|
208
|
+
}
|
|
209
|
+
createSlashContext() {
|
|
210
|
+
return {
|
|
211
|
+
agentLoop: this.agent,
|
|
212
|
+
scheduler: this.scheduler ?? undefined,
|
|
213
|
+
goalController: this.goalController ?? undefined,
|
|
214
|
+
workspaceDir: typeof this.agent.getWorkspaceDir === "function"
|
|
215
|
+
? this.agent.getWorkspaceDir()
|
|
216
|
+
: undefined,
|
|
217
|
+
listSavedSessions: async () => this.listSavedSessionSummariesForSlash(),
|
|
218
|
+
switchSession: async (target) => this.switchSession(target),
|
|
219
|
+
setImmediatePrompt: (prompt) => {
|
|
220
|
+
this.immediatePrompt = prompt;
|
|
221
|
+
},
|
|
222
|
+
writeLine: (line = "") => console.log(line),
|
|
223
|
+
writeError: (line = "") => console.error(line),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
async listSavedSessionSummariesForSlash() {
|
|
227
|
+
if (typeof this.agent.listSessionsDetailed === "function") {
|
|
228
|
+
return (await this.agent.listSessionsDetailed());
|
|
229
|
+
}
|
|
230
|
+
if (typeof this.agent.listSessions !== "function") {
|
|
231
|
+
return [];
|
|
232
|
+
}
|
|
233
|
+
const names = await this.agent.listSessions();
|
|
234
|
+
const placeholderTime = new Date(0).toISOString();
|
|
235
|
+
return names.map((name) => ({
|
|
236
|
+
name,
|
|
237
|
+
sessionId: name,
|
|
238
|
+
workspaceDir: null,
|
|
239
|
+
createdAt: placeholderTime,
|
|
240
|
+
updatedAt: placeholderTime,
|
|
241
|
+
turnCount: 0,
|
|
242
|
+
messageCount: 0,
|
|
243
|
+
sessionTokens: 0,
|
|
244
|
+
compactionCount: 0,
|
|
245
|
+
}));
|
|
246
|
+
}
|
|
247
|
+
async writeLegacySessionList() {
|
|
248
|
+
if (typeof this.agent.listSessionsDetailed === "function") {
|
|
249
|
+
const sessions = await this.agent.listSessionsDetailed();
|
|
250
|
+
console.log(this.formatLegacyDetailedSessionList(sessions));
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const sessions = await this.agent.listSessions();
|
|
254
|
+
if (sessions.length === 0) {
|
|
255
|
+
console.log("📭 没有已保存的会话。\n");
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
console.log("📂 已保存的会话:\n" + sessions.map((s, i) => ` ${i + 1}. ${s}`).join("\n") + "\n");
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
formatLegacyDetailedSessionList(sessions) {
|
|
262
|
+
if (sessions.length === 0) {
|
|
263
|
+
return "📭 没有已保存的会话。\n";
|
|
264
|
+
}
|
|
265
|
+
const lines = ["📂 已保存的会话:"];
|
|
266
|
+
sessions.forEach((session, index) => {
|
|
267
|
+
lines.push(` ${index + 1}. ${session.name} | ${session.sessionId}`);
|
|
268
|
+
lines.push(` 更新: ${this.formatSessionTime(session.updatedAt)} | turns=${session.turnCount} | messages=${session.messageCount}`);
|
|
269
|
+
});
|
|
270
|
+
return `${lines.join("\n")}\n`;
|
|
271
|
+
}
|
|
272
|
+
async resolveLegacyLoadTarget(rawTarget) {
|
|
273
|
+
const target = rawTarget.trim();
|
|
274
|
+
const selectionIndex = this.parseLegacyLoadIndex(target);
|
|
275
|
+
if (selectionIndex === null) {
|
|
276
|
+
return target;
|
|
277
|
+
}
|
|
278
|
+
const candidates = await this.listLegacyLoadCandidates();
|
|
279
|
+
return candidates[selectionIndex - 1] ?? target;
|
|
280
|
+
}
|
|
281
|
+
parseLegacyLoadIndex(target) {
|
|
282
|
+
if (!/^[1-9]\d*$/.test(target)) {
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
const selectionIndex = Number(target);
|
|
286
|
+
return Number.isSafeInteger(selectionIndex) ? selectionIndex : null;
|
|
287
|
+
}
|
|
288
|
+
async listLegacyLoadCandidates() {
|
|
289
|
+
if (typeof this.agent.listSessionsDetailed === "function") {
|
|
290
|
+
const sessions = await this.agent.listSessionsDetailed();
|
|
291
|
+
return sessions.map((session) => session.name);
|
|
292
|
+
}
|
|
293
|
+
if (typeof this.agent.listSessions !== "function") {
|
|
294
|
+
return [];
|
|
295
|
+
}
|
|
296
|
+
return (await this.agent.listSessions());
|
|
297
|
+
}
|
|
298
|
+
formatSessionTime(value) {
|
|
299
|
+
const ts = Date.parse(value);
|
|
300
|
+
return Number.isNaN(ts) ? value : new Date(ts).toLocaleString();
|
|
301
|
+
}
|
|
302
|
+
async ensureLocalSessionControllers() {
|
|
303
|
+
if (typeof this.agent.getRuntimeRootDir !== "function" ||
|
|
304
|
+
typeof this.agent.getSessionId !== "function") {
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
const sessionId = this.agent.getSessionId();
|
|
308
|
+
if (this.scheduler && this.goalController && this.controllersSessionId === sessionId) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
await this.resetLocalSessionControllers();
|
|
312
|
+
const stateDir = this.agent.getRuntimeRootDir();
|
|
313
|
+
this.scheduler = new SessionScheduler({
|
|
314
|
+
stateDir,
|
|
315
|
+
sessionId,
|
|
316
|
+
runner: "session",
|
|
317
|
+
onDue: async (task) => {
|
|
318
|
+
this.runningScheduledTask = true;
|
|
319
|
+
try {
|
|
320
|
+
await this.processPrompt(task.prompt);
|
|
321
|
+
}
|
|
322
|
+
finally {
|
|
323
|
+
this.runningScheduledTask = false;
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
});
|
|
327
|
+
await this.scheduler.init();
|
|
328
|
+
this.scheduler.start();
|
|
329
|
+
const goalManager = new SessionGoalManager({ stateDir, sessionId });
|
|
330
|
+
this.goalController = new SessionGoalController({
|
|
331
|
+
manager: goalManager,
|
|
332
|
+
runner: "session",
|
|
333
|
+
});
|
|
334
|
+
await this.goalController.init();
|
|
335
|
+
this.controllersSessionId = sessionId;
|
|
336
|
+
}
|
|
337
|
+
async resetLocalSessionControllers() {
|
|
338
|
+
if (this.scheduler) {
|
|
339
|
+
await this.scheduler.stop();
|
|
340
|
+
}
|
|
341
|
+
this.scheduler = null;
|
|
342
|
+
this.goalController = null;
|
|
343
|
+
this.controllersSessionId = null;
|
|
344
|
+
}
|
|
345
|
+
async switchSession(target) {
|
|
346
|
+
const restored = target
|
|
347
|
+
? await this.agent.restoreSession(target)
|
|
348
|
+
: await this.agent.restoreLatestSession();
|
|
349
|
+
if (!restored) {
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
return this.finalizeRestoredSession(restored);
|
|
353
|
+
}
|
|
354
|
+
async finalizeRestoredSession(restored) {
|
|
355
|
+
await this.agent.checkpointSession();
|
|
356
|
+
await this.ensureLocalSessionControllers();
|
|
357
|
+
return this.withLocalRestoreStatus(restored);
|
|
358
|
+
}
|
|
359
|
+
async withLocalRestoreStatus(restored) {
|
|
360
|
+
if (!this.scheduler && !this.goalController) {
|
|
361
|
+
return restored;
|
|
362
|
+
}
|
|
363
|
+
const tasks = this.scheduler ? await this.scheduler.listTasks() : [];
|
|
364
|
+
const goal = this.goalController ? await this.goalController.getGoalStatus() : null;
|
|
365
|
+
return {
|
|
366
|
+
...restored,
|
|
367
|
+
activeTaskCount: tasks.filter((task) => task.status !== "canceled" && task.status !== "completed").length,
|
|
368
|
+
activeGoalStatus: goal?.status ?? null,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
formatLegacyRestoreMessage(restored) {
|
|
372
|
+
return `📂 会话已恢复: ${restored.name} (${restored.sessionId})${this.formatLocalRestoreStatusSuffix(restored)}`;
|
|
373
|
+
}
|
|
374
|
+
formatStartupRestoreMessage(restored) {
|
|
375
|
+
return `♻️ 已恢复会话: ${restored.name} (${restored.sessionId})${this.formatLocalRestoreStatusSuffix(restored)}`;
|
|
376
|
+
}
|
|
377
|
+
formatLocalRestoreStatusSuffix(restored) {
|
|
378
|
+
const localStatus = [];
|
|
379
|
+
if (typeof restored.activeTaskCount === "number") {
|
|
380
|
+
localStatus.push(`Loop Tasks: ${restored.activeTaskCount}`);
|
|
381
|
+
}
|
|
382
|
+
if (restored.activeGoalStatus) {
|
|
383
|
+
localStatus.push(`Goal: ${restored.activeGoalStatus}`);
|
|
384
|
+
}
|
|
385
|
+
return localStatus.length > 0 ? ` - ${localStatus.join(", ")}` : "";
|
|
386
|
+
}
|
|
387
|
+
async restoreStartupSessionIfNeeded() {
|
|
388
|
+
if (this.startupResumeTarget) {
|
|
389
|
+
return this.agent.restoreSession(this.startupResumeTarget);
|
|
390
|
+
}
|
|
391
|
+
if (this.startupContinue) {
|
|
392
|
+
return this.agent.restoreLatestSession();
|
|
393
|
+
}
|
|
394
|
+
return null;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface RuntimeRoots {
|
|
2
|
+
workspaceDir: string | null;
|
|
3
|
+
fileCacheDir: string;
|
|
4
|
+
fileStateDir: string;
|
|
5
|
+
}
|
|
6
|
+
export type DefaultRootKind = "workspace" | "file_cache" | "file_state";
|
|
7
|
+
/** write/patch 沙箱:默认仅工作区 */
|
|
8
|
+
export type WriteSandboxMode = "workspace" | "roots" | "off";
|
|
9
|
+
export declare function getRuntimeRootsFromEnv(env?: NodeJS.ProcessEnv): RuntimeRoots;
|
|
10
|
+
export declare function resolveWriteSandboxMode(env?: NodeJS.ProcessEnv | Record<string, string | undefined>): WriteSandboxMode;
|
|
11
|
+
/** 有效工作区:显式 workspace,否则 cwd */
|
|
12
|
+
export declare function resolveEffectiveWorkspace(roots: RuntimeRoots): string;
|
|
13
|
+
/**
|
|
14
|
+
* 写工具路径是否允许。
|
|
15
|
+
* - workspace: 仅工作区(默认)
|
|
16
|
+
* - roots: workspace + state + cache
|
|
17
|
+
* - off: 不检查
|
|
18
|
+
*/
|
|
19
|
+
export declare function isPathAllowedForWrite(absPath: string, roots: RuntimeRoots, mode?: WriteSandboxMode): boolean;
|
|
20
|
+
export interface SensitiveWriteCheck {
|
|
21
|
+
blocked: boolean;
|
|
22
|
+
code: string;
|
|
23
|
+
reason: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 敏感写目标检测(.env / 密钥文件)。
|
|
27
|
+
* QLING_ALLOW_SENSITIVE_WRITE=1 时放行。
|
|
28
|
+
*/
|
|
29
|
+
export declare function checkSensitiveWriteTarget(absPath: string, env?: NodeJS.ProcessEnv | Record<string, string | undefined>): SensitiveWriteCheck | null;
|
|
30
|
+
export declare function resolveToolPath(inputPath: string, roots: RuntimeRoots, defaultRoot?: DefaultRootKind): string;
|
|
31
|
+
export declare function isWithinAllowedRoots(absPath: string, roots: RuntimeRoots): boolean;
|
|
32
|
+
//# sourceMappingURL=runtime-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-paths.d.ts","sourceRoot":"","sources":["../src/runtime-paths.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;AAExE,4BAA4B;AAC5B,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,OAAO,GAAG,KAAK,CAAC;AAuB7D,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAUzF;AAED,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACxE,gBAAgB,CAKlB;AAED,gCAAgC;AAChC,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,EACnB,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAOT;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACxE,mBAAmB,GAAG,IAAI,CAiC5B;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,EACnB,WAAW,GAAE,eAA6B,GACzC,MAAM,CAwBR;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAMlF"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import * as os from "os";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
const HOME = os.homedir();
|
|
4
|
+
const DEFAULT_STATE_DIR = path.join(HOME, ".qling");
|
|
5
|
+
const DEFAULT_CACHE_DIR = path.join(DEFAULT_STATE_DIR, "cache");
|
|
6
|
+
/** 默认拒绝写入的敏感文件名模式(小写比较) */
|
|
7
|
+
const SENSITIVE_BASENAME_EXACT = new Set([
|
|
8
|
+
".env",
|
|
9
|
+
".env.local",
|
|
10
|
+
".env.development",
|
|
11
|
+
".env.production",
|
|
12
|
+
".env.test",
|
|
13
|
+
"id_rsa",
|
|
14
|
+
"id_ed25519",
|
|
15
|
+
"credentials.json",
|
|
16
|
+
"service-account.json",
|
|
17
|
+
".npmrc",
|
|
18
|
+
".pypirc",
|
|
19
|
+
]);
|
|
20
|
+
const SENSITIVE_BASENAME_SUFFIXES = [".pem", ".key", ".p12", ".pfx"];
|
|
21
|
+
export function getRuntimeRootsFromEnv(env = process.env) {
|
|
22
|
+
const state = path.resolve(env.QLING_FILE_STATE_DIR ?? DEFAULT_STATE_DIR);
|
|
23
|
+
const cache = path.resolve(env.QLING_FILE_CACHE_DIR ?? path.join(state, "cache"));
|
|
24
|
+
const ws = env.QLING_WORKSPACE_DIR?.trim();
|
|
25
|
+
return {
|
|
26
|
+
workspaceDir: ws ? path.resolve(ws) : null,
|
|
27
|
+
fileCacheDir: cache,
|
|
28
|
+
fileStateDir: state,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function resolveWriteSandboxMode(env = process.env) {
|
|
32
|
+
const raw = String(env.QLING_WRITE_SANDBOX ?? "workspace").trim().toLowerCase();
|
|
33
|
+
if (raw === "off" || raw === "false" || raw === "0" || raw === "none")
|
|
34
|
+
return "off";
|
|
35
|
+
if (raw === "roots" || raw === "all" || raw === "legacy")
|
|
36
|
+
return "roots";
|
|
37
|
+
return "workspace";
|
|
38
|
+
}
|
|
39
|
+
/** 有效工作区:显式 workspace,否则 cwd */
|
|
40
|
+
export function resolveEffectiveWorkspace(roots) {
|
|
41
|
+
return path.resolve(roots.workspaceDir ?? process.cwd());
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 写工具路径是否允许。
|
|
45
|
+
* - workspace: 仅工作区(默认)
|
|
46
|
+
* - roots: workspace + state + cache
|
|
47
|
+
* - off: 不检查
|
|
48
|
+
*/
|
|
49
|
+
export function isPathAllowedForWrite(absPath, roots, mode) {
|
|
50
|
+
const m = mode ?? resolveWriteSandboxMode();
|
|
51
|
+
if (m === "off")
|
|
52
|
+
return true;
|
|
53
|
+
const target = path.resolve(absPath);
|
|
54
|
+
if (m === "roots")
|
|
55
|
+
return isWithinAllowedRoots(target, roots);
|
|
56
|
+
const ws = resolveEffectiveWorkspace(roots);
|
|
57
|
+
return isSubPath(target, ws);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 敏感写目标检测(.env / 密钥文件)。
|
|
61
|
+
* QLING_ALLOW_SENSITIVE_WRITE=1 时放行。
|
|
62
|
+
*/
|
|
63
|
+
export function checkSensitiveWriteTarget(absPath, env = process.env) {
|
|
64
|
+
const allow = String(env.QLING_ALLOW_SENSITIVE_WRITE ?? "").trim().toLowerCase();
|
|
65
|
+
if (allow === "1" || allow === "true" || allow === "yes" || allow === "on") {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const base = path.basename(absPath);
|
|
69
|
+
const baseLower = base.toLowerCase();
|
|
70
|
+
const norm = path.resolve(absPath).replace(/\\/g, "/").toLowerCase();
|
|
71
|
+
if (SENSITIVE_BASENAME_EXACT.has(baseLower) || baseLower.startsWith(".env.")) {
|
|
72
|
+
return {
|
|
73
|
+
blocked: true,
|
|
74
|
+
code: "WRITE_SENSITIVE_PATH",
|
|
75
|
+
reason: `refusing to write sensitive file '${base}'. Set QLING_ALLOW_SENSITIVE_WRITE=1 to override.`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (SENSITIVE_BASENAME_SUFFIXES.some((s) => baseLower.endsWith(s))) {
|
|
79
|
+
return {
|
|
80
|
+
blocked: true,
|
|
81
|
+
code: "WRITE_SENSITIVE_PATH",
|
|
82
|
+
reason: `refusing to write key-like file '${base}'. Set QLING_ALLOW_SENSITIVE_WRITE=1 to override.`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// 路径中显式 .git/credentials 等
|
|
86
|
+
if (norm.includes("/.git/credentials") || norm.endsWith("/.git-credentials")) {
|
|
87
|
+
return {
|
|
88
|
+
blocked: true,
|
|
89
|
+
code: "WRITE_SENSITIVE_PATH",
|
|
90
|
+
reason: "refusing to write git credentials store.",
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
export function resolveToolPath(inputPath, roots, defaultRoot = "workspace") {
|
|
96
|
+
const raw = inputPath.trim();
|
|
97
|
+
if (!raw)
|
|
98
|
+
return raw;
|
|
99
|
+
const normalized = raw.replace(/\\/g, "/");
|
|
100
|
+
if (normalized.startsWith("workspace_dir/")) {
|
|
101
|
+
const rel = normalized.slice("workspace_dir/".length);
|
|
102
|
+
const base = roots.workspaceDir ?? roots.fileCacheDir;
|
|
103
|
+
return path.resolve(base, rel);
|
|
104
|
+
}
|
|
105
|
+
if (normalized.startsWith("file_cache_dir/")) {
|
|
106
|
+
return path.resolve(roots.fileCacheDir, normalized.slice("file_cache_dir/".length));
|
|
107
|
+
}
|
|
108
|
+
if (normalized.startsWith("file_state_dir/")) {
|
|
109
|
+
return path.resolve(roots.fileStateDir, normalized.slice("file_state_dir/".length));
|
|
110
|
+
}
|
|
111
|
+
if (path.isAbsolute(raw)) {
|
|
112
|
+
return path.resolve(raw);
|
|
113
|
+
}
|
|
114
|
+
const fallback = pickDefaultRoot(defaultRoot, roots);
|
|
115
|
+
return path.resolve(fallback, raw);
|
|
116
|
+
}
|
|
117
|
+
export function isWithinAllowedRoots(absPath, roots) {
|
|
118
|
+
const candidates = [roots.fileCacheDir, roots.fileStateDir];
|
|
119
|
+
if (roots.workspaceDir)
|
|
120
|
+
candidates.push(roots.workspaceDir);
|
|
121
|
+
const target = path.resolve(absPath);
|
|
122
|
+
return candidates.some((root) => isSubPath(target, path.resolve(root)));
|
|
123
|
+
}
|
|
124
|
+
function pickDefaultRoot(kind, roots) {
|
|
125
|
+
if (kind === "file_cache")
|
|
126
|
+
return roots.fileCacheDir;
|
|
127
|
+
if (kind === "file_state")
|
|
128
|
+
return roots.fileStateDir;
|
|
129
|
+
return roots.workspaceDir ?? roots.fileCacheDir;
|
|
130
|
+
}
|
|
131
|
+
function isSubPath(target, base) {
|
|
132
|
+
const rel = path.relative(base, target);
|
|
133
|
+
return rel === "" || (!rel.startsWith("..") && !path.isAbsolute(rel));
|
|
134
|
+
}
|
package/dist/sdk.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { AgentLoop, type LlmSessionPatch } from "./agent-loop.js";
|
|
2
|
+
export { loadQlingConfig, applyConfigToProcessEnv, buildDefaultConfig, guardConfigFromEnv, type QlingConfig, type CliGlobalOptions, type LoadedConfig, } from "./config.js";
|
|
3
|
+
export { getProviderPreset, listProviderPresets, resolveModelCandidates, type ProviderPreset, } from "./providers/presets.js";
|
|
4
|
+
export { getMcpPreset, listMcpPresets, type McpPreset, } from "./mcp/presets.js";
|
|
5
|
+
export { addMcpPresetToStore, loadMcpStore, saveMcpStore, defaultMcpStorePath, type McpStoreFile, } from "./mcp/store.js";
|
|
6
|
+
export { getRuntimeRootsFromEnv, isPathAllowedForWrite, checkSensitiveWriteTarget, resolveWriteSandboxMode, type RuntimeRoots, type WriteSandboxMode, } from "./runtime-paths.js";
|
|
7
|
+
export { runEvalSuite, formatEvalReport, type RunEvalOptions, } from "./eval/runner.js";
|
|
8
|
+
export { buildEvalSmokeTasks } from "./eval/tasks.js";
|
|
9
|
+
export { ALL_TOOLS, buildToolRegistry, dispatch } from "./tools/index.js";
|
|
10
|
+
export { getPackageVersion, formatCliVersion, formatDaemonVersion, } from "./package-version.js";
|
|
11
|
+
export type { AgentConfig, Message, ToolDefinition, ToolResult } from "./types.js";
|
|
12
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/sdk.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// 轻灵 Qling — SDK 导出面(Phase 2.0 雏形)
|
|
3
|
+
//
|
|
4
|
+
// 用法:
|
|
5
|
+
// import { AgentLoop, loadQlingConfig, listProviderPresets } from "@qlingzzy/qling";
|
|
6
|
+
//
|
|
7
|
+
// 说明: 此为可嵌入入口;CLI 入口仍是 dist/index.js (bin: qling)
|
|
8
|
+
// ============================================================
|
|
9
|
+
export { AgentLoop } from "./agent-loop.js";
|
|
10
|
+
export { loadQlingConfig, applyConfigToProcessEnv, buildDefaultConfig, guardConfigFromEnv, } from "./config.js";
|
|
11
|
+
export { getProviderPreset, listProviderPresets, resolveModelCandidates, } from "./providers/presets.js";
|
|
12
|
+
export { getMcpPreset, listMcpPresets, } from "./mcp/presets.js";
|
|
13
|
+
export { addMcpPresetToStore, loadMcpStore, saveMcpStore, defaultMcpStorePath, } from "./mcp/store.js";
|
|
14
|
+
export { getRuntimeRootsFromEnv, isPathAllowedForWrite, checkSensitiveWriteTarget, resolveWriteSandboxMode, } from "./runtime-paths.js";
|
|
15
|
+
export { runEvalSuite, formatEvalReport, } from "./eval/runner.js";
|
|
16
|
+
export { buildEvalSmokeTasks } from "./eval/tasks.js";
|
|
17
|
+
export { ALL_TOOLS, buildToolRegistry, dispatch } from "./tools/index.js";
|
|
18
|
+
export { getPackageVersion, formatCliVersion, formatDaemonVersion, } from "./package-version.js";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SessionTask } from "./session-scheduler.js";
|
|
2
|
+
import type { SessionGoalState } from "./session-goal-manager.js";
|
|
3
|
+
export declare class DaemonSessionApi {
|
|
4
|
+
private readonly client;
|
|
5
|
+
constructor(baseUrl?: string);
|
|
6
|
+
createLoopTask(sessionId: string, payload: {
|
|
7
|
+
prompt: string;
|
|
8
|
+
intervalMs: number;
|
|
9
|
+
mode: "fixed" | "default";
|
|
10
|
+
runner: "daemon";
|
|
11
|
+
}): Promise<SessionTask>;
|
|
12
|
+
setGoal(sessionId: string, condition: string, stats?: {
|
|
13
|
+
turnCount: number;
|
|
14
|
+
tokens: number;
|
|
15
|
+
}): Promise<SessionGoalState>;
|
|
16
|
+
clearGoal(sessionId: string): Promise<SessionGoalState>;
|
|
17
|
+
getGoal(sessionId: string): Promise<SessionGoalState | null>;
|
|
18
|
+
listLoopTasks(sessionId: string): Promise<SessionTask[]>;
|
|
19
|
+
cancelLoopTask(sessionId: string, taskId: string): Promise<SessionTask>;
|
|
20
|
+
clearLoopTasks(sessionId: string): Promise<number>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=daemon-session-api.d.ts.map
|