@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.
Files changed (204) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +228 -0
  3. package/README.zh-CN.md +228 -0
  4. package/package.json +38 -0
  5. package/server/dist/admin/userAdminRoutes.d.ts +7 -0
  6. package/server/dist/admin/userAdminRoutes.js +91 -0
  7. package/server/dist/admin/userAdminRoutes.js.map +1 -0
  8. package/server/dist/app.d.ts +22 -0
  9. package/server/dist/app.js +993 -0
  10. package/server/dist/app.js.map +1 -0
  11. package/server/dist/auth/adminInit.d.ts +41 -0
  12. package/server/dist/auth/adminInit.js +126 -0
  13. package/server/dist/auth/adminInit.js.map +1 -0
  14. package/server/dist/auth/bootstrapAdmin.d.ts +6 -0
  15. package/server/dist/auth/bootstrapAdmin.js +11 -0
  16. package/server/dist/auth/bootstrapAdmin.js.map +1 -0
  17. package/server/dist/auth/httpAuth.d.ts +16 -0
  18. package/server/dist/auth/httpAuth.js +31 -0
  19. package/server/dist/auth/httpAuth.js.map +1 -0
  20. package/server/dist/auth/password.d.ts +2 -0
  21. package/server/dist/auth/password.js +68 -0
  22. package/server/dist/auth/password.js.map +1 -0
  23. package/server/dist/auth/requireAdmin.d.ts +2 -0
  24. package/server/dist/auth/requireAdmin.js +14 -0
  25. package/server/dist/auth/requireAdmin.js.map +1 -0
  26. package/server/dist/auth/roles.d.ts +3 -0
  27. package/server/dist/auth/roles.js +13 -0
  28. package/server/dist/auth/roles.js.map +1 -0
  29. package/server/dist/auth/session.d.ts +24 -0
  30. package/server/dist/auth/session.js +127 -0
  31. package/server/dist/auth/session.js.map +1 -0
  32. package/server/dist/auth/sqlite/authDb.d.ts +18 -0
  33. package/server/dist/auth/sqlite/authDb.js +26 -0
  34. package/server/dist/auth/sqlite/authDb.js.map +1 -0
  35. package/server/dist/auth/sqlite/legacyImport.d.ts +22 -0
  36. package/server/dist/auth/sqlite/legacyImport.js +208 -0
  37. package/server/dist/auth/sqlite/legacyImport.js.map +1 -0
  38. package/server/dist/auth/sqlite/schema.d.ts +11 -0
  39. package/server/dist/auth/sqlite/schema.js +47 -0
  40. package/server/dist/auth/sqlite/schema.js.map +1 -0
  41. package/server/dist/auth/sqlite/sqliteUserStore.d.ts +12 -0
  42. package/server/dist/auth/sqlite/sqliteUserStore.js +194 -0
  43. package/server/dist/auth/sqlite/sqliteUserStore.js.map +1 -0
  44. package/server/dist/auth/userStore.d.ts +19 -0
  45. package/server/dist/auth/userStore.js +26 -0
  46. package/server/dist/auth/userStore.js.map +1 -0
  47. package/server/dist/auth/userTypes.d.ts +13 -0
  48. package/server/dist/auth/userTypes.js +3 -0
  49. package/server/dist/auth/userTypes.js.map +1 -0
  50. package/server/dist/chat/attachmentPathRedaction.d.ts +5 -0
  51. package/server/dist/chat/attachmentPathRedaction.js +67 -0
  52. package/server/dist/chat/attachmentPathRedaction.js.map +1 -0
  53. package/server/dist/chat/chatItemEnricher.d.ts +5 -0
  54. package/server/dist/chat/chatItemEnricher.js +40 -0
  55. package/server/dist/chat/chatItemEnricher.js.map +1 -0
  56. package/server/dist/chat/codexEventProjector.d.ts +33 -0
  57. package/server/dist/chat/codexEventProjector.js +482 -0
  58. package/server/dist/chat/codexEventProjector.js.map +1 -0
  59. package/server/dist/chat/contextUsageProjector.d.ts +10 -0
  60. package/server/dist/chat/contextUsageProjector.js +472 -0
  61. package/server/dist/chat/contextUsageProjector.js.map +1 -0
  62. package/server/dist/chat/fileChangeExtractor.d.ts +5 -0
  63. package/server/dist/chat/fileChangeExtractor.js +121 -0
  64. package/server/dist/chat/fileChangeExtractor.js.map +1 -0
  65. package/server/dist/chat/markdown/markdownAst.d.ts +5 -0
  66. package/server/dist/chat/markdown/markdownAst.js +154 -0
  67. package/server/dist/chat/markdown/markdownAst.js.map +1 -0
  68. package/server/dist/chat/systemToolCallSummary.d.ts +10 -0
  69. package/server/dist/chat/systemToolCallSummary.js +112 -0
  70. package/server/dist/chat/systemToolCallSummary.js.map +1 -0
  71. package/server/dist/chat/terminal/terminalPlainText.d.ts +14 -0
  72. package/server/dist/chat/terminal/terminalPlainText.js +139 -0
  73. package/server/dist/chat/terminal/terminalPlainText.js.map +1 -0
  74. package/server/dist/chat/textMetrics.d.ts +9 -0
  75. package/server/dist/chat/textMetrics.js +24 -0
  76. package/server/dist/chat/textMetrics.js.map +1 -0
  77. package/server/dist/chat/threadTurnsProjector.d.ts +12 -0
  78. package/server/dist/chat/threadTurnsProjector.js +292 -0
  79. package/server/dist/chat/threadTurnsProjector.js.map +1 -0
  80. package/server/dist/chat/todoPlanProjector.d.ts +8 -0
  81. package/server/dist/chat/todoPlanProjector.js +94 -0
  82. package/server/dist/chat/todoPlanProjector.js.map +1 -0
  83. package/server/dist/chat/todoPlanTypes.d.ts +21 -0
  84. package/server/dist/chat/todoPlanTypes.js +3 -0
  85. package/server/dist/chat/todoPlanTypes.js.map +1 -0
  86. package/server/dist/chat/types.d.ts +138 -0
  87. package/server/dist/chat/types.js +3 -0
  88. package/server/dist/chat/types.js.map +1 -0
  89. package/server/dist/cli/configArg.d.ts +21 -0
  90. package/server/dist/cli/configArg.js +70 -0
  91. package/server/dist/cli/configArg.js.map +1 -0
  92. package/server/dist/codex/appServerProcess.d.ts +24 -0
  93. package/server/dist/codex/appServerProcess.js +56 -0
  94. package/server/dist/codex/appServerProcess.js.map +1 -0
  95. package/server/dist/codex/cliArgs.d.ts +17 -0
  96. package/server/dist/codex/cliArgs.js +34 -0
  97. package/server/dist/codex/cliArgs.js.map +1 -0
  98. package/server/dist/codex/codexAppServer.d.ts +103 -0
  99. package/server/dist/codex/codexAppServer.js +206 -0
  100. package/server/dist/codex/codexAppServer.js.map +1 -0
  101. package/server/dist/codex/jsonl.d.ts +4 -0
  102. package/server/dist/codex/jsonl.js +23 -0
  103. package/server/dist/codex/jsonl.js.map +1 -0
  104. package/server/dist/codex/jsonrpc.d.ts +43 -0
  105. package/server/dist/codex/jsonrpc.js +96 -0
  106. package/server/dist/codex/jsonrpc.js.map +1 -0
  107. package/server/dist/config/serverConfig.d.ts +150 -0
  108. package/server/dist/config/serverConfig.js +64 -0
  109. package/server/dist/config/serverConfig.js.map +1 -0
  110. package/server/dist/env.d.ts +101 -0
  111. package/server/dist/env.js +523 -0
  112. package/server/dist/env.js.map +1 -0
  113. package/server/dist/history/http/historyRoutes.d.ts +18 -0
  114. package/server/dist/history/http/historyRoutes.js +67 -0
  115. package/server/dist/history/http/historyRoutes.js.map +1 -0
  116. package/server/dist/history/index.d.ts +24 -0
  117. package/server/dist/history/index.js +30 -0
  118. package/server/dist/history/index.js.map +1 -0
  119. package/server/dist/history/ingest/historyIngestService.d.ts +15 -0
  120. package/server/dist/history/ingest/historyIngestService.js +42 -0
  121. package/server/dist/history/ingest/historyIngestService.js.map +1 -0
  122. package/server/dist/history/projector/extractIds.d.ts +36 -0
  123. package/server/dist/history/projector/extractIds.js +111 -0
  124. package/server/dist/history/projector/extractIds.js.map +1 -0
  125. package/server/dist/history/projector/projectCodexEvent.d.ts +27 -0
  126. package/server/dist/history/projector/projectCodexEvent.js +845 -0
  127. package/server/dist/history/projector/projectCodexEvent.js.map +1 -0
  128. package/server/dist/history/query/historyQueryService.d.ts +34 -0
  129. package/server/dist/history/query/historyQueryService.js +170 -0
  130. package/server/dist/history/query/historyQueryService.js.map +1 -0
  131. package/server/dist/history/sqlite/schema.d.ts +11 -0
  132. package/server/dist/history/sqlite/schema.js +34 -0
  133. package/server/dist/history/sqlite/schema.js.map +1 -0
  134. package/server/dist/history/sqlite/sqliteHistoryStore.d.ts +69 -0
  135. package/server/dist/history/sqlite/sqliteHistoryStore.js +206 -0
  136. package/server/dist/history/sqlite/sqliteHistoryStore.js.map +1 -0
  137. package/server/dist/history/types.d.ts +29 -0
  138. package/server/dist/history/types.js +3 -0
  139. package/server/dist/history/types.js.map +1 -0
  140. package/server/dist/index.d.ts +1 -0
  141. package/server/dist/index.js +166 -0
  142. package/server/dist/index.js.map +1 -0
  143. package/server/dist/security/executionPolicy.d.ts +33 -0
  144. package/server/dist/security/executionPolicy.js +72 -0
  145. package/server/dist/security/executionPolicy.js.map +1 -0
  146. package/server/dist/security/origin.d.ts +11 -0
  147. package/server/dist/security/origin.js +40 -0
  148. package/server/dist/security/origin.js.map +1 -0
  149. package/server/dist/settings/sqliteUserSettingsStore.d.ts +12 -0
  150. package/server/dist/settings/sqliteUserSettingsStore.js +62 -0
  151. package/server/dist/settings/sqliteUserSettingsStore.js.map +1 -0
  152. package/server/dist/settings/userSettingsRoutes.d.ts +8 -0
  153. package/server/dist/settings/userSettingsRoutes.js +55 -0
  154. package/server/dist/settings/userSettingsRoutes.js.map +1 -0
  155. package/server/dist/settings/userSettingsStore.d.ts +19 -0
  156. package/server/dist/settings/userSettingsStore.js +26 -0
  157. package/server/dist/settings/userSettingsStore.js.map +1 -0
  158. package/server/dist/settings/userSettingsTypes.d.ts +70 -0
  159. package/server/dist/settings/userSettingsTypes.js +196 -0
  160. package/server/dist/settings/userSettingsTypes.js.map +1 -0
  161. package/server/dist/status/codexTaskTracker.d.ts +21 -0
  162. package/server/dist/status/codexTaskTracker.js +123 -0
  163. package/server/dist/status/codexTaskTracker.js.map +1 -0
  164. package/server/dist/status/threadContextUsage.d.ts +19 -0
  165. package/server/dist/status/threadContextUsage.js +229 -0
  166. package/server/dist/status/threadContextUsage.js.map +1 -0
  167. package/server/dist/threadList/threadListServerCache.d.ts +10 -0
  168. package/server/dist/threadList/threadListServerCache.js +42 -0
  169. package/server/dist/threadList/threadListServerCache.js.map +1 -0
  170. package/server/dist/tools/cwdSuggest.d.ts +11 -0
  171. package/server/dist/tools/cwdSuggest.js +128 -0
  172. package/server/dist/tools/cwdSuggest.js.map +1 -0
  173. package/server/dist/workspace/accessControl.d.ts +16 -0
  174. package/server/dist/workspace/accessControl.js +82 -0
  175. package/server/dist/workspace/accessControl.js.map +1 -0
  176. package/server/dist/workspace/sqliteUserWorkspaceStore.d.ts +12 -0
  177. package/server/dist/workspace/sqliteUserWorkspaceStore.js +82 -0
  178. package/server/dist/workspace/sqliteUserWorkspaceStore.js.map +1 -0
  179. package/server/dist/workspace/threadAccess.d.ts +19 -0
  180. package/server/dist/workspace/threadAccess.js +22 -0
  181. package/server/dist/workspace/threadAccess.js.map +1 -0
  182. package/server/dist/workspace/threadListVisibility.d.ts +25 -0
  183. package/server/dist/workspace/threadListVisibility.js +104 -0
  184. package/server/dist/workspace/threadListVisibility.js.map +1 -0
  185. package/server/dist/workspace/userWorkspaceRoutes.d.ts +7 -0
  186. package/server/dist/workspace/userWorkspaceRoutes.js +124 -0
  187. package/server/dist/workspace/userWorkspaceRoutes.js.map +1 -0
  188. package/server/dist/workspace/userWorkspaceStore.d.ts +12 -0
  189. package/server/dist/workspace/userWorkspaceStore.js +23 -0
  190. package/server/dist/workspace/userWorkspaceStore.js.map +1 -0
  191. package/server/dist/ws/socketIoBridge.d.ts +32 -0
  192. package/server/dist/ws/socketIoBridge.js +194 -0
  193. package/server/dist/ws/socketIoBridge.js.map +1 -0
  194. package/server/dist/ws/types.d.ts +113 -0
  195. package/server/dist/ws/types.js +3 -0
  196. package/server/dist/ws/types.js.map +1 -0
  197. package/server/dist/ws/wsHub.d.ts +119 -0
  198. package/server/dist/ws/wsHub.js +1259 -0
  199. package/server/dist/ws/wsHub.js.map +1 -0
  200. package/web/dist/assets/index-CY6cnwQz.js +174 -0
  201. package/web/dist/assets/index-DI7kJHr2.css +32 -0
  202. package/web/dist/favicon-mask.svg +9 -0
  203. package/web/dist/favicon.svg +26 -0
  204. package/web/dist/index.html +75 -0
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseConfigArgFromArgv = parseConfigArgFromArgv;
4
+ exports.applyConfigArgToEnv = applyConfigArgToEnv;
5
+ /**
6
+ * 判断当前参数是否为支持的 config 参数名。
7
+ * Check whether the current arg is a supported config flag name.
8
+ */
9
+ function isConfigFlagName(rawArg) {
10
+ return rawArg === "--config" || rawArg === "---config";
11
+ }
12
+ /**
13
+ * 从 argv 中解析 `--config` / `---config` 参数。
14
+ * Parse `--config` / `---config` from argv.
15
+ */
16
+ function parseConfigArgFromArgv(argv) {
17
+ /**
18
+ * 默认无配置值。
19
+ * Default result means no config value.
20
+ */
21
+ let parsedConfigValue = null;
22
+ for (let currentArgIndex = 0; currentArgIndex < argv.length; currentArgIndex += 1) {
23
+ /**
24
+ * 当前遍历到的参数值。
25
+ * Current argument value.
26
+ */
27
+ const currentArgValue = String(argv[currentArgIndex] ?? "").trim();
28
+ if (!currentArgValue)
29
+ continue;
30
+ // 形式 1:--config=/path/to/config.json 或 ---config=/path/to/config.json
31
+ // Form 1: --config=/path/to/config.json or ---config=/path/to/config.json
32
+ if (currentArgValue.startsWith("--config=") || currentArgValue.startsWith("---config=")) {
33
+ const inlineConfigValue = currentArgValue.slice(currentArgValue.indexOf("=") + 1).trim();
34
+ if (inlineConfigValue) {
35
+ parsedConfigValue = inlineConfigValue;
36
+ continue;
37
+ }
38
+ // 兼容 `--config= ./config.json` / `---config= ./config.json` 写法。
39
+ // Support `--config= ./config.json` / `---config= ./config.json`.
40
+ const nextArgValue = String(argv[currentArgIndex + 1] ?? "").trim();
41
+ if (nextArgValue)
42
+ parsedConfigValue = nextArgValue;
43
+ continue;
44
+ }
45
+ // 形式 2:--config /path/to/config.json 或 ---config /path/to/config.json
46
+ // Form 2: --config /path/to/config.json or ---config /path/to/config.json
47
+ if (isConfigFlagName(currentArgValue)) {
48
+ const nextArgValue = String(argv[currentArgIndex + 1] ?? "").trim();
49
+ if (nextArgValue)
50
+ parsedConfigValue = nextArgValue;
51
+ continue;
52
+ }
53
+ }
54
+ return { configValue: parsedConfigValue };
55
+ }
56
+ /**
57
+ * 将 argv 中的 config 参数同步到环境变量 `CODEX_CONFIG`。
58
+ * Sync parsed config arg into env var `CODEX_CONFIG`.
59
+ */
60
+ function applyConfigArgToEnv(argv, env = process.env) {
61
+ /**
62
+ * 解析出的 config 值。
63
+ * Parsed config value.
64
+ */
65
+ const parsedConfigArgResult = parseConfigArgFromArgv(argv);
66
+ if (!parsedConfigArgResult.configValue)
67
+ return;
68
+ env.CODEX_CONFIG = parsedConfigArgResult.configValue;
69
+ }
70
+ //# sourceMappingURL=configArg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configArg.js","sourceRoot":"","sources":["../../src/cli/configArg.ts"],"names":[],"mappings":";;AAwBA,wDA0CC;AAMD,kDASC;AArED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,WAAW,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,IAAc;IACnD;;;OAGG;IACH,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAE5C,KAAK,IAAI,eAAe,GAAG,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,EAAE,CAAC;QAClF;;;WAGG;QACH,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,CAAC,eAAe;YAAE,SAAS;QAE/B,sEAAsE;QACtE,0EAA0E;QAC1E,IAAI,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACxF,MAAM,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,iBAAiB,GAAG,iBAAiB,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,gEAAgE;YAChE,kEAAkE;YAClE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACpE,IAAI,YAAY;gBAAE,iBAAiB,GAAG,YAAY,CAAC;YACnD,SAAS;QACX,CAAC;QAED,sEAAsE;QACtE,0EAA0E;QAC1E,IAAI,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACpE,IAAI,YAAY;gBAAE,iBAAiB,GAAG,YAAY,CAAC;YACnD,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAc,EAAE,MAAyB,OAAO,CAAC,GAAG;IACtF;;;OAGG;IACH,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAE3D,IAAI,CAAC,qBAAqB,CAAC,WAAW;QAAE,OAAO;IAC/C,GAAG,CAAC,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC;AACvD,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type ChildProcessWithoutNullStreams } from "child_process";
2
+ import { EventEmitter } from "events";
3
+ import { type CodexHistoryPersistence } from "./cliArgs";
4
+ type AppServerProcessEvents = {
5
+ message: (msg: unknown) => void;
6
+ stderr: (line: string) => void;
7
+ exit: (code: number | null, signal: NodeJS.Signals | null) => void;
8
+ };
9
+ export declare class AppServerProcess extends EventEmitter {
10
+ readonly child: ChildProcessWithoutNullStreams;
11
+ private readonly decoder;
12
+ constructor(opts: {
13
+ codexBin: string;
14
+ args?: string[];
15
+ cwd: string;
16
+ env?: NodeJS.ProcessEnv;
17
+ historyPersistence?: CodexHistoryPersistence | null;
18
+ disableResponseStorage?: boolean | null;
19
+ });
20
+ send(message: unknown): void;
21
+ dispose(): void;
22
+ on<E extends keyof AppServerProcessEvents>(event: E, listener: AppServerProcessEvents[E]): this;
23
+ }
24
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppServerProcess = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const events_1 = require("events");
6
+ const jsonl_1 = require("./jsonl");
7
+ const cliArgs_1 = require("./cliArgs");
8
+ class AppServerProcess extends events_1.EventEmitter {
9
+ child;
10
+ decoder = new jsonl_1.JsonlDecoder();
11
+ constructor(opts) {
12
+ super();
13
+ const args = (0, cliArgs_1.buildCodexLaunchArgs)({
14
+ baseArgs: opts.args,
15
+ historyPersistence: opts.historyPersistence,
16
+ disableResponseStorage: opts.disableResponseStorage,
17
+ });
18
+ this.child = (0, child_process_1.spawn)(opts.codexBin, args, {
19
+ cwd: opts.cwd,
20
+ env: { ...process.env, ...opts.env },
21
+ stdio: "pipe",
22
+ });
23
+ this.child.stdout.on("data", (chunk) => {
24
+ let messages = [];
25
+ try {
26
+ messages = this.decoder.push(chunk);
27
+ }
28
+ catch (err) {
29
+ this.emit("stderr", `[codex app-server stdout parse error] ${String(err)}`);
30
+ return;
31
+ }
32
+ for (const msg of messages)
33
+ this.emit("message", msg);
34
+ });
35
+ this.child.stderr.on("data", (chunk) => {
36
+ this.emit("stderr", chunk.toString("utf8"));
37
+ });
38
+ this.child.on("error", (err) => {
39
+ this.emit("stderr", `[codex app-server error] ${String(err)}`);
40
+ });
41
+ this.child.on("exit", (code, signal) => {
42
+ this.emit("exit", code, signal);
43
+ });
44
+ }
45
+ send(message) {
46
+ this.child.stdin.write(`${JSON.stringify(message)}\n`);
47
+ }
48
+ dispose() {
49
+ this.child.kill();
50
+ }
51
+ on(event, listener) {
52
+ return super.on(event, listener);
53
+ }
54
+ }
55
+ exports.AppServerProcess = AppServerProcess;
56
+ //# sourceMappingURL=appServerProcess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appServerProcess.js","sourceRoot":"","sources":["../../src/codex/appServerProcess.ts"],"names":[],"mappings":";;;AAAA,iDAA2E;AAC3E,mCAAsC;AACtC,mCAAuC;AACvC,uCAA+E;AAQ/E,MAAa,gBAAiB,SAAQ,qBAAY;IACvC,KAAK,CAAiC;IAC9B,OAAO,GAAG,IAAI,oBAAY,EAAE,CAAC;IAE9C,YAAY,IAOX;QACC,KAAK,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,IAAA,8BAAoB,EAAC;YAChC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,IAAA,qBAAK,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;YACpC,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC7C,IAAI,QAAQ,GAAc,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yCAAyC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5E,OAAO;YACT,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,QAAQ;gBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAgB;QACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEQ,EAAE,CAAyC,KAAQ,EAAE,QAAmC;QAC/F,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF;AA5DD,4CA4DC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Codex 历史持久化策略。
3
+ */
4
+ export type CodexHistoryPersistence = "none" | "save-all" | "resume-based";
5
+ /**
6
+ * 构建 Codex 启动参数时可选的覆盖项。
7
+ */
8
+ export type CodexLaunchArgOverrides = {
9
+ historyPersistence?: CodexHistoryPersistence | null;
10
+ disableResponseStorage?: boolean | null;
11
+ baseArgs?: string[];
12
+ };
13
+ /**
14
+ * 按 Codex CLI 约定构建最终启动参数。
15
+ * 注意:全局 `-c` 参数必须位于子命令(如 `app-server`)之前。
16
+ */
17
+ export declare function buildCodexLaunchArgs(overrides: CodexLaunchArgOverrides): string[];
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCodexLaunchArgs = buildCodexLaunchArgs;
4
+ /**
5
+ * 默认 app-server 启动参数。
6
+ */
7
+ const DEFAULT_APP_SERVER_ARGS = ["app-server", "--listen", "stdio://"];
8
+ /**
9
+ * 将字符串转成 TOML 双引号字符串字面量。
10
+ */
11
+ function toTomlStringLiteral(value) {
12
+ const escapedBackslash = value.replace(/\\/g, "\\\\");
13
+ const escapedQuote = escapedBackslash.replace(/"/g, "\\\"");
14
+ return `"${escapedQuote}"`;
15
+ }
16
+ /**
17
+ * 按 Codex CLI 约定构建最终启动参数。
18
+ * 注意:全局 `-c` 参数必须位于子命令(如 `app-server`)之前。
19
+ */
20
+ function buildCodexLaunchArgs(overrides) {
21
+ const args = [];
22
+ const historyPersistence = overrides.historyPersistence;
23
+ const disableResponseStorage = overrides.disableResponseStorage;
24
+ const baseArgs = overrides.baseArgs ?? DEFAULT_APP_SERVER_ARGS;
25
+ if (historyPersistence !== undefined && historyPersistence !== null) {
26
+ args.push("-c", `history.persistence=${toTomlStringLiteral(historyPersistence)}`);
27
+ }
28
+ if (disableResponseStorage !== undefined && disableResponseStorage !== null) {
29
+ args.push("-c", `disable_response_storage=${String(disableResponseStorage)}`);
30
+ }
31
+ args.push(...baseArgs);
32
+ return args;
33
+ }
34
+ //# sourceMappingURL=cliArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliArgs.js","sourceRoot":"","sources":["../../src/codex/cliArgs.ts"],"names":[],"mappings":";;AAgCA,oDAeC;AAjCD;;GAEG;AACH,MAAM,uBAAuB,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAEvE;;GAEG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,IAAI,YAAY,GAAG,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,SAAkC;IACrE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACxD,MAAM,sBAAsB,GAAG,SAAS,CAAC,sBAAsB,CAAC;IAChE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,uBAAuB,CAAC;IAE/D,IAAI,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,sBAAsB,KAAK,SAAS,IAAI,sBAAsB,KAAK,IAAI,EAAE,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,103 @@
1
+ import type { CodexHistoryPersistence } from "./cliArgs";
2
+ import type { JsonRpcId, ServerRequest } from "./jsonrpc";
3
+ type ThreadSummary = {
4
+ id: string;
5
+ preview: string;
6
+ createdAt: number;
7
+ updatedAt: number;
8
+ cwd: string;
9
+ modelProvider: string;
10
+ };
11
+ export type CodexAppServerNotification = {
12
+ method: string;
13
+ params: unknown;
14
+ };
15
+ export type CodexAppServerStatus = {
16
+ pid: number | null;
17
+ running: boolean;
18
+ ready: boolean;
19
+ readyState: "starting" | "ready" | "error";
20
+ readyError?: string;
21
+ lastExit?: {
22
+ code: number | null;
23
+ signal: NodeJS.Signals | null;
24
+ };
25
+ };
26
+ export declare class CodexAppServer {
27
+ private readonly proc;
28
+ private readonly rpc;
29
+ private readonly ready;
30
+ private readyState;
31
+ private readyError;
32
+ private lastExit;
33
+ constructor(opts: {
34
+ codexBin: string;
35
+ cwd: string;
36
+ historyPersistence?: CodexHistoryPersistence | null;
37
+ disableResponseStorage?: boolean | null;
38
+ });
39
+ onNotification(handler: (n: CodexAppServerNotification) => void): () => void;
40
+ onServerRequest(handler: (req: ServerRequest) => Promise<unknown> | unknown): void;
41
+ listThreads(limit?: number): Promise<ThreadSummary[]>;
42
+ startThread(params: {
43
+ cwd: string;
44
+ approvalPolicy: "untrusted" | "on-failure" | "on-request" | "never";
45
+ sandbox: "read-only" | "workspace-write" | "danger-full-access";
46
+ model?: string;
47
+ }): Promise<any>;
48
+ resumeThread(threadId: string): Promise<any>;
49
+ readThread(threadId: string, includeTurns: boolean): Promise<any>;
50
+ startTurn(threadId: string, text: string, opts?: {
51
+ model?: string;
52
+ effort?: string;
53
+ approvalPolicy?: "untrusted" | "on-failure" | "on-request" | "never";
54
+ sandbox?: "read-only" | "workspace-write" | "danger-full-access";
55
+ collaborationMode?: unknown;
56
+ }): Promise<any>;
57
+ interruptTurn(threadId: string, turnId: string): Promise<any>;
58
+ respond(id: JsonRpcId, result: unknown): void;
59
+ getStatus(): CodexAppServerStatus;
60
+ dispose(): void;
61
+ listModels(): Promise<any>;
62
+ listExperimentalFeatures(): Promise<any>;
63
+ listCollaborationModes(): Promise<any>;
64
+ setConfigValue(params: {
65
+ keyPath: string;
66
+ value: unknown;
67
+ mergeStrategy: "replace";
68
+ }): Promise<any>;
69
+ listSkills(): Promise<any>;
70
+ setSkillEnabled(params: {
71
+ path: string;
72
+ enabled: boolean;
73
+ }): Promise<any>;
74
+ setThreadName(params: {
75
+ threadId: string;
76
+ name: string;
77
+ }): Promise<any>;
78
+ startReview(params: {
79
+ threadId: string;
80
+ target: unknown;
81
+ }): Promise<any>;
82
+ startCompact(params: {
83
+ threadId: string;
84
+ }): Promise<any>;
85
+ forkThread(params: {
86
+ threadId: string;
87
+ }): Promise<any>;
88
+ archiveThread(params: {
89
+ threadId: string;
90
+ }): Promise<any>;
91
+ unarchiveThread(params: {
92
+ threadId: string;
93
+ }): Promise<any>;
94
+ rollbackThread(params: {
95
+ threadId: string;
96
+ numTurns: number;
97
+ }): Promise<any>;
98
+ cleanBackgroundTerminals(params: {
99
+ threadId: string;
100
+ }): Promise<any>;
101
+ private initialize;
102
+ }
103
+ export {};
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodexAppServer = void 0;
4
+ const appServerProcess_1 = require("./appServerProcess");
5
+ const jsonrpc_1 = require("./jsonrpc");
6
+ class CodexAppServer {
7
+ proc;
8
+ rpc;
9
+ ready;
10
+ readyState = "starting";
11
+ readyError = null;
12
+ lastExit = null;
13
+ constructor(opts) {
14
+ this.proc = new appServerProcess_1.AppServerProcess({
15
+ codexBin: opts.codexBin,
16
+ cwd: opts.cwd,
17
+ historyPersistence: opts.historyPersistence,
18
+ disableResponseStorage: opts.disableResponseStorage,
19
+ });
20
+ this.rpc = new jsonrpc_1.JsonRpcClient({ send: (m) => this.proc.send(m) }, { idPrefix: "web-" });
21
+ this.proc.on("message", (msg) => void this.rpc.handleMessage(msg));
22
+ this.proc.on("stderr", (line) => {
23
+ // eslint-disable-next-line no-console
24
+ console.warn(String(line).trimEnd());
25
+ });
26
+ this.proc.on("exit", (code, signal) => {
27
+ this.lastExit = { code, signal };
28
+ // eslint-disable-next-line no-console
29
+ console.error(`codex app-server exited (code=${code}, signal=${signal})`);
30
+ });
31
+ this.ready = this.initialize()
32
+ .then(() => {
33
+ this.readyState = "ready";
34
+ })
35
+ .catch((err) => {
36
+ this.readyState = "error";
37
+ this.readyError = String(err);
38
+ // eslint-disable-next-line no-console
39
+ console.error(`Failed to initialize codex app-server: ${String(err)}`);
40
+ throw err;
41
+ });
42
+ }
43
+ onNotification(handler) {
44
+ return this.rpc.onNotification((method, params) => handler({ method, params }));
45
+ }
46
+ onServerRequest(handler) {
47
+ this.rpc.onServerRequest(handler);
48
+ }
49
+ async listThreads(limit = 30) {
50
+ await this.ready;
51
+ const res = (await this.rpc.request("thread/list", { limit }));
52
+ const data = Array.isArray(res?.data) ? res.data : [];
53
+ return data.map((t) => ({
54
+ id: String(t.id),
55
+ preview: String(t.preview ?? ""),
56
+ createdAt: Number(t.createdAt ?? 0),
57
+ updatedAt: Number(t.updatedAt ?? 0),
58
+ cwd: String(t.cwd ?? ""),
59
+ modelProvider: String(t.modelProvider ?? ""),
60
+ }));
61
+ }
62
+ async startThread(params) {
63
+ await this.ready;
64
+ const res = await this.rpc.request("thread/start", {
65
+ cwd: params.cwd,
66
+ approvalPolicy: params.approvalPolicy,
67
+ sandbox: params.sandbox,
68
+ experimentalRawEvents: false,
69
+ persistExtendedHistory: true,
70
+ model: params.model,
71
+ });
72
+ const r = res;
73
+ const thread = r?.thread ?? r;
74
+ if (r?.thread && thread && typeof thread === "object") {
75
+ return {
76
+ ...thread,
77
+ model: r.model,
78
+ approvalPolicy: r.approvalPolicy,
79
+ sandbox: r.sandbox,
80
+ };
81
+ }
82
+ return thread;
83
+ }
84
+ async resumeThread(threadId) {
85
+ await this.ready;
86
+ const res = await this.rpc.request("thread/resume", { threadId, persistExtendedHistory: true });
87
+ return res.thread ?? res;
88
+ }
89
+ async readThread(threadId, includeTurns) {
90
+ await this.ready;
91
+ const res = await this.rpc.request("thread/read", { threadId, includeTurns });
92
+ return res.thread ?? res;
93
+ }
94
+ async startTurn(threadId, text, opts) {
95
+ await this.ready;
96
+ return this.rpc.request("turn/start", {
97
+ threadId,
98
+ input: [{ type: "text", text, text_elements: [] }],
99
+ model: opts?.model,
100
+ effort: opts?.effort,
101
+ approvalPolicy: opts?.approvalPolicy,
102
+ sandboxPolicy: sandboxModeToSandboxPolicy(opts?.sandbox),
103
+ collaborationMode: opts?.collaborationMode,
104
+ });
105
+ }
106
+ async interruptTurn(threadId, turnId) {
107
+ await this.ready;
108
+ return this.rpc.request("turn/interrupt", { threadId, turnId });
109
+ }
110
+ respond(id, result) {
111
+ this.rpc.respond(id, result);
112
+ }
113
+ getStatus() {
114
+ const child = this.proc.child;
115
+ const pid = typeof child.pid === "number" ? child.pid : null;
116
+ const running = pid !== null && child.exitCode === null && !child.killed;
117
+ return {
118
+ pid,
119
+ running,
120
+ ready: this.readyState === "ready",
121
+ readyState: this.readyState,
122
+ readyError: this.readyError ?? undefined,
123
+ lastExit: this.lastExit ?? undefined,
124
+ };
125
+ }
126
+ dispose() {
127
+ this.proc.dispose();
128
+ }
129
+ async listModels() {
130
+ await this.ready;
131
+ return this.rpc.request("model/list", {});
132
+ }
133
+ async listExperimentalFeatures() {
134
+ await this.ready;
135
+ return this.rpc.request("experimentalFeature/list", {});
136
+ }
137
+ async listCollaborationModes() {
138
+ await this.ready;
139
+ return this.rpc.request("collaborationMode/list", {});
140
+ }
141
+ async setConfigValue(params) {
142
+ await this.ready;
143
+ return this.rpc.request("config/value/write", params);
144
+ }
145
+ async listSkills() {
146
+ await this.ready;
147
+ return this.rpc.request("skills/list", {});
148
+ }
149
+ async setSkillEnabled(params) {
150
+ await this.ready;
151
+ return this.rpc.request("skills/config/write", params);
152
+ }
153
+ async setThreadName(params) {
154
+ await this.ready;
155
+ return this.rpc.request("thread/name/set", params);
156
+ }
157
+ async startReview(params) {
158
+ await this.ready;
159
+ return this.rpc.request("review/start", params);
160
+ }
161
+ async startCompact(params) {
162
+ await this.ready;
163
+ return this.rpc.request("thread/compact/start", params);
164
+ }
165
+ async forkThread(params) {
166
+ await this.ready;
167
+ return this.rpc.request("thread/fork", { ...params, persistExtendedHistory: true });
168
+ }
169
+ async archiveThread(params) {
170
+ await this.ready;
171
+ return this.rpc.request("thread/archive", params);
172
+ }
173
+ async unarchiveThread(params) {
174
+ await this.ready;
175
+ return this.rpc.request("thread/unarchive", params);
176
+ }
177
+ async rollbackThread(params) {
178
+ await this.ready;
179
+ return this.rpc.request("thread/rollback", params);
180
+ }
181
+ async cleanBackgroundTerminals(params) {
182
+ await this.ready;
183
+ return this.rpc.request("thread/backgroundTerminals/clean", params);
184
+ }
185
+ async initialize() {
186
+ const params = {
187
+ clientInfo: { name: "codex-cli-web", title: "codex-cli-web", version: "0.0.0" },
188
+ // Required for persistExtendedHistory (Codex app-server will reject
189
+ // persistFullHistory/persistExtendedHistory requests without this).
190
+ capabilities: { experimentalApi: true },
191
+ };
192
+ await this.rpc.request("initialize", params);
193
+ this.rpc.notify("initialized");
194
+ }
195
+ }
196
+ exports.CodexAppServer = CodexAppServer;
197
+ function sandboxModeToSandboxPolicy(mode) {
198
+ if (mode === "read-only")
199
+ return { type: "readOnly" };
200
+ if (mode === "workspace-write")
201
+ return { type: "workspaceWrite" };
202
+ if (mode === "danger-full-access")
203
+ return { type: "dangerFullAccess" };
204
+ return null;
205
+ }
206
+ //# sourceMappingURL=codexAppServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexAppServer.js","sourceRoot":"","sources":["../../src/codex/codexAppServer.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAGtD,uCAA0C;AAsB1C,MAAa,cAAc;IACR,IAAI,CAAmB;IACvB,GAAG,CAAgB;IACnB,KAAK,CAAgB;IAC9B,UAAU,GAAuC,UAAU,CAAC;IAC5D,UAAU,GAAkB,IAAI,CAAC;IACjC,QAAQ,GAA4C,IAAI,CAAC;IAEjE,YAAY,IAKX;QACC,IAAI,CAAC,IAAI,GAAG,IAAI,mCAAgB,CAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,uBAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvF,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9B,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACjC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,YAAY,MAAM,GAAG,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;aAC3B,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC5B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,0CAA0C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC;IAED,cAAc,CAAC,OAAgD;QAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,eAAe,CAAC,OAA2D;QACzE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE;QAC1B,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAQ,CAAC;QACtE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAChC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;YACnC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;YACnC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACxB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAKjB;QACC,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE;YACjD,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,qBAAqB,EAAE,KAAK;YAC5B,sBAAsB,EAAE,IAAI;YAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,GAAU,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtD,OAAO;gBACL,GAAI,MAAc;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;QAChG,OAAQ,GAAW,CAAC,MAAM,IAAI,GAAG,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,YAAqB;QACtD,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAC9E,OAAQ,GAAW,CAAC,MAAM,IAAI,GAAG,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,IAAY,EACZ,IAMC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE;YACpC,QAAQ;YACR,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;YAClD,KAAK,EAAE,IAAI,EAAE,KAAK;YAClB,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,cAAc,EAAE,IAAI,EAAE,cAAc;YACpC,aAAa,EAAE,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC;YACxD,iBAAiB,EAAE,IAAI,EAAE,iBAAiB;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,MAAc;QAClD,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,EAAa,EAAE,MAAe;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACzE,OAAO;YACL,GAAG;YACH,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,UAAU,KAAK,OAAO;YAClC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS;SACrC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAqE;QACxF,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA0C;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA0C;QAC5D,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAA6C;QAC7D,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA4B;QAC7C,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAA4B;QAC3C,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,GAAG,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA4B;QAC9C,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA4B;QAChD,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAA8C;QACjE,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,MAA4B;QACzD,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,MAAM,GAAG;YACb,UAAU,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE;YAC/E,oEAAoE;YACpE,oEAAoE;YACpE,YAAY,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;SACxC,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;CACF;AA9OD,wCA8OC;AAED,SAAS,0BAA0B,CAAC,IAAwB;IAC1D,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACtD,IAAI,IAAI,KAAK,iBAAiB;QAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAClE,IAAI,IAAI,KAAK,oBAAoB;QAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IACvE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare class JsonlDecoder {
2
+ private buffer;
3
+ push(chunk: string | Buffer): unknown[];
4
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonlDecoder = void 0;
4
+ class JsonlDecoder {
5
+ buffer = "";
6
+ push(chunk) {
7
+ this.buffer += typeof chunk === "string" ? chunk : chunk.toString("utf8");
8
+ const out = [];
9
+ while (true) {
10
+ const newlineIndex = this.buffer.indexOf("\n");
11
+ if (newlineIndex === -1)
12
+ break;
13
+ const line = this.buffer.slice(0, newlineIndex);
14
+ this.buffer = this.buffer.slice(newlineIndex + 1);
15
+ if (!line.trim())
16
+ continue;
17
+ out.push(JSON.parse(line));
18
+ }
19
+ return out;
20
+ }
21
+ }
22
+ exports.JsonlDecoder = JsonlDecoder;
23
+ //# sourceMappingURL=jsonl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../src/codex/jsonl.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IACf,MAAM,GAAG,EAAE,CAAC;IAEpB,IAAI,CAAC,KAAsB;QACzB,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,GAAG,GAAc,EAAE,CAAC;QAC1B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,YAAY,KAAK,CAAC,CAAC;gBAAE,MAAM;YAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YAElD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAnBD,oCAmBC"}
@@ -0,0 +1,43 @@
1
+ export type JsonRpcId = string | number;
2
+ export type JsonRpcError = {
3
+ code: number;
4
+ message: string;
5
+ data?: unknown;
6
+ };
7
+ export type JsonRpcResponse = {
8
+ jsonrpc: "2.0";
9
+ id: JsonRpcId;
10
+ result?: unknown;
11
+ error?: JsonRpcError;
12
+ };
13
+ export interface JsonRpcTransport {
14
+ send(message: unknown): void;
15
+ }
16
+ export type ServerRequest = {
17
+ id: JsonRpcId;
18
+ method: string;
19
+ params: unknown;
20
+ };
21
+ type NotificationHandler = (method: string, params: unknown) => void;
22
+ type ServerRequestHandler = (req: ServerRequest) => Promise<unknown> | unknown;
23
+ export declare class JsonRpcClient {
24
+ private readonly transport;
25
+ private readonly opts;
26
+ private idCounter;
27
+ private pendingRequests;
28
+ private notificationHandlers;
29
+ private serverRequestHandler;
30
+ constructor(transport: JsonRpcTransport, opts?: {
31
+ timeoutMs?: number;
32
+ idPrefix?: string;
33
+ });
34
+ onNotification(handler: NotificationHandler): () => void;
35
+ onServerRequest(handler: ServerRequestHandler): void;
36
+ request<T = unknown>(method: string, params?: unknown): Promise<T>;
37
+ notify(method: string, params?: unknown): void;
38
+ respond(id: JsonRpcId, result: unknown): void;
39
+ respondError(id: JsonRpcId, error: JsonRpcError): void;
40
+ handleMessage(message: unknown): Promise<void>;
41
+ private nextId;
42
+ }
43
+ export {};