baxian 1.0.3 → 1.2.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/agent/diff-split.d.ts +10 -0
- package/dist/agent/diff-split.d.ts.map +1 -0
- package/dist/agent/diff-split.js +83 -0
- package/dist/agent/diff-split.js.map +1 -0
- package/dist/agent/manager.d.ts +75 -12
- package/dist/agent/manager.d.ts.map +1 -1
- package/dist/agent/manager.js +1121 -320
- package/dist/agent/manager.js.map +1 -1
- package/dist/agent/phase-signal-watcher.d.ts +7 -1
- package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
- package/dist/agent/phase-signal-watcher.js +37 -11
- package/dist/agent/phase-signal-watcher.js.map +1 -1
- package/dist/agent/phase-signal.d.ts +29 -11
- package/dist/agent/phase-signal.d.ts.map +1 -1
- package/dist/agent/phase-signal.js +38 -8
- package/dist/agent/phase-signal.js.map +1 -1
- package/dist/agent/prompt.d.ts +15 -2
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +250 -52
- package/dist/agent/prompt.js.map +1 -1
- package/dist/agent/repo-store.d.ts +0 -1
- package/dist/agent/repo-store.d.ts.map +1 -1
- package/dist/agent/repo-store.js +0 -25
- package/dist/agent/repo-store.js.map +1 -1
- package/dist/agent/review-transport.d.ts +36 -0
- package/dist/agent/review-transport.d.ts.map +1 -0
- package/dist/agent/review-transport.js +246 -0
- package/dist/agent/review-transport.js.map +1 -0
- package/dist/agent/worktree.d.ts +2 -0
- package/dist/agent/worktree.d.ts.map +1 -1
- package/dist/agent/worktree.js +26 -0
- package/dist/agent/worktree.js.map +1 -1
- package/dist/api/agents.d.ts.map +1 -1
- package/dist/api/agents.js +4 -0
- package/dist/api/agents.js.map +1 -1
- package/dist/api/tasks.d.ts.map +1 -1
- package/dist/api/tasks.js +8 -0
- package/dist/api/tasks.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +3 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/validator.js +23 -0
- package/dist/config/validator.js.map +1 -1
- package/dist/event/handlers.d.ts.map +1 -1
- package/dist/event/handlers.js +33 -451
- package/dist/event/handlers.js.map +1 -1
- package/dist/event/server-handlers.d.ts +4 -0
- package/dist/event/server-handlers.d.ts.map +1 -0
- package/dist/event/server-handlers.js +835 -0
- package/dist/event/server-handlers.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/shared/constants.d.ts +7 -1
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +26 -8
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/types.d.ts +64 -2
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/skills/server-feedback/SKILL.md +34 -0
- package/dist/skills/server-recheck/SKILL.md +30 -0
- package/dist/skills/server-review/SKILL.md +43 -0
- package/dist/skills/server-spec-review/SKILL.md +31 -0
- package/dist/state/index.d.ts +1 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +1 -0
- package/dist/state/index.js.map +1 -1
- package/dist/state/review-store.d.ts +13 -0
- package/dist/state/review-store.d.ts.map +1 -0
- package/dist/state/review-store.js +92 -0
- package/dist/state/review-store.js.map +1 -0
- package/dist/state/snapshot.js +1 -1
- package/dist/state/snapshot.js.map +1 -1
- package/dist/state/task-store.d.ts.map +1 -1
- package/dist/state/task-store.js +1 -0
- package/dist/state/task-store.js.map +1 -1
- package/dist/terminal/attach.d.ts.map +1 -1
- package/dist/terminal/attach.js +8 -2
- package/dist/terminal/attach.js.map +1 -1
- package/dist/web/assets/index-OtgjyQI1.js +4 -0
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/web/assets/index-ByNjLidI.js +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AgentConfig } from '../shared/index.js';
|
|
2
2
|
import type { EventBus } from '../event/bus.js';
|
|
3
3
|
import type { PaneStreamerManager } from './pane-streamer-manager.js';
|
|
4
|
-
import { type PhaseSignalKind } from './phase-signal.js';
|
|
4
|
+
import { type PhaseSignalKind, type ReadFileSignal } from './phase-signal.js';
|
|
5
5
|
export interface PhaseSignalWatcherDeps {
|
|
6
6
|
paneStreamerManager: PaneStreamerManager;
|
|
7
7
|
eventBus: EventBus;
|
|
@@ -14,8 +14,12 @@ export interface PhaseSignalWatcherStartArgs {
|
|
|
14
14
|
/** Kinds we accept; first match wins. QA review verdict uses {pr-approved, pr-changes-requested}. */
|
|
15
15
|
expectedKinds: PhaseSignalKind | readonly PhaseSignalKind[] | ReadonlySet<PhaseSignalKind>;
|
|
16
16
|
token: string;
|
|
17
|
+
/** Server-mode QA context requests; fired per distinct request, does not consume the watch. */
|
|
18
|
+
onReadFile?: (req: ReadFileSignal) => void;
|
|
17
19
|
/** skipSnapshot=true: scrollback signal would re-fire on recovery. */
|
|
18
20
|
skipSnapshot?: boolean;
|
|
21
|
+
/** Restart-recovery arm: callers may treat it as weaker evidence of an in-flight prompt. */
|
|
22
|
+
recovered?: boolean;
|
|
19
23
|
}
|
|
20
24
|
export declare class PhaseSignalWatcher {
|
|
21
25
|
private readonly deps;
|
|
@@ -26,6 +30,8 @@ export declare class PhaseSignalWatcher {
|
|
|
26
30
|
has(taskId: string): boolean;
|
|
27
31
|
/** Set of kinds currently being watched for this task; empty if not set up. */
|
|
28
32
|
expectedKindsFor(taskId: string): ReadonlySet<PhaseSignalKind>;
|
|
33
|
+
/** True when the current watch was re-armed by restart recovery, not a live dispatch. */
|
|
34
|
+
isRecovered(taskId: string): boolean;
|
|
29
35
|
private onPaneData;
|
|
30
36
|
private emitCompletion;
|
|
31
37
|
private onSessionGone;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-signal-watcher.d.ts","sourceRoot":"","sources":["../../src/agent/phase-signal-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"phase-signal-watcher.d.ts","sourceRoot":"","sources":["../../src/agent/phase-signal-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAsC3B,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;CAC5D;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,aAAa,EAAE,eAAe,GAAG,SAAS,eAAe,EAAE,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,+FAA+F;IAC/F,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAUD,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;gBAE5B,IAAI,EAAE,sBAAsB;IAKnD,KAAK,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IAiEhE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO1B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B,+EAA+E;IAC/E,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC;IAI9D,yFAAyF;IACzF,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIpC,OAAO,CAAC,UAAU;YA4DJ,cAAc;IAmB5B,OAAO,CAAC,aAAa;YAcP,6BAA6B;CA2B5C"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
import { scanPhaseSignals } from './phase-signal.js';
|
|
1
|
+
import { scanPhaseSignals, scanReadFileSignals, } from './phase-signal.js';
|
|
2
2
|
const MATCH_BUFFER_CHARS = 1024;
|
|
3
|
-
//
|
|
4
|
-
//
|
|
3
|
+
// Dispatch table. Each pane-signal kind maps to the EventBus event type the
|
|
4
|
+
// handler chain will receive. pr-* kinds reuse existing event types (the
|
|
5
5
|
// data.source='pane-signal' tag tells the handler the trigger came from a
|
|
6
6
|
// pane signal echo rather than a GitHub poll cycle, so idempotency dedup can
|
|
7
7
|
// be applied if the same logical transition also gets reported by the poller).
|
|
8
8
|
const KIND_TO_EVENT_TYPE = {
|
|
9
|
-
'spec-
|
|
10
|
-
'spec-approved': 'spec.review.submitted',
|
|
11
|
-
'spec-changes-requested': 'spec.review.submitted',
|
|
12
|
-
'spec-fixed': 'spec.fix.submitted',
|
|
9
|
+
'spec-fixed': 'server.spec.fix.submitted',
|
|
13
10
|
'pr-created': 'pr.created',
|
|
14
11
|
'pr-approved': 'review.submitted',
|
|
15
12
|
'pr-changes-requested': 'review.submitted',
|
|
16
13
|
'pr-fixed': 'pr.fix.submitted',
|
|
17
14
|
'pr-merge-ready': 'pr.updated',
|
|
15
|
+
'spec-done': 'server.spec.ready',
|
|
16
|
+
'spec-reviewed': 'server.spec.review.submitted',
|
|
17
|
+
'code-done': 'server.code.ready',
|
|
18
|
+
'code-reviewed': 'server.code.review.submitted',
|
|
19
|
+
'code-fixed': 'server.code.fix.submitted',
|
|
20
|
+
'code-ready': 'server.code.published',
|
|
18
21
|
};
|
|
19
22
|
function normalizeKinds(input) {
|
|
20
23
|
if (input instanceof Set)
|
|
@@ -55,6 +58,9 @@ export class PhaseSignalWatcher {
|
|
|
55
58
|
agentId: args.agentId,
|
|
56
59
|
expectedKinds,
|
|
57
60
|
expectedToken: args.token,
|
|
61
|
+
...(args.onReadFile ? { onReadFile: args.onReadFile } : {}),
|
|
62
|
+
seenReadFile: new Set(),
|
|
63
|
+
recovered: args.recovered ?? false,
|
|
58
64
|
buffer: '',
|
|
59
65
|
unsubscribe: () => undefined,
|
|
60
66
|
fired: false,
|
|
@@ -80,7 +86,7 @@ export class PhaseSignalWatcher {
|
|
|
80
86
|
entry.unsubscribe = sub.unsubscribe;
|
|
81
87
|
this.entries.set(args.taskId, entry);
|
|
82
88
|
if (!args.skipSnapshot) {
|
|
83
|
-
this.onPaneData(entry, sub.snapshot.data);
|
|
89
|
+
this.onPaneData(entry, sub.snapshot.data, true);
|
|
84
90
|
}
|
|
85
91
|
return true;
|
|
86
92
|
}
|
|
@@ -101,7 +107,11 @@ export class PhaseSignalWatcher {
|
|
|
101
107
|
expectedKindsFor(taskId) {
|
|
102
108
|
return this.entries.get(taskId)?.expectedKinds ?? new Set();
|
|
103
109
|
}
|
|
104
|
-
|
|
110
|
+
/** True when the current watch was re-armed by restart recovery, not a live dispatch. */
|
|
111
|
+
isRecovered(taskId) {
|
|
112
|
+
return this.entries.get(taskId)?.recovered ?? false;
|
|
113
|
+
}
|
|
114
|
+
onPaneData(entry, chunk, isSnapshot = false) {
|
|
105
115
|
// Stale-entry guard: streamer may dispatch a queued chunk to the old
|
|
106
116
|
// entry's onLive callback after the entry has been replaced by a re-establish.
|
|
107
117
|
// Without this check, an old fire would delete (and unsubscribe) the new
|
|
@@ -113,6 +123,19 @@ export class PhaseSignalWatcher {
|
|
|
113
123
|
// Merge before scan so chunk-split signals and ANSI escapes both rejoin.
|
|
114
124
|
// Search BEFORE slicing — initial snapshot may exceed the buffer cap.
|
|
115
125
|
const rawCombined = entry.buffer + chunk;
|
|
126
|
+
if (entry.onReadFile) {
|
|
127
|
+
// Dedup by raw match: the 1KB tail keeps recent bytes across chunks, so the
|
|
128
|
+
// same request would re-match on every subsequent scan without this.
|
|
129
|
+
// Snapshot pass marks scrollback requests as seen WITHOUT firing — those
|
|
130
|
+
// belong to a previous round; replaying them would inject stale content.
|
|
131
|
+
for (const req of scanReadFileSignals(rawCombined)) {
|
|
132
|
+
if (entry.seenReadFile.has(req.raw))
|
|
133
|
+
continue;
|
|
134
|
+
entry.seenReadFile.add(req.raw);
|
|
135
|
+
if (!isSnapshot)
|
|
136
|
+
entry.onReadFile(req);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
116
139
|
const signal = scanPhaseSignals(rawCombined).find(candidate => entry.expectedKinds.has(candidate.kind) && candidate.token === entry.expectedToken);
|
|
117
140
|
entry.buffer = rawCombined.slice(-MATCH_BUFFER_CHARS);
|
|
118
141
|
if (!signal)
|
|
@@ -141,9 +164,12 @@ export class PhaseSignalWatcher {
|
|
|
141
164
|
token: signal.token,
|
|
142
165
|
verdictAgentId: entry.agentId,
|
|
143
166
|
source: 'pane-signal',
|
|
144
|
-
// pr-created
|
|
145
|
-
//
|
|
167
|
+
// pr-created / code-ready carry the PR number in their payload — surface
|
|
168
|
+
// it so the handler can complete the transition without a GitHub query.
|
|
146
169
|
...(signal.kind === 'pr-created' ? { prNumber: signal.prNumber } : {}),
|
|
170
|
+
...(signal.kind === 'code-ready' && signal.prNumber !== undefined
|
|
171
|
+
? { prNumber: signal.prNumber }
|
|
172
|
+
: {}),
|
|
147
173
|
...(verdictAction ? { action: verdictAction } : {}),
|
|
148
174
|
},
|
|
149
175
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-signal-watcher.js","sourceRoot":"","sources":["../../src/agent/phase-signal-watcher.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"phase-signal-watcher.js","sourceRoot":"","sources":["../../src/agent/phase-signal-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
export type PhaseSignalKind = 'spec-created' | '
|
|
1
|
+
export type PhaseSignalKind = 'spec-fixed' | 'pr-created' | 'pr-approved' | 'pr-changes-requested' | 'pr-fixed' | 'pr-merge-ready' | 'spec-done' | 'spec-reviewed' | 'code-done' | 'code-reviewed' | 'code-fixed' | 'code-ready';
|
|
2
2
|
export declare const PHASE_SIGNAL_KINDS: readonly PhaseSignalKind[];
|
|
3
3
|
export type PhaseSignal = {
|
|
4
|
-
kind: 'spec-created';
|
|
5
|
-
token: string;
|
|
6
|
-
} | {
|
|
7
|
-
kind: 'spec-approved';
|
|
8
|
-
token: string;
|
|
9
|
-
} | {
|
|
10
|
-
kind: 'spec-changes-requested';
|
|
11
|
-
token: string;
|
|
12
|
-
} | {
|
|
13
4
|
kind: 'spec-fixed';
|
|
14
5
|
token: string;
|
|
15
6
|
} | {
|
|
@@ -28,11 +19,38 @@ export type PhaseSignal = {
|
|
|
28
19
|
} | {
|
|
29
20
|
kind: 'pr-merge-ready';
|
|
30
21
|
token: string;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'spec-done';
|
|
24
|
+
token: string;
|
|
25
|
+
} | {
|
|
26
|
+
kind: 'spec-reviewed';
|
|
27
|
+
token: string;
|
|
28
|
+
} | {
|
|
29
|
+
kind: 'code-done';
|
|
30
|
+
token: string;
|
|
31
|
+
} | {
|
|
32
|
+
kind: 'code-reviewed';
|
|
33
|
+
token: string;
|
|
34
|
+
} | {
|
|
35
|
+
kind: 'code-fixed';
|
|
36
|
+
token: string;
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'code-ready';
|
|
39
|
+
token: string;
|
|
40
|
+
prNumber?: number;
|
|
31
41
|
};
|
|
32
42
|
export declare function stripSignalAnsi(text: string): string;
|
|
33
|
-
export declare function buildPhaseSignal(kind: Exclude<PhaseSignalKind, 'pr-created'>, token: string): string;
|
|
43
|
+
export declare function buildPhaseSignal(kind: Exclude<PhaseSignalKind, 'pr-created' | 'code-ready'>, token: string): string;
|
|
34
44
|
export declare function buildPhaseSignal(kind: 'pr-created', token: string, prNumber: number): string;
|
|
45
|
+
export declare function buildPhaseSignal(kind: 'code-ready', token: string, prNumber?: number): string;
|
|
35
46
|
export declare function createSignalToken(): string;
|
|
36
47
|
export declare function buildPhaseSignalTemplate(kind: PhaseSignalKind): string;
|
|
37
48
|
export declare function scanPhaseSignals(text: string): PhaseSignal[];
|
|
49
|
+
export interface ReadFileSignal {
|
|
50
|
+
file: string;
|
|
51
|
+
startLine: number;
|
|
52
|
+
endLine: number;
|
|
53
|
+
raw: string;
|
|
54
|
+
}
|
|
55
|
+
export declare function scanReadFileSignals(text: string): ReadFileSignal[];
|
|
38
56
|
//# sourceMappingURL=phase-signal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-signal.d.ts","sourceRoot":"","sources":["../../src/agent/phase-signal.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,eAAe,GACvB,
|
|
1
|
+
{"version":3,"file":"phase-signal.d.ts","sourceRoot":"","sources":["../../src/agent/phase-signal.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,sBAAsB,GACtB,UAAU,GACV,gBAAgB,GAChB,WAAW,GACX,eAAe,GACf,WAAW,GACX,eAAe,GACf,YAAY,GACZ,YAAY,CAAC;AAEjB,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAa/C,CAAC;AAKX,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAwB7D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAID,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,YAAY,GAAG,YAAY,CAAC,EAC3D,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC;AACV,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC;AACV,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAAC;AAqBV,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAQD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAGtE;AAOD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAyB5D;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAUlE"}
|
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
export const PHASE_SIGNAL_KINDS = [
|
|
3
|
-
'spec-created',
|
|
4
|
-
'spec-approved',
|
|
5
|
-
'spec-changes-requested',
|
|
6
3
|
'spec-fixed',
|
|
7
4
|
'pr-created',
|
|
8
5
|
'pr-approved',
|
|
9
6
|
'pr-changes-requested',
|
|
10
7
|
'pr-fixed',
|
|
11
8
|
'pr-merge-ready',
|
|
9
|
+
'spec-done',
|
|
10
|
+
'spec-reviewed',
|
|
11
|
+
'code-done',
|
|
12
|
+
'code-reviewed',
|
|
13
|
+
'code-fixed',
|
|
14
|
+
'code-ready',
|
|
12
15
|
];
|
|
13
16
|
const VALID_KINDS = new Set(PHASE_SIGNAL_KINDS);
|
|
14
17
|
const ANSI_PATTERN = /\x1b\[[0-?]*[ -/]*[@-~]/g;
|
|
15
18
|
const OSC_PATTERN = /\x1b\][\s\S]*?(?:\x07|\x1b\\)/g;
|
|
16
|
-
//
|
|
19
|
+
// Token range: 6-64 chars of base64url+dash.
|
|
17
20
|
// `pr-created` extracts the PR number (1+ digits) before the token segment.
|
|
18
21
|
const TOKEN_RANGE = '[A-Za-z0-9_-]{6,64}';
|
|
19
22
|
const COMPACT_SIGNAL_RE_PR_CREATED = new RegExp(`\\[bx:(pr-created):(\\d+):(${TOKEN_RANGE})\\]`, 'g');
|
|
20
|
-
const COMPACT_SIGNAL_RE_PLAIN = new RegExp(`\\[bx:(spec-
|
|
23
|
+
const COMPACT_SIGNAL_RE_PLAIN = new RegExp(`\\[bx:(spec-fixed|pr-approved|pr-changes-requested|pr-fixed|pr-merge-ready|spec-done|spec-reviewed|code-done|code-reviewed|code-fixed):(${TOKEN_RANGE})\\]`, 'g');
|
|
24
|
+
// code-ready's PR-number segment is optional: afterDone:'pr' emits 3-segment, 'branch' 2-segment.
|
|
25
|
+
const COMPACT_SIGNAL_RE_CODE_READY = new RegExp(`\\[bx:(code-ready)(?::(\\d+))?:(${TOKEN_RANGE})\\]`, 'g');
|
|
21
26
|
export function stripSignalAnsi(text) {
|
|
22
27
|
return text.replace(OSC_PATTERN, '').replace(ANSI_PATTERN, '');
|
|
23
28
|
}
|
|
@@ -28,6 +33,9 @@ export function buildPhaseSignal(kind, token, prNumber) {
|
|
|
28
33
|
}
|
|
29
34
|
return `[bx:pr-created:${prNumber}:${token}]`;
|
|
30
35
|
}
|
|
36
|
+
if (kind === 'code-ready' && prNumber !== undefined) {
|
|
37
|
+
return `[bx:code-ready:${prNumber}:${token}]`;
|
|
38
|
+
}
|
|
31
39
|
return `[bx:${kind}:${token}]`;
|
|
32
40
|
}
|
|
33
41
|
// 12 hex chars = 48 bits, plenty against guess/collision for per-signal tokens
|
|
@@ -49,9 +57,9 @@ export function buildPhaseSignalTemplate(kind) {
|
|
|
49
57
|
}
|
|
50
58
|
// Scan a chunk of pane bytes for phase signals. Strips ANSI escapes, then
|
|
51
59
|
// strips whitespace so TUI soft-wrap inside the signal still matches.
|
|
52
|
-
// Returns signals in text-order: when develop dispatches
|
|
53
|
-
// pr-created}
|
|
54
|
-
// stream, not first by which regex pass we happened to run.
|
|
60
|
+
// Returns signals in text-order: when develop dispatches a multi-kind watcher
|
|
61
|
+
// (e.g. {spec-done, pr-created}), "first match wins" must mean first by position
|
|
62
|
+
// in the stream, not first by which regex pass we happened to run.
|
|
55
63
|
export function scanPhaseSignals(text) {
|
|
56
64
|
const stripped = stripSignalAnsi(text);
|
|
57
65
|
const compact = stripped.replace(/\s+/g, '');
|
|
@@ -62,6 +70,15 @@ export function scanPhaseSignals(text) {
|
|
|
62
70
|
continue;
|
|
63
71
|
found.push({ index: m.index ?? 0, signal: { kind: 'pr-created', prNumber, token: m[3] } });
|
|
64
72
|
}
|
|
73
|
+
for (const m of compact.matchAll(COMPACT_SIGNAL_RE_CODE_READY)) {
|
|
74
|
+
const prNumber = m[2] === undefined ? undefined : Number.parseInt(m[2], 10);
|
|
75
|
+
if (prNumber !== undefined && !Number.isFinite(prNumber))
|
|
76
|
+
continue;
|
|
77
|
+
found.push({
|
|
78
|
+
index: m.index ?? 0,
|
|
79
|
+
signal: { kind: 'code-ready', token: m[3], ...(prNumber !== undefined ? { prNumber } : {}) },
|
|
80
|
+
});
|
|
81
|
+
}
|
|
65
82
|
for (const m of compact.matchAll(COMPACT_SIGNAL_RE_PLAIN)) {
|
|
66
83
|
const kind = m[1];
|
|
67
84
|
if (kind === 'pr-created')
|
|
@@ -73,4 +90,17 @@ export function scanPhaseSignals(text) {
|
|
|
73
90
|
found.sort((a, b) => a.index - b.index);
|
|
74
91
|
return found.map(f => f.signal);
|
|
75
92
|
}
|
|
93
|
+
const READ_FILE_RE = /\[bx:read-file:([^:\]]{1,512}):(\d{1,7})-(\d{1,7})\]/g;
|
|
94
|
+
export function scanReadFileSignals(text) {
|
|
95
|
+
const compact = stripSignalAnsi(text).replace(/\s+/g, '');
|
|
96
|
+
const out = [];
|
|
97
|
+
for (const m of compact.matchAll(READ_FILE_RE)) {
|
|
98
|
+
const startLine = Number.parseInt(m[2], 10);
|
|
99
|
+
const endLine = Number.parseInt(m[3], 10);
|
|
100
|
+
if (!Number.isFinite(startLine) || !Number.isFinite(endLine))
|
|
101
|
+
continue;
|
|
102
|
+
out.push({ file: m[1], startLine, endLine, raw: m[0] });
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
76
106
|
//# sourceMappingURL=phase-signal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-signal.js","sourceRoot":"","sources":["../../src/agent/phase-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"phase-signal.js","sourceRoot":"","sources":["../../src/agent/phase-signal.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/prompt.d.ts
CHANGED
|
@@ -21,13 +21,26 @@ export interface BuildPromptOpts {
|
|
|
21
21
|
/** Current pending pane-signal token. Required for phases that emit a signal. */
|
|
22
22
|
signalToken?: string;
|
|
23
23
|
postApproveRedispatchCount?: number;
|
|
24
|
-
/** findings.json 内容,caller 负责截断到 MAX_INLINE_FINDINGS_BYTES 以下。 */
|
|
25
|
-
specFindings?: string;
|
|
26
24
|
/** Caller-transmitted round — task field is stale during dispatch. */
|
|
27
25
|
currentSpecRound?: number;
|
|
28
26
|
excludeSkills?: readonly string[];
|
|
29
27
|
/** Absolute agent-host image paths to weave into the task body (task-055). */
|
|
30
28
|
imagePaths?: string[];
|
|
29
|
+
/** Server mode: injected review input (diff or spec doc), pre-sized by the caller. */
|
|
30
|
+
serverContent?: string;
|
|
31
|
+
serverDiffstat?: string;
|
|
32
|
+
serverBatch?: {
|
|
33
|
+
index: number;
|
|
34
|
+
total: number;
|
|
35
|
+
};
|
|
36
|
+
serverPriorFindings?: string;
|
|
37
|
+
serverPriorResponse?: string;
|
|
38
|
+
serverAfterDone?: {
|
|
39
|
+
kind: 'branch' | 'pr';
|
|
40
|
+
branch: string;
|
|
41
|
+
};
|
|
42
|
+
contentTruncated?: boolean;
|
|
43
|
+
hasQaPartner?: boolean;
|
|
31
44
|
}
|
|
32
45
|
export declare const MAX_INLINE_FINDINGS_BYTES: number;
|
|
33
46
|
export declare function buildPromptInline(opts: BuildPromptOpts): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/agent/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/agent/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,WAAW,EAAE,KAAK,SAAS,EAAsB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/J,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAE1C,eAAO,MAAM,4BAA4B,QAA0B,CAAC;AAEpE,qBAAa,eAAgB,SAAQ,KAAK;aACZ,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAO1C;AAED,qBAAa,0BAA2B,SAAQ,KAAK;aACvB,OAAO,EAAE,MAAM,EAAE;gBAAjB,OAAO,EAAE,MAAM,EAAE;CAO9C;AAyBD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,aAAa,GAAE,SAAS,MAAM,EAAO,GACpC,MAAM,CAqBR;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAI1B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,yBAAyB,QAAY,CAAC;AAOnD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAkC/D;AAwaD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,uBAAuB,EAC5B,MAAM,EAAE,4BAA4B,GACnC,MAAM,CASR"}
|