niceeval 0.18.0 → 0.19.0
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/INDEX.md +4 -2
- package/dist/adapter-usage.cjs.map +1 -1
- package/dist/adapter-usage.d.cts +1 -1
- package/dist/adapter-usage.d.mts +1 -1
- package/dist/adapter-usage.d.ts +1 -1
- package/dist/adapter.cjs +8 -7
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +21 -21
- package/dist/adapter.d.mts +21 -21
- package/dist/adapter.d.ts +21 -21
- package/dist/agents/{effect-runtime.cjs → agent-effects.cjs} +12 -18
- package/dist/agents/agent-effects.cjs.map +1 -0
- package/dist/agents/agent-effects.d.cts +23 -0
- package/dist/agents/agent-effects.d.mts +23 -0
- package/dist/agents/agent-effects.d.ts +23 -0
- package/dist/agents/agent-effects.js +16 -0
- package/dist/agents/agent-effects.js.map +1 -0
- package/dist/agents/ai-sdk.cjs +1 -1
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/bub.cjs +31 -18
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +9 -12
- package/dist/agents/bub.d.mts +9 -12
- package/dist/agents/bub.d.ts +9 -12
- package/dist/agents/claude-code-native.cjs +2 -2
- package/dist/agents/claude-code-native.cjs.map +1 -1
- package/dist/agents/claude-code.cjs +17 -11
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/claude-code.d.cts +11 -11
- package/dist/agents/claude-code.d.mts +11 -11
- package/dist/agents/claude-code.d.ts +11 -11
- package/dist/agents/codex-app-server.cjs +2 -2
- package/dist/agents/codex-app-server.cjs.map +1 -1
- package/dist/agents/codex.cjs +18 -12
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +12 -12
- package/dist/agents/codex.d.mts +12 -12
- package/dist/agents/codex.d.ts +12 -12
- package/dist/agents/deepseek-harness.cjs +2 -2
- package/dist/agents/deepseek-harness.cjs.map +1 -1
- package/dist/agents/hermes.cjs +3 -3
- package/dist/agents/hermes.cjs.map +1 -1
- package/dist/agents/index.cjs +3 -3
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -3
- package/dist/agents/index.d.mts +3 -3
- package/dist/agents/index.d.ts +3 -3
- package/dist/agents/index.js +2 -2
- package/dist/agents/index.mjs +2 -2
- package/dist/agents/mcp.cjs.map +1 -1
- package/dist/agents/mcp.d.cts +2 -2
- package/dist/agents/mcp.d.mts +2 -2
- package/dist/agents/mcp.d.ts +2 -2
- package/dist/agents/omp.cjs +2 -2
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/openai-compat.cjs +2 -2
- package/dist/agents/openai-compat.cjs.map +1 -1
- package/dist/agents/openclaw.cjs +3 -3
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/opencode.cjs +16 -4
- package/dist/agents/opencode.cjs.map +1 -1
- package/dist/agents/plugin-extensions.cjs +71 -0
- package/dist/agents/plugin-extensions.cjs.map +1 -0
- package/dist/agents/plugin-extensions.d.cts +26 -0
- package/dist/agents/plugin-extensions.d.mts +26 -0
- package/dist/agents/plugin-extensions.d.ts +26 -0
- package/dist/agents/plugin-extensions.js +8 -0
- package/dist/agents/plugin-extensions.js.map +1 -0
- package/dist/agents/post-setup.cjs +14 -3
- package/dist/agents/post-setup.cjs.map +1 -1
- package/dist/agents/post-setup.d.cts +4 -2
- package/dist/agents/post-setup.d.mts +4 -2
- package/dist/agents/post-setup.d.ts +4 -2
- package/dist/agents/post-setup.js +8 -6
- package/dist/agents/sdk-streams.cjs +3 -3
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/{session-slot.cjs → session-key.cjs} +4 -4
- package/dist/agents/session-key.cjs.map +1 -0
- package/dist/agents/session-key.d.cts +12 -0
- package/dist/agents/session-key.d.mts +12 -0
- package/dist/agents/session-key.d.ts +12 -0
- package/dist/agents/session-key.js +6 -0
- package/dist/agents/session-key.js.map +1 -0
- package/dist/agents/shared.cjs +2 -2
- package/dist/agents/shared.cjs.map +1 -1
- package/dist/agents/shared.d.cts +4 -4
- package/dist/agents/shared.d.mts +4 -4
- package/dist/agents/shared.d.ts +4 -4
- package/dist/agents/skills.cjs.map +1 -1
- package/dist/agents/skills.d.cts +3 -3
- package/dist/agents/skills.d.mts +3 -3
- package/dist/agents/skills.d.ts +3 -3
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +55 -54
- package/dist/agents/types.d.mts +55 -54
- package/dist/agents/types.d.ts +55 -54
- package/dist/agents/ui-message-stream.cjs +4 -4
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/agents/unrecognized-events.cjs +32 -0
- package/dist/agents/unrecognized-events.cjs.map +1 -0
- package/dist/agents/unrecognized-events.d.cts +8 -0
- package/dist/agents/unrecognized-events.d.mts +8 -0
- package/dist/agents/unrecognized-events.d.ts +8 -0
- package/dist/agents/unrecognized-events.js +6 -0
- package/dist/agents/unrecognized-events.js.map +1 -0
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +3 -0
- package/dist/assertions/api.d.mts +3 -0
- package/dist/assertions/api.d.ts +3 -0
- package/dist/assertions/collection.cjs +1 -1
- package/dist/assertions/collection.cjs.map +1 -1
- package/dist/assertions/judge.cjs +1 -1
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +52 -21
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +16 -5
- package/dist/assertions/match.d.mts +16 -5
- package/dist/assertions/match.d.ts +16 -5
- package/dist/assertions/match.js +96 -94
- package/dist/assertions/measurements.cjs +22 -6
- package/dist/assertions/measurements.cjs.map +1 -1
- package/dist/assertions/measurements.d.cts +8 -1
- package/dist/assertions/measurements.d.mts +8 -1
- package/dist/assertions/measurements.d.ts +8 -1
- package/dist/assertions/numeric.cjs +2 -0
- package/dist/assertions/numeric.cjs.map +1 -1
- package/dist/assertions/numeric.d.cts +1 -1
- package/dist/assertions/numeric.d.mts +1 -1
- package/dist/assertions/numeric.d.ts +1 -1
- package/dist/assertions/quantity.cjs +42 -0
- package/dist/assertions/quantity.cjs.map +1 -0
- package/dist/assertions/quantity.d.cts +18 -0
- package/dist/assertions/quantity.d.mts +18 -0
- package/dist/assertions/quantity.d.ts +18 -0
- package/dist/assertions/quantity.js +22 -0
- package/dist/assertions/quantity.js.map +1 -0
- package/dist/assertions/record/attachment.cjs +2 -0
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/codec.cjs +5 -1
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +3 -1
- package/dist/assertions/record/model.d.mts +3 -1
- package/dist/assertions/record/model.d.ts +3 -1
- package/dist/assertions/runtime.cjs +11 -6
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/program.cjs +3 -0
- package/dist/cli/program.cjs.map +1 -1
- package/dist/context/assert-first.cjs +6 -4
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +9 -3
- package/dist/context/assert-first.d.mts +9 -3
- package/dist/context/assert-first.d.ts +9 -3
- package/dist/context/notes.cjs +47 -0
- package/dist/context/notes.cjs.map +1 -0
- package/dist/context/notes.d.cts +10 -0
- package/dist/context/notes.d.mts +10 -0
- package/dist/context/notes.d.ts +10 -0
- package/dist/context/notes.js +6 -0
- package/dist/context/notes.js.map +1 -0
- package/dist/context/send-failures.cjs +1 -7
- package/dist/context/send-failures.cjs.map +1 -1
- package/dist/context/send-failures.d.cts +2 -3
- package/dist/context/send-failures.d.mts +2 -3
- package/dist/context/send-failures.d.ts +2 -3
- package/dist/context/send-retry.cjs +0 -1
- package/dist/context/send-retry.cjs.map +1 -1
- package/dist/context/send-retry.d.cts +1 -2
- package/dist/context/send-retry.d.mts +1 -2
- package/dist/context/send-retry.d.ts +1 -2
- package/dist/context/session.cjs +10 -17
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +4 -10
- package/dist/context/session.d.mts +4 -10
- package/dist/context/session.d.ts +4 -10
- package/dist/define.cjs +88 -65
- package/dist/define.cjs.map +1 -1
- package/dist/define.d.cts +3 -3
- package/dist/define.d.mts +3 -3
- package/dist/define.d.ts +3 -3
- package/dist/eval/cli/contribution.cjs +1 -1
- package/dist/eval/cli/contribution.cjs.map +1 -1
- package/dist/eval/host/index.cjs +1 -1
- package/dist/eval/host/index.cjs.map +1 -1
- package/dist/eval/record/evaluation.cjs +1 -1
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +3 -3
- package/dist/eval/record/membership-provenance.d.mts +3 -3
- package/dist/eval/record/membership-provenance.d.ts +3 -3
- package/dist/eval/record/score.cjs +2 -2
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.cjs +1 -1
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +2 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/expect/index.cjs +10 -1
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +3 -1
- package/dist/expect/index.d.mts +3 -1
- package/dist/expect/index.d.ts +3 -1
- package/dist/expect/index.js +92 -76
- package/dist/expect/index.mjs +92 -76
- package/dist/experiment/host/cli/contribution.cjs +52 -39
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +18 -4
- package/dist/experiment/host/cli/contribution.d.mts +18 -4
- package/dist/experiment/host/cli/contribution.d.ts +18 -4
- package/dist/experiment/host/cli/contribution.js +2 -2
- package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
- package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
- package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
- package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
- package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
- package/dist/experiment/host/cli/output-protocol.cjs +1 -1
- package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
- package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
- package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
- package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
- package/dist/experiment/host/current.cjs +2 -2
- package/dist/experiment/host/current.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -1
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/operations.cjs +21 -22
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/runtime.cjs +8 -9
- package/dist/experiment/host/runtime.cjs.map +1 -1
- package/dist/experiment/host/runtime.d.cts +3 -3
- package/dist/experiment/host/runtime.d.mts +3 -3
- package/dist/experiment/host/runtime.d.ts +3 -3
- package/dist/experiment/host/teardown.cjs +3 -3
- package/dist/experiment/host/teardown.cjs.map +1 -1
- package/dist/experiment/host/teardown.d.cts +3 -3
- package/dist/experiment/host/teardown.d.mts +3 -3
- package/dist/experiment/host/teardown.d.ts +3 -3
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +19 -19
- package/dist/experiment/host/types.d.mts +19 -19
- package/dist/experiment/host/types.d.ts +19 -19
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/inspection/assertions.cjs +1 -1
- package/dist/inspection/assertions.cjs.map +1 -1
- package/dist/inspection/cli/contribution.cjs +8 -7
- package/dist/inspection/cli/contribution.cjs.map +1 -1
- package/dist/inspection/facts.cjs +4 -4
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/index.cjs +1 -5
- package/dist/inspection/index.cjs.map +1 -1
- package/dist/inspection/index.d.cts +1 -2
- package/dist/inspection/index.d.mts +1 -2
- package/dist/inspection/index.d.ts +1 -2
- package/dist/inspection/index.js +20 -26
- package/dist/inspection/lifecycle.cjs +7 -0
- package/dist/inspection/lifecycle.cjs.map +1 -0
- package/dist/inspection/lifecycle.d.cts +4 -0
- package/dist/inspection/lifecycle.d.mts +4 -0
- package/dist/inspection/lifecycle.d.ts +4 -0
- package/dist/inspection/lifecycle.js +6 -0
- package/dist/inspection/lifecycle.js.map +1 -0
- package/dist/inspection/notes.cjs +40 -0
- package/dist/inspection/notes.cjs.map +1 -0
- package/dist/inspection/notes.d.cts +12 -0
- package/dist/inspection/notes.d.mts +12 -0
- package/dist/inspection/notes.d.ts +12 -0
- package/dist/inspection/notes.js +8 -0
- package/dist/inspection/notes.js.map +1 -0
- package/dist/inspection/overview.cjs +12 -15
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/inspection/overview.d.cts +8 -6
- package/dist/inspection/overview.d.mts +8 -6
- package/dist/inspection/overview.d.ts +8 -6
- package/dist/inspection/planned-attempt.cjs +45 -0
- package/dist/inspection/planned-attempt.cjs.map +1 -0
- package/dist/inspection/planned-attempt.d.cts +109 -0
- package/dist/inspection/planned-attempt.d.mts +109 -0
- package/dist/inspection/planned-attempt.d.ts +109 -0
- package/dist/inspection/planned-attempt.js +24 -0
- package/dist/inspection/planned-attempt.js.map +1 -0
- package/dist/inspection/project-result.cjs +5 -5
- package/dist/inspection/project-result.cjs.map +1 -1
- package/dist/inspection/project-result.d.cts +58 -57
- package/dist/inspection/project-result.d.mts +58 -57
- package/dist/inspection/project-result.d.ts +58 -57
- package/dist/inspection/project-result.js +4 -4
- package/dist/inspection/project.cjs +3 -3
- package/dist/inspection/project.cjs.map +1 -1
- package/dist/inspection/protocol-values.cjs +1 -1
- package/dist/inspection/protocol-values.cjs.map +1 -1
- package/dist/inspection/protocol-values.d.cts +1 -1
- package/dist/inspection/protocol-values.d.mts +1 -1
- package/dist/inspection/protocol-values.d.ts +1 -1
- package/dist/inspection/protocol.cjs +8 -8
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +237 -219
- package/dist/inspection/protocol.d.mts +237 -219
- package/dist/inspection/protocol.d.ts +237 -219
- package/dist/inspection/public.cjs +1 -5
- package/dist/inspection/public.cjs.map +1 -1
- package/dist/inspection/public.d.cts +1 -2
- package/dist/inspection/public.d.mts +1 -2
- package/dist/inspection/public.d.ts +1 -2
- package/dist/inspection/public.js +14 -20
- package/dist/inspection/public.mjs +166 -129
- package/dist/inspection/query.cjs +1 -1
- package/dist/inspection/query.cjs.map +1 -1
- package/dist/inspection/results.cjs +61 -52
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +157 -140
- package/dist/inspection/results.d.mts +157 -140
- package/dist/inspection/results.d.ts +157 -140
- package/dist/inspection/select.cjs +33 -28
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/source.cjs +1 -1
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/sources.cjs +2 -2
- package/dist/inspection/sources.cjs.map +1 -1
- package/dist/inspection/trace.cjs +9 -8
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/inspection/trace.d.cts +4 -4
- package/dist/inspection/trace.d.mts +4 -4
- package/dist/inspection/trace.d.ts +4 -4
- package/dist/loaders/index.cjs +7 -279
- package/dist/loaders/index.cjs.map +1 -1
- package/dist/loaders/index.d.cts +2 -95
- package/dist/loaders/index.d.mts +2 -95
- package/dist/loaders/index.d.ts +2 -95
- package/dist/loaders/index.js +10 -12
- package/dist/loaders/index.mjs +10 -12
- package/dist/loaders/runtime.cjs +283 -0
- package/dist/loaders/runtime.cjs.map +1 -0
- package/dist/loaders/runtime.d.cts +95 -0
- package/dist/loaders/runtime.d.mts +95 -0
- package/dist/loaders/runtime.d.ts +95 -0
- package/dist/loaders/runtime.js +16 -0
- package/dist/loaders/runtime.js.map +1 -0
- package/dist/migrations/judge-provider.md +6 -6
- package/dist/{model-slots.cjs → model-roles.cjs} +12 -12
- package/dist/{model-slots.cjs.map → model-roles.cjs.map} +1 -1
- package/dist/{model-slots.d.cts → model-roles.d.cts} +10 -10
- package/dist/{model-slots.d.mts → model-roles.d.mts} +10 -10
- package/dist/{model-slots.d.ts → model-roles.d.ts} +10 -10
- package/dist/model-roles.js +14 -0
- package/dist/model-roles.js.map +1 -0
- package/dist/o11y/adapter-usage-projection.cjs +9 -8
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
- package/dist/o11y/adapter-usage-projection.d.cts +23 -15
- package/dist/o11y/adapter-usage-projection.d.mts +23 -15
- package/dist/o11y/adapter-usage-projection.d.ts +23 -15
- package/dist/o11y/cache-read.cjs +14 -14
- package/dist/o11y/cache-read.cjs.map +1 -1
- package/dist/o11y/cache-read.d.cts +5 -5
- package/dist/o11y/cache-read.d.mts +5 -5
- package/dist/o11y/cache-read.d.ts +5 -5
- package/dist/o11y/derive.cjs.map +1 -1
- package/dist/o11y/derive.d.cts +2 -2
- package/dist/o11y/derive.d.mts +2 -2
- package/dist/o11y/derive.d.ts +2 -2
- package/dist/o11y/eval-usage.cjs +9 -9
- package/dist/o11y/eval-usage.cjs.map +1 -1
- package/dist/o11y/eval-usage.d.cts +7 -7
- package/dist/o11y/eval-usage.d.mts +7 -7
- package/dist/o11y/eval-usage.d.ts +7 -7
- package/dist/o11y/parsers/bub.cjs +57 -81
- package/dist/o11y/parsers/bub.cjs.map +1 -1
- package/dist/o11y/parsers/index.cjs.map +1 -1
- package/dist/o11y/parsers/index.d.cts +2 -0
- package/dist/o11y/parsers/index.d.mts +2 -0
- package/dist/o11y/parsers/index.d.ts +2 -0
- package/dist/o11y/parsers/opencode.cjs +129 -217
- package/dist/o11y/parsers/opencode.cjs.map +1 -1
- package/dist/o11y/parsers/opencode.d.cts +2 -5
- package/dist/o11y/parsers/opencode.d.mts +2 -5
- package/dist/o11y/parsers/opencode.d.ts +2 -5
- package/dist/o11y/types.cjs.map +1 -1
- package/dist/o11y/types.d.cts +1 -1
- package/dist/o11y/types.d.mts +1 -1
- package/dist/o11y/types.d.ts +1 -1
- package/dist/plugin/contracts.cjs +170 -120
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/contracts.d.cts +102 -90
- package/dist/plugin/contracts.d.mts +102 -90
- package/dist/plugin/contracts.d.ts +102 -90
- package/dist/plugin/contracts.js +16 -12
- package/dist/plugin/index.cjs.map +1 -1
- package/dist/plugin/index.d.cts +1 -1
- package/dist/plugin/index.d.mts +1 -1
- package/dist/plugin/index.d.ts +1 -1
- package/dist/plugin/link.cjs +69 -64
- package/dist/plugin/link.cjs.map +1 -1
- package/dist/plugin/link.d.cts +5 -3
- package/dist/plugin/link.d.mts +5 -3
- package/dist/plugin/link.d.ts +5 -3
- package/dist/plugin/link.js +12 -8
- package/dist/record/codec/seal-manifest.d.cts +3 -3
- package/dist/record/codec/seal-manifest.d.mts +3 -3
- package/dist/record/codec/seal-manifest.d.ts +3 -3
- package/dist/record/family/attempt-note/definition.cjs +12 -0
- package/dist/record/family/attempt-note/definition.cjs.map +1 -0
- package/dist/record/family/attempt-note/definition.d.cts +6 -0
- package/dist/record/family/attempt-note/definition.d.mts +6 -0
- package/dist/record/family/attempt-note/definition.d.ts +6 -0
- package/dist/record/family/attempt-note/definition.js +6 -0
- package/dist/record/family/attempt-note/definition.js.map +1 -0
- package/dist/record/family/attempt-note/persistence.cjs +10 -0
- package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
- package/dist/record/family/attempt-note/persistence.d.cts +6 -0
- package/dist/record/family/attempt-note/persistence.d.mts +6 -0
- package/dist/record/family/attempt-note/persistence.d.ts +6 -0
- package/dist/record/family/attempt-note/persistence.js +6 -0
- package/dist/record/family/attempt-note/persistence.js.map +1 -0
- package/dist/record/family/attempt-note/schema.cjs +20 -0
- package/dist/record/family/attempt-note/schema.cjs.map +1 -0
- package/dist/record/family/attempt-note/schema.d.cts +21 -0
- package/dist/record/family/attempt-note/schema.d.mts +21 -0
- package/dist/record/family/attempt-note/schema.d.ts +21 -0
- package/dist/record/family/attempt-note/schema.js +10 -0
- package/dist/record/family/attempt-note/schema.js.map +1 -0
- package/dist/record/family/catalog.cjs +32 -29
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +7 -2
- package/dist/record/family/catalog.d.mts +7 -2
- package/dist/record/family/catalog.d.ts +7 -2
- package/dist/record/family/current.cjs +48 -45
- package/dist/record/family/current.cjs.map +1 -1
- package/dist/record/family/current.d.cts +15 -0
- package/dist/record/family/current.d.mts +15 -0
- package/dist/record/family/current.d.ts +15 -0
- package/dist/record/model/index.js +66 -64
- package/dist/record/model/run-context.cjs +9 -3
- package/dist/record/model/run-context.cjs.map +1 -1
- package/dist/record/model/run-context.d.cts +9 -2
- package/dist/record/model/run-context.d.mts +9 -2
- package/dist/record/model/run-context.d.ts +9 -2
- package/dist/record/model/run-context.js +8 -6
- package/dist/record/model/seal-manifest.d.cts +1 -1
- package/dist/record/model/seal-manifest.d.mts +1 -1
- package/dist/record/model/seal-manifest.d.ts +1 -1
- package/dist/run/cli/contribution.cjs +6 -32
- package/dist/run/cli/contribution.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +1 -1
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/storage/sqlite.cjs +7 -7
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/adapter-usage.cjs +5 -3
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adapter-usage.d.cts +2 -2
- package/dist/runner/adapter-usage.d.mts +2 -2
- package/dist/runner/adapter-usage.d.ts +2 -2
- package/dist/runner/adoption.cjs +9 -12
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-notes.cjs +8 -0
- package/dist/runner/attempt-notes.cjs.map +1 -0
- package/dist/runner/attempt-notes.d.cts +4 -0
- package/dist/runner/attempt-notes.d.mts +4 -0
- package/dist/runner/attempt-notes.d.ts +4 -0
- package/dist/runner/attempt-notes.js +8 -0
- package/dist/runner/attempt-notes.js.map +1 -0
- package/dist/runner/attempt.cjs +61 -73
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/attempt.d.cts +3 -3
- package/dist/runner/attempt.d.mts +3 -3
- package/dist/runner/attempt.d.ts +3 -3
- package/dist/runner/command-plan.cjs +21 -26
- package/dist/runner/command-plan.cjs.map +1 -1
- package/dist/runner/command-plan.d.cts +4 -4
- package/dist/runner/command-plan.d.mts +4 -4
- package/dist/runner/command-plan.d.ts +4 -4
- package/dist/runner/command-plan.js +4 -4
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +2 -2
- package/dist/runner/config-identity.d.mts +2 -2
- package/dist/runner/config-identity.d.ts +2 -2
- package/dist/runner/discover.cjs +6 -6
- package/dist/runner/discover.cjs.map +1 -1
- package/dist/runner/eval-selection.cjs +2 -2
- package/dist/runner/eval-selection.cjs.map +1 -1
- package/dist/runner/eval-selection.d.cts +2 -2
- package/dist/runner/eval-selection.d.mts +2 -2
- package/dist/runner/eval-selection.d.ts +2 -2
- package/dist/runner/feedback/human.cjs +1 -1
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/feedback/json.cjs +4 -2
- package/dist/runner/feedback/json.cjs.map +1 -1
- package/dist/runner/feedback/json.d.cts +1 -1
- package/dist/runner/feedback/json.d.mts +1 -1
- package/dist/runner/feedback/json.d.ts +1 -1
- package/dist/runner/feedback/sink.cjs +1 -1
- package/dist/runner/feedback/sink.cjs.map +1 -1
- package/dist/runner/feedback/sink.d.cts +1 -1
- package/dist/runner/feedback/sink.d.mts +1 -1
- package/dist/runner/feedback/sink.d.ts +1 -1
- package/dist/runner/fingerprint.cjs +1 -1
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/project-target.cjs.map +1 -1
- package/dist/runner/project-target.d.cts +2 -2
- package/dist/runner/project-target.d.mts +2 -2
- package/dist/runner/project-target.d.ts +2 -2
- package/dist/runner/record/attachments.cjs +2 -2
- package/dist/runner/record/attachments.cjs.map +1 -1
- package/dist/runner/record/planning.cjs +8 -2
- package/dist/runner/record/planning.cjs.map +1 -1
- package/dist/runner/record.cjs +2 -0
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/report.cjs +3 -3
- package/dist/runner/report.cjs.map +1 -1
- package/dist/runner/report.d.cts +1 -1
- package/dist/runner/report.d.mts +1 -1
- package/dist/runner/report.d.ts +1 -1
- package/dist/runner/reuse-plan.cjs +2 -2
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/run.cjs +10 -45
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/sandbox-pool.cjs +1 -2
- package/dist/runner/sandbox-pool.cjs.map +1 -1
- package/dist/runner/setup-prefix-preparation.cjs +1 -1
- package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
- package/dist/runner/teardown-registry.cjs +2 -2
- package/dist/runner/teardown-registry.cjs.map +1 -1
- package/dist/runner/teardown-registry.d.cts +1 -1
- package/dist/runner/teardown-registry.d.mts +1 -1
- package/dist/runner/teardown-registry.d.ts +1 -1
- package/dist/runner/types.cjs +4 -4
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +64 -93
- package/dist/runner/types.d.mts +64 -93
- package/dist/runner/types.d.ts +64 -93
- package/dist/runner/types.js +2 -2
- package/dist/sandbox/action.cjs +1 -1
- package/dist/sandbox/action.cjs.map +1 -1
- package/dist/sandbox/cli/contribution.cjs +17 -14
- package/dist/sandbox/cli/contribution.cjs.map +1 -1
- package/dist/sandbox/cli/contribution.d.cts +1 -1
- package/dist/sandbox/cli/contribution.d.mts +1 -1
- package/dist/sandbox/cli/contribution.d.ts +1 -1
- package/dist/sandbox/commands.cjs +1 -1
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/commands.d.cts +1 -1
- package/dist/sandbox/commands.d.mts +1 -1
- package/dist/sandbox/commands.d.ts +1 -1
- package/dist/sandbox/compose.cjs +2 -2
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.cjs +5 -9
- package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.d.cts +0 -3
- package/dist/sandbox/docker-profile/registry.d.mts +0 -3
- package/dist/sandbox/docker-profile/registry.d.ts +0 -3
- package/dist/sandbox/docker-profile/registry.js +6 -12
- package/dist/sandbox/docker-profile/runtime.cjs +1 -1
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.cjs +12 -16
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.d.cts +2 -6
- package/dist/sandbox/docker-profile/schema.d.mts +2 -6
- package/dist/sandbox/docker-profile/schema.d.ts +2 -6
- package/dist/sandbox/docker-profile/schema.js +24 -32
- package/dist/sandbox/incus.cjs +2 -2
- package/dist/sandbox/incus.cjs.map +1 -1
- package/dist/sandbox/index.cjs +4 -35
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +4 -8
- package/dist/sandbox/index.d.mts +4 -8
- package/dist/sandbox/index.d.ts +4 -8
- package/dist/sandbox/index.js +116 -172
- package/dist/sandbox/index.mjs +116 -172
- package/dist/sandbox/layer.cjs +3 -3
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/sandbox/link.cjs +5 -0
- package/dist/sandbox/link.cjs.map +1 -1
- package/dist/sandbox/link.d.cts +3 -0
- package/dist/sandbox/link.d.mts +3 -0
- package/dist/sandbox/link.d.ts +3 -0
- package/dist/sandbox/runtime.cjs +9 -4
- package/dist/sandbox/runtime.cjs.map +1 -1
- package/dist/shared/failure-class.cjs +5 -5
- package/dist/shared/failure-class.cjs.map +1 -1
- package/dist/shared/failure-class.d.cts +4 -10
- package/dist/shared/failure-class.d.mts +4 -10
- package/dist/shared/failure-class.d.ts +4 -10
- package/dist/shared/types.cjs.map +1 -1
- package/dist/shared/types.d.cts +1 -1
- package/dist/shared/types.d.mts +1 -1
- package/dist/shared/types.d.ts +1 -1
- package/dist/show/contribution.cjs +17 -2
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/contribution.d.cts +14 -0
- package/dist/show/contribution.d.mts +14 -0
- package/dist/show/contribution.d.ts +14 -0
- package/dist/show/model.cjs +8 -5
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +11 -8
- package/dist/show/model.d.mts +11 -8
- package/dist/show/model.d.ts +11 -8
- package/dist/show/render.cjs +34 -22
- package/dist/show/render.cjs.map +1 -1
- package/dist/sources/projector.cjs +1 -1
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/types.cjs +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +2 -2
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
- package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/cli/contribution.cjs +1 -1
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/function-runtime.mjs +318 -121
- package/dist/view/http-protocol.d.cts +1 -1
- package/dist/view/http-protocol.d.mts +1 -1
- package/dist/view/http-protocol.d.ts +1 -1
- package/dist/view/inspection-host.cjs +2 -2
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/inspection-host.d.cts +349 -331
- package/dist/view/inspection-host.d.mts +349 -331
- package/dist/view/inspection-host.d.ts +349 -331
- package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +6 -6
- package/docs-site/zh/examples/integrations/claude-sdk.mdx +5 -5
- package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
- package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
- package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
- package/docs-site/zh/explanation/adapter.mdx +6 -6
- package/docs-site/zh/explanation/assert.mdx +7 -7
- package/docs-site/zh/explanation/drive.mdx +4 -4
- package/docs-site/zh/explanation/hitl.mdx +2 -2
- package/docs-site/zh/explanation/judge.mdx +2 -2
- package/docs-site/zh/introduction.mdx +2 -2
- package/docs-site/zh/reference/builtin-agents.mdx +46 -49
- package/docs-site/zh/reference/cli.mdx +16 -14
- package/docs-site/zh/reference/define-agent.mdx +19 -19
- package/docs-site/zh/reference/define-config.mdx +7 -15
- package/docs-site/zh/reference/define-eval.mdx +20 -14
- package/docs-site/zh/reference/define-experiment.mdx +18 -39
- package/docs-site/zh/reference/events.mdx +1 -1
- package/docs-site/zh/reference/expect.mdx +21 -0
- package/docs-site/zh/reference/official-adapters.mdx +12 -5
- package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
- package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
- package/docs-site/zh/tutorials/authoring.mdx +2 -2
- package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
- package/docs-site/zh/tutorials/concurrency.mdx +8 -8
- package/docs-site/zh/tutorials/configuration.mdx +5 -5
- package/docs-site/zh/tutorials/control-run-cost.mdx +19 -19
- package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
- package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
- package/docs-site/zh/tutorials/plugins.mdx +49 -143
- package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
- package/docs-site/zh/tutorials/upgrade-0-18.mdx +1 -1
- package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
- package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
- package/docs-site/zh/tutorials/verify-judge.mdx +2 -2
- package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
- package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
- package/docs-site/zh/tutorials/write-send.mdx +13 -13
- package/package.json +1 -1
- package/dist/agents/effect-runtime.cjs.map +0 -1
- package/dist/agents/effect-runtime.d.cts +0 -29
- package/dist/agents/effect-runtime.d.mts +0 -29
- package/dist/agents/effect-runtime.d.ts +0 -29
- package/dist/agents/effect-runtime.js +0 -16
- package/dist/agents/effect-runtime.js.map +0 -1
- package/dist/agents/session-slot.cjs.map +0 -1
- package/dist/agents/session-slot.d.cts +0 -12
- package/dist/agents/session-slot.d.mts +0 -12
- package/dist/agents/session-slot.d.ts +0 -12
- package/dist/agents/session-slot.js +0 -6
- package/dist/agents/session-slot.js.map +0 -1
- package/dist/model-slots.js +0 -14
- package/dist/model-slots.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["opencode.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeSandboxAgent } from \"../define.ts\";\nimport { Effect } from \"effect\";\nimport { requireEnv, getEnv } from \"../util.ts\";\nimport { shared } from \"./shared.ts\";\nimport { appendProjectInstruction, installSkills, installedSkillNames, skillDiscoveryInstruction, } from \"./skills.ts\";\nimport { mapGenericSpans } from \"../o11y/otlp/canonical.ts\";\nimport { unclassifiedToolActionsCoverage } from \"../o11y/command-projection.ts\";\nimport { shellQuote } from \"../sandbox/shell.ts\";\nimport { completeEvidenceCoverage } from \"../assertions/coverage.ts\";\nimport { parseOpenCodeTranscript, sessionIdFromOpenCodeTranscript, extractOpenCodeJsonl, } from \"../o11y/parsers/opencode.ts\";\nimport { DEFAULT_OPENCODE_CLI_VERSION, AGENT_BASELINE_RECIPE_REVISION } from \"./coding-cli-versions.ts\";\nimport { createNpmCliInstaller, resolveAgentBinEffect } from \"./npm-staged.ts\";\nimport type { Agent, AgentSetupManifest, Sandbox, SkillSpec, StreamEvent, TurnEvidenceCoverage, } from \"../types.ts\";\nimport { makeSendFailure, sendAcceptanceFromEvents } from \"../context/send-failures.ts\";\n// OpenCode sandbox adapter。驱动:`opencode run --format json --auto`;\n// 行为轨优先 stdout JSONL,不足时 `opencode export <sessionID>`。\n// 契约见 docs/feature/adapters/sdk/opencode/README.md。\nconst SKILL_DIR = \".agents/skills\";\n/** 自定义 OpenAI 兼容网关在 opencode.json 里的 provider id。 */\nconst COMPAT_PROVIDER = \"compat\";\n/**\n * OpenCode 的 native skill registry 需要 YAML frontmatter 才会把 SKILL.md 广播给\n * `skill` 工具。共享 SkillSpec 同时服务不要求 frontmatter 的 coding agents,所以只在\n * OpenCode 沙箱内为缺失的元数据补一个由安装名派生的最小头;作者已有的 native header\n * 原样保留,仍由 OpenCode 自己校验。\n */\nasync function addOpenCodeSkillFrontmatter(sb: Sandbox, names: readonly string[]): Promise<void> {\n for (const name of names) {\n const path = `${SKILL_DIR}/${name}/SKILL.md`;\n const quotedPath = shellQuote(path);\n const header = [\n \"---\",\n `name: ${JSON.stringify(name)}`,\n `description: ${JSON.stringify(`NiceEval-installed skill ${name}`)}`,\n \"---\",\n \"\",\n ].join(\"\\n\");\n const result = await sb.runShell([\n `if [ \\\"$(sed -n '1p' ${quotedPath})\\\" != \\\"---\\\" ]; then`,\n \" tmp=$(mktemp) || exit 1\",\n \" cat > \\\"$tmp\\\" <<'NICEEVAL_OPENCODE_SKILL_HEADER'\",\n header,\n \"NICEEVAL_OPENCODE_SKILL_HEADER\",\n ` cat ${quotedPath} >> \\\"$tmp\\\" && mv \\\"$tmp\\\" ${quotedPath} || { rm -f \\\"$tmp\\\"; exit 1; }`,\n \"fi\",\n ].join(\"\\n\"));\n if (result.exitCode !== 0) {\n throw new Error(`OpenCode skill ${JSON.stringify(name)} could not receive native frontmatter.`);\n }\n }\n}\nexport interface OpenCodeConfig {\n /** 模型 API key。省略时读 OPENCODE_API_KEY,再回落 ANTHROPIC_API_KEY。 */\n apiKey?: string;\n /** OpenAI 兼容端点。省略时读 OPENCODE_BASE_URL。 */\n baseUrl?: string;\n /** 钉 npm `opencode-ai` 版本;省略时用 NiceEval 默认 pin。 */\n version?: string;\n /** 装进沙箱的 Skill,落在 `.agents/skills/<name>/`。 */\n skills?: SkillSpec[];\n}\nfunction resolveApiKey(config?: OpenCodeConfig): string {\n return config?.apiKey ?? getEnv(\"OPENCODE_API_KEY\") ?? requireEnv(\"ANTHROPIC_API_KEY\");\n}\nfunction resolveBaseUrl(config?: OpenCodeConfig): string | undefined {\n return config?.baseUrl ?? getEnv(\"OPENCODE_BASE_URL\");\n}\n/** experiment.model → `--model`。裸模型名在自定义网关下补成 `compat/<model>`。 */\nfunction resolveModelFlag(model: string | undefined, hasCompatBase: boolean): string | undefined {\n if (!model)\n return undefined;\n if (model.includes(\"/\"))\n return model;\n return hasCompatBase ? `${COMPAT_PROVIDER}/${model}` : model;\n}\n/**\n * OpenCode 的内置 sandbox Agent 工厂。\n */\n// @concord-code ne-adapter-opencode-agent\n// @concord-implements docs/feature/adapters/README.md\n// @concord-implements docs/feature/adapters/sdk/opencode/README.md\nexport function openCodeAgent(config?: OpenCodeConfig): Agent {\n const version = config?.version ?? DEFAULT_OPENCODE_CLI_VERSION;\n const { ensure, installer } = createNpmCliInstaller({\n identity: {\n agent: \"opencode\",\n version,\n revision: String(AGENT_BASELINE_RECIPE_REVISION.opencode),\n },\n packageName: \"opencode-ai\",\n bin: \"opencode\",\n });\n return makeSandboxAgent({\n name: \"opencode\",\n evidenceCoverage: completeEvidenceCoverage,\n spanMapper: mapGenericSpans,\n ensure,\n installers: [installer],\n tracing: {\n protocol: \"http/protobuf\",\n env: (endpoint) => ({\n OTEL_TRACES_EXPORTER: \"otlp\",\n OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: endpoint,\n OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: \"http/protobuf\",\n }),\n },\n setup: (sb, ctx) => Effect.tryPromise({\n try: async () => {\n const baseUrl = resolveBaseUrl(config);\n const provider: globalThis.Record<string, unknown> = {};\n if (baseUrl) {\n // OpenAI 兼容网关必须走 openai-compatible npm 包 + 显式 models 表,\n // 否则 OpenCode 不会把自定义 baseURL 接到请求上。\n provider[COMPAT_PROVIDER] = {\n npm: \"@ai-sdk/openai-compatible\",\n name: \"OpenAI-compatible\",\n options: {\n apiKey: \"{env:OPENCODE_API_KEY}\",\n baseURL: baseUrl,\n },\n models: {\n // 允许任意 experiment.model;具体 id 由 --model compat/<id> 选择。\n \"gpt-5.6-luna\": { name: \"gpt-5.6-luna\" },\n \"gpt-6-luna\": { name: \"gpt-6-luna\" },\n \"gpt-5.4-mini\": { name: \"gpt-5.4-mini\" },\n \"gpt-5.4\": { name: \"gpt-5.4\" },\n \"gpt-4.1-mini\": { name: \"gpt-4.1-mini\" },\n \"gpt-4o-mini\": { name: \"gpt-4o-mini\" },\n },\n };\n }\n const opencodeConfig = {\n $schema: \"https://opencode.ai/config.json\",\n ...(Object.keys(provider).length ? { provider } : {}),\n permission: {\n write: \"allow\",\n edit: \"allow\",\n bash: \"allow\",\n read: \"allow\",\n },\n };\n await shared.writeFile(sb, \"opencode.json\", JSON.stringify(opencodeConfig, null, 2));\n const manifest: AgentSetupManifest = { skills: [] };\n if (config?.skills?.length) {\n manifest.skills = await installSkills(sb, config.skills, { dir: SKILL_DIR });\n await addOpenCodeSkillFrontmatter(sb, installedSkillNames(manifest.skills));\n await appendProjectInstruction(sb, skillDiscoveryInstruction(SKILL_DIR, installedSkillNames(manifest.skills)));\n }\n if (manifest.skills.length) {\n ctx.reportSetup(manifest);\n }\n },\n catch: (cause) => cause,\n }),\n send: (input, ctx) => Effect.gen(function* () {\n const sb = ctx.sandbox;\n const opencodeBin = yield* resolveAgentBinEffect(sb, \"opencode\");\n return yield* Effect.tryPromise({\n try: async (signal) => {\n const baseUrl = resolveBaseUrl(config);\n const args = [\"run\", input.text, \"--format\", \"json\", \"--auto\"];\n const model = resolveModelFlag(ctx.model, Boolean(baseUrl));\n if (model)\n args.push(\"--model\", model);\n if (ctx.session.id)\n args.push(\"--session\", ctx.session.id);\n const apiKey = resolveApiKey(config);\n const env: globalThis.Record<string, string> = {\n OPENCODE_API_KEY: apiKey,\n OPENAI_API_KEY: apiKey,\n ANTHROPIC_API_KEY: apiKey,\n ...ctx.telemetry?.env,\n };\n if (baseUrl) {\n env.OPENCODE_BASE_URL = baseUrl;\n env.OPENAI_BASE_URL = baseUrl;\n }\n const sensitiveValues = [apiKey];\n const res = await sb.runCommand(opencodeBin, args, { env, sensitiveValues, stream: true, signal });\n let raw = extractOpenCodeJsonl(res.stdout) ?? extractOpenCodeJsonl(`${res.stdout}\\n${res.stderr}`);\n let sessionId = sessionIdFromOpenCodeTranscript(raw) ?? sessionIdFromOpenCodeTranscript(res.stdout);\n if (sessionId)\n ctx.session.capture(sessionId);\n let parsed = parseOpenCodeTranscript(raw);\n // 仅当 stdout 既没有工具也没有助手文本时才 export 补读——纯对话轮\n // (session/recall) 的 text 事件已在 JSONL 里,再 export 会冲掉已解析事件。\n const hasActions = parsed.events.some((e) => e.type === \"operation.started\" && e.operation.kind === \"tool\");\n const hasMessages = parsed.events.some((e) => e.type === \"message\");\n if (!hasActions && !hasMessages && (sessionId ?? ctx.session.id)) {\n const sid = sessionId ?? ctx.session.id!;\n const exported = await sb.runCommand(opencodeBin, [\"export\", sid], { env, sensitiveValues, signal });\n if (exported.exitCode === 0 && exported.stdout.trim()) {\n raw = exported.stdout;\n parsed = parseOpenCodeTranscript(raw);\n sessionId = sessionIdFromOpenCodeTranscript(raw) ?? sessionId;\n if (sessionId)\n ctx.session.capture(sessionId);\n }\n }\n const events: StreamEvent[] = [...parsed.events];\n const hasErrorEvent = events.some((e) => e.type === \"error\");\n let turnEvidenceCoverage: TurnEvidenceCoverage | undefined;\n if (!raw?.trim()) {\n const reason = \"OpenCode transcript/export was unavailable; tool trajectory was not observed.\";\n turnEvidenceCoverage = {\n events: { status: \"unavailable\", reason },\n actions: { status: \"unavailable\", reason },\n usage: { status: \"unavailable\", reason },\n };\n }\n else if (!parsed.parseSuccess) {\n const reason = \"Some OpenCode transcript lines could not be parsed.\";\n turnEvidenceCoverage = {\n events: { status: \"partial\", reason },\n actions: { status: \"partial\", reason },\n };\n }\n else {\n turnEvidenceCoverage = unclassifiedToolActionsCoverage(events);\n }\n if (res.exitCode !== 0) {\n throw makeSendFailure({\n acceptance: sendAcceptanceFromEvents(events),\n message: shared.diagnoseFailure(res, parsed.events, raw),\n events,\n usage: parsed.usage,\n process: res,\n });\n }\n return {\n events,\n usage: parsed.usage,\n status: hasErrorEvent ? \"failed\" as const : \"completed\" as const,\n ...(turnEvidenceCoverage === undefined ? {} : { evidenceCoverage: turnEvidenceCoverage }),\n };\n },\n catch: (cause) => cause,\n });\n }),\n });\n}\nexport default openCodeAgent();\n"]}
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["opencode.ts"],"names":[],"mappings":"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","sourcesContent":["import { UnrecognizedAgentEvents } from \"./unrecognized-events.ts\";\nimport { makeSandboxAgent } from \"../define.ts\";\nimport { Effect } from \"effect\";\nimport { requireEnv, getEnv } from \"../util.ts\";\nimport { shared } from \"./shared.ts\";\nimport { appendProjectInstruction, installSkills, installedSkillNames, skillDiscoveryInstruction, } from \"./skills.ts\";\nimport { mapGenericSpans } from \"../o11y/otlp/canonical.ts\";\nimport { unclassifiedToolActionsCoverage } from \"../o11y/command-projection.ts\";\nimport { shellQuote } from \"../sandbox/shell.ts\";\nimport { completeEvidenceCoverage } from \"../assertions/coverage.ts\";\nimport { parseOpenCodeTranscript, sessionIdFromOpenCodeTranscript, extractOpenCodeJsonl, } from \"../o11y/parsers/opencode.ts\";\nimport { DEFAULT_OPENCODE_CLI_VERSION, AGENT_BASELINE_RECIPE_REVISION } from \"./coding-cli-versions.ts\";\nimport { createNpmCliInstaller, resolveAgentBinEffect } from \"./npm-staged.ts\";\nimport type { Agent, AgentInstallationManifest, Sandbox, SkillSpec, StreamEvent, TurnEvidenceCoverage, } from \"../types.ts\";\nimport { makeSendFailure, sendAcceptanceFromEvents } from \"../context/send-failures.ts\";\n// OpenCode sandbox adapter。驱动:`opencode run --format json --auto`;\n// 行为轨优先 stdout JSONL,不足时 `opencode export <sessionID>`。\n// 契约见 docs/feature/adapters/sdk/opencode/README.md。\nconst SKILL_DIR = \".agents/skills\";\n/** 自定义 OpenAI 兼容网关在 opencode.json 里的 provider id。 */\nconst COMPAT_PROVIDER = \"compat\";\n/**\n * OpenCode 的 native skill registry 需要 YAML frontmatter 才会把 SKILL.md 广播给\n * `skill` 工具。共享 SkillSpec 同时服务不要求 frontmatter 的 coding agents,所以只在\n * OpenCode 沙箱内为缺失的元数据补一个由安装名派生的最小头;作者已有的 native header\n * 原样保留,仍由 OpenCode 自己校验。\n */\nasync function addOpenCodeSkillFrontmatter(sb: Sandbox, names: readonly string[]): Promise<void> {\n for (const name of names) {\n const path = `${SKILL_DIR}/${name}/SKILL.md`;\n const quotedPath = shellQuote(path);\n const header = [\n \"---\",\n `name: ${JSON.stringify(name)}`,\n `description: ${JSON.stringify(`NiceEval-installed skill ${name}`)}`,\n \"---\",\n \"\",\n ].join(\"\\n\");\n const result = await sb.runShell([\n `if [ \\\"$(sed -n '1p' ${quotedPath})\\\" != \\\"---\\\" ]; then`,\n \" tmp=$(mktemp) || exit 1\",\n \" cat > \\\"$tmp\\\" <<'NICEEVAL_OPENCODE_SKILL_HEADER'\",\n header,\n \"NICEEVAL_OPENCODE_SKILL_HEADER\",\n ` cat ${quotedPath} >> \\\"$tmp\\\" && mv \\\"$tmp\\\" ${quotedPath} || { rm -f \\\"$tmp\\\"; exit 1; }`,\n \"fi\",\n ].join(\"\\n\"));\n if (result.exitCode !== 0) {\n throw new Error(`OpenCode skill ${JSON.stringify(name)} could not receive native frontmatter.`);\n }\n }\n}\nexport interface OpenCodeConfig {\n /** 模型 API key。省略时读 OPENCODE_API_KEY,再回落 ANTHROPIC_API_KEY。 */\n apiKey?: string;\n /** OpenAI 兼容端点。省略时读 OPENCODE_BASE_URL。 */\n baseUrl?: string;\n /** 钉 npm `opencode-ai` 版本;省略时用 NiceEval 默认 pin。 */\n version?: string;\n /** 装进沙箱的 Skill,落在 `.agents/skills/<name>/`。 */\n skills?: SkillSpec[];\n}\nfunction resolveApiKey(config?: OpenCodeConfig): string {\n return config?.apiKey ?? getEnv(\"OPENCODE_API_KEY\") ?? requireEnv(\"ANTHROPIC_API_KEY\");\n}\nfunction resolveBaseUrl(config?: OpenCodeConfig): string | undefined {\n return config?.baseUrl ?? getEnv(\"OPENCODE_BASE_URL\");\n}\n/** experiment.model → `--model`。裸模型名在自定义网关下补成 `compat/<model>`。 */\nfunction resolveModelFlag(model: string | undefined, hasCompatBase: boolean): string | undefined {\n if (!model)\n return undefined;\n if (model.includes(\"/\"))\n return model;\n return hasCompatBase ? `${COMPAT_PROVIDER}/${model}` : model;\n}\n/**\n * OpenCode 的内置 sandbox Agent 工厂。\n */\n// @concord-code\n// @concord-implements docs/feature/adapters/README.md\n// @concord-implements docs/feature/adapters/sdk/opencode/README.md\nexport function openCodeAgent(config?: OpenCodeConfig): Agent {\n const version = config?.version ?? DEFAULT_OPENCODE_CLI_VERSION;\n const { ensure, installer } = createNpmCliInstaller({\n identity: {\n agent: \"opencode\",\n version,\n revision: String(AGENT_BASELINE_RECIPE_REVISION.opencode),\n },\n packageName: \"opencode-ai\",\n bin: \"opencode\",\n });\n const unknownEvents = new Map<string, UnrecognizedAgentEvents>();\n return makeSandboxAgent({\n name: \"opencode\",\n evidenceCoverage: completeEvidenceCoverage,\n spanMapper: mapGenericSpans,\n ensure,\n installers: [installer],\n tracing: {\n protocol: \"http/protobuf\",\n env: (endpoint) => ({\n OTEL_TRACES_EXPORTER: \"otlp\",\n OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: endpoint,\n OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: \"http/protobuf\",\n }),\n },\n before: (sb, ctx) => Effect.tryPromise({\n try: async () => {\n unknownEvents.set(sb.sandboxId, new UnrecognizedAgentEvents());\n const baseUrl = resolveBaseUrl(config);\n const provider: globalThis.Record<string, unknown> = {};\n if (baseUrl) {\n // OpenAI 兼容网关必须走 openai-compatible npm 包 + 显式 models 表,\n // 否则 OpenCode 不会把自定义 baseURL 接到请求上。\n provider[COMPAT_PROVIDER] = {\n npm: \"@ai-sdk/openai-compatible\",\n name: \"OpenAI-compatible\",\n options: {\n apiKey: \"{env:OPENCODE_API_KEY}\",\n baseURL: baseUrl,\n },\n models: {\n // 允许任意 experiment.model;具体 id 由 --model compat/<id> 选择。\n \"gpt-5.6-luna\": { name: \"gpt-5.6-luna\" },\n \"gpt-6-luna\": { name: \"gpt-6-luna\" },\n \"gpt-5.4-mini\": { name: \"gpt-5.4-mini\" },\n \"gpt-5.4\": { name: \"gpt-5.4\" },\n \"gpt-4.1-mini\": { name: \"gpt-4.1-mini\" },\n \"gpt-4o-mini\": { name: \"gpt-4o-mini\" },\n },\n };\n }\n const opencodeConfig = {\n $schema: \"https://opencode.ai/config.json\",\n ...(Object.keys(provider).length ? { provider } : {}),\n permission: {\n write: \"allow\",\n edit: \"allow\",\n bash: \"allow\",\n read: \"allow\",\n },\n };\n await shared.writeFile(sb, \"opencode.json\", JSON.stringify(opencodeConfig, null, 2));\n const manifest: AgentInstallationManifest = { skills: [] };\n if (config?.skills?.length) {\n manifest.skills = await installSkills(sb, config.skills, { dir: SKILL_DIR });\n await addOpenCodeSkillFrontmatter(sb, installedSkillNames(manifest.skills));\n await appendProjectInstruction(sb, skillDiscoveryInstruction(SKILL_DIR, installedSkillNames(manifest.skills)));\n }\n if (manifest.skills.length) {\n ctx.reportInstallation(manifest);\n }\n },\n catch: (cause) => cause,\n }),\n after: (sb, ctx) => Effect.sync(() => {\n unknownEvents.get(sb.sandboxId)?.report((diagnostic) => ctx.diagnostic(diagnostic));\n unknownEvents.delete(sb.sandboxId);\n }),\n send: (input, ctx) => Effect.gen(function* () {\n const sb = ctx.sandbox;\n const opencodeBin = yield* resolveAgentBinEffect(sb, \"opencode\");\n return yield* Effect.tryPromise({\n try: async (signal) => {\n const baseUrl = resolveBaseUrl(config);\n const args = [\"run\", input.text, \"--format\", \"json\", \"--auto\"];\n const model = resolveModelFlag(ctx.model, Boolean(baseUrl));\n if (model)\n args.push(\"--model\", model);\n if (ctx.session.id)\n args.push(\"--session\", ctx.session.id);\n const apiKey = resolveApiKey(config);\n const env: globalThis.Record<string, string> = {\n OPENCODE_API_KEY: apiKey,\n OPENAI_API_KEY: apiKey,\n ANTHROPIC_API_KEY: apiKey,\n ...ctx.telemetry?.env,\n };\n if (baseUrl) {\n env.OPENCODE_BASE_URL = baseUrl;\n env.OPENAI_BASE_URL = baseUrl;\n }\n const sensitiveValues = [apiKey];\n const res = await sb.runCommand(opencodeBin, args, { env, sensitiveValues, stream: true, signal });\n let raw = extractOpenCodeJsonl(res.stdout) ?? extractOpenCodeJsonl(`${res.stdout}\\n${res.stderr}`);\n let sessionId = sessionIdFromOpenCodeTranscript(raw) ?? sessionIdFromOpenCodeTranscript(res.stdout);\n if (sessionId)\n ctx.session.capture(sessionId);\n let parsed = parseOpenCodeTranscript(raw);\n let hasUnrecognizedEvents = Object.keys(parsed.unrecognizedEvents ?? {}).length > 0;\n const unknown = unknownEvents.get(sb.sandboxId);\n unknown?.observe(parsed.unrecognizedEvents);\n // 仅当 stdout 既没有工具也没有助手文本时才 export 补读——纯对话轮\n // (session/recall) 的 text 事件已在 JSONL 里,再 export 会冲掉已解析事件。\n const hasActions = parsed.events.some((e) => e.type === \"operation.started\" && e.operation.kind === \"tool\");\n const hasMessages = parsed.events.some((e) => e.type === \"message\");\n if (!hasActions && !hasMessages && (sessionId ?? ctx.session.id)) {\n const sid = sessionId ?? ctx.session.id!;\n const exported = await sb.runCommand(opencodeBin, [\"export\", sid], { env, sensitiveValues, signal });\n if (exported.exitCode === 0 && exported.stdout.trim()) {\n raw = exported.stdout;\n parsed = parseOpenCodeTranscript(raw);\n hasUnrecognizedEvents ||= Object.keys(parsed.unrecognizedEvents ?? {}).length > 0;\n unknown?.observe(parsed.unrecognizedEvents, `export:${sid}`);\n sessionId = sessionIdFromOpenCodeTranscript(raw) ?? sessionId;\n if (sessionId)\n ctx.session.capture(sessionId);\n }\n }\n const events: StreamEvent[] = [...parsed.events];\n const hasErrorEvent = events.some((e) => e.type === \"error\");\n let turnEvidenceCoverage: TurnEvidenceCoverage | undefined;\n if (!raw?.trim()) {\n const reason = \"OpenCode transcript/export was unavailable; tool trajectory was not observed.\";\n turnEvidenceCoverage = {\n events: { status: \"unavailable\", reason },\n actions: { status: \"unavailable\", reason },\n usage: { status: \"unavailable\", reason },\n };\n }\n else if (!parsed.parseSuccess || hasUnrecognizedEvents) {\n const reason = \"Some OpenCode transcript lines could not be parsed.\";\n turnEvidenceCoverage = {\n events: { status: \"partial\", reason },\n actions: { status: \"partial\", reason },\n };\n }\n else {\n turnEvidenceCoverage = unclassifiedToolActionsCoverage(events);\n }\n if (res.exitCode !== 0) {\n throw makeSendFailure({\n acceptance: sendAcceptanceFromEvents(events),\n message: shared.diagnoseFailure(res, parsed.events, raw),\n events,\n usage: parsed.usage,\n process: res,\n });\n }\n return {\n events,\n usage: parsed.usage,\n status: hasErrorEvent ? \"failed\" as const : \"completed\" as const,\n ...(turnEvidenceCoverage === undefined ? {} : { evidenceCoverage: turnEvidenceCoverage }),\n };\n },\n catch: (cause) => cause,\n });\n }),\n });\n}\nexport default openCodeAgent();\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.attachCodingAgentExtensions = attachCodingAgentExtensions;
|
|
4
|
+
exports.extendCodingAgent = extendCodingAgent;
|
|
5
|
+
// Built-in factories own reconstruction; the Plugin linker never branches on Agent runtime kind.
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
const factories = new WeakMap();
|
|
8
|
+
function skillNames(skill) {
|
|
9
|
+
if (skill.kind === "repo")
|
|
10
|
+
return skill.skills ?? [];
|
|
11
|
+
if (skill.name !== undefined)
|
|
12
|
+
return [skill.name];
|
|
13
|
+
const path = (0, node_path_1.resolve)(skill.path);
|
|
14
|
+
const file = (0, node_path_1.basename)(path);
|
|
15
|
+
return [file.toLowerCase() === "skill.md" ? (0, node_path_1.basename)((0, node_path_1.resolve)(path, "..")) : (0, node_path_1.extname)(file).toLowerCase() === ".md" ? (0, node_path_1.basename)(file, (0, node_path_1.extname)(file)) : file];
|
|
16
|
+
}
|
|
17
|
+
/** Registration captures factory options without evaluating connection or credential providers. */
|
|
18
|
+
function attachCodingAgentExtensions(agent, kind, config, rebuild) {
|
|
19
|
+
factories.set(agent, (contributions) => {
|
|
20
|
+
let merged = { ...config };
|
|
21
|
+
const names = new Map();
|
|
22
|
+
const unique = (field, values, source) => {
|
|
23
|
+
for (const name of values) {
|
|
24
|
+
const id = `${field}:${name}`;
|
|
25
|
+
const previous = names.get(id);
|
|
26
|
+
if (previous !== undefined)
|
|
27
|
+
throw new TypeError(`Duplicate Agent ${field} ${JSON.stringify(name)} at ${previous} and ${source}.`);
|
|
28
|
+
names.set(id, source);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const record = (value, source) => {
|
|
32
|
+
unique("skill", (value.skills ?? []).flatMap(skillNames), source);
|
|
33
|
+
unique("MCP server", (value.mcpServers ?? []).map((server) => server.name), source);
|
|
34
|
+
unique("native plugin", (value.plugins ?? []).map((plugin) => plugin.name), source);
|
|
35
|
+
unique("Python plugin", (value.pythonPlugins ?? []).map((plugin) => plugin.package), source);
|
|
36
|
+
if (value.configFile !== undefined)
|
|
37
|
+
unique("configFile", ["configFile"], source);
|
|
38
|
+
if (value.settingsFile !== undefined)
|
|
39
|
+
unique("settingsFile", ["settingsFile"], source);
|
|
40
|
+
};
|
|
41
|
+
record(config ?? {}, `${kind} factory`);
|
|
42
|
+
for (const { extension, source } of contributions) {
|
|
43
|
+
const targeted = ["codex", "claudeCode", "bub"].some((field) => Object.hasOwn(extension, field));
|
|
44
|
+
if (targeted && extension[kind] === undefined)
|
|
45
|
+
throw new TypeError(`${source} has no agent.${kind} extension for the selected Adapter.`);
|
|
46
|
+
if (kind === "bub" && extension.mcpServers !== undefined)
|
|
47
|
+
throw new TypeError(`${source}: Bub does not support agent.mcpServers.`);
|
|
48
|
+
const addition = { ...extension[kind], ...(extension.skills === undefined ? {} : { skills: extension.skills }),
|
|
49
|
+
...(extension.mcpServers === undefined ? {} : { mcpServers: extension.mcpServers }) };
|
|
50
|
+
record(addition, source);
|
|
51
|
+
const append = (first, second) => second === undefined ? first : [...first ?? [], ...second];
|
|
52
|
+
merged = { ...merged, ...addition,
|
|
53
|
+
skills: append(merged.skills, addition.skills), mcpServers: append(merged.mcpServers, addition.mcpServers),
|
|
54
|
+
before: append(merged.before, addition.before), after: append(merged.after, addition.after),
|
|
55
|
+
...("plugins" in addition ? { plugins: append(merged.plugins, addition.plugins) } : {}),
|
|
56
|
+
...("pythonPlugins" in addition ? { pythonPlugins: append(merged.pythonPlugins, addition.pythonPlugins) } : {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return rebuild(merged);
|
|
60
|
+
});
|
|
61
|
+
return agent;
|
|
62
|
+
}
|
|
63
|
+
function extendCodingAgent(agent, contributions) {
|
|
64
|
+
if (contributions.length === 0)
|
|
65
|
+
return agent;
|
|
66
|
+
const extend = factories.get(agent);
|
|
67
|
+
if (extend === undefined)
|
|
68
|
+
throw new TypeError("Plugin agent extensions require a built-in Codex, Claude Code or Bub Adapter.");
|
|
69
|
+
return extend(contributions);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=plugin-extensions.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-extensions.js","sourceRoot":"","sources":["plugin-extensions.ts"],"names":[],"mappings":"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","sourcesContent":["// Built-in factories own reconstruction; the Plugin linker never branches on Agent runtime kind.\nimport { basename, extname, resolve } from \"node:path\";\nimport type { Agent, SkillSpec, McpServer } from \"./types.ts\";\nimport type { SandboxCommand } from \"../sandbox/commands.ts\";\nimport type { PluginAgentExtensions } from \"../plugin/contracts.ts\";\ntype CodingAgentKind = \"codex\" | \"claudeCode\" | \"bub\";\ninterface ExtensionConfig {\n readonly skills?: readonly SkillSpec[];\n readonly mcpServers?: readonly McpServer[];\n readonly plugins?: readonly {\n readonly name: string;\n }[];\n readonly pythonPlugins?: readonly {\n readonly package: string;\n }[];\n readonly configFile?: string;\n readonly settingsFile?: string;\n readonly before?: readonly SandboxCommand[];\n readonly after?: readonly SandboxCommand[];\n}\nexport interface PluginAgentContribution {\n readonly extension: PluginAgentExtensions;\n readonly source: string;\n}\nconst factories = new WeakMap<Agent, (contributions: readonly PluginAgentContribution[]) => Agent>();\nfunction skillNames(skill: SkillSpec): readonly string[] {\n if (skill.kind === \"repo\")\n return skill.skills ?? [];\n if (skill.name !== undefined)\n return [skill.name];\n const path = resolve(skill.path);\n const file = basename(path);\n return [file.toLowerCase() === \"skill.md\" ? basename(resolve(path, \"..\")) : extname(file).toLowerCase() === \".md\" ? basename(file, extname(file)) : file];\n}\n/** Registration captures factory options without evaluating connection or credential providers. */\nexport function attachCodingAgentExtensions<Config extends ExtensionConfig>(agent: Agent, kind: CodingAgentKind, config: Config | undefined, rebuild: (config: Config) => Agent): Agent {\n factories.set(agent, (contributions) => {\n let merged = { ...config };\n const names = new Map<string, string>();\n const unique = (field: string, values: readonly string[], source: string): void => {\n for (const name of values) {\n const id = `${field}:${name}`;\n const previous = names.get(id);\n if (previous !== undefined)\n throw new TypeError(`Duplicate Agent ${field} ${JSON.stringify(name)} at ${previous} and ${source}.`);\n names.set(id, source);\n }\n };\n const record = (value: ExtensionConfig, source: string) => {\n unique(\"skill\", (value.skills ?? []).flatMap(skillNames), source);\n unique(\"MCP server\", (value.mcpServers ?? []).map((server) => server.name), source);\n unique(\"native plugin\", (value.plugins ?? []).map((plugin) => plugin.name), source);\n unique(\"Python plugin\", (value.pythonPlugins ?? []).map((plugin) => plugin.package), source);\n if (value.configFile !== undefined)\n unique(\"configFile\", [\"configFile\"], source);\n if (value.settingsFile !== undefined)\n unique(\"settingsFile\", [\"settingsFile\"], source);\n };\n record(config ?? {}, `${kind} factory`);\n for (const { extension, source } of contributions) {\n const targeted = [\"codex\", \"claudeCode\", \"bub\"].some((field) => Object.hasOwn(extension, field));\n if (targeted && extension[kind] === undefined)\n throw new TypeError(`${source} has no agent.${kind} extension for the selected Adapter.`);\n if (kind === \"bub\" && extension.mcpServers !== undefined)\n throw new TypeError(`${source}: Bub does not support agent.mcpServers.`);\n const addition: ExtensionConfig = { ...extension[kind], ...(extension.skills === undefined ? {} : { skills: extension.skills }),\n ...(extension.mcpServers === undefined ? {} : { mcpServers: extension.mcpServers }) };\n record(addition, source);\n const append = <T>(first: readonly T[] | undefined, second: readonly T[] | undefined) => second === undefined ? first : [...first ?? [], ...second];\n merged = { ...merged, ...addition,\n skills: append(merged.skills, addition.skills), mcpServers: append(merged.mcpServers, addition.mcpServers),\n before: append(merged.before, addition.before), after: append(merged.after, addition.after),\n ...(\"plugins\" in addition ? { plugins: append(merged.plugins, addition.plugins) } : {}),\n ...(\"pythonPlugins\" in addition ? { pythonPlugins: append(merged.pythonPlugins, addition.pythonPlugins) } : {}),\n };\n }\n return rebuild(merged as Config);\n });\n return agent;\n}\nexport function extendCodingAgent(agent: Agent, contributions: readonly PluginAgentContribution[]): Agent {\n if (contributions.length === 0)\n return agent;\n const extend = factories.get(agent);\n if (extend === undefined)\n throw new TypeError(\"Plugin agent extensions require a built-in Codex, Claude Code or Bub Adapter.\");\n return extend(contributions);\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Agent, SkillSpec, McpServer } from "./types.cjs";
|
|
2
|
+
import type { SandboxCommand } from "../sandbox/commands.cjs";
|
|
3
|
+
import type { PluginAgentExtensions } from "../plugin/contracts.cjs";
|
|
4
|
+
type CodingAgentKind = "codex" | "claudeCode" | "bub";
|
|
5
|
+
interface ExtensionConfig {
|
|
6
|
+
readonly skills?: readonly SkillSpec[];
|
|
7
|
+
readonly mcpServers?: readonly McpServer[];
|
|
8
|
+
readonly plugins?: readonly {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
}[];
|
|
11
|
+
readonly pythonPlugins?: readonly {
|
|
12
|
+
readonly package: string;
|
|
13
|
+
}[];
|
|
14
|
+
readonly configFile?: string;
|
|
15
|
+
readonly settingsFile?: string;
|
|
16
|
+
readonly before?: readonly SandboxCommand[];
|
|
17
|
+
readonly after?: readonly SandboxCommand[];
|
|
18
|
+
}
|
|
19
|
+
export interface PluginAgentContribution {
|
|
20
|
+
readonly extension: PluginAgentExtensions;
|
|
21
|
+
readonly source: string;
|
|
22
|
+
}
|
|
23
|
+
/** Registration captures factory options without evaluating connection or credential providers. */
|
|
24
|
+
export declare function attachCodingAgentExtensions<Config extends ExtensionConfig>(agent: Agent, kind: CodingAgentKind, config: Config | undefined, rebuild: (config: Config) => Agent): Agent;
|
|
25
|
+
export declare function extendCodingAgent(agent: Agent, contributions: readonly PluginAgentContribution[]): Agent;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Agent, SkillSpec, McpServer } from "./types.mjs";
|
|
2
|
+
import type { SandboxCommand } from "../sandbox/commands.mjs";
|
|
3
|
+
import type { PluginAgentExtensions } from "../plugin/contracts.mjs";
|
|
4
|
+
type CodingAgentKind = "codex" | "claudeCode" | "bub";
|
|
5
|
+
interface ExtensionConfig {
|
|
6
|
+
readonly skills?: readonly SkillSpec[];
|
|
7
|
+
readonly mcpServers?: readonly McpServer[];
|
|
8
|
+
readonly plugins?: readonly {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
}[];
|
|
11
|
+
readonly pythonPlugins?: readonly {
|
|
12
|
+
readonly package: string;
|
|
13
|
+
}[];
|
|
14
|
+
readonly configFile?: string;
|
|
15
|
+
readonly settingsFile?: string;
|
|
16
|
+
readonly before?: readonly SandboxCommand[];
|
|
17
|
+
readonly after?: readonly SandboxCommand[];
|
|
18
|
+
}
|
|
19
|
+
export interface PluginAgentContribution {
|
|
20
|
+
readonly extension: PluginAgentExtensions;
|
|
21
|
+
readonly source: string;
|
|
22
|
+
}
|
|
23
|
+
/** Registration captures factory options without evaluating connection or credential providers. */
|
|
24
|
+
export declare function attachCodingAgentExtensions<Config extends ExtensionConfig>(agent: Agent, kind: CodingAgentKind, config: Config | undefined, rebuild: (config: Config) => Agent): Agent;
|
|
25
|
+
export declare function extendCodingAgent(agent: Agent, contributions: readonly PluginAgentContribution[]): Agent;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Agent, SkillSpec, McpServer } from "./types.js";
|
|
2
|
+
import type { SandboxCommand } from "../sandbox/commands.js";
|
|
3
|
+
import type { PluginAgentExtensions } from "../plugin/contracts.js";
|
|
4
|
+
type CodingAgentKind = "codex" | "claudeCode" | "bub";
|
|
5
|
+
interface ExtensionConfig {
|
|
6
|
+
readonly skills?: readonly SkillSpec[];
|
|
7
|
+
readonly mcpServers?: readonly McpServer[];
|
|
8
|
+
readonly plugins?: readonly {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
}[];
|
|
11
|
+
readonly pythonPlugins?: readonly {
|
|
12
|
+
readonly package: string;
|
|
13
|
+
}[];
|
|
14
|
+
readonly configFile?: string;
|
|
15
|
+
readonly settingsFile?: string;
|
|
16
|
+
readonly before?: readonly SandboxCommand[];
|
|
17
|
+
readonly after?: readonly SandboxCommand[];
|
|
18
|
+
}
|
|
19
|
+
export interface PluginAgentContribution {
|
|
20
|
+
readonly extension: PluginAgentExtensions;
|
|
21
|
+
readonly source: string;
|
|
22
|
+
}
|
|
23
|
+
/** Registration captures factory options without evaluating connection or credential providers. */
|
|
24
|
+
export declare function attachCodingAgentExtensions<Config extends ExtensionConfig>(agent: Agent, kind: CodingAgentKind, config: Config | undefined, rebuild: (config: Config) => Agent): Agent;
|
|
25
|
+
export declare function extendCodingAgent(agent: Agent, contributions: readonly PluginAgentContribution[]): Agent;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire as __niceevalCreateRequire } from "node:module";
|
|
2
|
+
const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
|
|
3
|
+
const __niceevalCanonical = __niceevalRequire("./plugin-extensions.cjs");
|
|
4
|
+
const __niceevalExport0 = __niceevalCanonical["attachCodingAgentExtensions"];
|
|
5
|
+
export { __niceevalExport0 as attachCodingAgentExtensions };
|
|
6
|
+
const __niceevalExport1 = __niceevalCanonical["extendCodingAgent"];
|
|
7
|
+
export { __niceevalExport1 as extendCodingAgent };
|
|
8
|
+
//# sourceMappingURL=plugin-extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-extensions.js","sources":[],"names":[],"mappings":""}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertAgentLifecycleNames = assertAgentLifecycleNames;
|
|
3
4
|
exports.registerAgentLifecycleHookCommands = registerAgentLifecycleHookCommands;
|
|
4
5
|
exports.agentLifecycleHookCommandsOf = agentLifecycleHookCommandsOf;
|
|
5
6
|
exports.runPostSetupHooks = runPostSetupHooks;
|
|
@@ -15,6 +16,16 @@ const operations_ts_1 = require("../sandbox/operations.cjs");
|
|
|
15
16
|
// Adapter factory 构造时就能知道的用户 hook 声明。用 WeakMap 挂在实际 Agent
|
|
16
17
|
// 实例上,不把这份纯预览元数据扩成第二个公开 Agent 执行协议。
|
|
17
18
|
const lifecycleHookCommands = new WeakMap();
|
|
19
|
+
/** Reject removed author vocabulary even when an old field is explicitly undefined. */
|
|
20
|
+
function assertAgentLifecycleNames(config, factory) {
|
|
21
|
+
if (config === undefined)
|
|
22
|
+
return;
|
|
23
|
+
for (const [previous, current] of [["postSetup", "before"], ["preTeardown", "after"]]) {
|
|
24
|
+
if (Object.hasOwn(config, previous)) {
|
|
25
|
+
throw new TypeError(`${factory} ${previous} is no longer supported; use ${current}.`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
18
29
|
/** @internal 为内置 Adapter 登记与实际执行共用的 hook 数组。 */
|
|
19
30
|
function registerAgentLifecycleHookCommands(agent, postSetup, preTeardown) {
|
|
20
31
|
lifecycleHookCommands.set(agent, {
|
|
@@ -59,7 +70,7 @@ async function runPostSetupHooks(sb, ctx, agentName, hooks) {
|
|
|
59
70
|
return;
|
|
60
71
|
const cleanups = registeredCleanups.get(sb) ?? [];
|
|
61
72
|
registeredCleanups.set(sb, cleanups);
|
|
62
|
-
const hookCtx = commandContext(ctx, agentName, "agent.
|
|
73
|
+
const hookCtx = commandContext(ctx, agentName, "agent.before", (cleanup) => cleanups.push(cleanup));
|
|
63
74
|
const target = (0, operations_ts_1.createSandboxCommandTarget)(sb);
|
|
64
75
|
for (const hook of hooks)
|
|
65
76
|
await hook(target, hookCtx);
|
|
@@ -74,9 +85,9 @@ async function runPreTeardownHooks(sb, ctx, agentName, hooks) {
|
|
|
74
85
|
return;
|
|
75
86
|
const target = (0, operations_ts_1.createSandboxCommandTarget)(sb);
|
|
76
87
|
const nestedCleanups = [];
|
|
77
|
-
const hookCtx = commandContext(ctx, agentName, "agent.
|
|
88
|
+
const hookCtx = commandContext(ctx, agentName, "agent.after", (cleanup) => nestedCleanups.push(cleanup));
|
|
78
89
|
const cleanupContext = {
|
|
79
|
-
phase: "agent.
|
|
90
|
+
phase: "agent.after",
|
|
80
91
|
...(hookCtx.evalGroup === undefined ? {} : { evalGroup: hookCtx.evalGroup }),
|
|
81
92
|
owner: { kind: "agent", id: agentName },
|
|
82
93
|
attempt: hookCtx.attempt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-setup.js","sourceRoot":"","sources":["post-setup.ts"],"names":[],"mappings":"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","sourcesContent":["// factory 的 postSetup / preTeardown 钩子执行器 —— Claude Code / Codex / Bub 共用。\n// 契约见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」:\n// postSetup 在 adapter 全部安装步骤(含 manifest)之后按数组顺序执行;preTeardown 与它成对,\n// 按逆序、先于 agent 自己的 teardown 步骤执行(LIFO 镜像 —— postSetup 跑在 agent 安装之后,\n// preTeardown 跑在 agent 收尾之前)。两者复用 SandboxCommand 的窄上下文,不消费钩子返回值。\n// 钩子抛错直接传播:postSetup 处于 setup 阶段(attempt errored);preTeardown 处于 teardown\n// 阶段,由 runner 的 teardown 段按 teardown-failed 诊断收束。\nimport { createSandboxCommandTarget } from \"../sandbox/operations.ts\";\nimport type { SandboxCleanupCommand, SandboxCommand, SandboxCommandContext, } from \"../sandbox/commands.ts\";\nimport type { Sandbox } from \"../sandbox/types.ts\";\nimport type { AgentContext, SandboxAgent } from \"./types.ts\";\nexport interface AgentLifecycleHookCommands {\n readonly postSetup: readonly SandboxCommand[];\n readonly preTeardown: readonly SandboxCommand[];\n}\n// Adapter factory 构造时就能知道的用户 hook 声明。用 WeakMap 挂在实际 Agent\n// 实例上,不把这份纯预览元数据扩成第二个公开 Agent 执行协议。\nconst lifecycleHookCommands = new WeakMap<SandboxAgent, AgentLifecycleHookCommands>();\n/** @internal 为内置 Adapter 登记与实际执行共用的 hook 数组。 */\nexport function registerAgentLifecycleHookCommands<T extends SandboxAgent>(agent: T, postSetup: readonly SandboxCommand[] | undefined, preTeardown: readonly SandboxCommand[] | undefined): T {\n lifecycleHookCommands.set(agent, {\n postSetup: Object.freeze([...(postSetup ?? [])]),\n preTeardown: Object.freeze([...(preTeardown ?? [])]),\n });\n return agent;\n}\n/** @internal `niceeval debug` 只读取已登记的声明,不执行 hook。 */\nexport function agentLifecycleHookCommandsOf(agent: SandboxAgent): AgentLifecycleHookCommands | undefined {\n return lifecycleHookCommands.get(agent);\n}\nconst registeredCleanups = new WeakMap<Sandbox, SandboxCleanupCommand[]>();\n/** Throwable 边界立即收窄;收尾队列不长期保存 `unknown`。 */\nfunction teardownError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value));\n}\n/** 窄上下文与 layer command 同款:不把 session / model / telemetry 借给过程钩子。 */\nfunction commandContext(ctx: AgentContext, agentName: string, phase: \"agent.post-setup\" | \"agent.pre-teardown\", onCleanup: SandboxCommandContext[\"onCleanup\"]): SandboxCommandContext {\n return {\n phase,\n ...(ctx.evalGroup === undefined ? {} : { evalGroup: ctx.evalGroup }),\n owner: { kind: \"agent\", id: agentName },\n attempt: ctx.attempt ?? { id: ctx.evalId ?? \"unknown\", index: 0 },\n signal: ctx.signal,\n progress: (update) => ctx.progress(update),\n diagnostic: (input) => ctx.diagnostic(input),\n onCleanup,\n };\n}\n/**\n * postSetup 时点已走到的沙箱集合——preTeardown 的触发条件(成对触发规则:当且仅当同层 setup\n * 时点走到过)。按 sandbox 实例作键:并发 attempt 共享同一 factory 配置,沙箱是天然的\n * per-attempt 键;WeakSet 随沙箱对象回收,不泄漏。\n */\nconst postSetupPointReached = new WeakSet<Sandbox>();\n/** 按数组顺序执行 postSetup 钩子。调用方在 adapter 全部安装步骤(含 manifest)之后调用一次;\n * 即使数组为空也要调——它同时标记「postSetup 时点走到过」(preTeardown 的触发条件)。 */\nexport async function runPostSetupHooks(sb: Sandbox, ctx: AgentContext, agentName: string, hooks: readonly SandboxCommand[] | undefined): Promise<void> {\n postSetupPointReached.add(sb);\n if (!hooks?.length)\n return;\n const cleanups = registeredCleanups.get(sb) ?? [];\n registeredCleanups.set(sb, cleanups);\n const hookCtx = commandContext(ctx, agentName, \"agent.post-setup\", (cleanup) => cleanups.push(cleanup));\n const target = createSandboxCommandTarget(sb);\n for (const hook of hooks)\n await hook(target, hookCtx);\n}\n/**\n * 按逆序执行 preTeardown 钩子(LIFO 镜像 postSetup)。调用方在各自 `teardown` 方法的最前面\n * 调用一次,先于 agent 自己的收尾步骤。当且仅当本沙箱的 postSetup 时点走到过才执行——\n * adapter setup 在安装步骤中途抛错时,preTeardown 的成对前提不存在,静默跳过。\n */\nexport async function runPreTeardownHooks(sb: Sandbox, ctx: AgentContext, agentName: string, hooks: readonly SandboxCommand[] | undefined): Promise<void> {\n if (!postSetupPointReached.has(sb))\n return;\n const target = createSandboxCommandTarget(sb);\n const nestedCleanups: SandboxCleanupCommand[] = [];\n const hookCtx = commandContext(ctx, agentName, \"agent.pre-teardown\", (cleanup) => nestedCleanups.push(cleanup));\n const cleanupContext: Omit<SandboxCommandContext, \"onCleanup\"> = {\n phase: \"agent.pre-teardown\",\n ...(hookCtx.evalGroup === undefined ? {} : { evalGroup: hookCtx.evalGroup }),\n owner: { kind: \"agent\", id: agentName },\n attempt: hookCtx.attempt,\n signal: hookCtx.signal,\n progress: hookCtx.progress,\n diagnostic: hookCtx.diagnostic,\n };\n const failures: Error[] = [];\n try {\n // 收尾链里的单点失败不能剥夺其余 hook 与已登记 cleanup 的执行机会。顺序仍然是\n // preTeardown 声明的逆序,随后是截至当时所有 onCleanup 的全局逆序。\n for (const hook of [...(hooks ?? [])].reverse()) {\n try {\n await hook(target, hookCtx);\n }\n catch (error) {\n failures.push(teardownError(error));\n }\n }\n for (const cleanup of [...(registeredCleanups.get(sb) ?? []), ...nestedCleanups].reverse()) {\n try {\n await cleanup(target, cleanupContext);\n }\n catch (error) {\n failures.push(teardownError(error));\n }\n }\n }\n finally {\n registeredCleanups.delete(sb);\n postSetupPointReached.delete(sb);\n }\n if (failures.length === 1)\n throw failures[0];\n if (failures.length > 1)\n throw new AggregateError(failures, `${agentName} preTeardown failed`);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"post-setup.js","sourceRoot":"","sources":["post-setup.ts"],"names":[],"mappings":"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","sourcesContent":["// factory 的 postSetup / preTeardown 钩子执行器 —— Claude Code / Codex / Bub 共用。\n// 契约见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」:\n// postSetup 在 adapter 全部安装步骤(含 manifest)之后按数组顺序执行;preTeardown 与它成对,\n// 按逆序、先于 agent 自己的 teardown 步骤执行(LIFO 镜像 —— postSetup 跑在 agent 安装之后,\n// preTeardown 跑在 agent 收尾之前)。两者复用 SandboxCommand 的窄上下文,不消费钩子返回值。\n// 钩子抛错直接传播:postSetup 处于 setup 阶段(attempt errored);preTeardown 处于 teardown\n// 阶段,由 runner 的 teardown 段按 teardown-failed 诊断收束。\nimport { createSandboxCommandTarget } from \"../sandbox/operations.ts\";\nimport type { SandboxCleanupCommand, SandboxCommand, SandboxCommandContext, } from \"../sandbox/commands.ts\";\nimport type { Sandbox } from \"../sandbox/types.ts\";\nimport type { Agent, AgentContext, SandboxAgent } from \"./types.ts\";\nexport interface AgentLifecycleHookCommands {\n readonly postSetup: readonly SandboxCommand[];\n readonly preTeardown: readonly SandboxCommand[];\n}\n// Adapter factory 构造时就能知道的用户 hook 声明。用 WeakMap 挂在实际 Agent\n// 实例上,不把这份纯预览元数据扩成第二个公开 Agent 执行协议。\nconst lifecycleHookCommands = new WeakMap<Agent, AgentLifecycleHookCommands>();\n/** Reject removed author vocabulary even when an old field is explicitly undefined. */\nexport function assertAgentLifecycleNames(config: object | undefined, factory: string): void {\n if (config === undefined)\n return;\n for (const [previous, current] of [[\"postSetup\", \"before\"], [\"preTeardown\", \"after\"]] as const) {\n if (Object.hasOwn(config, previous)) {\n throw new TypeError(`${factory} ${previous} is no longer supported; use ${current}.`);\n }\n }\n}\n/** @internal 为内置 Adapter 登记与实际执行共用的 hook 数组。 */\nexport function registerAgentLifecycleHookCommands<T extends SandboxAgent>(agent: T, postSetup: readonly SandboxCommand[] | undefined, preTeardown: readonly SandboxCommand[] | undefined): T {\n lifecycleHookCommands.set(agent, {\n postSetup: Object.freeze([...(postSetup ?? [])]),\n preTeardown: Object.freeze([...(preTeardown ?? [])]),\n });\n return agent;\n}\n/** @internal `niceeval debug` 只读取已登记的声明,不执行 hook。 */\nexport function agentLifecycleHookCommandsOf(agent: Agent): AgentLifecycleHookCommands | undefined {\n return lifecycleHookCommands.get(agent);\n}\nconst registeredCleanups = new WeakMap<Sandbox, SandboxCleanupCommand[]>();\n/** Throwable 边界立即收窄;收尾队列不长期保存 `unknown`。 */\nfunction teardownError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value));\n}\n/** 窄上下文与 layer command 同款:不把 session / model / telemetry 借给过程钩子。 */\nfunction commandContext(ctx: AgentContext, agentName: string, phase: \"agent.before\" | \"agent.after\", onCleanup: SandboxCommandContext[\"onCleanup\"]): SandboxCommandContext {\n return {\n phase,\n ...(ctx.evalGroup === undefined ? {} : { evalGroup: ctx.evalGroup }),\n owner: { kind: \"agent\", id: agentName },\n attempt: ctx.attempt ?? { id: ctx.evalId ?? \"unknown\", index: 0 },\n signal: ctx.signal,\n progress: (update) => ctx.progress(update),\n diagnostic: (input) => ctx.diagnostic(input),\n onCleanup,\n };\n}\n/**\n * postSetup 时点已走到的沙箱集合——preTeardown 的触发条件(成对触发规则:当且仅当同层 setup\n * 时点走到过)。按 sandbox 实例作键:并发 attempt 共享同一 factory 配置,沙箱是天然的\n * per-attempt 键;WeakSet 随沙箱对象回收,不泄漏。\n */\nconst postSetupPointReached = new WeakSet<Sandbox>();\n/** 按数组顺序执行 postSetup 钩子。调用方在 adapter 全部安装步骤(含 manifest)之后调用一次;\n * 即使数组为空也要调——它同时标记「postSetup 时点走到过」(preTeardown 的触发条件)。 */\nexport async function runPostSetupHooks(sb: Sandbox, ctx: AgentContext, agentName: string, hooks: readonly SandboxCommand[] | undefined): Promise<void> {\n postSetupPointReached.add(sb);\n if (!hooks?.length)\n return;\n const cleanups = registeredCleanups.get(sb) ?? [];\n registeredCleanups.set(sb, cleanups);\n const hookCtx = commandContext(ctx, agentName, \"agent.before\", (cleanup) => cleanups.push(cleanup));\n const target = createSandboxCommandTarget(sb);\n for (const hook of hooks)\n await hook(target, hookCtx);\n}\n/**\n * 按逆序执行 preTeardown 钩子(LIFO 镜像 postSetup)。调用方在各自 `teardown` 方法的最前面\n * 调用一次,先于 agent 自己的收尾步骤。当且仅当本沙箱的 postSetup 时点走到过才执行——\n * adapter setup 在安装步骤中途抛错时,preTeardown 的成对前提不存在,静默跳过。\n */\nexport async function runPreTeardownHooks(sb: Sandbox, ctx: AgentContext, agentName: string, hooks: readonly SandboxCommand[] | undefined): Promise<void> {\n if (!postSetupPointReached.has(sb))\n return;\n const target = createSandboxCommandTarget(sb);\n const nestedCleanups: SandboxCleanupCommand[] = [];\n const hookCtx = commandContext(ctx, agentName, \"agent.after\", (cleanup) => nestedCleanups.push(cleanup));\n const cleanupContext: Omit<SandboxCommandContext, \"onCleanup\"> = {\n phase: \"agent.after\",\n ...(hookCtx.evalGroup === undefined ? {} : { evalGroup: hookCtx.evalGroup }),\n owner: { kind: \"agent\", id: agentName },\n attempt: hookCtx.attempt,\n signal: hookCtx.signal,\n progress: hookCtx.progress,\n diagnostic: hookCtx.diagnostic,\n };\n const failures: Error[] = [];\n try {\n // 收尾链里的单点失败不能剥夺其余 hook 与已登记 cleanup 的执行机会。顺序仍然是\n // preTeardown 声明的逆序,随后是截至当时所有 onCleanup 的全局逆序。\n for (const hook of [...(hooks ?? [])].reverse()) {\n try {\n await hook(target, hookCtx);\n }\n catch (error) {\n failures.push(teardownError(error));\n }\n }\n for (const cleanup of [...(registeredCleanups.get(sb) ?? []), ...nestedCleanups].reverse()) {\n try {\n await cleanup(target, cleanupContext);\n }\n catch (error) {\n failures.push(teardownError(error));\n }\n }\n }\n finally {\n registeredCleanups.delete(sb);\n postSetupPointReached.delete(sb);\n }\n if (failures.length === 1)\n throw failures[0];\n if (failures.length > 1)\n throw new AggregateError(failures, `${agentName} preTeardown failed`);\n}\n"]}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { SandboxCommand } from "../sandbox/commands.cjs";
|
|
2
2
|
import type { Sandbox } from "../sandbox/types.cjs";
|
|
3
|
-
import type { AgentContext, SandboxAgent } from "./types.cjs";
|
|
3
|
+
import type { Agent, AgentContext, SandboxAgent } from "./types.cjs";
|
|
4
4
|
export interface AgentLifecycleHookCommands {
|
|
5
5
|
readonly postSetup: readonly SandboxCommand[];
|
|
6
6
|
readonly preTeardown: readonly SandboxCommand[];
|
|
7
7
|
}
|
|
8
|
+
/** Reject removed author vocabulary even when an old field is explicitly undefined. */
|
|
9
|
+
export declare function assertAgentLifecycleNames(config: object | undefined, factory: string): void;
|
|
8
10
|
/** @internal 为内置 Adapter 登记与实际执行共用的 hook 数组。 */
|
|
9
11
|
export declare function registerAgentLifecycleHookCommands<T extends SandboxAgent>(agent: T, postSetup: readonly SandboxCommand[] | undefined, preTeardown: readonly SandboxCommand[] | undefined): T;
|
|
10
12
|
/** @internal `niceeval debug` 只读取已登记的声明,不执行 hook。 */
|
|
11
|
-
export declare function agentLifecycleHookCommandsOf(agent:
|
|
13
|
+
export declare function agentLifecycleHookCommandsOf(agent: Agent): AgentLifecycleHookCommands | undefined;
|
|
12
14
|
/** 按数组顺序执行 postSetup 钩子。调用方在 adapter 全部安装步骤(含 manifest)之后调用一次;
|
|
13
15
|
* 即使数组为空也要调——它同时标记「postSetup 时点走到过」(preTeardown 的触发条件)。 */
|
|
14
16
|
export declare function runPostSetupHooks(sb: Sandbox, ctx: AgentContext, agentName: string, hooks: readonly SandboxCommand[] | undefined): Promise<void>;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { SandboxCommand } from "../sandbox/commands.mjs";
|
|
2
2
|
import type { Sandbox } from "../sandbox/types.mjs";
|
|
3
|
-
import type { AgentContext, SandboxAgent } from "./types.mjs";
|
|
3
|
+
import type { Agent, AgentContext, SandboxAgent } from "./types.mjs";
|
|
4
4
|
export interface AgentLifecycleHookCommands {
|
|
5
5
|
readonly postSetup: readonly SandboxCommand[];
|
|
6
6
|
readonly preTeardown: readonly SandboxCommand[];
|
|
7
7
|
}
|
|
8
|
+
/** Reject removed author vocabulary even when an old field is explicitly undefined. */
|
|
9
|
+
export declare function assertAgentLifecycleNames(config: object | undefined, factory: string): void;
|
|
8
10
|
/** @internal 为内置 Adapter 登记与实际执行共用的 hook 数组。 */
|
|
9
11
|
export declare function registerAgentLifecycleHookCommands<T extends SandboxAgent>(agent: T, postSetup: readonly SandboxCommand[] | undefined, preTeardown: readonly SandboxCommand[] | undefined): T;
|
|
10
12
|
/** @internal `niceeval debug` 只读取已登记的声明,不执行 hook。 */
|
|
11
|
-
export declare function agentLifecycleHookCommandsOf(agent:
|
|
13
|
+
export declare function agentLifecycleHookCommandsOf(agent: Agent): AgentLifecycleHookCommands | undefined;
|
|
12
14
|
/** 按数组顺序执行 postSetup 钩子。调用方在 adapter 全部安装步骤(含 manifest)之后调用一次;
|
|
13
15
|
* 即使数组为空也要调——它同时标记「postSetup 时点走到过」(preTeardown 的触发条件)。 */
|
|
14
16
|
export declare function runPostSetupHooks(sb: Sandbox, ctx: AgentContext, agentName: string, hooks: readonly SandboxCommand[] | undefined): Promise<void>;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { SandboxCommand } from "../sandbox/commands.js";
|
|
2
2
|
import type { Sandbox } from "../sandbox/types.js";
|
|
3
|
-
import type { AgentContext, SandboxAgent } from "./types.js";
|
|
3
|
+
import type { Agent, AgentContext, SandboxAgent } from "./types.js";
|
|
4
4
|
export interface AgentLifecycleHookCommands {
|
|
5
5
|
readonly postSetup: readonly SandboxCommand[];
|
|
6
6
|
readonly preTeardown: readonly SandboxCommand[];
|
|
7
7
|
}
|
|
8
|
+
/** Reject removed author vocabulary even when an old field is explicitly undefined. */
|
|
9
|
+
export declare function assertAgentLifecycleNames(config: object | undefined, factory: string): void;
|
|
8
10
|
/** @internal 为内置 Adapter 登记与实际执行共用的 hook 数组。 */
|
|
9
11
|
export declare function registerAgentLifecycleHookCommands<T extends SandboxAgent>(agent: T, postSetup: readonly SandboxCommand[] | undefined, preTeardown: readonly SandboxCommand[] | undefined): T;
|
|
10
12
|
/** @internal `niceeval debug` 只读取已登记的声明,不执行 hook。 */
|
|
11
|
-
export declare function agentLifecycleHookCommandsOf(agent:
|
|
13
|
+
export declare function agentLifecycleHookCommandsOf(agent: Agent): AgentLifecycleHookCommands | undefined;
|
|
12
14
|
/** 按数组顺序执行 postSetup 钩子。调用方在 adapter 全部安装步骤(含 manifest)之后调用一次;
|
|
13
15
|
* 即使数组为空也要调——它同时标记「postSetup 时点走到过」(preTeardown 的触发条件)。 */
|
|
14
16
|
export declare function runPostSetupHooks(sb: Sandbox, ctx: AgentContext, agentName: string, hooks: readonly SandboxCommand[] | undefined): Promise<void>;
|
|
@@ -3,10 +3,12 @@ const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
|
|
|
3
3
|
const __niceevalCanonical = __niceevalRequire("./post-setup.cjs");
|
|
4
4
|
const __niceevalExport0 = __niceevalCanonical["agentLifecycleHookCommandsOf"];
|
|
5
5
|
export { __niceevalExport0 as agentLifecycleHookCommandsOf };
|
|
6
|
-
const __niceevalExport1 = __niceevalCanonical["
|
|
7
|
-
export { __niceevalExport1 as
|
|
8
|
-
const __niceevalExport2 = __niceevalCanonical["
|
|
9
|
-
export { __niceevalExport2 as
|
|
10
|
-
const __niceevalExport3 = __niceevalCanonical["
|
|
11
|
-
export { __niceevalExport3 as
|
|
6
|
+
const __niceevalExport1 = __niceevalCanonical["assertAgentLifecycleNames"];
|
|
7
|
+
export { __niceevalExport1 as assertAgentLifecycleNames };
|
|
8
|
+
const __niceevalExport2 = __niceevalCanonical["registerAgentLifecycleHookCommands"];
|
|
9
|
+
export { __niceevalExport2 as registerAgentLifecycleHookCommands };
|
|
10
|
+
const __niceevalExport3 = __niceevalCanonical["runPostSetupHooks"];
|
|
11
|
+
export { __niceevalExport3 as runPostSetupHooks };
|
|
12
|
+
const __niceevalExport4 = __niceevalCanonical["runPreTeardownHooks"];
|
|
13
|
+
export { __niceevalExport4 as runPreTeardownHooks };
|
|
12
14
|
//# sourceMappingURL=post-setup.js.map
|
|
@@ -49,7 +49,7 @@ function commandProjectionForClaudeSdkTool(name) {
|
|
|
49
49
|
* (逐 token 渲染)整个忽略。HITL 的停轮判定(哪个工具被门控)是应用侧的知识,不在这里——
|
|
50
50
|
* 扫描 add() 返回的 operation.started 自行决定。
|
|
51
51
|
*/
|
|
52
|
-
// @concord-code
|
|
52
|
+
// @concord-code
|
|
53
53
|
// @concord-implements docs/feature/adapters/library/streaming.md
|
|
54
54
|
// @concord-implements docs/feature/adapters/sdk/claude-agent-sdk/README.md
|
|
55
55
|
function createClaudeSdkEventStream() {
|
|
@@ -174,7 +174,7 @@ function createClaudeSdkEventStream() {
|
|
|
174
174
|
* stopReason "error" / "aborted" 收尾时记失败(`failed`)并发一条 error 事件。
|
|
175
175
|
* tool_execution_start/end → operation.started / operation.finished。
|
|
176
176
|
*/
|
|
177
|
-
// @concord-code
|
|
177
|
+
// @concord-code
|
|
178
178
|
// @concord-implements docs/feature/adapters/library/streaming.md
|
|
179
179
|
// @concord-implements docs/feature/adapters/sdk/pi-agent-core/README.md
|
|
180
180
|
function createPiAgentEventStream() {
|
|
@@ -282,7 +282,7 @@ function createPiAgentEventStream() {
|
|
|
282
282
|
};
|
|
283
283
|
}
|
|
284
284
|
/** Codex SDK 线程事件流(`thread.started` / `item.*` / `turn.completed` / `turn.failed`)→ 标准事件。 */
|
|
285
|
-
// @concord-code
|
|
285
|
+
// @concord-code
|
|
286
286
|
// @concord-implements docs/feature/adapters/library/streaming.md
|
|
287
287
|
// @concord-implements docs/feature/adapters/sdk/codex-sdk/README.md
|
|
288
288
|
function createCodexThreadEventStream() {
|