@autopilot-harness/port-runner 0.12.1 → 0.14.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/dist/first-turn-prompt.d.ts +15 -1
- package/dist/first-turn-prompt.d.ts.map +1 -1
- package/dist/first-turn-prompt.js +46 -0
- package/dist/first-turn-prompt.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/loop.d.ts +20 -1
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +41 -9
- package/dist/loop.js.map +1 -1
- package/dist/resume.d.ts +6 -3
- package/dist/resume.d.ts.map +1 -1
- package/dist/resume.js +14 -8
- package/dist/resume.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ChecklistItem } from "@autopilot-harness/core";
|
|
2
2
|
/** Condensed executing workflow (English stock; followups use ReviewEngine locale). */
|
|
3
3
|
export declare const RUNNER_EXECUTING_SUMMARY = "Implement only the current unchecked checklist item (align with plan.md).\nWhen required, write .autopilot/verify-last.json with matching itemId (and ok: true for hand-written reports).\nEnd the turn by exiting the agent process so the Runner can inject the next fix/confirm/advance tip.\nDo not invent Advance/Done; do not commit/push unless an Advance/Done tip explicitly asks for a local commit.\nFollow only the next Runner-injected message for review lenses.";
|
|
4
|
+
/** Condensed planning workflow (English stock; from autopilot-planning.md). */
|
|
5
|
+
export declare const RUNNER_PLANNING_SUMMARY = "Follow the Autopilot planning / grill workflow.\nOpen each round with a Round heading; number questions globally (Q1, Q2, \u2026 \u2014 do not restart at Q1).\nWrite plans/<slug>/brief.md, plan.md, and checklist.md when ready; update plans/README.md.\nPlanning may edit plans/** and docs only \u2014 no product code until /autopilot-run (or runner start --run).\nUser-visible replies must match the user's language.\nEnd the turn by exiting the agent process so the Runner can continue (pending tip or a later start with --message).\nDo not invent Advance/Done; do not start checklist execution in planning.";
|
|
4
6
|
/**
|
|
5
7
|
* First-turn prompt after `--run` when there is no pending followup.
|
|
6
8
|
*/
|
|
@@ -8,4 +10,16 @@ export declare function buildFirstTurnPrompt(opts: {
|
|
|
8
10
|
slug: string;
|
|
9
11
|
item: ChecklistItem;
|
|
10
12
|
}): string;
|
|
13
|
+
export interface BuildPlanningFirstTurnPromptOpts {
|
|
14
|
+
/** Bound or explicit track slug when known. */
|
|
15
|
+
slug?: string;
|
|
16
|
+
/** Initial brief from `--brief` / parseSlugAndBrief (not persisted in session). */
|
|
17
|
+
brief?: string;
|
|
18
|
+
/** User turn from `--message` (grill answer / continuation). */
|
|
19
|
+
message?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* First-turn (or resume) prompt for `phase=planning` when there is no pending tip.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildPlanningFirstTurnPrompt(opts?: BuildPlanningFirstTurnPromptOpts | null): string;
|
|
11
25
|
//# sourceMappingURL=first-turn-prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-turn-prompt.d.ts","sourceRoot":"","sources":["../src/first-turn-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"first-turn-prompt.d.ts","sourceRoot":"","sources":["../src/first-turn-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AAEjC,uFAAuF;AACvF,eAAO,MAAM,wBAAwB,odAI2B,CAAC;AAEjE,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,omBAMsC,CAAC;AAE3E;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;CACrB,GAAG,MAAM,CAaT;AAED,MAAM,WAAW,gCAAgC;IAC/C,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,CAAC,EAAE,gCAAgC,GAAG,IAAI,GAC7C,MAAM,CA6CR"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
+
import { isSafeTrackSlug, } from "@autopilot-harness/core";
|
|
1
2
|
/** Condensed executing workflow (English stock; followups use ReviewEngine locale). */
|
|
2
3
|
export const RUNNER_EXECUTING_SUMMARY = `Implement only the current unchecked checklist item (align with plan.md).
|
|
3
4
|
When required, write .autopilot/verify-last.json with matching itemId (and ok: true for hand-written reports).
|
|
4
5
|
End the turn by exiting the agent process so the Runner can inject the next fix/confirm/advance tip.
|
|
5
6
|
Do not invent Advance/Done; do not commit/push unless an Advance/Done tip explicitly asks for a local commit.
|
|
6
7
|
Follow only the next Runner-injected message for review lenses.`;
|
|
8
|
+
/** Condensed planning workflow (English stock; from autopilot-planning.md). */
|
|
9
|
+
export const RUNNER_PLANNING_SUMMARY = `Follow the Autopilot planning / grill workflow.
|
|
10
|
+
Open each round with a Round heading; number questions globally (Q1, Q2, … — do not restart at Q1).
|
|
11
|
+
Write plans/<slug>/brief.md, plan.md, and checklist.md when ready; update plans/README.md.
|
|
12
|
+
Planning may edit plans/** and docs only — no product code until /autopilot-run (or runner start --run).
|
|
13
|
+
User-visible replies must match the user's language.
|
|
14
|
+
End the turn by exiting the agent process so the Runner can continue (pending tip or a later start with --message).
|
|
15
|
+
Do not invent Advance/Done; do not start checklist execution in planning.`;
|
|
7
16
|
/**
|
|
8
17
|
* First-turn prompt after `--run` when there is no pending followup.
|
|
9
18
|
*/
|
|
@@ -21,4 +30,41 @@ export function buildFirstTurnPrompt(opts) {
|
|
|
21
30
|
"(exit the agent process). Do not invent Advance/Done — wait for the next Runner inject.",
|
|
22
31
|
].join("\n");
|
|
23
32
|
}
|
|
33
|
+
function isPlainOpts(v) {
|
|
34
|
+
return (v !== null &&
|
|
35
|
+
typeof v === "object" &&
|
|
36
|
+
!Array.isArray(v));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* First-turn (or resume) prompt for `phase=planning` when there is no pending tip.
|
|
40
|
+
*/
|
|
41
|
+
export function buildPlanningFirstTurnPrompt(opts) {
|
|
42
|
+
const o = isPlainOpts(opts) ? opts : {};
|
|
43
|
+
const rawSlug = typeof o.slug === "string" ? o.slug.trim() : "";
|
|
44
|
+
// Never echo unsafe/path-like slugs into the agent prompt (trust boundary).
|
|
45
|
+
const slug = rawSlug && isSafeTrackSlug(rawSlug) ? rawSlug : "";
|
|
46
|
+
const brief = typeof o.brief === "string" ? o.brief.trim() : "";
|
|
47
|
+
const message = typeof o.message === "string" ? o.message.trim() : "";
|
|
48
|
+
const lines = [
|
|
49
|
+
"[Autopilot Runner — planning]",
|
|
50
|
+
"",
|
|
51
|
+
];
|
|
52
|
+
if (slug) {
|
|
53
|
+
lines.push(`Track: ${slug}`, "");
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
lines.push("Track: (unset — pick a safe slug when writing plans/<slug>/)", "");
|
|
57
|
+
}
|
|
58
|
+
if (brief) {
|
|
59
|
+
lines.push("Initial brief:", brief, "");
|
|
60
|
+
}
|
|
61
|
+
if (message) {
|
|
62
|
+
lines.push("User message:", message, "");
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
lines.push("No new user message this turn — continue from existing plans/ artifacts", "(advance the grill frontier or finalize brief/plan/checklist). Do not pretend", "the user answered in chat; use --message on the next runner start for replies.", "");
|
|
66
|
+
}
|
|
67
|
+
lines.push(RUNNER_PLANNING_SUMMARY, "", "Rules: planning only (plans/** + docs); exit the agent process when the turn ends.", "Full oral grill is better on a hook host; Runner uses --brief / --message between starts.");
|
|
68
|
+
return lines.join("\n");
|
|
69
|
+
}
|
|
24
70
|
//# sourceMappingURL=first-turn-prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-turn-prompt.js","sourceRoot":"","sources":["../src/first-turn-prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"first-turn-prompt.js","sourceRoot":"","sources":["../src/first-turn-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAEhB,MAAM,yBAAyB,CAAC;AAEjC,uFAAuF;AACvF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;gEAIwB,CAAC;AAEjE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;0EAMmC,CAAC;AAE3E;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAGpC;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtD,OAAO;QACL,gCAAgC;QAChC,EAAE;QACF,UAAU,IAAI,CAAC,IAAI,EAAE;QACrB,iBAAiB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,EAAE;QAC1C,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,qFAAqF;QACrF,yFAAyF;KAC1F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAWD,SAAS,WAAW,CAClB,CAAU;IAEV,OAAO,CACL,CAAC,KAAK,IAAI;QACV,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAA8C;IAE9C,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,4EAA4E;IAC5E,MAAM,IAAI,GAAG,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtE,MAAM,KAAK,GAAa;QACtB,+BAA+B;QAC/B,EAAE;KACH,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,8DAA8D,EAC9D,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,yEAAyE,EACzE,+EAA+E,EAC/E,gFAAgF,EAChF,EAAE,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,uBAAuB,EACvB,EAAE,EACF,oFAAoF,EACpF,2FAA2F,CAC5F,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { RUNNER_PLATFORM, RUNNER_DEFAULT_MAX_ITERATIONS, RUNNER_MIN_RECOMMENDED_ITERATIONS, RUNNER_MAX_ITERATIONS_CLAMP, RUNNER_PROMPT_FILE_THRESHOLD, normalizeRunnerConfig, hasRunnerCommand, assertRunnerCommand, type RunnerConfig, type RunnerConfigInput, type RunnerPromptMode, } from "./config.js";
|
|
6
6
|
export { stableRunnerConversationId, runnerConversationFileToken, } from "./conversation-id.js";
|
|
7
|
-
export { RUNNER_EXECUTING_SUMMARY, buildFirstTurnPrompt, } from "./first-turn-prompt.js";
|
|
7
|
+
export { RUNNER_EXECUTING_SUMMARY, RUNNER_PLANNING_SUMMARY, buildFirstTurnPrompt, buildPlanningFirstTurnPrompt, type BuildPlanningFirstTurnPromptOpts, } from "./first-turn-prompt.js";
|
|
8
8
|
export { resolvePromptChannel, assertTemplateMatchesChannel, tokenizeCommandTemplate, expandCommandTemplate, resolveRunnerCwd, unlinkPromptFile, resolveChecklistPathInProject, type PromptChannel, type ExpandedCommand, } from "./command-template.js";
|
|
9
9
|
export { driverResultToStopStatus, type AgentDriver, type DriverResult, type DriverRunInput, } from "./driver.js";
|
|
10
10
|
export { CliDriver } from "./cli-driver.js";
|
|
11
11
|
export { MockDriver, type MockDriverStep } from "./mock-driver.js";
|
|
12
12
|
export { runStopTick, shouldContinueAfterStop, type RunStopTickInput, type RunStopTickResult, } from "./stop-tick.js";
|
|
13
|
-
export { canResumeRunnerSession, type ResumeDecision, } from "./resume.js";
|
|
14
|
-
export { runRunnerLoop, type RunRunnerLoopOptions, type RunnerLoopResult, type RunnerLoopOutcome, } from "./loop.js";
|
|
13
|
+
export { canResumeRunnerSession, RUNNER_RESUME_START_HINT, type ResumeDecision, } from "./resume.js";
|
|
14
|
+
export { runRunnerLoop, resolveInitialPrompt, type RunRunnerLoopOptions, type ResolveInitialPromptOptions, type RunnerLoopResult, type RunnerLoopOutcome, } from "./loop.js";
|
|
15
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,wBAAwB,EACxB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,4BAA4B,EAC5B,KAAK,gCAAgC,GACtC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,6BAA6B,EAC7B,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,wBAAwB,EACxB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { RUNNER_PLATFORM, RUNNER_DEFAULT_MAX_ITERATIONS, RUNNER_MIN_RECOMMENDED_ITERATIONS, RUNNER_MAX_ITERATIONS_CLAMP, RUNNER_PROMPT_FILE_THRESHOLD, normalizeRunnerConfig, hasRunnerCommand, assertRunnerCommand, } from "./config.js";
|
|
6
6
|
export { stableRunnerConversationId, runnerConversationFileToken, } from "./conversation-id.js";
|
|
7
|
-
export { RUNNER_EXECUTING_SUMMARY, buildFirstTurnPrompt, } from "./first-turn-prompt.js";
|
|
7
|
+
export { RUNNER_EXECUTING_SUMMARY, RUNNER_PLANNING_SUMMARY, buildFirstTurnPrompt, buildPlanningFirstTurnPrompt, } from "./first-turn-prompt.js";
|
|
8
8
|
export { resolvePromptChannel, assertTemplateMatchesChannel, tokenizeCommandTemplate, expandCommandTemplate, resolveRunnerCwd, unlinkPromptFile, resolveChecklistPathInProject, } from "./command-template.js";
|
|
9
9
|
export { driverResultToStopStatus, } from "./driver.js";
|
|
10
10
|
export { CliDriver } from "./cli-driver.js";
|
|
11
11
|
export { MockDriver } from "./mock-driver.js";
|
|
12
12
|
export { runStopTick, shouldContinueAfterStop, } from "./stop-tick.js";
|
|
13
|
-
export { canResumeRunnerSession, } from "./resume.js";
|
|
14
|
-
export { runRunnerLoop, } from "./loop.js";
|
|
13
|
+
export { canResumeRunnerSession, RUNNER_RESUME_START_HINT, } from "./resume.js";
|
|
14
|
+
export { runRunnerLoop, resolveInitialPrompt, } from "./loop.js";
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GAIpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,wBAAwB,EACxB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GAIpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,4BAA4B,GAE7B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,6BAA6B,GAG9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,wBAAwB,GAIzB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EACL,WAAW,EACX,uBAAuB,GAGxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,aAAa,EACb,oBAAoB,GAKrB,MAAM,WAAW,CAAC"}
|
package/dist/loop.d.ts
CHANGED
|
@@ -15,7 +15,10 @@ export interface RunRunnerLoopOptions {
|
|
|
15
15
|
projectRoot: string;
|
|
16
16
|
conversationId: string;
|
|
17
17
|
config: RunnerConfig;
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* When set, applyRun before the loop (fresh `--run`).
|
|
20
|
+
* Planning `--on` is applied by the CLI only — this loop never runs the ON binder.
|
|
21
|
+
*/
|
|
19
22
|
runSlug?: string;
|
|
20
23
|
phaseActions?: PhaseActionConfig;
|
|
21
24
|
/** Override driver (tests). Default: CliDriver when command set. */
|
|
@@ -25,7 +28,23 @@ export interface RunRunnerLoopOptions {
|
|
|
25
28
|
onPrompt?: (prompt: string, iteration: number) => void;
|
|
26
29
|
/** Override Stop tick (tests). Default: runStopTick. */
|
|
27
30
|
stopTick?: typeof runStopTick;
|
|
31
|
+
/** Planning first-turn: `--brief` text (not persisted; prompt only). */
|
|
32
|
+
planningBrief?: string;
|
|
33
|
+
/** Planning first-turn / resume: `--message` user turn (prompt only). */
|
|
34
|
+
planningMessage?: string;
|
|
28
35
|
}
|
|
36
|
+
export interface ResolveInitialPromptOptions {
|
|
37
|
+
store: StateStore;
|
|
38
|
+
conversationId: string;
|
|
39
|
+
projectRoot: string;
|
|
40
|
+
planningBrief?: string;
|
|
41
|
+
planningMessage?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Pick the first agent prompt for a Runner start.
|
|
45
|
+
* Priority: pending tip → planning builder → executing firstUnchecked.
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveInitialPrompt(opts: ResolveInitialPromptOptions): string;
|
|
29
48
|
/**
|
|
30
49
|
* External Autopilot loop: spawn agent → handleStop → re-inject tip / stop.
|
|
31
50
|
*/
|
package/dist/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,OAAO,EACL,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,kBAAkB,GAClB,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,OAAO,EACL,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,kBAAkB,GAClB,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,WAAW,CAAC;IAC9B,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,UAAU,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,2BAA2B,GAChC,MAAM,CA4DR;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAsN3B"}
|
package/dist/loop.js
CHANGED
|
@@ -3,24 +3,50 @@ import { RUNNER_PLATFORM, assertRunnerCommand } from "./config.js";
|
|
|
3
3
|
import { CliDriver } from "./cli-driver.js";
|
|
4
4
|
import { resolveChecklistPathInProject } from "./command-template.js";
|
|
5
5
|
import { driverResultToStopStatus } from "./driver.js";
|
|
6
|
-
import { buildFirstTurnPrompt } from "./first-turn-prompt.js";
|
|
6
|
+
import { buildFirstTurnPrompt, buildPlanningFirstTurnPrompt } from "./first-turn-prompt.js";
|
|
7
7
|
import { canResumeRunnerSession } from "./resume.js";
|
|
8
8
|
import { runStopTick, shouldContinueAfterStop, } from "./stop-tick.js";
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Pick the first agent prompt for a Runner start.
|
|
11
|
+
* Priority: pending tip → planning builder → executing firstUnchecked.
|
|
12
|
+
*/
|
|
13
|
+
export function resolveInitialPrompt(opts) {
|
|
14
|
+
if (!opts ||
|
|
15
|
+
typeof opts !== "object" ||
|
|
16
|
+
!opts.store ||
|
|
17
|
+
typeof opts.conversationId !== "string" ||
|
|
18
|
+
typeof opts.projectRoot !== "string") {
|
|
19
|
+
throw new Error("Cannot build first-turn prompt: invalid resolveInitialPrompt options.");
|
|
20
|
+
}
|
|
21
|
+
const { store, conversationId, projectRoot } = opts;
|
|
10
22
|
const chain = store.getReviewChain(conversationId);
|
|
11
23
|
const pending = chain?.pending_followup?.trim() ?? "";
|
|
12
24
|
if (pending)
|
|
13
25
|
return pending;
|
|
14
26
|
const session = store.getSession(conversationId);
|
|
15
|
-
const
|
|
27
|
+
const phase = session?.phase ?? "";
|
|
28
|
+
const trackId = session?.track_id?.trim() ?? "";
|
|
16
29
|
const root = normalizeProjectRoot(store.projectRoot) ??
|
|
17
30
|
normalizeProjectRoot(projectRoot);
|
|
31
|
+
if (phase === "planning") {
|
|
32
|
+
return buildPlanningFirstTurnPrompt({
|
|
33
|
+
slug: trackId && isSafeTrackSlug(trackId) ? trackId : undefined,
|
|
34
|
+
brief: opts.planningBrief,
|
|
35
|
+
message: opts.planningMessage,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (phase !== "executing") {
|
|
39
|
+
const phaseDisp = String(phase || "missing")
|
|
40
|
+
.replace(/[\u0000-\u001f\u007f]/g, "")
|
|
41
|
+
.slice(0, 32);
|
|
42
|
+
throw new Error(`Cannot build first-turn prompt: session phase is "${phaseDisp}" (need planning, executing, or a pending tip).`);
|
|
43
|
+
}
|
|
18
44
|
const checklistPath = session?.checklist_path?.trim();
|
|
19
|
-
if (!root || !
|
|
45
|
+
if (!root || !trackId || !checklistPath) {
|
|
20
46
|
throw new Error("Cannot build first-turn prompt: missing track or checklist path.");
|
|
21
47
|
}
|
|
22
|
-
if (!isSafeTrackSlug(
|
|
23
|
-
throw new Error(`Unsafe track slug in session: "${
|
|
48
|
+
if (!isSafeTrackSlug(trackId)) {
|
|
49
|
+
throw new Error(`Unsafe track slug in session: "${trackId.slice(0, 64)}"`);
|
|
24
50
|
}
|
|
25
51
|
const abs = resolveChecklistPathInProject(root, checklistPath);
|
|
26
52
|
if (!abs) {
|
|
@@ -29,9 +55,9 @@ function resolveInitialPrompt(store, conversationId, projectRoot) {
|
|
|
29
55
|
const cl = parseChecklist(abs, { projectRoot: root });
|
|
30
56
|
const item = firstUnchecked(cl);
|
|
31
57
|
if (!item) {
|
|
32
|
-
throw new Error(`No unchecked items in track "${
|
|
58
|
+
throw new Error(`No unchecked items in track "${trackId}".`);
|
|
33
59
|
}
|
|
34
|
-
return buildFirstTurnPrompt({ slug, item });
|
|
60
|
+
return buildFirstTurnPrompt({ slug: trackId, item });
|
|
35
61
|
}
|
|
36
62
|
/**
|
|
37
63
|
* External Autopilot loop: spawn agent → handleStop → re-inject tip / stop.
|
|
@@ -88,7 +114,13 @@ export async function runRunnerLoop(opts) {
|
|
|
88
114
|
}
|
|
89
115
|
let prompt;
|
|
90
116
|
try {
|
|
91
|
-
prompt = resolveInitialPrompt(
|
|
117
|
+
prompt = resolveInitialPrompt({
|
|
118
|
+
store: opts.store,
|
|
119
|
+
conversationId: opts.conversationId,
|
|
120
|
+
projectRoot: root,
|
|
121
|
+
planningBrief: opts.planningBrief,
|
|
122
|
+
planningMessage: opts.planningMessage,
|
|
123
|
+
});
|
|
92
124
|
}
|
|
93
125
|
catch (err) {
|
|
94
126
|
return {
|
package/dist/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,GAItB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
|
package/dist/resume.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { type StateStore } from "@autopilot-harness/core";
|
|
2
|
+
/** Idle / missing-session hint: planning flags + executing --run. */
|
|
3
|
+
export declare const RUNNER_RESUME_START_HINT = "npx @autopilot-harness/cli runner start --on [--brief ...] [--message ...] or --run <slug>";
|
|
2
4
|
export type ResumeDecision = {
|
|
3
5
|
ok: true;
|
|
4
|
-
reason: "pending" | "executing";
|
|
6
|
+
reason: "pending" | "planning" | "executing";
|
|
5
7
|
} | {
|
|
6
8
|
ok: false;
|
|
7
9
|
reason: "missing" | "paused" | "idle";
|
|
8
10
|
message: string;
|
|
9
11
|
};
|
|
10
12
|
/**
|
|
11
|
-
* Whether `runner start` may continue without `--run` (research §
|
|
13
|
+
* Whether `runner start` may continue without `--run` / `--on` (research §5).
|
|
12
14
|
* When there is no pending tip, gates must match first-turn prompt builders
|
|
13
|
-
*
|
|
15
|
+
* so resume never ok-then-throw: planning needs only unpaused phase;
|
|
16
|
+
* executing needs track + in-project checklist + unchecked item.
|
|
14
17
|
*/
|
|
15
18
|
export declare function canResumeRunnerSession(store: StateStore, conversationId: string, projectRoot: string): ResumeDecision;
|
|
16
19
|
//# sourceMappingURL=resume.d.ts.map
|
package/dist/resume.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../src/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../src/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAGjC,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,+FACyD,CAAC;AAE/F,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,cAAc,CAuFhB"}
|
package/dist/resume.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { countUnchecked, isSafeTrackSlug, normalizeProjectRoot, parseChecklist, } from "@autopilot-harness/core";
|
|
2
2
|
import { resolveChecklistPathInProject } from "./command-template.js";
|
|
3
|
+
/** Idle / missing-session hint: planning flags + executing --run. */
|
|
4
|
+
export const RUNNER_RESUME_START_HINT = "npx @autopilot-harness/cli runner start --on [--brief ...] [--message ...] or --run <slug>";
|
|
3
5
|
/**
|
|
4
|
-
* Whether `runner start` may continue without `--run` (research §
|
|
6
|
+
* Whether `runner start` may continue without `--run` / `--on` (research §5).
|
|
5
7
|
* When there is no pending tip, gates must match first-turn prompt builders
|
|
6
|
-
*
|
|
8
|
+
* so resume never ok-then-throw: planning needs only unpaused phase;
|
|
9
|
+
* executing needs track + in-project checklist + unchecked item.
|
|
7
10
|
*/
|
|
8
11
|
export function canResumeRunnerSession(store, conversationId, projectRoot) {
|
|
9
12
|
if (!store.isConversationIdOk(conversationId)) {
|
|
@@ -18,7 +21,7 @@ export function canResumeRunnerSession(store, conversationId, projectRoot) {
|
|
|
18
21
|
return {
|
|
19
22
|
ok: false,
|
|
20
23
|
reason: "missing",
|
|
21
|
-
message:
|
|
24
|
+
message: `No runner session. Start with: ${RUNNER_RESUME_START_HINT}`,
|
|
22
25
|
};
|
|
23
26
|
}
|
|
24
27
|
if (session.paused !== 0) {
|
|
@@ -33,6 +36,9 @@ export function canResumeRunnerSession(store, conversationId, projectRoot) {
|
|
|
33
36
|
if (pending) {
|
|
34
37
|
return { ok: true, reason: "pending" };
|
|
35
38
|
}
|
|
39
|
+
if (session.phase === "planning") {
|
|
40
|
+
return { ok: true, reason: "planning" };
|
|
41
|
+
}
|
|
36
42
|
if (session.phase === "executing") {
|
|
37
43
|
const root = normalizeProjectRoot(store.projectRoot) ??
|
|
38
44
|
normalizeProjectRoot(projectRoot);
|
|
@@ -42,7 +48,7 @@ export function canResumeRunnerSession(store, conversationId, projectRoot) {
|
|
|
42
48
|
return {
|
|
43
49
|
ok: false,
|
|
44
50
|
reason: "idle",
|
|
45
|
-
message:
|
|
51
|
+
message: `Cannot resume: missing track or checklist path. Start with: ${RUNNER_RESUME_START_HINT}`,
|
|
46
52
|
};
|
|
47
53
|
}
|
|
48
54
|
if (!isSafeTrackSlug(slug)) {
|
|
@@ -58,7 +64,7 @@ export function canResumeRunnerSession(store, conversationId, projectRoot) {
|
|
|
58
64
|
return {
|
|
59
65
|
ok: false,
|
|
60
66
|
reason: "idle",
|
|
61
|
-
message:
|
|
67
|
+
message: `Checklist not found or outside project. Start with: ${RUNNER_RESUME_START_HINT}`,
|
|
62
68
|
};
|
|
63
69
|
}
|
|
64
70
|
const cl = parseChecklist(abs, { projectRoot: root });
|
|
@@ -68,21 +74,21 @@ export function canResumeRunnerSession(store, conversationId, projectRoot) {
|
|
|
68
74
|
return {
|
|
69
75
|
ok: false,
|
|
70
76
|
reason: "idle",
|
|
71
|
-
message:
|
|
77
|
+
message: `Track has no unchecked items. Start with: ${RUNNER_RESUME_START_HINT}`,
|
|
72
78
|
};
|
|
73
79
|
}
|
|
74
80
|
catch {
|
|
75
81
|
return {
|
|
76
82
|
ok: false,
|
|
77
83
|
reason: "idle",
|
|
78
|
-
message:
|
|
84
|
+
message: `Cannot read checklist for resume. Start with: ${RUNNER_RESUME_START_HINT}`,
|
|
79
85
|
};
|
|
80
86
|
}
|
|
81
87
|
}
|
|
82
88
|
return {
|
|
83
89
|
ok: false,
|
|
84
90
|
reason: "idle",
|
|
85
|
-
message:
|
|
91
|
+
message: `Nothing to resume. Start with: ${RUNNER_RESUME_START_HINT}`,
|
|
86
92
|
};
|
|
87
93
|
}
|
|
88
94
|
//# sourceMappingURL=resume.js.map
|
package/dist/resume.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../src/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,cAAc,GAEf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../src/resume.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autopilot-harness/port-runner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Autopilot harness external process runner for hosts without stop-continue (CLI loop + drivers)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"dist"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@autopilot-harness/core": "0.
|
|
28
|
+
"@autopilot-harness/core": "0.14.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"typescript": "^5.8.2"
|