pi-harness-runtime 0.10.11 → 0.10.12
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/cli.ts +111 -0
- package/footer-status.ts +204 -0
- package/harness/agent-handoff.ts +189 -0
- package/harness/auto-compact.ts +309 -0
- package/harness/auto-quota-resume.ts +132 -0
- package/harness/autonomous-review.ts +88 -0
- package/harness/blackboard.ts +291 -0
- package/harness/context-compact-orchestrator.ts +551 -0
- package/harness/context-window-manager.ts +464 -0
- package/harness/continue-prompt.ts +242 -0
- package/harness/e2e/index.ts +44 -0
- package/harness/e2e/minimax-quota-parser.ts +88 -0
- package/harness/e2e/minimax-quota-scraper.ts +609 -0
- package/harness/e2e/openai-quota-scraper.ts +447 -0
- package/harness/e2e/playwright-runner.ts +204 -0
- package/harness/e2e/quota-status.ts +194 -0
- package/harness/e2e/test-engine.ts +398 -0
- package/harness/forked-summarizer.ts +304 -0
- package/harness/herdr-agents.ts +91 -0
- package/harness/index.ts +232 -0
- package/harness/job-state-machine.ts +363 -0
- package/harness/loop-code-agent.ts +284 -0
- package/harness/loop-controller.ts +201 -0
- package/harness/loop-review-agent.ts +295 -0
- package/harness/loop-runtime.ts +760 -0
- package/harness/loop-types.ts +118 -0
- package/harness/master-planner.ts +327 -0
- package/harness/notification-events.ts +299 -0
- package/harness/output-limit-handler.ts +316 -0
- package/harness/partial-recovery.ts +531 -0
- package/harness/project-detector/detector.ts +328 -0
- package/harness/repair-engine.ts +340 -0
- package/harness/session-memory.ts +401 -0
- package/harness/task-graph.d.ts +51 -0
- package/harness/task-graph.ts +143 -0
- package/mirror.ts +278 -0
- package/package.json +8 -12
- package/packages/a2a-adapter/src/agent.ts +139 -0
- package/packages/a2a-adapter/src/client.ts +107 -0
- package/packages/a2a-adapter/src/discovery.ts +106 -0
- package/packages/a2a-adapter/src/index.ts +38 -0
- package/packages/a2a-adapter/src/protocol.ts +46 -0
- package/packages/a2a-adapter/src/transport.ts +142 -0
- package/packages/a2a-adapter/src/types.ts +117 -0
- package/packages/auth/src/minimax-browser-auth.ts +1109 -0
- package/packages/auth/src/run-minimax-auth.ts +150 -0
- package/packages/autonomous-refactor/src/detector.ts +219 -0
- package/packages/autonomous-refactor/src/index.ts +16 -0
- package/packages/autonomous-refactor/src/planner.ts +99 -0
- package/packages/autonomous-refactor/src/types.ts +57 -0
- package/packages/autonomous-runtime/src/inbox.ts +266 -0
- package/packages/autonomous-runtime/src/index.ts +22 -0
- package/packages/autonomous-runtime/src/lease.ts +318 -0
- package/packages/autonomous-runtime/src/types.ts +257 -0
- package/packages/cache-strategy/src/cache.ts +213 -0
- package/packages/cache-strategy/src/index.ts +6 -0
- package/packages/cache-strategy/src/types.ts +40 -0
- package/packages/capability-registry/src/defaults.ts +247 -0
- package/packages/capability-registry/src/index.ts +43 -0
- package/packages/capability-registry/src/query.ts +99 -0
- package/packages/capability-registry/src/registry.ts +222 -0
- package/packages/capability-registry/src/types.d.ts +47 -0
- package/packages/capability-registry/src/types.js +10 -0
- package/packages/capability-registry/src/types.ts +83 -0
- package/packages/checkpoint/src/checkpoint-manager.ts +33 -0
- package/packages/checkpoint/src/differ.ts +281 -0
- package/packages/checkpoint/src/engine.ts +532 -0
- package/packages/checkpoint/src/index.ts +48 -0
- package/packages/checkpoint/src/storage.ts +439 -0
- package/packages/checkpoint/src/types.ts +348 -0
- package/packages/cli-plugin-sdk/src/index.ts +169 -0
- package/packages/cli-plugin-sdk/src/plugin-fs.ts +91 -0
- package/packages/cli-plugin-sdk/src/registry.ts +55 -0
- package/packages/cli-plugin-sdk/src/types.ts +32 -0
- package/packages/clipboard/dist/src/clipboard.d.ts +11 -0
- package/packages/clipboard/dist/src/clipboard.js +51 -0
- package/packages/clipboard/dist/src/copy-sync.d.ts +27 -0
- package/packages/clipboard/dist/src/copy-sync.js +170 -0
- package/packages/clipboard/dist/src/gist-relay.d.ts +48 -0
- package/packages/clipboard/dist/src/gist-relay.js +186 -0
- package/packages/clipboard/dist/src/github-login.d.ts +16 -0
- package/packages/clipboard/dist/src/github-login.js +69 -0
- package/packages/clipboard/dist/src/index.d.ts +4 -0
- package/packages/clipboard/dist/src/index.js +3 -0
- package/packages/clipboard/dist/src/types.d.ts +13 -0
- package/packages/clipboard/dist/src/types.js +5 -0
- package/packages/clipboard/src/clipboard.ts +59 -0
- package/packages/clipboard/src/copy-sync.ts +201 -0
- package/packages/clipboard/src/gist-relay.ts +240 -0
- package/packages/clipboard/src/github-login.ts +107 -0
- package/packages/clipboard/src/index.ts +3 -0
- package/packages/clipboard/src/types.ts +14 -0
- package/packages/code-generation/src/faker.ts +461 -0
- package/packages/code-generation/src/generator.ts +421 -0
- package/packages/code-generation/src/index.ts +56 -0
- package/packages/code-generation/src/templates/ejs-renderer.ts +142 -0
- package/packages/code-generation/src/templates/registry.ts +174 -0
- package/packages/code-generation/src/types.ts +373 -0
- package/packages/code-review/src/engine.ts +408 -0
- package/packages/code-review/src/index.ts +46 -0
- package/packages/code-review/src/reports/html.ts +143 -0
- package/packages/code-review/src/reports/markdown.ts +197 -0
- package/packages/code-review/src/reports/text.ts +171 -0
- package/packages/code-review/src/types.ts +324 -0
- package/packages/codex-adapter/src/executor.ts +83 -0
- package/packages/codex-adapter/src/index.ts +16 -0
- package/packages/codex-adapter/src/provider.ts +213 -0
- package/packages/codex-adapter/src/types.ts +118 -0
- package/packages/config-capture/src/index.ts +357 -0
- package/packages/context-compiler/src/budget.ts +122 -0
- package/packages/context-compiler/src/cache.ts +134 -0
- package/packages/context-compiler/src/compiler.ts +314 -0
- package/packages/context-compiler/src/deduplicate.ts +171 -0
- package/packages/context-compiler/src/filter.ts +135 -0
- package/packages/context-compiler/src/index.ts +61 -0
- package/packages/context-compiler/src/okf-loader.ts +86 -0
- package/packages/context-compiler/src/score.ts +130 -0
- package/packages/context-compiler/src/types.ts +246 -0
- package/packages/context-discovery/dist/src/discover.d.ts +3 -0
- package/packages/context-discovery/dist/src/discover.js +42 -0
- package/packages/context-discovery/dist/src/discovery.d.ts +28 -0
- package/packages/context-discovery/dist/src/discovery.js +21 -0
- package/packages/context-discovery/dist/src/index.d.ts +3 -0
- package/packages/context-discovery/dist/src/index.js +2 -0
- package/packages/context-discovery/dist/src/types.d.ts +16 -0
- package/packages/context-discovery/dist/src/types.js +2 -0
- package/packages/context-discovery/src/discover.ts +42 -0
- package/packages/context-discovery/src/discovery.ts +44 -0
- package/packages/context-discovery/src/index.ts +2 -0
- package/packages/context-discovery/src/types.ts +15 -0
- package/packages/context-manager/src/compaction.ts +139 -0
- package/packages/context-manager/src/core.ts +85 -0
- package/packages/context-manager/src/index.ts +22 -0
- package/packages/context-manager/src/types.ts +44 -0
- package/packages/cookie-sanitizer/src/atomic-write.ts +79 -0
- package/packages/cookie-sanitizer/src/detect-format.ts +102 -0
- package/packages/cookie-sanitizer/src/index.ts +89 -0
- package/packages/cookie-sanitizer/src/infer-provider.ts +103 -0
- package/packages/cookie-sanitizer/src/normalize.ts +92 -0
- package/packages/cookie-sanitizer/src/parse-json.ts +122 -0
- package/packages/cookie-sanitizer/src/parse-netscape.ts +118 -0
- package/packages/cookie-sanitizer/src/sync.ts +312 -0
- package/packages/cookie-sanitizer/src/types.ts +101 -0
- package/packages/cookie-sanitizer/src/watcher.ts +180 -0
- package/packages/cost-optimizer/src/budget.ts +138 -0
- package/packages/cost-optimizer/src/config.ts +34 -0
- package/packages/cost-optimizer/src/forecast.ts +59 -0
- package/packages/cost-optimizer/src/index.ts +74 -0
- package/packages/cost-optimizer/src/optimizer.ts +277 -0
- package/packages/cost-optimizer/src/selection.ts +264 -0
- package/packages/cost-optimizer/src/tracker.ts +122 -0
- package/packages/cost-optimizer/src/types.ts +134 -0
- package/packages/dependency-analyzer/dist/src/analyzer.d.ts +17 -0
- package/packages/dependency-analyzer/dist/src/analyzer.js +119 -0
- package/packages/dependency-analyzer/dist/src/imports.d.ts +12 -0
- package/packages/dependency-analyzer/dist/src/imports.js +73 -0
- package/packages/dependency-analyzer/dist/src/index.d.ts +4 -0
- package/packages/dependency-analyzer/dist/src/index.js +3 -0
- package/packages/dependency-analyzer/dist/src/types.d.ts +28 -0
- package/packages/dependency-analyzer/dist/src/types.js +5 -0
- package/packages/dependency-analyzer/src/analyzer.ts +140 -0
- package/packages/dependency-analyzer/src/imports.ts +93 -0
- package/packages/dependency-analyzer/src/index.ts +9 -0
- package/packages/dependency-analyzer/src/types.ts +38 -0
- package/packages/django-plugin/src/analyzer.ts +284 -0
- package/packages/django-plugin/src/index.ts +39 -0
- package/packages/django-plugin/src/types.ts +35 -0
- package/packages/doc-generator/src/detector.ts +113 -0
- package/packages/doc-generator/src/docs.ts +158 -0
- package/packages/doc-generator/src/index.ts +7 -0
- package/packages/doc-generator/src/types.ts +58 -0
- package/packages/evaluation-engine/src/engine.ts +488 -0
- package/packages/evaluation-engine/src/index.ts +23 -0
- package/packages/evaluation-engine/src/types.ts +136 -0
- package/packages/evaluation-runner/src/index.ts +6 -0
- package/packages/evaluation-runner/src/runner.ts +182 -0
- package/packages/evaluation-runner/src/types.ts +51 -0
- package/packages/event-bus/dist/src/bus.d.ts +15 -0
- package/packages/event-bus/dist/src/bus.js +98 -0
- package/packages/event-bus/dist/src/herdr-bus.d.ts +121 -0
- package/packages/event-bus/dist/src/herdr-bus.js +322 -0
- package/packages/event-bus/dist/src/index.d.ts +6 -0
- package/packages/event-bus/dist/src/index.js +4 -0
- package/packages/event-bus/dist/src/types.d.ts +27 -0
- package/packages/event-bus/dist/src/types.js +10 -0
- package/packages/event-bus/src/bus.ts +111 -0
- package/packages/event-bus/src/herdr-bus.ts +525 -0
- package/packages/event-bus/src/index.ts +38 -0
- package/packages/event-bus/src/types.ts +59 -0
- package/packages/event-store/dist/src/index.d.ts +3 -0
- package/packages/event-store/dist/src/index.js +2 -0
- package/packages/event-store/dist/src/store.d.ts +15 -0
- package/packages/event-store/dist/src/store.js +139 -0
- package/packages/event-store/dist/src/types.d.ts +48 -0
- package/packages/event-store/dist/src/types.js +5 -0
- package/packages/event-store/src/index.ts +11 -0
- package/packages/event-store/src/store.ts +168 -0
- package/packages/event-store/src/types.d.ts +48 -0
- package/packages/event-store/src/types.js +5 -0
- package/packages/event-store/src/types.ts +65 -0
- package/packages/experience-replay/src/index.ts +19 -0
- package/packages/experience-replay/src/replay.ts +348 -0
- package/packages/experience-replay/src/types.ts +128 -0
- package/packages/feedback-collector/src/collector.ts +160 -0
- package/packages/feedback-collector/src/index.ts +6 -0
- package/packages/feedback-collector/src/types.ts +51 -0
- package/packages/framework-detector/src/detector.ts +586 -0
- package/packages/framework-detector/src/index.ts +46 -0
- package/packages/framework-detector/src/signatures/registry.ts +648 -0
- package/packages/framework-detector/src/types.ts +299 -0
- package/packages/framework-plugin-sdk/src/index.ts +45 -0
- package/packages/framework-plugin-sdk/src/manager.ts +525 -0
- package/packages/framework-plugin-sdk/src/types.ts +449 -0
- package/packages/frappe-plugin/src/analyzer.ts +454 -0
- package/packages/frappe-plugin/src/index.ts +72 -0
- package/packages/frappe-plugin/src/types.ts +135 -0
- package/packages/generic-web-plugin/src/analyzer.ts +347 -0
- package/packages/generic-web-plugin/src/index.ts +61 -0
- package/packages/generic-web-plugin/src/types.ts +41 -0
- package/packages/health-monitor/src/index.ts +16 -0
- package/packages/health-monitor/src/monitor.ts +216 -0
- package/packages/health-monitor/src/types.ts +45 -0
- package/packages/intent-analyzer/dist/src/analyzer.d.ts +13 -0
- package/packages/intent-analyzer/dist/src/analyzer.js +239 -0
- package/packages/intent-analyzer/dist/src/index.d.ts +3 -0
- package/packages/intent-analyzer/dist/src/index.js +2 -0
- package/packages/intent-analyzer/dist/src/types.d.ts +26 -0
- package/packages/intent-analyzer/dist/src/types.js +7 -0
- package/packages/intent-analyzer/src/analyzer.ts +259 -0
- package/packages/intent-analyzer/src/index.ts +8 -0
- package/packages/intent-analyzer/src/types.ts +44 -0
- package/packages/knowledge-retrieval/src/index.ts +18 -0
- package/packages/knowledge-retrieval/src/mcp-client.ts +212 -0
- package/packages/knowledge-retrieval/src/types.ts +112 -0
- package/packages/laravel-plugin/src/analyzer.ts +323 -0
- package/packages/laravel-plugin/src/index.ts +40 -0
- package/packages/laravel-plugin/src/types.ts +24 -0
- package/packages/learning-engine/src/engine.ts +391 -0
- package/packages/learning-engine/src/index.ts +26 -0
- package/packages/learning-engine/src/types.ts +201 -0
- package/packages/mcp-adapter/src/index.ts +20 -0
- package/packages/mcp-adapter/src/server.ts +273 -0
- package/packages/mcp-adapter/src/tools.ts +220 -0
- package/packages/mcp-adapter/src/types.ts +79 -0
- package/packages/memory-engine/src/engine.ts +615 -0
- package/packages/memory-engine/src/index.ts +20 -0
- package/packages/memory-engine/src/types.ts +159 -0
- package/packages/model-registry/src/cost.ts +80 -0
- package/packages/model-registry/src/defaults.ts +178 -0
- package/packages/model-registry/src/index.ts +57 -0
- package/packages/model-registry/src/query.ts +85 -0
- package/packages/model-registry/src/registry.ts +188 -0
- package/packages/model-registry/src/types.d.ts +63 -0
- package/packages/model-registry/src/types.js +5 -0
- package/packages/model-registry/src/types.ts +69 -0
- package/packages/nextjs-plugin/src/analyzer.ts +247 -0
- package/packages/nextjs-plugin/src/index.ts +41 -0
- package/packages/nextjs-plugin/src/types.ts +36 -0
- package/packages/notification/src/adapters/email-adapter.ts +126 -0
- package/packages/notification/src/adapters/ntfy-adapter.ts +100 -0
- package/packages/notification/src/adapters/telegram-adapter.ts +107 -0
- package/packages/notification/src/adapters/webhook-adapter.ts +75 -0
- package/packages/notification/src/base-adapter.ts +75 -0
- package/packages/notification/src/index.ts +9 -0
- package/packages/notification/src/notification-center.ts +286 -0
- package/packages/notification/src/types.ts +89 -0
- package/packages/observability/src/alerts.ts +355 -0
- package/packages/observability/src/health.ts +325 -0
- package/packages/observability/src/index.ts +79 -0
- package/packages/observability/src/logger.ts +373 -0
- package/packages/observability/src/metrics.ts +475 -0
- package/packages/observability/src/tracer.ts +336 -0
- package/packages/observability/src/types.ts +391 -0
- package/packages/okf-indexer/src/cli.ts +25 -0
- package/packages/okf-indexer/src/indexer.ts +186 -0
- package/packages/performance-optimizer/src/index.ts +20 -0
- package/packages/performance-optimizer/src/optimizer.ts +428 -0
- package/packages/performance-optimizer/src/types.ts +112 -0
- package/packages/privilege-broker/src/approval.ts +70 -0
- package/packages/privilege-broker/src/audit.ts +142 -0
- package/packages/privilege-broker/src/executor.ts +110 -0
- package/packages/privilege-broker/src/index.ts +46 -0
- package/packages/privilege-broker/src/registry.ts +98 -0
- package/packages/privilege-broker/src/types.ts +105 -0
- package/packages/project-analyzer/src/analyzer.ts +683 -0
- package/packages/project-analyzer/src/cache.ts +329 -0
- package/packages/project-analyzer/src/command-discovery.ts +239 -0
- package/packages/project-analyzer/src/index.ts +123 -0
- package/packages/project-analyzer/src/plugins/index.ts +16 -0
- package/packages/project-analyzer/src/rule-discovery.ts +282 -0
- package/packages/project-analyzer/src/signals.ts +355 -0
- package/packages/project-analyzer/src/types.ts +412 -0
- package/packages/project-analyzer/src/walker.ts +366 -0
- package/packages/projection-engine/dist/src/engine.d.ts +61 -0
- package/packages/projection-engine/dist/src/engine.js +87 -0
- package/packages/projection-engine/dist/src/index.d.ts +2 -0
- package/packages/projection-engine/dist/src/index.js +2 -0
- package/packages/projection-engine/dist/src/project.d.ts +3 -0
- package/packages/projection-engine/dist/src/project.js +24 -0
- package/packages/projection-engine/dist/src/types.d.ts +55 -0
- package/packages/projection-engine/dist/src/types.js +5 -0
- package/packages/projection-engine/src/engine.ts +134 -0
- package/packages/projection-engine/src/index.ts +8 -0
- package/packages/projection-engine/src/project.ts +24 -0
- package/packages/projection-engine/src/types.d.ts +55 -0
- package/packages/projection-engine/src/types.js +5 -0
- package/packages/projection-engine/src/types.ts +60 -0
- package/packages/prompt-compiler/src/budget.ts +170 -0
- package/packages/prompt-compiler/src/compiler.ts +188 -0
- package/packages/prompt-compiler/src/deduplicate.ts +84 -0
- package/packages/prompt-compiler/src/index.ts +50 -0
- package/packages/prompt-compiler/src/normalize.ts +140 -0
- package/packages/prompt-compiler/src/render.ts +105 -0
- package/packages/prompt-compiler/src/section-builder.ts +279 -0
- package/packages/prompt-compiler/src/types.ts +263 -0
- package/packages/prompt-compiler/src/validate.ts +157 -0
- package/packages/prompt-versioning/src/index.ts +6 -0
- package/packages/prompt-versioning/src/types.ts +41 -0
- package/packages/prompt-versioning/src/versioning.ts +149 -0
- package/packages/provider-adapter-sdk/dist/src/builder.d.ts +140 -0
- package/packages/provider-adapter-sdk/dist/src/builder.js +332 -0
- package/packages/provider-adapter-sdk/dist/src/errors.d.ts +71 -0
- package/packages/provider-adapter-sdk/dist/src/errors.js +111 -0
- package/packages/provider-adapter-sdk/dist/src/index.d.ts +15 -0
- package/packages/provider-adapter-sdk/dist/src/index.js +19 -0
- package/packages/provider-adapter-sdk/dist/src/registry.d.ts +108 -0
- package/packages/provider-adapter-sdk/dist/src/registry.js +301 -0
- package/packages/provider-adapter-sdk/dist/src/tester.d.ts +71 -0
- package/packages/provider-adapter-sdk/dist/src/tester.js +392 -0
- package/packages/provider-adapter-sdk/dist/src/types.d.ts +182 -0
- package/packages/provider-adapter-sdk/dist/src/types.js +11 -0
- package/packages/provider-adapter-sdk/src/builder.ts +442 -0
- package/packages/provider-adapter-sdk/src/errors.ts +153 -0
- package/packages/provider-adapter-sdk/src/index.ts +84 -0
- package/packages/provider-adapter-sdk/src/registry.ts +486 -0
- package/packages/provider-adapter-sdk/src/tester.ts +483 -0
- package/packages/provider-adapter-sdk/src/types.ts +293 -0
- package/packages/provider-router/dist/capability-registry/src/types.d.ts +47 -0
- package/packages/provider-router/dist/capability-registry/src/types.js +10 -0
- package/packages/provider-router/dist/provider-router/src/index.d.ts +23 -0
- package/packages/provider-router/dist/provider-router/src/index.js +25 -0
- package/packages/provider-router/dist/provider-router/src/policy.d.ts +10 -0
- package/packages/provider-router/dist/provider-router/src/policy.js +45 -0
- package/packages/provider-router/dist/provider-router/src/provider-router.d.ts +56 -0
- package/packages/provider-router/dist/provider-router/src/provider-router.js +222 -0
- package/packages/provider-router/dist/provider-router/src/strategies.d.ts +19 -0
- package/packages/provider-router/dist/provider-router/src/strategies.js +110 -0
- package/packages/provider-router/dist/provider-router/src/types.d.ts +91 -0
- package/packages/provider-router/dist/provider-router/src/types.js +10 -0
- package/packages/provider-router/dist/src/index.d.ts +23 -0
- package/packages/provider-router/dist/src/index.js +25 -0
- package/packages/provider-router/dist/src/policy.d.ts +10 -0
- package/packages/provider-router/dist/src/policy.js +45 -0
- package/packages/provider-router/dist/src/provider-router.d.ts +56 -0
- package/packages/provider-router/dist/src/provider-router.js +222 -0
- package/packages/provider-router/dist/src/strategies.d.ts +19 -0
- package/packages/provider-router/dist/src/strategies.js +110 -0
- package/packages/provider-router/dist/src/types.d.ts +91 -0
- package/packages/provider-router/dist/src/types.js +10 -0
- package/packages/provider-router/dist/types/src/runtime-types.d.ts +412 -0
- package/packages/provider-router/dist/types/src/runtime-types.js +2 -0
- package/packages/provider-router/src/index.ts +49 -0
- package/packages/provider-router/src/policy.ts +50 -0
- package/packages/provider-router/src/provider-router.ts +315 -0
- package/packages/provider-router/src/strategies.ts +158 -0
- package/packages/provider-router/src/types.ts +130 -0
- package/packages/provider-selector/src/index.ts +13 -0
- package/packages/provider-selector/src/selector.ts +120 -0
- package/packages/provider-selector/src/types.ts +33 -0
- package/packages/providers/dist/src/adapters.d.ts +133 -0
- package/packages/providers/dist/src/adapters.js +236 -0
- package/packages/providers/dist/src/deepagents-adapter.d.ts +78 -0
- package/packages/providers/dist/src/deepagents-adapter.js +323 -0
- package/packages/providers/dist/src/glm-usage.d.ts +102 -0
- package/packages/providers/dist/src/glm-usage.js +197 -0
- package/packages/providers/dist/src/index.d.ts +11 -0
- package/packages/providers/dist/src/index.js +11 -0
- package/packages/providers/dist/src/openai-usage.d.ts +103 -0
- package/packages/providers/dist/src/openai-usage.js +208 -0
- package/packages/providers/dist/src/provider-id.d.ts +46 -0
- package/packages/providers/dist/src/provider-id.js +113 -0
- package/packages/providers/src/adapters.ts +362 -0
- package/packages/providers/src/deepagents-adapter.ts +458 -0
- package/packages/providers/src/glm-usage.ts +248 -0
- package/packages/providers/src/index.ts +11 -0
- package/packages/providers/src/openai-usage.ts +263 -0
- package/packages/providers/src/provider-id.ts +129 -0
- package/packages/quota-manager/dist/src/examples/tui-usage-integration.d.ts +35 -0
- package/packages/quota-manager/dist/src/examples/tui-usage-integration.js +73 -0
- package/packages/quota-manager/dist/src/index.d.ts +8 -0
- package/packages/quota-manager/dist/src/index.js +8 -0
- package/packages/quota-manager/dist/src/quota-manager.d.ts +70 -0
- package/packages/quota-manager/dist/src/quota-manager.js +260 -0
- package/packages/quota-manager/dist/src/tui-usage-monitor.d.ts +96 -0
- package/packages/quota-manager/dist/src/tui-usage-monitor.js +268 -0
- package/packages/quota-manager/src/examples/tui-usage-integration.ts +72 -0
- package/packages/quota-manager/src/index.ts +8 -0
- package/packages/quota-manager/src/quota-manager.ts +336 -0
- package/packages/quota-manager/src/tui-usage-monitor.ts +355 -0
- package/packages/rate-limiter/src/index.ts +6 -0
- package/packages/rate-limiter/src/limiter.ts +122 -0
- package/packages/rate-limiter/src/types.ts +41 -0
- package/packages/react-vite-plugin/src/analyzer.ts +226 -0
- package/packages/react-vite-plugin/src/index.ts +39 -0
- package/packages/react-vite-plugin/src/types.ts +28 -0
- package/packages/release-manager/src/changelog.ts +148 -0
- package/packages/release-manager/src/index.ts +21 -0
- package/packages/release-manager/src/types.ts +50 -0
- package/packages/release-manager/src/version.ts +52 -0
- package/packages/requirement-compiler/src/ambiguity-detector.ts +302 -0
- package/packages/requirement-compiler/src/classifier.ts +145 -0
- package/packages/requirement-compiler/src/compiler.ts +328 -0
- package/packages/requirement-compiler/src/extractor.ts +155 -0
- package/packages/requirement-compiler/src/index.ts +36 -0
- package/packages/requirement-compiler/src/normalizer.ts +161 -0
- package/packages/requirement-compiler/src/risk-detector.ts +58 -0
- package/packages/requirement-compiler/src/types.ts +596 -0
- package/packages/runtime/dist/src/command-executor.d.ts +129 -0
- package/packages/runtime/dist/src/command-executor.js +383 -0
- package/packages/runtime/dist/src/index.d.ts +11 -0
- package/packages/runtime/dist/src/index.js +11 -0
- package/packages/runtime/dist/src/local-runtime-agent.d.ts +111 -0
- package/packages/runtime/dist/src/local-runtime-agent.js +356 -0
- package/packages/runtime/dist/src/policy-engine.d.ts +203 -0
- package/packages/runtime/dist/src/policy-engine.js +592 -0
- package/packages/runtime/dist/src/runtime-api.d.ts +137 -0
- package/packages/runtime/dist/src/runtime-api.js +454 -0
- package/packages/runtime/dist/src/workspace-manager.d.ts +162 -0
- package/packages/runtime/dist/src/workspace-manager.js +451 -0
- package/packages/runtime/src/command-executor.ts +523 -0
- package/packages/runtime/src/index.ts +11 -0
- package/packages/runtime/src/local-runtime-agent.ts +480 -0
- package/packages/runtime/src/policy-engine.ts +813 -0
- package/packages/runtime/src/runtime-api.ts +665 -0
- package/packages/runtime/src/workspace-manager.ts +591 -0
- package/packages/scheduler/src/scheduler.ts +50 -0
- package/packages/scheduler-adapter/src/cron.ts +123 -0
- package/packages/scheduler-adapter/src/index.ts +9 -0
- package/packages/scheduler-adapter/src/interface.ts +61 -0
- package/packages/scheduler-adapter/src/internal.ts +99 -0
- package/packages/scheduler-adapter/src/systemd.ts +221 -0
- package/packages/session/src/history.ts +353 -0
- package/packages/session/src/index.ts +53 -0
- package/packages/session/src/manager.ts +481 -0
- package/packages/session/src/policy.ts +363 -0
- package/packages/session/src/store.ts +348 -0
- package/packages/session/src/types.ts +275 -0
- package/packages/session-api/dist/src/api.d.ts +83 -0
- package/packages/session-api/dist/src/api.js +49 -0
- package/packages/session-api/dist/src/index.d.ts +2 -0
- package/packages/session-api/dist/src/index.js +2 -0
- package/packages/session-api/dist/src/types.d.ts +22 -0
- package/packages/session-api/dist/src/types.js +5 -0
- package/packages/session-api/src/api.ts +117 -0
- package/packages/session-api/src/index.ts +1 -0
- package/packages/session-api/src/types.ts +23 -0
- package/packages/session-export/dist/src/exporter.d.ts +28 -0
- package/packages/session-export/dist/src/exporter.js +42 -0
- package/packages/session-export/dist/src/index.d.ts +2 -0
- package/packages/session-export/dist/src/index.js +2 -0
- package/packages/session-export/dist/src/types.d.ts +20 -0
- package/packages/session-export/dist/src/types.js +5 -0
- package/packages/session-export/src/exporter.ts +81 -0
- package/packages/session-export/src/index.ts +1 -0
- package/packages/session-export/src/types.ts +22 -0
- package/packages/shared-context/src/index.ts +7 -0
- package/packages/shared-context/src/shared-context.ts +42 -0
- package/packages/skill-registry/src/defaults.ts +146 -0
- package/packages/skill-registry/src/index.ts +48 -0
- package/packages/skill-registry/src/matching.ts +118 -0
- package/packages/skill-registry/src/registry.ts +211 -0
- package/packages/skill-registry/src/types.ts +97 -0
- package/packages/sprint-planner/src/decomposer.ts +57 -0
- package/packages/sprint-planner/src/index.ts +16 -0
- package/packages/sprint-planner/src/planner.ts +150 -0
- package/packages/sprint-planner/src/types.ts +59 -0
- package/packages/subscription-engine/dist/src/engine.d.ts +13 -0
- package/packages/subscription-engine/dist/src/engine.js +40 -0
- package/packages/subscription-engine/dist/src/index.d.ts +2 -0
- package/packages/subscription-engine/dist/src/index.js +2 -0
- package/packages/subscription-engine/dist/src/subscriptions.d.ts +19 -0
- package/packages/subscription-engine/dist/src/subscriptions.js +39 -0
- package/packages/subscription-engine/dist/src/types.d.ts +24 -0
- package/packages/subscription-engine/dist/src/types.js +5 -0
- package/packages/subscription-engine/src/engine.ts +55 -0
- package/packages/subscription-engine/src/index.ts +6 -0
- package/packages/subscription-engine/src/subscriptions.ts +55 -0
- package/packages/subscription-engine/src/types.ts +27 -0
- package/packages/task-compiler/src/command-policy.ts +193 -0
- package/packages/task-compiler/src/compiler.ts +114 -0
- package/packages/task-compiler/src/decompose.ts +265 -0
- package/packages/task-compiler/src/file-scope.ts +240 -0
- package/packages/task-compiler/src/graph.ts +144 -0
- package/packages/task-compiler/src/index.ts +38 -0
- package/packages/task-compiler/src/types.ts +225 -0
- package/packages/task-compiler/src/validate.ts +218 -0
- package/packages/task-compiler/src/verification.ts +248 -0
- package/packages/tencentdb-memory/src/client.ts +130 -0
- package/packages/tencentdb-memory/src/index.ts +32 -0
- package/packages/tencentdb-memory/src/loader.ts +150 -0
- package/packages/tencentdb-memory/src/mcp-tools.ts +213 -0
- package/packages/tencentdb-memory/src/types.ts +101 -0
- package/packages/tencentdb-sync/src/cli.ts +363 -0
- package/packages/tencentdb-sync/src/client.ts +268 -0
- package/packages/tencentdb-sync/src/config.ts +139 -0
- package/packages/tencentdb-sync/src/index.ts +15 -0
- package/packages/test-data-generator/src/faker-adapter.ts +657 -0
- package/packages/test-data-generator/src/generator.ts +461 -0
- package/packages/test-data-generator/src/index.ts +48 -0
- package/packages/test-data-generator/src/types.ts +421 -0
- package/packages/test-generator/src/generator.ts +144 -0
- package/packages/test-generator/src/index.ts +11 -0
- package/packages/test-generator/src/types.ts +39 -0
- package/packages/todo-bd-sync/src/detector.ts +171 -0
- package/packages/todo-bd-sync/src/extension.ts +129 -0
- package/packages/todo-bd-sync/src/index.ts +401 -0
- package/packages/todo-bd-sync/src/sync.ts +322 -0
- package/packages/todo-bd-sync/src/task-analyzer.ts +314 -0
- package/packages/todo-bd-sync/src/todo-reminder.ts +418 -0
- package/packages/todo-bd-sync/src/types.ts +137 -0
- package/packages/token-estimation/src/index.ts +192 -0
- package/packages/token-optimizer/src/index.ts +15 -0
- package/packages/token-optimizer/src/optimizer.ts +150 -0
- package/packages/token-optimizer/src/types.ts +47 -0
- package/packages/types/src/agent-worker-types.d.ts +206 -0
- package/packages/types/src/agent-worker-types.js +41 -0
- package/packages/types/src/agent-worker-types.ts +264 -0
- package/packages/types/src/ai-providers.d.ts +36 -0
- package/packages/types/src/ai-providers.js +66 -0
- package/packages/types/src/ai-providers.ts +73 -0
- package/packages/types/src/runtime-types.d.ts +418 -0
- package/packages/types/src/runtime-types.js +3 -0
- package/packages/types/src/runtime-types.ts +588 -0
- package/packages/workflow-events/dist/src/events.d.ts +38 -0
- package/packages/workflow-events/dist/src/events.js +55 -0
- package/packages/workflow-events/dist/src/index.d.ts +2 -0
- package/packages/workflow-events/dist/src/index.js +2 -0
- package/packages/workflow-events/dist/src/pipeline.d.ts +21 -0
- package/packages/workflow-events/dist/src/pipeline.js +36 -0
- package/packages/workflow-events/dist/src/types.d.ts +110 -0
- package/packages/workflow-events/dist/src/types.js +5 -0
- package/packages/workflow-events/src/events.ts +86 -0
- package/packages/workflow-events/src/index.ts +19 -0
- package/packages/workflow-events/src/pipeline.ts +41 -0
- package/packages/workflow-events/src/types.d.ts +110 -0
- package/packages/workflow-events/src/types.js +5 -0
- package/packages/workflow-events/src/types.ts +139 -0
- package/packages/workspace-scanner/dist/src/detect.d.ts +3 -0
- package/packages/workspace-scanner/dist/src/detect.js +60 -0
- package/packages/workspace-scanner/dist/src/git.d.ts +7 -0
- package/packages/workspace-scanner/dist/src/git.js +75 -0
- package/packages/workspace-scanner/dist/src/index.d.ts +5 -0
- package/packages/workspace-scanner/dist/src/index.js +4 -0
- package/packages/workspace-scanner/dist/src/scanner.d.ts +11 -0
- package/packages/workspace-scanner/dist/src/scanner.js +59 -0
- package/packages/workspace-scanner/dist/src/types.d.ts +35 -0
- package/packages/workspace-scanner/dist/src/types.js +5 -0
- package/packages/workspace-scanner/src/detect.ts +77 -0
- package/packages/workspace-scanner/src/git.ts +83 -0
- package/packages/workspace-scanner/src/index.ts +9 -0
- package/packages/workspace-scanner/src/scanner.ts +73 -0
- package/packages/workspace-scanner/src/types.ts +48 -0
- package/packages/worktree/dist/src/index.d.ts +7 -0
- package/packages/worktree/dist/src/index.js +7 -0
- package/packages/worktree/dist/src/worktree.d.ts +88 -0
- package/packages/worktree/dist/src/worktree.js +239 -0
- package/packages/worktree/src/index.ts +7 -0
- package/packages/worktree/src/worktree.ts +290 -0
- package/packages/write-review/src/blackboard.ts +249 -0
- package/packages/write-review/src/gate.ts +169 -0
- package/packages/write-review/src/index.ts +18 -0
- package/packages/write-review/src/injection.ts +170 -0
- package/packages/write-review/src/review.ts +206 -0
- package/packages/write-review/src/trigger.ts +133 -0
- package/packages/write-review/src/types.ts +90 -0
- package/proactive-compact.ts +90 -0
- package/prompts/tencentdb-connect.md +35 -0
- package/prompts/tencentdb-setup.md +101 -0
- package/prompts/tencentdb.md +88 -0
- package/renderer.ts +205 -0
- package/skills/harness-runtime/SKILL.md +237 -0
- package/status-parsers.ts +84 -0
- package/tracker.ts +72 -0
- package/windows.ts +121 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeepAgents Adapter — RFC-0029
|
|
3
|
+
*
|
|
4
|
+
* Implements the AgentWorker interface for DeepAgents.
|
|
5
|
+
* DeepAgents is an optional Agent Worker; Runtime remains the orchestrator.
|
|
6
|
+
*
|
|
7
|
+
* @module deepagents-adapter
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* DeepAgents Adapter
|
|
11
|
+
*
|
|
12
|
+
* Connects the harness runtime to a DeepAgents worker.
|
|
13
|
+
* Runtime orchestrates; DeepAgents executes tasks.
|
|
14
|
+
*/
|
|
15
|
+
export class DeepAgentsAdapter {
|
|
16
|
+
id;
|
|
17
|
+
provider = "deepagents";
|
|
18
|
+
config = null;
|
|
19
|
+
_status = "idle";
|
|
20
|
+
abortController = null;
|
|
21
|
+
currentTaskId = null;
|
|
22
|
+
constructor(id) {
|
|
23
|
+
this.id = id;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Initialize the DeepAgents adapter
|
|
27
|
+
*/
|
|
28
|
+
async initialize(config) {
|
|
29
|
+
if (config.provider !== "deepagents") {
|
|
30
|
+
throw new Error(`Invalid provider: ${config.provider}. Expected "deepagents".`);
|
|
31
|
+
}
|
|
32
|
+
this.config = config;
|
|
33
|
+
this._status = "initializing";
|
|
34
|
+
// Validate configuration
|
|
35
|
+
if (!this.config.endpoint) {
|
|
36
|
+
throw new Error("DeepAgents endpoint is required");
|
|
37
|
+
}
|
|
38
|
+
// Test connection to DeepAgents server
|
|
39
|
+
try {
|
|
40
|
+
await this.health();
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this._status = "error";
|
|
44
|
+
throw new Error(`Failed to connect to DeepAgents at ${this.config.endpoint}: ${error instanceof Error ? error.message : String(error)}`);
|
|
45
|
+
}
|
|
46
|
+
this._status = "idle";
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Execute a task using DeepAgents
|
|
50
|
+
*/
|
|
51
|
+
async execute(request, events) {
|
|
52
|
+
if (!this.config) {
|
|
53
|
+
throw new Error("Agent not initialized. Call initialize() first.");
|
|
54
|
+
}
|
|
55
|
+
if (this._status === "stopped") {
|
|
56
|
+
throw new Error("Agent has been stopped");
|
|
57
|
+
}
|
|
58
|
+
const startTime = Date.now();
|
|
59
|
+
this._status = "running";
|
|
60
|
+
this.currentTaskId = request.task.id;
|
|
61
|
+
this.abortController = new AbortController();
|
|
62
|
+
// Emit status change
|
|
63
|
+
events?.onStatusChange?.("running");
|
|
64
|
+
try {
|
|
65
|
+
// Report planning phase
|
|
66
|
+
const planningProgress = {
|
|
67
|
+
taskId: request.task.id,
|
|
68
|
+
phase: "planning",
|
|
69
|
+
message: `Planning task: ${request.task.title}`,
|
|
70
|
+
percentComplete: 10,
|
|
71
|
+
timestamp: new Date().toISOString(),
|
|
72
|
+
};
|
|
73
|
+
events?.onProgress?.(request.task.id, planningProgress);
|
|
74
|
+
// Build DeepAgents request
|
|
75
|
+
const deepAgentsRequest = this.buildDeepAgentsRequest(request);
|
|
76
|
+
// Report executing phase
|
|
77
|
+
const executingProgress = {
|
|
78
|
+
taskId: request.task.id,
|
|
79
|
+
phase: "executing",
|
|
80
|
+
message: `Executing task: ${request.task.title}`,
|
|
81
|
+
percentComplete: 30,
|
|
82
|
+
timestamp: new Date().toISOString(),
|
|
83
|
+
};
|
|
84
|
+
events?.onProgress?.(request.task.id, executingProgress);
|
|
85
|
+
// Execute via DeepAgents
|
|
86
|
+
const response = await this.callDeepAgents(deepAgentsRequest);
|
|
87
|
+
// Report reviewing phase
|
|
88
|
+
const reviewingProgress = {
|
|
89
|
+
taskId: request.task.id,
|
|
90
|
+
phase: "reviewing",
|
|
91
|
+
message: "Reviewing results",
|
|
92
|
+
percentComplete: 80,
|
|
93
|
+
timestamp: new Date().toISOString(),
|
|
94
|
+
};
|
|
95
|
+
events?.onProgress?.(request.task.id, reviewingProgress);
|
|
96
|
+
// Parse response and build result
|
|
97
|
+
const result = this.parseDeepAgentsResponse(request.task, response, startTime);
|
|
98
|
+
// Report finalizing phase
|
|
99
|
+
const finalizingProgress = {
|
|
100
|
+
taskId: request.task.id,
|
|
101
|
+
phase: "finalizing",
|
|
102
|
+
message: "Finalizing task",
|
|
103
|
+
percentComplete: 100,
|
|
104
|
+
timestamp: new Date().toISOString(),
|
|
105
|
+
};
|
|
106
|
+
events?.onProgress?.(request.task.id, finalizingProgress);
|
|
107
|
+
// Emit completion
|
|
108
|
+
events?.onTaskComplete?.(result);
|
|
109
|
+
this._status = "idle";
|
|
110
|
+
this.currentTaskId = null;
|
|
111
|
+
events?.onStatusChange?.("idle");
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
this._status = "error";
|
|
116
|
+
this.currentTaskId = null;
|
|
117
|
+
events?.onStatusChange?.("error");
|
|
118
|
+
const taskError = error instanceof Error ? error : new Error(String(error));
|
|
119
|
+
events?.onError?.(request.task.id, taskError);
|
|
120
|
+
// Return failure result
|
|
121
|
+
return {
|
|
122
|
+
taskId: request.task.id,
|
|
123
|
+
status: "failure",
|
|
124
|
+
summary: `Task failed: ${taskError.message}`,
|
|
125
|
+
error: taskError.message,
|
|
126
|
+
durationMs: Date.now() - startTime,
|
|
127
|
+
completedAt: new Date().toISOString(),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Check health of DeepAgents connection
|
|
133
|
+
*/
|
|
134
|
+
async health() {
|
|
135
|
+
if (!this.config) {
|
|
136
|
+
return {
|
|
137
|
+
healthy: false,
|
|
138
|
+
status: this._status,
|
|
139
|
+
load: 0,
|
|
140
|
+
activeTasks: 0,
|
|
141
|
+
queueDepth: 0,
|
|
142
|
+
checkedAt: new Date().toISOString(),
|
|
143
|
+
error: "Not initialized",
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
const controller = new AbortController();
|
|
148
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
149
|
+
const response = await fetch(`${this.config.endpoint}/health`, {
|
|
150
|
+
method: "GET",
|
|
151
|
+
headers: {
|
|
152
|
+
"Content-Type": "application/json",
|
|
153
|
+
...(this.config.apiKey && {
|
|
154
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
155
|
+
}),
|
|
156
|
+
},
|
|
157
|
+
signal: controller.signal,
|
|
158
|
+
});
|
|
159
|
+
clearTimeout(timeout);
|
|
160
|
+
if (!response.ok) {
|
|
161
|
+
return {
|
|
162
|
+
healthy: false,
|
|
163
|
+
status: this._status,
|
|
164
|
+
load: this.currentTaskId ? 1 : 0,
|
|
165
|
+
activeTasks: this.currentTaskId ? 1 : 0,
|
|
166
|
+
queueDepth: 0,
|
|
167
|
+
checkedAt: new Date().toISOString(),
|
|
168
|
+
error: `Health check failed: ${response.status}`,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const data = (await response.json());
|
|
172
|
+
return {
|
|
173
|
+
healthy: true,
|
|
174
|
+
status: this._status,
|
|
175
|
+
load: data.load ?? 0,
|
|
176
|
+
activeTasks: data.activeTasks ?? (this.currentTaskId ? 1 : 0),
|
|
177
|
+
queueDepth: data.queueDepth ?? 0,
|
|
178
|
+
checkedAt: new Date().toISOString(),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
return {
|
|
183
|
+
healthy: false,
|
|
184
|
+
status: this._status,
|
|
185
|
+
load: this.currentTaskId ? 1 : 0,
|
|
186
|
+
activeTasks: this.currentTaskId ? 1 : 0,
|
|
187
|
+
queueDepth: 0,
|
|
188
|
+
checkedAt: new Date().toISOString(),
|
|
189
|
+
error: error instanceof Error ? error.message : "Health check failed",
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get current status
|
|
195
|
+
*/
|
|
196
|
+
status() {
|
|
197
|
+
return this._status;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Pause the agent
|
|
201
|
+
*/
|
|
202
|
+
async pause() {
|
|
203
|
+
if (this._status === "running" && this.abortController) {
|
|
204
|
+
this.abortController.abort();
|
|
205
|
+
}
|
|
206
|
+
this._status = "paused";
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Resume the agent
|
|
210
|
+
*/
|
|
211
|
+
async resume() {
|
|
212
|
+
if (this._status === "paused") {
|
|
213
|
+
this._status = "idle";
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Stop the agent
|
|
218
|
+
*/
|
|
219
|
+
async stop() {
|
|
220
|
+
if (this.abortController) {
|
|
221
|
+
this.abortController.abort();
|
|
222
|
+
}
|
|
223
|
+
this._status = "stopped";
|
|
224
|
+
this.currentTaskId = null;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Check if a model is supported
|
|
228
|
+
*/
|
|
229
|
+
supportsModel(model) {
|
|
230
|
+
const supported = this.config?.supportedModels ?? ["deepagents/default"];
|
|
231
|
+
return supported.some((m) => m.toLowerCase() === model.toLowerCase() || m === "*");
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Get supported models
|
|
235
|
+
*/
|
|
236
|
+
getSupportedModels() {
|
|
237
|
+
return this.config?.supportedModels ?? ["deepagents/default"];
|
|
238
|
+
}
|
|
239
|
+
// --- Private Methods ------------------------------------------------
|
|
240
|
+
/**
|
|
241
|
+
* Build a DeepAgents API request from a task request
|
|
242
|
+
*/
|
|
243
|
+
buildDeepAgentsRequest(request) {
|
|
244
|
+
const deepRequest = {
|
|
245
|
+
task: {
|
|
246
|
+
id: request.task.id,
|
|
247
|
+
title: request.task.title,
|
|
248
|
+
description: request.task.description,
|
|
249
|
+
acceptanceCriteria: request.task.acceptanceCriteria,
|
|
250
|
+
},
|
|
251
|
+
workingDir: request.workingDir,
|
|
252
|
+
context: request.context,
|
|
253
|
+
config: request.config,
|
|
254
|
+
};
|
|
255
|
+
return deepRequest;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Call the DeepAgents API
|
|
259
|
+
*/
|
|
260
|
+
async callDeepAgents(request) {
|
|
261
|
+
if (!this.config) {
|
|
262
|
+
throw new Error("Not initialized");
|
|
263
|
+
}
|
|
264
|
+
const controller = this.abortController ?? new AbortController();
|
|
265
|
+
const timeout = setTimeout(() => controller.abort(), this.config.timeoutMs ?? 300000);
|
|
266
|
+
try {
|
|
267
|
+
const response = await fetch(`${this.config.endpoint}/tasks/execute`, {
|
|
268
|
+
method: "POST",
|
|
269
|
+
headers: {
|
|
270
|
+
"Content-Type": "application/json",
|
|
271
|
+
...(this.config.apiKey && {
|
|
272
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
273
|
+
}),
|
|
274
|
+
},
|
|
275
|
+
body: JSON.stringify(request),
|
|
276
|
+
signal: controller.signal,
|
|
277
|
+
});
|
|
278
|
+
clearTimeout(timeout);
|
|
279
|
+
if (!response.ok) {
|
|
280
|
+
const errorBody = await response.text().catch(() => "");
|
|
281
|
+
throw new Error(`DeepAgents API error: ${response.status} ${response.statusText} - ${errorBody}`);
|
|
282
|
+
}
|
|
283
|
+
const result = (await response.json());
|
|
284
|
+
return result;
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
clearTimeout(timeout);
|
|
288
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
289
|
+
throw new Error("Task was cancelled");
|
|
290
|
+
}
|
|
291
|
+
throw error;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Parse DeepAgents response into TaskResult
|
|
296
|
+
*/
|
|
297
|
+
parseDeepAgentsResponse(task, response, startTime) {
|
|
298
|
+
const status = response.status;
|
|
299
|
+
const durationMs = Date.now() - startTime;
|
|
300
|
+
const result = {
|
|
301
|
+
taskId: task.id,
|
|
302
|
+
status,
|
|
303
|
+
summary: response.summary,
|
|
304
|
+
filesChanged: response.filesChanged,
|
|
305
|
+
output: response.output,
|
|
306
|
+
error: response.error,
|
|
307
|
+
usage: response.usage,
|
|
308
|
+
durationMs,
|
|
309
|
+
completedAt: new Date().toISOString(),
|
|
310
|
+
metadata: response.metadata,
|
|
311
|
+
};
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Factory function to create a DeepAgentsAdapter
|
|
317
|
+
* Matches AgentWorkerFactory signature from RFC-0030
|
|
318
|
+
*/
|
|
319
|
+
export function createDeepAgentsAdapter(config) {
|
|
320
|
+
const adapter = new DeepAgentsAdapter(config.id ?? `deepagents-${Date.now()}`);
|
|
321
|
+
return adapter;
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=deepagents-adapter.js.map
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GLM (Zhipu AI) Usage Fetcher — TUI Integration
|
|
3
|
+
*
|
|
4
|
+
* GLM reports quota exhaustion directly via TUI in pi.dev.
|
|
5
|
+
* When tokens run out or context window is full, pi shows:
|
|
6
|
+
* - Exact reset time
|
|
7
|
+
* - Which limit was hit
|
|
8
|
+
*
|
|
9
|
+
* This module hooks into TUI messages to capture quota signals.
|
|
10
|
+
*/
|
|
11
|
+
import { EventEmitter } from "node:events";
|
|
12
|
+
export interface GLMUsageData {
|
|
13
|
+
provider: "glm";
|
|
14
|
+
timestamp: string;
|
|
15
|
+
/** Usage percentage (0-100), if available */
|
|
16
|
+
usedPct?: number;
|
|
17
|
+
/** Remaining percentage (0-100) */
|
|
18
|
+
remainingPct: number;
|
|
19
|
+
/** If exhausted */
|
|
20
|
+
exhausted: boolean;
|
|
21
|
+
/** Reset time */
|
|
22
|
+
resetsAt: string;
|
|
23
|
+
/** Which limit was hit */
|
|
24
|
+
limitType: "tokens" | "context_window" | "rate_limit" | "unknown";
|
|
25
|
+
/** Original message from TUI */
|
|
26
|
+
originalMessage: string;
|
|
27
|
+
}
|
|
28
|
+
export interface GLMUsageConfig {
|
|
29
|
+
/** Called when GLM quota signal is detected from TUI */
|
|
30
|
+
onQuotaSignal?: (data: GLMUsageData) => void;
|
|
31
|
+
}
|
|
32
|
+
export declare class GLMUsageProvider extends EventEmitter {
|
|
33
|
+
private lastUsageData;
|
|
34
|
+
private onQuotaSignal?;
|
|
35
|
+
constructor(config?: GLMUsageConfig);
|
|
36
|
+
/**
|
|
37
|
+
* Check if auto-fetch is possible via TUI
|
|
38
|
+
* GLM reports quota via TUI, so this is always true when hooked
|
|
39
|
+
*/
|
|
40
|
+
supportsAutoFetch(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Process a TUI message and extract GLM quota data
|
|
43
|
+
* Call this when receiving error/status messages from pi
|
|
44
|
+
*/
|
|
45
|
+
processTUIMessage(message: string): GLMUsageData | null;
|
|
46
|
+
/**
|
|
47
|
+
* Parse reset time from message
|
|
48
|
+
*/
|
|
49
|
+
private parseResetTime;
|
|
50
|
+
/**
|
|
51
|
+
* Parse the GLM quota message
|
|
52
|
+
*/
|
|
53
|
+
private parseGLMQuotaMessage;
|
|
54
|
+
/**
|
|
55
|
+
* Get the last captured usage data
|
|
56
|
+
*/
|
|
57
|
+
getLastUsage(): GLMUsageData | null;
|
|
58
|
+
/**
|
|
59
|
+
* Clear stored usage data
|
|
60
|
+
*/
|
|
61
|
+
clear(): void;
|
|
62
|
+
/**
|
|
63
|
+
* For QuotaManager integration
|
|
64
|
+
* Returns current state (from last TUI message)
|
|
65
|
+
*/
|
|
66
|
+
getUsage(): Promise<GLMUsageData>;
|
|
67
|
+
/**
|
|
68
|
+
* Get usage as percentage
|
|
69
|
+
*/
|
|
70
|
+
getUsagePercent(): Promise<number>;
|
|
71
|
+
/**
|
|
72
|
+
* Check if quota is exhausted
|
|
73
|
+
*/
|
|
74
|
+
isExhausted(): Promise<boolean>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Integration helper: Hook GLM usage provider into pi extension
|
|
78
|
+
*
|
|
79
|
+
* Usage:
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const glmUsage = new GLMUsageProvider({
|
|
82
|
+
* onQuotaSignal: (data) => {
|
|
83
|
+
* quotaManager.recordSignal({
|
|
84
|
+
* provider: "glm",
|
|
85
|
+
* source: "tui_message",
|
|
86
|
+
* windowType: data.limitType === "context_window" ? "daily" : "5h",
|
|
87
|
+
* exhausted: data.exhausted,
|
|
88
|
+
* resetsAt: data.resetsAt,
|
|
89
|
+
* });
|
|
90
|
+
* }
|
|
91
|
+
* });
|
|
92
|
+
*
|
|
93
|
+
* pi.on("error", (event) => {
|
|
94
|
+
* glmUsage.processTUIMessage(event.message);
|
|
95
|
+
* });
|
|
96
|
+
*
|
|
97
|
+
* pi.on("message", (event) => {
|
|
98
|
+
* glmUsage.processTUIMessage(event.message);
|
|
99
|
+
* });
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
//# sourceMappingURL=glm-usage.d.ts.map
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GLM (Zhipu AI) Usage Fetcher — TUI Integration
|
|
3
|
+
*
|
|
4
|
+
* GLM reports quota exhaustion directly via TUI in pi.dev.
|
|
5
|
+
* When tokens run out or context window is full, pi shows:
|
|
6
|
+
* - Exact reset time
|
|
7
|
+
* - Which limit was hit
|
|
8
|
+
*
|
|
9
|
+
* This module hooks into TUI messages to capture quota signals.
|
|
10
|
+
*/
|
|
11
|
+
import { EventEmitter } from "node:events";
|
|
12
|
+
/**
|
|
13
|
+
* GLM quota message patterns from TUI
|
|
14
|
+
* These patterns match the messages pi displays when GLM hits limits
|
|
15
|
+
*/
|
|
16
|
+
const GLM_QUOTA_PATTERNS = [
|
|
17
|
+
// Context window full
|
|
18
|
+
{
|
|
19
|
+
pattern: /GLM.*context.*(?:window|length).*(?:full|exceeded|limit)/i,
|
|
20
|
+
limitType: "context_window",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
pattern: /tokens.*(?:exhausted|limit|ran out|remaining).*(\d+)h?\s*(\d+)m/i,
|
|
24
|
+
limitType: "tokens",
|
|
25
|
+
},
|
|
26
|
+
// Reset time patterns
|
|
27
|
+
{
|
|
28
|
+
pattern: /GLM.*reset.*(?:at|in).*(\d{1,2}):(\d{2})/i,
|
|
29
|
+
limitType: "unknown",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
pattern: /GLM.*(?:quota|limit|exhausted|rate.?limit)/i,
|
|
33
|
+
limitType: "tokens",
|
|
34
|
+
},
|
|
35
|
+
// OpenRouter GLM via OpenRouter
|
|
36
|
+
{
|
|
37
|
+
pattern: /ZhipuAI|GLM.*(?:exhausted|limit|quota)/i,
|
|
38
|
+
limitType: "tokens",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
const RESET_TIME_PATTERNS = [
|
|
42
|
+
/reset(?:s)?\s+(?:at|in)\s+(\d{1,2}):(\d{2})/i,
|
|
43
|
+
/(?:at|in)\s+(\d{1,2}):(\d{2})/i,
|
|
44
|
+
/retry\s+after\s+(\d{1,2}):(\d{2})/i,
|
|
45
|
+
];
|
|
46
|
+
export class GLMUsageProvider extends EventEmitter {
|
|
47
|
+
lastUsageData = null;
|
|
48
|
+
onQuotaSignal;
|
|
49
|
+
constructor(config = {}) {
|
|
50
|
+
super();
|
|
51
|
+
this.onQuotaSignal = config.onQuotaSignal;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if auto-fetch is possible via TUI
|
|
55
|
+
* GLM reports quota via TUI, so this is always true when hooked
|
|
56
|
+
*/
|
|
57
|
+
supportsAutoFetch() {
|
|
58
|
+
return true; // TUI integration is always available
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Process a TUI message and extract GLM quota data
|
|
62
|
+
* Call this when receiving error/status messages from pi
|
|
63
|
+
*/
|
|
64
|
+
processTUIMessage(message) {
|
|
65
|
+
// Check if this is a GLM quota message
|
|
66
|
+
for (const { pattern, limitType } of GLM_QUOTA_PATTERNS) {
|
|
67
|
+
if (pattern.test(message)) {
|
|
68
|
+
const usageData = this.parseGLMQuotaMessage(message, limitType);
|
|
69
|
+
if (usageData) {
|
|
70
|
+
this.lastUsageData = usageData;
|
|
71
|
+
// Emit event
|
|
72
|
+
this.emit("quota", usageData);
|
|
73
|
+
// Call callback if set
|
|
74
|
+
this.onQuotaSignal?.(usageData);
|
|
75
|
+
return usageData;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Parse reset time from message
|
|
83
|
+
*/
|
|
84
|
+
parseResetTime(message) {
|
|
85
|
+
for (const pattern of RESET_TIME_PATTERNS) {
|
|
86
|
+
const match = message.match(pattern);
|
|
87
|
+
if (match) {
|
|
88
|
+
const hour = parseInt(match[1], 10);
|
|
89
|
+
const minute = parseInt(match[2], 10);
|
|
90
|
+
// Convert to ISO string for today or tomorrow
|
|
91
|
+
const now = new Date();
|
|
92
|
+
const resetTime = new Date(now);
|
|
93
|
+
resetTime.setHours(hour, minute, 0, 0);
|
|
94
|
+
// If time has passed today, assume tomorrow
|
|
95
|
+
if (resetTime <= now) {
|
|
96
|
+
resetTime.setDate(resetTime.getDate() + 1);
|
|
97
|
+
}
|
|
98
|
+
return resetTime.toISOString();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Parse the GLM quota message
|
|
105
|
+
*/
|
|
106
|
+
parseGLMQuotaMessage(message, limitType) {
|
|
107
|
+
const resetsAt = this.parseResetTime(message) ??
|
|
108
|
+
new Date(Date.now() + 60 * 60 * 1000).toISOString();
|
|
109
|
+
// Try to extract percentage if present
|
|
110
|
+
let usedPct;
|
|
111
|
+
const pctMatch = message.match(/(\d+)%/);
|
|
112
|
+
if (pctMatch) {
|
|
113
|
+
usedPct = parseInt(pctMatch[1], 10);
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
provider: "glm",
|
|
117
|
+
timestamp: new Date().toISOString(),
|
|
118
|
+
usedPct,
|
|
119
|
+
remainingPct: usedPct !== undefined ? 100 - usedPct : 0,
|
|
120
|
+
exhausted: true,
|
|
121
|
+
resetsAt,
|
|
122
|
+
limitType,
|
|
123
|
+
originalMessage: message,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get the last captured usage data
|
|
128
|
+
*/
|
|
129
|
+
getLastUsage() {
|
|
130
|
+
return this.lastUsageData;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Clear stored usage data
|
|
134
|
+
*/
|
|
135
|
+
clear() {
|
|
136
|
+
this.lastUsageData = null;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* For QuotaManager integration
|
|
140
|
+
* Returns current state (from last TUI message)
|
|
141
|
+
*/
|
|
142
|
+
async getUsage() {
|
|
143
|
+
if (!this.lastUsageData) {
|
|
144
|
+
return {
|
|
145
|
+
provider: "glm",
|
|
146
|
+
timestamp: new Date().toISOString(),
|
|
147
|
+
remainingPct: 100,
|
|
148
|
+
exhausted: false,
|
|
149
|
+
resetsAt: "",
|
|
150
|
+
limitType: "unknown",
|
|
151
|
+
originalMessage: "",
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return this.lastUsageData;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get usage as percentage
|
|
158
|
+
*/
|
|
159
|
+
async getUsagePercent() {
|
|
160
|
+
const usage = await this.getUsage();
|
|
161
|
+
return usage.usedPct ?? 100 - usage.remainingPct;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if quota is exhausted
|
|
165
|
+
*/
|
|
166
|
+
async isExhausted() {
|
|
167
|
+
const usage = await this.getUsage();
|
|
168
|
+
return usage.exhausted;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Integration helper: Hook GLM usage provider into pi extension
|
|
173
|
+
*
|
|
174
|
+
* Usage:
|
|
175
|
+
* ```typescript
|
|
176
|
+
* const glmUsage = new GLMUsageProvider({
|
|
177
|
+
* onQuotaSignal: (data) => {
|
|
178
|
+
* quotaManager.recordSignal({
|
|
179
|
+
* provider: "glm",
|
|
180
|
+
* source: "tui_message",
|
|
181
|
+
* windowType: data.limitType === "context_window" ? "daily" : "5h",
|
|
182
|
+
* exhausted: data.exhausted,
|
|
183
|
+
* resetsAt: data.resetsAt,
|
|
184
|
+
* });
|
|
185
|
+
* }
|
|
186
|
+
* });
|
|
187
|
+
*
|
|
188
|
+
* pi.on("error", (event) => {
|
|
189
|
+
* glmUsage.processTUIMessage(event.message);
|
|
190
|
+
* });
|
|
191
|
+
*
|
|
192
|
+
* pi.on("message", (event) => {
|
|
193
|
+
* glmUsage.processTUIMessage(event.message);
|
|
194
|
+
* });
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
//# sourceMappingURL=glm-usage.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Adapters (RFC-0027)
|
|
3
|
+
*
|
|
4
|
+
* Multi-provider adapter system.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./adapters.js";
|
|
7
|
+
export * from "./deepagents-adapter.js";
|
|
8
|
+
export * from "./glm-usage.js";
|
|
9
|
+
export * from "./openai-usage.js";
|
|
10
|
+
export * from "./provider-id.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Adapters (RFC-0027)
|
|
3
|
+
*
|
|
4
|
+
* Multi-provider adapter system.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./adapters.js";
|
|
7
|
+
export * from "./deepagents-adapter.js";
|
|
8
|
+
export * from "./glm-usage.js";
|
|
9
|
+
export * from "./openai-usage.js";
|
|
10
|
+
export * from "./provider-id.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|