@ordewell/core 0.11.2 → 0.12.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/AUTHORS.md +3 -1
- package/dist/{IRunner-ihalYfTo.d.mts → IRunner-BwzyUVIL.d.mts} +62 -18
- package/dist/{IRunner-DOMtDTVt.d.ts → IRunner-DjJkYwko.d.ts} +62 -18
- package/dist/{ModeResolver-DyXeZ9ib.d.ts → ModeResolver-CHsaoV7M.d.ts} +1 -1
- package/dist/{ModeResolver-BDAgouuE.d.mts → ModeResolver-b_7bPlBS.d.mts} +1 -1
- package/dist/{Task-BL4Idm9r.d.mts → Task-BTEH-ztX.d.mts} +301 -26
- package/dist/{Task-BL4Idm9r.d.ts → Task-BTEH-ztX.d.ts} +301 -26
- package/dist/{chunk-MYXMIVWA.mjs → chunk-BFLVOYNR.mjs} +3 -3
- package/dist/{chunk-YAFNYNFX.mjs → chunk-BKTDYGIP.mjs} +14 -2
- package/dist/chunk-BKTDYGIP.mjs.map +1 -0
- package/dist/{chunk-QTZ5XTBY.mjs → chunk-F6WS3JLQ.mjs} +446 -10
- package/dist/chunk-F6WS3JLQ.mjs.map +1 -0
- package/dist/{chunk-7WNLN63J.mjs → chunk-HP2LNKST.mjs} +315 -51
- package/dist/chunk-HP2LNKST.mjs.map +1 -0
- package/dist/index.d.mts +242 -78
- package/dist/index.d.ts +242 -78
- package/dist/index.js +5598 -2005
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4701 -1782
- package/dist/index.mjs.map +1 -1
- package/dist/parsing.d.mts +2 -2
- package/dist/parsing.d.ts +2 -2
- package/dist/parsing.js.map +1 -1
- package/dist/parsing.mjs +3 -3
- package/dist/plan-utils.d.mts +4 -4
- package/dist/plan-utils.d.ts +4 -4
- package/dist/plan-utils.js +135 -19
- package/dist/plan-utils.js.map +1 -1
- package/dist/plan-utils.mjs +25 -3
- package/dist/{runSettingsText-CYMhTWfw.d.ts → runSettingsText-CvZ40IPv.d.ts} +1086 -190
- package/dist/{runSettingsText-tnmvdSfS.d.mts → runSettingsText-x-YML2ay.d.mts} +1086 -190
- package/dist/testing.d.mts +18 -2
- package/dist/testing.d.ts +18 -2
- package/dist/testing.js +71 -7
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +68 -7
- package/dist/testing.mjs.map +1 -1
- package/package.json +2 -1
- package/dist/chunk-7WNLN63J.mjs.map +0 -1
- package/dist/chunk-QTZ5XTBY.mjs.map +0 -1
- package/dist/chunk-YAFNYNFX.mjs.map +0 -1
- /package/dist/{chunk-MYXMIVWA.mjs.map → chunk-BFLVOYNR.mjs.map} +0 -0
package/dist/parsing.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parsePlanJson
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BFLVOYNR.mjs";
|
|
4
4
|
import {
|
|
5
5
|
PlanParseError,
|
|
6
6
|
extractJsonObject,
|
|
7
7
|
stripModelNoise
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-BKTDYGIP.mjs";
|
|
9
|
+
import "./chunk-F6WS3JLQ.mjs";
|
|
10
10
|
|
|
11
11
|
// src/services/PartialPlanParser.ts
|
|
12
12
|
function parsePartialPlan(partial) {
|
package/dist/plan-utils.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { b as AccountLimitBucket, c as AccountLimitSnapshot, d as AccountLimitStatus, e as AccountLimitWindow,
|
|
2
|
-
export { a as AttemptUsage, c as ContextFill, e as CostProvenance, f as DEFAULT_RUNNERS, F as FindingSeverity, o as HandoffArtifact, r as HandoffDigest, s as HandoffEvidence, t as HandoffFinding,
|
|
3
|
-
export {
|
|
4
|
-
import './ModeResolver-
|
|
1
|
+
export { b as AccountLimitBucket, c as AccountLimitSnapshot, d as AccountLimitStatus, e as AccountLimitWindow, l as ApprovalBlock, n as ApprovalStatus, s as AssignmentIssue, t as AssignmentScope, B as BlockingSubject, w as CHECKPOINT_TRUNCATE_LENGTH, E as CommandBlock, I as CommandStatus, K as CompactionBlock, L as CompactionStatus, T as ConversationInput, X as ConversationView, Z as DELEGATION_OFFERED, a1 as DiffRow, a2 as DiffRowKind, a3 as DiffStat, a4 as DisplayBlock, a5 as EMPTY_CONVERSATION, a6 as EMPTY_HOLD, a7 as EMPTY_RUN, a8 as EMPTY_TASK_LOG, a9 as EMPTY_TASK_LOG_FOLLOW, ar as GatedConversation, aw as HandoffBlock, ax as HandoffForkRepo, ay as HandoffPeekSubject, aA as IDLE_ACTIVITY, aF as IsolationPreviewNotice, aQ as LocalEntry, aR as LoopCheckFacts, aS as LoopCheckState, a_ as MarkdownToken, b2 as MessageBlock, b3 as MessageRole, b5 as NOT_STARTED, b6 as NO_TURN, b8 as NewTaskFields, bh as OutputPreview, bi as OverrideDirection, bj as PLANNED_WITH_LABEL, bn as PlanBlock, bo as PlanBlocks, bq as PlanMarkerStatus, bN as PromptHold, bO as REPORT_PREVIEW_LINES, bR as RefTask, cd as RunnerLoadedBlock, cg as STALLED_LABEL, ci as SUPERVISOR_LEVEL_LABEL, cF as SkillLoadBlock, cG as SkillToken, cK as SubagentBlock, cL as SubagentChild, cM as SubagentStatus, cW as TakenPrompt, cX as TaskAction, cY as TaskActivity, c$ as TaskLogBatch, d1 as TaskLogFollow, d2 as TaskLogFollowInput, d3 as TaskLogHeaderKind, d4 as TaskLogHeaderTask, d5 as TaskLogHeaderUsage, d6 as TaskLogHeaderView, d8 as TaskLogView, df as TaskPlacement, dj as TaskRef, dm as TaskRowAction, dn as TaskRowContext, dp as TaskRowHandoff, dq as TaskRowIsolation, dr as TaskRowKind, ds as TaskRowLoop, dt as TaskRowPlacement, du as TaskRowSubject, dv as TaskRowUsage, dw as TaskRowView, dx as TaskRunFacts, dy as TaskStatusKind, dz as ThinkingDisplayBlock, dA as ToolBlock, dB as ToolHeadline, dC as ToolStatus, dD as TreeTask, dF as TurnGate, dG as UsageBlock, dI as WAITS_FOR_APPROVAL_LABEL, dJ as WakeUpItem, dR as accountLimitPercentText, dS as accountLimitWindowLabel, dT as accountLimitsOf, dU as accountLimitsText, dV as accountLimitsTitle, dW as activityLabel, dX as aheadOfDraft, dZ as approvalKindText, d_ as approvalLabel, d$ as approvalStatusText, e0 as assignedRunnerOf, e1 as assignmentIssue, e2 as assignmentIssueText, e3 as attachingLabel, e6 as awaitingLabel, e7 as blockNotice, e8 as blockNotices, e9 as blockedByLabel, ea as blockingFailures, eb as canMergeTasks, ec as canSetDependencies, ed as canSplitTask, ee as capConflictFiles, ef as cardEditNeedsUnstarted, eg as cardEditable, ej as closeTurn, el as compactionText, em as confirmedOverride, ep as dependencyCandidates, eq as dependentsNotice, er as dependentsOf, eu as describeIsolationPreview, ev as describeMergeResult, ex as diffRows, ey as diffStat, ez as diffSummary, eB as drainNext, eC as editableWhileRunning, eE as elapsedSince, eH as followTaskLog, eI as followTurn, eJ as formatElapsed, eK as fromTranscript, eM as handoffBaseLine, eN as handoffBranchName, eO as handoffFindingsText, eP as handoffPeekParts, eQ as hasAccountLimits, eR as hasHiddenDetail, eS as hasLongReport, eU as holdLabel, eV as holdPrompt, eW as isFileEditTool, eX as isRepoGroup, eY as isTaskRunning, e_ as loadedSkillTokens, e$ as logContinues, f0 as logResumes, f1 as loopBodyLabel, f2 as loopBodyRound, f3 as loopCheckLabel, f4 as loopCheckState, f5 as loopLeaveNotice, f6 as loopRowParts, f8 as manualOverrideConfirmation, f9 as manualOverrideStopFirst, fb as markAction, fc as markdownHtml, fd as markdownTokens, fe as mergeOutcome, fg as namedRepos, fi as newTaskFields, fj as noExecutorRefusal, fm as opsEditable, fn as outputLines, fo as outputPreview, fp as overrideNeedsConfirmation, fq as parseCount, fw as pastGateConfirmation, fx as planBlocks, fy as planMarkerParts, fG as receiptLabel, fH as reconcileApprovals, fK as reduceConversation, fM as reduceTaskLog, fO as repairWaitLabel, fP as repairedLanded, fQ as repairedNotice, fR as repeatingChecks, fS as replayTaskLog, fT as repoBaseLine, fU as repoResultLines, fY as resolveTaskRef, fZ as resolveUserTaskRef, f_ as resumeLabel, f$ as resumeTime, g0 as revertEffect, g1 as revertListLine, g2 as revertTaskRef, g5 as runHoldsEditors, g7 as runnerToolSubject, ge as skillTokens, gf as skippedLabel, gg as stopTurn, gh as subtreeIds, gi as summarizeToolCall, gm as takeAt, gn as taskActionCommand, go as taskActivity, gp as taskChatAvailable, gq as taskLogCommands, gs as taskLogHeaderView, gt as taskOrderLabel, gu as taskPlacement, gw as taskRef, gx as taskRefOf, gy as taskRowActions, gz as taskRowView, gA as taskStartedNotice, gB as taskStatusKind, gE as titledRefs, gF as titledTaskRef, gG as titledTaskRefOf, gI as toolHeadline, gL as truncateCheckpointSummary, gM as unsendAll, gN as unsendLatest, gO as wakeUpItems, gP as walkPlan } from './runSettingsText-x-YML2ay.mjs';
|
|
2
|
+
export { a as AttemptUsage, c as ContextFill, e as CostProvenance, f as DEFAULT_RUNNERS, F as FindingSeverity, o as HandoffArtifact, r as HandoffDigest, s as HandoffEvidence, t as HandoffFinding, ab as ModelUsage, ad as PatchView, ai as PlanUsage, an as PlannerUsage, aB as ReportedWindow, aL as RunnerSessionCost, aM as SEVERITY_LABEL, aP as SessionBilling, a_ as StoredHandoff, b6 as TaskLoop, be as TaskUsageSummary, bg as UsageLine, bh as UsageRecord, bi as UsageTotals, bn as addAttemptUsage, bo as addModelUsage, bp as addPlannerUsage, bq as addUsage, br as addUsageTotals, bt as betweenRounds, bx as checkOf, by as contextMeterText, bz as contextMeterTitle, bA as costText, bB as countedSessionCost, bF as endAttemptUsage, bK as formatCost, bL as formatTokenCount, bP as handoffReferenceText, bT as isMeasured, bW as loopRemovalRefusal, bX as loopRoundOf, bZ as modelCostTitle, c0 as outOfRounds, c2 as partedPromptUsage, c8 as patchView, c9 as pausedOnLimit, ca as planUsage, cb as plannerContextFill, cg as resumedSessionWindow, ci as savedPatchView, cj as savedPatchViews, ck as severityLabel, cl as startAttemptUsage, cn as subagentCostTitle, co as taskUsageSummary, cp as tasksTotalText, cq as usageLine, cr as usageText, cv as worstSeverity } from './Task-BTEH-ztX.mjs';
|
|
3
|
+
export { bV as scriptTaskText } from './IRunner-BwzyUVIL.mjs';
|
|
4
|
+
import './ModeResolver-b_7bPlBS.mjs';
|
|
5
5
|
import 'child_process';
|
|
6
6
|
import 'zod/v4';
|
|
7
7
|
|
package/dist/plan-utils.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { b as AccountLimitBucket, c as AccountLimitSnapshot, d as AccountLimitStatus, e as AccountLimitWindow,
|
|
2
|
-
export { a as AttemptUsage, c as ContextFill, e as CostProvenance, f as DEFAULT_RUNNERS, F as FindingSeverity, o as HandoffArtifact, r as HandoffDigest, s as HandoffEvidence, t as HandoffFinding,
|
|
3
|
-
export {
|
|
4
|
-
import './ModeResolver-
|
|
1
|
+
export { b as AccountLimitBucket, c as AccountLimitSnapshot, d as AccountLimitStatus, e as AccountLimitWindow, l as ApprovalBlock, n as ApprovalStatus, s as AssignmentIssue, t as AssignmentScope, B as BlockingSubject, w as CHECKPOINT_TRUNCATE_LENGTH, E as CommandBlock, I as CommandStatus, K as CompactionBlock, L as CompactionStatus, T as ConversationInput, X as ConversationView, Z as DELEGATION_OFFERED, a1 as DiffRow, a2 as DiffRowKind, a3 as DiffStat, a4 as DisplayBlock, a5 as EMPTY_CONVERSATION, a6 as EMPTY_HOLD, a7 as EMPTY_RUN, a8 as EMPTY_TASK_LOG, a9 as EMPTY_TASK_LOG_FOLLOW, ar as GatedConversation, aw as HandoffBlock, ax as HandoffForkRepo, ay as HandoffPeekSubject, aA as IDLE_ACTIVITY, aF as IsolationPreviewNotice, aQ as LocalEntry, aR as LoopCheckFacts, aS as LoopCheckState, a_ as MarkdownToken, b2 as MessageBlock, b3 as MessageRole, b5 as NOT_STARTED, b6 as NO_TURN, b8 as NewTaskFields, bh as OutputPreview, bi as OverrideDirection, bj as PLANNED_WITH_LABEL, bn as PlanBlock, bo as PlanBlocks, bq as PlanMarkerStatus, bN as PromptHold, bO as REPORT_PREVIEW_LINES, bR as RefTask, cd as RunnerLoadedBlock, cg as STALLED_LABEL, ci as SUPERVISOR_LEVEL_LABEL, cF as SkillLoadBlock, cG as SkillToken, cK as SubagentBlock, cL as SubagentChild, cM as SubagentStatus, cW as TakenPrompt, cX as TaskAction, cY as TaskActivity, c$ as TaskLogBatch, d1 as TaskLogFollow, d2 as TaskLogFollowInput, d3 as TaskLogHeaderKind, d4 as TaskLogHeaderTask, d5 as TaskLogHeaderUsage, d6 as TaskLogHeaderView, d8 as TaskLogView, df as TaskPlacement, dj as TaskRef, dm as TaskRowAction, dn as TaskRowContext, dp as TaskRowHandoff, dq as TaskRowIsolation, dr as TaskRowKind, ds as TaskRowLoop, dt as TaskRowPlacement, du as TaskRowSubject, dv as TaskRowUsage, dw as TaskRowView, dx as TaskRunFacts, dy as TaskStatusKind, dz as ThinkingDisplayBlock, dA as ToolBlock, dB as ToolHeadline, dC as ToolStatus, dD as TreeTask, dF as TurnGate, dG as UsageBlock, dI as WAITS_FOR_APPROVAL_LABEL, dJ as WakeUpItem, dR as accountLimitPercentText, dS as accountLimitWindowLabel, dT as accountLimitsOf, dU as accountLimitsText, dV as accountLimitsTitle, dW as activityLabel, dX as aheadOfDraft, dZ as approvalKindText, d_ as approvalLabel, d$ as approvalStatusText, e0 as assignedRunnerOf, e1 as assignmentIssue, e2 as assignmentIssueText, e3 as attachingLabel, e6 as awaitingLabel, e7 as blockNotice, e8 as blockNotices, e9 as blockedByLabel, ea as blockingFailures, eb as canMergeTasks, ec as canSetDependencies, ed as canSplitTask, ee as capConflictFiles, ef as cardEditNeedsUnstarted, eg as cardEditable, ej as closeTurn, el as compactionText, em as confirmedOverride, ep as dependencyCandidates, eq as dependentsNotice, er as dependentsOf, eu as describeIsolationPreview, ev as describeMergeResult, ex as diffRows, ey as diffStat, ez as diffSummary, eB as drainNext, eC as editableWhileRunning, eE as elapsedSince, eH as followTaskLog, eI as followTurn, eJ as formatElapsed, eK as fromTranscript, eM as handoffBaseLine, eN as handoffBranchName, eO as handoffFindingsText, eP as handoffPeekParts, eQ as hasAccountLimits, eR as hasHiddenDetail, eS as hasLongReport, eU as holdLabel, eV as holdPrompt, eW as isFileEditTool, eX as isRepoGroup, eY as isTaskRunning, e_ as loadedSkillTokens, e$ as logContinues, f0 as logResumes, f1 as loopBodyLabel, f2 as loopBodyRound, f3 as loopCheckLabel, f4 as loopCheckState, f5 as loopLeaveNotice, f6 as loopRowParts, f8 as manualOverrideConfirmation, f9 as manualOverrideStopFirst, fb as markAction, fc as markdownHtml, fd as markdownTokens, fe as mergeOutcome, fg as namedRepos, fi as newTaskFields, fj as noExecutorRefusal, fm as opsEditable, fn as outputLines, fo as outputPreview, fp as overrideNeedsConfirmation, fq as parseCount, fw as pastGateConfirmation, fx as planBlocks, fy as planMarkerParts, fG as receiptLabel, fH as reconcileApprovals, fK as reduceConversation, fM as reduceTaskLog, fO as repairWaitLabel, fP as repairedLanded, fQ as repairedNotice, fR as repeatingChecks, fS as replayTaskLog, fT as repoBaseLine, fU as repoResultLines, fY as resolveTaskRef, fZ as resolveUserTaskRef, f_ as resumeLabel, f$ as resumeTime, g0 as revertEffect, g1 as revertListLine, g2 as revertTaskRef, g5 as runHoldsEditors, g7 as runnerToolSubject, ge as skillTokens, gf as skippedLabel, gg as stopTurn, gh as subtreeIds, gi as summarizeToolCall, gm as takeAt, gn as taskActionCommand, go as taskActivity, gp as taskChatAvailable, gq as taskLogCommands, gs as taskLogHeaderView, gt as taskOrderLabel, gu as taskPlacement, gw as taskRef, gx as taskRefOf, gy as taskRowActions, gz as taskRowView, gA as taskStartedNotice, gB as taskStatusKind, gE as titledRefs, gF as titledTaskRef, gG as titledTaskRefOf, gI as toolHeadline, gL as truncateCheckpointSummary, gM as unsendAll, gN as unsendLatest, gO as wakeUpItems, gP as walkPlan } from './runSettingsText-CvZ40IPv.js';
|
|
2
|
+
export { a as AttemptUsage, c as ContextFill, e as CostProvenance, f as DEFAULT_RUNNERS, F as FindingSeverity, o as HandoffArtifact, r as HandoffDigest, s as HandoffEvidence, t as HandoffFinding, ab as ModelUsage, ad as PatchView, ai as PlanUsage, an as PlannerUsage, aB as ReportedWindow, aL as RunnerSessionCost, aM as SEVERITY_LABEL, aP as SessionBilling, a_ as StoredHandoff, b6 as TaskLoop, be as TaskUsageSummary, bg as UsageLine, bh as UsageRecord, bi as UsageTotals, bn as addAttemptUsage, bo as addModelUsage, bp as addPlannerUsage, bq as addUsage, br as addUsageTotals, bt as betweenRounds, bx as checkOf, by as contextMeterText, bz as contextMeterTitle, bA as costText, bB as countedSessionCost, bF as endAttemptUsage, bK as formatCost, bL as formatTokenCount, bP as handoffReferenceText, bT as isMeasured, bW as loopRemovalRefusal, bX as loopRoundOf, bZ as modelCostTitle, c0 as outOfRounds, c2 as partedPromptUsage, c8 as patchView, c9 as pausedOnLimit, ca as planUsage, cb as plannerContextFill, cg as resumedSessionWindow, ci as savedPatchView, cj as savedPatchViews, ck as severityLabel, cl as startAttemptUsage, cn as subagentCostTitle, co as taskUsageSummary, cp as tasksTotalText, cq as usageLine, cr as usageText, cv as worstSeverity } from './Task-BTEH-ztX.js';
|
|
3
|
+
export { bV as scriptTaskText } from './IRunner-DjJkYwko.js';
|
|
4
|
+
import './ModeResolver-CHsaoV7M.js';
|
|
5
5
|
import 'child_process';
|
|
6
6
|
import 'zod/v4';
|
|
7
7
|
|
package/dist/plan-utils.js
CHANGED
|
@@ -32,6 +32,7 @@ var plan_utils_exports = {};
|
|
|
32
32
|
__export(plan_utils_exports, {
|
|
33
33
|
CHECKPOINT_TRUNCATE_LENGTH: () => CHECKPOINT_TRUNCATE_LENGTH,
|
|
34
34
|
DEFAULT_RUNNERS: () => DEFAULT_RUNNERS,
|
|
35
|
+
DELEGATION_OFFERED: () => DELEGATION_OFFERED,
|
|
35
36
|
EMPTY_CONVERSATION: () => EMPTY_CONVERSATION,
|
|
36
37
|
EMPTY_HOLD: () => EMPTY_HOLD,
|
|
37
38
|
EMPTY_RUN: () => EMPTY_RUN,
|
|
@@ -43,6 +44,7 @@ __export(plan_utils_exports, {
|
|
|
43
44
|
PLANNED_WITH_LABEL: () => PLANNED_WITH_LABEL,
|
|
44
45
|
REPORT_PREVIEW_LINES: () => REPORT_PREVIEW_LINES,
|
|
45
46
|
SEVERITY_LABEL: () => SEVERITY_LABEL,
|
|
47
|
+
STALLED_LABEL: () => STALLED_LABEL,
|
|
46
48
|
SUPERVISOR_LEVEL_LABEL: () => SUPERVISOR_LEVEL_LABEL,
|
|
47
49
|
WAITS_FOR_APPROVAL_LABEL: () => WAITS_FOR_APPROVAL_LABEL,
|
|
48
50
|
accountLimitPercentText: () => accountLimitPercentText,
|
|
@@ -50,6 +52,7 @@ __export(plan_utils_exports, {
|
|
|
50
52
|
accountLimitsOf: () => accountLimitsOf,
|
|
51
53
|
accountLimitsText: () => accountLimitsText,
|
|
52
54
|
accountLimitsTitle: () => accountLimitsTitle,
|
|
55
|
+
activityLabel: () => activityLabel,
|
|
53
56
|
addAttemptUsage: () => addAttemptUsage,
|
|
54
57
|
addModelUsage: () => addModelUsage,
|
|
55
58
|
addPlannerUsage: () => addPlannerUsage,
|
|
@@ -77,6 +80,7 @@ __export(plan_utils_exports, {
|
|
|
77
80
|
cardEditable: () => cardEditable,
|
|
78
81
|
checkOf: () => checkOf,
|
|
79
82
|
clampThinkingEffort: () => clampThinkingEffort,
|
|
83
|
+
closeTurn: () => closeTurn,
|
|
80
84
|
compactionText: () => compactionText,
|
|
81
85
|
confirmedOverride: () => confirmedOverride,
|
|
82
86
|
contextMeterText: () => contextMeterText,
|
|
@@ -93,10 +97,12 @@ __export(plan_utils_exports, {
|
|
|
93
97
|
diffSummary: () => diffSummary,
|
|
94
98
|
drainNext: () => drainNext,
|
|
95
99
|
editableWhileRunning: () => editableWhileRunning,
|
|
100
|
+
elapsedSince: () => elapsedSince,
|
|
96
101
|
endAttemptUsage: () => endAttemptUsage,
|
|
97
102
|
followTaskLog: () => followTaskLog,
|
|
98
103
|
followTurn: () => followTurn,
|
|
99
104
|
formatCost: () => formatCost,
|
|
105
|
+
formatElapsed: () => formatElapsed,
|
|
100
106
|
formatTokenCount: () => formatTokenCount,
|
|
101
107
|
fromTranscript: () => fromTranscript,
|
|
102
108
|
handoffBaseLine: () => handoffBaseLine,
|
|
@@ -152,6 +158,7 @@ __export(plan_utils_exports, {
|
|
|
152
158
|
reconcileApprovals: () => reconcileApprovals,
|
|
153
159
|
reduceConversation: () => reduceConversation,
|
|
154
160
|
reduceTaskLog: () => reduceTaskLog,
|
|
161
|
+
repairWaitLabel: () => repairWaitLabel,
|
|
155
162
|
repairedLanded: () => repairedLanded,
|
|
156
163
|
repairedNotice: () => repairedNotice,
|
|
157
164
|
repeatingChecks: () => repeatingChecks,
|
|
@@ -163,6 +170,9 @@ __export(plan_utils_exports, {
|
|
|
163
170
|
resumeLabel: () => resumeLabel,
|
|
164
171
|
resumeTime: () => resumeTime,
|
|
165
172
|
resumedSessionWindow: () => resumedSessionWindow,
|
|
173
|
+
revertEffect: () => revertEffect,
|
|
174
|
+
revertListLine: () => revertListLine,
|
|
175
|
+
revertTaskRef: () => revertTaskRef,
|
|
166
176
|
runHoldsEditors: () => runHoldsEditors,
|
|
167
177
|
runnerToolSubject: () => runnerToolSubject,
|
|
168
178
|
savedPatchView: () => savedPatchView,
|
|
@@ -178,6 +188,7 @@ __export(plan_utils_exports, {
|
|
|
178
188
|
summarizeToolCall: () => summarizeToolCall,
|
|
179
189
|
takeAt: () => takeAt,
|
|
180
190
|
taskActionCommand: () => taskActionCommand,
|
|
191
|
+
taskActivity: () => taskActivity,
|
|
181
192
|
taskChatAvailable: () => taskChatAvailable,
|
|
182
193
|
taskLogCommands: () => taskLogCommands,
|
|
183
194
|
taskLogHeaderView: () => taskLogHeaderView,
|
|
@@ -390,6 +401,7 @@ function taskStatusKind(task) {
|
|
|
390
401
|
if (!isTaskRunning(task)) return "todo";
|
|
391
402
|
return task.status === "in_progress" && task.idleSince ? "quiet" : "running";
|
|
392
403
|
}
|
|
404
|
+
var STALLED_LABEL = "Stalled";
|
|
393
405
|
var AWAITING_LABELS = {
|
|
394
406
|
input: "Waiting for your input",
|
|
395
407
|
checkpoint: "Checkpoint",
|
|
@@ -400,6 +412,14 @@ var AWAITING_LABELS = {
|
|
|
400
412
|
function awaitingLabel(task) {
|
|
401
413
|
return task.status === "awaiting_user" && task.awaitingReason ? AWAITING_LABELS[task.awaitingReason] : null;
|
|
402
414
|
}
|
|
415
|
+
var REPAIR_WAIT_LABELS = {
|
|
416
|
+
slot: "Repair waits for a free slot",
|
|
417
|
+
planner: "Repair waits for the planner's turn to end",
|
|
418
|
+
"usage-limit": "Repair waits for its runner's usage limit to reset"
|
|
419
|
+
};
|
|
420
|
+
function repairWaitLabel(wait) {
|
|
421
|
+
return REPAIR_WAIT_LABELS[wait];
|
|
422
|
+
}
|
|
403
423
|
function blockedByLabel(refs) {
|
|
404
424
|
return `Blocked by ${refs.join(", ")}`;
|
|
405
425
|
}
|
|
@@ -1175,6 +1195,7 @@ function repoResultLines(handoff) {
|
|
|
1175
1195
|
// src/services/runSettingsText.ts
|
|
1176
1196
|
var SUPERVISOR_LEVEL_LABEL = { off: "Off", watch: "Watch", act: "Act" };
|
|
1177
1197
|
var PLANNED_WITH_LABEL = "Planned-with line in commits Ordewell writes";
|
|
1198
|
+
var DELEGATION_OFFERED = false;
|
|
1178
1199
|
function parseCount(arg, min) {
|
|
1179
1200
|
if (arg === void 0 || !/^\d+$/.test(arg)) return null;
|
|
1180
1201
|
const n = Number(arg);
|
|
@@ -2176,17 +2197,17 @@ function answered(block, decision, note) {
|
|
|
2176
2197
|
function decideApproval2(view, { approvalId, decision, note }) {
|
|
2177
2198
|
return settleApproval2(view, approvalId, (block) => answered(block, decision, note));
|
|
2178
2199
|
}
|
|
2179
|
-
function startTurn(view, { message, messageId, from, forced }) {
|
|
2200
|
+
function startTurn(view, { message, messageId, from, forced, startedAt }) {
|
|
2180
2201
|
const queued = messageId ? view.queued.filter((m) => m.id !== messageId) : view.queued;
|
|
2181
|
-
const working = { ...view, queued, working: true, latestText: void 0 };
|
|
2202
|
+
const working = { ...view, queued, working: true, turnStartedAt: startedAt, latestText: void 0 };
|
|
2182
2203
|
return message ? append(working, (id) => ({ ...sentMessage(id, message, from), ...forced ? { forced: true } : {} })) : working;
|
|
2183
2204
|
}
|
|
2184
2205
|
function sentMessage(id, text2, from) {
|
|
2185
2206
|
return from === "ordewell" ? settledMessage(id, "system", `Ordewell: ${text2}`) : settledMessage(id, "user", text2);
|
|
2186
2207
|
}
|
|
2187
|
-
function startCommand(view, { name, args, messageId }) {
|
|
2208
|
+
function startCommand(view, { name, args, messageId, startedAt }) {
|
|
2188
2209
|
const queued = messageId ? view.queued.filter((m) => m.id !== messageId) : view.queued;
|
|
2189
|
-
return append({ ...view, queued, working: true, latestText: void 0 }, (id) => ({
|
|
2210
|
+
return append({ ...view, queued, working: true, turnStartedAt: startedAt, latestText: void 0 }, (id) => ({
|
|
2190
2211
|
type: "command",
|
|
2191
2212
|
id,
|
|
2192
2213
|
name,
|
|
@@ -2221,7 +2242,7 @@ function endTurn2(view, { reason }) {
|
|
|
2221
2242
|
const i = runningCommand(view);
|
|
2222
2243
|
const command = view.blocks[i];
|
|
2223
2244
|
const settled = command?.type === "command" ? { ...view, blocks: replaceAt(view.blocks, i, { ...command, status: COMMAND_END[reason] }) } : view;
|
|
2224
|
-
const closed = closeOpenBlocks({ ...settled, working: false, lastTurnEnd: reason, streams: {}, latestText: void 0 }, CUT[reason]);
|
|
2245
|
+
const closed = closeOpenBlocks({ ...settled, working: false, turnStartedAt: void 0, lastTurnEnd: reason, streams: {}, latestText: void 0 }, CUT[reason]);
|
|
2225
2246
|
return reason === "interrupted" ? append(closed, (id) => settledMessage(id, "system", "Interrupted.")) : closed;
|
|
2226
2247
|
}
|
|
2227
2248
|
function queueMessage(view, { messageId, text: text2, forced, from }) {
|
|
@@ -2271,7 +2292,7 @@ function endScriptStep(view, event) {
|
|
|
2271
2292
|
const passed = event.code === 0 && !event.signal && event.error === void 0;
|
|
2272
2293
|
const i = runningScriptStep(view);
|
|
2273
2294
|
const block = view.blocks[i];
|
|
2274
|
-
const ended = { ...view, working: false };
|
|
2295
|
+
const ended = { ...view, working: false, turnStartedAt: void 0 };
|
|
2275
2296
|
if (block?.type !== "tool") return append(ended, (id) => settledMessage(id, "system", status));
|
|
2276
2297
|
const output = block.output.trim() ? `${block.output.replace(/\n+$/, "")}
|
|
2277
2298
|
${status}` : status;
|
|
@@ -2368,7 +2389,7 @@ function reduceTaskLog(view, event) {
|
|
|
2368
2389
|
case "handoff":
|
|
2369
2390
|
return showHandoff(view, event);
|
|
2370
2391
|
case "runner_ended":
|
|
2371
|
-
return closeOpenBlocks({ ...endOpenCalls(view), working: false, streams: {}, latestText: void 0 }, "stopped");
|
|
2392
|
+
return closeOpenBlocks({ ...endOpenCalls(view), working: false, turnStartedAt: void 0, streams: {}, latestText: void 0 }, "stopped");
|
|
2372
2393
|
default:
|
|
2373
2394
|
return view;
|
|
2374
2395
|
}
|
|
@@ -2377,6 +2398,61 @@ function replayTaskLog(events, from = EMPTY_TASK_LOG) {
|
|
|
2377
2398
|
return events.reduce(reduceTaskLog, from);
|
|
2378
2399
|
}
|
|
2379
2400
|
|
|
2401
|
+
// src/conversation/activity.ts
|
|
2402
|
+
function activityLabel(view) {
|
|
2403
|
+
for (let i = view.blocks.length - 1; i >= 0; i--) {
|
|
2404
|
+
const label = openLabel(view.blocks[i], view);
|
|
2405
|
+
if (label) return label;
|
|
2406
|
+
}
|
|
2407
|
+
return "Working\u2026";
|
|
2408
|
+
}
|
|
2409
|
+
function isAtWork(view) {
|
|
2410
|
+
if (view.working !== false) return true;
|
|
2411
|
+
if (view.blocks.some((b) => b.type === "subagent" && b.status === "running")) return true;
|
|
2412
|
+
return view.lastTurnEnd === void 0 && view.blocks.some((b) => openLabel(b, view) !== null);
|
|
2413
|
+
}
|
|
2414
|
+
function openLabel(block, view) {
|
|
2415
|
+
switch (block.type) {
|
|
2416
|
+
case "thinking":
|
|
2417
|
+
return block.streaming ? "Thinking\u2026" : null;
|
|
2418
|
+
case "message":
|
|
2419
|
+
return block.streaming ? "Writing\u2026" : null;
|
|
2420
|
+
case "tool": {
|
|
2421
|
+
if (block.status !== "pending") return null;
|
|
2422
|
+
const { name, keyArg } = block.headline;
|
|
2423
|
+
return keyArg ? `Running ${name}(${keyArg})\u2026` : `Running ${name}\u2026`;
|
|
2424
|
+
}
|
|
2425
|
+
case "subagent": {
|
|
2426
|
+
if (block.status !== "running") return null;
|
|
2427
|
+
const running = view.blocks.filter((b) => b.type === "subagent" && b.status === "running");
|
|
2428
|
+
return running.length > 1 ? `${running.length} subagents running\u2026` : `Subagent: ${block.brief}\u2026`;
|
|
2429
|
+
}
|
|
2430
|
+
default:
|
|
2431
|
+
return null;
|
|
2432
|
+
}
|
|
2433
|
+
}
|
|
2434
|
+
function taskActivity(view, task) {
|
|
2435
|
+
if (!isTaskRunning(task) || view.archived) return null;
|
|
2436
|
+
if (task.awaitingApproval || view.blocks.some((b) => b.type === "approval" && b.status === "pending")) return null;
|
|
2437
|
+
const since = view.turnStartedAt ? { since: view.turnStartedAt } : {};
|
|
2438
|
+
if (taskStatusKind(task) === "quiet") return { label: STALLED_LABEL, busy: false, ...since };
|
|
2439
|
+
if (!isAtWork(view)) return null;
|
|
2440
|
+
return { label: activityLabel(view), busy: true, ...since };
|
|
2441
|
+
}
|
|
2442
|
+
|
|
2443
|
+
// src/conversation/elapsed.ts
|
|
2444
|
+
function formatElapsed(ms) {
|
|
2445
|
+
if (!Number.isFinite(ms) || ms < 0) return "";
|
|
2446
|
+
const seconds = Math.floor(ms / 1e3);
|
|
2447
|
+
if (seconds < 60) return `${seconds}s`;
|
|
2448
|
+
const minutes = Math.floor(seconds / 60);
|
|
2449
|
+
if (minutes < 60) return `${minutes}m ${String(seconds % 60).padStart(2, "0")}s`;
|
|
2450
|
+
return `${Math.floor(minutes / 60)}h ${String(minutes % 60).padStart(2, "0")}m`;
|
|
2451
|
+
}
|
|
2452
|
+
function elapsedSince(startedAt, now) {
|
|
2453
|
+
return startedAt === void 0 ? "" : formatElapsed(now - Date.parse(startedAt));
|
|
2454
|
+
}
|
|
2455
|
+
|
|
2380
2456
|
// src/models/Handoff.ts
|
|
2381
2457
|
var SEVERITY_LABEL = {
|
|
2382
2458
|
blocker: "Blocker",
|
|
@@ -2395,6 +2471,9 @@ function worstSeverity(findings) {
|
|
|
2395
2471
|
}
|
|
2396
2472
|
return worst;
|
|
2397
2473
|
}
|
|
2474
|
+
function findingRefText(task, ref) {
|
|
2475
|
+
return `${task}${ref.attempt !== void 0 ? `@${ref.attempt}` : ""}${ref.finding ? `/${ref.finding}` : ""}`;
|
|
2476
|
+
}
|
|
2398
2477
|
function handoffReferenceText(ref, taskName = () => void 0) {
|
|
2399
2478
|
switch (ref.kind) {
|
|
2400
2479
|
case "file":
|
|
@@ -2402,7 +2481,7 @@ function handoffReferenceText(ref, taskName = () => void 0) {
|
|
|
2402
2481
|
case "commit":
|
|
2403
2482
|
return `commit ${ref.sha}${ref.repo ? ` in ${ref.repo}` : ""}${ref.resolved === true ? "" : " (unresolved)"}`;
|
|
2404
2483
|
case "task":
|
|
2405
|
-
return
|
|
2484
|
+
return findingRefText(taskName(ref.task) ?? ref.task, ref);
|
|
2406
2485
|
case "url":
|
|
2407
2486
|
return ref.url;
|
|
2408
2487
|
case "patch":
|
|
@@ -2579,18 +2658,18 @@ function cutOff(gate, input) {
|
|
|
2579
2658
|
return turnId === void 0 || turnId === gate.stopped;
|
|
2580
2659
|
}
|
|
2581
2660
|
function withGate(live2, gate) {
|
|
2582
|
-
return gate.open === live2.gate.open && gate.stopped === live2.gate.stopped ? live2 : { ...live2, gate };
|
|
2661
|
+
return gate.open === live2.gate.open && gate.stopped === live2.gate.stopped && gate.openedAt === live2.gate.openedAt ? live2 : { ...live2, gate };
|
|
2583
2662
|
}
|
|
2584
2663
|
function followTurn(view, gate, input) {
|
|
2585
2664
|
const live2 = { view, gate };
|
|
2586
2665
|
if (input.type === "planner_turn_started") {
|
|
2587
|
-
return withGate({ view: reduceConversation(view, input), gate }, { open: input.turnId, stopped: null });
|
|
2666
|
+
return withGate({ view: reduceConversation(view, input), gate }, { open: input.turnId, stopped: null, ...input.startedAt ? { openedAt: input.startedAt } : {} });
|
|
2588
2667
|
}
|
|
2589
2668
|
if (cutOff(gate, input)) {
|
|
2590
2669
|
return input.type === "planner_turn_ended" ? withGate(live2, { ...gate, stopped: null }) : live2;
|
|
2591
2670
|
}
|
|
2592
2671
|
const next = { view: reduceConversation(view, input), gate };
|
|
2593
|
-
return input.type === "planner_turn_ended" && input.turnId === gate.open ? withGate(next, {
|
|
2672
|
+
return input.type === "planner_turn_ended" && input.turnId === gate.open ? withGate(next, { open: null, stopped: gate.stopped }) : next;
|
|
2594
2673
|
}
|
|
2595
2674
|
function stopTurn(view, gate) {
|
|
2596
2675
|
if (gate.open === null) return { view, gate };
|
|
@@ -2599,9 +2678,16 @@ function stopTurn(view, gate) {
|
|
|
2599
2678
|
gate: { open: null, stopped: gate.open }
|
|
2600
2679
|
};
|
|
2601
2680
|
}
|
|
2681
|
+
function closeTurn(gate) {
|
|
2682
|
+
return gate.open === null ? gate : { open: null, stopped: gate.stopped };
|
|
2683
|
+
}
|
|
2602
2684
|
|
|
2603
2685
|
// src/services/WakePolicy.ts
|
|
2604
2686
|
var REPORT_LEAD = ", whose result you asked for, has ended.";
|
|
2687
|
+
var RIDE_ALONG_CHARS = 120;
|
|
2688
|
+
var LEFT_OUT_EVENTS = 8;
|
|
2689
|
+
var LEFT_OUT_ROOM = 100 + LEFT_OUT_EVENTS * (RIDE_ALONG_CHARS + 1);
|
|
2690
|
+
var UNKNOWN_CACHE_TTL_MS = 5 * 6e4;
|
|
2605
2691
|
|
|
2606
2692
|
// src/conversation/wakeUp.ts
|
|
2607
2693
|
var DIGEST_HEAD = "Run update:";
|
|
@@ -2755,8 +2841,9 @@ var PAUSED = (t) => t.status === "awaiting_user" && t.awaitingReason === "usage-
|
|
|
2755
2841
|
var RESUMES = (t) => PAUSED(t) && !!t.resumeAt;
|
|
2756
2842
|
var RESUMABLE = (t) => PAUSED(t) && t.continuable === true;
|
|
2757
2843
|
var HOLDS_UP = (t) => t.status === "failed" || t.status === "blocked" || t.status === "awaiting_user";
|
|
2844
|
+
var STOPPABLE = (t) => t.status === "in_progress" || !!t.repairWaits;
|
|
2758
2845
|
var TASK_RULES = [
|
|
2759
|
-
["cancel",
|
|
2846
|
+
["cancel", STOPPABLE],
|
|
2760
2847
|
["resume-now", RESUMABLE],
|
|
2761
2848
|
["cancel-resume", RESUMES],
|
|
2762
2849
|
["skip", HOLDS_UP],
|
|
@@ -2767,7 +2854,7 @@ var TASK_RULES = [
|
|
|
2767
2854
|
["uncomplete", (t) => t.status === "completed"]
|
|
2768
2855
|
];
|
|
2769
2856
|
var SUBTASK_RULES = [
|
|
2770
|
-
["cancel",
|
|
2857
|
+
["cancel", STOPPABLE],
|
|
2771
2858
|
["resume-now", RESUMABLE],
|
|
2772
2859
|
["cancel-resume", RESUMES],
|
|
2773
2860
|
["complete", (t) => t.status === "in_progress" && t.type === "ai"],
|
|
@@ -2914,17 +3001,23 @@ function blockedBy(task, reading) {
|
|
|
2914
3001
|
if (!reading || !NOT_STARTED.has(task.status)) return [];
|
|
2915
3002
|
return reading.blocks.blocked.get(task.id) ?? [];
|
|
2916
3003
|
}
|
|
3004
|
+
function strandedDetail(check, dependencies, reading) {
|
|
3005
|
+
const status = (id) => reading?.tasks.find((t) => t.id === id)?.status;
|
|
3006
|
+
const landed = reading && check.loop.body.every((id) => status(id) === "completed");
|
|
3007
|
+
const finished = dependencies.every((id) => [void 0, "completed", "skipped"].includes(status(id)));
|
|
3008
|
+
return landed && finished ? `Nothing runs it now: start it for round ${loopRoundOf(check) + 1} of ${check.loop.maxRounds}` : "Nothing runs it now: execute the plan and the loop goes on";
|
|
3009
|
+
}
|
|
2917
3010
|
function loopOf(task, reading) {
|
|
2918
3011
|
const tasks = reading?.tasks;
|
|
2919
3012
|
if (task.loop) {
|
|
2920
3013
|
const check2 = { id: task.id, status: task.status, loop: task.loop, loopRound: task.loopRound, ...task.verdict ? { verdict: task.verdict } : {} };
|
|
2921
|
-
const state = loopCheckState(check2, reading ? reading.blocks.repeating.has(task.id) : true);
|
|
3014
|
+
const state = loopCheckState(check2, !task.loopStranded && (reading ? reading.blocks.repeating.has(task.id) : true));
|
|
2922
3015
|
const body = refsOf(task.loop.body, tasks);
|
|
2923
3016
|
const halted = reading ? task.loop.body.filter((id) => {
|
|
2924
3017
|
const status = reading.tasks.find((t) => t.id === id)?.status;
|
|
2925
3018
|
return status === "failed" || status === "skipped" || reading.blocks.blocked.has(id);
|
|
2926
3019
|
}) : [];
|
|
2927
|
-
const detail = state === "repeating" ? `Found problems: runs again once ${body.join(", ")} ${body.length === 1 ? "has" : "have"} landed` : state === "stopped" ? `${refsOf(halted, tasks).join(", ")} did not pass: retry ${halted.length === 1 ? "it" : "them"} and the loop goes on` : null;
|
|
3020
|
+
const detail = state === "repeating" ? `Found problems: runs again once ${body.join(", ")} ${body.length === 1 ? "has" : "have"} landed` : state === "stopped" ? task.loopStranded ? strandedDetail(check2, task.dependencies, reading) : `${refsOf(halted, tasks).join(", ")} did not pass: retry ${halted.length === 1 ? "it" : "them"} and the loop goes on` : null;
|
|
2928
3021
|
return { role: "check", state, label: loopCheckLabel(check2, state), detail, body };
|
|
2929
3022
|
}
|
|
2930
3023
|
const owner = reading && checkOf(reading.tasks, task.id);
|
|
@@ -2977,7 +3070,8 @@ function taskRowView(task, context = {}) {
|
|
|
2977
3070
|
...flagOf(task, context.runnerScope),
|
|
2978
3071
|
autonomous: task.type === "ai" && context.modes?.find((m) => m.id === task.taskMode)?.autonomous === true,
|
|
2979
3072
|
repos: namedRepos(isolation?.repos),
|
|
2980
|
-
conflict: isolation?.state === "conflict" ? { repo: namedRepo(isolation.conflictRepo), files: filesOf(isolation.conflictFiles) } : null,
|
|
3073
|
+
conflict: isolation?.state === "conflict" && !isolation.repairWaits ? { repo: namedRepo(isolation.conflictRepo), files: filesOf(isolation.conflictFiles), resolver: isolation.resolver ? refsOf([isolation.resolver], context.tasks)[0] : null } : null,
|
|
3074
|
+
repairWaiting: isolation?.state === "conflict" && isolation.repairWaits ? { label: repairWaitLabel(isolation.repairWaits), files: filesOf(isolation.conflictFiles) } : null,
|
|
2981
3075
|
repairing: isolation?.state === "repairing" ? { files: filesOf(isolation.conflictFiles), attempt: isolation.repair ?? null } : null,
|
|
2982
3076
|
repaired: isolation?.repairedFiles?.length ? { files: capConflictFiles(isolation.repairedFiles), landed: isolation.state === "integrated" } : null,
|
|
2983
3077
|
mergeGate: task.mergeGate?.length ? refsOf(task.mergeGate, context.tasks) : null,
|
|
@@ -2989,7 +3083,9 @@ function taskRowView(task, context = {}) {
|
|
|
2989
3083
|
handoff: handoffOf(task),
|
|
2990
3084
|
dependencies: refsOf(task.dependencies, context.tasks),
|
|
2991
3085
|
// A block read off the plan offers what a stored one does: Skip among them.
|
|
2992
|
-
actions: taskRowActions(blocked.length > 0 ? {
|
|
3086
|
+
actions: taskRowActions({ ...task, ...blocked.length > 0 ? { status: "blocked" } : {}, ...isolation?.repairWaits ? { repairWaits: isolation.repairWaits } : {} }, context.placement ?? (parent ? "subtask" : "task")),
|
|
3087
|
+
// Read off the mark itself: a task with merges left and no record has state `none`.
|
|
3088
|
+
revertible: task.isolation?.revertible === true,
|
|
2993
3089
|
mark: markAction(task),
|
|
2994
3090
|
opsEditable: opsEditable(task)
|
|
2995
3091
|
};
|
|
@@ -3005,7 +3101,7 @@ var STATE_LABEL = {
|
|
|
3005
3101
|
done: "Done",
|
|
3006
3102
|
failed: "Failed",
|
|
3007
3103
|
running: "Running",
|
|
3008
|
-
quiet:
|
|
3104
|
+
quiet: STALLED_LABEL,
|
|
3009
3105
|
awaiting: "Waiting for your input",
|
|
3010
3106
|
blocked: "Blocked",
|
|
3011
3107
|
skipped: "Skipped",
|
|
@@ -3022,6 +3118,7 @@ function stateOf(task, follow, approvals) {
|
|
|
3022
3118
|
return { kind: task.awaitingReason === "checkpoint" ? "checkpoint" : "awaiting", label: awaitingLabel(task) ?? STATE_LABEL.awaiting };
|
|
3023
3119
|
}
|
|
3024
3120
|
if (task.status === "blocked") return { kind: "blocked", label: STATE_LABEL.blocked };
|
|
3121
|
+
if (task.repairWaits) return { kind: "todo", label: repairWaitLabel(task.repairWaits) };
|
|
3025
3122
|
if (follow.view.lastTurnEnd === "failed") return { kind: "failed", label: "Turn failed" };
|
|
3026
3123
|
if (follow.view.lastTurnEnd === "interrupted") return { kind: "todo", label: "Interrupted" };
|
|
3027
3124
|
const kind = taskStatusKind(task);
|
|
@@ -3101,6 +3198,14 @@ function pastGateConfirmation(unmerged, subject = "This task") {
|
|
|
3101
3198
|
function manualOverrideConfirmation(direction, label) {
|
|
3102
3199
|
return direction === "complete" ? `Mark ${label} complete? You vouch for its work although no passing verdict said it was done. Any changes it kept may land in your run, and the tasks that depend on it are released to start on a future run.` : `Mark ${label} not done? This clears its completion and holds it until you retry or start it. The work it did stays where it is, and tasks that already ran on its result are not undone.`;
|
|
3103
3200
|
}
|
|
3201
|
+
var revertEffect = "Its landed work comes off the integration branch, newest first, and each task listed is held as not started until you retry it. Nothing in your own branch changes.";
|
|
3202
|
+
function revertTaskRef(task) {
|
|
3203
|
+
return task.ref ?? `#${task.order}`;
|
|
3204
|
+
}
|
|
3205
|
+
function revertListLine(task) {
|
|
3206
|
+
const repos = task.repos.length === 1 && task.repos[0] === "." ? "" : ` (${task.repos.join(", ")})`;
|
|
3207
|
+
return `${revertTaskRef(task)} ${task.title}${repos}${task.dependent ? " (goes with it)" : ""}`;
|
|
3208
|
+
}
|
|
3104
3209
|
function manualOverrideStopFirst(direction, label) {
|
|
3105
3210
|
return `${label.charAt(0).toUpperCase()}${label.slice(1)} cannot be marked ${direction === "complete" ? "complete" : "not done"} while the plan is starting, running or waiting to resume, because the run could still move it on. Stop the run first, and mark it once everything has stopped.`;
|
|
3106
3211
|
}
|
|
@@ -3114,7 +3219,7 @@ function noExecutorRefusal(type, manual, script) {
|
|
|
3114
3219
|
}
|
|
3115
3220
|
|
|
3116
3221
|
// src/services/runView.ts
|
|
3117
|
-
var EMPTY_RUN = { tasks: [], runMerge: null, handoff: null, mergeResult: null, activity: IDLE_ACTIVITY };
|
|
3222
|
+
var EMPTY_RUN = { tasks: [], runMerge: null, handoff: null, mergeResult: null, activity: IDLE_ACTIVITY, escalations: [] };
|
|
3118
3223
|
|
|
3119
3224
|
// src/models/AccountLimits.ts
|
|
3120
3225
|
function hasAccountLimits(snapshot) {
|
|
@@ -3169,6 +3274,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3169
3274
|
0 && (module.exports = {
|
|
3170
3275
|
CHECKPOINT_TRUNCATE_LENGTH,
|
|
3171
3276
|
DEFAULT_RUNNERS,
|
|
3277
|
+
DELEGATION_OFFERED,
|
|
3172
3278
|
EMPTY_CONVERSATION,
|
|
3173
3279
|
EMPTY_HOLD,
|
|
3174
3280
|
EMPTY_RUN,
|
|
@@ -3180,6 +3286,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3180
3286
|
PLANNED_WITH_LABEL,
|
|
3181
3287
|
REPORT_PREVIEW_LINES,
|
|
3182
3288
|
SEVERITY_LABEL,
|
|
3289
|
+
STALLED_LABEL,
|
|
3183
3290
|
SUPERVISOR_LEVEL_LABEL,
|
|
3184
3291
|
WAITS_FOR_APPROVAL_LABEL,
|
|
3185
3292
|
accountLimitPercentText,
|
|
@@ -3187,6 +3294,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3187
3294
|
accountLimitsOf,
|
|
3188
3295
|
accountLimitsText,
|
|
3189
3296
|
accountLimitsTitle,
|
|
3297
|
+
activityLabel,
|
|
3190
3298
|
addAttemptUsage,
|
|
3191
3299
|
addModelUsage,
|
|
3192
3300
|
addPlannerUsage,
|
|
@@ -3214,6 +3322,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3214
3322
|
cardEditable,
|
|
3215
3323
|
checkOf,
|
|
3216
3324
|
clampThinkingEffort,
|
|
3325
|
+
closeTurn,
|
|
3217
3326
|
compactionText,
|
|
3218
3327
|
confirmedOverride,
|
|
3219
3328
|
contextMeterText,
|
|
@@ -3230,10 +3339,12 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3230
3339
|
diffSummary,
|
|
3231
3340
|
drainNext,
|
|
3232
3341
|
editableWhileRunning,
|
|
3342
|
+
elapsedSince,
|
|
3233
3343
|
endAttemptUsage,
|
|
3234
3344
|
followTaskLog,
|
|
3235
3345
|
followTurn,
|
|
3236
3346
|
formatCost,
|
|
3347
|
+
formatElapsed,
|
|
3237
3348
|
formatTokenCount,
|
|
3238
3349
|
fromTranscript,
|
|
3239
3350
|
handoffBaseLine,
|
|
@@ -3289,6 +3400,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3289
3400
|
reconcileApprovals,
|
|
3290
3401
|
reduceConversation,
|
|
3291
3402
|
reduceTaskLog,
|
|
3403
|
+
repairWaitLabel,
|
|
3292
3404
|
repairedLanded,
|
|
3293
3405
|
repairedNotice,
|
|
3294
3406
|
repeatingChecks,
|
|
@@ -3300,6 +3412,9 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3300
3412
|
resumeLabel,
|
|
3301
3413
|
resumeTime,
|
|
3302
3414
|
resumedSessionWindow,
|
|
3415
|
+
revertEffect,
|
|
3416
|
+
revertListLine,
|
|
3417
|
+
revertTaskRef,
|
|
3303
3418
|
runHoldsEditors,
|
|
3304
3419
|
runnerToolSubject,
|
|
3305
3420
|
savedPatchView,
|
|
@@ -3315,6 +3430,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3315
3430
|
summarizeToolCall,
|
|
3316
3431
|
takeAt,
|
|
3317
3432
|
taskActionCommand,
|
|
3433
|
+
taskActivity,
|
|
3318
3434
|
taskChatAvailable,
|
|
3319
3435
|
taskLogCommands,
|
|
3320
3436
|
taskLogHeaderView,
|