@downcity/agent 1.1.400 → 1.1.408
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 +183 -0
- package/README.md +4 -3
- package/bin/agent/WorkspaceEntry.js +1 -1
- package/bin/agent/WorkspaceEntry.js.map +1 -1
- package/bin/city/types/PluginHostContext.d.ts +3 -0
- package/bin/city/types/PluginHostContext.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineError.js +8 -2
- package/bin/executor/core-engine/CoreEngineError.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.js +36 -0
- package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
- package/bin/executor/model/ModelGenerate.d.ts.map +1 -1
- package/bin/executor/model/ModelGenerate.js +2 -1
- package/bin/executor/model/ModelGenerate.js.map +1 -1
- package/bin/executor/model/ModelStepRunner.d.ts +2 -0
- package/bin/executor/model/ModelStepRunner.d.ts.map +1 -1
- package/bin/executor/model/ModelStepRunner.js +33 -7
- package/bin/executor/model/ModelStepRunner.js.map +1 -1
- package/bin/executor/model/ModelStreamFailure.d.ts +22 -0
- package/bin/executor/model/ModelStreamFailure.d.ts.map +1 -0
- package/bin/executor/model/ModelStreamFailure.js +35 -0
- package/bin/executor/model/ModelStreamFailure.js.map +1 -0
- package/bin/group/GroupDispatchSession.d.ts +36 -0
- package/bin/group/GroupDispatchSession.d.ts.map +1 -0
- package/bin/group/GroupDispatchSession.js +154 -0
- package/bin/group/GroupDispatchSession.js.map +1 -0
- package/bin/group/GroupSession.d.ts +3 -1
- package/bin/group/GroupSession.d.ts.map +1 -1
- package/bin/group/GroupSession.js +65 -28
- package/bin/group/GroupSession.js.map +1 -1
- package/bin/index.d.ts +2 -0
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js.map +1 -1
- package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +1 -1
- package/bin/session/messages/SessionAssistantMessageWriter.js +10 -6
- package/bin/session/messages/SessionAssistantMessageWriter.js.map +1 -1
- package/bin/types/group/DispatchStrategy.d.ts +3 -0
- package/bin/types/group/DispatchStrategy.d.ts.map +1 -1
- package/bin/types/group/DispatchStrategy.js +66 -18
- package/bin/types/group/DispatchStrategy.js.map +1 -1
- package/bin/types/group/GroupDispatchSession.d.ts +65 -0
- package/bin/types/group/GroupDispatchSession.d.ts.map +1 -0
- package/bin/types/group/GroupDispatchSession.js +8 -0
- package/bin/types/group/GroupDispatchSession.js.map +1 -0
- package/bin/types/group/GroupSession.d.ts +2 -0
- package/bin/types/group/GroupSession.d.ts.map +1 -1
- package/bin/types/group/GroupSessionStore.d.ts +6 -1
- package/bin/types/group/GroupSessionStore.d.ts.map +1 -1
- package/bin/types/plugin/PluginNotification.d.ts +31 -0
- package/bin/types/plugin/PluginNotification.d.ts.map +1 -0
- package/bin/types/plugin/PluginNotification.js +8 -0
- package/bin/types/plugin/PluginNotification.js.map +1 -0
- package/bin/workspace/store/LocalGroupDispatchSessionDataStore.d.ts +28 -0
- package/bin/workspace/store/LocalGroupDispatchSessionDataStore.d.ts.map +1 -0
- package/bin/workspace/store/LocalGroupDispatchSessionDataStore.js +102 -0
- package/bin/workspace/store/LocalGroupDispatchSessionDataStore.js.map +1 -0
- package/bin/workspace/store/LocalGroupSessionDataStore.d.ts +2 -0
- package/bin/workspace/store/LocalGroupSessionDataStore.d.ts.map +1 -1
- package/bin/workspace/store/LocalGroupSessionDataStore.js +25 -8
- package/bin/workspace/store/LocalGroupSessionDataStore.js.map +1 -1
- package/city-test/group.test.mjs +252 -1
- package/package.json +15 -17
- package/scripts/agent-multi-workspace.test.mjs +67 -0
- package/scripts/core-engine-context-compaction.test.mjs +49 -0
- package/scripts/core-engine-model-stream.test.mjs +69 -0
- package/src/agent/WorkspaceEntry.ts +1 -1
- package/src/city/types/PluginHostContext.ts +4 -0
- package/src/executor/core-engine/CoreEngineError.ts +8 -2
- package/src/executor/core-engine/CoreEngineRunner.ts +44 -0
- package/src/executor/model/ModelGenerate.ts +3 -1
- package/src/executor/model/ModelStepRunner.ts +36 -5
- package/src/executor/model/ModelStreamFailure.ts +44 -0
- package/src/group/GroupDispatchSession.ts +175 -0
- package/src/group/GroupSession.ts +83 -28
- package/src/index.ts +10 -0
- package/src/session/messages/SessionAssistantMessageWriter.ts +9 -5
- package/src/types/group/DispatchStrategy.ts +79 -19
- package/src/types/group/GroupDispatchSession.ts +80 -0
- package/src/types/group/GroupSession.ts +2 -0
- package/src/types/group/GroupSessionStore.ts +6 -1
- package/src/types/plugin/PluginNotification.ts +38 -0
- package/src/workspace/store/LocalGroupDispatchSessionDataStore.ts +118 -0
- package/src/workspace/store/LocalGroupSessionDataStore.ts +35 -9
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelStepRunner.js","sourceRoot":"","sources":["../../../src/executor/model/ModelStepRunner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,GAYrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8DxB,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAwB;IAM3D,MAAM,IAAI,GAAc;QACtB,QAAQ,EAAE,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;QACvE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;KAClC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,SAAS,CAAC,MAAM,EAAE,CAAC;IACnB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,aAAa,CACtC,SAAS,CAAC,UAAU,EACpB,KAAK,EACL,IAAI,CAAC,QAAQ,CACd,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YAC9C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,OAAO;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,eAAe,GAAG,mBAAmB,CACzC,SAAS,CAAC,eAAe,EACzB,YAAY,CACb,CAAC;IACF,MAAM,iBAAiB,GAAmB,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC9E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,iBAAiB,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,aAAa;gBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAChD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aACvE,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO;QACL,eAAe;QACf,WAAW,EAAE;YACX,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,YAAY;YACZ,QAAQ,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE;YACzC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAChD,IAAI,EAAE,WAAW;gBACjB,GAAG,SAAS;aACb,CAAC,CAAC;SACJ;KACF,CAAC;AACJ,CAAC;AAED,eAAe;AACf,MAAM,kBAAkB;IACL,aAAa,GAAmB,EAAE,CAAC;IACnC,eAAe,GAAkC,EAAE,CAAC;IACpD,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,kBAAkB,GAAG,IAAI,GAAG,EAA6B,CAAC;IACnE,KAAK,CAAc;IACnB,aAAa,CAAqB;IAClC,IAAI,GAAG,EAAE,CAAC;IAElB,kBAAkB;IAClB,MAAM,CAAC,KAAuB;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,KAAK,CAAC,UAAU,EAChB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAC5D,CAAC;YACF,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACxB,OAAO,EAAE,QAAQ,KAAK,CAAC,UAAU,EAAE;gBACnC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;gBACzC,IAAI,EAAE,MAAM;gBACZ,IAAI;gBACJ,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CACtB,KAAK,CAAC,UAAU,EAChB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CACjE,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,WAAW;gBACjB,IAAI;gBACJ,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACxB,OAAO,EAAE,aAAa,KAAK,CAAC,UAAU,EAAE;gBACxC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;gBACzC,IAAI,EAAE,WAAW;gBACjB,IAAI;gBACJ,KAAK,EAAE,MAAM;gBACb,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrE,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE;gBAC5C,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,WAAW;oBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBACxB,OAAO,EAAE,QAAQ,IAAI,CAAC,YAAY,EAAE;oBACpC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;oBACzC,IAAI,EAAE,MAAM;oBACZ,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM;QAQJ,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACpF,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,uBAAuB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;YAC3E,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;SAClD,CAAC;IACJ,CAAC;CACF;AAED,0BAA0B;AAC1B,KAAK,UAAU,aAAa,CAC1B,KAA0B,EAC1B,KAAwB,EACxB,QAAwB;IAExB,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,IAAI;gBACP,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC,SAAS,EAAE,EAAE;aACrD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY;YACjC,CAAC,CAAC,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,IAAI;gBACP,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE;aAC3C,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAyB;gBACpC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,QAAQ;gBACR,YAAY,EAAE,KAAK,CAAC,YAAY;aACjC,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,IAAI;gBACP,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qCAAqC;AACrC,SAAS,uBAAuB,CAAC,QAAgC;IAC/D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ;oBAC/B,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAClC,CAAC;KACH,CAAC,CAAC,CAAC;AACN,CAAC;AAED,2CAA2C;AAC3C,SAAS,aAAa,CAAC,KAA2B;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI;QACJ,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;KACnD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,2DAA2D;AAC3D,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC/D,OAAO,MAAM,CAAC,UAA4C,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC;QACH,OAAO,CAAC,CAAC,YAAY,CAAC,KAAkB,CAAmC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAwC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,0BAA0B;AAC1B,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAmB,CAAC;AAC7D,CAAC;AAED,qCAAqC;AACrC,SAAS,mBAAmB,CAC1B,KAAoC,EACpC,OAA8B;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACrF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,MAAM,CAAC,OAAO;YACnB,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC;aACR;YACtC,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;aACH,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4BAA4B;AAC5B,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAI,KAA6B,CAAC,KAAK,CAAC;QACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;IAC9D,CAAC;IACD,OAAO,uBAAuB,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ModelStepRunner.js","sourceRoot":"","sources":["../../../src/executor/model/ModelStepRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模型流失败对象。
|
|
3
|
+
*
|
|
4
|
+
* 该对象完整保留 Model Protocol 的错误分类,避免 Executor 只能依赖错误文本
|
|
5
|
+
* 判断是否可以重试。它只描述一次模型流失败,不负责决定恢复策略。
|
|
6
|
+
*/
|
|
7
|
+
import type { ModelError } from "@downcity/type";
|
|
8
|
+
/** 一次具有稳定协议语义的模型流失败。 */
|
|
9
|
+
export declare class ModelStreamFailure extends Error {
|
|
10
|
+
/** Downcity 稳定模型错误码。 */
|
|
11
|
+
readonly code: ModelError["code"];
|
|
12
|
+
/** 当前模型调用是否可以安全重试。 */
|
|
13
|
+
readonly retryable: boolean;
|
|
14
|
+
/** 失败前是否已经向用户发布正文或工具输入。 */
|
|
15
|
+
readonly has_partial_output: boolean;
|
|
16
|
+
/** Provider 返回的可观测请求标识。 */
|
|
17
|
+
readonly provider_request_id?: string;
|
|
18
|
+
constructor(error: ModelError, has_partial_output: boolean);
|
|
19
|
+
}
|
|
20
|
+
/** 判断未知错误是否为可安全自动重试的无输出模型流失败。 */
|
|
21
|
+
export declare function is_retryable_empty_model_stream_failure(error: unknown): error is ModelStreamFailure;
|
|
22
|
+
//# sourceMappingURL=ModelStreamFailure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelStreamFailure.d.ts","sourceRoot":"","sources":["../../../src/executor/model/ModelStreamFailure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,wBAAwB;AACxB,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAElC,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,2BAA2B;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAErC,2BAA2B;IAC3B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;gBAE1B,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,OAAO;CAU3D;AAED,iCAAiC;AACjC,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAK7B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模型流失败对象。
|
|
3
|
+
*
|
|
4
|
+
* 该对象完整保留 Model Protocol 的错误分类,避免 Executor 只能依赖错误文本
|
|
5
|
+
* 判断是否可以重试。它只描述一次模型流失败,不负责决定恢复策略。
|
|
6
|
+
*/
|
|
7
|
+
/** 一次具有稳定协议语义的模型流失败。 */
|
|
8
|
+
export class ModelStreamFailure extends Error {
|
|
9
|
+
/** Downcity 稳定模型错误码。 */
|
|
10
|
+
code;
|
|
11
|
+
/** 当前模型调用是否可以安全重试。 */
|
|
12
|
+
retryable;
|
|
13
|
+
/** 失败前是否已经向用户发布正文或工具输入。 */
|
|
14
|
+
has_partial_output;
|
|
15
|
+
/** Provider 返回的可观测请求标识。 */
|
|
16
|
+
provider_request_id;
|
|
17
|
+
constructor(error, has_partial_output) {
|
|
18
|
+
super(error.message);
|
|
19
|
+
this.name = "ModelStreamFailure";
|
|
20
|
+
this.code = error.code;
|
|
21
|
+
this.retryable = error.retryable;
|
|
22
|
+
this.has_partial_output = has_partial_output;
|
|
23
|
+
if (error.provider_request_id) {
|
|
24
|
+
this.provider_request_id = error.provider_request_id;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** 判断未知错误是否为可安全自动重试的无输出模型流失败。 */
|
|
29
|
+
export function is_retryable_empty_model_stream_failure(error) {
|
|
30
|
+
return error instanceof ModelStreamFailure &&
|
|
31
|
+
error.retryable &&
|
|
32
|
+
!error.has_partial_output &&
|
|
33
|
+
error.code !== "cancelled";
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=ModelStreamFailure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelStreamFailure.js","sourceRoot":"","sources":["../../../src/executor/model/ModelStreamFailure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wBAAwB;AACxB,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,wBAAwB;IACf,IAAI,CAAqB;IAElC,sBAAsB;IACb,SAAS,CAAU;IAE5B,2BAA2B;IAClB,kBAAkB,CAAU;IAErC,2BAA2B;IAClB,mBAAmB,CAAU;IAEtC,YAAY,KAAiB,EAAE,kBAA2B;QACxD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC9B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QACvD,CAAC;IACH,CAAC;CACF;AAED,iCAAiC;AACjC,MAAM,UAAU,uCAAuC,CACrD,KAAc;IAEd,OAAO,KAAK,YAAY,kBAAkB;QACxC,KAAK,CAAC,SAAS;QACf,CAAC,KAAK,CAAC,kBAAkB;QACzB,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GroupDispatchSession:单个 GroupSession 独享的持久化调度执行边界。
|
|
3
|
+
*
|
|
4
|
+
* 本对象统一拥有调度队列、当前模型取消信号和调度 Turn 状态。调度策略只负责决策,
|
|
5
|
+
* 不再自行拥有跨 GroupSession 的运行状态或停止语义。
|
|
6
|
+
*/
|
|
7
|
+
import type { GroupDispatchSessionDataStore, GroupDispatchSessionInput, GroupDispatchSessionOptions, GroupDispatchSessionResult } from "../types/group/GroupDispatchSession.js";
|
|
8
|
+
/** 主动停止 Dispatch Session 时使用的内部错误。 */
|
|
9
|
+
export declare class GroupDispatchStoppedError extends Error {
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
12
|
+
/** GroupSession 私有的调度 Session。 */
|
|
13
|
+
export declare class GroupDispatchSession {
|
|
14
|
+
private readonly dispatch_strategy;
|
|
15
|
+
private store?;
|
|
16
|
+
private queue_tail;
|
|
17
|
+
private active_abort_controller?;
|
|
18
|
+
private stopping;
|
|
19
|
+
private disposed;
|
|
20
|
+
constructor(options: GroupDispatchSessionOptions);
|
|
21
|
+
/** 绑定持久化视图,并把进程中断留下的运行态明确收口为 stopped。 */
|
|
22
|
+
initialize(store: GroupDispatchSessionDataStore): Promise<this>;
|
|
23
|
+
/** 按提交顺序执行一次调度,并在返回前持久化最终决定。 */
|
|
24
|
+
decide(input: GroupDispatchSessionInput): Promise<GroupDispatchSessionResult>;
|
|
25
|
+
/** 中断当前模型调用,并让尚未开始的调度 Turn 按队列顺序收口。 */
|
|
26
|
+
stop(): Promise<void>;
|
|
27
|
+
/** 永久释放当前 Dispatch Session。 */
|
|
28
|
+
dispose(): Promise<void>;
|
|
29
|
+
/** 执行队首调度 Turn,确保成功、失败和停止都形成持久化终态。 */
|
|
30
|
+
private execute_turn;
|
|
31
|
+
/** 提交没有 decision 的失败或停止终态。 */
|
|
32
|
+
private persist_terminal_turn;
|
|
33
|
+
private require_store;
|
|
34
|
+
private assert_available;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=GroupDispatchSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupDispatchSession.d.ts","sourceRoot":"","sources":["../../src/group/GroupDispatchSession.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAE3B,MAAM,uCAAuC,CAAC;AAE/C,sCAAsC;AACtC,qBAAa,yBAA0B,SAAQ,KAAK;;CAKnD;AAED,kCAAkC;AAClC,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmD;IACrF,OAAO,CAAC,KAAK,CAAC,CAAgC;IAC9C,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,uBAAuB,CAAC,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,2BAA2B;IAIhD,yCAAyC;IACnC,UAAU,CAAC,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrE,gCAAgC;IAChC,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAsB7E,uCAAuC;IACjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,+BAA+B;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,sCAAsC;YACxB,YAAY;IAmD1B,8BAA8B;YAChB,qBAAqB;IAanC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,gBAAgB;CAIzB"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GroupDispatchSession:单个 GroupSession 独享的持久化调度执行边界。
|
|
3
|
+
*
|
|
4
|
+
* 本对象统一拥有调度队列、当前模型取消信号和调度 Turn 状态。调度策略只负责决策,
|
|
5
|
+
* 不再自行拥有跨 GroupSession 的运行状态或停止语义。
|
|
6
|
+
*/
|
|
7
|
+
import { nanoid } from "nanoid";
|
|
8
|
+
/** 主动停止 Dispatch Session 时使用的内部错误。 */
|
|
9
|
+
export class GroupDispatchStoppedError extends Error {
|
|
10
|
+
constructor() {
|
|
11
|
+
super("Group dispatch stopped");
|
|
12
|
+
this.name = "GroupDispatchStoppedError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** GroupSession 私有的调度 Session。 */
|
|
16
|
+
export class GroupDispatchSession {
|
|
17
|
+
dispatch_strategy;
|
|
18
|
+
store;
|
|
19
|
+
queue_tail = Promise.resolve();
|
|
20
|
+
active_abort_controller;
|
|
21
|
+
stopping = false;
|
|
22
|
+
disposed = false;
|
|
23
|
+
constructor(options) {
|
|
24
|
+
this.dispatch_strategy = options.dispatch_strategy;
|
|
25
|
+
}
|
|
26
|
+
/** 绑定持久化视图,并把进程中断留下的运行态明确收口为 stopped。 */
|
|
27
|
+
async initialize(store) {
|
|
28
|
+
if (this.store && this.store !== store) {
|
|
29
|
+
throw new Error("GroupDispatchSession is already initialized with another Store");
|
|
30
|
+
}
|
|
31
|
+
if (this.store === store)
|
|
32
|
+
return this;
|
|
33
|
+
this.store = store;
|
|
34
|
+
const interrupted_turns = (await store.list_turns()).filter((turn) => (turn.status === "queued" || turn.status === "running"));
|
|
35
|
+
for (const turn of interrupted_turns) {
|
|
36
|
+
await store.append_turn({
|
|
37
|
+
...turn,
|
|
38
|
+
status: "stopped",
|
|
39
|
+
error: "Group dispatch interrupted before recovery",
|
|
40
|
+
updated_at: Date.now(),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
/** 按提交顺序执行一次调度,并在返回前持久化最终决定。 */
|
|
46
|
+
decide(input) {
|
|
47
|
+
this.assert_available();
|
|
48
|
+
const store = this.require_store();
|
|
49
|
+
const created_at = Date.now();
|
|
50
|
+
const queued_turn = {
|
|
51
|
+
dispatch_id: `group-dispatch-${nanoid(12)}`,
|
|
52
|
+
trigger: input.trigger,
|
|
53
|
+
message_id: input.message.id,
|
|
54
|
+
pending_message_ids: input.pending_messages.map((message) => message.id),
|
|
55
|
+
status: "queued",
|
|
56
|
+
created_at,
|
|
57
|
+
updated_at: created_at,
|
|
58
|
+
};
|
|
59
|
+
const persist_queued = store.append_turn(queued_turn);
|
|
60
|
+
const operation = this.queue_tail.then(async () => {
|
|
61
|
+
await persist_queued;
|
|
62
|
+
return await this.execute_turn(input, queued_turn);
|
|
63
|
+
});
|
|
64
|
+
this.queue_tail = operation.then(() => undefined, () => undefined);
|
|
65
|
+
return operation;
|
|
66
|
+
}
|
|
67
|
+
/** 中断当前模型调用,并让尚未开始的调度 Turn 按队列顺序收口。 */
|
|
68
|
+
async stop() {
|
|
69
|
+
if (this.disposed || this.stopping)
|
|
70
|
+
return;
|
|
71
|
+
this.stopping = true;
|
|
72
|
+
this.active_abort_controller?.abort(new GroupDispatchStoppedError());
|
|
73
|
+
await this.queue_tail;
|
|
74
|
+
this.active_abort_controller = undefined;
|
|
75
|
+
this.stopping = false;
|
|
76
|
+
}
|
|
77
|
+
/** 永久释放当前 Dispatch Session。 */
|
|
78
|
+
async dispose() {
|
|
79
|
+
if (this.disposed)
|
|
80
|
+
return;
|
|
81
|
+
await this.stop();
|
|
82
|
+
this.disposed = true;
|
|
83
|
+
this.store = undefined;
|
|
84
|
+
}
|
|
85
|
+
/** 执行队首调度 Turn,确保成功、失败和停止都形成持久化终态。 */
|
|
86
|
+
async execute_turn(input, queued_turn) {
|
|
87
|
+
const store = this.require_store();
|
|
88
|
+
if (this.stopping || this.disposed) {
|
|
89
|
+
await this.persist_terminal_turn(queued_turn, "stopped", "Group dispatch stopped");
|
|
90
|
+
throw new GroupDispatchStoppedError();
|
|
91
|
+
}
|
|
92
|
+
const abort_controller = new AbortController();
|
|
93
|
+
this.active_abort_controller = abort_controller;
|
|
94
|
+
await store.append_turn({
|
|
95
|
+
...queued_turn,
|
|
96
|
+
status: "running",
|
|
97
|
+
updated_at: Date.now(),
|
|
98
|
+
});
|
|
99
|
+
try {
|
|
100
|
+
const decision = await this.dispatch_strategy.decide_dispatch({
|
|
101
|
+
...input,
|
|
102
|
+
abort_signal: abort_controller.signal,
|
|
103
|
+
});
|
|
104
|
+
if (this.stopping || this.disposed || abort_controller.signal.aborted) {
|
|
105
|
+
throw new GroupDispatchStoppedError();
|
|
106
|
+
}
|
|
107
|
+
await store.append_turn({
|
|
108
|
+
...queued_turn,
|
|
109
|
+
status: "completed",
|
|
110
|
+
decision,
|
|
111
|
+
updated_at: Date.now(),
|
|
112
|
+
});
|
|
113
|
+
return { dispatch_id: queued_turn.dispatch_id, decision };
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (error instanceof GroupDispatchStoppedError ||
|
|
117
|
+
this.stopping ||
|
|
118
|
+
this.disposed ||
|
|
119
|
+
abort_controller.signal.aborted) {
|
|
120
|
+
await this.persist_terminal_turn(queued_turn, "stopped", "Group dispatch stopped");
|
|
121
|
+
throw new GroupDispatchStoppedError();
|
|
122
|
+
}
|
|
123
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
124
|
+
await this.persist_terminal_turn(queued_turn, "failed", detail);
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
if (this.active_abort_controller === abort_controller) {
|
|
129
|
+
this.active_abort_controller = undefined;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** 提交没有 decision 的失败或停止终态。 */
|
|
134
|
+
async persist_terminal_turn(turn, status, error) {
|
|
135
|
+
await this.require_store().append_turn({
|
|
136
|
+
...turn,
|
|
137
|
+
status,
|
|
138
|
+
error,
|
|
139
|
+
updated_at: Date.now(),
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
require_store() {
|
|
143
|
+
if (!this.store)
|
|
144
|
+
throw new Error("GroupDispatchSession is not initialized");
|
|
145
|
+
return this.store;
|
|
146
|
+
}
|
|
147
|
+
assert_available() {
|
|
148
|
+
if (this.disposed)
|
|
149
|
+
throw new Error("GroupDispatchSession is disposed");
|
|
150
|
+
if (this.stopping)
|
|
151
|
+
throw new Error("GroupDispatchSession is stopping");
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=GroupDispatchSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupDispatchSession.js","sourceRoot":"","sources":["../../src/group/GroupDispatchSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ export declare class GroupSession implements GroupSessionContract {
|
|
|
31
31
|
private readonly group_name;
|
|
32
32
|
private readonly instruction?;
|
|
33
33
|
private readonly members;
|
|
34
|
-
private readonly
|
|
34
|
+
private readonly dispatch_session;
|
|
35
35
|
private readonly workspace?;
|
|
36
36
|
private readonly messages_by_id;
|
|
37
37
|
private readonly subscribers;
|
|
@@ -69,6 +69,8 @@ export declare class GroupSession implements GroupSessionContract {
|
|
|
69
69
|
/** 释放当前上下文及其成员 Session 引用。 */
|
|
70
70
|
dispose(): Promise<void>;
|
|
71
71
|
private run_user_dispatch;
|
|
72
|
+
/** 登记一次用户调度运行;新建和恢复必须经过同一个生命周期入口。 */
|
|
73
|
+
private start_user_dispatch;
|
|
72
74
|
/** GroupSession 唯一的自动调度循环,统一消费已完成成员产生的新消息。 */
|
|
73
75
|
private request_auto_dispatch;
|
|
74
76
|
private run_auto_dispatch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupSession.d.ts","sourceRoot":"","sources":["../../src/group/GroupSession.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAGzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAEV,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAEjB,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAkC,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"GroupSession.d.ts","sourceRoot":"","sources":["../../src/group/GroupSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** GroupSession:一次 Group 群聊上下文的运行时实现。 */
|
|
2
2
|
import { nanoid } from "nanoid";
|
|
3
|
+
import { GroupDispatchSession, GroupDispatchStoppedError, } from "./GroupDispatchSession.js";
|
|
3
4
|
const max_auto_dispatch_count = 32;
|
|
4
5
|
/** Group 的一个独立群聊上下文。 */
|
|
5
6
|
export class GroupSession {
|
|
@@ -9,7 +10,7 @@ export class GroupSession {
|
|
|
9
10
|
group_name;
|
|
10
11
|
instruction;
|
|
11
12
|
members;
|
|
12
|
-
|
|
13
|
+
dispatch_session;
|
|
13
14
|
workspace;
|
|
14
15
|
messages_by_id = [];
|
|
15
16
|
subscribers = new Set();
|
|
@@ -40,7 +41,9 @@ export class GroupSession {
|
|
|
40
41
|
this.group_name = options.group_name;
|
|
41
42
|
this.instruction = options.instruction;
|
|
42
43
|
this.members = options.members;
|
|
43
|
-
this.
|
|
44
|
+
this.dispatch_session = new GroupDispatchSession({
|
|
45
|
+
dispatch_strategy: options.dispatch_strategy,
|
|
46
|
+
});
|
|
44
47
|
this.workspace = options.workspace;
|
|
45
48
|
this.workspace_id = options.workspace?.id;
|
|
46
49
|
}
|
|
@@ -53,6 +56,7 @@ export class GroupSession {
|
|
|
53
56
|
return this;
|
|
54
57
|
this.store = store;
|
|
55
58
|
await store.initialize();
|
|
59
|
+
await this.dispatch_session.initialize(store.dispatch_session);
|
|
56
60
|
const metadata = await store.read_metadata();
|
|
57
61
|
if (metadata.group_id !== this.group_id) {
|
|
58
62
|
throw new Error(`GroupSession "${this.id}" belongs to another Group`);
|
|
@@ -74,7 +78,8 @@ export class GroupSession {
|
|
|
74
78
|
turn_id: checkpoint.turn_id,
|
|
75
79
|
root_message_id: checkpoint.root_message_id,
|
|
76
80
|
context_message_ids: checkpoint.context_message_ids,
|
|
77
|
-
|
|
81
|
+
dispatch_stage: checkpoint.dispatch_stage,
|
|
82
|
+
auto_pending: checkpoint.dispatch_stage === "auto",
|
|
78
83
|
stopped: false,
|
|
79
84
|
recovered: true,
|
|
80
85
|
});
|
|
@@ -116,7 +121,14 @@ export class GroupSession {
|
|
|
116
121
|
if (Object.keys(valid_member_session_ids).length !== Object.keys(member_session_ids).length) {
|
|
117
122
|
await store.update_metadata({ member_session_ids: valid_member_session_ids });
|
|
118
123
|
}
|
|
119
|
-
|
|
124
|
+
for (const group_turn of this.group_turns_by_id.values()) {
|
|
125
|
+
if (group_turn.dispatch_stage !== "user")
|
|
126
|
+
continue;
|
|
127
|
+
const message = this.messages_by_id.find((item) => item.id === group_turn.root_message_id);
|
|
128
|
+
if (message)
|
|
129
|
+
this.start_user_dispatch(message, group_turn);
|
|
130
|
+
}
|
|
131
|
+
if ([...this.group_turns_by_id.values()].some((turn) => turn.auto_pending) || this.auto_frontier_messages.length > 0) {
|
|
120
132
|
this.request_auto_dispatch();
|
|
121
133
|
}
|
|
122
134
|
return this;
|
|
@@ -134,20 +146,14 @@ export class GroupSession {
|
|
|
134
146
|
turn_id,
|
|
135
147
|
root_message_id: message.id,
|
|
136
148
|
context_message_ids: [...context_message_ids, message.id],
|
|
149
|
+
dispatch_stage: "user",
|
|
137
150
|
auto_pending: false,
|
|
138
151
|
stopped: false,
|
|
139
152
|
};
|
|
140
153
|
this.group_turns_by_id.set(turn_id, group_turn);
|
|
141
154
|
await this.persist_dispatch_checkpoint();
|
|
142
155
|
this.publish_status(turn_id, "dispatching", { message_id: message.id });
|
|
143
|
-
|
|
144
|
-
group_turn.user_dispatch = dispatch;
|
|
145
|
-
this.pending_deliveries.add(dispatch);
|
|
146
|
-
void dispatch.finally(() => {
|
|
147
|
-
this.pending_deliveries.delete(dispatch);
|
|
148
|
-
if (group_turn.auto_pending)
|
|
149
|
-
this.request_auto_dispatch();
|
|
150
|
-
});
|
|
156
|
+
this.start_user_dispatch(message, group_turn);
|
|
151
157
|
return { turn_id, success: true, message_count: this.messages_by_id.length };
|
|
152
158
|
}
|
|
153
159
|
/** 读取共享消息快照。 */
|
|
@@ -180,7 +186,10 @@ export class GroupSession {
|
|
|
180
186
|
return;
|
|
181
187
|
this.stop_requested = true;
|
|
182
188
|
this.publish_status(undefined, "stopped");
|
|
183
|
-
await Promise.allSettled([
|
|
189
|
+
await Promise.allSettled([
|
|
190
|
+
this.dispatch_session.stop(),
|
|
191
|
+
...[...this.member_sessions.values()].map((session) => session.stop()),
|
|
192
|
+
]);
|
|
184
193
|
await Promise.allSettled([...this.pending_deliveries]);
|
|
185
194
|
if (this.auto_dispatch_promise)
|
|
186
195
|
await this.auto_dispatch_promise;
|
|
@@ -196,6 +205,7 @@ export class GroupSession {
|
|
|
196
205
|
if (this.disposed)
|
|
197
206
|
return;
|
|
198
207
|
await this.stop();
|
|
208
|
+
await this.dispatch_session.dispose();
|
|
199
209
|
this.disposed = true;
|
|
200
210
|
this.subscribers.clear();
|
|
201
211
|
for (const unsubscribe of this.member_session_unsubscribes.values())
|
|
@@ -215,28 +225,49 @@ export class GroupSession {
|
|
|
215
225
|
if (!group_turn)
|
|
216
226
|
return;
|
|
217
227
|
try {
|
|
218
|
-
const
|
|
228
|
+
const dispatch = await this.decide_dispatch("user", message, [message]);
|
|
219
229
|
const context_messages = group_turn.context_message_ids
|
|
220
230
|
.map((message_id) => this.messages_by_id.find((item) => item.id === message_id))
|
|
221
231
|
.filter((item) => Boolean(item));
|
|
222
|
-
await this.run_dispatch_plan(decision, message, context_messages, turn_id);
|
|
232
|
+
await this.run_dispatch_plan(dispatch.decision, message, context_messages, turn_id, dispatch.dispatch_id);
|
|
223
233
|
if (this.stop_requested || this.disposed) {
|
|
224
234
|
group_turn.stopped = true;
|
|
225
235
|
this.group_turns_by_id.delete(turn_id);
|
|
226
236
|
await this.persist_dispatch_checkpoint();
|
|
227
237
|
return;
|
|
228
238
|
}
|
|
229
|
-
|
|
239
|
+
if (dispatch.decision.terminal) {
|
|
240
|
+
this.group_turns_by_id.delete(turn_id);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
group_turn.dispatch_stage = "auto";
|
|
244
|
+
group_turn.auto_pending = true;
|
|
245
|
+
}
|
|
230
246
|
await this.persist_dispatch_checkpoint();
|
|
247
|
+
if (dispatch.decision.terminal)
|
|
248
|
+
this.publish_status(turn_id, "idle");
|
|
231
249
|
}
|
|
232
250
|
catch (error) {
|
|
233
251
|
group_turn.stopped = this.stop_requested;
|
|
234
|
-
|
|
252
|
+
if (!(error instanceof GroupDispatchStoppedError)) {
|
|
253
|
+
await this.append_dispatch_failure(message, error);
|
|
254
|
+
}
|
|
235
255
|
this.group_turns_by_id.delete(turn_id);
|
|
236
256
|
await this.persist_dispatch_checkpoint();
|
|
237
257
|
this.publish_status(turn_id, this.stop_requested ? "stopped" : "failed");
|
|
238
258
|
}
|
|
239
259
|
}
|
|
260
|
+
/** 登记一次用户调度运行;新建和恢复必须经过同一个生命周期入口。 */
|
|
261
|
+
start_user_dispatch(message, group_turn) {
|
|
262
|
+
const dispatch = this.run_user_dispatch(message, group_turn.turn_id);
|
|
263
|
+
group_turn.user_dispatch = dispatch;
|
|
264
|
+
this.pending_deliveries.add(dispatch);
|
|
265
|
+
void dispatch.finally(() => {
|
|
266
|
+
this.pending_deliveries.delete(dispatch);
|
|
267
|
+
if (group_turn.auto_pending)
|
|
268
|
+
this.request_auto_dispatch();
|
|
269
|
+
});
|
|
270
|
+
}
|
|
240
271
|
/** GroupSession 唯一的自动调度循环,统一消费已完成成员产生的新消息。 */
|
|
241
272
|
request_auto_dispatch() {
|
|
242
273
|
if (this.stop_requested || this.disposed)
|
|
@@ -266,8 +297,8 @@ export class GroupSession {
|
|
|
266
297
|
const message = frontier_messages[frontier_messages.length - 1];
|
|
267
298
|
this.publish_status(undefined, "dispatching", { message_id: message.id });
|
|
268
299
|
try {
|
|
269
|
-
const
|
|
270
|
-
const dispatch_key = JSON.stringify(decision);
|
|
300
|
+
const dispatch = await this.decide_dispatch("auto", message, frontier_messages);
|
|
301
|
+
const dispatch_key = JSON.stringify(dispatch.decision);
|
|
271
302
|
if (this.auto_dispatch_path_keys.has(dispatch_key)) {
|
|
272
303
|
await this.append_message({ sender_type: "system", sender_id: "system", text: "Group auto dispatch detected a repeated path.", reply_to: message.id });
|
|
273
304
|
frontier_messages = [];
|
|
@@ -278,8 +309,8 @@ export class GroupSession {
|
|
|
278
309
|
continue;
|
|
279
310
|
}
|
|
280
311
|
this.auto_dispatch_path_keys.add(dispatch_key);
|
|
281
|
-
frontier_messages = await this.run_dispatch_plan(decision, message, this.messages_by_id, undefined,
|
|
282
|
-
if (decision.terminal || frontier_messages.length === 0) {
|
|
312
|
+
frontier_messages = await this.run_dispatch_plan(dispatch.decision, message, this.messages_by_id, undefined, dispatch.dispatch_id);
|
|
313
|
+
if (dispatch.decision.terminal || frontier_messages.length === 0) {
|
|
283
314
|
frontier_messages = [];
|
|
284
315
|
this.auto_frontier_messages = [];
|
|
285
316
|
this.auto_dispatch_path_keys.clear();
|
|
@@ -293,6 +324,8 @@ export class GroupSession {
|
|
|
293
324
|
}
|
|
294
325
|
}
|
|
295
326
|
catch (error) {
|
|
327
|
+
if (error instanceof GroupDispatchStoppedError)
|
|
328
|
+
return;
|
|
296
329
|
await this.append_dispatch_failure(message, error);
|
|
297
330
|
this.publish_status(undefined, "failed");
|
|
298
331
|
frontier_messages = [];
|
|
@@ -330,17 +363,16 @@ export class GroupSession {
|
|
|
330
363
|
for (const message of candidate_messages)
|
|
331
364
|
this.consumed_auto_message_ids.add(message.id);
|
|
332
365
|
await this.persist_dispatch_checkpoint();
|
|
333
|
-
const dispatch_id = `group-dispatch-${nanoid(12)}`;
|
|
334
366
|
dispatch_count = 0;
|
|
335
367
|
const message = candidate_messages[candidate_messages.length - 1];
|
|
336
368
|
this.publish_status(undefined, "dispatching", { message_id: message.id });
|
|
337
369
|
try {
|
|
338
|
-
const
|
|
370
|
+
const dispatch = await this.decide_dispatch("auto", message, pending_messages);
|
|
339
371
|
const context_messages = this.messages_by_id.filter((item) => item.turn_id && batch_turn_ids.has(item.turn_id));
|
|
340
|
-
const outputs = await this.run_dispatch_plan(decision, message, context_messages, undefined, dispatch_id);
|
|
372
|
+
const outputs = await this.run_dispatch_plan(dispatch.decision, message, context_messages, undefined, dispatch.dispatch_id);
|
|
341
373
|
for (const turn_id of batch_turn_ids)
|
|
342
374
|
this.group_turns_by_id.delete(turn_id);
|
|
343
|
-
if (decision.terminal || outputs.length === 0) {
|
|
375
|
+
if (dispatch.decision.terminal || outputs.length === 0) {
|
|
344
376
|
this.auto_frontier_messages = [];
|
|
345
377
|
await this.persist_dispatch_checkpoint();
|
|
346
378
|
this.publish_status(undefined, "idle");
|
|
@@ -353,6 +385,8 @@ export class GroupSession {
|
|
|
353
385
|
}
|
|
354
386
|
}
|
|
355
387
|
catch (error) {
|
|
388
|
+
if (error instanceof GroupDispatchStoppedError)
|
|
389
|
+
return;
|
|
356
390
|
await this.append_dispatch_failure(message, error);
|
|
357
391
|
this.publish_status(undefined, "failed");
|
|
358
392
|
for (const turn_id of batch_turn_ids)
|
|
@@ -363,7 +397,7 @@ export class GroupSession {
|
|
|
363
397
|
}
|
|
364
398
|
}
|
|
365
399
|
async decide_dispatch(trigger, message, pending_messages) {
|
|
366
|
-
return await this.
|
|
400
|
+
return await this.dispatch_session.decide({
|
|
367
401
|
trigger,
|
|
368
402
|
message,
|
|
369
403
|
pending_messages,
|
|
@@ -479,8 +513,10 @@ export class GroupSession {
|
|
|
479
513
|
await this.append_member_failure(agent, message, result.error || "未知错误");
|
|
480
514
|
return null;
|
|
481
515
|
}
|
|
482
|
-
if (!result.text?.trim())
|
|
516
|
+
if (!result.text?.trim()) {
|
|
517
|
+
await this.append_member_failure(agent, message, "未生成有效回复");
|
|
483
518
|
return null;
|
|
519
|
+
}
|
|
484
520
|
const reply = await this.append_message({
|
|
485
521
|
sender_type: "agent",
|
|
486
522
|
sender_id: agent.id,
|
|
@@ -591,7 +627,7 @@ export class GroupSession {
|
|
|
591
627
|
`Current message from ${message.sender_type === "agent" ? message.sender_id : "user"}: ${message.text}`,
|
|
592
628
|
dispatch_instruction,
|
|
593
629
|
`你只能代表成员 ${agent.id} 自己发言。不得代替、指挥、裁定、总结或转述其他成员;不得假装自己是其他成员;不得创建队长、裁判或协调者。`,
|
|
594
|
-
"
|
|
630
|
+
"你已被 Group 调度选中,必须直接回复当前消息。",
|
|
595
631
|
].filter(Boolean).join("\n");
|
|
596
632
|
}
|
|
597
633
|
get_member(agent_id) {
|
|
@@ -635,6 +671,7 @@ export class GroupSession {
|
|
|
635
671
|
turn_id: group_turn.turn_id,
|
|
636
672
|
root_message_id: group_turn.root_message_id,
|
|
637
673
|
context_message_ids: [...group_turn.context_message_ids],
|
|
674
|
+
dispatch_stage: group_turn.dispatch_stage,
|
|
638
675
|
})),
|
|
639
676
|
auto_frontier_message_ids: this.auto_frontier_messages.map((message) => message.id),
|
|
640
677
|
});
|