pi-harness-runtime 1.1.398 → 1.1.403
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/AGENTS.md +44 -2
- package/CHANGELOG.md +28 -0
- package/RULES.md +28 -0
- package/harness/agent-handoff.ts +2 -3
- package/harness/autonomous-review.ts +1 -1
- package/harness/blackboard.ts +2 -3
- package/harness/context-compact-orchestrator.ts +1 -1
- package/harness/context-window-manager.ts +2 -2
- package/harness/e2e/playwright-runner.ts +6 -4
- package/harness/herdr-agents.ts +1 -1
- package/harness/job-state-machine.ts +1 -1
- package/harness/langchain/daemon.ts +3 -3
- package/harness/langchain/graph.ts +2 -2
- package/harness/langchain/ping-pong-middleware.ts +2 -2
- package/harness/loop-code-agent.ts +6 -4
- package/harness/loop-controller.ts +1 -1
- package/harness/loop-review-agent.ts +1 -1
- package/harness/loop-types.ts +1 -1
- package/harness/master-planner.ts +1 -1
- package/harness/project-detector/detector.ts +1 -2
- package/harness/repair-engine.ts +2 -4
- package/harness/service-diagnostics.ts +1 -1
- package/harness/skill-sync.ts +3 -3
- package/index.ts +276 -55
- package/mirror.ts +1 -1
- package/package.json +5 -3
- package/packages/a2a-adapter/dist/discovery.d.ts.map +1 -1
- package/packages/a2a-adapter/dist/discovery.js +0 -1
- package/packages/a2a-adapter/dist/discovery.js.map +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/a2a-adapter/src/discovery.ts +0 -1
- package/packages/agent-policy/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/dist/index.d.ts +9 -0
- package/packages/auth/dist/index.d.ts.map +1 -0
- package/packages/auth/dist/index.js +9 -0
- package/packages/auth/dist/index.js.map +1 -0
- package/packages/auth/package.json +1 -1
- package/packages/auth/src/index.ts +9 -0
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/config-capture/dist/index.d.ts +52 -0
- package/packages/config-capture/dist/index.d.ts.map +1 -0
- package/packages/config-capture/dist/index.js +261 -0
- package/packages/config-capture/dist/index.js.map +1 -0
- package/packages/config-capture/package.json +1 -1
- package/packages/connection-runtime/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/durable-review/package.json +1 -1
- package/packages/e2e-tester/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-sink/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/dist/extension.d.ts +15 -0
- package/packages/file-copy-helper/dist/extension.d.ts.map +1 -0
- package/packages/file-copy-helper/dist/extension.debug.d.ts +15 -0
- package/packages/file-copy-helper/dist/extension.debug.d.ts.map +1 -0
- package/packages/file-copy-helper/dist/extension.debug.js +215 -0
- package/packages/file-copy-helper/dist/extension.debug.js.map +1 -0
- package/packages/file-copy-helper/dist/extension.js +222 -0
- package/packages/file-copy-helper/dist/extension.js.map +1 -0
- package/packages/file-copy-helper/dist/index.d.ts +3 -0
- package/packages/file-copy-helper/dist/index.d.ts.map +1 -0
- package/packages/file-copy-helper/dist/index.js +3 -0
- package/packages/file-copy-helper/dist/index.js.map +1 -0
- package/packages/file-copy-helper/dist/intent-detector.d.ts +21 -0
- package/packages/file-copy-helper/dist/intent-detector.d.ts.map +1 -0
- package/packages/file-copy-helper/dist/intent-detector.js +348 -0
- package/packages/file-copy-helper/dist/intent-detector.js.map +1 -0
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/dist/auto-continue.d.ts +161 -2
- package/packages/jev-judge/dist/auto-continue.d.ts.map +1 -1
- package/packages/jev-judge/dist/auto-continue.js +267 -22
- package/packages/jev-judge/dist/auto-continue.js.map +1 -1
- package/packages/jev-judge/dist/index.d.ts +2 -0
- package/packages/jev-judge/dist/index.d.ts.map +1 -1
- package/packages/jev-judge/dist/index.js +2 -0
- package/packages/jev-judge/dist/index.js.map +1 -1
- package/packages/jev-judge/dist/question-risk.d.ts +53 -0
- package/packages/jev-judge/dist/question-risk.d.ts.map +1 -0
- package/packages/jev-judge/dist/question-risk.js +105 -0
- package/packages/jev-judge/dist/question-risk.js.map +1 -0
- package/packages/jev-judge/package.json +1 -1
- package/packages/jev-judge/src/auto-continue.ts +426 -29
- package/packages/jev-judge/src/index.ts +4 -0
- package/packages/jev-judge/src/question-risk.ts +155 -0
- package/packages/jev-judge/tests/auto-continue-context.test.ts +243 -0
- package/packages/jev-judge/tests/outcome-application.test.ts +132 -0
- package/packages/jev-judge/tests/question-risk.test.ts +129 -0
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/logging/README.md +36 -3
- package/packages/logging/dist/config.d.ts +7 -0
- package/packages/logging/dist/config.d.ts.map +1 -1
- package/packages/logging/dist/config.js +14 -0
- package/packages/logging/dist/config.js.map +1 -1
- package/packages/logging/dist/incidents/schema.d.ts +111 -0
- package/packages/logging/dist/incidents/schema.d.ts.map +1 -0
- package/packages/logging/dist/incidents/schema.js +0 -0
- package/packages/logging/dist/incidents/schema.js.map +1 -0
- package/packages/logging/dist/index.d.ts +2 -0
- package/packages/logging/dist/index.d.ts.map +1 -1
- package/packages/logging/dist/index.js +2 -0
- package/packages/logging/dist/index.js.map +1 -1
- package/packages/logging/dist/server/http.d.ts +4 -3
- package/packages/logging/dist/server/http.d.ts.map +1 -1
- package/packages/logging/dist/server/http.js +35 -3
- package/packages/logging/dist/server/http.js.map +1 -1
- package/packages/logging/dist/server/incident-qdrant.d.ts +83 -0
- package/packages/logging/dist/server/incident-qdrant.d.ts.map +1 -0
- package/packages/logging/dist/server/incident-qdrant.js +129 -0
- package/packages/logging/dist/server/incident-qdrant.js.map +1 -0
- package/packages/logging/dist/server/incident-store.d.ts +76 -0
- package/packages/logging/dist/server/incident-store.d.ts.map +1 -0
- package/packages/logging/dist/server/incident-store.js +157 -0
- package/packages/logging/dist/server/incident-store.js.map +1 -0
- package/packages/logging/dist/server/index.d.ts +4 -0
- package/packages/logging/dist/server/index.d.ts.map +1 -1
- package/packages/logging/dist/server/index.js +2 -0
- package/packages/logging/dist/server/index.js.map +1 -1
- package/packages/logging/dist/server/service.d.ts +33 -0
- package/packages/logging/dist/server/service.d.ts.map +1 -1
- package/packages/logging/dist/server/service.js +63 -0
- package/packages/logging/dist/server/service.js.map +1 -1
- package/packages/logging/dist/shipper.d.ts +74 -3
- package/packages/logging/dist/shipper.d.ts.map +1 -1
- package/packages/logging/dist/shipper.js +88 -5
- package/packages/logging/dist/shipper.js.map +1 -1
- package/packages/logging/dist/singleton.d.ts.map +1 -1
- package/packages/logging/dist/singleton.js +1 -0
- package/packages/logging/dist/singleton.js.map +1 -1
- package/packages/logging/package.json +1 -1
- package/packages/logging/src/config.ts +22 -0
- package/packages/logging/src/incidents/schema.ts +0 -0
- package/packages/logging/src/index.ts +17 -0
- package/packages/logging/src/server/http.ts +42 -3
- package/packages/logging/src/server/incident-qdrant.ts +177 -0
- package/packages/logging/src/server/incident-store.ts +192 -0
- package/packages/logging/src/server/index.ts +21 -0
- package/packages/logging/src/server/service.ts +79 -0
- package/packages/logging/src/shipper.ts +120 -5
- package/packages/logging/src/singleton.ts +1 -0
- package/packages/logging/test/fanout.test.ts +186 -0
- package/packages/logging/test/incidents.test.ts +404 -0
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/dist/adapters/detail-format.d.ts +10 -2
- package/packages/notification/dist/adapters/detail-format.d.ts.map +1 -1
- package/packages/notification/dist/adapters/detail-format.js +39 -0
- package/packages/notification/dist/adapters/detail-format.js.map +1 -1
- package/packages/notification/dist/adapters/line-adapter.d.ts +33 -0
- package/packages/notification/dist/adapters/line-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/line-adapter.js +84 -7
- package/packages/notification/dist/adapters/line-adapter.js.map +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.js +6 -2
- package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
- package/packages/notification/dist/notification-center.d.ts.map +1 -1
- package/packages/notification/dist/notification-center.js +59 -7
- package/packages/notification/dist/notification-center.js.map +1 -1
- package/packages/notification/dist/pending-question.d.ts +69 -2
- package/packages/notification/dist/pending-question.d.ts.map +1 -1
- package/packages/notification/dist/pending-question.js +88 -2
- package/packages/notification/dist/pending-question.js.map +1 -1
- package/packages/notification/dist/types.d.ts +18 -0
- package/packages/notification/dist/types.d.ts.map +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/notification/src/adapters/detail-format.ts +42 -2
- package/packages/notification/src/adapters/line-adapter.ts +94 -7
- package/packages/notification/src/adapters/telegram-adapter.ts +6 -2
- package/packages/notification/src/notification-center.ts +65 -8
- package/packages/notification/src/pending-question.ts +160 -8
- package/packages/notification/src/types.ts +18 -0
- package/packages/notification/test/approval-payload.test.ts +269 -0
- package/packages/notification/test/pending-question-lifecycle.test.ts +195 -0
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/dist/index.d.ts +9 -0
- package/packages/okf-indexer/dist/index.d.ts.map +1 -0
- package/packages/okf-indexer/dist/index.js +9 -0
- package/packages/okf-indexer/dist/index.js.map +1 -0
- package/packages/okf-indexer/package.json +1 -1
- package/packages/okf-indexer/src/index.ts +9 -0
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/permission-mode/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/dist/provider-router.d.ts.map +1 -1
- package/packages/provider-router/dist/types.d.ts +2 -2
- package/packages/provider-router/dist/types.d.ts.map +1 -1
- package/packages/provider-router/dist/types.js +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-router/src/types.ts +2 -2
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/relay/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/dist/index.d.ts +9 -0
- package/packages/scheduler/dist/index.d.ts.map +1 -0
- package/packages/scheduler/dist/index.js +9 -0
- package/packages/scheduler/dist/index.js.map +1 -0
- package/packages/scheduler/dist/scheduler.d.ts +17 -0
- package/packages/scheduler/dist/scheduler.d.ts.map +1 -0
- package/packages/scheduler/dist/scheduler.js +41 -0
- package/packages/scheduler/dist/scheduler.js.map +1 -0
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler/src/index.ts +9 -0
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/dist/index.d.ts +7 -0
- package/packages/shared-context/dist/index.d.ts.map +1 -0
- package/packages/shared-context/dist/index.js +7 -0
- package/packages/shared-context/dist/index.js.map +1 -0
- package/packages/shared-context/dist/shared-context.d.ts +12 -0
- package/packages/shared-context/dist/shared-context.d.ts.map +1 -0
- package/packages/shared-context/dist/shared-context.js +39 -0
- package/packages/shared-context/dist/shared-context.js.map +1 -0
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/dist/client.d.ts +56 -0
- package/packages/skill-mcp-client/dist/client.d.ts.map +1 -0
- package/packages/skill-mcp-client/dist/client.js +101 -0
- package/packages/skill-mcp-client/dist/client.js.map +1 -0
- package/packages/skill-mcp-client/dist/errors.d.ts +44 -0
- package/packages/skill-mcp-client/dist/errors.d.ts.map +1 -0
- package/packages/skill-mcp-client/dist/errors.js +68 -0
- package/packages/skill-mcp-client/dist/errors.js.map +1 -0
- package/packages/skill-mcp-client/dist/index.d.ts +9 -0
- package/packages/skill-mcp-client/dist/index.d.ts.map +1 -0
- package/packages/skill-mcp-client/dist/index.js +9 -0
- package/packages/skill-mcp-client/dist/index.js.map +1 -0
- package/packages/skill-mcp-client/dist/types.d.ts +106 -0
- package/packages/skill-mcp-client/dist/types.d.ts.map +1 -0
- package/packages/skill-mcp-client/dist/types.js +14 -0
- package/packages/skill-mcp-client/dist/types.js.map +1 -0
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -5
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/telegram/package.json +1 -1
- package/packages/telegram/src/agent-messages.d.ts +28 -0
- package/packages/telegram/src/agent-messages.js +90 -0
- package/packages/telegram/src/bindings.d.ts +296 -0
- package/packages/telegram/src/bindings.js +1086 -0
- package/packages/telegram/src/bus.d.ts +759 -0
- package/packages/telegram/src/bus.js +2732 -0
- package/packages/telegram/src/commands.d.ts +761 -0
- package/packages/telegram/src/commands.js +2622 -0
- package/packages/telegram/src/config.d.ts +222 -0
- package/packages/telegram/src/config.js +844 -0
- package/packages/telegram/src/delivery.d.ts +161 -0
- package/packages/telegram/src/delivery.js +550 -0
- package/packages/telegram/src/extension.d.ts +7 -0
- package/packages/telegram/src/extension.js +2444 -0
- package/packages/telegram/src/inbound.d.ts +94 -0
- package/packages/telegram/src/inbound.js +478 -0
- package/packages/telegram/src/index.d.ts +6 -0
- package/packages/telegram/src/index.js +6 -0
- package/packages/telegram/src/keyboard.d.ts +21 -0
- package/packages/telegram/src/keyboard.js +37 -0
- package/packages/telegram/src/lifecycle.d.ts +210 -0
- package/packages/telegram/src/lifecycle.js +538 -0
- package/packages/telegram/src/pi.d.ts +76 -0
- package/packages/telegram/src/pi.js +130 -0
- package/packages/telegram/src/polling.d.ts +332 -0
- package/packages/telegram/src/polling.js +1219 -0
- package/packages/telegram/src/replies.d.ts +210 -0
- package/packages/telegram/src/replies.js +752 -0
- package/packages/telegram/src/routing.d.ts +388 -0
- package/packages/telegram/src/routing.js +7886 -0
- package/packages/telegram/src/runtime.d.ts +159 -0
- package/packages/telegram/src/runtime.js +351 -0
- package/packages/telegram/src/telegram-api.d.ts +564 -0
- package/packages/telegram/src/telegram-api.js +1332 -0
- package/packages/telegram/src/turns.d.ts +108 -0
- package/packages/telegram/src/turns.js +482 -0
- package/packages/telegram/src/updates.d.ts +1545 -0
- package/packages/telegram/src/updates.js +6420 -0
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/dist/detector.d.ts +54 -0
- package/packages/todo-bd-sync/dist/detector.d.ts.map +1 -0
- package/packages/todo-bd-sync/dist/detector.js +132 -0
- package/packages/todo-bd-sync/dist/detector.js.map +1 -0
- package/packages/todo-bd-sync/dist/extension.d.ts +30 -0
- package/packages/todo-bd-sync/dist/extension.d.ts.map +1 -0
- package/packages/todo-bd-sync/dist/extension.js +35 -0
- package/packages/todo-bd-sync/dist/extension.js.map +1 -0
- package/packages/todo-bd-sync/dist/index.d.ts +87 -0
- package/packages/todo-bd-sync/dist/index.d.ts.map +1 -0
- package/packages/todo-bd-sync/dist/index.js +296 -0
- package/packages/todo-bd-sync/dist/index.js.map +1 -0
- package/packages/todo-bd-sync/dist/sync.d.ts +72 -0
- package/packages/todo-bd-sync/dist/sync.d.ts.map +1 -0
- package/packages/todo-bd-sync/dist/sync.js +290 -0
- package/packages/todo-bd-sync/dist/sync.js.map +1 -0
- package/packages/todo-bd-sync/dist/task-analyzer.d.ts +49 -0
- package/packages/todo-bd-sync/dist/task-analyzer.d.ts.map +1 -0
- package/packages/todo-bd-sync/dist/task-analyzer.js +240 -0
- package/packages/todo-bd-sync/dist/task-analyzer.js.map +1 -0
- package/packages/todo-bd-sync/dist/todo-reminder.d.ts +126 -0
- package/packages/todo-bd-sync/dist/todo-reminder.d.ts.map +1 -0
- package/packages/todo-bd-sync/dist/todo-reminder.js +329 -0
- package/packages/todo-bd-sync/dist/todo-reminder.js.map +1 -0
- package/packages/todo-bd-sync/dist/types.d.ts +65 -0
- package/packages/todo-bd-sync/dist/types.d.ts.map +1 -0
- package/packages/todo-bd-sync/dist/types.js +67 -0
- package/packages/todo-bd-sync/dist/types.js.map +1 -0
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/dist/index.d.ts +94 -0
- package/packages/token-estimation/dist/index.d.ts.map +1 -0
- package/packages/token-estimation/dist/index.js +115 -0
- package/packages/token-estimation/dist/index.js.map +1 -0
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/dist/ai-providers.d.ts +36 -0
- package/packages/types/dist/ai-providers.d.ts.map +1 -0
- package/packages/types/dist/ai-providers.js +66 -0
- package/packages/types/dist/ai-providers.js.map +1 -0
- package/packages/types/dist/index.d.ts +12 -0
- package/packages/types/dist/index.d.ts.map +1 -0
- package/packages/types/dist/index.js +12 -0
- package/packages/types/dist/index.js.map +1 -0
- package/packages/types/package.json +5 -5
- package/packages/types/src/index.ts +12 -0
- package/packages/voice-api/package.json +1 -1
- package/packages/webmcp-tester/package.json +1 -1
- package/packages/wiki/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/worktree/worktree.ts +1 -1
- package/packages/write-review/package.json +1 -1
- package/renderer.ts +1 -1
- package/scripts/build-packages.ts +162 -0
- package/scripts/relay-client.ts +2 -2
- package/scripts/typecheck-packages.mjs +3 -3
- package/scripts/unified-webhook-server.ts +22 -10
- package/scripts/verify-package-contents.ts +345 -0
- package/scripts/ws-server.ts +1 -1
- package/tracker.ts +1 -1
- package/harness/browser-scrapers/base-browser-scraper.d.ts +0 -91
- package/harness/browser-scrapers/chrome-profile-manager.d.ts +0 -80
- package/harness/browser-scrapers/codex-browser-scraper.d.ts +0 -60
- package/harness/browser-scrapers/index.d.ts +0 -29
- package/harness/browser-scrapers/zai-browser-scraper.d.ts +0 -79
- package/harness/e2e/browser-scrapers/base-browser-scraper.d.ts +0 -92
- package/harness/e2e/browser-scrapers/chrome-profile-manager.d.ts +0 -81
- package/harness/e2e/browser-scrapers/codex-browser-scraper.d.ts +0 -61
- package/harness/e2e/browser-scrapers/index.d.ts +0 -30
- package/harness/e2e/browser-scrapers/zai-browser-scraper.d.ts +0 -80
- package/harness/langchain/agents.d.ts +0 -143
- package/harness/langchain/agents.test.d.ts +0 -2
- package/harness/langchain/checkpointer.d.ts +0 -48
- package/harness/langchain/checkpointer.test.d.ts +0 -8
- package/harness/langchain/cron-cli.d.ts +0 -12
- package/harness/langchain/daemon.d.ts +0 -161
- package/harness/langchain/daemon.test.d.ts +0 -11
- package/harness/langchain/file-tools.d.ts +0 -97
- package/harness/langchain/graph.d.ts +0 -706
- package/harness/langchain/model-router.d.ts +0 -63
- package/harness/langchain/model-router.test.d.ts +0 -2
- package/harness/langchain/models.d.ts +0 -72
- package/harness/langchain/ping-pong-middleware.d.ts +0 -28
- package/harness/langchain/ping-pong-middleware.test.d.ts +0 -2
- package/harness/langchain/run.d.ts +0 -15
- package/harness/langchain/scoreboard.test.d.ts +0 -13
- package/harness/langchain/status-line.d.ts +0 -91
- package/harness/langchain/status-line.test.d.ts +0 -8
- package/harness/langchain/surge.d.ts +0 -111
- package/harness/langchain/surge.test.d.ts +0 -10
- package/harness/langchain/widget.d.ts +0 -105
- package/harness/langchain/widget.test.d.ts +0 -8
- package/packages/autonomous-runtime/dist/worker.d.ts +0 -63
- package/packages/autonomous-runtime/dist/worker.js +0 -133
- package/packages/capability-registry/src/types.d.ts +0 -47
- package/packages/clipboard/dist/clipboard.d.ts +0 -11
- package/packages/clipboard/dist/clipboard.js +0 -40
- package/packages/clipboard/dist/index.d.ts +0 -2
- package/packages/clipboard/dist/index.js +0 -2
- package/packages/clipboard/dist/types.d.ts +0 -13
- package/packages/clipboard/dist/types.js +0 -5
- package/packages/context-discovery/dist/discover.d.ts +0 -3
- package/packages/context-discovery/dist/discover.js +0 -42
- package/packages/context-discovery/dist/discovery.d.ts +0 -28
- package/packages/context-discovery/dist/discovery.js +0 -21
- package/packages/context-discovery/dist/index.d.ts +0 -3
- package/packages/context-discovery/dist/index.js +0 -2
- package/packages/context-discovery/dist/types.d.ts +0 -16
- package/packages/context-discovery/dist/types.js +0 -2
- package/packages/event-bus/dist/bus.d.ts +0 -15
- package/packages/event-bus/dist/bus.js +0 -90
- package/packages/event-bus/dist/index.d.ts +0 -4
- package/packages/event-bus/dist/index.js +0 -3
- package/packages/event-bus/dist/test/bus.test.js +0 -52
- package/packages/event-bus/dist/types.d.ts +0 -27
- package/packages/event-bus/dist/types.js +0 -10
- package/packages/event-store/dist/index.d.ts +0 -3
- package/packages/event-store/dist/index.js +0 -2
- package/packages/event-store/dist/store.d.ts +0 -15
- package/packages/event-store/dist/store.js +0 -131
- package/packages/event-store/dist/test/store.test.js +0 -57
- package/packages/event-store/dist/types.d.ts +0 -48
- package/packages/event-store/dist/types.js +0 -5
- package/packages/event-store/src/types.d.ts +0 -48
- package/packages/file-copy-helper/dist/src/extension.js +0 -186
- package/packages/model-registry/src/types.d.ts +0 -63
- package/packages/notification/dist/src/adapters/email-adapter.d.ts +0 -17
- package/packages/notification/dist/src/adapters/email-adapter.d.ts.map +0 -1
- package/packages/notification/dist/src/adapters/email-adapter.js +0 -89
- package/packages/notification/dist/src/adapters/email-adapter.js.map +0 -1
- package/packages/notification/dist/src/adapters/line-adapter.d.ts +0 -17
- package/packages/notification/dist/src/adapters/line-adapter.d.ts.map +0 -1
- package/packages/notification/dist/src/adapters/line-adapter.js +0 -99
- package/packages/notification/dist/src/adapters/line-adapter.js.map +0 -1
- package/packages/notification/dist/src/adapters/ntfy-adapter.d.ts +0 -17
- package/packages/notification/dist/src/adapters/ntfy-adapter.d.ts.map +0 -1
- package/packages/notification/dist/src/adapters/ntfy-adapter.js +0 -84
- package/packages/notification/dist/src/adapters/ntfy-adapter.js.map +0 -1
- package/packages/notification/dist/src/adapters/telegram-adapter.d.ts +0 -56
- package/packages/notification/dist/src/adapters/telegram-adapter.d.ts.map +0 -1
- package/packages/notification/dist/src/adapters/telegram-adapter.js +0 -251
- package/packages/notification/dist/src/adapters/telegram-adapter.js.map +0 -1
- package/packages/notification/dist/src/adapters/webhook-adapter.d.ts +0 -15
- package/packages/notification/dist/src/adapters/webhook-adapter.d.ts.map +0 -1
- package/packages/notification/dist/src/adapters/webhook-adapter.js +0 -64
- package/packages/notification/dist/src/adapters/webhook-adapter.js.map +0 -1
- package/packages/notification/dist/src/base-adapter.d.ts +0 -36
- package/packages/notification/dist/src/base-adapter.d.ts.map +0 -1
- package/packages/notification/dist/src/base-adapter.js +0 -39
- package/packages/notification/dist/src/base-adapter.js.map +0 -1
- package/packages/notification/dist/src/index.d.ts +0 -12
- package/packages/notification/dist/src/index.d.ts.map +0 -1
- package/packages/notification/dist/src/index.js +0 -12
- package/packages/notification/dist/src/index.js.map +0 -1
- package/packages/notification/dist/src/notification-center.d.ts +0 -89
- package/packages/notification/dist/src/notification-center.d.ts.map +0 -1
- package/packages/notification/dist/src/notification-center.js +0 -356
- package/packages/notification/dist/src/notification-center.js.map +0 -1
- package/packages/notification/dist/src/notification-policy.d.ts +0 -66
- package/packages/notification/dist/src/notification-policy.d.ts.map +0 -1
- package/packages/notification/dist/src/notification-policy.js +0 -153
- package/packages/notification/dist/src/notification-policy.js.map +0 -1
- package/packages/notification/dist/src/telegram-webhook-handler.d.ts +0 -86
- package/packages/notification/dist/src/telegram-webhook-handler.d.ts.map +0 -1
- package/packages/notification/dist/src/telegram-webhook-handler.js +0 -149
- package/packages/notification/dist/src/telegram-webhook-handler.js.map +0 -1
- package/packages/notification/dist/src/types.d.ts +0 -106
- package/packages/notification/dist/src/types.d.ts.map +0 -1
- package/packages/notification/dist/src/types.js +0 -7
- package/packages/notification/dist/src/types.js.map +0 -1
- package/packages/projection-engine/dist/engine.d.ts +0 -61
- package/packages/projection-engine/dist/engine.js +0 -76
- package/packages/projection-engine/dist/index.d.ts +0 -2
- package/packages/projection-engine/dist/index.js +0 -2
- package/packages/projection-engine/dist/project.d.ts +0 -3
- package/packages/projection-engine/dist/project.js +0 -24
- package/packages/projection-engine/dist/types.d.ts +0 -55
- package/packages/projection-engine/dist/types.js +0 -5
- package/packages/projection-engine/src/types.d.ts +0 -55
- package/packages/provider-adapter-sdk/dist/src/builder.d.ts +0 -140
- package/packages/provider-adapter-sdk/dist/src/builder.d.ts.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/builder.js +0 -332
- package/packages/provider-adapter-sdk/dist/src/builder.js.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/errors.d.ts +0 -71
- package/packages/provider-adapter-sdk/dist/src/errors.d.ts.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/errors.js +0 -111
- package/packages/provider-adapter-sdk/dist/src/errors.js.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/index.d.ts +0 -15
- package/packages/provider-adapter-sdk/dist/src/index.d.ts.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/index.js +0 -19
- package/packages/provider-adapter-sdk/dist/src/index.js.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/registry.d.ts +0 -108
- package/packages/provider-adapter-sdk/dist/src/registry.d.ts.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/registry.js +0 -301
- package/packages/provider-adapter-sdk/dist/src/registry.js.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/tester.d.ts +0 -71
- package/packages/provider-adapter-sdk/dist/src/tester.d.ts.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/tester.js +0 -392
- package/packages/provider-adapter-sdk/dist/src/tester.js.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/types.d.ts +0 -182
- package/packages/provider-adapter-sdk/dist/src/types.d.ts.map +0 -1
- package/packages/provider-adapter-sdk/dist/src/types.js +0 -11
- package/packages/provider-adapter-sdk/dist/src/types.js.map +0 -1
- package/packages/provider-router/dist/capability-registry/src/types.d.ts +0 -47
- package/packages/provider-router/dist/capability-registry/src/types.d.ts.map +0 -1
- package/packages/provider-router/dist/capability-registry/src/types.js +0 -10
- package/packages/provider-router/dist/capability-registry/src/types.js.map +0 -1
- package/packages/provider-router/dist/provider-router/src/index.d.ts +0 -23
- package/packages/provider-router/dist/provider-router/src/index.d.ts.map +0 -1
- package/packages/provider-router/dist/provider-router/src/index.js +0 -25
- package/packages/provider-router/dist/provider-router/src/index.js.map +0 -1
- package/packages/provider-router/dist/provider-router/src/policy.d.ts +0 -10
- package/packages/provider-router/dist/provider-router/src/policy.d.ts.map +0 -1
- package/packages/provider-router/dist/provider-router/src/policy.js +0 -45
- package/packages/provider-router/dist/provider-router/src/policy.js.map +0 -1
- package/packages/provider-router/dist/provider-router/src/provider-router.d.ts +0 -56
- package/packages/provider-router/dist/provider-router/src/provider-router.d.ts.map +0 -1
- package/packages/provider-router/dist/provider-router/src/provider-router.js +0 -222
- package/packages/provider-router/dist/provider-router/src/provider-router.js.map +0 -1
- package/packages/provider-router/dist/provider-router/src/strategies.d.ts +0 -19
- package/packages/provider-router/dist/provider-router/src/strategies.d.ts.map +0 -1
- package/packages/provider-router/dist/provider-router/src/strategies.js +0 -110
- package/packages/provider-router/dist/provider-router/src/strategies.js.map +0 -1
- package/packages/provider-router/dist/provider-router/src/types.d.ts +0 -91
- package/packages/provider-router/dist/provider-router/src/types.d.ts.map +0 -1
- package/packages/provider-router/dist/provider-router/src/types.js +0 -10
- package/packages/provider-router/dist/provider-router/src/types.js.map +0 -1
- package/packages/provider-router/dist/src/index.d.ts +0 -23
- package/packages/provider-router/dist/src/index.d.ts.map +0 -1
- package/packages/provider-router/dist/src/index.js +0 -25
- package/packages/provider-router/dist/src/index.js.map +0 -1
- package/packages/provider-router/dist/src/policy.d.ts +0 -10
- package/packages/provider-router/dist/src/policy.d.ts.map +0 -1
- package/packages/provider-router/dist/src/policy.js +0 -45
- package/packages/provider-router/dist/src/policy.js.map +0 -1
- package/packages/provider-router/dist/src/provider-router.d.ts +0 -56
- package/packages/provider-router/dist/src/provider-router.d.ts.map +0 -1
- package/packages/provider-router/dist/src/provider-router.js +0 -222
- package/packages/provider-router/dist/src/provider-router.js.map +0 -1
- package/packages/provider-router/dist/src/strategies.d.ts +0 -19
- package/packages/provider-router/dist/src/strategies.d.ts.map +0 -1
- package/packages/provider-router/dist/src/strategies.js +0 -110
- package/packages/provider-router/dist/src/strategies.js.map +0 -1
- package/packages/provider-router/dist/src/types.d.ts +0 -91
- package/packages/provider-router/dist/src/types.d.ts.map +0 -1
- package/packages/provider-router/dist/src/types.js +0 -10
- package/packages/provider-router/dist/src/types.js.map +0 -1
- package/packages/provider-router/dist/types/src/runtime-types.d.ts +0 -412
- package/packages/provider-router/dist/types/src/runtime-types.d.ts.map +0 -1
- package/packages/provider-router/dist/types/src/runtime-types.js +0 -2
- package/packages/provider-router/dist/types/src/runtime-types.js.map +0 -1
- package/packages/session-api/dist/api.d.ts +0 -83
- package/packages/session-api/dist/api.js +0 -35
- package/packages/session-api/dist/index.d.ts +0 -2
- package/packages/session-api/dist/index.js +0 -2
- package/packages/session-api/dist/types.d.ts +0 -22
- package/packages/session-api/dist/types.js +0 -5
- package/packages/session-export/dist/exporter.d.ts +0 -28
- package/packages/session-export/dist/exporter.js +0 -38
- package/packages/session-export/dist/index.d.ts +0 -2
- package/packages/session-export/dist/index.js +0 -2
- package/packages/session-export/dist/types.d.ts +0 -20
- package/packages/session-export/dist/types.js +0 -5
- package/packages/subscription-engine/dist/engine.d.ts +0 -13
- package/packages/subscription-engine/dist/engine.js +0 -40
- package/packages/subscription-engine/dist/index.d.ts +0 -2
- package/packages/subscription-engine/dist/index.js +0 -2
- package/packages/subscription-engine/dist/subscriptions.d.ts +0 -19
- package/packages/subscription-engine/dist/subscriptions.js +0 -32
- package/packages/subscription-engine/dist/types.d.ts +0 -24
- package/packages/subscription-engine/dist/types.js +0 -5
- package/packages/trajectory/test/store.test.d.ts +0 -2
- package/packages/workflow-events/dist/events.d.ts +0 -38
- package/packages/workflow-events/dist/events.js +0 -46
- package/packages/workflow-events/dist/index.d.ts +0 -2
- package/packages/workflow-events/dist/index.js +0 -2
- package/packages/workflow-events/dist/pipeline.d.ts +0 -21
- package/packages/workflow-events/dist/pipeline.js +0 -27
- package/packages/workflow-events/dist/types.d.ts +0 -110
- package/packages/workflow-events/dist/types.js +0 -5
- package/packages/workflow-events/src/types.d.ts +0 -110
|
@@ -0,0 +1,761 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram command routing helpers
|
|
3
|
+
* Zones: telegram controls, pi agent commands, queue controls
|
|
4
|
+
* Owns Telegram slash-command normalization, bot command metadata, pi-side command registration, and command-initiated session replacement orchestration behind runtime ports
|
|
5
|
+
*/
|
|
6
|
+
import type { TelegramActivityPublicationWork } from "./activity.ts";
|
|
7
|
+
import { type TelegramConfigStore } from "./config.ts";
|
|
8
|
+
import type * as Pi from "./pi.ts";
|
|
9
|
+
import type { ExtensionAPI, ExtensionCommandContext } from "./pi.ts";
|
|
10
|
+
import type { TelegramPromptTemplateCommand } from "./prompt-templates.ts";
|
|
11
|
+
import { createTelegramControlItemBuilder, type PendingTelegramControlItem, type TelegramControlQueueController, type TelegramControlQueueControllerDeps, type TelegramQueueAdmissionReceipt } from "./queue.ts";
|
|
12
|
+
import { type TelegramBridgeStatusLineOptions } from "./status.ts";
|
|
13
|
+
import { type TelegramApiCallOptions } from "./telegram-api.ts";
|
|
14
|
+
import type { TelegramSessionReplacementIntent } from "./threads.ts";
|
|
15
|
+
import { type TelegramDeferredSourceEvidence, type TelegramLiveSourceCompletionReadiness, type TelegramQueueAdmissionReceiptLike } from "./updates.ts";
|
|
16
|
+
export type TelegramHeldCommandName = "status" | "abort" | "stop" | "next" | "continue";
|
|
17
|
+
/** Commands-owned no-fold admission over the ordinary recipient queue; source reporting stays separate from removal. */
|
|
18
|
+
export interface TelegramHeldTurnAdmission {
|
|
19
|
+
assertCurrent(): void;
|
|
20
|
+
report(receipts: readonly TelegramQueueAdmissionReceiptLike[]): void;
|
|
21
|
+
}
|
|
22
|
+
export interface TelegramPreparedHeldCommand {
|
|
23
|
+
readonly source: TelegramDeferredSourceEvidence;
|
|
24
|
+
readonly command: ParsedTelegramCommand;
|
|
25
|
+
bindCarrier(value: unknown): boolean;
|
|
26
|
+
execute(): Promise<boolean>;
|
|
27
|
+
/** Source disposal only, independent of detached delivery and ended source-execution/chooser callbacks. */
|
|
28
|
+
inspectCompletion(): TelegramDeferredSourceEvidence | undefined;
|
|
29
|
+
}
|
|
30
|
+
/** Saved-original admission for a held follower plan: fixed target plus independent source and recipient lifetimes. */
|
|
31
|
+
export interface TelegramHeldCommandAdmission {
|
|
32
|
+
target: {
|
|
33
|
+
chatId: number;
|
|
34
|
+
threadId: number;
|
|
35
|
+
};
|
|
36
|
+
assertSourceCurrent(): void;
|
|
37
|
+
assertRecipientCurrent(): void;
|
|
38
|
+
}
|
|
39
|
+
/** Recipient-scoped reply sender; the plan never falls back to ordinary follower API delivery. */
|
|
40
|
+
export interface TelegramHeldCommandReply {
|
|
41
|
+
sendTextReply(chatId: number, replyToMessageId: number, text: string, options: {
|
|
42
|
+
parseMode?: "HTML";
|
|
43
|
+
target: {
|
|
44
|
+
chatId: number;
|
|
45
|
+
threadId: number;
|
|
46
|
+
};
|
|
47
|
+
assertAuthority: () => void;
|
|
48
|
+
}): Promise<unknown>;
|
|
49
|
+
}
|
|
50
|
+
/** Captured recipient effects; a supplied but unavailable effect never falls back to ordinary dispatch. */
|
|
51
|
+
export type TelegramHeldCommandEffects<TContext> = Partial<TelegramHeldCommandReply & Pick<TelegramCommandHandlerTargetRuntimeDeps<TelegramCommandRuntimeMessage, TContext>, "showStatus">>;
|
|
52
|
+
export interface ParsedTelegramCommand {
|
|
53
|
+
name: string;
|
|
54
|
+
args: string;
|
|
55
|
+
}
|
|
56
|
+
/** Exact singleton operator-private text command original eligible for a held follower plan. */
|
|
57
|
+
export declare function isTelegramSelectedHeldOriginal(update: unknown, target: {
|
|
58
|
+
chatId: number;
|
|
59
|
+
threadId: number;
|
|
60
|
+
}, operator: number | undefined, name: string): boolean;
|
|
61
|
+
export interface TelegramBotCommandDefinition {
|
|
62
|
+
command: string;
|
|
63
|
+
description: string;
|
|
64
|
+
}
|
|
65
|
+
export interface TelegramPromptTemplateMenuCommand {
|
|
66
|
+
command: string;
|
|
67
|
+
description?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface TelegramExtensionCommandContext {
|
|
70
|
+
name: string;
|
|
71
|
+
args: string;
|
|
72
|
+
reply: (text: string) => Promise<void>;
|
|
73
|
+
enqueuePrompt: (prompt: string) => Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
export interface SelectedPreparationInput {
|
|
76
|
+
readonly name: string;
|
|
77
|
+
readonly args: string;
|
|
78
|
+
}
|
|
79
|
+
export interface SelectedCommandExecution {
|
|
80
|
+
/** Recheck before producer mutations and after awaits; this is a trusted contract, not a sandbox. */
|
|
81
|
+
assertCurrent(): void;
|
|
82
|
+
/** Acceptance of semantic completion only, never a source-removal ACK or delivery/cleanup proof. */
|
|
83
|
+
reportCompleted(): boolean;
|
|
84
|
+
/** Queue detached recipient text without waiting for delivery as semantic completion. */
|
|
85
|
+
reply(text: string): void;
|
|
86
|
+
}
|
|
87
|
+
export type PreparedSelectedCommand = {
|
|
88
|
+
kind: "command-only";
|
|
89
|
+
execute(ctx: SelectedCommandExecution): void | Promise<void>;
|
|
90
|
+
} | {
|
|
91
|
+
kind: "generated-prompt";
|
|
92
|
+
prompt: string;
|
|
93
|
+
};
|
|
94
|
+
export interface TelegramExtensionCommandRegistration {
|
|
95
|
+
name: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
order?: number;
|
|
98
|
+
showInMenu?: boolean;
|
|
99
|
+
emoji?: string;
|
|
100
|
+
handler: (ctx: TelegramExtensionCommandContext) => Promise<void> | void;
|
|
101
|
+
/** Trusted side-effect-free plan preparation for single-message leader selection; ordinary dispatch still uses handler. */
|
|
102
|
+
selected?: {
|
|
103
|
+
prepare(input: SelectedPreparationInput): PreparedSelectedCommand | undefined | Promise<PreparedSelectedCommand | undefined>;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
interface RegisteredTelegramExtensionCommand {
|
|
107
|
+
name: string;
|
|
108
|
+
description?: string;
|
|
109
|
+
order: number;
|
|
110
|
+
showInMenu: boolean;
|
|
111
|
+
emoji?: string;
|
|
112
|
+
handler: TelegramExtensionCommandRegistration["handler"];
|
|
113
|
+
selected?: Readonly<TelegramExtensionCommandRegistration["selected"]>;
|
|
114
|
+
}
|
|
115
|
+
export declare function registerTelegramCommand(registration: TelegramExtensionCommandRegistration): () => void;
|
|
116
|
+
export declare function findTelegramExtensionCommand(name: string | undefined): RegisteredTelegramExtensionCommand | undefined;
|
|
117
|
+
/** Preparation only: no execution, admission, source freeze or binding effects. Routing owns those later. */
|
|
118
|
+
export declare function prepareTelegramSelectedExtensionCommand(command: ParsedTelegramCommand, authority: {
|
|
119
|
+
assertSourceCurrent(): void;
|
|
120
|
+
assertRecipientCurrent(): void;
|
|
121
|
+
}): Promise<{
|
|
122
|
+
plan: Readonly<PreparedSelectedCommand>;
|
|
123
|
+
assertRegistrationCurrent(): void;
|
|
124
|
+
} | undefined>;
|
|
125
|
+
export declare function clearTelegramExtensionCommands(): void;
|
|
126
|
+
export declare const TELEGRAM_COMMAND_EMOJI: {
|
|
127
|
+
readonly start: "🟢";
|
|
128
|
+
readonly status: "📊";
|
|
129
|
+
readonly model: "🤖";
|
|
130
|
+
readonly thinking: "🧠";
|
|
131
|
+
readonly compact: "🗜";
|
|
132
|
+
readonly queue: "🔢";
|
|
133
|
+
readonly thread: "🧵";
|
|
134
|
+
readonly next: "⏩";
|
|
135
|
+
readonly continue: "▶️";
|
|
136
|
+
readonly abort: "⏹️";
|
|
137
|
+
readonly stop: "🟥";
|
|
138
|
+
readonly name: "🏷️";
|
|
139
|
+
readonly new: "🆕";
|
|
140
|
+
};
|
|
141
|
+
export type TelegramCommandEmojiName = keyof typeof TELEGRAM_COMMAND_EMOJI;
|
|
142
|
+
export declare function formatTelegramCommandEmojiPrefix(command: TelegramCommandEmojiName): string;
|
|
143
|
+
export declare function formatTelegramPiCommandHtml(command: string): string;
|
|
144
|
+
export declare function formatTelegramInformationHeading(emoji: string, text: string): string;
|
|
145
|
+
export declare function formatTelegramInvalidInstanceName(validationError: string): string;
|
|
146
|
+
export declare function formatTelegramThreadDisplayNameSavedHeading(name: string): string;
|
|
147
|
+
export declare function formatTelegramAutomaticThreadDisplayNameRestoredHeading(name: string): string;
|
|
148
|
+
export declare const TELEGRAM_COMPACTION_STARTED_MARKDOWN: string;
|
|
149
|
+
export declare const TELEGRAM_COMPACTION_COMPLETED_MARKDOWN = "**\u2705 Compaction completed.**";
|
|
150
|
+
export declare const TELEGRAM_BOT_COMMANDS: readonly TelegramBotCommandDefinition[];
|
|
151
|
+
export declare function getTelegramReservedCommandNames(): string[];
|
|
152
|
+
export interface TelegramBotCommandRegistrationDeps {
|
|
153
|
+
setMyCommands: (commands: readonly TelegramBotCommandDefinition[], options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<unknown>;
|
|
154
|
+
}
|
|
155
|
+
export declare function registerTelegramBotCommands(deps: TelegramBotCommandRegistrationDeps, options?: Pick<TelegramApiCallOptions, "assertAuthority">): Promise<void>;
|
|
156
|
+
export declare function createTelegramBotCommandRegistrar(deps: TelegramBotCommandRegistrationDeps): (options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
157
|
+
export interface TelegramBridgeCommandStartPollingOptions {
|
|
158
|
+
force?: boolean;
|
|
159
|
+
forceFreshLeaderThread?: boolean;
|
|
160
|
+
}
|
|
161
|
+
export interface TelegramBridgeCommandStartPollingResult {
|
|
162
|
+
ok: boolean;
|
|
163
|
+
message?: string;
|
|
164
|
+
canTakeover?: boolean;
|
|
165
|
+
owner?: string;
|
|
166
|
+
}
|
|
167
|
+
export interface TelegramBridgeCommandRegistrationDeps {
|
|
168
|
+
promptForConfig: (ctx: ExtensionCommandContext, profileName?: string) => Promise<void>;
|
|
169
|
+
getStatusLines: (options?: TelegramBridgeStatusLineOptions) => string[];
|
|
170
|
+
reloadConfig: () => Promise<void>;
|
|
171
|
+
hasBotToken: () => boolean;
|
|
172
|
+
getBotTokenDiagnostic?: () => string | undefined;
|
|
173
|
+
startPolling: (ctx: ExtensionCommandContext, options?: TelegramBridgeCommandStartPollingOptions) => void | Promise<void | TelegramBridgeCommandStartPollingResult> | TelegramBridgeCommandStartPollingResult;
|
|
174
|
+
stopPolling: () => Promise<void | string>;
|
|
175
|
+
recordConnectionEvent?: (error: unknown, phase: string) => void;
|
|
176
|
+
getDisconnectThreadName?: () => string | undefined;
|
|
177
|
+
queueAgentConnectionContext?: (connected: boolean) => void;
|
|
178
|
+
updateStatus: (ctx: ExtensionCommandContext) => void;
|
|
179
|
+
isContextCurrent?: (ctx: ExtensionCommandContext) => boolean;
|
|
180
|
+
getSessionGeneration?: () => number;
|
|
181
|
+
connectionIntent?: {
|
|
182
|
+
begin(cwd: string, profileName?: string): string;
|
|
183
|
+
finish(id: string): void;
|
|
184
|
+
isActive(id: string): boolean;
|
|
185
|
+
cancel(): void;
|
|
186
|
+
};
|
|
187
|
+
getProfileNames?: () => string[];
|
|
188
|
+
activateDefaultProfileConfig?: (ctx: ExtensionCommandContext, isCurrent: () => boolean) => Promise<void>;
|
|
189
|
+
activateProfileConfig?: (ctx: ExtensionCommandContext, profileName: string, isCurrent: () => boolean) => Promise<boolean>;
|
|
190
|
+
}
|
|
191
|
+
/** Bound adapters must carry the optional recipient guard through their own effect/publication awaits. */
|
|
192
|
+
export type TelegramThreadDisplayNameRenamePort = (target: {
|
|
193
|
+
chatId: number;
|
|
194
|
+
threadId?: number;
|
|
195
|
+
}, threadName: string, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<{
|
|
196
|
+
ok: boolean;
|
|
197
|
+
threadName?: string;
|
|
198
|
+
message?: string;
|
|
199
|
+
}>;
|
|
200
|
+
/** Reset adapters must preserve the same optional recipient lifetime as manual rename adapters. */
|
|
201
|
+
export type TelegramThreadDisplayNameResetPort = (target: {
|
|
202
|
+
chatId: number;
|
|
203
|
+
threadId?: number;
|
|
204
|
+
}, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<{
|
|
205
|
+
ok: boolean;
|
|
206
|
+
threadName?: string;
|
|
207
|
+
message?: string;
|
|
208
|
+
}>;
|
|
209
|
+
export declare function createTelegramThreadDisplayNameResetBinding(): {
|
|
210
|
+
bind: (reset: TelegramThreadDisplayNameResetPort) => void;
|
|
211
|
+
reset: TelegramThreadDisplayNameResetPort;
|
|
212
|
+
};
|
|
213
|
+
export declare function createTelegramThreadDisplayNameRenameBinding(): {
|
|
214
|
+
bind: (rename: TelegramThreadDisplayNameRenamePort) => void;
|
|
215
|
+
rename: TelegramThreadDisplayNameRenamePort;
|
|
216
|
+
};
|
|
217
|
+
export declare function registerTelegramBridgeCommands(pi: ExtensionAPI, deps: TelegramBridgeCommandRegistrationDeps): void;
|
|
218
|
+
export declare const TELEGRAM_RESERVED_COMMAND_NAMES: readonly ["stop", "name", "new", "abort", "next", "continue", "status", "queue", "compact", "model", "thinking", "settings", "help", "start"];
|
|
219
|
+
export type TelegramReservedCommandName = (typeof TELEGRAM_RESERVED_COMMAND_NAMES)[number];
|
|
220
|
+
export declare function isTelegramReservedCommandName(commandName: string | undefined): commandName is TelegramReservedCommandName;
|
|
221
|
+
export type TelegramCommandAction = {
|
|
222
|
+
kind: "ignore";
|
|
223
|
+
executionMode: "ignored";
|
|
224
|
+
} | {
|
|
225
|
+
kind: "stop";
|
|
226
|
+
executionMode: "immediate";
|
|
227
|
+
} | {
|
|
228
|
+
kind: "name";
|
|
229
|
+
executionMode: "immediate";
|
|
230
|
+
} | {
|
|
231
|
+
kind: "new";
|
|
232
|
+
executionMode: "immediate";
|
|
233
|
+
} | {
|
|
234
|
+
kind: "abort";
|
|
235
|
+
executionMode: "immediate";
|
|
236
|
+
} | {
|
|
237
|
+
kind: "next";
|
|
238
|
+
executionMode: "immediate";
|
|
239
|
+
} | {
|
|
240
|
+
kind: "continue";
|
|
241
|
+
executionMode: "immediate";
|
|
242
|
+
} | {
|
|
243
|
+
kind: "queue";
|
|
244
|
+
executionMode: "immediate";
|
|
245
|
+
} | {
|
|
246
|
+
kind: "compact";
|
|
247
|
+
executionMode: "immediate";
|
|
248
|
+
} | {
|
|
249
|
+
kind: "status";
|
|
250
|
+
executionMode: "immediate";
|
|
251
|
+
} | {
|
|
252
|
+
kind: "model";
|
|
253
|
+
executionMode: "immediate";
|
|
254
|
+
} | {
|
|
255
|
+
kind: "thinking";
|
|
256
|
+
executionMode: "immediate";
|
|
257
|
+
} | {
|
|
258
|
+
kind: "settings";
|
|
259
|
+
executionMode: "immediate";
|
|
260
|
+
} | {
|
|
261
|
+
kind: "help";
|
|
262
|
+
commandName: "help" | "start";
|
|
263
|
+
executionMode: "immediate";
|
|
264
|
+
};
|
|
265
|
+
export interface TelegramCommandActionDeps<TMessage, TContext> {
|
|
266
|
+
handleStop: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
267
|
+
handleName: (message: TMessage, ctx: TContext, name: string) => Promise<void>;
|
|
268
|
+
handleNew: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
269
|
+
handleAbort: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
270
|
+
handleNext: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
271
|
+
handleContinue: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
272
|
+
handleQueue: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
273
|
+
handleCompact: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
274
|
+
handleStatus: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
275
|
+
handleModel: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
276
|
+
handleThinking: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
277
|
+
handleSettings?: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
278
|
+
handleHelp: (message: TMessage, commandName: "help" | "start", ctx: TContext) => Promise<void>;
|
|
279
|
+
}
|
|
280
|
+
export interface TelegramStopCommandDeps {
|
|
281
|
+
hasAbortHandler: () => boolean;
|
|
282
|
+
clearPendingModelSwitch: () => void;
|
|
283
|
+
cancelNextTransitionAnnouncements?: () => void;
|
|
284
|
+
clearQueuedTelegramItems: () => number;
|
|
285
|
+
setFoldQueuedPromptsIntoHistory: (fold: boolean) => void;
|
|
286
|
+
abortCurrentTurn: () => void;
|
|
287
|
+
updateStatus: () => void;
|
|
288
|
+
sendTextReply: (text: string, options?: {
|
|
289
|
+
parseMode?: "HTML";
|
|
290
|
+
}) => Promise<void>;
|
|
291
|
+
}
|
|
292
|
+
export interface TelegramRuntimeEventRecorderPort {
|
|
293
|
+
recordRuntimeEvent?: (category: string, error: unknown, details?: Record<string, unknown>) => void;
|
|
294
|
+
}
|
|
295
|
+
export interface TelegramCompactConfirmationReplyMarkup {
|
|
296
|
+
inline_keyboard: {
|
|
297
|
+
text: string;
|
|
298
|
+
callback_data: string;
|
|
299
|
+
}[][];
|
|
300
|
+
}
|
|
301
|
+
/** Pi or Telegram work that must drain before a session-level command may replace or compact the session. */
|
|
302
|
+
export interface TelegramSessionBusyPorts {
|
|
303
|
+
isIdle: () => boolean;
|
|
304
|
+
hasPendingMessages: () => boolean;
|
|
305
|
+
hasActiveTelegramTurn: () => boolean;
|
|
306
|
+
hasDispatchPending: () => boolean;
|
|
307
|
+
hasQueuedTelegramItems: () => boolean;
|
|
308
|
+
isCompactionInProgress: () => boolean;
|
|
309
|
+
}
|
|
310
|
+
export interface TelegramCompactCommandDeps extends TelegramRuntimeEventRecorderPort, TelegramSessionBusyPorts {
|
|
311
|
+
setCompactionInProgress: (inProgress: boolean) => void;
|
|
312
|
+
updateStatus: () => void;
|
|
313
|
+
dispatchNextQueuedTelegramTurn: () => void;
|
|
314
|
+
requestDeferredDispatchNextQueuedTelegramTurn?: (dispatch: () => void) => void;
|
|
315
|
+
startTypingLoop?: () => void;
|
|
316
|
+
stopTypingLoop?: () => void;
|
|
317
|
+
compact: (callbacks: {
|
|
318
|
+
onComplete: () => void;
|
|
319
|
+
onError: (error: unknown) => void;
|
|
320
|
+
}) => void;
|
|
321
|
+
sendTextReply: (text: string, options?: {
|
|
322
|
+
parseMode?: "HTML";
|
|
323
|
+
}) => Promise<void>;
|
|
324
|
+
suppressStartNotice?: boolean;
|
|
325
|
+
}
|
|
326
|
+
export interface TelegramCompactConfirmationDeps {
|
|
327
|
+
sendInteractiveMessage: (chatId: number, text: string, mode: "markdown" | "html" | "plain", replyMarkup: TelegramCompactConfirmationReplyMarkup, options?: {
|
|
328
|
+
target?: {
|
|
329
|
+
chatId: number;
|
|
330
|
+
threadId?: number;
|
|
331
|
+
};
|
|
332
|
+
assertAuthority?: TelegramApiCallOptions["assertAuthority"];
|
|
333
|
+
}) => Promise<number | undefined>;
|
|
334
|
+
}
|
|
335
|
+
export interface TelegramCompactConfirmationCallbackQuery {
|
|
336
|
+
id: string;
|
|
337
|
+
data?: string;
|
|
338
|
+
message?: {
|
|
339
|
+
chat?: {
|
|
340
|
+
id?: number;
|
|
341
|
+
};
|
|
342
|
+
message_id?: number;
|
|
343
|
+
message_thread_id?: number;
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
export interface TelegramNewConfirmationCallbackDeps<TContext> {
|
|
347
|
+
ctx: TContext;
|
|
348
|
+
answerCallbackQuery: (callbackQueryId: string, text?: string) => Promise<void>;
|
|
349
|
+
editInteractiveMessage: (chatId: number, messageId: number, text: string, mode: "markdown" | "html" | "plain", replyMarkup: TelegramCompactConfirmationReplyMarkup) => Promise<void>;
|
|
350
|
+
deleteMessage: (chatId: number, messageId: number) => Promise<void>;
|
|
351
|
+
runNew: (ctx: TContext) => Promise<void>;
|
|
352
|
+
}
|
|
353
|
+
export interface TelegramCompactConfirmationCallbackDeps<TContext> {
|
|
354
|
+
ctx: TContext;
|
|
355
|
+
answerCallbackQuery: (callbackQueryId: string, text?: string) => Promise<void>;
|
|
356
|
+
editInteractiveMessage: (chatId: number, messageId: number, text: string, mode: "markdown" | "html" | "plain", replyMarkup: TelegramCompactConfirmationReplyMarkup) => Promise<void>;
|
|
357
|
+
runCompact: (ctx: TContext, chatId: number, replyToMessageId: number, target?: {
|
|
358
|
+
chatId: number;
|
|
359
|
+
threadId?: number;
|
|
360
|
+
}) => Promise<void>;
|
|
361
|
+
}
|
|
362
|
+
export type TelegramControlCommandType = PendingTelegramControlItem<unknown>["controlType"];
|
|
363
|
+
export interface TelegramCommandRuntimeMessage {
|
|
364
|
+
chat: {
|
|
365
|
+
id: number;
|
|
366
|
+
type?: string;
|
|
367
|
+
title?: string;
|
|
368
|
+
};
|
|
369
|
+
message_id: number;
|
|
370
|
+
message_thread_id?: number;
|
|
371
|
+
from?: {
|
|
372
|
+
id?: number;
|
|
373
|
+
is_bot?: boolean;
|
|
374
|
+
};
|
|
375
|
+
pi_telegram_source_update_id?: number;
|
|
376
|
+
}
|
|
377
|
+
export interface TelegramCommandMessageTarget {
|
|
378
|
+
chatId: number;
|
|
379
|
+
threadId?: number;
|
|
380
|
+
replyToMessageId: number;
|
|
381
|
+
}
|
|
382
|
+
export interface TelegramCommandTargetRuntimeDeps<TContext> {
|
|
383
|
+
enqueueControlItem: (target: TelegramCommandMessageTarget, ctx: TContext, controlType: TelegramControlCommandType, statusSummary: string, execute: (ctx: TContext) => Promise<void>, admissionReceipts?: TelegramQueueAdmissionReceipt[], onQueued?: (item: PendingTelegramControlItem<TContext>) => void) => void;
|
|
384
|
+
getAdmissionScope?: () => string | undefined;
|
|
385
|
+
getAdmissionJournalBinding?: () => string | undefined;
|
|
386
|
+
onControlQueued?: (message: TelegramCommandRuntimeMessage, receipt: TelegramQueueAdmissionReceipt) => void;
|
|
387
|
+
showStatus: (chatId: number, replyToMessageId: number, ctx: TContext, threadId?: number, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
388
|
+
openModelMenu: (chatId: number, replyToMessageId: number, ctx: TContext, threadId?: number, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
389
|
+
openSettingsMenu?: (chatId: number, replyToMessageId: number, ctx: TContext, threadId?: number, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
390
|
+
sendTextReply: (chatId: number, replyToMessageId: number, text: string, options?: {
|
|
391
|
+
parseMode?: "HTML";
|
|
392
|
+
target?: {
|
|
393
|
+
chatId: number;
|
|
394
|
+
threadId?: number;
|
|
395
|
+
};
|
|
396
|
+
assertAuthority?: TelegramApiCallOptions["assertAuthority"];
|
|
397
|
+
}) => Promise<unknown>;
|
|
398
|
+
}
|
|
399
|
+
export interface TelegramCommandTargetRuntime<TMessage extends TelegramCommandRuntimeMessage, TContext> {
|
|
400
|
+
enqueueControlItem: (message: TMessage, ctx: TContext, controlType: TelegramControlCommandType, statusSummary: string, execute: (ctx: TContext) => Promise<void>) => void;
|
|
401
|
+
showStatus: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
402
|
+
openModelMenu: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
403
|
+
openSettingsMenu: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
404
|
+
sendTextReply: (message: TMessage, text: string, options?: {
|
|
405
|
+
parseMode?: "HTML";
|
|
406
|
+
assertAuthority?: TelegramApiCallOptions["assertAuthority"];
|
|
407
|
+
}) => Promise<void>;
|
|
408
|
+
}
|
|
409
|
+
export declare function getTelegramCommandMessageTarget(message: TelegramCommandRuntimeMessage): TelegramCommandMessageTarget;
|
|
410
|
+
export declare function createTelegramCommandControlEnqueueAdapter<TContext>(deps: {
|
|
411
|
+
createControlItem: ReturnType<typeof createTelegramControlItemBuilder<TContext>>;
|
|
412
|
+
enqueueControlItem: TelegramControlQueueController<TContext>["enqueue"];
|
|
413
|
+
}): TelegramCommandTargetRuntimeDeps<TContext>["enqueueControlItem"];
|
|
414
|
+
export type TelegramCommandTargetQueueRuntimeDeps<TContext> = TelegramControlQueueControllerDeps<TContext> & {
|
|
415
|
+
createControlItem: ReturnType<typeof createTelegramControlItemBuilder<TContext>>;
|
|
416
|
+
} & Omit<TelegramCommandTargetRuntimeDeps<TContext>, "enqueueControlItem">;
|
|
417
|
+
export declare function createTelegramCommandTargetQueueRuntime<TMessage extends TelegramCommandRuntimeMessage, TContext>(deps: TelegramCommandTargetQueueRuntimeDeps<TContext>): TelegramCommandTargetRuntime<TMessage, TContext>;
|
|
418
|
+
export declare function createTelegramCommandTargetRuntime<TMessage extends TelegramCommandRuntimeMessage, TContext>(deps: TelegramCommandTargetRuntimeDeps<TContext>): TelegramCommandTargetRuntime<TMessage, TContext>;
|
|
419
|
+
export interface TelegramCommandOrPromptDispatcherDeps<TMessage, TContext> {
|
|
420
|
+
extractRawText: (messages: TMessage[]) => string;
|
|
421
|
+
shouldIgnoreMessages?: (messages: TMessage[]) => boolean;
|
|
422
|
+
consumeThreadNameInput?: (messages: TMessage[], ctx: TContext) => Promise<boolean>;
|
|
423
|
+
handleCommand: (commandName: string | undefined, message: TMessage, ctx: TContext, commandArgs?: string) => Promise<boolean>;
|
|
424
|
+
executeExtensionCommand?: (command: ParsedTelegramCommand, message: TMessage, ctx: TContext) => Promise<boolean>;
|
|
425
|
+
expandPromptTemplateCommand?: (commandName: string, args: string) => string | undefined;
|
|
426
|
+
replaceMessageText: (message: TMessage, text: string) => TMessage;
|
|
427
|
+
enqueueTurn: (messages: TMessage[], ctx: TContext) => Promise<void>;
|
|
428
|
+
assertExecutionCurrent?: (message: TMessage) => void;
|
|
429
|
+
}
|
|
430
|
+
interface TelegramCommandEffectWorkPort {
|
|
431
|
+
beginCommandEffectWork?: () => TelegramActivityPublicationWork;
|
|
432
|
+
}
|
|
433
|
+
export interface TelegramCommandRuntimeDeps<TMessage extends TelegramCommandRuntimeMessage, TContext> extends TelegramRuntimeEventRecorderPort, TelegramCommandEffectWorkPort {
|
|
434
|
+
hasAbortHandler: () => boolean;
|
|
435
|
+
clearPendingModelSwitch: () => void;
|
|
436
|
+
hasQueuedTelegramItems: () => boolean;
|
|
437
|
+
clearQueuedTelegramItems: (ctx: TContext) => number;
|
|
438
|
+
setFoldQueuedPromptsIntoHistory: (fold: boolean) => void;
|
|
439
|
+
abortCurrentTurn: () => void;
|
|
440
|
+
isIdle: (ctx: TContext) => boolean;
|
|
441
|
+
hasPendingMessages: (ctx: TContext) => boolean;
|
|
442
|
+
hasActiveTelegramTurn: () => boolean;
|
|
443
|
+
hasDispatchPending: () => boolean;
|
|
444
|
+
isCompactionInProgress: () => boolean;
|
|
445
|
+
setCompactionInProgress: (inProgress: boolean) => void;
|
|
446
|
+
updateStatus: (ctx: TContext) => void;
|
|
447
|
+
isContextActive?: (ctx: TContext) => boolean;
|
|
448
|
+
dispatchNextQueuedTelegramTurn: (ctx: TContext) => void;
|
|
449
|
+
requestNextDispatchAnnouncement?: () => void;
|
|
450
|
+
markActiveTurnNextAbortAnnouncement?: () => boolean;
|
|
451
|
+
cancelNextTransitionAnnouncements?: () => void;
|
|
452
|
+
requestDeferredDispatchNextQueuedTelegramTurn?: (dispatch: (ctx: TContext) => void) => void;
|
|
453
|
+
startTypingLoop?: (ctx: TContext, chatId?: number, options?: {
|
|
454
|
+
target?: {
|
|
455
|
+
chatId: number;
|
|
456
|
+
threadId?: number;
|
|
457
|
+
};
|
|
458
|
+
}) => void;
|
|
459
|
+
stopTypingLoop?: () => void;
|
|
460
|
+
enqueueContinueTurn: (message: TMessage, ctx: TContext) => Promise<void>;
|
|
461
|
+
heldTurn?: {
|
|
462
|
+
enqueue(message: TMessage, ctx: TContext, kind: "continue" | "prompt", admission: TelegramHeldTurnAdmission): Promise<void>;
|
|
463
|
+
templates?: {
|
|
464
|
+
getCommands(): readonly TelegramPromptTemplateCommand[];
|
|
465
|
+
expand(name: string, args: string): string | undefined;
|
|
466
|
+
};
|
|
467
|
+
};
|
|
468
|
+
requestNewSession?: (message: TMessage) => void;
|
|
469
|
+
compact: (ctx: TContext, callbacks: {
|
|
470
|
+
onComplete: () => void;
|
|
471
|
+
onError: (error: unknown) => void;
|
|
472
|
+
}) => void;
|
|
473
|
+
enqueueControlItem: (message: TMessage, ctx: TContext, controlType: TelegramControlCommandType, statusSummary: string, execute: (ctx: TContext) => Promise<void>) => void;
|
|
474
|
+
showStatus: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
475
|
+
/** Supplied adapters must forward recipient authority into issuance and recheck it after awaits. */
|
|
476
|
+
handleForumBootstrap?: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<string | undefined>;
|
|
477
|
+
openModelMenu: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
478
|
+
openThinkingMenu: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
479
|
+
openQueueMenu: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
480
|
+
openSettingsMenu?: (message: TMessage, ctx: TContext, options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
481
|
+
validateThreadName?: (threadName: string) => string | undefined;
|
|
482
|
+
renameCurrentThread?: TelegramThreadDisplayNameRenamePort;
|
|
483
|
+
resetCurrentThreadName?: TelegramThreadDisplayNameResetPort;
|
|
484
|
+
openThreadNameDialog?: (message: TMessage, ctx: TContext, admission?: {
|
|
485
|
+
assertSemanticCurrent(): void;
|
|
486
|
+
assertRecipientCurrent(): void;
|
|
487
|
+
}) => Promise<void | {
|
|
488
|
+
assertPublished(): void;
|
|
489
|
+
}>;
|
|
490
|
+
getAllowedUserId: () => number | undefined;
|
|
491
|
+
persistAllowedUserId: TelegramConfigStore["persistAllowedUserId"];
|
|
492
|
+
registerBotCommands: (options?: Pick<TelegramApiCallOptions, "assertAuthority">) => Promise<void>;
|
|
493
|
+
getPromptTemplateCommands?: () => readonly TelegramPromptTemplateMenuCommand[];
|
|
494
|
+
sendTextReply: (message: TMessage, text: string, options?: {
|
|
495
|
+
parseMode?: "HTML";
|
|
496
|
+
assertAuthority?: TelegramApiCallOptions["assertAuthority"];
|
|
497
|
+
}) => Promise<void>;
|
|
498
|
+
getActiveTurnReply?: () => ((text: string, options?: {
|
|
499
|
+
parseMode?: "HTML";
|
|
500
|
+
}) => Promise<void>) | undefined;
|
|
501
|
+
sendInteractiveMessage?: TelegramCompactConfirmationDeps["sendInteractiveMessage"];
|
|
502
|
+
assertExecutionCurrent?: (message: TMessage) => void;
|
|
503
|
+
}
|
|
504
|
+
export declare const TELEGRAM_APP_MENU_INTRO_HTML: string;
|
|
505
|
+
export declare function buildTelegramAppMenuHtml(statusHtml: string, promptTemplates?: readonly TelegramPromptTemplateMenuCommand[]): string;
|
|
506
|
+
export declare function createTelegramAppMenuHtmlBuilder<TContext>(deps: {
|
|
507
|
+
buildStatusHtml: (ctx: TContext) => string;
|
|
508
|
+
getPromptTemplateCommands?: () => readonly TelegramPromptTemplateMenuCommand[];
|
|
509
|
+
}): (ctx: TContext) => string;
|
|
510
|
+
export declare function parseTelegramCommand(text: string): ParsedTelegramCommand | undefined;
|
|
511
|
+
export declare const TELEGRAM_COMMAND_ACTIONS: {
|
|
512
|
+
readonly stop: {
|
|
513
|
+
readonly kind: "stop";
|
|
514
|
+
readonly executionMode: "immediate";
|
|
515
|
+
};
|
|
516
|
+
readonly name: {
|
|
517
|
+
readonly kind: "name";
|
|
518
|
+
readonly executionMode: "immediate";
|
|
519
|
+
};
|
|
520
|
+
readonly new: {
|
|
521
|
+
readonly kind: "new";
|
|
522
|
+
readonly executionMode: "immediate";
|
|
523
|
+
};
|
|
524
|
+
readonly abort: {
|
|
525
|
+
readonly kind: "abort";
|
|
526
|
+
readonly executionMode: "immediate";
|
|
527
|
+
};
|
|
528
|
+
readonly next: {
|
|
529
|
+
readonly kind: "next";
|
|
530
|
+
readonly executionMode: "immediate";
|
|
531
|
+
};
|
|
532
|
+
readonly continue: {
|
|
533
|
+
readonly kind: "continue";
|
|
534
|
+
readonly executionMode: "immediate";
|
|
535
|
+
};
|
|
536
|
+
readonly status: {
|
|
537
|
+
readonly kind: "status";
|
|
538
|
+
readonly executionMode: "immediate";
|
|
539
|
+
};
|
|
540
|
+
readonly queue: {
|
|
541
|
+
readonly kind: "queue";
|
|
542
|
+
readonly executionMode: "immediate";
|
|
543
|
+
};
|
|
544
|
+
readonly compact: {
|
|
545
|
+
readonly kind: "compact";
|
|
546
|
+
readonly executionMode: "immediate";
|
|
547
|
+
};
|
|
548
|
+
readonly model: {
|
|
549
|
+
readonly kind: "model";
|
|
550
|
+
readonly executionMode: "immediate";
|
|
551
|
+
};
|
|
552
|
+
readonly thinking: {
|
|
553
|
+
readonly kind: "thinking";
|
|
554
|
+
readonly executionMode: "immediate";
|
|
555
|
+
};
|
|
556
|
+
readonly settings: {
|
|
557
|
+
readonly kind: "settings";
|
|
558
|
+
readonly executionMode: "immediate";
|
|
559
|
+
};
|
|
560
|
+
readonly help: {
|
|
561
|
+
readonly kind: "help";
|
|
562
|
+
readonly commandName: "help";
|
|
563
|
+
readonly executionMode: "immediate";
|
|
564
|
+
};
|
|
565
|
+
readonly start: {
|
|
566
|
+
readonly kind: "help";
|
|
567
|
+
readonly commandName: "start";
|
|
568
|
+
readonly executionMode: "immediate";
|
|
569
|
+
};
|
|
570
|
+
};
|
|
571
|
+
export declare function buildTelegramCommandAction(commandName: string | undefined): TelegramCommandAction;
|
|
572
|
+
export declare function handleTelegramStopCommand(deps: TelegramStopCommandDeps): Promise<void>;
|
|
573
|
+
export declare function handleTelegramAbortCommand(deps: {
|
|
574
|
+
hasAbortHandler: () => boolean;
|
|
575
|
+
hasActiveTelegramTurn: () => boolean;
|
|
576
|
+
clearPendingModelSwitch: () => void;
|
|
577
|
+
cancelNextTransitionAnnouncements?: () => void;
|
|
578
|
+
abortCurrentTurn: () => void;
|
|
579
|
+
setFoldQueuedPromptsIntoHistory: (fold: boolean) => void;
|
|
580
|
+
updateStatus: () => void;
|
|
581
|
+
sendTextReply: (text: string, options?: {
|
|
582
|
+
parseMode?: "HTML";
|
|
583
|
+
}) => Promise<void>;
|
|
584
|
+
}): Promise<void>;
|
|
585
|
+
export declare function handleTelegramNextCommand(deps: {
|
|
586
|
+
hasAbortHandler: () => boolean;
|
|
587
|
+
isIdle: () => boolean;
|
|
588
|
+
hasQueuedItems: () => boolean;
|
|
589
|
+
clearPendingModelSwitch: () => void;
|
|
590
|
+
abortCurrentTurn: () => void;
|
|
591
|
+
dispatchNextQueuedTurn: () => void;
|
|
592
|
+
requestNextDispatchAnnouncement?: () => void;
|
|
593
|
+
markActiveTurnNextAbortAnnouncement?: () => boolean;
|
|
594
|
+
clearFoldForDispatch: () => void;
|
|
595
|
+
updateStatus: () => void;
|
|
596
|
+
sendTextReply: (text: string, options?: {
|
|
597
|
+
parseMode?: "HTML";
|
|
598
|
+
}) => Promise<void>;
|
|
599
|
+
getActiveTurnReply?: () => ((text: string, options?: {
|
|
600
|
+
parseMode?: "HTML";
|
|
601
|
+
}) => Promise<void>) | undefined;
|
|
602
|
+
}): Promise<void>;
|
|
603
|
+
export declare function openTelegramNewConfirmation(target: TelegramCommandMessageTarget, deps: TelegramCompactConfirmationDeps, assertAuthority?: TelegramApiCallOptions["assertAuthority"]): Promise<void>;
|
|
604
|
+
export declare function handleTelegramNewConfirmationCallback<TContext>(query: TelegramCompactConfirmationCallbackQuery, deps: TelegramNewConfirmationCallbackDeps<TContext>): Promise<boolean>;
|
|
605
|
+
export declare function handleTelegramCompactConfirmationCallback<TContext>(query: TelegramCompactConfirmationCallbackQuery, deps: TelegramCompactConfirmationCallbackDeps<TContext>): Promise<boolean>;
|
|
606
|
+
export interface TelegramNewCommandDeps extends TelegramRuntimeEventRecorderPort, TelegramSessionBusyPorts {
|
|
607
|
+
requestNewSession?: () => void;
|
|
608
|
+
sendTextReply: (text: string, options?: {
|
|
609
|
+
parseMode?: "HTML";
|
|
610
|
+
}) => Promise<void>;
|
|
611
|
+
}
|
|
612
|
+
export declare function handleTelegramNewCommand(deps: TelegramNewCommandDeps): Promise<void>;
|
|
613
|
+
export declare function handleTelegramCompactCommand(deps: TelegramCompactCommandDeps): Promise<void>;
|
|
614
|
+
export declare function handleTelegramModelCommand<TContext>(deps: {
|
|
615
|
+
ctx: TContext;
|
|
616
|
+
openModelMenu: (ctx: TContext) => Promise<void>;
|
|
617
|
+
}): Promise<void>;
|
|
618
|
+
export declare function executeTelegramCommandAction<TMessage, TContext>(action: TelegramCommandAction, message: TMessage, ctx: TContext, deps: TelegramCommandActionDeps<TMessage, TContext>, commandArgs?: string): Promise<boolean>;
|
|
619
|
+
export interface TelegramCommandHandlerTargetRuntimeDeps<TMessage extends TelegramCommandRuntimeMessage, TContext> extends Omit<TelegramCommandRuntimeDeps<TMessage, TContext>, "enqueueControlItem" | "showStatus" | "openModelMenu" | "openSettingsMenu" | "sendTextReply" | "registerBotCommands">, Omit<TelegramCommandTargetQueueRuntimeDeps<TContext>, "createControlItem">, TelegramBotCommandRegistrationDeps {
|
|
620
|
+
allocateItemOrder: () => number;
|
|
621
|
+
allocateControlOrder: () => number;
|
|
622
|
+
}
|
|
623
|
+
export declare function createTelegramCommandHandlerTargetRuntime<TMessage extends TelegramCommandRuntimeMessage, TContext>(deps: TelegramCommandHandlerTargetRuntimeDeps<TMessage, TContext>): ReturnType<typeof createTelegramCommandHandler<TMessage, TContext>>;
|
|
624
|
+
/** Released exact-source admission for one selected command: source/recipient lifetimes and one completion report. */
|
|
625
|
+
export interface TelegramSelectedCommandAdmission {
|
|
626
|
+
assertSourceCurrent(): void;
|
|
627
|
+
/** Independent exact recipient/target lifetime, including inside captured menu transport adapters. */
|
|
628
|
+
assertRecipientCurrent(): void;
|
|
629
|
+
reportCompleted(): boolean;
|
|
630
|
+
}
|
|
631
|
+
export declare function createTelegramCommandHandler<TMessage extends TelegramCommandRuntimeMessage, TContext>(deps: TelegramCommandRuntimeDeps<TMessage, TContext>): ((commandName: string | undefined, message: TMessage, ctx: TContext, commandArgs?: string) => Promise<boolean>) & {
|
|
632
|
+
/** Command-only producer execution; Routing must supply the captured plan and released exact-source authority. */
|
|
633
|
+
prepareSelectedExtensionCommand(prepared: NonNullable<Awaited<ReturnType<typeof prepareTelegramSelectedExtensionCommand>>>, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission): (() => Promise<void>) | undefined;
|
|
634
|
+
/** Selected help/start require the existing authenticated owner; cold pairing remains ordinary first contact. */
|
|
635
|
+
prepareSelectedStartCommand: (command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission) => (() => Promise<boolean>) | undefined;
|
|
636
|
+
prepareSelectedHelpCommand: (command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission) => (() => Promise<boolean>) | undefined;
|
|
637
|
+
/** Selected new handles only confirmation; the later authenticated callback owns replacement admission. */
|
|
638
|
+
prepareSelectedNewCommand: (command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission) => (() => Promise<boolean>) | undefined;
|
|
639
|
+
/** Selected compaction handles only confirmation; the later authenticated callback owns actual compaction. */
|
|
640
|
+
prepareSelectedCompactCommand: (command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission) => (() => Promise<boolean>) | undefined;
|
|
641
|
+
/** Bare naming completes only after the exact dialog owner confirms current publication, not delivery alone. */
|
|
642
|
+
prepareSelectedNameDialogCommand(command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission): (() => Promise<boolean>) | undefined;
|
|
643
|
+
/** Explicit naming retains source authority until its owner result; bare dialogs use their own publication leaf. */
|
|
644
|
+
prepareSelectedNameCommand(command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission): (() => Promise<boolean>) | undefined;
|
|
645
|
+
/** Genuine leader originals capture their warm queue owner before release; no hold copy or semantic-completion report. */
|
|
646
|
+
prepareSelectedQueueCommand(command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramHeldCommandAdmission): Omit<TelegramPreparedHeldCommand, "bindCarrier"> | undefined;
|
|
647
|
+
/** Selected leaders reuse registry semantics; native source/recipient admission and inline transport remain role-owned. */
|
|
648
|
+
prepareSelectedCommand: (command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission) => (() => Promise<boolean>) | undefined;
|
|
649
|
+
/** Existing native publication boundary; unrelated/legacy receipts keep their ordinary owner. */
|
|
650
|
+
prepareHeldQueueReceipt: (receipt: TelegramQueueAdmissionReceipt, queueOwner: import("./journal.ts").TelegramUpdateJournalQueueOwner, context: TContext, isWorkerCurrent: () => boolean) => import("./updates.ts").TelegramQueueSourceCompletion[] | undefined;
|
|
651
|
+
/** Pure registry/effect availability; never reads a source or activates future recipient authority. */
|
|
652
|
+
canPrepareHeldCommand(name: string, effects?: TelegramHeldCommandEffects<TContext>): boolean;
|
|
653
|
+
/** Compile one registry plan from a saved original; no admission, recipient activation or update-handler replay. */
|
|
654
|
+
prepareHeldCommand(name: string, readiness: TelegramLiveSourceCompletionReadiness, ctx: TContext, admission: TelegramHeldCommandAdmission, effects?: TelegramHeldCommandEffects<TContext>): TelegramPreparedHeldCommand | undefined;
|
|
655
|
+
/** Warm menu-only issuance; completion reporting is not a receipt or a durable removal ACK. */
|
|
656
|
+
prepareSelectedMenuCommand(command: ParsedTelegramCommand, messages: readonly TMessage[], ctx: TContext, admission: TelegramSelectedCommandAdmission): (() => Promise<boolean>) | undefined;
|
|
657
|
+
};
|
|
658
|
+
export declare function createTelegramCommandOrPromptDispatcher<TMessage, TContext>(deps: TelegramCommandOrPromptDispatcherDeps<TMessage, TContext>): (messages: TMessage[], ctx: TContext) => Promise<void>;
|
|
659
|
+
export declare const TELEGRAM_INTERNAL_COMMAND_NAME = "telegram-internal";
|
|
660
|
+
export declare const TELEGRAM_INTERNAL_COMMAND_DESCRIPTION = "Internal Telegram command cannot be run manually";
|
|
661
|
+
export declare const TELEGRAM_INTERNAL_MANUAL_USE_MESSAGE = "This internal Telegram command cannot be run manually.";
|
|
662
|
+
export interface TelegramSessionActionRuntimeDeps {
|
|
663
|
+
registerCommand: Pi.ExtensionAPI["registerCommand"];
|
|
664
|
+
sendUserMessage: Pi.ExtensionAPI["sendUserMessage"];
|
|
665
|
+
notifyResult: (target: {
|
|
666
|
+
chatId: number;
|
|
667
|
+
threadId?: number;
|
|
668
|
+
messageId: number;
|
|
669
|
+
}, result: "success" | "cancelled" | "failure") => Promise<void>;
|
|
670
|
+
prepareReplacement?: (ctx: Pi.ExtensionCommandContext, updateId: number, target: {
|
|
671
|
+
chatId: number;
|
|
672
|
+
threadId?: number;
|
|
673
|
+
messageId: number;
|
|
674
|
+
}) => Promise<void>;
|
|
675
|
+
recordRuntimeEvent?: (category: string, error: unknown) => void;
|
|
676
|
+
}
|
|
677
|
+
export interface TelegramSessionReplacementSettlementDeps {
|
|
678
|
+
getIntent: () => Promise<TelegramSessionReplacementIntent | undefined>;
|
|
679
|
+
hasSuccessorContinuity: (intent: TelegramSessionReplacementIntent) => boolean;
|
|
680
|
+
editSuccess: (intent: TelegramSessionReplacementIntent) => Promise<{
|
|
681
|
+
ok: boolean;
|
|
682
|
+
retryable?: boolean;
|
|
683
|
+
message?: string;
|
|
684
|
+
}>;
|
|
685
|
+
clearIntent: (intent: TelegramSessionReplacementIntent) => Promise<boolean>;
|
|
686
|
+
profileName: string | undefined;
|
|
687
|
+
cwd: string;
|
|
688
|
+
sessionId: string;
|
|
689
|
+
now?: () => number;
|
|
690
|
+
sleep?: (delayMs: number) => Promise<void>;
|
|
691
|
+
isCurrent?: () => boolean;
|
|
692
|
+
}
|
|
693
|
+
export declare function settleTelegramSessionReplacement(deps: TelegramSessionReplacementSettlementDeps): Promise<"none" | "settled" | "expired" | "failed" | "stale">;
|
|
694
|
+
export interface TelegramSessionActionAssemblyDeps {
|
|
695
|
+
registerCommand: Pi.ExtensionAPI["registerCommand"];
|
|
696
|
+
sendUserMessage: Pi.ExtensionAPI["sendUserMessage"];
|
|
697
|
+
store: {
|
|
698
|
+
load: () => Promise<void>;
|
|
699
|
+
refresh?: () => Promise<void>;
|
|
700
|
+
getWorkspaceBindingByTarget: (target: {
|
|
701
|
+
chatId: number;
|
|
702
|
+
threadId?: number;
|
|
703
|
+
}, sessionId?: string) => {
|
|
704
|
+
cwd: string;
|
|
705
|
+
sessionId?: string;
|
|
706
|
+
slot?: string;
|
|
707
|
+
threadName?: string;
|
|
708
|
+
manualThreadName?: string;
|
|
709
|
+
target: {
|
|
710
|
+
chatId: number;
|
|
711
|
+
threadId: number;
|
|
712
|
+
};
|
|
713
|
+
} | undefined;
|
|
714
|
+
getSessionReplacementIntent: () => TelegramSessionReplacementIntent | undefined;
|
|
715
|
+
commitSessionReplacementIntent: (intent: TelegramSessionReplacementIntent, isCurrent: () => boolean) => Promise<boolean>;
|
|
716
|
+
removeSessionReplacementIntent: (intent: TelegramSessionReplacementIntent, isCurrent: () => boolean) => Promise<boolean>;
|
|
717
|
+
};
|
|
718
|
+
getProfileName: () => string | undefined;
|
|
719
|
+
ownsPersistence: () => boolean;
|
|
720
|
+
/**
|
|
721
|
+
* Registered-follower port. A follower cannot persist leader-owned state, so
|
|
722
|
+
* its Workspace Thread intent is published and claimed by the leader over
|
|
723
|
+
* authenticated generation-fenced bus RPC.
|
|
724
|
+
*/
|
|
725
|
+
follower?: {
|
|
726
|
+
instanceId: string;
|
|
727
|
+
isRegisteredFor: (target: {
|
|
728
|
+
chatId: number;
|
|
729
|
+
threadId?: number;
|
|
730
|
+
}) => boolean;
|
|
731
|
+
requestSessionReplacement: (operation: "publish" | "settle", intent: TelegramSessionReplacementIntent) => Promise<boolean>;
|
|
732
|
+
};
|
|
733
|
+
sendResult: (target: {
|
|
734
|
+
chatId: number;
|
|
735
|
+
threadId?: number;
|
|
736
|
+
}, html: string) => Promise<{
|
|
737
|
+
ok: boolean;
|
|
738
|
+
retryable?: boolean;
|
|
739
|
+
}>;
|
|
740
|
+
handoffTtlMs: number;
|
|
741
|
+
now?: () => number;
|
|
742
|
+
recordRuntimeEvent?: (category: string, error: unknown) => void;
|
|
743
|
+
}
|
|
744
|
+
export declare function createTelegramSessionActionAssembly(deps: TelegramSessionActionAssemblyDeps): {
|
|
745
|
+
action: TelegramSessionActionRuntime;
|
|
746
|
+
settlement: {
|
|
747
|
+
onSessionStart: (ctx: Pi.ExtensionContext) => void;
|
|
748
|
+
};
|
|
749
|
+
};
|
|
750
|
+
export interface TelegramSessionActionRuntime {
|
|
751
|
+
register: () => void;
|
|
752
|
+
scheduleAfterUpdate: (updateId: number, target: {
|
|
753
|
+
chatId: number;
|
|
754
|
+
threadId?: number;
|
|
755
|
+
messageId: number;
|
|
756
|
+
}) => boolean;
|
|
757
|
+
onUpdateCompleted: (updateId: number) => void;
|
|
758
|
+
hasPending: () => boolean;
|
|
759
|
+
}
|
|
760
|
+
export declare function createTelegramSessionActionRuntime(deps: TelegramSessionActionRuntimeDeps): TelegramSessionActionRuntime;
|
|
761
|
+
export {};
|