@shepai/cli 1.164.0-pr514.db33061 → 1.164.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts +1 -3
- package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts +0 -19
- package/dist/packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts +1 -7
- package/dist/packages/core/src/application/ports/output/services/interactive-session-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts +0 -2
- package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.js +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts +0 -12
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.js +0 -31
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts +7 -38
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +45 -152
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts +1 -17
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.js +47 -131
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.js +1 -3
- package/dist/src/presentation/web/components/assistant-ui/thread.js +1 -8
- package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatTab.js +7 -13
- package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts +0 -16
- package/dist/src/presentation/web/components/features/chat/useChatRuntime.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/useChatRuntime.js +7 -98
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__2b71641f._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e0be67c7._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e0be67c7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
- package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0727935d._.js +1 -1
- package/web/.next/server/chunks/ssr/_0727935d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
- package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_2f8f89fb._.js +3 -0
- package/web/.next/server/chunks/ssr/{_7a6f6a76._.js.map → _2f8f89fb._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_8276397a._.js → _52403a07._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_8276397a._.js.map → _52403a07._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0020fddd._.js → _8b57edb8._.js} +2 -2
- package/web/.next/server/chunks/ssr/_8b57edb8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_9215e9ec._.js +1 -1
- package/web/.next/server/chunks/ssr/_9215e9ec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
- package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
- package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_fdc356bf._.js → _c9f903f2._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_fdc356bf._.js.map → _c9f903f2._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
- package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
- package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +47 -47
- package/web/.next/static/chunks/{d6a1a06ee3c12489.js → 25e894a1de46b5fb.js} +1 -1
- package/web/.next/static/chunks/{1ad664f7081cf4c0.js → 2609c8fc6f14cb26.js} +1 -1
- package/web/.next/static/chunks/{16eea21868510afd.js → 29f0d874b1fde3d6.js} +2 -2
- package/web/.next/static/chunks/400e93efac983a76.css +1 -0
- package/web/.next/static/chunks/{5d8c83c576ec1a7b.js → 498e45f8e05a5491.js} +1 -1
- package/web/.next/static/chunks/{ee9fe376b60c3cab.js → 56955fa252a9f3ed.js} +2 -2
- package/web/.next/static/chunks/7f491899a2fe2fd7.js +1 -0
- package/web/.next/static/chunks/{dedf6ca63c5468fa.js → a8243f8d06bdcef0.js} +2 -2
- package/web/.next/static/chunks/{4788a37d8c608e30.js → ce0316338f7e01e6.js} +1 -1
- package/web/.next/static/chunks/{e77d053610055e0c.js → ce87ded6cc38b4de.js} +1 -1
- package/web/.next/static/chunks/{9162bb869b3543e2.js → cf000ba1a3f11439.js} +1 -1
- package/web/.next/static/chunks/{940bca62e44f3e90.js → cf75fade434602c6.js} +2 -2
- package/web/.next/static/chunks/{8094762f5cda4934.js → d9e4d90ef254da84.js} +1 -1
- package/web/.next/static/chunks/{7d40e79e524c8d18.js → dc21cf85bfa262a7.js} +2 -2
- package/web/.next/static/chunks/e6398f94cffe9bc2.js +1 -0
- package/web/.next/static/chunks/{4f7d9c08a205bc4e.js → ecfd93d61bf4d933.js} +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.d.ts +0 -18
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-add-session-usage-tracking.js +0 -32
- package/web/.next/server/chunks/ssr/_0020fddd._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_7a6f6a76._.js +0 -3
- package/web/.next/static/chunks/7cec51e9bd7d1f4f.js +0 -1
- package/web/.next/static/chunks/a760d5829014058d.js +0 -1
- package/web/.next/static/chunks/eeadf13c0ea6cbe0.css +0 -1
- /package/web/.next/static/{lQkUWQQS5aR4vq6WUZ2yr → rav6zzO3q2NtCKwg9XZXP}/_buildManifest.js +0 -0
- /package/web/.next/static/{lQkUWQQS5aR4vq6WUZ2yr → rav6zzO3q2NtCKwg9XZXP}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{lQkUWQQS5aR4vq6WUZ2yr → rav6zzO3q2NtCKwg9XZXP}/_ssgManifest.js +0 -0
|
@@ -42,10 +42,8 @@ export interface InteractiveAgentSessionHandle {
|
|
|
42
42
|
send(message: string): Promise<void>;
|
|
43
43
|
/** Iterate response events from the agent */
|
|
44
44
|
stream(): AsyncIterable<InteractiveAgentEvent>;
|
|
45
|
-
/** Terminate the session
|
|
45
|
+
/** Terminate the session */
|
|
46
46
|
close(): Promise<void>;
|
|
47
|
-
/** Abort the current operation immediately (kills the agent process) */
|
|
48
|
-
abort(): void;
|
|
49
47
|
}
|
|
50
48
|
/** Executor interface for interactive agent sessions. */
|
|
51
49
|
export interface IInteractiveAgentExecutor {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-agent-executor.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kEAAkE;AAClE,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EACA,OAAO,GACP,UAAU,GACV,aAAa,GACb,QAAQ,GACR,MAAM,GACN,OAAO,GACP,MAAM,GACN,WAAW,GACX,YAAY,GACZ,cAAc,GACd,eAAe,GACf,WAAW,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,6CAA6C;IAC7C,MAAM,IAAI,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC/C,
|
|
1
|
+
{"version":3,"file":"interactive-agent-executor.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kEAAkE;AAClE,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EACA,OAAO,GACP,UAAU,GACV,aAAa,GACb,QAAQ,GACR,MAAM,GACN,OAAO,GACP,MAAM,GACN,WAAW,GACX,YAAY,GACZ,cAAc,GACd,eAAe,GACf,WAAW,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,6CAA6C;IAC7C,MAAM,IAAI,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC/C,4BAA4B;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,yDAAyD;AACzD,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACxF,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC3C"}
|
|
@@ -74,24 +74,5 @@ export interface IInteractiveSessionRepository {
|
|
|
74
74
|
* Returns a map of featureId → turnStatus (only 'processing' | 'unread' entries).
|
|
75
75
|
*/
|
|
76
76
|
getAllActiveTurnStatuses(): Promise<Map<string, string>>;
|
|
77
|
-
/**
|
|
78
|
-
* Accumulate usage from a completed turn onto the session totals.
|
|
79
|
-
* All values are ADDED to the existing totals (not replaced).
|
|
80
|
-
*/
|
|
81
|
-
accumulateUsage(id: string, usage: {
|
|
82
|
-
costUsd: number;
|
|
83
|
-
inputTokens: number;
|
|
84
|
-
outputTokens: number;
|
|
85
|
-
turns: number;
|
|
86
|
-
}): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Get cumulative usage for a session.
|
|
89
|
-
*/
|
|
90
|
-
getUsage(id: string): Promise<{
|
|
91
|
-
totalCostUsd: number;
|
|
92
|
-
totalInputTokens: number;
|
|
93
|
-
totalOutputTokens: number;
|
|
94
|
-
totalTurns: number;
|
|
95
|
-
} | null>;
|
|
96
77
|
}
|
|
97
78
|
//# sourceMappingURL=interactive-session-repository.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-session-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE/C;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5F;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;OAGG;IACH,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpE;;;OAGG;IACH,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-session-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/interactive-session-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE/C;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5F;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;OAGG;IACH,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpE;;;OAGG;IACH,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1D"}
|
|
@@ -61,12 +61,6 @@ export interface SessionInfo {
|
|
|
61
61
|
startedAt: string;
|
|
62
62
|
idleTimeoutMinutes: number;
|
|
63
63
|
lastActivityAt: string;
|
|
64
|
-
/** Cumulative cost in USD for this session (null if not yet tracked) */
|
|
65
|
-
totalCostUsd: number | null;
|
|
66
|
-
/** Cumulative input tokens for this session */
|
|
67
|
-
totalInputTokens: number | null;
|
|
68
|
-
/** Cumulative output tokens for this session */
|
|
69
|
-
totalOutputTokens: number | null;
|
|
70
64
|
}
|
|
71
65
|
/**
|
|
72
66
|
* Service interface for interactive session lifecycle management.
|
|
@@ -157,7 +151,7 @@ export interface IInteractiveSessionService {
|
|
|
157
151
|
*
|
|
158
152
|
* @returns The persisted user message
|
|
159
153
|
*/
|
|
160
|
-
sendUserMessage(featureId: string, content: string, worktreePath: string
|
|
154
|
+
sendUserMessage(featureId: string, content: string, worktreePath: string): Promise<InteractiveMessage>;
|
|
161
155
|
/**
|
|
162
156
|
* Get the complete chat state for a feature in a single call.
|
|
163
157
|
* Merges DB messages with any in-flight streaming content.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-session-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/interactive-session-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,EAAE,OAAO,CAAC;IACd,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzD,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iEAAiE;IACjE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,+DAA+D;IAC/D,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-session-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/interactive-session-service.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-interactive-message.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AACvH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"send-interactive-message.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/interactive/send-interactive-message.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AACvH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBACa,6BAA6B;IAGtC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,0BAA0B;IAGhD,OAAO,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAG/E"}
|
|
@@ -32,7 +32,7 @@ let SendInteractiveMessageUseCase = class SendInteractiveMessageUseCase {
|
|
|
32
32
|
this.service = service;
|
|
33
33
|
}
|
|
34
34
|
async execute(input) {
|
|
35
|
-
return this.service.sendUserMessage(input.featureId, input.content, input.worktreePath
|
|
35
|
+
return this.service.sendUserMessage(input.featureId, input.content, input.worktreePath);
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
SendInteractiveMessageUseCase = __decorate([
|
|
@@ -24,17 +24,5 @@ export declare class SQLiteInteractiveSessionRepository implements IInteractiveS
|
|
|
24
24
|
updateTurnStatus(id: string, turnStatus: string): Promise<void>;
|
|
25
25
|
getTurnStatuses(featureIds: string[]): Promise<Map<string, string>>;
|
|
26
26
|
getAllActiveTurnStatuses(): Promise<Map<string, string>>;
|
|
27
|
-
accumulateUsage(id: string, usage: {
|
|
28
|
-
costUsd: number;
|
|
29
|
-
inputTokens: number;
|
|
30
|
-
outputTokens: number;
|
|
31
|
-
turns: number;
|
|
32
|
-
}): Promise<void>;
|
|
33
|
-
getUsage(id: string): Promise<{
|
|
34
|
-
totalCostUsd: number;
|
|
35
|
-
totalInputTokens: number;
|
|
36
|
-
totalOutputTokens: number;
|
|
37
|
-
totalTurns: number;
|
|
38
|
-
} | null>;
|
|
39
27
|
}
|
|
40
28
|
//# sourceMappingURL=sqlite-interactive-session.repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-interactive-session.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yFAAyF,CAAC;AAC7I,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAO5E,qBACa,kCAAmC,YAAW,6BAA6B;IAC1E,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAOxD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAStE,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO9C,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,wBAAwB,EAChC,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,IAAI,CAAC;IAeV,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAStC,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvE,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOrD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyBnE,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-interactive-session.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yFAAyF,CAAC;AAC7I,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAO5E,qBACa,kCAAmC,YAAW,6BAA6B;IAC1E,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAOxD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAStE,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO9C,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,wBAAwB,EAChC,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,IAAI,CAAC;IAeV,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAStC,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvE,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOrD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyBnE,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAkB/D"}
|
package/dist/packages/core/src/infrastructure/repositories/sqlite-interactive-session.repository.js
CHANGED
|
@@ -129,37 +129,6 @@ let SQLiteInteractiveSessionRepository = class SQLiteInteractiveSessionRepositor
|
|
|
129
129
|
}
|
|
130
130
|
return result;
|
|
131
131
|
}
|
|
132
|
-
async accumulateUsage(id, usage) {
|
|
133
|
-
this.db
|
|
134
|
-
.prepare(`UPDATE interactive_sessions SET
|
|
135
|
-
total_cost_usd = total_cost_usd + @cost_usd,
|
|
136
|
-
total_input_tokens = total_input_tokens + @input_tokens,
|
|
137
|
-
total_output_tokens = total_output_tokens + @output_tokens,
|
|
138
|
-
total_turns = total_turns + @turns,
|
|
139
|
-
updated_at = @updated_at
|
|
140
|
-
WHERE id = @id`)
|
|
141
|
-
.run({
|
|
142
|
-
id,
|
|
143
|
-
cost_usd: usage.costUsd,
|
|
144
|
-
input_tokens: usage.inputTokens,
|
|
145
|
-
output_tokens: usage.outputTokens,
|
|
146
|
-
turns: usage.turns,
|
|
147
|
-
updated_at: Date.now(),
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
async getUsage(id) {
|
|
151
|
-
const row = this.db
|
|
152
|
-
.prepare('SELECT total_cost_usd, total_input_tokens, total_output_tokens, total_turns FROM interactive_sessions WHERE id = ?')
|
|
153
|
-
.get(id);
|
|
154
|
-
if (!row)
|
|
155
|
-
return null;
|
|
156
|
-
return {
|
|
157
|
-
totalCostUsd: row.total_cost_usd,
|
|
158
|
-
totalInputTokens: row.total_input_tokens,
|
|
159
|
-
totalOutputTokens: row.total_output_tokens,
|
|
160
|
-
totalTurns: row.total_turns,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
132
|
};
|
|
164
133
|
SQLiteInteractiveSessionRepository = __decorate([
|
|
165
134
|
injectable(),
|
|
@@ -5,28 +5,6 @@
|
|
|
5
5
|
* @anthropic-ai/claude-agent-sdk V2 session API. This is the ONLY file
|
|
6
6
|
* that imports from the SDK.
|
|
7
7
|
*
|
|
8
|
-
* ## V2 API Stability Notice
|
|
9
|
-
*
|
|
10
|
-
* This file uses the `unstable_v2_*` session API. The V2 API is chosen over
|
|
11
|
-
* the stable V1 `query()` API because V2 maintains a persistent agent process
|
|
12
|
-
* across turns, providing near-instant turn responses. V1 `query()` spawns a
|
|
13
|
-
* new process per turn with `resume`, adding 5-15s latency — unacceptable
|
|
14
|
-
* for interactive chat.
|
|
15
|
-
*
|
|
16
|
-
* The SDK version is pinned exactly in package.json to prevent surprise
|
|
17
|
-
* breakage. If Anthropic removes the V2 API, migrate to V1 `query()` with
|
|
18
|
-
* `resume: sessionId` — the InteractiveAgentSessionHandle interface is
|
|
19
|
-
* designed to support either backend transparently.
|
|
20
|
-
*
|
|
21
|
-
* ## V2 Limitations (vs V1 query())
|
|
22
|
-
*
|
|
23
|
-
* SDKSessionOptions does NOT support: `cwd`, `maxTurns`, `maxBudgetUsd`,
|
|
24
|
-
* `abortController`, `settingSources`, `persistSession`, `effort`.
|
|
25
|
-
* These must be handled at the service layer:
|
|
26
|
-
* - cwd: Handled via process.chdir() mutex (see withCwd)
|
|
27
|
-
* - abort: Handled via SDKSession.close() which kills the process
|
|
28
|
-
* - maxTurns/maxBudgetUsd: Should be tracked by InteractiveSessionService
|
|
29
|
-
*
|
|
30
8
|
* Design decisions:
|
|
31
9
|
* - The CLAUDECODE env var is stripped to prevent nested-session detection
|
|
32
10
|
* errors when shep itself is running inside a Claude Code session.
|
|
@@ -38,22 +16,14 @@ export declare class ClaudeCodeInteractiveExecutor implements IInteractiveAgentE
|
|
|
38
16
|
createSession(options: InteractiveAgentOptions): Promise<InteractiveAgentSessionHandle>;
|
|
39
17
|
resumeSession(sessionId: string, options: InteractiveAgentOptions): Promise<InteractiveAgentSessionHandle>;
|
|
40
18
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* The mutex is async to serialize across concurrent API request handlers.
|
|
19
|
+
* SDKSessionOptions (V2) does not support a `cwd` parameter.
|
|
20
|
+
* Temporarily change process.cwd() for session creation, then restore.
|
|
21
|
+
* This is safe because Node.js is single-threaded and SDK session creation
|
|
22
|
+
* is synchronous (returns immediately, spawns process in background).
|
|
46
23
|
*/
|
|
47
24
|
private withCwd;
|
|
48
25
|
private buildSdkOptions;
|
|
49
26
|
private wrapSession;
|
|
50
|
-
/**
|
|
51
|
-
* Map the SDK message stream to domain events.
|
|
52
|
-
*
|
|
53
|
-
* Tracks whether streaming deltas (`stream_event`) have been emitted for
|
|
54
|
-
* the current turn. When deltas are available, the `assistant` message's
|
|
55
|
-
* text blocks are skipped to prevent double-emission of the same content.
|
|
56
|
-
*/
|
|
57
27
|
private mapStream;
|
|
58
28
|
/**
|
|
59
29
|
* Map a single SDK message to zero or more InteractiveAgentEvents.
|
|
@@ -61,13 +31,12 @@ export declare class ClaudeCodeInteractiveExecutor implements IInteractiveAgentE
|
|
|
61
31
|
* SDK message types we handle:
|
|
62
32
|
* - stream_event (SDKPartialAssistantMessage): streaming content deltas
|
|
63
33
|
* - assistant (SDKAssistantMessage): complete assistant turn with tool_use blocks
|
|
64
|
-
* - result (SDKResultMessage): success or error result
|
|
65
|
-
* - system (SDKStatusMessage / SDKSystemMessage): status updates
|
|
34
|
+
* - result (SDKResultMessage): success or error result
|
|
35
|
+
* - system (SDKStatusMessage / SDKSystemMessage): status updates
|
|
66
36
|
* - tool_use_summary: tool execution summaries
|
|
67
37
|
* - tool_progress: tool execution progress
|
|
68
|
-
* - rate_limit_event: rate limit notifications
|
|
69
38
|
*
|
|
70
|
-
* Other message types are silently ignored (user replays, auth,
|
|
39
|
+
* Other message types are silently ignored (user replays, auth, etc.)
|
|
71
40
|
*/
|
|
72
41
|
private mapSdkMessage;
|
|
73
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-interactive-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-code-interactive-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAE9B,MAAM,wFAAwF,CAAC;AAKhG,qBAAa,6BAA8B,YAAW,yBAAyB;IACvE,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAOvF,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC;IAOzC;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;YAiBJ,SAAS;IASxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;CA0MtB"}
|
|
@@ -5,28 +5,6 @@
|
|
|
5
5
|
* @anthropic-ai/claude-agent-sdk V2 session API. This is the ONLY file
|
|
6
6
|
* that imports from the SDK.
|
|
7
7
|
*
|
|
8
|
-
* ## V2 API Stability Notice
|
|
9
|
-
*
|
|
10
|
-
* This file uses the `unstable_v2_*` session API. The V2 API is chosen over
|
|
11
|
-
* the stable V1 `query()` API because V2 maintains a persistent agent process
|
|
12
|
-
* across turns, providing near-instant turn responses. V1 `query()` spawns a
|
|
13
|
-
* new process per turn with `resume`, adding 5-15s latency — unacceptable
|
|
14
|
-
* for interactive chat.
|
|
15
|
-
*
|
|
16
|
-
* The SDK version is pinned exactly in package.json to prevent surprise
|
|
17
|
-
* breakage. If Anthropic removes the V2 API, migrate to V1 `query()` with
|
|
18
|
-
* `resume: sessionId` — the InteractiveAgentSessionHandle interface is
|
|
19
|
-
* designed to support either backend transparently.
|
|
20
|
-
*
|
|
21
|
-
* ## V2 Limitations (vs V1 query())
|
|
22
|
-
*
|
|
23
|
-
* SDKSessionOptions does NOT support: `cwd`, `maxTurns`, `maxBudgetUsd`,
|
|
24
|
-
* `abortController`, `settingSources`, `persistSession`, `effort`.
|
|
25
|
-
* These must be handled at the service layer:
|
|
26
|
-
* - cwd: Handled via process.chdir() mutex (see withCwd)
|
|
27
|
-
* - abort: Handled via SDKSession.close() which kills the process
|
|
28
|
-
* - maxTurns/maxBudgetUsd: Should be tracked by InteractiveSessionService
|
|
29
|
-
*
|
|
30
8
|
* Design decisions:
|
|
31
9
|
* - The CLAUDECODE env var is stripped to prevent nested-session detection
|
|
32
10
|
* errors when shep itself is running inside a Claude Code session.
|
|
@@ -36,49 +14,30 @@
|
|
|
36
14
|
import { unstable_v2_createSession, unstable_v2_resumeSession, } from '@anthropic-ai/claude-agent-sdk';
|
|
37
15
|
/** Default model used when options.model is not specified. */
|
|
38
16
|
const DEFAULT_MODEL = 'claude-sonnet-4-6';
|
|
39
|
-
/**
|
|
40
|
-
* Process-level mutex for process.chdir().
|
|
41
|
-
*
|
|
42
|
-
* SDKSessionOptions (V2) does not support a `cwd` parameter, so we
|
|
43
|
-
* temporarily change process.cwd() during session creation. Although
|
|
44
|
-
* session creation itself is synchronous, concurrent API requests can
|
|
45
|
-
* interleave between chdir calls. This mutex serializes all chdir
|
|
46
|
-
* operations to prevent one session from inheriting another's cwd.
|
|
47
|
-
*/
|
|
48
|
-
let cwdMutexPromise = Promise.resolve();
|
|
49
17
|
export class ClaudeCodeInteractiveExecutor {
|
|
50
18
|
async createSession(options) {
|
|
51
|
-
const sdkSession =
|
|
19
|
+
const sdkSession = this.withCwd(options.cwd, () => unstable_v2_createSession(this.buildSdkOptions(options)));
|
|
52
20
|
return this.wrapSession(sdkSession);
|
|
53
21
|
}
|
|
54
22
|
async resumeSession(sessionId, options) {
|
|
55
|
-
const sdkSession =
|
|
23
|
+
const sdkSession = this.withCwd(options.cwd, () => unstable_v2_resumeSession(sessionId, this.buildSdkOptions(options)));
|
|
56
24
|
return this.wrapSession(sdkSession);
|
|
57
25
|
}
|
|
58
26
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* The mutex is async to serialize across concurrent API request handlers.
|
|
27
|
+
* SDKSessionOptions (V2) does not support a `cwd` parameter.
|
|
28
|
+
* Temporarily change process.cwd() for session creation, then restore.
|
|
29
|
+
* This is safe because Node.js is single-threaded and SDK session creation
|
|
30
|
+
* is synchronous (returns immediately, spawns process in background).
|
|
64
31
|
*/
|
|
65
32
|
withCwd(cwd, fn) {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
process.chdir(cwd);
|
|
75
|
-
return fn();
|
|
76
|
-
}
|
|
77
|
-
finally {
|
|
78
|
-
process.chdir(originalCwd);
|
|
79
|
-
resolve();
|
|
80
|
-
}
|
|
81
|
-
});
|
|
33
|
+
const originalCwd = process.cwd();
|
|
34
|
+
try {
|
|
35
|
+
process.chdir(cwd);
|
|
36
|
+
return fn();
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
process.chdir(originalCwd);
|
|
40
|
+
}
|
|
82
41
|
}
|
|
83
42
|
buildSdkOptions(options) {
|
|
84
43
|
// Strip CLAUDECODE env var to prevent nested-session detection errors.
|
|
@@ -98,49 +57,28 @@ export class ClaudeCodeInteractiveExecutor {
|
|
|
98
57
|
};
|
|
99
58
|
}
|
|
100
59
|
wrapSession(sdkSession) {
|
|
101
|
-
// SDK session ID is not available until after the first message exchange.
|
|
102
|
-
// Track it via a mutable variable updated by the stream mapper.
|
|
103
|
-
let resolvedSessionId = '';
|
|
104
60
|
return {
|
|
105
61
|
get sessionId() {
|
|
106
|
-
|
|
62
|
+
// SDK session ID is not available until after the first message exchange.
|
|
63
|
+
// Return empty string before that — callers should read it after streaming.
|
|
64
|
+
try {
|
|
65
|
+
return sdkSession.sessionId;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return '';
|
|
69
|
+
}
|
|
107
70
|
},
|
|
108
71
|
send: (message) => sdkSession.send(message),
|
|
109
|
-
stream: () => this.mapStream(sdkSession
|
|
72
|
+
stream: () => this.mapStream(sdkSession),
|
|
110
73
|
close: async () => sdkSession.close(),
|
|
111
|
-
abort: () => {
|
|
112
|
-
// V2 SDKSession.close() synchronously kills the agent process.
|
|
113
|
-
// This is the only abort mechanism V2 provides.
|
|
114
|
-
sdkSession.close();
|
|
115
|
-
},
|
|
116
74
|
};
|
|
117
75
|
}
|
|
118
|
-
|
|
119
|
-
* Map the SDK message stream to domain events.
|
|
120
|
-
*
|
|
121
|
-
* Tracks whether streaming deltas (`stream_event`) have been emitted for
|
|
122
|
-
* the current turn. When deltas are available, the `assistant` message's
|
|
123
|
-
* text blocks are skipped to prevent double-emission of the same content.
|
|
124
|
-
*/
|
|
125
|
-
async *mapStream(sdkSession, onSessionId) {
|
|
126
|
-
let hasStreamedDeltas = false;
|
|
76
|
+
async *mapStream(sdkSession) {
|
|
127
77
|
for await (const msg of sdkSession.stream()) {
|
|
128
|
-
|
|
129
|
-
if ('session_id' in msg && typeof msg.session_id === 'string' && msg.session_id) {
|
|
130
|
-
onSessionId(msg.session_id);
|
|
131
|
-
}
|
|
132
|
-
const events = this.mapSdkMessage(msg, hasStreamedDeltas);
|
|
78
|
+
const events = this.mapSdkMessage(msg);
|
|
133
79
|
for (const event of events) {
|
|
134
80
|
yield event;
|
|
135
81
|
}
|
|
136
|
-
// Track whether we've seen streaming deltas for this turn
|
|
137
|
-
if (msg.type === 'stream_event') {
|
|
138
|
-
hasStreamedDeltas = true;
|
|
139
|
-
}
|
|
140
|
-
// Reset delta tracking on turn boundaries
|
|
141
|
-
if (msg.type === 'result') {
|
|
142
|
-
hasStreamedDeltas = false;
|
|
143
|
-
}
|
|
144
82
|
}
|
|
145
83
|
}
|
|
146
84
|
/**
|
|
@@ -149,15 +87,14 @@ export class ClaudeCodeInteractiveExecutor {
|
|
|
149
87
|
* SDK message types we handle:
|
|
150
88
|
* - stream_event (SDKPartialAssistantMessage): streaming content deltas
|
|
151
89
|
* - assistant (SDKAssistantMessage): complete assistant turn with tool_use blocks
|
|
152
|
-
* - result (SDKResultMessage): success or error result
|
|
153
|
-
* - system (SDKStatusMessage / SDKSystemMessage): status updates
|
|
90
|
+
* - result (SDKResultMessage): success or error result
|
|
91
|
+
* - system (SDKStatusMessage / SDKSystemMessage): status updates
|
|
154
92
|
* - tool_use_summary: tool execution summaries
|
|
155
93
|
* - tool_progress: tool execution progress
|
|
156
|
-
* - rate_limit_event: rate limit notifications
|
|
157
94
|
*
|
|
158
|
-
* Other message types are silently ignored (user replays, auth,
|
|
95
|
+
* Other message types are silently ignored (user replays, auth, etc.)
|
|
159
96
|
*/
|
|
160
|
-
mapSdkMessage(msg
|
|
97
|
+
mapSdkMessage(msg) {
|
|
161
98
|
const events = [];
|
|
162
99
|
switch (msg.type) {
|
|
163
100
|
case 'stream_event': {
|
|
@@ -176,17 +113,16 @@ export class ClaudeCodeInteractiveExecutor {
|
|
|
176
113
|
}
|
|
177
114
|
case 'assistant': {
|
|
178
115
|
// SDKAssistantMessage — complete assistant turn with text + tool_use blocks.
|
|
116
|
+
// Text blocks contain the agent's reasoning between tool calls (e.g.,
|
|
117
|
+
// "Let me read that file..." or "I see, now I'll..."). These MUST be
|
|
118
|
+
// emitted as deltas — stream_event deltas may not be available in V2.
|
|
179
119
|
if ('message' in msg && msg.message?.content) {
|
|
180
120
|
for (const block of msg.message.content) {
|
|
181
121
|
if (block.type === 'text' && block.text) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
type: 'delta',
|
|
187
|
-
content: block.text,
|
|
188
|
-
});
|
|
189
|
-
}
|
|
122
|
+
events.push({
|
|
123
|
+
type: 'delta',
|
|
124
|
+
content: block.text,
|
|
125
|
+
});
|
|
190
126
|
}
|
|
191
127
|
else if (block.type === 'tool_use') {
|
|
192
128
|
events.push({
|
|
@@ -207,7 +143,7 @@ export class ClaudeCodeInteractiveExecutor {
|
|
|
207
143
|
break;
|
|
208
144
|
}
|
|
209
145
|
case 'result': {
|
|
210
|
-
// SDKResultMessage — success or error
|
|
146
|
+
// SDKResultMessage — success or error
|
|
211
147
|
if (msg.subtype === 'success') {
|
|
212
148
|
events.push({
|
|
213
149
|
type: 'done',
|
|
@@ -222,35 +158,11 @@ export class ClaudeCodeInteractiveExecutor {
|
|
|
222
158
|
});
|
|
223
159
|
}
|
|
224
160
|
else {
|
|
225
|
-
//
|
|
226
|
-
const
|
|
227
|
-
let content;
|
|
228
|
-
switch (msg.subtype) {
|
|
229
|
-
case 'error_max_turns':
|
|
230
|
-
content = `Agent reached the maximum number of turns${errorMessages ? `: ${errorMessages}` : ''}`;
|
|
231
|
-
break;
|
|
232
|
-
case 'error_max_budget_usd':
|
|
233
|
-
content = `Agent exceeded the budget limit${errorMessages ? `: ${errorMessages}` : ''}`;
|
|
234
|
-
break;
|
|
235
|
-
case 'error_max_structured_output_retries':
|
|
236
|
-
content = `Agent exceeded structured output retries${errorMessages ? `: ${errorMessages}` : ''}`;
|
|
237
|
-
break;
|
|
238
|
-
case 'error_during_execution':
|
|
239
|
-
default:
|
|
240
|
-
content = errorMessages || 'Agent encountered an error during execution';
|
|
241
|
-
break;
|
|
242
|
-
}
|
|
161
|
+
// SDKResultError
|
|
162
|
+
const errorMsg = 'errors' in msg && Array.isArray(msg.errors) ? msg.errors.join('; ') : msg.subtype;
|
|
243
163
|
events.push({
|
|
244
164
|
type: 'error',
|
|
245
|
-
content,
|
|
246
|
-
// Attach usage data even on errors — cost was still incurred
|
|
247
|
-
usage: {
|
|
248
|
-
costUsd: msg.total_cost_usd,
|
|
249
|
-
inputTokens: msg.usage?.input_tokens,
|
|
250
|
-
outputTokens: msg.usage?.output_tokens,
|
|
251
|
-
numTurns: msg.num_turns,
|
|
252
|
-
durationMs: msg.duration_ms,
|
|
253
|
-
},
|
|
165
|
+
content: errorMsg,
|
|
254
166
|
});
|
|
255
167
|
}
|
|
256
168
|
break;
|
|
@@ -272,23 +184,14 @@ export class ClaudeCodeInteractiveExecutor {
|
|
|
272
184
|
});
|
|
273
185
|
}
|
|
274
186
|
break;
|
|
275
|
-
case 'status':
|
|
276
|
-
|
|
277
|
-
const status = 'status' in msg ? msg.status : null;
|
|
278
|
-
if (status === 'compacting') {
|
|
187
|
+
case 'status':
|
|
188
|
+
if ('status' in msg) {
|
|
279
189
|
events.push({
|
|
280
190
|
type: 'status',
|
|
281
|
-
content:
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
else if (status !== null) {
|
|
285
|
-
events.push({
|
|
286
|
-
type: 'status',
|
|
287
|
-
content: String(status),
|
|
191
|
+
content: String(msg.status ?? 'ready'),
|
|
288
192
|
});
|
|
289
193
|
}
|
|
290
194
|
break;
|
|
291
|
-
}
|
|
292
195
|
case 'api_retry':
|
|
293
196
|
// API retry — let user know agent is retrying
|
|
294
197
|
if ('attempt' in msg) {
|
|
@@ -374,21 +277,11 @@ export class ClaudeCodeInteractiveExecutor {
|
|
|
374
277
|
}
|
|
375
278
|
break;
|
|
376
279
|
}
|
|
377
|
-
default:
|
|
378
|
-
//
|
|
379
|
-
// Not in the TS discriminant union, so handle via string check.
|
|
380
|
-
const msgType = msg.type;
|
|
381
|
-
if (msgType === 'compact_boundary') {
|
|
382
|
-
events.push({
|
|
383
|
-
type: 'status',
|
|
384
|
-
content: 'Context compacted — older conversation has been summarized',
|
|
385
|
-
});
|
|
386
|
-
}
|
|
387
|
-
// Otherwise ignore: user, user_replay, auth_status,
|
|
280
|
+
default:
|
|
281
|
+
// Ignore: user, user_replay, auth_status, compact_boundary,
|
|
388
282
|
// local_command_output, hook_*, files_persisted,
|
|
389
283
|
// elicitation_complete, prompt_suggestion
|
|
390
284
|
break;
|
|
391
|
-
}
|
|
392
285
|
}
|
|
393
286
|
return events;
|
|
394
287
|
}
|
package/dist/packages/core/src/infrastructure/services/interactive/interactive-session.service.d.ts
CHANGED
|
@@ -41,14 +41,6 @@ export declare class InteractiveSessionService implements IInteractiveSessionSer
|
|
|
41
41
|
private sessions;
|
|
42
42
|
/** Cached agentSessionIds from stopped sessions, keyed by featureId. */
|
|
43
43
|
private stoppedAgentSessionIds;
|
|
44
|
-
/**
|
|
45
|
-
* Feature-level subscribers that survive session restarts.
|
|
46
|
-
*
|
|
47
|
-
* Unlike session-level subscribers (in SessionState.subscribers), these
|
|
48
|
-
* persist when a session dies and a new one boots. SSE connections
|
|
49
|
-
* subscribe here so they continue receiving events from new sessions.
|
|
50
|
-
*/
|
|
51
|
-
private featureSubscribers;
|
|
52
44
|
constructor(sessionRepo: IInteractiveSessionRepository, messageRepo: IInteractiveMessageRepository, executorFactory: IAgentExecutorFactory, featureRepo: IFeatureRepository, contextBuilder: FeatureContextBuilder);
|
|
53
45
|
startSession(featureId: string, worktreePath: string, model?: string, agentType?: string): Promise<InteractiveSession>;
|
|
54
46
|
/**
|
|
@@ -68,7 +60,7 @@ export declare class InteractiveSessionService implements IInteractiveSessionSer
|
|
|
68
60
|
clearMessages(featureId: string): Promise<void>;
|
|
69
61
|
getSession(sessionId: string): Promise<InteractiveSession | null>;
|
|
70
62
|
subscribe(sessionId: string, onChunk: (chunk: StreamChunk) => void): UnsubscribeFn;
|
|
71
|
-
sendUserMessage(featureId: string, content: string, worktreePath: string
|
|
63
|
+
sendUserMessage(featureId: string, content: string, worktreePath: string): Promise<InteractiveMessage>;
|
|
72
64
|
getChatState(featureId: string): Promise<ChatState>;
|
|
73
65
|
subscribeByFeature(featureId: string, onChunk: (chunk: StreamChunk) => void): UnsubscribeFn;
|
|
74
66
|
stopByFeature(featureId: string): Promise<void>;
|
|
@@ -86,14 +78,6 @@ export declare class InteractiveSessionService implements IInteractiveSessionSer
|
|
|
86
78
|
* Each event gets its own bubble in the chat thread.
|
|
87
79
|
*/
|
|
88
80
|
private persistToolEvent;
|
|
89
|
-
/**
|
|
90
|
-
* Dispatch a StreamChunk to all subscribers for a session.
|
|
91
|
-
*
|
|
92
|
-
* Sends to both session-level subscribers (legacy, for sessionId-based
|
|
93
|
-
* subscribe()) and feature-level subscribers (for SSE connections that
|
|
94
|
-
* must survive session restarts).
|
|
95
|
-
*/
|
|
96
|
-
private notify;
|
|
97
81
|
/** Start or restart the idle timeout timer for a session. */
|
|
98
82
|
private resetTimer;
|
|
99
83
|
/** Cancel the idle timer for a session. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-session.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/interactive/interactive-session.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EACV,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,SAAS,EACV,MAAM,qFAAqF,CAAC;AAC7F,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4FAA4F,CAAC;AAChJ,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4FAA4F,CAAC;AAChJ,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8EAA8E,CAAC;AAE1H,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gFAAgF,CAAC;AACzH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AASlG,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AA0C1E;;;;;;;;;;;;;;GAcG;AACH,qBAAa,yBAA0B,YAAW,0BAA0B;
|
|
1
|
+
{"version":3,"file":"interactive-session.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/interactive/interactive-session.service.ts"],"names":[],"mappings":"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"}
|