pinokiod 5.1.10 → 5.1.17

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 (56) hide show
  1. package/kernel/api/fs/download_worker.js +158 -0
  2. package/kernel/api/fs/index.js +95 -91
  3. package/kernel/api/index.js +3 -0
  4. package/kernel/bin/index.js +5 -2
  5. package/kernel/environment.js +19 -2
  6. package/kernel/git.js +972 -1
  7. package/kernel/index.js +65 -30
  8. package/kernel/peer.js +1 -2
  9. package/kernel/plugin.js +0 -8
  10. package/kernel/procs.js +92 -36
  11. package/kernel/prototype.js +45 -22
  12. package/kernel/shells.js +30 -6
  13. package/kernel/sysinfo.js +33 -13
  14. package/kernel/util.js +61 -24
  15. package/kernel/workspace_status.js +131 -7
  16. package/package.json +1 -1
  17. package/pipe/index.js +1 -1
  18. package/server/index.js +1169 -350
  19. package/server/public/create-launcher.js +157 -2
  20. package/server/public/install.js +135 -41
  21. package/server/public/style.css +32 -1
  22. package/server/public/tab-link-popover.js +45 -14
  23. package/server/public/terminal-settings.js +51 -35
  24. package/server/public/urldropdown.css +89 -3
  25. package/server/socket.js +12 -7
  26. package/server/views/agents.ejs +4 -3
  27. package/server/views/app.ejs +798 -30
  28. package/server/views/bootstrap.ejs +2 -1
  29. package/server/views/checkpoints.ejs +1014 -0
  30. package/server/views/checkpoints_registry_beta.ejs +260 -0
  31. package/server/views/columns.ejs +4 -4
  32. package/server/views/connect.ejs +1 -0
  33. package/server/views/d.ejs +74 -4
  34. package/server/views/download.ejs +28 -28
  35. package/server/views/editor.ejs +4 -5
  36. package/server/views/env_editor.ejs +1 -1
  37. package/server/views/file_explorer.ejs +1 -1
  38. package/server/views/index.ejs +3 -1
  39. package/server/views/init/index.ejs +2 -1
  40. package/server/views/install.ejs +2 -1
  41. package/server/views/net.ejs +9 -7
  42. package/server/views/network.ejs +15 -14
  43. package/server/views/pro.ejs +5 -2
  44. package/server/views/prototype/index.ejs +2 -1
  45. package/server/views/registry_link.ejs +76 -0
  46. package/server/views/rows.ejs +4 -4
  47. package/server/views/screenshots.ejs +1 -0
  48. package/server/views/settings.ejs +1 -0
  49. package/server/views/shell.ejs +4 -6
  50. package/server/views/terminal.ejs +528 -38
  51. package/server/views/tools.ejs +1 -0
  52. package/undefined/logs/dev/plugin/cursor-agent.git/pinokio.js/1764297248545 +0 -45
  53. package/undefined/logs/dev/plugin/cursor-agent.git/pinokio.js/1764335557118 +0 -45
  54. package/undefined/logs/dev/plugin/cursor-agent.git/pinokio.js/1764335834126 +0 -45
  55. package/undefined/logs/dev/plugin/cursor-agent.git/pinokio.js/events +0 -12
  56. package/undefined/logs/dev/plugin/cursor-agent.git/pinokio.js/latest +0 -45
@@ -1155,7 +1155,7 @@ document.addEventListener('DOMContentLoaded', function() {
1155
1155
  <h3>
1156
1156
  <div class='item-icon'>
1157
1157
  <div class='placeholder-icon'>
1158
- <i class="fa-solid fa-database"></i>
1158
+ <i class="fa-solid fa-clock-rotate-left"></i>
1159
1159
  </div>
1160
1160
  </div>
1161
1161
  <div class='col'>
@@ -1194,21 +1194,22 @@ document.addEventListener('DOMContentLoaded', function() {
1194
1194
  <button type='button' class='btn' id='create-launcher-button'><i class="fa-solid fa-plus"></i><div class='caption'>Create</div></button>
1195
1195
  <a class='btn' id='explore' href="/home?mode=explore"><i class="fa-solid fa-globe"></i><div class='caption'>Discover</div></a>
1196
1196
  </div>
1197
- <a href="/home" class='tab'><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
1198
- <a href="/network" class='tab selected'><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
1199
- <% if (list.length > 0) { %>
1200
- <% let brands = { win32: "windows", darwin: "apple", linux: "Linux" } %>
1201
- <% list.forEach(({ host, name, platform, processes }, index) => { %>
1197
+ <a href="/home" class='tab'><i class='fas fa-laptop-code'></i><div class='caption'>This machine</div></a>
1198
+ <a href="/network" class='tab selected'><i class="fa-solid fa-wifi"></i><div class='caption'>Local network</div></a>
1199
+ <% if (list.length > 0) { %>
1200
+ <% let brands = { win32: "windows", darwin: "apple", linux: "Linux" } %>
1201
+ <% list.forEach(({ host, name, platform, processes }, index) => { %>
1202
1202
  <a href="/net/<%=name%>" class='submenu tab'><i class="fa-brands fa-<%=brands[platform]%>"></i><div class='caption'><%=name%> (<%=current_host === host ? 'this machine' : host%>)</div></a>
1203
1203
  <% }) %>
1204
- <% } %>
1205
- <a href="/connect" class='tab'><i class="fa-solid fa-plug"></i><div class='caption'>Login</div></a>
1206
- <a class='tab' href="<%=portal%>" target="_blank"><i class="fa-solid fa-question"></i><div class='caption'>Help</div></a>
1207
- <a class='tab' id='genlog' href="/logs"><i class="fa-solid fa-laptop-code"></i><div class='caption'>Logs</div></a>
1208
- <a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
1209
- <a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
1210
- <a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
1211
- <a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
1204
+ <% } %>
1205
+ <a href="/connect" class='tab'><i class="fa-solid fa-plug"></i><div class='caption'>Login</div></a>
1206
+ <a class='tab' href="<%=portal%>" target="_blank"><i class="fa-solid fa-question"></i><div class='caption'>Help</div></a>
1207
+ <a class='tab' id='genlog' href="/logs"><i class="fa-solid fa-laptop-code"></i><div class='caption'>Logs</div></a>
1208
+ <a class='tab' href="/checkpoints"><i class="fa-solid fa-clock-rotate-left"></i><div class='caption'>Checkpoints</div></a>
1209
+ <a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
1210
+ <a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
1211
+ <a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
1212
+ <a class='tab' href="/home?mode=settings"><i class="fa-solid fa-gear"></i><div class='caption'>Settings</div></a>
1212
1213
  <%- include('partials/peer_access_points', { peer_access_points, peer_url, peer_qr }) %>
1213
1214
  </aside>
1214
1215
  </main>
@@ -227,7 +227,8 @@ const createTerm = async (_theme) => {
227
227
  <% } %>
228
228
  let config = {
229
229
  scrollback: 9999999,
230
- fontSize: 12,
230
+ fontSize: 14,
231
+ fontFamily: 'monospace',
231
232
  theme,
232
233
  }
233
234
  let res = await fetch("/xterm_config").then((res) => {
@@ -371,13 +372,15 @@ let cwd = searchParams.get("cwd")
371
372
  let name = searchParams.get("name")
372
373
  let tool = searchParams.get("tool")
373
374
  let aiPrompt = searchParams.get("message")
375
+ let uploadToken = searchParams.get("uploadToken")
374
376
  displayResults({
375
377
  cwd: "<%-JSON.stringify(cwd).slice(1, -1)%>",
376
378
  name: name,
377
379
  startType: "new",
378
380
  projectType: "default",
379
381
  aiPrompt,
380
- tool
382
+ tool,
383
+ uploadToken
381
384
  })
382
385
  </script>
383
386
  </body>
@@ -1565,7 +1565,8 @@ async function displayResults(config) {
1565
1565
 
1566
1566
  let term_config = {
1567
1567
  scrollback: 9999999,
1568
- fontSize: 12,
1568
+ fontSize: 14,
1569
+ fontFamily: 'monospace',
1569
1570
  theme,
1570
1571
  }
1571
1572
  let res = await fetch("/xterm_config").then((res) => {
@@ -0,0 +1,76 @@
1
+ <html>
2
+ <head>
3
+ <meta charset="UTF-8" />
4
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
5
+ <style>
6
+ body {
7
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ height: 100vh;
12
+ margin: 0;
13
+ background: #f5f5f5;
14
+ }
15
+ .card {
16
+ background: white;
17
+ padding: 40px;
18
+ border-radius: 12px;
19
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
20
+ text-align: center;
21
+ max-width: 500px;
22
+ }
23
+ h1 {
24
+ margin-top: 0;
25
+ }
26
+ h1.ok {
27
+ color: #16a34a;
28
+ }
29
+ h1.error {
30
+ color: #dc2626;
31
+ }
32
+ .meta {
33
+ color: #666;
34
+ font-size: 14px;
35
+ margin-top: 20px;
36
+ }
37
+ .close {
38
+ margin-top: 20px;
39
+ padding: 10px 20px;
40
+ background: #2563eb;
41
+ color: white;
42
+ border: none;
43
+ border-radius: 6px;
44
+ cursor: pointer;
45
+ }
46
+ .error {
47
+ color: #666;
48
+ font-size: 14px;
49
+ }
50
+ </style>
51
+ </head>
52
+ <body>
53
+ <div class="card">
54
+ <% if (ok) { %>
55
+ <h1 class="ok">✓ Linked Successfully!</h1>
56
+ <p>Pinokio is now connected to the registry.</p>
57
+ <p>You can now back up checkpoints to the registry.</p>
58
+ <div class="meta">Registry: <strong><%= registryUrl %></strong></div>
59
+ <button class="close" onclick="window.close()">Close</button>
60
+ <script>
61
+ setTimeout(() => window.close(), 5000);
62
+ </script>
63
+ <% } else { %>
64
+ <h1 class="error">❌ Linking Failed</h1>
65
+ <% if (message) { %>
66
+ <p class="error"><%= message %></p>
67
+ <% } %>
68
+ <% if (registryUrl) { %>
69
+ <p class="error">Registry: <%= registryUrl %></p>
70
+ <% } %>
71
+ <a href="/">Go back to Pinokio</a>
72
+ <% } %>
73
+ </div>
74
+ </body>
75
+ </html>
76
+
@@ -62,9 +62,9 @@ body[data-agent='electron'] {
62
62
  <script src="/window_storage.js"></script>
63
63
  </head>
64
64
  <body class='<%=theme%>' data-agent="<%=agent%>">
65
- <iframe id='row0' data-src="<%= originSrc || '/' %>"></iframe>
65
+ <iframe id='row0' data-src="<%= originSrc || '/home' %>"></iframe>
66
66
  <div id="gutter" class="gutter" tabindex="0" role="separator" aria-orientation="horizontal" aria-label="Resize panels" aria-valuemin="120" aria-valuemax="0" aria-valuenow="0"></div>
67
- <iframe id='row1' data-src="<%= targetSrc || originSrc || '/' %>"></iframe>
67
+ <iframe id='row1' data-src="<%= targetSrc || originSrc || '/home' %>"></iframe>
68
68
 
69
69
  <script>
70
70
  if (window !== window.top) {
@@ -208,7 +208,7 @@ body[data-agent='electron'] {
208
208
  }, "*")
209
209
  } else {
210
210
  // if this is the top window, everything has been removed, so just redirect to home
211
- location.href = "/"
211
+ location.href = "/home"
212
212
  }
213
213
  }
214
214
  }
@@ -337,7 +337,7 @@ body[data-agent='electron'] {
337
337
 
338
338
  if (!sourceFrameId) {
339
339
  windowStorage.removeItem(splitKey)
340
- location.href = "/"
340
+ location.href = "/home"
341
341
  return
342
342
  }
343
343
 
@@ -804,6 +804,7 @@ document.addEventListener('DOMContentLoaded', function() {
804
804
  <a href="/connect" class='tab'><i class="fa-solid fa-plug"></i><div class='caption'>Login</div></a>
805
805
  <a class='tab' href="<%=portal%>" target="_blank"><i class="fa-solid fa-question"></i><div class='caption'>Help</div></a>
806
806
  <a class='tab' id='genlog' href="/logs"><i class="fa-solid fa-laptop-code"></i><div class='caption'>Logs</div></a>
807
+ <a class='tab' href="/checkpoints"><i class="fa-solid fa-clock-rotate-left"></i><div class='caption'>Checkpoints</div></a>
807
808
  <a class='tab selected' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
808
809
  <a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
809
810
  <a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
@@ -639,6 +639,7 @@ document.addEventListener('DOMContentLoaded', function() {
639
639
  <a href="/connect" class='tab'><i class="fa-solid fa-plug"></i><div class='caption'>Login</div></a>
640
640
  <a class='tab' href="<%=portal%>" target="_blank"><i class="fa-solid fa-question"></i><div class='caption'>Help</div></a>
641
641
  <a class='tab' id='genlog' href="/logs"><i class="fa-solid fa-laptop-code"></i><div class='caption'>Logs</div></a>
642
+ <a class='tab' href="/checkpoints"><i class="fa-solid fa-clock-rotate-left"></i><div class='caption'>Checkpoints</div></a>
642
643
  <a class='tab' href="/screenshots"><i class="fa-solid fa-camera"></i><div class='caption'>Screenshots</div></a>
643
644
  <a class='tab' href="/tools"><i class="fa-solid fa-toolbox"></i><div class='caption'>Installed Tools</div></a>
644
645
  <a class='tab' href="/agents"><i class="fa-solid fa-robot"></i><div class='caption'>Agents</div></a>
@@ -432,10 +432,9 @@ document.addEventListener("DOMContentLoaded", async () => {
432
432
  })
433
433
  })
434
434
  }
435
- start(mode) {
436
- return new Promise(async (resolve, reject) => {
435
+ async start(mode) {
437
436
  // await this.save()
438
- await this.socket.close()
437
+ this.socket.close()
439
438
 
440
439
  let query = Object.fromEntries(new URLSearchParams(location.search))
441
440
  let firstPacketReceived = false
@@ -871,7 +870,6 @@ document.addEventListener("DOMContentLoaded", async () => {
871
870
  <% } %>
872
871
  <% } %>
873
872
  })
874
- })
875
873
  }
876
874
  async run (mode) {
877
875
  this.mode = (mode ? mode : "run")
@@ -1192,8 +1190,8 @@ document.addEventListener("DOMContentLoaded", async () => {
1192
1190
 
1193
1191
  let config = {
1194
1192
  scrollback: 9999999,
1195
- //fontSize: 12,
1196
- fontSize: 12,
1193
+ fontSize: 14,
1194
+ fontFamily: 'monospace',
1197
1195
  theme,
1198
1196
  //theme: xtermTheme.FrontEndDelight
1199
1197
  //theme: xtermTheme.Afterglow