@planweave-ai/runtime 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/autoRun/codexExecutor.d.ts +20 -0
- package/dist/autoRun/codexExecutor.d.ts.map +1 -0
- package/dist/autoRun/codexExecutor.js +196 -0
- package/dist/autoRun/codexExecutor.js.map +1 -0
- package/dist/autoRun/codexProtocol.d.ts +5 -0
- package/dist/autoRun/codexProtocol.d.ts.map +1 -0
- package/dist/autoRun/codexProtocol.js +72 -0
- package/dist/autoRun/codexProtocol.js.map +1 -0
- package/dist/autoRun/contract.d.ts +46 -0
- package/dist/autoRun/contract.d.ts.map +1 -0
- package/dist/autoRun/contract.js +18 -0
- package/dist/autoRun/contract.js.map +1 -0
- package/dist/autoRun/executorShared.d.ts +57 -0
- package/dist/autoRun/executorShared.d.ts.map +1 -0
- package/dist/autoRun/executorShared.js +179 -0
- package/dist/autoRun/executorShared.js.map +1 -0
- package/dist/autoRun/executors.d.ts +43 -0
- package/dist/autoRun/executors.d.ts.map +1 -0
- package/dist/autoRun/executors.js +201 -0
- package/dist/autoRun/executors.js.map +1 -0
- package/dist/autoRun/localReviewExecutor.d.ts +20 -0
- package/dist/autoRun/localReviewExecutor.d.ts.map +1 -0
- package/dist/autoRun/localReviewExecutor.js +133 -0
- package/dist/autoRun/localReviewExecutor.js.map +1 -0
- package/dist/autoRun/opencodeExecutor.d.ts +20 -0
- package/dist/autoRun/opencodeExecutor.d.ts.map +1 -0
- package/dist/autoRun/opencodeExecutor.js +211 -0
- package/dist/autoRun/opencodeExecutor.js.map +1 -0
- package/dist/autoRun/opencodeInvocation.d.ts +9 -0
- package/dist/autoRun/opencodeInvocation.d.ts.map +1 -0
- package/dist/autoRun/opencodeInvocation.js +53 -0
- package/dist/autoRun/opencodeInvocation.js.map +1 -0
- package/dist/autoRun/opencodeOutput.d.ts +11 -0
- package/dist/autoRun/opencodeOutput.d.ts.map +1 -0
- package/dist/autoRun/opencodeOutput.js +190 -0
- package/dist/autoRun/opencodeOutput.js.map +1 -0
- package/dist/autoRun/reviewResultContract.d.ts +8 -0
- package/dist/autoRun/reviewResultContract.d.ts.map +1 -0
- package/dist/autoRun/reviewResultContract.js +30 -0
- package/dist/autoRun/reviewResultContract.js.map +1 -0
- package/dist/autoRun/streamingExecutor.d.ts +21 -0
- package/dist/autoRun/streamingExecutor.d.ts.map +1 -0
- package/dist/autoRun/streamingExecutor.js +40 -0
- package/dist/autoRun/streamingExecutor.js.map +1 -0
- package/dist/autoRun/tmuxExecutor.d.ts +36 -0
- package/dist/autoRun/tmuxExecutor.d.ts.map +1 -0
- package/dist/autoRun/tmuxExecutor.js +203 -0
- package/dist/autoRun/tmuxExecutor.js.map +1 -0
- package/dist/autoRun/tmuxRunnerScript.d.ts +2 -0
- package/dist/autoRun/tmuxRunnerScript.d.ts.map +1 -0
- package/dist/autoRun/tmuxRunnerScript.js +72 -0
- package/dist/autoRun/tmuxRunnerScript.js.map +1 -0
- package/dist/desktop/canvasApi.d.ts +18 -0
- package/dist/desktop/canvasApi.d.ts.map +1 -0
- package/dist/desktop/canvasApi.js +214 -0
- package/dist/desktop/canvasApi.js.map +1 -0
- package/dist/desktop/canvasDiagnostics.d.ts +3 -0
- package/dist/desktop/canvasDiagnostics.d.ts.map +1 -0
- package/dist/desktop/canvasDiagnostics.js +21 -0
- package/dist/desktop/canvasDiagnostics.js.map +1 -0
- package/dist/desktop/canvasRegistry.d.ts +17 -0
- package/dist/desktop/canvasRegistry.d.ts.map +1 -0
- package/dist/desktop/canvasRegistry.js +51 -0
- package/dist/desktop/canvasRegistry.js.map +1 -0
- package/dist/desktop/fileSyncApi.d.ts +8 -0
- package/dist/desktop/fileSyncApi.d.ts.map +1 -0
- package/dist/desktop/fileSyncApi.js +186 -0
- package/dist/desktop/fileSyncApi.js.map +1 -0
- package/dist/desktop/graph/draftModel.d.ts +8 -0
- package/dist/desktop/graph/draftModel.d.ts.map +1 -0
- package/dist/desktop/graph/draftModel.js +75 -0
- package/dist/desktop/graph/draftModel.js.map +1 -0
- package/dist/desktop/graph/editModel.d.ts +16 -0
- package/dist/desktop/graph/editModel.d.ts.map +1 -0
- package/dist/desktop/graph/editModel.js +273 -0
- package/dist/desktop/graph/editModel.js.map +1 -0
- package/dist/desktop/graph/graphHelpers.d.ts +17 -0
- package/dist/desktop/graph/graphHelpers.d.ts.map +1 -0
- package/dist/desktop/graph/graphHelpers.js +95 -0
- package/dist/desktop/graph/graphHelpers.js.map +1 -0
- package/dist/desktop/graph/projectCanvasAggregation.d.ts +10 -0
- package/dist/desktop/graph/projectCanvasAggregation.d.ts.map +1 -0
- package/dist/desktop/graph/projectCanvasAggregation.js +19 -0
- package/dist/desktop/graph/projectCanvasAggregation.js.map +1 -0
- package/dist/desktop/graph/readModel.d.ts +7 -0
- package/dist/desktop/graph/readModel.d.ts.map +1 -0
- package/dist/desktop/graph/readModel.js +154 -0
- package/dist/desktop/graph/readModel.js.map +1 -0
- package/dist/desktop/graph/searchModel.d.ts +3 -0
- package/dist/desktop/graph/searchModel.d.ts.map +1 -0
- package/dist/desktop/graph/searchModel.js +128 -0
- package/dist/desktop/graph/searchModel.js.map +1 -0
- package/dist/desktop/graph/statisticsModel.d.ts +3 -0
- package/dist/desktop/graph/statisticsModel.d.ts.map +1 -0
- package/dist/desktop/graph/statisticsModel.js +121 -0
- package/dist/desktop/graph/statisticsModel.js.map +1 -0
- package/dist/desktop/graph/todoModel.d.ts +4 -0
- package/dist/desktop/graph/todoModel.d.ts.map +1 -0
- package/dist/desktop/graph/todoModel.js +88 -0
- package/dist/desktop/graph/todoModel.js.map +1 -0
- package/dist/desktop/graphApi.d.ts +7 -0
- package/dist/desktop/graphApi.d.ts.map +1 -0
- package/dist/desktop/graphApi.js +7 -0
- package/dist/desktop/graphApi.js.map +1 -0
- package/dist/desktop/index.d.ts +12 -0
- package/dist/desktop/index.d.ts.map +1 -0
- package/dist/desktop/index.js +10 -0
- package/dist/desktop/index.js.map +1 -0
- package/dist/desktop/layoutApi.d.ts +10 -0
- package/dist/desktop/layoutApi.d.ts.map +1 -0
- package/dist/desktop/layoutApi.js +191 -0
- package/dist/desktop/layoutApi.js.map +1 -0
- package/dist/desktop/projectApi.d.ts +10 -0
- package/dist/desktop/projectApi.d.ts.map +1 -0
- package/dist/desktop/projectApi.js +99 -0
- package/dist/desktop/projectApi.js.map +1 -0
- package/dist/desktop/recordsApi.d.ts +7 -0
- package/dist/desktop/recordsApi.d.ts.map +1 -0
- package/dist/desktop/recordsApi.js +188 -0
- package/dist/desktop/recordsApi.js.map +1 -0
- package/dist/desktop/reviewPipelineApi.d.ts +5 -0
- package/dist/desktop/reviewPipelineApi.d.ts.map +1 -0
- package/dist/desktop/reviewPipelineApi.js +189 -0
- package/dist/desktop/reviewPipelineApi.js.map +1 -0
- package/dist/desktop/runApi.d.ts +8 -0
- package/dist/desktop/runApi.d.ts.map +1 -0
- package/dist/desktop/runApi.js +180 -0
- package/dist/desktop/runApi.js.map +1 -0
- package/dist/desktop/runRecordOutput.d.ts +14 -0
- package/dist/desktop/runRecordOutput.d.ts.map +1 -0
- package/dist/desktop/runRecordOutput.js +31 -0
- package/dist/desktop/runRecordOutput.js.map +1 -0
- package/dist/desktop/runStateStore.d.ts +9 -0
- package/dist/desktop/runStateStore.d.ts.map +1 -0
- package/dist/desktop/runStateStore.js +38 -0
- package/dist/desktop/runStateStore.js.map +1 -0
- package/dist/desktop/runStepState.d.ts +16 -0
- package/dist/desktop/runStepState.d.ts.map +1 -0
- package/dist/desktop/runStepState.js +94 -0
- package/dist/desktop/runStepState.js.map +1 -0
- package/dist/desktop/types/bridgeTypes.d.ts +115 -0
- package/dist/desktop/types/bridgeTypes.d.ts.map +1 -0
- package/dist/desktop/types/bridgeTypes.js +2 -0
- package/dist/desktop/types/bridgeTypes.js.map +1 -0
- package/dist/desktop/types/graphTypes.d.ts +201 -0
- package/dist/desktop/types/graphTypes.d.ts.map +1 -0
- package/dist/desktop/types/graphTypes.js +2 -0
- package/dist/desktop/types/graphTypes.js.map +1 -0
- package/dist/desktop/types/projectTypes.d.ts +19 -0
- package/dist/desktop/types/projectTypes.d.ts.map +1 -0
- package/dist/desktop/types/projectTypes.js +2 -0
- package/dist/desktop/types/projectTypes.js.map +1 -0
- package/dist/desktop/types/recordsTypes.d.ts +50 -0
- package/dist/desktop/types/recordsTypes.d.ts.map +1 -0
- package/dist/desktop/types/recordsTypes.js +2 -0
- package/dist/desktop/types/recordsTypes.js.map +1 -0
- package/dist/desktop/types/reviewPipelineTypes.d.ts +35 -0
- package/dist/desktop/types/reviewPipelineTypes.d.ts.map +1 -0
- package/dist/desktop/types/reviewPipelineTypes.js +2 -0
- package/dist/desktop/types/reviewPipelineTypes.js.map +1 -0
- package/dist/desktop/types/runTypes.d.ts +35 -0
- package/dist/desktop/types/runTypes.d.ts.map +1 -0
- package/dist/desktop/types/runTypes.js +2 -0
- package/dist/desktop/types/runTypes.js.map +1 -0
- package/dist/desktop/types/syncTypes.d.ts +22 -0
- package/dist/desktop/types/syncTypes.d.ts.map +1 -0
- package/dist/desktop/types/syncTypes.js +2 -0
- package/dist/desktop/types/syncTypes.js.map +1 -0
- package/dist/desktop/types.d.ts +8 -0
- package/dist/desktop/types.d.ts.map +1 -0
- package/dist/desktop/types.js +2 -0
- package/dist/desktop/types.js.map +1 -0
- package/dist/graph/compileTaskGraph.d.ts +8 -0
- package/dist/graph/compileTaskGraph.d.ts.map +1 -0
- package/dist/graph/compileTaskGraph.js +311 -0
- package/dist/graph/compileTaskGraph.js.map +1 -0
- package/dist/graph/editGraph.d.ts +49 -0
- package/dist/graph/editGraph.d.ts.map +1 -0
- package/dist/graph/editGraph.js +224 -0
- package/dist/graph/editGraph.js.map +1 -0
- package/dist/graph/mutation.d.ts +62 -0
- package/dist/graph/mutation.d.ts.map +1 -0
- package/dist/graph/mutation.js +158 -0
- package/dist/graph/mutation.js.map +1 -0
- package/dist/graph/session/applyOperation.d.ts +3 -0
- package/dist/graph/session/applyOperation.d.ts.map +1 -0
- package/dist/graph/session/applyOperation.js +101 -0
- package/dist/graph/session/applyOperation.js.map +1 -0
- package/dist/graph/session/fileQueue.d.ts +5 -0
- package/dist/graph/session/fileQueue.d.ts.map +1 -0
- package/dist/graph/session/fileQueue.js +26 -0
- package/dist/graph/session/fileQueue.js.map +1 -0
- package/dist/graph/session/graphIndexes.d.ts +15 -0
- package/dist/graph/session/graphIndexes.d.ts.map +1 -0
- package/dist/graph/session/graphIndexes.js +174 -0
- package/dist/graph/session/graphIndexes.js.map +1 -0
- package/dist/graph/session/manifestDiff.d.ts +3 -0
- package/dist/graph/session/manifestDiff.d.ts.map +1 -0
- package/dist/graph/session/manifestDiff.js +39 -0
- package/dist/graph/session/manifestDiff.js.map +1 -0
- package/dist/graph/session/rebuild.d.ts +4 -0
- package/dist/graph/session/rebuild.d.ts.map +1 -0
- package/dist/graph/session/rebuild.js +20 -0
- package/dist/graph/session/rebuild.js.map +1 -0
- package/dist/graph/session.d.ts +6 -0
- package/dist/graph/session.d.ts.map +1 -0
- package/dist/graph/session.js +97 -0
- package/dist/graph/session.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/initWorkspace.d.ts +9 -0
- package/dist/initWorkspace.d.ts.map +1 -0
- package/dist/initWorkspace.js +108 -0
- package/dist/initWorkspace.js.map +1 -0
- package/dist/json.d.ts +3 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +20 -0
- package/dist/json.js.map +1 -0
- package/dist/package/fileChanges.d.ts +14 -0
- package/dist/package/fileChanges.d.ts.map +1 -0
- package/dist/package/fileChanges.js +134 -0
- package/dist/package/fileChanges.js.map +1 -0
- package/dist/package/loadPackage.d.ts +8 -0
- package/dist/package/loadPackage.d.ts.map +1 -0
- package/dist/package/loadPackage.js +14 -0
- package/dist/package/loadPackage.js.map +1 -0
- package/dist/package/manifestEdit.d.ts +4 -0
- package/dist/package/manifestEdit.d.ts.map +1 -0
- package/dist/package/manifestEdit.js +198 -0
- package/dist/package/manifestEdit.js.map +1 -0
- package/dist/package/orphans.d.ts +6 -0
- package/dist/package/orphans.d.ts.map +1 -0
- package/dist/package/orphans.js +38 -0
- package/dist/package/orphans.js.map +1 -0
- package/dist/package/readMarkdown.d.ts +2 -0
- package/dist/package/readMarkdown.d.ts.map +1 -0
- package/dist/package/readMarkdown.js +5 -0
- package/dist/package/readMarkdown.js.map +1 -0
- package/dist/package/resolvePackagePath.d.ts +8 -0
- package/dist/package/resolvePackagePath.d.ts.map +1 -0
- package/dist/package/resolvePackagePath.js +56 -0
- package/dist/package/resolvePackagePath.js.map +1 -0
- package/dist/paths.d.ts +4 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +28 -0
- package/dist/paths.js.map +1 -0
- package/dist/project.d.ts +4 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +35 -0
- package/dist/project.js.map +1 -0
- package/dist/projectId.d.ts +2 -0
- package/dist/projectId.d.ts.map +1 -0
- package/dist/projectId.js +16 -0
- package/dist/projectId.js.map +1 -0
- package/dist/projectPromptPolicy.d.ts +9 -0
- package/dist/projectPromptPolicy.d.ts.map +1 -0
- package/dist/projectPromptPolicy.js +73 -0
- package/dist/projectPromptPolicy.js.map +1 -0
- package/dist/prompt/getPrompt.d.ts +6 -0
- package/dist/prompt/getPrompt.d.ts.map +1 -0
- package/dist/prompt/getPrompt.js +5 -0
- package/dist/prompt/getPrompt.js.map +1 -0
- package/dist/prompt/refreshPrompt.d.ts +6 -0
- package/dist/prompt/refreshPrompt.d.ts.map +1 -0
- package/dist/prompt/refreshPrompt.js +9 -0
- package/dist/prompt/refreshPrompt.js.map +1 -0
- package/dist/prompt/refreshPrompts.d.ts +5 -0
- package/dist/prompt/refreshPrompts.d.ts.map +1 -0
- package/dist/prompt/refreshPrompts.js +17 -0
- package/dist/prompt/refreshPrompts.js.map +1 -0
- package/dist/prompt/renderManagedSections.d.ts +3 -0
- package/dist/prompt/renderManagedSections.d.ts.map +1 -0
- package/dist/prompt/renderManagedSections.js +4 -0
- package/dist/prompt/renderManagedSections.js.map +1 -0
- package/dist/prompt/sections.d.ts +15 -0
- package/dist/prompt/sections.d.ts.map +1 -0
- package/dist/prompt/sections.js +62 -0
- package/dist/prompt/sections.js.map +1 -0
- package/dist/schema/manifest.d.ts +192 -0
- package/dist/schema/manifest.d.ts.map +1 -0
- package/dist/schema/manifest.js +178 -0
- package/dist/schema/manifest.js.map +1 -0
- package/dist/state.d.ts +7 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +139 -0
- package/dist/state.js.map +1 -0
- package/dist/taskManager/autoRun.d.ts +16 -0
- package/dist/taskManager/autoRun.d.ts.map +1 -0
- package/dist/taskManager/autoRun.js +228 -0
- package/dist/taskManager/autoRun.js.map +1 -0
- package/dist/taskManager/blockStatusMutations.d.ts +42 -0
- package/dist/taskManager/blockStatusMutations.d.ts.map +1 -0
- package/dist/taskManager/blockStatusMutations.js +88 -0
- package/dist/taskManager/blockStatusMutations.js.map +1 -0
- package/dist/taskManager/blockSubmission.d.ts +9 -0
- package/dist/taskManager/blockSubmission.d.ts.map +1 -0
- package/dist/taskManager/blockSubmission.js +124 -0
- package/dist/taskManager/blockSubmission.js.map +1 -0
- package/dist/taskManager/claimScheduler.d.ts +26 -0
- package/dist/taskManager/claimScheduler.d.ts.map +1 -0
- package/dist/taskManager/claimScheduler.js +286 -0
- package/dist/taskManager/claimScheduler.js.map +1 -0
- package/dist/taskManager/doctor.d.ts +6 -0
- package/dist/taskManager/doctor.d.ts.map +1 -0
- package/dist/taskManager/doctor.js +141 -0
- package/dist/taskManager/doctor.js.map +1 -0
- package/dist/taskManager/executionStatus.d.ts +74 -0
- package/dist/taskManager/executionStatus.d.ts.map +1 -0
- package/dist/taskManager/executionStatus.js +180 -0
- package/dist/taskManager/executionStatus.js.map +1 -0
- package/dist/taskManager/executorApi.d.ts +9 -0
- package/dist/taskManager/executorApi.d.ts.map +1 -0
- package/dist/taskManager/executorApi.js +87 -0
- package/dist/taskManager/executorApi.js.map +1 -0
- package/dist/taskManager/feedbackArtifacts.d.ts +14 -0
- package/dist/taskManager/feedbackArtifacts.d.ts.map +1 -0
- package/dist/taskManager/feedbackArtifacts.js +17 -0
- package/dist/taskManager/feedbackArtifacts.js.map +1 -0
- package/dist/taskManager/feedbackSubmission.d.ts +7 -0
- package/dist/taskManager/feedbackSubmission.d.ts.map +1 -0
- package/dist/taskManager/feedbackSubmission.js +136 -0
- package/dist/taskManager/feedbackSubmission.js.map +1 -0
- package/dist/taskManager/index.d.ts +12 -0
- package/dist/taskManager/index.d.ts.map +1 -0
- package/dist/taskManager/index.js +11 -0
- package/dist/taskManager/index.js.map +1 -0
- package/dist/taskManager/promptRenderer.d.ts +29 -0
- package/dist/taskManager/promptRenderer.d.ts.map +1 -0
- package/dist/taskManager/promptRenderer.js +191 -0
- package/dist/taskManager/promptRenderer.js.map +1 -0
- package/dist/taskManager/resultIndex.d.ts +15 -0
- package/dist/taskManager/resultIndex.d.ts.map +1 -0
- package/dist/taskManager/resultIndex.js +61 -0
- package/dist/taskManager/resultIndex.js.map +1 -0
- package/dist/taskManager/reviewHook.d.ts +10 -0
- package/dist/taskManager/reviewHook.d.ts.map +1 -0
- package/dist/taskManager/reviewHook.js +49 -0
- package/dist/taskManager/reviewHook.js.map +1 -0
- package/dist/taskManager/reviewRetry.d.ts +13 -0
- package/dist/taskManager/reviewRetry.d.ts.map +1 -0
- package/dist/taskManager/reviewRetry.js +112 -0
- package/dist/taskManager/reviewRetry.js.map +1 -0
- package/dist/taskManager/reviewSubmission.d.ts +8 -0
- package/dist/taskManager/reviewSubmission.d.ts.map +1 -0
- package/dist/taskManager/reviewSubmission.js +444 -0
- package/dist/taskManager/reviewSubmission.js.map +1 -0
- package/dist/taskManager/runtimeContext.d.ts +16 -0
- package/dist/taskManager/runtimeContext.d.ts.map +1 -0
- package/dist/taskManager/runtimeContext.js +31 -0
- package/dist/taskManager/runtimeContext.js.map +1 -0
- package/dist/taskManager/selectors.d.ts +20 -0
- package/dist/taskManager/selectors.d.ts.map +1 -0
- package/dist/taskManager/selectors.js +148 -0
- package/dist/taskManager/selectors.js.map +1 -0
- package/dist/tasks/dependencies.d.ts +5 -0
- package/dist/tasks/dependencies.d.ts.map +1 -0
- package/dist/tasks/dependencies.js +11 -0
- package/dist/tasks/dependencies.js.map +1 -0
- package/dist/tasks/parallelSafety.d.ts +3 -0
- package/dist/tasks/parallelSafety.d.ts.map +1 -0
- package/dist/tasks/parallelSafety.js +18 -0
- package/dist/tasks/parallelSafety.js.map +1 -0
- package/dist/types.d.ts +675 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/dist/validatePackage.d.ts +5 -0
- package/dist/validatePackage.d.ts.map +1 -0
- package/dist/validatePackage.js +130 -0
- package/dist/validatePackage.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { access, mkdir, writeFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { writeJsonFile } from "../json.js";
|
|
5
|
+
import { resolvePackageWorkspace } from "../package/loadPackage.js";
|
|
6
|
+
import { finishRunMetadata, nextRunId, planweaveExecutorEnv, prepareBlockRun } from "./executorShared.js";
|
|
7
|
+
import { opencodeInvocation } from "./opencodeInvocation.js";
|
|
8
|
+
import { extractOpencodeSessionId, opencodeReport, parseOpencodeJsonOutput } from "./opencodeOutput.js";
|
|
9
|
+
import { appendReviewResultFileInstruction, reviewResultEnvironment } from "./reviewResultContract.js";
|
|
10
|
+
import { runStreamingCommandWithSessionCapture } from "./streamingExecutor.js";
|
|
11
|
+
import { createTmuxSessionInfo, tmuxMetadataPatch } from "./tmuxExecutor.js";
|
|
12
|
+
async function runOpencodeStreamingCommand(options) {
|
|
13
|
+
return runStreamingCommandWithSessionCapture({
|
|
14
|
+
command: options.command,
|
|
15
|
+
args: options.args,
|
|
16
|
+
cwd: options.cwd,
|
|
17
|
+
stdin: options.stdin,
|
|
18
|
+
env: options.env,
|
|
19
|
+
stdoutPath: options.stdoutPath,
|
|
20
|
+
stderrPath: options.stderrPath,
|
|
21
|
+
tmux: options.tmux,
|
|
22
|
+
timeoutMs: options.timeoutMs,
|
|
23
|
+
sessionIdFromOutput: extractOpencodeSessionId,
|
|
24
|
+
onSessionId: options.onSessionId
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export async function runOpencodeBlock(options) {
|
|
28
|
+
const run = await prepareBlockRun({
|
|
29
|
+
projectRoot: options.projectRoot,
|
|
30
|
+
claim: options.claim,
|
|
31
|
+
executorName: options.executorName,
|
|
32
|
+
profile: options.profile,
|
|
33
|
+
prompt: options.prompt
|
|
34
|
+
});
|
|
35
|
+
const workspace = await resolvePackageWorkspace(options.projectRoot);
|
|
36
|
+
const reviewResultPath = options.claim.blockType === "review" ? join(run.runDir, "review-result.json") : null;
|
|
37
|
+
const prompt = reviewResultPath
|
|
38
|
+
? appendReviewResultFileInstruction(options.prompt, {
|
|
39
|
+
resultPath: reviewResultPath,
|
|
40
|
+
reviewBlockRef: options.claim.ref,
|
|
41
|
+
taskId: options.claim.taskId
|
|
42
|
+
})
|
|
43
|
+
: options.prompt;
|
|
44
|
+
const invocation = opencodeInvocation(options.profile, prompt, workspace.rootPath);
|
|
45
|
+
const tmux = await createTmuxSessionInfo({ runDir: run.runDir, runId: run.runId, ref: options.claim.ref, kind: "block", enabled: options.tmuxEnabled });
|
|
46
|
+
await finishRunMetadata(run.metadataPath, tmuxMetadataPatch(tmux));
|
|
47
|
+
let agentSessionId = null;
|
|
48
|
+
const onSessionId = async (sessionId) => {
|
|
49
|
+
if (agentSessionId) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
agentSessionId = sessionId;
|
|
53
|
+
await finishRunMetadata(run.metadataPath, {
|
|
54
|
+
agentSessionId: sessionId,
|
|
55
|
+
opencodeSessionId: sessionId
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
if (invocation.sessionId) {
|
|
59
|
+
await onSessionId(invocation.sessionId);
|
|
60
|
+
}
|
|
61
|
+
const result = await runOpencodeStreamingCommand({
|
|
62
|
+
command: options.profile.command,
|
|
63
|
+
args: invocation.args,
|
|
64
|
+
cwd: workspace.rootPath,
|
|
65
|
+
stdin: invocation.stdin,
|
|
66
|
+
env: planweaveExecutorEnv(workspace, reviewResultPath
|
|
67
|
+
? reviewResultEnvironment({
|
|
68
|
+
resultPath: reviewResultPath,
|
|
69
|
+
reviewBlockRef: options.claim.ref,
|
|
70
|
+
taskId: options.claim.taskId
|
|
71
|
+
})
|
|
72
|
+
: undefined),
|
|
73
|
+
timeoutMs: options.profile.timeoutMs,
|
|
74
|
+
stdoutPath: join(run.runDir, "stdout.md"),
|
|
75
|
+
stderrPath: join(run.runDir, "stderr.log"),
|
|
76
|
+
tmux,
|
|
77
|
+
onSessionId
|
|
78
|
+
});
|
|
79
|
+
const jsonOutput = parseOpencodeJsonOutput(result.stdout);
|
|
80
|
+
agentSessionId = agentSessionId ?? jsonOutput.sessionId ?? extractOpencodeSessionId(`${result.stdout}\n${result.stderr}`);
|
|
81
|
+
if (jsonOutput.parsedAny || invocation.jsonMode) {
|
|
82
|
+
await writeFile(join(run.runDir, "events.ndjson"), result.stdout, "utf8");
|
|
83
|
+
}
|
|
84
|
+
await finishRunMetadata(run.metadataPath, {
|
|
85
|
+
finishedAt: new Date().toISOString(),
|
|
86
|
+
exitCode: result.exitCode,
|
|
87
|
+
command: options.profile.command,
|
|
88
|
+
args: invocation.args,
|
|
89
|
+
projectRoot: workspace.rootPath,
|
|
90
|
+
executionCwd: workspace.rootPath,
|
|
91
|
+
sandbox: options.profile.sandbox ?? null,
|
|
92
|
+
timeoutMs: options.profile.timeoutMs ?? null,
|
|
93
|
+
timedOut: result.timedOut,
|
|
94
|
+
agentSessionId,
|
|
95
|
+
opencodeSessionId: agentSessionId,
|
|
96
|
+
resumed: false
|
|
97
|
+
});
|
|
98
|
+
if (result.exitCode !== 0) {
|
|
99
|
+
throw new Error(result.timedOut
|
|
100
|
+
? `Executor '${options.executorName}' timed out after ${options.profile.timeoutMs}ms.`
|
|
101
|
+
: result.stderr.trim() || `Executor '${options.executorName}' exited with code ${result.exitCode}.`);
|
|
102
|
+
}
|
|
103
|
+
if (jsonOutput.error) {
|
|
104
|
+
throw new Error(`Executor '${options.executorName}' returned an OpenCode error event: ${jsonOutput.error}`);
|
|
105
|
+
}
|
|
106
|
+
if (options.claim.blockType === "review") {
|
|
107
|
+
if (!reviewResultPath) {
|
|
108
|
+
throw new Error(`Executor '${options.executorName}' did not prepare a review result path.`);
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
await access(reviewResultPath, constants.R_OK);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
throw new Error(`Executor '${options.executorName}' did not create review result JSON at ${reviewResultPath}.`);
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
kind: "review",
|
|
118
|
+
resultPath: reviewResultPath,
|
|
119
|
+
runId: run.runId,
|
|
120
|
+
executor: options.executorName,
|
|
121
|
+
adapter: "opencode-exec",
|
|
122
|
+
agentSessionId,
|
|
123
|
+
opencodeSessionId: agentSessionId,
|
|
124
|
+
...result
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const reportPath = join(run.runDir, "report.md");
|
|
128
|
+
await writeFile(reportPath, opencodeReport(jsonOutput, result.stdout, result.stderr, agentSessionId), "utf8");
|
|
129
|
+
return { kind: "block", reportPath, runId: run.runId, executor: options.executorName, adapter: "opencode-exec", agentSessionId, opencodeSessionId: agentSessionId, ...result };
|
|
130
|
+
}
|
|
131
|
+
export async function runOpencodeFeedback(options) {
|
|
132
|
+
const runRoot = join(options.workspaceResultsDir, "feedback-runs");
|
|
133
|
+
const runId = await nextRunId(runRoot);
|
|
134
|
+
const runDir = join(runRoot, runId);
|
|
135
|
+
const metadataPath = join(runDir, "metadata.json");
|
|
136
|
+
const startedAt = new Date().toISOString();
|
|
137
|
+
await mkdir(runDir, { recursive: true });
|
|
138
|
+
await writeFile(join(runDir, "prompt.md"), options.claim.content, "utf8");
|
|
139
|
+
const invocation = opencodeInvocation(options.profile, options.claim.content, options.projectRoot);
|
|
140
|
+
const tmux = await createTmuxSessionInfo({ runDir, runId, kind: "feedback", enabled: options.tmuxEnabled });
|
|
141
|
+
await writeJsonFile(metadataPath, {
|
|
142
|
+
runId,
|
|
143
|
+
executor: options.executorName,
|
|
144
|
+
adapter: "opencode-exec",
|
|
145
|
+
projectRoot: options.projectRoot,
|
|
146
|
+
executionCwd: options.projectRoot,
|
|
147
|
+
startedAt,
|
|
148
|
+
finishedAt: null,
|
|
149
|
+
exitCode: null,
|
|
150
|
+
command: options.profile.command,
|
|
151
|
+
args: invocation.args,
|
|
152
|
+
timeoutMs: options.profile.timeoutMs ?? null,
|
|
153
|
+
timedOut: false,
|
|
154
|
+
agentSessionId: null,
|
|
155
|
+
opencodeSessionId: null,
|
|
156
|
+
...tmuxMetadataPatch(tmux)
|
|
157
|
+
});
|
|
158
|
+
let agentSessionId = null;
|
|
159
|
+
const onSessionId = async (sessionId) => {
|
|
160
|
+
if (agentSessionId) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
agentSessionId = sessionId;
|
|
164
|
+
await finishRunMetadata(metadataPath, {
|
|
165
|
+
agentSessionId: sessionId,
|
|
166
|
+
opencodeSessionId: sessionId
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
if (invocation.sessionId) {
|
|
170
|
+
await onSessionId(invocation.sessionId);
|
|
171
|
+
}
|
|
172
|
+
const result = await runOpencodeStreamingCommand({
|
|
173
|
+
command: options.profile.command,
|
|
174
|
+
args: invocation.args,
|
|
175
|
+
cwd: options.projectRoot,
|
|
176
|
+
stdin: invocation.stdin,
|
|
177
|
+
env: planweaveExecutorEnv({ planweaveHome: options.planweaveHome }),
|
|
178
|
+
timeoutMs: options.profile.timeoutMs,
|
|
179
|
+
stdoutPath: join(runDir, "stdout.md"),
|
|
180
|
+
stderrPath: join(runDir, "stderr.log"),
|
|
181
|
+
tmux,
|
|
182
|
+
onSessionId
|
|
183
|
+
});
|
|
184
|
+
const jsonOutput = parseOpencodeJsonOutput(result.stdout);
|
|
185
|
+
agentSessionId = agentSessionId ?? jsonOutput.sessionId ?? extractOpencodeSessionId(`${result.stdout}\n${result.stderr}`);
|
|
186
|
+
if (jsonOutput.parsedAny || invocation.jsonMode) {
|
|
187
|
+
await writeFile(join(runDir, "events.ndjson"), result.stdout, "utf8");
|
|
188
|
+
}
|
|
189
|
+
await finishRunMetadata(metadataPath, {
|
|
190
|
+
finishedAt: new Date().toISOString(),
|
|
191
|
+
exitCode: result.exitCode,
|
|
192
|
+
command: options.profile.command,
|
|
193
|
+
args: invocation.args,
|
|
194
|
+
timeoutMs: options.profile.timeoutMs ?? null,
|
|
195
|
+
timedOut: result.timedOut,
|
|
196
|
+
agentSessionId,
|
|
197
|
+
opencodeSessionId: agentSessionId
|
|
198
|
+
});
|
|
199
|
+
if (result.exitCode !== 0) {
|
|
200
|
+
throw new Error(result.timedOut
|
|
201
|
+
? `Executor '${options.executorName}' timed out after ${options.profile.timeoutMs}ms.`
|
|
202
|
+
: result.stderr.trim() || `Executor '${options.executorName}' exited with code ${result.exitCode}.`);
|
|
203
|
+
}
|
|
204
|
+
if (jsonOutput.error) {
|
|
205
|
+
throw new Error(`Executor '${options.executorName}' returned an OpenCode error event: ${jsonOutput.error}`);
|
|
206
|
+
}
|
|
207
|
+
const reportPath = join(runDir, "report.md");
|
|
208
|
+
await writeFile(reportPath, opencodeReport(jsonOutput, result.stdout, result.stderr, agentSessionId), "utf8");
|
|
209
|
+
return { kind: "feedback", reportPath, runId, executor: options.executorName, adapter: "opencode-exec", agentSessionId, opencodeSessionId: agentSessionId, ...result };
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=opencodeExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeExecutor.js","sourceRoot":"","sources":["../../src/autoRun/opencodeExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,oBAAoB,EAAE,eAAe,EAAuC,MAAM,qBAAqB,CAAC;AAC/I,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,iCAAiC,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACvG,OAAO,EAAE,qCAAqC,EAA8B,MAAM,wBAAwB,CAAC;AAC3G,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAwB,MAAM,mBAAmB,CAAC;AAEnG,KAAK,UAAU,2BAA2B,CAAC,OAW1C;IACC,OAAO,qCAAqC,CAAC;QAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,mBAAmB,EAAE,wBAAwB;QAC7C,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAOtC;IACC,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9G,MAAM,MAAM,GAAG,gBAAgB;QAC7B,CAAC,CAAC,iCAAiC,CAAC,OAAO,CAAC,MAAM,EAAE;YAChD,UAAU,EAAE,gBAAgB;YAC5B,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG;YACjC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;SAC7B,CAAC;QACJ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACnB,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxJ,MAAM,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;QAC7D,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,cAAc,GAAG,SAAS,CAAC;QAC3B,MAAM,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE;YACxC,cAAc,EAAE,SAAS;YACzB,iBAAiB,EAAE,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC;IACF,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;QAC/C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;QAChC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,GAAG,EAAE,SAAS,CAAC,QAAQ;QACvB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,GAAG,EAAE,oBAAoB,CACvB,SAAS,EACT,gBAAgB;YACd,CAAC,CAAC,uBAAuB,CAAC;gBACtB,UAAU,EAAE,gBAAgB;gBAC5B,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG;gBACjC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;aAC7B,CAAC;YACJ,CAAC,CAAC,SAAS,CACd;QACD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;QACpC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;QACzC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;QAC1C,IAAI;QACJ,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1D,cAAc,GAAG,cAAc,IAAI,UAAU,CAAC,SAAS,IAAI,wBAAwB,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1H,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE;QACxC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;QAChC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EAAE,SAAS,CAAC,QAAQ;QAC/B,YAAY,EAAE,SAAS,CAAC,QAAQ;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI;QACxC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI;QAC5C,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,cAAc;QACd,iBAAiB,EAAE,cAAc;QACjC,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,QAAQ;YACb,CAAC,CAAC,aAAa,OAAO,CAAC,YAAY,qBAAqB,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK;YACtF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,OAAO,CAAC,YAAY,sBAAsB,MAAM,CAAC,QAAQ,GAAG,CACtG,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,YAAY,uCAAuC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9G,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,YAAY,yCAAyC,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,YAAY,0CAA0C,gBAAgB,GAAG,CAAC,CAAC;QAClH,CAAC;QACD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,gBAAgB;YAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,OAAO,CAAC,YAAY;YAC9B,OAAO,EAAE,eAAe;YACxB,cAAc;YACd,iBAAiB,EAAE,cAAc;YACjC,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;AACjL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAQzC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5G,MAAM,aAAa,CAAC,YAAY,EAAE;QAChC,KAAK;QACL,QAAQ,EAAE,OAAO,CAAC,YAAY;QAC9B,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,WAAW;QACjC,SAAS;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;QAChC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI;QAC5C,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,IAAI;QACpB,iBAAiB,EAAE,IAAI;QACvB,GAAG,iBAAiB,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;QAC7D,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,cAAc,GAAG,SAAS,CAAC;QAC3B,MAAM,iBAAiB,CAAC,YAAY,EAAE;YACpC,cAAc,EAAE,SAAS;YACzB,iBAAiB,EAAE,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC;IACF,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;QAC/C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;QAChC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,GAAG,EAAE,OAAO,CAAC,WAAW;QACxB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,GAAG,EAAE,oBAAoB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QACnE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;QACpC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QACrC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;QACtC,IAAI;QACJ,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1D,cAAc,GAAG,cAAc,IAAI,UAAU,CAAC,SAAS,IAAI,wBAAwB,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1H,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,iBAAiB,CAAC,YAAY,EAAE;QACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;QAChC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI;QAC5C,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,cAAc;QACd,iBAAiB,EAAE,cAAc;KAClC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,QAAQ;YACb,CAAC,CAAC,aAAa,OAAO,CAAC,YAAY,qBAAqB,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK;YACtF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,OAAO,CAAC,YAAY,sBAAsB,MAAM,CAAC,QAAQ,GAAG,CACtG,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,CAAC,YAAY,uCAAuC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9G,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,MAAM,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9G,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;AACzK,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { OpencodeExecExecutorProfile } from "../types.js";
|
|
2
|
+
export type OpencodeInvocation = {
|
|
3
|
+
args: string[];
|
|
4
|
+
stdin: string;
|
|
5
|
+
jsonMode: boolean;
|
|
6
|
+
sessionId: string | null;
|
|
7
|
+
};
|
|
8
|
+
export declare function opencodeInvocation(profile: OpencodeExecExecutorProfile, prompt: string, cwd: string): OpencodeInvocation;
|
|
9
|
+
//# sourceMappingURL=opencodeInvocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeInvocation.d.ts","sourceRoot":"","sources":["../../src/autoRun/opencodeInvocation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AA0CF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAexH"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { basename } from "node:path";
|
|
2
|
+
function hasOption(args, name) {
|
|
3
|
+
return args.some((arg) => arg === name || arg.startsWith(`${name}=`));
|
|
4
|
+
}
|
|
5
|
+
function optionValue(args, name) {
|
|
6
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
7
|
+
const arg = args[index];
|
|
8
|
+
if (arg === name) {
|
|
9
|
+
return args[index + 1] ?? null;
|
|
10
|
+
}
|
|
11
|
+
if (arg.startsWith(`${name}=`)) {
|
|
12
|
+
return arg.slice(name.length + 1);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
function shortOptionValue(args, name) {
|
|
18
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
19
|
+
if (args[index] === name) {
|
|
20
|
+
return args[index + 1] ?? null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
function withWorkingDirectory(args, cwd) {
|
|
26
|
+
if (hasOption(args, "--dir")) {
|
|
27
|
+
return args;
|
|
28
|
+
}
|
|
29
|
+
const next = [...args];
|
|
30
|
+
const runIndex = next.indexOf("run");
|
|
31
|
+
next.splice(runIndex + 1, 0, "--dir", cwd);
|
|
32
|
+
return next;
|
|
33
|
+
}
|
|
34
|
+
function isDirectOpencodeRun(profile) {
|
|
35
|
+
return basename(profile.command) === "opencode" && profile.args.includes("run");
|
|
36
|
+
}
|
|
37
|
+
export function opencodeInvocation(profile, prompt, cwd) {
|
|
38
|
+
if (!isDirectOpencodeRun(profile)) {
|
|
39
|
+
return { args: profile.args, stdin: prompt, jsonMode: false, sessionId: null };
|
|
40
|
+
}
|
|
41
|
+
const args = withWorkingDirectory(profile.args, cwd);
|
|
42
|
+
const sessionId = optionValue(args, "--session") ?? shortOptionValue(args, "-s");
|
|
43
|
+
const runIndex = args.indexOf("run");
|
|
44
|
+
const promptPlaceholderIndex = args.lastIndexOf("-");
|
|
45
|
+
if (promptPlaceholderIndex > runIndex) {
|
|
46
|
+
args[promptPlaceholderIndex] = prompt;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
args.push(prompt);
|
|
50
|
+
}
|
|
51
|
+
return { args, stdin: "", jsonMode: optionValue(args, "--format") === "json", sessionId };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=opencodeInvocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeInvocation.js","sourceRoot":"","sources":["../../src/autoRun/opencodeInvocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type OpencodeJsonOutput = {
|
|
2
|
+
parsedAny: boolean;
|
|
3
|
+
sessionId: string | null;
|
|
4
|
+
error: string | null;
|
|
5
|
+
text: string;
|
|
6
|
+
toolSummaries: string[];
|
|
7
|
+
};
|
|
8
|
+
export declare function extractOpencodeSessionId(output: string): string | null;
|
|
9
|
+
export declare function parseOpencodeJsonOutput(output: string): OpencodeJsonOutput;
|
|
10
|
+
export declare function opencodeReport(output: OpencodeJsonOutput, fallbackStdout: string, fallbackStderr: string, knownSessionId?: string | null): string;
|
|
11
|
+
//# sourceMappingURL=opencodeOutput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeOutput.d.ts","sourceRoot":"","sources":["../../src/autoRun/opencodeOutput.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAkFF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBtE;AAyCD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAsC1E;AAaD,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAUjJ"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
function stringValue(value) {
|
|
2
|
+
return typeof value === "string" && value.trim() ? value : null;
|
|
3
|
+
}
|
|
4
|
+
function isRecord(value) {
|
|
5
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
6
|
+
}
|
|
7
|
+
function extractSessionIdFromObject(value) {
|
|
8
|
+
if (!isRecord(value)) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return (stringValue(value.sessionID) ??
|
|
12
|
+
stringValue(value.sessionId) ??
|
|
13
|
+
stringValue(value.session_id) ??
|
|
14
|
+
stringValue(value.threadId) ??
|
|
15
|
+
stringValue(value.thread_id) ??
|
|
16
|
+
extractSessionIdFromObject(value.part));
|
|
17
|
+
}
|
|
18
|
+
const ansiEscapePattern = /\x1B\[[0-?]*[ -/]*[@-~]/g;
|
|
19
|
+
const sessionLabels = new Set(["opencodesessionid", "sessionid", "threadid"]);
|
|
20
|
+
function normalizeTerminalLine(line) {
|
|
21
|
+
return line.replace(ansiEscapePattern, "").trim();
|
|
22
|
+
}
|
|
23
|
+
function cleanSessionToken(value) {
|
|
24
|
+
const cleaned = value?.replace(/^[`'"]+|[`'",;]+$/g, "");
|
|
25
|
+
if (!cleaned || !/^[A-Za-z0-9_.:-]+$/.test(cleaned)) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return cleaned;
|
|
29
|
+
}
|
|
30
|
+
function firstSessionToken(value) {
|
|
31
|
+
for (const token of value.replaceAll("*", "").trim().split(/\s+/)) {
|
|
32
|
+
const sessionId = cleanSessionToken(token);
|
|
33
|
+
if (sessionId) {
|
|
34
|
+
return sessionId;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
function labeledSessionId(line) {
|
|
40
|
+
const colonIndex = line.indexOf(":");
|
|
41
|
+
const equalsIndex = line.indexOf("=");
|
|
42
|
+
const separatorIndex = colonIndex === -1 ? equalsIndex : equalsIndex === -1 ? colonIndex : Math.min(colonIndex, equalsIndex);
|
|
43
|
+
if (separatorIndex === -1) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const label = line
|
|
47
|
+
.slice(0, separatorIndex)
|
|
48
|
+
.replaceAll("*", "")
|
|
49
|
+
.toLowerCase()
|
|
50
|
+
.replace(/[\s_-]/g, "");
|
|
51
|
+
if (!sessionLabels.has(label)) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
return firstSessionToken(line.slice(separatorIndex + 1));
|
|
55
|
+
}
|
|
56
|
+
function commandSessionId(line) {
|
|
57
|
+
const tokens = line.split(/\s+/).filter(Boolean);
|
|
58
|
+
for (let index = 0; index < tokens.length; index += 1) {
|
|
59
|
+
if (tokens[index] !== "opencode") {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const option = tokens[index + 1];
|
|
63
|
+
if (option === "-s" || option === "--session") {
|
|
64
|
+
return cleanSessionToken(tokens[index + 2]);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
export function extractOpencodeSessionId(output) {
|
|
70
|
+
const jsonSessionId = parseOpencodeJsonOutput(output).sessionId;
|
|
71
|
+
if (jsonSessionId) {
|
|
72
|
+
return jsonSessionId;
|
|
73
|
+
}
|
|
74
|
+
for (const line of output.split(/\r?\n/)) {
|
|
75
|
+
const trimmed = normalizeTerminalLine(line);
|
|
76
|
+
if (!trimmed) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const parsed = JSON.parse(trimmed);
|
|
81
|
+
const sessionId = parsed.sessionID ?? parsed.sessionId ?? parsed.session_id ?? parsed.threadId ?? parsed.thread_id;
|
|
82
|
+
if (typeof sessionId === "string" && sessionId.trim()) {
|
|
83
|
+
return sessionId;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
const sessionId = labeledSessionId(trimmed) ?? commandSessionId(trimmed);
|
|
88
|
+
if (sessionId) {
|
|
89
|
+
return sessionId;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
function textPart(value) {
|
|
96
|
+
if (!isRecord(value)) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const part = value.part;
|
|
100
|
+
if (isRecord(part) && part.type === "text") {
|
|
101
|
+
return stringValue(part.text);
|
|
102
|
+
}
|
|
103
|
+
if (value.type === "text") {
|
|
104
|
+
return stringValue(value.text);
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
function toolSummary(value) {
|
|
109
|
+
if (!isRecord(value)) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const part = isRecord(value.part) ? value.part : value;
|
|
113
|
+
if (part.type !== "tool" && value.type !== "tool_use") {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
const tool = stringValue(part.tool) ?? "tool";
|
|
117
|
+
const title = stringValue(part.title);
|
|
118
|
+
const state = isRecord(part.state) ? part.state : {};
|
|
119
|
+
const status = stringValue(state.status);
|
|
120
|
+
const output = stringValue(state.output);
|
|
121
|
+
return [`- ${tool}`, title ? ` ${title}` : "", status ? ` (${status})` : "", output ? `: ${output}` : ""].join("");
|
|
122
|
+
}
|
|
123
|
+
function errorMessage(value) {
|
|
124
|
+
if (!isRecord(value) || value.type !== "error") {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
const error = isRecord(value.error) ? value.error : {};
|
|
128
|
+
const data = isRecord(error.data) ? error.data : {};
|
|
129
|
+
return stringValue(data.message) ?? stringValue(error.message) ?? stringValue(error.name) ?? "OpenCode returned an error event.";
|
|
130
|
+
}
|
|
131
|
+
export function parseOpencodeJsonOutput(output) {
|
|
132
|
+
const textParts = [];
|
|
133
|
+
const toolSummaries = [];
|
|
134
|
+
let parsedAny = false;
|
|
135
|
+
let sessionId = null;
|
|
136
|
+
let error = null;
|
|
137
|
+
for (const line of output.split(/\r?\n/)) {
|
|
138
|
+
const trimmed = line.trim();
|
|
139
|
+
if (!trimmed) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
let parsed;
|
|
143
|
+
try {
|
|
144
|
+
parsed = JSON.parse(trimmed);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
parsedAny = true;
|
|
150
|
+
sessionId = sessionId ?? extractSessionIdFromObject(parsed);
|
|
151
|
+
error = error ?? errorMessage(parsed);
|
|
152
|
+
const text = textPart(parsed);
|
|
153
|
+
if (text) {
|
|
154
|
+
textParts.push(text);
|
|
155
|
+
}
|
|
156
|
+
const summary = toolSummary(parsed);
|
|
157
|
+
if (summary) {
|
|
158
|
+
toolSummaries.push(summary);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
parsedAny,
|
|
163
|
+
sessionId,
|
|
164
|
+
error,
|
|
165
|
+
text: textParts.join("\n\n").trim(),
|
|
166
|
+
toolSummaries
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const sessionListHint = "OpenCode session id was not found in this run output. Run `opencode session list` in the execution directory to find the latest OpenCode session.";
|
|
170
|
+
function withSessionListHint(report, output, fallbackStdout, fallbackStderr, knownSessionId) {
|
|
171
|
+
const sessionId = knownSessionId ?? output.sessionId ?? extractOpencodeSessionId(`${fallbackStdout}\n${fallbackStderr}`);
|
|
172
|
+
if (sessionId || !report.trim()) {
|
|
173
|
+
return report;
|
|
174
|
+
}
|
|
175
|
+
return `${report.trim()}\n\n---\n${sessionListHint}`;
|
|
176
|
+
}
|
|
177
|
+
export function opencodeReport(output, fallbackStdout, fallbackStderr, knownSessionId) {
|
|
178
|
+
let report;
|
|
179
|
+
if (output.text) {
|
|
180
|
+
report = output.text;
|
|
181
|
+
}
|
|
182
|
+
else if (output.toolSummaries.length > 0) {
|
|
183
|
+
report = ["## OpenCode Tool Summary", "", ...output.toolSummaries].join("\n");
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
report = fallbackStdout.trim() || fallbackStderr.trim();
|
|
187
|
+
}
|
|
188
|
+
return withSessionListHint(report, output, fallbackStdout, fallbackStderr, knownSessionId);
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=opencodeOutput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeOutput.js","sourceRoot":"","sources":["../../src/autoRun/opencodeOutput.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type ReviewResultContractInput = {
|
|
2
|
+
resultPath: string;
|
|
3
|
+
reviewBlockRef: string;
|
|
4
|
+
taskId: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function reviewResultEnvironment(input: ReviewResultContractInput): NodeJS.ProcessEnv;
|
|
7
|
+
export declare function appendReviewResultFileInstruction(prompt: string, input: ReviewResultContractInput): string;
|
|
8
|
+
//# sourceMappingURL=reviewResultContract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewResultContract.d.ts","sourceRoot":"","sources":["../../src/autoRun/reviewResultContract.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,yBAAyB,GAAG,MAAM,CAAC,UAAU,CAM3F;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,MAAM,CAyB1G"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function reviewResultEnvironment(input) {
|
|
2
|
+
return {
|
|
3
|
+
PLANWEAVE_REVIEW_RESULT_PATH: input.resultPath,
|
|
4
|
+
PLANWEAVE_REVIEW_BLOCK_REF: input.reviewBlockRef,
|
|
5
|
+
PLANWEAVE_TASK_ID: input.taskId
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export function appendReviewResultFileInstruction(prompt, input) {
|
|
9
|
+
return [
|
|
10
|
+
prompt.trimEnd(),
|
|
11
|
+
"",
|
|
12
|
+
"## Auto Run Review Result File",
|
|
13
|
+
"",
|
|
14
|
+
`Write the required review result JSON to this exact file path: \`${input.resultPath}\`.`,
|
|
15
|
+
"",
|
|
16
|
+
"The file content must be one JSON object with this shape:",
|
|
17
|
+
"",
|
|
18
|
+
"```json",
|
|
19
|
+
JSON.stringify({
|
|
20
|
+
reviewBlockRef: input.reviewBlockRef,
|
|
21
|
+
taskId: input.taskId,
|
|
22
|
+
verdict: "passed | needs_changes",
|
|
23
|
+
content: "review summary and requested changes"
|
|
24
|
+
}, null, 2),
|
|
25
|
+
"```",
|
|
26
|
+
"",
|
|
27
|
+
"You may print a human-readable review report to stdout. PlanWeave will parse only the JSON file above, not stdout."
|
|
28
|
+
].join("\n");
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=reviewResultContract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewResultContract.js","sourceRoot":"","sources":["../../src/autoRun/reviewResultContract.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,uBAAuB,CAAC,KAAgC;IACtE,OAAO;QACL,4BAA4B,EAAE,KAAK,CAAC,UAAU;QAC9C,0BAA0B,EAAE,KAAK,CAAC,cAAc;QAChD,iBAAiB,EAAE,KAAK,CAAC,MAAM;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,MAAc,EAAE,KAAgC;IAChG,OAAO;QACL,MAAM,CAAC,OAAO,EAAE;QAChB,EAAE;QACF,gCAAgC;QAChC,EAAE;QACF,oEAAoE,KAAK,CAAC,UAAU,KAAK;QACzF,EAAE;QACF,2DAA2D;QAC3D,EAAE;QACF,SAAS;QACT,IAAI,CAAC,SAAS,CACZ;YACE,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE,sCAAsC;SAChD,EACD,IAAI,EACJ,CAAC,CACF;QACD,KAAK;QACL,EAAE;QACF,oHAAoH;KACrH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TmuxSessionInfo } from "./tmuxExecutor.js";
|
|
2
|
+
export type StreamedCommandResult = {
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
exitCode: number;
|
|
6
|
+
timedOut: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function runStreamingCommandWithSessionCapture(options: {
|
|
9
|
+
command: string;
|
|
10
|
+
args: string[];
|
|
11
|
+
cwd: string;
|
|
12
|
+
stdin: string;
|
|
13
|
+
env?: NodeJS.ProcessEnv;
|
|
14
|
+
timeoutMs?: number;
|
|
15
|
+
stdoutPath: string;
|
|
16
|
+
stderrPath: string;
|
|
17
|
+
tmux?: TmuxSessionInfo | null;
|
|
18
|
+
sessionIdFromOutput: (output: string) => string | null;
|
|
19
|
+
onSessionId: (sessionId: string) => Promise<void>;
|
|
20
|
+
}): Promise<StreamedCommandResult>;
|
|
21
|
+
//# sourceMappingURL=streamingExecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamingExecutor.d.ts","sourceRoot":"","sources":["../../src/autoRun/streamingExecutor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAgBF,wBAAsB,qCAAqC,CAAC,OAAO,EAAE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACvD,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA8BjC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { execWithStreaming } from "./executorShared.js";
|
|
3
|
+
function appendScanBuffer(previous, chunk) {
|
|
4
|
+
return `${previous}${chunk}`.slice(-8192);
|
|
5
|
+
}
|
|
6
|
+
async function readStreamedCommandResult(result) {
|
|
7
|
+
const [stdout, stderr] = await Promise.all([readFile(result.stdoutPath, "utf8"), readFile(result.stderrPath, "utf8")]);
|
|
8
|
+
return { stdout, stderr, exitCode: result.exitCode, timedOut: result.timedOut };
|
|
9
|
+
}
|
|
10
|
+
export async function runStreamingCommandWithSessionCapture(options) {
|
|
11
|
+
let scanBuffer = "";
|
|
12
|
+
let capturedSessionId = null;
|
|
13
|
+
const captureSessionId = async (chunk) => {
|
|
14
|
+
if (capturedSessionId) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
scanBuffer = appendScanBuffer(scanBuffer, chunk);
|
|
18
|
+
const sessionId = options.sessionIdFromOutput(scanBuffer);
|
|
19
|
+
if (!sessionId) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
capturedSessionId = sessionId;
|
|
23
|
+
await options.onSessionId(sessionId);
|
|
24
|
+
};
|
|
25
|
+
const result = await execWithStreaming({
|
|
26
|
+
command: options.command,
|
|
27
|
+
args: options.args,
|
|
28
|
+
cwd: options.cwd,
|
|
29
|
+
stdin: options.stdin,
|
|
30
|
+
env: options.env,
|
|
31
|
+
stdoutPath: options.stdoutPath,
|
|
32
|
+
stderrPath: options.stderrPath,
|
|
33
|
+
timeoutMs: options.timeoutMs,
|
|
34
|
+
tmux: options.tmux,
|
|
35
|
+
onStdout: captureSessionId,
|
|
36
|
+
onStderr: captureSessionId
|
|
37
|
+
});
|
|
38
|
+
return readStreamedCommandResult(result);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=streamingExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamingExecutor.js","sourceRoot":"","sources":["../../src/autoRun/streamingExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAUxD,SAAS,gBAAgB,CAAC,QAAgB,EAAE,KAAa;IACvD,OAAO,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,MAKxC;IACC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACvH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAAC,OAY3D;IACC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;QAC9D,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,UAAU,GAAG,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,iBAAiB,GAAG,SAAS,CAAC;QAC9B,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;KAC3B,CAAC,CAAC;IACH,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC"}
|