@jait/gateway 0.1.306 → 0.1.308
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/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +11 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/schema.d.ts +19 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +1 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/routes/architecture.d.ts.map +1 -1
- package/dist/routes/architecture.js +3 -1
- package/dist/routes/architecture.js.map +1 -1
- package/dist/routes/chat.d.ts.map +1 -1
- package/dist/routes/chat.js +83 -8
- package/dist/routes/chat.js.map +1 -1
- package/dist/routes/threads.d.ts.map +1 -1
- package/dist/routes/threads.js +202 -9
- package/dist/routes/threads.js.map +1 -1
- package/dist/services/architecture-diagrams.d.ts +9 -2
- package/dist/services/architecture-diagrams.d.ts.map +1 -1
- package/dist/services/architecture-diagrams.js +52 -3
- package/dist/services/architecture-diagrams.js.map +1 -1
- package/dist/services/session-state.d.ts +4 -0
- package/dist/services/session-state.d.ts.map +1 -1
- package/dist/services/session-state.js +17 -0
- package/dist/services/session-state.js.map +1 -1
- package/dist/services/thread-review-sync.d.ts +32 -0
- package/dist/services/thread-review-sync.d.ts.map +1 -0
- package/dist/services/thread-review-sync.js +193 -0
- package/dist/services/thread-review-sync.js.map +1 -0
- package/dist/tools/agent-loop.d.ts +11 -0
- package/dist/tools/agent-loop.d.ts.map +1 -1
- package/dist/tools/agent-loop.js +8 -1
- package/dist/tools/agent-loop.js.map +1 -1
- package/dist/tools/architecture-tools.d.ts.map +1 -1
- package/dist/tools/architecture-tools.js +13 -4
- package/dist/tools/architecture-tools.js.map +1 -1
- package/package.json +2 -2
- package/web-dist/assets/{_basePickBy-Bd0d7LbW.js → _basePickBy-C50TJu87.js} +1 -1
- package/web-dist/assets/{_baseUniq-D9ej0yrY.js → _baseUniq-Dkxp69pR.js} +1 -1
- package/web-dist/assets/{arc-CnnCJ37c.js → arc-BFdsqhz2.js} +1 -1
- package/web-dist/assets/{architectureDiagram-2XIMDMQ5-C_CmTfcL.js → architectureDiagram-2XIMDMQ5-Bv0HLwZv.js} +1 -1
- package/web-dist/assets/{blockDiagram-WCTKOSBZ-vQLEMQW0.js → blockDiagram-WCTKOSBZ-DRn0VIki.js} +1 -1
- package/web-dist/assets/{c4Diagram-IC4MRINW-xjtMC7cU.js → c4Diagram-IC4MRINW-Ct0hch7Y.js} +1 -1
- package/web-dist/assets/channel-BkG-_CP9.js +1 -0
- package/web-dist/assets/{chunk-4BX2VUAB-Dsp4EtQu.js → chunk-4BX2VUAB-B41YzmMk.js} +1 -1
- package/web-dist/assets/{chunk-55IACEB6-ZsFMKY7P.js → chunk-55IACEB6-Bz-NAWPT.js} +1 -1
- package/web-dist/assets/{chunk-FMBD7UC4-BrX27Oze.js → chunk-FMBD7UC4-CMAvoooR.js} +1 -1
- package/web-dist/assets/{chunk-JSJVCQXG-C1XEMGe8.js → chunk-JSJVCQXG-CH8pQUdO.js} +1 -1
- package/web-dist/assets/{chunk-KX2RTZJC-C-83Dryw.js → chunk-KX2RTZJC-CkXNseIJ.js} +1 -1
- package/web-dist/assets/{chunk-NQ4KR5QH-RyDfqeSZ.js → chunk-NQ4KR5QH-BNJUej9o.js} +1 -1
- package/web-dist/assets/{chunk-QZHKN3VN-BSvPh4Dg.js → chunk-QZHKN3VN-CTfYqYul.js} +1 -1
- package/web-dist/assets/{chunk-WL4C6EOR-C-2aE7oW.js → chunk-WL4C6EOR-CacxNYLi.js} +1 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-UMRAF5aV.js +1 -0
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-UMRAF5aV.js +1 -0
- package/web-dist/assets/clone-CSyuTo_y.js +1 -0
- package/web-dist/assets/{cose-bilkent-S5V4N54A-Rc5Ql4lR.js → cose-bilkent-S5V4N54A-Cj9pruE5.js} +1 -1
- package/web-dist/assets/{dagre-KLK3FWXG-C4JFjhkS.js → dagre-KLK3FWXG-BFfxcL0o.js} +1 -1
- package/web-dist/assets/{diagram-E7M64L7V-CoWogpc-.js → diagram-E7M64L7V-D4T0x3Jf.js} +1 -1
- package/web-dist/assets/{diagram-IFDJBPK2-DvgVVaXC.js → diagram-IFDJBPK2-BNVr2BYd.js} +1 -1
- package/web-dist/assets/{diagram-P4PSJMXO-DVnYd3Qx.js → diagram-P4PSJMXO-NJ81wXJH.js} +1 -1
- package/web-dist/assets/{erDiagram-INFDFZHY-n1RFQAoX.js → erDiagram-INFDFZHY-WP-j8slf.js} +1 -1
- package/web-dist/assets/{flowDiagram-PKNHOUZH-CKQtuu7g.js → flowDiagram-PKNHOUZH-x_7T0I_H.js} +1 -1
- package/web-dist/assets/{ganttDiagram-A5KZAMGK-B6fINj4L.js → ganttDiagram-A5KZAMGK-BzWssuuT.js} +1 -1
- package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-B5dBEdoG.js → gitGraphDiagram-K3NZZRJ6-D483hjl-.js} +1 -1
- package/web-dist/assets/{graph-zJMleAQ2.js → graph-C3CG1op9.js} +1 -1
- package/web-dist/assets/index-BKqoXY81.css +32 -0
- package/web-dist/assets/{index-CJ2vDRp9.js → index-JGTEb5jI.js} +393 -393
- package/web-dist/assets/{infoDiagram-LFFYTUFH-D3drBKcQ.js → infoDiagram-LFFYTUFH-bg8-brTn.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-PHBUUO56-DSTMbqxH.js → ishikawaDiagram-PHBUUO56-Bzwqkx9V.js} +1 -1
- package/web-dist/assets/{journeyDiagram-4ABVD52K-CviCv4pN.js → journeyDiagram-4ABVD52K-BJMImWb1.js} +1 -1
- package/web-dist/assets/{kanban-definition-K7BYSVSG-Bf5xi9mo.js → kanban-definition-K7BYSVSG-imJTtu9v.js} +1 -1
- package/web-dist/assets/{layout-XvbQFRcn.js → layout-Bft-FsbV.js} +1 -1
- package/web-dist/assets/{linear-BP61tt1x.js → linear-BpsJclE5.js} +1 -1
- package/web-dist/assets/{mindmap-definition-YRQLILUH-Bhtev91l.js → mindmap-definition-YRQLILUH-BSfKvzBT.js} +1 -1
- package/web-dist/assets/{pieDiagram-SKSYHLDU-DeWV692i.js → pieDiagram-SKSYHLDU-BNUiv1kJ.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-337W2JSQ-CvI0T4M9.js → quadrantDiagram-337W2JSQ-byLmHnvc.js} +1 -1
- package/web-dist/assets/{requirementDiagram-Z7DCOOCP-D1f7XpRS.js → requirementDiagram-Z7DCOOCP-CyEZ4tb9.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-BI9YrfDo.js → sankeyDiagram-WA2Y5GQK-CqHS3r9F.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-2WXFIKYE-BJ8Fems8.js → sequenceDiagram-2WXFIKYE-C5ZEYXt3.js} +1 -1
- package/web-dist/assets/{stateDiagram-RAJIS63D-BFdakHTh.js → stateDiagram-RAJIS63D-DNBdSiEo.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-DBKzWlvT.js +1 -0
- package/web-dist/assets/{timeline-definition-YZTLITO2-RZcBC8yR.js → timeline-definition-YZTLITO2-BdXnse5u.js} +1 -1
- package/web-dist/assets/{treemap-KZPCXAKY-uXz72-9v.js → treemap-KZPCXAKY-BxJj7Y-N.js} +1 -1
- package/web-dist/assets/{vennDiagram-LZ73GAT5-DO81DI2A.js → vennDiagram-LZ73GAT5-BrLwcBfE.js} +1 -1
- package/web-dist/assets/{xychartDiagram-JWTSCODW-c9kMesJc.js → xychartDiagram-JWTSCODW-Ds79lLes.js} +1 -1
- package/web-dist/index.html +2 -2
- package/web-dist/assets/channel-DtyeZ0Zd.js +0 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-Cu8dUioU.js +0 -1
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-Cu8dUioU.js +0 -1
- package/web-dist/assets/clone-PvyFZlsW.js +0 -1
- package/web-dist/assets/index-Cm8Z3bSF.css +0 -32
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-DD8TbEnA.js +0 -1
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname } from "node:path";
|
|
1
4
|
import { and, desc, eq, isNull } from "drizzle-orm";
|
|
2
5
|
import { architectureDiagrams } from "../db/schema.js";
|
|
3
6
|
import { uuidv7 } from "../db/uuidv7.js";
|
|
7
|
+
import { PathGuard } from "../security/path-guard.js";
|
|
8
|
+
export const DEFAULT_ARCHITECTURE_DIAGRAM_FILE = "architecture.mmd";
|
|
4
9
|
export class ArchitectureDiagramService {
|
|
5
10
|
db;
|
|
6
11
|
constructor(db) {
|
|
7
12
|
this.db = db;
|
|
8
13
|
}
|
|
9
|
-
|
|
14
|
+
getStoredRow(workspaceRoot, userId) {
|
|
10
15
|
const normalizedRoot = workspaceRoot.trim();
|
|
11
16
|
if (!normalizedRoot)
|
|
12
17
|
return null;
|
|
@@ -23,15 +28,59 @@ export class ArchitectureDiagramService {
|
|
|
23
28
|
.where(and(isNull(architectureDiagrams.userId), eq(architectureDiagrams.workspaceRoot, normalizedRoot)))
|
|
24
29
|
.get() ?? null;
|
|
25
30
|
}
|
|
26
|
-
|
|
31
|
+
getFilePath(workspaceRoot) {
|
|
32
|
+
const normalizedRoot = workspaceRoot.trim();
|
|
33
|
+
if (!normalizedRoot)
|
|
34
|
+
throw new Error("workspaceRoot is required");
|
|
35
|
+
const guard = new PathGuard({ workspaceRoot: normalizedRoot });
|
|
36
|
+
return guard.validate(DEFAULT_ARCHITECTURE_DIAGRAM_FILE);
|
|
37
|
+
}
|
|
38
|
+
getByWorkspace(workspaceRoot, userId) {
|
|
39
|
+
const normalizedRoot = workspaceRoot.trim();
|
|
40
|
+
if (!normalizedRoot)
|
|
41
|
+
return null;
|
|
42
|
+
const filePath = this.getFilePath(normalizedRoot);
|
|
43
|
+
try {
|
|
44
|
+
const diagram = readFileSync(filePath, "utf8").trim();
|
|
45
|
+
if (diagram) {
|
|
46
|
+
const existing = this.getStoredRow(normalizedRoot, userId);
|
|
47
|
+
const now = new Date().toISOString();
|
|
48
|
+
return {
|
|
49
|
+
id: existing?.id ?? `file:${normalizedRoot}`,
|
|
50
|
+
userId: userId ?? existing?.userId ?? null,
|
|
51
|
+
workspaceRoot: normalizedRoot,
|
|
52
|
+
diagram,
|
|
53
|
+
createdAt: existing?.createdAt ?? now,
|
|
54
|
+
updatedAt: existing?.updatedAt ?? now,
|
|
55
|
+
filePath,
|
|
56
|
+
source: "file",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Fall through to the legacy DB-backed value.
|
|
62
|
+
}
|
|
63
|
+
const existing = this.getStoredRow(normalizedRoot, userId);
|
|
64
|
+
if (!existing)
|
|
65
|
+
return null;
|
|
66
|
+
return {
|
|
67
|
+
...existing,
|
|
68
|
+
filePath,
|
|
69
|
+
source: "database",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async save(params) {
|
|
27
73
|
const workspaceRoot = params.workspaceRoot.trim();
|
|
28
74
|
const diagram = params.diagram.trim();
|
|
29
75
|
if (!workspaceRoot)
|
|
30
76
|
throw new Error("workspaceRoot is required");
|
|
31
77
|
if (!diagram)
|
|
32
78
|
throw new Error("diagram is required");
|
|
79
|
+
const filePath = this.getFilePath(workspaceRoot);
|
|
80
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
81
|
+
await writeFile(filePath, `${diagram}\n`, "utf8");
|
|
33
82
|
const now = new Date().toISOString();
|
|
34
|
-
const existing = this.
|
|
83
|
+
const existing = this.getStoredRow(workspaceRoot, params.userId);
|
|
35
84
|
if (existing) {
|
|
36
85
|
this.db
|
|
37
86
|
.update(architectureDiagrams)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture-diagrams.js","sourceRoot":"","sources":["../../src/services/architecture-diagrams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"architecture-diagrams.js","sourceRoot":"","sources":["../../src/services/architecture-diagrams.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,10 @@ export declare class SessionStateService {
|
|
|
9
9
|
* @returns Record mapping key → parsed JSON value (or null).
|
|
10
10
|
*/
|
|
11
11
|
get(sessionId: string, keys?: string[]): Record<string, unknown>;
|
|
12
|
+
getByKey(key: string): Array<{
|
|
13
|
+
sessionId: string;
|
|
14
|
+
value: unknown;
|
|
15
|
+
}>;
|
|
12
16
|
/**
|
|
13
17
|
* Upsert one or more state entries for a session.
|
|
14
18
|
* Send `null` as a value to delete that key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/services/session-state.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM;IAE9B;;;;;OAKG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA6BhE;;;OAGG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkDvD,+DAA+D;IAC/D,SAAS,CAAC,SAAS,EAAE,MAAM;CAM5B"}
|
|
1
|
+
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/services/session-state.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,MAAM;IAE9B;;;;;OAKG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA6BhE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAkBnE;;;OAGG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkDvD,+DAA+D;IAC/D,SAAS,CAAC,SAAS,EAAE,MAAM;CAM5B"}
|
|
@@ -40,6 +40,23 @@ export class SessionStateService {
|
|
|
40
40
|
}
|
|
41
41
|
return result;
|
|
42
42
|
}
|
|
43
|
+
getByKey(key) {
|
|
44
|
+
const rows = this.db
|
|
45
|
+
.select()
|
|
46
|
+
.from(sessionState)
|
|
47
|
+
.where(eq(sessionState.key, key))
|
|
48
|
+
.all();
|
|
49
|
+
return rows.map((row) => {
|
|
50
|
+
let value = null;
|
|
51
|
+
try {
|
|
52
|
+
value = row.value ? JSON.parse(row.value) : null;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
value = row.value;
|
|
56
|
+
}
|
|
57
|
+
return { sessionId: row.sessionId, value };
|
|
58
|
+
});
|
|
59
|
+
}
|
|
43
60
|
/**
|
|
44
61
|
* Upsert one or more state entries for a session.
|
|
45
62
|
* Send `null` as a value to delete that key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/services/session-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/services/session-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ThreadService } from "./threads.js";
|
|
2
|
+
import { GitService } from "./git.js";
|
|
3
|
+
import type { GitForge } from "./git-forge.js";
|
|
4
|
+
import type { WsControlPlane } from "../ws.js";
|
|
5
|
+
interface ThreadReviewSyncDeps {
|
|
6
|
+
threadService: ThreadService;
|
|
7
|
+
ws?: WsControlPlane;
|
|
8
|
+
gitService?: Pick<GitService, "getPreferredRemote" | "getRemoteUrl">;
|
|
9
|
+
resolveForge?: (remoteUrl: string) => GitForge | null;
|
|
10
|
+
log?: Pick<Console, "error">;
|
|
11
|
+
}
|
|
12
|
+
export declare class ThreadReviewSyncService {
|
|
13
|
+
private readonly deps;
|
|
14
|
+
private timer;
|
|
15
|
+
private running;
|
|
16
|
+
private readonly gitService;
|
|
17
|
+
private readonly resolveForge;
|
|
18
|
+
private readonly log;
|
|
19
|
+
constructor(deps: ThreadReviewSyncDeps);
|
|
20
|
+
start(intervalMs?: number): void;
|
|
21
|
+
stop(): void;
|
|
22
|
+
tick(): Promise<void>;
|
|
23
|
+
private isReviewSyncCandidate;
|
|
24
|
+
private syncThread;
|
|
25
|
+
private resolveRemoteContext;
|
|
26
|
+
private resolveRemoteUrlViaNode;
|
|
27
|
+
private findRemoteNodeForPath;
|
|
28
|
+
private buildPrStateSummary;
|
|
29
|
+
private broadcastThreadEvent;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=thread-review-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-review-sync.d.ts","sourceRoot":"","sources":["../../src/services/thread-review-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,UAAU,EAA8C,MAAM,UAAU,CAAC;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,UAAU,oBAAoB;IAC5B,aAAa,EAAE,aAAa,CAAC;IAC7B,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,GAAG,cAAc,CAAC,CAAC;IACrE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;IACtD,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAC9B;AAKD,qBAAa,uBAAuB;IAOtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0D;IACrF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyB;gBAEhB,IAAI,EAAE,oBAAoB;IASvD,KAAK,CAAC,UAAU,SAA2B,GAAG,IAAI;IAQlD,IAAI,IAAI,IAAI;IAMN,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,OAAO,CAAC,qBAAqB;YAWf,UAAU;YA6DV,oBAAoB;YAsBpB,uBAAuB;IAuCrC,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,oBAAoB;CAS7B"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { GitService, cleanupWorktreeRemoteAware, parseGitRemote } from "./git.js";
|
|
3
|
+
import { getForge } from "./git-forge.js";
|
|
4
|
+
const DEFAULT_POLL_INTERVAL_MS = 30_000;
|
|
5
|
+
const THREAD_REVIEW_SYNC_LIMIT = 100;
|
|
6
|
+
export class ThreadReviewSyncService {
|
|
7
|
+
deps;
|
|
8
|
+
timer = null;
|
|
9
|
+
running = false;
|
|
10
|
+
gitService;
|
|
11
|
+
resolveForge;
|
|
12
|
+
log;
|
|
13
|
+
constructor(deps) {
|
|
14
|
+
this.deps = deps;
|
|
15
|
+
this.gitService = deps.gitService ?? new GitService();
|
|
16
|
+
this.resolveForge = deps.resolveForge ?? ((remoteUrl) => {
|
|
17
|
+
const parsed = parseGitRemote(remoteUrl);
|
|
18
|
+
return parsed ? getForge(parsed.provider) : null;
|
|
19
|
+
});
|
|
20
|
+
this.log = deps.log ?? console;
|
|
21
|
+
}
|
|
22
|
+
start(intervalMs = DEFAULT_POLL_INTERVAL_MS) {
|
|
23
|
+
if (this.timer)
|
|
24
|
+
return;
|
|
25
|
+
this.timer = setInterval(() => {
|
|
26
|
+
void this.tick();
|
|
27
|
+
}, intervalMs);
|
|
28
|
+
this.timer.unref?.();
|
|
29
|
+
}
|
|
30
|
+
stop() {
|
|
31
|
+
if (!this.timer)
|
|
32
|
+
return;
|
|
33
|
+
clearInterval(this.timer);
|
|
34
|
+
this.timer = null;
|
|
35
|
+
}
|
|
36
|
+
async tick() {
|
|
37
|
+
if (this.running)
|
|
38
|
+
return;
|
|
39
|
+
this.running = true;
|
|
40
|
+
try {
|
|
41
|
+
const candidates = this.deps.threadService
|
|
42
|
+
.list(undefined, THREAD_REVIEW_SYNC_LIMIT)
|
|
43
|
+
.filter((thread) => this.isReviewSyncCandidate(thread));
|
|
44
|
+
for (const thread of candidates) {
|
|
45
|
+
await this.syncThread(thread);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
this.running = false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
isReviewSyncCandidate(thread) {
|
|
53
|
+
return thread.kind === "delivery"
|
|
54
|
+
&& typeof thread.branch === "string"
|
|
55
|
+
&& thread.branch.length > 0
|
|
56
|
+
&& typeof thread.workingDirectory === "string"
|
|
57
|
+
&& thread.workingDirectory.length > 0
|
|
58
|
+
&& thread.prState !== "merged"
|
|
59
|
+
&& thread.prState !== "closed"
|
|
60
|
+
&& (thread.prState === "open" || thread.prState === "creating" || !!thread.prUrl);
|
|
61
|
+
}
|
|
62
|
+
async syncThread(thread) {
|
|
63
|
+
try {
|
|
64
|
+
const context = await this.resolveRemoteContext(thread.workingDirectory, thread.branch);
|
|
65
|
+
if (!context)
|
|
66
|
+
return;
|
|
67
|
+
const { remoteUrl, remote, execCwd } = context;
|
|
68
|
+
const forge = this.resolveForge(remoteUrl);
|
|
69
|
+
if (!forge)
|
|
70
|
+
return;
|
|
71
|
+
const pr = await forge.findExistingPr(execCwd, remote, thread.branch);
|
|
72
|
+
if (!pr)
|
|
73
|
+
return;
|
|
74
|
+
const nextState = pr.state ?? null;
|
|
75
|
+
const metadataChanged = (pr.url ?? null) !== (thread.prUrl ?? null)
|
|
76
|
+
|| (pr.number ?? null) !== (thread.prNumber ?? null)
|
|
77
|
+
|| (pr.title ?? null) !== (thread.prTitle ?? null);
|
|
78
|
+
const stateChanged = nextState !== (thread.prState ?? null);
|
|
79
|
+
if (!metadataChanged && !stateChanged)
|
|
80
|
+
return;
|
|
81
|
+
let updated = this.deps.threadService.update(thread.id, {
|
|
82
|
+
prUrl: pr.url ?? thread.prUrl ?? null,
|
|
83
|
+
prNumber: pr.number ?? thread.prNumber ?? null,
|
|
84
|
+
prTitle: pr.title ?? thread.prTitle ?? null,
|
|
85
|
+
prState: nextState,
|
|
86
|
+
});
|
|
87
|
+
if (!updated)
|
|
88
|
+
return;
|
|
89
|
+
if (stateChanged) {
|
|
90
|
+
const summary = this.buildPrStateSummary(nextState, updated.prUrl ?? thread.prUrl ?? null);
|
|
91
|
+
if (summary) {
|
|
92
|
+
const activity = this.deps.threadService.addActivity(thread.id, "activity", summary, {
|
|
93
|
+
action: "pr_state_changed",
|
|
94
|
+
previousPrState: thread.prState,
|
|
95
|
+
prState: nextState,
|
|
96
|
+
prUrl: updated.prUrl ?? thread.prUrl ?? null,
|
|
97
|
+
syncSource: "gateway_poll",
|
|
98
|
+
});
|
|
99
|
+
this.broadcastThreadEvent(thread.id, "activity", { activity });
|
|
100
|
+
}
|
|
101
|
+
if (nextState === "merged" || nextState === "closed") {
|
|
102
|
+
updated = this.deps.threadService.update(thread.id, {
|
|
103
|
+
providerSessionId: null,
|
|
104
|
+
workingDirectory: null,
|
|
105
|
+
branch: null,
|
|
106
|
+
}) ?? updated;
|
|
107
|
+
void cleanupWorktreeRemoteAware(thread.workingDirectory, this.deps.ws, thread.branch).catch(() => { });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
this.broadcastThreadEvent(thread.id, "updated", { thread: updated });
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
this.log.error(`[thread-review-sync] Failed to sync thread ${thread.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async resolveRemoteContext(cwd, branch) {
|
|
117
|
+
const localPath = existsSync(cwd);
|
|
118
|
+
const execCwd = localPath ? cwd : process.cwd();
|
|
119
|
+
let remoteUrl = null;
|
|
120
|
+
if (localPath) {
|
|
121
|
+
const remoteName = await this.gitService.getPreferredRemote(cwd, branch);
|
|
122
|
+
if (!remoteName)
|
|
123
|
+
return null;
|
|
124
|
+
remoteUrl = await this.gitService.getRemoteUrl(cwd, remoteName);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
remoteUrl = await this.resolveRemoteUrlViaNode(cwd, branch);
|
|
128
|
+
}
|
|
129
|
+
if (!remoteUrl)
|
|
130
|
+
return null;
|
|
131
|
+
const remote = parseGitRemote(remoteUrl);
|
|
132
|
+
if (!remote)
|
|
133
|
+
return null;
|
|
134
|
+
return { remoteUrl, remote, execCwd };
|
|
135
|
+
}
|
|
136
|
+
async resolveRemoteUrlViaNode(cwd, branch) {
|
|
137
|
+
if (!this.deps.ws)
|
|
138
|
+
return null;
|
|
139
|
+
const node = this.findRemoteNodeForPath(cwd);
|
|
140
|
+
if (!node)
|
|
141
|
+
return null;
|
|
142
|
+
try {
|
|
143
|
+
const configuredRemote = await this.deps.ws.proxyFsOp(node.id, "git", { cwd, args: `config --get branch.${branch}.remote` }, 15_000).then((result) => result.stdout.trim()).catch(() => "");
|
|
144
|
+
const remotes = await this.deps.ws.proxyFsOp(node.id, "git", { cwd, args: "remote" }, 15_000).then((result) => result.stdout.split("\n").map((line) => line.trim()).filter(Boolean)).catch(() => []);
|
|
145
|
+
const remoteName = configuredRemote && remotes.includes(configuredRemote)
|
|
146
|
+
? configuredRemote
|
|
147
|
+
: remotes.includes("origin")
|
|
148
|
+
? "origin"
|
|
149
|
+
: remotes[0] ?? null;
|
|
150
|
+
if (!remoteName)
|
|
151
|
+
return null;
|
|
152
|
+
const result = await this.deps.ws.proxyFsOp(node.id, "git", { cwd, args: `remote get-url ${remoteName}` }, 15_000);
|
|
153
|
+
return result.stdout.trim() || null;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
findRemoteNodeForPath(cwd) {
|
|
160
|
+
if (!this.deps.ws)
|
|
161
|
+
return null;
|
|
162
|
+
const isWindowsPath = /^[A-Za-z]:[\\/]/.test(cwd);
|
|
163
|
+
const expectedPlatform = isWindowsPath ? "windows" : null;
|
|
164
|
+
for (const node of this.deps.ws.getFsNodes()) {
|
|
165
|
+
if (node.isGateway)
|
|
166
|
+
continue;
|
|
167
|
+
if (expectedPlatform && node.platform !== expectedPlatform)
|
|
168
|
+
continue;
|
|
169
|
+
return { id: node.id };
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
buildPrStateSummary(prState, prUrl) {
|
|
174
|
+
if (prState === "open")
|
|
175
|
+
return prUrl ? `Pull request created: ${prUrl}` : "Pull request created";
|
|
176
|
+
if (prState === "merged")
|
|
177
|
+
return prUrl ? `Pull request merged: ${prUrl}` : "Pull request merged";
|
|
178
|
+
if (prState === "closed")
|
|
179
|
+
return prUrl ? `Pull request closed: ${prUrl}` : "Pull request closed";
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
broadcastThreadEvent(threadId, event, data) {
|
|
183
|
+
if (!this.deps.ws)
|
|
184
|
+
return;
|
|
185
|
+
this.deps.ws.broadcastAll({
|
|
186
|
+
type: `thread.${event}`,
|
|
187
|
+
sessionId: "",
|
|
188
|
+
timestamp: new Date().toISOString(),
|
|
189
|
+
payload: { threadId, ...data },
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=thread-review-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-review-sync.js","sourceRoot":"","sources":["../../src/services/thread-review-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAElF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW1C,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC,MAAM,OAAO,uBAAuB;IAOL;IANrB,KAAK,GAA0C,IAAI,CAAC;IACpD,OAAO,GAAG,KAAK,CAAC;IACP,UAAU,CAA0D;IACpE,YAAY,CAAyC;IACrD,GAAG,CAAyB;IAE7C,YAA6B,IAA0B;QAA1B,SAAI,GAAJ,IAAI,CAAsB;QACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,UAAU,EAAE,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,SAAiB,EAAE,EAAE;YAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,GAAG,wBAAwB;QACzC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;iBACvC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC;iBACzC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1D,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,MAAiB;QAC7C,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU;eAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;eACjC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;eACxB,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ;eAC3C,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;eAClC,MAAM,CAAC,OAAO,KAAK,QAAQ;eAC3B,MAAM,CAAC,OAAO,KAAK,QAAQ;eAC3B,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAiB;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAiB,EAAE,MAAM,CAAC,MAAO,CAAC,CAAC;YAC1F,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAO,CAAC,CAAC;YACvE,IAAI,CAAC,EAAE;gBAAE,OAAO;YAEhB,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;YACnC,MAAM,eAAe,GACnB,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;mBACxC,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;mBACjD,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;YAE5D,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE9C,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;gBACtD,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;gBACrC,QAAQ,EAAE,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;gBAC9C,OAAO,EAAE,EAAE,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI;gBAC3C,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;gBAC3F,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;wBACnF,MAAM,EAAE,kBAAkB;wBAC1B,eAAe,EAAE,MAAM,CAAC,OAAO;wBAC/B,OAAO,EAAE,SAAS;wBAClB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;wBAC5C,UAAU,EAAE,cAAc;qBAC3B,CAAC,CAAC;oBACH,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACjE,CAAC;gBAED,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBACrD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;wBAClD,iBAAiB,EAAE,IAAI;wBACvB,gBAAgB,EAAE,IAAI;wBACtB,MAAM,EAAE,IAAI;qBACb,CAAC,IAAI,OAAO,CAAC;oBACd,KAAK,0BAA0B,CAAC,MAAM,CAAC,gBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACzG,CAAC;YACH,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,8CAA8C,MAAM,CAAC,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACrH,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,GAAW,EACX,MAAc;QAEd,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEhD,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YAC7B,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,GAAW,EAAE,MAAc;QAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CACnD,IAAI,CAAC,EAAE,EACP,KAAK,EACL,EAAE,GAAG,EAAE,IAAI,EAAE,uBAAuB,MAAM,SAAS,EAAE,EACrD,MAAM,CACP,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAEzD,MAAM,OAAO,GAAa,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CACpD,IAAI,CAAC,EAAE,EACP,KAAK,EACL,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EACvB,MAAM,CACP,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAEzG,MAAM,UAAU,GAAG,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACvE,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC1B,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YACzB,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CACzC,IAAI,CAAC,EAAE,EACP,KAAK,EACL,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,UAAU,EAAE,EAAE,EAC7C,MAAM,CACP,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,GAAW;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,SAAS;gBAAE,SAAS;YAC7B,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB;gBAAE,SAAS;YACrE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CACzB,OAA4C,EAC5C,KAAoB;QAEpB,IAAI,OAAO,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACjG,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACjG,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACjG,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAAC,QAAgB,EAAE,KAAa,EAAE,IAAa;QACzE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;YACxB,IAAI,EAAE,UAAU,KAAK,EAAS;YAC9B,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,IAA+B,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -47,6 +47,15 @@ export interface OpenAIToolSchema {
|
|
|
47
47
|
parameters: unknown;
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
+
/** Snapshot of an outbound model request, with credentials removed. */
|
|
51
|
+
export interface LlmContextFlowRound {
|
|
52
|
+
round: number;
|
|
53
|
+
createdAt: string;
|
|
54
|
+
model: string;
|
|
55
|
+
messages: ReturnType<typeof serializeMessages>;
|
|
56
|
+
tools?: OpenAIToolSchema[];
|
|
57
|
+
tool_choice?: "auto";
|
|
58
|
+
}
|
|
50
59
|
/** LLM connection config */
|
|
51
60
|
export interface LLMConfig {
|
|
52
61
|
openaiApiKey: string;
|
|
@@ -196,6 +205,8 @@ export interface AgentLoopOptions {
|
|
|
196
205
|
log?: Logger;
|
|
197
206
|
/** Event callback — called for every stream event */
|
|
198
207
|
onEvent?: (event: AgentLoopEvent) => void;
|
|
208
|
+
/** Called immediately before each outbound LLM request. */
|
|
209
|
+
onContext?: (round: LlmContextFlowRound) => void;
|
|
199
210
|
/** Persistence callback — called when a final assistant message should be saved */
|
|
200
211
|
onPersist?: (sessionId: string, role: string, content: string, toolCalls?: string, segments?: string) => void;
|
|
201
212
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/tools/agent-loop.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/tools/agent-loop.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/agent-loop.js
CHANGED
|
@@ -507,7 +507,7 @@ function pruneHistory(history, contextWindow, toolSchemas) {
|
|
|
507
507
|
return pruned;
|
|
508
508
|
}
|
|
509
509
|
export async function runAgentLoop(options, executeTool, steering) {
|
|
510
|
-
const { llm, history, toolSchemas: initialToolSchemas, hasTools, sessionId, auth, abort, maxRounds = DEFAULT_MAX_ROUNDS, maxRetries = DEFAULT_MAX_RETRIES, parallel = true, toolRegistry, disabledTools, mode = "agent", onEvent, onPersist, log = console, } = options;
|
|
510
|
+
const { llm, history, toolSchemas: initialToolSchemas, hasTools, sessionId, auth, abort, maxRounds = DEFAULT_MAX_ROUNDS, maxRetries = DEFAULT_MAX_RETRIES, parallel = true, toolRegistry, disabledTools, mode = "agent", onEvent, onContext, onPersist, log = console, } = options;
|
|
511
511
|
let fullContent = "";
|
|
512
512
|
const executedToolCalls = [];
|
|
513
513
|
const segments = [];
|
|
@@ -577,6 +577,13 @@ export async function runAgentLoop(options, executeTool, steering) {
|
|
|
577
577
|
reqBody.tools = activeSchemas;
|
|
578
578
|
reqBody.tool_choice = "auto";
|
|
579
579
|
}
|
|
580
|
+
onContext?.({
|
|
581
|
+
round: round + 1,
|
|
582
|
+
createdAt: new Date().toISOString(),
|
|
583
|
+
model: llm.openaiModel,
|
|
584
|
+
messages: reqBody.messages,
|
|
585
|
+
...(hasTools ? { tools: activeSchemas, tool_choice: "auto" } : {}),
|
|
586
|
+
});
|
|
580
587
|
let contentText = "";
|
|
581
588
|
let toolCalls = [];
|
|
582
589
|
let finishReason = null;
|