@sean.holung/minicode 0.3.2 → 0.3.3

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 (107) hide show
  1. package/README.md +48 -43
  2. package/dist/scripts/run-benchmarks.js +147 -0
  3. package/dist/src/agent/config.js +149 -40
  4. package/dist/src/agent/editable-config.js +314 -0
  5. package/dist/src/analysis/structural-analysis.js +379 -0
  6. package/dist/src/benchmark/evaluator.js +79 -0
  7. package/dist/src/benchmark/index.js +4 -0
  8. package/dist/src/benchmark/reporter.js +177 -0
  9. package/dist/src/benchmark/runner.js +100 -0
  10. package/dist/src/benchmark/task-loader.js +78 -0
  11. package/dist/src/benchmark/types.js +5 -0
  12. package/dist/src/cli/args.js +10 -0
  13. package/dist/src/cli/config-slash-command.js +135 -0
  14. package/dist/src/cli/plugin-install.js +69 -0
  15. package/dist/src/index.js +76 -6
  16. package/dist/src/indexer/cache.js +6 -4
  17. package/dist/src/indexer/code-map.js +41 -13
  18. package/dist/src/indexer/plugins/typescript.js +70 -23
  19. package/dist/src/indexer/project-index.js +175 -36
  20. package/dist/src/indexer/symbol-names.js +92 -0
  21. package/dist/src/model-utils.js +18 -0
  22. package/dist/src/serve/agent-bridge.js +203 -24
  23. package/dist/src/serve/mcp-server.js +405 -0
  24. package/dist/src/serve/server.js +165 -10
  25. package/dist/src/serve/websocket.js +8 -0
  26. package/dist/src/shared/graph-styles.js +119 -0
  27. package/dist/src/tools/find-path.js +75 -0
  28. package/dist/src/tools/find-references.js +7 -2
  29. package/dist/src/tools/get-dependencies.js +3 -2
  30. package/dist/src/tools/read-symbol.js +12 -5
  31. package/dist/src/tools/registry.js +3 -1
  32. package/dist/src/tools/search-code-map.js +4 -2
  33. package/dist/src/ui/app.js +1 -1
  34. package/dist/src/ui/cli-ink.js +79 -4
  35. package/dist/src/ui/components/header-bar.js +6 -2
  36. package/dist/src/ui/state/ui-store.js +5 -0
  37. package/dist/src/web/app.js +1124 -176
  38. package/dist/src/web/index.html +113 -3
  39. package/dist/src/web/style.css +973 -55
  40. package/dist/tests/agent.test.js +31 -0
  41. package/dist/tests/analysis-helpers.test.js +89 -0
  42. package/dist/tests/analysis-ui.test.js +29 -0
  43. package/dist/tests/benchmark-harness.test.js +527 -0
  44. package/dist/tests/config-api.test.js +143 -0
  45. package/dist/tests/config-integration.test.js +751 -0
  46. package/dist/tests/config-slash-command.test.js +106 -0
  47. package/dist/tests/config.test.js +42 -1
  48. package/dist/tests/context-indicator.test.js +220 -0
  49. package/dist/tests/editable-config.test.js +109 -0
  50. package/dist/tests/find-path.test.js +183 -0
  51. package/dist/tests/focus-tracker.test.js +62 -0
  52. package/dist/tests/graph-onboarding.test.js +55 -0
  53. package/dist/tests/graph-styles.test.js +65 -0
  54. package/dist/tests/indexer.test.js +137 -0
  55. package/dist/tests/mcp-and-plugin.test.js +186 -0
  56. package/dist/tests/model-client-openai.test.js +29 -0
  57. package/dist/tests/model-selection.test.js +136 -0
  58. package/dist/tests/model-utils.test.js +22 -0
  59. package/dist/tests/reasoning-effort.test.js +264 -0
  60. package/dist/tests/run-benchmarks.test.js +161 -0
  61. package/dist/tests/search-code-map.test.js +18 -0
  62. package/dist/tests/serve.integration.test.js +218 -2
  63. package/dist/tests/session-ui.test.js +21 -0
  64. package/dist/tests/session.test.js +50 -0
  65. package/dist/tests/settings-ui.test.js +30 -0
  66. package/dist/tests/structural-analysis.test.js +218 -0
  67. package/node_modules/@minicode/agent-sdk/README.md +80 -51
  68. package/node_modules/@minicode/agent-sdk/dist/src/agent/agent.d.ts +16 -5
  69. package/node_modules/@minicode/agent-sdk/dist/src/agent/agent.d.ts.map +1 -1
  70. package/node_modules/@minicode/agent-sdk/dist/src/agent/agent.js +51 -33
  71. package/node_modules/@minicode/agent-sdk/dist/src/agent/agent.js.map +1 -1
  72. package/node_modules/@minicode/agent-sdk/dist/src/agent/types.d.ts +14 -0
  73. package/node_modules/@minicode/agent-sdk/dist/src/agent/types.d.ts.map +1 -1
  74. package/node_modules/@minicode/agent-sdk/dist/src/index.d.ts +3 -2
  75. package/node_modules/@minicode/agent-sdk/dist/src/index.d.ts.map +1 -1
  76. package/node_modules/@minicode/agent-sdk/dist/src/index.js +2 -0
  77. package/node_modules/@minicode/agent-sdk/dist/src/index.js.map +1 -1
  78. package/node_modules/@minicode/agent-sdk/dist/src/indexer/focus-tracker.d.ts +35 -0
  79. package/node_modules/@minicode/agent-sdk/dist/src/indexer/focus-tracker.d.ts.map +1 -0
  80. package/node_modules/@minicode/agent-sdk/dist/src/indexer/focus-tracker.js +64 -0
  81. package/node_modules/@minicode/agent-sdk/dist/src/indexer/focus-tracker.js.map +1 -0
  82. package/node_modules/@minicode/agent-sdk/dist/src/indexer/types.d.ts +7 -0
  83. package/node_modules/@minicode/agent-sdk/dist/src/indexer/types.d.ts.map +1 -1
  84. package/node_modules/@minicode/agent-sdk/dist/src/model/client.d.ts +5 -1
  85. package/node_modules/@minicode/agent-sdk/dist/src/model/client.d.ts.map +1 -1
  86. package/node_modules/@minicode/agent-sdk/dist/src/model/client.js +83 -11
  87. package/node_modules/@minicode/agent-sdk/dist/src/model/client.js.map +1 -1
  88. package/node_modules/@minicode/agent-sdk/dist/src/safety/guardrails.d.ts +1 -0
  89. package/node_modules/@minicode/agent-sdk/dist/src/safety/guardrails.d.ts.map +1 -1
  90. package/node_modules/@minicode/agent-sdk/dist/src/safety/guardrails.js +8 -1
  91. package/node_modules/@minicode/agent-sdk/dist/src/safety/guardrails.js.map +1 -1
  92. package/node_modules/@minicode/agent-sdk/dist/src/session/session.d.ts.map +1 -1
  93. package/node_modules/@minicode/agent-sdk/dist/src/session/session.js +4 -1
  94. package/node_modules/@minicode/agent-sdk/dist/src/session/session.js.map +1 -1
  95. package/node_modules/@minicode/agent-sdk/dist/tests/agent.test.js +3 -1
  96. package/node_modules/@minicode/agent-sdk/dist/tests/agent.test.js.map +1 -1
  97. package/node_modules/@minicode/agent-sdk/dist/tests/guardrails.test.js +8 -2
  98. package/node_modules/@minicode/agent-sdk/dist/tests/guardrails.test.js.map +1 -1
  99. package/node_modules/@minicode/agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
  100. package/package.json +9 -5
  101. package/plugin/.claude-plugin/plugin.json +12 -0
  102. package/plugin/.mcp.json +8 -0
  103. package/plugin/CLAUDE.md +26 -0
  104. package/plugin/skills/analyze/SKILL.md +12 -0
  105. package/plugin/skills/focus/SKILL.md +20 -0
  106. package/plugin/skills/graph/SKILL.md +13 -0
  107. package/plugin/skills/symbols/SKILL.md +13 -0
@@ -16,14 +16,31 @@
16
16
  <div class="header-left">
17
17
  <h1>minicode</h1>
18
18
  <span id="status-badge" class="badge ready">ready</span>
19
+ <div id="context-indicator" title="Context window usage">
20
+ <div id="context-bar">
21
+ <div id="context-fill"></div>
22
+ </div>
23
+ <span id="context-label">0%</span>
24
+ </div>
19
25
  </div>
20
26
  <div class="header-right">
21
- <span id="model-info"></span>
27
+ <div class="model-menu">
28
+ <button id="model-btn" class="header-btn" title="Switch model"><span id="model-info"></span> ▾</button>
29
+ <div id="model-dropdown" class="dropdown hidden">
30
+ <div id="model-list" class="dropdown-section">
31
+ <div class="dropdown-empty">Loading models...</div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ <button id="settings-btn" class="header-btn" title="Edit persisted settings">Settings</button>
22
36
  <button id="graph-toggle" class="header-btn" title="Toggle graph pane">Graph</button>
23
37
  <div class="session-menu">
24
38
  <button id="session-btn" class="header-btn" title="Sessions">Sessions</button>
25
39
  <div id="session-dropdown" class="dropdown hidden">
26
40
  <div class="dropdown-section">
41
+ <div id="session-update-row" class="session-update-row hidden">
42
+ <button id="session-update-btn" class="dropdown-action" type="button">Update current saved session</button>
43
+ </div>
27
44
  <div class="dropdown-row">
28
45
  <input id="save-label" type="text" placeholder="Label (optional)" />
29
46
  <button id="save-btn" class="dropdown-action">Save</button>
@@ -40,6 +57,38 @@
40
57
 
41
58
  <div id="workspace">
42
59
  <div id="chat-pane">
60
+ <div id="config-overlay" class="config-overlay hidden">
61
+ <div class="config-overlay-content">
62
+ <h2>Agent not connected</h2>
63
+ <p id="config-missing" class="config-missing hidden"></p>
64
+ <p>minicode needs a model provider to run. Configure one of the following:</p>
65
+ <div class="config-overlay-options">
66
+ <div class="config-overlay-option">
67
+ <strong>Local model (LM Studio, Ollama, etc.)</strong>
68
+ <p>Start your local server, then set in <code>~/.minicode/.env</code>:</p>
69
+ <pre>MODEL_PROVIDER=openai-compatible
70
+ OPENAI_BASE_URL=http://localhost:1234/v1
71
+ MODEL=your-model-name</pre>
72
+ </div>
73
+ <div class="config-overlay-option">
74
+ <strong>Anthropic API</strong>
75
+ <p>Set in <code>~/.minicode/.env</code> or your shell environment:</p>
76
+ <pre>MODEL_PROVIDER=anthropic
77
+ ANTHROPIC_API_KEY=sk-ant-...
78
+ MODEL=claude-sonnet-4-20250514</pre>
79
+ </div>
80
+ <div class="config-overlay-option">
81
+ <strong>OpenRouter / remote OpenAI-compatible</strong>
82
+ <p>Set in <code>~/.minicode/.env</code> or your shell environment:</p>
83
+ <pre>MODEL_PROVIDER=openai-compatible
84
+ OPENAI_BASE_URL=https://openrouter.ai/api/v1
85
+ OPENROUTER_API_KEY=sk-or-...
86
+ MODEL=your-model-name</pre>
87
+ </div>
88
+ </div>
89
+ <p class="config-overlay-footer">After updating your config, restart <code>minicode serve</code>.</p>
90
+ </div>
91
+ </div>
43
92
  <main id="messages"></main>
44
93
  <footer>
45
94
  <form id="chat-form">
@@ -53,16 +102,77 @@
53
102
  <div id="graph-pane">
54
103
  <div id="graph-toolbar">
55
104
  <input id="graph-search" type="text" placeholder="Search symbols..." autocomplete="off" />
105
+ <button id="graph-analyze" class="header-btn">Analyze</button>
56
106
  <button id="graph-fit" class="header-btn">Fit</button>
57
107
  <button id="graph-relayout" class="header-btn">Re-layout</button>
58
108
  <button id="graph-clear" class="header-btn">Clear</button>
59
109
  </div>
60
- <div id="cy"></div>
61
- <div id="symbol-detail" class="hidden"></div>
110
+ <div id="graph-stage">
111
+ <div id="cy"></div>
112
+ <aside id="analysis-panel" class="hidden" aria-live="polite">
113
+ <div class="analysis-panel-header">
114
+ <div>
115
+ <div class="analysis-kicker">Deterministic analysis</div>
116
+ <div class="analysis-title-row">
117
+ <h2 id="analysis-title">Structural findings</h2>
118
+ <span class="analysis-pill">Graph-driven</span>
119
+ </div>
120
+ <p class="analysis-subtitle">
121
+ These signals come from the dependency graph itself, not from agent judgment.
122
+ </p>
123
+ </div>
124
+ <div class="analysis-panel-actions">
125
+ <button id="analysis-rerun" class="header-btn" type="button">Re-run</button>
126
+ <button id="analysis-close" class="header-btn" type="button">Close</button>
127
+ </div>
128
+ </div>
129
+ <div id="analysis-status" class="analysis-status hidden"></div>
130
+ <div id="analysis-summary" class="analysis-summary"></div>
131
+ <div id="analysis-findings" class="analysis-findings">
132
+ <div class="analysis-empty">Run analysis to inspect cycles, hotspots, and coupling outliers.</div>
133
+ </div>
134
+ </aside>
135
+ <div id="symbol-detail" class="hidden"></div>
136
+ </div>
62
137
  </div>
63
138
  </div>
64
139
  </div>
65
140
 
141
+ <div id="settings-modal" class="modal hidden" aria-hidden="true">
142
+ <div id="settings-backdrop" class="modal-backdrop"></div>
143
+ <section class="modal-panel" role="dialog" aria-modal="true" aria-labelledby="settings-title">
144
+ <div class="modal-header">
145
+ <div>
146
+ <h2 id="settings-title">Settings</h2>
147
+ <p id="settings-subtitle" class="modal-subtitle">Persist non-secret global defaults for future sessions.</p>
148
+ </div>
149
+ <button id="settings-close" class="header-btn" type="button">Close</button>
150
+ </div>
151
+
152
+ <div class="settings-toolbar">
153
+ <div class="settings-path-group">
154
+ <span class="settings-path-label">Config file</span>
155
+ <code id="settings-path" class="settings-path"></code>
156
+ </div>
157
+ </div>
158
+
159
+ <div id="settings-banner" class="settings-banner hidden" role="status" aria-live="polite"></div>
160
+ <div id="settings-list" class="settings-list">
161
+ <div class="dropdown-empty">Loading settings...</div>
162
+ </div>
163
+
164
+ <div class="modal-footer">
165
+ <p class="settings-footnote">
166
+ Secrets such as API keys stay env-only for now. Saved changes update <code>~/.minicode/agent.config.json</code> and apply to new runs after restart.
167
+ </p>
168
+ <div class="settings-actions">
169
+ <button id="settings-reset" class="header-btn" type="button">Reset changes</button>
170
+ <button id="settings-save" class="dropdown-action" type="button">Save settings</button>
171
+ </div>
172
+ </div>
173
+ </section>
174
+ </div>
175
+
66
176
  <script type="module" src="app.js"></script>
67
177
  </body>
68
178
  </html>