pi-harness-runtime 1.1.397 → 1.1.402
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 +21 -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/notification-events.ts +6 -6
- 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 +50 -0
- package/packages/jev-judge/dist/question-risk.d.ts.map +1 -0
- package/packages/jev-judge/dist/question-risk.js +100 -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 +151 -0
- package/packages/jev-judge/tests/auto-continue-context.test.ts +221 -0
- package/packages/jev-judge/tests/outcome-application.test.ts +132 -0
- package/packages/jev-judge/tests/question-risk.test.ts +116 -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 +42 -0
- package/packages/notification/dist/adapters/detail-format.d.ts.map +1 -0
- package/packages/notification/dist/adapters/detail-format.js +94 -0
- package/packages/notification/dist/adapters/detail-format.js.map +1 -0
- package/packages/notification/dist/adapters/email-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/email-adapter.js +3 -2
- package/packages/notification/dist/adapters/email-adapter.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 +87 -9
- package/packages/notification/dist/adapters/line-adapter.js.map +1 -1
- package/packages/notification/dist/adapters/ntfy-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/ntfy-adapter.js +3 -2
- package/packages/notification/dist/adapters/ntfy-adapter.js.map +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.d.ts +14 -0
- package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.js +89 -69
- 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 +60 -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 +21 -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 +114 -0
- package/packages/notification/src/adapters/email-adapter.ts +3 -2
- package/packages/notification/src/adapters/line-adapter.ts +97 -9
- package/packages/notification/src/adapters/ntfy-adapter.ts +3 -2
- package/packages/notification/src/adapters/telegram-adapter.ts +98 -76
- package/packages/notification/src/notification-center.ts +66 -8
- package/packages/notification/src/pending-question.ts +160 -8
- package/packages/notification/src/types.ts +21 -0
- package/packages/notification/test/approval-payload.test.ts +269 -0
- package/packages/notification/test/detail-format.test.ts +106 -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,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared rendering of the notification detail fields.
|
|
3
|
+
*
|
|
4
|
+
* `details.error` is reserved for events that represent an actual failure. A
|
|
5
|
+
* resume trigger ("provider-overload", "post-compact") or a quota detail is a
|
|
6
|
+
* reason, not an error, and must never be rendered under the "Error:" footer.
|
|
7
|
+
*
|
|
8
|
+
* Every adapter renders the detail fields through this module so the labels
|
|
9
|
+
* stay consistent across Telegram, LINE, ntfy and email.
|
|
10
|
+
*/
|
|
11
|
+
/** Events whose `details.error` really is an error. */
|
|
12
|
+
export const ERROR_EVENTS = new Set([
|
|
13
|
+
"TaskFailed",
|
|
14
|
+
"E2EFailed",
|
|
15
|
+
"Error",
|
|
16
|
+
]);
|
|
17
|
+
export function isErrorEvent(event) {
|
|
18
|
+
return ERROR_EVENTS.has(event);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Human wording for the known resume triggers.
|
|
22
|
+
*
|
|
23
|
+
* The raw code stays in the structured logs; the user facing message gets a
|
|
24
|
+
* wording a human can read.
|
|
25
|
+
*/
|
|
26
|
+
const TRIGGER_LABELS = {
|
|
27
|
+
"post-compact": "Context compacted",
|
|
28
|
+
"context-compacted": "Context compacted",
|
|
29
|
+
"provider-overload": "Provider overload",
|
|
30
|
+
"quota-reset": "Quota reset",
|
|
31
|
+
"quota-paused": "Quota paused",
|
|
32
|
+
"output-limit": "Output limit reached",
|
|
33
|
+
"session-resume": "Session resumed",
|
|
34
|
+
"auto-resume": "Session auto-resume",
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Turn a trigger code into a human wording.
|
|
38
|
+
*
|
|
39
|
+
* "provider-overload" becomes "Provider overload". An unknown code keeps its
|
|
40
|
+
* words, only the separators and the capitalisation are cleaned up.
|
|
41
|
+
*/
|
|
42
|
+
export function formatTriggerValue(value) {
|
|
43
|
+
const trimmed = value.trim();
|
|
44
|
+
if (!trimmed)
|
|
45
|
+
return "";
|
|
46
|
+
const known = TRIGGER_LABELS[trimmed.toLowerCase()];
|
|
47
|
+
if (known)
|
|
48
|
+
return known;
|
|
49
|
+
const words = trimmed.replace(/[_-]+/g, " ").replace(/\s+/g, " ").trim();
|
|
50
|
+
if (!words)
|
|
51
|
+
return trimmed;
|
|
52
|
+
return words.charAt(0).toUpperCase() + words.slice(1);
|
|
53
|
+
}
|
|
54
|
+
function readString(value) {
|
|
55
|
+
if (typeof value !== "string")
|
|
56
|
+
return undefined;
|
|
57
|
+
const trimmed = value.trim();
|
|
58
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Render the detail fields of a payload as footer lines.
|
|
62
|
+
*
|
|
63
|
+
* - `details.trigger` becomes "Trigger: ..." in a human wording.
|
|
64
|
+
* - `details.reason` becomes "Reason: ..." for every event.
|
|
65
|
+
* - `details.error` becomes "Error: ..." for the error events only.
|
|
66
|
+
* - A legacy `details.error` on a non-error event becomes "Reason: ..." so the
|
|
67
|
+
* information survives when a producer still uses the old field.
|
|
68
|
+
*/
|
|
69
|
+
export function formatDetailLines(details, event) {
|
|
70
|
+
const lines = [];
|
|
71
|
+
const trigger = readString(details?.trigger);
|
|
72
|
+
const reason = readString(details?.reason);
|
|
73
|
+
const error = readString(details?.error);
|
|
74
|
+
if (trigger) {
|
|
75
|
+
lines.push({ label: "Trigger", value: formatTriggerValue(trigger) });
|
|
76
|
+
}
|
|
77
|
+
if (reason) {
|
|
78
|
+
lines.push({ label: "Reason", value: reason });
|
|
79
|
+
}
|
|
80
|
+
if (error) {
|
|
81
|
+
lines.push({ label: isErrorEvent(event) ? "Error" : "Reason", value: error });
|
|
82
|
+
}
|
|
83
|
+
return lines;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The same lines as a plain text block, one per line.
|
|
87
|
+
* An empty string when there is nothing to render.
|
|
88
|
+
*/
|
|
89
|
+
export function formatDetailText(details, event) {
|
|
90
|
+
return formatDetailLines(details, event)
|
|
91
|
+
.map((line) => `${line.label}: ${line.value}`)
|
|
92
|
+
.join("\n");
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=detail-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail-format.js","sourceRoot":"","sources":["../../src/adapters/detail-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/email-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/email-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA4BxD,qBAAa,YAAa,SAAQ,kBAAkB;IACnD,QAAQ,CAAC,EAAE,WAAW;IACtB,QAAQ,CAAC,IAAI,WAAW;IAExB,YAAY,MAAM,EAAE,WAAW,EAE9B;IAEK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAWnC;IAEK,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0BpE;IAED,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,QAAQ;CAiBhB"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Sends notifications via SMTP.
|
|
5
5
|
*/
|
|
6
6
|
import { BaseChannelAdapter } from "../base-adapter.js";
|
|
7
|
+
import { formatDetailLines } from "./detail-format.js";
|
|
7
8
|
import { logInfo } from "../file-logger.js";
|
|
8
9
|
// Simple SMTP client using built-in net module
|
|
9
10
|
async function sendSmtpEmail(host, port, user, password, from, to, subject, body, tls = false) {
|
|
@@ -64,8 +65,8 @@ export class EmailAdapter extends BaseChannelAdapter {
|
|
|
64
65
|
if (payload.details?.jobId) {
|
|
65
66
|
lines.push(`Job ID: ${payload.details.jobId}`);
|
|
66
67
|
}
|
|
67
|
-
|
|
68
|
-
lines.push("",
|
|
68
|
+
for (const detail of formatDetailLines(payload.details, payload.event)) {
|
|
69
|
+
lines.push("", `${detail.label}: ${detail.value}`);
|
|
69
70
|
}
|
|
70
71
|
return lines.join("\n");
|
|
71
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-adapter.js","sourceRoot":"","sources":["../../src/adapters/email-adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"email-adapter.js","sourceRoot":"","sources":["../../src/adapters/email-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,20 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { NotificationPayload, NotificationResult, LineConfig } from "../types.js";
|
|
7
7
|
import { BaseChannelAdapter } from "../base-adapter.js";
|
|
8
|
+
/**
|
|
9
|
+
* LINE limits the template fields. The complete question does not fit in a
|
|
10
|
+
* template, so it travels as a text message and the template only carries the
|
|
11
|
+
* prompt and the request ID.
|
|
12
|
+
*/
|
|
13
|
+
export declare const LINE_TEMPLATE_TEXT_LIMIT = 200;
|
|
14
|
+
export declare const LINE_TEMPLATE_TITLE_LIMIT = 40;
|
|
15
|
+
export declare const LINE_ACTION_LABEL_LIMIT = 20;
|
|
16
|
+
/** LINE accepts at most 100 characters of postback data. */
|
|
17
|
+
export declare const LINE_POSTBACK_DATA_LIMIT = 100;
|
|
18
|
+
/** LINE accepts at most 4 actions in one template. */
|
|
19
|
+
export declare const LINE_MAX_ACTIONS = 4;
|
|
20
|
+
/** A LINE text message accepts up to 5000 characters. */
|
|
21
|
+
export declare const LINE_TEXT_MESSAGE_LIMIT = 4500;
|
|
8
22
|
/**
|
|
9
23
|
* The endpoint that validates a channel access token.
|
|
10
24
|
*
|
|
@@ -50,6 +64,25 @@ export declare class LineAdapter extends BaseChannelAdapter {
|
|
|
50
64
|
constructor(config: LineConfig);
|
|
51
65
|
initialize(): Promise<boolean>;
|
|
52
66
|
send(payload: NotificationPayload): Promise<NotificationResult>;
|
|
67
|
+
/**
|
|
68
|
+
* Build the LINE messages of a payload.
|
|
69
|
+
*
|
|
70
|
+
* Without actions it is one text message. With actions the complete
|
|
71
|
+
* question travels as a text message (a LINE text message holds far more
|
|
72
|
+
* than a template) and a template carries the Yes/No postback actions.
|
|
73
|
+
* Both messages carry the canonical request ID, so the user can tell
|
|
74
|
+
* which request an action belongs to.
|
|
75
|
+
*/
|
|
76
|
+
private buildMessages;
|
|
77
|
+
/**
|
|
78
|
+
* Split a long text into LINE sized text messages.
|
|
79
|
+
*/
|
|
80
|
+
private chunkText;
|
|
81
|
+
/**
|
|
82
|
+
* The button label without its emoji. LINE counts the emoji in the 20
|
|
83
|
+
* character label limit.
|
|
84
|
+
*/
|
|
85
|
+
private formatActionLabel;
|
|
53
86
|
private formatMessage;
|
|
54
87
|
private getEmoji;
|
|
55
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/line-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,
|
|
1
|
+
{"version":3,"file":"line-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/line-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EAEV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,4DAA4D;AAC5D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,oCAAoC,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACZ,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAarE;AAeD,qBAAa,WAAY,SAAQ,kBAAkB;IAClD,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,IAAI,UAAU;IAEvB,YAAY,MAAM,EAAE,UAAU,EAE7B;IAEK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CA4CnC;IAEK,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsDpE;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAwCrB;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,QAAQ;CAiBhB"}
|
|
@@ -4,6 +4,21 @@
|
|
|
4
4
|
* Sends notifications via LINE Messaging API.
|
|
5
5
|
*/
|
|
6
6
|
import { BaseChannelAdapter } from "../base-adapter.js";
|
|
7
|
+
import { formatDetailLines } from "./detail-format.js";
|
|
8
|
+
/**
|
|
9
|
+
* LINE limits the template fields. The complete question does not fit in a
|
|
10
|
+
* template, so it travels as a text message and the template only carries the
|
|
11
|
+
* prompt and the request ID.
|
|
12
|
+
*/
|
|
13
|
+
export const LINE_TEMPLATE_TEXT_LIMIT = 200;
|
|
14
|
+
export const LINE_TEMPLATE_TITLE_LIMIT = 40;
|
|
15
|
+
export const LINE_ACTION_LABEL_LIMIT = 20;
|
|
16
|
+
/** LINE accepts at most 100 characters of postback data. */
|
|
17
|
+
export const LINE_POSTBACK_DATA_LIMIT = 100;
|
|
18
|
+
/** LINE accepts at most 4 actions in one template. */
|
|
19
|
+
export const LINE_MAX_ACTIONS = 4;
|
|
20
|
+
/** A LINE text message accepts up to 5000 characters. */
|
|
21
|
+
export const LINE_TEXT_MESSAGE_LIMIT = 4500;
|
|
7
22
|
/**
|
|
8
23
|
* The endpoint that validates a channel access token.
|
|
9
24
|
*
|
|
@@ -133,7 +148,7 @@ export class LineAdapter extends BaseChannelAdapter {
|
|
|
133
148
|
async send(payload) {
|
|
134
149
|
try {
|
|
135
150
|
const cfg = this.config.config;
|
|
136
|
-
const
|
|
151
|
+
const messages = this.buildMessages(payload);
|
|
137
152
|
const response = await fetch("https://api.line.me/v2/bot/message/push", {
|
|
138
153
|
method: "POST",
|
|
139
154
|
headers: {
|
|
@@ -142,12 +157,7 @@ export class LineAdapter extends BaseChannelAdapter {
|
|
|
142
157
|
},
|
|
143
158
|
body: JSON.stringify({
|
|
144
159
|
to: cfg.userId,
|
|
145
|
-
messages
|
|
146
|
-
{
|
|
147
|
-
type: "text",
|
|
148
|
-
text: message,
|
|
149
|
-
},
|
|
150
|
-
],
|
|
160
|
+
messages,
|
|
151
161
|
}),
|
|
152
162
|
});
|
|
153
163
|
if (!response.ok) {
|
|
@@ -179,6 +189,74 @@ export class LineAdapter extends BaseChannelAdapter {
|
|
|
179
189
|
};
|
|
180
190
|
}
|
|
181
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Build the LINE messages of a payload.
|
|
194
|
+
*
|
|
195
|
+
* Without actions it is one text message. With actions the complete
|
|
196
|
+
* question travels as a text message (a LINE text message holds far more
|
|
197
|
+
* than a template) and a template carries the Yes/No postback actions.
|
|
198
|
+
* Both messages carry the canonical request ID, so the user can tell
|
|
199
|
+
* which request an action belongs to.
|
|
200
|
+
*/
|
|
201
|
+
buildMessages(payload) {
|
|
202
|
+
const buttons = payload.details?._actionButtons ?? [];
|
|
203
|
+
const text = this.formatMessage(payload);
|
|
204
|
+
if (buttons.length === 0) {
|
|
205
|
+
return [{ type: "text", text }];
|
|
206
|
+
}
|
|
207
|
+
const requestId = (typeof payload.questionId === "string" && payload.questionId) ||
|
|
208
|
+
(typeof payload.details?.questionId === "string" ? payload.details.questionId : "") ||
|
|
209
|
+
(typeof payload.details?.jobId === "string" ? payload.details.jobId : "");
|
|
210
|
+
const prompt = "Approve this request?";
|
|
211
|
+
const templateText = requestId ? `${prompt}\nRequest: ${requestId}` : prompt;
|
|
212
|
+
const actions = buttons.slice(0, LINE_MAX_ACTIONS).map((button) => ({
|
|
213
|
+
type: "postback",
|
|
214
|
+
label: this.formatActionLabel(button.text),
|
|
215
|
+
data: button.callbackData.slice(0, LINE_POSTBACK_DATA_LIMIT),
|
|
216
|
+
}));
|
|
217
|
+
const messages = this.chunkText(text).map((part) => ({
|
|
218
|
+
type: "text",
|
|
219
|
+
text: part,
|
|
220
|
+
}));
|
|
221
|
+
messages.push({
|
|
222
|
+
type: "template",
|
|
223
|
+
altText: prompt,
|
|
224
|
+
template: {
|
|
225
|
+
type: "buttons",
|
|
226
|
+
title: prompt.slice(0, LINE_TEMPLATE_TITLE_LIMIT),
|
|
227
|
+
text: templateText.slice(0, LINE_TEMPLATE_TEXT_LIMIT),
|
|
228
|
+
actions,
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
return messages;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Split a long text into LINE sized text messages.
|
|
235
|
+
*/
|
|
236
|
+
chunkText(text, limit = LINE_TEXT_MESSAGE_LIMIT) {
|
|
237
|
+
if (text.length <= limit)
|
|
238
|
+
return [text];
|
|
239
|
+
const chunks = [];
|
|
240
|
+
let rest = text;
|
|
241
|
+
while (rest.length > limit) {
|
|
242
|
+
let cut = rest.lastIndexOf("\n", limit);
|
|
243
|
+
if (cut <= 0)
|
|
244
|
+
cut = limit;
|
|
245
|
+
chunks.push(rest.slice(0, cut));
|
|
246
|
+
rest = rest.slice(cut);
|
|
247
|
+
}
|
|
248
|
+
if (rest.length > 0)
|
|
249
|
+
chunks.push(rest);
|
|
250
|
+
return chunks;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* The button label without its emoji. LINE counts the emoji in the 20
|
|
254
|
+
* character label limit.
|
|
255
|
+
*/
|
|
256
|
+
formatActionLabel(label) {
|
|
257
|
+
const plain = label.replace(/[\u{1F300}-\u{1FAFF}\u{2705}\u{274C}\u{2B50}\u{26A0}\u{1F7E1}]/gu, "").trim();
|
|
258
|
+
return (plain || label).slice(0, LINE_ACTION_LABEL_LIMIT);
|
|
259
|
+
}
|
|
182
260
|
formatMessage(payload) {
|
|
183
261
|
const emoji = this.getEmoji(payload.event);
|
|
184
262
|
const title = `${emoji} ${payload.title}`;
|
|
@@ -189,8 +267,8 @@ export class LineAdapter extends BaseChannelAdapter {
|
|
|
189
267
|
if (payload.details?.jobId) {
|
|
190
268
|
lines.push(`Job: ${payload.details.jobId}`);
|
|
191
269
|
}
|
|
192
|
-
|
|
193
|
-
lines.push("",
|
|
270
|
+
for (const detail of formatDetailLines(payload.details, payload.event)) {
|
|
271
|
+
lines.push("", `${detail.label}: ${detail.value}`);
|
|
194
272
|
}
|
|
195
273
|
return lines.filter(Boolean).join("\n");
|
|
196
274
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-adapter.js","sourceRoot":"","sources":["../../src/adapters/line-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"line-adapter.js","sourceRoot":"","sources":["../../src/adapters/line-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ntfy-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ntfy-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ntfy-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ntfy-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,qBAAa,WAAY,SAAQ,kBAAkB;IAClD,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,IAAI,UAAU;IAEvB,YAAY,MAAM,EAAE,UAAU,EAE7B;IAEK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAGnC;IAEK,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsCpE;IAED,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,OAAO;CAiBf"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Sends notifications via ntfy.sh (or self-hosted ntfy server).
|
|
5
5
|
*/
|
|
6
6
|
import { BaseChannelAdapter } from "../base-adapter.js";
|
|
7
|
+
import { formatDetailLines } from "./detail-format.js";
|
|
7
8
|
export class NtfyAdapter extends BaseChannelAdapter {
|
|
8
9
|
id = "ntfy";
|
|
9
10
|
type = "ntfy";
|
|
@@ -58,8 +59,8 @@ export class NtfyAdapter extends BaseChannelAdapter {
|
|
|
58
59
|
if (payload.details?.jobId) {
|
|
59
60
|
lines.push(`Job: ${payload.details.jobId}`);
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
-
lines.push(`\
|
|
62
|
+
for (const detail of formatDetailLines(payload.details, payload.event)) {
|
|
63
|
+
lines.push(`\n${detail.label}: ${detail.value}`);
|
|
63
64
|
}
|
|
64
65
|
return lines.join("");
|
|
65
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ntfy-adapter.js","sourceRoot":"","sources":["../../src/adapters/ntfy-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ntfy-adapter.js","sourceRoot":"","sources":["../../src/adapters/ntfy-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,20 @@ import type { NotificationPayload, NotificationResult, TelegramCallbackHandler,
|
|
|
9
9
|
*/
|
|
10
10
|
type TelegramMessageHandler = (text: string, chatId: string) => Promise<void>;
|
|
11
11
|
import { BaseChannelAdapter } from "../base-adapter.js";
|
|
12
|
+
/**
|
|
13
|
+
* The status label of an event.
|
|
14
|
+
*
|
|
15
|
+
* Use ASCII labels per AGENTS.md convention - emoji render inconsistently
|
|
16
|
+
* across terminals and break the alignment of the machine readable output.
|
|
17
|
+
*/
|
|
18
|
+
export declare function telegramStatusLabel(event: NotificationPayload["event"]): string;
|
|
19
|
+
/**
|
|
20
|
+
* Render the Telegram message of a payload.
|
|
21
|
+
*
|
|
22
|
+
* Exported so the rendering can be tested without a Telegram connection: the
|
|
23
|
+
* detail footer must never label a resume trigger as an error.
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildTelegramMessage(payload: NotificationPayload): string;
|
|
12
26
|
export declare class TelegramAdapter extends BaseChannelAdapter {
|
|
13
27
|
readonly id = "telegram";
|
|
14
28
|
readonly type = "telegram";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAEX,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EAEvB,cAAc,EACd,MAAM,aAAa,CAAC;AAErB;;GAEG;AAEH,KAAK,sBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAY9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"telegram-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { logError, logInfo, logWarn } from "../file-logger.js";
|
|
|
12
12
|
import { isAuthorizedTelegramSender } from "../telegram-auth.js";
|
|
13
13
|
import { BaseChannelAdapter } from "../base-adapter.js";
|
|
14
14
|
import { maskString } from "../mask-secrets.js";
|
|
15
|
+
import { formatDetailLines } from "./detail-format.js";
|
|
15
16
|
import { filterTelegramContent, getSafeNotificationLog } from "../telegram-content-filter.js";
|
|
16
17
|
/**
|
|
17
18
|
* Bounded retry for a rejected getUpdates call (409).
|
|
@@ -24,6 +25,86 @@ import { filterTelegramContent, getSafeNotificationLog } from "../telegram-conte
|
|
|
24
25
|
const POLL_RETRY_MAX_ATTEMPTS = 5;
|
|
25
26
|
const POLL_RETRY_BASE_DELAY_MS = 10_000;
|
|
26
27
|
const POLL_RETRY_MAX_DELAY_MS = 120_000;
|
|
28
|
+
/**
|
|
29
|
+
* The status label of an event.
|
|
30
|
+
*
|
|
31
|
+
* Use ASCII labels per AGENTS.md convention - emoji render inconsistently
|
|
32
|
+
* across terminals and break the alignment of the machine readable output.
|
|
33
|
+
*/
|
|
34
|
+
export function telegramStatusLabel(event) {
|
|
35
|
+
const labels = {
|
|
36
|
+
JobStarted: "[START]",
|
|
37
|
+
TaskCompleted: "[OK]",
|
|
38
|
+
TaskFailed: "[FAIL]",
|
|
39
|
+
QuotaPaused: "[PAUSE]",
|
|
40
|
+
ResumeScheduled: "[RESUME]",
|
|
41
|
+
ContextCompacted: "[COMPACT]",
|
|
42
|
+
OutputLimitContinued: "[CONTINUE]",
|
|
43
|
+
E2EFailed: "[TEST]",
|
|
44
|
+
HumanReviewNeeded: "[REVIEW]",
|
|
45
|
+
ReadyForClient: "[DONE]",
|
|
46
|
+
JobCancelled: "[CANCEL]",
|
|
47
|
+
Error: "[ERROR]",
|
|
48
|
+
WaitingForUserInput: "[INPUT]",
|
|
49
|
+
Info: "[INFO]",
|
|
50
|
+
CodexSessionStarted: "[CODEX]",
|
|
51
|
+
CodexPlanDetected: "[PLAN]",
|
|
52
|
+
AssistantResponse: "[TODO]",
|
|
53
|
+
ToolSummary: "[TOOL]",
|
|
54
|
+
};
|
|
55
|
+
return labels[event] ?? "[MSG]";
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Render the Telegram message of a payload.
|
|
59
|
+
*
|
|
60
|
+
* Exported so the rendering can be tested without a Telegram connection: the
|
|
61
|
+
* detail footer must never label a resume trigger as an error.
|
|
62
|
+
*/
|
|
63
|
+
export function buildTelegramMessage(payload) {
|
|
64
|
+
// Mask all fields before rendering - defense in depth
|
|
65
|
+
const maskedTitle = maskString(payload.title);
|
|
66
|
+
const maskedMessage = maskString(payload.message);
|
|
67
|
+
const taskTitle = payload.details?.taskTitle;
|
|
68
|
+
const jobId = payload.details?.jobId;
|
|
69
|
+
const ordinal = payload.details?.ordinal;
|
|
70
|
+
const planPath = payload.details?.planPath;
|
|
71
|
+
const projectRoot = payload.details?.projectRoot;
|
|
72
|
+
const maskedTaskTitle = typeof taskTitle === "string" ? maskString(taskTitle) : undefined;
|
|
73
|
+
const maskedJobId = typeof jobId === "string" ? maskString(jobId) : undefined;
|
|
74
|
+
const maskedProjectRoot = typeof projectRoot === "string" ? maskString(projectRoot) : undefined;
|
|
75
|
+
const maskedPlanPath = typeof planPath === "string" ? maskString(planPath) : undefined;
|
|
76
|
+
// Get hostname for multi-machine identification
|
|
77
|
+
const hostTag = `[${hostname()}]`;
|
|
78
|
+
const label = telegramStatusLabel(payload.event);
|
|
79
|
+
const title = `${label} ${maskedTitle} ${hostTag}`;
|
|
80
|
+
const lines = [title];
|
|
81
|
+
// Add metadata for Codex events
|
|
82
|
+
if (maskedTaskTitle) {
|
|
83
|
+
lines.push("", `Task: ${maskedTaskTitle}`);
|
|
84
|
+
}
|
|
85
|
+
if (maskedProjectRoot) {
|
|
86
|
+
lines.push(`Root: ${maskedProjectRoot}`);
|
|
87
|
+
}
|
|
88
|
+
if (ordinal !== undefined) {
|
|
89
|
+
lines.push(`Ordinal: ${ordinal}`);
|
|
90
|
+
}
|
|
91
|
+
if (maskedPlanPath) {
|
|
92
|
+
lines.push(`Plan: ${maskedPlanPath}`);
|
|
93
|
+
}
|
|
94
|
+
// Add message content (artifact content flows through message)
|
|
95
|
+
if (maskedMessage) {
|
|
96
|
+
lines.push("", maskedMessage);
|
|
97
|
+
}
|
|
98
|
+
if (maskedJobId) {
|
|
99
|
+
lines.push(`Job: ${maskedJobId}`);
|
|
100
|
+
}
|
|
101
|
+
// Detail fields: "Error:" only for real failures, "Reason:" for a trigger.
|
|
102
|
+
for (const detail of formatDetailLines(payload.details, payload.event)) {
|
|
103
|
+
lines.push("", `${detail.label}: ${maskString(detail.value)}`);
|
|
104
|
+
}
|
|
105
|
+
// Final mask pass on the complete rendered string
|
|
106
|
+
return maskString(lines.filter(Boolean).join("\n"));
|
|
107
|
+
}
|
|
27
108
|
export class TelegramAdapter extends BaseChannelAdapter {
|
|
28
109
|
id = "telegram";
|
|
29
110
|
type = "telegram";
|
|
@@ -574,8 +655,12 @@ export class TelegramAdapter extends BaseChannelAdapter {
|
|
|
574
655
|
if (cfg.parseMode) {
|
|
575
656
|
body.parse_mode = cfg.parseMode;
|
|
576
657
|
}
|
|
577
|
-
//
|
|
578
|
-
|
|
658
|
+
// The keyboard is attached to the final chunk only. The
|
|
659
|
+
// earlier chunks are the continuation of the same
|
|
660
|
+
// question, and a button on every chunk would offer the
|
|
661
|
+
// same action several times.
|
|
662
|
+
const isLastChunk = i === chunks.length - 1;
|
|
663
|
+
if (isLastChunk && enableInlineKeyboard && (actionButtons?.length ?? 0) > 0) {
|
|
579
664
|
body.reply_markup = this.buildInlineKeyboard(actionButtons);
|
|
580
665
|
}
|
|
581
666
|
const response = await fetch(`https://api.telegram.org/bot${cfg.botToken}/sendMessage`, {
|
|
@@ -867,50 +952,7 @@ export class TelegramAdapter extends BaseChannelAdapter {
|
|
|
867
952
|
}
|
|
868
953
|
}
|
|
869
954
|
formatMessage(payload) {
|
|
870
|
-
|
|
871
|
-
const maskedTitle = maskString(payload.title);
|
|
872
|
-
const maskedMessage = maskString(payload.message);
|
|
873
|
-
const taskTitle = payload.details?.taskTitle;
|
|
874
|
-
const jobId = payload.details?.jobId;
|
|
875
|
-
const errorVal = payload.details?.error;
|
|
876
|
-
const ordinal = payload.details?.ordinal;
|
|
877
|
-
const planPath = payload.details?.planPath;
|
|
878
|
-
const projectRoot = payload.details?.projectRoot;
|
|
879
|
-
const maskedTaskTitle = typeof taskTitle === "string" ? maskString(taskTitle) : undefined;
|
|
880
|
-
const maskedJobId = typeof jobId === "string" ? maskString(jobId) : undefined;
|
|
881
|
-
const maskedError = typeof errorVal === "string" ? maskString(errorVal) : undefined;
|
|
882
|
-
const maskedProjectRoot = typeof projectRoot === "string" ? maskString(projectRoot) : undefined;
|
|
883
|
-
const maskedPlanPath = typeof planPath === "string" ? maskString(planPath) : undefined;
|
|
884
|
-
// Get hostname for multi-machine identification
|
|
885
|
-
const hostTag = `[${hostname()}]`;
|
|
886
|
-
const label = this.getStatusLabel(payload.event);
|
|
887
|
-
const title = `${label} ${maskedTitle} ${hostTag}`;
|
|
888
|
-
const lines = [title];
|
|
889
|
-
// Add metadata for Codex events
|
|
890
|
-
if (maskedTaskTitle) {
|
|
891
|
-
lines.push("", `Task: ${maskedTaskTitle}`);
|
|
892
|
-
}
|
|
893
|
-
if (maskedProjectRoot) {
|
|
894
|
-
lines.push(`Root: ${maskedProjectRoot}`);
|
|
895
|
-
}
|
|
896
|
-
if (ordinal !== undefined) {
|
|
897
|
-
lines.push(`Ordinal: ${ordinal}`);
|
|
898
|
-
}
|
|
899
|
-
if (maskedPlanPath) {
|
|
900
|
-
lines.push(`Plan: ${maskedPlanPath}`);
|
|
901
|
-
}
|
|
902
|
-
// Add message content (artifact content flows through message)
|
|
903
|
-
if (maskedMessage) {
|
|
904
|
-
lines.push("", maskedMessage);
|
|
905
|
-
}
|
|
906
|
-
if (maskedJobId) {
|
|
907
|
-
lines.push(`Job: ${maskedJobId}`);
|
|
908
|
-
}
|
|
909
|
-
if (maskedError) {
|
|
910
|
-
lines.push("", `Error: ${maskedError}`);
|
|
911
|
-
}
|
|
912
|
-
// Final mask pass on the complete rendered string
|
|
913
|
-
return maskString(lines.filter(Boolean).join("\n"));
|
|
955
|
+
return buildTelegramMessage(payload);
|
|
914
956
|
}
|
|
915
957
|
/**
|
|
916
958
|
* Split long messages into ordered chunks for Telegram.
|
|
@@ -943,29 +985,7 @@ export class TelegramAdapter extends BaseChannelAdapter {
|
|
|
943
985
|
return chunks;
|
|
944
986
|
}
|
|
945
987
|
getStatusLabel(event) {
|
|
946
|
-
|
|
947
|
-
// Avoid emoji which renders inconsistently across terminals
|
|
948
|
-
const labels = {
|
|
949
|
-
JobStarted: "[START]",
|
|
950
|
-
TaskCompleted: "[OK]",
|
|
951
|
-
TaskFailed: "[FAIL]",
|
|
952
|
-
QuotaPaused: "[PAUSE]",
|
|
953
|
-
ResumeScheduled: "[RESUME]",
|
|
954
|
-
ContextCompacted: "[COMPACT]",
|
|
955
|
-
OutputLimitContinued: "[CONTINUE]",
|
|
956
|
-
E2EFailed: "[TEST]",
|
|
957
|
-
HumanReviewNeeded: "[REVIEW]",
|
|
958
|
-
ReadyForClient: "[DONE]",
|
|
959
|
-
JobCancelled: "[CANCEL]",
|
|
960
|
-
Error: "[ERROR]",
|
|
961
|
-
WaitingForUserInput: "[INPUT]",
|
|
962
|
-
Info: "[INFO]",
|
|
963
|
-
CodexSessionStarted: "[CODEX]",
|
|
964
|
-
CodexPlanDetected: "[PLAN]",
|
|
965
|
-
AssistantResponse: "[TODO]",
|
|
966
|
-
ToolSummary: "[TOOL]",
|
|
967
|
-
};
|
|
968
|
-
return labels[event] ?? "[MSG]";
|
|
988
|
+
return telegramStatusLabel(event);
|
|
969
989
|
}
|
|
970
990
|
}
|
|
971
991
|
//# sourceMappingURL=telegram-adapter.js.map
|