@ordewell/core 0.12.0 → 0.12.1
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/{ModeResolver-CHsaoV7M.d.ts → ModeResolver-B64aUZXJ.d.ts} +1 -1
- package/dist/{ModeResolver-b_7bPlBS.d.mts → ModeResolver-CA2fUU9h.d.mts} +1 -1
- package/dist/{Task-BTEH-ztX.d.mts → Task-CxGgN6I0.d.mts} +503 -16
- package/dist/{Task-BTEH-ztX.d.ts → Task-CxGgN6I0.d.ts} +503 -16
- package/dist/{chunk-BKTDYGIP.mjs → chunk-2IFKPYPO.mjs} +441 -17
- package/dist/chunk-2IFKPYPO.mjs.map +1 -0
- package/dist/{chunk-BFLVOYNR.mjs → chunk-FX33UKAD.mjs} +8 -6
- package/dist/chunk-FX33UKAD.mjs.map +1 -0
- package/dist/{chunk-F6WS3JLQ.mjs → chunk-PKJTN2PD.mjs} +20 -11
- package/dist/chunk-PKJTN2PD.mjs.map +1 -0
- package/dist/{chunk-HP2LNKST.mjs → chunk-RZ23BMVR.mjs} +345 -134
- package/dist/chunk-RZ23BMVR.mjs.map +1 -0
- package/dist/chunk-UDUATSCJ.mjs +48 -0
- package/dist/chunk-UDUATSCJ.mjs.map +1 -0
- package/dist/{IRunner-BwzyUVIL.d.mts → eventStore-CTCSKS9E.d.ts} +916 -129
- package/dist/{IRunner-DjJkYwko.d.ts → eventStore-CcB8yELZ.d.mts} +916 -129
- package/dist/index.d.mts +677 -97
- package/dist/index.d.ts +677 -97
- package/dist/index.js +8233 -2450
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6951 -1772
- 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 +277 -21
- package/dist/parsing.js.map +1 -1
- package/dist/parsing.mjs +3 -3
- package/dist/plan-utils.d.mts +8 -5
- package/dist/plan-utils.d.ts +8 -5
- package/dist/plan-utils.js +129 -16
- package/dist/plan-utils.js.map +1 -1
- package/dist/plan-utils.mjs +17 -3
- package/dist/{runSettingsText-x-YML2ay.d.mts → runSettingsText-DFVpe6aU.d.mts} +1142 -934
- package/dist/{runSettingsText-CvZ40IPv.d.ts → runSettingsText-lKLDsyli.d.ts} +1142 -934
- package/dist/testing.d.mts +83 -4
- package/dist/testing.d.ts +83 -4
- package/dist/testing.js +142 -1
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +126 -2
- package/dist/testing.mjs.map +1 -1
- package/docker/task.Dockerfile +22 -0
- package/package.json +2 -1
- package/skills/diagnose/SKILL.md +2 -2
- package/skills/explore/SKILL.md +1 -1
- package/dist/chunk-BFLVOYNR.mjs.map +0 -1
- package/dist/chunk-BKTDYGIP.mjs.map +0 -1
- package/dist/chunk-F6WS3JLQ.mjs.map +0 -1
- package/dist/chunk-HP2LNKST.mjs.map +0 -1
package/dist/parsing.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parsePlanJson
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FX33UKAD.mjs";
|
|
4
4
|
import {
|
|
5
5
|
PlanParseError,
|
|
6
6
|
extractJsonObject,
|
|
7
7
|
stripModelNoise
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-2IFKPYPO.mjs";
|
|
9
|
+
import "./chunk-PKJTN2PD.mjs";
|
|
10
10
|
|
|
11
11
|
// src/services/PartialPlanParser.ts
|
|
12
12
|
function parsePartialPlan(partial) {
|
package/dist/plan-utils.d.mts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
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,
|
|
2
|
-
export { a as AttemptUsage,
|
|
3
|
-
|
|
4
|
-
import './ModeResolver-b_7bPlBS.mjs';
|
|
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, F as CommandBlock, J as CommandStatus, L as CompactionBlock, M as CompactionStatus, U as ConversationInput, Y as ConversationView, _ as DELEGATION_OFFERED, a2 as DiffRow, a3 as DiffRowKind, a4 as DiffStat, a5 as DisplayBlock, a6 as EMPTY_CONVERSATION, a7 as EMPTY_HOLD, a8 as EMPTY_RUN, a9 as EMPTY_TASK_LOG, aa as EMPTY_TASK_LOG_FOLLOW, ap as GatedConversation, at as HandoffBlock, au as HandoffForkRepo, av as HandoffPeekSubject, ax as IDLE_ACTIVITY, aB as IsolationPreviewNotice, aL as LocalEntry, aM as LoopCheckFacts, aN as LoopCheckState, aQ as MarkdownToken, aU as MessageBlock, aV as MessageRole, aX as NOT_STARTED, aY as NO_TURN, aZ as NewTaskFields, b6 as OutputPreview, b7 as OverrideDirection, b8 as PLANNED_WITH_LABEL, bc as PlanBlock, bd as PlanBlocks, bf as PlanMarkerStatus, bB as PromptHold, bC as REPORT_PREVIEW_LINES, bF as RefTask, c0 as RunnerLoadedBlock, c2 as STALLED_LABEL, c4 as STOPPING_LABEL, c5 as SUPERVISOR_LEVEL_LABEL, cq as SkillLoadBlock, cr as SkillToken, cw as SubagentBlock, cx as SubagentChild, cy as SubagentStatus, cB as SubtreeItemView, cC as SubtreeView, cM as TakenPrompt, cN as TaskAction, cO as TaskActivity, cR as TaskLogBatch, cT as TaskLogFollow, cU as TaskLogFollowInput, cV as TaskLogHeaderKind, cW as TaskLogHeaderTask, cX as TaskLogHeaderUsage, cY as TaskLogHeaderView, c_ as TaskLogView, d5 as TaskPlacement, d9 as TaskRef, dc as TaskRowAction, dd as TaskRowContext, de as TaskRowDelegated, df as TaskRowHandoff, dg as TaskRowIsolation, dh as TaskRowKind, di as TaskRowLoop, dj as TaskRowPlacement, dk as TaskRowSubject, dl as TaskRowUsage, dm as TaskRowView, dn as TaskRunFacts, dp as TaskStatusKind, dq as ThinkingDisplayBlock, dr as ToolBlock, ds as ToolHeadline, dt as ToolStatus, dv as TreeTask, dx as TurnGate, dy as UsageBlock, dA as WAITS_FOR_APPROVAL_LABEL, dB as WakeUpItem, dJ as accountLimitPercentText, dK as accountLimitWindowLabel, dL as accountLimitsOf, dM as accountLimitsText, dN as accountLimitsTitle, dO as activityLabel, dP as aheadOfDraft, dR as approvalKindText, dS as approvalLabel, dT as approvalStatusText, dU as assignedRunnerOf, dV as assignmentIssue, dW as assignmentIssueText, dX as attachingLabel, d_ as awaitingLabel, d$ as blockNotice, e0 as blockNotices, e1 as blockedByLabel, e2 as blockingFailures, e3 as canMergeTasks, e4 as canSetDependencies, e5 as canSplitTask, e6 as capConflictFiles, e7 as cardEditNeedsUnstarted, e8 as cardEditable, eb as closeTurn, ed as compactionText, ee as confirmedOverride, eg as delegatedRowView, ei as dependencyCandidates, ej as dependentsNotice, ek as dependentsOf, en as describeIsolationPreview, eo as describeMergeResult, eq as diffRows, er as diffStat, es as diffSummary, eu as drainNext, ev as editableWhileRunning, ew as elapsedSince, ez as followTaskLog, eA as followTurn, eB as formatElapsed, eC as fromTranscript, eE as handoffBaseLine, eF as handoffBranchName, eG as handoffFindingsText, eH as handoffPeekParts, eI as hasAccountLimits, eJ as hasHiddenDetail, eK as hasLongReport, eL as holdLabel, eM as holdPrompt, eN as isFileEditTool, eO as isRepoGroup, eP as isTaskRunning, eR as loadedSkillTokens, eS as logContinues, eT as logResumes, eU as loopBodyLabel, eV as loopBodyRound, eW as loopCheckLabel, eX as loopCheckState, eY as loopLeaveNotice, eZ as loopRowParts, e_ as manualOverrideConfirmation, e$ as manualOverrideStopFirst, f1 as markAction, f2 as markdownHtml, f3 as markdownTokens, f4 as mergeOutcome, f5 as mergePastChecksConfirmation, f7 as namedRepos, f8 as newTaskFields, f9 as noExecutorRefusal, fc as opsEditable, fd as outputLines, fe as outputPreview, ff as overrideNeedsConfirmation, fg as parseCount, fl as pastGateConfirmation, fm as planBlocks, fn as planMarkerParts, fv as receiptLabel, fw as reconcileApprovals, fz as reduceConversation, fB as reduceTaskLog, fD as repairWaitLabel, fE as repairedLanded, fF as repairedNotice, fG as repeatingChecks, fH as replayTaskLog, fI as repoBaseLine, fJ as repoResultLines, fN as resolveTaskRef, fO as resolveUserTaskRef, fP as resumeLabel, fQ as resumeTime, fR as revertEffect, fS as revertListLine, fT as revertTaskRef, fU as runHoldsEditors, fW as runnerToolSubject, g1 as skillTokens, g2 as skippedLabel, g3 as stopTurn, g4 as subtreeIds, g5 as subtreeView, g6 as summarizeToolCall, ga as takeAt, gb as taskActionCommand, gc as taskActivity, gd as taskChatAvailable, ge as taskLogCommands, gg as taskLogHeaderView, gh as taskOrderLabel, gi as taskPlacement, gk as taskRef, gl as taskRefOf, gm as taskRowActions, gn as taskRowView, go as taskStartedNotice, gp as taskStatusKind, gs as titledRefs, gt as titledTaskRef, gu as titledTaskRefOf, gw as toolHeadline, gz as truncateCheckpointSummary, gA as unsendAll, gB as unsendLatest, gC as wakeUpItems, gD as walkPlan } from './runSettingsText-DFVpe6aU.mjs';
|
|
2
|
+
export { a as AttemptUsage, g as ContextFill, i as CostProvenance, k as DEFAULT_RUNNERS, t as FindingSeverity, z as HandoffArtifact, K as HandoffDigest, L as HandoffEvidence, M as HandoffFinding, ar as ModelUsage, av as PatchView, aA as PlanUsage, aG as PlannerUsage, aV as ReportedWindow, b4 as RunnerSessionCost, b5 as SEVERITY_LABEL, ba as SessionBilling, bl as StoredHandoff, bv as TaskLoop, bD as TaskUsageSummary, bF as UsageLine, bG as UsageRecord, bH as UsageTotals, bM as addAttemptUsage, bN as addModelUsage, bO as addPlannerUsage, bP as addUsage, bQ as addUsageTotals, bS as betweenRounds, bW as checkOf, bZ as contextMeterText, b_ as contextMeterTitle, b$ as costText, c0 as countedSessionCost, c5 as endAttemptUsage, ca as formatCost, cb as formatTokenCount, cf as handoffReferenceText, cj as heldWords, cm as isMeasured, cp as loopRemovalRefusal, cq as loopRoundOf, ct as modelCostTitle, cy as outOfRounds, cD as partedPromptUsage, cJ as patchView, cK as pausedOnLimit, cM as planUsage, cN as plannerContextFill, cS as resumedSessionWindow, cW as savedPatchView, cX as savedPatchViews, c$ as scriptTaskText, d0 as severityLabel, d1 as spentTokens, d2 as startAttemptUsage, d4 as subagentCostTitle, d5 as taskUsageSummary, d6 as tasksTotalText, d9 as usageLine, da as usageText, de as worstSeverity } from './Task-CxGgN6I0.mjs';
|
|
3
|
+
import './eventStore-CcB8yELZ.mjs';
|
|
5
4
|
import 'child_process';
|
|
6
5
|
import 'zod/v4';
|
|
6
|
+
import './ModeResolver-CA2fUU9h.mjs';
|
|
7
|
+
|
|
8
|
+
/** A name or a path on a line of Ordewell's: as it stands, or quoted where it would break that line. */
|
|
9
|
+
declare function onOneLine(text: string): string;
|
|
7
10
|
|
|
8
11
|
/**
|
|
9
12
|
* The one rule for an effort and a model: the effort a task keeps on a model,
|
|
@@ -19,4 +22,4 @@ declare function clampThinkingEffort(effort: string | undefined, variants: {
|
|
|
19
22
|
id: string;
|
|
20
23
|
}[]): string | undefined;
|
|
21
24
|
|
|
22
|
-
export { clampThinkingEffort };
|
|
25
|
+
export { clampThinkingEffort, onOneLine };
|
package/dist/plan-utils.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
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,
|
|
2
|
-
export { a as AttemptUsage,
|
|
3
|
-
|
|
4
|
-
import './ModeResolver-CHsaoV7M.js';
|
|
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, F as CommandBlock, J as CommandStatus, L as CompactionBlock, M as CompactionStatus, U as ConversationInput, Y as ConversationView, _ as DELEGATION_OFFERED, a2 as DiffRow, a3 as DiffRowKind, a4 as DiffStat, a5 as DisplayBlock, a6 as EMPTY_CONVERSATION, a7 as EMPTY_HOLD, a8 as EMPTY_RUN, a9 as EMPTY_TASK_LOG, aa as EMPTY_TASK_LOG_FOLLOW, ap as GatedConversation, at as HandoffBlock, au as HandoffForkRepo, av as HandoffPeekSubject, ax as IDLE_ACTIVITY, aB as IsolationPreviewNotice, aL as LocalEntry, aM as LoopCheckFacts, aN as LoopCheckState, aQ as MarkdownToken, aU as MessageBlock, aV as MessageRole, aX as NOT_STARTED, aY as NO_TURN, aZ as NewTaskFields, b6 as OutputPreview, b7 as OverrideDirection, b8 as PLANNED_WITH_LABEL, bc as PlanBlock, bd as PlanBlocks, bf as PlanMarkerStatus, bB as PromptHold, bC as REPORT_PREVIEW_LINES, bF as RefTask, c0 as RunnerLoadedBlock, c2 as STALLED_LABEL, c4 as STOPPING_LABEL, c5 as SUPERVISOR_LEVEL_LABEL, cq as SkillLoadBlock, cr as SkillToken, cw as SubagentBlock, cx as SubagentChild, cy as SubagentStatus, cB as SubtreeItemView, cC as SubtreeView, cM as TakenPrompt, cN as TaskAction, cO as TaskActivity, cR as TaskLogBatch, cT as TaskLogFollow, cU as TaskLogFollowInput, cV as TaskLogHeaderKind, cW as TaskLogHeaderTask, cX as TaskLogHeaderUsage, cY as TaskLogHeaderView, c_ as TaskLogView, d5 as TaskPlacement, d9 as TaskRef, dc as TaskRowAction, dd as TaskRowContext, de as TaskRowDelegated, df as TaskRowHandoff, dg as TaskRowIsolation, dh as TaskRowKind, di as TaskRowLoop, dj as TaskRowPlacement, dk as TaskRowSubject, dl as TaskRowUsage, dm as TaskRowView, dn as TaskRunFacts, dp as TaskStatusKind, dq as ThinkingDisplayBlock, dr as ToolBlock, ds as ToolHeadline, dt as ToolStatus, dv as TreeTask, dx as TurnGate, dy as UsageBlock, dA as WAITS_FOR_APPROVAL_LABEL, dB as WakeUpItem, dJ as accountLimitPercentText, dK as accountLimitWindowLabel, dL as accountLimitsOf, dM as accountLimitsText, dN as accountLimitsTitle, dO as activityLabel, dP as aheadOfDraft, dR as approvalKindText, dS as approvalLabel, dT as approvalStatusText, dU as assignedRunnerOf, dV as assignmentIssue, dW as assignmentIssueText, dX as attachingLabel, d_ as awaitingLabel, d$ as blockNotice, e0 as blockNotices, e1 as blockedByLabel, e2 as blockingFailures, e3 as canMergeTasks, e4 as canSetDependencies, e5 as canSplitTask, e6 as capConflictFiles, e7 as cardEditNeedsUnstarted, e8 as cardEditable, eb as closeTurn, ed as compactionText, ee as confirmedOverride, eg as delegatedRowView, ei as dependencyCandidates, ej as dependentsNotice, ek as dependentsOf, en as describeIsolationPreview, eo as describeMergeResult, eq as diffRows, er as diffStat, es as diffSummary, eu as drainNext, ev as editableWhileRunning, ew as elapsedSince, ez as followTaskLog, eA as followTurn, eB as formatElapsed, eC as fromTranscript, eE as handoffBaseLine, eF as handoffBranchName, eG as handoffFindingsText, eH as handoffPeekParts, eI as hasAccountLimits, eJ as hasHiddenDetail, eK as hasLongReport, eL as holdLabel, eM as holdPrompt, eN as isFileEditTool, eO as isRepoGroup, eP as isTaskRunning, eR as loadedSkillTokens, eS as logContinues, eT as logResumes, eU as loopBodyLabel, eV as loopBodyRound, eW as loopCheckLabel, eX as loopCheckState, eY as loopLeaveNotice, eZ as loopRowParts, e_ as manualOverrideConfirmation, e$ as manualOverrideStopFirst, f1 as markAction, f2 as markdownHtml, f3 as markdownTokens, f4 as mergeOutcome, f5 as mergePastChecksConfirmation, f7 as namedRepos, f8 as newTaskFields, f9 as noExecutorRefusal, fc as opsEditable, fd as outputLines, fe as outputPreview, ff as overrideNeedsConfirmation, fg as parseCount, fl as pastGateConfirmation, fm as planBlocks, fn as planMarkerParts, fv as receiptLabel, fw as reconcileApprovals, fz as reduceConversation, fB as reduceTaskLog, fD as repairWaitLabel, fE as repairedLanded, fF as repairedNotice, fG as repeatingChecks, fH as replayTaskLog, fI as repoBaseLine, fJ as repoResultLines, fN as resolveTaskRef, fO as resolveUserTaskRef, fP as resumeLabel, fQ as resumeTime, fR as revertEffect, fS as revertListLine, fT as revertTaskRef, fU as runHoldsEditors, fW as runnerToolSubject, g1 as skillTokens, g2 as skippedLabel, g3 as stopTurn, g4 as subtreeIds, g5 as subtreeView, g6 as summarizeToolCall, ga as takeAt, gb as taskActionCommand, gc as taskActivity, gd as taskChatAvailable, ge as taskLogCommands, gg as taskLogHeaderView, gh as taskOrderLabel, gi as taskPlacement, gk as taskRef, gl as taskRefOf, gm as taskRowActions, gn as taskRowView, go as taskStartedNotice, gp as taskStatusKind, gs as titledRefs, gt as titledTaskRef, gu as titledTaskRefOf, gw as toolHeadline, gz as truncateCheckpointSummary, gA as unsendAll, gB as unsendLatest, gC as wakeUpItems, gD as walkPlan } from './runSettingsText-lKLDsyli.js';
|
|
2
|
+
export { a as AttemptUsage, g as ContextFill, i as CostProvenance, k as DEFAULT_RUNNERS, t as FindingSeverity, z as HandoffArtifact, K as HandoffDigest, L as HandoffEvidence, M as HandoffFinding, ar as ModelUsage, av as PatchView, aA as PlanUsage, aG as PlannerUsage, aV as ReportedWindow, b4 as RunnerSessionCost, b5 as SEVERITY_LABEL, ba as SessionBilling, bl as StoredHandoff, bv as TaskLoop, bD as TaskUsageSummary, bF as UsageLine, bG as UsageRecord, bH as UsageTotals, bM as addAttemptUsage, bN as addModelUsage, bO as addPlannerUsage, bP as addUsage, bQ as addUsageTotals, bS as betweenRounds, bW as checkOf, bZ as contextMeterText, b_ as contextMeterTitle, b$ as costText, c0 as countedSessionCost, c5 as endAttemptUsage, ca as formatCost, cb as formatTokenCount, cf as handoffReferenceText, cj as heldWords, cm as isMeasured, cp as loopRemovalRefusal, cq as loopRoundOf, ct as modelCostTitle, cy as outOfRounds, cD as partedPromptUsage, cJ as patchView, cK as pausedOnLimit, cM as planUsage, cN as plannerContextFill, cS as resumedSessionWindow, cW as savedPatchView, cX as savedPatchViews, c$ as scriptTaskText, d0 as severityLabel, d1 as spentTokens, d2 as startAttemptUsage, d4 as subagentCostTitle, d5 as taskUsageSummary, d6 as tasksTotalText, d9 as usageLine, da as usageText, de as worstSeverity } from './Task-CxGgN6I0.js';
|
|
3
|
+
import './eventStore-CTCSKS9E.js';
|
|
5
4
|
import 'child_process';
|
|
6
5
|
import 'zod/v4';
|
|
6
|
+
import './ModeResolver-B64aUZXJ.js';
|
|
7
|
+
|
|
8
|
+
/** A name or a path on a line of Ordewell's: as it stands, or quoted where it would break that line. */
|
|
9
|
+
declare function onOneLine(text: string): string;
|
|
7
10
|
|
|
8
11
|
/**
|
|
9
12
|
* The one rule for an effort and a model: the effort a task keeps on a model,
|
|
@@ -19,4 +22,4 @@ declare function clampThinkingEffort(effort: string | undefined, variants: {
|
|
|
19
22
|
id: string;
|
|
20
23
|
}[]): string | undefined;
|
|
21
24
|
|
|
22
|
-
export { clampThinkingEffort };
|
|
25
|
+
export { clampThinkingEffort, onOneLine };
|
package/dist/plan-utils.js
CHANGED
|
@@ -45,6 +45,7 @@ __export(plan_utils_exports, {
|
|
|
45
45
|
REPORT_PREVIEW_LINES: () => REPORT_PREVIEW_LINES,
|
|
46
46
|
SEVERITY_LABEL: () => SEVERITY_LABEL,
|
|
47
47
|
STALLED_LABEL: () => STALLED_LABEL,
|
|
48
|
+
STOPPING_LABEL: () => STOPPING_LABEL,
|
|
48
49
|
SUPERVISOR_LEVEL_LABEL: () => SUPERVISOR_LEVEL_LABEL,
|
|
49
50
|
WAITS_FOR_APPROVAL_LABEL: () => WAITS_FOR_APPROVAL_LABEL,
|
|
50
51
|
accountLimitPercentText: () => accountLimitPercentText,
|
|
@@ -87,6 +88,7 @@ __export(plan_utils_exports, {
|
|
|
87
88
|
contextMeterTitle: () => contextMeterTitle,
|
|
88
89
|
costText: () => costText,
|
|
89
90
|
countedSessionCost: () => countedSessionCost,
|
|
91
|
+
delegatedRowView: () => delegatedRowView,
|
|
90
92
|
dependencyCandidates: () => dependencyCandidates,
|
|
91
93
|
dependentsNotice: () => dependentsNotice,
|
|
92
94
|
dependentsOf: () => dependentsOf,
|
|
@@ -113,6 +115,7 @@ __export(plan_utils_exports, {
|
|
|
113
115
|
hasAccountLimits: () => hasAccountLimits,
|
|
114
116
|
hasHiddenDetail: () => hasHiddenDetail,
|
|
115
117
|
hasLongReport: () => hasLongReport,
|
|
118
|
+
heldWords: () => heldWords,
|
|
116
119
|
holdLabel: () => holdLabel,
|
|
117
120
|
holdPrompt: () => holdPrompt,
|
|
118
121
|
isFileEditTool: () => isFileEditTool,
|
|
@@ -136,10 +139,12 @@ __export(plan_utils_exports, {
|
|
|
136
139
|
markdownHtml: () => markdownHtml,
|
|
137
140
|
markdownTokens: () => markdownTokens,
|
|
138
141
|
mergeOutcome: () => mergeOutcome,
|
|
142
|
+
mergePastChecksConfirmation: () => mergePastChecksConfirmation,
|
|
139
143
|
modelCostTitle: () => modelCostTitle,
|
|
140
144
|
namedRepos: () => namedRepos,
|
|
141
145
|
newTaskFields: () => newTaskFields,
|
|
142
146
|
noExecutorRefusal: () => noExecutorRefusal,
|
|
147
|
+
onOneLine: () => onOneLine,
|
|
143
148
|
opsEditable: () => opsEditable,
|
|
144
149
|
outOfRounds: () => outOfRounds,
|
|
145
150
|
outputLines: () => outputLines,
|
|
@@ -181,10 +186,12 @@ __export(plan_utils_exports, {
|
|
|
181
186
|
severityLabel: () => severityLabel,
|
|
182
187
|
skillTokens: () => skillTokens,
|
|
183
188
|
skippedLabel: () => skippedLabel,
|
|
189
|
+
spentTokens: () => spentTokens,
|
|
184
190
|
startAttemptUsage: () => startAttemptUsage,
|
|
185
191
|
stopTurn: () => stopTurn,
|
|
186
192
|
subagentCostTitle: () => subagentCostTitle,
|
|
187
193
|
subtreeIds: () => subtreeIds,
|
|
194
|
+
subtreeView: () => subtreeView,
|
|
188
195
|
summarizeToolCall: () => summarizeToolCall,
|
|
189
196
|
takeAt: () => takeAt,
|
|
190
197
|
taskActionCommand: () => taskActionCommand,
|
|
@@ -405,6 +412,7 @@ var STALLED_LABEL = "Stalled";
|
|
|
405
412
|
var AWAITING_LABELS = {
|
|
406
413
|
input: "Waiting for your input",
|
|
407
414
|
checkpoint: "Checkpoint",
|
|
415
|
+
"question-lost": "Question lost in a restart",
|
|
408
416
|
conflict: "Merge conflict",
|
|
409
417
|
"files-changed": "Changed tracked files",
|
|
410
418
|
"usage-limit": "Paused on a usage limit"
|
|
@@ -589,10 +597,25 @@ function loopRemovalRefusal(task) {
|
|
|
589
597
|
return task.loop ? `"${task.title}" is a loop's check: remove its body tasks first, or drop its loop ("loop": null), so they do not run on their own` : null;
|
|
590
598
|
}
|
|
591
599
|
function loopReshapeRefusal(tasks, target, action) {
|
|
600
|
+
if (target.type === "delegated") return `"${target.title}" is a delegated task and cannot be ${action}: remove it and add what should replace it`;
|
|
592
601
|
if (target.loop) return `"${target.title}" is a loop's check and cannot be ${action}: drop its loop first ("loop": null)`;
|
|
593
602
|
return checkOf(tasks, target.id) ? `"${target.title}" is in a loop's body and cannot be ${action}: take it out of the loop first` : null;
|
|
594
603
|
}
|
|
595
604
|
|
|
605
|
+
// src/models/lineBreaks.ts
|
|
606
|
+
var BREAKS = "\\n\\v\\f\\r\\u0085\\u2028\\u2029";
|
|
607
|
+
var LINE_BREAK = new RegExp(`\\r\\n|[${BREAKS}]`);
|
|
608
|
+
var ONE_LINE = new RegExp(`^[^${BREAKS}]*$`);
|
|
609
|
+
function splitLines(text2) {
|
|
610
|
+
return text2.split(LINE_BREAK);
|
|
611
|
+
}
|
|
612
|
+
function quotedLine(text2) {
|
|
613
|
+
return JSON.stringify(text2).replace(/[\u0085\u2028\u2029]/g, (char) => `\\u${char.charCodeAt(0).toString(16).padStart(4, "0")}`);
|
|
614
|
+
}
|
|
615
|
+
function onOneLine(text2) {
|
|
616
|
+
return ONE_LINE.test(text2) ? text2 : quotedLine(text2);
|
|
617
|
+
}
|
|
618
|
+
|
|
596
619
|
// src/services/PlannedTask.ts
|
|
597
620
|
function findCycle(tasks) {
|
|
598
621
|
return findDependencyCycle(tasks);
|
|
@@ -1043,7 +1066,8 @@ function truncateCheckpointSummary(summary) {
|
|
|
1043
1066
|
|
|
1044
1067
|
// src/services/conflictFiles.ts
|
|
1045
1068
|
function capConflictFiles(files, max = 5) {
|
|
1046
|
-
|
|
1069
|
+
const named = files.map(onOneLine);
|
|
1070
|
+
return named.length <= max ? named.join(", ") : `${named.slice(0, max).join(", ")}, +${named.length - max} more`;
|
|
1047
1071
|
}
|
|
1048
1072
|
|
|
1049
1073
|
// src/services/mergeResultNotice.ts
|
|
@@ -1191,11 +1215,33 @@ function handoffBaseLine(handoff, length) {
|
|
|
1191
1215
|
function repoResultLines(handoff) {
|
|
1192
1216
|
return handoff.repos.map(({ path, landed }) => `${path}: ${landed.length === 0 ? "nothing to merge" : `${landed.length} task${landed.length === 1 ? "" : "s"} landed`}`);
|
|
1193
1217
|
}
|
|
1218
|
+
function mergePastChecksConfirmation(checks) {
|
|
1219
|
+
return `This merges work no check has passed: ${checks.join(", ")} ${checks.length === 1 ? "has" : "have"} not.`;
|
|
1220
|
+
}
|
|
1194
1221
|
|
|
1195
1222
|
// src/services/runSettingsText.ts
|
|
1196
1223
|
var SUPERVISOR_LEVEL_LABEL = { off: "Off", watch: "Watch", act: "Act" };
|
|
1197
1224
|
var PLANNED_WITH_LABEL = "Planned-with line in commits Ordewell writes";
|
|
1198
|
-
var
|
|
1225
|
+
var DELEGATION_ENV = "ORDEWELL_DELEGATION";
|
|
1226
|
+
function delegationSwitchedOn({ env, moduleDir, exists }) {
|
|
1227
|
+
if (env !== "1" || moduleDir === null) return false;
|
|
1228
|
+
const parts = moduleDir.split(/[\\/]/);
|
|
1229
|
+
if (parts.includes("node_modules")) return false;
|
|
1230
|
+
const packages = parts.lastIndexOf("packages");
|
|
1231
|
+
if (packages < 1) return false;
|
|
1232
|
+
const root = parts.slice(0, packages).join("/");
|
|
1233
|
+
return exists(`${root}/.git`) && exists(`${root}/packages/core/package.json`);
|
|
1234
|
+
}
|
|
1235
|
+
function placeHere(variable) {
|
|
1236
|
+
const fs = typeof process === "undefined" ? void 0 : process.getBuiltinModule?.("fs");
|
|
1237
|
+
if (!fs) return { env: void 0, moduleDir: null, exists: () => false };
|
|
1238
|
+
const file = typeof __filename !== "undefined" ? __filename : new URL(
|
|
1239
|
+
// @ts-expect-error - import.meta is only valid under an ESM module setting; see builtinSkills.ts
|
|
1240
|
+
__filename
|
|
1241
|
+
).pathname;
|
|
1242
|
+
return { env: process.env[variable], moduleDir: file.replace(/[\\/][^\\/]*$/, ""), exists: (path) => fs.existsSync(path) };
|
|
1243
|
+
}
|
|
1244
|
+
var DELEGATION_OFFERED = delegationSwitchedOn(placeHere(DELEGATION_ENV));
|
|
1199
1245
|
function parseCount(arg, min) {
|
|
1200
1246
|
if (arg === void 0 || !/^\d+$/.test(arg)) return null;
|
|
1201
1247
|
const n = Number(arg);
|
|
@@ -1204,18 +1250,21 @@ function parseCount(arg, min) {
|
|
|
1204
1250
|
|
|
1205
1251
|
// src/models/Usage.ts
|
|
1206
1252
|
function partedPromptUsage(parts) {
|
|
1207
|
-
const
|
|
1253
|
+
const reported2 = [parts.uncached, parts.cacheRead, parts.cacheWrite].filter((n) => n !== void 0);
|
|
1208
1254
|
return {
|
|
1209
|
-
...
|
|
1255
|
+
...reported2.length > 0 ? { inputTokens: reported2.reduce((a, b) => a + b, 0) } : {},
|
|
1210
1256
|
...parts.cacheRead !== void 0 ? { cachedInputTokens: parts.cacheRead } : {}
|
|
1211
1257
|
};
|
|
1212
1258
|
}
|
|
1213
1259
|
var TOKEN_FIELDS = ["inputTokens", "outputTokens", "cachedInputTokens"];
|
|
1260
|
+
function spentTokens({ inputTokens, outputTokens }) {
|
|
1261
|
+
return (inputTokens ?? 0) + (outputTokens ?? 0);
|
|
1262
|
+
}
|
|
1214
1263
|
function addUsage(totals, record) {
|
|
1215
1264
|
const next = { ...totals };
|
|
1216
1265
|
for (const field of TOKEN_FIELDS) {
|
|
1217
|
-
const
|
|
1218
|
-
if (
|
|
1266
|
+
const reported2 = record[field];
|
|
1267
|
+
if (reported2 !== void 0) next[field] = (totals[field] ?? 0) + reported2;
|
|
1219
1268
|
}
|
|
1220
1269
|
if (record.reportedCost) {
|
|
1221
1270
|
const { amount, currency } = record.reportedCost;
|
|
@@ -1359,7 +1408,7 @@ function planUsage(tasks) {
|
|
|
1359
1408
|
function taskUsageSummary(task) {
|
|
1360
1409
|
const attempts = task.attemptUsage ?? [];
|
|
1361
1410
|
const latest = attempts.at(-1);
|
|
1362
|
-
const contextFill = latest ? plannerContextFill(latest) : void 0;
|
|
1411
|
+
const contextFill = latest && task.type !== "delegated" ? plannerContextFill(latest) : void 0;
|
|
1363
1412
|
return {
|
|
1364
1413
|
totals: attempts.reduce((sum, attempt) => addUsageTotals(sum, attempt.totals), {}),
|
|
1365
1414
|
attempts: attempts.length,
|
|
@@ -2471,19 +2520,23 @@ function worstSeverity(findings) {
|
|
|
2471
2520
|
}
|
|
2472
2521
|
return worst;
|
|
2473
2522
|
}
|
|
2523
|
+
var ROOT_NODE = "root";
|
|
2524
|
+
function nodeText(node) {
|
|
2525
|
+
return node.startsWith(`${ROOT_NODE}/`) ? node.slice(ROOT_NODE.length + 1) : node;
|
|
2526
|
+
}
|
|
2474
2527
|
function findingRefText(task, ref) {
|
|
2475
2528
|
return `${task}${ref.attempt !== void 0 ? `@${ref.attempt}` : ""}${ref.finding ? `/${ref.finding}` : ""}`;
|
|
2476
2529
|
}
|
|
2477
2530
|
function handoffReferenceText(ref, taskName = () => void 0) {
|
|
2478
2531
|
switch (ref.kind) {
|
|
2479
2532
|
case "file":
|
|
2480
|
-
return `${ref.line !== void 0 ? `${ref.path}:${ref.line}` : ref.path}${ref.resolved === true ? "" : " (unresolved)"}`;
|
|
2533
|
+
return `${onOneLine(ref.line !== void 0 ? `${ref.path}:${ref.line}` : ref.path)}${ref.resolved === true ? "" : " (unresolved)"}`;
|
|
2481
2534
|
case "commit":
|
|
2482
|
-
return `commit ${ref.sha}${ref.repo ? ` in ${ref.repo}` : ""}${ref.resolved === true ? "" : " (unresolved)"}`;
|
|
2535
|
+
return `commit ${ref.sha}${ref.repo ? ` in ${onOneLine(ref.repo)}` : ""}${ref.resolved === true ? "" : " (unresolved)"}`;
|
|
2483
2536
|
case "task":
|
|
2484
|
-
return findingRefText(taskName(ref.task) ?? ref.task, ref);
|
|
2537
|
+
return onOneLine(findingRefText(ref.label !== void 0 ? `${nodeText(ref.node ?? ROOT_NODE)}:${ref.label}` : taskName(ref.task) ?? ref.task, ref));
|
|
2485
2538
|
case "url":
|
|
2486
|
-
return ref.url;
|
|
2539
|
+
return onOneLine(ref.url);
|
|
2487
2540
|
case "patch":
|
|
2488
2541
|
return patchText(ref);
|
|
2489
2542
|
}
|
|
@@ -2503,7 +2556,7 @@ function byteSize(bytes) {
|
|
|
2503
2556
|
}
|
|
2504
2557
|
function patchFlagText(flag) {
|
|
2505
2558
|
const more = flag.count - flag.paths.length;
|
|
2506
|
-
return `${FLAG_WORDS[flag.kind]}: ${counted(flag.count, "file")}${flag.paths.length ? ` (${flag.paths.join(", ")}${more > 0 ? `, +${more} more` : ""})` : ""}`;
|
|
2559
|
+
return `${FLAG_WORDS[flag.kind]}: ${counted(flag.count, "file")}${flag.paths.length ? ` (${flag.paths.map(onOneLine).join(", ")}${more > 0 ? `, +${more} more` : ""})` : ""}`;
|
|
2507
2560
|
}
|
|
2508
2561
|
function patchChangesText(patch) {
|
|
2509
2562
|
const binary = patch.binary > 0 ? `, ${patch.binary} binary` : "";
|
|
@@ -2534,6 +2587,9 @@ function savedPatchViews(handoff) {
|
|
|
2534
2587
|
function savedPatchView(handoff) {
|
|
2535
2588
|
return savedPatchViews(handoff)[0] ?? null;
|
|
2536
2589
|
}
|
|
2590
|
+
function heldWords(text2) {
|
|
2591
|
+
return splitLines(text2).map((line) => line ? ` ${line}` : line);
|
|
2592
|
+
}
|
|
2537
2593
|
|
|
2538
2594
|
// src/conversation/labels.ts
|
|
2539
2595
|
var APPROVAL_KIND_TEXT = {
|
|
@@ -2905,11 +2961,11 @@ function opsEditable(task) {
|
|
|
2905
2961
|
|
|
2906
2962
|
// src/services/AssignmentScope.ts
|
|
2907
2963
|
function assignedRunnerOf(task) {
|
|
2908
|
-
return task.type === "ai" ? task.assignedRunner || void 0 : void 0;
|
|
2964
|
+
return task.type === "ai" || task.type === "delegated" ? task.assignedRunner || void 0 : void 0;
|
|
2909
2965
|
}
|
|
2910
2966
|
var OVER = /* @__PURE__ */ new Set(["completed", "skipped"]);
|
|
2911
2967
|
function assignmentIssue(task, scope) {
|
|
2912
|
-
if (task.type !== "ai" || OVER.has(task.status)) return null;
|
|
2968
|
+
if (task.type !== "ai" && task.type !== "delegated" || OVER.has(task.status)) return null;
|
|
2913
2969
|
if (!scope.enabledRunners.includes(task.assignedRunner)) return { kind: "runner-off", runner: task.assignedRunner };
|
|
2914
2970
|
const model = task.assignedModel;
|
|
2915
2971
|
const allowed = effectiveAllowlist(scope.allowlist[task.assignedRunner], task.assignedRunner, scope.models);
|
|
@@ -2931,6 +2987,54 @@ function assignmentConsequence({ status, awaitingReason, resumeAt }) {
|
|
|
2931
2987
|
return "runs as assigned unless moved";
|
|
2932
2988
|
}
|
|
2933
2989
|
|
|
2990
|
+
// src/taskRow/delegated.ts
|
|
2991
|
+
var STOPPING_LABEL = "Stopping: its child plan is still winding down.";
|
|
2992
|
+
function countsText({ completed, running, waiting, pending, failed, skipped }) {
|
|
2993
|
+
const total = completed + running + waiting + pending + failed + skipped;
|
|
2994
|
+
const said = [[running, "running"], [waiting, "waiting"], [failed, "failed"], [skipped, "skipped"]];
|
|
2995
|
+
return [`${completed} of ${total} done`, ...said.filter(([n]) => n > 0).map(([n, word]) => `${n} ${word}`)].join(", ");
|
|
2996
|
+
}
|
|
2997
|
+
function reported(handoff) {
|
|
2998
|
+
const counts = handoff?.subtree?.counts;
|
|
2999
|
+
return counts && { completed: counts.done, running: 0, waiting: 0, pending: counts.blocked, failed: counts.failed, skipped: counts.skipped };
|
|
3000
|
+
}
|
|
3001
|
+
function delegatedRowView(task) {
|
|
3002
|
+
if (task.type !== "delegated") return null;
|
|
3003
|
+
const { delegation } = task;
|
|
3004
|
+
const counts = delegation?.tasks ?? reported(task.handoff);
|
|
3005
|
+
return {
|
|
3006
|
+
goal: task.goal?.trim() || null,
|
|
3007
|
+
tokens: delegation?.tokens ? `${formatTokenCount(delegation.tokens.left)} of ${formatTokenCount(delegation.tokens.budget)} tokens left` : null,
|
|
3008
|
+
counts: counts ? countsText(counts) : null,
|
|
3009
|
+
stopping: delegation?.stopping ? STOPPING_LABEL : null
|
|
3010
|
+
};
|
|
3011
|
+
}
|
|
3012
|
+
var SEVERITIES = ["blocker", "major", "minor", "info"];
|
|
3013
|
+
function itemView({ ref, finding }) {
|
|
3014
|
+
return {
|
|
3015
|
+
reference: ref ? handoffReferenceText(ref) : null,
|
|
3016
|
+
heading: `${finding.id} \xB7 ${severityLabel(finding.severity)} \xB7 ${onOneLine(finding.title)}`,
|
|
3017
|
+
...finding.detail ? { detail: finding.detail } : {}
|
|
3018
|
+
};
|
|
3019
|
+
}
|
|
3020
|
+
function subtreeView(subtree) {
|
|
3021
|
+
const { counts, findings, outsideScope } = subtree;
|
|
3022
|
+
const ran = [["done", counts.done], ["failed", counts.failed], ["blocked", counts.blocked], ["skipped", counts.skipped]].filter(([, n]) => n > 0).map(([word, n]) => `${n} ${word}`).join(", ");
|
|
3023
|
+
const found = SEVERITIES.filter((severity) => findings[severity] > 0).map((severity) => `${findings[severity]} ${severity}`).join(", ");
|
|
3024
|
+
const summary = [
|
|
3025
|
+
ran || "nothing ran",
|
|
3026
|
+
...counts.commits > 0 ? [`${counts.commits} commit${counts.commits === 1 ? "" : "s"}`] : [],
|
|
3027
|
+
`${formatTokenCount(counts.tokens)} tokens`,
|
|
3028
|
+
found ? `${found} finding${SEVERITIES.reduce((n, s) => n + findings[s], 0) === 1 ? "" : "s"} below` : "no findings below"
|
|
3029
|
+
].join(" \xB7 ");
|
|
3030
|
+
return {
|
|
3031
|
+
summary,
|
|
3032
|
+
outsideScope: outsideScope && outsideScope.count > 0 ? `Changed outside its declared scope: ${outsideScope.paths.map(onOneLine).join(", ")}${outsideScope.count > outsideScope.paths.length ? ` (+${outsideScope.count - outsideScope.paths.length} more)` : ""}` : null,
|
|
3033
|
+
open: subtree.open.map(itemView),
|
|
3034
|
+
promoted: subtree.promoted.map(itemView)
|
|
3035
|
+
};
|
|
3036
|
+
}
|
|
3037
|
+
|
|
2934
3038
|
// src/taskRow/loop.ts
|
|
2935
3039
|
function loopCheckState(check, goesOn) {
|
|
2936
3040
|
switch (check.status) {
|
|
@@ -3051,9 +3155,10 @@ function taskRowView(task, context = {}) {
|
|
|
3051
3155
|
const blocked = blockedBy(task, reading);
|
|
3052
3156
|
const loop = loopOf(task, reading);
|
|
3053
3157
|
return {
|
|
3158
|
+
delegated: delegatedRowView(task),
|
|
3054
3159
|
usage: latestAttempt ? { totals: spend.totals, ...spend.contextFill ? { contextFill: spend.contextFill } : {}, attempt: latestAttempt.attempt } : task.type === "ai" && ["completed", "failed", "in_progress", "awaiting_user"].includes(task.status) ? { totals: {}, attempt: 0 } : null,
|
|
3055
3160
|
orderLabel: taskOrderLabel(task, parent),
|
|
3056
|
-
kind: task.type === "user" ? "user" : task.type === "script" ? "script" : task.ops ? "ops" : "ai",
|
|
3161
|
+
kind: task.type === "user" ? "user" : task.type === "script" ? "script" : task.type === "delegated" ? "delegated" : task.ops ? "ops" : "ai",
|
|
3057
3162
|
// Between rounds a check waits for its fix as a task waits for its dependencies, and is no failure (ADR-0045 L3).
|
|
3058
3163
|
status: blocked.length > 0 ? "blocked" : loop?.role === "check" && loop.state === "repeating" ? "todo" : taskStatusKind(task),
|
|
3059
3164
|
running: isTaskRunning(task),
|
|
@@ -3160,7 +3265,8 @@ function taskLogCommands(view) {
|
|
|
3160
3265
|
}
|
|
3161
3266
|
function logContinues(task) {
|
|
3162
3267
|
const finished = task.status === "completed" || task.status === "failed" || task.status === "skipped";
|
|
3163
|
-
|
|
3268
|
+
const childLeft = task.type === "delegated" && (task.status === "pending" || task.awaitingReason === "question-lost");
|
|
3269
|
+
return task.continuable === true && (finished || childLeft || task.status === "awaiting_user" && task.awaitingReason === "usage-limit");
|
|
3164
3270
|
}
|
|
3165
3271
|
function logResumes(task) {
|
|
3166
3272
|
return task.continuable === true && task.status === "awaiting_user" && task.awaitingReason === "usage-limit";
|
|
@@ -3287,6 +3393,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3287
3393
|
REPORT_PREVIEW_LINES,
|
|
3288
3394
|
SEVERITY_LABEL,
|
|
3289
3395
|
STALLED_LABEL,
|
|
3396
|
+
STOPPING_LABEL,
|
|
3290
3397
|
SUPERVISOR_LEVEL_LABEL,
|
|
3291
3398
|
WAITS_FOR_APPROVAL_LABEL,
|
|
3292
3399
|
accountLimitPercentText,
|
|
@@ -3329,6 +3436,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3329
3436
|
contextMeterTitle,
|
|
3330
3437
|
costText,
|
|
3331
3438
|
countedSessionCost,
|
|
3439
|
+
delegatedRowView,
|
|
3332
3440
|
dependencyCandidates,
|
|
3333
3441
|
dependentsNotice,
|
|
3334
3442
|
dependentsOf,
|
|
@@ -3355,6 +3463,7 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3355
3463
|
hasAccountLimits,
|
|
3356
3464
|
hasHiddenDetail,
|
|
3357
3465
|
hasLongReport,
|
|
3466
|
+
heldWords,
|
|
3358
3467
|
holdLabel,
|
|
3359
3468
|
holdPrompt,
|
|
3360
3469
|
isFileEditTool,
|
|
@@ -3378,10 +3487,12 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3378
3487
|
markdownHtml,
|
|
3379
3488
|
markdownTokens,
|
|
3380
3489
|
mergeOutcome,
|
|
3490
|
+
mergePastChecksConfirmation,
|
|
3381
3491
|
modelCostTitle,
|
|
3382
3492
|
namedRepos,
|
|
3383
3493
|
newTaskFields,
|
|
3384
3494
|
noExecutorRefusal,
|
|
3495
|
+
onOneLine,
|
|
3385
3496
|
opsEditable,
|
|
3386
3497
|
outOfRounds,
|
|
3387
3498
|
outputLines,
|
|
@@ -3423,10 +3534,12 @@ function accountLimitsTitle(snapshot, time) {
|
|
|
3423
3534
|
severityLabel,
|
|
3424
3535
|
skillTokens,
|
|
3425
3536
|
skippedLabel,
|
|
3537
|
+
spentTokens,
|
|
3426
3538
|
startAttemptUsage,
|
|
3427
3539
|
stopTurn,
|
|
3428
3540
|
subagentCostTitle,
|
|
3429
3541
|
subtreeIds,
|
|
3542
|
+
subtreeView,
|
|
3430
3543
|
summarizeToolCall,
|
|
3431
3544
|
takeAt,
|
|
3432
3545
|
taskActionCommand,
|