jutell 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/assets/default-config.json +26 -0
  4. package/assets/local-admin/assets/index-CVml-p-C.css +1 -0
  5. package/assets/local-admin/assets/index-Gxd8X8ii.js +60 -0
  6. package/assets/local-admin/index.html +14 -0
  7. package/assets/local-admin-server.js +1391 -0
  8. package/assets/mcp-server/config/bridge-config.js +72 -0
  9. package/assets/mcp-server/index.js +42 -0
  10. package/assets/mcp-server/tools/bridge-tools.js +64 -0
  11. package/assets/mcp-server/tools/catalog.js +25 -0
  12. package/assets/mcp-server/tools/usage-counters.js +97 -0
  13. package/assets/skill/SKILL.md +135 -0
  14. package/assets/skill/references/explained-diff-format.md +117 -0
  15. package/assets/skill/references/feature-registry.md +29 -0
  16. package/assets/skill/references/glossary-ko.md +302 -0
  17. package/assets/skill/references/report-format.md +176 -0
  18. package/assets/skill/references/risk-level-guide.md +85 -0
  19. package/assets/templates/request-builder/BUG_REPORT_REQUEST.md +100 -0
  20. package/assets/templates/request-builder/CODE_REVIEW_REQUEST.md +93 -0
  21. package/assets/templates/request-builder/DESIGN_REQUEST.md +111 -0
  22. package/assets/templates/request-builder/FEATURE_REQUEST.md +93 -0
  23. package/assets/templates/request-builder/MANUAL_EDIT_GUIDE.md +95 -0
  24. package/assets/templates/request-builder/NEXT_AGENT_HANDOFF.md +106 -0
  25. package/assets/templates/request-builder/PROJECT_PLANNING_REQUEST.md +106 -0
  26. package/assets/templates/request-builder/README.md +48 -0
  27. package/assets/version.json +6 -0
  28. package/dist/cli.js +82 -0
  29. package/dist/commands/dashboard.js +81 -0
  30. package/dist/commands/default.js +103 -0
  31. package/dist/commands/lifecycle.js +166 -0
  32. package/dist/commands/migrate.js +159 -0
  33. package/dist/commands/provider.js +135 -0
  34. package/dist/commands/session/add-work.js +43 -0
  35. package/dist/commands/session/create-page.js +53 -0
  36. package/dist/commands/session/finish-session.js +28 -0
  37. package/dist/commands/session/index.js +76 -0
  38. package/dist/commands/session/move-page.js +37 -0
  39. package/dist/commands/session/new-session.js +24 -0
  40. package/dist/commands/session/operator-storage.js +126 -0
  41. package/dist/commands/session/prompt.js +77 -0
  42. package/dist/commands/session/storage-command.js +74 -0
  43. package/dist/commands/session/storage.js +212 -0
  44. package/dist/commands/session/types.js +1 -0
  45. package/dist/commands/status.js +208 -0
  46. package/dist/commands/upgrade.js +113 -0
  47. package/dist/commands/use.js +180 -0
  48. package/dist/compat.js +5 -0
  49. package/dist/config/managed.js +257 -0
  50. package/dist/config/paths.js +100 -0
  51. package/dist/index.js +4 -0
  52. package/dist/installer/agents.js +42 -0
  53. package/dist/installer/claude.js +160 -0
  54. package/dist/installer/config.js +45 -0
  55. package/dist/installer/opencode.js +237 -0
  56. package/dist/installer/providers.js +15 -0
  57. package/dist/installer/skill.js +94 -0
  58. package/dist/output/format.js +187 -0
  59. package/dist/process/mcpProbe.js +122 -0
  60. package/dist/process/system.js +34 -0
  61. package/dist/types.js +1 -0
  62. package/package.json +55 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ju0
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # jutell
2
+
3
+ JuTell by Ju0의 로컬 설치·상태·진단·관리자 실행 CLI입니다. 아직 npm에 공개하지 않았습니다.
4
+
5
+ ```bash
6
+ npm install -g ./jutell-0.3.0.tgz
7
+ jutell setup
8
+ jutell status
9
+ ```
10
+
11
+ 기존 `beginner-bridge` 명령은 같은 기능의 호환 별칭이며 실행 시 새 명령 사용을 안내합니다. CLI는 프로젝트 코드, Prompt, AI 답변, Git diff와 비밀정보를 수집하거나 외부로 전송하지 않습니다.
@@ -0,0 +1,26 @@
1
+ {
2
+ "version": 1,
3
+ "profile": "balanced",
4
+ "features": {
5
+ "changeSummary": true,
6
+ "userVisibleChanges": true,
7
+ "internalChanges": true,
8
+ "mainFiles": true,
9
+ "explainedDiff": true,
10
+ "glossary": true,
11
+ "validationResults": true,
12
+ "riskAssessment": true,
13
+ "userActions": true
14
+ },
15
+ "limits": {
16
+ "maxMainFiles": 5,
17
+ "maxGlossaryTerms": 3,
18
+ "compactReportMaxSentences": 12
19
+ },
20
+ "voice": {
21
+ "preset": "default"
22
+ },
23
+ "mcp": {
24
+ "enabled": false
25
+ }
26
+ }
@@ -0,0 +1 @@
1
+ :root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172033;background:#f4f7fb;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;padding-bottom:88px}.app-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding:38px max(24px,calc((100% - 1180px)/2));background:#172033;color:#f8fafc}.app-header h1{margin:6px 0;font-size:clamp(28px,4vw,44px);letter-spacing:-.04em}.app-header p{margin:0;color:#b8c4d9}.eyebrow{margin:0;color:#4c7dff;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.header-badge{border:1px solid #5575ac;border-radius:999px;padding:8px 12px;color:#d9e6ff;font-size:12px;font-weight:800;white-space:nowrap}.tab-nav{display:flex;gap:4px;overflow-x:auto;padding:0 max(18px,calc((100% - 1180px)/2));background:#fff;border-bottom:1px solid #dbe3ef}.tab-nav button{border:0;border-bottom:3px solid transparent;background:none;color:#62708a;padding:17px 14px 14px;font-weight:700;white-space:nowrap}.tab-nav button:hover,.tab-nav button.active{border-bottom-color:#2563eb;color:#1747ab}main{width:min(1180px,calc(100% - 40px));margin:0 auto;padding:38px 0}.page-header{margin-bottom:26px}.page-header h2{margin:6px 0 8px;font-size:30px;letter-spacing:-.04em}.page-header p:last-child{margin:0;color:#66758f}.notice{margin:0 0 22px;padding:14px 16px;border-radius:12px;background:#eaf2ff;color:#1e4b9a;font-weight:650}.notice-success{background:#e8f8ef;color:#17633a}.notice-error{background:#fff0f0;color:#a52727}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.stat-card,.panel,.feature-card,.profile-card{border:1px solid #dbe3ef;border-radius:16px;background:#fff;box-shadow:0 10px 26px #1720330a}.stat-card{padding:22px}.stat-card span,.overview-details span{display:block;color:#738099;font-size:13px;font-weight:700}.stat-card strong{display:block;margin-top:12px;font-size:27px;letter-spacing:-.04em}.overview-details{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;overflow:hidden;background:#dbe3ef;padding:0}.overview-details>div{padding:18px;background:#fff}.overview-details strong{display:block;margin-top:7px;font-size:15px}code{border-radius:5px;background:#eef2f8;color:#385078;padding:2px 5px;font-size:.88em}.feature-list{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.feature-card{padding:20px}.feature-card-top,.form-title,.form-footer,.button-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.feature-card h3{margin:10px 0 0;font-size:20px}.feature-card p{min-height:42px;color:#62708a;line-height:1.6}.feature-card dl{display:grid;gap:8px;margin:18px 0 0}.feature-card dl div{display:grid;grid-template-columns:86px 1fr;gap:8px;font-size:13px}.feature-card dt{color:#8290a6;font-weight:700}.feature-card dd{margin:0;color:#4c5a73}.toggle{display:inline-flex;align-items:center;gap:8px;color:#4b5b76;font-size:12px;font-weight:800}.toggle input{position:absolute;opacity:0}.toggle-track{width:42px;height:24px;padding:3px;border-radius:999px;background:#c4cedd;transition:.15s}.toggle-track span{display:block;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 3px #17203344}.toggle input:checked+.toggle-track{background:#2563eb}.toggle input:checked+.toggle-track span{transform:translate(18px)}.profile-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.profile-card{padding:20px;text-align:left;color:#172033}.profile-card:hover,.profile-card.selected{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1c}.profile-name{color:#2563eb;font-size:13px;font-weight:850}.profile-card h3{min-height:50px;margin:12px 0;font-size:17px;line-height:1.4}.profile-card p,.profile-card small{color:#71809a}.profile-card p{font-size:13px}.callout{margin-top:18px;border-radius:12px;padding:15px;background:#eef4ff;color:#365588}.limit-list{display:grid;gap:12px;max-width:760px}.limit-row{display:grid;grid-template-columns:1fr 150px;gap:16px;align-items:center;padding:18px;border:1px solid #dbe3ef;border-radius:14px;background:#fff}.limit-row strong,.limit-row small{display:block}.limit-row small{margin-top:7px;color:#71809a}.limit-row input,input,select,textarea{width:100%;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#172033;padding:10px 11px}.limit-row em,.field-error{grid-column:1 / -1;color:#ad2929;font-size:13px;font-style:normal}.provider-summary{display:grid;gap:5px;margin:15px 0;padding:13px 15px;border:1px solid #dbe3ef;border-radius:10px;background:#f8fbff}.provider-summary span,.provider-summary small{color:#66758d}.provider-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.provider-card{display:grid;gap:5px;padding:13px;border:1px solid #dbe3ef;border-radius:10px;background:#f8fbff}.provider-card span{color:#2563eb;font-size:12px;font-weight:800}.provider-card small{color:#66758d}.privacy-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.panel h3{margin-top:0}.panel li{margin:9px 0;color:#53617a;line-height:1.5}.danger-zone{margin-top:16px;border-color:#f0c6c6}.danger-zone p{color:#7f6c6c}.loading{min-height:100vh;display:grid;place-items:center;padding:30px}.save-bar{position:fixed;right:0;bottom:0;left:0;display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px max(24px,calc((100% - 1180px)/2));border-top:1px solid #c9d6eb;background:#fff;box-shadow:0 -8px 24px #17203314;color:#384a68;font-weight:750;z-index:5}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#17203388;z-index:10}.modal{width:min(680px,100%);max-height:90vh;overflow:auto;border-radius:18px;background:#fff;padding:26px;box-shadow:0 22px 60px #17203344}.modal h2{margin-top:0}.preview-grid{display:grid;grid-template-columns:150px 1fr;gap:1px;overflow:hidden;margin:22px 0;border:1px solid #dbe3ef;border-radius:10px;background:#dbe3ef}.preview-grid>*{margin:0;padding:12px;background:#fff;font-size:13px;line-height:1.5}.preview-grid strong{color:#62708a}.modal-actions{justify-content:flex-end}@media (max-width: 820px){.stat-grid,.profile-grid{grid-template-columns:repeat(2,1fr)}.feature-list,.privacy-grid{grid-template-columns:1fr}.overview-details{grid-template-columns:repeat(2,1fr)}.form-grid,.textareas{grid-template-columns:1fr 1fr}.checkbox-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.app-header{padding:28px 18px}.header-badge{display:none}main{width:min(100% - 24px,1180px);padding:26px 0}.stat-grid,.profile-grid,.form-grid,.textareas,.overview-details,.limit-row{grid-template-columns:1fr}.form-footer,.save-bar{align-items:flex-start;flex-direction:column}.save-bar{padding:12px}.filters,.filters select{width:100%}.preview-grid{grid-template-columns:1fr}.preview-grid strong{padding-bottom:0}.tab-nav{padding-left:8px;padding-right:8px}}.overview-actions{display:flex;justify-content:flex-end;margin:-10px 0 18px}.first-use-guide{margin-bottom:20px;border-color:#bcd0f5;background:#f7faff}.first-use-guide h3{margin:5px 0 0}.first-use-guide ol{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:20px 0;padding-left:21px}.first-use-guide li{padding-left:7px;color:#2e4e80}.first-use-guide li strong,.first-use-guide li span{display:block}.first-use-guide li span{margin-top:5px;color:#677894;font-size:13px}.feature-card h3{margin:0}.feature-title-row{display:flex;align-items:center;gap:8px}.feature-id{display:inline-block;margin-top:7px;color:#7b8ca8;background:transparent;padding:0;font-size:12px}.meta-badge,.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;background:#eef4ff;color:#315ba7;font-size:11px;font-weight:800;white-space:nowrap}.status-pill.success{background:#e6f7ed;color:#207243}.status-pill.warning{background:#fff4df;color:#8a5b11}.feature-meta{display:grid;gap:4px;margin:14px 0;color:#62708a;font-size:12px}.feature-card details,.profile-card details{border-top:1px solid #edf0f5;padding-top:12px}.feature-card summary,.profile-card summary,.advanced-settings summary{cursor:pointer;color:#315ba7;font-size:13px;font-weight:800}.feature-card dl{margin:14px 0 0}.profile-card-heading,.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.profile-name{color:#2563eb;font-size:16px;font-weight:850}.recommended-for{min-height:38px}.profile-stats{display:flex;gap:12px;margin:15px 0;color:#71809a;font-size:12px}.profile-stats strong{display:block;margin-top:4px;color:#344866;font-size:14px}.profile-card details small{display:block;margin-top:8px;line-height:1.5}.profile-difference{margin:16px 0 0;color:#315ba7!important;font-weight:800}.safe-info{display:flex;gap:12px;align-items:baseline;margin-bottom:20px;border-radius:12px;padding:14px 16px;background:#e9f8ef;color:#23663e}.safe-info span,.muted{color:#5e7f6b;font-size:13px}.readiness-panel{margin:18px 0}.readiness-panel h3{margin:5px 0 0;line-height:1.35}.check-list{display:grid;gap:9px;margin:18px 0;padding:0;list-style:none}.check-list li{display:flex;gap:8px;align-items:center;margin:0;font-size:13px}.check-list li span{display:inline-grid;width:20px;height:20px;place-items:center;border-radius:50%;background:#eef2f7;color:#758198;font-weight:900}.check-list .check-ok span{background:#e5f7ec;color:#187642}.check-list .check-missing span{background:#fff1df;color:#9a6716}.check-list .check-neutral span{background:#eef2f7;color:#758198}.check-list .check-neutral{color:#66758f}.prompt-box{margin-top:18px;border:1px solid #dbe3ef;border-radius:12px;padding:15px;background:#fafcff}.prompt-box pre{overflow-x:auto;margin:12px 0 0;white-space:pre-wrap;color:#40506d;font-size:12px;line-height:1.6}.limit-list{max-width:920px}.limit-choice{margin:0;border:1px solid #dbe3ef;border-radius:14px;background:#fff;padding:18px}.limit-choice legend{font-size:17px;color:#172033}.limit-choice>p{margin:0 0 14px;color:#66758f;font-size:13px}.choice-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.choice-card{position:relative;display:block;cursor:pointer;border:1px solid #dbe3ef;border-radius:10px;padding:13px;color:#41516d}.choice-card:hover,.choice-card.selected{border-color:#2563eb;background:#f5f8ff}.choice-card input{position:absolute;opacity:0}.choice-card strong,.choice-card small{display:block}.choice-card strong{color:#263a5c}.choice-card em{display:inline-block;margin-left:6px;color:#1f7a45;font-size:11px;font-style:normal;font-weight:800}.choice-card small{margin-top:8px;color:#7886a0;line-height:1.4}.advanced-settings{max-width:920px;margin-top:16px;border:1px dashed #bac7d9;border-radius:12px;background:#fff;padding:16px}.advanced-settings>p{color:#6e7e96;font-size:13px}.advanced-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.advanced-grid label{display:grid;gap:6px;color:#53617a;font-size:13px;font-weight:700}.advanced-grid small{color:#71809a;font-weight:400}.small{padding:7px 10px;font-size:12px}@media (max-width: 820px){.first-use-guide ol{grid-template-columns:1fr}.choice-grid{grid-template-columns:repeat(2,1fr)}.advanced-grid{grid-template-columns:1fr 1fr}}@media (max-width: 560px){.choice-grid,.advanced-grid{grid-template-columns:1fr}.safe-info{align-items:flex-start;flex-direction:column}}.mcp-panel{display:grid;gap:14px}.mcp-toggle{display:flex;align-items:center;gap:10px;font-weight:700}.mcp-toggle input{width:18px;height:18px}.mcp-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mcp-status-grid>div{display:grid;gap:5px;border:1px solid #dbe3ef;border-radius:10px;padding:12px}.mcp-status-grid span,.mcp-status-grid small{color:#66748c}.mcp-status-grid strong{color:#172033}.mcp-actions{flex-wrap:wrap}.mcp-preview pre,.mcp-panel pre{white-space:pre-wrap;overflow-x:auto;background:#f7f9fc;border:1px solid #e2e8f0;border-radius:8px;padding:12px;color:#34435f}@media (max-width: 760px){.mcp-status-grid{grid-template-columns:1fr}}@media (max-width: 760px){.provider-grid{grid-template-columns:1fr}}.template-list{display:grid;gap:10px;padding:0;list-style:none}.template-row{display:grid;gap:4px;width:100%;text-align:left;border:1px solid #dbe3ef;border-radius:10px;background:#f8fbff;padding:13px 15px;color:#172033}.template-row:hover{border-color:#2563eb;background:#f2f7ff}.template-row strong{color:#263a5c}.template-row span{color:#66758d;font-size:13px}.template-content{margin-top:10px;border:1px solid #e2e8f0;border-radius:10px;background:#f7f9fc;padding:12px}.template-content pre{max-height:480px;overflow:auto;margin:0 0 12px;white-space:pre-wrap;color:#34435f;font-size:12px;line-height:1.6}.template-steps{display:grid;gap:10px;padding-left:20px}.template-steps li{margin:0!important;padding-left:6px}.template-steps strong,.template-steps span{display:block}.template-steps span{margin-top:4px;color:#71809a;font-size:13px}.field-label{display:grid;gap:6px;margin:10px 0 4px;color:#53617a;font-size:13px;font-weight:700}.text-input{display:block;width:100%}.data-table{width:100%;margin:10px 0;border-collapse:collapse;font-size:13px}.data-table th,.data-table td{border:1px solid #e2e8f0;padding:7px 10px;text-align:left}.data-table th{background:#f2f6fb;color:#4c5a73}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid #edf0f5}.setting-row:last-child{border-bottom:0}.setting-row strong{display:block}.setting-row .muted{margin:4px 0 0}