agent-nuvira 3.3.1 → 3.3.4
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/README.md +18 -13
- package/dist/agent-sdk/src/agent.d.ts +2 -0
- package/dist/agent-sdk/src/agent.d.ts.map +1 -1
- package/dist/agent-sdk/src/define.d.ts +64 -0
- package/dist/agent-sdk/src/define.d.ts.map +1 -0
- package/dist/agent-sdk/src/define.js +76 -0
- package/dist/agent-sdk/src/define.js.map +1 -0
- package/dist/agent-sdk/src/index.d.ts +9 -0
- package/dist/agent-sdk/src/index.d.ts.map +1 -1
- package/dist/agent-sdk/src/index.js +9 -0
- package/dist/agent-sdk/src/index.js.map +1 -1
- package/dist/agent-sdk/src/scaffold.d.ts +11 -0
- package/dist/agent-sdk/src/scaffold.d.ts.map +1 -1
- package/dist/agent-sdk/src/scaffold.js +16 -6
- package/dist/agent-sdk/src/scaffold.js.map +1 -1
- package/dist/agents/agents/runner.d.ts +9 -0
- package/dist/agents/agents/runner.d.ts.map +1 -1
- package/dist/agents/agents/runner.js +34 -12
- package/dist/agents/agents/runner.js.map +1 -1
- package/dist/agents/agents/writer-tool-calling.d.ts.map +1 -1
- package/dist/agents/agents/writer-tool-calling.js +7 -2
- package/dist/agents/agents/writer-tool-calling.js.map +1 -1
- package/dist/agents/agents/writer.d.ts.map +1 -1
- package/dist/agents/agents/writer.js +7 -1
- package/dist/agents/agents/writer.js.map +1 -1
- package/dist/agents/artifact-verification.d.ts +102 -0
- package/dist/agents/artifact-verification.d.ts.map +1 -0
- package/dist/agents/artifact-verification.js +216 -0
- package/dist/agents/artifact-verification.js.map +1 -0
- package/dist/agents/checkpoint-store.d.ts +73 -0
- package/dist/agents/checkpoint-store.d.ts.map +1 -1
- package/dist/agents/checkpoint-store.js +161 -0
- package/dist/agents/checkpoint-store.js.map +1 -1
- package/dist/agents/credential-store.d.ts +120 -0
- package/dist/agents/credential-store.d.ts.map +1 -1
- package/dist/agents/credential-store.js +358 -19
- package/dist/agents/credential-store.js.map +1 -1
- package/dist/agents/long-form-plan.d.ts.map +1 -1
- package/dist/agents/long-form-plan.js +2 -1
- package/dist/agents/long-form-plan.js.map +1 -1
- package/dist/agents/orchestrator.d.ts +10 -1
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +239 -79
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/agents/phase-engine.d.ts +61 -0
- package/dist/agents/phase-engine.d.ts.map +1 -1
- package/dist/agents/phase-engine.js +68 -2
- package/dist/agents/phase-engine.js.map +1 -1
- package/dist/agents/prompt-assembly.d.ts +11 -0
- package/dist/agents/prompt-assembly.d.ts.map +1 -1
- package/dist/agents/prompt-assembly.js +17 -0
- package/dist/agents/prompt-assembly.js.map +1 -1
- package/dist/agents/release-preflight.d.ts +121 -0
- package/dist/agents/release-preflight.d.ts.map +1 -0
- package/dist/agents/release-preflight.js +259 -0
- package/dist/agents/release-preflight.js.map +1 -0
- package/dist/agents/release-runner.d.ts +157 -0
- package/dist/agents/release-runner.d.ts.map +1 -0
- package/dist/agents/release-runner.js +719 -0
- package/dist/agents/release-runner.js.map +1 -0
- package/dist/agents/step-handoff.d.ts +190 -0
- package/dist/agents/step-handoff.d.ts.map +1 -0
- package/dist/agents/step-handoff.js +443 -0
- package/dist/agents/step-handoff.js.map +1 -0
- package/dist/cli/agent.d.ts +2 -2
- package/dist/cli/agent.js +10 -10
- package/dist/cli/benchmark.d.ts.map +1 -1
- package/dist/cli/benchmark.js +11 -4
- package/dist/cli/benchmark.js.map +1 -1
- package/dist/cli/chat.d.ts +94 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +379 -24
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +8 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +9 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/credentials.d.ts +28 -0
- package/dist/cli/credentials.d.ts.map +1 -0
- package/dist/cli/credentials.js +213 -0
- package/dist/cli/credentials.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +3 -2
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/edit.js +2 -2
- package/dist/cli/eval.d.ts +17 -0
- package/dist/cli/eval.d.ts.map +1 -1
- package/dist/cli/eval.js +105 -2
- package/dist/cli/eval.js.map +1 -1
- package/dist/cli/execute.d.ts +16 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +192 -22
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/failover-runner.d.ts.map +1 -1
- package/dist/cli/failover-runner.js +9 -3
- package/dist/cli/failover-runner.js.map +1 -1
- package/dist/cli/loop-executor.d.ts +55 -0
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +285 -19
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +9 -8
- package/dist/cli/model.js.map +1 -1
- package/dist/cli/models.d.ts +1 -1
- package/dist/cli/models.js +4 -4
- package/dist/cli/nlu.d.ts.map +1 -1
- package/dist/cli/nlu.js +8 -2
- package/dist/cli/nlu.js.map +1 -1
- package/dist/cli/parity.d.ts +85 -0
- package/dist/cli/parity.d.ts.map +1 -0
- package/dist/cli/parity.js +506 -0
- package/dist/cli/parity.js.map +1 -0
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +2 -1
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/publish.d.ts +22 -0
- package/dist/cli/publish.d.ts.map +1 -1
- package/dist/cli/publish.js +109 -13
- package/dist/cli/publish.js.map +1 -1
- package/dist/cli/retrieval.d.ts.map +1 -1
- package/dist/cli/retrieval.js +5 -4
- package/dist/cli/retrieval.js.map +1 -1
- package/dist/cli/sdk.js +4 -4
- package/dist/cli/sdk.js.map +1 -1
- package/dist/cli/trace.d.ts.map +1 -1
- package/dist/cli/trace.js +2 -1
- package/dist/cli/trace.js.map +1 -1
- package/dist/cli/workflow.js +2 -2
- package/dist/cli/workflow.js.map +1 -1
- package/dist/config/live-credentials.d.ts +57 -0
- package/dist/config/live-credentials.d.ts.map +1 -0
- package/dist/config/live-credentials.js +126 -0
- package/dist/config/live-credentials.js.map +1 -0
- package/dist/config/paths.d.ts +18 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +25 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/types.d.ts +44 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/federation/a2a-types.js +1 -1
- package/dist/federation/a2a-types.js.map +1 -1
- package/dist/findings/verdicts.d.ts +241 -0
- package/dist/findings/verdicts.d.ts.map +1 -0
- package/dist/findings/verdicts.js +284 -0
- package/dist/findings/verdicts.js.map +1 -0
- package/dist/gateway/adapters.d.ts +65 -0
- package/dist/gateway/adapters.d.ts.map +1 -1
- package/dist/gateway/adapters.js +216 -10
- package/dist/gateway/adapters.js.map +1 -1
- package/dist/gateway/channel-directory.d.ts +31 -0
- package/dist/gateway/channel-directory.d.ts.map +1 -1
- package/dist/gateway/channel-directory.js +40 -0
- package/dist/gateway/channel-directory.js.map +1 -1
- package/dist/gateway/gateway-log.d.ts +1 -1
- package/dist/gateway/gateway-log.d.ts.map +1 -1
- package/dist/gateway/gateway-log.js.map +1 -1
- package/dist/gateway/hooks.d.ts +87 -19
- package/dist/gateway/hooks.d.ts.map +1 -1
- package/dist/gateway/hooks.js +62 -23
- package/dist/gateway/hooks.js.map +1 -1
- package/dist/gateway/inbound-media.d.ts +147 -0
- package/dist/gateway/inbound-media.d.ts.map +1 -0
- package/dist/gateway/inbound-media.js +317 -0
- package/dist/gateway/inbound-media.js.map +1 -0
- package/dist/gateway/inbox.d.ts +8 -1
- package/dist/gateway/inbox.d.ts.map +1 -1
- package/dist/gateway/inbox.js.map +1 -1
- package/dist/gateway/platform-config.d.ts +14 -0
- package/dist/gateway/platform-config.d.ts.map +1 -1
- package/dist/gateway/platform-config.js +26 -8
- package/dist/gateway/platform-config.js.map +1 -1
- package/dist/gateway/realtime.d.ts +114 -0
- package/dist/gateway/realtime.d.ts.map +1 -0
- package/dist/gateway/realtime.js +402 -0
- package/dist/gateway/realtime.js.map +1 -0
- package/dist/gateway/registry.d.ts +31 -0
- package/dist/gateway/registry.d.ts.map +1 -1
- package/dist/gateway/registry.js +224 -4
- package/dist/gateway/registry.js.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.js +123 -4
- package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
- package/dist/gateway/whatsapp/bridge.d.ts +6 -2
- package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/bridge.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/inference/factory.d.ts +14 -0
- package/dist/inference/factory.d.ts.map +1 -1
- package/dist/inference/factory.js +17 -0
- package/dist/inference/factory.js.map +1 -1
- package/dist/inference/groq-adapter.d.ts +2 -0
- package/dist/inference/groq-adapter.d.ts.map +1 -1
- package/dist/inference/groq-adapter.js +16 -6
- package/dist/inference/groq-adapter.js.map +1 -1
- package/dist/inference/model-validator.d.ts +6 -1
- package/dist/inference/model-validator.d.ts.map +1 -1
- package/dist/inference/model-validator.js +7 -2
- package/dist/inference/model-validator.js.map +1 -1
- package/dist/inference/route-resolver.d.ts +116 -0
- package/dist/inference/route-resolver.d.ts.map +1 -0
- package/dist/inference/route-resolver.js +159 -0
- package/dist/inference/route-resolver.js.map +1 -0
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +29 -0
- package/dist/inference/tools.js.map +1 -1
- package/dist/learning/autonomy-policy.d.ts +18 -0
- package/dist/learning/autonomy-policy.d.ts.map +1 -1
- package/dist/learning/autonomy-policy.js +35 -0
- package/dist/learning/autonomy-policy.js.map +1 -1
- package/dist/learning/benchmark.d.ts.map +1 -1
- package/dist/learning/benchmark.js +3 -2
- package/dist/learning/benchmark.js.map +1 -1
- package/dist/learning/continuation.d.ts.map +1 -1
- package/dist/learning/continuation.js +2 -1
- package/dist/learning/continuation.js.map +1 -1
- package/dist/learning/cost-tracker.d.ts.map +1 -1
- package/dist/learning/cost-tracker.js +2 -1
- package/dist/learning/cost-tracker.js.map +1 -1
- package/dist/learning/deferred-task.d.ts.map +1 -1
- package/dist/learning/deferred-task.js +13 -4
- package/dist/learning/deferred-task.js.map +1 -1
- package/dist/learning/eval-framework.d.ts.map +1 -1
- package/dist/learning/eval-framework.js +2 -1
- package/dist/learning/eval-framework.js.map +1 -1
- package/dist/learning/long-form.d.ts.map +1 -1
- package/dist/learning/long-form.js +2 -1
- package/dist/learning/long-form.js.map +1 -1
- package/dist/learning/model-registry.d.ts.map +1 -1
- package/dist/learning/model-registry.js +2 -1
- package/dist/learning/model-registry.js.map +1 -1
- package/dist/learning/reasoning-cache.d.ts.map +1 -1
- package/dist/learning/reasoning-cache.js +2 -1
- package/dist/learning/reasoning-cache.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +38 -2
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +91 -1
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +31 -18
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/learning/retrieval.d.ts.map +1 -1
- package/dist/learning/retrieval.js +2 -1
- package/dist/learning/retrieval.js.map +1 -1
- package/dist/learning/seeded-benchmark.d.ts +160 -0
- package/dist/learning/seeded-benchmark.d.ts.map +1 -0
- package/dist/learning/seeded-benchmark.js +321 -0
- package/dist/learning/seeded-benchmark.js.map +1 -0
- package/dist/learning/seeded-bugs.d.ts +142 -0
- package/dist/learning/seeded-bugs.d.ts.map +1 -0
- package/dist/learning/seeded-bugs.js +535 -0
- package/dist/learning/seeded-bugs.js.map +1 -0
- package/dist/learning/skill-store.d.ts.map +1 -1
- package/dist/learning/skill-store.js +30 -9
- package/dist/learning/skill-store.js.map +1 -1
- package/dist/learning/step-checkpoint.d.ts +127 -0
- package/dist/learning/step-checkpoint.d.ts.map +1 -0
- package/dist/learning/step-checkpoint.js +244 -0
- package/dist/learning/step-checkpoint.js.map +1 -0
- package/dist/mcp/catalog.js +2 -3
- package/dist/mcp/catalog.js.map +1 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +5 -3
- package/dist/mcp/manager.js.map +1 -1
- package/dist/nlu/intent-confirm.d.ts +23 -1
- package/dist/nlu/intent-confirm.d.ts.map +1 -1
- package/dist/nlu/intent-confirm.js +85 -2
- package/dist/nlu/intent-confirm.js.map +1 -1
- package/dist/nlu/learnings.d.ts +7 -0
- package/dist/nlu/learnings.d.ts.map +1 -1
- package/dist/nlu/learnings.js +7 -0
- package/dist/nlu/learnings.js.map +1 -1
- package/dist/observability/debug-log.d.ts +250 -0
- package/dist/observability/debug-log.d.ts.map +1 -0
- package/dist/observability/debug-log.js +500 -0
- package/dist/observability/debug-log.js.map +1 -0
- package/dist/observability/event-bus.d.ts.map +1 -1
- package/dist/observability/event-bus.js +4 -1
- package/dist/observability/event-bus.js.map +1 -1
- package/dist/observability/otel.d.ts +278 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +590 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/parity/drivers.d.ts +99 -0
- package/dist/parity/drivers.d.ts.map +1 -0
- package/dist/parity/drivers.js +1362 -0
- package/dist/parity/drivers.js.map +1 -0
- package/dist/parity/graph.d.ts +73 -0
- package/dist/parity/graph.d.ts.map +1 -0
- package/dist/parity/graph.js +162 -0
- package/dist/parity/graph.js.map +1 -0
- package/dist/parity/matrix.d.ts +105 -0
- package/dist/parity/matrix.d.ts.map +1 -0
- package/dist/parity/matrix.js +352 -0
- package/dist/parity/matrix.js.map +1 -0
- package/dist/parity/observation.d.ts +444 -0
- package/dist/parity/observation.d.ts.map +1 -0
- package/dist/parity/observation.js +333 -0
- package/dist/parity/observation.js.map +1 -0
- package/dist/parity/scenarios.d.ts +229 -0
- package/dist/parity/scenarios.d.ts.map +1 -0
- package/dist/parity/scenarios.js +175 -0
- package/dist/parity/scenarios.js.map +1 -0
- package/dist/parity/surfaces.d.ts +122 -0
- package/dist/parity/surfaces.d.ts.map +1 -0
- package/dist/parity/surfaces.js +190 -0
- package/dist/parity/surfaces.js.map +1 -0
- package/dist/runtime/fault-injection.d.ts +173 -0
- package/dist/runtime/fault-injection.d.ts.map +1 -0
- package/dist/runtime/fault-injection.js +281 -0
- package/dist/runtime/fault-injection.js.map +1 -0
- package/dist/skills/secret-capture.d.ts.map +1 -1
- package/dist/skills/secret-capture.js +9 -4
- package/dist/skills/secret-capture.js.map +1 -1
- package/dist/tools/child-agent-entry.d.ts +23 -0
- package/dist/tools/child-agent-entry.d.ts.map +1 -0
- package/dist/tools/child-agent-entry.js +129 -0
- package/dist/tools/child-agent-entry.js.map +1 -0
- package/dist/tools/child-agent-runtime.d.ts +124 -0
- package/dist/tools/child-agent-runtime.d.ts.map +1 -0
- package/dist/tools/child-agent-runtime.js +704 -0
- package/dist/tools/child-agent-runtime.js.map +1 -0
- package/dist/tools/coding-tools.d.ts.map +1 -1
- package/dist/tools/coding-tools.js +82 -10
- package/dist/tools/coding-tools.js.map +1 -1
- package/dist/tools/credentials-tool.d.ts +24 -0
- package/dist/tools/credentials-tool.d.ts.map +1 -0
- package/dist/tools/credentials-tool.js +125 -0
- package/dist/tools/credentials-tool.js.map +1 -0
- package/dist/tools/delegation-system.d.ts +31 -0
- package/dist/tools/delegation-system.d.ts.map +1 -1
- package/dist/tools/delegation-system.js +70 -9
- package/dist/tools/delegation-system.js.map +1 -1
- package/dist/tools/extract/docx.d.ts +27 -0
- package/dist/tools/extract/docx.d.ts.map +1 -0
- package/dist/tools/extract/docx.js +48 -0
- package/dist/tools/extract/docx.js.map +1 -0
- package/dist/tools/extract/html-text.d.ts +27 -0
- package/dist/tools/extract/html-text.d.ts.map +1 -0
- package/dist/tools/extract/html-text.js +86 -0
- package/dist/tools/extract/html-text.js.map +1 -0
- package/dist/tools/extract/pdf-ocr.d.ts +58 -0
- package/dist/tools/extract/pdf-ocr.d.ts.map +1 -0
- package/dist/tools/extract/pdf-ocr.js +116 -0
- package/dist/tools/extract/pdf-ocr.js.map +1 -0
- package/dist/tools/extract/pdf.d.ts +65 -0
- package/dist/tools/extract/pdf.d.ts.map +1 -0
- package/dist/tools/extract/pdf.js +197 -0
- package/dist/tools/extract/pdf.js.map +1 -0
- package/dist/tools/extract/pptx.d.ts +32 -0
- package/dist/tools/extract/pptx.d.ts.map +1 -0
- package/dist/tools/extract/pptx.js +77 -0
- package/dist/tools/extract/pptx.js.map +1 -0
- package/dist/tools/extract/xlsx.d.ts +47 -0
- package/dist/tools/extract/xlsx.d.ts.map +1 -0
- package/dist/tools/extract/xlsx.js +111 -0
- package/dist/tools/extract/xlsx.js.map +1 -0
- package/dist/tools/finding-tool.d.ts +76 -0
- package/dist/tools/finding-tool.d.ts.map +1 -0
- package/dist/tools/finding-tool.js +125 -0
- package/dist/tools/finding-tool.js.map +1 -0
- package/dist/tools/git-tool.d.ts +25 -7
- package/dist/tools/git-tool.d.ts.map +1 -1
- package/dist/tools/git-tool.js +155 -15
- package/dist/tools/git-tool.js.map +1 -1
- package/dist/tools/loop-project-context.d.ts.map +1 -1
- package/dist/tools/loop-project-context.js +16 -0
- package/dist/tools/loop-project-context.js.map +1 -1
- package/dist/tools/loop-route-feed.d.ts +57 -0
- package/dist/tools/loop-route-feed.d.ts.map +1 -0
- package/dist/tools/loop-route-feed.js +101 -0
- package/dist/tools/loop-route-feed.js.map +1 -0
- package/dist/tools/messaging-tools.d.ts +41 -11
- package/dist/tools/messaging-tools.d.ts.map +1 -1
- package/dist/tools/messaging-tools.js +104 -55
- package/dist/tools/messaging-tools.js.map +1 -1
- package/dist/tools/neutts-synth.d.ts +27 -3
- package/dist/tools/neutts-synth.d.ts.map +1 -1
- package/dist/tools/neutts-synth.js +57 -13
- package/dist/tools/neutts-synth.js.map +1 -1
- package/dist/tools/pipeline-tool.d.ts +43 -1
- package/dist/tools/pipeline-tool.d.ts.map +1 -1
- package/dist/tools/pipeline-tool.js +21 -4
- package/dist/tools/pipeline-tool.js.map +1 -1
- package/dist/tools/publish-tool.d.ts.map +1 -1
- package/dist/tools/publish-tool.js +76 -10
- package/dist/tools/publish-tool.js.map +1 -1
- package/dist/tools/read-extract.d.ts +116 -45
- package/dist/tools/read-extract.d.ts.map +1 -1
- package/dist/tools/read-extract.js +494 -158
- package/dist/tools/read-extract.js.map +1 -1
- package/dist/tools/registry.d.ts +23 -3
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +196 -29
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/run-terminal.d.ts +9 -0
- package/dist/tools/run-terminal.d.ts.map +1 -1
- package/dist/tools/run-terminal.js +80 -2
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/subagent-refusal.d.ts +15 -0
- package/dist/tools/subagent-refusal.d.ts.map +1 -0
- package/dist/tools/subagent-refusal.js +18 -0
- package/dist/tools/subagent-refusal.js.map +1 -0
- package/dist/tools/subagent-spawner.d.ts +122 -0
- package/dist/tools/subagent-spawner.d.ts.map +1 -1
- package/dist/tools/subagent-spawner.js +249 -28
- package/dist/tools/subagent-spawner.js.map +1 -1
- package/dist/tools/tool-hooks.d.ts +177 -0
- package/dist/tools/tool-hooks.d.ts.map +1 -0
- package/dist/tools/tool-hooks.js +427 -0
- package/dist/tools/tool-hooks.js.map +1 -0
- package/dist/tools/tool-loop.d.ts +94 -5
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +315 -9
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/tool-refusal.d.ts +68 -0
- package/dist/tools/tool-refusal.d.ts.map +1 -0
- package/dist/tools/tool-refusal.js +78 -0
- package/dist/tools/tool-refusal.js.map +1 -0
- package/dist/tools/toolsets.d.ts +8 -0
- package/dist/tools/toolsets.d.ts.map +1 -1
- package/dist/tools/toolsets.js +14 -4
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/tools/vision-tools.d.ts +88 -83
- package/dist/tools/vision-tools.d.ts.map +1 -1
- package/dist/tools/vision-tools.js +134 -103
- package/dist/tools/vision-tools.js.map +1 -1
- package/dist/tools/worktree.d.ts +210 -0
- package/dist/tools/worktree.d.ts.map +1 -0
- package/dist/tools/worktree.js +374 -0
- package/dist/tools/worktree.js.map +1 -0
- package/dist/utils/format.d.ts +3 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +32 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/web-dashboard/attachment-extract.d.ts +64 -0
- package/dist/web-dashboard/attachment-extract.d.ts.map +1 -0
- package/dist/web-dashboard/attachment-extract.js +154 -0
- package/dist/web-dashboard/attachment-extract.js.map +1 -0
- package/dist/web-dashboard/chat-console.d.ts +108 -1
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +36 -0
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/hub-data.d.ts +37 -0
- package/dist/web-dashboard/hub-data.d.ts.map +1 -1
- package/dist/web-dashboard/hub-data.js +61 -1
- package/dist/web-dashboard/hub-data.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +14 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +247 -13
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +196 -48
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/workflow/registry.js +1 -1
- package/dist/workflow/registry.js.map +1 -1
- package/package.json +22 -6
- package/src/web-dashboard/public/assets/{index-Cyd6tIew.css → index-XJjj2cBX.css} +1 -1
- package/src/web-dashboard/public/assets/index-YWF9FpwQ.js +207 -0
- package/src/web-dashboard/public/assets/index-YWF9FpwQ.js.map +1 -0
- package/src/web-dashboard/public/index.html +2 -2
- package/dist/tools/child-agent-worker.js +0 -212
- package/src/web-dashboard/public/assets/index-CjvoBhlz.js +0 -207
- package/src/web-dashboard/public/assets/index-CjvoBhlz.js.map +0 -1
package/README.md
CHANGED
|
@@ -158,13 +158,19 @@ This table highlights core capabilities for quick machine parsing and comparison
|
|
|
158
158
|
- **Memory compression & pruning** — automatic trajectory summarization with configurable retention policies
|
|
159
159
|
- **VS Code extension** — Chat Panel with streaming responses, slash commands, and session history;
|
|
160
160
|
Diagnostic → AI Fix from lightbulb menu; Code Lens actions (Test/Review/Explain/Fix) above functions
|
|
161
|
-
and classes;
|
|
161
|
+
and classes; 13 commands, inline code suggestions, diff viewer, agent progress panel; three
|
|
162
|
+
language-model tools so Copilot Chat can delegate to this engine (`#reviewFileWithAgentNuvira`,
|
|
163
|
+
`#explainWithAgentNuvira`, `#executeGoalWithAgentNuvira`) and a small programmatic API
|
|
164
|
+
(`openChat`, `executeGoal`, `getActiveModel`, `getQuotaStatus`). **[Full usage guide → docs/VSCODE_EXTENSION.md](docs/VSCODE_EXTENSION.md)**
|
|
162
165
|
- **22-platform multi-channel gateway** — `agent-nuvira gateway start / send / status / alias` runs the agent from Telegram, Discord, Slack, WhatsApp (Cloud API + Baileys personal bridge), Email, Signal, DingTalk, Feishu, WeCom, Mattermost, Matrix, generic Webhook, BlueBubbles (iMessage), ntfy, Teams, Google Chat, Weixin, SMS (Twilio), IRC (two-way), SimpleX (two-way), and Home Assistant — all opt-in via standard env vars per platform, with a guaranteed delivery ledger (auto-retry on `agent-nuvira gateway start`), the dashboard Channels send-test, and a `X/22 platforms configured` status line
|
|
163
166
|
- **Remote agent federation** — multi-machine collaboration with protocol, server, and client
|
|
164
167
|
- **Web UI dashboard** — React dashboard with DAG visualization, model health, cost charts, and history browser
|
|
165
168
|
- **Hybrid model routing** — intelligent model selection based on task complexity, cost, and availability
|
|
166
169
|
- **Team collaboration** — Git-synced shared config, memory, and review pipelines
|
|
167
|
-
- **Agent SDK** — `@agent-nuvira/sdk` npm package for building
|
|
170
|
+
- **Agent SDK** — `@agent-nuvira/sdk` npm package for building, testing and registering custom
|
|
171
|
+
agents: a provider-agnostic `Agent` base class, `defineAgent()` descriptors that fail at
|
|
172
|
+
definition time rather than at plan time, ten testing helpers that need no key and no network, and
|
|
173
|
+
scaffolding in three shapes. **[Full guide, with examples and an explicit depth statement → docs/AGENT_SDK.md](docs/AGENT_SDK.md)**
|
|
168
174
|
- **Provider CLI** — `agent-nuvira provider list` with color-coded status table, `agent-nuvira provider health` with per-provider diagnostics
|
|
169
175
|
- **Provider fallback routing** — automatic failover between providers with circuit breaker and configurable chain
|
|
170
176
|
- **Startup progress feedback** — first launch never looks like a silent hang: a live spinner reports each startup phase (plugins → history & search → semantic index) as it runs
|
|
@@ -226,12 +232,8 @@ This table highlights core capabilities for quick machine parsing and comparison
|
|
|
226
232
|
# Install globally
|
|
227
233
|
npm install -g agent-nuvira
|
|
228
234
|
|
|
229
|
-
# Or
|
|
230
|
-
|
|
231
|
-
cd agent-nuvira
|
|
232
|
-
npm install
|
|
233
|
-
npm run build
|
|
234
|
-
npm link
|
|
235
|
+
# Or run it without installing anything globally
|
|
236
|
+
npx agent-nuvira chat
|
|
235
237
|
```
|
|
236
238
|
|
|
237
239
|
### One-command setup for new users (recommended)
|
|
@@ -2166,9 +2168,10 @@ agent-nuvira chat --provider anthropic
|
|
|
2166
2168
|
|
|
2167
2169
|
### Setup
|
|
2168
2170
|
|
|
2171
|
+
The source is not published — npm is the distribution channel. This section is kept for the
|
|
2172
|
+
people already working on the private tree.
|
|
2173
|
+
|
|
2169
2174
|
```bash
|
|
2170
|
-
git clone https://github.com/imdheerajKube/agent-nuvira.git
|
|
2171
|
-
cd agent-nuvira
|
|
2172
2175
|
npm install
|
|
2173
2176
|
```
|
|
2174
2177
|
|
|
@@ -2279,6 +2282,8 @@ npx tsc --noEmit
|
|
|
2279
2282
|
|
|
2280
2283
|
> 🛠️ **Complete CLI reference:** [docs/COMMANDS.md](./docs/COMMANDS.md) — every command with objective, exact syntax and examples, plus the first-run expectations. [docs/COMMANDS_SURFACE.md](./docs/COMMANDS_SURFACE.md) — the same surface, generated from the live command tree and drift-guarded in CI.
|
|
2281
2284
|
>
|
|
2285
|
+
> 🧩 **Building your own agent:** [docs/AGENT_SDK.md](./docs/AGENT_SDK.md) — install, the full agent contract, `defineAgent()`'s failure modes, the ten testing helpers, scaffolding, registration, and an explicit **what you get / what you do not get**. 💻 **In the editor:** [docs/VSCODE_EXTENSION.md](./docs/VSCODE_EXTENSION.md) — all 13 commands mapped to the CLI verb each one runs, settings, keybindings, the three language-model tools, the programmatic API, and the same depth statement.
|
|
2286
|
+
|
|
2282
2287
|
> 📊 **Architecture, strategy & contribution materials:** [ARCHITECTURE.md](./ARCHITECTURE.md) — Modular execution engine design with 7 module specifications, extensibility/observability systems, and phased migration plan. [ARCHITECTURE_DIAGRAMS.md](./ARCHITECTURE_DIAGRAMS.md) — Mermaid-rendered versions of all architecture diagrams (Module Architecture, Extensibility, Safe Execution, Data Flow, Observability Bus). [PRODUCT_STRATEGY.md](./PRODUCT_STRATEGY.md) — Competitive landscape, positioning map, OKR framework, and risk register. [PITCH_DECK.md](./PITCH_DECK.md) — 10-slide investor presentation outline with talking points and data. [CONTRIBUTING.md](./CONTRIBUTING.md) — Quick-reference contributor guide with docs map, dev setup, and contribution workflow. [GATEWAY.md](./docs/GATEWAY.md) — Complete user guide for the 22-platform multi-channel gateway: what it offers, CLI + dashboard setup for every platform, channel aliases, guaranteed delivery, natural-language task dispatch, security, and troubleshooting.
|
|
2283
2288
|
|
|
2284
2289
|
| Phase | Feature | Status |
|
|
@@ -2300,7 +2305,7 @@ npx tsc --noEmit
|
|
|
2300
2305
|
| 2.5 | Provider health dashboard — `agent-nuvira doctor` | ✅ Complete |
|
|
2301
2306
|
| 2.6 | Memory compression & pruning — trajectory summarization | ✅ Complete |
|
|
2302
2307
|
| **Phase 3: Major Upgrades** | | |
|
|
2303
|
-
| 3.1 | VS Code extension —
|
|
2308
|
+
| 3.1 | VS Code extension — 13 commands, inline suggestions, diff viewer, agent progress panel | ✅ Complete |
|
|
2304
2309
|
| 3.2 | **B1: Chat Panel** — Multi-turn chat with streaming, 6 slash commands, session history, file context | ✅ Complete (v1.33.0) |
|
|
2305
2310
|
| 3.3 | **B3: Diagnostic → AI Fix** — "Fix with Agent-Nuvira" in lightbulb menu on red squiggles | ✅ Complete (v1.33.0) |
|
|
2306
2311
|
| 3.4 | **B5: Code Lens Actions** — Test/Review/Explain/Fix actions above functions and classes | ✅ Complete (v1.34.0) |
|
|
@@ -2486,12 +2491,12 @@ npx tsc --noEmit
|
|
|
2486
2491
|
### Phase 3: Major Upgrades — Advanced Agent Systems
|
|
2487
2492
|
| Feature | Description |
|
|
2488
2493
|
|---------|-------------|
|
|
2489
|
-
| **VS Code Extension** | Chat Panel (streaming, slash commands), Diagnostic→AI Fix, Code Lens actions,
|
|
2494
|
+
| **VS Code Extension** | Chat Panel (streaming, slash commands), Diagnostic→AI Fix, Code Lens actions, 13 commands, inline suggestions, diff viewer, agent progress panel |
|
|
2490
2495
|
| **Agent Federation** | Multi-machine collaboration via A2A protocol, server, and client |
|
|
2491
2496
|
| **Web Dashboard** | React + Recharts + DAG visualization, model health, cost charts |
|
|
2492
2497
|
| **Hybrid Model Routing** | Complexity-based model selection with cost optimization |
|
|
2493
2498
|
| **Team Collaboration** | Git-synced shared config, memory, and review pipelines |
|
|
2494
|
-
| **Agent SDK** | `@agent-nuvira/sdk` npm package with scaffolding CLI |
|
|
2499
|
+
| **Agent SDK** | [`@agent-nuvira/sdk`](docs/AGENT_SDK.md) npm package with scaffolding CLI |
|
|
2495
2500
|
| **Provider CLI** | `agent-nuvira provider list/health` with per-provider diagnostics |
|
|
2496
2501
|
| **Provider Fallback** | Auto-failover with circuit breaker and configurable chain |
|
|
2497
2502
|
| **Security Scanner** | Detects PII, prompt injections, and dangerous code patterns |
|
|
@@ -114,5 +114,7 @@ export interface AgentDescriptor {
|
|
|
114
114
|
tags?: string;
|
|
115
115
|
/** Agent type identifier used in task plans (defaults to kebab-case of name) */
|
|
116
116
|
agentType?: string;
|
|
117
|
+
/** Optional emoji/icon used by the CLI and progress UI (e.g. "🧩") */
|
|
118
|
+
icon?: string;
|
|
117
119
|
}
|
|
118
120
|
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent-sdk/src/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,8BAAsB,KAAK;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAEjF;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM;IAI/C;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CAGhB;AAID;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,UAAU,EAAE,UAAU,KAAK,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent-sdk/src/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,8BAAsB,KAAK;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAEjF;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM;IAI/C;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CAGhB;AAID;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,UAAU,EAAE,UAAU,KAAK,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agent-nuvira/sdk/define — Ergonomic agent descriptor helper.
|
|
3
|
+
*
|
|
4
|
+
* Hand-writing an `agentDescriptor` object is where custom agents most often go
|
|
5
|
+
* subtly wrong: the `agentType` drifts from the class name, a kebab-case typo
|
|
6
|
+
* silently never matches a plan step, or the name/description disagree with the
|
|
7
|
+
* class they describe. `defineAgent()` removes the duplication — it reads the
|
|
8
|
+
* agent's own `name`/`description`, derives a kebab-case `agentType` when one is
|
|
9
|
+
* not supplied, and validates the result at definition time so a broken
|
|
10
|
+
* descriptor fails where it is written rather than at plan time.
|
|
11
|
+
*
|
|
12
|
+
* ## Usage
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Agent, defineAgent, type AgentContext, type AgentResult, type LLMCallFn } from '@agent-nuvira/sdk';
|
|
16
|
+
*
|
|
17
|
+
* class CodeFormatter extends Agent {
|
|
18
|
+
* readonly name = 'CodeFormatter';
|
|
19
|
+
* readonly description = 'Formats source code according to project conventions';
|
|
20
|
+
* async execute(context: AgentContext, callLLM: LLMCallFn): Promise<AgentResult> {
|
|
21
|
+
* return { success: true, summary: 'Formatted' };
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* export const agentDescriptor = defineAgent({ AgentClass: CodeFormatter, tags: 'code, format' });
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @module @agent-nuvira/sdk/define
|
|
29
|
+
*/
|
|
30
|
+
import type { Agent, AgentDescriptor } from './agent.js';
|
|
31
|
+
/** Input to {@link defineAgent}. Only `AgentClass` is required. */
|
|
32
|
+
export interface DefineAgentInput<T extends Agent> {
|
|
33
|
+
/** The agent class (its no-arg constructor is called once to read metadata). */
|
|
34
|
+
AgentClass: new () => T;
|
|
35
|
+
/** Agent type used in task plans. Defaults to kebab-case of the agent name. */
|
|
36
|
+
agentType?: string;
|
|
37
|
+
/** Comma-separated tags for categorization. */
|
|
38
|
+
tags?: string;
|
|
39
|
+
/** Emoji/icon for the agent, used by the CLI and progress UI. */
|
|
40
|
+
icon?: string;
|
|
41
|
+
/** Override the name (defaults to the instance's `name`). */
|
|
42
|
+
name?: string;
|
|
43
|
+
/** Override the description (defaults to the instance's `description`). */
|
|
44
|
+
description?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A descriptor with every field resolved. Unlike {@link AgentDescriptor},
|
|
48
|
+
* `name`, `description` and `agentType` are guaranteed present.
|
|
49
|
+
*/
|
|
50
|
+
export interface DefinedAgent extends AgentDescriptor {
|
|
51
|
+
name: string;
|
|
52
|
+
description: string;
|
|
53
|
+
agentType: string;
|
|
54
|
+
}
|
|
55
|
+
/** "CodeFormatter" → "code-formatter"; "HTTPClient" → "http-client". */
|
|
56
|
+
export declare function toKebabCase(pascal: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* Build a validated agent descriptor from an agent class.
|
|
59
|
+
*
|
|
60
|
+
* @throws If the agent declares no name/description, if an explicit `agentType`
|
|
61
|
+
* is not kebab-case, or if the class cannot be instantiated.
|
|
62
|
+
*/
|
|
63
|
+
export declare function defineAgent<T extends Agent>(input: DefineAgentInput<T>): DefinedAgent;
|
|
64
|
+
//# sourceMappingURL=define.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/agent-sdk/src/define.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIzD,mEAAmE;AACnE,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,KAAK;IAC/C,gFAAgF;IAChF,UAAU,EAAE,UAAU,CAAC,CAAC;IACxB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKlD;AAID;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAiCrF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agent-nuvira/sdk/define — Ergonomic agent descriptor helper.
|
|
3
|
+
*
|
|
4
|
+
* Hand-writing an `agentDescriptor` object is where custom agents most often go
|
|
5
|
+
* subtly wrong: the `agentType` drifts from the class name, a kebab-case typo
|
|
6
|
+
* silently never matches a plan step, or the name/description disagree with the
|
|
7
|
+
* class they describe. `defineAgent()` removes the duplication — it reads the
|
|
8
|
+
* agent's own `name`/`description`, derives a kebab-case `agentType` when one is
|
|
9
|
+
* not supplied, and validates the result at definition time so a broken
|
|
10
|
+
* descriptor fails where it is written rather than at plan time.
|
|
11
|
+
*
|
|
12
|
+
* ## Usage
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Agent, defineAgent, type AgentContext, type AgentResult, type LLMCallFn } from '@agent-nuvira/sdk';
|
|
16
|
+
*
|
|
17
|
+
* class CodeFormatter extends Agent {
|
|
18
|
+
* readonly name = 'CodeFormatter';
|
|
19
|
+
* readonly description = 'Formats source code according to project conventions';
|
|
20
|
+
* async execute(context: AgentContext, callLLM: LLMCallFn): Promise<AgentResult> {
|
|
21
|
+
* return { success: true, summary: 'Formatted' };
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* export const agentDescriptor = defineAgent({ AgentClass: CodeFormatter, tags: 'code, format' });
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @module @agent-nuvira/sdk/define
|
|
29
|
+
*/
|
|
30
|
+
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
31
|
+
/** "CodeFormatter" → "code-formatter"; "HTTPClient" → "http-client". */
|
|
32
|
+
export function toKebabCase(pascal) {
|
|
33
|
+
return pascal
|
|
34
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
35
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
|
|
36
|
+
.toLowerCase();
|
|
37
|
+
}
|
|
38
|
+
// ─── defineAgent ────────────────────────────────────────────────────────────
|
|
39
|
+
/**
|
|
40
|
+
* Build a validated agent descriptor from an agent class.
|
|
41
|
+
*
|
|
42
|
+
* @throws If the agent declares no name/description, if an explicit `agentType`
|
|
43
|
+
* is not kebab-case, or if the class cannot be instantiated.
|
|
44
|
+
*/
|
|
45
|
+
export function defineAgent(input) {
|
|
46
|
+
if (!input || typeof input.AgentClass !== 'function') {
|
|
47
|
+
throw new Error('defineAgent: `AgentClass` is required and must be a class constructor.');
|
|
48
|
+
}
|
|
49
|
+
let instance;
|
|
50
|
+
try {
|
|
51
|
+
instance = new input.AgentClass();
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
55
|
+
throw new Error(`defineAgent: could not instantiate ${input.AgentClass.name || 'agent'} — ${msg}`);
|
|
56
|
+
}
|
|
57
|
+
const name = (input.name ?? instance.name ?? '').trim();
|
|
58
|
+
const description = (input.description ?? instance.description ?? '').trim();
|
|
59
|
+
if (!name)
|
|
60
|
+
throw new Error('defineAgent: agent must declare a non-empty `name`.');
|
|
61
|
+
if (!description)
|
|
62
|
+
throw new Error(`defineAgent: agent '${name}' must declare a non-empty \`description\`.`);
|
|
63
|
+
const agentType = input.agentType ?? toKebabCase(name);
|
|
64
|
+
if (!/^[a-z][a-z0-9-]*$/.test(agentType)) {
|
|
65
|
+
throw new Error(`defineAgent: agentType "${agentType}" must be kebab-case (lowercase letters, digits, hyphens).`);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
AgentClass: input.AgentClass,
|
|
69
|
+
name,
|
|
70
|
+
description,
|
|
71
|
+
agentType,
|
|
72
|
+
tags: input.tags,
|
|
73
|
+
icon: input.icon,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/agent-sdk/src/define.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAgCH,+EAA+E;AAE/E,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,MAAM;SACV,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAkB,KAA0B;IACrE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,QAAW,CAAC;IAChB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAClF,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,6CAA6C,CAAC,CAAC;IAE5G,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,4DAA4D,CACjG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,IAAI;QACJ,WAAW;QACX,SAAS;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -24,10 +24,19 @@
|
|
|
24
24
|
* - `@agent-nuvira/sdk/agent` — Agent class only
|
|
25
25
|
* - `@agent-nuvira/sdk/types` — Type definitions only
|
|
26
26
|
* - `@agent-nuvira/sdk/testing` — Testing utilities (mock context, mock LLM, assertions)
|
|
27
|
+
* - `@agent-nuvira/sdk/register` — Register/unregister a custom agent with the orchestrator
|
|
28
|
+
* - `@agent-nuvira/sdk/scaffold` — Scaffold a new custom agent project
|
|
29
|
+
* - `@agent-nuvira/sdk/define` — `defineAgent()` descriptor helper
|
|
27
30
|
*
|
|
28
31
|
* @module @agent-nuvira/sdk
|
|
29
32
|
*/
|
|
30
33
|
export { Agent } from './agent.js';
|
|
31
34
|
export type { AgentDescriptor } from './agent.js';
|
|
35
|
+
export { registerAgent, unregisterAgent } from './register.js';
|
|
36
|
+
export type { RegisterOptions, RegisterResult } from './register.js';
|
|
37
|
+
export { scaffold, listTemplates } from './scaffold.js';
|
|
38
|
+
export type { ScaffoldOptions, ScaffoldTemplate } from './scaffold.js';
|
|
39
|
+
export { defineAgent, toKebabCase } from './define.js';
|
|
40
|
+
export type { DefineAgentInput, DefinedAgent } from './define.js';
|
|
32
41
|
export type { TaskStatus, TaskStep, Artifact, FileChange, AgentMessage, LLMCallFn, InferenceOptions, RateLimitInfo, RateLimitAction, OnRateLimit, AgentContext, AgentResult, OrchestratorOptions, OrchestrationResult, } from './types.js';
|
|
33
42
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-sdk/src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-sdk/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIrE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIvE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIlE,YAAY,EAEV,UAAU,EACV,QAAQ,EAER,QAAQ,EACR,UAAU,EAEV,YAAY,EAEZ,SAAS,EACT,gBAAgB,EAEhB,aAAa,EACb,eAAe,EACf,WAAW,EAEX,YAAY,EACZ,WAAW,EAEX,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -24,9 +24,18 @@
|
|
|
24
24
|
* - `@agent-nuvira/sdk/agent` — Agent class only
|
|
25
25
|
* - `@agent-nuvira/sdk/types` — Type definitions only
|
|
26
26
|
* - `@agent-nuvira/sdk/testing` — Testing utilities (mock context, mock LLM, assertions)
|
|
27
|
+
* - `@agent-nuvira/sdk/register` — Register/unregister a custom agent with the orchestrator
|
|
28
|
+
* - `@agent-nuvira/sdk/scaffold` — Scaffold a new custom agent project
|
|
29
|
+
* - `@agent-nuvira/sdk/define` — `defineAgent()` descriptor helper
|
|
27
30
|
*
|
|
28
31
|
* @module @agent-nuvira/sdk
|
|
29
32
|
*/
|
|
30
33
|
// ─── Agent Base Class ───────────────────────────────────────────────────────
|
|
31
34
|
export { Agent } from './agent.js';
|
|
35
|
+
// ─── Registration ───────────────────────────────────────────────────────────
|
|
36
|
+
export { registerAgent, unregisterAgent } from './register.js';
|
|
37
|
+
// ─── Scaffolding ────────────────────────────────────────────────────────────
|
|
38
|
+
export { scaffold, listTemplates } from './scaffold.js';
|
|
39
|
+
// ─── Descriptor Helper ──────────────────────────────────────────────────────
|
|
40
|
+
export { defineAgent, toKebabCase } from './define.js';
|
|
32
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-sdk/src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-sdk/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,+EAA+E;AAE/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAG/D,+EAA+E;AAE/E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxD,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -24,6 +24,17 @@ export interface ScaffoldOptions {
|
|
|
24
24
|
/** Agent type identifier for task plans (default: kebab-case of agentName) */
|
|
25
25
|
agentType?: string;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* The SDK version a scaffolded project depends on.
|
|
29
|
+
*
|
|
30
|
+
* Kept as one constant, and deliberately in step with the SDK's own
|
|
31
|
+
* `package.json`: the scaffolded project is the first thing a consumer installs,
|
|
32
|
+
* and a template that pinned a stale major would build a project against an SDK
|
|
33
|
+
* that does not match the CLI which produced it — the exact mismatch that makes
|
|
34
|
+
* a custom agent fail to load. A test asserts the two agree, so a release that
|
|
35
|
+
* forgets this constant fails rather than shipping.
|
|
36
|
+
*/
|
|
37
|
+
export declare const SDK_VERSION = "3.3.4";
|
|
27
38
|
/**
|
|
28
39
|
* Scaffold a new custom agent project.
|
|
29
40
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/agent-sdk/src/scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC;AAE3E,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/agent-sdk/src/scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC;AAE3E,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmBD;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,UAAU,CAAC;AA+MnC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CAoD3D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAe5E"}
|
|
@@ -23,6 +23,18 @@ function toKebabCase(pascal) {
|
|
|
23
23
|
function toCamelCase(pascal) {
|
|
24
24
|
return pascal.charAt(0).toLowerCase() + pascal.slice(1);
|
|
25
25
|
}
|
|
26
|
+
// ─── SDK version pin ────────────────────────────────────────────────────────
|
|
27
|
+
/**
|
|
28
|
+
* The SDK version a scaffolded project depends on.
|
|
29
|
+
*
|
|
30
|
+
* Kept as one constant, and deliberately in step with the SDK's own
|
|
31
|
+
* `package.json`: the scaffolded project is the first thing a consumer installs,
|
|
32
|
+
* and a template that pinned a stale major would build a project against an SDK
|
|
33
|
+
* that does not match the CLI which produced it — the exact mismatch that makes
|
|
34
|
+
* a custom agent fail to load. A test asserts the two agree, so a release that
|
|
35
|
+
* forgets this constant fails rather than shipping.
|
|
36
|
+
*/
|
|
37
|
+
export const SDK_VERSION = '3.3.4';
|
|
26
38
|
// ─── Templates ──────────────────────────────────────────────────────────────
|
|
27
39
|
const PACKAGE_JSON_TEMPLATE = (opts) => `{
|
|
28
40
|
"name": "${toKebabCase(opts.agentName)}-agent",
|
|
@@ -38,7 +50,7 @@ const PACKAGE_JSON_TEMPLATE = (opts) => `{
|
|
|
38
50
|
"test:watch": "vitest"
|
|
39
51
|
},
|
|
40
52
|
"dependencies": {
|
|
41
|
-
"@agent-nuvira/sdk": "
|
|
53
|
+
"@agent-nuvira/sdk": "^${SDK_VERSION}"
|
|
42
54
|
},
|
|
43
55
|
"devDependencies": {
|
|
44
56
|
"typescript": "^5.3.0",
|
|
@@ -69,7 +81,7 @@ const AGENT_SRC_TEMPLATE = (opts) => {
|
|
|
69
81
|
* Generated by \`nuvira sdk scaffold\`
|
|
70
82
|
*/
|
|
71
83
|
|
|
72
|
-
import { Agent, type AgentContext, type AgentResult, type LLMCallFn } from '@agent-nuvira/sdk';
|
|
84
|
+
import { Agent, defineAgent, type AgentContext, type AgentResult, type LLMCallFn } from '@agent-nuvira/sdk';
|
|
73
85
|
|
|
74
86
|
export class ${opts.agentName} extends Agent {
|
|
75
87
|
readonly name = '${opts.agentName}';
|
|
@@ -108,13 +120,11 @@ Please complete the task described in the goal.\`;
|
|
|
108
120
|
* Agent descriptor for registering this agent in the system.
|
|
109
121
|
* Export this to allow automatic registration.
|
|
110
122
|
*/
|
|
111
|
-
export const agentDescriptor = {
|
|
123
|
+
export const agentDescriptor = defineAgent({
|
|
112
124
|
AgentClass: ${opts.agentName},
|
|
113
|
-
name: '${opts.agentName}',
|
|
114
|
-
description: '${opts.description}',
|
|
115
125
|
agentType: '${agentType}',
|
|
116
126
|
tags: 'custom',
|
|
117
|
-
};
|
|
127
|
+
});
|
|
118
128
|
`;
|
|
119
129
|
};
|
|
120
130
|
const AGENT_INDEX_TEMPLATE = (opts) => `/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/agent-sdk/src/scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAqBjC,+EAA+E;AAE/E,iFAAiF;AACjF,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,MAAM;SACV,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC;AAED,+EAA+E;AAC/E,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,+EAA+E;AAE/E,MAAM,qBAAqB,GAAG,CAAC,IAAqB,EAAE,EAAE,CAAC;aAC5C,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;;oBAEpB,IAAI,CAAC,WAAW
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/agent-sdk/src/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,15 @@ export interface RunResult {
|
|
|
48
48
|
dependencyInstallTool?: string;
|
|
49
49
|
/** Whether the tool itself had to be installed first (e.g. Homebrew) */
|
|
50
50
|
dependencyInstallToolInstalled?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* True when the command exited 0 while provably doing nothing — `zip` matching
|
|
53
|
+
* none of its inputs, `git` with nothing to commit. A caller must not treat an
|
|
54
|
+
* exit code as evidence of a deliverable when this is set (
|
|
55
|
+
* see `artifact-verification.ts` for the live failure this came from).
|
|
56
|
+
*/
|
|
57
|
+
producedNothing?: boolean;
|
|
58
|
+
/** Why the command is considered a no-op, for the trace and the user. */
|
|
59
|
+
noOpReason?: string;
|
|
51
60
|
}
|
|
52
61
|
/** A detected dependency-install plan for a project */
|
|
53
62
|
export interface InstallPlan {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/agents/agents/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/agents/agents/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ import { SandboxManager } from '../../sandbox/manager.js';
|
|
|
29
29
|
import { detectProjectImage } from '../../sandbox/images.js';
|
|
30
30
|
import { getSandboxConfig } from '../../sandbox/types.js';
|
|
31
31
|
import { referenceDocsFor } from '../reference-docs.js';
|
|
32
|
+
import { detectNoOpCommand } from '../artifact-verification.js';
|
|
32
33
|
import { isKnownSystemTool, manualInstallSteps, promptToolInstall, toolInstallCommand, } from '../../cli/tool-install-prompt.js';
|
|
33
34
|
/** Maximum stdout/stderr length to store in context metadata */
|
|
34
35
|
const MAX_OUTPUT_LENGTH = 10_000;
|
|
@@ -186,9 +187,15 @@ export class RunnerAgent extends Agent {
|
|
|
186
187
|
logger.info(` Running (Docker): ${command}`);
|
|
187
188
|
}
|
|
188
189
|
const result = await sandboxManager.runCommand(containerId, command, timeoutMs);
|
|
189
|
-
// Build run result from sandbox result
|
|
190
|
+
// Build run result from sandbox result. Same question as the host path:
|
|
191
|
+
// a successful exit is not evidence that anything was produced.
|
|
192
|
+
const noOpReason = result.success
|
|
193
|
+
? detectNoOpCommand(command, result.stdout, result.stderr)
|
|
194
|
+
: null;
|
|
190
195
|
const runResult = {
|
|
191
196
|
success: result.success,
|
|
197
|
+
producedNothing: noOpReason !== null,
|
|
198
|
+
noOpReason: noOpReason ?? undefined,
|
|
192
199
|
command,
|
|
193
200
|
exitCode: result.exitCode,
|
|
194
201
|
stdout: result.stdout.slice(0, MAX_OUTPUT_LENGTH),
|
|
@@ -219,12 +226,15 @@ export class RunnerAgent extends Agent {
|
|
|
219
226
|
// Clean up
|
|
220
227
|
await sandboxManager.destroyContainer(containerId).catch(() => { });
|
|
221
228
|
return {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
229
|
+
// A command that matched nothing is not a completed step, even at exit 0.
|
|
230
|
+
success: result.exitCode === 0 && noOpReason === null,
|
|
231
|
+
summary: noOpReason !== null
|
|
232
|
+
? `⚠️ Command exited 0 but did nothing (Docker): ${noOpReason} — ${command}`
|
|
233
|
+
: result.exitCode === 0
|
|
234
|
+
? `✅ Command succeeded (Docker): ${command}`
|
|
235
|
+
: `❌ Command failed (exit ${result.exitCode}): ${command}`,
|
|
226
236
|
details: lines.join('\n'),
|
|
227
|
-
error: result.error || undefined,
|
|
237
|
+
error: noOpReason ?? (result.error || undefined),
|
|
228
238
|
};
|
|
229
239
|
}
|
|
230
240
|
catch (err) {
|
|
@@ -888,8 +898,15 @@ export class RunnerAgent extends Agent {
|
|
|
888
898
|
}
|
|
889
899
|
}
|
|
890
900
|
}
|
|
901
|
+
// Exit code 0 answers "did the process fail?", not "did it do anything?".
|
|
902
|
+
// `zip` prints `zip warning: name not matched` for every input it could not
|
|
903
|
+
// find and still exits 0 — which is precisely how a 22-byte empty archive was
|
|
904
|
+
// recorded as a finished deliverable. Ask the output as well as the status.
|
|
905
|
+
const noOpReason = exitCode === 0 ? detectNoOpCommand(command, stdout, stderr) : null;
|
|
891
906
|
const runResult = {
|
|
892
907
|
success: exitCode === 0,
|
|
908
|
+
producedNothing: noOpReason !== null,
|
|
909
|
+
noOpReason: noOpReason ?? undefined,
|
|
893
910
|
command,
|
|
894
911
|
exitCode,
|
|
895
912
|
stdout: stdout.slice(0, MAX_OUTPUT_LENGTH),
|
|
@@ -930,12 +947,17 @@ export class RunnerAgent extends Agent {
|
|
|
930
947
|
lines.push(`... (${stderr.length - 500} more chars)`);
|
|
931
948
|
}
|
|
932
949
|
return {
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
950
|
+
// The step's outcome, not the process's. `zip` exits 0 after failing to
|
|
951
|
+
// find every input it was given, so an exit code alone would let a
|
|
952
|
+
// fabricated deliverable through as a success.
|
|
953
|
+
success: exitCode === 0 && noOpReason === null,
|
|
954
|
+
summary: noOpReason !== null
|
|
955
|
+
? `⚠️ Command exited 0 but did nothing: ${noOpReason} — ${command}`
|
|
956
|
+
: exitCode === 0
|
|
957
|
+
? `✅ Command succeeded: ${command}`
|
|
958
|
+
: toolBlockError
|
|
959
|
+
? `❌ Required tool not available: ${command}`
|
|
960
|
+
: `❌ Command failed (exit ${exitCode}): ${command}`,
|
|
939
961
|
details: lines.join('\n'),
|
|
940
962
|
error: (toolBlockError || execError) && exitCode !== 0 ? (toolBlockError || execError) : undefined,
|
|
941
963
|
};
|