@smthrs/harness 0.0.0-stage → 1.0.0-rc.3
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/CHANGELOG.md +387 -0
- package/LICENSE +21 -0
- package/README.md +138 -2
- package/dist/cjs/AgentEvent.d.ts +3092 -0
- package/dist/cjs/AgentEvent.d.ts.map +1 -0
- package/dist/cjs/AgentEvent.js +1116 -0
- package/dist/cjs/AgentEvent.js.map +7 -0
- package/dist/cjs/CallLedger.d.ts +378 -0
- package/dist/cjs/CallLedger.d.ts.map +1 -0
- package/dist/cjs/CallLedger.js +240 -0
- package/dist/cjs/CallLedger.js.map +7 -0
- package/dist/cjs/Cell.d.ts +774 -0
- package/dist/cjs/Cell.d.ts.map +1 -0
- package/dist/cjs/Cell.js +431 -0
- package/dist/cjs/Cell.js.map +7 -0
- package/dist/cjs/CellCalls.d.ts +115 -0
- package/dist/cjs/CellCalls.d.ts.map +1 -0
- package/dist/cjs/CellCalls.js +98 -0
- package/dist/cjs/CellCalls.js.map +7 -0
- package/dist/cjs/CellHistory.d.ts +102 -0
- package/dist/cjs/CellHistory.d.ts.map +1 -0
- package/dist/cjs/CellHistory.js +54 -0
- package/dist/cjs/CellHistory.js.map +7 -0
- package/dist/cjs/CellTurn.d.ts +1071 -0
- package/dist/cjs/CellTurn.d.ts.map +1 -0
- package/dist/cjs/CellTurn.js +2618 -0
- package/dist/cjs/CellTurn.js.map +7 -0
- package/dist/cjs/CellValidation.d.ts +94 -0
- package/dist/cjs/CellValidation.d.ts.map +1 -0
- package/dist/cjs/CellValidation.js +218 -0
- package/dist/cjs/CellValidation.js.map +7 -0
- package/dist/cjs/Compaction.d.ts +158 -0
- package/dist/cjs/Compaction.d.ts.map +1 -0
- package/dist/cjs/Compaction.js +189 -0
- package/dist/cjs/Compaction.js.map +7 -0
- package/dist/cjs/CompletionClaim.d.ts +801 -0
- package/dist/cjs/CompletionClaim.d.ts.map +1 -0
- package/dist/cjs/CompletionClaim.js +303 -0
- package/dist/cjs/CompletionClaim.js.map +7 -0
- package/dist/cjs/ContextWindow.d.ts +435 -0
- package/dist/cjs/ContextWindow.d.ts.map +1 -0
- package/dist/cjs/ContextWindow.js +319 -0
- package/dist/cjs/ContextWindow.js.map +7 -0
- package/dist/cjs/EngineLike.d.ts +546 -0
- package/dist/cjs/EngineLike.d.ts.map +1 -0
- package/dist/cjs/EngineLike.js +114 -0
- package/dist/cjs/EngineLike.js.map +7 -0
- package/dist/cjs/ExternalTranscript.d.ts +349 -0
- package/dist/cjs/ExternalTranscript.d.ts.map +1 -0
- package/dist/cjs/ExternalTranscript.js +826 -0
- package/dist/cjs/ExternalTranscript.js.map +7 -0
- package/dist/cjs/FailedCall.d.ts +132 -0
- package/dist/cjs/FailedCall.d.ts.map +1 -0
- package/dist/cjs/FailedCall.js +53 -0
- package/dist/cjs/FailedCall.js.map +7 -0
- package/dist/cjs/FlowBinding.d.ts +289 -0
- package/dist/cjs/FlowBinding.d.ts.map +1 -0
- package/dist/cjs/FlowBinding.js +251 -0
- package/dist/cjs/FlowBinding.js.map +7 -0
- package/dist/cjs/HarnessError.d.ts +57 -0
- package/dist/cjs/HarnessError.d.ts.map +1 -0
- package/dist/cjs/HarnessError.js +75 -0
- package/dist/cjs/HarnessError.js.map +7 -0
- package/dist/cjs/Judgement.d.ts +289 -0
- package/dist/cjs/Judgement.d.ts.map +1 -0
- package/dist/cjs/Judgement.js +240 -0
- package/dist/cjs/Judgement.js.map +7 -0
- package/dist/cjs/Monitor.d.ts +374 -0
- package/dist/cjs/Monitor.d.ts.map +1 -0
- package/dist/cjs/Monitor.js +233 -0
- package/dist/cjs/Monitor.js.map +7 -0
- package/dist/cjs/NarrowedCheck.d.ts +523 -0
- package/dist/cjs/NarrowedCheck.d.ts.map +1 -0
- package/dist/cjs/NarrowedCheck.js +263 -0
- package/dist/cjs/NarrowedCheck.js.map +7 -0
- package/dist/cjs/Notifications.d.ts +42 -0
- package/dist/cjs/Notifications.d.ts.map +1 -0
- package/dist/cjs/Notifications.js +177 -0
- package/dist/cjs/Notifications.js.map +7 -0
- package/dist/cjs/Plan.d.ts +127 -0
- package/dist/cjs/Plan.d.ts.map +1 -0
- package/dist/cjs/Plan.js +77 -0
- package/dist/cjs/Plan.js.map +7 -0
- package/dist/cjs/QuickJSSandbox.d.ts +151 -0
- package/dist/cjs/QuickJSSandbox.d.ts.map +1 -0
- package/dist/cjs/QuickJSSandbox.js +987 -0
- package/dist/cjs/QuickJSSandbox.js.map +7 -0
- package/dist/cjs/Relevance.d.ts +213 -0
- package/dist/cjs/Relevance.d.ts.map +1 -0
- package/dist/cjs/Relevance.js +183 -0
- package/dist/cjs/Relevance.js.map +7 -0
- package/dist/cjs/Sandbox.d.ts +637 -0
- package/dist/cjs/Sandbox.d.ts.map +1 -0
- package/dist/cjs/Sandbox.js +260 -0
- package/dist/cjs/Sandbox.js.map +7 -0
- package/dist/cjs/Steering.d.ts +464 -0
- package/dist/cjs/Steering.d.ts.map +1 -0
- package/dist/cjs/Steering.js +153 -0
- package/dist/cjs/Steering.js.map +7 -0
- package/dist/cjs/StructuredOutput.d.ts +252 -0
- package/dist/cjs/StructuredOutput.d.ts.map +1 -0
- package/dist/cjs/StructuredOutput.js +266 -0
- package/dist/cjs/StructuredOutput.js.map +7 -0
- package/dist/cjs/Sufficiency.d.ts +195 -0
- package/dist/cjs/Sufficiency.d.ts.map +1 -0
- package/dist/cjs/Sufficiency.js +110 -0
- package/dist/cjs/Sufficiency.js.map +7 -0
- package/dist/cjs/Supervisor.d.ts +719 -0
- package/dist/cjs/Supervisor.d.ts.map +1 -0
- package/dist/cjs/Supervisor.js +313 -0
- package/dist/cjs/Supervisor.js.map +7 -0
- package/dist/cjs/Tokens.d.ts +86 -0
- package/dist/cjs/Tokens.d.ts.map +1 -0
- package/dist/cjs/Tokens.js +72 -0
- package/dist/cjs/Tokens.js.map +7 -0
- package/dist/cjs/Transcript.d.ts +171 -0
- package/dist/cjs/Transcript.d.ts.map +1 -0
- package/dist/cjs/Transcript.js +342 -0
- package/dist/cjs/Transcript.js.map +7 -0
- package/dist/cjs/TruncatedOutput.d.ts +186 -0
- package/dist/cjs/TruncatedOutput.d.ts.map +1 -0
- package/dist/cjs/TruncatedOutput.js +143 -0
- package/dist/cjs/TruncatedOutput.js.map +7 -0
- package/dist/cjs/UnmovedTree.d.ts +113 -0
- package/dist/cjs/UnmovedTree.d.ts.map +1 -0
- package/dist/cjs/UnmovedTree.js +38 -0
- package/dist/cjs/UnmovedTree.js.map +7 -0
- package/dist/cjs/UnresolvedFailure.d.ts +196 -0
- package/dist/cjs/UnresolvedFailure.d.ts.map +1 -0
- package/dist/cjs/UnresolvedFailure.js +77 -0
- package/dist/cjs/UnresolvedFailure.js.map +7 -0
- package/dist/cjs/VacuousVerification.d.ts +237 -0
- package/dist/cjs/VacuousVerification.d.ts.map +1 -0
- package/dist/cjs/VacuousVerification.js +91 -0
- package/dist/cjs/VacuousVerification.js.map +7 -0
- package/dist/cjs/VariablesPanel.d.ts +117 -0
- package/dist/cjs/VariablesPanel.d.ts.map +1 -0
- package/dist/cjs/VariablesPanel.js +108 -0
- package/dist/cjs/VariablesPanel.js.map +7 -0
- package/dist/cjs/index.d.ts +172 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +99 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/bytes.d.ts +36 -0
- package/dist/cjs/internal/bytes.d.ts.map +1 -0
- package/dist/cjs/internal/bytes.js +57 -0
- package/dist/cjs/internal/bytes.js.map +7 -0
- package/dist/cjs/internal/cellPrompt.d.ts +122 -0
- package/dist/cjs/internal/cellPrompt.d.ts.map +1 -0
- package/dist/cjs/internal/cellPrompt.js +146 -0
- package/dist/cjs/internal/cellPrompt.js.map +7 -0
- package/dist/cjs/internal/compactable.d.ts +44 -0
- package/dist/cjs/internal/compactable.d.ts.map +1 -0
- package/dist/cjs/internal/compactable.js +56 -0
- package/dist/cjs/internal/compactable.js.map +7 -0
- package/dist/cjs/internal/compactionMarks.d.ts +278 -0
- package/dist/cjs/internal/compactionMarks.d.ts.map +1 -0
- package/dist/cjs/internal/compactionMarks.js +212 -0
- package/dist/cjs/internal/compactionMarks.js.map +7 -0
- package/dist/cjs/internal/demandText.d.ts +95 -0
- package/dist/cjs/internal/demandText.d.ts.map +1 -0
- package/dist/cjs/internal/demandText.js +70 -0
- package/dist/cjs/internal/demandText.js.map +7 -0
- package/dist/cjs/internal/elide.d.ts +109 -0
- package/dist/cjs/internal/elide.d.ts.map +1 -0
- package/dist/cjs/internal/elide.js +59 -0
- package/dist/cjs/internal/elide.js.map +7 -0
- package/dist/cjs/internal/frame.d.ts +463 -0
- package/dist/cjs/internal/frame.d.ts.map +1 -0
- package/dist/cjs/internal/frame.js +514 -0
- package/dist/cjs/internal/frame.js.map +7 -0
- package/dist/cjs/internal/nonNegativeSafeInt.d.ts +20 -0
- package/dist/cjs/internal/nonNegativeSafeInt.d.ts.map +1 -0
- package/dist/cjs/internal/nonNegativeSafeInt.js +29 -0
- package/dist/cjs/internal/nonNegativeSafeInt.js.map +7 -0
- package/dist/cjs/internal/paidUsage.d.ts +52 -0
- package/dist/cjs/internal/paidUsage.d.ts.map +1 -0
- package/dist/cjs/internal/paidUsage.js +70 -0
- package/dist/cjs/internal/paidUsage.js.map +7 -0
- package/dist/cjs/internal/printChannel.d.ts +233 -0
- package/dist/cjs/internal/printChannel.d.ts.map +1 -0
- package/dist/cjs/internal/printChannel.js +165 -0
- package/dist/cjs/internal/printChannel.js.map +7 -0
- package/dist/cjs/internal/printsObservation.d.ts +26 -0
- package/dist/cjs/internal/printsObservation.d.ts.map +1 -0
- package/dist/cjs/internal/printsObservation.js +27 -0
- package/dist/cjs/internal/printsObservation.js.map +7 -0
- package/dist/cjs/internal/refusal.d.ts +40 -0
- package/dist/cjs/internal/refusal.d.ts.map +1 -0
- package/dist/cjs/internal/refusal.js +45 -0
- package/dist/cjs/internal/refusal.js.map +7 -0
- package/dist/cjs/internal/supervision.d.ts +174 -0
- package/dist/cjs/internal/supervision.d.ts.map +1 -0
- package/dist/cjs/internal/supervision.js +402 -0
- package/dist/cjs/internal/supervision.js.map +7 -0
- package/dist/cjs/internal/unfinishedWork.d.ts +99 -0
- package/dist/cjs/internal/unfinishedWork.d.ts.map +1 -0
- package/dist/cjs/internal/unfinishedWork.js +80 -0
- package/dist/cjs/internal/unfinishedWork.js.map +7 -0
- package/dist/cjs/internal/unobservedCall.d.ts +112 -0
- package/dist/cjs/internal/unobservedCall.d.ts.map +1 -0
- package/dist/cjs/internal/unobservedCall.js +345 -0
- package/dist/cjs/internal/unobservedCall.js.map +7 -0
- package/dist/cjs/internal/untrustedData.d.ts +14 -0
- package/dist/cjs/internal/untrustedData.d.ts.map +1 -0
- package/dist/cjs/internal/untrustedData.js +30 -0
- package/dist/cjs/internal/untrustedData.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/AgentEvent.d.ts +3092 -0
- package/dist/esm/AgentEvent.d.ts.map +1 -0
- package/dist/esm/AgentEvent.js +1610 -0
- package/dist/esm/AgentEvent.js.map +1 -0
- package/dist/esm/CallLedger.d.ts +378 -0
- package/dist/esm/CallLedger.d.ts.map +1 -0
- package/dist/esm/CallLedger.js +506 -0
- package/dist/esm/CallLedger.js.map +1 -0
- package/dist/esm/Cell.d.ts +774 -0
- package/dist/esm/Cell.d.ts.map +1 -0
- package/dist/esm/Cell.js +772 -0
- package/dist/esm/Cell.js.map +1 -0
- package/dist/esm/CellCalls.d.ts +115 -0
- package/dist/esm/CellCalls.d.ts.map +1 -0
- package/dist/esm/CellCalls.js +97 -0
- package/dist/esm/CellCalls.js.map +1 -0
- package/dist/esm/CellHistory.d.ts +102 -0
- package/dist/esm/CellHistory.d.ts.map +1 -0
- package/dist/esm/CellHistory.js +91 -0
- package/dist/esm/CellHistory.js.map +1 -0
- package/dist/esm/CellTurn.d.ts +1071 -0
- package/dist/esm/CellTurn.d.ts.map +1 -0
- package/dist/esm/CellTurn.js +3410 -0
- package/dist/esm/CellTurn.js.map +1 -0
- package/dist/esm/CellValidation.d.ts +94 -0
- package/dist/esm/CellValidation.d.ts.map +1 -0
- package/dist/esm/CellValidation.js +335 -0
- package/dist/esm/CellValidation.js.map +1 -0
- package/dist/esm/Compaction.d.ts +158 -0
- package/dist/esm/Compaction.d.ts.map +1 -0
- package/dist/esm/Compaction.js +216 -0
- package/dist/esm/Compaction.js.map +1 -0
- package/dist/esm/CompletionClaim.d.ts +801 -0
- package/dist/esm/CompletionClaim.d.ts.map +1 -0
- package/dist/esm/CompletionClaim.js +833 -0
- package/dist/esm/CompletionClaim.js.map +1 -0
- package/dist/esm/ContextWindow.d.ts +435 -0
- package/dist/esm/ContextWindow.d.ts.map +1 -0
- package/dist/esm/ContextWindow.js +427 -0
- package/dist/esm/ContextWindow.js.map +1 -0
- package/dist/esm/EngineLike.d.ts +546 -0
- package/dist/esm/EngineLike.d.ts.map +1 -0
- package/dist/esm/EngineLike.js +218 -0
- package/dist/esm/EngineLike.js.map +1 -0
- package/dist/esm/ExternalTranscript.d.ts +349 -0
- package/dist/esm/ExternalTranscript.d.ts.map +1 -0
- package/dist/esm/ExternalTranscript.js +987 -0
- package/dist/esm/ExternalTranscript.js.map +1 -0
- package/dist/esm/FailedCall.d.ts +132 -0
- package/dist/esm/FailedCall.d.ts.map +1 -0
- package/dist/esm/FailedCall.js +131 -0
- package/dist/esm/FailedCall.js.map +1 -0
- package/dist/esm/FlowBinding.d.ts +289 -0
- package/dist/esm/FlowBinding.d.ts.map +1 -0
- package/dist/esm/FlowBinding.js +376 -0
- package/dist/esm/FlowBinding.js.map +1 -0
- package/dist/esm/HarnessError.d.ts +57 -0
- package/dist/esm/HarnessError.d.ts.map +1 -0
- package/dist/esm/HarnessError.js +85 -0
- package/dist/esm/HarnessError.js.map +1 -0
- package/dist/esm/Judgement.d.ts +289 -0
- package/dist/esm/Judgement.d.ts.map +1 -0
- package/dist/esm/Judgement.js +305 -0
- package/dist/esm/Judgement.js.map +1 -0
- package/dist/esm/Monitor.d.ts +374 -0
- package/dist/esm/Monitor.d.ts.map +1 -0
- package/dist/esm/Monitor.js +370 -0
- package/dist/esm/Monitor.js.map +1 -0
- package/dist/esm/NarrowedCheck.d.ts +523 -0
- package/dist/esm/NarrowedCheck.d.ts.map +1 -0
- package/dist/esm/NarrowedCheck.js +612 -0
- package/dist/esm/NarrowedCheck.js.map +1 -0
- package/dist/esm/Notifications.d.ts +42 -0
- package/dist/esm/Notifications.d.ts.map +1 -0
- package/dist/esm/Notifications.js +215 -0
- package/dist/esm/Notifications.js.map +1 -0
- package/dist/esm/Plan.d.ts +127 -0
- package/dist/esm/Plan.d.ts.map +1 -0
- package/dist/esm/Plan.js +97 -0
- package/dist/esm/Plan.js.map +1 -0
- package/dist/esm/QuickJSSandbox.d.ts +151 -0
- package/dist/esm/QuickJSSandbox.d.ts.map +1 -0
- package/dist/esm/QuickJSSandbox.js +1364 -0
- package/dist/esm/QuickJSSandbox.js.map +1 -0
- package/dist/esm/Relevance.d.ts +213 -0
- package/dist/esm/Relevance.d.ts.map +1 -0
- package/dist/esm/Relevance.js +254 -0
- package/dist/esm/Relevance.js.map +1 -0
- package/dist/esm/Sandbox.d.ts +637 -0
- package/dist/esm/Sandbox.d.ts.map +1 -0
- package/dist/esm/Sandbox.js +464 -0
- package/dist/esm/Sandbox.js.map +1 -0
- package/dist/esm/Steering.d.ts +464 -0
- package/dist/esm/Steering.d.ts.map +1 -0
- package/dist/esm/Steering.js +193 -0
- package/dist/esm/Steering.js.map +1 -0
- package/dist/esm/StructuredOutput.d.ts +252 -0
- package/dist/esm/StructuredOutput.d.ts.map +1 -0
- package/dist/esm/StructuredOutput.js +430 -0
- package/dist/esm/StructuredOutput.js.map +1 -0
- package/dist/esm/Sufficiency.d.ts +195 -0
- package/dist/esm/Sufficiency.d.ts.map +1 -0
- package/dist/esm/Sufficiency.js +207 -0
- package/dist/esm/Sufficiency.js.map +1 -0
- package/dist/esm/Supervisor.d.ts +719 -0
- package/dist/esm/Supervisor.d.ts.map +1 -0
- package/dist/esm/Supervisor.js +575 -0
- package/dist/esm/Supervisor.js.map +1 -0
- package/dist/esm/Tokens.d.ts +86 -0
- package/dist/esm/Tokens.d.ts.map +1 -0
- package/dist/esm/Tokens.js +92 -0
- package/dist/esm/Tokens.js.map +1 -0
- package/dist/esm/Transcript.d.ts +171 -0
- package/dist/esm/Transcript.d.ts.map +1 -0
- package/dist/esm/Transcript.js +424 -0
- package/dist/esm/Transcript.js.map +1 -0
- package/dist/esm/TruncatedOutput.d.ts +186 -0
- package/dist/esm/TruncatedOutput.d.ts.map +1 -0
- package/dist/esm/TruncatedOutput.js +257 -0
- package/dist/esm/TruncatedOutput.js.map +1 -0
- package/dist/esm/UnmovedTree.d.ts +113 -0
- package/dist/esm/UnmovedTree.d.ts.map +1 -0
- package/dist/esm/UnmovedTree.js +90 -0
- package/dist/esm/UnmovedTree.js.map +1 -0
- package/dist/esm/UnresolvedFailure.d.ts +196 -0
- package/dist/esm/UnresolvedFailure.d.ts.map +1 -0
- package/dist/esm/UnresolvedFailure.js +218 -0
- package/dist/esm/UnresolvedFailure.js.map +1 -0
- package/dist/esm/VacuousVerification.d.ts +237 -0
- package/dist/esm/VacuousVerification.d.ts.map +1 -0
- package/dist/esm/VacuousVerification.js +245 -0
- package/dist/esm/VacuousVerification.js.map +1 -0
- package/dist/esm/VariablesPanel.d.ts +117 -0
- package/dist/esm/VariablesPanel.d.ts.map +1 -0
- package/dist/esm/VariablesPanel.js +142 -0
- package/dist/esm/VariablesPanel.js.map +1 -0
- package/dist/esm/index.d.ts +172 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +172 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/bytes.d.ts +36 -0
- package/dist/esm/internal/bytes.d.ts.map +1 -0
- package/dist/esm/internal/bytes.js +70 -0
- package/dist/esm/internal/bytes.js.map +1 -0
- package/dist/esm/internal/cellPrompt.d.ts +122 -0
- package/dist/esm/internal/cellPrompt.d.ts.map +1 -0
- package/dist/esm/internal/cellPrompt.js +276 -0
- package/dist/esm/internal/cellPrompt.js.map +1 -0
- package/dist/esm/internal/compactable.d.ts +44 -0
- package/dist/esm/internal/compactable.d.ts.map +1 -0
- package/dist/esm/internal/compactable.js +71 -0
- package/dist/esm/internal/compactable.js.map +1 -0
- package/dist/esm/internal/compactionMarks.d.ts +278 -0
- package/dist/esm/internal/compactionMarks.d.ts.map +1 -0
- package/dist/esm/internal/compactionMarks.js +317 -0
- package/dist/esm/internal/compactionMarks.js.map +1 -0
- package/dist/esm/internal/demandText.d.ts +95 -0
- package/dist/esm/internal/demandText.d.ts.map +1 -0
- package/dist/esm/internal/demandText.js +128 -0
- package/dist/esm/internal/demandText.js.map +1 -0
- package/dist/esm/internal/elide.d.ts +109 -0
- package/dist/esm/internal/elide.d.ts.map +1 -0
- package/dist/esm/internal/elide.js +123 -0
- package/dist/esm/internal/elide.js.map +1 -0
- package/dist/esm/internal/frame.d.ts +463 -0
- package/dist/esm/internal/frame.d.ts.map +1 -0
- package/dist/esm/internal/frame.js +861 -0
- package/dist/esm/internal/frame.js.map +1 -0
- package/dist/esm/internal/nonNegativeSafeInt.d.ts +20 -0
- package/dist/esm/internal/nonNegativeSafeInt.d.ts.map +1 -0
- package/dist/esm/internal/nonNegativeSafeInt.js +20 -0
- package/dist/esm/internal/nonNegativeSafeInt.js.map +1 -0
- package/dist/esm/internal/paidUsage.d.ts +52 -0
- package/dist/esm/internal/paidUsage.d.ts.map +1 -0
- package/dist/esm/internal/paidUsage.js +72 -0
- package/dist/esm/internal/paidUsage.js.map +1 -0
- package/dist/esm/internal/printChannel.d.ts +233 -0
- package/dist/esm/internal/printChannel.d.ts.map +1 -0
- package/dist/esm/internal/printChannel.js +376 -0
- package/dist/esm/internal/printChannel.js.map +1 -0
- package/dist/esm/internal/printsObservation.d.ts +26 -0
- package/dist/esm/internal/printsObservation.d.ts.map +1 -0
- package/dist/esm/internal/printsObservation.js +29 -0
- package/dist/esm/internal/printsObservation.js.map +1 -0
- package/dist/esm/internal/refusal.d.ts +40 -0
- package/dist/esm/internal/refusal.d.ts.map +1 -0
- package/dist/esm/internal/refusal.js +47 -0
- package/dist/esm/internal/refusal.js.map +1 -0
- package/dist/esm/internal/supervision.d.ts +174 -0
- package/dist/esm/internal/supervision.d.ts.map +1 -0
- package/dist/esm/internal/supervision.js +485 -0
- package/dist/esm/internal/supervision.js.map +1 -0
- package/dist/esm/internal/unfinishedWork.d.ts +99 -0
- package/dist/esm/internal/unfinishedWork.d.ts.map +1 -0
- package/dist/esm/internal/unfinishedWork.js +85 -0
- package/dist/esm/internal/unfinishedWork.js.map +1 -0
- package/dist/esm/internal/unobservedCall.d.ts +112 -0
- package/dist/esm/internal/unobservedCall.d.ts.map +1 -0
- package/dist/esm/internal/unobservedCall.js +501 -0
- package/dist/esm/internal/unobservedCall.js.map +1 -0
- package/dist/esm/internal/untrustedData.d.ts +14 -0
- package/dist/esm/internal/untrustedData.d.ts.map +1 -0
- package/dist/esm/internal/untrustedData.js +15 -0
- package/dist/esm/internal/untrustedData.js.map +1 -0
- package/docs/README.md +129 -0
- package/docs/api.md +1869 -0
- package/docs/concepts.md +238 -0
- package/docs/external-transcripts.md +245 -0
- package/docs/guides/bind-flows.md +167 -0
- package/docs/guides/drive-the-loop.md +265 -0
- package/docs/guides/run-cells.md +262 -0
- package/docs/guides/workerd.md +144 -0
- package/docs/installation.md +69 -0
- package/docs/quickstart.md +121 -0
- package/docs/reference.md +954 -0
- package/docs/troubleshooting.md +177 -0
- package/package.json +463 -3
- package/src/AgentEvent.ts +1772 -0
- package/src/CallLedger.ts +560 -0
- package/src/Cell.ts +926 -0
- package/src/CellCalls.ts +198 -0
- package/src/CellHistory.ts +128 -0
- package/src/CellTurn.ts +4450 -0
- package/src/CellValidation.ts +382 -0
- package/src/Compaction.ts +330 -0
- package/src/CompletionClaim.ts +1013 -0
- package/src/ContextWindow.ts +669 -0
- package/src/EngineLike.ts +614 -0
- package/src/ExternalTranscript.ts +1143 -0
- package/src/FailedCall.ts +163 -0
- package/src/FlowBinding.ts +603 -0
- package/src/HarnessError.ts +98 -0
- package/src/Judgement.ts +526 -0
- package/src/Monitor.ts +579 -0
- package/src/NarrowedCheck.ts +694 -0
- package/src/Notifications.ts +262 -0
- package/src/Plan.ts +113 -0
- package/src/QuickJSSandbox.ts +1557 -0
- package/src/Relevance.ts +352 -0
- package/src/Sandbox.ts +908 -0
- package/src/Steering.ts +405 -0
- package/src/StructuredOutput.ts +484 -0
- package/src/Sufficiency.ts +247 -0
- package/src/Supervisor.ts +798 -0
- package/src/Tokens.ts +108 -0
- package/src/Transcript.ts +513 -0
- package/src/TruncatedOutput.ts +297 -0
- package/src/UnmovedTree.ts +121 -0
- package/src/UnresolvedFailure.ts +240 -0
- package/src/VacuousVerification.ts +280 -0
- package/src/VariablesPanel.ts +165 -0
- package/src/index.ts +204 -0
- package/src/internal/bytes.ts +70 -0
- package/src/internal/cellPrompt.ts +337 -0
- package/src/internal/compactable.ts +76 -0
- package/src/internal/compactionMarks.ts +454 -0
- package/src/internal/demandText.ts +145 -0
- package/src/internal/elide.ts +130 -0
- package/src/internal/frame.ts +1178 -0
- package/src/internal/nonNegativeSafeInt.ts +24 -0
- package/src/internal/paidUsage.ts +90 -0
- package/src/internal/printChannel.ts +434 -0
- package/src/internal/printsObservation.ts +31 -0
- package/src/internal/refusal.ts +53 -0
- package/src/internal/supervision.ts +652 -0
- package/src/internal/unfinishedWork.ts +123 -0
- package/src/internal/unobservedCall.ts +536 -0
- package/src/internal/untrustedData.ts +19 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a run is shown of the human-provided items it could be shown.
|
|
3
|
+
*
|
|
4
|
+
* Memory rows, catalog flows and skills, and chunks of instruction files such
|
|
5
|
+
* as `AGENTS.md` are items. {@link judge} asks Jev one question about each:
|
|
6
|
+
* is it unnecessary for the task as stated? An item is withheld only when Jev
|
|
7
|
+
* says so with probability at or above {@link withholdAt}; everything else is
|
|
8
|
+
* kept. An item longer than {@link itemBytes} is sent head-kept and always
|
|
9
|
+
* kept: Jev cannot be confident about text it was not shown. A reading that
|
|
10
|
+
* cannot be judged keeps everything, and the caller
|
|
11
|
+
* journals `decision-unjudged` for it: keeping is the rule, withholding is
|
|
12
|
+
* the exception Jev must be confident of.
|
|
13
|
+
*
|
|
14
|
+
* Nothing here journals or filters a live catalog. {@link settled} is the row
|
|
15
|
+
* a caller writes for a reading, and {@link render} the instruction block a
|
|
16
|
+
* caller builds from what was kept.
|
|
17
|
+
*
|
|
18
|
+
* @since 1.0.0-rc.0
|
|
19
|
+
*/
|
|
20
|
+
import * as Digest from "@smthrs/core/Digest";
|
|
21
|
+
import * as Classifier from "@smthrs/model/Classifier";
|
|
22
|
+
import * as Duration from "effect/Duration";
|
|
23
|
+
import * as Effect from "effect/Effect";
|
|
24
|
+
import * as Option from "effect/Option";
|
|
25
|
+
import * as Schema from "effect/Schema";
|
|
26
|
+
import * as AgentEvent from "./AgentEvent.js";
|
|
27
|
+
import * as bytes from "./internal/bytes.js";
|
|
28
|
+
import * as elide from "./internal/elide.js";
|
|
29
|
+
import { untrustedData } from "./internal/untrustedData.js";
|
|
30
|
+
import * as Judgement from "./Judgement.js";
|
|
31
|
+
/**
|
|
32
|
+
* What an item is.
|
|
33
|
+
*
|
|
34
|
+
* @category models
|
|
35
|
+
* @since 1.0.0-rc.0
|
|
36
|
+
*/
|
|
37
|
+
export const Kind = AgentEvent.RelevanceKind;
|
|
38
|
+
/**
|
|
39
|
+
* One human-provided item a run could be shown.
|
|
40
|
+
*
|
|
41
|
+
* @category schemas
|
|
42
|
+
* @since 1.0.0-rc.0
|
|
43
|
+
*/
|
|
44
|
+
export const Item = Schema.Struct({ kind: Kind, id: Schema.String, text: Schema.String });
|
|
45
|
+
/**
|
|
46
|
+
* What every reading is told beside its items.
|
|
47
|
+
*
|
|
48
|
+
* @category schemas
|
|
49
|
+
* @since 1.0.0-rc.0
|
|
50
|
+
*/
|
|
51
|
+
export const Context = Schema.Struct({
|
|
52
|
+
task: Schema.String,
|
|
53
|
+
query: Schema.optionalKey(Schema.String),
|
|
54
|
+
recent: Schema.optionalKey(Schema.String)
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* The probability of "unnecessary" at or above which an item is withheld.
|
|
58
|
+
*
|
|
59
|
+
* @category constants
|
|
60
|
+
* @since 1.0.0-rc.0
|
|
61
|
+
*/
|
|
62
|
+
export const withholdAt = 0.9;
|
|
63
|
+
/**
|
|
64
|
+
* The `Classifier.confident` floor that is {@link withholdAt} for a boolean:
|
|
65
|
+
* its confidence is its distance from even odds, doubled.
|
|
66
|
+
*/
|
|
67
|
+
const confidentAt = (withholdAt - 0.5) * 2;
|
|
68
|
+
/**
|
|
69
|
+
* The most of one item's text a reading carries, in UTF-8 bytes; the head
|
|
70
|
+
* kept.
|
|
71
|
+
*
|
|
72
|
+
* @category constants
|
|
73
|
+
* @since 1.0.0-rc.0
|
|
74
|
+
*/
|
|
75
|
+
export const itemBytes = 1024;
|
|
76
|
+
/** The most of a flow's description an item carries, in UTF-8 bytes. */
|
|
77
|
+
const descriptionBytes = 512;
|
|
78
|
+
const recall = "the rest is not shown";
|
|
79
|
+
/** `text` within `limit` bytes, its head kept and the cut stated. */
|
|
80
|
+
const headKept = (text, limit) => {
|
|
81
|
+
const whole = bytes.size(text);
|
|
82
|
+
if (whole <= limit)
|
|
83
|
+
return text;
|
|
84
|
+
// The notice names at most `whole` dropped bytes.
|
|
85
|
+
return elide.head(text, limit - bytes.size(`… [+${whole}b, ${recall}]`), recall);
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* The reading: one question per item, `unnecessary_${index}`.
|
|
89
|
+
*
|
|
90
|
+
* @category constructors
|
|
91
|
+
* @since 1.0.0-rc.0
|
|
92
|
+
*/
|
|
93
|
+
export const reader = Judgement.perItem({
|
|
94
|
+
id: "relevance/unnecessary",
|
|
95
|
+
description: "Decide which provided items an agent run does not need",
|
|
96
|
+
context: Context,
|
|
97
|
+
item: Item,
|
|
98
|
+
questions: {
|
|
99
|
+
unnecessary: (i) => Classifier.boolean({
|
|
100
|
+
instructions: `Is items[${i}] unnecessary for the task as stated? Read context.task, and context.query or context.recent when present.`,
|
|
101
|
+
criteria: {
|
|
102
|
+
true: "nothing the task, context.query, or a step they plainly imply uses it, needs it, or must follow it",
|
|
103
|
+
false: "the task, context.query, or a step they plainly imply may use it, need it, or must follow it"
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
/**
|
|
109
|
+
* Asks Jev which of `items` the run does not need. Each item's text is sent
|
|
110
|
+
* head-kept to {@link itemBytes}, and an item that was cut is never withheld.
|
|
111
|
+
* No items ask nothing.
|
|
112
|
+
*
|
|
113
|
+
* @category constructors
|
|
114
|
+
* @since 1.0.0-rc.0
|
|
115
|
+
*/
|
|
116
|
+
export const judge = (context, items) => Effect.gen(function* () {
|
|
117
|
+
const sent = items.map((item) => ({ ...item, text: headKept(item.text, itemBytes) }));
|
|
118
|
+
const [elapsed, read] = yield* reader.read(context, sent).pipe(Effect.timed);
|
|
119
|
+
const verdicts = items.map((item, index) => {
|
|
120
|
+
const answer = read.answers[index].unnecessary;
|
|
121
|
+
return {
|
|
122
|
+
item,
|
|
123
|
+
digest: Digest.digest(item.text),
|
|
124
|
+
p: answer.probability,
|
|
125
|
+
withheld: bytes.size(item.text) <= itemBytes &&
|
|
126
|
+
Option.getOrElse(Classifier.confident(answer, confidentAt), () => false)
|
|
127
|
+
};
|
|
128
|
+
});
|
|
129
|
+
const usages = read.asked.flatMap((asked) => asked.usage === undefined ? [] : [asked.usage]);
|
|
130
|
+
return {
|
|
131
|
+
verdicts,
|
|
132
|
+
asked: read.asked,
|
|
133
|
+
latencyMs: Math.round(Duration.toMillis(elapsed)),
|
|
134
|
+
...(usages.length === 0 ? {} : {
|
|
135
|
+
usage: {
|
|
136
|
+
inputTokens: usages.reduce((sum, usage) => sum + usage.inputTokens, 0),
|
|
137
|
+
outputTokens: usages.reduce((sum, usage) => sum + usage.outputTokens, 0)
|
|
138
|
+
}
|
|
139
|
+
})
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* The `relevance-settled` row for a reading: ids and digests, never text.
|
|
144
|
+
*
|
|
145
|
+
* @category conversions
|
|
146
|
+
* @since 1.0.0-rc.0
|
|
147
|
+
*/
|
|
148
|
+
export const settled = (reading, at) => {
|
|
149
|
+
const row = (verdict) => ({
|
|
150
|
+
kind: verdict.item.kind,
|
|
151
|
+
id: verdict.item.id,
|
|
152
|
+
digest: verdict.digest,
|
|
153
|
+
p: verdict.p
|
|
154
|
+
});
|
|
155
|
+
return new AgentEvent.RelevanceSettled({
|
|
156
|
+
eventType: AgentEvent.eventType.relevanceSettled,
|
|
157
|
+
scope: at.scope,
|
|
158
|
+
frame: at.frame,
|
|
159
|
+
source: at.source,
|
|
160
|
+
withholdAt,
|
|
161
|
+
kept: reading.verdicts.filter((verdict) => !verdict.withheld).map(row),
|
|
162
|
+
withheld: reading.verdicts.filter((verdict) => verdict.withheld).map(row),
|
|
163
|
+
latencyMs: reading.latencyMs,
|
|
164
|
+
...(reading.usage === undefined ? {} : { usage: reading.usage })
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* A catalog entry as an item: a `skill` when its body is markdown, else a
|
|
169
|
+
* `flow`. Its description is untrusted data.
|
|
170
|
+
*
|
|
171
|
+
* @category constructors
|
|
172
|
+
* @since 1.0.0-rc.0
|
|
173
|
+
*/
|
|
174
|
+
export const flowItem = (descriptor) => {
|
|
175
|
+
const description = untrustedData(headKept(descriptor.description, descriptionBytes), `description of ${descriptor.name}`);
|
|
176
|
+
const capabilities = descriptor.capabilities.length === 0
|
|
177
|
+
? ""
|
|
178
|
+
: `\ncapabilities: ${[...descriptor.capabilities].sort().join(",")}`;
|
|
179
|
+
return {
|
|
180
|
+
kind: descriptor.body._tag === "Markdown" ? "skill" : "flow",
|
|
181
|
+
id: descriptor.name,
|
|
182
|
+
text: `${descriptor.name}\n${description}${capabilities}`
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* One human-provided instruction file.
|
|
187
|
+
*
|
|
188
|
+
* @category schemas
|
|
189
|
+
* @since 1.0.0-rc.0
|
|
190
|
+
*/
|
|
191
|
+
export const Document = Schema.Struct({ path: Schema.String, text: Schema.String });
|
|
192
|
+
const heading = /^#{1,6}(?:[ \t]|$)/;
|
|
193
|
+
const listItem = /^(?:[-*+] |\d+\. )/;
|
|
194
|
+
const fence = /^[ \t]*```/;
|
|
195
|
+
const blank = /^[ \t]*\r?$/;
|
|
196
|
+
const indented = /^[ \t]/;
|
|
197
|
+
const split = (document) => {
|
|
198
|
+
const pieces = [];
|
|
199
|
+
let fenced = false;
|
|
200
|
+
// A list item's chunk runs over its indented and wrapped lines, and ends at
|
|
201
|
+
// the first unindented line after a blank one.
|
|
202
|
+
let item = false;
|
|
203
|
+
let afterBlank = false;
|
|
204
|
+
for (const line of document.text.match(/[^\n]*\n|[^\n]+$/g) ?? []) {
|
|
205
|
+
const bare = line.endsWith("\n") ? line.slice(0, -1) : line;
|
|
206
|
+
const starts = !fenced && pieces.length > 0 && (heading.test(bare) || listItem.test(bare) ||
|
|
207
|
+
(item && afterBlank && !blank.test(bare) && !indented.test(bare)));
|
|
208
|
+
if (!fenced && (heading.test(bare) || listItem.test(bare)))
|
|
209
|
+
item = listItem.test(bare);
|
|
210
|
+
else if (starts)
|
|
211
|
+
item = false;
|
|
212
|
+
if (starts || pieces.length === 0)
|
|
213
|
+
pieces.push(line);
|
|
214
|
+
else
|
|
215
|
+
pieces[pieces.length - 1] += line;
|
|
216
|
+
if (fence.test(bare))
|
|
217
|
+
fenced = !fenced;
|
|
218
|
+
afterBlank = !fenced && blank.test(bare);
|
|
219
|
+
}
|
|
220
|
+
return pieces.map((text, n) => ({ id: `${document.path}#${n}`, path: document.path, text }));
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Splits instruction files into the chunks a reading judges, in order.
|
|
224
|
+
*
|
|
225
|
+
* A chunk starts at each markdown heading and at each top-level list item,
|
|
226
|
+
* whose indented and wrapped lines are its own. Every other line, blank lines
|
|
227
|
+
* included, joins the chunk before it, and nothing inside a fence is split.
|
|
228
|
+
* A file's chunks concatenate back to the file.
|
|
229
|
+
*
|
|
230
|
+
* @category constructors
|
|
231
|
+
* @since 1.0.0-rc.0
|
|
232
|
+
*/
|
|
233
|
+
export const chunks = (documents) => documents.flatMap(split);
|
|
234
|
+
/**
|
|
235
|
+
* The project-instructions block of every chunk not in `withheld`, in order.
|
|
236
|
+
* A file whose every chunk is withheld is left out, and `""` is returned when
|
|
237
|
+
* nothing is left.
|
|
238
|
+
*
|
|
239
|
+
* @category conversions
|
|
240
|
+
* @since 1.0.0-rc.0
|
|
241
|
+
*/
|
|
242
|
+
export const render = (documents, withheld) => {
|
|
243
|
+
const blocks = documents.flatMap((document) => {
|
|
244
|
+
const all = split(document);
|
|
245
|
+
const kept = all.filter((chunk) => !withheld.has(chunk.id));
|
|
246
|
+
if (all.length > 0 && kept.length === 0)
|
|
247
|
+
return [];
|
|
248
|
+
return [
|
|
249
|
+
`<project_instructions path="${document.path}">\n${kept.map((chunk) => chunk.text).join("")}\n</project_instructions>`
|
|
250
|
+
];
|
|
251
|
+
});
|
|
252
|
+
return blocks.length === 0 ? "" : "Project-specific instructions and guidelines:\n\n" + blocks.join("\n\n");
|
|
253
|
+
};
|
|
254
|
+
//# sourceMappingURL=Relevance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Relevance.js","sourceRoot":"","sources":["../../src/Relevance.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * What a run is shown of the human-provided items it could be shown.\n *\n * Memory rows, catalog flows and skills, and chunks of instruction files such\n * as `AGENTS.md` are items. {@link judge} asks Jev one question about each:\n * is it unnecessary for the task as stated? An item is withheld only when Jev\n * says so with probability at or above {@link withholdAt}; everything else is\n * kept. An item longer than {@link itemBytes} is sent head-kept and always\n * kept: Jev cannot be confident about text it was not shown. A reading that\n * cannot be judged keeps everything, and the caller\n * journals `decision-unjudged` for it: keeping is the rule, withholding is\n * the exception Jev must be confident of.\n *\n * Nothing here journals or filters a live catalog. {@link settled} is the row\n * a caller writes for a reading, and {@link render} the instruction block a\n * caller builds from what was kept.\n *\n * @since 1.0.0-rc.0\n */\n\nimport * as Digest from \"@smthrs/core/Digest\"\nimport * as Classifier from \"@smthrs/model/Classifier\"\nimport type * as Evaluator from \"@smthrs/model/Evaluator\"\nimport type * as Descriptor from \"@smthrs/registry/Descriptor\"\nimport * as Duration from \"effect/Duration\"\nimport * as Effect from \"effect/Effect\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\nimport * as AgentEvent from \"./AgentEvent.ts\"\nimport * as bytes from \"./internal/bytes.ts\"\nimport * as elide from \"./internal/elide.ts\"\nimport { untrustedData } from \"./internal/untrustedData.ts\"\nimport * as Judgement from \"./Judgement.ts\"\n\n/**\n * What an item is.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport const Kind = AgentEvent.RelevanceKind\n\n/**\n * The decoded form of {@link Kind}.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport type Kind = typeof Kind.Type\n\n/**\n * One human-provided item a run could be shown.\n *\n * @category schemas\n * @since 1.0.0-rc.0\n */\nexport const Item = Schema.Struct({ kind: Kind, id: Schema.String, text: Schema.String })\n\n/**\n * The decoded form of {@link Item}.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport type Item = typeof Item.Type\n\n/**\n * What every reading is told beside its items.\n *\n * @category schemas\n * @since 1.0.0-rc.0\n */\nexport const Context = Schema.Struct({\n task: Schema.String,\n query: Schema.optionalKey(Schema.String),\n recent: Schema.optionalKey(Schema.String)\n})\n\n/**\n * The decoded form of {@link Context}.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport type Context = typeof Context.Type\n\n/**\n * The probability of \"unnecessary\" at or above which an item is withheld.\n *\n * @category constants\n * @since 1.0.0-rc.0\n */\nexport const withholdAt = 0.9\n\n/**\n * The `Classifier.confident` floor that is {@link withholdAt} for a boolean:\n * its confidence is its distance from even odds, doubled.\n */\nconst confidentAt = (withholdAt - 0.5) * 2\n\n/**\n * The most of one item's text a reading carries, in UTF-8 bytes; the head\n * kept.\n *\n * @category constants\n * @since 1.0.0-rc.0\n */\nexport const itemBytes = 1024\n\n/** The most of a flow's description an item carries, in UTF-8 bytes. */\nconst descriptionBytes = 512\n\nconst recall = \"the rest is not shown\"\n\n/** `text` within `limit` bytes, its head kept and the cut stated. */\nconst headKept = (text: string, limit: number): string => {\n const whole = bytes.size(text)\n if (whole <= limit) return text\n // The notice names at most `whole` dropped bytes.\n return elide.head(text, limit - bytes.size(`… [+${whole}b, ${recall}]`), recall)\n}\n\n/**\n * The reading: one question per item, `unnecessary_${index}`.\n *\n * @category constructors\n * @since 1.0.0-rc.0\n */\nexport const reader = Judgement.perItem({\n id: \"relevance/unnecessary\",\n description: \"Decide which provided items an agent run does not need\",\n context: Context,\n item: Item,\n questions: {\n unnecessary: (i) =>\n Classifier.boolean({\n instructions:\n `Is items[${i}] unnecessary for the task as stated? Read context.task, and context.query or context.recent when present.`,\n criteria: {\n true: \"nothing the task, context.query, or a step they plainly imply uses it, needs it, or must follow it\",\n false: \"the task, context.query, or a step they plainly imply may use it, need it, or must follow it\"\n }\n })\n }\n})\n\n/**\n * Jev's verdict on one item. `p` is the probability it is unnecessary.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport interface Verdict {\n readonly item: Item\n /** `Digest.digest` of the item's whole text. */\n readonly digest: string\n readonly p: number\n readonly withheld: boolean\n}\n\n/**\n * One reading: a verdict per item in input order, and the record of asking.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport interface Reading {\n readonly verdicts: ReadonlyArray<Verdict>\n readonly asked: ReadonlyArray<Judgement.Asked>\n /** Wall-clock milliseconds the reading took. */\n readonly latencyMs: number\n /** Token usage summed over every request, absent when none reported any. */\n readonly usage?: Evaluator.Usage | undefined\n}\n\n/**\n * Asks Jev which of `items` the run does not need. Each item's text is sent\n * head-kept to {@link itemBytes}, and an item that was cut is never withheld.\n * No items ask nothing.\n *\n * @category constructors\n * @since 1.0.0-rc.0\n */\nexport const judge = (context: Context, items: ReadonlyArray<Item>): Effect.Effect<Reading, Judgement.Unjudged> =>\n Effect.gen(function*() {\n const sent = items.map((item) => ({ ...item, text: headKept(item.text, itemBytes) }))\n const [elapsed, read] = yield* reader.read(context, sent).pipe(Effect.timed)\n const verdicts = items.map((item, index): Verdict => {\n const answer = read.answers[index]!.unnecessary\n return {\n item,\n digest: Digest.digest(item.text),\n p: answer.probability,\n withheld: bytes.size(item.text) <= itemBytes &&\n Option.getOrElse(Classifier.confident(answer, confidentAt), () => false)\n }\n })\n const usages = read.asked.flatMap((asked) => asked.usage === undefined ? [] : [asked.usage])\n return {\n verdicts,\n asked: read.asked,\n latencyMs: Math.round(Duration.toMillis(elapsed)),\n ...(usages.length === 0 ? {} : {\n usage: {\n inputTokens: usages.reduce((sum, usage) => sum + usage.inputTokens, 0),\n outputTokens: usages.reduce((sum, usage) => sum + usage.outputTokens, 0)\n }\n })\n }\n })\n\n/**\n * The `relevance-settled` row for a reading: ids and digests, never text.\n *\n * @category conversions\n * @since 1.0.0-rc.0\n */\nexport const settled = (\n reading: Reading,\n at: { readonly scope: string; readonly frame: number; readonly source: AgentEvent.RelevanceSettled[\"source\"] }\n): AgentEvent.RelevanceSettled => {\n const row = (verdict: Verdict) => ({\n kind: verdict.item.kind,\n id: verdict.item.id,\n digest: verdict.digest,\n p: verdict.p\n })\n return new AgentEvent.RelevanceSettled({\n eventType: AgentEvent.eventType.relevanceSettled,\n scope: at.scope,\n frame: at.frame,\n source: at.source,\n withholdAt,\n kept: reading.verdicts.filter((verdict) => !verdict.withheld).map(row),\n withheld: reading.verdicts.filter((verdict) => verdict.withheld).map(row),\n latencyMs: reading.latencyMs,\n ...(reading.usage === undefined ? {} : { usage: reading.usage })\n })\n}\n\n/**\n * A catalog entry as an item: a `skill` when its body is markdown, else a\n * `flow`. Its description is untrusted data.\n *\n * @category constructors\n * @since 1.0.0-rc.0\n */\nexport const flowItem = (descriptor: Descriptor.FlowDescriptor): Item => {\n const description = untrustedData(\n headKept(descriptor.description, descriptionBytes),\n `description of ${descriptor.name}`\n )\n const capabilities = descriptor.capabilities.length === 0\n ? \"\"\n : `\\ncapabilities: ${[...descriptor.capabilities].sort().join(\",\")}`\n return {\n kind: descriptor.body._tag === \"Markdown\" ? \"skill\" : \"flow\",\n id: descriptor.name,\n text: `${descriptor.name}\\n${description}${capabilities}`\n }\n}\n\n/**\n * One human-provided instruction file.\n *\n * @category schemas\n * @since 1.0.0-rc.0\n */\nexport const Document = Schema.Struct({ path: Schema.String, text: Schema.String })\n\n/**\n * The decoded form of {@link Document}.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport type Document = typeof Document.Type\n\n/**\n * One piece of an instruction file, as {@link chunks} splits it.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport interface Chunk {\n /** `${path}#${n}`, `n` counting from 0 within the file. */\n readonly id: string\n readonly path: string\n readonly text: string\n}\n\nconst heading = /^#{1,6}(?:[ \\t]|$)/\nconst listItem = /^(?:[-*+] |\\d+\\. )/\nconst fence = /^[ \\t]*```/\nconst blank = /^[ \\t]*\\r?$/\nconst indented = /^[ \\t]/\n\nconst split = (document: Document): ReadonlyArray<Chunk> => {\n const pieces: Array<string> = []\n let fenced = false\n // A list item's chunk runs over its indented and wrapped lines, and ends at\n // the first unindented line after a blank one.\n let item = false\n let afterBlank = false\n for (const line of document.text.match(/[^\\n]*\\n|[^\\n]+$/g) ?? []) {\n const bare = line.endsWith(\"\\n\") ? line.slice(0, -1) : line\n const starts = !fenced && pieces.length > 0 && (heading.test(bare) || listItem.test(bare) ||\n (item && afterBlank && !blank.test(bare) && !indented.test(bare)))\n if (!fenced && (heading.test(bare) || listItem.test(bare))) item = listItem.test(bare)\n else if (starts) item = false\n if (starts || pieces.length === 0) pieces.push(line)\n else pieces[pieces.length - 1] += line\n if (fence.test(bare)) fenced = !fenced\n afterBlank = !fenced && blank.test(bare)\n }\n return pieces.map((text, n) => ({ id: `${document.path}#${n}`, path: document.path, text }))\n}\n\n/**\n * Splits instruction files into the chunks a reading judges, in order.\n *\n * A chunk starts at each markdown heading and at each top-level list item,\n * whose indented and wrapped lines are its own. Every other line, blank lines\n * included, joins the chunk before it, and nothing inside a fence is split.\n * A file's chunks concatenate back to the file.\n *\n * @category constructors\n * @since 1.0.0-rc.0\n */\nexport const chunks = (documents: ReadonlyArray<Document>): ReadonlyArray<Chunk> => documents.flatMap(split)\n\n/**\n * The project-instructions block of every chunk not in `withheld`, in order.\n * A file whose every chunk is withheld is left out, and `\"\"` is returned when\n * nothing is left.\n *\n * @category conversions\n * @since 1.0.0-rc.0\n */\nexport const render = (documents: ReadonlyArray<Document>, withheld: ReadonlySet<string>): string => {\n const blocks = documents.flatMap((document) => {\n const all = split(document)\n const kept = all.filter((chunk) => !withheld.has(chunk.id))\n if (all.length > 0 && kept.length === 0) return []\n return [\n `<project_instructions path=\"${document.path}\">\\n${\n kept.map((chunk) => chunk.text).join(\"\")\n }\\n</project_instructions>`\n ]\n })\n return blocks.length === 0 ? \"\" : \"Project-specific instructions and guidelines:\\n\\n\" + blocks.join(\"\\n\\n\")\n}\n"]}
|