@ordewell/core 0.4.10 → 0.4.12
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/ApprovalPolicy-BVhGdECT.d.mts +79 -0
- package/dist/ApprovalPolicy-BVhGdECT.d.ts +79 -0
- package/dist/{ITerminalRunner-CbE6gKLI.d.ts → ITerminalRunner-D_RBDoHa.d.mts} +10 -81
- package/dist/{ITerminalRunner-1NAv8wCC.d.mts → ITerminalRunner-DqAs12sy.d.ts} +10 -81
- package/dist/{ModeResolver-F5wnlSz1.d.mts → ModeResolver-CCKYqdZC.d.mts} +1 -1
- package/dist/{ModeResolver-Dx5gzNPC.d.ts → ModeResolver-CzZd-i6T.d.ts} +1 -1
- package/dist/{Task-1NwmUImI.d.mts → Task-cGrfYRXK.d.mts} +8 -1
- package/dist/{Task-1NwmUImI.d.ts → Task-cGrfYRXK.d.ts} +8 -1
- package/dist/chunk-HPNUFBIT.mjs +19 -0
- package/dist/chunk-HPNUFBIT.mjs.map +1 -0
- package/dist/{chunk-IO6PEEN6.mjs → chunk-N6HTBUKG.mjs} +11 -1
- package/dist/chunk-N6HTBUKG.mjs.map +1 -0
- package/dist/{chunk-TUGJXD4G.mjs → chunk-UEJ3SZQ7.mjs} +2 -2
- package/dist/{chunk-YI4ZDZEE.mjs → chunk-YTJ7EOV6.mjs} +62 -3
- package/dist/chunk-YTJ7EOV6.mjs.map +1 -0
- package/dist/index.d.mts +187 -235
- package/dist/index.d.ts +187 -235
- package/dist/index.js +643 -439
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +611 -486
- package/dist/index.mjs.map +1 -1
- package/dist/order-labels.d.mts +17 -0
- package/dist/order-labels.d.ts +17 -0
- package/dist/order-labels.js +44 -0
- package/dist/order-labels.js.map +1 -0
- package/dist/order-labels.mjs +9 -0
- package/dist/order-labels.mjs.map +1 -0
- package/dist/{parsing-BqbJySeo.d.mts → parsing-BT-dvFcu.d.mts} +2 -2
- package/dist/{parsing-X0Gvuz-q.d.ts → parsing-D87zKtTe.d.ts} +2 -2
- package/dist/parsing.d.mts +3 -3
- package/dist/parsing.d.ts +3 -3
- package/dist/parsing.js.map +1 -1
- package/dist/parsing.mjs +3 -2
- package/dist/{plan-utils-DtsfHnn_.d.ts → plan-utils-BbC9KdK4.d.ts} +139 -3
- package/dist/{plan-utils-B5rVXNVI.d.mts → plan-utils-DHBIvkiT.d.mts} +139 -3
- package/dist/plan-utils.d.mts +4 -3
- package/dist/plan-utils.d.ts +4 -3
- package/dist/plan-utils.js +14 -2
- package/dist/plan-utils.js.map +1 -1
- package/dist/plan-utils.mjs +9 -4
- package/dist/testing.d.mts +3 -2
- package/dist/testing.d.ts +3 -2
- package/package.json +12 -2
- package/skills/grilling/SKILL.md +31 -0
- package/skills/to-spec/SKILL.md +64 -0
- package/dist/chunk-IO6PEEN6.mjs.map +0 -1
- package/dist/chunk-YI4ZDZEE.mjs.map +0 -1
- /package/dist/{chunk-TUGJXD4G.mjs.map → chunk-UEJ3SZQ7.mjs.map} +0 -0
package/dist/index.d.mts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { h as RunnerId, c as PlanStatus, L as LegacyPlanState, a as DiscoveredModel, T as Task, d as ResearchProgress, R as ResearchLogEntry, C as ConversationMessage, n as TaskSnapshot, Q as QueuedMessage, A as ActiveTaskSession, g as ResearchToolType,
|
|
2
|
-
export { D as DiscoveredMode, M as Message, P as PlanModificationWarnings, f as ResearchStepOutcome, S as StreamEvent, i as StreamStepEvent, j as StreamThinkingEvent, k as TaskMode, l as TaskModelAssignment, m as TaskOutputSummary, o as TaskStatus, p as TaskType, q as ThinkingBlock, U as UserPromptEntry,
|
|
3
|
-
import {
|
|
4
|
-
export { a as AllProviderModels,
|
|
5
|
-
import {
|
|
6
|
-
export {
|
|
7
|
-
import {
|
|
8
|
-
export {
|
|
1
|
+
import { h as RunnerId, c as PlanStatus, L as LegacyPlanState, a as DiscoveredModel, T as Task, d as ResearchProgress, R as ResearchLogEntry, C as ConversationMessage, n as TaskSnapshot, Q as QueuedMessage, A as ActiveTaskSession, g as ResearchToolType, b as PlanState, v as Verdict } from './Task-cGrfYRXK.mjs';
|
|
2
|
+
export { D as DiscoveredMode, M as Message, P as PlanModificationWarnings, e as ResearchStep, f as ResearchStepOutcome, S as StreamEvent, i as StreamStepEvent, j as StreamThinkingEvent, k as TaskMode, l as TaskModelAssignment, m as TaskOutputSummary, o as TaskStatus, p as TaskType, q as TaskWithParent, r as ThinkingBlock, U as UserPromptEntry, s as UserStep, V as ValidationCheck, t as ValidationContext, u as ValidationResult, w as VerificationCheck, x as addTaskToPlan, y as createEmptyPlan, z as createTask, B as emptyWarnings, E as flattenTasks, F as flattenTasksWithParents, G as migrateLegacyPlan, H as migratePlanState, I as migrateTask, J as removeTaskFromPlan, K as renumberTasks, N as updateTaskInPlan, O as validateModifiedPlan, W as warningsText } from './Task-cGrfYRXK.mjs';
|
|
3
|
+
import { f as IFileSystem, R as ReadFileOpts, T as ToolOutcome, d as GrepOptions, c as GlobOptions, b as FindSymbolOptions, I as IConfig, A as AiProvider, r as ProviderModelLists, i as ITerminalSession, h as ITerminalRunner, w as RunnerRegistry, k as OrchestratorOption, u as RunnerInvocation, g as IPluginStore, v as RunnerPluginManifest, t as ResolveContext } from './ITerminalRunner-D_RBDoHa.mjs';
|
|
4
|
+
export { a as AllProviderModels, C as CatalogModel, D as DiscoveryCommand, F as FetchAllProviderModelsOptions, G as GREP_DEFAULT_HEAD_LIMIT, e as GrepOutputMode, M as ModelCatalog, j as ModelShortcut, O as ORCHESTRATOR_SHORTCUTS, P as PluginCloneFn, l as PluginEntry, m as PluginFeatures, n as PluginMode, o as PluginModelDiscovery, p as PluginRunnerDef, q as ProviderCredentialSource, s as ProviderModelsResult, S as SEARCH_EXCLUSIONS, x as collectProviderCredentials, y as enabledRunners, z as fetchAllProviderModels, B as isReservedRunnerName, E as knownModelId, H as resolveModelShortcut, J as resolveProvider, K as toOrchestratorOptions } from './ITerminalRunner-D_RBDoHa.mjs';
|
|
5
|
+
import { I as IApproval, d as ApprovalRequest, a as ApprovalMode } from './ApprovalPolicy-BVhGdECT.mjs';
|
|
6
|
+
export { A as ApprovalKind, b as ApprovalPolicy, c as ApprovalPolicyOptions, e as ApprovalSource, D as DENY_ALL } from './ApprovalPolicy-BVhGdECT.mjs';
|
|
7
|
+
import { R as RunnerModeInfo } from './ModeResolver-CCKYqdZC.mjs';
|
|
8
|
+
export { M as ManifestLookup, b as buildModeGuide, f as filteredBuildModes, r as resolveDefaultMode, a as resolveTaskMode, c as runnerModesFrom } from './ModeResolver-CCKYqdZC.mjs';
|
|
9
|
+
import { T as TaskOp, c as SessionBroadcaster } from './plan-utils-DHBIvkiT.mjs';
|
|
10
|
+
export { A as ApplyTaskOpsResult, C as CHECKPOINT_TRUNCATE_LENGTH, S as SerializedPlan, a as SerializedTask, b as SerializedTaskStatus, d as SessionMessage, e as TaskRef, f as applyTaskOps, g as canMergeTasks, h as canSetDependencies, i as canSplitTask, j as classifyOutcome, k as dependencyCandidates, l as dependentsOf, m as executionSummary, p as parseTaskOpsJson, s as serializePlan, n as serializeTask, o as serializeTaskStatus, q as summarizeToolCall, t as textHasTaskOps, r as truncateCheckpointSummary } from './plan-utils-DHBIvkiT.mjs';
|
|
9
11
|
import { ChildProcess } from 'child_process';
|
|
10
12
|
import { EventEmitter } from 'events';
|
|
11
|
-
import { b as PlanParseError } from './parsing-
|
|
12
|
-
export { P as PLAN_ENVELOPE_KEY, a as PartialPlanTask, T as TASK_OPS_ENVELOPE_KEY, c as TASK_QUERY_ENVELOPE_KEY, d as checkDepsResolve, e as checkImmutableLog, f as checkInProgress, g as checkNoCycles, h as checkUniqueIds, i as escapeControlCharsInStrings, j as extractJsonObject, k as extractObjectWithBalance, l as extractObjectsWithKey, m as looksLikePlanAttempt, p as parsePartialPlan, n as parsePlanJson, s as stripModelNoise, o as stripTrailingCommas, v as validatePlanModification } from './parsing-
|
|
13
|
+
import { b as PlanParseError } from './parsing-BT-dvFcu.mjs';
|
|
14
|
+
export { P as PLAN_ENVELOPE_KEY, a as PartialPlanTask, T as TASK_OPS_ENVELOPE_KEY, c as TASK_QUERY_ENVELOPE_KEY, d as checkDepsResolve, e as checkImmutableLog, f as checkInProgress, g as checkNoCycles, h as checkUniqueIds, i as escapeControlCharsInStrings, j as extractJsonObject, k as extractObjectWithBalance, l as extractObjectsWithKey, m as looksLikePlanAttempt, p as parsePartialPlan, n as parsePlanJson, s as stripModelNoise, o as stripTrailingCommas, v as validatePlanModification } from './parsing-BT-dvFcu.mjs';
|
|
15
|
+
export { resolveOrderLabel, taskOrderLabel } from './order-labels.mjs';
|
|
13
16
|
|
|
14
17
|
interface SessionMeta {
|
|
15
18
|
id: string;
|
|
@@ -559,24 +562,12 @@ declare class ConsoleLogger implements ILogger {
|
|
|
559
562
|
declare const defaultLogger: ILogger;
|
|
560
563
|
|
|
561
564
|
interface UserSettings {
|
|
562
|
-
grillMe: {
|
|
563
|
-
enabled: boolean;
|
|
564
|
-
};
|
|
565
565
|
tdd: {
|
|
566
566
|
enabled: boolean;
|
|
567
567
|
};
|
|
568
|
-
prd: {
|
|
569
|
-
enabled: boolean;
|
|
570
|
-
};
|
|
571
|
-
review: {
|
|
572
|
-
enabled: boolean;
|
|
573
|
-
};
|
|
574
568
|
verification: {
|
|
575
569
|
enabled: boolean;
|
|
576
570
|
};
|
|
577
|
-
researchSubagents: {
|
|
578
|
-
enabled: boolean;
|
|
579
|
-
};
|
|
580
571
|
modelAllowlist?: Record<string, string[]>;
|
|
581
572
|
/** Last model (and its thinking effort) the user chose for each planner backend, keyed by AiProvider id. */
|
|
582
573
|
plannerModels?: Record<string, {
|
|
@@ -594,10 +585,10 @@ interface UserSettings {
|
|
|
594
585
|
* Ordewell processes on one machine can hold *different* settings at the same
|
|
595
586
|
* time. Without it the file is a single shared mutable global: the benchmark
|
|
596
587
|
* harness runs parallel lanes that each pin the mode toggles, and because
|
|
597
|
-
* `getAll()` re-reads whenever the mtime moves, a lane needing
|
|
598
|
-
* `
|
|
599
|
-
*
|
|
600
|
-
*
|
|
588
|
+
* `getAll()` re-reads whenever the mtime moves, a lane needing a toggle
|
|
589
|
+
* `true` would silently plan with `false` the moment another lane pinned its
|
|
590
|
+
* own — turning an A/B of that toggle into a comparison of one condition
|
|
591
|
+
* against itself.
|
|
601
592
|
*/
|
|
602
593
|
declare function getSettingsPath(): string;
|
|
603
594
|
declare class SettingsService {
|
|
@@ -607,18 +598,10 @@ declare class SettingsService {
|
|
|
607
598
|
constructor(filePath?: string);
|
|
608
599
|
getAll(): UserSettings;
|
|
609
600
|
private fileMtimeMs;
|
|
610
|
-
getGrillMe(): boolean;
|
|
611
601
|
getTdd(): boolean;
|
|
612
|
-
getPrd(): boolean;
|
|
613
|
-
setGrillMe(enabled: boolean): void;
|
|
614
602
|
setTdd(enabled: boolean): void;
|
|
615
|
-
setPrd(enabled: boolean): void;
|
|
616
|
-
getReview(): boolean;
|
|
617
|
-
setReview(enabled: boolean): void;
|
|
618
603
|
getVerification(): boolean;
|
|
619
604
|
setVerification(enabled: boolean): void;
|
|
620
|
-
getResearchSubagents(): boolean;
|
|
621
|
-
setResearchSubagents(enabled: boolean): void;
|
|
622
605
|
getModelAllowlist(runner: string): string[] | undefined;
|
|
623
606
|
setModelAllowlist(runner: string, ids: string[] | undefined): void;
|
|
624
607
|
getPlannerModel(provider: string): {
|
|
@@ -637,12 +620,8 @@ declare class SettingsService {
|
|
|
637
620
|
|
|
638
621
|
/** How the same toggle is named once a host has read it off disk. */
|
|
639
622
|
interface PlannerRuntimeToggles {
|
|
640
|
-
grillMeEnabled: boolean;
|
|
641
623
|
tddEnabled: boolean;
|
|
642
|
-
prdEnabled: boolean;
|
|
643
|
-
reviewEnabled: boolean;
|
|
644
624
|
verificationEnabled: boolean;
|
|
645
|
-
researchSubagentsEnabled: boolean;
|
|
646
625
|
}
|
|
647
626
|
/**
|
|
648
627
|
* The planner-facing mode set for one operation. Replaces the boolean tail that
|
|
@@ -651,11 +630,7 @@ interface PlannerRuntimeToggles {
|
|
|
651
630
|
*/
|
|
652
631
|
interface PlannerModes {
|
|
653
632
|
autonomousDefault: boolean;
|
|
654
|
-
grillMe: boolean;
|
|
655
|
-
prd: boolean;
|
|
656
|
-
review: boolean;
|
|
657
633
|
verification: boolean;
|
|
658
|
-
researchSubagents: boolean;
|
|
659
634
|
}
|
|
660
635
|
|
|
661
636
|
/**
|
|
@@ -750,6 +725,65 @@ declare abstract class AbstractRunner<S extends ITerminalSession> implements ITe
|
|
|
750
725
|
}): Promise<ITerminalSession>;
|
|
751
726
|
}
|
|
752
727
|
|
|
728
|
+
declare function stripAnsi(text: string): string;
|
|
729
|
+
declare function posixShellQuote(s: string): string;
|
|
730
|
+
/**
|
|
731
|
+
* Wrap a command for execution inside a POSIX login shell, which is what
|
|
732
|
+
* resolves runner binaries managed by nvm/volta/asdf.
|
|
733
|
+
*
|
|
734
|
+
* Deliberately POSIX-only. This used to take a `platform` and emit
|
|
735
|
+
* `powershell.exe -Command "'claude' '-p' '…'"` for Windows, which PowerShell
|
|
736
|
+
* cannot run at all: a quoted string in leading position is parsed in
|
|
737
|
+
* expression mode, so the invocation died with a parse error before the runner
|
|
738
|
+
* started — a task that failed instantly, every time, on that platform. Windows
|
|
739
|
+
* has no login-shell equivalent to emulate (its PATH comes from the registry
|
|
740
|
+
* and is already inherited), so {@link planShellLaunch} starts the runner
|
|
741
|
+
* directly there instead of routing it through a shell. Platform choice belongs
|
|
742
|
+
* to that function; this one only knows how to phrase the POSIX half.
|
|
743
|
+
*/
|
|
744
|
+
declare function buildShellInvocation(command: string, args: string[]): {
|
|
745
|
+
shellPath: string;
|
|
746
|
+
shellArgs: string[];
|
|
747
|
+
};
|
|
748
|
+
/** A terminal size in cells. */
|
|
749
|
+
interface PtySize {
|
|
750
|
+
cols: number;
|
|
751
|
+
rows: number;
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* Options for {@link wrapWithPty}. `size` sets the PTY's window size before the
|
|
755
|
+
* wrapped command starts. `controlChannel` makes the wrapper listen on its fd 3
|
|
756
|
+
* for `"<cols> <rows>"` lines and resize the PTY live — the caller spawns the
|
|
757
|
+
* child with an extra pipe there and writes resize requests into it.
|
|
758
|
+
*/
|
|
759
|
+
interface PtyWrapOptions {
|
|
760
|
+
size?: PtySize;
|
|
761
|
+
controlChannel?: boolean;
|
|
762
|
+
}
|
|
763
|
+
/**
|
|
764
|
+
* Wrap a command in `script` to allocate the PTY some runners require when
|
|
765
|
+
* headless; `-e` propagates the child's exit code so verification still works.
|
|
766
|
+
*
|
|
767
|
+
* POSIX-only by nature — there is no `script` on Windows, which
|
|
768
|
+
* `HeadlessRunner`'s `hasScriptCmd` probe already discovers, so this is never
|
|
769
|
+
* reached there.
|
|
770
|
+
*
|
|
771
|
+
* `script` sizes its PTY off the terminal it is attached to; spawned off a pipe
|
|
772
|
+
* (every transport here) it allocates 0x0, which a runner TUI renders as
|
|
773
|
+
* garbage. `stty` fixes the size on the PTY slave before the command starts, so
|
|
774
|
+
* the TUI reads its true dimensions via ioctl.
|
|
775
|
+
*
|
|
776
|
+
* The control channel can only live on a *separate* fd from the agent's stdin,
|
|
777
|
+
* so the wrapper saves the PTY on fd 4 first: POSIX sends an asynchronous
|
|
778
|
+
* command's stdin to `/dev/null`, so the watcher's own stdin cannot be the PTY.
|
|
779
|
+
* A background job also inherits an fd 0 that is not the terminal; `stty` names
|
|
780
|
+
* fd 4 explicitly for that reason.
|
|
781
|
+
*/
|
|
782
|
+
declare function wrapWithPty(command: string, args: string[], opts?: PtyWrapOptions): {
|
|
783
|
+
command: string;
|
|
784
|
+
args: string[];
|
|
785
|
+
};
|
|
786
|
+
|
|
753
787
|
/**
|
|
754
788
|
* cmd.exe's command-line buffer. A longer line is truncated rather than
|
|
755
789
|
* rejected, which would corrupt a planner's system prompt or a task's prompt
|
|
@@ -884,7 +918,7 @@ declare function planShellLaunch(command: string, args: string[], deps?: LaunchD
|
|
|
884
918
|
|
|
885
919
|
type SpawnFn = (command: string, args: string[], options: {
|
|
886
920
|
env: NodeJS.ProcessEnv;
|
|
887
|
-
stdio:
|
|
921
|
+
stdio: Array<'pipe' | 'ignore'>;
|
|
888
922
|
cwd: string;
|
|
889
923
|
/** Set by the Windows batch route, where `args` is already a quoted command line. */
|
|
890
924
|
windowsVerbatimArguments?: boolean;
|
|
@@ -904,12 +938,17 @@ declare class HeadlessSession extends AbstractTerminalSession {
|
|
|
904
938
|
private spawnImpl;
|
|
905
939
|
private process;
|
|
906
940
|
private outputBuffer;
|
|
941
|
+
private controlStream;
|
|
907
942
|
constructor(id: string, taskId: string, spawnImpl: SpawnFn);
|
|
908
943
|
get isStarted(): boolean;
|
|
909
|
-
start(launch: LaunchPlan, cwd: string, resolvedPath: string, env?: Record<string, string
|
|
944
|
+
start(launch: LaunchPlan, cwd: string, resolvedPath: string, env?: Record<string, string>, options?: {
|
|
945
|
+
controlChannel?: boolean;
|
|
946
|
+
}): void;
|
|
910
947
|
kill(): void;
|
|
911
948
|
getOutput(): string;
|
|
912
949
|
write(text: string): void;
|
|
950
|
+
/** PTY resize requests from a surface that owns the terminal rendering the wrapper. */
|
|
951
|
+
writeControl(text: string): void;
|
|
913
952
|
}
|
|
914
953
|
type RunnerSpawnOptions = Parameters<ITerminalRunner['spawn']>[0];
|
|
915
954
|
/** Everything needed to start one runner process, resolved before any child exists. */
|
|
@@ -936,7 +975,7 @@ declare class HeadlessRunner extends AbstractRunner<HeadlessSession> {
|
|
|
936
975
|
constructor(deps?: HeadlessRunnerDeps);
|
|
937
976
|
protected createSession(id: string, taskId: string): HeadlessSession;
|
|
938
977
|
/** Everything up to, but not including, spawning — so a surface that owns its own child reaches the same decisions. */
|
|
939
|
-
protected prepareLaunch(opts: RunnerSpawnOptions): Promise<PreparedLaunch>;
|
|
978
|
+
protected prepareLaunch(opts: RunnerSpawnOptions, ptyOptions?: PtyWrapOptions): Promise<PreparedLaunch>;
|
|
940
979
|
spawn(opts: RunnerSpawnOptions): Promise<ITerminalSession>;
|
|
941
980
|
}
|
|
942
981
|
|
|
@@ -1128,8 +1167,8 @@ declare class CliAgentAiService implements IAiService {
|
|
|
1128
1167
|
/**
|
|
1129
1168
|
* Drive one user message to a settled planner turn. Same shape as the API
|
|
1130
1169
|
* backend's conversation loop minus the tool rounds — those belong to the
|
|
1131
|
-
* agent now — and with the same
|
|
1132
|
-
*
|
|
1170
|
+
* agent now — and with the same two policies layered on top: the
|
|
1171
|
+
* empty-reply nudge, and a bounded corrective re-emit for botched JSON.
|
|
1133
1172
|
*/
|
|
1134
1173
|
private runConversation;
|
|
1135
1174
|
/**
|
|
@@ -1182,12 +1221,7 @@ interface ConversationRequest {
|
|
|
1182
1221
|
fetcher?: IWebFetcher;
|
|
1183
1222
|
runnerModes?: Record<RunnerId, RunnerModeInfo[]>;
|
|
1184
1223
|
autonomousDefault?: boolean;
|
|
1185
|
-
grillMeEnabled?: boolean;
|
|
1186
|
-
prdEnabled?: boolean;
|
|
1187
|
-
reviewEnabled?: boolean;
|
|
1188
1224
|
verificationEnabled?: boolean;
|
|
1189
|
-
/** Declare the spawn_research_agent tool to the planner (issue #34, default off). */
|
|
1190
|
-
researchSubagentsEnabled?: boolean;
|
|
1191
1225
|
signal?: AbortSignal;
|
|
1192
1226
|
/**
|
|
1193
1227
|
* Persisted dialogue to seed a resumed conversation (session reload). The
|
|
@@ -1334,12 +1368,6 @@ interface ConversationTurnContext {
|
|
|
1334
1368
|
runnerModes?: Record<RunnerId, RunnerModeInfo[]>;
|
|
1335
1369
|
autonomousDefault?: boolean;
|
|
1336
1370
|
fetcher?: IWebFetcher;
|
|
1337
|
-
/** PRD toggle: a plan must not commit before a PRD block has appeared. */
|
|
1338
|
-
prdEnabled?: boolean;
|
|
1339
|
-
/** Set once any turn carries an ORDEWELL_PRD block; gates the missing-PRD nudge. */
|
|
1340
|
-
prdCaptured?: boolean;
|
|
1341
|
-
/** The missing-PRD corrective nudge is sent at most once per conversation. */
|
|
1342
|
-
prdNudgeSent?: boolean;
|
|
1343
1371
|
}
|
|
1344
1372
|
declare abstract class BaseAiService {
|
|
1345
1373
|
protected config: IConfig;
|
|
@@ -1348,8 +1376,6 @@ declare abstract class BaseAiService {
|
|
|
1348
1376
|
setProgress: (fn: (p: ResearchProgress) => void) => void;
|
|
1349
1377
|
} | null;
|
|
1350
1378
|
protected activeAbort: AbortController | null;
|
|
1351
|
-
/** researchSubagents toggle (issue #34): set per operation from the live settings snapshot; off means bit-for-bit sequential behavior. */
|
|
1352
|
-
protected researchSubagentsEnabled: boolean;
|
|
1353
1379
|
constructor(config: IConfig);
|
|
1354
1380
|
abstract reset(): void;
|
|
1355
1381
|
abstract ensureInit(): void;
|
|
@@ -1625,6 +1651,8 @@ declare class TaskOrchestrator {
|
|
|
1625
1651
|
private observers;
|
|
1626
1652
|
private tddEnabled;
|
|
1627
1653
|
constructor(config: IConfig, notifications: INotification, terminalRunner: ITerminalRunner, store?: PlanStore);
|
|
1654
|
+
/** Advisory silence timestamp for a task's live runner, or null if not idle. */
|
|
1655
|
+
getIdleSince(taskId: string): string | null;
|
|
1628
1656
|
get storeInstance(): PlanStore;
|
|
1629
1657
|
setWorkspaceRoot(fn: () => string): void;
|
|
1630
1658
|
setRegistry(registry: RunnerRegistry): void;
|
|
@@ -2264,135 +2292,38 @@ declare function mapAgentTool(name: string): MappedTool;
|
|
|
2264
2292
|
*/
|
|
2265
2293
|
declare function normalizeAgentArgs(tool: ResearchToolType, args: Record<string, unknown>): Record<string, unknown>;
|
|
2266
2294
|
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
verdict: {
|
|
2271
|
-
outcome: 'pass' | 'fail';
|
|
2272
|
-
reason: string;
|
|
2273
|
-
checks: Verdict['checks'];
|
|
2274
|
-
} | null;
|
|
2275
|
-
};
|
|
2276
|
-
type SerializedTask = {
|
|
2277
|
-
id: string;
|
|
2278
|
-
order: number;
|
|
2279
|
-
title: string;
|
|
2280
|
-
type: string;
|
|
2295
|
+
declare const BUILTIN_SKILL_NAMES: readonly ["grilling", "to-spec"];
|
|
2296
|
+
interface SkillMetadata {
|
|
2297
|
+
name: string;
|
|
2281
2298
|
description: string;
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
thinkingEffort: Task['thinkingEffort'];
|
|
2290
|
-
autonomy: Task['autonomy'];
|
|
2291
|
-
sliceType: Task['sliceType'];
|
|
2292
|
-
userStoriesCovered: Task['userStoriesCovered'];
|
|
2293
|
-
};
|
|
2294
|
-
type SerializedPlan = {
|
|
2295
|
-
tasks: SerializedTask[];
|
|
2296
|
-
runners: RunnerId[];
|
|
2297
|
-
generatedAt: string;
|
|
2298
|
-
conversationHistory?: LegacyPlanState['conversationHistory'];
|
|
2299
|
-
prdMarkdown?: string;
|
|
2300
|
-
queuedMessages?: QueuedMessage[];
|
|
2301
|
-
};
|
|
2302
|
-
type SessionMessage = {
|
|
2303
|
-
type: 'plan_generated';
|
|
2304
|
-
plan: SerializedPlan;
|
|
2305
|
-
goal: string;
|
|
2306
|
-
runners: RunnerId[];
|
|
2307
|
-
} | {
|
|
2308
|
-
type: 'planner_message';
|
|
2299
|
+
disableModelInvocation?: boolean;
|
|
2300
|
+
}
|
|
2301
|
+
interface SkillInfo {
|
|
2302
|
+
name: string;
|
|
2303
|
+
description: string;
|
|
2304
|
+
metadata: SkillMetadata;
|
|
2305
|
+
/** Full content of SKILL.md with frontmatter stripped */
|
|
2309
2306
|
content: string;
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
}
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
};
|
|
2331
|
-
} | {
|
|
2332
|
-
type: 'execution_stopped';
|
|
2333
|
-
} | {
|
|
2334
|
-
type: 'queue_ready';
|
|
2335
|
-
} | {
|
|
2336
|
-
type: 'task_updated';
|
|
2337
|
-
taskId: string;
|
|
2338
|
-
changes: Record<string, unknown>;
|
|
2339
|
-
} | {
|
|
2340
|
-
type: 'task_started';
|
|
2341
|
-
taskId: string;
|
|
2342
|
-
order: number;
|
|
2343
|
-
title: string;
|
|
2344
|
-
runner: RunnerId;
|
|
2345
|
-
modelId?: string;
|
|
2346
|
-
} | {
|
|
2347
|
-
type: 'task_output';
|
|
2348
|
-
taskId: string;
|
|
2349
|
-
text: string;
|
|
2350
|
-
} | {
|
|
2351
|
-
type: 'plan_thinking';
|
|
2352
|
-
text: string;
|
|
2353
|
-
} | {
|
|
2354
|
-
type: 'research_step';
|
|
2355
|
-
tool: string;
|
|
2356
|
-
toolLabel?: string;
|
|
2357
|
-
args: string;
|
|
2358
|
-
subagentId?: string;
|
|
2359
|
-
toolCallId?: string;
|
|
2360
|
-
} | {
|
|
2361
|
-
type: 'plan_token';
|
|
2362
|
-
token: string;
|
|
2363
|
-
} | {
|
|
2364
|
-
type: 'research_step_done';
|
|
2365
|
-
step: ResearchStep;
|
|
2366
|
-
subagentId?: string;
|
|
2367
|
-
} | {
|
|
2368
|
-
type: 'approval_request';
|
|
2369
|
-
id: string;
|
|
2370
|
-
kind: ApprovalKind;
|
|
2371
|
-
subject: string;
|
|
2372
|
-
scope: string;
|
|
2373
|
-
detail?: string;
|
|
2374
|
-
} | {
|
|
2375
|
-
type: 'approval_settled';
|
|
2376
|
-
id: string;
|
|
2377
|
-
granted: boolean;
|
|
2378
|
-
} | {
|
|
2379
|
-
type: 'approval_decided';
|
|
2380
|
-
kind: ApprovalKind;
|
|
2381
|
-
subject: string;
|
|
2382
|
-
scope: string;
|
|
2383
|
-
detail?: string;
|
|
2384
|
-
granted: boolean;
|
|
2385
|
-
source: Exclude<ApprovalSource, 'asked'>;
|
|
2386
|
-
};
|
|
2387
|
-
type SessionBroadcaster = (msg: SessionMessage) => void;
|
|
2388
|
-
declare function serializeTask(t: Task): SerializedTask;
|
|
2389
|
-
declare function serializeTaskStatus(t: Task): SerializedTaskStatus;
|
|
2390
|
-
declare function serializePlan(plan: LegacyPlanState): SerializedPlan;
|
|
2391
|
-
declare function executionSummary(tasks: Task[]): {
|
|
2392
|
-
total: number;
|
|
2393
|
-
completed: number;
|
|
2394
|
-
failed: number;
|
|
2395
|
-
};
|
|
2307
|
+
/** Absolute path to the SKILL.md file */
|
|
2308
|
+
path: string;
|
|
2309
|
+
/** Whether this came from global (~/.ordewell/skills/) or local (.ordewell/skills/) */
|
|
2310
|
+
source: 'global' | 'local';
|
|
2311
|
+
}
|
|
2312
|
+
declare class SkillsService {
|
|
2313
|
+
private workspaceRoot?;
|
|
2314
|
+
constructor(workspaceRoot?: string | undefined);
|
|
2315
|
+
private localDir;
|
|
2316
|
+
private globalDir;
|
|
2317
|
+
private seed;
|
|
2318
|
+
seedBuiltinSkill(name: string): boolean;
|
|
2319
|
+
/** Removes a retired built-in's seed from the global dir, but only if it's untouched by the user. */
|
|
2320
|
+
private isUnmodifiedRetiredSeed;
|
|
2321
|
+
private pruneRetired;
|
|
2322
|
+
findSkill(name: string): SkillInfo | undefined;
|
|
2323
|
+
listSkills(): SkillInfo[];
|
|
2324
|
+
getSkillContent(name: string): string | undefined;
|
|
2325
|
+
}
|
|
2326
|
+
declare function createSkillsService(workspaceRoot?: string): SkillsService;
|
|
2396
2327
|
|
|
2397
2328
|
/**
|
|
2398
2329
|
* A direct (non-planner) plan edit the session refused. Distinct from a plain
|
|
@@ -2417,11 +2348,7 @@ type SessionPlanner = Pick<Planner, 'generate' | 'modify' | 'modifyDuringExecuti
|
|
|
2417
2348
|
/** Runtime prefs read live — may toggle between operations. */
|
|
2418
2349
|
interface SessionRuntimeSettings {
|
|
2419
2350
|
tddEnabled: boolean;
|
|
2420
|
-
grillMeEnabled: boolean;
|
|
2421
|
-
prdEnabled?: boolean;
|
|
2422
|
-
reviewEnabled?: boolean;
|
|
2423
2351
|
verificationEnabled?: boolean;
|
|
2424
|
-
researchSubagentsEnabled?: boolean;
|
|
2425
2352
|
modelAllowlist?: Record<string, string[]>;
|
|
2426
2353
|
}
|
|
2427
2354
|
/**
|
|
@@ -2432,11 +2359,19 @@ interface SessionRuntimeSettings {
|
|
|
2432
2359
|
* is not a toggle.
|
|
2433
2360
|
*/
|
|
2434
2361
|
declare function sessionRuntimeSettings(settings: UserSettings): SessionRuntimeSettings;
|
|
2362
|
+
/**
|
|
2363
|
+
* Resolve a `/skill-name` invocation to the skill's markdown content. Pure and
|
|
2364
|
+
* exported so surfaces and verification can drive substitution without a full
|
|
2365
|
+
* Session. Plain text passes through unchanged; an unknown skill becomes a
|
|
2366
|
+
* notice naming what IS available instead of a bare slash token that a runner
|
|
2367
|
+
* would mis-resolve in its own skills directory.
|
|
2368
|
+
*/
|
|
2369
|
+
declare function resolveSkillInvocation(text: string, skillsService: Pick<SkillsService, 'findSkill' | 'listSkills'>): string;
|
|
2435
2370
|
/**
|
|
2436
2371
|
* Everything a delivery surface constructs to host a session. Structural config
|
|
2437
2372
|
* (enabledRunners, orchestratorModel, providerModelLists) is snapshotted inside
|
|
2438
2373
|
* `config` at construction and never re-read from the environment. Runtime
|
|
2439
|
-
* settings (tdd,
|
|
2374
|
+
* settings (tdd, verification) are read live via the `settings` callback so a toggle
|
|
2440
2375
|
* between generate and execute takes effect.
|
|
2441
2376
|
*/
|
|
2442
2377
|
interface SessionDeps {
|
|
@@ -2452,7 +2387,7 @@ interface SessionDeps {
|
|
|
2452
2387
|
broadcast: SessionBroadcaster;
|
|
2453
2388
|
/** Shared across sessions — sole producer of model catalogs and routing lists. */
|
|
2454
2389
|
modelResolver: ModelResolver;
|
|
2455
|
-
/** Live runtime settings (tdd,
|
|
2390
|
+
/** Live runtime settings (tdd, verification). Read at each operation that needs them. */
|
|
2456
2391
|
settings: () => SessionRuntimeSettings;
|
|
2457
2392
|
/**
|
|
2458
2393
|
* Host-assigned session id. When set, every persist writes under this id so
|
|
@@ -2468,6 +2403,11 @@ interface SessionDeps {
|
|
|
2468
2403
|
aiService?: IAiService;
|
|
2469
2404
|
/** Plan-generation seam. Defaults to a Planner over the session's aiService. */
|
|
2470
2405
|
planner?: SessionPlanner;
|
|
2406
|
+
/**
|
|
2407
|
+
* Skill lookup for /skill-name interception. Defaults to a SkillsService
|
|
2408
|
+
* over the session's workspace root.
|
|
2409
|
+
*/
|
|
2410
|
+
skillsService?: SkillsService;
|
|
2471
2411
|
}
|
|
2472
2412
|
/**
|
|
2473
2413
|
* The per-session execution stack — deepened from a wiring bag into the
|
|
@@ -2509,6 +2449,7 @@ declare class Session {
|
|
|
2509
2449
|
private unsubObserver;
|
|
2510
2450
|
private readonly hostSessionId?;
|
|
2511
2451
|
private currentSessionId;
|
|
2452
|
+
private readonly skillsService;
|
|
2512
2453
|
constructor(deps: SessionDeps);
|
|
2513
2454
|
/**
|
|
2514
2455
|
* The planner transport for the provider configured *right now* (ADR-0009).
|
|
@@ -2612,8 +2553,8 @@ declare class Session {
|
|
|
2612
2553
|
*/
|
|
2613
2554
|
startPlanning(goal: string, runners: RunnerId[], options?: GeneratePlanOptions): Promise<LegacyPlanState>;
|
|
2614
2555
|
/**
|
|
2615
|
-
* Every subsequent user reply in the planning conversation —
|
|
2616
|
-
* answers,
|
|
2556
|
+
* Every subsequent user reply in the planning conversation — clarifying
|
|
2557
|
+
* answers, outline confirm. One branch, no phase ladder.
|
|
2617
2558
|
*/
|
|
2618
2559
|
continueConversation(userMessage: string, options?: GeneratePlanOptions): Promise<LegacyPlanState>;
|
|
2619
2560
|
/**
|
|
@@ -2648,8 +2589,8 @@ declare class Session {
|
|
|
2648
2589
|
* The catalog the planner may actually draw from — model ids and task-mode
|
|
2649
2590
|
* ids, per selected runner — emitted on EVERY turn, before any plan exists
|
|
2650
2591
|
* or after. The system prompt shows this once at conversation start; a long
|
|
2651
|
-
*
|
|
2652
|
-
*
|
|
2592
|
+
* clarifying conversation outlives that single showing and the planner
|
|
2593
|
+
* starts misquoting it, so this re-states it per turn instead.
|
|
2653
2594
|
*
|
|
2654
2595
|
* Built from the allowlist-filtered view (`filterModelsForPrompt`), the same
|
|
2655
2596
|
* one the system prompt used — a restricted allowlist stays a hard bound on
|
|
@@ -2682,6 +2623,15 @@ declare class Session {
|
|
|
2682
2623
|
private resumeConversation;
|
|
2683
2624
|
/** Whether the planner conversation is live (started and not yet committed to a plan). */
|
|
2684
2625
|
get isConversationActive(): boolean;
|
|
2626
|
+
/**
|
|
2627
|
+
* Intercept a skill invocation (/skill-name) and substitute the skill's
|
|
2628
|
+
* markdown content BEFORE the message reaches the planner. Prevents runners
|
|
2629
|
+
* (Claude Code, OpenCode) from trying to resolve the skill in their own
|
|
2630
|
+
* directory instead of .ordewell/skills/. An unknown skill is surfaced to
|
|
2631
|
+
* the planner as a notice naming what IS available, rather than passing a
|
|
2632
|
+
* bare /unknown through to be mis-resolved.
|
|
2633
|
+
*/
|
|
2634
|
+
private resolveSkillInvocation;
|
|
2685
2635
|
/** Append one dialogue entry to the persisted transcript. Callers persist via the mutatePlan ritual. */
|
|
2686
2636
|
private appendTranscript;
|
|
2687
2637
|
/** Commit a settled (non-task_ops) turn. Both branches run the mutatePlan ritual. */
|
|
@@ -2830,8 +2780,27 @@ declare class Session {
|
|
|
2830
2780
|
get aiServiceInstance(): IAiService;
|
|
2831
2781
|
}
|
|
2832
2782
|
|
|
2783
|
+
/**
|
|
2784
|
+
* Where Ordewell keeps machine-global data (settings, daemon tokens, caches,
|
|
2785
|
+
* user plugins). A single home for everything not tied to a project directory,
|
|
2786
|
+
* so per-project state in `.ordewell/` and global state never collide.
|
|
2787
|
+
*/
|
|
2788
|
+
declare function globalDataDir(): string;
|
|
2789
|
+
/**
|
|
2790
|
+
* One-time lift of a pre-`.ordewell` install's files into the new location.
|
|
2791
|
+
* Each file/dir is checked independently — old exists, new doesn't — rather
|
|
2792
|
+
* than gating the whole thing on "new dir doesn't exist yet". A machine that
|
|
2793
|
+
* migrated `settings.json` under an earlier release already has `globalDataDir()`
|
|
2794
|
+
* on disk, which would otherwise permanently skip lifting anything added to
|
|
2795
|
+
* this list later (`.env` did exactly that: real API keys stranded in the old
|
|
2796
|
+
* dir because the settings.json move had already made the new dir exist).
|
|
2797
|
+
*/
|
|
2798
|
+
declare function migrateOldConfigDir(): void;
|
|
2799
|
+
|
|
2833
2800
|
type VerdictListener = (taskId: string, verdict: Verdict, output: string) => void;
|
|
2834
2801
|
type CheckpointListener = (taskId: string, summary: string) => void;
|
|
2802
|
+
/** Fires on every idleSince transition (null→timestamp on silence, timestamp→null on resume/teardown). */
|
|
2803
|
+
type IdleListener = (taskId: string, idleSince: string | null) => void;
|
|
2835
2804
|
declare class VerdictEngine {
|
|
2836
2805
|
private markerSeen;
|
|
2837
2806
|
private buffers;
|
|
@@ -2839,6 +2808,7 @@ declare class VerdictEngine {
|
|
|
2839
2808
|
private pausedSessions;
|
|
2840
2809
|
private listeners;
|
|
2841
2810
|
private checkpointListeners;
|
|
2811
|
+
private idleListeners;
|
|
2842
2812
|
/**
|
|
2843
2813
|
* Per-task generation counter. Incremented on every watch() and clear().
|
|
2844
2814
|
* Stale callbacks (from a prior session whose generation doesn't match
|
|
@@ -2846,8 +2816,17 @@ declare class VerdictEngine {
|
|
|
2846
2816
|
* wrong session.
|
|
2847
2817
|
*/
|
|
2848
2818
|
private generations;
|
|
2819
|
+
private idleTimers;
|
|
2820
|
+
private idleSince;
|
|
2849
2821
|
onVerdict(listener: VerdictListener): void;
|
|
2850
2822
|
onCheckpoint(listener: CheckpointListener): void;
|
|
2823
|
+
onIdleChange(listener: IdleListener): void;
|
|
2824
|
+
/** Advisory silence timestamp for a task, or null if it isn't idle. */
|
|
2825
|
+
getIdleSince(taskId: string): string | null;
|
|
2826
|
+
/** Restart the silence timer on fresh output; broadcasts the null transition if it was idle. */
|
|
2827
|
+
private touchIdle;
|
|
2828
|
+
/** Tear down idle tracking for a task; broadcasts the null transition if it was idle. */
|
|
2829
|
+
private clearIdle;
|
|
2851
2830
|
approveCheckpoint(taskId: string): void;
|
|
2852
2831
|
rejectCheckpoint(taskId: string, reason: string): void;
|
|
2853
2832
|
/**
|
|
@@ -2934,7 +2913,7 @@ declare function runnerAssignment(catalog: RunnerCatalog, current?: Pick<Task, '
|
|
|
2934
2913
|
*/
|
|
2935
2914
|
declare function retargetTaskRunner(task: Task, runner: RunnerId, catalog: RunnerCatalog): Partial<Task>;
|
|
2936
2915
|
|
|
2937
|
-
declare function buildResearchToolsPrompt(
|
|
2916
|
+
declare function buildResearchToolsPrompt(): string;
|
|
2938
2917
|
/**
|
|
2939
2918
|
* System prompt for one read-only research subagent (issue #34). The digest
|
|
2940
2919
|
* contract matters: the reply goes back to the planner as a tool result, so it
|
|
@@ -2942,7 +2921,7 @@ declare function buildResearchToolsPrompt(subagentsEnabled?: boolean): string;
|
|
|
2942
2921
|
* never a task plan.
|
|
2943
2922
|
*/
|
|
2944
2923
|
declare function buildSubagentSystemPrompt(): string;
|
|
2945
|
-
declare function buildConversationSystemPrompt(goal: string, context: string, modelsByRunner: Partial<Record<RunnerId, DiscoveredModel[]>>, runners: RunnerId[], runnerModes?: Record<RunnerId, RunnerModeInfo[]>, autonomousDefault?: boolean,
|
|
2924
|
+
declare function buildConversationSystemPrompt(goal: string, context: string, modelsByRunner: Partial<Record<RunnerId, DiscoveredModel[]>>, runners: RunnerId[], runnerModes?: Record<RunnerId, RunnerModeInfo[]>, autonomousDefault?: boolean, verificationEnabled?: boolean,
|
|
2946
2925
|
/** Harness planner (ADR-0009): the agent owns its own tools and research budget. */
|
|
2947
2926
|
harnessMode?: boolean): string;
|
|
2948
2927
|
declare const CORE_PLANNER_PROMPT: string;
|
|
@@ -2980,7 +2959,7 @@ declare function buildSplitPrompt(taskId: string, tasks: Task[]): string;
|
|
|
2980
2959
|
* driver (it also runs the tool rounds) but delegates classification here.
|
|
2981
2960
|
* - The corrective prompt texts live here, once.
|
|
2982
2961
|
*
|
|
2983
|
-
* Policies stay at the call sites (
|
|
2962
|
+
* Policies stay at the call sites (ops validation, abort guards) —
|
|
2984
2963
|
* they are inputs to the loop, not part of it.
|
|
2985
2964
|
*/
|
|
2986
2965
|
type RepairVerdict<T> = {
|
|
@@ -3110,7 +3089,13 @@ declare function summarizeOutput(reviewReason: string | undefined, output: strin
|
|
|
3110
3089
|
declare function collectDirectDependencyOutputs(task: Task, allTasks: Task[]): PriorOutput[];
|
|
3111
3090
|
declare function renderPriorOutputs(outputs: PriorOutput[]): string;
|
|
3112
3091
|
declare function augmentPromptWithPriorOutputs(task: Task, allTasks: Task[]): string;
|
|
3113
|
-
|
|
3092
|
+
/**
|
|
3093
|
+
* Numbered task list for the model's context. `planTasks` is the nested task
|
|
3094
|
+
* tree; subtasks render indented under their parent with the same dotted
|
|
3095
|
+
* `taskOrderLabel` the other surfaces use, so an `N.M` the model echoes back
|
|
3096
|
+
* matches what `resolveTaskId` accepts.
|
|
3097
|
+
*/
|
|
3098
|
+
declare function renderPlanMap(planTasks: Task[], currentTaskId: string, opts?: {
|
|
3114
3099
|
maxEntries?: number;
|
|
3115
3100
|
}): string;
|
|
3116
3101
|
interface ComposeOptions {
|
|
@@ -3235,39 +3220,6 @@ declare class TmuxRunner extends AbstractRunner<TmuxSession> {
|
|
|
3235
3220
|
}): Promise<ITerminalSession>;
|
|
3236
3221
|
}
|
|
3237
3222
|
|
|
3238
|
-
declare function stripAnsi(text: string): string;
|
|
3239
|
-
declare function posixShellQuote(s: string): string;
|
|
3240
|
-
/**
|
|
3241
|
-
* Wrap a command for execution inside a POSIX login shell, which is what
|
|
3242
|
-
* resolves runner binaries managed by nvm/volta/asdf.
|
|
3243
|
-
*
|
|
3244
|
-
* Deliberately POSIX-only. This used to take a `platform` and emit
|
|
3245
|
-
* `powershell.exe -Command "'claude' '-p' '…'"` for Windows, which PowerShell
|
|
3246
|
-
* cannot run at all: a quoted string in leading position is parsed in
|
|
3247
|
-
* expression mode, so the invocation died with a parse error before the runner
|
|
3248
|
-
* started — a task that failed instantly, every time, on that platform. Windows
|
|
3249
|
-
* has no login-shell equivalent to emulate (its PATH comes from the registry
|
|
3250
|
-
* and is already inherited), so {@link planShellLaunch} starts the runner
|
|
3251
|
-
* directly there instead of routing it through a shell. Platform choice belongs
|
|
3252
|
-
* to that function; this one only knows how to phrase the POSIX half.
|
|
3253
|
-
*/
|
|
3254
|
-
declare function buildShellInvocation(command: string, args: string[]): {
|
|
3255
|
-
shellPath: string;
|
|
3256
|
-
shellArgs: string[];
|
|
3257
|
-
};
|
|
3258
|
-
/**
|
|
3259
|
-
* Wrap a command in `script` to allocate the PTY some runners require when
|
|
3260
|
-
* headless; `-e` propagates the child's exit code so verification still works.
|
|
3261
|
-
*
|
|
3262
|
-
* POSIX-only by nature — there is no `script` on Windows, which
|
|
3263
|
-
* `HeadlessRunner`'s `hasScriptCmd` probe already discovers, so this is never
|
|
3264
|
-
* reached there.
|
|
3265
|
-
*/
|
|
3266
|
-
declare function wrapWithPty(command: string, args: string[]): {
|
|
3267
|
-
command: string;
|
|
3268
|
-
args: string[];
|
|
3269
|
-
};
|
|
3270
|
-
|
|
3271
3223
|
/**
|
|
3272
3224
|
* A workspace path that does not exist, or exists but is not a directory.
|
|
3273
3225
|
* Checked at every surface that starts a planner or spawns an agent inside
|
|
@@ -3645,4 +3597,4 @@ declare class PlannerModelMemory {
|
|
|
3645
3597
|
recall(provider: string, catalog: PlannerModelCandidate[]): PlannerModelRecall;
|
|
3646
3598
|
}
|
|
3647
3599
|
|
|
3648
|
-
export { ALLOWED_PLUGIN_HOSTS, ALL_PROVIDERS, AUTO_COMMANDS, AbstractRunner, AbstractTerminalSession, ActiveTaskSession, type AgentAdapter, type AgentAdapterFactory, type AgentEvent, type AgentProcessDeps, type AgentStartOptions, AiProvider,
|
|
3600
|
+
export { ALLOWED_PLUGIN_HOSTS, ALL_PROVIDERS, AUTO_COMMANDS, AbstractRunner, AbstractTerminalSession, ActiveTaskSession, type AgentAdapter, type AgentAdapterFactory, type AgentEvent, type AgentProcessDeps, type AgentStartOptions, AiProvider, ApprovalMode, ApprovalRequest, BUILTIN_SKILL_NAMES, BaseAiService, BaseConfig, BaseFileSystem, CLAUDE_CODE_MANIFEST, CLI_PROVIDERS, CMD_EXE_MAX_COMMAND_LINE, CORE_PLANNER_PROMPT, type CappedRows, type CheckpointListener, ClaudeCodeAdapter, CliAgentAiService, type CliAgentAiServiceDeps, CodexAdapter, type CommandClassification, CommandLineTooLongError, type CommandTier, type ComposeOptions, ConsoleLogger, ContextCollector, ConversationMessage, type ConversationRequest, type ConversationTurn, DAEMON_SUBPROTOCOL, DAEMON_TOKEN_SUBPROTOCOL_PREFIX, DiscoveredModel, EmbeddedNewlineError, type EnvAdmission, EnvConfig, type ExecFileFn, type ExecImpl, ExecutableNotFoundError, FindSymbolOptions, FsPluginStore, GIT_READONLY_SUBCOMMANDS, GeminiService, GlobOptions, type GrepInvocation, GrepOptions, type HasBinFn, HeadlessRunner, type HeadlessRunnerDeps, HeadlessSession, type IAiService, IApproval, IConfig, IFileSystem, type ILogger, type INotification, IPluginStore, ITerminalRunner, ITerminalSession, JSON_REPAIR_INSTRUCTION, type KillTreeDeps, type LaunchDeps, type LaunchPlan, LegacyPlanState, LineBuffer, type MappedTool, ModelResolver, type ModelResolverDeps, type ModifyPlanRequest, type NotificationAction, OPENCODE_MANIFEST, ORDEWELL_SETTABLE_ENV, OpenAiService, OpenCodeAdapter, type OrchestratorObserver, OrchestratorOption, PLUGIN_NAME_PATTERN, PROVIDER_CREDENTIAL_ENV, PROVIDER_DETECT_PRIORITY, PROVIDER_LABEL, PROVIDER_PRIORITY, PROVIDER_SHORT_LABEL, type PendingApproval, PendingApprovals, type PendingApprovalsOptions, PlanEditError, PlanParseError, type PlanRequest, PlanState, PlanStatus, PlanStore, Planner, type PlannerModelCandidate, type PlannerModelChoice, PlannerModelMemory, type PlannerModelRecall, type PlannerModelStore, type PlannerReplyClassification, type PlannerRuntimeToggles, type PluginSource, type PrdBlock, type PreparedLaunch, type PriorOutput, type ProbeFn, ProviderModelLists, type ProviderRegistration, type PtySize, type PtyWrapOptions, QueuedMessage, REFUSED_COMMANDS, ReadFileOpts, type RepairLoopOpts, type RepairVerdict, type ResearchChat, ResearchLogEntry, ResearchProgress, type ResearchShell, type ResearchShellDeps, ResearchToolType, type ResearchTurn, ResolveContext, type RunnerCatalog, RunnerId, RunnerInstallation, RunnerInvocation, type RunnerMode, RunnerModeInfo, RunnerPluginManifest, RunnerRegistry, type RunnerSpawnOptions, SETTINGS_ENV_ALLOWLIST, SETTINGS_ENV_REFUSED, STATE_DIR, STOPPED_TOOL_RESULT, SYMBOL_LANGUAGES, Session, SessionBroadcaster, type SessionData, type SessionDeps, type SessionMeta, type SessionPlanner, type SessionRuntimeSettings, SettingsService, type ShellDialect, type SkillInfo, type SkillMetadata, SkillsService, type SpawnSpec, StdioAgentAdapter, TASK_QUERY_ANSWER_OR_OPS, TASK_QUERY_FIELDS, TASK_QUERY_PROTOCOL, TASK_QUERY_REMINDER, TRUNCATED_PLAN_REPAIR_INSTRUCTION, Task, TaskOp, TaskOrchestrator, type TaskQuery, type TaskQueryCatalog, type TaskQueryField, TaskSnapshot, TmuxRunner, type TmuxRunnerDeps, type TokenCarriers, type ToolCall, ToolOutcome, type ToolResult, type UserSettings, Verdict, VerdictEngine, type VerdictListener, WINDOWS_MAX_COMMAND_LINE, type WorkspaceCheckDeps, WorkspaceNotAProjectError, WorkspaceNotFoundError, type WorkspaceProjectCheckDeps, admitSettingsEnv, applyHeadLimit, assertInstallablePluginUrl, assertPlainPluginName, assertWorkspaceExists, assertWorkspaceIsProject, augmentPromptWithPriorOutputs, augmentedPath, bearerHeaderValue, buildConversationSystemPrompt, buildFallbackGrepArgs, buildGlobArgs, buildGrepArgs, buildMergePrompt, buildModifyDuringExecutionPrompt, buildModifyPlanPrompt, buildPlanWithResults, buildResearchPrompt, buildResearchToolsPrompt, buildRunnerInvocation, buildShellInvocation, buildSplitPrompt, buildSubagentSystemPrompt, clampThinkingEffort, classifyCommand, classifyPlannerReply, classifyPluginSource, clearAugmentedPathCache, clearDaemonToken, clearResearchShellCache, clearState, clipboardCopyCommand, coerceAssignments, collectDirectDependencyOutputs, composeAugmentedPrompt, configuredProviders, createAiService, createSkillsService, daemonTokenPath, defaultLogger, definitionPattern, deleteSession, discoverGeminiModels, effectiveAllowlist, ensureDir, ensureStateDirIgnored, executionLogBlock, extractPrdBlock, extractPresentedToken, filterFallbackByAnchoredInclude, filterModelsForPrompt, formatSearchOutput, generatePlanWithRepair, getLatestSession, getProviderMeta, getSettingsPath, getStateDir, globalDataDir, grantScopeFor, hasTmux, includeGlobFor, isCliProvider, isExecutableResolved, isOpenAiProvider, isPlainPluginName, isValidManifest, killTree, languageForId, listSessions, loadSession, loadSessionPlanState, loadState, mapAgentTool, migrateOldConfigDir, mintDaemonToken, mintSessionId, modelContextBlock, modifyValidationFeedback, normalizeAgentArgs, normalizeGeminiModel, parseTaskQueryJson, pendingEditRulesBlock, planDirectLaunch, planShellLaunch, posixShellQuote, prefixModelId, providerForRunner, reEmitPlanPrompt, reEmitTaskOpsPrompt, reEmitTaskQueryPrompt, readDaemonToken, referencePattern, renderPlanMap, renderPriorOutputs, renderTaskQueryAnswer, repairLoop, researchShellWarning, researchToolsPath, resolveArgs, resolvePluginInstallDir, resolveProviderFromPrefix, resolveResearchShell, resolveSkillInvocation, resolveWithin, retargetTaskRunner, runnerAssignment, runnerForProvider, sanitizeSlug, savePrdMarkdown, saveSession, saveState, sessionRuntimeSettings, stateExists, stripAnsi, stripModelPrefix, summarizeOutput, taskOpsRejectedPrompt, taskQuerySignature, textHasTaskQuery, tmuxSessionName, tmuxSocketName, tmuxWindowName, tokenSubprotocols, tokensMatch, truncatedPlanReEmitPrompt, wellKnownBinDirs, windowsCommandLine, withPath, wrapWithPty };
|