@mecha.im/cli 0.3.4
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/Dockerfile +103 -0
- package/README.md +173 -0
- package/agent/activity.ts +31 -0
- package/agent/costs.ts +93 -0
- package/agent/dashboard/dist/assets/addon-fit-YJmn1quW.js +12 -0
- package/agent/dashboard/dist/assets/addon-web-links-BWjmmSgS.js +12 -0
- package/agent/dashboard/dist/assets/index-B4OKDQ7e.css +32 -0
- package/agent/dashboard/dist/assets/index-fZ_N6Wsi.js +193 -0
- package/agent/dashboard/dist/assets/xterm-BqvuqXEL.js +27 -0
- package/agent/dashboard/dist/index.html +19 -0
- package/agent/dashboard/dist/pixel-engine/characters/char_0.png +0 -0
- package/agent/dashboard/dist/pixel-engine/characters/char_1.png +0 -0
- package/agent/dashboard/dist/pixel-engine/characters/char_2.png +0 -0
- package/agent/dashboard/dist/pixel-engine/characters/char_3.png +0 -0
- package/agent/dashboard/dist/pixel-engine/characters/char_4.png +0 -0
- package/agent/dashboard/dist/pixel-engine/characters/char_5.png +0 -0
- package/agent/dashboard/dist/pixel-engine/default-layout.json +4320 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_0.png +0 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_1.png +0 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_2.png +0 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_3.png +0 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_4.png +0 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_5.png +0 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_6.png +0 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_7.png +0 -0
- package/agent/dashboard/dist/pixel-engine/floors/floor_8.png +0 -0
- package/agent/dashboard/dist/pixel-engine/fonts/FSPixelSansUnicode-Regular.ttf +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/BIN/BIN.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/BIN/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/BLACKBOARD/BLACKBOARD.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/BLACKBOARD/manifest.json +16 -0
- package/agent/dashboard/dist/pixel-engine/furniture/BOOKSHELF/BOOKSHELF.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/BOOKSHELF/manifest.json +16 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CACTUS/CACTUS.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CACTUS/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CLOCK/CLOCK.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CLOCK/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/COFFEE/COFFEE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/COFFEE/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/COFFEE_TABLE/COFFEE_TABLE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/COFFEE_TABLE/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_BENCH/CUSHIONED_BENCH.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_BENCH/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_BACK.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_FRONT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_SIDE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_CHAIR/manifest.json +44 -0
- package/agent/dashboard/dist/pixel-engine/furniture/DESK/DESK_FRONT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/DESK/DESK_SIDE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/DESK/manifest.json +33 -0
- package/agent/dashboard/dist/pixel-engine/furniture/DOUBLE_BOOKSHELF/DOUBLE_BOOKSHELF.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/DOUBLE_BOOKSHELF/manifest.json +16 -0
- package/agent/dashboard/dist/pixel-engine/furniture/FILE_BOXES_1/FILE_BOXES_1.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/FILE_BOXES_1/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/FILE_BOXES_2/FILE_BOXES_2.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/FILE_BOXES_2/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/HANGING_PLANT/HANGING_PLANT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/HANGING_PLANT/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/LARGE_PAINTING/LARGE_PAINTING.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/LARGE_PAINTING/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/LARGE_PLANT/LARGE_PLANT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/LARGE_PLANT/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PC/PC_BACK.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PC/PC_FRONT_OFF.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PC/PC_FRONT_ON_1.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PC/PC_FRONT_ON_2.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PC/PC_FRONT_ON_3.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PC/PC_SIDE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PC/manifest.json +88 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PLANT/PLANT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PLANT/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PLANT_2/PLANT_2.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/PLANT_2/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/POT/POT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/POT/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SMALL_PAINTING/SMALL_PAINTING.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SMALL_PAINTING/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SMALL_PAINTING_2/SMALL_PAINTING_2.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SMALL_PAINTING_2/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SMALL_TABLE/SMALL_TABLE_FRONT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SMALL_TABLE/SMALL_TABLE_SIDE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SMALL_TABLE/manifest.json +33 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SOFA/SOFA_BACK.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SOFA/SOFA_FRONT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SOFA/SOFA_SIDE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/SOFA/manifest.json +44 -0
- package/agent/dashboard/dist/pixel-engine/furniture/TABLE_FRONT/TABLE_FRONT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/TABLE_FRONT/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/VENDER_MACHINE/VENDER_MACHINE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/VENDER_MACHINE/manifest.json +16 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WATER_MACHINE/WATER_MACHINE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WATER_MACHINE/manifest.json +16 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WHITEBOARD/WHITEBOARD.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WHITEBOARD/manifest.json +16 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WOODEN_BENCH/WOODEN_BENCH.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WOODEN_BENCH/manifest.json +13 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_BACK.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_FRONT.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_SIDE.png +0 -0
- package/agent/dashboard/dist/pixel-engine/furniture/WOODEN_CHAIR/manifest.json +44 -0
- package/agent/dashboard/dist/pixel-engine/furniture/index.json +32 -0
- package/agent/dashboard/dist/pixel-engine/walls/wall_0.png +0 -0
- package/agent/dashboard/index.html +18 -0
- package/agent/dashboard/package.json +41 -0
- package/agent/dashboard/public/pixel-engine/CREDITS.md +17 -0
- package/agent/dashboard/public/pixel-engine/characters/char_0.png +0 -0
- package/agent/dashboard/public/pixel-engine/characters/char_1.png +0 -0
- package/agent/dashboard/public/pixel-engine/characters/char_2.png +0 -0
- package/agent/dashboard/public/pixel-engine/characters/char_3.png +0 -0
- package/agent/dashboard/public/pixel-engine/characters/char_4.png +0 -0
- package/agent/dashboard/public/pixel-engine/characters/char_5.png +0 -0
- package/agent/dashboard/public/pixel-engine/default-layout.json +4320 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_0.png +0 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_1.png +0 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_2.png +0 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_3.png +0 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_4.png +0 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_5.png +0 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_6.png +0 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_7.png +0 -0
- package/agent/dashboard/public/pixel-engine/floors/floor_8.png +0 -0
- package/agent/dashboard/public/pixel-engine/fonts/FSPixelSansUnicode-Regular.ttf +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/BIN/BIN.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/BIN/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/BLACKBOARD/BLACKBOARD.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/BLACKBOARD/manifest.json +16 -0
- package/agent/dashboard/public/pixel-engine/furniture/BOOKSHELF/BOOKSHELF.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/BOOKSHELF/manifest.json +16 -0
- package/agent/dashboard/public/pixel-engine/furniture/CACTUS/CACTUS.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/CACTUS/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/CLOCK/CLOCK.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/CLOCK/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/COFFEE/COFFEE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/COFFEE/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/COFFEE_TABLE/COFFEE_TABLE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/COFFEE_TABLE/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/CUSHIONED_BENCH/CUSHIONED_BENCH.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/CUSHIONED_BENCH/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_BACK.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_FRONT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_SIDE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/CUSHIONED_CHAIR/manifest.json +44 -0
- package/agent/dashboard/public/pixel-engine/furniture/DESK/DESK_FRONT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/DESK/DESK_SIDE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/DESK/manifest.json +33 -0
- package/agent/dashboard/public/pixel-engine/furniture/DOUBLE_BOOKSHELF/DOUBLE_BOOKSHELF.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/DOUBLE_BOOKSHELF/manifest.json +16 -0
- package/agent/dashboard/public/pixel-engine/furniture/FILE_BOXES_1/FILE_BOXES_1.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/FILE_BOXES_1/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/FILE_BOXES_2/FILE_BOXES_2.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/FILE_BOXES_2/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/HANGING_PLANT/HANGING_PLANT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/HANGING_PLANT/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/LARGE_PAINTING/LARGE_PAINTING.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/LARGE_PAINTING/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/LARGE_PLANT/LARGE_PLANT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/LARGE_PLANT/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/PC/PC_BACK.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/PC/PC_FRONT_OFF.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/PC/PC_FRONT_ON_1.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/PC/PC_FRONT_ON_2.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/PC/PC_FRONT_ON_3.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/PC/PC_SIDE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/PC/manifest.json +88 -0
- package/agent/dashboard/public/pixel-engine/furniture/PLANT/PLANT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/PLANT/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/PLANT_2/PLANT_2.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/PLANT_2/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/POT/POT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/POT/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/SMALL_PAINTING/SMALL_PAINTING.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/SMALL_PAINTING/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/SMALL_PAINTING_2/SMALL_PAINTING_2.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/SMALL_PAINTING_2/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/SMALL_TABLE/SMALL_TABLE_FRONT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/SMALL_TABLE/SMALL_TABLE_SIDE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/SMALL_TABLE/manifest.json +33 -0
- package/agent/dashboard/public/pixel-engine/furniture/SOFA/SOFA_BACK.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/SOFA/SOFA_FRONT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/SOFA/SOFA_SIDE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/SOFA/manifest.json +44 -0
- package/agent/dashboard/public/pixel-engine/furniture/TABLE_FRONT/TABLE_FRONT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/TABLE_FRONT/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/VENDER_MACHINE/VENDER_MACHINE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/VENDER_MACHINE/manifest.json +16 -0
- package/agent/dashboard/public/pixel-engine/furniture/WATER_MACHINE/WATER_MACHINE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/WATER_MACHINE/manifest.json +16 -0
- package/agent/dashboard/public/pixel-engine/furniture/WHITEBOARD/WHITEBOARD.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/WHITEBOARD/manifest.json +16 -0
- package/agent/dashboard/public/pixel-engine/furniture/WOODEN_BENCH/WOODEN_BENCH.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/WOODEN_BENCH/manifest.json +13 -0
- package/agent/dashboard/public/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_BACK.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_FRONT.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_SIDE.png +0 -0
- package/agent/dashboard/public/pixel-engine/furniture/WOODEN_CHAIR/manifest.json +44 -0
- package/agent/dashboard/public/pixel-engine/furniture/index.json +32 -0
- package/agent/dashboard/public/pixel-engine/walls/wall_0.png +0 -0
- package/agent/dashboard/src/app.tsx +223 -0
- package/agent/dashboard/src/components/alert.tsx +24 -0
- package/agent/dashboard/src/components/badge.tsx +41 -0
- package/agent/dashboard/src/components/button.tsx +44 -0
- package/agent/dashboard/src/components/card.tsx +21 -0
- package/agent/dashboard/src/components/dialog.tsx +28 -0
- package/agent/dashboard/src/components/index.ts +7 -0
- package/agent/dashboard/src/components/input.tsx +45 -0
- package/agent/dashboard/src/components/status-dot.tsx +31 -0
- package/agent/dashboard/src/index.css +126 -0
- package/agent/dashboard/src/lib/api.test.ts +41 -0
- package/agent/dashboard/src/lib/api.ts +53 -0
- package/agent/dashboard/src/lib/fleet-context.tsx +92 -0
- package/agent/dashboard/src/lib/format.test.ts +119 -0
- package/agent/dashboard/src/lib/format.ts +41 -0
- package/agent/dashboard/src/lib/login-gate.tsx +117 -0
- package/agent/dashboard/src/lib/sanitize.test.ts +86 -0
- package/agent/dashboard/src/lib/sanitize.ts +13 -0
- package/agent/dashboard/src/lib/snippet.test.ts +50 -0
- package/agent/dashboard/src/lib/snippet.ts +15 -0
- package/agent/dashboard/src/lib/ws-parse.test.ts +72 -0
- package/agent/dashboard/src/lib/ws-parse.ts +46 -0
- package/agent/dashboard/src/main.tsx +25 -0
- package/agent/dashboard/src/pixel-engine/colorize.ts +230 -0
- package/agent/dashboard/src/pixel-engine/components/BottomToolbar.tsx +83 -0
- package/agent/dashboard/src/pixel-engine/components/DebugView.tsx +175 -0
- package/agent/dashboard/src/pixel-engine/components/OfficeCanvas.tsx +838 -0
- package/agent/dashboard/src/pixel-engine/components/PixelOffice.tsx +646 -0
- package/agent/dashboard/src/pixel-engine/components/SettingsModal.tsx +213 -0
- package/agent/dashboard/src/pixel-engine/components/ToolOverlay.tsx +203 -0
- package/agent/dashboard/src/pixel-engine/components/ZoomControls.tsx +177 -0
- package/agent/dashboard/src/pixel-engine/constants.ts +132 -0
- package/agent/dashboard/src/pixel-engine/editor/EditorToolbar.tsx +737 -0
- package/agent/dashboard/src/pixel-engine/editor/editorActions.ts +291 -0
- package/agent/dashboard/src/pixel-engine/editor/editorState.ts +123 -0
- package/agent/dashboard/src/pixel-engine/engine/characters.ts +595 -0
- package/agent/dashboard/src/pixel-engine/engine/gameLoop.ts +50 -0
- package/agent/dashboard/src/pixel-engine/engine/interactionScheduler.ts +442 -0
- package/agent/dashboard/src/pixel-engine/engine/matrixEffect.ts +139 -0
- package/agent/dashboard/src/pixel-engine/engine/officeState.ts +748 -0
- package/agent/dashboard/src/pixel-engine/engine/renderer.ts +693 -0
- package/agent/dashboard/src/pixel-engine/floorTiles.ts +74 -0
- package/agent/dashboard/src/pixel-engine/hooks/useAssetLoader.ts +488 -0
- package/agent/dashboard/src/pixel-engine/hooks/useEditorActions.ts +661 -0
- package/agent/dashboard/src/pixel-engine/hooks/useEditorKeyboard.ts +83 -0
- package/agent/dashboard/src/pixel-engine/hooks/useLayoutPersistence.ts +162 -0
- package/agent/dashboard/src/pixel-engine/hooks/useOfficeStream.ts +353 -0
- package/agent/dashboard/src/pixel-engine/layout/furnitureCatalog.ts +417 -0
- package/agent/dashboard/src/pixel-engine/layout/layoutSerializer.ts +416 -0
- package/agent/dashboard/src/pixel-engine/layout/tileMap.ts +109 -0
- package/agent/dashboard/src/pixel-engine/notificationSound.ts +69 -0
- package/agent/dashboard/src/pixel-engine/pixel-office.css +55 -0
- package/agent/dashboard/src/pixel-engine/sprites/bubble-permission.json +27 -0
- package/agent/dashboard/src/pixel-engine/sprites/bubble-waiting.json +27 -0
- package/agent/dashboard/src/pixel-engine/sprites/spriteCache.ts +82 -0
- package/agent/dashboard/src/pixel-engine/sprites/spriteData.ts +176 -0
- package/agent/dashboard/src/pixel-engine/toolUtils.ts +28 -0
- package/agent/dashboard/src/pixel-engine/types.ts +232 -0
- package/agent/dashboard/src/pixel-engine/wallTiles.ts +203 -0
- package/agent/dashboard/src/views/auth.tsx +249 -0
- package/agent/dashboard/src/views/fleet.tsx +263 -0
- package/agent/dashboard/src/views/network.tsx +106 -0
- package/agent/dashboard/src/views/schedule-types.ts +12 -0
- package/agent/dashboard/src/views/schedule-utils.ts +49 -0
- package/agent/dashboard/src/views/schedule.tsx +326 -0
- package/agent/dashboard/src/views/sessions/conversation-viewer.tsx +279 -0
- package/agent/dashboard/src/views/sessions/session-detail.tsx +48 -0
- package/agent/dashboard/src/views/sessions/session-list.tsx +265 -0
- package/agent/dashboard/src/views/sessions/terminal-pane.tsx +270 -0
- package/agent/dashboard/src/views/sessions.tsx +55 -0
- package/agent/dashboard/src/views/settings-config.tsx +265 -0
- package/agent/dashboard/src/views/settings-logs.tsx +99 -0
- package/agent/dashboard/src/views/settings-status.tsx +215 -0
- package/agent/dashboard/src/views/settings.tsx +324 -0
- package/agent/dashboard/src/views/webhooks.tsx +230 -0
- package/agent/dashboard/src/vite-env.d.ts +3 -0
- package/agent/dashboard/tsconfig.json +13 -0
- package/agent/entry.ts +168 -0
- package/agent/event-log.ts +103 -0
- package/agent/node-pty-adapter.ts +39 -0
- package/agent/paths.ts +12 -0
- package/agent/pty-manager.ts +265 -0
- package/agent/pty-types.ts +25 -0
- package/agent/routes/api.ts +149 -0
- package/agent/routes/config.ts +116 -0
- package/agent/routes/dashboard.ts +101 -0
- package/agent/routes/schedule.ts +84 -0
- package/agent/routes/sessions.ts +43 -0
- package/agent/routes/webhooks.ts +113 -0
- package/agent/scheduler.ts +373 -0
- package/agent/server-schema.ts +25 -0
- package/agent/server-utils.ts +163 -0
- package/agent/server.ts +218 -0
- package/agent/server.types.ts +39 -0
- package/agent/session-history-types.ts +78 -0
- package/agent/session-history-utils.ts +96 -0
- package/agent/session-history.ts +318 -0
- package/agent/session.ts +152 -0
- package/agent/tools/mecha-call.ts +106 -0
- package/agent/tools/mecha-fleet.ts +176 -0
- package/agent/tools/mecha-list.ts +56 -0
- package/agent/tools/mecha-server.ts +70 -0
- package/agent/types.ts +35 -0
- package/agent/webhook.ts +127 -0
- package/agent/ws-terminal.ts +174 -0
- package/dist/agent/activity.d.ts +14 -0
- package/dist/agent/activity.d.ts.map +1 -0
- package/dist/agent/activity.js +25 -0
- package/dist/agent/activity.js.map +1 -0
- package/dist/agent/character-config.test.d.ts +2 -0
- package/dist/agent/character-config.test.d.ts.map +1 -0
- package/dist/agent/character-config.test.js +51 -0
- package/dist/agent/character-config.test.js.map +1 -0
- package/dist/agent/costs.d.ts +16 -0
- package/dist/agent/costs.d.ts.map +1 -0
- package/dist/agent/costs.js +82 -0
- package/dist/agent/costs.js.map +1 -0
- package/dist/agent/dashboard/dist/assets/addon-fit-YJmn1quW.js +12 -0
- package/dist/agent/dashboard/dist/assets/addon-web-links-BWjmmSgS.js +12 -0
- package/dist/agent/dashboard/dist/assets/index-B4OKDQ7e.css +32 -0
- package/dist/agent/dashboard/dist/assets/index-fZ_N6Wsi.js +193 -0
- package/dist/agent/dashboard/dist/assets/xterm-BqvuqXEL.js +27 -0
- package/dist/agent/dashboard/dist/index.html +19 -0
- package/dist/agent/dashboard/dist/pixel-engine/characters/char_0.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/characters/char_1.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/characters/char_2.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/characters/char_3.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/characters/char_4.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/characters/char_5.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/default-layout.json +4320 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_0.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_1.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_2.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_3.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_4.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_5.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_6.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_7.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/floors/floor_8.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/fonts/FSPixelSansUnicode-Regular.ttf +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/BIN/BIN.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/BIN/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/BLACKBOARD/BLACKBOARD.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/BLACKBOARD/manifest.json +16 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/BOOKSHELF/BOOKSHELF.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/BOOKSHELF/manifest.json +16 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CACTUS/CACTUS.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CACTUS/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CLOCK/CLOCK.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CLOCK/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/COFFEE/COFFEE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/COFFEE/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/COFFEE_TABLE/COFFEE_TABLE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/COFFEE_TABLE/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_BENCH/CUSHIONED_BENCH.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_BENCH/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_BACK.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_FRONT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_CHAIR/CUSHIONED_CHAIR_SIDE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/CUSHIONED_CHAIR/manifest.json +44 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/DESK/DESK_FRONT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/DESK/DESK_SIDE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/DESK/manifest.json +33 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/DOUBLE_BOOKSHELF/DOUBLE_BOOKSHELF.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/DOUBLE_BOOKSHELF/manifest.json +16 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/FILE_BOXES_1/FILE_BOXES_1.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/FILE_BOXES_1/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/FILE_BOXES_2/FILE_BOXES_2.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/FILE_BOXES_2/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/HANGING_PLANT/HANGING_PLANT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/HANGING_PLANT/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/LARGE_PAINTING/LARGE_PAINTING.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/LARGE_PAINTING/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/LARGE_PLANT/LARGE_PLANT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/LARGE_PLANT/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PC/PC_BACK.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PC/PC_FRONT_OFF.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PC/PC_FRONT_ON_1.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PC/PC_FRONT_ON_2.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PC/PC_FRONT_ON_3.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PC/PC_SIDE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PC/manifest.json +88 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PLANT/PLANT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PLANT/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PLANT_2/PLANT_2.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/PLANT_2/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/POT/POT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/POT/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SMALL_PAINTING/SMALL_PAINTING.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SMALL_PAINTING/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SMALL_PAINTING_2/SMALL_PAINTING_2.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SMALL_PAINTING_2/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SMALL_TABLE/SMALL_TABLE_FRONT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SMALL_TABLE/SMALL_TABLE_SIDE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SMALL_TABLE/manifest.json +33 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SOFA/SOFA_BACK.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SOFA/SOFA_FRONT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SOFA/SOFA_SIDE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/SOFA/manifest.json +44 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/TABLE_FRONT/TABLE_FRONT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/TABLE_FRONT/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/VENDER_MACHINE/VENDER_MACHINE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/VENDER_MACHINE/manifest.json +16 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WATER_MACHINE/WATER_MACHINE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WATER_MACHINE/manifest.json +16 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WHITEBOARD/WHITEBOARD.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WHITEBOARD/manifest.json +16 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WOODEN_BENCH/WOODEN_BENCH.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WOODEN_BENCH/manifest.json +13 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_BACK.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_FRONT.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WOODEN_CHAIR/WOODEN_CHAIR_SIDE.png +0 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/WOODEN_CHAIR/manifest.json +44 -0
- package/dist/agent/dashboard/dist/pixel-engine/furniture/index.json +32 -0
- package/dist/agent/dashboard/dist/pixel-engine/walls/wall_0.png +0 -0
- package/dist/agent/entry.d.ts +2 -0
- package/dist/agent/entry.d.ts.map +1 -0
- package/dist/agent/entry.js +157 -0
- package/dist/agent/entry.js.map +1 -0
- package/dist/agent/event-log.d.ts +11 -0
- package/dist/agent/event-log.d.ts.map +1 -0
- package/dist/agent/event-log.js +102 -0
- package/dist/agent/event-log.js.map +1 -0
- package/dist/agent/node-pty-adapter.d.ts +4 -0
- package/dist/agent/node-pty-adapter.d.ts.map +1 -0
- package/dist/agent/node-pty-adapter.js +35 -0
- package/dist/agent/node-pty-adapter.js.map +1 -0
- package/dist/agent/paths.d.ts +11 -0
- package/dist/agent/paths.d.ts.map +1 -0
- package/dist/agent/paths.js +12 -0
- package/dist/agent/paths.js.map +1 -0
- package/dist/agent/pty-manager.d.ts +34 -0
- package/dist/agent/pty-manager.d.ts.map +1 -0
- package/dist/agent/pty-manager.js +210 -0
- package/dist/agent/pty-manager.js.map +1 -0
- package/dist/agent/pty-types.d.ts +26 -0
- package/dist/agent/pty-types.d.ts.map +1 -0
- package/dist/agent/pty-types.js +2 -0
- package/dist/agent/pty-types.js.map +1 -0
- package/dist/agent/routes/api.d.ts +17 -0
- package/dist/agent/routes/api.d.ts.map +1 -0
- package/dist/agent/routes/api.js +125 -0
- package/dist/agent/routes/api.js.map +1 -0
- package/dist/agent/routes/config.d.ts +6 -0
- package/dist/agent/routes/config.d.ts.map +1 -0
- package/dist/agent/routes/config.js +116 -0
- package/dist/agent/routes/config.js.map +1 -0
- package/dist/agent/routes/dashboard.d.ts +4 -0
- package/dist/agent/routes/dashboard.d.ts.map +1 -0
- package/dist/agent/routes/dashboard.js +97 -0
- package/dist/agent/routes/dashboard.js.map +1 -0
- package/dist/agent/routes/schedule.d.ts +4 -0
- package/dist/agent/routes/schedule.d.ts.map +1 -0
- package/dist/agent/routes/schedule.js +98 -0
- package/dist/agent/routes/schedule.js.map +1 -0
- package/dist/agent/routes/sessions.d.ts +4 -0
- package/dist/agent/routes/sessions.d.ts.map +1 -0
- package/dist/agent/routes/sessions.js +43 -0
- package/dist/agent/routes/sessions.js.map +1 -0
- package/dist/agent/routes/webhooks.d.ts +5 -0
- package/dist/agent/routes/webhooks.d.ts.map +1 -0
- package/dist/agent/routes/webhooks.js +102 -0
- package/dist/agent/routes/webhooks.js.map +1 -0
- package/dist/agent/scheduler.d.ts +50 -0
- package/dist/agent/scheduler.d.ts.map +1 -0
- package/dist/agent/scheduler.js +332 -0
- package/dist/agent/scheduler.js.map +1 -0
- package/dist/agent/server-schema.d.ts +20 -0
- package/dist/agent/server-schema.d.ts.map +1 -0
- package/dist/agent/server-schema.js +20 -0
- package/dist/agent/server-schema.js.map +1 -0
- package/dist/agent/server-utils.d.ts +18 -0
- package/dist/agent/server-utils.d.ts.map +1 -0
- package/dist/agent/server-utils.js +132 -0
- package/dist/agent/server-utils.js.map +1 -0
- package/dist/agent/server.d.ts +17 -0
- package/dist/agent/server.d.ts.map +1 -0
- package/dist/agent/server.js +196 -0
- package/dist/agent/server.js.map +1 -0
- package/dist/agent/server.types.d.ts +38 -0
- package/dist/agent/server.types.d.ts.map +1 -0
- package/dist/agent/server.types.js +2 -0
- package/dist/agent/server.types.js.map +1 -0
- package/dist/agent/session-history-types.d.ts +74 -0
- package/dist/agent/session-history-types.d.ts.map +1 -0
- package/dist/agent/session-history-types.js +2 -0
- package/dist/agent/session-history-types.js.map +1 -0
- package/dist/agent/session-history-utils.d.ts +13 -0
- package/dist/agent/session-history-utils.d.ts.map +1 -0
- package/dist/agent/session-history-utils.js +102 -0
- package/dist/agent/session-history-utils.js.map +1 -0
- package/dist/agent/session-history.d.ts +20 -0
- package/dist/agent/session-history.d.ts.map +1 -0
- package/dist/agent/session-history.js +282 -0
- package/dist/agent/session-history.js.map +1 -0
- package/dist/agent/session.d.ts +51 -0
- package/dist/agent/session.d.ts.map +1 -0
- package/dist/agent/session.js +135 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/agent/tools/mecha-call.d.ts +2 -0
- package/dist/agent/tools/mecha-call.d.ts.map +1 -0
- package/dist/agent/tools/mecha-call.js +101 -0
- package/dist/agent/tools/mecha-call.js.map +1 -0
- package/dist/agent/tools/mecha-fleet.d.ts +25 -0
- package/dist/agent/tools/mecha-fleet.d.ts.map +1 -0
- package/dist/agent/tools/mecha-fleet.js +144 -0
- package/dist/agent/tools/mecha-fleet.js.map +1 -0
- package/dist/agent/tools/mecha-list.d.ts +6 -0
- package/dist/agent/tools/mecha-list.d.ts.map +1 -0
- package/dist/agent/tools/mecha-list.js +46 -0
- package/dist/agent/tools/mecha-list.js.map +1 -0
- package/dist/agent/tools/mecha-server.d.ts +4 -0
- package/dist/agent/tools/mecha-server.d.ts.map +1 -0
- package/dist/agent/tools/mecha-server.js +49 -0
- package/dist/agent/tools/mecha-server.js.map +1 -0
- package/dist/agent/types.d.ts +38 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +32 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/webhook.d.ts +12 -0
- package/dist/agent/webhook.d.ts.map +1 -0
- package/dist/agent/webhook.js +105 -0
- package/dist/agent/webhook.js.map +1 -0
- package/dist/agent/ws-terminal.d.ts +4 -0
- package/dist/agent/ws-terminal.d.ts.map +1 -0
- package/dist/agent/ws-terminal.js +160 -0
- package/dist/agent/ws-terminal.js.map +1 -0
- package/dist/shared/atomic-write.d.ts +5 -0
- package/dist/shared/atomic-write.d.ts.map +1 -0
- package/dist/shared/atomic-write.js +63 -0
- package/dist/shared/atomic-write.js.map +1 -0
- package/dist/shared/errors.d.ts +71 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +52 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/logger.d.ts +7 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +52 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/mutex.d.ts +12 -0
- package/dist/shared/mutex.d.ts.map +1 -0
- package/dist/shared/mutex.js +73 -0
- package/dist/shared/mutex.js.map +1 -0
- package/dist/shared/safe-read.d.ts +12 -0
- package/dist/shared/safe-read.d.ts.map +1 -0
- package/dist/shared/safe-read.js +33 -0
- package/dist/shared/safe-read.js.map +1 -0
- package/dist/shared/totp.d.ts +7 -0
- package/dist/shared/totp.d.ts.map +1 -0
- package/dist/shared/totp.js +75 -0
- package/dist/shared/totp.js.map +1 -0
- package/dist/shared/validation.d.ts +7 -0
- package/dist/shared/validation.d.ts.map +1 -0
- package/dist/shared/validation.js +30 -0
- package/dist/shared/validation.js.map +1 -0
- package/dist/src/auth.d.ts +48 -0
- package/dist/src/auth.d.ts.map +1 -0
- package/dist/src/auth.js +160 -0
- package/dist/src/auth.js.map +1 -0
- package/dist/src/cli-output.d.ts +14 -0
- package/dist/src/cli-output.d.ts.map +1 -0
- package/dist/src/cli-output.js +47 -0
- package/dist/src/cli-output.js.map +1 -0
- package/dist/src/cli-utils.d.ts +15 -0
- package/dist/src/cli-utils.d.ts.map +1 -0
- package/dist/src/cli-utils.js +241 -0
- package/dist/src/cli-utils.js.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +535 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/cli.utils.d.ts +10 -0
- package/dist/src/cli.utils.d.ts.map +1 -0
- package/dist/src/cli.utils.js +127 -0
- package/dist/src/cli.utils.js.map +1 -0
- package/dist/src/commands/auth.d.ts +3 -0
- package/dist/src/commands/auth.d.ts.map +1 -0
- package/dist/src/commands/auth.js +139 -0
- package/dist/src/commands/auth.js.map +1 -0
- package/dist/src/commands/bot-api.d.ts +15 -0
- package/dist/src/commands/bot-api.d.ts.map +1 -0
- package/dist/src/commands/bot-api.js +40 -0
- package/dist/src/commands/bot-api.js.map +1 -0
- package/dist/src/commands/completion.d.ts +3 -0
- package/dist/src/commands/completion.d.ts.map +1 -0
- package/dist/src/commands/completion.js +108 -0
- package/dist/src/commands/completion.js.map +1 -0
- package/dist/src/commands/config.d.ts +3 -0
- package/dist/src/commands/config.d.ts.map +1 -0
- package/dist/src/commands/config.js +110 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/costs.d.ts +3 -0
- package/dist/src/commands/costs.d.ts.map +1 -0
- package/dist/src/commands/costs.js +88 -0
- package/dist/src/commands/costs.js.map +1 -0
- package/dist/src/commands/daemon.d.ts +3 -0
- package/dist/src/commands/daemon.d.ts.map +1 -0
- package/dist/src/commands/daemon.js +86 -0
- package/dist/src/commands/daemon.js.map +1 -0
- package/dist/src/commands/push-dashboard.d.ts +3 -0
- package/dist/src/commands/push-dashboard.d.ts.map +1 -0
- package/dist/src/commands/push-dashboard.js +48 -0
- package/dist/src/commands/push-dashboard.js.map +1 -0
- package/dist/src/commands/schedule.d.ts +3 -0
- package/dist/src/commands/schedule.d.ts.map +1 -0
- package/dist/src/commands/schedule.js +70 -0
- package/dist/src/commands/schedule.js.map +1 -0
- package/dist/src/commands/sessions.d.ts +3 -0
- package/dist/src/commands/sessions.d.ts.map +1 -0
- package/dist/src/commands/sessions.js +62 -0
- package/dist/src/commands/sessions.js.map +1 -0
- package/dist/src/commands/webhooks.d.ts +3 -0
- package/dist/src/commands/webhooks.d.ts.map +1 -0
- package/dist/src/commands/webhooks.js +44 -0
- package/dist/src/commands/webhooks.js.map +1 -0
- package/dist/src/config.d.ts +9 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +56 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/daemon-audit.d.ts +13 -0
- package/dist/src/daemon-audit.d.ts.map +1 -0
- package/dist/src/daemon-audit.js +33 -0
- package/dist/src/daemon-audit.js.map +1 -0
- package/dist/src/daemon.d.ts +25 -0
- package/dist/src/daemon.d.ts.map +1 -0
- package/dist/src/daemon.js +344 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/dashboard-server-schema.d.ts +23 -0
- package/dist/src/dashboard-server-schema.d.ts.map +1 -0
- package/dist/src/dashboard-server-schema.js +45 -0
- package/dist/src/dashboard-server-schema.js.map +1 -0
- package/dist/src/dashboard-server-utils.d.ts +18 -0
- package/dist/src/dashboard-server-utils.d.ts.map +1 -0
- package/dist/src/dashboard-server-utils.js +107 -0
- package/dist/src/dashboard-server-utils.js.map +1 -0
- package/dist/src/dashboard-server.d.ts +2 -0
- package/dist/src/dashboard-server.d.ts.map +1 -0
- package/dist/src/dashboard-server.js +777 -0
- package/dist/src/dashboard-server.js.map +1 -0
- package/dist/src/docker.constants.d.ts +5 -0
- package/dist/src/docker.constants.d.ts.map +1 -0
- package/dist/src/docker.constants.js +7 -0
- package/dist/src/docker.constants.js.map +1 -0
- package/dist/src/docker.d.ts +16 -0
- package/dist/src/docker.d.ts.map +1 -0
- package/dist/src/docker.js +437 -0
- package/dist/src/docker.js.map +1 -0
- package/dist/src/docker.types.d.ts +13 -0
- package/dist/src/docker.types.d.ts.map +1 -0
- package/dist/src/docker.types.js +2 -0
- package/dist/src/docker.types.js.map +1 -0
- package/dist/src/docker.utils.d.ts +24 -0
- package/dist/src/docker.utils.d.ts.map +1 -0
- package/dist/src/docker.utils.js +239 -0
- package/dist/src/docker.utils.js.map +1 -0
- package/dist/src/doctor.d.ts +3 -0
- package/dist/src/doctor.d.ts.map +1 -0
- package/dist/src/doctor.js +80 -0
- package/dist/src/doctor.js.map +1 -0
- package/dist/src/doctor.utils.d.ts +30 -0
- package/dist/src/doctor.utils.d.ts.map +1 -0
- package/dist/src/doctor.utils.js +192 -0
- package/dist/src/doctor.utils.js.map +1 -0
- package/dist/src/mcp-proxy.d.ts +2 -0
- package/dist/src/mcp-proxy.d.ts.map +1 -0
- package/dist/src/mcp-proxy.js +177 -0
- package/dist/src/mcp-proxy.js.map +1 -0
- package/dist/src/resolve-endpoint.d.ts +13 -0
- package/dist/src/resolve-endpoint.d.ts.map +1 -0
- package/dist/src/resolve-endpoint.js +112 -0
- package/dist/src/resolve-endpoint.js.map +1 -0
- package/dist/src/store.d.ts +41 -0
- package/dist/src/store.d.ts.map +1 -0
- package/dist/src/store.js +263 -0
- package/dist/src/store.js.map +1 -0
- package/package.json +84 -0
- package/s6/mecha-agent/dependencies.d/tailscale-up +0 -0
- package/s6/mecha-agent/finish +4 -0
- package/s6/mecha-agent/run +39 -0
- package/s6/mecha-agent/type +1 -0
- package/s6/tailscale-up/dependencies.d/tailscaled +0 -0
- package/s6/tailscale-up/type +1 -0
- package/s6/tailscale-up/up +39 -0
- package/s6/tailscaled/run +14 -0
- package/s6/tailscaled/type +1 -0
- package/shared/atomic-write.ts +58 -0
- package/shared/errors.ts +137 -0
- package/shared/logger.ts +50 -0
- package/shared/mutex.ts +73 -0
- package/shared/safe-read.ts +52 -0
- package/shared/totp.ts +83 -0
- package/shared/validation.ts +29 -0
- package/tsconfig.agent.json +10 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.utils.d.ts","sourceRoot":"","sources":["../../src/docker.utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAU/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,QAAA,MAAM,MAAM,QAAe,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,wBAAsB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQnF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBvD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAOhG;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAMpE;AASD,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAqC7E;AAED,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CA0BhG;AAED,iEAAiE;AACjE,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAoD9F;AAaD;;;;GAIG;AACH,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CASpF;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAM5D"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import Docker from "dockerode";
|
|
2
|
+
import { realpathSync, existsSync, readFileSync, writeFileSync, mkdirSync, chmodSync } from "node:fs";
|
|
3
|
+
import { resolve, join } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { execFileSync } from "node:child_process";
|
|
6
|
+
import { getMutex } from "../shared/mutex.js";
|
|
7
|
+
import { ProcessSpawnError } from "../shared/errors.js";
|
|
8
|
+
import { resolveAuth, getCredential, getPassthroughCredentials, loadCredentials } from "./auth.js";
|
|
9
|
+
import { getOrCreateFleetInternalSecret, readSettings } from "./store.js";
|
|
10
|
+
import { stringify as stringifyYaml } from "yaml";
|
|
11
|
+
const docker = new Docker();
|
|
12
|
+
export { docker };
|
|
13
|
+
export async function withBotLock(name, fn) {
|
|
14
|
+
const mutex = getMutex(`bot:${name}`);
|
|
15
|
+
const release = await mutex.acquire();
|
|
16
|
+
try {
|
|
17
|
+
return await fn();
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
release();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function validateBotPath(botPath) {
|
|
24
|
+
const resolved = resolve(botPath);
|
|
25
|
+
let real;
|
|
26
|
+
try {
|
|
27
|
+
real = realpathSync(resolved);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
const parent = join(resolved, "..");
|
|
31
|
+
try {
|
|
32
|
+
const realParent = realpathSync(parent);
|
|
33
|
+
real = join(realParent, resolved.slice(parent.length));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
real = resolved;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const home = homedir();
|
|
40
|
+
if (real !== home && !real.startsWith(home + "/")) {
|
|
41
|
+
throw new ProcessSpawnError(`Bot path "${real}" must be under your home directory`);
|
|
42
|
+
}
|
|
43
|
+
return resolved;
|
|
44
|
+
}
|
|
45
|
+
export async function inspectContainer(name) {
|
|
46
|
+
try {
|
|
47
|
+
return await docker.getContainer(`mecha-${name}`).inspect();
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
if (isDockerError(err, "No such container"))
|
|
51
|
+
return null;
|
|
52
|
+
throw err;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export async function removeContainerOnly(name) {
|
|
56
|
+
const container = docker.getContainer(`mecha-${name}`);
|
|
57
|
+
try {
|
|
58
|
+
await container.stop({ t: 10 });
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
if (!isDockerError(err, "is not running") && !isDockerError(err, "No such container")) {
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
await container.remove();
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
if (!isDockerError(err, "No such container")) {
|
|
70
|
+
throw err;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function isDockerError(err, pattern) {
|
|
75
|
+
const dockerErr = err;
|
|
76
|
+
if (pattern === "No such container" && dockerErr.statusCode === 404)
|
|
77
|
+
return true;
|
|
78
|
+
if (pattern === "is not running" && dockerErr.statusCode === 304)
|
|
79
|
+
return true;
|
|
80
|
+
if (err instanceof Error)
|
|
81
|
+
return err.message.includes(pattern);
|
|
82
|
+
return String(err).includes(pattern);
|
|
83
|
+
}
|
|
84
|
+
// GitHub's SSH host keys (from https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints)
|
|
85
|
+
const GITHUB_KNOWN_HOSTS = [
|
|
86
|
+
"github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl",
|
|
87
|
+
"github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=",
|
|
88
|
+
"github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=",
|
|
89
|
+
].join("\n") + "\n";
|
|
90
|
+
/** Ensure a per-bot SSH key pair exists and is healthy. Returns the ssh dir path. */
|
|
91
|
+
export function ensureBotSshKey(resolvedPath, botName) {
|
|
92
|
+
const sshDir = join(resolvedPath, "ssh");
|
|
93
|
+
const keyPath = join(sshDir, "id_ed25519");
|
|
94
|
+
const pubPath = `${keyPath}.pub`;
|
|
95
|
+
const configPath = join(sshDir, "config");
|
|
96
|
+
const knownHostsPath = join(sshDir, "known_hosts");
|
|
97
|
+
mkdirSync(sshDir, { recursive: true });
|
|
98
|
+
// Generate key pair if private key is missing
|
|
99
|
+
if (!existsSync(keyPath)) {
|
|
100
|
+
execFileSync("ssh-keygen", ["-t", "ed25519", "-f", keyPath, "-N", "", "-C", `${botName}@mecha`], { stdio: "pipe" });
|
|
101
|
+
}
|
|
102
|
+
// Regenerate public key if missing
|
|
103
|
+
if (!existsSync(pubPath)) {
|
|
104
|
+
execFileSync("ssh-keygen", ["-y", "-f", keyPath], { stdio: ["pipe", "pipe", "pipe"] });
|
|
105
|
+
const pub = execFileSync("ssh-keygen", ["-y", "-f", keyPath]).toString().trim();
|
|
106
|
+
writeFileSync(pubPath, `${pub} ${botName}@mecha\n`, { mode: 0o644 });
|
|
107
|
+
}
|
|
108
|
+
// Ensure SSH config exists
|
|
109
|
+
if (!existsSync(configPath)) {
|
|
110
|
+
const sshConfig = `Host github.com\n StrictHostKeyChecking accept-new\n UserKnownHostsFile ~/.ssh/known_hosts\n IdentityFile ~/.ssh/id_ed25519\n`;
|
|
111
|
+
writeFileSync(configPath, sshConfig, { mode: 0o600 });
|
|
112
|
+
}
|
|
113
|
+
// Ensure known_hosts with GitHub's public keys
|
|
114
|
+
if (!existsSync(knownHostsPath)) {
|
|
115
|
+
writeFileSync(knownHostsPath, GITHUB_KNOWN_HOSTS, { mode: 0o644 });
|
|
116
|
+
}
|
|
117
|
+
// Normalize permissions every time
|
|
118
|
+
chmodSync(sshDir, 0o700);
|
|
119
|
+
chmodSync(keyPath, 0o600);
|
|
120
|
+
return sshDir;
|
|
121
|
+
}
|
|
122
|
+
export function buildBinds(resolvedPath, configPath, config) {
|
|
123
|
+
const binds = [
|
|
124
|
+
`${realpathSync(resolvedPath)}:/state:rw`,
|
|
125
|
+
`${realpathSync(configPath)}:/config/bot.yaml:rw`,
|
|
126
|
+
`${realpathSync(join(resolvedPath, ".claude"))}:/home/appuser/.claude:rw`,
|
|
127
|
+
`${realpathSync(join(resolvedPath, ".codex"))}:/home/appuser/.codex:rw`,
|
|
128
|
+
];
|
|
129
|
+
// Mount per-bot SSH keys if they exist (created by `mecha ssh-key <name>`)
|
|
130
|
+
const sshDir = join(resolvedPath, "ssh");
|
|
131
|
+
if (existsSync(join(sshDir, "id_ed25519"))) {
|
|
132
|
+
binds.push(`${realpathSync(sshDir)}:/home/appuser/.ssh:ro`);
|
|
133
|
+
}
|
|
134
|
+
// Write filtered credentials (Claude auth profiles only) to bot state dir
|
|
135
|
+
// This avoids mounting the full credentials store which contains unrelated secrets
|
|
136
|
+
writeBotCredentials(resolvedPath, config.auth);
|
|
137
|
+
if (config.workspace) {
|
|
138
|
+
const wsPath = realpathSync(config.workspace);
|
|
139
|
+
// Restrict workspace mount to home directory to prevent mounting system paths
|
|
140
|
+
const home = homedir();
|
|
141
|
+
if (!wsPath.startsWith(home + "/") && wsPath !== home) {
|
|
142
|
+
throw new ProcessSpawnError(`Workspace path must be under home directory: ${wsPath}`);
|
|
143
|
+
}
|
|
144
|
+
const mode = config.workspace_writable ? "rw" : "ro";
|
|
145
|
+
binds.push(`${wsPath}:/home/appuser/workspace:${mode}`);
|
|
146
|
+
}
|
|
147
|
+
return binds;
|
|
148
|
+
}
|
|
149
|
+
/** Build container environment variables from config and auth */
|
|
150
|
+
export async function buildContainerEnv(config, botToken) {
|
|
151
|
+
const auth = resolveAuth(config.auth);
|
|
152
|
+
const env = [
|
|
153
|
+
`S6_KEEP_ENV=1`,
|
|
154
|
+
`${auth.env}=${auth.key}`,
|
|
155
|
+
`MECHA_BOT_NAME=${config.name}`,
|
|
156
|
+
`MECHA_BOT_TOKEN=${botToken}`,
|
|
157
|
+
`MECHA_FLEET_INTERNAL_SECRET=${getOrCreateFleetInternalSecret()}`,
|
|
158
|
+
`MECHA_WORKSPACE_CWD=${config.workspace ? "/home/appuser/workspace" : "/state/workspace"}`,
|
|
159
|
+
`MECHA_ENABLE_PROJECT_SETTINGS=${config.workspace ? "1" : "0"}`,
|
|
160
|
+
];
|
|
161
|
+
const passthroughKeys = ["OPENAI_API_KEY", "GEMINI_API_KEY", "XAI_API_KEY"];
|
|
162
|
+
const passthrough = getPassthroughCredentials(passthroughKeys);
|
|
163
|
+
for (const pt of passthrough)
|
|
164
|
+
env.push(`${pt.env}=${pt.key}`);
|
|
165
|
+
// Fallback: propagate host env vars for any key not found in stored credentials
|
|
166
|
+
for (const envKey of passthroughKeys) {
|
|
167
|
+
if (!passthrough.some((p) => p.env === envKey)) {
|
|
168
|
+
const val = process.env[envKey];
|
|
169
|
+
if (val)
|
|
170
|
+
env.push(`${envKey}=${val}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (config.tailscale) {
|
|
174
|
+
if (config.tailscale.auth_key) {
|
|
175
|
+
env.push(`MECHA_TS_AUTH_KEY=${config.tailscale.auth_key}`);
|
|
176
|
+
}
|
|
177
|
+
else if (config.tailscale.auth_key_profile) {
|
|
178
|
+
const tsProfile = getCredential(config.tailscale.auth_key_profile);
|
|
179
|
+
env.push(`MECHA_TS_AUTH_KEY=${tsProfile.key}`);
|
|
180
|
+
}
|
|
181
|
+
if (config.tailscale.login_server) {
|
|
182
|
+
env.push(`MECHA_TS_LOGIN_SERVER=${config.tailscale.login_server}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const settings = readSettings();
|
|
186
|
+
if (settings.headscale_url)
|
|
187
|
+
env.push(`MECHA_HEADSCALE_URL=${settings.headscale_url}`);
|
|
188
|
+
if (settings.headscale_api_key)
|
|
189
|
+
env.push(`MECHA_HEADSCALE_API_KEY=${settings.headscale_api_key}`);
|
|
190
|
+
// Inject fleet URL only for fleet_control bots (orchestrator pattern)
|
|
191
|
+
if (config.permissions && config.permissions?.fleet_control) {
|
|
192
|
+
const { getDaemonUrl } = await import("./daemon.js");
|
|
193
|
+
const daemonUrl = getDaemonUrl();
|
|
194
|
+
if (daemonUrl) {
|
|
195
|
+
// Replace localhost with gateway IP for container reachability
|
|
196
|
+
const gatewayIp = await getDockerGatewayIp();
|
|
197
|
+
const containerUrl = daemonUrl.replace("localhost", gatewayIp).replace("127.0.0.1", gatewayIp);
|
|
198
|
+
env.push(`MECHA_FLEET_URL=${containerUrl}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return env;
|
|
202
|
+
}
|
|
203
|
+
/** Detect Docker bridge gateway IP for container-to-host communication */
|
|
204
|
+
async function getDockerGatewayIp() {
|
|
205
|
+
try {
|
|
206
|
+
const network = await docker.getNetwork("bridge").inspect();
|
|
207
|
+
const gateway = network?.IPAM?.Config?.[0]?.Gateway;
|
|
208
|
+
if (gateway)
|
|
209
|
+
return gateway;
|
|
210
|
+
}
|
|
211
|
+
catch { /* fallback */ }
|
|
212
|
+
// macOS/Docker Desktop: host.docker.internal resolves to host
|
|
213
|
+
return "host.docker.internal";
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Write a filtered credentials.yaml into the bot's state dir.
|
|
217
|
+
* Only includes Claude auth profiles (api_key + oauth_token) — no unrelated secrets.
|
|
218
|
+
* Lives in /state/ (rw mount) so it's always accessible and updatable.
|
|
219
|
+
*/
|
|
220
|
+
/** Write only the bot's assigned credential (not all profiles) to its state dir */
|
|
221
|
+
export function writeBotCredentials(resolvedPath, authProfile) {
|
|
222
|
+
const creds = loadCredentials();
|
|
223
|
+
// Only include the specific credential assigned to this bot, not all profiles
|
|
224
|
+
const claudeCreds = authProfile
|
|
225
|
+
? creds.filter((c) => c.name === authProfile && (c.type === "api_key" || c.type === "oauth_token"))
|
|
226
|
+
: creds.filter((c) => c.type === "api_key" || c.type === "oauth_token").slice(0, 1);
|
|
227
|
+
const outPath = join(resolvedPath, "credentials.yaml");
|
|
228
|
+
const content = stringifyYaml({ credentials: claudeCreds }, { lineWidth: 0 });
|
|
229
|
+
writeFileSync(outPath, content, { mode: 0o600 });
|
|
230
|
+
}
|
|
231
|
+
/** Copy host Codex auth to bot if opted in */
|
|
232
|
+
export function copyHostCodexAuth(resolvedPath) {
|
|
233
|
+
const hostCodexAuth = join(homedir(), ".codex", "auth.json");
|
|
234
|
+
const botCodexAuth = join(resolvedPath, ".codex", "auth.json");
|
|
235
|
+
if (process.env.MECHA_COPY_HOST_CODEX_AUTH === "1" && existsSync(hostCodexAuth) && !existsSync(botCodexAuth)) {
|
|
236
|
+
writeFileSync(botCodexAuth, readFileSync(hostCodexAuth, "utf-8"), { mode: 0o600 });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=docker.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.utils.js","sourceRoot":"","sources":["../../src/docker.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/doctor.ts"],"names":[],"mappings":"AAqCA,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAenD;AAID,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqC7D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mecha doctor — diagnose mecha and bot health
|
|
3
|
+
*
|
|
4
|
+
* `mecha doctor` → check mecha-level health (Docker, image, settings)
|
|
5
|
+
* `mecha doctor <bot>` → check bot container health (mounts, SDK config, claude pickup, auth, runtime)
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync } from "node:fs";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { getBot, getMechaDir } from "./store.js";
|
|
10
|
+
import { IMAGE_NAME } from "./docker.constants.js";
|
|
11
|
+
import { docker } from "./docker.utils.js";
|
|
12
|
+
import { report, info, warn, checkContainer, checkHealth, checkMounts, checkEnv, checkRuntime, checkClaudePickup, } from "./doctor.utils.js";
|
|
13
|
+
// ─── Mecha-level checks ───
|
|
14
|
+
async function checkDocker() {
|
|
15
|
+
try {
|
|
16
|
+
await docker.ping();
|
|
17
|
+
return { ok: true, label: "Docker daemon reachable" };
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
return { ok: false, label: "Docker daemon reachable", detail: err instanceof Error ? err.message : String(err) };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function checkImage() {
|
|
24
|
+
try {
|
|
25
|
+
const img = await docker.getImage(IMAGE_NAME).inspect();
|
|
26
|
+
const sizeMb = Math.round((img.Size ?? 0) / 1024 / 1024);
|
|
27
|
+
return { ok: true, label: `Image "${IMAGE_NAME}" exists (${sizeMb}MB)` };
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return { ok: false, label: `Image "${IMAGE_NAME}" exists`, detail: "not found — run: mecha init" };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function doctorMecha() {
|
|
34
|
+
console.log("--- Mecha Doctor ---\n");
|
|
35
|
+
const dir = getMechaDir();
|
|
36
|
+
const credPath = join(dir, "credentials.yaml");
|
|
37
|
+
const checks = [
|
|
38
|
+
existsSync(dir) ? { ok: true, label: `Mecha dir exists (${dir})` } : { ok: false, label: "Mecha dir", detail: "not found — run: mecha init" },
|
|
39
|
+
await checkDocker(),
|
|
40
|
+
await checkImage(),
|
|
41
|
+
existsSync(credPath) ? { ok: true, label: "Credentials file exists" } : { ok: false, label: "Credentials", detail: "no credentials.yaml — run: mecha auth add" },
|
|
42
|
+
];
|
|
43
|
+
const { passed, failed } = report(checks);
|
|
44
|
+
console.log(`\n--- ${passed} passed, ${failed} failed ---`);
|
|
45
|
+
return failed > 0 ? 1 : 0;
|
|
46
|
+
}
|
|
47
|
+
// ─── Bot-level orchestrator ───
|
|
48
|
+
export async function doctorBot(name) {
|
|
49
|
+
console.log(`--- Bot Doctor: ${name} ---\n`);
|
|
50
|
+
let totalPassed = 0, totalFailed = 0;
|
|
51
|
+
const entry = getBot(name);
|
|
52
|
+
if (entry)
|
|
53
|
+
info("Registry", `path=${entry.path}, config=${entry.config}`);
|
|
54
|
+
else
|
|
55
|
+
warn("Registry", `bot "${name}" not in registry`);
|
|
56
|
+
function tally(r) {
|
|
57
|
+
totalPassed += r.passed;
|
|
58
|
+
totalFailed += r.failed;
|
|
59
|
+
}
|
|
60
|
+
console.log("\n[Container]");
|
|
61
|
+
const { checks: containerChecks, container, cInfo } = await checkContainer(name);
|
|
62
|
+
tally(report(containerChecks));
|
|
63
|
+
if (!container || !cInfo) {
|
|
64
|
+
console.log("\n--- Cannot continue without a running container ---");
|
|
65
|
+
return 1;
|
|
66
|
+
}
|
|
67
|
+
console.log("\n[Health]");
|
|
68
|
+
tally(report(await checkHealth(cInfo)));
|
|
69
|
+
console.log("\n[Mounts]");
|
|
70
|
+
tally(report(checkMounts(cInfo)));
|
|
71
|
+
console.log("\n[Environment]");
|
|
72
|
+
tally(report(checkEnv(cInfo)));
|
|
73
|
+
console.log("\n[Runtime]");
|
|
74
|
+
tally(report(await checkRuntime(container)));
|
|
75
|
+
console.log("\n[Claude Config Pickup]");
|
|
76
|
+
tally(report(await checkClaudePickup(container)));
|
|
77
|
+
console.log(`\n--- ${totalPassed} passed, ${totalFailed} failed ---`);
|
|
78
|
+
return totalFailed > 0 ? 1 : 0;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Docker from "dockerode";
|
|
2
|
+
export type CheckResult = {
|
|
3
|
+
ok: boolean;
|
|
4
|
+
label: string;
|
|
5
|
+
detail?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function report(checks: CheckResult[]): {
|
|
8
|
+
passed: number;
|
|
9
|
+
failed: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function info(label: string, detail?: string): void;
|
|
12
|
+
export declare function warn(label: string, detail?: string): void;
|
|
13
|
+
export declare function dockerRun(container: Docker.Container, cmd: string[]): Promise<{
|
|
14
|
+
stdout: string;
|
|
15
|
+
exitCode: number;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function lsDir(container: Docker.Container, dir: string): Promise<string[]>;
|
|
18
|
+
export declare function fileExists(container: Docker.Container, path: string): Promise<boolean>;
|
|
19
|
+
export declare function dirWritable(container: Docker.Container, dirPath: string): Promise<boolean>;
|
|
20
|
+
export declare function checkContainer(name: string): Promise<{
|
|
21
|
+
checks: CheckResult[];
|
|
22
|
+
container?: Docker.Container;
|
|
23
|
+
cInfo?: Docker.ContainerInspectInfo;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function checkHealth(cInfo: Docker.ContainerInspectInfo): Promise<CheckResult[]>;
|
|
26
|
+
export declare function checkMounts(cInfo: Docker.ContainerInspectInfo): CheckResult[];
|
|
27
|
+
export declare function checkEnv(cInfo: Docker.ContainerInspectInfo): CheckResult[];
|
|
28
|
+
export declare function checkRuntime(container: Docker.Container): Promise<CheckResult[]>;
|
|
29
|
+
export declare function checkClaudePickup(container: Docker.Container): Promise<CheckResult[]>;
|
|
30
|
+
//# sourceMappingURL=doctor.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.utils.d.ts","sourceRoot":"","sources":["../../src/doctor.utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAG/B,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAM1E,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAOhF;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzD;AAID,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAQzH;AAED,wBAAsB,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGvF;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5F;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIhG;AAID,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAA;CAAE,CAAC,CAYxJ;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAmB5F;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,oBAAoB,GAAG,WAAW,EAAE,CAsB7E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,oBAAoB,GAAG,WAAW,EAAE,CA0B1E;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBtF;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAqC3F"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { docker } from "./docker.utils.js";
|
|
2
|
+
const PASS = " PASS ";
|
|
3
|
+
const FAIL = " FAIL ";
|
|
4
|
+
const INFO = " INFO ";
|
|
5
|
+
export function report(checks) {
|
|
6
|
+
let passed = 0, failed = 0;
|
|
7
|
+
for (const c of checks) {
|
|
8
|
+
if (c.ok) {
|
|
9
|
+
console.log(`${PASS}${c.label}`);
|
|
10
|
+
passed++;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
console.log(`${FAIL}${c.label}${c.detail ? ` — ${c.detail}` : ""}`);
|
|
14
|
+
failed++;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return { passed, failed };
|
|
18
|
+
}
|
|
19
|
+
export function info(label, detail) {
|
|
20
|
+
console.log(`${INFO}${label}${detail ? `: ${detail}` : ""}`);
|
|
21
|
+
}
|
|
22
|
+
export function warn(label, detail) {
|
|
23
|
+
console.log(` WARN ${label}${detail ? ` — ${detail}` : ""}`);
|
|
24
|
+
}
|
|
25
|
+
// ─── Docker container run helpers ───
|
|
26
|
+
export async function dockerRun(container, cmd) {
|
|
27
|
+
const runInst = await container.exec({ Cmd: cmd, AttachStdout: true, AttachStderr: true, User: "appuser" });
|
|
28
|
+
const stream = await runInst.start({ hijack: true, stdin: false });
|
|
29
|
+
let out = "";
|
|
30
|
+
stream.on("data", (chunk) => { out += chunk.toString(); });
|
|
31
|
+
await new Promise(r => stream.on("end", r));
|
|
32
|
+
const result = await runInst.inspect();
|
|
33
|
+
return { stdout: out.replace(/[\x00-\x08]/g, "").trim(), exitCode: result.ExitCode ?? 1 };
|
|
34
|
+
}
|
|
35
|
+
export async function lsDir(container, dir) {
|
|
36
|
+
const { stdout } = await dockerRun(container, ["ls", dir]);
|
|
37
|
+
return stdout.split("\n").filter(f => f && !f.includes("No such file"));
|
|
38
|
+
}
|
|
39
|
+
export async function fileExists(container, path) {
|
|
40
|
+
const { exitCode } = await dockerRun(container, ["test", "-f", path]);
|
|
41
|
+
return exitCode === 0;
|
|
42
|
+
}
|
|
43
|
+
export async function dirWritable(container, dirPath) {
|
|
44
|
+
const testFile = `${dirPath}/.doctor-test`;
|
|
45
|
+
const { exitCode } = await dockerRun(container, ["sh", "-c", 'touch "$1" && rm "$1"', "sh", testFile]);
|
|
46
|
+
return exitCode === 0;
|
|
47
|
+
}
|
|
48
|
+
// ─── Bot check sections ───
|
|
49
|
+
export async function checkContainer(name) {
|
|
50
|
+
const checks = [];
|
|
51
|
+
try {
|
|
52
|
+
const container = docker.getContainer(`mecha-${name}`);
|
|
53
|
+
const cInfo = await container.inspect();
|
|
54
|
+
const running = cInfo.State?.Running === true;
|
|
55
|
+
checks.push({ ok: running, label: `Container "mecha-${name}" running`, detail: running ? undefined : `state: ${cInfo.State?.Status}` });
|
|
56
|
+
return { checks, container: running ? container : undefined, cInfo };
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
checks.push({ ok: false, label: `Container "mecha-${name}" exists`, detail: "not found" });
|
|
60
|
+
return { checks };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export async function checkHealth(cInfo) {
|
|
64
|
+
const checks = [];
|
|
65
|
+
const hostPort = cInfo.NetworkSettings?.Ports?.["3000/tcp"]?.[0]?.HostPort;
|
|
66
|
+
if (!hostPort) {
|
|
67
|
+
checks.push({ ok: false, label: "Health endpoint", detail: "no host port binding" });
|
|
68
|
+
return checks;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const resp = await fetch(`http://localhost:${hostPort}/health`, { signal: AbortSignal.timeout(3000) });
|
|
72
|
+
if (resp.ok) {
|
|
73
|
+
const data = await resp.json();
|
|
74
|
+
checks.push({ ok: true, label: `Health OK (port ${hostPort}, name: ${data.name})` });
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
checks.push({ ok: false, label: "Health endpoint", detail: `status ${resp.status}` });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
checks.push({ ok: false, label: "Health endpoint", detail: err instanceof Error ? err.message : String(err) });
|
|
82
|
+
}
|
|
83
|
+
return checks;
|
|
84
|
+
}
|
|
85
|
+
export function checkMounts(cInfo) {
|
|
86
|
+
const checks = [];
|
|
87
|
+
const mounts = (cInfo.Mounts ?? []).map(m => ({ source: m.Source ?? "", dest: m.Destination ?? "" }));
|
|
88
|
+
for (const e of [
|
|
89
|
+
{ dest: "/state", label: "State" },
|
|
90
|
+
{ dest: "/config/bot.yaml", label: "Config" },
|
|
91
|
+
{ dest: "/home/appuser/.claude", label: ".claude" },
|
|
92
|
+
{ dest: "/home/appuser/.codex", label: ".codex" },
|
|
93
|
+
]) {
|
|
94
|
+
const found = mounts.find(m => m.dest === e.dest);
|
|
95
|
+
checks.push(found
|
|
96
|
+
? { ok: true, label: `${e.label} → ${e.dest} (${found.source})` }
|
|
97
|
+
: { ok: false, label: `${e.label} → ${e.dest}`, detail: "missing" });
|
|
98
|
+
}
|
|
99
|
+
const ws = mounts.find(m => m.dest === "/home/appuser/workspace");
|
|
100
|
+
const legacy = mounts.find(m => m.dest === "/workspace");
|
|
101
|
+
if (ws)
|
|
102
|
+
checks.push({ ok: true, label: `Workspace → /home/appuser/workspace (${ws.source})` });
|
|
103
|
+
else if (legacy)
|
|
104
|
+
checks.push({ ok: false, label: "Workspace", detail: "at /workspace (legacy) — should be /home/appuser/workspace" });
|
|
105
|
+
return checks;
|
|
106
|
+
}
|
|
107
|
+
export function checkEnv(cInfo) {
|
|
108
|
+
const checks = [];
|
|
109
|
+
const envList = cInfo.Config?.Env ?? [];
|
|
110
|
+
const env = Object.fromEntries(envList.map(e => { const i = e.indexOf("="); return i >= 0 ? [e.slice(0, i), e.slice(i + 1)] : [e, ""]; }));
|
|
111
|
+
const hasAuth = !!env.ANTHROPIC_API_KEY || !!env.CLAUDE_CODE_OAUTH_TOKEN;
|
|
112
|
+
checks.push(hasAuth
|
|
113
|
+
? { ok: true, label: `Auth: ${env.CLAUDE_CODE_OAUTH_TOKEN ? "CLAUDE_CODE_OAUTH_TOKEN" : "ANTHROPIC_API_KEY"}` }
|
|
114
|
+
: { ok: false, label: "Auth credential", detail: "neither ANTHROPIC_API_KEY nor CLAUDE_CODE_OAUTH_TOKEN" });
|
|
115
|
+
const cwd = env.MECHA_WORKSPACE_CWD;
|
|
116
|
+
if (cwd) {
|
|
117
|
+
const ok = cwd.startsWith("/home/appuser/") || cwd.startsWith("/state/");
|
|
118
|
+
checks.push({ ok, label: `MECHA_WORKSPACE_CWD = ${cwd}`, detail: ok ? undefined : "unexpected path" });
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
checks.push({ ok: false, label: "MECHA_WORKSPACE_CWD", detail: "not set" });
|
|
122
|
+
}
|
|
123
|
+
const ps = env.MECHA_ENABLE_PROJECT_SETTINGS;
|
|
124
|
+
const hasExplicitWorkspace = cwd?.startsWith("/home/appuser/");
|
|
125
|
+
const psExpected = hasExplicitWorkspace ? ps === "1" : true; // only fail if workspace set but settings disabled
|
|
126
|
+
checks.push({ ok: psExpected, label: `MECHA_ENABLE_PROJECT_SETTINGS = ${ps ?? "(unset)"}`,
|
|
127
|
+
detail: !psExpected ? "skills, rules, CLAUDE.md won't load from workspace" : undefined });
|
|
128
|
+
checks.push({ ok: !!env.MECHA_BOT_NAME, label: `MECHA_BOT_NAME = ${env.MECHA_BOT_NAME ?? "(unset)"}` });
|
|
129
|
+
checks.push({ ok: !!env.MECHA_BOT_TOKEN, label: `MECHA_BOT_TOKEN ${env.MECHA_BOT_TOKEN ? "set" : "(unset)"}` });
|
|
130
|
+
return checks;
|
|
131
|
+
}
|
|
132
|
+
export async function checkRuntime(container) {
|
|
133
|
+
const checks = [];
|
|
134
|
+
const claude = await dockerRun(container, ["claude", "--version"]);
|
|
135
|
+
const cv = claude.stdout.split("\n")[0]?.replace(/[^\x20-\x7e]/g, "").trim() ?? "";
|
|
136
|
+
checks.push(cv ? { ok: true, label: `claude: ${cv}` } : { ok: false, label: "claude CLI", detail: "not found" });
|
|
137
|
+
const node = await dockerRun(container, ["node", "--version"]);
|
|
138
|
+
const nv = node.stdout.replace(/[^\x20-\x7ev.]/g, "").trim();
|
|
139
|
+
checks.push(nv.startsWith("v") ? { ok: true, label: `node: ${nv}` } : { ok: false, label: "node", detail: "not found" });
|
|
140
|
+
const npm = await dockerRun(container, ["npm", "--version"]);
|
|
141
|
+
const npmv = npm.stdout.replace(/[^\x20-\x7e.]/g, "").trim();
|
|
142
|
+
checks.push(npmv ? { ok: true, label: `npm: ${npmv}` } : { ok: false, label: "npm", detail: "not found — MCP servers may fail" });
|
|
143
|
+
const home = await dockerRun(container, ["sh", "-c", "echo $HOME"]);
|
|
144
|
+
const hd = home.stdout.replace(/[^\x20-\x7e/]/g, "").trim();
|
|
145
|
+
checks.push({ ok: hd === "/home/appuser", label: `appuser HOME = ${hd}`, detail: hd !== "/home/appuser" ? "expected /home/appuser" : undefined });
|
|
146
|
+
return checks;
|
|
147
|
+
}
|
|
148
|
+
export async function checkClaudePickup(container) {
|
|
149
|
+
const checks = [];
|
|
150
|
+
const base = "/home/appuser/.claude";
|
|
151
|
+
const skills = (await lsDir(container, `${base}/skills`)).filter(f => f.endsWith(".md"));
|
|
152
|
+
if (skills.length > 0)
|
|
153
|
+
checks.push({ ok: true, label: `User skills: ${skills.length} (${skills.join(", ")})` });
|
|
154
|
+
else
|
|
155
|
+
info("User skills", `none in ${base}/skills/`);
|
|
156
|
+
const rules = (await lsDir(container, `${base}/rules`)).filter(f => f.endsWith(".md"));
|
|
157
|
+
if (rules.length > 0)
|
|
158
|
+
checks.push({ ok: true, label: `User rules: ${rules.length} (${rules.join(", ")})` });
|
|
159
|
+
else
|
|
160
|
+
info("User rules", `none in ${base}/rules/`);
|
|
161
|
+
const cmds = (await lsDir(container, `${base}/commands`)).filter(f => f.endsWith(".md"));
|
|
162
|
+
if (cmds.length > 0)
|
|
163
|
+
checks.push({ ok: true, label: `User commands: ${cmds.length} (${cmds.join(", ")})` });
|
|
164
|
+
else
|
|
165
|
+
info("User commands", `none in ${base}/commands/`);
|
|
166
|
+
if (await fileExists(container, `${base}/settings.json`))
|
|
167
|
+
checks.push({ ok: true, label: "User settings.json present" });
|
|
168
|
+
else
|
|
169
|
+
info("User settings.json", "not present (optional)");
|
|
170
|
+
const plugins = await lsDir(container, `${base}/plugins`);
|
|
171
|
+
if (plugins.length > 0)
|
|
172
|
+
checks.push({ ok: true, label: `Plugins: ${plugins.length} entries` });
|
|
173
|
+
else
|
|
174
|
+
info("Plugins", `none in ${base}/plugins/ (add via .claude/plugins/)`);
|
|
175
|
+
const memOk = await dirWritable(container, base);
|
|
176
|
+
checks.push({ ok: memOk, label: "~/.claude writable (auto memory)", detail: memOk ? undefined : "appuser cannot write — memory will fail" });
|
|
177
|
+
if (await fileExists(container, "/home/appuser/workspace/CLAUDE.md"))
|
|
178
|
+
checks.push({ ok: true, label: "Project CLAUDE.md present" });
|
|
179
|
+
else
|
|
180
|
+
info("Project CLAUDE.md", "not in workspace (optional)");
|
|
181
|
+
const projClaude = await lsDir(container, "/home/appuser/workspace/.claude");
|
|
182
|
+
if (projClaude.length > 0)
|
|
183
|
+
checks.push({ ok: true, label: `Project .claude/: ${projClaude.join(", ")}` });
|
|
184
|
+
else
|
|
185
|
+
info("Project .claude/", "not in workspace (optional)");
|
|
186
|
+
if (await fileExists(container, "/home/appuser/workspace/.mcp.json"))
|
|
187
|
+
checks.push({ ok: true, label: "Project .mcp.json present" });
|
|
188
|
+
else
|
|
189
|
+
info("Project .mcp.json", "not in workspace (optional)");
|
|
190
|
+
return checks;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=doctor.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.utils.js","sourceRoot":"","sources":["../../src/doctor.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../../src/mcp-proxy.ts"],"names":[],"mappings":"AAqFA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAyHpD"}
|