antri_cli 1.26.1 → 1.28.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 (39) hide show
  1. package/README.md +89 -42
  2. package/assets/desktop_panel.png +0 -0
  3. package/assets/home.png +0 -0
  4. package/dist/cli/promptToolkit.d.ts.map +1 -1
  5. package/dist/cli/promptToolkit.js +2 -0
  6. package/dist/cli/promptToolkit.js.map +1 -1
  7. package/dist/cli/shortcuts.d.ts.map +1 -1
  8. package/dist/cli/shortcuts.js +13 -0
  9. package/dist/cli/shortcuts.js.map +1 -1
  10. package/dist/core/config.js +1 -1
  11. package/dist/core/config.js.map +1 -1
  12. package/dist/core/updater.d.ts +1 -1
  13. package/dist/core/updater.js +1 -1
  14. package/dist/desktop/public/app.js +699 -0
  15. package/dist/desktop/public/index.html +338 -0
  16. package/dist/desktop/public/style.css +962 -0
  17. package/dist/desktop/server.d.ts +11 -0
  18. package/dist/desktop/server.d.ts.map +1 -0
  19. package/dist/desktop/server.js +361 -0
  20. package/dist/desktop/server.js.map +1 -0
  21. package/dist/index.js +30 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/memory/episodic.d.ts +1 -0
  24. package/dist/memory/episodic.d.ts.map +1 -1
  25. package/dist/memory/episodic.js +3 -0
  26. package/dist/memory/episodic.js.map +1 -1
  27. package/dist/memory/manager.d.ts +6 -0
  28. package/dist/memory/manager.d.ts.map +1 -1
  29. package/dist/memory/manager.js +8 -0
  30. package/dist/memory/manager.js.map +1 -1
  31. package/dist/mobile/public/app.js +449 -0
  32. package/dist/mobile/public/index.html +287 -0
  33. package/dist/mobile/public/manifest.json +16 -0
  34. package/dist/mobile/public/style.css +589 -0
  35. package/dist/mobile/server.d.ts +14 -0
  36. package/dist/mobile/server.d.ts.map +1 -0
  37. package/dist/mobile/server.js +232 -0
  38. package/dist/mobile/server.js.map +1 -0
  39. package/package.json +5 -2
@@ -0,0 +1,338 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>ANTRI Code — Control Plane</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
11
+ </head>
12
+ <body class="antri-app">
13
+
14
+ <!-- Top Application Bar -->
15
+ <header class="app-header">
16
+ <div class="brand-zone">
17
+ <span class="logo-mark">ANTRI</span>
18
+ <span class="version-tag">v1.28.0</span>
19
+ </div>
20
+
21
+ <!-- Mode Toggle -->
22
+ <div class="mode-toggles">
23
+ <button id="btn-mode-vibe" class="mode-btn active" onclick="switchMode('vibe')">
24
+ <span class="indicator-dot"></span> Vibe Mode
25
+ </button>
26
+ <button id="btn-mode-plan" class="mode-btn" onclick="switchMode('plan')">
27
+ <span class="indicator-dot"></span> Plan Mode
28
+ </button>
29
+ </div>
30
+
31
+ <!-- Global Controls -->
32
+ <div class="header-controls">
33
+ <div class="control-group">
34
+ <label>Provider</label>
35
+ <select id="select-provider" onchange="onProviderChange(this.value)">
36
+ <option value="cerebras">Cerebras (CS-3)</option>
37
+ <option value="cohere">Cohere (Command R+)</option>
38
+ <option value="vortex">Vortex API</option>
39
+ <option value="opencode">OpenCode</option>
40
+ <option value="deepseek" selected>DeepSeek (V3/R1)</option>
41
+ <option value="nvidia-nim">NVIDIA NIM</option>
42
+ <option value="openai">OpenAI (GPT-4o/o1)</option>
43
+ <option value="anthropic">Anthropic (Claude 3.7)</option>
44
+ <option value="gemini">Google Gemini</option>
45
+ <option value="ollama">Ollama (Local)</option>
46
+ </select>
47
+ </div>
48
+
49
+ <div class="control-group">
50
+ <label>Model</label>
51
+ <select id="select-model" onchange="onModelChange(this.value)">
52
+ <!-- Populated dynamically -->
53
+ </select>
54
+ </div>
55
+
56
+ <div class="control-group">
57
+ <label>Profile</label>
58
+ <select id="select-profile" onchange="onProfileChange(this.value)">
59
+ <!-- Populated dynamically -->
60
+ </select>
61
+ </div>
62
+
63
+ <button id="btn-perms-toggle" class="perms-badge" onclick="toggleAlwaysAllow()">
64
+ <span id="perms-text">Ask-First</span>
65
+ </button>
66
+ </div>
67
+ </header>
68
+
69
+ <!-- Main Container -->
70
+ <div class="app-body">
71
+ <!-- Sidebar Navigation -->
72
+ <nav class="app-sidebar">
73
+ <div class="nav-section-title">Navigation</div>
74
+ <button class="nav-item active" onclick="showTab('chat')">
75
+ <span class="nav-label">Agent Studio</span>
76
+ </button>
77
+ <button class="nav-item" onclick="showTab('dialectic')">
78
+ <span class="nav-label">Dialectic Arena</span>
79
+ </button>
80
+ <button class="nav-item" onclick="showTab('goal')">
81
+ <span class="nav-label">Goal Pipeline</span>
82
+ </button>
83
+ <button class="nav-item" onclick="showTab('profiles')">
84
+ <span class="nav-label">Thinking Profiles</span>
85
+ </button>
86
+ <button class="nav-item" onclick="showTab('skills')">
87
+ <span class="nav-label">Dynamic Skills</span>
88
+ </button>
89
+ <button class="nav-item" onclick="showTab('memory')">
90
+ <span class="nav-label">Memory Graph</span>
91
+ </button>
92
+
93
+ <div class="sidebar-footer">
94
+ <div class="sync-status">
95
+ <span class="status-indicator"></span>
96
+ <span>CLI Synced</span>
97
+ </div>
98
+ </div>
99
+ </nav>
100
+
101
+ <!-- Main Workspace Area -->
102
+ <main class="workspace-area">
103
+
104
+ <!-- TAB 1: Chat & Agent Studio -->
105
+ <section id="tab-chat" class="tab-panel active">
106
+ <div class="chat-container">
107
+ <div id="chat-messages" class="chat-messages">
108
+ <div class="welcome-card">
109
+ <h2>ANTRI Control Plane</h2>
110
+ <p>Minimalist environment for autonomous coding, architectural planning, and self-refinement. State, memory, profiles, and skills are synchronized across CLI and Desktop.</p>
111
+ <div class="quick-action-pills">
112
+ <button onclick="setPrompt('Plan the architecture for a real-time collaborative code editor')">Plan Editor Architecture</button>
113
+ <button onclick="setPrompt('/debate What are the trade-offs between WebSockets vs Server-Sent Events?')">Start Dialectic Debate</button>
114
+ <button onclick="setPrompt('/goal Implement a zero-dependency LRU cache with TTL in TypeScript')">Run Goal Loop</button>
115
+ </div>
116
+ </div>
117
+ </div>
118
+
119
+ <!-- Bottom Prompt Box & Prompt Toolkit -->
120
+ <div class="chat-input-bar">
121
+ <!-- Prompt Toolkit Dropdown Palette -->
122
+ <div id="prompt-toolkit-palette" class="prompt-toolkit-palette hidden">
123
+ <div class="palette-header" id="palette-header">Commands</div>
124
+ <div class="palette-list" id="palette-list">
125
+ <!-- Dynamically populated -->
126
+ </div>
127
+ </div>
128
+
129
+ <!-- Attached Files Preview Tray -->
130
+ <div id="attachment-preview-tray" class="attachment-preview-tray hidden"></div>
131
+
132
+ <div class="input-container">
133
+ <!-- Hidden File Input -->
134
+ <input type="file" id="file-upload-input" multiple accept="image/*,.txt,.ts,.js,.json,.py,.md,.csv,.html,.css" style="display:none;" onchange="handleFileSelected(event)" />
135
+
136
+ <div class="input-row">
137
+ <button id="btn-attach-file" class="attach-btn" title="Upload image or file" onclick="document.getElementById('file-upload-input').click()">
138
+ +
139
+ </button>
140
+ <textarea id="prompt-input" placeholder="Ask ANTRI, type / for commands, @ for files..." rows="2" onkeydown="handleInputKey(event)" oninput="handleInputText(event)"></textarea>
141
+ </div>
142
+
143
+ <div class="input-actions">
144
+ <span class="shortcut-tip">Press <b>Ctrl + Enter</b> to send · <b>/</b> commands · <b>@</b> files</span>
145
+ <button id="send-btn" class="send-btn" onclick="submitPrompt()">
146
+ <span>Send</span>
147
+ </button>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ </div>
152
+ </section>
153
+
154
+ <!-- TAB 2: Dialectic Arena -->
155
+ <section id="tab-dialectic" class="tab-panel">
156
+ <div class="panel-header">
157
+ <div>
158
+ <h2>Dialectic Self-Debate Arena</h2>
159
+ <p>Four autonomous agents debate architecture, critique edge cases, and synthesize solutions.</p>
160
+ </div>
161
+ <div class="debate-controls">
162
+ <input type="text" id="debate-query-input" placeholder="Enter problem or architecture question to debate..." />
163
+ <select id="debate-depth-select">
164
+ <option value="quick">Quick (2 stages)</option>
165
+ <option value="deep" selected>Deep (4 stages)</option>
166
+ <option value="rigorous">Rigorous (6 stages)</option>
167
+ </select>
168
+ <button class="action-btn" onclick="startDebate()">Launch Debate</button>
169
+ </div>
170
+ </div>
171
+
172
+ <div class="dialectic-arena-grid">
173
+ <!-- Persona 1: Proposer -->
174
+ <div class="persona-card proposer">
175
+ <div class="persona-header">
176
+ <div>
177
+ <h3>The Proposer</h3>
178
+ <span class="persona-tag">Thesis Formulation</span>
179
+ </div>
180
+ </div>
181
+ <div id="dialectic-thesis" class="persona-body">
182
+ <div class="placeholder-text">Awaiting debate initiation...</div>
183
+ </div>
184
+ </div>
185
+
186
+ <!-- Persona 2: Adversary -->
187
+ <div class="persona-card adversary">
188
+ <div class="persona-header">
189
+ <div>
190
+ <h3>The Adversary</h3>
191
+ <span class="persona-tag">Critique & Vulnerabilities</span>
192
+ </div>
193
+ </div>
194
+ <div id="dialectic-antithesis" class="persona-body">
195
+ <div class="placeholder-text">Awaiting thesis generation...</div>
196
+ </div>
197
+ </div>
198
+
199
+ <!-- Persona 3: Verifier -->
200
+ <div class="persona-card verifier">
201
+ <div class="persona-header">
202
+ <div>
203
+ <h3>The Researcher</h3>
204
+ <span class="persona-tag">Fact & Reference Verification</span>
205
+ </div>
206
+ </div>
207
+ <div id="dialectic-verification" class="persona-body">
208
+ <div class="placeholder-text">Verification engine standby...</div>
209
+ </div>
210
+ </div>
211
+
212
+ <!-- Persona 4: Judge -->
213
+ <div class="persona-card judge">
214
+ <div class="persona-header">
215
+ <div>
216
+ <h3>The Judge</h3>
217
+ <span class="persona-tag">Synthesized Consensus</span>
218
+ </div>
219
+ </div>
220
+ <div id="dialectic-synthesis" class="persona-body">
221
+ <div class="placeholder-text">Consensus synthesis will appear here...</div>
222
+ </div>
223
+ </div>
224
+ </div>
225
+ </section>
226
+
227
+ <!-- TAB 3: Goal Loop Pipeline -->
228
+ <section id="tab-goal" class="tab-panel">
229
+ <div class="panel-header">
230
+ <div>
231
+ <h2>Goal Loop Pipeline</h2>
232
+ <p>Iterative task formulation, adversarial critique, and hardened output generation.</p>
233
+ </div>
234
+ <div class="debate-controls">
235
+ <input type="text" id="goal-objective-input" placeholder="Enter objective to iteratively accomplish..." />
236
+ <button class="action-btn" onclick="startGoalLoop()">Execute Goal Loop</button>
237
+ </div>
238
+ </div>
239
+
240
+ <div class="goal-pipeline-stages">
241
+ <!-- Stage 1 -->
242
+ <div class="goal-stage-card" id="stage-card-1">
243
+ <div class="stage-num">01</div>
244
+ <h3>Stage 1: Formulation</h3>
245
+ <p>Initial solution draft and code synthesis</p>
246
+ <div id="goal-stage-1-content" class="stage-content">Ready</div>
247
+ </div>
248
+
249
+ <!-- Stage 2 -->
250
+ <div class="goal-stage-card" id="stage-card-2">
251
+ <div class="stage-num">02</div>
252
+ <h3>Stage 2: Adversarial Review & Score</h3>
253
+ <p>Flaw detection, edge-case probing, and quality rating</p>
254
+ <div id="goal-stage-2-content" class="stage-content">Ready</div>
255
+ </div>
256
+
257
+ <!-- Stage 3 -->
258
+ <div class="goal-stage-card" id="stage-card-3">
259
+ <div class="stage-num">03</div>
260
+ <h3>Stage 3: Hardened Delivery</h3>
261
+ <p>Refined, production-ready output</p>
262
+ <div id="goal-stage-3-content" class="stage-content">Ready</div>
263
+ </div>
264
+ </div>
265
+ </section>
266
+
267
+ <!-- TAB 4: Thinking Profiles -->
268
+ <section id="tab-profiles" class="tab-panel">
269
+ <div class="panel-header">
270
+ <div>
271
+ <h2>Thinking Profile Studio</h2>
272
+ <p>Manage user preferences, coding styles, and automatically extracted notes.</p>
273
+ </div>
274
+ <div class="debate-controls">
275
+ <input type="text" id="new-profile-name" placeholder="New profile name (e.g. backend_architect)" />
276
+ <button class="action-btn" onclick="createProfile()">Create Profile</button>
277
+ </div>
278
+ </div>
279
+
280
+ <div class="profile-studio-layout">
281
+ <div class="profile-list-sidebar" id="profile-items-list">
282
+ <!-- Populated via API -->
283
+ </div>
284
+ <div class="profile-editor-container">
285
+ <div class="editor-header">
286
+ <h3 id="active-profile-title">profile_1.md</h3>
287
+ <button class="save-btn" onclick="saveActiveProfile()">Save Profile</button>
288
+ </div>
289
+ <textarea id="profile-editor" class="profile-textarea" placeholder="Profile markdown content..."></textarea>
290
+ </div>
291
+ </div>
292
+ </section>
293
+
294
+ <!-- TAB 5: Dynamic Skills -->
295
+ <section id="tab-skills" class="tab-panel">
296
+ <div class="panel-header">
297
+ <div>
298
+ <h2>Dynamic Skill Studio</h2>
299
+ <p>Tools synthesized autonomously by the agent in <code>~/.agent-cli/skills/</code>.</p>
300
+ </div>
301
+ </div>
302
+
303
+ <div class="skills-grid" id="skills-catalog-grid">
304
+ <!-- Populated dynamically -->
305
+ </div>
306
+ </section>
307
+
308
+ <!-- TAB 6: Memory Graph -->
309
+ <section id="tab-memory" class="tab-panel">
310
+ <div class="panel-header">
311
+ <div>
312
+ <h2>Lifelong Memory & Vector Store</h2>
313
+ <p>128-dimensional dense semantic embeddings, episodic interaction logs, and workspace conventions.</p>
314
+ </div>
315
+ </div>
316
+
317
+ <div class="memory-dashboard-layout">
318
+ <div class="memory-card">
319
+ <h3>Semantic Memory Store</h3>
320
+ <div id="semantic-memory-list" class="memory-stream">
321
+ <!-- Populated via API -->
322
+ </div>
323
+ </div>
324
+ <div class="memory-card">
325
+ <h3>Episodic Interaction Logs</h3>
326
+ <div id="episodic-memory-list" class="memory-stream">
327
+ <!-- Populated via API -->
328
+ </div>
329
+ </div>
330
+ </div>
331
+ </section>
332
+
333
+ </main>
334
+ </div>
335
+
336
+ <script src="app.js"></script>
337
+ </body>
338
+ </html>