botmux 2.41.0 → 2.42.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/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/adapters/cli/codex-app.d.ts +4 -0
- package/dist/adapters/cli/codex-app.d.ts.map +1 -0
- package/dist/adapters/cli/codex-app.js +72 -0
- package/dist/adapters/cli/codex-app.js.map +1 -0
- package/dist/adapters/cli/registry.d.ts +2 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +3 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +1 -1
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.d.ts +3 -0
- package/dist/codex-app-runner.d.ts.map +1 -0
- package/dist/codex-app-runner.js +488 -0
- package/dist/codex-app-runner.js.map +1 -0
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +1 -0
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/workflows.js +1 -1
- package/dist/dashboard/web/workflows.js.map +1 -1
- package/dist/dashboard-web/app.js +2 -2
- package/dist/dashboard-web/style.css +2 -0
- package/dist/i18n/en.js +1 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.js +1 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +1 -0
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/services/codex-bridge-queue.d.ts +1 -0
- package/dist/services/codex-bridge-queue.d.ts.map +1 -1
- package/dist/services/codex-bridge-queue.js +4 -0
- package/dist/services/codex-bridge-queue.js.map +1 -1
- package/dist/services/codex-transcript.d.ts +1 -0
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/hermes-transcript.d.ts +7 -0
- package/dist/services/hermes-transcript.d.ts.map +1 -0
- package/dist/services/hermes-transcript.js +117 -0
- package/dist/services/hermes-transcript.js.map +1 -0
- package/dist/services/session-store.js +1 -1
- package/dist/services/session-store.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts +1 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +3 -2
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/worker.js +133 -11
- package/dist/worker.js.map +1 -1
- package/dist/workflows/attempt-resume.d.ts.map +1 -1
- package/dist/workflows/attempt-resume.js +1 -1
- package/dist/workflows/attempt-resume.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-bridge-queue.d.ts","sourceRoot":"","sources":["../../src/services/codex-bridge-queue.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;kEAE8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;2EAGuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;8EAC0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-bridge-queue.d.ts","sourceRoot":"","sources":["../../src/services/codex-bridge-queue.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;kEAE8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;2EAGuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;8EAC0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,iBAAiB,CAAS;IAClC;;8EAE0E;IAC1E,OAAO,CAAC,iBAAiB,CAAK;IAE9B;;6CAEyC;IACzC,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAIxC;;uEAEmE;IACnE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,GAAE,MAAmB,GAAG,IAAI;IAKxE;;;;+DAI2D;IAC3D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAmB,GAAG,IAAI;IAS5E;qDACiD;IACjD,YAAY,IAAI,gBAAgB,EAAE;IAMlC;2DACuD;IACvD,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAkExC,mEAAmE;IACnE,cAAc,IAAI,gBAAgB,EAAE;IAYpC,IAAI,IAAI,MAAM;IAId,qDAAqD;IACrD,IAAI,IAAI,SAAS,gBAAgB,EAAE;CAGpC"}
|
|
@@ -93,6 +93,7 @@ export class CodexBridgeQueue {
|
|
|
93
93
|
}
|
|
94
94
|
if (!tooOld && fingerprintOk) {
|
|
95
95
|
next.started = true;
|
|
96
|
+
next.sourceSessionId = ev.sourceSessionId;
|
|
96
97
|
// Anchor the bridge-fallback suppression window to when the turn
|
|
97
98
|
// ACTUALLY started processing (the transcript user event's
|
|
98
99
|
// timestamp), not when the worker marked it. With type-ahead the
|
|
@@ -127,6 +128,7 @@ export class CodexBridgeQueue {
|
|
|
127
128
|
isLocal: true,
|
|
128
129
|
userText: ev.text,
|
|
129
130
|
markTimeMs: ev.timestampMs,
|
|
131
|
+
sourceSessionId: ev.sourceSessionId,
|
|
130
132
|
};
|
|
131
133
|
const insertAt = this.queue.findIndex(t => !t.started);
|
|
132
134
|
if (insertAt === -1)
|
|
@@ -138,6 +140,8 @@ export class CodexBridgeQueue {
|
|
|
138
140
|
}
|
|
139
141
|
else if (ev.kind === 'assistant_final') {
|
|
140
142
|
if (this.collecting) {
|
|
143
|
+
if (this.collecting.sourceSessionId && ev.sourceSessionId && this.collecting.sourceSessionId !== ev.sourceSessionId)
|
|
144
|
+
continue;
|
|
141
145
|
this.collecting.finalText = ev.text;
|
|
142
146
|
this.collecting = null;
|
|
143
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-bridge-queue.js","sourceRoot":"","sources":["../../src/services/codex-bridge-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-bridge-queue.js","sourceRoot":"","sources":["../../src/services/codex-bridge-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,7 @@ export interface CodexBridgeEvent {
|
|
|
33
33
|
/** Concatenated text from the message's content blocks (input_text for
|
|
34
34
|
* user, output_text for assistant). */
|
|
35
35
|
text: string;
|
|
36
|
+
sourceSessionId?: string;
|
|
36
37
|
}
|
|
37
38
|
/** Extract the last completed user/assistant turn from a Codex / CoCo bridge
|
|
38
39
|
* event sequence. Used by /adopt to surface the previous turn as a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-transcript.d.ts","sourceRoot":"","sources":["../../src/services/codex-transcript.ts"],"names":[],"mappings":"AAkCA;;;;sEAIsE;AACtE,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED;;;;;;;;;qDASqD;AACrD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmCrG;AAUD,MAAM,WAAW,gBAAgB;IAC/B;yEACqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb;;4CAEwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB;;oEAEgE;IAChE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACjC;4CACwC;IACxC,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-transcript.d.ts","sourceRoot":"","sources":["../../src/services/codex-transcript.ts"],"names":[],"mappings":"AAkCA;;;;sEAIsE;AACtE,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED;;;;;;;;;qDASqD;AACrD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmCrG;AAUD,MAAM,WAAW,gBAAgB;IAC/B;yEACqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb;;4CAEwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB;;oEAEgE;IAChE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACjC;4CACwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;6DAS6D;AAC7D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GACpE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAezD;AAED;;;;;;;gEAOgE;AAChE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,gBAAgB,EAAE,EACnC,WAAW,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAAC,IAAI,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAQ3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B;qDACiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB;8DAC0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;oDAGoD;AACpD,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBpF;AAkBD;;mEAEmE;AACnE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAqDpF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-transcript.js","sourceRoot":"","sources":["../../src/services/codex-transcript.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codex-transcript.js","sourceRoot":"","sources":["../../src/services/codex-transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAClE,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC;AAExC;;;;sEAIsE;AACtE,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACxD,MAAM,CAAC,GAAG,oFAAoF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1G,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9B,CAAC;AAED;;;;;;;;;qDASqD;AACrD,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;QAChC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,OAAiB,CAAC;YACtB,IAAI,CAAC;gBAAC,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,SAAS,CAAC;YAAC,CAAC;YACjE,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;gBACzB,IAAI,MAAc,CAAC;gBACnB,IAAI,CAAC;oBAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACnE,MAAM,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,GAAG;oBAAE,OAAO,GAAG,CAAC;YACtB,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,oCAAoC;IACtC,CAAC;IACD,8DAA8D;IAC9D,uDAAuD;IACvD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,QAAQ,CAAC,WAAW,GAAG,MAAM,EAAE;YACnC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,GAAG,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AAC7C,CAAC;AAoBD;;;;;;;;;6DAS6D;AAC7D,MAAM,UAAU,oBAAoB,CAClC,MAAqE;IAErE,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAAC,YAAY,GAAG,CAAC,CAAC;YAAC,MAAM;QAAC,CAAC;IACxE,CAAC;IACD,IAAI,YAAY,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO,GAAG,CAAC,CAAC;YAAC,MAAM;QAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI;QAC9B,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI;KACzC,CAAC;AACJ,CAAC;AAED;;;;;;;gEAOgE;AAChE,MAAM,UAAU,wBAAwB,CACtC,MAAmC,EACnC,WAAmB;IAEnB,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAuB,EAAE,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC,WAAW,GAAG,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAYD;;;oDAGoD;AACpD,MAAM,UAAU,2BAA2B,CAAC,YAAoB;IAC9D,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,SAAS,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,YAAY,QAAQ,CAAC;IACxC,MAAM,KAAK,GAAa,CAAC,mBAAmB,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACzB,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,EAA+B,CAAC;YACpC,IAAI,CAAC;gBAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YAChD,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;4EAG4E;AAC5E,SAAS,cAAc,CAAC,OAAgB,EAAE,IAAkC;IAC1E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAa,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvE,MAAM,IAAI,GAAI,KAAa,CAAC,IAAI,CAAC;YACjC,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED;;mEAEmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,UAAkB;IAChE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC5E,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAAC,CAAC;IAC5G,IAAI,KAAK,GAAG,UAAU,CAAC;IACvB,yEAAyE;IACzE,4DAA4D;IAC5D,IAAI,IAAI,GAAG,KAAK;QAAE,KAAK,GAAG,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAE7E,MAAM,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;IACzB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;YAAS,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;IACpE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAElE,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,wEAAwE;IACxE,+BAA+B;IAC/B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,CAAC,CAAE,6BAA6B;YAC3C,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,aAAa;QACvE,MAAM,SAAS,GAAG,MAAM,CAAC;QACzB,MAAM,IAAI,WAAW,CAAC;QACtB,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACnD,IAAI,GAAG,EAAE,IAAI,KAAK,eAAe;YAAE,SAAS;QAC5C,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAClE,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,iEAAiE;QACjE,gEAAgE;QAChE,wBAAwB;IAC1B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CodexBridgeEvent } from './codex-transcript.js';
|
|
2
|
+
export declare function drainHermesStateDb(fromOffset: number, dbPath?: string): {
|
|
3
|
+
events: CodexBridgeEvent[];
|
|
4
|
+
newOffset: number;
|
|
5
|
+
};
|
|
6
|
+
export declare function currentHermesStateOffset(dbPath?: string): number;
|
|
7
|
+
//# sourceMappingURL=hermes-transcript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-transcript.d.ts","sourceRoot":"","sources":["../../src/services/hermes-transcript.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAqE9D,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,SAAkB,GAAG;IAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAkBlI;AAED,wBAAgB,wBAAwB,CAAC,MAAM,SAAkB,GAAG,MAAM,CAWzE"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reader for Hermes Agent's SQLite session store.
|
|
3
|
+
*
|
|
4
|
+
* Hermes persists CLI conversations in ~/.hermes/state.db. Unlike Codex/CoCo,
|
|
5
|
+
* there is no append-only JSONL file to tail, so the bridge uses the messages
|
|
6
|
+
* table's monotonically increasing row id as its offset. The worker only needs
|
|
7
|
+
* user rows to match Lark turns and assistant rows with visible final content
|
|
8
|
+
* to synthesize a fallback reply when Hermes printed to the terminal but did
|
|
9
|
+
* not call `botmux send`.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync } from 'node:fs';
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import { spawnSync } from 'node:child_process';
|
|
15
|
+
const HERMES_STATE_DB = join(homedir(), '.hermes', 'state.db');
|
|
16
|
+
const CONTENT_JSON_PREFIX = String.fromCharCode(0) + 'json:';
|
|
17
|
+
function decodeContent(content) {
|
|
18
|
+
if (content === null || content === undefined)
|
|
19
|
+
return '';
|
|
20
|
+
if (typeof content !== 'string')
|
|
21
|
+
return String(content);
|
|
22
|
+
if (!content.startsWith(CONTENT_JSON_PREFIX))
|
|
23
|
+
return content;
|
|
24
|
+
try {
|
|
25
|
+
return stringifyDecodedContent(JSON.parse(content.slice(CONTENT_JSON_PREFIX.length)));
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return content;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function stringifyDecodedContent(value) {
|
|
32
|
+
if (typeof value === 'string')
|
|
33
|
+
return value;
|
|
34
|
+
if (Array.isArray(value)) {
|
|
35
|
+
const parts = [];
|
|
36
|
+
for (const item of value) {
|
|
37
|
+
if (typeof item === 'string')
|
|
38
|
+
parts.push(item);
|
|
39
|
+
else if (item && typeof item === 'object') {
|
|
40
|
+
const text = item.text ?? item.content;
|
|
41
|
+
if (typeof text === 'string')
|
|
42
|
+
parts.push(text);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return parts.join('');
|
|
46
|
+
}
|
|
47
|
+
if (value && typeof value === 'object') {
|
|
48
|
+
const text = value.text ?? value.content;
|
|
49
|
+
if (typeof text === 'string')
|
|
50
|
+
return text;
|
|
51
|
+
}
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
function runSql(offset, dbPath) {
|
|
55
|
+
const script = `
|
|
56
|
+
import json
|
|
57
|
+
import sqlite3
|
|
58
|
+
conn = sqlite3.connect(${JSON.stringify(dbPath)})
|
|
59
|
+
conn.row_factory = sqlite3.Row
|
|
60
|
+
rows = conn.execute(
|
|
61
|
+
"""
|
|
62
|
+
SELECT id, session_id, role, content, timestamp, finish_reason
|
|
63
|
+
FROM messages
|
|
64
|
+
WHERE id > ? AND role IN ('user', 'assistant')
|
|
65
|
+
ORDER BY id
|
|
66
|
+
""",
|
|
67
|
+
(${JSON.stringify(offset)},),
|
|
68
|
+
).fetchall()
|
|
69
|
+
print(json.dumps([dict(r) for r in rows], ensure_ascii=False))
|
|
70
|
+
`;
|
|
71
|
+
const proc = spawnSync('python3', ['-c', script], { encoding: 'utf8', maxBuffer: 10 * 1024 * 1024 });
|
|
72
|
+
if (proc.status !== 0)
|
|
73
|
+
throw new Error((proc.stderr || proc.error?.message || 'python3 sqlite query failed').trim());
|
|
74
|
+
const stdout = proc.stdout.trim();
|
|
75
|
+
if (!stdout)
|
|
76
|
+
return [];
|
|
77
|
+
return JSON.parse(stdout);
|
|
78
|
+
}
|
|
79
|
+
export function drainHermesStateDb(fromOffset, dbPath = HERMES_STATE_DB) {
|
|
80
|
+
if (!existsSync(dbPath))
|
|
81
|
+
return { events: [], newOffset: fromOffset };
|
|
82
|
+
const rows = runSql(fromOffset, dbPath);
|
|
83
|
+
let newOffset = fromOffset;
|
|
84
|
+
const events = [];
|
|
85
|
+
for (const row of rows) {
|
|
86
|
+
if (typeof row.id === 'number' && row.id > newOffset)
|
|
87
|
+
newOffset = row.id;
|
|
88
|
+
const text = decodeContent(row.content).trim();
|
|
89
|
+
if (!text)
|
|
90
|
+
continue;
|
|
91
|
+
const timestampMs = typeof row.timestamp === 'number' ? row.timestamp * 1000 : Date.now();
|
|
92
|
+
if (row.role === 'user') {
|
|
93
|
+
events.push({ uuid: `hermes:${row.id}`, timestampMs, kind: 'user', text, sourceSessionId: row.session_id });
|
|
94
|
+
}
|
|
95
|
+
else if (row.role === 'assistant') {
|
|
96
|
+
if (row.finish_reason !== 'stop')
|
|
97
|
+
continue;
|
|
98
|
+
events.push({ uuid: `hermes:${row.id}`, timestampMs, kind: 'assistant_final', text, sourceSessionId: row.session_id });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { events, newOffset };
|
|
102
|
+
}
|
|
103
|
+
export function currentHermesStateOffset(dbPath = HERMES_STATE_DB) {
|
|
104
|
+
if (!existsSync(dbPath))
|
|
105
|
+
return 0;
|
|
106
|
+
const script = `
|
|
107
|
+
import sqlite3
|
|
108
|
+
conn = sqlite3.connect(${JSON.stringify(dbPath)})
|
|
109
|
+
row = conn.execute("SELECT COALESCE(MAX(id), 0) FROM messages").fetchone()
|
|
110
|
+
print(row[0] or 0)
|
|
111
|
+
`;
|
|
112
|
+
const proc = spawnSync('python3', ['-c', script], { encoding: 'utf8' });
|
|
113
|
+
if (proc.status !== 0)
|
|
114
|
+
return 0;
|
|
115
|
+
return Number.parseInt(proc.stdout.trim(), 10) || 0;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=hermes-transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-transcript.js","sourceRoot":"","sources":["../../src/services/hermes-transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/services/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,IAAI,QAAQ,GAAyB,IAAI,GAAG,EAAE,CAAC;AAC/C,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,IAAI,YAAgC,CAAC;AAErC;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,KAAc;IACjC,YAAY,GAAG,KAAK,CAAC;IACrB,MAAM,GAAG,KAAK,CAAC;IACf,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,YAAY,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IAClF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,mHAAmH;AACnH,SAAS,IAAI;IACX,IAAI,MAAM;QAAE,OAAO;IACnB,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACnD,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,IAAI,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;YAChD,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACxB,mFAAmF;QACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC/D,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,GAA4B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClF,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;wBACjC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;gBACD,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,EAAE,CAAC;oBACP,MAAM,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,IAAI,mCAAmC,EAAE,EAAE,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;gBACpE,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,IAAI;IACX,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/services/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ export declare const CLI_ID_CHOICES: Record<string, CliId>;
|
|
|
3
3
|
/**
|
|
4
4
|
* 把 setup 里"CLI 适配器"那一格的原始输入解析成合法的 CliId.
|
|
5
5
|
* - 空 → undefined (调用方决定 "preserve current" 还是套默认 'claude-code')
|
|
6
|
-
* - "1".."
|
|
6
|
+
* - "1".."11" → CLI_ID_CHOICES 映射
|
|
7
7
|
* - 已是合法 cliId 字面值 → 原样返回
|
|
8
8
|
* - 其它 → throw (typo 不该静默落盘成 cliId)
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-config-editor.d.ts","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"bot-config-editor.d.ts","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,13 @@ export const CLI_ID_CHOICES = {
|
|
|
9
9
|
'8': 'antigravity',
|
|
10
10
|
'9': 'mtr',
|
|
11
11
|
'10': 'hermes',
|
|
12
|
+
'11': 'codex-app',
|
|
12
13
|
};
|
|
13
14
|
const VALID_CLI_IDS = new Set(Object.values(CLI_ID_CHOICES));
|
|
14
15
|
/**
|
|
15
16
|
* 把 setup 里"CLI 适配器"那一格的原始输入解析成合法的 CliId.
|
|
16
17
|
* - 空 → undefined (调用方决定 "preserve current" 还是套默认 'claude-code')
|
|
17
|
-
* - "1".."
|
|
18
|
+
* - "1".."11" → CLI_ID_CHOICES 映射
|
|
18
19
|
* - 已是合法 cliId 字面值 → 原样返回
|
|
19
20
|
* - 其它 → throw (typo 不该静默落盘成 cliId)
|
|
20
21
|
*/
|
|
@@ -27,7 +28,7 @@ export function resolveCliId(input) {
|
|
|
27
28
|
return mapped;
|
|
28
29
|
if (VALID_CLI_IDS.has(raw))
|
|
29
30
|
return raw;
|
|
30
|
-
throw new Error(`Unknown CLI 适配器 "${raw}"。请输入序号 1-
|
|
31
|
+
throw new Error(`Unknown CLI 适配器 "${raw}"。请输入序号 1-11 或合法 ID 之一: ${[...VALID_CLI_IDS].join(', ')}`);
|
|
31
32
|
}
|
|
32
33
|
/** 完整邮箱(含 @ 和域名)。用于区分"完整邮箱"与"邮箱前缀"——后者解析时会被静默丢弃。 */
|
|
33
34
|
const FULL_EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-config-editor.js","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"bot-config-editor.js","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"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"}
|
package/dist/worker.js
CHANGED
|
@@ -22,6 +22,7 @@ import { shouldRunQuietRotation, evaluatePidResolverPullback, decideFingerprintS
|
|
|
22
22
|
import { CodexBridgeQueue } from './services/codex-bridge-queue.js';
|
|
23
23
|
import { drainCodexRollout, findCodexRolloutBySessionId, findCodexRolloutByPid, splitCodexEventsByCutoff, extractLastCodexTurn } from './services/codex-transcript.js';
|
|
24
24
|
import { cocoEventsPathForSession, drainCocoEvents, findCocoSessionByPid } from './services/coco-transcript.js';
|
|
25
|
+
import { currentHermesStateOffset, drainHermesStateDb } from './services/hermes-transcript.js';
|
|
25
26
|
import { baselineJsonlCursor } from './services/jsonl-cursor.js';
|
|
26
27
|
import { dirname } from 'node:path';
|
|
27
28
|
import { createServer as createHttpServer } from 'node:http';
|
|
@@ -63,7 +64,7 @@ const clientPtys = new Map();
|
|
|
63
64
|
const writeToken = randomBytes(16).toString('hex');
|
|
64
65
|
let sessionId = '';
|
|
65
66
|
let lastInitConfig = null;
|
|
66
|
-
const CLI_DISPLAY_NAMES = { 'claude-code': 'Claude', aiden: 'Aiden', coco: 'CoCo', codex: 'Codex', cursor: 'Cursor', gemini: 'Gemini', opencode: 'OpenCode', antigravity: 'Antigravity', mtr: 'MTR', hermes: 'Hermes' };
|
|
67
|
+
const CLI_DISPLAY_NAMES = { 'claude-code': 'Claude', aiden: 'Aiden', coco: 'CoCo', codex: 'Codex', 'codex-app': 'Codex App', cursor: 'Cursor', gemini: 'Gemini', opencode: 'OpenCode', antigravity: 'Antigravity', mtr: 'MTR', hermes: 'Hermes' };
|
|
67
68
|
function cliName() { return CLI_DISPLAY_NAMES[lastInitConfig?.cliId ?? ''] ?? 'CLI'; }
|
|
68
69
|
let isPromptReady = false;
|
|
69
70
|
/** Mutex for async flushPending — prevents concurrent flush loops. */
|
|
@@ -199,6 +200,8 @@ let codexBridgeBaselineDone = false;
|
|
|
199
200
|
const codexBridgeQueue = new CodexBridgeQueue();
|
|
200
201
|
let codexBridgeWatcher = null;
|
|
201
202
|
let codexBridgeTimer = null;
|
|
203
|
+
let hermesBridgeOffset = 0;
|
|
204
|
+
let hermesBridgeBaselineDone = false;
|
|
202
205
|
/** Codex sessionId we received via writeInput but haven't yet resolved a
|
|
203
206
|
* rollout file for. The poller keeps retrying — the file appears on
|
|
204
207
|
* Codex's first user submit, but with some race delay after our submit
|
|
@@ -1328,18 +1331,23 @@ function drainPathInto(path, fromOffset) {
|
|
|
1328
1331
|
// shared with the Claude path.
|
|
1329
1332
|
function codexBridgeFallbackActive() {
|
|
1330
1333
|
// True for transcript-backed CLIs whose final output can be harvested
|
|
1331
|
-
//
|
|
1332
|
-
|
|
1333
|
-
// work in adopt mode now that CoCo's PID→sessionId discovery is wired.
|
|
1334
|
-
return lastInitConfig?.cliId === 'codex' || lastInitConfig?.cliId === 'coco';
|
|
1334
|
+
// when the model forgets to call `botmux send`.
|
|
1335
|
+
return lastInitConfig?.cliId === 'codex' || lastInitConfig?.cliId === 'coco' || lastInitConfig?.cliId === 'hermes';
|
|
1335
1336
|
}
|
|
1336
1337
|
function structuredBridgeIsCodex() {
|
|
1337
1338
|
return lastInitConfig?.cliId === 'codex';
|
|
1338
1339
|
}
|
|
1340
|
+
function structuredBridgeIsHermes() {
|
|
1341
|
+
return lastInitConfig?.cliId === 'hermes';
|
|
1342
|
+
}
|
|
1339
1343
|
function structuredBridgeIngestPath(path, offset) {
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1344
|
+
if (structuredBridgeIsCodex())
|
|
1345
|
+
return drainCodexRollout(path, offset);
|
|
1346
|
+
if (structuredBridgeIsHermes()) {
|
|
1347
|
+
const result = drainHermesStateDb(offset);
|
|
1348
|
+
return { events: result.events, newOffset: result.newOffset, pendingTail: '' };
|
|
1349
|
+
}
|
|
1350
|
+
return drainCocoEvents(path, offset);
|
|
1343
1351
|
}
|
|
1344
1352
|
function codexBridgeStartTimer() {
|
|
1345
1353
|
if (codexBridgeTimer)
|
|
@@ -1357,6 +1365,14 @@ function codexBridgeStartTimer() {
|
|
|
1357
1365
|
// publish a half-streamed response.
|
|
1358
1366
|
codexBridgeTimer = setInterval(() => {
|
|
1359
1367
|
try {
|
|
1368
|
+
if (structuredBridgeIsHermes()) {
|
|
1369
|
+
if (!hermesBridgeBaselineDone)
|
|
1370
|
+
hermesBridgeAttach(lastInitConfig?.resume ? 'baseline-existing' : 'fresh-empty');
|
|
1371
|
+
hermesBridgeIngest();
|
|
1372
|
+
if (isPromptReady)
|
|
1373
|
+
emitReadyCodexTurns();
|
|
1374
|
+
return;
|
|
1375
|
+
}
|
|
1360
1376
|
if (!codexBridgeRolloutPath) {
|
|
1361
1377
|
// Two discovery paths, in order: cliSessionId (known via writeInput
|
|
1362
1378
|
// result for non-adopt or daemon-side probe for adopt) → exact
|
|
@@ -1410,6 +1426,22 @@ function codexBridgeStartTimer() {
|
|
|
1410
1426
|
}
|
|
1411
1427
|
}, 1000);
|
|
1412
1428
|
}
|
|
1429
|
+
function hermesBridgeAttach(mode) {
|
|
1430
|
+
hermesBridgeOffset = currentHermesStateOffset();
|
|
1431
|
+
hermesBridgeBaselineDone = true;
|
|
1432
|
+
log(`Hermes bridge ${mode}: state.db offset=${hermesBridgeOffset}`);
|
|
1433
|
+
codexBridgeStartTimer();
|
|
1434
|
+
}
|
|
1435
|
+
function hermesBridgeIngest() {
|
|
1436
|
+
if (!hermesBridgeBaselineDone)
|
|
1437
|
+
return;
|
|
1438
|
+
const result = drainHermesStateDb(hermesBridgeOffset);
|
|
1439
|
+
hermesBridgeOffset = result.newOffset;
|
|
1440
|
+
codexBridgeQueue.ingest(result.events);
|
|
1441
|
+
if (result.events.some(e => e.kind === 'assistant_final')) {
|
|
1442
|
+
idleDetector?.fireIdle();
|
|
1443
|
+
}
|
|
1444
|
+
}
|
|
1413
1445
|
function codexBridgeAttach(rolloutPath, mode) {
|
|
1414
1446
|
codexBridgeRolloutPath = rolloutPath;
|
|
1415
1447
|
if (mode === 'fresh-empty') {
|
|
@@ -1504,6 +1536,10 @@ function codexBridgeNotifyCliSessionId(cliSessionId) {
|
|
|
1504
1536
|
}
|
|
1505
1537
|
}
|
|
1506
1538
|
function codexBridgeIngest() {
|
|
1539
|
+
if (structuredBridgeIsHermes()) {
|
|
1540
|
+
hermesBridgeIngest();
|
|
1541
|
+
return;
|
|
1542
|
+
}
|
|
1507
1543
|
if (!codexBridgeRolloutPath || !codexBridgeBaselineDone)
|
|
1508
1544
|
return;
|
|
1509
1545
|
const result = structuredBridgeIngestPath(codexBridgeRolloutPath, codexBridgeOffset);
|
|
@@ -1533,7 +1569,7 @@ function codexBridgeMarkPendingTurn(messageText) {
|
|
|
1533
1569
|
function codexBridgeDrainAndMaybeEmit() {
|
|
1534
1570
|
if (!codexBridgeFallbackActive())
|
|
1535
1571
|
return;
|
|
1536
|
-
if (codexBridgeRolloutPath && codexBridgeBaselineDone) {
|
|
1572
|
+
if (structuredBridgeIsHermes() || (codexBridgeRolloutPath && codexBridgeBaselineDone)) {
|
|
1537
1573
|
try {
|
|
1538
1574
|
codexBridgeIngest();
|
|
1539
1575
|
}
|
|
@@ -1610,6 +1646,8 @@ function stopCodexBridge() {
|
|
|
1610
1646
|
codexBridgeOffset = 0;
|
|
1611
1647
|
codexBridgePendingTail = '';
|
|
1612
1648
|
codexBridgeBaselineDone = false;
|
|
1649
|
+
hermesBridgeOffset = 0;
|
|
1650
|
+
hermesBridgeBaselineDone = false;
|
|
1613
1651
|
codexBridgeQueue.clearPending();
|
|
1614
1652
|
codexBridgeQueue.setLocalTurns(false);
|
|
1615
1653
|
codexBridgePendingSessionId = undefined;
|
|
@@ -2141,8 +2179,87 @@ async function handleTuiTextInput(keys, text) {
|
|
|
2141
2179
|
// in a single PTY chunk)
|
|
2142
2180
|
const TRUST_DIALOG_PATTERN = /Yes, I trust this folder|Yes, continue/;
|
|
2143
2181
|
let trustHandled = false;
|
|
2182
|
+
// Codex App runner sends botmux control messages as OSC sequences so they do
|
|
2183
|
+
// not pollute the visible terminal. Strip them before xterm rendering and
|
|
2184
|
+
// translate them back into worker IPC.
|
|
2185
|
+
const CODEX_APP_OSC_PREFIX = '\x1b]777;botmux:';
|
|
2186
|
+
let codexAppOscPending = '';
|
|
2187
|
+
function decodeCodexAppPayload(payload) {
|
|
2188
|
+
try {
|
|
2189
|
+
return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));
|
|
2190
|
+
}
|
|
2191
|
+
catch {
|
|
2192
|
+
return undefined;
|
|
2193
|
+
}
|
|
2194
|
+
}
|
|
2195
|
+
function handleCodexAppMarker(body) {
|
|
2196
|
+
const sep = body.indexOf(':');
|
|
2197
|
+
if (sep < 0)
|
|
2198
|
+
return;
|
|
2199
|
+
const kind = body.slice(0, sep);
|
|
2200
|
+
const payload = decodeCodexAppPayload(body.slice(sep + 1));
|
|
2201
|
+
if (!payload || typeof payload !== 'object')
|
|
2202
|
+
return;
|
|
2203
|
+
if (kind === 'thread' && typeof payload.threadId === 'string') {
|
|
2204
|
+
persistCliSessionId(payload.threadId);
|
|
2205
|
+
return;
|
|
2206
|
+
}
|
|
2207
|
+
if (kind === 'final' && typeof payload.content === 'string') {
|
|
2208
|
+
const startedAtMs = typeof payload.startedAtMs === 'number' ? payload.startedAtMs : undefined;
|
|
2209
|
+
const completedAtMs = typeof payload.completedAtMs === 'number' ? payload.completedAtMs : Date.now();
|
|
2210
|
+
if (startedAtMs !== undefined) {
|
|
2211
|
+
const sentByModel = readSendMarkers().some(m => m.sentAtMs >= startedAtMs && m.sentAtMs <= completedAtMs + 5_000);
|
|
2212
|
+
if (sentByModel) {
|
|
2213
|
+
log('Codex App final_output suppressed (model already called botmux send)');
|
|
2214
|
+
return;
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2217
|
+
const turnId = typeof payload.turnId === 'string' ? payload.turnId : `codex-app-${Date.now()}`;
|
|
2218
|
+
send({
|
|
2219
|
+
type: 'final_output',
|
|
2220
|
+
content: payload.content,
|
|
2221
|
+
lastUuid: turnId,
|
|
2222
|
+
turnId,
|
|
2223
|
+
});
|
|
2224
|
+
}
|
|
2225
|
+
}
|
|
2226
|
+
function splitCodexAppControl(data) {
|
|
2227
|
+
if (lastInitConfig?.cliId !== 'codex-app' && codexAppOscPending.length === 0)
|
|
2228
|
+
return data;
|
|
2229
|
+
const input = codexAppOscPending + data;
|
|
2230
|
+
codexAppOscPending = '';
|
|
2231
|
+
let out = '';
|
|
2232
|
+
let cursor = 0;
|
|
2233
|
+
for (;;) {
|
|
2234
|
+
const start = input.indexOf(CODEX_APP_OSC_PREFIX, cursor);
|
|
2235
|
+
if (start < 0) {
|
|
2236
|
+
let tailStart = input.length;
|
|
2237
|
+
const tail = input.slice(cursor);
|
|
2238
|
+
for (let n = Math.min(CODEX_APP_OSC_PREFIX.length - 1, tail.length); n > 0; n--) {
|
|
2239
|
+
if (CODEX_APP_OSC_PREFIX.startsWith(tail.slice(tail.length - n))) {
|
|
2240
|
+
tailStart = input.length - n;
|
|
2241
|
+
break;
|
|
2242
|
+
}
|
|
2243
|
+
}
|
|
2244
|
+
out += input.slice(cursor, tailStart);
|
|
2245
|
+
codexAppOscPending = input.slice(tailStart);
|
|
2246
|
+
return out;
|
|
2247
|
+
}
|
|
2248
|
+
out += input.slice(cursor, start);
|
|
2249
|
+
const end = input.indexOf('\x07', start + CODEX_APP_OSC_PREFIX.length);
|
|
2250
|
+
if (end < 0) {
|
|
2251
|
+
codexAppOscPending = input.slice(start);
|
|
2252
|
+
return out;
|
|
2253
|
+
}
|
|
2254
|
+
handleCodexAppMarker(input.slice(start + CODEX_APP_OSC_PREFIX.length, end));
|
|
2255
|
+
cursor = end + 1;
|
|
2256
|
+
}
|
|
2257
|
+
}
|
|
2144
2258
|
// ─── Prompt Detection ────────────────────────────────────────────────────────
|
|
2145
2259
|
function onPtyData(data) {
|
|
2260
|
+
data = splitCodexAppControl(data);
|
|
2261
|
+
if (data.length === 0)
|
|
2262
|
+
return;
|
|
2146
2263
|
captureWorkflowTranscript(data);
|
|
2147
2264
|
renderer?.write(data);
|
|
2148
2265
|
// In tmux-attach mode, each web client has its own tmux attach PTY —
|
|
@@ -2834,8 +2951,12 @@ function spawnCli(cfg) {
|
|
|
2834
2951
|
// calling `botmux send`, harvest the final answer from the CLI transcript
|
|
2835
2952
|
// and post it to Lark. Codex needs late attach because its rollout id is
|
|
2836
2953
|
// discovered after the first submit; CoCo's events path is deterministic
|
|
2837
|
-
// from botmux sessionId.
|
|
2838
|
-
|
|
2954
|
+
// from botmux sessionId. Hermes uses a global SQLite store, so baseline its
|
|
2955
|
+
// row id at spawn and poll for rows after each queued prompt is flushed.
|
|
2956
|
+
if (cfg.cliId === 'hermes') {
|
|
2957
|
+
hermesBridgeAttach(cfg.resume ? 'baseline-existing' : 'fresh-empty');
|
|
2958
|
+
}
|
|
2959
|
+
else if (cfg.cliId === 'codex') {
|
|
2839
2960
|
if (cfg.cliSessionId) {
|
|
2840
2961
|
const rolloutPath = findCodexRolloutBySessionId(cfg.cliSessionId);
|
|
2841
2962
|
if (rolloutPath) {
|
|
@@ -2937,6 +3058,7 @@ function killCli() {
|
|
|
2937
3058
|
scrollback = '';
|
|
2938
3059
|
altBufferActive = false;
|
|
2939
3060
|
trustHandled = false;
|
|
3061
|
+
codexAppOscPending = '';
|
|
2940
3062
|
}
|
|
2941
3063
|
// ─── HTTP + WebSocket Server ─────────────────────────────────────────────────
|
|
2942
3064
|
function startWebServer(host, preferredPort) {
|