cli-jaw 1.5.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +26 -19
- package/README.md +50 -22
- package/README.zh-CN.md +26 -19
- package/dist/bin/cli-jaw.js +5 -1
- package/dist/bin/cli-jaw.js.map +1 -1
- package/dist/bin/commands/dispatch.js +57 -0
- package/dist/bin/commands/dispatch.js.map +1 -0
- package/dist/lib/mcp-sync.js +1 -1
- package/dist/lib/mcp-sync.js.map +1 -1
- package/dist/lib/upload.js +14 -1
- package/dist/lib/upload.js.map +1 -1
- package/dist/server.js +57 -42
- package/dist/server.js.map +1 -1
- package/dist/src/agent/events.js +72 -13
- package/dist/src/agent/events.js.map +1 -1
- package/dist/src/agent/spawn.js +71 -29
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/acp-client.js +4 -2
- package/dist/src/cli/acp-client.js.map +1 -1
- package/dist/src/cli/commands.js +6 -6
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/handlers.js +11 -9
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/registry.js +7 -1
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/core/config.js +15 -8
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/db.js +18 -3
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/employees.js +34 -0
- package/dist/src/core/employees.js.map +1 -0
- package/dist/src/discord/bot.js +72 -9
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/commands.js +12 -8
- package/dist/src/discord/commands.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +57 -35
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +3 -1
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +120 -27
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/research.js +5 -5
- package/dist/src/orchestrator/research.js.map +1 -1
- package/dist/src/orchestrator/scope.js +55 -0
- package/dist/src/orchestrator/scope.js.map +1 -0
- package/dist/src/orchestrator/state-machine.js +23 -21
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/orchestrator/worker-registry.js +9 -2
- package/dist/src/orchestrator/worker-registry.js.map +1 -1
- package/dist/src/prompt/builder.js +76 -37
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +40 -0
- package/dist/src/prompt/templates/employee.md +12 -4
- package/dist/src/prompt/templates/orchestration.md +17 -1
- package/dist/src/telegram/bot.js +7 -1
- package/dist/src/telegram/bot.js.map +1 -1
- package/package.json +4 -2
- package/public/assets/fonts/GeistVF.woff2 +0 -0
- package/public/assets/fonts/JetBrainsMono-Variable.woff2 +0 -0
- package/public/assets/providers/claude-color.svg +1 -0
- package/public/assets/providers/claude.svg +1 -0
- package/public/assets/providers/copilot-color.svg +1 -0
- package/public/assets/providers/copilot.svg +1 -0
- package/public/assets/providers/discord.svg +1 -0
- package/public/assets/providers/gemini-color.svg +1 -0
- package/public/assets/providers/gemini.svg +1 -0
- package/public/assets/providers/openai.svg +1 -0
- package/public/assets/providers/opencode.svg +1 -0
- package/public/assets/providers/telegram.svg +1 -0
- package/public/css/chat.css +79 -51
- package/public/css/diagram.css +348 -0
- package/public/css/layout.css +38 -11
- package/public/css/markdown.css +64 -18
- package/public/css/modals.css +3 -3
- package/public/css/orc-state.css +9 -9
- package/public/css/sidebar.css +37 -3
- package/public/css/tool-ui.css +46 -11
- package/public/css/variables.css +63 -63
- package/public/dist/assets/api-Bbmmo0o1.js +1 -0
- package/public/dist/assets/architecture-YZFGNWBL-BxiHqtOH.js +1 -0
- package/public/dist/assets/architectureDiagram-Q4EWVU46-CJTGDw5p.js +1 -0
- package/public/dist/assets/blockDiagram-DXYQGD6D-Btl5Y-Er.js +1 -0
- package/public/dist/assets/c4Diagram-AHTNJAMY-sDfjW4ZF.js +1 -0
- package/public/dist/assets/classDiagram-6PBFFD2Q-ByCgggL2.js +1 -0
- package/public/dist/assets/classDiagram-v2-HSJHXN6E-t1amaXkU.js +1 -0
- package/public/dist/assets/constants-C8_0OtK2.js +1 -0
- package/public/dist/assets/cose-bilkent-S5V4N54A-eOSFGdaE.js +1 -0
- package/public/dist/assets/dagre-KV5264BT-OCB5j8Q6.js +1 -0
- package/public/dist/assets/diagram-5BDNPKRD-C-4fgK5P.js +1 -0
- package/public/dist/assets/diagram-G4DWMVQ6-C6vmHKDV.js +1 -0
- package/public/dist/assets/diagram-MMDJMWI5-BMCo_wmt.js +1 -0
- package/public/dist/assets/diagram-TYMM5635-DaCLdttJ.js +1 -0
- package/public/dist/assets/employees-D5n7mX5v.js +39 -0
- package/public/dist/assets/erDiagram-SMLLAGMA-BiTRdm5s.js +1 -0
- package/public/dist/assets/flowDiagram-DWJPFMVM-sv6jVi0d.js +1 -0
- package/public/dist/assets/ganttDiagram-T4ZO3ILL-jCP3OW23.js +1 -0
- package/public/dist/assets/gitGraph-7Q5UKJZL-BIeKLxpm.js +1 -0
- package/public/dist/assets/gitGraphDiagram-UUTBAWPF-CokylnbW.js +1 -0
- package/public/dist/assets/index-CLd0BsAu.js +49 -0
- package/public/dist/assets/index-D6ci1wCN.css +1 -0
- package/public/dist/assets/info-OMHHGYJF-CIEl5dWF.js +1 -0
- package/public/dist/assets/infoDiagram-42DDH7IO-BBnK1Bh2.js +1 -0
- package/public/dist/assets/ishikawaDiagram-UXIWVN3A-qXIz0VhS.js +1 -0
- package/public/dist/assets/journeyDiagram-VCZTEJTY-BdrOLof3.js +1 -0
- package/public/dist/assets/kanban-definition-6JOO6SKY-CcX7CE04.js +1 -0
- package/public/dist/assets/mermaid.core-BoxIvw7E.js +1 -0
- package/public/dist/assets/mindmap-definition-QFDTVHPH-CdXARskX.js +1 -0
- package/public/dist/assets/packet-4T2RLAQJ-Bz4ZwYZ3.js +1 -0
- package/public/dist/assets/pie-ZZUOXDRM-AtGL3wZ2.js +1 -0
- package/public/dist/assets/pieDiagram-DEJITSTG-B5SOq9Yr.js +1 -0
- package/public/dist/assets/quadrantDiagram-34T5L4WZ-D0uNWgpI.js +1 -0
- package/public/dist/assets/radar-PYXPWWZC-AbJSfeqB.js +1 -0
- package/public/dist/assets/render-C8N0rp4L.js +25 -0
- package/public/dist/assets/requirementDiagram-MS252O5E-62td6IQ-.js +1 -0
- package/public/dist/assets/sankeyDiagram-XADWPNL6-Crg_02iC.js +1 -0
- package/public/dist/assets/sequenceDiagram-FGHM5R23-fbCocZHj.js +1 -0
- package/public/dist/assets/settings-BJR-IGM5.js +41 -0
- package/public/dist/assets/settings-Dm6OnPmY.js +1 -0
- package/public/dist/assets/skills-D6jv9AIs.js +1 -0
- package/public/dist/assets/skills-uywskdFh.js +12 -0
- package/public/dist/assets/slash-commands-CCDonT40.js +1 -0
- package/public/dist/assets/{slash-commands-DMsE88bu.js → slash-commands-DWvL-VDU.js} +1 -1
- package/public/dist/assets/stateDiagram-FHFEXIEX-Gy3DhXxQ.js +1 -0
- package/public/dist/assets/stateDiagram-v2-QKLJ7IA2-DJc-FW9O.js +1 -0
- package/public/dist/assets/timeline-definition-GMOUNBTQ-B3cA9DgY.js +1 -0
- package/public/dist/assets/treeView-SZITEDCU-Cn58DIbB.js +1 -0
- package/public/dist/assets/treemap-W4RFUUIX-DPcYjDzH.js +1 -0
- package/public/dist/assets/ui-C1daR00l.js +1 -0
- package/public/dist/assets/ui-D-oFkXed.js +131 -0
- package/public/dist/assets/vendor-icons-1Ec7ZWcT.js +1 -0
- package/public/dist/assets/{vendor-mermaid-COidH9HB.js → vendor-mermaid-lvHqQdfg.js} +4 -4
- package/public/dist/assets/vennDiagram-DHZGUBPP-DkBfxilo.js +1 -0
- package/public/dist/assets/wardley-RL74JXVD-6Dg0PJ4H.js +1 -0
- package/public/dist/assets/wardleyDiagram-NUSXRM2D-Dsntl_vy.js +1 -0
- package/public/dist/assets/ws-Dnn8HG8B.js +2 -0
- package/public/dist/assets/xychartDiagram-5P7HB3ND-B_McB5GE.js +1 -0
- package/public/dist/index.html +63 -55
- package/public/index.html +62 -53
- package/public/js/constants.ts +8 -2
- package/public/js/diagram/iframe-renderer.ts +559 -0
- package/public/js/diagram/types.ts +129 -0
- package/public/js/diagram/widget-validator.ts +82 -0
- package/public/js/features/chat.ts +24 -12
- package/public/js/features/employees.ts +3 -2
- package/public/js/features/heartbeat.ts +4 -3
- package/public/js/features/memory.ts +4 -3
- package/public/js/features/process-block.ts +12 -11
- package/public/js/features/settings-cli-status.ts +10 -7
- package/public/js/features/settings-core.ts +13 -3
- package/public/js/features/settings-discord.ts +9 -0
- package/public/js/features/settings-mcp.ts +8 -7
- package/public/js/features/settings-stt.ts +4 -4
- package/public/js/features/settings-templates.ts +10 -8
- package/public/js/features/settings-types.ts +1 -1
- package/public/js/features/settings.ts +1 -1
- package/public/js/features/sidebar.ts +37 -7
- package/public/js/features/skills.ts +4 -3
- package/public/js/features/theme.ts +4 -0
- package/public/js/features/tool-ui.ts +6 -5
- package/public/js/features/voice-recorder.ts +2 -1
- package/public/js/icons.ts +257 -0
- package/public/js/main.ts +9 -3
- package/public/js/provider-icons.ts +88 -0
- package/public/js/render.ts +493 -30
- package/public/js/streaming-render.ts +3 -3
- package/public/js/ui.ts +38 -18
- package/public/js/ws.ts +17 -10
- package/public/locales/en.json +89 -88
- package/public/locales/ko.json +89 -88
- package/scripts/release-1.6.0.sh +69 -0
- package/scripts/release-preview.sh +1 -1
- package/dist/lib/token-keepalive.js +0 -34
- package/dist/lib/token-keepalive.js.map +0 -1
- package/public/dist/assets/api-BlPw3bUI.js +0 -1
- package/public/dist/assets/architecture-YZFGNWBL-BkS7SZQi.js +0 -1
- package/public/dist/assets/architectureDiagram-Q4EWVU46-Dl3iBKeR.js +0 -1
- package/public/dist/assets/blockDiagram-DXYQGD6D-DPr4D17p.js +0 -1
- package/public/dist/assets/c4Diagram-AHTNJAMY-CfoxJtDk.js +0 -1
- package/public/dist/assets/classDiagram-6PBFFD2Q-BOAdHnnB.js +0 -1
- package/public/dist/assets/classDiagram-v2-HSJHXN6E-B2QCJXWC.js +0 -1
- package/public/dist/assets/constants-DshMUJbo.js +0 -1
- package/public/dist/assets/cose-bilkent-S5V4N54A-CA14jk7w.js +0 -1
- package/public/dist/assets/dagre-KV5264BT-BVwNaSwC.js +0 -1
- package/public/dist/assets/diagram-5BDNPKRD-CHqIAvdc.js +0 -1
- package/public/dist/assets/diagram-G4DWMVQ6-DxvsCvTP.js +0 -1
- package/public/dist/assets/diagram-MMDJMWI5-DqOPO7dl.js +0 -1
- package/public/dist/assets/diagram-TYMM5635-C9xMWPQn.js +0 -1
- package/public/dist/assets/employees-CFRlsbHm.js +0 -39
- package/public/dist/assets/erDiagram-SMLLAGMA-BTmpfRkm.js +0 -1
- package/public/dist/assets/flowDiagram-DWJPFMVM-DZBSQAKA.js +0 -1
- package/public/dist/assets/ganttDiagram-T4ZO3ILL-TAEMCRbT.js +0 -1
- package/public/dist/assets/gitGraph-7Q5UKJZL-bbxndRNA.js +0 -1
- package/public/dist/assets/gitGraphDiagram-UUTBAWPF-CBxtx0MB.js +0 -1
- package/public/dist/assets/index-1Gg-6jeC.css +0 -1
- package/public/dist/assets/index-CQHqXjrK.js +0 -49
- package/public/dist/assets/info-OMHHGYJF-DRXq_Ywr.js +0 -1
- package/public/dist/assets/infoDiagram-42DDH7IO-C7FFwX4m.js +0 -1
- package/public/dist/assets/ishikawaDiagram-UXIWVN3A-DEZJE79j.js +0 -1
- package/public/dist/assets/journeyDiagram-VCZTEJTY-ZHLiY6GV.js +0 -1
- package/public/dist/assets/kanban-definition-6JOO6SKY-NP7pY7ML.js +0 -1
- package/public/dist/assets/mermaid.core-CHuluSlD.js +0 -1
- package/public/dist/assets/mindmap-definition-QFDTVHPH-Bd1OgfN_.js +0 -1
- package/public/dist/assets/packet-4T2RLAQJ-CGu8ST97.js +0 -1
- package/public/dist/assets/pie-ZZUOXDRM-CDG65mhS.js +0 -1
- package/public/dist/assets/pieDiagram-DEJITSTG-BbMBHLDM.js +0 -1
- package/public/dist/assets/quadrantDiagram-34T5L4WZ-CDCDgI1e.js +0 -1
- package/public/dist/assets/radar-PYXPWWZC-1gS-6ylu.js +0 -1
- package/public/dist/assets/render-YHvL5VM_.js +0 -6
- package/public/dist/assets/requirementDiagram-MS252O5E-DkmvOtYz.js +0 -1
- package/public/dist/assets/sankeyDiagram-XADWPNL6-GNcXIYsL.js +0 -1
- package/public/dist/assets/sequenceDiagram-FGHM5R23-BFrw2n6x.js +0 -1
- package/public/dist/assets/settings-BQF_u5px.js +0 -37
- package/public/dist/assets/settings-C5Q9IPjJ.js +0 -1
- package/public/dist/assets/skills-9Pd2rOw-.js +0 -1
- package/public/dist/assets/skills-BI7sQAdk.js +0 -12
- package/public/dist/assets/slash-commands-FMpJzlDB.js +0 -1
- package/public/dist/assets/stateDiagram-FHFEXIEX-BLgKnllT.js +0 -1
- package/public/dist/assets/stateDiagram-v2-QKLJ7IA2-CbzuWsSa.js +0 -1
- package/public/dist/assets/timeline-definition-GMOUNBTQ-CcZTJ3gL.js +0 -1
- package/public/dist/assets/treeView-SZITEDCU-BDqBsaH1.js +0 -1
- package/public/dist/assets/treemap-W4RFUUIX-BaWHA3Di.js +0 -1
- package/public/dist/assets/ui-BukgLHuh.js +0 -29
- package/public/dist/assets/ui-Bvz1JfTE.js +0 -1
- package/public/dist/assets/vennDiagram-DHZGUBPP-BWV_j1bh.js +0 -1
- package/public/dist/assets/wardley-RL74JXVD-C7gKA3d7.js +0 -1
- package/public/dist/assets/wardleyDiagram-NUSXRM2D-BUoq_wug.js +0 -1
- package/public/dist/assets/ws-S_AZgx7L.js +0 -2
- package/public/dist/assets/xychartDiagram-5P7HB3ND-PvT5Ec82.js +0 -1
- /package/public/dist/assets/{api-B8XKQ4OT.js → api-Ci-lgwRp.js} +0 -0
- /package/public/dist/assets/{locale-BjoAcbis.js → locale-DIXc-_34.js} +0 -0
package/public/locales/ko.json
CHANGED
|
@@ -34,42 +34,42 @@
|
|
|
34
34
|
"cmd.steer.tg_desc": "작업 중 에이전트에게 새 지시",
|
|
35
35
|
"cmd.steer.noPrompt": "사용법: /steer <새 지시>",
|
|
36
36
|
"cmd.steer.noAgent": "실행 중인 에이전트가 없습니다.",
|
|
37
|
-
"cmd.steer.started": "
|
|
37
|
+
"cmd.steer.started": "방향 전환 중...",
|
|
38
38
|
"cmd.unknown": "알 수 없는 커맨드: /{name}\n/help로 사용 가능한 커맨드를 확인하세요.",
|
|
39
|
-
"cmd.unsupported": "
|
|
40
|
-
"cmd.error": "
|
|
39
|
+
"cmd.unsupported": "/{name}은(는) {iface}에서 사용할 수 없습니다.",
|
|
40
|
+
"cmd.error": "/{name} 실행 오류: {msg}",
|
|
41
41
|
"cmd.helpTitle": "사용 가능한 커맨드",
|
|
42
42
|
"cmd.helpDetail": "상세 도움말: /help <command>",
|
|
43
|
-
"cmd.settingsLoadFail": "
|
|
43
|
+
"cmd.settingsLoadFail": "설정을 불러올 수 없습니다.",
|
|
44
44
|
"cmd.model.current": "현재 모델({cli}): {model}",
|
|
45
|
-
"cmd.model.invalid": "
|
|
46
|
-
"cmd.model.changed": "
|
|
45
|
+
"cmd.model.invalid": "유효하지 않은 모델 이름입니다.",
|
|
46
|
+
"cmd.model.changed": "모델 변경: {model}\n다음 메시지부터 적용됩니다.",
|
|
47
47
|
"cmd.cli.current": "현재 CLI: {cli}\n사용 가능: {available}",
|
|
48
|
-
"cmd.cli.unknown": "
|
|
48
|
+
"cmd.cli.unknown": "알 수 없는 CLI: {cli}\n사용 가능: {available}",
|
|
49
49
|
"cmd.cli.already": "이미 {cli}가 활성화되어 있습니다.",
|
|
50
|
-
"cmd.cli.changed": "
|
|
51
|
-
"cmd.skill.loadFail": "
|
|
52
|
-
"cmd.skill.resetUnavailable": "
|
|
53
|
-
"cmd.skill.resetDone": "
|
|
54
|
-
"cmd.employee.resetUnavailable": "
|
|
55
|
-
"cmd.employee.resetDone": "
|
|
56
|
-
"cmd.clear.telegram": "
|
|
57
|
-
"cmd.clear.discord": "
|
|
58
|
-
"cmd.clear.done": "
|
|
59
|
-
"cmd.reset.confirm": "
|
|
60
|
-
"cmd.reset.unavailable": "
|
|
61
|
-
"cmd.reset.done": "
|
|
50
|
+
"cmd.cli.changed": "CLI 변경: {from} → {to}",
|
|
51
|
+
"cmd.skill.loadFail": "스킬 정보를 불러올 수 없습니다.",
|
|
52
|
+
"cmd.skill.resetUnavailable": "이 환경에서는 /skill reset을 사용할 수 없습니다.",
|
|
53
|
+
"cmd.skill.resetDone": "스킬 초기화를 실행했습니다.",
|
|
54
|
+
"cmd.employee.resetUnavailable": "이 환경에서는 /employee reset을 사용할 수 없습니다.",
|
|
55
|
+
"cmd.employee.resetDone": "직원 기본값으로 재설정 완료 ({count}명)",
|
|
56
|
+
"cmd.clear.telegram": "Telegram에서는 /clear가 화면 정리 없이 안내만 합니다.",
|
|
57
|
+
"cmd.clear.discord": "Discord에서는 /clear가 화면 정리 없이 안내만 합니다.",
|
|
58
|
+
"cmd.clear.done": "화면을 정리했습니다. (대화 기록은 유지됨)",
|
|
59
|
+
"cmd.reset.confirm": "전체 초기화: MCP, 스킬, 직원, 세션을 기본값으로 재설정합니다.\n실행하려면 /reset confirm 을 입력하세요.",
|
|
60
|
+
"cmd.reset.unavailable": "이 환경에서는 초기화가 지원되지 않습니다.",
|
|
61
|
+
"cmd.reset.done": "초기화 완료: {items}",
|
|
62
62
|
"cmd.reset.skills": "스킬",
|
|
63
63
|
"cmd.reset.employees": "직원",
|
|
64
64
|
"cmd.reset.sessions": "세션",
|
|
65
|
-
"cmd.mcp.syncDone": "
|
|
66
|
-
"cmd.mcp.installDone": "
|
|
67
|
-
"cmd.memory.empty": "
|
|
68
|
-
"cmd.browser.noTabs": "
|
|
69
|
-
"cmd.fallback.inactive": "
|
|
70
|
-
"cmd.fallback.off": "
|
|
71
|
-
"cmd.fallback.invalidCli": "
|
|
72
|
-
"cmd.fallback.set": "
|
|
65
|
+
"cmd.mcp.syncDone": "MCP sync 완료 ({count} target)",
|
|
66
|
+
"cmd.mcp.installDone": "MCP install 완료 ({count} server)",
|
|
67
|
+
"cmd.memory.empty": "memory 파일이 없습니다.",
|
|
68
|
+
"cmd.browser.noTabs": "열린 탭이 없습니다.",
|
|
69
|
+
"cmd.fallback.inactive": "Fallback: 비활성화\n사용 가능: {available}",
|
|
70
|
+
"cmd.fallback.off": "Fallback 비활성화됨",
|
|
71
|
+
"cmd.fallback.invalidCli": "유효한 CLI 없음\n사용 가능: {available}",
|
|
72
|
+
"cmd.fallback.set": "Fallback 설정: {order}",
|
|
73
73
|
"cmd.arg.skillList": "스킬 목록",
|
|
74
74
|
"cmd.arg.skillReset": "스킬 초기화",
|
|
75
75
|
"cmd.arg.employeeReset": "기본 4명 재생성",
|
|
@@ -77,93 +77,93 @@
|
|
|
77
77
|
"cmd.arg.browserTabs": "열린 탭 목록",
|
|
78
78
|
"cmd.arg.fallbackOff": "비활성화",
|
|
79
79
|
"cmd.arg.flushOff": "비활성화 (active CLI 사용)",
|
|
80
|
-
"cmd.flush.current": "
|
|
81
|
-
"cmd.flush.changed": "
|
|
82
|
-
"cmd.flush.reset": "
|
|
83
|
-
"cmd.flush.cliUnavailable": "
|
|
80
|
+
"cmd.flush.current": "Flush 모델({cli}): {model}",
|
|
81
|
+
"cmd.flush.changed": "Flush 모델 변경: {cli} / {model}",
|
|
82
|
+
"cmd.flush.reset": "Flush 모델 초기화 (active CLI/모델 사용)",
|
|
83
|
+
"cmd.flush.cliUnavailable": "{cli} CLI를 찾을 수 없습니다 (model: {model}). 설치 후 다시 시도하세요.",
|
|
84
84
|
"cmd.arg.argSelect": "인자 선택",
|
|
85
85
|
"api.notCommand": "슬래시 커맨드가 아닙니다.",
|
|
86
86
|
"api.serverError": "서버 오류: {msg}",
|
|
87
|
-
"ws.agentBusy": "
|
|
88
|
-
"ws.roundStart": "
|
|
89
|
-
"ws.roundDone": "
|
|
90
|
-
"ws.roundNext": "
|
|
91
|
-
"ws.roundRetry": "
|
|
92
|
-
"ws.fallback": "
|
|
93
|
-
"ws.retry": "
|
|
94
|
-
"tg.settingsUnsupported": "
|
|
95
|
-
"dc.settingsUnsupported": "
|
|
87
|
+
"ws.agentBusy": "현재 작업이 진행 중입니다. 완료 후 \"이어서 해줘\"를 다시 요청하세요.",
|
|
88
|
+
"ws.roundStart": "라운드 {round} — {count}개 작업 [{names}]",
|
|
89
|
+
"ws.roundDone": "라운드 {round} 완료",
|
|
90
|
+
"ws.roundNext": "라운드 {round} → 다음 라운드",
|
|
91
|
+
"ws.roundRetry": "라운드 {round} → 재시도",
|
|
92
|
+
"ws.fallback": "{from} 실패 → {to}로 재시도",
|
|
93
|
+
"ws.retry": "{cli} 429 → {delay}s 후 재시도",
|
|
94
|
+
"tg.settingsUnsupported": "Telegram에서 설정 변경은 지원하지 않습니다.",
|
|
95
|
+
"dc.settingsUnsupported": "Discord에서 설정 변경은 지원하지 않습니다.",
|
|
96
96
|
"tg.promptUnsupported": "(Telegram에서 미지원)",
|
|
97
|
-
"tg.queued": "
|
|
97
|
+
"tg.queued": "대기열에 추가됨 ({count}번째)",
|
|
98
98
|
"tg.imageCaption": "[📷 이미지] {caption}",
|
|
99
|
-
"tg.imageFail": "
|
|
100
|
-
"tg.fileFail": "
|
|
101
|
-
"tg.voiceFail": "
|
|
102
|
-
"tg.voiceEmpty": "
|
|
99
|
+
"tg.imageFail": "이미지 처리 실패: {msg}",
|
|
100
|
+
"tg.fileFail": "파일 처리 실패: {msg}",
|
|
101
|
+
"tg.voiceFail": "음성 인식 실패: {msg}",
|
|
102
|
+
"tg.voiceEmpty": "음성을 인식하지 못했어요. 다시 시도해주세요.",
|
|
103
103
|
"voice.start": "음성 녹음",
|
|
104
104
|
"voice.stop": "녹음 중지",
|
|
105
|
-
"voice.micDenied": "
|
|
106
|
-
"voice.micNotFound": "
|
|
107
|
-
"voice.micBusy": "
|
|
108
|
-
"voice.httpsRequired": "
|
|
109
|
-
"voice.unsupported": "
|
|
110
|
-
"voice.interrupted": "
|
|
111
|
-
"voice.tooLarge": "
|
|
112
|
-
"voice.tooShort": "
|
|
113
|
-
"voice.sttFail": "
|
|
114
|
-
"copilot.keychain": "
|
|
105
|
+
"voice.micDenied": "마이크 접근이 거부됐어요. 브라우저 설정에서 마이크를 허용해 주세요.",
|
|
106
|
+
"voice.micNotFound": "마이크를 찾을 수 없어요. 마이크를 연결해 주세요.",
|
|
107
|
+
"voice.micBusy": "마이크가 다른 앱에서 사용 중이에요.",
|
|
108
|
+
"voice.httpsRequired": "음성 녹음은 HTTPS 또는 localhost에서만 가능해요.",
|
|
109
|
+
"voice.unsupported": "이 브라우저에서는 음성 녹음을 지원하지 않아요.",
|
|
110
|
+
"voice.interrupted": "녹음이 중단됐어요.",
|
|
111
|
+
"voice.tooLarge": "녹음이 너무 길어요 (최대 20MB).",
|
|
112
|
+
"voice.tooShort": "녹음이 너무 짧아요.",
|
|
113
|
+
"voice.sttFail": "음성 인식 실패: {msg}",
|
|
114
|
+
"copilot.keychain": "키체인",
|
|
115
115
|
"copilot.keychainHint": "macOS 키체인에서 Copilot 토큰을 다시 읽습니다",
|
|
116
|
-
"stt.title": "
|
|
116
|
+
"stt.title": "음성 인식 (STT)",
|
|
117
117
|
"stt.engine": "엔진",
|
|
118
118
|
"stt.geminiKey": "Gemini API Key",
|
|
119
119
|
"stt.geminiKeyHint": "Gemini 클라우드 STT에 사용",
|
|
120
120
|
"stt.geminiModel": "Gemini 모델",
|
|
121
121
|
"stt.whisperModel": "Whisper 모델",
|
|
122
|
-
"stt.save": "
|
|
123
|
-
"stt.saved": "
|
|
124
|
-
"stt.shortcutHint": "
|
|
122
|
+
"stt.save": "STT 설정 저장",
|
|
123
|
+
"stt.saved": "저장됨",
|
|
124
|
+
"stt.shortcutHint": "Ctrl+Shift+Space (Mac: ⌘+Shift+Space)",
|
|
125
125
|
"stt.openaiBaseUrl": "Base URL",
|
|
126
126
|
"stt.openaiKey": "API Key",
|
|
127
127
|
"stt.openaiModel": "모델",
|
|
128
128
|
"stt.vertexConfig": "Vertex AI 설정 (JSON)",
|
|
129
|
-
"tg.timeout": "
|
|
129
|
+
"tg.timeout": "시간 초과 (20분 무응답)",
|
|
130
130
|
"tg.noResponse": "응답 없음",
|
|
131
|
-
"tg.connected": "
|
|
132
|
-
"tg.resetDone": "
|
|
131
|
+
"tg.connected": "Jaw Agent 연결됨! 메시지를 보내면 AI 에이전트가 응답합니다.",
|
|
132
|
+
"tg.resetDone": "리셋 완료.",
|
|
133
133
|
"cli.fileNotFound": "파일 없음: {path}",
|
|
134
134
|
"cli.fileSentPrompt": "[사용자가 파일을 보냈습니다: {path}]\n이 파일을 Read 도구로 읽고 분석해주세요.",
|
|
135
135
|
"cli.fileSentWithMsg": "\n\n사용자 메시지: {text}",
|
|
136
136
|
"cli.fallbackRetry": "{from} 실패 → {to}로 재시도",
|
|
137
137
|
"cli.noReadyCli": "인증된 CLI가 없습니다 — 위에서 하나 이상의 CLI를 설치하고 인증해 주세요.",
|
|
138
|
-
"chat.cmd.fail": "
|
|
138
|
+
"chat.cmd.fail": "커맨드 실행 실패: {msg}",
|
|
139
139
|
"chat.file.sent": "[사용자가 파일을 보냈습니다: {path}]\n이 파일을 Read 도구로 읽고 분석해주세요.",
|
|
140
140
|
"chat.file.sentWithMsg": "\n\n사용자 메시지: {text}",
|
|
141
|
-
"chat.file.uploadFail": "
|
|
141
|
+
"chat.file.uploadFail": "파일 업로드 실패: {msg}",
|
|
142
142
|
"chat.requestFail": "요청 실패 ({status})",
|
|
143
|
-
"chat.continue": "
|
|
143
|
+
"chat.continue": "이전 worklog 기준으로 이어서 진행합니다.",
|
|
144
144
|
"skill.loadFail": "스킬 로드 실패",
|
|
145
145
|
"skill.count": "활성 {active}개 / 전체 {total}개",
|
|
146
146
|
"skill.filter.all": "전체",
|
|
147
|
-
"skill.filter.installed": "
|
|
148
|
-
"skill.filter.productivity": "
|
|
149
|
-
"skill.filter.communication": "
|
|
150
|
-
"skill.filter.devtools": "
|
|
151
|
-
"skill.filter.utility": "
|
|
152
|
-
"skill.filter.smarthome": "
|
|
153
|
-
"skill.filter.other": "
|
|
154
|
-
"skill.filter.ai": "
|
|
147
|
+
"skill.filter.installed": "설치됨",
|
|
148
|
+
"skill.filter.productivity": "생산성",
|
|
149
|
+
"skill.filter.communication": "커뮤",
|
|
150
|
+
"skill.filter.devtools": "개발",
|
|
151
|
+
"skill.filter.utility": "유틸",
|
|
152
|
+
"skill.filter.smarthome": "홈",
|
|
153
|
+
"skill.filter.other": "기타",
|
|
154
|
+
"skill.filter.ai": "AI",
|
|
155
155
|
"lang.ko": "한국어",
|
|
156
156
|
"lang.en": "English",
|
|
157
157
|
"emp.addPrompt": "에이전트를 추가하세요",
|
|
158
158
|
"emp.delete": "삭제",
|
|
159
159
|
"emp.customRole": "커스텀 역할...",
|
|
160
|
-
"emp.customModel": "
|
|
161
|
-
"role.label.frontend": "
|
|
162
|
-
"role.label.backend": "
|
|
163
|
-
"role.label.research": "
|
|
164
|
-
"role.label.data": "
|
|
165
|
-
"role.label.docs": "
|
|
166
|
-
"role.label.custom": "
|
|
160
|
+
"emp.customModel": "직접 입력...",
|
|
161
|
+
"role.label.frontend": "프런트엔드",
|
|
162
|
+
"role.label.backend": "백엔드",
|
|
163
|
+
"role.label.research": "리서치",
|
|
164
|
+
"role.label.data": "데이터",
|
|
165
|
+
"role.label.docs": "문서작성",
|
|
166
|
+
"role.label.custom": "커스텀...",
|
|
167
167
|
"hb.empty": "하트비트가 없습니다",
|
|
168
168
|
"hb.name": "이름",
|
|
169
169
|
"hb.prompt": "프롬프트...",
|
|
@@ -184,15 +184,15 @@
|
|
|
184
184
|
"mem.noFiles": "No memory files yet",
|
|
185
185
|
"mem.empty": "No memory yet",
|
|
186
186
|
"model.promptInput": "모델 ID를 입력하세요:",
|
|
187
|
-
"model.customOption": "
|
|
187
|
+
"model.customOption": "직접 입력...",
|
|
188
188
|
"model.placeholder": "model ID 입력",
|
|
189
189
|
"mcp.syncing": "동기화 중...",
|
|
190
|
-
"mcp.installing": "
|
|
190
|
+
"mcp.installing": "npm i -g 설치 중... (최대 2분 소요)",
|
|
191
191
|
"settings.none": "(없음)",
|
|
192
192
|
"cli.gemini.auth": "첫 실행 시 브라우저 인증",
|
|
193
|
-
"cli.authRequired": "
|
|
194
|
-
"cli.notAuthenticated": "
|
|
195
|
-
"drag.drop": "
|
|
193
|
+
"cli.authRequired": "설치 / 인증 필요",
|
|
194
|
+
"cli.notAuthenticated": "인증 필요 — 아래 명령어 실행",
|
|
195
|
+
"drag.drop": "파일을 여기에 드랍하세요",
|
|
196
196
|
"status.responding": "응답 중",
|
|
197
197
|
"aria.cmdList": "커맨드 목록",
|
|
198
198
|
"btn.attach": "파일 첨부",
|
|
@@ -244,8 +244,8 @@
|
|
|
244
244
|
"label.flushEvery": "정리 주기",
|
|
245
245
|
"emp.empty": "직원이 없습니다",
|
|
246
246
|
"modal.promptTitle": "시스템 프롬프트 (A-2)",
|
|
247
|
-
"modal.heartbeatTitle": "
|
|
248
|
-
"modal.memoryTitle": "
|
|
247
|
+
"modal.heartbeatTitle": "하트비트 작업",
|
|
248
|
+
"modal.memoryTitle": "메모리",
|
|
249
249
|
"code.copy": "복사",
|
|
250
250
|
"code.copied": "복사됨 ✓",
|
|
251
251
|
"mcp.noServers": "(서버 미설정)",
|
|
@@ -254,5 +254,6 @@
|
|
|
254
254
|
"cmd.ide.desc": "IDE diff 보기",
|
|
255
255
|
"cmd.ide.toggled": "IDE diff 모드를 전환했습니다",
|
|
256
256
|
"cmd.ide.popToggled": "IDE 팝업을 전환했습니다",
|
|
257
|
-
"cmd.ide.usage": "
|
|
257
|
+
"cmd.ide.usage": "/ide [pop|on|off]",
|
|
258
|
+
"label.mentionOnly": "@멘션 시에만 응답"
|
|
258
259
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# release-1.6.0.sh — fixed release path for v1.6.0
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
cd /Users/jun/Developer/new/700_projects/cli-jaw
|
|
6
|
+
|
|
7
|
+
TARGET_VERSION="1.6.0"
|
|
8
|
+
EXPECTED_CURRENT="1.5.1"
|
|
9
|
+
|
|
10
|
+
echo "🦈 cli-jaw fixed release script"
|
|
11
|
+
echo "==============================="
|
|
12
|
+
echo "Current expected version: $EXPECTED_CURRENT"
|
|
13
|
+
echo "Target version: $TARGET_VERSION"
|
|
14
|
+
|
|
15
|
+
CURRENT_VERSION="$(node -p "require('./package.json').version")"
|
|
16
|
+
if [[ "$CURRENT_VERSION" != "$EXPECTED_CURRENT" ]]; then
|
|
17
|
+
echo "❌ Expected package.json version $EXPECTED_CURRENT but found $CURRENT_VERSION"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
if ! git diff --quiet || ! git diff --cached --quiet; then
|
|
22
|
+
echo "❌ Working tree is not clean. Commit or stash changes before running this script."
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
echo "🔎 Type checking..."
|
|
27
|
+
./node_modules/.bin/tsc --noEmit
|
|
28
|
+
|
|
29
|
+
echo "📦 Building backend..."
|
|
30
|
+
npm run build
|
|
31
|
+
|
|
32
|
+
echo "📦 Building frontend..."
|
|
33
|
+
npm run build:frontend
|
|
34
|
+
|
|
35
|
+
echo "⬆️ Setting release version..."
|
|
36
|
+
npm version "$TARGET_VERSION" --no-git-tag-version
|
|
37
|
+
|
|
38
|
+
VERSION="$(node -p "require('./package.json').version")"
|
|
39
|
+
echo "📌 package.json version: $VERSION"
|
|
40
|
+
|
|
41
|
+
echo "🧪 Verifying npm package contents..."
|
|
42
|
+
npm pack --dry-run >/dev/null
|
|
43
|
+
|
|
44
|
+
echo "📝 Creating release commit..."
|
|
45
|
+
git add package.json package-lock.json README.md
|
|
46
|
+
git commit -m "[agent] chore: release v$VERSION"
|
|
47
|
+
|
|
48
|
+
echo "🏷️ Creating release tag..."
|
|
49
|
+
git tag "v$VERSION"
|
|
50
|
+
|
|
51
|
+
echo "⬆️ Pushing branch + tag..."
|
|
52
|
+
CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
|
53
|
+
git push origin "$CURRENT_BRANCH"
|
|
54
|
+
git push origin "v$VERSION"
|
|
55
|
+
|
|
56
|
+
echo "🚀 Publishing to npm..."
|
|
57
|
+
npm publish --access public
|
|
58
|
+
|
|
59
|
+
echo "📋 Creating GitHub release..."
|
|
60
|
+
gh release create "v$VERSION" \
|
|
61
|
+
--title "v$VERSION" \
|
|
62
|
+
--generate-notes \
|
|
63
|
+
--notes-start-tag "v$EXPECTED_CURRENT" \
|
|
64
|
+
--latest
|
|
65
|
+
|
|
66
|
+
echo ""
|
|
67
|
+
echo "✅ cli-jaw@$VERSION released"
|
|
68
|
+
echo " Install: npm install -g cli-jaw"
|
|
69
|
+
echo " Release: https://github.com/lidge-jun/cli-jaw/releases/tag/v$VERSION"
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// ─── Token Keep-Alive: auto-refresh before expiry ─────
|
|
2
|
-
import { execFileSync } from 'child_process';
|
|
3
|
-
const CHECK_INTERVAL_MS = 60 * 60 * 1000; // 1시간
|
|
4
|
-
let _timer = null;
|
|
5
|
-
export function startTokenKeepAlive() {
|
|
6
|
-
if (_timer)
|
|
7
|
-
return;
|
|
8
|
-
setTimeout(() => {
|
|
9
|
-
refreshClaude();
|
|
10
|
-
_timer = setInterval(refreshClaude, CHECK_INTERVAL_MS);
|
|
11
|
-
_timer.unref?.();
|
|
12
|
-
}, 30_000);
|
|
13
|
-
console.log('[token-keepalive] started (interval: 1h)');
|
|
14
|
-
}
|
|
15
|
-
export function stopTokenKeepAlive() {
|
|
16
|
-
if (_timer) {
|
|
17
|
-
clearInterval(_timer);
|
|
18
|
-
_timer = null;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
function refreshClaude() {
|
|
22
|
-
try {
|
|
23
|
-
const ver = execFileSync('claude', ['--version'], {
|
|
24
|
-
timeout: 10_000,
|
|
25
|
-
encoding: 'utf8',
|
|
26
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
27
|
-
}).trim();
|
|
28
|
-
console.log(`[token-keepalive] Claude token refreshed (${ver})`);
|
|
29
|
-
}
|
|
30
|
-
catch (e) {
|
|
31
|
-
console.warn('[token-keepalive] Claude refresh failed:', e.message?.split('\n')[0]);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=token-keepalive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-keepalive.js","sourceRoot":"","sources":["../../lib/token-keepalive.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM;AAChD,IAAI,MAAM,GAA0C,IAAI,CAAC;AAEzD,MAAM,UAAU,mBAAmB;IAC/B,IAAI,MAAM;QAAE,OAAO;IACnB,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,EAAE,CAAC;QAChB,MAAM,GAAG,WAAW,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACrB,CAAC,EAAE,MAAM,CAAC,CAAC;IACX,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kBAAkB;IAC9B,IAAI,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC;AACzD,CAAC;AAED,SAAS,aAAa;IAClB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;YAC9C,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,6CAA6C,GAAG,GAAG,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAG,CAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./api-B8XKQ4OT.js";export{e as api};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{X as e}from"./vendor-mermaid-COidH9HB.js";export{e as createArchitectureServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{M as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./api-B8XKQ4OT.js";var t={claude:{label:`Claude`,efforts:[`low`,`medium`,`high`],models:[`sonnet`,`opus`,`sonnet[1m]`,`opus[1m]`,`haiku`]},codex:{label:`Codex`,efforts:[`low`,`medium`,`high`,`xhigh`],models:[`gpt-5.4`,`gpt-5.3-codex`,`gpt-5.3-codex-spark`,`gpt-5.2-codex`,`gpt-5.1-codex-max`,`gpt-5.1-codex-mini`]},gemini:{label:`Gemini`,efforts:[],models:[`gemini-3.0-pro-preview`,`gemini-3.1-pro-preview`,`gemini-2.5-pro`,`gemini-3-flash-preview`,`gemini-2.5-flash`]},opencode:{label:`OpenCode`,efforts:[`minimal`,`low`,`high`,`max`],models:[`anthropic/claude-opus-4-6-thinking`,`anthropic/claude-sonnet-4-6-thinking`,`anthropic/claude-sonnet-4-6`,`openai/gpt-5.4-xhigh`,`openai/gpt-5.4-high`,`openai/gpt-5.3-codex-xhigh`,`openai/gpt-5.3-codex-high`,`opencode/big-pickle`,`opencode/GLM-5 Free`,`opencode/MiniMax M2.5 Free`,`opencode/Kimi K2.5 Free`,`opencode/GPT 5 Nano Free`,`opencode/Grok Code Fast 1 Free`]},copilot:{label:`Copilot`,efforts:[`low`,`medium`,`high`],effortNote:`→ ~/.copilot/config.json`,models:[`claude-sonnet-4.6`,`claude-opus-4.6`,`claude-opus-4.6-fast`,`claude-haiku-4.5`,`gpt-5.4`,`gpt-5.3-codex`,`gpt-5.2-codex`,`gpt-5.1-codex`,`gpt-4.1`,`gpt-5-mini`,`gemini-3-pro-preview`]}};function n(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r?.models)?[...r.models]:[];return t}function r(e){let t={};for(let[n,r]of Object.entries(e||{})){if(!r||typeof r!=`object`)continue;let e=r,i={label:e.label||n,efforts:Array.isArray(e.efforts)?[...e.efforts]:[],models:Array.isArray(e.models)?[...e.models]:[]};typeof e.effortNote==`string`&&e.effortNote.trim()&&(i.effortNote=e.effortNote),t[n]=i}return t}var i=r(t),a=Object.keys(i),o=n(i);function s(e){let t=r(e);return Object.keys(t).length?(i=t,a=Object.keys(t),o=n(t),!0):!1}async function c(){try{let t=await e(`/api/cli-registry`);if(!t||!s(t))throw Error(`invalid registry`)}catch(e){console.warn(`[cli-registry] fallback:`,e.message),s(t)}return i}function l(){return a}function u(e){return i[e]||null}var d=[{value:`frontend`,labelKey:`role.label.frontend`,label:`Frontend`,prompt:`Frontend employee — UI/UX, CSS, components`,skill:`dev-frontend`},{value:`backend`,labelKey:`role.label.backend`,label:`Backend`,prompt:`Backend employee — API, DB, server logic`,skill:`dev-backend`},{value:`research`,labelKey:`role.label.research`,label:`Research`,prompt:`Research employee — search, codebase exploration, uncertainty reduction, read-only reports`,skill:`research-worker`},{value:`data`,labelKey:`role.label.data`,label:`Data`,prompt:`Data employee — data pipeline, analysis, ML`,skill:`dev-data`},{value:`docs`,labelKey:`role.label.docs`,label:`Docs`,prompt:`Docs employee — documentation, README, API docs`,skill:`documentation`},{value:`custom`,labelKey:`role.label.custom`,label:`Custom...`,prompt:``,skill:null}];export{c as a,u as i,d as n,l as r,o as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e}from"./vendor-mermaid-COidH9HB.js";export{e as render};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as e}from"./vendor-mermaid-COidH9HB.js";export{e as render};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{T as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{w as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./state-O6NVkWcL.js";import{c as t,t as n}from"./render-YHvL5VM_.js";import{n as r,r as i,t as a}from"./api-B8XKQ4OT.js";import{n as o}from"./ws-S_AZgx7L.js";import{n as s,r as c,t as l}from"./constants-DshMUJbo.js";var u={"React/Vue 기반 UI 컴포넌트 개발, 스타일링":`frontend`,"API 서버, DB 스키마, 비즈니스 로직 구현":`backend`,"프론트엔드와 백엔드 모두 담당":`frontend`,"CI/CD, Docker, 인프라 자동화":`backend`,"테스트 작성, 버그 재현, 품질 관리":`custom`,"데이터 파이프라인, ETL, 분석 쿼리":`data`,"API 문서화, README, 가이드 작성":`docs`,"UI/UX 구현, CSS, 컴포넌트 개발":`frontend`,"API, DB, 서버 로직 구현":`backend`,"데이터 파이프라인, 분석, ML":`data`,"문서화, README, API docs":`docs`,"UI/UX, CSS, components":`frontend`,"API, DB, server logic":`backend`,"Search, codebase exploration, uncertainty reduction, read-only reports":`research`,"Search, codebase exploration, uncertainty reduction, read-only":`research`,"Data pipeline, analysis, ML":`data`,"Documentation, README, API docs":`docs`},d={1:`#60a5fa`,2:`#a78bfa`,3:`#34d399`,4:`#fbbf24`,5:`#f472b6`};async function f(){e.employees=await a(`/api/employees`)||[],p()}function p(){let r=document.getElementById(`employeesList`);if(!r)return;let i=e.employees;if(i.length===0){r.innerHTML=`<div style="color:var(--text-dim);font-size:11px;padding:4px 0">${t(`emp.addPrompt`)}</div>`;return}let a=c();r.innerHTML=i.map(e=>{let r=l[e.cli]||[],i=u[e.role||``],c=i?s.find(e=>e.value===i):s.find(t=>t.prompt===e.role),f=c?c.value:e.role?`custom`:`frontend`,p=f===`custom`,m=o(e.id),h=m?.phase||e.phase,g=m?.phaseLabel||e.phaseLabel,_=h?`<span style="background:${d[h]||`#888`};color:#000;padding:1px 6px;border-radius:9px;font-size:9px">${n(g||`P`+h)}</span>`:``;return`
|
|
2
|
-
<div class="settings-group" style="margin-bottom:8px;padding:8px 10px">
|
|
3
|
-
<div style="display:flex;align-items:center;gap:6px;margin-bottom:6px">
|
|
4
|
-
<span style="width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block;flex-shrink:0"></span>
|
|
5
|
-
<input style="flex:1;background:none;border:none;color:var(--text);font-size:12px;font-weight:600;font-family:inherit;outline:none"
|
|
6
|
-
value="${n(e.name||`Agent`)}"
|
|
7
|
-
data-emp-name="${n(e.id)}">
|
|
8
|
-
<button style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12px" data-emp-delete="${n(e.id)}" title="${t(`emp.delete`)}">✕</button>
|
|
9
|
-
</div>
|
|
10
|
-
<div style="display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:4px">
|
|
11
|
-
<div>
|
|
12
|
-
<label>CLI</label>
|
|
13
|
-
<select data-emp-cli="${n(e.id)}">
|
|
14
|
-
${a.map(t=>`<option${e.cli===t?` selected`:``}>${n(t)}</option>`).join(``)}
|
|
15
|
-
</select>
|
|
16
|
-
</div>
|
|
17
|
-
<div>
|
|
18
|
-
<label>Model</label>
|
|
19
|
-
<select data-emp-model="${n(e.id)}">
|
|
20
|
-
<option value="default"${!e.model||e.model===`default`?` selected`:``}>default</option>
|
|
21
|
-
${r.map(t=>`<option${e.model===t?` selected`:``}>${n(t)}</option>`).join(``)}
|
|
22
|
-
${e.model&&e.model!==`default`&&!r.includes(e.model)?`<option selected>${n(e.model)}</option>`:``}
|
|
23
|
-
<option value="__custom__">${t(`emp.customModel`)}</option>
|
|
24
|
-
</select>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
<div>
|
|
28
|
-
<label>Role</label>
|
|
29
|
-
<select data-emp-role="${n(e.id)}">
|
|
30
|
-
${s.map(e=>`<option value="${e.value}"${f===e.value?` selected`:``}>${e.label}</option>`).join(``)}
|
|
31
|
-
</select>
|
|
32
|
-
<textarea data-emp-custom="${n(e.id)}" style="display:${p?`block`:`none`};margin-top:4px;width:100%;height:40px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:4px 6px;border-radius:4px;font-size:10px;font-family:inherit;resize:vertical"
|
|
33
|
-
placeholder="${t(`emp.customRole`)}">${p?n(e.role||``):``}</textarea>
|
|
34
|
-
</div>
|
|
35
|
-
<div style="margin-top:4px;font-size:10px;display:flex;align-items:center;gap:6px">
|
|
36
|
-
<span style="color:${e.status===`running`?`#fbbf24`:`var(--green)`}">● ${n(e.status||`idle`)}</span>
|
|
37
|
-
${_}
|
|
38
|
-
</div>
|
|
39
|
-
</div>`}).join(``)}async function m(){await i(`/api/employees`,`POST`,{})}async function h(e,t){await i(`/api/employees/${e}`,`PUT`,t)}async function g(e){r(`/api/employees/${e}`,`DELETE`)}function _(e,r){let i=l[r]||[],a=document.querySelector(`[data-emp-model="${e}"]`);a&&(a.innerHTML=`<option value="default" selected>default</option>`+i.map(e=>`<option>${n(e)}</option>`).join(``)+`<option value="__custom__">${t(`emp.customModel`)}</option>`),h(e,{cli:r,model:r===`claude`?`sonnet`:`default`})}function v(e,t){let n=s.find(e=>e.value===t),r=document.querySelector(`[data-emp-custom="${e}"]`);r&&(t===`custom`?(r.style.display=`block`,r.focus()):(r.style.display=`none`,r.value=``,h(e,{role:n?.prompt||``})))}export{m as addEmployee,g as deleteEmployee,f as loadEmployees,_ as onEmpCliChange,v as onEmpRoleChange,p as renderEmployees,h as updateEmployee};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{x as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{y as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{J as e}from"./vendor-mermaid-COidH9HB.js";export{e as createGitGraphServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{v as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|