@very_aq/codex-cli-web 0.0.1
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/LICENSE +21 -0
- package/README.md +228 -0
- package/README.zh-CN.md +228 -0
- package/package.json +38 -0
- package/server/dist/admin/userAdminRoutes.d.ts +7 -0
- package/server/dist/admin/userAdminRoutes.js +91 -0
- package/server/dist/admin/userAdminRoutes.js.map +1 -0
- package/server/dist/app.d.ts +22 -0
- package/server/dist/app.js +993 -0
- package/server/dist/app.js.map +1 -0
- package/server/dist/auth/adminInit.d.ts +41 -0
- package/server/dist/auth/adminInit.js +126 -0
- package/server/dist/auth/adminInit.js.map +1 -0
- package/server/dist/auth/bootstrapAdmin.d.ts +6 -0
- package/server/dist/auth/bootstrapAdmin.js +11 -0
- package/server/dist/auth/bootstrapAdmin.js.map +1 -0
- package/server/dist/auth/httpAuth.d.ts +16 -0
- package/server/dist/auth/httpAuth.js +31 -0
- package/server/dist/auth/httpAuth.js.map +1 -0
- package/server/dist/auth/password.d.ts +2 -0
- package/server/dist/auth/password.js +68 -0
- package/server/dist/auth/password.js.map +1 -0
- package/server/dist/auth/requireAdmin.d.ts +2 -0
- package/server/dist/auth/requireAdmin.js +14 -0
- package/server/dist/auth/requireAdmin.js.map +1 -0
- package/server/dist/auth/roles.d.ts +3 -0
- package/server/dist/auth/roles.js +13 -0
- package/server/dist/auth/roles.js.map +1 -0
- package/server/dist/auth/session.d.ts +24 -0
- package/server/dist/auth/session.js +127 -0
- package/server/dist/auth/session.js.map +1 -0
- package/server/dist/auth/sqlite/authDb.d.ts +18 -0
- package/server/dist/auth/sqlite/authDb.js +26 -0
- package/server/dist/auth/sqlite/authDb.js.map +1 -0
- package/server/dist/auth/sqlite/legacyImport.d.ts +22 -0
- package/server/dist/auth/sqlite/legacyImport.js +208 -0
- package/server/dist/auth/sqlite/legacyImport.js.map +1 -0
- package/server/dist/auth/sqlite/schema.d.ts +11 -0
- package/server/dist/auth/sqlite/schema.js +47 -0
- package/server/dist/auth/sqlite/schema.js.map +1 -0
- package/server/dist/auth/sqlite/sqliteUserStore.d.ts +12 -0
- package/server/dist/auth/sqlite/sqliteUserStore.js +194 -0
- package/server/dist/auth/sqlite/sqliteUserStore.js.map +1 -0
- package/server/dist/auth/userStore.d.ts +19 -0
- package/server/dist/auth/userStore.js +26 -0
- package/server/dist/auth/userStore.js.map +1 -0
- package/server/dist/auth/userTypes.d.ts +13 -0
- package/server/dist/auth/userTypes.js +3 -0
- package/server/dist/auth/userTypes.js.map +1 -0
- package/server/dist/chat/attachmentPathRedaction.d.ts +5 -0
- package/server/dist/chat/attachmentPathRedaction.js +67 -0
- package/server/dist/chat/attachmentPathRedaction.js.map +1 -0
- package/server/dist/chat/chatItemEnricher.d.ts +5 -0
- package/server/dist/chat/chatItemEnricher.js +40 -0
- package/server/dist/chat/chatItemEnricher.js.map +1 -0
- package/server/dist/chat/codexEventProjector.d.ts +33 -0
- package/server/dist/chat/codexEventProjector.js +482 -0
- package/server/dist/chat/codexEventProjector.js.map +1 -0
- package/server/dist/chat/contextUsageProjector.d.ts +10 -0
- package/server/dist/chat/contextUsageProjector.js +472 -0
- package/server/dist/chat/contextUsageProjector.js.map +1 -0
- package/server/dist/chat/fileChangeExtractor.d.ts +5 -0
- package/server/dist/chat/fileChangeExtractor.js +121 -0
- package/server/dist/chat/fileChangeExtractor.js.map +1 -0
- package/server/dist/chat/markdown/markdownAst.d.ts +5 -0
- package/server/dist/chat/markdown/markdownAst.js +154 -0
- package/server/dist/chat/markdown/markdownAst.js.map +1 -0
- package/server/dist/chat/systemToolCallSummary.d.ts +10 -0
- package/server/dist/chat/systemToolCallSummary.js +112 -0
- package/server/dist/chat/systemToolCallSummary.js.map +1 -0
- package/server/dist/chat/terminal/terminalPlainText.d.ts +14 -0
- package/server/dist/chat/terminal/terminalPlainText.js +139 -0
- package/server/dist/chat/terminal/terminalPlainText.js.map +1 -0
- package/server/dist/chat/textMetrics.d.ts +9 -0
- package/server/dist/chat/textMetrics.js +24 -0
- package/server/dist/chat/textMetrics.js.map +1 -0
- package/server/dist/chat/threadTurnsProjector.d.ts +12 -0
- package/server/dist/chat/threadTurnsProjector.js +292 -0
- package/server/dist/chat/threadTurnsProjector.js.map +1 -0
- package/server/dist/chat/todoPlanProjector.d.ts +8 -0
- package/server/dist/chat/todoPlanProjector.js +94 -0
- package/server/dist/chat/todoPlanProjector.js.map +1 -0
- package/server/dist/chat/todoPlanTypes.d.ts +21 -0
- package/server/dist/chat/todoPlanTypes.js +3 -0
- package/server/dist/chat/todoPlanTypes.js.map +1 -0
- package/server/dist/chat/types.d.ts +138 -0
- package/server/dist/chat/types.js +3 -0
- package/server/dist/chat/types.js.map +1 -0
- package/server/dist/cli/configArg.d.ts +21 -0
- package/server/dist/cli/configArg.js +70 -0
- package/server/dist/cli/configArg.js.map +1 -0
- package/server/dist/codex/appServerProcess.d.ts +24 -0
- package/server/dist/codex/appServerProcess.js +56 -0
- package/server/dist/codex/appServerProcess.js.map +1 -0
- package/server/dist/codex/cliArgs.d.ts +17 -0
- package/server/dist/codex/cliArgs.js +34 -0
- package/server/dist/codex/cliArgs.js.map +1 -0
- package/server/dist/codex/codexAppServer.d.ts +103 -0
- package/server/dist/codex/codexAppServer.js +206 -0
- package/server/dist/codex/codexAppServer.js.map +1 -0
- package/server/dist/codex/jsonl.d.ts +4 -0
- package/server/dist/codex/jsonl.js +23 -0
- package/server/dist/codex/jsonl.js.map +1 -0
- package/server/dist/codex/jsonrpc.d.ts +43 -0
- package/server/dist/codex/jsonrpc.js +96 -0
- package/server/dist/codex/jsonrpc.js.map +1 -0
- package/server/dist/config/serverConfig.d.ts +150 -0
- package/server/dist/config/serverConfig.js +64 -0
- package/server/dist/config/serverConfig.js.map +1 -0
- package/server/dist/env.d.ts +101 -0
- package/server/dist/env.js +523 -0
- package/server/dist/env.js.map +1 -0
- package/server/dist/history/http/historyRoutes.d.ts +18 -0
- package/server/dist/history/http/historyRoutes.js +67 -0
- package/server/dist/history/http/historyRoutes.js.map +1 -0
- package/server/dist/history/index.d.ts +24 -0
- package/server/dist/history/index.js +30 -0
- package/server/dist/history/index.js.map +1 -0
- package/server/dist/history/ingest/historyIngestService.d.ts +15 -0
- package/server/dist/history/ingest/historyIngestService.js +42 -0
- package/server/dist/history/ingest/historyIngestService.js.map +1 -0
- package/server/dist/history/projector/extractIds.d.ts +36 -0
- package/server/dist/history/projector/extractIds.js +111 -0
- package/server/dist/history/projector/extractIds.js.map +1 -0
- package/server/dist/history/projector/projectCodexEvent.d.ts +27 -0
- package/server/dist/history/projector/projectCodexEvent.js +845 -0
- package/server/dist/history/projector/projectCodexEvent.js.map +1 -0
- package/server/dist/history/query/historyQueryService.d.ts +34 -0
- package/server/dist/history/query/historyQueryService.js +170 -0
- package/server/dist/history/query/historyQueryService.js.map +1 -0
- package/server/dist/history/sqlite/schema.d.ts +11 -0
- package/server/dist/history/sqlite/schema.js +34 -0
- package/server/dist/history/sqlite/schema.js.map +1 -0
- package/server/dist/history/sqlite/sqliteHistoryStore.d.ts +69 -0
- package/server/dist/history/sqlite/sqliteHistoryStore.js +206 -0
- package/server/dist/history/sqlite/sqliteHistoryStore.js.map +1 -0
- package/server/dist/history/types.d.ts +29 -0
- package/server/dist/history/types.js +3 -0
- package/server/dist/history/types.js.map +1 -0
- package/server/dist/index.d.ts +1 -0
- package/server/dist/index.js +166 -0
- package/server/dist/index.js.map +1 -0
- package/server/dist/security/executionPolicy.d.ts +33 -0
- package/server/dist/security/executionPolicy.js +72 -0
- package/server/dist/security/executionPolicy.js.map +1 -0
- package/server/dist/security/origin.d.ts +11 -0
- package/server/dist/security/origin.js +40 -0
- package/server/dist/security/origin.js.map +1 -0
- package/server/dist/settings/sqliteUserSettingsStore.d.ts +12 -0
- package/server/dist/settings/sqliteUserSettingsStore.js +62 -0
- package/server/dist/settings/sqliteUserSettingsStore.js.map +1 -0
- package/server/dist/settings/userSettingsRoutes.d.ts +8 -0
- package/server/dist/settings/userSettingsRoutes.js +55 -0
- package/server/dist/settings/userSettingsRoutes.js.map +1 -0
- package/server/dist/settings/userSettingsStore.d.ts +19 -0
- package/server/dist/settings/userSettingsStore.js +26 -0
- package/server/dist/settings/userSettingsStore.js.map +1 -0
- package/server/dist/settings/userSettingsTypes.d.ts +70 -0
- package/server/dist/settings/userSettingsTypes.js +196 -0
- package/server/dist/settings/userSettingsTypes.js.map +1 -0
- package/server/dist/status/codexTaskTracker.d.ts +21 -0
- package/server/dist/status/codexTaskTracker.js +123 -0
- package/server/dist/status/codexTaskTracker.js.map +1 -0
- package/server/dist/status/threadContextUsage.d.ts +19 -0
- package/server/dist/status/threadContextUsage.js +229 -0
- package/server/dist/status/threadContextUsage.js.map +1 -0
- package/server/dist/threadList/threadListServerCache.d.ts +10 -0
- package/server/dist/threadList/threadListServerCache.js +42 -0
- package/server/dist/threadList/threadListServerCache.js.map +1 -0
- package/server/dist/tools/cwdSuggest.d.ts +11 -0
- package/server/dist/tools/cwdSuggest.js +128 -0
- package/server/dist/tools/cwdSuggest.js.map +1 -0
- package/server/dist/workspace/accessControl.d.ts +16 -0
- package/server/dist/workspace/accessControl.js +82 -0
- package/server/dist/workspace/accessControl.js.map +1 -0
- package/server/dist/workspace/sqliteUserWorkspaceStore.d.ts +12 -0
- package/server/dist/workspace/sqliteUserWorkspaceStore.js +82 -0
- package/server/dist/workspace/sqliteUserWorkspaceStore.js.map +1 -0
- package/server/dist/workspace/threadAccess.d.ts +19 -0
- package/server/dist/workspace/threadAccess.js +22 -0
- package/server/dist/workspace/threadAccess.js.map +1 -0
- package/server/dist/workspace/threadListVisibility.d.ts +25 -0
- package/server/dist/workspace/threadListVisibility.js +104 -0
- package/server/dist/workspace/threadListVisibility.js.map +1 -0
- package/server/dist/workspace/userWorkspaceRoutes.d.ts +7 -0
- package/server/dist/workspace/userWorkspaceRoutes.js +124 -0
- package/server/dist/workspace/userWorkspaceRoutes.js.map +1 -0
- package/server/dist/workspace/userWorkspaceStore.d.ts +12 -0
- package/server/dist/workspace/userWorkspaceStore.js +23 -0
- package/server/dist/workspace/userWorkspaceStore.js.map +1 -0
- package/server/dist/ws/socketIoBridge.d.ts +32 -0
- package/server/dist/ws/socketIoBridge.js +194 -0
- package/server/dist/ws/socketIoBridge.js.map +1 -0
- package/server/dist/ws/types.d.ts +113 -0
- package/server/dist/ws/types.js +3 -0
- package/server/dist/ws/types.js.map +1 -0
- package/server/dist/ws/wsHub.d.ts +119 -0
- package/server/dist/ws/wsHub.js +1259 -0
- package/server/dist/ws/wsHub.js.map +1 -0
- package/web/dist/assets/index-CY6cnwQz.js +174 -0
- package/web/dist/assets/index-DI7kJHr2.css +32 -0
- package/web/dist/favicon-mask.svg +9 -0
- package/web/dist/favicon.svg +26 -0
- package/web/dist/index.html +75 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWebHistoryRuntime = createWebHistoryRuntime;
|
|
4
|
+
/**
|
|
5
|
+
* 历史模块统一出口:集中导出公共类型与运行时构造器。
|
|
6
|
+
*/
|
|
7
|
+
const historyIngestService_1 = require("./ingest/historyIngestService");
|
|
8
|
+
const historyQueryService_1 = require("./query/historyQueryService");
|
|
9
|
+
const sqliteHistoryStore_1 = require("./sqlite/sqliteHistoryStore");
|
|
10
|
+
/**
|
|
11
|
+
* 根据配置模式创建历史运行时:
|
|
12
|
+
* - off: 不创建任何历史资源;
|
|
13
|
+
* - shadow/primary: 初始化 SQLite store 与 ingest 服务。
|
|
14
|
+
*/
|
|
15
|
+
function createWebHistoryRuntime(options) {
|
|
16
|
+
if (options.mode === "off")
|
|
17
|
+
return null;
|
|
18
|
+
// SQLite store 负责底层读写,ingest 负责事件编排与投影。
|
|
19
|
+
const store = (0, sqliteHistoryStore_1.createSqliteHistoryStore)({ dbPath: options.dbPath });
|
|
20
|
+
const ingest = (0, historyIngestService_1.createHistoryIngestService)({ store });
|
|
21
|
+
const query = (0, historyQueryService_1.createHistoryQueryService)({ store });
|
|
22
|
+
return {
|
|
23
|
+
ingest,
|
|
24
|
+
query,
|
|
25
|
+
async close() {
|
|
26
|
+
await ingest.flushAndClose();
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/history/index.ts"],"names":[],"mappings":";;AAsCA,0DAeC;AArDD;;GAEG;AACH,wEAA2E;AAC3E,qEAAwE;AACxE,oEAAuE;AA4BvE;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,OAAuC;IAC7E,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAExC,wCAAwC;IACxC,MAAM,KAAK,GAAG,IAAA,6CAAwB,EAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAA,iDAA0B,EAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAA,+CAAyB,EAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAEnD,OAAO;QACL,MAAM;QACN,KAAK;QACL,KAAK,CAAC,KAAK;YACT,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SqliteHistoryStore } from "../sqlite/sqliteHistoryStore";
|
|
2
|
+
import type { HistoryIngestService } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* 创建历史写入服务时的依赖参数。
|
|
5
|
+
*/
|
|
6
|
+
export type CreateHistoryIngestServiceOptions = {
|
|
7
|
+
store: SqliteHistoryStore;
|
|
8
|
+
nowMs?: () => number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* 构造历史写入编排服务:
|
|
12
|
+
* - 为每条事件分配 thread 内递增 seq;
|
|
13
|
+
* - 使用事务保证 raw/message/chunk 的原子写入。
|
|
14
|
+
*/
|
|
15
|
+
export declare function createHistoryIngestService(options: CreateHistoryIngestServiceOptions): HistoryIngestService;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createHistoryIngestService = createHistoryIngestService;
|
|
4
|
+
const projectCodexEvent_1 = require("../projector/projectCodexEvent");
|
|
5
|
+
/**
|
|
6
|
+
* 构造历史写入编排服务:
|
|
7
|
+
* - 为每条事件分配 thread 内递增 seq;
|
|
8
|
+
* - 使用事务保证 raw/message/chunk 的原子写入。
|
|
9
|
+
*/
|
|
10
|
+
function createHistoryIngestService(options) {
|
|
11
|
+
const nowMsProvider = options.nowMs ?? (() => Date.now());
|
|
12
|
+
return {
|
|
13
|
+
/**
|
|
14
|
+
* 记录一条 Codex 事件并投影到结构化历史表。
|
|
15
|
+
*/
|
|
16
|
+
async recordCodexEvent(input) {
|
|
17
|
+
const nowMs = nowMsProvider();
|
|
18
|
+
const payload = { method: input.method, params: input.params };
|
|
19
|
+
options.store.withTransaction(() => {
|
|
20
|
+
const projected = (0, projectCodexEvent_1.projectCodexEvent)({
|
|
21
|
+
threadId: input.threadId,
|
|
22
|
+
event: payload,
|
|
23
|
+
nowMs,
|
|
24
|
+
});
|
|
25
|
+
if (projected.message)
|
|
26
|
+
options.store.upsertMessage(projected.message);
|
|
27
|
+
if (projected.messages?.length) {
|
|
28
|
+
for (const message of projected.messages) {
|
|
29
|
+
options.store.upsertMessage(message);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* 刷新并关闭写入资源。
|
|
36
|
+
*/
|
|
37
|
+
async flushAndClose() {
|
|
38
|
+
options.store.close();
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=historyIngestService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"historyIngestService.js","sourceRoot":"","sources":["../../../src/history/ingest/historyIngestService.ts"],"names":[],"mappings":";;AAiBA,gEAiCC;AAlDD,sEAAmE;AAYnE;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,OAA0C;IACnF,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAE1D,OAAO;QACL;;WAEG;QACH,KAAK,CAAC,gBAAgB,CAAC,KAA4B;YACjD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAsB,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAElF,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;gBACjC,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC;oBAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,KAAK,EAAE,OAAO;oBACd,KAAK;iBACN,CAAC,CAAC;gBACH,IAAI,SAAS,CAAC,OAAO;oBAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACtE,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;oBAC/B,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;wBACzC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,aAAa;YACjB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 从事件参数中提取 turnId,兼容 camelCase/snake_case 与嵌套结构。
|
|
3
|
+
*/
|
|
4
|
+
export declare function extractTurnId(params: unknown): string | null;
|
|
5
|
+
/**
|
|
6
|
+
* 从事件参数中提取 itemId,兼容多种字段路径。
|
|
7
|
+
*/
|
|
8
|
+
export declare function extractItemId(params: unknown): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* 构造 assistant message 的稳定消息 id。
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildAgentMessageId(turnId: string | null, itemId: string | null): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* 构造 commandExecution message 的稳定消息 id。
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildCommandExecutionMessageId(turnId: string | null, itemId: string | null): string | null;
|
|
17
|
+
/**
|
|
18
|
+
* 构造 fileChange message 的稳定消息 id。
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildFileChangeMessageId(turnId: string | null, itemId: string | null): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* 构造 user message 的稳定消息 id。
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildUserMessageId(turnId: string | null, itemId: string | null): string | null;
|
|
25
|
+
/**
|
|
26
|
+
* 构造 plan message 的稳定消息 id。
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildPlanMessageId(turnId: string | null, itemId: string | null): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* 构造 reasoning summary message 的稳定消息 id。
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildReasoningSummaryMessageId(turnId: string | null, itemId: string | null, summaryIndex: number): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* 构造 user input 审核轨迹消息 id(required / resolved)。
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildUserInputAuditMessageId(threadId: string, requestId: unknown, phase: "required" | "resolved"): string;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractTurnId = extractTurnId;
|
|
4
|
+
exports.extractItemId = extractItemId;
|
|
5
|
+
exports.buildAgentMessageId = buildAgentMessageId;
|
|
6
|
+
exports.buildCommandExecutionMessageId = buildCommandExecutionMessageId;
|
|
7
|
+
exports.buildFileChangeMessageId = buildFileChangeMessageId;
|
|
8
|
+
exports.buildUserMessageId = buildUserMessageId;
|
|
9
|
+
exports.buildPlanMessageId = buildPlanMessageId;
|
|
10
|
+
exports.buildReasoningSummaryMessageId = buildReasoningSummaryMessageId;
|
|
11
|
+
exports.buildUserInputAuditMessageId = buildUserInputAuditMessageId;
|
|
12
|
+
/**
|
|
13
|
+
* 从候选字段中选择第一个非空 id 字符串。
|
|
14
|
+
*/
|
|
15
|
+
function pickFirstNonEmptyId(candidates) {
|
|
16
|
+
for (const candidate of candidates) {
|
|
17
|
+
if (candidate === null || candidate === undefined)
|
|
18
|
+
continue;
|
|
19
|
+
const normalizedId = String(candidate).trim();
|
|
20
|
+
if (normalizedId)
|
|
21
|
+
return normalizedId;
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 从事件参数中提取 turnId,兼容 camelCase/snake_case 与嵌套结构。
|
|
27
|
+
*/
|
|
28
|
+
function extractTurnId(params) {
|
|
29
|
+
const payload = params;
|
|
30
|
+
return pickFirstNonEmptyId([
|
|
31
|
+
payload?.turnId,
|
|
32
|
+
payload?.turn_id,
|
|
33
|
+
payload?.turn?.id,
|
|
34
|
+
payload?.item?.turnId,
|
|
35
|
+
payload?.item?.turn_id,
|
|
36
|
+
payload?.item?.turn?.id,
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 从事件参数中提取 itemId,兼容多种字段路径。
|
|
41
|
+
*/
|
|
42
|
+
function extractItemId(params) {
|
|
43
|
+
const payload = params;
|
|
44
|
+
return pickFirstNonEmptyId([
|
|
45
|
+
payload?.itemId,
|
|
46
|
+
payload?.item_id,
|
|
47
|
+
payload?.item?.id,
|
|
48
|
+
payload?.id,
|
|
49
|
+
]);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 构造 assistant message 的稳定消息 id。
|
|
53
|
+
*/
|
|
54
|
+
function buildAgentMessageId(turnId, itemId) {
|
|
55
|
+
if (!turnId || !itemId)
|
|
56
|
+
return null;
|
|
57
|
+
return `v2:am-${turnId}:${itemId}`;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 构造 commandExecution message 的稳定消息 id。
|
|
61
|
+
*/
|
|
62
|
+
function buildCommandExecutionMessageId(turnId, itemId) {
|
|
63
|
+
if (!turnId || !itemId)
|
|
64
|
+
return null;
|
|
65
|
+
return `v2:cmd-${turnId}:${itemId}`;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 构造 fileChange message 的稳定消息 id。
|
|
69
|
+
*/
|
|
70
|
+
function buildFileChangeMessageId(turnId, itemId) {
|
|
71
|
+
if (!turnId || !itemId)
|
|
72
|
+
return null;
|
|
73
|
+
return `v2:fc-${turnId}:${itemId}`;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 构造 user message 的稳定消息 id。
|
|
77
|
+
*/
|
|
78
|
+
function buildUserMessageId(turnId, itemId) {
|
|
79
|
+
if (!turnId || !itemId)
|
|
80
|
+
return null;
|
|
81
|
+
return `v2:um-${turnId}:${itemId}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 构造 plan message 的稳定消息 id。
|
|
85
|
+
*/
|
|
86
|
+
function buildPlanMessageId(turnId, itemId) {
|
|
87
|
+
if (!turnId || !itemId)
|
|
88
|
+
return null;
|
|
89
|
+
return `v2:plan-${turnId}:${itemId}`;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 构造 reasoning summary message 的稳定消息 id。
|
|
93
|
+
*/
|
|
94
|
+
function buildReasoningSummaryMessageId(turnId, itemId, summaryIndex) {
|
|
95
|
+
if (!turnId || !itemId)
|
|
96
|
+
return null;
|
|
97
|
+
const normalizedSummaryIndex = Number.isFinite(summaryIndex)
|
|
98
|
+
? Math.max(0, Math.floor(summaryIndex))
|
|
99
|
+
: 0;
|
|
100
|
+
return `v2:rs-${turnId}:${itemId}:${normalizedSummaryIndex}`;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 构造 user input 审核轨迹消息 id(required / resolved)。
|
|
104
|
+
*/
|
|
105
|
+
function buildUserInputAuditMessageId(threadId, requestId, phase) {
|
|
106
|
+
const normalizedThreadId = String(threadId ?? "").trim() || "unknown-thread";
|
|
107
|
+
const normalizedRequestId = String(requestId ?? "").trim() || "unknown-request";
|
|
108
|
+
const safeRequestId = normalizedRequestId.replace(/[^a-zA-Z0-9._-]/g, "_");
|
|
109
|
+
return `v2:uia-${phase}-${normalizedThreadId}:${safeRequestId}`;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=extractIds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractIds.js","sourceRoot":"","sources":["../../../src/history/projector/extractIds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { UpsertMessageInput } from "../sqlite/sqliteHistoryStore";
|
|
2
|
+
/**
|
|
3
|
+
* 可投影的 Codex 事件结构。
|
|
4
|
+
*/
|
|
5
|
+
export type ProjectableCodexEvent = {
|
|
6
|
+
method: string;
|
|
7
|
+
params: unknown;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* 投影输入参数。
|
|
11
|
+
*/
|
|
12
|
+
export type ProjectCodexEventInput = {
|
|
13
|
+
threadId: string;
|
|
14
|
+
event: ProjectableCodexEvent;
|
|
15
|
+
nowMs: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* 投影输出:可选消息更新(已移除 chunk/raw 存储)。
|
|
19
|
+
*/
|
|
20
|
+
export type ProjectCodexEventOutput = {
|
|
21
|
+
message?: UpsertMessageInput;
|
|
22
|
+
messages?: UpsertMessageInput[];
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* 将 Codex 事件投影为结构化消息与增量片段。
|
|
26
|
+
*/
|
|
27
|
+
export declare function projectCodexEvent(input: ProjectCodexEventInput): ProjectCodexEventOutput;
|