@shepai/cli 1.151.2-pr468.4830e01 → 1.151.2-pr470.ec33cce
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/apis/json-schema/AgentType.yaml +0 -1
- package/dist/packages/core/src/domain/generated/output.d.ts +0 -1
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +0 -1
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +0 -4
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +0 -22
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.js +0 -1
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts +2 -6
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -1
- package/dist/src/presentation/tui/prompts/agent-select.prompt.js +2 -7
- package/dist/src/presentation/web/app/actions/get-all-agent-models.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-all-agent-models.js +2 -4
- package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.d.ts +15 -0
- package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.js +43 -0
- package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.stories.d.ts +18 -0
- package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/evidence-lightbox/evidence-lightbox.stories.js +125 -0
- package/dist/src/presentation/web/components/common/evidence-lightbox/index.d.ts +3 -0
- package/dist/src/presentation/web/components/common/evidence-lightbox/index.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/evidence-lightbox/index.js +1 -0
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts +1 -1
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.js +0 -2
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.js +0 -1
- package/dist/src/presentation/web/components/common/merge-review/merge-review.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/merge-review/merge-review.js +28 -2
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts +0 -1
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.js +0 -7
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +0 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts +0 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +0 -8
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- 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 +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
- 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/create/page/server-reference-manifest.json +29 -29
- 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 +36 -36
- 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 +36 -36
- 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]/page/server-reference-manifest.json +26 -26
- 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)/create/page/server-reference-manifest.json +29 -29
- 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 +36 -36
- 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 +36 -36
- 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 +26 -26
- 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]/page/server-reference-manifest.json +26 -26
- 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 +3 -3
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- 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 +8 -8
- 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 +8 -8
- 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 +3 -3
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +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/[root-of-the-server]__0b150ddf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.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]__3ef34e4c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.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/_0c473fef._.js +2 -2
- package/web/.next/server/chunks/ssr/_0c473fef._.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/_1b719e7f._.js +1 -1
- package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_b47f40e8._.js → _34a8a162._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_b47f40e8._.js.map → _34a8a162._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js +1 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4093a637._.js +1 -1
- package/web/.next/server/chunks/ssr/_4093a637._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js +1 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_6256a985._.js +1 -1
- package/web/.next/server/chunks/ssr/_6256a985._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_dd815000._.js → _762bbdd5._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_dd815000._.js.map → _762bbdd5._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_8fcc39d4._.js +1 -1
- package/web/.next/server/chunks/ssr/_8fcc39d4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_b71645b4._.js +1 -1
- package/web/.next/server/chunks/ssr/_b71645b4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_e9e9ed20._.js +2 -2
- package/web/.next/server/chunks/ssr/_e9e9ed20._.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/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.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_b437e763._.js +3 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_4f99488d._.js.map → src_presentation_web_b437e763._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.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 +45 -45
- package/web/.next/static/chunks/{ae411737fa84a470.js → 08baac5434d9528e.js} +7 -7
- package/web/.next/static/chunks/{3a7945f19b79b23f.js → 0d473fbdf724361c.js} +1 -1
- package/web/.next/static/chunks/1ef9dfc624cdd5c0.js +1 -0
- package/web/.next/static/chunks/{98126d854a888c69.js → 2c4e4027386847dc.js} +1 -1
- package/web/.next/static/chunks/{2ef0f4ca4e98c9a7.js → 331e2a1232d9f855.js} +3 -3
- package/web/.next/static/chunks/{5942cf630e48ca8d.js → 48a36b37fc27443b.js} +1 -1
- package/web/.next/static/chunks/52470bcbe2e8198d.css +1 -0
- package/web/.next/static/chunks/{6a5afc469cf09a04.js → 6e406c42f179f73f.js} +1 -1
- package/web/.next/static/chunks/{a7d8b0dda225c732.js → 706819c360883af1.js} +1 -1
- package/web/.next/static/chunks/{4e0a2f0a76498c81.js → 7bf35c5612fdba16.js} +1 -1
- package/web/.next/static/chunks/{866b1f54b7f49d15.js → c286aae364899eae.js} +1 -1
- package/web/.next/static/chunks/{956b17e72f758911.js → d8685c1bf2415bc5.js} +1 -1
- package/web/.next/static/chunks/{be299036f3de6864.js → e558b4b9d066763c.js} +1 -1
- package/web/.next/static/chunks/{ca8a36bfe8400d5d.js → ebebc7a215e04768.js} +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts +0 -61
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.js +0 -628
- package/dist/packages/core/src/infrastructure/services/agents/sessions/codex-cli-session.repository.d.ts +0 -62
- package/dist/packages/core/src/infrastructure/services/agents/sessions/codex-cli-session.repository.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/sessions/codex-cli-session.repository.js +0 -356
- package/web/.next/server/chunks/ssr/src_presentation_web_4f99488d._.js +0 -3
- package/web/.next/static/chunks/89b3762438e133be.js +0 -1
- package/web/.next/static/chunks/9b8678597fa1db84.css +0 -1
- package/web/public/icons/agents/openai.svg +0 -3
- /package/web/.next/static/{MUDs2V0kbD3BsECyukWE4 → crqlqgDegiKDLReFt70L0}/_buildManifest.js +0 -0
- /package/web/.next/static/{MUDs2V0kbD3BsECyukWE4 → crqlqgDegiKDLReFt70L0}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{MUDs2V0kbD3BsECyukWE4 → crqlqgDegiKDLReFt70L0}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli-session.repository.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/sessions/codex-cli-session.repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,mFAAmF,CAAC;AA0C3F,qBACa,yBAA0B,YAAW,uBAAuB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,GAAE,MAAqD;IAE5F;;;OAGG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM;IAIjC,WAAW,IAAI,OAAO;IAIhB,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8C5D,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAmBrF,kDAAkD;YACpC,gBAAgB;IAoB9B,kEAAkE;IAClE,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;YACW,mBAAmB;IAajC,wEAAwE;YAC1D,aAAa;IAsC3B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IASpC;;;OAGG;YACW,eAAe;IAqB7B;;OAEG;YACW,gBAAgB;IAgI9B,6CAA6C;IAC7C,OAAO,CAAC,sBAAsB;IAW9B,2CAA2C;IAC3C,OAAO,CAAC,cAAc;CAQvB"}
|
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex CLI Session Repository
|
|
3
|
-
*
|
|
4
|
-
* Infrastructure implementation of IAgentSessionRepository for OpenAI Codex CLI.
|
|
5
|
-
* Reads JSONL session rollout files from `$CODEX_HOME/sessions/` (or `~/.codex/sessions/`
|
|
6
|
-
* when CODEX_HOME is not set) and the session index from `$CODEX_HOME/session_index.jsonl`.
|
|
7
|
-
*
|
|
8
|
-
* Directory structure:
|
|
9
|
-
* $CODEX_HOME/session_index.jsonl — one JSON object per line with {id, thread_name, updated_at}
|
|
10
|
-
* $CODEX_HOME/sessions/YYYY/MM/DD/rollout-<timestamp>-<session-id>.jsonl
|
|
11
|
-
*
|
|
12
|
-
* Rollout file events:
|
|
13
|
-
* - session_meta: session metadata (id, cwd, cli_version, model_provider)
|
|
14
|
-
* - event_msg: lifecycle events (task_started, etc.)
|
|
15
|
-
* - response_item: messages (role: user/assistant/developer), function_call, function_call_output
|
|
16
|
-
* - turn_context: per-turn context (cwd, model, sandbox_policy)
|
|
17
|
-
*/
|
|
18
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
-
};
|
|
24
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
25
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
26
|
-
};
|
|
27
|
-
var CodexCliSessionRepository_1;
|
|
28
|
-
import * as fs from 'node:fs/promises';
|
|
29
|
-
import * as os from 'node:os';
|
|
30
|
-
import * as path from 'node:path';
|
|
31
|
-
import { injectable } from 'tsyringe';
|
|
32
|
-
let CodexCliSessionRepository = CodexCliSessionRepository_1 = class CodexCliSessionRepository {
|
|
33
|
-
basePath;
|
|
34
|
-
constructor(basePath = CodexCliSessionRepository_1.resolveCodexHome()) {
|
|
35
|
-
this.basePath = basePath;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Resolve the Codex home directory.
|
|
39
|
-
* Uses CODEX_HOME env var if set, otherwise defaults to ~/.codex
|
|
40
|
-
*/
|
|
41
|
-
static resolveCodexHome() {
|
|
42
|
-
return process.env.CODEX_HOME ?? path.join(os.homedir(), '.codex');
|
|
43
|
-
}
|
|
44
|
-
isSupported() {
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
async list(options) {
|
|
48
|
-
const limit = options?.limit ?? 20;
|
|
49
|
-
// First try the session index for fast listing
|
|
50
|
-
const indexEntries = await this.readSessionIndex();
|
|
51
|
-
if (indexEntries.length > 0) {
|
|
52
|
-
// Deduplicate: keep the latest entry per session ID
|
|
53
|
-
const latestById = new Map();
|
|
54
|
-
for (const entry of indexEntries) {
|
|
55
|
-
latestById.set(entry.id, entry);
|
|
56
|
-
}
|
|
57
|
-
// Sort by updated_at descending
|
|
58
|
-
const sorted = [...latestById.values()].sort((a, b) => {
|
|
59
|
-
const aTime = a.updated_at ? new Date(a.updated_at).getTime() : 0;
|
|
60
|
-
const bTime = b.updated_at ? new Date(b.updated_at).getTime() : 0;
|
|
61
|
-
return bTime - aTime;
|
|
62
|
-
});
|
|
63
|
-
const toReturn = limit > 0 ? sorted.slice(0, limit) : sorted;
|
|
64
|
-
// Build lightweight sessions from index (no need to parse full rollout files)
|
|
65
|
-
return toReturn.map((entry) => this.indexEntryToSession(entry));
|
|
66
|
-
}
|
|
67
|
-
// Fallback: scan rollout files directly
|
|
68
|
-
const fileInfos = await this.collectSessionFiles();
|
|
69
|
-
fileInfos.sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
|
|
70
|
-
const toParse = limit > 0 ? fileInfos.slice(0, limit) : fileInfos;
|
|
71
|
-
const parseResults = await Promise.allSettled(toParse.map((fi) => this.parseRolloutFile(fi, { includeMessages: false })));
|
|
72
|
-
const sessions = [];
|
|
73
|
-
for (const result of parseResults) {
|
|
74
|
-
if (result.status === 'fulfilled' && result.value !== null) {
|
|
75
|
-
sessions.push(result.value);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return sessions;
|
|
79
|
-
}
|
|
80
|
-
async findById(id, options) {
|
|
81
|
-
const messageLimit = options?.messageLimit ?? 20;
|
|
82
|
-
const match = await this.findSessionFile(id);
|
|
83
|
-
if (match === null)
|
|
84
|
-
return null;
|
|
85
|
-
try {
|
|
86
|
-
const stat = await fs.stat(match.filePath);
|
|
87
|
-
const fileInfo = {
|
|
88
|
-
id: match.resolvedId,
|
|
89
|
-
filePath: match.filePath,
|
|
90
|
-
mtime: stat.mtime,
|
|
91
|
-
};
|
|
92
|
-
return await this.parseRolloutFile(fileInfo, { includeMessages: true, messageLimit });
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/** Read and parse the session_index.jsonl file */
|
|
99
|
-
async readSessionIndex() {
|
|
100
|
-
const indexPath = path.join(this.basePath, 'session_index.jsonl');
|
|
101
|
-
try {
|
|
102
|
-
const content = await fs.readFile(indexPath, 'utf-8');
|
|
103
|
-
const entries = [];
|
|
104
|
-
for (const line of content.split('\n')) {
|
|
105
|
-
const trimmed = line.trim();
|
|
106
|
-
if (!trimmed)
|
|
107
|
-
continue;
|
|
108
|
-
try {
|
|
109
|
-
entries.push(JSON.parse(trimmed));
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
// Skip malformed lines
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return entries;
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
|
-
return [];
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/** Convert a session index entry to a lightweight AgentSession */
|
|
122
|
-
indexEntryToSession(entry) {
|
|
123
|
-
const updatedAt = entry.updated_at ? new Date(entry.updated_at) : new Date();
|
|
124
|
-
return {
|
|
125
|
-
id: entry.id,
|
|
126
|
-
agentType: 'codex-cli',
|
|
127
|
-
projectPath: '',
|
|
128
|
-
messageCount: 0,
|
|
129
|
-
createdAt: updatedAt,
|
|
130
|
-
updatedAt,
|
|
131
|
-
preview: entry.thread_name,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Recursively collect all rollout .jsonl files from the sessions/ directory.
|
|
136
|
-
* Structure: sessions/YYYY/MM/DD/rollout-<timestamp>-<id>.jsonl
|
|
137
|
-
*/
|
|
138
|
-
async collectSessionFiles() {
|
|
139
|
-
const sessionsDir = path.join(this.basePath, 'sessions');
|
|
140
|
-
const fileInfos = [];
|
|
141
|
-
try {
|
|
142
|
-
await this.walkDirectory(sessionsDir, fileInfos);
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
// sessions directory doesn't exist
|
|
146
|
-
}
|
|
147
|
-
return fileInfos;
|
|
148
|
-
}
|
|
149
|
-
/** Recursively walk a directory tree collecting .jsonl rollout files */
|
|
150
|
-
async walkDirectory(dir, results) {
|
|
151
|
-
let entries;
|
|
152
|
-
try {
|
|
153
|
-
entries = await fs.readdir(dir, { withFileTypes: true, encoding: 'utf-8' });
|
|
154
|
-
}
|
|
155
|
-
catch {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
const promises = [];
|
|
159
|
-
for (const entry of entries) {
|
|
160
|
-
const fullPath = path.join(dir, entry.name);
|
|
161
|
-
if (entry.isDirectory()) {
|
|
162
|
-
promises.push(this.walkDirectory(fullPath, results));
|
|
163
|
-
}
|
|
164
|
-
else if (entry.isFile() &&
|
|
165
|
-
entry.name.endsWith('.jsonl') &&
|
|
166
|
-
entry.name.startsWith('rollout-')) {
|
|
167
|
-
promises.push(fs
|
|
168
|
-
.stat(fullPath)
|
|
169
|
-
.then((stat) => {
|
|
170
|
-
const sessionId = this.extractSessionIdFromFilename(entry.name);
|
|
171
|
-
if (sessionId) {
|
|
172
|
-
results.push({ id: sessionId, filePath: fullPath, mtime: stat.mtime });
|
|
173
|
-
}
|
|
174
|
-
})
|
|
175
|
-
.catch(() => {
|
|
176
|
-
// Skip files we can't stat
|
|
177
|
-
}));
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
await Promise.allSettled(promises);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Extract session ID from a rollout filename.
|
|
184
|
-
* Format: rollout-YYYY-MM-DDTHH-MM-SS-<session-id>.jsonl
|
|
185
|
-
* The session ID is the UUID portion after the timestamp.
|
|
186
|
-
*/
|
|
187
|
-
extractSessionIdFromFilename(filename) {
|
|
188
|
-
// rollout-2026-03-24T12-25-16-019d1f60-95de-7141-a648-e3e2fe3da012.jsonl
|
|
189
|
-
// The UUID starts after the timestamp prefix (rollout-YYYY-MM-DDTHH-MM-SS-)
|
|
190
|
-
const withoutExt = filename.replace(/\.jsonl$/, '');
|
|
191
|
-
// Match: rollout-<date>T<time>-<uuid>
|
|
192
|
-
const match = withoutExt.match(/^rollout-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-(.+)$/);
|
|
193
|
-
return match ? match[1] : null;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Find a session rollout file by ID.
|
|
197
|
-
* Scans the sessions/ directory recursively for a file containing the given ID.
|
|
198
|
-
*/
|
|
199
|
-
async findSessionFile(id) {
|
|
200
|
-
const fileInfos = await this.collectSessionFiles();
|
|
201
|
-
// Exact match first
|
|
202
|
-
for (const fi of fileInfos) {
|
|
203
|
-
if (fi.id === id) {
|
|
204
|
-
return { filePath: fi.filePath, resolvedId: fi.id };
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
// Prefix match
|
|
208
|
-
const matches = fileInfos.filter((fi) => fi.id.startsWith(id));
|
|
209
|
-
if (matches.length === 1) {
|
|
210
|
-
return { filePath: matches[0].filePath, resolvedId: matches[0].id };
|
|
211
|
-
}
|
|
212
|
-
return null;
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Parse a Codex CLI rollout JSONL file into an AgentSession.
|
|
216
|
-
*/
|
|
217
|
-
async parseRolloutFile(fileInfo, options) {
|
|
218
|
-
const content = await fs.readFile(fileInfo.filePath, 'utf-8');
|
|
219
|
-
const lines = content.split('\n').filter((l) => l.trim().length > 0);
|
|
220
|
-
let cwd;
|
|
221
|
-
let _cliVersion;
|
|
222
|
-
let firstMessageAt;
|
|
223
|
-
let lastMessageAt;
|
|
224
|
-
let preview;
|
|
225
|
-
let messageCount = 0;
|
|
226
|
-
const messages = [];
|
|
227
|
-
for (const line of lines) {
|
|
228
|
-
let entry;
|
|
229
|
-
try {
|
|
230
|
-
entry = JSON.parse(line);
|
|
231
|
-
}
|
|
232
|
-
catch {
|
|
233
|
-
continue;
|
|
234
|
-
}
|
|
235
|
-
const type = entry.type;
|
|
236
|
-
const timestamp = entry.timestamp ? new Date(entry.timestamp) : fileInfo.mtime;
|
|
237
|
-
if (type === 'session_meta') {
|
|
238
|
-
const payload = entry.payload;
|
|
239
|
-
if (payload?.cwd)
|
|
240
|
-
cwd = payload.cwd;
|
|
241
|
-
if (payload?.cli_version)
|
|
242
|
-
_cliVersion = payload.cli_version;
|
|
243
|
-
continue;
|
|
244
|
-
}
|
|
245
|
-
if (type === 'turn_context') {
|
|
246
|
-
// Use turn context cwd as fallback
|
|
247
|
-
if (!cwd && entry.payload?.cwd)
|
|
248
|
-
cwd = entry.payload.cwd;
|
|
249
|
-
continue;
|
|
250
|
-
}
|
|
251
|
-
if (type === 'response_item') {
|
|
252
|
-
const payload = entry.payload;
|
|
253
|
-
if (!payload)
|
|
254
|
-
continue;
|
|
255
|
-
// Only count user and assistant messages (skip developer/system)
|
|
256
|
-
if (payload.type === 'message' &&
|
|
257
|
-
(payload.role === 'user' || payload.role === 'assistant')) {
|
|
258
|
-
messageCount++;
|
|
259
|
-
firstMessageAt ??= timestamp;
|
|
260
|
-
lastMessageAt = timestamp;
|
|
261
|
-
// Extract preview from first user message
|
|
262
|
-
if (payload.role === 'user' && preview === undefined) {
|
|
263
|
-
preview = this.extractTextFromContent(payload.content);
|
|
264
|
-
}
|
|
265
|
-
if (options.includeMessages) {
|
|
266
|
-
messages.push({
|
|
267
|
-
uuid: entry.payload?.call_id ?? `${fileInfo.id}-${messageCount}`,
|
|
268
|
-
role: payload.role,
|
|
269
|
-
content: this.extractTextFromContent(payload.content),
|
|
270
|
-
timestamp,
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
// Count function calls as part of conversation but don't add as messages
|
|
275
|
-
if (payload.type === 'function_call') {
|
|
276
|
-
messageCount++;
|
|
277
|
-
lastMessageAt = timestamp;
|
|
278
|
-
if (options.includeMessages) {
|
|
279
|
-
const toolName = payload.name ?? 'unknown_tool';
|
|
280
|
-
messages.push({
|
|
281
|
-
uuid: payload.call_id ?? `${fileInfo.id}-${messageCount}`,
|
|
282
|
-
role: 'assistant',
|
|
283
|
-
content: `[tool: ${toolName}] ${payload.arguments ?? ''}`,
|
|
284
|
-
timestamp,
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
if (payload.type === 'function_call_output') {
|
|
289
|
-
lastMessageAt = timestamp;
|
|
290
|
-
if (options.includeMessages) {
|
|
291
|
-
const output = payload.output ?? '';
|
|
292
|
-
const truncated = output.length > 500 ? `${output.slice(0, 497)}...` : output;
|
|
293
|
-
messages.push({
|
|
294
|
-
uuid: payload.call_id ?? `${fileInfo.id}-result-${messageCount}`,
|
|
295
|
-
role: 'assistant',
|
|
296
|
-
content: `[tool-result] ${truncated}`,
|
|
297
|
-
timestamp,
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
if (cwd === undefined) {
|
|
304
|
-
// Can't determine project path — too sparse
|
|
305
|
-
return null;
|
|
306
|
-
}
|
|
307
|
-
let messagesToReturn = messages;
|
|
308
|
-
if (options.includeMessages && options.messageLimit !== undefined && options.messageLimit > 0) {
|
|
309
|
-
messagesToReturn = messages.slice(-options.messageLimit);
|
|
310
|
-
}
|
|
311
|
-
const session = {
|
|
312
|
-
id: fileInfo.id,
|
|
313
|
-
agentType: 'codex-cli',
|
|
314
|
-
projectPath: this.abbreviatePath(cwd),
|
|
315
|
-
messageCount,
|
|
316
|
-
createdAt: firstMessageAt ?? fileInfo.mtime,
|
|
317
|
-
updatedAt: lastMessageAt ?? fileInfo.mtime,
|
|
318
|
-
};
|
|
319
|
-
if (preview !== undefined)
|
|
320
|
-
session.preview = preview;
|
|
321
|
-
if (firstMessageAt !== undefined)
|
|
322
|
-
session.firstMessageAt = firstMessageAt;
|
|
323
|
-
if (lastMessageAt !== undefined)
|
|
324
|
-
session.lastMessageAt = lastMessageAt;
|
|
325
|
-
if (options.includeMessages)
|
|
326
|
-
session.messages = messagesToReturn;
|
|
327
|
-
return session;
|
|
328
|
-
}
|
|
329
|
-
/** Extract text from Codex content blocks */
|
|
330
|
-
extractTextFromContent(content) {
|
|
331
|
-
if (!content || !Array.isArray(content))
|
|
332
|
-
return '';
|
|
333
|
-
const parts = [];
|
|
334
|
-
for (const block of content) {
|
|
335
|
-
if ((block.type === 'input_text' || block.type === 'output_text') && block.text) {
|
|
336
|
-
parts.push(block.text);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
return parts.join('\n');
|
|
340
|
-
}
|
|
341
|
-
/** Replace home directory prefix with ~ */
|
|
342
|
-
abbreviatePath(filePath) {
|
|
343
|
-
const home = os.homedir();
|
|
344
|
-
if (filePath === home)
|
|
345
|
-
return '~';
|
|
346
|
-
if (filePath.startsWith(`${home}${path.sep}`)) {
|
|
347
|
-
return `~${filePath.slice(home.length)}`;
|
|
348
|
-
}
|
|
349
|
-
return filePath;
|
|
350
|
-
}
|
|
351
|
-
};
|
|
352
|
-
CodexCliSessionRepository = CodexCliSessionRepository_1 = __decorate([
|
|
353
|
-
injectable(),
|
|
354
|
-
__metadata("design:paramtypes", [String])
|
|
355
|
-
], CodexCliSessionRepository);
|
|
356
|
-
export { CodexCliSessionRepository };
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[80646,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(59653),e=a.i(6175),f=a.i(7420),g=a.i(58761),h=a.i(51473),i=a.i(59675),j=a.i(5472),k=a.i(75988),l=a.i(80930),m=a.i(14272),n=a.i(66873),o=a.i(90986),p=a.i(17329),q=a.i(16164),r=a.i(45291),s="Popover",[t,u]=(0,f.createContextScope)(s,[k.createPopperScope]),v=(0,k.createPopperScope)(),[w,x]=t(s),y=a=>{let{__scopePopover:d,children:e,open:f,defaultOpen:g,onOpenChange:h,modal:i=!1}=a,l=v(d),m=c.useRef(null),[n,o]=c.useState(!1),[q,r]=(0,p.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:s});return(0,b.jsx)(k.Root,{...l,children:(0,b.jsx)(w,{scope:d,contentId:(0,j.useId)(),triggerRef:m,open:q,onOpenChange:r,onOpenToggle:c.useCallback(()=>r(a=>!a),[r]),hasCustomAnchor:n,onCustomAnchorAdd:c.useCallback(()=>o(!0),[]),onCustomAnchorRemove:c.useCallback(()=>o(!1),[]),modal:i,children:e})})};y.displayName=s;var z="PopoverAnchor",A=c.forwardRef((a,d)=>{let{__scopePopover:e,...f}=a,g=x(z,e),h=v(e),{onCustomAnchorAdd:i,onCustomAnchorRemove:j}=g;return c.useEffect(()=>(i(),()=>j()),[i,j]),(0,b.jsx)(k.Anchor,{...h,...f,ref:d})});A.displayName=z;var B="PopoverTrigger",C=c.forwardRef((a,c)=>{let{__scopePopover:f,...g}=a,h=x(B,f),i=v(f),j=(0,e.useComposedRefs)(c,h.triggerRef),l=(0,b.jsx)(n.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":h.open,"aria-controls":h.contentId,"data-state":Q(h.open),...g,ref:j,onClick:(0,d.composeEventHandlers)(a.onClick,h.onOpenToggle)});return h.hasCustomAnchor?l:(0,b.jsx)(k.Anchor,{asChild:!0,...i,children:l})});C.displayName=B;var D="PopoverPortal",[E,F]=t(D,{forceMount:void 0}),G=a=>{let{__scopePopover:c,forceMount:d,children:e,container:f}=a,g=x(D,c);return(0,b.jsx)(E,{scope:c,forceMount:d,children:(0,b.jsx)(m.Presence,{present:d||g.open,children:(0,b.jsx)(l.Portal,{asChild:!0,container:f,children:e})})})};G.displayName=D;var H="PopoverContent",I=c.forwardRef((a,c)=>{let d=F(H,a.__scopePopover),{forceMount:e=d.forceMount,...f}=a,g=x(H,a.__scopePopover);return(0,b.jsx)(m.Presence,{present:e||g.open,children:g.modal?(0,b.jsx)(K,{...f,ref:c}):(0,b.jsx)(L,{...f,ref:c})})});I.displayName=H;var J=(0,o.createSlot)("PopoverContent.RemoveScroll"),K=c.forwardRef((a,f)=>{let g=x(H,a.__scopePopover),h=c.useRef(null),i=(0,e.useComposedRefs)(f,h),j=c.useRef(!1);return c.useEffect(()=>{let a=h.current;if(a)return(0,q.hideOthers)(a)},[]),(0,b.jsx)(r.RemoveScroll,{as:J,allowPinchZoom:!0,children:(0,b.jsx)(M,{...a,ref:i,trapFocus:g.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,d.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),j.current||g.triggerRef.current?.focus()}),onPointerDownOutside:(0,d.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;j.current=2===b.button||c},{checkForDefaultPrevented:!1}),onFocusOutside:(0,d.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),L=c.forwardRef((a,d)=>{let e=x(H,a.__scopePopover),f=c.useRef(!1),g=c.useRef(!1);return(0,b.jsx)(M,{...a,ref:d,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(f.current||e.triggerRef.current?.focus(),b.preventDefault()),f.current=!1,g.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(f.current=!0,"pointerdown"===b.detail.originalEvent.type&&(g.current=!0));let c=b.target;e.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&g.current&&b.preventDefault()}})}),M=c.forwardRef((a,c)=>{let{__scopePopover:d,trapFocus:e,onOpenAutoFocus:f,onCloseAutoFocus:j,disableOutsidePointerEvents:l,onEscapeKeyDown:m,onPointerDownOutside:n,onFocusOutside:o,onInteractOutside:p,...q}=a,r=x(H,d),s=v(d);return(0,h.useFocusGuards)(),(0,b.jsx)(i.FocusScope,{asChild:!0,loop:!0,trapped:e,onMountAutoFocus:f,onUnmountAutoFocus:j,children:(0,b.jsx)(g.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:l,onInteractOutside:p,onEscapeKeyDown:m,onPointerDownOutside:n,onFocusOutside:o,onDismiss:()=>r.onOpenChange(!1),children:(0,b.jsx)(k.Content,{"data-state":Q(r.open),role:"dialog",id:r.contentId,...s,...q,ref:c,style:{...q.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),N="PopoverClose",O=c.forwardRef((a,c)=>{let{__scopePopover:e,...f}=a,g=x(N,e);return(0,b.jsx)(n.Primitive.button,{type:"button",...f,ref:c,onClick:(0,d.composeEventHandlers)(a.onClick,()=>g.onOpenChange(!1))})});O.displayName=N;var P=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=v(d);return(0,b.jsx)(k.Arrow,{...f,...e,ref:c})});function Q(a){return a?"open":"closed"}P.displayName="PopoverArrow",a.s(["Anchor",()=>A,"Arrow",()=>P,"Close",()=>O,"Content",()=>I,"Popover",()=>y,"PopoverAnchor",()=>A,"PopoverArrow",()=>P,"PopoverClose",()=>O,"PopoverContent",()=>I,"PopoverPortal",()=>G,"PopoverTrigger",()=>C,"Portal",()=>G,"Root",()=>y,"Trigger",()=>C,"createPopoverScope",()=>u],61452);var R=a.i(61452),R=R,S=a.i(85536);let T=R.Root,U=R.Trigger;R.Anchor;let V=c.forwardRef(({className:a,align:c="center",sideOffset:d=4,...e},f)=>(0,b.jsx)(R.Portal,{children:(0,b.jsx)(R.Content,{ref:f,align:c,sideOffset:d,className:(0,S.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",a),...e})}));V.displayName=R.Content.displayName,a.s(["Popover",()=>T,"PopoverContent",()=>V,"PopoverTrigger",()=>U],80646)},52107,74433,a=>{"use strict";var b=a.i(25674);let c=(0,b.createServerReference)("009393a77726a5aaaae4c3f3eabeba7a21ab963536",b.callServer,void 0,b.findSourceMapURL,"getAllAgentModels");a.s(["getAllAgentModels",()=>c],52107);let d=(0,b.createServerReference)("60b5e7b5fe96be1751e26cd6ab08e26ff05d6ab1db",b.callServer,void 0,b.findSourceMapURL,"updateAgentAndModel");a.s(["updateAgentAndModel",()=>d],74433)},96867,61781,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(59653),e=a.i(6175),f=a.i(7420),g=a.i(17329),h=a.i(64005),i=a.i(74432),j=a.i(66873),k="Switch",[l,m]=(0,f.createContextScope)(k),[n,o]=l(k),p=c.forwardRef((a,f)=>{let{__scopeSwitch:h,name:i,checked:l,defaultChecked:m,required:o,disabled:p,value:q="on",onCheckedChange:r,form:u,...v}=a,[w,x]=c.useState(null),y=(0,e.useComposedRefs)(f,a=>x(a)),z=c.useRef(!1),A=!w||u||!!w.closest("form"),[B,C]=(0,g.useControllableState)({prop:l,defaultProp:m??!1,onChange:r,caller:k});return(0,b.jsxs)(n,{scope:h,checked:B,disabled:p,children:[(0,b.jsx)(j.Primitive.button,{type:"button",role:"switch","aria-checked":B,"aria-required":o,"data-state":t(B),"data-disabled":p?"":void 0,disabled:p,value:q,...v,ref:y,onClick:(0,d.composeEventHandlers)(a.onClick,a=>{C(a=>!a),A&&(z.current=a.isPropagationStopped(),z.current||a.stopPropagation())})}),A&&(0,b.jsx)(s,{control:w,bubbles:!z.current,name:i,value:q,checked:B,required:o,disabled:p,form:u,style:{transform:"translateX(-100%)"}})]})});p.displayName=k;var q="SwitchThumb",r=c.forwardRef((a,c)=>{let{__scopeSwitch:d,...e}=a,f=o(q,d);return(0,b.jsx)(j.Primitive.span,{"data-state":t(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:c})});r.displayName=q;var s=c.forwardRef(({__scopeSwitch:a,control:d,checked:f,bubbles:g=!0,...j},k)=>{let l=c.useRef(null),m=(0,e.useComposedRefs)(l,k),n=(0,h.usePrevious)(f),o=(0,i.useSize)(d);return c.useEffect(()=>{let a=l.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(n!==f&&b){let c=new Event("click",{bubbles:g});b.call(a,f),a.dispatchEvent(c)}},[n,f,g]),(0,b.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:f,...j,tabIndex:-1,ref:m,style:{...j.style,...o,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function t(a){return a?"checked":"unchecked"}s.displayName="SwitchBubbleInput",a.s(["Root",()=>p,"Switch",()=>p,"SwitchThumb",()=>r,"Thumb",()=>r,"createSwitchScope",()=>m],91918);var u=a.i(91918),u=u,v=a.i(85536);function w({className:a,size:c="default",...d}){return(0,b.jsx)(u.Root,{"data-slot":"switch","data-size":c,className:(0,v.cn)("peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6",a),...d,children:(0,b.jsx)(u.Thumb,{"data-slot":"switch-thumb",className:(0,v.cn)("bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}a.s(["Switch",()=>w],96867);var x=a.i(72016),y=a.i(94132),z=a.i(3410),A=a.i(52107),B=a.i(74433),C=a.i(17606),D=a.i(83852),E=a.i(18948),F=a.i(80646);function G({initialAgentType:a,initialModel:d,onAgentModelChange:e,disabled:f,className:g,mode:h}){let[i,j]=c.useState(!1),[k,l]=c.useState([]),[m,n]=c.useState(!0),[o,p]=c.useState(a),[q,r]=c.useState(d),[s,t]=c.useState(null),[u,w]=c.useState(0),[G,H]=c.useState(null);c.useEffect(()=>{(0,A.getAllAgentModels)().then(l).finally(()=>n(!1))},[]),c.useEffect(()=>{if(!i){let a=setTimeout(()=>{w(0),H(null)},150);return()=>clearTimeout(a)}},[i]);let I=async(a,b)=>{if(j(!1),a!==o||b!==q){if("override"===h){p(a),r(b),e?.(a,b);return}p(a),r(b),e?.(a,b),t(null);try{let c=await (0,B.updateAgentAndModel)(a,b||null);c.ok||(p(o),r(q),e?.(o,q),t(c.error??"Failed to save"))}catch{p(o),r(q),e?.(o,q),t("Failed to save")}}},J=(0,C.getAgentTypeIcon)(o),K=k.find(a=>a.agentType===o)?.label??o,L=q?(0,D.getModelMeta)(q).displayName||q:null,M=G?k.find(a=>a.agentType===G):null;return(0,b.jsxs)("div",{className:(0,v.cn)("flex flex-col gap-1",g),children:[(0,b.jsxs)(F.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(F.PopoverTrigger,{asChild:!0,children:(0,b.jsx)(E.Button,{variant:"outline",role:"combobox","aria-expanded":i,disabled:(f??!1)||m,className:"w-auto cursor-pointer justify-start font-normal hover:border-violet-300 hover:bg-violet-50/50 dark:hover:border-violet-700 dark:hover:bg-violet-950/30",children:(0,b.jsxs)("span",{className:"flex items-center gap-2 truncate",children:[(0,b.jsx)(J,{className:"h-4 w-4 shrink-0"}),m?"Loading…":(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:K}),L?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-muted-foreground/50 text-xs",children:"·"}),(0,b.jsx)("span",{className:"text-xs font-medium",children:L})]}):null]})]})})}),(0,b.jsx)(F.PopoverContent,{className:"w-(--radix-popover-trigger-width) overflow-hidden p-0",align:"start",children:(0,b.jsxs)("div",{className:"flex transition-transform duration-200 ease-in-out",style:{transform:`translateX(${1===u?"-50%":"0%"})`,width:"200%"},children:[(0,b.jsxs)("div",{className:"w-1/2 shrink-0",children:[(0,b.jsx)("div",{className:"text-muted-foreground border-b px-3 py-2 text-xs font-medium",children:"Select agent"}),k.map(a=>{let c=(0,C.getAgentTypeIcon)(a.agentType),d=o===a.agentType,e=a.models.length>0;return(0,b.jsxs)("button",{type:"button",className:(0,v.cn)("flex w-full cursor-pointer items-center gap-2.5 px-3 py-2 text-xs transition-colors","hover:bg-accent hover:text-accent-foreground",d&&"bg-accent/50"),onClick:()=>{e?(H(a.agentType),requestAnimationFrame(()=>{requestAnimationFrame(()=>w(1))})):I(a.agentType,"")},children:[(0,b.jsx)(c,{className:"h-4 w-4 shrink-0"}),(0,b.jsx)("span",{className:"flex-1 text-left",children:a.label}),d&&!e?(0,b.jsx)(x.Check,{className:"text-primary h-3.5 w-3.5 shrink-0"}):null,e?(0,b.jsx)(z.ChevronRight,{className:"text-muted-foreground h-3.5 w-3.5 shrink-0"}):null]},a.agentType)})]}),(0,b.jsx)("div",{className:"w-1/2 shrink-0",children:M?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("button",{type:"button",className:"text-muted-foreground hover:text-foreground flex w-full cursor-pointer items-center gap-1.5 border-b px-3 py-2 text-xs font-medium transition-colors",onClick:()=>{w(0),setTimeout(()=>H(null),220)},children:[(0,b.jsx)(y.ChevronLeft,{className:"h-3.5 w-3.5"}),M.label]}),M.models.map(a=>{let c=o===M.agentType&&q===a.id;return(0,b.jsxs)("button",{type:"button",className:(0,v.cn)("flex w-full cursor-pointer items-center gap-3 px-3 py-2 text-left transition-colors","hover:bg-accent hover:text-accent-foreground",c&&"bg-accent/50"),onClick:()=>I(M.agentType,a.id),children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:a.displayName}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:a.description})]}),c?(0,b.jsx)(x.Check,{className:"text-primary h-3.5 w-3.5 shrink-0"}):null]},a.id)})]}):null})]})})]}),!!s&&(0,b.jsx)("p",{className:"text-destructive text-sm",children:s})]})}a.s(["AgentModelPicker",()=>G],61781)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_presentation_web_4f99488d._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,10714,99105,e=>{"use strict";var t=e.i(3645);let r=(0,t.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);e.s(["default",()=>r],10714);let a=(0,t.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",()=>a],99105)},33548,e=>{"use strict";let t=(0,e.i(3645).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],33548)},95812,35e3,e=>{"use strict";let t=(0,e.i(3645).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",()=>t],95812);var r=e.i(80986);e.s(["CheckCircle2",()=>r.default],35e3)},19933,e=>{"use strict";let t=(0,e.i(3645).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",()=>t],19933)},8986,2453,19898,35167,e=>{"use strict";let t=(0,e.i(3645).default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);e.s(["Code2",()=>t],8986);var r=e.i(21023);let a=(0,r.createServerReference)("406ba375e7875c48e70f234c086261727c2546d988",r.callServer,void 0,r.findSourceMapURL,"openIde");e.s(["openIde",()=>a],2453);let l=(0,r.createServerReference)("40dfe55d9f7d559b1d6847f33dcf14f734c2458340",r.callServer,void 0,r.findSourceMapURL,"openShell");e.s(["openShell",()=>l],19898);let c=(0,r.createServerReference)("40ca387022d53da39cb433acd226222102d1f72c12",r.callServer,void 0,r.findSourceMapURL,"openFolder");e.s(["openFolder",()=>c],35167)},53360,e=>{"use strict";let t=(0,e.i(3645).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);e.s(["Zap",()=>t],53360)},23405,e=>{"use strict";var t=e.i(79054);function r(e){let r=t.useRef({value:e,previous:e});return t.useMemo(()=>(r.current.value!==e&&(r.current.previous=r.current.value,r.current.value=e),r.current.previous),[e])}e.s(["usePrevious",()=>r])},76016,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>t],76016)},11345,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",()=>t],11345)},97667,e=>{"use strict";var t=e.i(1012);e.s(["CheckIcon",()=>t.default])},23925,1012,e=>{"use strict";let t=(0,e.i(3645).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",()=>t],1012),e.s(["Check",()=>t],23925)},30702,e=>{"use strict";let t=(0,e.i(3645).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],30702)},38573,e=>{"use strict";let t=(0,e.i(3645).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",()=>t],38573)},1650,e=>{"use strict";e.i(11495),e.s([])},54793,7729,e=>{"use strict";var t=e.i(20314),r=e.i(31777);function a({icon:e,title:a,description:l,action:c,className:s,...u}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",s),...u,children:[e?(0,t.jsx)("div",{className:"text-muted-foreground",children:e}):null,(0,t.jsx)("h3",{className:"text-lg font-semibold",children:a}),l?(0,t.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:l}):null,c?(0,t.jsx)("div",{className:"mt-2",children:c}):null]})}e.s(["EmptyState",()=>a],7729),e.s([],54793)},53650,62308,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("009393a77726a5aaaae4c3f3eabeba7a21ab963536",t.callServer,void 0,t.findSourceMapURL,"getAllAgentModels");e.s(["getAllAgentModels",()=>r],53650);let a=(0,t.createServerReference)("60b5e7b5fe96be1751e26cd6ab08e26ff05d6ab1db",t.callServer,void 0,t.findSourceMapURL,"updateAgentAndModel");e.s(["updateAgentAndModel",()=>a],62308)},94681,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("400b62495d831d4f46ba86f78cade7348eaa57917e",t.callServer,void 0,t.findSourceMapURL,"addRepository");e.s(["addRepository",()=>r])},76852,e=>{"use strict";var t=e.i(79054),r=e.i(2453),a=e.i(19898),l=e.i(35167),c=e.i(21023);let s=(0,c.createServerReference)("403da3dd92afaff72539563a4cb6b3dfdb3b289f71",c.callServer,void 0,c.findSourceMapURL,"syncRepository");function u(e){let[c,u]=(0,t.useState)(!1),[n,i]=(0,t.useState)(!1),[d,o]=(0,t.useState)(!1),[f,p]=(0,t.useState)(!1),[h,v]=(0,t.useState)(null),[y,m]=(0,t.useState)(null),[S,b]=(0,t.useState)(null),[k,x]=(0,t.useState)(null),R=(0,t.useRef)(null),g=(0,t.useRef)(null),M=(0,t.useRef)(null),C=(0,t.useRef)(null);(0,t.useEffect)(()=>()=>{R.current&&clearTimeout(R.current),g.current&&clearTimeout(g.current),M.current&&clearTimeout(M.current),C.current&&clearTimeout(C.current)},[]);let A=(0,t.useCallback)(async(t,r,a,l,c)=>{if(e&&!c){l.current&&clearTimeout(l.current),r(!0),a(null);try{let e=await t();if(!e.success){let t=e.error??"An unexpected error occurred";a(t),l.current=setTimeout(()=>a(null),5e3)}}catch(e){a(e instanceof Error?e.message:"An unexpected error occurred"),l.current=setTimeout(()=>a(null),5e3)}finally{r(!1)}}},[e]);return{openInIde:(0,t.useCallback)(()=>A(()=>(0,r.openIde)({repositoryPath:e.repositoryPath}),u,v,R,c),[A,c,e]),openInShell:(0,t.useCallback)(()=>A(()=>(0,a.openShell)({repositoryPath:e.repositoryPath}),i,m,g,n),[A,n,e]),openFolder:(0,t.useCallback)(()=>A(()=>(0,l.openFolder)(e.repositoryPath),o,b,M,d),[A,d,e]),syncMain:(0,t.useCallback)(()=>A(()=>s(e.repositoryId??""),p,x,C,f),[A,f,e]),ideLoading:c,shellLoading:n,folderLoading:d,syncLoading:f,ideError:h,shellError:y,folderError:S,syncError:k}}e.s(["useRepositoryActions",()=>u],76852)}]);
|