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.
- package/README.md +89 -42
- package/assets/desktop_panel.png +0 -0
- package/assets/home.png +0 -0
- package/dist/cli/promptToolkit.d.ts.map +1 -1
- package/dist/cli/promptToolkit.js +2 -0
- package/dist/cli/promptToolkit.js.map +1 -1
- package/dist/cli/shortcuts.d.ts.map +1 -1
- package/dist/cli/shortcuts.js +13 -0
- package/dist/cli/shortcuts.js.map +1 -1
- package/dist/core/config.js +1 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/updater.d.ts +1 -1
- package/dist/core/updater.js +1 -1
- package/dist/desktop/public/app.js +699 -0
- package/dist/desktop/public/index.html +338 -0
- package/dist/desktop/public/style.css +962 -0
- package/dist/desktop/server.d.ts +11 -0
- package/dist/desktop/server.d.ts.map +1 -0
- package/dist/desktop/server.js +361 -0
- package/dist/desktop/server.js.map +1 -0
- package/dist/index.js +30 -2
- package/dist/index.js.map +1 -1
- package/dist/memory/episodic.d.ts +1 -0
- package/dist/memory/episodic.d.ts.map +1 -1
- package/dist/memory/episodic.js +3 -0
- package/dist/memory/episodic.js.map +1 -1
- package/dist/memory/manager.d.ts +6 -0
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/manager.js +8 -0
- package/dist/memory/manager.js.map +1 -1
- package/dist/mobile/public/app.js +449 -0
- package/dist/mobile/public/index.html +287 -0
- package/dist/mobile/public/manifest.json +16 -0
- package/dist/mobile/public/style.css +589 -0
- package/dist/mobile/server.d.ts +14 -0
- package/dist/mobile/server.d.ts.map +1 -0
- package/dist/mobile/server.js +232 -0
- package/dist/mobile/server.js.map +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1,287 @@
|
|
|
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, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
|
|
6
|
+
<title>ANTRI Mobile</title>
|
|
7
|
+
<link rel="manifest" href="manifest.json">
|
|
8
|
+
<meta name="theme-color" content="#f7f4ee">
|
|
9
|
+
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
10
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="default">
|
|
11
|
+
<link rel="stylesheet" href="style.css">
|
|
12
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
13
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
14
|
+
<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">
|
|
15
|
+
</head>
|
|
16
|
+
<body class="mobile-app">
|
|
17
|
+
|
|
18
|
+
<!-- Mobile Top Header -->
|
|
19
|
+
<header class="mobile-header">
|
|
20
|
+
<div class="brand-zone">
|
|
21
|
+
<span class="logo-mark">ANTRI</span>
|
|
22
|
+
<span class="version-tag">MOBILE</span>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<!-- Mode Selector -->
|
|
26
|
+
<div class="mode-toggles">
|
|
27
|
+
<button id="btn-mode-vibe" class="mode-btn active" onclick="switchMode('vibe')">
|
|
28
|
+
<span class="indicator-dot"></span> Vibe
|
|
29
|
+
</button>
|
|
30
|
+
<button id="btn-mode-plan" class="mode-btn" onclick="switchMode('plan')">
|
|
31
|
+
<span class="indicator-dot"></span> Plan
|
|
32
|
+
</button>
|
|
33
|
+
</div>
|
|
34
|
+
</header>
|
|
35
|
+
|
|
36
|
+
<!-- Mobile Workspace Container -->
|
|
37
|
+
<main class="mobile-main">
|
|
38
|
+
|
|
39
|
+
<!-- VIEW 1: Chat Studio -->
|
|
40
|
+
<section id="view-chat" class="mobile-view active">
|
|
41
|
+
<div id="chat-messages" class="chat-messages">
|
|
42
|
+
<div class="welcome-card">
|
|
43
|
+
<h2>ANTRI Mobile</h2>
|
|
44
|
+
<p>Standalone mobile coding intelligence with local thinking profiles, dialectic reasoning, and multimodal image inspection.</p>
|
|
45
|
+
<div class="quick-pills">
|
|
46
|
+
<button onclick="setPrompt('Analyze software architecture trade-offs')">Architecture</button>
|
|
47
|
+
<button onclick="setPrompt('/debate What are the limits of LLM context windows?')">Debate</button>
|
|
48
|
+
<button onclick="setPrompt('/goal Build a zero-dependency LRU cache')">Goal Loop</button>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<!-- Attachment Tray -->
|
|
54
|
+
<div id="mobile-attachment-tray" class="mobile-attachment-tray hidden"></div>
|
|
55
|
+
|
|
56
|
+
<!-- Mobile Chat Input Bar -->
|
|
57
|
+
<div class="mobile-input-bar">
|
|
58
|
+
<!-- Hidden File & Camera Input -->
|
|
59
|
+
<input type="file" id="mobile-file-input" multiple accept="image/*,.txt,.ts,.js,.json,.py,.md" style="display:none;" onchange="handleMobileFile(event)" />
|
|
60
|
+
|
|
61
|
+
<div class="mobile-input-container">
|
|
62
|
+
<button id="mobile-attach-btn" class="mobile-attach-btn" title="Upload image or take photo" onclick="document.getElementById('mobile-file-input').click()">
|
|
63
|
+
+
|
|
64
|
+
</button>
|
|
65
|
+
<textarea id="mobile-prompt-input" placeholder="Message ANTRI..." rows="1" oninput="autoGrowTextarea(this)"></textarea>
|
|
66
|
+
<button id="mobile-send-btn" class="mobile-send-btn" onclick="submitMobilePrompt()">
|
|
67
|
+
Send
|
|
68
|
+
</button>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</section>
|
|
72
|
+
|
|
73
|
+
<!-- VIEW 2: Dialectic Arena -->
|
|
74
|
+
<section id="view-dialectic" class="mobile-view">
|
|
75
|
+
<div class="mobile-panel-header">
|
|
76
|
+
<h2>Dialectic Arena</h2>
|
|
77
|
+
<p>4 autonomous personas debate, test hypotheses, and synthesize solutions.</p>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<div class="mobile-debate-input-card">
|
|
81
|
+
<input type="text" id="mobile-debate-query" placeholder="Enter problem or architecture question..." />
|
|
82
|
+
<div class="mobile-debate-actions">
|
|
83
|
+
<select id="mobile-debate-depth">
|
|
84
|
+
<option value="quick">Quick (2 stages)</option>
|
|
85
|
+
<option value="deep" selected>Deep (4 stages)</option>
|
|
86
|
+
<option value="rigorous">Rigorous (6 stages)</option>
|
|
87
|
+
</select>
|
|
88
|
+
<button class="mobile-action-btn" onclick="startMobileDebate()">Debate</button>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<div class="mobile-persona-cards">
|
|
93
|
+
<div class="mobile-card">
|
|
94
|
+
<div class="card-header">
|
|
95
|
+
<h4>The Proposer</h4>
|
|
96
|
+
<span class="card-tag">Thesis Formulation</span>
|
|
97
|
+
</div>
|
|
98
|
+
<div id="m-dialectic-thesis" class="card-body">Awaiting debate initiation...</div>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<div class="mobile-card">
|
|
102
|
+
<div class="card-header">
|
|
103
|
+
<h4>The Adversary</h4>
|
|
104
|
+
<span class="card-tag">Critique & Flaws</span>
|
|
105
|
+
</div>
|
|
106
|
+
<div id="m-dialectic-antithesis" class="card-body">Awaiting thesis generation...</div>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<div class="mobile-card">
|
|
110
|
+
<div class="card-header">
|
|
111
|
+
<h4>The Researcher</h4>
|
|
112
|
+
<span class="card-tag">Reference Verification</span>
|
|
113
|
+
</div>
|
|
114
|
+
<div id="m-dialectic-verification" class="card-body">Verification standby...</div>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<div class="mobile-card">
|
|
118
|
+
<div class="card-header">
|
|
119
|
+
<h4>The Judge</h4>
|
|
120
|
+
<span class="card-tag">Consensus Synthesis</span>
|
|
121
|
+
</div>
|
|
122
|
+
<div id="m-dialectic-synthesis" class="card-body">Consensus will appear here...</div>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</section>
|
|
126
|
+
|
|
127
|
+
<!-- VIEW 3: Goal Loop Pipeline -->
|
|
128
|
+
<section id="view-goal" class="mobile-view">
|
|
129
|
+
<div class="mobile-panel-header">
|
|
130
|
+
<h2>Goal Loop Pipeline</h2>
|
|
131
|
+
<p>Iterative task formulation, adversarial critique, and hardened output generation.</p>
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
<div class="mobile-debate-input-card">
|
|
135
|
+
<input type="text" id="mobile-goal-objective" placeholder="Enter objective to iteratively accomplish..." />
|
|
136
|
+
<button class="mobile-action-btn" onclick="startMobileGoalLoop()">Run Goal Loop</button>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<div class="mobile-goal-stages">
|
|
140
|
+
<div class="mobile-card">
|
|
141
|
+
<div class="card-header">
|
|
142
|
+
<h4>Stage 1: Formulation</h4>
|
|
143
|
+
<span class="card-tag">Draft Solution</span>
|
|
144
|
+
</div>
|
|
145
|
+
<div id="m-goal-stage-1" class="card-body">Ready</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<div class="mobile-card">
|
|
149
|
+
<div class="card-header">
|
|
150
|
+
<h4>Stage 2: Adversarial Review</h4>
|
|
151
|
+
<span class="card-tag">Critique & Score</span>
|
|
152
|
+
</div>
|
|
153
|
+
<div id="m-goal-stage-2" class="card-body">Ready</div>
|
|
154
|
+
</div>
|
|
155
|
+
|
|
156
|
+
<div class="mobile-card">
|
|
157
|
+
<div class="card-header">
|
|
158
|
+
<h4>Stage 3: Hardened Delivery</h4>
|
|
159
|
+
<span class="card-tag">Final Output</span>
|
|
160
|
+
</div>
|
|
161
|
+
<div id="m-goal-stage-3" class="card-body">Ready</div>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
</section>
|
|
165
|
+
|
|
166
|
+
<!-- VIEW 4: Thinking Profiles -->
|
|
167
|
+
<section id="view-profiles" class="mobile-view">
|
|
168
|
+
<div class="mobile-panel-header">
|
|
169
|
+
<h2>Thinking Profiles</h2>
|
|
170
|
+
<p>Manage standalone on-device profiles and personal coding style rules.</p>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<div class="mobile-profile-controls">
|
|
174
|
+
<select id="mobile-profile-select" onchange="onMobileProfileSelect(this.value)">
|
|
175
|
+
<!-- Populated dynamically -->
|
|
176
|
+
</select>
|
|
177
|
+
<button class="mobile-subtle-btn" onclick="createMobileProfile()">New</button>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
<div class="mobile-profile-editor-card">
|
|
181
|
+
<div class="card-header">
|
|
182
|
+
<h4 id="mobile-profile-title">mobile_profile.md</h4>
|
|
183
|
+
<button class="mobile-save-btn" onclick="saveMobileProfile()">Save</button>
|
|
184
|
+
</div>
|
|
185
|
+
<textarea id="mobile-profile-editor" placeholder="Profile markdown instructions..."></textarea>
|
|
186
|
+
</div>
|
|
187
|
+
</section>
|
|
188
|
+
|
|
189
|
+
<!-- VIEW 5: Memory & Knowledge -->
|
|
190
|
+
<section id="view-memory" class="mobile-view">
|
|
191
|
+
<div class="mobile-panel-header">
|
|
192
|
+
<h2>On-Device Memory</h2>
|
|
193
|
+
<p>Local interaction episodes and vector knowledge store.</p>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
<div class="mobile-card">
|
|
197
|
+
<div class="card-header">
|
|
198
|
+
<h4>Semantic Memory</h4>
|
|
199
|
+
</div>
|
|
200
|
+
<div id="mobile-semantic-list" class="card-body">
|
|
201
|
+
No semantic items recorded yet.
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
<div class="mobile-card" style="margin-top: 1rem;">
|
|
206
|
+
<div class="card-header">
|
|
207
|
+
<h4>Episodic Interaction Logs</h4>
|
|
208
|
+
</div>
|
|
209
|
+
<div id="mobile-episodic-list" class="card-body">
|
|
210
|
+
No recent episodes.
|
|
211
|
+
</div>
|
|
212
|
+
</div>
|
|
213
|
+
</section>
|
|
214
|
+
|
|
215
|
+
<!-- VIEW 6: Settings -->
|
|
216
|
+
<section id="view-settings" class="mobile-view">
|
|
217
|
+
<div class="mobile-panel-header">
|
|
218
|
+
<h2>AI Provider Settings</h2>
|
|
219
|
+
<p>Configure your API keys stored securely on your mobile device.</p>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
<div class="mobile-settings-card">
|
|
223
|
+
<div class="setting-item">
|
|
224
|
+
<label>Active Provider</label>
|
|
225
|
+
<select id="mobile-provider-select" onchange="onMobileProviderChange(this.value)">
|
|
226
|
+
<option value="deepseek">DeepSeek (V3/R1)</option>
|
|
227
|
+
<option value="openai">OpenAI (GPT-4o/o1)</option>
|
|
228
|
+
<option value="anthropic">Anthropic (Claude 3.7)</option>
|
|
229
|
+
<option value="gemini">Google Gemini</option>
|
|
230
|
+
<option value="cerebras">Cerebras (CS-3)</option>
|
|
231
|
+
<option value="cohere">Cohere (Command R+)</option>
|
|
232
|
+
<option value="vortex">Vortex API</option>
|
|
233
|
+
<option value="opencode">OpenCode</option>
|
|
234
|
+
<option value="nvidia-nim">NVIDIA NIM</option>
|
|
235
|
+
<option value="ollama">Ollama (Local / Tailscale)</option>
|
|
236
|
+
<option value="custom">Custom Endpoint</option>
|
|
237
|
+
</select>
|
|
238
|
+
</div>
|
|
239
|
+
|
|
240
|
+
<div class="setting-item">
|
|
241
|
+
<label>Active Model</label>
|
|
242
|
+
<input type="text" id="mobile-model-input" placeholder="Model name (e.g. deepseek-chat, gpt-4o)" />
|
|
243
|
+
</div>
|
|
244
|
+
|
|
245
|
+
<div class="setting-item">
|
|
246
|
+
<label>API Key</label>
|
|
247
|
+
<input type="password" id="mobile-api-key-input" placeholder="sk-..." />
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
<div class="setting-item">
|
|
251
|
+
<label>Base URL (Optional)</label>
|
|
252
|
+
<input type="text" id="mobile-base-url-input" placeholder="https://api..." />
|
|
253
|
+
</div>
|
|
254
|
+
|
|
255
|
+
<button class="mobile-action-btn" style="width: 100%; margin-top: 1rem;" onclick="saveMobileSettings()">
|
|
256
|
+
Save Settings
|
|
257
|
+
</button>
|
|
258
|
+
</div>
|
|
259
|
+
</section>
|
|
260
|
+
|
|
261
|
+
</main>
|
|
262
|
+
|
|
263
|
+
<!-- Mobile Bottom Navigation Bar -->
|
|
264
|
+
<nav class="mobile-bottom-nav">
|
|
265
|
+
<button class="nav-btn active" onclick="switchMobileView('chat')">
|
|
266
|
+
<span class="nav-label">Studio</span>
|
|
267
|
+
</button>
|
|
268
|
+
<button class="nav-btn" onclick="switchMobileView('dialectic')">
|
|
269
|
+
<span class="nav-label">Debate</span>
|
|
270
|
+
</button>
|
|
271
|
+
<button class="nav-btn" onclick="switchMobileView('goal')">
|
|
272
|
+
<span class="nav-label">Goal</span>
|
|
273
|
+
</button>
|
|
274
|
+
<button class="nav-btn" onclick="switchMobileView('profiles')">
|
|
275
|
+
<span class="nav-label">Profile</span>
|
|
276
|
+
</button>
|
|
277
|
+
<button class="nav-btn" onclick="switchMobileView('memory')">
|
|
278
|
+
<span class="nav-label">Memory</span>
|
|
279
|
+
</button>
|
|
280
|
+
<button class="nav-btn" onclick="switchMobileView('settings')">
|
|
281
|
+
<span class="nav-label">Settings</span>
|
|
282
|
+
</button>
|
|
283
|
+
</nav>
|
|
284
|
+
|
|
285
|
+
<script src="app.js"></script>
|
|
286
|
+
</body>
|
|
287
|
+
</html>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ANTRI Mobile",
|
|
3
|
+
"short_name": "ANTRI",
|
|
4
|
+
"description": "Minimalist Mobile Control Plane and Autonomous AI Coding Meta-Agent",
|
|
5
|
+
"start_url": "/",
|
|
6
|
+
"display": "standalone",
|
|
7
|
+
"background_color": "#fcfbf9",
|
|
8
|
+
"theme_color": "#f7f4ee",
|
|
9
|
+
"icons": [
|
|
10
|
+
{
|
|
11
|
+
"src": "/assets/icon.png",
|
|
12
|
+
"sizes": "192x192",
|
|
13
|
+
"type": "image/png"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|