@autopilot-harness/core 0.2.12 → 0.2.14

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.
@@ -7,4 +7,14 @@ export interface ProductCodeEditOptions {
7
7
  * No extension allowlist — exclusions live in `.autopilotignore` (+ gitignore A).
8
8
  */
9
9
  export declare function isProductCodeEdit(filePath: string, opts?: ProductCodeEditOptions): boolean;
10
+ /**
11
+ * True when the working tree has at least one **product** path dirty vs HEAD
12
+ * (or untracked product file). Used on stop when afterFileEdit never fired
13
+ * (e.g. Shell wrote bundled assets) so the engine can still arm `code_edited`.
14
+ *
15
+ * Fail-closed on git errors. Respects `.autopilotignore` + untracked gitignore
16
+ * via {@link isProductCodeEdit}. Autopilot-ignored paths do not consume the
17
+ * classify budget so a long ignored prefix cannot hide a later product dirty.
18
+ */
19
+ export declare function hasDirtyProductCode(projectRoot: string): boolean;
10
20
  //# sourceMappingURL=code-edit-detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-edit-detector.d.ts","sourceRoot":"","sources":["../src/code-edit-detector.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA+BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,sBAAsB,GAC5B,OAAO,CAcT"}
1
+ {"version":3,"file":"code-edit-detector.d.ts","sourceRoot":"","sources":["../src/code-edit-detector.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA+BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,sBAAsB,GAC5B,OAAO,CAcT;AAiED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAgChE"}
@@ -1,5 +1,7 @@
1
1
  import { spawnSync } from "node:child_process";
2
+ import path from "node:path";
2
3
  import { DEFAULT_AUTOPILOT_IGNORE_PATTERNS, isAutopilotIgnoredPath, loadAutopilotIgnorePatterns, toProjectRelativePath, } from "./autopilot-ignore.js";
4
+ import { normalizeProjectRoot } from "./project-path.js";
3
5
  /**
4
6
  * Option A: untracked + gitignored → not product.
5
7
  * Tracked files are not reported by `git check-ignore` without `--no-index`,
@@ -41,4 +43,104 @@ export function isProductCodeEdit(filePath, opts) {
41
43
  return false;
42
44
  return true;
43
45
  }
46
+ /** Cap how many git path lines we collect (stop-hook budget). */
47
+ const MAX_DIRTY_PATHS_COLLECT = 2000;
48
+ /** Cap how many non-ignored paths we fully classify. */
49
+ const MAX_DIRTY_PATHS_CLASSIFY = 200;
50
+ /**
51
+ * List paths changed vs HEAD plus untracked (non-ignored) files under `cwd`.
52
+ * Uses `-z` so spaces / odd names are not shell-quoted. Fail-closed: empty on
53
+ * non-git, spawn error, or timeout.
54
+ */
55
+ function gitDirtyRelativePaths(projectRoot) {
56
+ if (!projectRoot || projectRoot.includes("\0"))
57
+ return [];
58
+ const out = [];
59
+ const seen = new Set();
60
+ const pushZ = (stdout) => {
61
+ for (const raw of stdout.split("\0")) {
62
+ const p = raw.replace(/\r$/, "");
63
+ if (!p)
64
+ continue;
65
+ if (seen.has(p))
66
+ continue;
67
+ seen.add(p);
68
+ out.push(p);
69
+ if (out.length >= MAX_DIRTY_PATHS_COLLECT)
70
+ return;
71
+ }
72
+ };
73
+ try {
74
+ const tracked = spawnSync("git", ["diff", "--name-only", "-z", "HEAD", "--"], {
75
+ cwd: projectRoot,
76
+ encoding: "utf8",
77
+ timeout: 5_000,
78
+ windowsHide: true,
79
+ shell: false,
80
+ });
81
+ // status null (signal) or non-zero (not a repo) → fail closed.
82
+ if (tracked.error || tracked.status !== 0) {
83
+ return [];
84
+ }
85
+ if (tracked.stdout)
86
+ pushZ(tracked.stdout);
87
+ if (out.length >= MAX_DIRTY_PATHS_COLLECT)
88
+ return out;
89
+ const untracked = spawnSync("git", ["ls-files", "-o", "--exclude-standard", "-z", "--"], {
90
+ cwd: projectRoot,
91
+ encoding: "utf8",
92
+ timeout: 5_000,
93
+ windowsHide: true,
94
+ shell: false,
95
+ });
96
+ if (!untracked.error && untracked.status === 0 && untracked.stdout) {
97
+ pushZ(untracked.stdout);
98
+ }
99
+ }
100
+ catch {
101
+ return [];
102
+ }
103
+ return out;
104
+ }
105
+ /**
106
+ * True when the working tree has at least one **product** path dirty vs HEAD
107
+ * (or untracked product file). Used on stop when afterFileEdit never fired
108
+ * (e.g. Shell wrote bundled assets) so the engine can still arm `code_edited`.
109
+ *
110
+ * Fail-closed on git errors. Respects `.autopilotignore` + untracked gitignore
111
+ * via {@link isProductCodeEdit}. Autopilot-ignored paths do not consume the
112
+ * classify budget so a long ignored prefix cannot hide a later product dirty.
113
+ */
114
+ export function hasDirtyProductCode(projectRoot) {
115
+ const root = normalizeProjectRoot(projectRoot);
116
+ if (!root)
117
+ return false;
118
+ const relatives = gitDirtyRelativePaths(root);
119
+ const patterns = loadAutopilotIgnorePatterns(root);
120
+ let classified = 0;
121
+ for (const rel of relatives) {
122
+ // Reject traversal / absolute fragments before joining.
123
+ if (!rel ||
124
+ rel.includes("\0") ||
125
+ path.isAbsolute(rel) ||
126
+ rel.split(/[/\\]/).includes("..")) {
127
+ continue;
128
+ }
129
+ const abs = path.join(root, rel);
130
+ const relative = toProjectRelativePath(abs, root);
131
+ if (!relative)
132
+ continue;
133
+ // Skip ignore without burning classify budget.
134
+ if (isAutopilotIgnoredPath(relative, patterns))
135
+ continue;
136
+ classified += 1;
137
+ if (classified > MAX_DIRTY_PATHS_CLASSIFY) {
138
+ return false;
139
+ }
140
+ if (isProductCodeEdit(abs, { projectRoot: root })) {
141
+ return true;
142
+ }
143
+ }
144
+ return false;
145
+ }
44
146
  //# sourceMappingURL=code-edit-detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-edit-detector.js","sourceRoot":"","sources":["../src/code-edit-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,iCAAiC,EACjC,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAO/B;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,WAAmB,EACnB,YAAoB;IAEpB,oEAAoE;IACpE,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,SAAS,CACjB,KAAK,EACL,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,EAC1C;YACE,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,KAAK;SACb,CACF,CAAC;QACF,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,IAA6B;IAE7B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACpE,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,MAAM,QAAQ,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;QACxC,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/C,CAAC,CAAC,iCAAiC,CAAC;IAEtC,IAAI,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7D,MAAM,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,IAAI,IAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhE,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"code-edit-detector.js","sourceRoot":"","sources":["../src/code-edit-detector.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { evaluateVerifyReport, hasNoCodeCompletionEvidence, readVerifyReport, de
3
3
  export { StateStore, getLatestSchemaVersion, shortConversationId, SESSION_TITLE_MAX_LENGTH, normalizeSessionTitle, sanitizeSessionDisplayText, type SessionRow, type ReviewChainRow, type Phase, type PausedReason, } from "./state-store.js";
4
4
  export { migrate, getCurrentSchemaVersion, parseSchemaVersionValue, } from "./migrate.js";
5
5
  export { ReviewEngine, applyOff, applyOn, applyResume, applyResumeReview, type ApplyResumeResult, type ApplyOnResult, type FollowupAction, type FollowupKind, type ReviewEngineConfig, type StopHandlerInput, } from "./review-engine.js";
6
- export { loadProjectReviewConfig, normalizeProjectReviewConfig, DEFAULT_PROJECT_REVIEW_CONFIG, type ProjectReviewConfig, type ReviewScope, } from "./project-config.js";
6
+ export { loadProjectReviewConfig, loadProjectHookConfig, normalizeProjectReviewConfig, DEFAULT_PROJECT_REVIEW_CONFIG, type ProjectReviewConfig, type ProjectHookConfig, type ProjectHookTriggers, type ReviewScope, } from "./project-config.js";
7
7
  export { ensureAmbientReviewSession, isChecklistExecuting, normalizeSessionPlatform, resolveSessionPlatform, sessionReviewRunnable, } from "./review-scope.js";
8
8
  export { createRenderFollowup, createResolveLens, type FollowupLocaleBundle, } from "./review-i18n.js";
9
9
  export { createConfiguredReviewEngine } from "./review-runtime.js";
@@ -12,7 +12,7 @@ export { applyRun, applyReplan, applyTrackPick, isChannelANeedPick, formatOneExe
12
12
  export { MULTI_PLAN_EDIT_TRACK, isBoundRunTrackId, extractPlansSlugFromPath, notePlansDirEdit, } from "./plans-bind.js";
13
13
  export { CONFIRM_LENSES, getLens, lensNumberForRound, type ConfirmLens } from "./review-lenses.js";
14
14
  export { readTranscriptTail, followupInFlight, automationFollowupPresent, pendingRedeliverAllowed, userQueryText, inFlightUserQuery, harnessTipBeforeTrailingTurnEnded, isDeliveryNoiseUserQuery, inRecoverDebounceWindow, sleepSyncMs, transcriptTipIsAssistant, latestUnresolvedTurnEndedError, latestUnresolvedTurnEndedErrorIndex, transcriptHasUnresolvedTurnEndedError, PENDING_REDELIVER_COOLDOWN_MS, RECOVER_DEBOUNCE_MS, type TranscriptEvent, } from "./transcript-followup.js";
15
- export { isProductCodeEdit, type ProductCodeEditOptions } from "./code-edit-detector.js";
15
+ export { isProductCodeEdit, hasDirtyProductCode, type ProductCodeEditOptions } from "./code-edit-detector.js";
16
16
  export { DEFAULT_AUTOPILOT_IGNORE_TEXT, autopilotIgnorePath, parseAutopilotIgnore, loadAutopilotIgnorePatterns, } from "./autopilot-ignore.js";
17
17
  export { parseTrigger, firstSubstantiveLine, substantivePromptBody, isHarnessFollowupMessage, isRecoverOrStuckFollowupMessage, isRecoverFollowupMessage, isTerminalFollowupMessage, isUserAbortText, USER_ABORT_MARKERS, DEFAULT_TRIGGERS, HARNESS_FOLLOWUP_PREFIXES, type TriggerEvent, type TriggerKind, type TriggerConfig, } from "./trigger-parser.js";
18
18
  export { listTracks, isRunnableTrack, canEnterExecuting, type TrackSummary, } from "./list-tracks.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ export { evaluateVerifyReport, hasNoCodeCompletionEvidence, readVerifyReport, de
3
3
  export { StateStore, getLatestSchemaVersion, shortConversationId, SESSION_TITLE_MAX_LENGTH, normalizeSessionTitle, sanitizeSessionDisplayText, } from "./state-store.js";
4
4
  export { migrate, getCurrentSchemaVersion, parseSchemaVersionValue, } from "./migrate.js";
5
5
  export { ReviewEngine, applyOff, applyOn, applyResume, applyResumeReview, } from "./review-engine.js";
6
- export { loadProjectReviewConfig, normalizeProjectReviewConfig, DEFAULT_PROJECT_REVIEW_CONFIG, } from "./project-config.js";
6
+ export { loadProjectReviewConfig, loadProjectHookConfig, normalizeProjectReviewConfig, DEFAULT_PROJECT_REVIEW_CONFIG, } from "./project-config.js";
7
7
  export { ensureAmbientReviewSession, isChecklistExecuting, normalizeSessionPlatform, resolveSessionPlatform, sessionReviewRunnable, } from "./review-scope.js";
8
8
  export { createRenderFollowup, createResolveLens, } from "./review-i18n.js";
9
9
  export { createConfiguredReviewEngine } from "./review-runtime.js";
@@ -12,7 +12,7 @@ export { applyRun, applyReplan, applyTrackPick, isChannelANeedPick, formatOneExe
12
12
  export { MULTI_PLAN_EDIT_TRACK, isBoundRunTrackId, extractPlansSlugFromPath, notePlansDirEdit, } from "./plans-bind.js";
13
13
  export { CONFIRM_LENSES, getLens, lensNumberForRound } from "./review-lenses.js";
14
14
  export { readTranscriptTail, followupInFlight, automationFollowupPresent, pendingRedeliverAllowed, userQueryText, inFlightUserQuery, harnessTipBeforeTrailingTurnEnded, isDeliveryNoiseUserQuery, inRecoverDebounceWindow, sleepSyncMs, transcriptTipIsAssistant, latestUnresolvedTurnEndedError, latestUnresolvedTurnEndedErrorIndex, transcriptHasUnresolvedTurnEndedError, PENDING_REDELIVER_COOLDOWN_MS, RECOVER_DEBOUNCE_MS, } from "./transcript-followup.js";
15
- export { isProductCodeEdit } from "./code-edit-detector.js";
15
+ export { isProductCodeEdit, hasDirtyProductCode } from "./code-edit-detector.js";
16
16
  export { DEFAULT_AUTOPILOT_IGNORE_TEXT, autopilotIgnorePath, parseAutopilotIgnore, loadAutopilotIgnorePatterns, } from "./autopilot-ignore.js";
17
17
  export { parseTrigger, firstSubstantiveLine, substantivePromptBody, isHarnessFollowupMessage, isRecoverOrStuckFollowupMessage, isRecoverFollowupMessage, isTerminalFollowupMessage, isUserAbortText, USER_ABORT_MARKERS, DEFAULT_TRIGGERS, HARNESS_FOLLOWUP_PREFIXES, } from "./trigger-parser.js";
18
18
  export { listTracks, isRunnableTrack, canEnterExecuting, } from "./list-tracks.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,OAAO,GAGR,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,GAMxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,GAK3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,OAAO,EACP,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,iBAAiB,GAOlB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,GAG9B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EACL,QAAQ,EACR,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,4BAA4B,GAM7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,EAAoB,MAAM,oBAAoB,CAAC;AAEnG,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,iCAAiC,EACjC,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,EACX,wBAAwB,EACxB,8BAA8B,EAC9B,mCAAmC,EACnC,qCAAqC,EACrC,6BAA6B,EAC7B,mBAAmB,GAEpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAA+B,MAAM,yBAAyB,CAAC;AAEzF,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,+BAA+B,EAC/B,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,OAAO,GAGR,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,GAMxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,GAK3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,OAAO,EACP,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,iBAAiB,GAOlB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,GAK9B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EACL,QAAQ,EACR,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,4BAA4B,GAM7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,EAAoB,MAAM,oBAAoB,CAAC;AAEnG,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,iCAAiC,EACjC,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,EACX,wBAAwB,EACxB,8BAA8B,EAC9B,mCAAmC,EACnC,qCAAqC,EACrC,6BAA6B,EAC7B,mBAAmB,GAEpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAA+B,MAAM,yBAAyB,CAAC;AAE9G,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,+BAA+B,EAC/B,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type TriggerConfig } from "./trigger-parser.js";
1
2
  import type { VerifyCommandConfig } from "./verify-report.js";
2
3
  /** When the fix→confirm review chain may run on completed stops. */
3
4
  export type ReviewScope = "executing_only" | "project";
@@ -15,12 +16,26 @@ export interface ProjectReviewConfig {
15
16
  maxErrorsBeforePause: number;
16
17
  locale: string;
17
18
  }
19
+ /** Submit/edit hook settings from config.yml (fail-open defaults). */
20
+ export type ProjectHookTriggers = Required<Omit<TriggerConfig, "match">> & {
21
+ match: "line_start";
22
+ };
23
+ export interface ProjectHookConfig {
24
+ triggers: ProjectHookTriggers;
25
+ /** Relative in-project plans directory (normalized). */
26
+ plansDir: string;
27
+ }
18
28
  export declare const DEFAULT_PROJECT_REVIEW_CONFIG: ProjectReviewConfig;
19
29
  /**
20
30
  * Load review runtime settings from `.autopilot/config.yml`.
21
31
  * Missing / unreadable / corrupt → safe defaults (hook fail-open).
22
32
  */
23
33
  export declare function loadProjectReviewConfig(projectRoot: string): ProjectReviewConfig;
34
+ /**
35
+ * Load submit/edit hook settings (`triggers.*`, `artifacts.plans_dir`).
36
+ * Missing / unreadable / corrupt / empty phrase lists → DEFAULT_TRIGGERS + `plans/`.
37
+ */
38
+ export declare function loadProjectHookConfig(projectRoot: string): ProjectHookConfig;
24
39
  /**
25
40
  * Kẹp biên + làm sạch — mọi preloaded/config đều phải qua đây
26
41
  * (không cho bypass confirm_rounds / idle / commands).
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAS3C,CAAC;AAqMF;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAClB,mBAAmB,CA6ErB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAmC9E"}
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG;IACzE,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAS3C,CAAC;AAuUF;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAmBrB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAO5E;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAmC9E"}
@@ -1,6 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { isRealpathInsideProject, normalizeProjectRoot } from "./project-path.js";
3
+ import { isRealpathInsideProject, normalizeInProjectPlansDir, normalizeProjectRoot, } from "./project-path.js";
4
+ import { DEFAULT_TRIGGERS, } from "./trigger-parser.js";
4
5
  const MAX_CONFIG_BYTES = 1_000_000;
5
6
  export const DEFAULT_PROJECT_REVIEW_CONFIG = {
6
7
  confirmRounds: 5,
@@ -12,6 +13,31 @@ export const DEFAULT_PROJECT_REVIEW_CONFIG = {
12
13
  maxErrorsBeforePause: 0,
13
14
  locale: "en",
14
15
  };
16
+ const TRIGGER_PHRASE_KEYS = [
17
+ "on",
18
+ "run",
19
+ "off",
20
+ "resume",
21
+ "replan",
22
+ "resume_review",
23
+ ];
24
+ function cloneDefaultTriggers() {
25
+ return {
26
+ match: "line_start",
27
+ on: [...DEFAULT_TRIGGERS.on],
28
+ run: [...DEFAULT_TRIGGERS.run],
29
+ off: [...DEFAULT_TRIGGERS.off],
30
+ resume: [...DEFAULT_TRIGGERS.resume],
31
+ replan: [...DEFAULT_TRIGGERS.replan],
32
+ resume_review: [...DEFAULT_TRIGGERS.resume_review],
33
+ };
34
+ }
35
+ function cloneDefaultHookConfig() {
36
+ return {
37
+ triggers: cloneDefaultTriggers(),
38
+ plansDir: "plans",
39
+ };
40
+ }
15
41
  /** Bản sao độc lập — tránh chia sẻ mảng verifyCommands giữa các lần gọi. */
16
42
  function parseReviewScope(raw) {
17
43
  const s = typeof raw === "string" ? raw.trim().toLowerCase() : "";
@@ -60,6 +86,10 @@ function isPlainObject(value) {
60
86
  function isUnsafeKey(key) {
61
87
  return key === "__proto__" || key === "prototype" || key === "constructor";
62
88
  }
89
+ /**
90
+ * Coerce a YAML scalar. Init writes trigger lists as JSON arrays on one line
91
+ * (`on: ["Autopilot ON", …]`); parse those into string[] when valid.
92
+ */
63
93
  function coerceScalar(value) {
64
94
  if (value === "true")
65
95
  return true;
@@ -67,6 +97,19 @@ function coerceScalar(value) {
67
97
  return false;
68
98
  if (value === "null" || value === "~")
69
99
  return null;
100
+ const trimmed = value.trim();
101
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
102
+ try {
103
+ const parsed = JSON.parse(trimmed);
104
+ if (Array.isArray(parsed) &&
105
+ parsed.every((x) => typeof x === "string")) {
106
+ return parsed;
107
+ }
108
+ }
109
+ catch {
110
+ /* not JSON — fall through to plain string */
111
+ }
112
+ }
70
113
  return unquote(value);
71
114
  }
72
115
  function lineIndent(line) {
@@ -194,52 +237,41 @@ function parseVerifyCommands(raw) {
194
237
  return out;
195
238
  }
196
239
  /**
197
- * Load review runtime settings from `.autopilot/config.yml`.
198
- * Missing / unreadable / corrupt → safe defaults (hook fail-open).
240
+ * Read + parse `.autopilot/config.yml` (fail-open → null).
241
+ * Shared by review + hook loaders.
199
242
  */
200
- export function loadProjectReviewConfig(projectRoot) {
201
- // Fail closed on unusable roots before any open (empty/blank/NUL → cwd-relative join).
243
+ function readProjectConfigYaml(projectRoot) {
202
244
  const root = normalizeProjectRoot(projectRoot);
203
- if (!root) {
204
- return cloneDefaultProjectReviewConfig();
205
- }
245
+ if (!root)
246
+ return null;
206
247
  const configPath = path.join(root, ".autopilot", "config.yml");
207
248
  try {
208
249
  const nofollow = typeof fs.constants.O_NOFOLLOW === "number" ? fs.constants.O_NOFOLLOW : 0;
209
- // Without O_NOFOLLOW: lstat before open — refuse leaf symlink follow.
210
250
  if (nofollow === 0) {
211
251
  if (!fs.existsSync(configPath))
212
- return cloneDefaultProjectReviewConfig();
213
- if (fs.lstatSync(configPath).isSymbolicLink()) {
214
- return cloneDefaultProjectReviewConfig();
215
- }
252
+ return null;
253
+ if (fs.lstatSync(configPath).isSymbolicLink())
254
+ return null;
216
255
  }
217
256
  let fd;
218
257
  try {
219
- // O_NOFOLLOW + fstat: block leaf-symlink TOCTOU and oversized reads after stat.
220
258
  fd = fs.openSync(configPath, fs.constants.O_RDONLY | nofollow);
221
259
  }
222
260
  catch {
223
- return cloneDefaultProjectReviewConfig();
261
+ return null;
224
262
  }
225
263
  let raw;
226
264
  try {
227
265
  const st = fs.fstatSync(fd);
228
- if (!st.isFile() || st.size > MAX_CONFIG_BYTES) {
229
- return cloneDefaultProjectReviewConfig();
230
- }
231
- // Bind fd to path identity always (intermediate-dir swap-back TOCTOU).
266
+ if (!st.isFile() || st.size > MAX_CONFIG_BYTES)
267
+ return null;
232
268
  const lst = fs.lstatSync(configPath);
233
- if (lst.isSymbolicLink() || !lst.isFile()) {
234
- return cloneDefaultProjectReviewConfig();
235
- }
236
- if (lst.ino !== st.ino || lst.dev !== st.dev) {
237
- return cloneDefaultProjectReviewConfig();
238
- }
239
- if (!isRealpathInsideProject(root, configPath)) {
240
- return cloneDefaultProjectReviewConfig();
241
- }
242
- // Read exactly the fstat size — avoid OOM if the file grows after fstat.
269
+ if (lst.isSymbolicLink() || !lst.isFile())
270
+ return null;
271
+ if (lst.ino !== st.ino || lst.dev !== st.dev)
272
+ return null;
273
+ if (!isRealpathInsideProject(root, configPath))
274
+ return null;
243
275
  const buf = Buffer.alloc(st.size);
244
276
  const n = fs.readSync(fd, buf, 0, st.size, 0);
245
277
  raw = buf.subarray(0, n).toString("utf8");
@@ -247,32 +279,83 @@ export function loadProjectReviewConfig(projectRoot) {
247
279
  finally {
248
280
  fs.closeSync(fd);
249
281
  }
250
- if (Buffer.byteLength(raw, "utf8") > MAX_CONFIG_BYTES) {
251
- return cloneDefaultProjectReviewConfig();
252
- }
253
- // Strip UTF-8 BOM so the first key is not shadowed as "\uFEFFlocale".
282
+ if (Buffer.byteLength(raw, "utf8") > MAX_CONFIG_BYTES)
283
+ return null;
254
284
  const text = raw.charCodeAt(0) === 0xfeff ? raw.slice(1) : raw;
255
285
  const parsed = parseSimpleYaml(text);
256
286
  if (!isPlainObject(parsed))
257
- return cloneDefaultProjectReviewConfig();
258
- const review = isPlainObject(parsed.review) ? parsed.review : {};
259
- const verify = isPlainObject(review.verify) ? review.verify : {};
260
- const stuck = isPlainObject(review.stuck) ? review.stuck : {};
261
- const errors = isPlainObject(review.errors) ? review.errors : {};
262
- // Một đường normalize — tránh load vs normalize lệch kẹp biên / bool.
263
- return normalizeProjectReviewConfig({
264
- confirmRounds: review.confirm_rounds,
265
- reviewScope: review.scope,
266
- verifyEnabled: verify.enabled,
267
- verifyCommands: verify.commands,
268
- maxIdleStops: stuck.max_idle_stops,
269
- maxErrorsBeforePause: errors.max_before_pause,
270
- locale: parsed.locale,
271
- });
287
+ return null;
288
+ return { root, parsed };
272
289
  }
273
290
  catch {
274
- return cloneDefaultProjectReviewConfig();
291
+ return null;
292
+ }
293
+ }
294
+ /** Non-empty string phrases only; empty / invalid → null (caller uses DEFAULT). */
295
+ function nonEmptyPhraseList(raw) {
296
+ if (!Array.isArray(raw))
297
+ return null;
298
+ const out = [];
299
+ for (const item of raw) {
300
+ if (typeof item !== "string")
301
+ continue;
302
+ const t = item.trim();
303
+ if (t)
304
+ out.push(t);
275
305
  }
306
+ return out.length > 0 ? out : null;
307
+ }
308
+ function triggersFromParsed(parsed) {
309
+ const base = cloneDefaultTriggers();
310
+ const triggers = isPlainObject(parsed.triggers) ? parsed.triggers : {};
311
+ for (const key of TRIGGER_PHRASE_KEYS) {
312
+ const phrases = nonEmptyPhraseList(triggers[key]);
313
+ if (phrases)
314
+ base[key] = phrases;
315
+ }
316
+ return base;
317
+ }
318
+ function plansDirFromParsed(root, parsed) {
319
+ const artifacts = isPlainObject(parsed.artifacts) ? parsed.artifacts : {};
320
+ const raw = artifacts.plans_dir;
321
+ const candidate = typeof raw === "string" ? raw : "plans";
322
+ return normalizeInProjectPlansDir(root, candidate) ?? "plans";
323
+ }
324
+ /**
325
+ * Load review runtime settings from `.autopilot/config.yml`.
326
+ * Missing / unreadable / corrupt → safe defaults (hook fail-open).
327
+ */
328
+ export function loadProjectReviewConfig(projectRoot) {
329
+ const loaded = readProjectConfigYaml(projectRoot);
330
+ if (!loaded)
331
+ return cloneDefaultProjectReviewConfig();
332
+ const { parsed } = loaded;
333
+ const review = isPlainObject(parsed.review) ? parsed.review : {};
334
+ const verify = isPlainObject(review.verify) ? review.verify : {};
335
+ const stuck = isPlainObject(review.stuck) ? review.stuck : {};
336
+ const errors = isPlainObject(review.errors) ? review.errors : {};
337
+ return normalizeProjectReviewConfig({
338
+ confirmRounds: review.confirm_rounds,
339
+ reviewScope: review.scope,
340
+ verifyEnabled: verify.enabled,
341
+ verifyCommands: verify.commands,
342
+ maxIdleStops: stuck.max_idle_stops,
343
+ maxErrorsBeforePause: errors.max_before_pause,
344
+ locale: parsed.locale,
345
+ });
346
+ }
347
+ /**
348
+ * Load submit/edit hook settings (`triggers.*`, `artifacts.plans_dir`).
349
+ * Missing / unreadable / corrupt / empty phrase lists → DEFAULT_TRIGGERS + `plans/`.
350
+ */
351
+ export function loadProjectHookConfig(projectRoot) {
352
+ const loaded = readProjectConfigYaml(projectRoot);
353
+ if (!loaded)
354
+ return cloneDefaultHookConfig();
355
+ return {
356
+ triggers: triggersFromParsed(loaded.parsed),
357
+ plansDir: plansDirFromParsed(loaded.root, loaded.parsed),
358
+ };
276
359
  }
277
360
  /**
278
361
  * Kẹp biên + làm sạch — mọi preloaded/config đều phải qua đây
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,9 @@ import { type ConfirmLens } from "./review-lenses.js";
2
2
  import type { ReviewScope } from "./project-config.js";
3
3
  import { type SessionRow, type StateStore } from "./state-store.js";
4
4
  import { type VerifyCommandConfig } from "./verify-report.js";
5
- export type FollowupKind = "review.fix" | "review.confirm" | "review.confirm_final" | "advance" | "done" | "review_complete" | "recover" | "recover_planning" | "recover_ambient" | "stuck" | "verify_fix" | "need_evidence";
5
+ export type FollowupKind = "review.fix" | "review.confirm" | "review.confirm_final" | "advance" | "done" | "review_complete" | "recover" | "recover_planning" | "recover_ambient" | "stuck"
6
+ /** Soft need_evidence idle escalation — stuck tip prefix; RESUME not required. */
7
+ | "stuck_soft" | "verify_fix" | "need_evidence";
6
8
  export interface FollowupAction {
7
9
  kind: FollowupKind;
8
10
  message: string;
@@ -66,6 +68,14 @@ export declare class ReviewEngine {
66
68
  private resolveReviewingItemId;
67
69
  /** E1: afterFileEdit product code → code_edited=1 (+ sticky reviewing_item_id). */
68
70
  onCodeEdited(conversationId: string): void;
71
+ /**
72
+ * Stop-time arm when Shell (or other non-afterFileEdit) dirtied product paths.
73
+ * - `clean`: no product dirty → caller may soft E0
74
+ * - `armed`: code_edited set → caller must prefer E2 (never soft)
75
+ * - `dirty_unarmed`: dirty seen but arm failed → caller must not soft
76
+ * (otherwise unreviewed product could soft-advance)
77
+ */
78
+ private maybeArmCodeEditedFromDirtyTree;
69
79
  handleStop(input: StopHandlerInput): FollowupAction | null;
70
80
  private pendingBlocksAdvance;
71
81
  private tryRedeliverPending;
@@ -275,8 +285,7 @@ export declare class ReviewEngine {
275
285
  * soft-fail catch — that would drop the committed action from the hook reply.
276
286
  */
277
287
  private afterFollowupCommitted;
278
- private incrementIdle;
279
- /** After a no-progress stop that didn't inject, check stuck threshold. */
288
+ /** After a hard-stuck pause that didn't inject, surface stuck tip. */
280
289
  checkStuck(session: SessionRow): FollowupAction | null;
281
290
  }
282
291
  /** Apply OFF trigger side effects (v0.1). */
@@ -1 +1 @@
1
- {"version":3,"file":"review-engine.d.ts","sourceRoot":"","sources":["../src/review-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-engine.d.ts","sourceRoot":"","sources":["../src/review-engine.ts"],"names":[],"mappings":"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"}