@adhdev/daemon-standalone 0.9.82-rc.82 → 0.9.82-rc.83
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/dist/index.js
CHANGED
|
@@ -22146,6 +22146,7 @@ var require_dist2 = __commonJS({
|
|
|
22146
22146
|
requirePreTaskCheckpoint: false,
|
|
22147
22147
|
requirePostTaskCheckpoint: true,
|
|
22148
22148
|
requireApprovalForPush: true,
|
|
22149
|
+
allowAutoPublishSubmoduleMainCommits: false,
|
|
22149
22150
|
requireApprovalForDestructiveGit: true,
|
|
22150
22151
|
dirtyWorkspaceBehavior: "warn",
|
|
22151
22152
|
maxParallelTasks: 2,
|
|
@@ -22908,6 +22909,7 @@ ${error48.message || ""}`;
|
|
|
22908
22909
|
}
|
|
22909
22910
|
const maxParallelTasks = Number(policy.maxParallelTasks);
|
|
22910
22911
|
policy.maxParallelTasks = Number.isFinite(maxParallelTasks) ? Math.max(1, Math.min(8, Math.floor(maxParallelTasks))) : 2;
|
|
22912
|
+
policy.allowAutoPublishSubmoduleMainCommits = policy.allowAutoPublishSubmoduleMainCommits === true;
|
|
22911
22913
|
if (!SESSION_CLEANUP_MODES.has(String(policy.sessionCleanupOnNodeRemove))) {
|
|
22912
22914
|
policy.sessionCleanupOnNodeRemove = "preserve";
|
|
22913
22915
|
}
|
|
@@ -23299,6 +23301,9 @@ ${userInstruction}`);
|
|
|
23299
23301
|
if (policy.requirePreTaskCheckpoint) rules.push("- Create a git checkpoint **before** starting each task");
|
|
23300
23302
|
if (policy.requirePostTaskCheckpoint) rules.push("- Create a git checkpoint **after** each task completes");
|
|
23301
23303
|
if (policy.requireApprovalForPush) rules.push("- **Ask for user approval** before pushing to remote");
|
|
23304
|
+
if (policy.allowAutoPublishSubmoduleMainCommits) {
|
|
23305
|
+
rules.push("- Refinery may auto-publish unreachable submodule gitlink commits to submodule origin/main with non-force pushes after validation and patch-equivalence pass");
|
|
23306
|
+
}
|
|
23302
23307
|
if (policy.requireApprovalForDestructiveGit) rules.push("- **Ask for user approval** before destructive git operations (force push, reset, etc.)");
|
|
23303
23308
|
const dirtyBehavior = {
|
|
23304
23309
|
block: "- **Do not** send tasks to nodes with dirty workspaces",
|
|
@@ -23330,7 +23335,7 @@ ${rules.join("\n")}`;
|
|
|
23330
23335
|
- **Clean up worktree nodes.** After a worktree task completes and its changes are merged or checkpointed, call \`mesh_remove_node\` to free resources.
|
|
23331
23336
|
- **Do not strand completed branches.** A checkpointed or clean feature/worktree branch is not done by itself. Merge/refine it to the mesh default branch, fast-forward obvious clean behind-only branches with \`mesh_fast_forward_node\`, or explicitly report one of \`pushed_feature_branch_needs_merge\`, \`blocked_review\`, \`cleanup_candidate\`, or \`not_mergeable\` with the next action.
|
|
23332
23337
|
- **Keep Refinery validation project-configurable.** \`mesh_refine_node\` must execute validation from repo mesh/refine config (for example \`.adhdev/refine.{json,yaml,yml}\`, \`.adhdev/repo-mesh-refine.*\`, or \`repo-mesh.refine.*\`). Heuristics are suggestions/scaffolding only, not the execution path.
|
|
23333
|
-
- **Treat submodule main reachability as publish-needed.** A \`submodule_reachability_failed\` refine result means the root gitlink points at a submodule commit that is not reachable from the configured submodule remote main branch. Do not treat feature-branch reachability as complete, retry validation blindly, or start code review first. Classify it as \`blocked_review\`, request user approval to push/publish the submodule commit to submodule main, then rerun \`mesh_refine_node
|
|
23338
|
+
- **Treat submodule main reachability as publish-needed.** A \`submodule_reachability_failed\` refine result means the root gitlink points at a submodule commit that is not reachable from the configured submodule remote main branch. Do not treat feature-branch reachability as complete, retry validation blindly, or start code review first. Classify it as \`blocked_review\`, request user approval to push/publish the submodule commit to submodule main, then rerun \`mesh_refine_node\`, unless the mesh or repo refine config explicitly enabled \`allowAutoPublishSubmoduleMainCommits\` and Refinery reports exact path/commit/remote/branch evidence with post-publish verification.
|
|
23334
23339
|
- **Name worktree branches meaningfully.** Use descriptive names like \`feat/auth-refactor\` or \`fix/build-123\`.${coordinatorNote}`;
|
|
23335
23340
|
}
|
|
23336
23341
|
var TOOLS_SECTION;
|
|
@@ -23379,7 +23384,7 @@ Before doing any coordinator work, confirm that the actual callable tool list in
|
|
|
23379
23384
|
4. **Monitor** \u2014 Prefer event-driven completion/status notifications. Do **not** poll \`mesh_read_chat\` repeatedly. Use \`mesh_view_queue\` to see the status of all pending, assigned, completed, and failed tasks. Do not call \`mesh_read_chat\` again within a few seconds for the same generating session. Use at most one compact \`mesh_read_chat\` check after a completion/approval signal. Handle approvals via \`mesh_approve\`.
|
|
23380
23385
|
5. **Verify** \u2014 When a task reports completion or git work is visible, call \`mesh_git_status\` to verify changes were made.
|
|
23381
23386
|
6. **Checkpoint** \u2014 Call \`mesh_checkpoint\` to save the work.
|
|
23382
|
-
7. **Converge branches** \u2014 Before marking any task complete, classify every touched node/branch into exactly one final state: \`merged_to_main\`, \`pushed_feature_branch_needs_merge\`, \`blocked_review\`, \`cleanup_candidate\`, or \`not_mergeable\`. Use \`mesh_status\` branchConvergenceSummary. For obvious clean branch catch-up (ahead 0, behind > 0, upstream fresh, no dirty/stash/submodule issues), use \`mesh_fast_forward_node\` dry-run first and execute only when explicitly safe/approved; this avoids consuming an agent session. Use \`mesh_refine_node\` for clean worktree branches when safe. Before/refine merging root commits that contain submodule gitlink changes, require each submodule commit to be reachable from the configured submodule remote main branch, not merely present on a feature ref or local checkout. If \`mesh_refine_node\` returns \`submodule_reachability_failed\` or publish-required evidence, keep the public convergence bucket as \`blocked_review
|
|
23387
|
+
7. **Converge branches** \u2014 Before marking any task complete, classify every touched node/branch into exactly one final state: \`merged_to_main\`, \`pushed_feature_branch_needs_merge\`, \`blocked_review\`, \`cleanup_candidate\`, or \`not_mergeable\`. Use \`mesh_status\` branchConvergenceSummary. For obvious clean branch catch-up (ahead 0, behind > 0, upstream fresh, no dirty/stash/submodule issues), use \`mesh_fast_forward_node\` dry-run first and execute only when explicitly safe/approved; this avoids consuming an agent session. Use \`mesh_refine_node\` for clean worktree branches when safe. Before/refine merging root commits that contain submodule gitlink changes, require each submodule commit to be reachable from the configured submodule remote main branch, not merely present on a feature ref or local checkout. If \`mesh_refine_node\` returns \`submodule_reachability_failed\` or publish-required evidence, keep the public convergence bucket as \`blocked_review\`; unless \`allowAutoPublishSubmoduleMainCommits\` is explicitly enabled and Refinery reports successful non-force publish plus post-publish verification, ask the user for explicit approval to push/publish the unreachable submodule commit(s) to submodule main, then rerun \`mesh_refine_node\`. Do not merge the root branch until the submodule commit(s) are reachable from submodule origin/main. A task that remains on a non-main branch is not fully complete unless the final report names the follow-up state and next step.
|
|
23383
23388
|
8. **Clean up** \u2014 Remove worktree nodes via \`mesh_remove_node\` after their work is merged or no longer needed.
|
|
23384
23389
|
9. **Report** \u2014 Summarize what was done, what changed, any issues, and the branch convergence state.
|
|
23385
23390
|
|
|
@@ -25356,7 +25361,8 @@ Next step: ${nextStep}`;
|
|
|
25356
25361
|
const providerSessionId = readNonEmptyString2(args.metadataEvent.providerSessionId) || void 0;
|
|
25357
25362
|
const finalSummary = readNonEmptyString2(args.metadataEvent.finalSummary) || void 0;
|
|
25358
25363
|
const workerResult = readWorkerResultMetadata(args.metadataEvent);
|
|
25359
|
-
const
|
|
25364
|
+
const hasCompletionEvidence = !!finalSummary || !!workerResult;
|
|
25365
|
+
const completedTask = sessionId && hasCompletionEvidence ? updateSessionTaskStatus(args.meshId, sessionId, "completed") : null;
|
|
25360
25366
|
if (completedTask) {
|
|
25361
25367
|
completedTaskForLedger = { id: completedTask.id };
|
|
25362
25368
|
try {
|
|
@@ -30802,6 +30808,11 @@ ${lastSnapshot}`;
|
|
|
30802
30808
|
required: ["version"],
|
|
30803
30809
|
properties: {
|
|
30804
30810
|
version: { const: 1 },
|
|
30811
|
+
allowAutoPublishSubmoduleMainCommits: {
|
|
30812
|
+
type: "boolean",
|
|
30813
|
+
default: false,
|
|
30814
|
+
description: "When true, Refinery may non-force publish submodule gitlink commits referenced by the refined root tree to each submodule origin/main after validation and patch-equivalence pass, then verify reachability."
|
|
30815
|
+
},
|
|
30805
30816
|
validation: {
|
|
30806
30817
|
type: "object",
|
|
30807
30818
|
additionalProperties: false,
|
|
@@ -30894,6 +30905,9 @@ ${lastSnapshot}`;
|
|
|
30894
30905
|
const rejectedCommands = [];
|
|
30895
30906
|
if (!isRecord(config2)) return { valid: false, errors: ["config must be an object"], commands, rejectedCommands };
|
|
30896
30907
|
if (config2.version !== 1) errors.push("version must be 1");
|
|
30908
|
+
if (config2.allowAutoPublishSubmoduleMainCommits !== void 0 && typeof config2.allowAutoPublishSubmoduleMainCommits !== "boolean") {
|
|
30909
|
+
errors.push("allowAutoPublishSubmoduleMainCommits must be a boolean when provided");
|
|
30910
|
+
}
|
|
30897
30911
|
const validation = config2.validation;
|
|
30898
30912
|
if (validation !== void 0 && !isRecord(validation)) errors.push("validation must be an object");
|
|
30899
30913
|
const rawCommands = isRecord(validation) ? validation.commands : void 0;
|
|
@@ -38761,7 +38775,7 @@ ${effect.notification.body || ""}`.trim();
|
|
|
38761
38775
|
returnedMessages,
|
|
38762
38776
|
ptyStatusApprovalOnly: false
|
|
38763
38777
|
});
|
|
38764
|
-
if (supportsCliNativeTranscript(providerType)) {
|
|
38778
|
+
if (supportsCliNativeTranscript(providerType) && provider?.canonicalHistory?.mode === "native-source") {
|
|
38765
38779
|
const agentStr = provider?.type || args?.agentType || getCurrentProviderType(h, adapter.cliType);
|
|
38766
38780
|
const workspace = typeof args?.workspace === "string" ? args.workspace : typeof h.currentSession?.workspace === "string" ? h.currentSession.workspace : typeof adapter.workingDir === "string" ? adapter.workingDir : void 0;
|
|
38767
38781
|
const nativeHistoryLimit = Math.max(
|
|
@@ -38920,6 +38934,17 @@ ${effect.notification.body || ""}`.trim();
|
|
|
38920
38934
|
freshEnough: true,
|
|
38921
38935
|
ptyStatusApprovalOnly: false
|
|
38922
38936
|
});
|
|
38937
|
+
const requiresNativeSource = supportsCliNativeTranscript(agentStr) && provider?.canonicalHistory?.mode === "native-source";
|
|
38938
|
+
if (requiresNativeSource && !nativeSelected) {
|
|
38939
|
+
return {
|
|
38940
|
+
success: false,
|
|
38941
|
+
code: "native_history_not_safely_available",
|
|
38942
|
+
error: "Provider-native history was not safely available for the requested CLI session.",
|
|
38943
|
+
providerSessionId: historyProviderSessionId,
|
|
38944
|
+
messageSource,
|
|
38945
|
+
transcriptProvenance: messageSource
|
|
38946
|
+
};
|
|
38947
|
+
}
|
|
38923
38948
|
return buildReadChatCommandResult({
|
|
38924
38949
|
messages: historyMessages,
|
|
38925
38950
|
status: "idle",
|
|
@@ -43788,6 +43813,14 @@ ${rawInput}` : rawInput;
|
|
|
43788
43813
|
function countMessages(value) {
|
|
43789
43814
|
return Array.isArray(value) ? value.length : 0;
|
|
43790
43815
|
}
|
|
43816
|
+
function hasFinalAssistantMessage(value) {
|
|
43817
|
+
const messages = Array.isArray(value) ? value : [];
|
|
43818
|
+
const last = messages[messages.length - 1];
|
|
43819
|
+
if (!last || last.role !== "assistant") return false;
|
|
43820
|
+
if (last.bubbleState === "streaming") return false;
|
|
43821
|
+
if (last.meta?.streaming === true) return false;
|
|
43822
|
+
return typeof last.content === "string" && last.content.trim().length > 0;
|
|
43823
|
+
}
|
|
43791
43824
|
function hasZeroMessageStartingLaunch(adapter) {
|
|
43792
43825
|
const adapterStatus = adapter?.getStatus?.({ allowParse: false }) ?? adapter?.getStatus?.() ?? {};
|
|
43793
43826
|
const parsedStatus = typeof adapter?.getScriptParsedStatus === "function" ? adapter.getScriptParsedStatus() : {};
|
|
@@ -43799,6 +43832,17 @@ ${rawInput}` : rawInput;
|
|
|
43799
43832
|
if (countMessages(adapterStatus?.messages) > 0 || countMessages(parsedStatus?.messages) > 0) return false;
|
|
43800
43833
|
return !hasAdapterPendingResponse(adapter);
|
|
43801
43834
|
}
|
|
43835
|
+
function hasCompletedStartingLaunch(adapter) {
|
|
43836
|
+
const adapterStatus = adapter?.getStatus?.({ allowParse: false }) ?? adapter?.getStatus?.() ?? {};
|
|
43837
|
+
const adapterRawStatus = normalizeAgentStatus(adapterStatus?.status);
|
|
43838
|
+
if (adapterRawStatus !== "starting") return false;
|
|
43839
|
+
if (hasAdapterPendingResponse(adapter)) return false;
|
|
43840
|
+
const parsedStatus = typeof adapter?.getScriptParsedStatus === "function" ? adapter.getScriptParsedStatus() : {};
|
|
43841
|
+
const parsedRawStatus = normalizeAgentStatus(parsedStatus?.status);
|
|
43842
|
+
if (parsedRawStatus !== "idle") return false;
|
|
43843
|
+
if (hasNonEmptyModalButtons2(adapterStatus?.activeModal ?? adapterStatus?.modal ?? parsedStatus?.activeModal ?? parsedStatus?.modal)) return false;
|
|
43844
|
+
return hasFinalAssistantMessage(parsedStatus?.messages);
|
|
43845
|
+
}
|
|
43802
43846
|
function shouldSuppressStaleParsedBusyStatus(adapterStatus, parsedStatus, adapter) {
|
|
43803
43847
|
const parsedRawStatus = normalizeAgentStatus(parsedStatus?.status);
|
|
43804
43848
|
if (!BUSY_AGENT_STATUSES.has(parsedRawStatus)) return false;
|
|
@@ -43808,6 +43852,7 @@ ${rawInput}` : rawInput;
|
|
|
43808
43852
|
}
|
|
43809
43853
|
function getEffectiveAgentSendStatus(adapter) {
|
|
43810
43854
|
const adapterStatus = normalizeAgentStatus(adapter?.getStatus?.({ allowParse: false })?.status ?? adapter?.getStatus?.()?.status);
|
|
43855
|
+
if (adapterStatus === "starting" && hasCompletedStartingLaunch(adapter)) return "idle";
|
|
43811
43856
|
if (adapterStatus && adapterStatus !== "idle") return adapterStatus;
|
|
43812
43857
|
if (adapterStatus !== "idle") return adapterStatus;
|
|
43813
43858
|
if (typeof adapter?.getScriptParsedStatus !== "function") return adapterStatus;
|
|
@@ -48758,6 +48803,16 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
48758
48803
|
const refs = entries.map((entry) => `${entry.path}@${entry.commit}`).join(", ");
|
|
48759
48804
|
return `Ask the user for explicit approval to push/publish the unreachable submodule commit(s) (${refs}) to the configured submodule remote main branch, then rerun mesh_refine_node. Do not merge the root branch until every submodule gitlink commit is reachable from submodule origin/main.`;
|
|
48760
48805
|
}
|
|
48806
|
+
function resolveRefineryAutoPublishSubmoduleMainCommits(mesh, workspace) {
|
|
48807
|
+
if (mesh?.policy?.allowAutoPublishSubmoduleMainCommits === true) {
|
|
48808
|
+
return { enabled: true, source: "mesh.policy.allowAutoPublishSubmoduleMainCommits" };
|
|
48809
|
+
}
|
|
48810
|
+
const loaded = loadMeshRefineConfig(mesh, workspace);
|
|
48811
|
+
if (loaded.config?.allowAutoPublishSubmoduleMainCommits === true) {
|
|
48812
|
+
return { enabled: true, source: loaded.path || loaded.source };
|
|
48813
|
+
}
|
|
48814
|
+
return { enabled: false };
|
|
48815
|
+
}
|
|
48761
48816
|
async function computeGitPatchId(cwd, fromRef, toRef) {
|
|
48762
48817
|
const { execFileSync: execFileSync3 } = await import("child_process");
|
|
48763
48818
|
const diff = execFileSync3("git", ["diff", "--patch", "--full-index", fromRef, toRef], {
|
|
@@ -48826,7 +48881,7 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
48826
48881
|
};
|
|
48827
48882
|
}
|
|
48828
48883
|
}
|
|
48829
|
-
async function runMeshRefineSubmoduleReachabilityGate(repoRoot, mergedTree) {
|
|
48884
|
+
async function runMeshRefineSubmoduleReachabilityGate(repoRoot, mergedTree, options = {}) {
|
|
48830
48885
|
const startedAt = Date.now();
|
|
48831
48886
|
const entries = [];
|
|
48832
48887
|
try {
|
|
@@ -48847,6 +48902,17 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
48847
48902
|
await runGit2(submodulePath, ["-c", "protocol.file.allow=always", "fetch", "origin", `refs/heads/${branch}:refs/remotes/origin/${branch}`]);
|
|
48848
48903
|
await runGit2(submodulePath, ["merge-base", "--is-ancestor", commit, `refs/remotes/origin/${branch}`]);
|
|
48849
48904
|
};
|
|
48905
|
+
const publishCommitToRemoteMain = async (submodulePath, commit, branch = "main") => {
|
|
48906
|
+
const refspec = `${commit}:refs/heads/${branch}`;
|
|
48907
|
+
const { stdout, stderr } = await execFileAsync3("git", ["push", "origin", refspec], {
|
|
48908
|
+
cwd: submodulePath,
|
|
48909
|
+
encoding: "utf8",
|
|
48910
|
+
timeout: 3e4,
|
|
48911
|
+
maxBuffer: REFINE_PATCH_EQUIVALENCE_OUTPUT_LIMIT_BYTES,
|
|
48912
|
+
windowsHide: true
|
|
48913
|
+
});
|
|
48914
|
+
return { stdout: String(stdout || ""), stderr: String(stderr || ""), refspec };
|
|
48915
|
+
};
|
|
48850
48916
|
const treeOutput = await runGit2(repoRoot, ["ls-tree", "-r", "-z", mergedTree]);
|
|
48851
48917
|
const gitlinks = treeOutput.split("\0").filter(Boolean).map((record2) => {
|
|
48852
48918
|
const match = /^160000\s+commit\s+([0-9a-f]{40})\t(.+)$/.exec(record2);
|
|
@@ -48887,11 +48953,43 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
48887
48953
|
continue;
|
|
48888
48954
|
}
|
|
48889
48955
|
entry.remoteMainBranch = "main";
|
|
48890
|
-
|
|
48891
|
-
|
|
48892
|
-
|
|
48893
|
-
|
|
48894
|
-
|
|
48956
|
+
try {
|
|
48957
|
+
await verifyRemoteMainContainsCommit(submodulePath, gitlink.commit, "main");
|
|
48958
|
+
entry.fetchedFromOrigin = true;
|
|
48959
|
+
entry.remoteReachable = true;
|
|
48960
|
+
entry.remoteMainReachable = true;
|
|
48961
|
+
entry.reachable = true;
|
|
48962
|
+
} catch (e) {
|
|
48963
|
+
entry.remoteReachable = false;
|
|
48964
|
+
entry.remoteMainReachable = false;
|
|
48965
|
+
entry.publishRequired = true;
|
|
48966
|
+
const details = truncateValidationOutput(e?.stderr || e?.message || String(e));
|
|
48967
|
+
entry.error = `Submodule remote main reachability check failed for origin/main: ${details}`;
|
|
48968
|
+
if (options.allowAutoPublishSubmoduleMainCommits === true && entry.localReachable === true) {
|
|
48969
|
+
entry.autoPublishAllowed = true;
|
|
48970
|
+
entry.autoPublishAttempted = true;
|
|
48971
|
+
try {
|
|
48972
|
+
const publish = await publishCommitToRemoteMain(submodulePath, gitlink.commit, "main");
|
|
48973
|
+
entry.autoPublishRefspec = publish.refspec;
|
|
48974
|
+
entry.publishStdout = truncateValidationOutput(publish.stdout);
|
|
48975
|
+
entry.publishStderr = truncateValidationOutput(publish.stderr);
|
|
48976
|
+
entry.autoPublishSucceeded = true;
|
|
48977
|
+
await verifyRemoteMainContainsCommit(submodulePath, gitlink.commit, "main");
|
|
48978
|
+
entry.fetchedFromOrigin = true;
|
|
48979
|
+
entry.remoteReachable = true;
|
|
48980
|
+
entry.remoteMainReachable = true;
|
|
48981
|
+
entry.autoPublishVerified = true;
|
|
48982
|
+
entry.publishRequired = false;
|
|
48983
|
+
entry.reachable = true;
|
|
48984
|
+
entry.error = void 0;
|
|
48985
|
+
} catch (publishError) {
|
|
48986
|
+
entry.autoPublishSucceeded = false;
|
|
48987
|
+
entry.autoPublishVerified = false;
|
|
48988
|
+
const publishDetails = truncateValidationOutput(publishError?.stderr || publishError?.message || String(publishError));
|
|
48989
|
+
entry.error = `Submodule auto-publish to origin/main failed or could not be verified: ${publishDetails}`;
|
|
48990
|
+
}
|
|
48991
|
+
}
|
|
48992
|
+
}
|
|
48895
48993
|
} catch (e) {
|
|
48896
48994
|
entry.remoteReachable = false;
|
|
48897
48995
|
entry.remoteMainReachable = false;
|
|
@@ -48911,7 +49009,9 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
48911
49009
|
checked: entries.length,
|
|
48912
49010
|
unreachable: unreachable.map((entry) => ({ ...entry, publishRequired: entry.publishRequired !== false })),
|
|
48913
49011
|
entries: entries.map((entry) => entry.reachable ? entry : { ...entry, publishRequired: entry.publishRequired !== false }),
|
|
48914
|
-
durationMs: Date.now() - startedAt
|
|
49012
|
+
durationMs: Date.now() - startedAt,
|
|
49013
|
+
autoPublishAllowed: options.allowAutoPublishSubmoduleMainCommits === true,
|
|
49014
|
+
autoPublishPolicySource: options.autoPublishPolicySource
|
|
48915
49015
|
};
|
|
48916
49016
|
} catch (e) {
|
|
48917
49017
|
const unreachable = entries.filter((entry) => !entry.reachable).map((entry) => ({ ...entry, publishRequired: true }));
|
|
@@ -48921,6 +49021,8 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
48921
49021
|
unreachable,
|
|
48922
49022
|
entries: entries.map((entry) => entry.reachable ? entry : { ...entry, publishRequired: true }),
|
|
48923
49023
|
durationMs: Date.now() - startedAt,
|
|
49024
|
+
autoPublishAllowed: options.allowAutoPublishSubmoduleMainCommits === true,
|
|
49025
|
+
autoPublishPolicySource: options.autoPublishPolicySource,
|
|
48924
49026
|
error: truncateValidationOutput(e?.message || String(e))
|
|
48925
49027
|
};
|
|
48926
49028
|
}
|
|
@@ -50059,13 +50161,36 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
50059
50161
|
};
|
|
50060
50162
|
}
|
|
50061
50163
|
const submoduleReachabilityStarted = Date.now();
|
|
50062
|
-
const
|
|
50164
|
+
const autoPublishSubmoduleMainCommits = resolveRefineryAutoPublishSubmoduleMainCommits(mesh, node.workspace);
|
|
50165
|
+
const submoduleReachability = await runMeshRefineSubmoduleReachabilityGate(repoRoot, patchEquivalence.mergedTree || branchHead, {
|
|
50166
|
+
allowAutoPublishSubmoduleMainCommits: autoPublishSubmoduleMainCommits.enabled,
|
|
50167
|
+
autoPublishPolicySource: autoPublishSubmoduleMainCommits.source
|
|
50168
|
+
});
|
|
50063
50169
|
recordMeshRefineStage(refineStages, "submodule_reachability", submoduleReachability.status, submoduleReachabilityStarted, {
|
|
50064
50170
|
checked: submoduleReachability.checked,
|
|
50171
|
+
autoPublishAllowed: submoduleReachability.autoPublishAllowed,
|
|
50172
|
+
autoPublishPolicySource: submoduleReachability.autoPublishPolicySource,
|
|
50173
|
+
autoPublished: submoduleReachability.entries.filter((entry) => entry.autoPublishAttempted).map((entry) => ({
|
|
50174
|
+
path: entry.path,
|
|
50175
|
+
commit: entry.commit,
|
|
50176
|
+
remote: entry.remote,
|
|
50177
|
+
remoteUrl: entry.remoteUrl,
|
|
50178
|
+
remoteMainBranch: entry.remoteMainBranch,
|
|
50179
|
+
refspec: entry.autoPublishRefspec,
|
|
50180
|
+
succeeded: entry.autoPublishSucceeded,
|
|
50181
|
+
verified: entry.autoPublishVerified,
|
|
50182
|
+
remoteMainReachable: entry.remoteMainReachable,
|
|
50183
|
+
error: entry.error
|
|
50184
|
+
})),
|
|
50065
50185
|
unreachable: submoduleReachability.unreachable.map((entry) => ({
|
|
50066
50186
|
path: entry.path,
|
|
50067
50187
|
commit: entry.commit,
|
|
50068
50188
|
publishRequired: entry.publishRequired === true,
|
|
50189
|
+
autoPublishAllowed: entry.autoPublishAllowed,
|
|
50190
|
+
autoPublishAttempted: entry.autoPublishAttempted,
|
|
50191
|
+
autoPublishSucceeded: entry.autoPublishSucceeded,
|
|
50192
|
+
autoPublishVerified: entry.autoPublishVerified,
|
|
50193
|
+
autoPublishRefspec: entry.autoPublishRefspec,
|
|
50069
50194
|
remote: entry.remote,
|
|
50070
50195
|
remoteUrl: entry.remoteUrl,
|
|
50071
50196
|
remoteReachable: entry.remoteReachable,
|
|
@@ -50099,6 +50224,11 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
50099
50224
|
remoteReachable: entry.remoteReachable,
|
|
50100
50225
|
remoteMainBranch: entry.remoteMainBranch,
|
|
50101
50226
|
remoteMainReachable: entry.remoteMainReachable,
|
|
50227
|
+
autoPublishAllowed: entry.autoPublishAllowed,
|
|
50228
|
+
autoPublishAttempted: entry.autoPublishAttempted,
|
|
50229
|
+
autoPublishSucceeded: entry.autoPublishSucceeded,
|
|
50230
|
+
autoPublishVerified: entry.autoPublishVerified,
|
|
50231
|
+
autoPublishRefspec: entry.autoPublishRefspec,
|
|
50102
50232
|
error: entry.error
|
|
50103
50233
|
})),
|
|
50104
50234
|
branch,
|
|
@@ -50173,7 +50303,7 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
50173
50303
|
appendLedgerEntry2(meshId, {
|
|
50174
50304
|
kind: "node_removed",
|
|
50175
50305
|
nodeId,
|
|
50176
|
-
payload: { refined: true, mergedBranch: branch, into: baseBranch, validationSummary, patchEquivalence }
|
|
50306
|
+
payload: { refined: true, mergedBranch: branch, into: baseBranch, validationSummary, patchEquivalence, submoduleReachability }
|
|
50177
50307
|
});
|
|
50178
50308
|
recordMeshRefineStage(refineStages, "ledger", "passed", ledgerStarted);
|
|
50179
50309
|
} catch (e) {
|
|
@@ -50201,6 +50331,7 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
50201
50331
|
removeResult,
|
|
50202
50332
|
validationSummary,
|
|
50203
50333
|
patchEquivalence,
|
|
50334
|
+
submoduleReachability,
|
|
50204
50335
|
mergeResult,
|
|
50205
50336
|
refineStages,
|
|
50206
50337
|
...ledgerError ? { ledgerError } : {},
|
|
@@ -50215,6 +50346,7 @@ ${(0, import_node_path.resolve)(workspace || os17.tmpdir())}`;
|
|
|
50215
50346
|
removeResult,
|
|
50216
50347
|
validationSummary,
|
|
50217
50348
|
patchEquivalence,
|
|
50349
|
+
submoduleReachability,
|
|
50218
50350
|
mergeResult,
|
|
50219
50351
|
refineStages,
|
|
50220
50352
|
...ledgerError ? { ledgerError } : {},
|