@pasko70/pibo 1.4.0 → 1.4.2

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 (129) hide show
  1. package/README.md +183 -183
  2. package/context/codex-base-prompt.md +148 -148
  3. package/context/compute-worker.md +23 -23
  4. package/context/pibo-compaction-prompt.md +100 -100
  5. package/context/pibo-native-tooling.md +18 -18
  6. package/context/pibo-system-prompt.md +77 -77
  7. package/dist/apps/chat/agent-store.js +82 -82
  8. package/dist/apps/chat/data/project-service.js +166 -166
  9. package/dist/apps/chat/data/read-state-service.js +18 -18
  10. package/dist/apps/chat/data/timeline-query-service.js +8 -8
  11. package/dist/apps/chat/model-catalog.js +5 -1
  12. package/dist/apps/chat/static-assets.js +853 -853
  13. package/dist/apps/chat/workflow-persistence.js +255 -255
  14. package/dist/apps/chat-ui/assets/{dist-7YaJd19a.js → dist-B2BEpL7n.js} +1 -1
  15. package/dist/apps/chat-ui/assets/{dist-CiYeO8nN.js → dist-BAGS_xkV.js} +1 -1
  16. package/dist/apps/chat-ui/assets/{dist-BIvPnn_C.js → dist-BAXNalar.js} +1 -1
  17. package/dist/apps/chat-ui/assets/{dist-CjSI6y5z.js → dist-BwUvs6Ph.js} +1 -1
  18. package/dist/apps/chat-ui/assets/{dist-Ubstha8t.js → dist-C0zsJ8II.js} +1 -1
  19. package/dist/apps/chat-ui/assets/{dist-KXCMNKIL.js → dist-C3PnEkhb.js} +1 -1
  20. package/dist/apps/chat-ui/assets/{dist-CVQU42Fn.js → dist-CYPL-B2Z.js} +1 -1
  21. package/dist/apps/chat-ui/assets/{dist-BbNE72h8.js → dist-CiDSXgtg.js} +1 -1
  22. package/dist/apps/chat-ui/assets/{dist-D7TCkoFT.js → dist-DnACFKyO.js} +1 -1
  23. package/dist/apps/chat-ui/assets/{dist-ChSZNqKE.js → dist-ZB1-ui2y.js} +1 -1
  24. package/dist/apps/chat-ui/assets/{dist-8Noo5eCN.js → dist-vKlxFkTa.js} +1 -1
  25. package/dist/apps/chat-ui/assets/{index-CmxtUVG1.js → index-0x7tuTNX.js} +3 -3
  26. package/dist/apps/chat-ui/assets/{index-C25VYnyb.css → index-B-qaya1G.css} +1 -1
  27. package/dist/apps/chat-ui/index.html +18 -18
  28. package/dist/apps/chat-ui/manifest.webmanifest +25 -25
  29. package/dist/apps/chat-ui/sw.js +41 -41
  30. package/dist/apps/chat-vscode-web/index.html +12 -12
  31. package/dist/apps/cli-ui/cliSessionsCommand.js +23 -23
  32. package/dist/apps/context-files-ui/index.html +11 -11
  33. package/dist/apps/vscode-artifacts/latest.vsix +0 -0
  34. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.4.2.vsix +0 -0
  35. package/dist/bin/pibo.js +0 -0
  36. package/dist/bin/rg.js +0 -0
  37. package/dist/cli.js +35 -35
  38. package/dist/compute/cli.js +54 -54
  39. package/dist/core/runtime.js +2 -0
  40. package/dist/core/session-router.js +1 -0
  41. package/dist/cron/cli.js +15 -15
  42. package/dist/cron/store.js +49 -49
  43. package/dist/data/cli.js +23 -23
  44. package/dist/data/event-log.js +23 -23
  45. package/dist/data/message-store.js +20 -20
  46. package/dist/data/navigation-store.js +9 -9
  47. package/dist/data/observation-store.js +4 -4
  48. package/dist/data/payload-store.js +17 -17
  49. package/dist/data/schema.js +429 -429
  50. package/dist/data/session-store.js +4 -4
  51. package/dist/data/telemetry-queries.js +54 -54
  52. package/dist/data/telemetry.js +156 -156
  53. package/dist/debug/events.js +12 -12
  54. package/dist/debug/failures.js +6 -6
  55. package/dist/debug/index.js +207 -207
  56. package/dist/debug/messages.js +6 -6
  57. package/dist/debug/pty.js +124 -124
  58. package/dist/debug/session.js +29 -29
  59. package/dist/debug/tools.js +5 -5
  60. package/dist/debug/web-snapshot-browser-scripts.js +294 -294
  61. package/dist/debug/web-streaming-browser-library.js +925 -925
  62. package/dist/debug/web-streaming-browser-scripts.js +232 -232
  63. package/dist/debug/web-streaming-provider-telemetry.js +4 -4
  64. package/dist/debug/web.js +93 -93
  65. package/dist/gateway/cli.js +19 -19
  66. package/dist/mcp/config-command.js +53 -53
  67. package/dist/mcp/index.js +21 -21
  68. package/dist/mcp/registry.js +11 -11
  69. package/dist/pi-packages/cli.js +11 -11
  70. package/dist/plugins/context-files-store.js +110 -110
  71. package/dist/plugins/context-files.js +4 -4
  72. package/dist/providers/glm.js +59 -0
  73. package/dist/ralph/cli.js +18 -18
  74. package/dist/ralph/templates.js +140 -140
  75. package/dist/reliability/store.js +226 -226
  76. package/dist/sessions/pibo-data-store.js +16 -16
  77. package/dist/sessions/sqlite-store.js +53 -53
  78. package/dist/setup/cli.js +58 -58
  79. package/dist/tools/agent-browser-wrapper.js +80 -80
  80. package/dist/tools/browser-use-cdp.js +12 -12
  81. package/dist/tools/browser-use-wrapper.js +762 -762
  82. package/dist/tools/guides.js +455 -455
  83. package/dist/tools/index.js +99 -99
  84. package/dist/tools/runtime/node-worker-source.js +205 -205
  85. package/dist/tools/runtime/python-worker-source.js +177 -177
  86. package/dist/vscode/cli.js +9 -9
  87. package/dist/web-annotations/cdp.js +900 -900
  88. package/dist/web-annotations/store.js +96 -96
  89. package/docs/README.md +23 -23
  90. package/docs/ops/install-developer-host.md +112 -112
  91. package/docs/ops/install-user-host.md +96 -96
  92. package/docs/ops/upgrade-user-to-developer-host.md +69 -69
  93. package/docs/ops/vscode-extension-release.md +160 -160
  94. package/package.json +1 -1
  95. package/skills/builtin/pi-agent-harness/SKILL.md +319 -319
  96. package/skills/builtin/pi-agent-harness/agents/openai.yaml +4 -4
  97. package/skills/builtin/pibo-docker-system/SKILL.md +170 -170
  98. package/skills/builtin/pibo-spec-writing/SKILL.md +330 -330
  99. package/skills/builtin/prd/SKILL.md +143 -143
  100. package/skills/builtin/ralph-loop/SKILL.md +359 -359
  101. package/skills/builtin/ralph-prd-json/SKILL.md +123 -123
  102. package/skills/builtin/skill-creator/LICENSE.txt +201 -201
  103. package/skills/builtin/skill-creator/SKILL.md +513 -513
  104. package/skills/builtin/skill-creator/agents/analyzer.md +274 -274
  105. package/skills/builtin/skill-creator/agents/comparator.md +202 -202
  106. package/skills/builtin/skill-creator/agents/grader.md +223 -223
  107. package/skills/builtin/skill-creator/assets/eval_review.html +146 -146
  108. package/skills/builtin/skill-creator/eval-viewer/generate_review.py +471 -471
  109. package/skills/builtin/skill-creator/eval-viewer/viewer.html +1325 -1325
  110. package/skills/builtin/skill-creator/references/schemas.md +430 -430
  111. package/skills/builtin/skill-creator/scripts/aggregate_benchmark.py +401 -401
  112. package/skills/builtin/skill-creator/scripts/generate_report.py +326 -326
  113. package/skills/builtin/skill-creator/scripts/improve_description.py +247 -247
  114. package/skills/builtin/skill-creator/scripts/package_skill.py +136 -136
  115. package/skills/builtin/skill-creator/scripts/quick_validate.py +102 -102
  116. package/skills/builtin/skill-creator/scripts/run_eval.py +310 -310
  117. package/skills/builtin/skill-creator/scripts/run_loop.py +328 -328
  118. package/skills/builtin/skill-creator/scripts/utils.py +47 -47
  119. package/skills/builtin/web-annotations/SKILL.md +93 -93
  120. package/src/mcp/LICENSE.mcp-cli +21 -21
  121. package/dist/apps/vscode-artifacts/pibo-vscode-1.3.0.vsix +0 -0
  122. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.3.vsix +0 -0
  123. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.4.vsix +0 -0
  124. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.5.vsix +0 -0
  125. package/dist/core/shared-app.js +0 -17
  126. package/dist/data/final-app-space-cutover-migration.js +0 -728
  127. package/dist/data/shared-app-migration.js +0 -757
  128. package/dist/session-ui/ownerViewModel.js +0 -27
  129. package/dist/shared-app.js +0 -4
@@ -1,20 +1,20 @@
1
- <!doctype html>
2
- <html lang="de" class="dark">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
- <meta name="theme-color" content="#101d22" />
7
- <meta name="apple-mobile-web-app-capable" content="yes" />
8
- <meta name="apple-mobile-web-app-title" content="Pibo Chat" />
9
- <link rel="manifest" href="/apps/chat/manifest.webmanifest" />
10
- <link rel="apple-touch-icon" href="/apps/chat/assets/pwa-images/ios/180.png" />
11
- <title>Pibo Web Chat</title>
12
- <script type="module" crossorigin src="/apps/chat/assets/index-CmxtUVG1.js"></script>
1
+ <!doctype html>
2
+ <html lang="de" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
+ <meta name="theme-color" content="#101d22" />
7
+ <meta name="apple-mobile-web-app-capable" content="yes" />
8
+ <meta name="apple-mobile-web-app-title" content="Pibo Chat" />
9
+ <link rel="manifest" href="/apps/chat/manifest.webmanifest" />
10
+ <link rel="apple-touch-icon" href="/apps/chat/assets/pwa-images/ios/180.png" />
11
+ <title>Pibo Web Chat</title>
12
+ <script type="module" crossorigin src="/apps/chat/assets/index-0x7tuTNX.js"></script>
13
13
  <link rel="modulepreload" crossorigin href="/apps/chat/assets/rolldown-runtime-S-ySWqyJ.js">
14
14
  <link rel="modulepreload" crossorigin href="/apps/chat/assets/dist-SVPsM5Oi.js">
15
- <link rel="stylesheet" crossorigin href="/apps/chat/assets/index-C25VYnyb.css">
16
- </head>
17
- <body>
18
- <div id="root"></div>
19
- </body>
20
- </html>
15
+ <link rel="stylesheet" crossorigin href="/apps/chat/assets/index-B-qaya1G.css">
16
+ </head>
17
+ <body>
18
+ <div id="root"></div>
19
+ </body>
20
+ </html>
@@ -1,25 +1,25 @@
1
- {
2
- "name": "Pibo Web Chat",
3
- "short_name": "Pibo Chat",
4
- "description": "Pibo Chat Web App als installierbare Progressive Web App.",
5
- "start_url": "/apps/chat/",
6
- "scope": "/apps/chat/",
7
- "display": "standalone",
8
- "background_color": "#101d22",
9
- "theme_color": "#101d22",
10
- "orientation": "any",
11
- "icons": [
12
- {
13
- "src": "/apps/chat/assets/pwa-images/android/launchericon-192x192.png",
14
- "sizes": "192x192",
15
- "type": "image/png",
16
- "purpose": "any maskable"
17
- },
18
- {
19
- "src": "/apps/chat/assets/pwa-images/android/launchericon-512x512.png",
20
- "sizes": "512x512",
21
- "type": "image/png",
22
- "purpose": "any maskable"
23
- }
24
- ]
25
- }
1
+ {
2
+ "name": "Pibo Web Chat",
3
+ "short_name": "Pibo Chat",
4
+ "description": "Pibo Chat Web App als installierbare Progressive Web App.",
5
+ "start_url": "/apps/chat/",
6
+ "scope": "/apps/chat/",
7
+ "display": "standalone",
8
+ "background_color": "#101d22",
9
+ "theme_color": "#101d22",
10
+ "orientation": "any",
11
+ "icons": [
12
+ {
13
+ "src": "/apps/chat/assets/pwa-images/android/launchericon-192x192.png",
14
+ "sizes": "192x192",
15
+ "type": "image/png",
16
+ "purpose": "any maskable"
17
+ },
18
+ {
19
+ "src": "/apps/chat/assets/pwa-images/android/launchericon-512x512.png",
20
+ "sizes": "512x512",
21
+ "type": "image/png",
22
+ "purpose": "any maskable"
23
+ }
24
+ ]
25
+ }
@@ -1,41 +1,41 @@
1
- const CACHE_NAME = "pibo-chat-v1";
2
- const APP_SHELL_URL = "/apps/chat/";
3
-
4
- self.addEventListener("install", (event) => {
5
- event.waitUntil(
6
- caches.open(CACHE_NAME)
7
- .then((cache) => cache.add(APP_SHELL_URL))
8
- .then(() => self.skipWaiting()),
9
- );
10
- });
11
-
12
- self.addEventListener("activate", (event) => {
13
- event.waitUntil(
14
- caches.keys()
15
- .then((names) => Promise.all(names.filter((name) => name !== CACHE_NAME).map((name) => caches.delete(name))))
16
- .then(() => self.clients.claim()),
17
- );
18
- });
19
-
20
- self.addEventListener("fetch", (event) => {
21
- const request = event.request;
22
- if (request.method !== "GET") return;
23
-
24
- const url = new URL(request.url);
25
- if (url.origin !== self.location.origin || !url.pathname.startsWith("/apps/chat/")) return;
26
-
27
- if (request.mode === "navigate") {
28
- event.respondWith(fetch(request).catch(() => caches.match(APP_SHELL_URL)));
29
- return;
30
- }
31
-
32
- if (url.pathname.startsWith("/apps/chat/assets/")) {
33
- event.respondWith(
34
- caches.match(request).then((cached) => cached ?? fetch(request).then((response) => {
35
- const copy = response.clone();
36
- caches.open(CACHE_NAME).then((cache) => cache.put(request, copy));
37
- return response;
38
- })),
39
- );
40
- }
41
- });
1
+ const CACHE_NAME = "pibo-chat-v1";
2
+ const APP_SHELL_URL = "/apps/chat/";
3
+
4
+ self.addEventListener("install", (event) => {
5
+ event.waitUntil(
6
+ caches.open(CACHE_NAME)
7
+ .then((cache) => cache.add(APP_SHELL_URL))
8
+ .then(() => self.skipWaiting()),
9
+ );
10
+ });
11
+
12
+ self.addEventListener("activate", (event) => {
13
+ event.waitUntil(
14
+ caches.keys()
15
+ .then((names) => Promise.all(names.filter((name) => name !== CACHE_NAME).map((name) => caches.delete(name))))
16
+ .then(() => self.clients.claim()),
17
+ );
18
+ });
19
+
20
+ self.addEventListener("fetch", (event) => {
21
+ const request = event.request;
22
+ if (request.method !== "GET") return;
23
+
24
+ const url = new URL(request.url);
25
+ if (url.origin !== self.location.origin || !url.pathname.startsWith("/apps/chat/")) return;
26
+
27
+ if (request.mode === "navigate") {
28
+ event.respondWith(fetch(request).catch(() => caches.match(APP_SHELL_URL)));
29
+ return;
30
+ }
31
+
32
+ if (url.pathname.startsWith("/apps/chat/assets/")) {
33
+ event.respondWith(
34
+ caches.match(request).then((cached) => cached ?? fetch(request).then((response) => {
35
+ const copy = response.clone();
36
+ caches.open(CACHE_NAME).then((cache) => cache.put(request, copy));
37
+ return response;
38
+ })),
39
+ );
40
+ }
41
+ });
@@ -1,14 +1,14 @@
1
- <!doctype html>
2
- <html lang="de" class="dark">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <meta name="theme-color" content="#101d22" />
7
- <title>Pibo</title>
1
+ <!doctype html>
2
+ <html lang="de" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta name="theme-color" content="#101d22" />
7
+ <title>Pibo</title>
8
8
  <script type="module" crossorigin src="/apps/chat-vscode/assets/index-C3GTPyDo.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/apps/chat-vscode/assets/index-B5QK07zO.css">
10
- </head>
11
- <body>
12
- <div id="root"></div>
13
- </body>
14
- </html>
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
@@ -205,28 +205,28 @@ export function terminalLineLimitFromColumns(columns) {
205
205
  return Math.max(20, Math.floor(columns) - 4);
206
206
  }
207
207
  export function cliSessionsHelpText() {
208
- return `pibo tui:sessions - reduced Web Chat-derived session UI for terminals
209
-
210
- Usage:
211
- pibo tui:sessions [options]
212
-
213
- Options:
214
- --session <id> Open a specific Pibo session id
215
- --max-rows <count> Limit rendered transcript rows (default: 20)
216
- --demo Use deterministic fake session data for smoke testing
217
- -h, --help Show this help
218
-
219
- V2 commands inside the app:
220
- ${cliCommandSummaryText()}
221
-
222
- Scope:
223
- CLI Sessions is a reduced session/chat UI for SSH, bootstrap, recovery, and quick local work.
224
- It starts only when stdin and stdout are interactive TTYs; pipes fail with a clear error.
225
- Transcript rendering uses a bounded default tail window of 20 rows and truncates narrow terminal lines.
226
- Web Chat remains the full control center for projects, workflows, Cron, Ralph, Agent Designer, settings, and context management.
227
-
228
- Related existing commands:
229
- pibo tui
230
- pibo tui:routed
208
+ return `pibo tui:sessions - reduced Web Chat-derived session UI for terminals
209
+
210
+ Usage:
211
+ pibo tui:sessions [options]
212
+
213
+ Options:
214
+ --session <id> Open a specific Pibo session id
215
+ --max-rows <count> Limit rendered transcript rows (default: 20)
216
+ --demo Use deterministic fake session data for smoke testing
217
+ -h, --help Show this help
218
+
219
+ V2 commands inside the app:
220
+ ${cliCommandSummaryText()}
221
+
222
+ Scope:
223
+ CLI Sessions is a reduced session/chat UI for SSH, bootstrap, recovery, and quick local work.
224
+ It starts only when stdin and stdout are interactive TTYs; pipes fail with a clear error.
225
+ Transcript rendering uses a bounded default tail window of 20 rows and truncates narrow terminal lines.
226
+ Web Chat remains the full control center for projects, workflows, Cron, Ralph, Agent Designer, settings, and context management.
227
+
228
+ Related existing commands:
229
+ pibo tui
230
+ pibo tui:routed
231
231
  `;
232
232
  }
@@ -1,14 +1,14 @@
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>Pibo Context Files</title>
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>Pibo Context Files</title>
7
7
  <script type="module" crossorigin src="/apps/context-files/assets/index-BhAWD3dv.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/apps/context-files/assets/dist-D1KyNDg5.js">
9
9
  <link rel="stylesheet" crossorigin href="/apps/context-files/assets/index-B92tL3Pp.css">
10
- </head>
11
- <body>
12
- <div id="root"></div>
13
- </body>
14
- </html>
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
package/dist/bin/pibo.js CHANGED
File without changes
package/dist/bin/rg.js CHANGED
File without changes
package/dist/cli.js CHANGED
@@ -381,43 +381,43 @@ export async function runPiboCli(argv = process.argv) {
381
381
  await program.parseAsync(argv);
382
382
  }
383
383
  function printRootDiscoveryText() {
384
- return `pibo - agent-oriented CLI
385
-
386
- Commands:
387
- config Manage local pibo config
388
- mcp Discover and call configured MCP servers
389
- tools Install and inspect curated external CLI tools
390
- pi-packages Register Pi Coding Agent packages
391
- debug Inspect local Pibo data
392
- data Inspect and maintain Pibo data stores
393
- compute Manage Pibo Docker compute workers
394
- setup Plan user-host installs and developer-host upgrades
395
- skills Manage Pibo user skills
396
- cron Manage scheduled Pibo jobs
397
- ralph Manage continuous Ralph jobs
398
- vscode Manage the Pibo VS Code extension
399
- profile Inspect a pibo profile
400
- tui Start the direct Pi TUI
401
- tui:routed Start the local routed Pibo TUI
402
- tui:sessions Start the reduced Web Chat-derived session UI
403
- gateway Inspect and restart host gateways through safe CLI commands
404
- gateway:web Start a web gateway runtime (use --auth=local for loopback-only local auth)
405
-
406
- Next:
407
- pibo <command> --help
384
+ return `pibo - agent-oriented CLI
385
+
386
+ Commands:
387
+ config Manage local pibo config
388
+ mcp Discover and call configured MCP servers
389
+ tools Install and inspect curated external CLI tools
390
+ pi-packages Register Pi Coding Agent packages
391
+ debug Inspect local Pibo data
392
+ data Inspect and maintain Pibo data stores
393
+ compute Manage Pibo Docker compute workers
394
+ setup Plan user-host installs and developer-host upgrades
395
+ skills Manage Pibo user skills
396
+ cron Manage scheduled Pibo jobs
397
+ ralph Manage continuous Ralph jobs
398
+ vscode Manage the Pibo VS Code extension
399
+ profile Inspect a pibo profile
400
+ tui Start the direct Pi TUI
401
+ tui:routed Start the local routed Pibo TUI
402
+ tui:sessions Start the reduced Web Chat-derived session UI
403
+ gateway Inspect and restart host gateways through safe CLI commands
404
+ gateway:web Start a web gateway runtime (use --auth=local for loopback-only local auth)
405
+
406
+ Next:
407
+ pibo <command> --help
408
408
  `;
409
409
  }
410
410
  function printConfigDiscoveryText() {
411
- return `pibo config - local config at ${getDefaultPiboConfigPath()}
412
-
413
- Commands:
414
- keys List supported config keys
415
- show Print redacted config JSON
416
- get <key> Print one redacted config value
417
- set <key> <value> Set one config value
418
- del <key> Delete one config value
419
-
420
- Next:
421
- pibo config keys
411
+ return `pibo config - local config at ${getDefaultPiboConfigPath()}
412
+
413
+ Commands:
414
+ keys List supported config keys
415
+ show Print redacted config JSON
416
+ get <key> Print one redacted config value
417
+ set <key> <value> Set one config value
418
+ del <key> Delete one config value
419
+
420
+ Next:
421
+ pibo config keys
422
422
  `;
423
423
  }
@@ -188,16 +188,16 @@ export async function runComputeCli(argv) {
188
188
  .helpOption("-h, --help", "Show help")
189
189
  .showHelpAfterError()
190
190
  .helpCommand("help [command]", "Show help for command")
191
- .addHelpText("after", `
192
- Examples:
193
- $ pibo compute spawn
194
- $ pibo compute dev spawn --worktree my-fix
195
- $ pibo compute list
196
- $ pibo compute release pibo-worker-abc123
197
-
198
- Next:
199
- $ pibo compute spawn --help
200
- $ pibo compute dev --help
191
+ .addHelpText("after", `
192
+ Examples:
193
+ $ pibo compute spawn
194
+ $ pibo compute dev spawn --worktree my-fix
195
+ $ pibo compute list
196
+ $ pibo compute release pibo-worker-abc123
197
+
198
+ Next:
199
+ $ pibo compute spawn --help
200
+ $ pibo compute dev --help
201
201
  `);
202
202
  program
203
203
  .command("spawn")
@@ -208,11 +208,11 @@ Next:
208
208
  .option("--idle-seconds <n>", "Tag the worker idle retention in seconds")
209
209
  .option("--ralph-job-id <id>", "Tag the Ralph job id when this worker is Ralph-owned")
210
210
  .option("--ralph-run-id <id>", "Tag the Ralph run id when this worker is Ralph-owned")
211
- .addHelpText("after", `
212
- Creates a worker container and starts the gateway. Prints JSON with the container id and mapped ports.
213
-
214
- Use this for quick isolated checks. For code changes, prefer:
215
- $ pibo compute dev spawn --worktree my-fix
211
+ .addHelpText("after", `
212
+ Creates a worker container and starts the gateway. Prints JSON with the container id and mapped ports.
213
+
214
+ Use this for quick isolated checks. For code changes, prefer:
215
+ $ pibo compute dev spawn --worktree my-fix
216
216
  `)
217
217
  .action(async (options) => {
218
218
  await mkdir(path.dirname(HASH_FILE), { recursive: true });
@@ -238,11 +238,11 @@ Use this for quick isolated checks. For code changes, prefer:
238
238
  .command("dev")
239
239
  .description("Manage development workers with Git worktrees")
240
240
  .helpCommand("help [command]", "Show help for command")
241
- .addHelpText("after", `
242
- Use dev workers for Pibo code changes. Each worker gets its own Git worktree and port block.
243
-
244
- Next:
245
- $ pibo compute dev spawn --help
241
+ .addHelpText("after", `
242
+ Use dev workers for Pibo code changes. Each worker gets its own Git worktree and port block.
243
+
244
+ Next:
245
+ $ pibo compute dev spawn --help
246
246
  `);
247
247
  devCmd
248
248
  .command("spawn")
@@ -254,11 +254,11 @@ Next:
254
254
  .option("--idle-seconds <n>", "Tag the worker idle retention in seconds")
255
255
  .option("--ralph-job-id <id>", "Tag the Ralph job id when this worker is Ralph-owned")
256
256
  .option("--ralph-run-id <id>", "Tag the Ralph run id when this worker is Ralph-owned")
257
- .addHelpText("after", `
258
- Creates .worktrees/<name>, starts a worker, and prints JSON with ports and the worktree path.
259
-
260
- Example:
261
- $ pibo compute dev spawn --worktree my-fix
257
+ .addHelpText("after", `
258
+ Creates .worktrees/<name>, starts a worker, and prints JSON with ports and the worktree path.
259
+
260
+ Example:
261
+ $ pibo compute dev spawn --worktree my-fix
262
262
  `)
263
263
  .action(async (options) => {
264
264
  await mkdir(path.dirname(DEP_HASH_FILE), { recursive: true });
@@ -293,8 +293,8 @@ Example:
293
293
  program
294
294
  .command("rebuild")
295
295
  .description("Rebuild the pibo:latest Docker image")
296
- .addHelpText("after", `
297
- Rebuilds from the current workspace and refreshes compute image hashes.
296
+ .addHelpText("after", `
297
+ Rebuilds from the current workspace and refreshes compute image hashes.
298
298
  `)
299
299
  .action(async () => {
300
300
  console.error(`Rebuilding ${IMAGE_NAME} from ${WORKSPACE_DIR}...`);
@@ -309,11 +309,11 @@ Rebuilds from the current workspace and refreshes compute image hashes.
309
309
  .option("--all", "Include stopped, exited, dead, and restarting Pibo workers")
310
310
  .option("--json", "Print machine-readable worker metadata")
311
311
  .option("--verbose", "Show full Docker port bindings in text output")
312
- .addHelpText("after", `
313
- Shows each worker's name, role, status, mapped ports, creation time, holder, and Ralph labels when present.
314
-
315
- Next:
316
- $ pibo compute list --all --json
312
+ .addHelpText("after", `
313
+ Shows each worker's name, role, status, mapped ports, creation time, holder, and Ralph labels when present.
314
+
315
+ Next:
316
+ $ pibo compute list --all --json
317
317
  `)
318
318
  .action(async (options) => {
319
319
  const workers = await listWorkers({ all: options.all === true });
@@ -330,14 +330,14 @@ Next:
330
330
  .option("--json", "Print machine-readable resource health")
331
331
  .option("--browser-pool-root <path>", "Browser pool root directory to scan")
332
332
  .option("--browser-use-home <path>", "Browser-use home directory to scan for stale CDP files")
333
- .addHelpText("after", `
334
- Reports browser main-process counts, active browser-pool leases, stale CDP files, dirty/OOM workers, Docker disk pressure, and reaper/timer status.
335
- The command is read-only and never reaps, prunes, stops, or removes resources.
336
-
337
- Next:
338
- $ pibo compute health --json
339
- $ pibo tools browser-use pool reap --json
340
- $ pibo compute reap --dry-run --json
333
+ .addHelpText("after", `
334
+ Reports browser main-process counts, active browser-pool leases, stale CDP files, dirty/OOM workers, Docker disk pressure, and reaper/timer status.
335
+ The command is read-only and never reaps, prunes, stops, or removes resources.
336
+
337
+ Next:
338
+ $ pibo compute health --json
339
+ $ pibo tools browser-use pool reap --json
340
+ $ pibo compute reap --dry-run --json
341
341
  `)
342
342
  .action(async (options) => {
343
343
  const health = await getComputeResourceHealth({ browserPoolRoot: options.browserPoolRoot, browserUseHome: options.browserUseHome });
@@ -352,13 +352,13 @@ Next:
352
352
  .alias("disk")
353
353
  .description("Show read-only Docker disk and build-cache diagnostics")
354
354
  .option("--json", "Print machine-readable disk diagnostics")
355
- .addHelpText("after", `
356
- Reports Docker image, container, local volume, and build-cache usage without pruning anything.
357
- Cleanup suggestions distinguish compute containers, images, build cache, and Git worktrees.
358
-
359
- Next:
360
- $ pibo compute diagnostics --json
361
- $ pibo compute reap --dry-run --json
355
+ .addHelpText("after", `
356
+ Reports Docker image, container, local volume, and build-cache usage without pruning anything.
357
+ Cleanup suggestions distinguish compute containers, images, build cache, and Git worktrees.
358
+
359
+ Next:
360
+ $ pibo compute diagnostics --json
361
+ $ pibo compute reap --dry-run --json
362
362
  `)
363
363
  .action(async (options) => {
364
364
  const diagnostics = await getComputeDiskDiagnostics();
@@ -372,9 +372,9 @@ Next:
372
372
  .command("release")
373
373
  .description("Stop and remove a worker container")
374
374
  .argument("<id>", "Container name or ID")
375
- .addHelpText("after", `
376
- Use the name or id shown by:
377
- $ pibo compute list
375
+ .addHelpText("after", `
376
+ Use the name or id shown by:
377
+ $ pibo compute list
378
378
  `)
379
379
  .action(async (id) => {
380
380
  await releaseWorker(id);
@@ -390,10 +390,10 @@ Use the name or id shown by:
390
390
  .option("--dry-run", "Preview the cleanup plan without removing containers")
391
391
  .option("--apply", "Apply the cleanup plan and remove selected containers")
392
392
  .option("--json", "Print machine-readable cleanup plan/result")
393
- .addHelpText("after", `
394
- Defaults to a dry-run plan for one-time workers. Dev workers require --include-dev.
395
- Stopped, dirty/OOM, and old workers are selected unless disabled by selector flags.
396
- Worktrees are preserved; container cleanup never deletes Git worktrees.
393
+ .addHelpText("after", `
394
+ Defaults to a dry-run plan for one-time workers. Dev workers require --include-dev.
395
+ Stopped, dirty/OOM, and old workers are selected unless disabled by selector flags.
396
+ Worktrees are preserved; container cleanup never deletes Git worktrees.
397
397
  `)
398
398
  .action(async (options) => {
399
399
  const maxAge = Number(options.maxAgeMinutes);
@@ -18,6 +18,7 @@ import { getPiPackageRuntimeOptions } from "../pi-packages/runtime.js";
18
18
  import { getDefaultPiboWorkspace } from "./workspace.js";
19
19
  import { DEFAULT_USER_TIMEZONE } from "./user-settings.js";
20
20
  import { registerMiniMaxProvider } from "../providers/minimax.js";
21
+ import { registerGlmProvider } from "../providers/glm.js";
21
22
  import { PIBO_APP_CONTEXT } from "../app-context.js";
22
23
  import { createRuntimeToolDefinition } from "../tools/runtime/tool.js";
23
24
  import { RuntimeSessionRegistry } from "../tools/runtime/registry.js";
@@ -238,6 +239,7 @@ export async function createPiboRuntime(options = {}) {
238
239
  },
239
240
  });
240
241
  registerMiniMaxProvider(services.modelRegistry);
242
+ registerGlmProvider(services.modelRegistry);
241
243
  const ownsLocalRuntimeRegistry = options.runtimeToolController === undefined && profile.tools.some(isEnabledRuntimeTool);
242
244
  const localRuntimeRegistry = ownsLocalRuntimeRegistry ? new RuntimeSessionRegistry({ cwd: runtimeCwd }) : undefined;
243
245
  const runtimeToolController = options.runtimeToolController
@@ -44,6 +44,7 @@ function profileForSession(baseProfile, piSessionId, parentPiSessionId) {
44
44
  skills: baseProfile.skills,
45
45
  tools: baseProfile.tools,
46
46
  subagents: baseProfile.subagents,
47
+ mcpServers: baseProfile.mcpServers,
47
48
  contextFiles: baseProfile.contextFiles,
48
49
  piPackages: baseProfile.piPackages,
49
50
  builtinTools: baseProfile.builtinTools,
package/dist/cron/cli.js CHANGED
@@ -2,21 +2,21 @@ import { Command } from "commander";
2
2
  import { parseFriendlySchedule } from "./schedule.js";
3
3
  import { createDefaultPiboCronStore } from "./store.js";
4
4
  function printDiscovery() {
5
- console.log(`pibo cron
6
-
7
- Manage scheduled Pibo agent jobs.
8
-
9
- Commands:
10
- status Show scheduler store status
11
- list List cron jobs
12
- add Create a cron job
13
- edit Update a cron job
14
- pause Disable a cron job
15
- resume Enable a cron job and recompute next run
16
- remove Delete a cron job
17
- runs List cron runs
18
-
19
- Next: pibo cron add --help
5
+ console.log(`pibo cron
6
+
7
+ Manage scheduled Pibo agent jobs.
8
+
9
+ Commands:
10
+ status Show scheduler store status
11
+ list List cron jobs
12
+ add Create a cron job
13
+ edit Update a cron job
14
+ pause Disable a cron job
15
+ resume Enable a cron job and recompute next run
16
+ remove Delete a cron job
17
+ runs List cron runs
18
+
19
+ Next: pibo cron add --help
20
20
  pibo cron edit --help`);
21
21
  }
22
22
  function printJson(value) {