@smthrs/harness 0.0.0-stage → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +985 -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 +1142 -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,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a compaction does with each old frame: keep it, squash it into the
|
|
3
|
+
* summary, or remove it.
|
|
4
|
+
*
|
|
5
|
+
* {@link pins} fixes what must survive whatever Jev says: a summary is always
|
|
6
|
+
* squashed, so a later summary extends it; steering and the person's messages
|
|
7
|
+
* are kept, and so is the newest frame that ran each check still failing; a
|
|
8
|
+
* frame that changed files is never removed; and the two halves of a tool
|
|
9
|
+
* call and its result share one mark. {@link read} asks Jev two questions
|
|
10
|
+
* about each segment, and {@link resolve} turns the answers into marks,
|
|
11
|
+
* demoting the least-needed keeps until the kept frames fit the window.
|
|
12
|
+
*
|
|
13
|
+
* Marking is not compacting. The supervisor asks about each settled segment
|
|
14
|
+
* off the loop's hot path, and the run stores each {@link Answer} in the
|
|
15
|
+
* segment's {@link Facts}; nothing the model is sent changes. Only when the
|
|
16
|
+
* budget forces a compaction are the pins taken and the stored answers
|
|
17
|
+
* resolved, and a segment still unmarked then is asked about in that one
|
|
18
|
+
* reading.
|
|
19
|
+
*
|
|
20
|
+
* Nothing here journals or compacts; the caller records the reading, and
|
|
21
|
+
* journals `decision-unjudged` and squashes every frame when it fails.
|
|
22
|
+
*
|
|
23
|
+
* @since 1.0.0-rc.0
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
import * as Effect from "effect/Effect";
|
|
27
|
+
import * as Result from "effect/Result";
|
|
28
|
+
import * as Schema from "effect/Schema";
|
|
29
|
+
import { InvalidStep } from "../Compaction.ts";
|
|
30
|
+
import * as ContextWindow from "../ContextWindow.ts";
|
|
31
|
+
import * as Judgement from "../Judgement.ts";
|
|
32
|
+
/**
|
|
33
|
+
* One frame as Jev reads it: its size, the cell it ran, what the model said
|
|
34
|
+
* beside it, and what it observed.
|
|
35
|
+
*
|
|
36
|
+
* @since 1.0.0-rc.0
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
export declare const Item: Schema.Struct<{
|
|
40
|
+
readonly tokens: Schema.Int;
|
|
41
|
+
readonly cell: Schema.String;
|
|
42
|
+
readonly prose: Schema.String;
|
|
43
|
+
readonly observed: Schema.String;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* The decoded form of {@link Item}.
|
|
47
|
+
*
|
|
48
|
+
* @since 1.0.0-rc.0
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
export type Item = typeof Item.Type;
|
|
52
|
+
/**
|
|
53
|
+
* What every reading is told beside its items: the task and the labels of
|
|
54
|
+
* the checks still failing.
|
|
55
|
+
*
|
|
56
|
+
* @since 1.0.0-rc.0
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
export declare const Context: Schema.Struct<{
|
|
60
|
+
readonly task: Schema.String;
|
|
61
|
+
readonly failing: Schema.$Array<Schema.String>;
|
|
62
|
+
}>;
|
|
63
|
+
/**
|
|
64
|
+
* The decoded form of {@link Context}.
|
|
65
|
+
*
|
|
66
|
+
* @since 1.0.0-rc.0
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
export type Context = typeof Context.Type;
|
|
70
|
+
/**
|
|
71
|
+
* Jev's answer about one item: the probabilities that it can be removed and
|
|
72
|
+
* that its exact text must be kept.
|
|
73
|
+
*
|
|
74
|
+
* @since 1.0.0-rc.0
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
export declare const Answer: Schema.Struct<{
|
|
78
|
+
readonly remove: Schema.Number;
|
|
79
|
+
readonly keep: Schema.Number;
|
|
80
|
+
}>;
|
|
81
|
+
/**
|
|
82
|
+
* The decoded form of {@link Answer}.
|
|
83
|
+
*
|
|
84
|
+
* @since 1.0.0-rc.0
|
|
85
|
+
* @private
|
|
86
|
+
*/
|
|
87
|
+
export type Answer = typeof Answer.Type;
|
|
88
|
+
/**
|
|
89
|
+
* Jev's {@link Answer} about one transcript segment, named by the segment's
|
|
90
|
+
* digest: what a supervisor reading marks and the next boundary stores.
|
|
91
|
+
*
|
|
92
|
+
* @since 1.0.0-rc.0
|
|
93
|
+
* @private
|
|
94
|
+
*/
|
|
95
|
+
export declare const Marking: Schema.Struct<{
|
|
96
|
+
readonly remove: Schema.Number;
|
|
97
|
+
readonly keep: Schema.Number;
|
|
98
|
+
readonly digest: Schema.String;
|
|
99
|
+
}>;
|
|
100
|
+
/**
|
|
101
|
+
* The decoded form of {@link Marking}.
|
|
102
|
+
*
|
|
103
|
+
* @since 1.0.0-rc.0
|
|
104
|
+
* @private
|
|
105
|
+
*/
|
|
106
|
+
export type Marking = typeof Marking.Type;
|
|
107
|
+
/**
|
|
108
|
+
* What the run knows of one transcript segment: the frame that wrote it,
|
|
109
|
+
* whether it carries the person's messages, whether it changed files, the
|
|
110
|
+
* labels of the checks it ran, and Jev's answer about it once a reading has
|
|
111
|
+
* marked it.
|
|
112
|
+
*
|
|
113
|
+
* @since 1.0.0-rc.0
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
116
|
+
export declare const Facts: Schema.Struct<{
|
|
117
|
+
readonly frame: Schema.Int;
|
|
118
|
+
readonly person: Schema.Boolean;
|
|
119
|
+
readonly mutated: Schema.Boolean;
|
|
120
|
+
readonly checks: Schema.$Array<Schema.String>;
|
|
121
|
+
readonly answer: Schema.optionalKey<Schema.Struct<{
|
|
122
|
+
readonly remove: Schema.Number;
|
|
123
|
+
readonly keep: Schema.Number;
|
|
124
|
+
}>>;
|
|
125
|
+
}>;
|
|
126
|
+
/**
|
|
127
|
+
* The decoded form of {@link Facts}.
|
|
128
|
+
*
|
|
129
|
+
* @since 1.0.0-rc.0
|
|
130
|
+
* @private
|
|
131
|
+
*/
|
|
132
|
+
export type Facts = typeof Facts.Type;
|
|
133
|
+
/**
|
|
134
|
+
* Why a mark was not Jev's own.
|
|
135
|
+
*
|
|
136
|
+
* @since 1.0.0-rc.0
|
|
137
|
+
* @private
|
|
138
|
+
*/
|
|
139
|
+
export declare const Pinned: Schema.Literals<readonly ["summary", "steering", "person", "failing", "mutated", "pair", "budget"]>;
|
|
140
|
+
/**
|
|
141
|
+
* The decoded form of {@link Pinned}.
|
|
142
|
+
*
|
|
143
|
+
* @since 1.0.0-rc.0
|
|
144
|
+
* @private
|
|
145
|
+
*/
|
|
146
|
+
export type Pinned = typeof Pinned.Type;
|
|
147
|
+
/**
|
|
148
|
+
* One segment's resolved mark, and why it was fixed when Jev did not choose
|
|
149
|
+
* it.
|
|
150
|
+
*
|
|
151
|
+
* @since 1.0.0-rc.0
|
|
152
|
+
* @private
|
|
153
|
+
*/
|
|
154
|
+
export declare const Marked: Schema.Struct<{
|
|
155
|
+
readonly mark: Schema.Literals<readonly ["keep", "squash", "remove"]>;
|
|
156
|
+
readonly pinned: Schema.optionalKey<Schema.Literals<readonly ["summary", "steering", "person", "failing", "mutated", "pair", "budget"]>>;
|
|
157
|
+
}>;
|
|
158
|
+
/**
|
|
159
|
+
* The decoded form of {@link Marked}.
|
|
160
|
+
*
|
|
161
|
+
* @since 1.0.0-rc.0
|
|
162
|
+
* @private
|
|
163
|
+
*/
|
|
164
|
+
export type Marked = typeof Marked.Type;
|
|
165
|
+
/**
|
|
166
|
+
* What {@link pins} fixes for one segment. `mark` is fixed and not asked;
|
|
167
|
+
* `floor` is the weakest mark allowed; `pair` is the index of the first
|
|
168
|
+
* segment of the tool-call span the segment shares a mark with.
|
|
169
|
+
*
|
|
170
|
+
* @since 1.0.0-rc.0
|
|
171
|
+
* @private
|
|
172
|
+
*/
|
|
173
|
+
export interface Pin {
|
|
174
|
+
readonly pin: Exclude<Pinned, "budget">;
|
|
175
|
+
readonly mark?: ContextWindow.Mark | undefined;
|
|
176
|
+
readonly floor?: ContextWindow.Mark | undefined;
|
|
177
|
+
readonly pair?: number | undefined;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* What must survive of the first `prefixLength` of `segments`, the window's
|
|
181
|
+
* compactable segments in order. `facts[i]` describes `segments[i]`, and is
|
|
182
|
+
* absent for a segment no frame recorded; it is aligned by position, not by
|
|
183
|
+
* digest, because two frames can be byte-identical.
|
|
184
|
+
*
|
|
185
|
+
* Of the segments that ran a check still failing, only the newest is kept: a
|
|
186
|
+
* check that fails frame after frame would otherwise pin every run of it, and
|
|
187
|
+
* no compaction could shrink the window. When that newest run is past the
|
|
188
|
+
* prefix, no prefix segment is kept for it.
|
|
189
|
+
*
|
|
190
|
+
* A tool call and its result in different segments share the strongest
|
|
191
|
+
* retention either holds: kept together when one is pinned keep, and never
|
|
192
|
+
* below the other's floor.
|
|
193
|
+
*
|
|
194
|
+
* @since 1.0.0-rc.0
|
|
195
|
+
* @private
|
|
196
|
+
*/
|
|
197
|
+
export declare const pins: (segments: ReadonlyArray<ContextWindow.Segment>, prefixLength: number, facts: ReadonlyArray<Facts | undefined>, failing: ReadonlyArray<string>) => ReadonlyArray<Pin | undefined>;
|
|
198
|
+
/**
|
|
199
|
+
* The prefix indexes whose mark Jev is asked: those no pin fixes, in order.
|
|
200
|
+
*
|
|
201
|
+
* @since 1.0.0-rc.0
|
|
202
|
+
* @private
|
|
203
|
+
*/
|
|
204
|
+
export declare const unpinned: (pinned: ReadonlyArray<Pin | undefined>) => ReadonlyArray<number>;
|
|
205
|
+
/**
|
|
206
|
+
* The most of an item's cell and prose a reading carries, head kept, and of
|
|
207
|
+
* what it observed, tail kept; in UTF-8 bytes.
|
|
208
|
+
*
|
|
209
|
+
* @since 1.0.0-rc.0
|
|
210
|
+
* @private
|
|
211
|
+
*/
|
|
212
|
+
export declare const fieldBytes = 1024;
|
|
213
|
+
/**
|
|
214
|
+
* The reading: `remove_${i}` and `keep_${i}` per item, in as many requests as
|
|
215
|
+
* the items need, asked together.
|
|
216
|
+
*
|
|
217
|
+
* Two booleans rather than one choice: a boolean always carries its
|
|
218
|
+
* probability, and a choice without a distribution reads one-hot, so a floor
|
|
219
|
+
* on it would guard nothing.
|
|
220
|
+
*
|
|
221
|
+
* @since 1.0.0-rc.0
|
|
222
|
+
* @private
|
|
223
|
+
*/
|
|
224
|
+
export declare const reader: Judgement.PerItem<{
|
|
225
|
+
readonly task: string;
|
|
226
|
+
readonly failing: readonly string[];
|
|
227
|
+
}, {
|
|
228
|
+
readonly tokens: number;
|
|
229
|
+
readonly cell: string;
|
|
230
|
+
readonly prose: string;
|
|
231
|
+
readonly observed: string;
|
|
232
|
+
}, {
|
|
233
|
+
readonly remove: (i: number) => import("@smthrs/model/Evaluator").BooleanQuestion;
|
|
234
|
+
readonly keep: (i: number) => import("@smthrs/model/Evaluator").BooleanQuestion;
|
|
235
|
+
}>;
|
|
236
|
+
/**
|
|
237
|
+
* Asks Jev about `items`, in order. Cell and prose are sent head-kept and what was observed tail-kept,
|
|
238
|
+
* each to {@link fieldBytes}. A reading is whole or it fails.
|
|
239
|
+
*
|
|
240
|
+
* @since 1.0.0-rc.0
|
|
241
|
+
* @private
|
|
242
|
+
*/
|
|
243
|
+
export declare const read: (context: Context, items: ReadonlyArray<Item>) => Effect.Effect<{
|
|
244
|
+
readonly answers: ReadonlyArray<Answer>;
|
|
245
|
+
readonly asked: ReadonlyArray<Judgement.Asked>;
|
|
246
|
+
}, Judgement.Unjudged>;
|
|
247
|
+
/**
|
|
248
|
+
* The window a compaction must leave room in. Kept prefix tokens, `suffix`
|
|
249
|
+
* and a summary allowance must fit under
|
|
250
|
+
* `contextWindow - reserve - keepRecent / 2`. `tokens[i]` is prefix segment
|
|
251
|
+
* `i`'s size.
|
|
252
|
+
*
|
|
253
|
+
* @since 1.0.0-rc.0
|
|
254
|
+
* @private
|
|
255
|
+
*/
|
|
256
|
+
export interface Budget {
|
|
257
|
+
readonly contextWindow: number;
|
|
258
|
+
readonly reserve: number;
|
|
259
|
+
readonly keepRecent: number;
|
|
260
|
+
readonly suffix: number;
|
|
261
|
+
readonly tokens: ReadonlyArray<number>;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* The mark of every prefix segment. `answers` are {@link read}'s, for the
|
|
265
|
+
* indexes {@link unpinned} names.
|
|
266
|
+
*
|
|
267
|
+
* A segment is removed only when Jev is sure it is not needed and would not
|
|
268
|
+
* keep it, kept when Jev would keep it, and squashed otherwise; pins and
|
|
269
|
+
* floors override Jev, and a tool-call span takes its strongest mark. Then,
|
|
270
|
+
* while the kept segments do not fit the {@link Budget}, the unpinned keep
|
|
271
|
+
* Jev was least sure of, the older on a tie, is squashed. Pins alone may
|
|
272
|
+
* exceed the budget; the next frame's trigger compacts again.
|
|
273
|
+
*
|
|
274
|
+
* @since 1.0.0-rc.0
|
|
275
|
+
* @private
|
|
276
|
+
*/
|
|
277
|
+
export declare const resolve: (answers: ReadonlyArray<Answer>, pinned: ReadonlyArray<Pin | undefined>, budget: Budget) => Result.Result<ReadonlyArray<Marked>, InvalidStep>;
|
|
278
|
+
//# sourceMappingURL=compactionMarks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compactionMarks.d.ts","sourceRoot":"","sources":["../../../src/internal/compactionMarks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var compactionMarks_exports = {};
|
|
30
|
+
__export(compactionMarks_exports, {
|
|
31
|
+
Answer: () => Answer,
|
|
32
|
+
Context: () => Context,
|
|
33
|
+
Facts: () => Facts,
|
|
34
|
+
Item: () => Item,
|
|
35
|
+
Marked: () => Marked,
|
|
36
|
+
Marking: () => Marking,
|
|
37
|
+
Pinned: () => Pinned,
|
|
38
|
+
fieldBytes: () => fieldBytes,
|
|
39
|
+
pins: () => pins,
|
|
40
|
+
read: () => read,
|
|
41
|
+
reader: () => reader,
|
|
42
|
+
resolve: () => resolve,
|
|
43
|
+
unpinned: () => unpinned
|
|
44
|
+
});
|
|
45
|
+
module.exports = __toCommonJS(compactionMarks_exports);
|
|
46
|
+
var Classifier = __toESM(require("@smthrs/model/Classifier"), 1);
|
|
47
|
+
var Effect = __toESM(require("effect/Effect"), 1);
|
|
48
|
+
var Result = __toESM(require("effect/Result"), 1);
|
|
49
|
+
var Schema = __toESM(require("effect/Schema"), 1);
|
|
50
|
+
var import_Compaction = require("../Compaction.js");
|
|
51
|
+
var ContextWindow = __toESM(require("../ContextWindow.js"), 1);
|
|
52
|
+
var Judgement = __toESM(require("../Judgement.js"), 1);
|
|
53
|
+
var bytes = __toESM(require("./bytes.js"), 1);
|
|
54
|
+
var import_compactable = require("./compactable.js");
|
|
55
|
+
var elide = __toESM(require("./elide.js"), 1);
|
|
56
|
+
var import_nonNegativeSafeInt = require("./nonNegativeSafeInt.js");
|
|
57
|
+
const Item = Schema.Struct({
|
|
58
|
+
tokens: import_nonNegativeSafeInt.NonNegativeSafeInt,
|
|
59
|
+
cell: Schema.String,
|
|
60
|
+
prose: Schema.String,
|
|
61
|
+
observed: Schema.String
|
|
62
|
+
});
|
|
63
|
+
const Context = Schema.Struct({ task: Schema.String, failing: Schema.Array(Schema.String) });
|
|
64
|
+
const Answer = Schema.Struct({ remove: Schema.Number, keep: Schema.Number });
|
|
65
|
+
const Marking = Schema.Struct({ digest: Schema.String, ...Answer.fields });
|
|
66
|
+
const Facts = Schema.Struct({
|
|
67
|
+
frame: import_nonNegativeSafeInt.NonNegativeSafeInt,
|
|
68
|
+
person: Schema.Boolean,
|
|
69
|
+
mutated: Schema.Boolean,
|
|
70
|
+
checks: Schema.Array(Schema.String),
|
|
71
|
+
answer: Schema.optionalKey(Answer)
|
|
72
|
+
});
|
|
73
|
+
const Pinned = Schema.Literals(["summary", "steering", "person", "failing", "mutated", "pair", "budget"]);
|
|
74
|
+
const Marked = Schema.Struct({ mark: ContextWindow.Mark, pinned: Schema.optionalKey(Pinned) });
|
|
75
|
+
const rank = { remove: 0, squash: 1, keep: 2 };
|
|
76
|
+
const stronger = (a, b) => rank[a] >= rank[b] ? a : b;
|
|
77
|
+
const spans = (prefix) => {
|
|
78
|
+
const unsafe = (0, import_compactable.pairBoundaries)(prefix);
|
|
79
|
+
const starts = [];
|
|
80
|
+
for (let index = 0; index < prefix.length; index++) {
|
|
81
|
+
starts.push(unsafe.has(index) ? starts[index - 1] : index);
|
|
82
|
+
}
|
|
83
|
+
return starts;
|
|
84
|
+
};
|
|
85
|
+
const own = (segment, facts, newest) => {
|
|
86
|
+
if (segment.kind === "summary") return { mark: "squash", pin: "summary" };
|
|
87
|
+
if (segment.kind === "steering") return { mark: "keep", pin: "steering" };
|
|
88
|
+
if (facts === void 0) return void 0;
|
|
89
|
+
if (facts.person) return { mark: "keep", pin: "person" };
|
|
90
|
+
if (newest) return { mark: "keep", pin: "failing" };
|
|
91
|
+
if (facts.mutated) return { floor: "squash", pin: "mutated" };
|
|
92
|
+
return void 0;
|
|
93
|
+
};
|
|
94
|
+
const pins = (segments, prefixLength, facts, failing) => {
|
|
95
|
+
const prefix = segments.slice(0, prefixLength);
|
|
96
|
+
const newest = new Set(
|
|
97
|
+
failing.map(
|
|
98
|
+
(label) => facts.reduce((last, entry, index) => entry?.checks.includes(label) === true ? index : last, -1)
|
|
99
|
+
)
|
|
100
|
+
);
|
|
101
|
+
const owned = prefix.map((segment, index) => own(segment, facts[index], newest.has(index)));
|
|
102
|
+
const starts = spans(prefix);
|
|
103
|
+
return owned.map((pin, index) => {
|
|
104
|
+
const start = starts[index];
|
|
105
|
+
const members = owned.filter((_, other) => starts[other] === start);
|
|
106
|
+
if (members.length === 1) return pin;
|
|
107
|
+
if (members.some((member) => member?.mark === "keep")) {
|
|
108
|
+
return { mark: "keep", pin: pin?.mark === "keep" ? pin.pin : "pair", pair: start };
|
|
109
|
+
}
|
|
110
|
+
if (pin?.mark !== void 0) return { ...pin, pair: start };
|
|
111
|
+
const floors = members.flatMap((member) => member?.floor ?? member?.mark ?? []);
|
|
112
|
+
if (floors.length === 0) return { pin: "pair", pair: start };
|
|
113
|
+
const floor = floors.reduce(stronger);
|
|
114
|
+
return { floor, pin: pin?.floor === floor ? pin.pin : "pair", pair: start };
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
const unpinned = (pinned) => pinned.flatMap((pin, index) => pin?.mark === void 0 ? [index] : []);
|
|
118
|
+
const fieldBytes = 1024;
|
|
119
|
+
const recall = "the run record has the whole frame";
|
|
120
|
+
const headKept = (text) => {
|
|
121
|
+
const whole = bytes.size(text);
|
|
122
|
+
if (whole <= fieldBytes) return text;
|
|
123
|
+
return elide.head(text, fieldBytes - bytes.size(`\u2026 [+${whole}b, ${recall}]`), recall);
|
|
124
|
+
};
|
|
125
|
+
const tailKept = (text) => {
|
|
126
|
+
const whole = bytes.size(text);
|
|
127
|
+
if (whole <= fieldBytes) return text;
|
|
128
|
+
const kept = elide.tailSlice(text, fieldBytes - bytes.size(`[+${whole}b, ${recall}] \u2026`));
|
|
129
|
+
return `[+${whole - bytes.size(kept)}b, ${recall}] \u2026${kept}`;
|
|
130
|
+
};
|
|
131
|
+
const reader = Judgement.perItem({
|
|
132
|
+
id: "compaction/marks",
|
|
133
|
+
description: "Decide which old frames of an agent run to keep, squash into a summary, or remove",
|
|
134
|
+
context: Context,
|
|
135
|
+
item: Item,
|
|
136
|
+
questions: {
|
|
137
|
+
remove: (i) => Classifier.boolean({
|
|
138
|
+
instructions: `Is items[${i}], an old frame of this run, no longer needed at all now that the context must shrink? The task, the person's messages and the latest frames stay regardless.`,
|
|
139
|
+
criteria: {
|
|
140
|
+
true: "it contributed nothing still needed: a superseded read, a repeated command, a dead end later frames abandoned",
|
|
141
|
+
false: "something it established may still matter"
|
|
142
|
+
}
|
|
143
|
+
}),
|
|
144
|
+
keep: (i) => Classifier.boolean({
|
|
145
|
+
instructions: `Will the exact text of items[${i}] be needed again?`,
|
|
146
|
+
criteria: {
|
|
147
|
+
true: "a file's current content, an exact error still unresolved, a decision or constraint the run still acts on",
|
|
148
|
+
false: "a summary sentence is enough"
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
const read = (context, items) => reader.read(
|
|
154
|
+
context,
|
|
155
|
+
items.map((item) => ({
|
|
156
|
+
tokens: item.tokens,
|
|
157
|
+
cell: headKept(item.cell),
|
|
158
|
+
prose: headKept(item.prose),
|
|
159
|
+
observed: tailKept(item.observed)
|
|
160
|
+
}))
|
|
161
|
+
).pipe(Effect.map((reading) => ({
|
|
162
|
+
answers: reading.answers.map((answer) => ({
|
|
163
|
+
remove: answer.remove.probability,
|
|
164
|
+
keep: answer.keep.probability
|
|
165
|
+
})),
|
|
166
|
+
asked: reading.asked
|
|
167
|
+
})));
|
|
168
|
+
const summaryAllowance = 4e3;
|
|
169
|
+
const removeAt = 0.8;
|
|
170
|
+
const keepAt = 0.5;
|
|
171
|
+
const resolve = (answers, pinned, budget) => {
|
|
172
|
+
const asked = unpinned(pinned);
|
|
173
|
+
if (answers.length !== asked.length || budget.tokens.length !== pinned.length) {
|
|
174
|
+
return Result.fail(
|
|
175
|
+
new import_Compaction.InvalidStep({ message: "The compaction answers and budget must describe every unpinned prefix segment" })
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
const answered = new Map(asked.map((index, at) => [index, answers[at]]));
|
|
179
|
+
const marks = pinned.map((pin, index) => {
|
|
180
|
+
if (pin?.mark !== void 0) return { mark: pin.mark, pinned: pin.pin };
|
|
181
|
+
const { keep, remove } = answered.get(index);
|
|
182
|
+
const mark = keep >= keepAt ? "keep" : remove >= removeAt ? "remove" : "squash";
|
|
183
|
+
return pin?.floor !== void 0 && rank[pin.floor] > rank[mark] ? { mark: pin.floor, pinned: pin.pin } : { mark };
|
|
184
|
+
});
|
|
185
|
+
const unit = (index) => pinned[index]?.pair ?? index;
|
|
186
|
+
for (const [index, marked] of marks.entries()) {
|
|
187
|
+
const strongest = marks.filter((_, other) => unit(other) === unit(index)).map((other) => other.mark).reduce(
|
|
188
|
+
stronger
|
|
189
|
+
);
|
|
190
|
+
if (pinned[index]?.mark === void 0 && rank[strongest] > rank[marked.mark]) {
|
|
191
|
+
marks[index] = { mark: strongest, pinned: "pair" };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const limit = budget.contextWindow - budget.reserve - budget.keepRecent / 2;
|
|
195
|
+
let kept = marks.reduce((sum, marked, index) => marked.mark === "keep" ? sum + budget.tokens[index] : sum, 0);
|
|
196
|
+
const units = [...new Set(marks.map((_, index) => unit(index)))].map((start) => ({ start, members: marks.flatMap((_, index) => unit(index) === start ? [index] : []) })).filter(
|
|
197
|
+
({ members }) => members.some((index) => marks[index].mark === "keep") && members.every((index) => pinned[index]?.mark === void 0)
|
|
198
|
+
).map(({ members, start }) => ({
|
|
199
|
+
start,
|
|
200
|
+
members,
|
|
201
|
+
p: Math.max(...members.map((index) => answered.get(index).keep))
|
|
202
|
+
})).sort((a, b) => a.p - b.p || a.start - b.start);
|
|
203
|
+
for (const { members } of units) {
|
|
204
|
+
if (kept + budget.suffix + summaryAllowance <= limit) break;
|
|
205
|
+
for (const index of members) {
|
|
206
|
+
marks[index] = { mark: "squash", pinned: "budget" };
|
|
207
|
+
kept -= budget.tokens[index];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return Result.succeed(marks);
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=compactionMarks.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/compactionMarks.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * What a compaction does with each old frame: keep it, squash it into the\n * summary, or remove it.\n *\n * {@link pins} fixes what must survive whatever Jev says: a summary is always\n * squashed, so a later summary extends it; steering and the person's messages\n * are kept, and so is the newest frame that ran each check still failing; a\n * frame that changed files is never removed; and the two halves of a tool\n * call and its result share one mark. {@link read} asks Jev two questions\n * about each segment, and {@link resolve} turns the answers into marks,\n * demoting the least-needed keeps until the kept frames fit the window.\n *\n * Marking is not compacting. The supervisor asks about each settled segment\n * off the loop's hot path, and the run stores each {@link Answer} in the\n * segment's {@link Facts}; nothing the model is sent changes. Only when the\n * budget forces a compaction are the pins taken and the stored answers\n * resolved, and a segment still unmarked then is asked about in that one\n * reading.\n *\n * Nothing here journals or compacts; the caller records the reading, and\n * journals `decision-unjudged` and squashes every frame when it fails.\n *\n * @since 1.0.0-rc.0\n * @private\n */\n\nimport * as Classifier from \"@smthrs/model/Classifier\"\nimport * as Effect from \"effect/Effect\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\nimport { InvalidStep } from \"../Compaction.ts\"\nimport * as ContextWindow from \"../ContextWindow.ts\"\nimport * as Judgement from \"../Judgement.ts\"\nimport * as bytes from \"./bytes.ts\"\nimport { pairBoundaries } from \"./compactable.ts\"\nimport * as elide from \"./elide.ts\"\nimport { NonNegativeSafeInt } from \"./nonNegativeSafeInt.ts\"\n\n/**\n * One frame as Jev reads it: its size, the cell it ran, what the model said\n * beside it, and what it observed.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Item = Schema.Struct({\n tokens: NonNegativeSafeInt,\n cell: Schema.String,\n prose: Schema.String,\n observed: Schema.String\n})\n\n/**\n * The decoded form of {@link Item}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Item = typeof Item.Type\n\n/**\n * What every reading is told beside its items: the task and the labels of\n * the checks still failing.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Context = Schema.Struct({ task: Schema.String, failing: Schema.Array(Schema.String) })\n\n/**\n * The decoded form of {@link Context}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Context = typeof Context.Type\n\n/**\n * Jev's answer about one item: the probabilities that it can be removed and\n * that its exact text must be kept.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Answer = Schema.Struct({ remove: Schema.Number, keep: Schema.Number })\n\n/**\n * The decoded form of {@link Answer}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Answer = typeof Answer.Type\n\n/**\n * Jev's {@link Answer} about one transcript segment, named by the segment's\n * digest: what a supervisor reading marks and the next boundary stores.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Marking = Schema.Struct({ digest: Schema.String, ...Answer.fields })\n\n/**\n * The decoded form of {@link Marking}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Marking = typeof Marking.Type\n\n/**\n * What the run knows of one transcript segment: the frame that wrote it,\n * whether it carries the person's messages, whether it changed files, the\n * labels of the checks it ran, and Jev's answer about it once a reading has\n * marked it.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Facts = Schema.Struct({\n frame: NonNegativeSafeInt,\n person: Schema.Boolean,\n mutated: Schema.Boolean,\n checks: Schema.Array(Schema.String),\n answer: Schema.optionalKey(Answer)\n})\n\n/**\n * The decoded form of {@link Facts}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Facts = typeof Facts.Type\n\n/**\n * Why a mark was not Jev's own.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Pinned = Schema.Literals([\"summary\", \"steering\", \"person\", \"failing\", \"mutated\", \"pair\", \"budget\"])\n\n/**\n * The decoded form of {@link Pinned}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Pinned = typeof Pinned.Type\n\n/**\n * One segment's resolved mark, and why it was fixed when Jev did not choose\n * it.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Marked = Schema.Struct({ mark: ContextWindow.Mark, pinned: Schema.optionalKey(Pinned) })\n\n/**\n * The decoded form of {@link Marked}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Marked = typeof Marked.Type\n\n/**\n * What {@link pins} fixes for one segment. `mark` is fixed and not asked;\n * `floor` is the weakest mark allowed; `pair` is the index of the first\n * segment of the tool-call span the segment shares a mark with.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport interface Pin {\n readonly pin: Exclude<Pinned, \"budget\">\n readonly mark?: ContextWindow.Mark | undefined\n readonly floor?: ContextWindow.Mark | undefined\n readonly pair?: number | undefined\n}\n\nconst rank: Readonly<Record<ContextWindow.Mark, number>> = { remove: 0, squash: 1, keep: 2 }\n\nconst stronger = (a: ContextWindow.Mark, b: ContextWindow.Mark): ContextWindow.Mark => rank[a] >= rank[b] ? a : b\n\n/** Each prefix index's span: the index of the first segment of its tool-call span. */\nconst spans = (prefix: ReadonlyArray<ContextWindow.Segment>): ReadonlyArray<number> => {\n const unsafe = pairBoundaries(prefix)\n const starts: Array<number> = []\n for (let index = 0; index < prefix.length; index++) {\n starts.push(unsafe.has(index) ? starts[index - 1]! : index)\n }\n return starts\n}\n\nconst own = (\n segment: ContextWindow.Segment,\n facts: Facts | undefined,\n newest: boolean\n): Pin | undefined => {\n if (segment.kind === \"summary\") return { mark: \"squash\", pin: \"summary\" }\n if (segment.kind === \"steering\") return { mark: \"keep\", pin: \"steering\" }\n if (facts === undefined) return undefined\n if (facts.person) return { mark: \"keep\", pin: \"person\" }\n if (newest) return { mark: \"keep\", pin: \"failing\" }\n if (facts.mutated) return { floor: \"squash\", pin: \"mutated\" }\n return undefined\n}\n\n/**\n * What must survive of the first `prefixLength` of `segments`, the window's\n * compactable segments in order. `facts[i]` describes `segments[i]`, and is\n * absent for a segment no frame recorded; it is aligned by position, not by\n * digest, because two frames can be byte-identical.\n *\n * Of the segments that ran a check still failing, only the newest is kept: a\n * check that fails frame after frame would otherwise pin every run of it, and\n * no compaction could shrink the window. When that newest run is past the\n * prefix, no prefix segment is kept for it.\n *\n * A tool call and its result in different segments share the strongest\n * retention either holds: kept together when one is pinned keep, and never\n * below the other's floor.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const pins = (\n segments: ReadonlyArray<ContextWindow.Segment>,\n prefixLength: number,\n facts: ReadonlyArray<Facts | undefined>,\n failing: ReadonlyArray<string>\n): ReadonlyArray<Pin | undefined> => {\n const prefix = segments.slice(0, prefixLength)\n const newest = new Set(\n failing.map((label) =>\n facts.reduce((last, entry, index) => entry?.checks.includes(label) === true ? index : last, -1)\n )\n )\n const owned = prefix.map((segment, index) => own(segment, facts[index], newest.has(index)))\n const starts = spans(prefix)\n return owned.map((pin, index) => {\n const start = starts[index]!\n const members = owned.filter((_, other) => starts[other] === start)\n if (members.length === 1) return pin\n if (members.some((member) => member?.mark === \"keep\")) {\n return { mark: \"keep\", pin: pin?.mark === \"keep\" ? pin.pin : \"pair\", pair: start }\n }\n if (pin?.mark !== undefined) return { ...pin, pair: start }\n const floors = members.flatMap((member) => member?.floor ?? member?.mark ?? [])\n if (floors.length === 0) return { pin: \"pair\", pair: start }\n const floor = floors.reduce(stronger)\n return { floor, pin: pin?.floor === floor ? pin.pin : \"pair\", pair: start }\n })\n}\n\n/**\n * The prefix indexes whose mark Jev is asked: those no pin fixes, in order.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const unpinned = (pinned: ReadonlyArray<Pin | undefined>): ReadonlyArray<number> =>\n pinned.flatMap((pin, index) => pin?.mark === undefined ? [index] : [])\n\n/**\n * The most of an item's cell and prose a reading carries, head kept, and of\n * what it observed, tail kept; in UTF-8 bytes.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const fieldBytes = 1024\n\nconst recall = \"the run record has the whole frame\"\n\nconst headKept = (text: string): string => {\n const whole = bytes.size(text)\n if (whole <= fieldBytes) return text\n return elide.head(text, fieldBytes - bytes.size(`\u2026 [+${whole}b, ${recall}]`), recall)\n}\n\nconst tailKept = (text: string): string => {\n const whole = bytes.size(text)\n if (whole <= fieldBytes) return text\n const kept = elide.tailSlice(text, fieldBytes - bytes.size(`[+${whole}b, ${recall}] \u2026`))\n return `[+${whole - bytes.size(kept)}b, ${recall}] \u2026${kept}`\n}\n\n/**\n * The reading: `remove_${i}` and `keep_${i}` per item, in as many requests as\n * the items need, asked together.\n *\n * Two booleans rather than one choice: a boolean always carries its\n * probability, and a choice without a distribution reads one-hot, so a floor\n * on it would guard nothing.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const reader = Judgement.perItem({\n id: \"compaction/marks\",\n description: \"Decide which old frames of an agent run to keep, squash into a summary, or remove\",\n context: Context,\n item: Item,\n questions: {\n remove: (i) =>\n Classifier.boolean({\n instructions:\n `Is items[${i}], an old frame of this run, no longer needed at all now that the context must shrink? The task, the person's messages and the latest frames stay regardless.`,\n criteria: {\n true:\n \"it contributed nothing still needed: a superseded read, a repeated command, a dead end later frames abandoned\",\n false: \"something it established may still matter\"\n }\n }),\n keep: (i) =>\n Classifier.boolean({\n instructions: `Will the exact text of items[${i}] be needed again?`,\n criteria: {\n true:\n \"a file's current content, an exact error still unresolved, a decision or constraint the run still acts on\",\n false: \"a summary sentence is enough\"\n }\n })\n }\n})\n\n/**\n * Asks Jev about `items`, in order. Cell and prose are sent head-kept and what was observed tail-kept,\n * each to {@link fieldBytes}. A reading is whole or it fails.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const read = (\n context: Context,\n items: ReadonlyArray<Item>\n): Effect.Effect<\n { readonly answers: ReadonlyArray<Answer>; readonly asked: ReadonlyArray<Judgement.Asked> },\n Judgement.Unjudged\n> =>\n reader.read(\n context,\n items.map((item) => ({\n tokens: item.tokens,\n cell: headKept(item.cell),\n prose: headKept(item.prose),\n observed: tailKept(item.observed)\n }))\n ).pipe(Effect.map((reading) => ({\n answers: reading.answers.map((answer) => ({\n remove: answer.remove.probability,\n keep: answer.keep.probability\n })),\n asked: reading.asked\n })))\n\n/**\n * The window a compaction must leave room in. Kept prefix tokens, `suffix`\n * and a summary allowance must fit under\n * `contextWindow - reserve - keepRecent / 2`. `tokens[i]` is prefix segment\n * `i`'s size.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport interface Budget {\n readonly contextWindow: number\n readonly reserve: number\n readonly keepRecent: number\n readonly suffix: number\n readonly tokens: ReadonlyArray<number>\n}\n\n/** Room left for the summary a squash produces. */\nconst summaryAllowance = 4000\n\n/** Jev removes a frame at or above this probability, when it would not keep it. */\nconst removeAt = 0.8\n\n/** Jev keeps a frame's exact text at or above this probability. */\nconst keepAt = 0.5\n\n/**\n * The mark of every prefix segment. `answers` are {@link read}'s, for the\n * indexes {@link unpinned} names.\n *\n * A segment is removed only when Jev is sure it is not needed and would not\n * keep it, kept when Jev would keep it, and squashed otherwise; pins and\n * floors override Jev, and a tool-call span takes its strongest mark. Then,\n * while the kept segments do not fit the {@link Budget}, the unpinned keep\n * Jev was least sure of, the older on a tie, is squashed. Pins alone may\n * exceed the budget; the next frame's trigger compacts again.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const resolve = (\n answers: ReadonlyArray<Answer>,\n pinned: ReadonlyArray<Pin | undefined>,\n budget: Budget\n): Result.Result<ReadonlyArray<Marked>, InvalidStep> => {\n const asked = unpinned(pinned)\n if (answers.length !== asked.length || budget.tokens.length !== pinned.length) {\n return Result.fail(\n new InvalidStep({ message: \"The compaction answers and budget must describe every unpinned prefix segment\" })\n )\n }\n const answered = new Map(asked.map((index, at) => [index, answers[at]!]))\n const marks: Array<Marked> = pinned.map((pin, index) => {\n if (pin?.mark !== undefined) return { mark: pin.mark, pinned: pin.pin }\n const { keep, remove } = answered.get(index)!\n const mark = keep >= keepAt ? \"keep\" : remove >= removeAt ? \"remove\" : \"squash\"\n return pin?.floor !== undefined && rank[pin.floor] > rank[mark]\n ? { mark: pin.floor, pinned: pin.pin }\n : { mark }\n })\n const unit = (index: number): number => pinned[index]?.pair ?? index\n for (const [index, marked] of marks.entries()) {\n const strongest = marks.filter((_, other) => unit(other) === unit(index)).map((other) => other.mark).reduce(\n stronger\n )\n if (pinned[index]?.mark === undefined && rank[strongest] > rank[marked.mark]) {\n marks[index] = { mark: strongest, pinned: \"pair\" }\n }\n }\n const limit = budget.contextWindow - budget.reserve - budget.keepRecent / 2\n let kept = marks.reduce((sum, marked, index) => marked.mark === \"keep\" ? sum + budget.tokens[index]! : sum, 0)\n const units = [...new Set(marks.map((_, index) => unit(index)))]\n .map((start) => ({ start, members: marks.flatMap((_, index) => unit(index) === start ? [index] : []) }))\n .filter(({ members }) =>\n members.some((index) => marks[index]!.mark === \"keep\") &&\n members.every((index) => pinned[index]?.mark === undefined)\n )\n .map(({ members, start }) => ({\n start,\n members,\n p: Math.max(...members.map((index) => answered.get(index)!.keep))\n }))\n .sort((a, b) => a.p - b.p || a.start - b.start)\n for (const { members } of units) {\n if (kept + budget.suffix + summaryAllowance <= limit) break\n // A span takes its strongest mark, so every member of a demotable one is kept.\n for (const index of members) {\n marks[index] = { mark: \"squash\", pinned: \"budget\" }\n kept -= budget.tokens[index]!\n }\n }\n return Result.succeed(marks)\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical renderings of controller interventions recorded in the journal.
|
|
3
|
+
*
|
|
4
|
+
* `CellTurn` uses these strings when it builds the live model window and
|
|
5
|
+
* `Transcript` uses the same functions when it rebuilds that window. Keeping
|
|
6
|
+
* the rendering here makes an intervention event sufficient to reproduce the
|
|
7
|
+
* exact user message it represented.
|
|
8
|
+
*
|
|
9
|
+
* @since 1.0.0-rc.0
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Renders the read-only-discipline intervention.
|
|
14
|
+
*
|
|
15
|
+
* It asks for a decision rather than a token write. An answerable request can
|
|
16
|
+
* complete without inventing work. An unfinished workspace change still needs
|
|
17
|
+
* evidence or a justification for more observation, and destructive
|
|
18
|
+
* writes made only to satisfy the notice are explicitly refused. A
|
|
19
|
+
* justification must name how later frames differ from the quiet ones so the
|
|
20
|
+
* run cannot buy a repeat by restating its plan.
|
|
21
|
+
*
|
|
22
|
+
* @category conversions
|
|
23
|
+
* @since 1.0.0-rc.0
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
export declare const readOnly: (cap: number, frames: number) => string;
|
|
27
|
+
/**
|
|
28
|
+
* Renders the repeated-observation intervention.
|
|
29
|
+
*
|
|
30
|
+
* This is separate from the read-only demand because a repeating run has
|
|
31
|
+
* often already edited. It redirects the run from re-reading that edit toward
|
|
32
|
+
* mechanism evidence: the failing check, symbol history, or another caller.
|
|
33
|
+
*
|
|
34
|
+
* @category conversions
|
|
35
|
+
* @since 1.0.0-rc.0
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
export declare const repeat: (frames: number, cap: number) => string;
|
|
39
|
+
/**
|
|
40
|
+
* Renders the unchanged-workspace completion intervention.
|
|
41
|
+
*
|
|
42
|
+
* @category conversions
|
|
43
|
+
* @since 1.0.0-rc.0
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
export declare const unmoved: (opened: string, closed: string) => string;
|
|
47
|
+
/**
|
|
48
|
+
* Renders the unresolved-failure completion intervention.
|
|
49
|
+
*
|
|
50
|
+
* @category conversions
|
|
51
|
+
* @since 1.0.0-rc.0
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
export declare const unresolved: (flow: string, failed: string, instead: string) => string;
|
|
55
|
+
/**
|
|
56
|
+
* Renders the narrowed-check completion intervention.
|
|
57
|
+
*
|
|
58
|
+
* @category conversions
|
|
59
|
+
* @since 1.0.0-rc.0
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
export declare const narrowed: (flow: string, broader: string, narrower: string) => string;
|
|
63
|
+
/**
|
|
64
|
+
* Renders the only-reading completion intervention.
|
|
65
|
+
*
|
|
66
|
+
* @category conversions
|
|
67
|
+
* @since 1.0.0-rc.0
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
70
|
+
export declare const narrowOnly: (flow: string, check: string, targets: ReadonlyArray<string>) => string;
|
|
71
|
+
/**
|
|
72
|
+
* Renders the completion-review intervention.
|
|
73
|
+
*
|
|
74
|
+
* Any of the three completion questions can ask for another frame. A low
|
|
75
|
+
* completeness reading does not establish that the run invented work, so the
|
|
76
|
+
* notice asks for a direct answer and makes evidence conditional on the
|
|
77
|
+
* actions or results that answer actually claims. A conversational answer
|
|
78
|
+
* needs no work report and must retain the person's requested format.
|
|
79
|
+
*
|
|
80
|
+
* The task is not quoted back. It is in the run's prefix on every frame, so a
|
|
81
|
+
* quote would buy nothing and cost the window the run has to answer in, and
|
|
82
|
+
* leaving it out is also what lets this text be rebuilt from the event alone.
|
|
83
|
+
* No probability is quoted either: a number is journal material for a grader,
|
|
84
|
+
* and in front of a model it is a score to negotiate.
|
|
85
|
+
*
|
|
86
|
+
* The text still warns about the narrower refusal: repeated claims of work
|
|
87
|
+
* the record does not carry can end the run. Honest reports of work left
|
|
88
|
+
* undone remain valid answers when that is what the run can report.
|
|
89
|
+
*
|
|
90
|
+
* @category conversions
|
|
91
|
+
* @since 1.0.0-rc.0
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
export declare const claim: () => string;
|
|
95
|
+
//# sourceMappingURL=demandText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demandText.d.ts","sourceRoot":"","sources":["../../../src/internal/demandText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,MAKc,CAAA;AAErE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,KAAK,MAAM,KAAG,MAQqJ,CAAA;AAE1M;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,MAMinB,CAAA;AAE1qB;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAMwY,CAAA;AAEnd;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,EAAE,UAAU,MAAM,KAAG,MAM8a,CAAA;AAEzf;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,SAAS,aAAa,CAAC,MAAM,CAAC,KAAG,MAM0lB,CAAA;AAEnrB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,KAAK,QAAO,MAO6F,CAAA"}
|