kynjal-cli 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/appliance/gguf-engine.d.ts +91 -0
- package/dist/src/appliance/gguf-engine.d.ts.map +1 -0
- package/dist/src/appliance/gguf-engine.js +286 -525
- package/dist/src/appliance/gguf-engine.js.map +1 -1
- package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
- package/dist/src/appliance/ruvllm-bridge.d.ts.map +1 -0
- package/dist/src/appliance/ruvllm-bridge.js +203 -403
- package/dist/src/appliance/ruvllm-bridge.js.map +1 -1
- package/dist/src/appliance/rvfa-builder.d.ts +44 -0
- package/dist/src/appliance/rvfa-builder.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-builder.js +154 -208
- package/dist/src/appliance/rvfa-builder.js.map +1 -1
- package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
- package/dist/src/appliance/rvfa-distribution.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-distribution.js +260 -423
- package/dist/src/appliance/rvfa-distribution.js.map +1 -1
- package/dist/src/appliance/rvfa-format.d.ts +111 -0
- package/dist/src/appliance/rvfa-format.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-format.js +128 -200
- package/dist/src/appliance/rvfa-format.js.map +1 -1
- package/dist/src/appliance/rvfa-runner.d.ts +69 -0
- package/dist/src/appliance/rvfa-runner.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-runner.js +168 -304
- package/dist/src/appliance/rvfa-runner.js.map +1 -1
- package/dist/src/appliance/rvfa-signing.d.ts +123 -0
- package/dist/src/appliance/rvfa-signing.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-signing.js +173 -295
- package/dist/src/appliance/rvfa-signing.js.map +1 -1
- package/dist/src/benchmarks/pretrain/index.d.ts +58 -0
- package/dist/src/benchmarks/pretrain/index.d.ts.map +1 -0
- package/dist/src/benchmarks/pretrain/index.js +331 -542
- package/dist/src/benchmarks/pretrain/index.js.map +1 -1
- package/dist/src/commands/agent.js +574 -697
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze.js +1218 -1548
- package/dist/src/commands/analyze.js.map +1 -1
- package/dist/src/commands/appliance-advanced.js +158 -267
- package/dist/src/commands/appliance-advanced.js.map +1 -1
- package/dist/src/commands/appliance.js +318 -493
- package/dist/src/commands/appliance.js.map +1 -1
- package/dist/src/commands/benchmark.js +372 -523
- package/dist/src/commands/benchmark.js.map +1 -1
- package/dist/src/commands/claims.js +274 -364
- package/dist/src/commands/claims.js.map +1 -1
- package/dist/src/commands/cleanup.js +113 -157
- package/dist/src/commands/cleanup.js.map +1 -1
- package/dist/src/commands/completions.js +477 -118
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/config.js +237 -303
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/daemon.js +487 -596
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/deployment.js +194 -275
- package/dist/src/commands/deployment.js.map +1 -1
- package/dist/src/commands/doctor.js +504 -686
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.js +1293 -1543
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/guidance.js +449 -596
- package/dist/src/commands/guidance.js.map +1 -1
- package/dist/src/commands/hive-mind.js +854 -938
- package/dist/src/commands/hive-mind.js.map +1 -1
- package/dist/src/commands/hooks.js +3112 -3519
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +115 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/index.js +126 -308
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.js +788 -940
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/issues.js +383 -558
- package/dist/src/commands/issues.js.map +1 -1
- package/dist/src/commands/mcp.js +493 -605
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory.js +833 -1026
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/migrate.js +282 -347
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/neural.js +1289 -1563
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/performance.js +497 -643
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/plugins.js +668 -841
- package/dist/src/commands/plugins.js.map +1 -1
- package/dist/src/commands/process.js +392 -447
- package/dist/src/commands/process.js.map +1 -1
- package/dist/src/commands/progress.js +162 -256
- package/dist/src/commands/progress.js.map +1 -1
- package/dist/src/commands/providers.js +150 -220
- package/dist/src/commands/providers.js.map +1 -1
- package/dist/src/commands/route.js +520 -665
- package/dist/src/commands/route.js.map +1 -1
- package/dist/src/commands/ruvector/backup.js +505 -651
- package/dist/src/commands/ruvector/backup.js.map +1 -1
- package/dist/src/commands/ruvector/benchmark.js +349 -401
- package/dist/src/commands/ruvector/benchmark.js.map +1 -1
- package/dist/src/commands/ruvector/import.js +224 -266
- package/dist/src/commands/ruvector/import.js.map +1 -1
- package/dist/src/commands/ruvector/index.js +37 -75
- package/dist/src/commands/ruvector/index.js.map +1 -1
- package/dist/src/commands/ruvector/init.js +336 -359
- package/dist/src/commands/ruvector/init.js.map +1 -1
- package/dist/src/commands/ruvector/migrate.js +335 -322
- package/dist/src/commands/ruvector/migrate.js.map +1 -1
- package/dist/src/commands/ruvector/optimize.js +375 -431
- package/dist/src/commands/ruvector/optimize.js.map +1 -1
- package/dist/src/commands/ruvector/setup.js +703 -117
- package/dist/src/commands/ruvector/setup.js.map +1 -1
- package/dist/src/commands/ruvector/status.js +364 -419
- package/dist/src/commands/ruvector/status.js.map +1 -1
- package/dist/src/commands/security.js +485 -608
- package/dist/src/commands/security.js.map +1 -1
- package/dist/src/commands/session.js +504 -626
- package/dist/src/commands/session.js.map +1 -1
- package/dist/src/commands/start.js +267 -364
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/status.js +380 -486
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/swarm.js +408 -488
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/commands/task.js +423 -538
- package/dist/src/commands/task.js.map +1 -1
- package/dist/src/commands/transfer-store.js +322 -412
- package/dist/src/commands/transfer-store.js.map +1 -1
- package/dist/src/commands/update.js +196 -291
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/workflow.js +386 -486
- package/dist/src/commands/workflow.js.map +1 -1
- package/dist/src/config-adapter.d.ts +15 -0
- package/dist/src/config-adapter.d.ts.map +1 -0
- package/dist/src/config-adapter.js +38 -39
- package/dist/src/config-adapter.js.map +1 -1
- package/dist/src/index.d.ts +77 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +309 -411
- package/dist/src/index.js.map +1 -1
- package/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
- package/dist/src/infrastructure/in-memory-repositories.d.ts.map +1 -0
- package/dist/src/infrastructure/in-memory-repositories.js +246 -507
- package/dist/src/infrastructure/in-memory-repositories.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts +25 -0
- package/dist/src/init/claudemd-generator.d.ts.map +1 -0
- package/dist/src/init/claudemd-generator.js +368 -78
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts +41 -0
- package/dist/src/init/executor.d.ts.map +1 -0
- package/dist/src/init/executor.js +1307 -996
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts +60 -0
- package/dist/src/init/helpers-generator.d.ts.map +1 -0
- package/dist/src/init/helpers-generator.js +657 -12
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/index.d.ts +1 -1
- package/dist/src/init/index.d.ts.map +1 -1
- package/dist/src/init/index.js +1 -1
- package/dist/src/init/index.js.map +1 -1
- package/dist/src/init/mcp-generator.js +33 -37
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.js +76 -77
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.js +801 -3
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +1 -1
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +76 -59
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.d.ts +92 -0
- package/dist/src/mcp-client.d.ts.map +1 -0
- package/dist/src/mcp-client.js +81 -125
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts +161 -0
- package/dist/src/mcp-server.d.ts.map +1 -0
- package/dist/src/mcp-server.js +470 -757
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +391 -492
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.js +332 -533
- package/dist/src/mcp-tools/agentdb-tools.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.js +172 -236
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/auto-install.d.ts +83 -0
- package/dist/src/mcp-tools/auto-install.d.ts.map +1 -0
- package/dist/src/mcp-tools/auto-install.js +80 -142
- package/dist/src/mcp-tools/auto-install.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +252 -375
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/claims-tools.js +473 -565
- package/dist/src/mcp-tools/claims-tools.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +197 -272
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +500 -572
- package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js +286 -364
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +582 -693
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/github-tools.js +260 -311
- package/dist/src/mcp-tools/github-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +573 -640
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +2215 -2648
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +350 -505
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +315 -412
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +420 -480
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.js +204 -278
- package/dist/src/mcp-tools/progress-tools.js.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.js +163 -279
- package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -1
- package/dist/src/mcp-tools/security-tools.js +297 -429
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +185 -234
- package/dist/src/mcp-tools/session-tools.js.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +207 -260
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +276 -325
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +270 -336
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +148 -196
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +186 -333
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/mcp-tools/types.d.ts +31 -0
- package/dist/src/mcp-tools/types.d.ts.map +1 -0
- package/dist/src/mcp-tools/wasm-agent-tools.js +133 -280
- package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +405 -450
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/ewc-consolidation.d.ts +295 -0
- package/dist/src/memory/ewc-consolidation.d.ts.map +1 -0
- package/dist/src/memory/ewc-consolidation.js +190 -303
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts +338 -0
- package/dist/src/memory/intelligence.d.ts.map +1 -0
- package/dist/src/memory/intelligence.js +569 -794
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +407 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge.js +1170 -1640
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +412 -0
- package/dist/src/memory/memory-initializer.d.ts.map +1 -0
- package/dist/src/memory/memory-initializer.js +1836 -1851
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/sona-optimizer.d.ts +227 -0
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -0
- package/dist/src/memory/sona-optimizer.js +199 -329
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/output.d.ts +2 -2
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +242 -272
- package/dist/src/output.js.map +1 -1
- package/dist/src/parser.d.ts +51 -0
- package/dist/src/parser.d.ts.map +1 -0
- package/dist/src/parser.js +140 -187
- package/dist/src/parser.js.map +1 -1
- package/dist/src/plugins/manager.d.ts +133 -0
- package/dist/src/plugins/manager.d.ts.map +1 -0
- package/dist/src/plugins/manager.js +285 -521
- package/dist/src/plugins/manager.js.map +1 -1
- package/dist/src/plugins/store/discovery.d.ts +88 -0
- package/dist/src/plugins/store/discovery.d.ts.map +1 -0
- package/dist/src/plugins/store/discovery.js +271 -358
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/plugins/store/index.d.ts +76 -0
- package/dist/src/plugins/store/index.d.ts.map +1 -0
- package/dist/src/plugins/store/index.js +48 -105
- package/dist/src/plugins/store/index.js.map +1 -1
- package/dist/src/plugins/store/search.d.ts +46 -0
- package/dist/src/plugins/store/search.d.ts.map +1 -0
- package/dist/src/plugins/store/search.js +69 -107
- package/dist/src/plugins/store/search.js.map +1 -1
- package/dist/src/plugins/store/types.d.ts +274 -0
- package/dist/src/plugins/store/types.d.ts.map +1 -0
- package/dist/src/plugins/tests/demo-plugin-store.js +113 -160
- package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -1
- package/dist/src/plugins/tests/standalone-test.js +172 -223
- package/dist/src/plugins/tests/standalone-test.js.map +1 -1
- package/dist/src/plugins/tests/test-plugin-store.js +190 -228
- package/dist/src/plugins/tests/test-plugin-store.js.map +1 -1
- package/dist/src/production/circuit-breaker.d.ts +101 -0
- package/dist/src/production/circuit-breaker.d.ts.map +1 -0
- package/dist/src/production/circuit-breaker.js +62 -126
- package/dist/src/production/circuit-breaker.js.map +1 -1
- package/dist/src/production/error-handler.d.ts +92 -0
- package/dist/src/production/error-handler.d.ts.map +1 -0
- package/dist/src/production/error-handler.js +86 -156
- package/dist/src/production/error-handler.js.map +1 -1
- package/dist/src/production/monitoring.d.ts +161 -0
- package/dist/src/production/monitoring.d.ts.map +1 -0
- package/dist/src/production/monitoring.js +139 -220
- package/dist/src/production/monitoring.js.map +1 -1
- package/dist/src/production/rate-limiter.d.ts +80 -0
- package/dist/src/production/rate-limiter.d.ts.map +1 -0
- package/dist/src/production/rate-limiter.js +74 -93
- package/dist/src/production/rate-limiter.js.map +1 -1
- package/dist/src/production/retry.d.ts +48 -0
- package/dist/src/production/retry.d.ts.map +1 -0
- package/dist/src/production/retry.js +75 -167
- package/dist/src/production/retry.js.map +1 -1
- package/dist/src/prompt.d.ts +44 -0
- package/dist/src/prompt.d.ts.map +1 -0
- package/dist/src/prompt.js +436 -560
- package/dist/src/prompt.js.map +1 -1
- package/dist/src/runtime/headless.d.ts +60 -0
- package/dist/src/runtime/headless.d.ts.map +1 -0
- package/dist/src/runtime/headless.js +197 -286
- package/dist/src/runtime/headless.js.map +1 -1
- package/dist/src/ruvector/agent-wasm.d.ts +182 -0
- package/dist/src/ruvector/agent-wasm.d.ts.map +1 -0
- package/dist/src/ruvector/agent-wasm.js +156 -351
- package/dist/src/ruvector/agent-wasm.js.map +1 -1
- package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
- package/dist/src/ruvector/ast-analyzer.d.ts.map +1 -0
- package/dist/src/ruvector/ast-analyzer.js +145 -232
- package/dist/src/ruvector/ast-analyzer.js.map +1 -1
- package/dist/src/ruvector/coverage-router.d.ts +160 -0
- package/dist/src/ruvector/coverage-router.d.ts.map +1 -0
- package/dist/src/ruvector/coverage-router.js +287 -419
- package/dist/src/ruvector/coverage-router.js.map +1 -1
- package/dist/src/ruvector/coverage-tools.js +56 -101
- package/dist/src/ruvector/coverage-tools.js.map +1 -1
- package/dist/src/ruvector/diff-classifier.d.ts +175 -0
- package/dist/src/ruvector/diff-classifier.d.ts.map +1 -0
- package/dist/src/ruvector/diff-classifier.js +324 -451
- package/dist/src/ruvector/diff-classifier.js.map +1 -1
- package/dist/src/ruvector/enhanced-model-router.d.ts +146 -0
- package/dist/src/ruvector/enhanced-model-router.d.ts.map +1 -0
- package/dist/src/ruvector/enhanced-model-router.js +260 -336
- package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
- package/dist/src/ruvector/flash-attention.d.ts +195 -0
- package/dist/src/ruvector/flash-attention.d.ts.map +1 -0
- package/dist/src/ruvector/flash-attention.js +223 -254
- package/dist/src/ruvector/flash-attention.js.map +1 -1
- package/dist/src/ruvector/graph-analyzer.d.ts +187 -0
- package/dist/src/ruvector/graph-analyzer.d.ts.map +1 -0
- package/dist/src/ruvector/graph-analyzer.js +486 -680
- package/dist/src/ruvector/graph-analyzer.js.map +1 -1
- package/dist/src/ruvector/index.d.ts +40 -0
- package/dist/src/ruvector/index.d.ts.map +1 -0
- package/dist/src/ruvector/index.js +36 -106
- package/dist/src/ruvector/index.js.map +1 -1
- package/dist/src/ruvector/lora-adapter.d.ts +218 -0
- package/dist/src/ruvector/lora-adapter.d.ts.map +1 -0
- package/dist/src/ruvector/lora-adapter.js +155 -248
- package/dist/src/ruvector/lora-adapter.js.map +1 -1
- package/dist/src/ruvector/model-router.d.ts +220 -0
- package/dist/src/ruvector/model-router.d.ts.map +1 -0
- package/dist/src/ruvector/model-router.js +175 -248
- package/dist/src/ruvector/model-router.js.map +1 -1
- package/dist/src/ruvector/moe-router.d.ts +206 -0
- package/dist/src/ruvector/moe-router.d.ts.map +1 -0
- package/dist/src/ruvector/moe-router.js +228 -286
- package/dist/src/ruvector/moe-router.js.map +1 -1
- package/dist/src/ruvector/q-learning-router.d.ts +211 -0
- package/dist/src/ruvector/q-learning-router.d.ts.map +1 -0
- package/dist/src/ruvector/q-learning-router.js +257 -338
- package/dist/src/ruvector/q-learning-router.js.map +1 -1
- package/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
- package/dist/src/ruvector/ruvllm-wasm.d.ts.map +1 -0
- package/dist/src/ruvector/ruvllm-wasm.js +270 -434
- package/dist/src/ruvector/ruvllm-wasm.js.map +1 -1
- package/dist/src/ruvector/semantic-router.d.ts +77 -0
- package/dist/src/ruvector/semantic-router.d.ts.map +1 -0
- package/dist/src/ruvector/semantic-router.js +60 -67
- package/dist/src/ruvector/semantic-router.js.map +1 -1
- package/dist/src/ruvector/vector-db.d.ts +69 -0
- package/dist/src/ruvector/vector-db.d.ts.map +1 -0
- package/dist/src/ruvector/vector-db.js +119 -205
- package/dist/src/ruvector/vector-db.js.map +1 -1
- package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
- package/dist/src/services/agentic-flow-bridge.d.ts.map +1 -0
- package/dist/src/services/agentic-flow-bridge.js +32 -105
- package/dist/src/services/agentic-flow-bridge.js.map +1 -1
- package/dist/src/services/claim-service.d.ts +204 -0
- package/dist/src/services/claim-service.d.ts.map +1 -0
- package/dist/src/services/claim-service.js +615 -940
- package/dist/src/services/claim-service.js.map +1 -1
- package/dist/src/services/container-worker-pool.d.ts +197 -0
- package/dist/src/services/container-worker-pool.d.ts.map +1 -0
- package/dist/src/services/container-worker-pool.js +398 -666
- package/dist/src/services/container-worker-pool.js.map +1 -1
- package/dist/src/services/headless-worker-executor.d.ts +304 -0
- package/dist/src/services/headless-worker-executor.d.ts.map +1 -0
- package/dist/src/services/headless-worker-executor.js +441 -467
- package/dist/src/services/headless-worker-executor.js.map +1 -1
- package/dist/src/services/index.d.ts +4 -4
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +4 -4
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/registry-api.d.ts +58 -0
- package/dist/src/services/registry-api.d.ts.map +1 -0
- package/dist/src/services/registry-api.js +92 -200
- package/dist/src/services/registry-api.js.map +1 -1
- package/dist/src/services/ruvector-training.d.ts +222 -0
- package/dist/src/services/ruvector-training.d.ts.map +1 -0
- package/dist/src/services/ruvector-training.js +257 -337
- package/dist/src/services/ruvector-training.js.map +1 -1
- package/dist/src/services/worker-daemon.d.ts +228 -0
- package/dist/src/services/worker-daemon.d.ts.map +1 -0
- package/dist/src/services/worker-daemon.js +591 -849
- package/dist/src/services/worker-daemon.js.map +1 -1
- package/dist/src/services/worker-queue.d.ts +194 -0
- package/dist/src/services/worker-queue.d.ts.map +1 -0
- package/dist/src/services/worker-queue.js +331 -548
- package/dist/src/services/worker-queue.js.map +1 -1
- package/dist/src/suggest.d.ts +53 -0
- package/dist/src/suggest.d.ts.map +1 -0
- package/dist/src/suggest.js +45 -55
- package/dist/src/suggest.js.map +1 -1
- package/dist/src/transfer/anonymization/index.js +29 -37
- package/dist/src/transfer/anonymization/index.js.map +1 -1
- package/dist/src/transfer/deploy-seraphine.js +128 -155
- package/dist/src/transfer/deploy-seraphine.js.map +1 -1
- package/dist/src/transfer/export.d.ts +25 -0
- package/dist/src/transfer/export.d.ts.map +1 -0
- package/dist/src/transfer/export.js +84 -142
- package/dist/src/transfer/export.js.map +1 -1
- package/dist/src/transfer/index.d.ts +1 -1
- package/dist/src/transfer/index.d.ts.map +1 -1
- package/dist/src/transfer/index.js +0 -2
- package/dist/src/transfer/index.js.map +1 -1
- package/dist/src/transfer/ipfs/client.d.ts +109 -0
- package/dist/src/transfer/ipfs/client.d.ts.map +1 -0
- package/dist/src/transfer/ipfs/client.js +187 -337
- package/dist/src/transfer/ipfs/client.js.map +1 -1
- package/dist/src/transfer/ipfs/upload.d.ts +95 -0
- package/dist/src/transfer/ipfs/upload.d.ts.map +1 -0
- package/dist/src/transfer/ipfs/upload.js +288 -434
- package/dist/src/transfer/ipfs/upload.js.map +1 -1
- package/dist/src/transfer/models/seraphine.d.ts +72 -0
- package/dist/src/transfer/models/seraphine.d.ts.map +1 -0
- package/dist/src/transfer/models/seraphine.js +55 -55
- package/dist/src/transfer/models/seraphine.js.map +1 -1
- package/dist/src/transfer/serialization/cfp.d.ts +49 -0
- package/dist/src/transfer/serialization/cfp.d.ts.map +1 -0
- package/dist/src/transfer/serialization/cfp.js +30 -31
- package/dist/src/transfer/serialization/cfp.js.map +1 -1
- package/dist/src/transfer/storage/gcs.d.ts +82 -0
- package/dist/src/transfer/storage/gcs.d.ts.map +1 -0
- package/dist/src/transfer/storage/gcs.js +165 -232
- package/dist/src/transfer/storage/gcs.js.map +1 -1
- package/dist/src/transfer/store/discovery.d.ts +84 -0
- package/dist/src/transfer/store/discovery.d.ts.map +1 -0
- package/dist/src/transfer/store/discovery.js +239 -349
- package/dist/src/transfer/store/discovery.js.map +1 -1
- package/dist/src/transfer/store/download.d.ts +70 -0
- package/dist/src/transfer/store/download.d.ts.map +1 -0
- package/dist/src/transfer/store/download.js +243 -365
- package/dist/src/transfer/store/download.js.map +1 -1
- package/dist/src/transfer/store/index.d.ts +84 -0
- package/dist/src/transfer/store/index.d.ts.map +1 -0
- package/dist/src/transfer/store/index.js +63 -130
- package/dist/src/transfer/store/index.js.map +1 -1
- package/dist/src/transfer/store/publish.d.ts +76 -0
- package/dist/src/transfer/store/publish.d.ts.map +1 -0
- package/dist/src/transfer/store/publish.js +184 -258
- package/dist/src/transfer/store/publish.js.map +1 -1
- package/dist/src/transfer/store/registry.js +50 -72
- package/dist/src/transfer/store/registry.js.map +1 -1
- package/dist/src/transfer/store/search.d.ts +54 -0
- package/dist/src/transfer/store/search.d.ts.map +1 -0
- package/dist/src/transfer/store/search.js +64 -96
- package/dist/src/transfer/store/search.js.map +1 -1
- package/dist/src/transfer/store/tests/standalone-test.js +174 -231
- package/dist/src/transfer/store/tests/standalone-test.js.map +1 -1
- package/dist/src/transfer/test-seraphine.js +95 -130
- package/dist/src/transfer/test-seraphine.js.map +1 -1
- package/dist/src/transfer/tests/test-store.js +194 -239
- package/dist/src/transfer/tests/test-store.js.map +1 -1
- package/dist/src/transfer/types.d.ts +245 -0
- package/dist/src/transfer/types.d.ts.map +1 -0
- package/dist/src/types.d.ts +198 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +26 -55
- package/dist/src/types.js.map +1 -1
- package/dist/src/update/checker.d.ts +34 -0
- package/dist/src/update/checker.d.ts.map +1 -0
- package/dist/src/update/checker.js +106 -183
- package/dist/src/update/checker.js.map +1 -1
- package/dist/src/update/executor.d.ts +32 -0
- package/dist/src/update/executor.d.ts.map +1 -0
- package/dist/src/update/executor.js +135 -198
- package/dist/src/update/executor.js.map +1 -1
- package/dist/src/update/index.d.ts +33 -0
- package/dist/src/update/index.d.ts.map +1 -0
- package/dist/src/update/index.js +38 -85
- package/dist/src/update/index.js.map +1 -1
- package/dist/src/update/rate-limiter.d.ts +20 -0
- package/dist/src/update/rate-limiter.d.ts.map +1 -0
- package/dist/src/update/rate-limiter.js +19 -31
- package/dist/src/update/rate-limiter.js.map +1 -1
- package/dist/src/update/validator.d.ts +17 -0
- package/dist/src/update/validator.d.ts.map +1 -0
- package/dist/src/update/validator.js +38 -64
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -6,75 +6,28 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module @claude-flow/cli/mcp-tools/claims
|
|
8
8
|
*/
|
|
9
|
-
var __assign = (this && this.__assign) || function () {
|
|
10
|
-
__assign = Object.assign || function(t) {
|
|
11
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
12
|
-
s = arguments[i];
|
|
13
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
14
|
-
t[p] = s[p];
|
|
15
|
-
}
|
|
16
|
-
return t;
|
|
17
|
-
};
|
|
18
|
-
return __assign.apply(this, arguments);
|
|
19
|
-
};
|
|
20
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
21
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
22
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
23
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
24
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
25
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
26
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
30
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
31
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
32
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
33
|
-
function step(op) {
|
|
34
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
35
|
-
while (_) try {
|
|
36
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
37
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
38
|
-
switch (op[0]) {
|
|
39
|
-
case 0: case 1: t = op; break;
|
|
40
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
41
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
42
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
43
|
-
default:
|
|
44
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
45
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
46
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
47
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
48
|
-
if (t[2]) _.ops.pop();
|
|
49
|
-
_.trys.pop(); continue;
|
|
50
|
-
}
|
|
51
|
-
op = body.call(thisArg, _);
|
|
52
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
53
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
9
|
// File-based persistence
|
|
57
10
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
58
11
|
import { join, resolve } from 'path';
|
|
59
|
-
|
|
60
|
-
|
|
12
|
+
const CLAIMS_DIR = '.claude-flow/claims';
|
|
13
|
+
const CLAIMS_FILE = 'claims.json';
|
|
61
14
|
function getClaimsPath() {
|
|
62
15
|
return resolve(join(CLAIMS_DIR, CLAIMS_FILE));
|
|
63
16
|
}
|
|
64
17
|
function ensureClaimsDir() {
|
|
65
|
-
|
|
18
|
+
const dir = resolve(CLAIMS_DIR);
|
|
66
19
|
if (!existsSync(dir)) {
|
|
67
20
|
mkdirSync(dir, { recursive: true });
|
|
68
21
|
}
|
|
69
22
|
}
|
|
70
23
|
function loadClaims() {
|
|
71
24
|
try {
|
|
72
|
-
|
|
25
|
+
const path = getClaimsPath();
|
|
73
26
|
if (existsSync(path)) {
|
|
74
27
|
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
75
28
|
}
|
|
76
29
|
}
|
|
77
|
-
catch
|
|
30
|
+
catch {
|
|
78
31
|
// Return empty store on error
|
|
79
32
|
}
|
|
80
33
|
return { claims: {}, stealable: {}, contests: {} };
|
|
@@ -85,11 +38,11 @@ function saveClaims(store) {
|
|
|
85
38
|
}
|
|
86
39
|
function formatClaimant(claimant) {
|
|
87
40
|
return claimant.type === 'human'
|
|
88
|
-
?
|
|
89
|
-
:
|
|
41
|
+
? `human:${claimant.userId}:${claimant.name}`
|
|
42
|
+
: `agent:${claimant.agentId}:${claimant.agentType}`;
|
|
90
43
|
}
|
|
91
44
|
function parseClaimant(str) {
|
|
92
|
-
|
|
45
|
+
const parts = str.split(':');
|
|
93
46
|
if (parts[0] === 'human' && parts.length >= 3) {
|
|
94
47
|
return { type: 'human', userId: parts[1], name: parts.slice(2).join(':') };
|
|
95
48
|
}
|
|
@@ -98,7 +51,7 @@ function parseClaimant(str) {
|
|
|
98
51
|
}
|
|
99
52
|
return null;
|
|
100
53
|
}
|
|
101
|
-
export
|
|
54
|
+
export const claimsTools = [
|
|
102
55
|
{
|
|
103
56
|
name: 'claims_claim',
|
|
104
57
|
description: 'Claim an issue for work (human or agent)',
|
|
@@ -108,58 +61,55 @@ export var claimsTools = [
|
|
|
108
61
|
properties: {
|
|
109
62
|
issueId: {
|
|
110
63
|
type: 'string',
|
|
111
|
-
description: 'Issue ID or GitHub issue number'
|
|
64
|
+
description: 'Issue ID or GitHub issue number',
|
|
112
65
|
},
|
|
113
66
|
claimant: {
|
|
114
67
|
type: 'string',
|
|
115
|
-
description: 'Claimant identifier (e.g., "human:user-1:Alice" or "agent:coder-1:coder")'
|
|
68
|
+
description: 'Claimant identifier (e.g., "human:user-1:Alice" or "agent:coder-1:coder")',
|
|
116
69
|
},
|
|
117
70
|
context: {
|
|
118
71
|
type: 'string',
|
|
119
|
-
description: 'Optional context about the work approach'
|
|
120
|
-
}
|
|
72
|
+
description: 'Optional context about the work approach',
|
|
73
|
+
},
|
|
121
74
|
},
|
|
122
|
-
required: ['issueId', 'claimant']
|
|
75
|
+
required: ['issueId', 'claimant'],
|
|
123
76
|
},
|
|
124
|
-
handler:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
claimant
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
error: "Issue already claimed by " + formatClaimant(existing.claimant),
|
|
141
|
-
existingClaim: existing
|
|
142
|
-
}];
|
|
143
|
-
}
|
|
144
|
-
now = new Date().toISOString();
|
|
145
|
-
claim = {
|
|
146
|
-
issueId: issueId,
|
|
147
|
-
claimant: claimant,
|
|
148
|
-
claimedAt: now,
|
|
149
|
-
status: 'active',
|
|
150
|
-
statusChangedAt: now,
|
|
151
|
-
progress: 0,
|
|
152
|
-
context: context
|
|
77
|
+
handler: async (input) => {
|
|
78
|
+
const issueId = input.issueId;
|
|
79
|
+
const claimantStr = input.claimant;
|
|
80
|
+
const context = input.context;
|
|
81
|
+
const claimant = parseClaimant(claimantStr);
|
|
82
|
+
if (!claimant) {
|
|
83
|
+
return { success: false, error: 'Invalid claimant format. Use "human:userId:name" or "agent:agentId:agentType"' };
|
|
84
|
+
}
|
|
85
|
+
const store = loadClaims();
|
|
86
|
+
// Check if already claimed
|
|
87
|
+
if (store.claims[issueId]) {
|
|
88
|
+
const existing = store.claims[issueId];
|
|
89
|
+
return {
|
|
90
|
+
success: false,
|
|
91
|
+
error: `Issue already claimed by ${formatClaimant(existing.claimant)}`,
|
|
92
|
+
existingClaim: existing,
|
|
153
93
|
};
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
94
|
+
}
|
|
95
|
+
const now = new Date().toISOString();
|
|
96
|
+
const claim = {
|
|
97
|
+
issueId,
|
|
98
|
+
claimant,
|
|
99
|
+
claimedAt: now,
|
|
100
|
+
status: 'active',
|
|
101
|
+
statusChangedAt: now,
|
|
102
|
+
progress: 0,
|
|
103
|
+
context,
|
|
104
|
+
};
|
|
105
|
+
store.claims[issueId] = claim;
|
|
106
|
+
saveClaims(store);
|
|
107
|
+
return {
|
|
108
|
+
success: true,
|
|
109
|
+
claim,
|
|
110
|
+
message: `Issue ${issueId} claimed by ${formatClaimant(claimant)}`,
|
|
111
|
+
};
|
|
112
|
+
},
|
|
163
113
|
},
|
|
164
114
|
{
|
|
165
115
|
name: 'claims_release',
|
|
@@ -170,49 +120,46 @@ export var claimsTools = [
|
|
|
170
120
|
properties: {
|
|
171
121
|
issueId: {
|
|
172
122
|
type: 'string',
|
|
173
|
-
description: 'Issue ID to release'
|
|
123
|
+
description: 'Issue ID to release',
|
|
174
124
|
},
|
|
175
125
|
claimant: {
|
|
176
126
|
type: 'string',
|
|
177
|
-
description: 'Claimant identifier (must match current owner)'
|
|
127
|
+
description: 'Claimant identifier (must match current owner)',
|
|
178
128
|
},
|
|
179
129
|
reason: {
|
|
180
130
|
type: 'string',
|
|
181
|
-
description: 'Reason for releasing'
|
|
182
|
-
}
|
|
131
|
+
description: 'Reason for releasing',
|
|
132
|
+
},
|
|
183
133
|
},
|
|
184
|
-
required: ['issueId', 'claimant']
|
|
134
|
+
required: ['issueId', 'claimant'],
|
|
135
|
+
},
|
|
136
|
+
handler: async (input) => {
|
|
137
|
+
const issueId = input.issueId;
|
|
138
|
+
const claimantStr = input.claimant;
|
|
139
|
+
const reason = input.reason;
|
|
140
|
+
const claimant = parseClaimant(claimantStr);
|
|
141
|
+
if (!claimant) {
|
|
142
|
+
return { success: false, error: 'Invalid claimant format' };
|
|
143
|
+
}
|
|
144
|
+
const store = loadClaims();
|
|
145
|
+
const claim = store.claims[issueId];
|
|
146
|
+
if (!claim) {
|
|
147
|
+
return { success: false, error: 'Issue is not claimed' };
|
|
148
|
+
}
|
|
149
|
+
// Verify ownership
|
|
150
|
+
if (formatClaimant(claim.claimant) !== formatClaimant(claimant)) {
|
|
151
|
+
return { success: false, error: 'Only the current claimant can release' };
|
|
152
|
+
}
|
|
153
|
+
delete store.claims[issueId];
|
|
154
|
+
delete store.stealable[issueId];
|
|
155
|
+
saveClaims(store);
|
|
156
|
+
return {
|
|
157
|
+
success: true,
|
|
158
|
+
message: `Issue ${issueId} released`,
|
|
159
|
+
reason,
|
|
160
|
+
previousClaim: claim,
|
|
161
|
+
};
|
|
185
162
|
},
|
|
186
|
-
handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
|
|
187
|
-
var issueId, claimantStr, reason, claimant, store, claim;
|
|
188
|
-
return __generator(this, function (_a) {
|
|
189
|
-
issueId = input.issueId;
|
|
190
|
-
claimantStr = input.claimant;
|
|
191
|
-
reason = input.reason;
|
|
192
|
-
claimant = parseClaimant(claimantStr);
|
|
193
|
-
if (!claimant) {
|
|
194
|
-
return [2 /*return*/, { success: false, error: 'Invalid claimant format' }];
|
|
195
|
-
}
|
|
196
|
-
store = loadClaims();
|
|
197
|
-
claim = store.claims[issueId];
|
|
198
|
-
if (!claim) {
|
|
199
|
-
return [2 /*return*/, { success: false, error: 'Issue is not claimed' }];
|
|
200
|
-
}
|
|
201
|
-
// Verify ownership
|
|
202
|
-
if (formatClaimant(claim.claimant) !== formatClaimant(claimant)) {
|
|
203
|
-
return [2 /*return*/, { success: false, error: 'Only the current claimant can release' }];
|
|
204
|
-
}
|
|
205
|
-
delete store.claims[issueId];
|
|
206
|
-
delete store.stealable[issueId];
|
|
207
|
-
saveClaims(store);
|
|
208
|
-
return [2 /*return*/, {
|
|
209
|
-
success: true,
|
|
210
|
-
message: "Issue " + issueId + " released",
|
|
211
|
-
reason: reason,
|
|
212
|
-
previousClaim: claim
|
|
213
|
-
}];
|
|
214
|
-
});
|
|
215
|
-
}); }
|
|
216
163
|
},
|
|
217
164
|
{
|
|
218
165
|
name: 'claims_handoff',
|
|
@@ -223,63 +170,60 @@ export var claimsTools = [
|
|
|
223
170
|
properties: {
|
|
224
171
|
issueId: {
|
|
225
172
|
type: 'string',
|
|
226
|
-
description: 'Issue ID to handoff'
|
|
173
|
+
description: 'Issue ID to handoff',
|
|
227
174
|
},
|
|
228
175
|
from: {
|
|
229
176
|
type: 'string',
|
|
230
|
-
description: 'Current claimant identifier'
|
|
177
|
+
description: 'Current claimant identifier',
|
|
231
178
|
},
|
|
232
179
|
to: {
|
|
233
180
|
type: 'string',
|
|
234
|
-
description: 'Target claimant identifier'
|
|
181
|
+
description: 'Target claimant identifier',
|
|
235
182
|
},
|
|
236
183
|
reason: {
|
|
237
184
|
type: 'string',
|
|
238
|
-
description: 'Reason for handoff'
|
|
185
|
+
description: 'Reason for handoff',
|
|
239
186
|
},
|
|
240
187
|
progress: {
|
|
241
188
|
type: 'number',
|
|
242
|
-
description: 'Current progress percentage (0-100)'
|
|
243
|
-
}
|
|
189
|
+
description: 'Current progress percentage (0-100)',
|
|
190
|
+
},
|
|
244
191
|
},
|
|
245
|
-
required: ['issueId', 'from', 'to']
|
|
192
|
+
required: ['issueId', 'from', 'to'],
|
|
193
|
+
},
|
|
194
|
+
handler: async (input) => {
|
|
195
|
+
const issueId = input.issueId;
|
|
196
|
+
const fromStr = input.from;
|
|
197
|
+
const toStr = input.to;
|
|
198
|
+
const reason = input.reason;
|
|
199
|
+
const progress = input.progress || 0;
|
|
200
|
+
const from = parseClaimant(fromStr);
|
|
201
|
+
const to = parseClaimant(toStr);
|
|
202
|
+
if (!from || !to) {
|
|
203
|
+
return { success: false, error: 'Invalid claimant format' };
|
|
204
|
+
}
|
|
205
|
+
const store = loadClaims();
|
|
206
|
+
const claim = store.claims[issueId];
|
|
207
|
+
if (!claim) {
|
|
208
|
+
return { success: false, error: 'Issue is not claimed' };
|
|
209
|
+
}
|
|
210
|
+
if (formatClaimant(claim.claimant) !== formatClaimant(from)) {
|
|
211
|
+
return { success: false, error: 'Only the current claimant can request handoff' };
|
|
212
|
+
}
|
|
213
|
+
const now = new Date().toISOString();
|
|
214
|
+
claim.status = 'handoff-pending';
|
|
215
|
+
claim.statusChangedAt = now;
|
|
216
|
+
claim.handoffTo = to;
|
|
217
|
+
claim.handoffReason = reason;
|
|
218
|
+
claim.progress = progress;
|
|
219
|
+
store.claims[issueId] = claim;
|
|
220
|
+
saveClaims(store);
|
|
221
|
+
return {
|
|
222
|
+
success: true,
|
|
223
|
+
claim,
|
|
224
|
+
message: `Handoff requested from ${formatClaimant(from)} to ${formatClaimant(to)}`,
|
|
225
|
+
};
|
|
246
226
|
},
|
|
247
|
-
handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
|
|
248
|
-
var issueId, fromStr, toStr, reason, progress, from, to, store, claim, now;
|
|
249
|
-
return __generator(this, function (_a) {
|
|
250
|
-
issueId = input.issueId;
|
|
251
|
-
fromStr = input.from;
|
|
252
|
-
toStr = input.to;
|
|
253
|
-
reason = input.reason;
|
|
254
|
-
progress = input.progress || 0;
|
|
255
|
-
from = parseClaimant(fromStr);
|
|
256
|
-
to = parseClaimant(toStr);
|
|
257
|
-
if (!from || !to) {
|
|
258
|
-
return [2 /*return*/, { success: false, error: 'Invalid claimant format' }];
|
|
259
|
-
}
|
|
260
|
-
store = loadClaims();
|
|
261
|
-
claim = store.claims[issueId];
|
|
262
|
-
if (!claim) {
|
|
263
|
-
return [2 /*return*/, { success: false, error: 'Issue is not claimed' }];
|
|
264
|
-
}
|
|
265
|
-
if (formatClaimant(claim.claimant) !== formatClaimant(from)) {
|
|
266
|
-
return [2 /*return*/, { success: false, error: 'Only the current claimant can request handoff' }];
|
|
267
|
-
}
|
|
268
|
-
now = new Date().toISOString();
|
|
269
|
-
claim.status = 'handoff-pending';
|
|
270
|
-
claim.statusChangedAt = now;
|
|
271
|
-
claim.handoffTo = to;
|
|
272
|
-
claim.handoffReason = reason;
|
|
273
|
-
claim.progress = progress;
|
|
274
|
-
store.claims[issueId] = claim;
|
|
275
|
-
saveClaims(store);
|
|
276
|
-
return [2 /*return*/, {
|
|
277
|
-
success: true,
|
|
278
|
-
claim: claim,
|
|
279
|
-
message: "Handoff requested from " + formatClaimant(from) + " to " + formatClaimant(to)
|
|
280
|
-
}];
|
|
281
|
-
});
|
|
282
|
-
}); }
|
|
283
227
|
},
|
|
284
228
|
{
|
|
285
229
|
name: 'claims_accept-handoff',
|
|
@@ -290,52 +234,49 @@ export var claimsTools = [
|
|
|
290
234
|
properties: {
|
|
291
235
|
issueId: {
|
|
292
236
|
type: 'string',
|
|
293
|
-
description: 'Issue ID with pending handoff'
|
|
237
|
+
description: 'Issue ID with pending handoff',
|
|
294
238
|
},
|
|
295
239
|
claimant: {
|
|
296
240
|
type: 'string',
|
|
297
|
-
description: 'Claimant accepting the handoff'
|
|
298
|
-
}
|
|
241
|
+
description: 'Claimant accepting the handoff',
|
|
242
|
+
},
|
|
299
243
|
},
|
|
300
|
-
required: ['issueId', 'claimant']
|
|
244
|
+
required: ['issueId', 'claimant'],
|
|
245
|
+
},
|
|
246
|
+
handler: async (input) => {
|
|
247
|
+
const issueId = input.issueId;
|
|
248
|
+
const claimantStr = input.claimant;
|
|
249
|
+
const claimant = parseClaimant(claimantStr);
|
|
250
|
+
if (!claimant) {
|
|
251
|
+
return { success: false, error: 'Invalid claimant format' };
|
|
252
|
+
}
|
|
253
|
+
const store = loadClaims();
|
|
254
|
+
const claim = store.claims[issueId];
|
|
255
|
+
if (!claim) {
|
|
256
|
+
return { success: false, error: 'Issue is not claimed' };
|
|
257
|
+
}
|
|
258
|
+
if (claim.status !== 'handoff-pending') {
|
|
259
|
+
return { success: false, error: 'No pending handoff for this issue' };
|
|
260
|
+
}
|
|
261
|
+
if (!claim.handoffTo || formatClaimant(claim.handoffTo) !== formatClaimant(claimant)) {
|
|
262
|
+
return { success: false, error: 'You are not the target of this handoff' };
|
|
263
|
+
}
|
|
264
|
+
const previousOwner = claim.claimant;
|
|
265
|
+
const now = new Date().toISOString();
|
|
266
|
+
claim.claimant = claimant;
|
|
267
|
+
claim.status = 'active';
|
|
268
|
+
claim.statusChangedAt = now;
|
|
269
|
+
claim.handoffTo = undefined;
|
|
270
|
+
claim.handoffReason = undefined;
|
|
271
|
+
store.claims[issueId] = claim;
|
|
272
|
+
saveClaims(store);
|
|
273
|
+
return {
|
|
274
|
+
success: true,
|
|
275
|
+
claim,
|
|
276
|
+
previousOwner,
|
|
277
|
+
message: `Handoff accepted. ${formatClaimant(claimant)} now owns issue ${issueId}`,
|
|
278
|
+
};
|
|
301
279
|
},
|
|
302
|
-
handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
|
|
303
|
-
var issueId, claimantStr, claimant, store, claim, previousOwner, now;
|
|
304
|
-
return __generator(this, function (_a) {
|
|
305
|
-
issueId = input.issueId;
|
|
306
|
-
claimantStr = input.claimant;
|
|
307
|
-
claimant = parseClaimant(claimantStr);
|
|
308
|
-
if (!claimant) {
|
|
309
|
-
return [2 /*return*/, { success: false, error: 'Invalid claimant format' }];
|
|
310
|
-
}
|
|
311
|
-
store = loadClaims();
|
|
312
|
-
claim = store.claims[issueId];
|
|
313
|
-
if (!claim) {
|
|
314
|
-
return [2 /*return*/, { success: false, error: 'Issue is not claimed' }];
|
|
315
|
-
}
|
|
316
|
-
if (claim.status !== 'handoff-pending') {
|
|
317
|
-
return [2 /*return*/, { success: false, error: 'No pending handoff for this issue' }];
|
|
318
|
-
}
|
|
319
|
-
if (!claim.handoffTo || formatClaimant(claim.handoffTo) !== formatClaimant(claimant)) {
|
|
320
|
-
return [2 /*return*/, { success: false, error: 'You are not the target of this handoff' }];
|
|
321
|
-
}
|
|
322
|
-
previousOwner = claim.claimant;
|
|
323
|
-
now = new Date().toISOString();
|
|
324
|
-
claim.claimant = claimant;
|
|
325
|
-
claim.status = 'active';
|
|
326
|
-
claim.statusChangedAt = now;
|
|
327
|
-
claim.handoffTo = undefined;
|
|
328
|
-
claim.handoffReason = undefined;
|
|
329
|
-
store.claims[issueId] = claim;
|
|
330
|
-
saveClaims(store);
|
|
331
|
-
return [2 /*return*/, {
|
|
332
|
-
success: true,
|
|
333
|
-
claim: claim,
|
|
334
|
-
previousOwner: previousOwner,
|
|
335
|
-
message: "Handoff accepted. " + formatClaimant(claimant) + " now owns issue " + issueId
|
|
336
|
-
}];
|
|
337
|
-
});
|
|
338
|
-
}); }
|
|
339
280
|
},
|
|
340
281
|
{
|
|
341
282
|
name: 'claims_status',
|
|
@@ -346,54 +287,51 @@ export var claimsTools = [
|
|
|
346
287
|
properties: {
|
|
347
288
|
issueId: {
|
|
348
289
|
type: 'string',
|
|
349
|
-
description: 'Issue ID'
|
|
290
|
+
description: 'Issue ID',
|
|
350
291
|
},
|
|
351
292
|
status: {
|
|
352
293
|
type: 'string',
|
|
353
294
|
description: 'New status',
|
|
354
|
-
|
|
295
|
+
enum: ['active', 'paused', 'blocked', 'review-requested', 'completed'],
|
|
355
296
|
},
|
|
356
297
|
note: {
|
|
357
298
|
type: 'string',
|
|
358
|
-
description: 'Status note or reason'
|
|
299
|
+
description: 'Status note or reason',
|
|
359
300
|
},
|
|
360
301
|
progress: {
|
|
361
302
|
type: 'number',
|
|
362
|
-
description: 'Current progress percentage'
|
|
363
|
-
}
|
|
303
|
+
description: 'Current progress percentage',
|
|
304
|
+
},
|
|
364
305
|
},
|
|
365
|
-
required: ['issueId', 'status']
|
|
306
|
+
required: ['issueId', 'status'],
|
|
307
|
+
},
|
|
308
|
+
handler: async (input) => {
|
|
309
|
+
const issueId = input.issueId;
|
|
310
|
+
const status = input.status;
|
|
311
|
+
const note = input.note;
|
|
312
|
+
const progress = input.progress;
|
|
313
|
+
const store = loadClaims();
|
|
314
|
+
const claim = store.claims[issueId];
|
|
315
|
+
if (!claim) {
|
|
316
|
+
return { success: false, error: 'Issue is not claimed' };
|
|
317
|
+
}
|
|
318
|
+
const now = new Date().toISOString();
|
|
319
|
+
claim.status = status;
|
|
320
|
+
claim.statusChangedAt = now;
|
|
321
|
+
if (status === 'blocked') {
|
|
322
|
+
claim.blockReason = note;
|
|
323
|
+
}
|
|
324
|
+
if (progress !== undefined) {
|
|
325
|
+
claim.progress = Math.min(100, Math.max(0, progress));
|
|
326
|
+
}
|
|
327
|
+
store.claims[issueId] = claim;
|
|
328
|
+
saveClaims(store);
|
|
329
|
+
return {
|
|
330
|
+
success: true,
|
|
331
|
+
claim,
|
|
332
|
+
message: `Issue ${issueId} status updated to ${status}`,
|
|
333
|
+
};
|
|
366
334
|
},
|
|
367
|
-
handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
|
|
368
|
-
var issueId, status, note, progress, store, claim, now;
|
|
369
|
-
return __generator(this, function (_a) {
|
|
370
|
-
issueId = input.issueId;
|
|
371
|
-
status = input.status;
|
|
372
|
-
note = input.note;
|
|
373
|
-
progress = input.progress;
|
|
374
|
-
store = loadClaims();
|
|
375
|
-
claim = store.claims[issueId];
|
|
376
|
-
if (!claim) {
|
|
377
|
-
return [2 /*return*/, { success: false, error: 'Issue is not claimed' }];
|
|
378
|
-
}
|
|
379
|
-
now = new Date().toISOString();
|
|
380
|
-
claim.status = status;
|
|
381
|
-
claim.statusChangedAt = now;
|
|
382
|
-
if (status === 'blocked') {
|
|
383
|
-
claim.blockReason = note;
|
|
384
|
-
}
|
|
385
|
-
if (progress !== undefined) {
|
|
386
|
-
claim.progress = Math.min(100, Math.max(0, progress));
|
|
387
|
-
}
|
|
388
|
-
store.claims[issueId] = claim;
|
|
389
|
-
saveClaims(store);
|
|
390
|
-
return [2 /*return*/, {
|
|
391
|
-
success: true,
|
|
392
|
-
claim: claim,
|
|
393
|
-
message: "Issue " + issueId + " status updated to " + status
|
|
394
|
-
}];
|
|
395
|
-
});
|
|
396
|
-
}); }
|
|
397
335
|
},
|
|
398
336
|
{
|
|
399
337
|
name: 'claims_list',
|
|
@@ -405,45 +343,40 @@ export var claimsTools = [
|
|
|
405
343
|
status: {
|
|
406
344
|
type: 'string',
|
|
407
345
|
description: 'Filter by status',
|
|
408
|
-
|
|
346
|
+
enum: ['active', 'paused', 'blocked', 'stealable', 'completed', 'all'],
|
|
409
347
|
},
|
|
410
348
|
claimant: {
|
|
411
349
|
type: 'string',
|
|
412
|
-
description: 'Filter by claimant'
|
|
350
|
+
description: 'Filter by claimant',
|
|
413
351
|
},
|
|
414
352
|
agentType: {
|
|
415
353
|
type: 'string',
|
|
416
|
-
description: 'Filter by agent type'
|
|
417
|
-
}
|
|
354
|
+
description: 'Filter by agent type',
|
|
355
|
+
},
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
handler: async (input) => {
|
|
359
|
+
const status = input.status;
|
|
360
|
+
const claimantFilter = input.claimant;
|
|
361
|
+
const agentType = input.agentType;
|
|
362
|
+
const store = loadClaims();
|
|
363
|
+
let claims = Object.values(store.claims);
|
|
364
|
+
if (status && status !== 'all') {
|
|
365
|
+
claims = claims.filter(c => c.status === status);
|
|
366
|
+
}
|
|
367
|
+
if (claimantFilter) {
|
|
368
|
+
claims = claims.filter(c => formatClaimant(c.claimant).includes(claimantFilter));
|
|
418
369
|
}
|
|
370
|
+
if (agentType) {
|
|
371
|
+
claims = claims.filter(c => c.claimant.type === 'agent' && c.claimant.agentType === agentType);
|
|
372
|
+
}
|
|
373
|
+
return {
|
|
374
|
+
success: true,
|
|
375
|
+
claims,
|
|
376
|
+
count: claims.length,
|
|
377
|
+
stealableCount: Object.keys(store.stealable).length,
|
|
378
|
+
};
|
|
419
379
|
},
|
|
420
|
-
handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
|
|
421
|
-
var status, claimantFilter, agentType, store, claims;
|
|
422
|
-
return __generator(this, function (_a) {
|
|
423
|
-
status = input.status;
|
|
424
|
-
claimantFilter = input.claimant;
|
|
425
|
-
agentType = input.agentType;
|
|
426
|
-
store = loadClaims();
|
|
427
|
-
claims = Object.values(store.claims);
|
|
428
|
-
if (status && status !== 'all') {
|
|
429
|
-
claims = claims.filter(function (c) { return c.status === status; });
|
|
430
|
-
}
|
|
431
|
-
if (claimantFilter) {
|
|
432
|
-
claims = claims.filter(function (c) { return formatClaimant(c.claimant).includes(claimantFilter); });
|
|
433
|
-
}
|
|
434
|
-
if (agentType) {
|
|
435
|
-
claims = claims.filter(function (c) {
|
|
436
|
-
return c.claimant.type === 'agent' && c.claimant.agentType === agentType;
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
return [2 /*return*/, {
|
|
440
|
-
success: true,
|
|
441
|
-
claims: claims,
|
|
442
|
-
count: claims.length,
|
|
443
|
-
stealableCount: Object.keys(store.stealable).length
|
|
444
|
-
}];
|
|
445
|
-
});
|
|
446
|
-
}); }
|
|
447
380
|
},
|
|
448
381
|
{
|
|
449
382
|
name: 'claims_mark-stealable',
|
|
@@ -454,57 +387,54 @@ export var claimsTools = [
|
|
|
454
387
|
properties: {
|
|
455
388
|
issueId: {
|
|
456
389
|
type: 'string',
|
|
457
|
-
description: 'Issue ID to mark stealable'
|
|
390
|
+
description: 'Issue ID to mark stealable',
|
|
458
391
|
},
|
|
459
392
|
reason: {
|
|
460
393
|
type: 'string',
|
|
461
394
|
description: 'Reason for marking stealable',
|
|
462
|
-
|
|
395
|
+
enum: ['overloaded', 'stale', 'blocked-timeout', 'voluntary'],
|
|
463
396
|
},
|
|
464
397
|
preferredTypes: {
|
|
465
398
|
type: 'array',
|
|
466
399
|
description: 'Preferred agent types to steal',
|
|
467
|
-
items: { type: 'string' }
|
|
400
|
+
items: { type: 'string' },
|
|
468
401
|
},
|
|
469
402
|
context: {
|
|
470
403
|
type: 'string',
|
|
471
|
-
description: 'Handoff context for the stealer'
|
|
472
|
-
}
|
|
404
|
+
description: 'Handoff context for the stealer',
|
|
405
|
+
},
|
|
473
406
|
},
|
|
474
|
-
required: ['issueId', 'reason']
|
|
407
|
+
required: ['issueId', 'reason'],
|
|
408
|
+
},
|
|
409
|
+
handler: async (input) => {
|
|
410
|
+
const issueId = input.issueId;
|
|
411
|
+
const reason = input.reason;
|
|
412
|
+
const preferredTypes = input.preferredTypes;
|
|
413
|
+
const context = input.context;
|
|
414
|
+
const store = loadClaims();
|
|
415
|
+
const claim = store.claims[issueId];
|
|
416
|
+
if (!claim) {
|
|
417
|
+
return { success: false, error: 'Issue is not claimed' };
|
|
418
|
+
}
|
|
419
|
+
const now = new Date().toISOString();
|
|
420
|
+
claim.status = 'stealable';
|
|
421
|
+
claim.statusChangedAt = now;
|
|
422
|
+
store.stealable[issueId] = {
|
|
423
|
+
reason,
|
|
424
|
+
stealableAt: now,
|
|
425
|
+
preferredTypes,
|
|
426
|
+
progress: claim.progress,
|
|
427
|
+
context,
|
|
428
|
+
};
|
|
429
|
+
store.claims[issueId] = claim;
|
|
430
|
+
saveClaims(store);
|
|
431
|
+
return {
|
|
432
|
+
success: true,
|
|
433
|
+
claim,
|
|
434
|
+
stealableInfo: store.stealable[issueId],
|
|
435
|
+
message: `Issue ${issueId} marked as stealable (${reason})`,
|
|
436
|
+
};
|
|
475
437
|
},
|
|
476
|
-
handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
|
|
477
|
-
var issueId, reason, preferredTypes, context, store, claim, now;
|
|
478
|
-
return __generator(this, function (_a) {
|
|
479
|
-
issueId = input.issueId;
|
|
480
|
-
reason = input.reason;
|
|
481
|
-
preferredTypes = input.preferredTypes;
|
|
482
|
-
context = input.context;
|
|
483
|
-
store = loadClaims();
|
|
484
|
-
claim = store.claims[issueId];
|
|
485
|
-
if (!claim) {
|
|
486
|
-
return [2 /*return*/, { success: false, error: 'Issue is not claimed' }];
|
|
487
|
-
}
|
|
488
|
-
now = new Date().toISOString();
|
|
489
|
-
claim.status = 'stealable';
|
|
490
|
-
claim.statusChangedAt = now;
|
|
491
|
-
store.stealable[issueId] = {
|
|
492
|
-
reason: reason,
|
|
493
|
-
stealableAt: now,
|
|
494
|
-
preferredTypes: preferredTypes,
|
|
495
|
-
progress: claim.progress,
|
|
496
|
-
context: context
|
|
497
|
-
};
|
|
498
|
-
store.claims[issueId] = claim;
|
|
499
|
-
saveClaims(store);
|
|
500
|
-
return [2 /*return*/, {
|
|
501
|
-
success: true,
|
|
502
|
-
claim: claim,
|
|
503
|
-
stealableInfo: store.stealable[issueId],
|
|
504
|
-
message: "Issue " + issueId + " marked as stealable (" + reason + ")"
|
|
505
|
-
}];
|
|
506
|
-
});
|
|
507
|
-
}); }
|
|
508
438
|
},
|
|
509
439
|
{
|
|
510
440
|
name: 'claims_steal',
|
|
@@ -515,60 +445,57 @@ export var claimsTools = [
|
|
|
515
445
|
properties: {
|
|
516
446
|
issueId: {
|
|
517
447
|
type: 'string',
|
|
518
|
-
description: 'Issue ID to steal'
|
|
448
|
+
description: 'Issue ID to steal',
|
|
519
449
|
},
|
|
520
450
|
stealer: {
|
|
521
451
|
type: 'string',
|
|
522
|
-
description: 'Claimant stealing the issue'
|
|
523
|
-
}
|
|
452
|
+
description: 'Claimant stealing the issue',
|
|
453
|
+
},
|
|
524
454
|
},
|
|
525
|
-
required: ['issueId', 'stealer']
|
|
455
|
+
required: ['issueId', 'stealer'],
|
|
526
456
|
},
|
|
527
|
-
handler:
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
error: "Issue prefers agent types: " + stealableInfo.preferredTypes.join(', ')
|
|
551
|
-
}];
|
|
552
|
-
}
|
|
457
|
+
handler: async (input) => {
|
|
458
|
+
const issueId = input.issueId;
|
|
459
|
+
const stealerStr = input.stealer;
|
|
460
|
+
const stealer = parseClaimant(stealerStr);
|
|
461
|
+
if (!stealer) {
|
|
462
|
+
return { success: false, error: 'Invalid claimant format' };
|
|
463
|
+
}
|
|
464
|
+
const store = loadClaims();
|
|
465
|
+
const claim = store.claims[issueId];
|
|
466
|
+
const stealableInfo = store.stealable[issueId];
|
|
467
|
+
if (!claim) {
|
|
468
|
+
return { success: false, error: 'Issue is not claimed' };
|
|
469
|
+
}
|
|
470
|
+
if (!stealableInfo) {
|
|
471
|
+
return { success: false, error: 'Issue is not stealable' };
|
|
472
|
+
}
|
|
473
|
+
// Check preferred types
|
|
474
|
+
if (stealableInfo.preferredTypes && stealableInfo.preferredTypes.length > 0) {
|
|
475
|
+
if (stealer.type === 'agent' && !stealableInfo.preferredTypes.includes(stealer.agentType)) {
|
|
476
|
+
return {
|
|
477
|
+
success: false,
|
|
478
|
+
error: `Issue prefers agent types: ${stealableInfo.preferredTypes.join(', ')}`,
|
|
479
|
+
};
|
|
553
480
|
}
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
}
|
|
571
|
-
}
|
|
481
|
+
}
|
|
482
|
+
const previousOwner = claim.claimant;
|
|
483
|
+
const now = new Date().toISOString();
|
|
484
|
+
claim.claimant = stealer;
|
|
485
|
+
claim.status = 'active';
|
|
486
|
+
claim.statusChangedAt = now;
|
|
487
|
+
claim.context = stealableInfo.context;
|
|
488
|
+
delete store.stealable[issueId];
|
|
489
|
+
store.claims[issueId] = claim;
|
|
490
|
+
saveClaims(store);
|
|
491
|
+
return {
|
|
492
|
+
success: true,
|
|
493
|
+
claim,
|
|
494
|
+
previousOwner,
|
|
495
|
+
stealableInfo,
|
|
496
|
+
message: `Issue ${issueId} stolen by ${formatClaimant(stealer)}`,
|
|
497
|
+
};
|
|
498
|
+
},
|
|
572
499
|
},
|
|
573
500
|
{
|
|
574
501
|
name: 'claims_stealable',
|
|
@@ -579,31 +506,27 @@ export var claimsTools = [
|
|
|
579
506
|
properties: {
|
|
580
507
|
agentType: {
|
|
581
508
|
type: 'string',
|
|
582
|
-
description: 'Filter by preferred agent type'
|
|
583
|
-
}
|
|
509
|
+
description: 'Filter by preferred agent type',
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
},
|
|
513
|
+
handler: async (input) => {
|
|
514
|
+
const agentType = input.agentType;
|
|
515
|
+
const store = loadClaims();
|
|
516
|
+
let stealableIssues = Object.entries(store.stealable).map(([issueId, info]) => ({
|
|
517
|
+
issueId,
|
|
518
|
+
...info,
|
|
519
|
+
claim: store.claims[issueId],
|
|
520
|
+
}));
|
|
521
|
+
if (agentType) {
|
|
522
|
+
stealableIssues = stealableIssues.filter(s => !s.preferredTypes || s.preferredTypes.length === 0 || s.preferredTypes.includes(agentType));
|
|
584
523
|
}
|
|
524
|
+
return {
|
|
525
|
+
success: true,
|
|
526
|
+
stealable: stealableIssues,
|
|
527
|
+
count: stealableIssues.length,
|
|
528
|
+
};
|
|
585
529
|
},
|
|
586
|
-
handler: function (input) { return __awaiter(void 0, void 0, void 0, function () {
|
|
587
|
-
var agentType, store, stealableIssues;
|
|
588
|
-
return __generator(this, function (_a) {
|
|
589
|
-
agentType = input.agentType;
|
|
590
|
-
store = loadClaims();
|
|
591
|
-
stealableIssues = Object.entries(store.stealable).map(function (_a) {
|
|
592
|
-
var issueId = _a[0], info = _a[1];
|
|
593
|
-
return (__assign(__assign({ issueId: issueId }, info), { claim: store.claims[issueId] }));
|
|
594
|
-
});
|
|
595
|
-
if (agentType) {
|
|
596
|
-
stealableIssues = stealableIssues.filter(function (s) {
|
|
597
|
-
return !s.preferredTypes || s.preferredTypes.length === 0 || s.preferredTypes.includes(agentType);
|
|
598
|
-
});
|
|
599
|
-
}
|
|
600
|
-
return [2 /*return*/, {
|
|
601
|
-
success: true,
|
|
602
|
-
stealable: stealableIssues,
|
|
603
|
-
count: stealableIssues.length
|
|
604
|
-
}];
|
|
605
|
-
});
|
|
606
|
-
}); }
|
|
607
530
|
},
|
|
608
531
|
{
|
|
609
532
|
name: 'claims_load',
|
|
@@ -614,72 +537,69 @@ export var claimsTools = [
|
|
|
614
537
|
properties: {
|
|
615
538
|
agentId: {
|
|
616
539
|
type: 'string',
|
|
617
|
-
description: 'Specific agent ID (optional)'
|
|
540
|
+
description: 'Specific agent ID (optional)',
|
|
618
541
|
},
|
|
619
542
|
agentType: {
|
|
620
543
|
type: 'string',
|
|
621
|
-
description: 'Filter by agent type'
|
|
622
|
-
}
|
|
623
|
-
}
|
|
544
|
+
description: 'Filter by agent type',
|
|
545
|
+
},
|
|
546
|
+
},
|
|
624
547
|
},
|
|
625
|
-
handler:
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
key
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
blockedCount: 0
|
|
644
|
-
});
|
|
645
|
-
}
|
|
646
|
-
load = agentLoads.get(key);
|
|
647
|
-
load.claims.push(claim);
|
|
648
|
-
if (claim.status === 'blocked') {
|
|
649
|
-
load.blockedCount++;
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
loads = Array.from(agentLoads.values());
|
|
653
|
-
if (agentId) {
|
|
654
|
-
loads = loads.filter(function (l) { return l.agentId === agentId; });
|
|
548
|
+
handler: async (input) => {
|
|
549
|
+
const agentId = input.agentId;
|
|
550
|
+
const agentType = input.agentType;
|
|
551
|
+
const store = loadClaims();
|
|
552
|
+
const claims = Object.values(store.claims);
|
|
553
|
+
// Group claims by agent
|
|
554
|
+
const agentLoads = new Map();
|
|
555
|
+
for (const claim of claims) {
|
|
556
|
+
if (claim.claimant.type !== 'agent')
|
|
557
|
+
continue;
|
|
558
|
+
const key = claim.claimant.agentId;
|
|
559
|
+
if (!agentLoads.has(key)) {
|
|
560
|
+
agentLoads.set(key, {
|
|
561
|
+
agentId: key,
|
|
562
|
+
agentType: claim.claimant.agentType,
|
|
563
|
+
claims: [],
|
|
564
|
+
blockedCount: 0,
|
|
565
|
+
});
|
|
655
566
|
}
|
|
656
|
-
|
|
657
|
-
|
|
567
|
+
const load = agentLoads.get(key);
|
|
568
|
+
load.claims.push(claim);
|
|
569
|
+
if (claim.status === 'blocked') {
|
|
570
|
+
load.blockedCount++;
|
|
658
571
|
}
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
572
|
+
}
|
|
573
|
+
let loads = Array.from(agentLoads.values());
|
|
574
|
+
if (agentId) {
|
|
575
|
+
loads = loads.filter(l => l.agentId === agentId);
|
|
576
|
+
}
|
|
577
|
+
if (agentType) {
|
|
578
|
+
loads = loads.filter(l => l.agentType === agentType);
|
|
579
|
+
}
|
|
580
|
+
const result = loads.map(l => ({
|
|
581
|
+
agentId: l.agentId,
|
|
582
|
+
agentType: l.agentType,
|
|
583
|
+
claimCount: l.claims.length,
|
|
584
|
+
maxClaims: 5, // Default max
|
|
585
|
+
utilization: l.claims.length / 5,
|
|
586
|
+
blockedCount: l.blockedCount,
|
|
587
|
+
claims: l.claims.map(c => ({
|
|
588
|
+
issueId: c.issueId,
|
|
589
|
+
status: c.status,
|
|
590
|
+
progress: c.progress,
|
|
591
|
+
})),
|
|
592
|
+
}));
|
|
593
|
+
return {
|
|
594
|
+
success: true,
|
|
595
|
+
loads: result,
|
|
596
|
+
totalAgents: result.length,
|
|
597
|
+
totalClaims: claims.filter(c => c.claimant.type === 'agent').length,
|
|
598
|
+
avgUtilization: result.length > 0
|
|
599
|
+
? result.reduce((sum, l) => sum + l.utilization, 0) / result.length
|
|
600
|
+
: 0,
|
|
601
|
+
};
|
|
602
|
+
},
|
|
683
603
|
},
|
|
684
604
|
{
|
|
685
605
|
name: 'claims_board',
|
|
@@ -687,52 +607,48 @@ export var claimsTools = [
|
|
|
687
607
|
category: 'claims',
|
|
688
608
|
inputSchema: {
|
|
689
609
|
type: 'object',
|
|
690
|
-
properties: {}
|
|
610
|
+
properties: {},
|
|
691
611
|
},
|
|
692
|
-
handler:
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
claim = claims_2[_i];
|
|
708
|
-
if (byStatus[claim.status]) {
|
|
709
|
-
byStatus[claim.status].push(claim);
|
|
710
|
-
}
|
|
612
|
+
handler: async () => {
|
|
613
|
+
const store = loadClaims();
|
|
614
|
+
const claims = Object.values(store.claims);
|
|
615
|
+
const byStatus = {
|
|
616
|
+
active: [],
|
|
617
|
+
paused: [],
|
|
618
|
+
blocked: [],
|
|
619
|
+
'handoff-pending': [],
|
|
620
|
+
'review-requested': [],
|
|
621
|
+
stealable: [],
|
|
622
|
+
completed: [],
|
|
623
|
+
};
|
|
624
|
+
for (const claim of claims) {
|
|
625
|
+
if (byStatus[claim.status]) {
|
|
626
|
+
byStatus[claim.status].push(claim);
|
|
711
627
|
}
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
}
|
|
735
|
-
}
|
|
628
|
+
}
|
|
629
|
+
const humanClaims = claims.filter(c => c.claimant.type === 'human');
|
|
630
|
+
const agentClaims = claims.filter(c => c.claimant.type === 'agent');
|
|
631
|
+
return {
|
|
632
|
+
success: true,
|
|
633
|
+
board: {
|
|
634
|
+
active: byStatus.active.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant), progress: c.progress })),
|
|
635
|
+
paused: byStatus.paused.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant) })),
|
|
636
|
+
blocked: byStatus.blocked.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant), reason: c.blockReason })),
|
|
637
|
+
'handoff-pending': byStatus['handoff-pending'].map(c => ({ issueId: c.issueId, from: formatClaimant(c.claimant), to: c.handoffTo ? formatClaimant(c.handoffTo) : null })),
|
|
638
|
+
'review-requested': byStatus['review-requested'].map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant) })),
|
|
639
|
+
stealable: byStatus.stealable.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant) })),
|
|
640
|
+
completed: byStatus.completed.map(c => ({ issueId: c.issueId, claimant: formatClaimant(c.claimant) })),
|
|
641
|
+
},
|
|
642
|
+
summary: {
|
|
643
|
+
total: claims.length,
|
|
644
|
+
active: byStatus.active.length,
|
|
645
|
+
blocked: byStatus.blocked.length,
|
|
646
|
+
stealable: byStatus.stealable.length,
|
|
647
|
+
humanClaims: humanClaims.length,
|
|
648
|
+
agentClaims: agentClaims.length,
|
|
649
|
+
},
|
|
650
|
+
};
|
|
651
|
+
},
|
|
736
652
|
},
|
|
737
653
|
{
|
|
738
654
|
name: 'claims_rebalance',
|
|
@@ -744,80 +660,72 @@ export var claimsTools = [
|
|
|
744
660
|
dryRun: {
|
|
745
661
|
type: 'boolean',
|
|
746
662
|
description: 'Preview rebalancing without applying',
|
|
747
|
-
|
|
663
|
+
default: true,
|
|
748
664
|
},
|
|
749
665
|
targetUtilization: {
|
|
750
666
|
type: 'number',
|
|
751
667
|
description: 'Target utilization (0-1)',
|
|
752
|
-
|
|
753
|
-
}
|
|
754
|
-
}
|
|
668
|
+
default: 0.7,
|
|
669
|
+
},
|
|
670
|
+
},
|
|
755
671
|
},
|
|
756
|
-
handler:
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
key
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
to: "agent:" + target.agentId + ":" + target.agentType,
|
|
795
|
-
reason: 'Load balancing'
|
|
796
|
-
});
|
|
797
|
-
}
|
|
672
|
+
handler: async (input) => {
|
|
673
|
+
const dryRun = input.dryRun !== false;
|
|
674
|
+
const targetUtilization = input.targetUtilization || 0.7;
|
|
675
|
+
const store = loadClaims();
|
|
676
|
+
const claims = Object.values(store.claims);
|
|
677
|
+
// Group by agent
|
|
678
|
+
const agentLoads = new Map();
|
|
679
|
+
for (const claim of claims) {
|
|
680
|
+
if (claim.claimant.type !== 'agent')
|
|
681
|
+
continue;
|
|
682
|
+
const key = claim.claimant.agentId;
|
|
683
|
+
if (!agentLoads.has(key)) {
|
|
684
|
+
agentLoads.set(key, { agentId: key, agentType: claim.claimant.agentType, claims: [] });
|
|
685
|
+
}
|
|
686
|
+
agentLoads.get(key).claims.push(claim);
|
|
687
|
+
}
|
|
688
|
+
const loads = Array.from(agentLoads.values());
|
|
689
|
+
const maxClaims = 5;
|
|
690
|
+
const avgLoad = loads.length > 0
|
|
691
|
+
? loads.reduce((sum, l) => sum + l.claims.length, 0) / loads.length
|
|
692
|
+
: 0;
|
|
693
|
+
const overloaded = loads.filter(l => l.claims.length > maxClaims * targetUtilization * 1.5);
|
|
694
|
+
const underloaded = loads.filter(l => l.claims.length < maxClaims * targetUtilization * 0.5);
|
|
695
|
+
const suggestions = [];
|
|
696
|
+
for (const over of overloaded) {
|
|
697
|
+
// Find low-progress claims to redistribute
|
|
698
|
+
const movable = over.claims
|
|
699
|
+
.filter(c => c.progress < 25 && c.status === 'active')
|
|
700
|
+
.slice(0, over.claims.length - Math.ceil(maxClaims * targetUtilization));
|
|
701
|
+
for (const claim of movable) {
|
|
702
|
+
const target = underloaded.find(u => u.agentType === over.agentType && u.claims.length < maxClaims);
|
|
703
|
+
if (target) {
|
|
704
|
+
suggestions.push({
|
|
705
|
+
issueId: claim.issueId,
|
|
706
|
+
from: `agent:${over.agentId}:${over.agentType}`,
|
|
707
|
+
to: `agent:${target.agentId}:${target.agentType}`,
|
|
708
|
+
reason: 'Load balancing',
|
|
709
|
+
});
|
|
798
710
|
}
|
|
799
|
-
};
|
|
800
|
-
for (_a = 0, overloaded_1 = overloaded; _a < overloaded_1.length; _a++) {
|
|
801
|
-
over = overloaded_1[_a];
|
|
802
|
-
_loop_1(over);
|
|
803
711
|
}
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
}
|
|
712
|
+
}
|
|
713
|
+
return {
|
|
714
|
+
success: true,
|
|
715
|
+
dryRun,
|
|
716
|
+
suggestions,
|
|
717
|
+
metrics: {
|
|
718
|
+
totalAgents: loads.length,
|
|
719
|
+
avgLoad,
|
|
720
|
+
overloadedCount: overloaded.length,
|
|
721
|
+
underloadedCount: underloaded.length,
|
|
722
|
+
targetUtilization,
|
|
723
|
+
},
|
|
724
|
+
message: dryRun
|
|
725
|
+
? `Found ${suggestions.length} rebalancing opportunities (dry run)`
|
|
726
|
+
: `Applied ${suggestions.length} rebalancing moves`,
|
|
727
|
+
};
|
|
728
|
+
},
|
|
821
729
|
},
|
|
822
730
|
];
|
|
823
731
|
export default claimsTools;
|