@pasko70/pibo 1.4.1 → 1.4.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 (132) 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/apps/vscode-artifacts/{pibo-vscode-ext-1.4.1.vsix → pibo-vscode-ext-1.4.3.vsix} +0 -0
  36. package/dist/bin/pibo.js +0 -0
  37. package/dist/bin/rg.js +0 -0
  38. package/dist/cli.js +35 -35
  39. package/dist/compute/cli.js +54 -54
  40. package/dist/core/runtime.js +2 -0
  41. package/dist/core/session-router.js +1 -0
  42. package/dist/cron/cli.js +15 -15
  43. package/dist/cron/store.js +49 -49
  44. package/dist/data/cli.js +23 -23
  45. package/dist/data/event-log.js +23 -23
  46. package/dist/data/message-store.js +20 -20
  47. package/dist/data/navigation-store.js +9 -9
  48. package/dist/data/observation-store.js +4 -4
  49. package/dist/data/payload-store.js +17 -17
  50. package/dist/data/schema.js +429 -429
  51. package/dist/data/session-store.js +4 -4
  52. package/dist/data/telemetry-queries.js +54 -54
  53. package/dist/data/telemetry.js +156 -156
  54. package/dist/debug/events.js +12 -12
  55. package/dist/debug/failures.js +6 -6
  56. package/dist/debug/index.js +207 -207
  57. package/dist/debug/messages.js +6 -6
  58. package/dist/debug/pty.js +124 -124
  59. package/dist/debug/session.js +29 -29
  60. package/dist/debug/tools.js +5 -5
  61. package/dist/debug/web-snapshot-browser-scripts.js +294 -294
  62. package/dist/debug/web-streaming-browser-library.js +925 -925
  63. package/dist/debug/web-streaming-browser-scripts.js +232 -232
  64. package/dist/debug/web-streaming-provider-telemetry.js +4 -4
  65. package/dist/debug/web.js +93 -93
  66. package/dist/gateway/cli.js +19 -19
  67. package/dist/mcp/config-command.js +53 -53
  68. package/dist/mcp/errors.js +1 -1
  69. package/dist/mcp/index.js +21 -21
  70. package/dist/mcp/output.js +47 -7
  71. package/dist/mcp/registry.js +11 -11
  72. package/dist/pi-packages/cli.js +11 -11
  73. package/dist/plugins/context-files-store.js +110 -110
  74. package/dist/plugins/context-files.js +4 -4
  75. package/dist/providers/glm.js +59 -0
  76. package/dist/ralph/cli.js +18 -18
  77. package/dist/ralph/templates.js +140 -140
  78. package/dist/reliability/store.js +226 -226
  79. package/dist/sessions/pibo-data-store.js +16 -16
  80. package/dist/sessions/sqlite-store.js +53 -53
  81. package/dist/setup/cli.js +58 -58
  82. package/dist/tools/agent-browser-wrapper.js +80 -80
  83. package/dist/tools/browser-use-cdp.js +12 -12
  84. package/dist/tools/browser-use-wrapper.js +762 -762
  85. package/dist/tools/guides.js +455 -455
  86. package/dist/tools/index.js +99 -99
  87. package/dist/tools/runtime/node-worker-source.js +205 -205
  88. package/dist/tools/runtime/python-worker-source.js +177 -177
  89. package/dist/vscode/cli.js +9 -9
  90. package/dist/web-annotations/cdp.js +900 -900
  91. package/dist/web-annotations/store.js +96 -96
  92. package/docs/README.md +23 -23
  93. package/docs/ops/install-developer-host.md +112 -112
  94. package/docs/ops/install-user-host.md +96 -96
  95. package/docs/ops/upgrade-user-to-developer-host.md +69 -69
  96. package/docs/ops/vscode-extension-release.md +160 -160
  97. package/package.json +93 -93
  98. package/skills/builtin/pi-agent-harness/SKILL.md +319 -319
  99. package/skills/builtin/pi-agent-harness/agents/openai.yaml +4 -4
  100. package/skills/builtin/pibo-docker-system/SKILL.md +170 -170
  101. package/skills/builtin/pibo-spec-writing/SKILL.md +330 -330
  102. package/skills/builtin/prd/SKILL.md +143 -143
  103. package/skills/builtin/ralph-loop/SKILL.md +359 -359
  104. package/skills/builtin/ralph-prd-json/SKILL.md +123 -123
  105. package/skills/builtin/skill-creator/LICENSE.txt +201 -201
  106. package/skills/builtin/skill-creator/SKILL.md +513 -513
  107. package/skills/builtin/skill-creator/agents/analyzer.md +274 -274
  108. package/skills/builtin/skill-creator/agents/comparator.md +202 -202
  109. package/skills/builtin/skill-creator/agents/grader.md +223 -223
  110. package/skills/builtin/skill-creator/assets/eval_review.html +146 -146
  111. package/skills/builtin/skill-creator/eval-viewer/generate_review.py +471 -471
  112. package/skills/builtin/skill-creator/eval-viewer/viewer.html +1325 -1325
  113. package/skills/builtin/skill-creator/references/schemas.md +430 -430
  114. package/skills/builtin/skill-creator/scripts/aggregate_benchmark.py +401 -401
  115. package/skills/builtin/skill-creator/scripts/generate_report.py +326 -326
  116. package/skills/builtin/skill-creator/scripts/improve_description.py +247 -247
  117. package/skills/builtin/skill-creator/scripts/package_skill.py +136 -136
  118. package/skills/builtin/skill-creator/scripts/quick_validate.py +102 -102
  119. package/skills/builtin/skill-creator/scripts/run_eval.py +310 -310
  120. package/skills/builtin/skill-creator/scripts/run_loop.py +328 -328
  121. package/skills/builtin/skill-creator/scripts/utils.py +47 -47
  122. package/skills/builtin/web-annotations/SKILL.md +93 -93
  123. package/src/mcp/LICENSE.mcp-cli +21 -21
  124. package/dist/apps/vscode-artifacts/pibo-vscode-1.3.0.vsix +0 -0
  125. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.3.vsix +0 -0
  126. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.4.vsix +0 -0
  127. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.5.vsix +0 -0
  128. package/dist/core/shared-app.js +0 -17
  129. package/dist/data/final-app-space-cutover-migration.js +0 -728
  130. package/dist/data/shared-app-migration.js +0 -757
  131. package/dist/session-ui/ownerViewModel.js +0 -27
  132. package/dist/shared-app.js +0 -4
@@ -1,178 +1,178 @@
1
- export const PYTHON_RUNTIME_WORKER_SOURCE = String.raw `
2
- import contextlib
3
- import inspect
4
- import io
5
- import json
6
- import signal
7
- import sys
8
- import traceback
9
-
10
- user_globals = {"__name__": "__pibo_runtime__"}
11
-
12
-
13
- def bounded(value, max_bytes=8192):
14
- text = str(value)
15
- encoded = text.encode("utf-8", "replace")
16
- if len(encoded) <= max_bytes:
17
- return text
18
- return encoded[:max_bytes].decode("utf-8", "replace") + "\n...<truncated>"
19
-
20
-
21
- def safe_repr(value, max_bytes=4096):
22
- try:
23
- return bounded(repr(value), max_bytes)
24
- except Exception as exc:
25
- return f"<repr failed: {type(exc).__name__}: {exc}>"
26
-
27
-
28
- def summarize(value, max_bytes=4096):
29
- result = {"type": type(value).__name__, "repr": safe_repr(value, max_bytes)}
30
- try:
31
- if hasattr(value, "shape"):
32
- shape = getattr(value, "shape")
33
- try:
34
- result["shape"] = list(shape)
35
- except Exception:
36
- pass
37
- if hasattr(value, "columns"):
38
- try:
39
- result["columns"] = [str(c) for c in list(getattr(value, "columns"))[:50]]
40
- except Exception:
41
- pass
42
- if isinstance(value, dict):
43
- result["length"] = len(value)
44
- result["keys"] = [safe_repr(k, 128) for k in list(value.keys())[:50]]
45
- elif isinstance(value, (list, tuple, set, frozenset, str, bytes, bytearray)):
46
- result["length"] = len(value)
47
- if hasattr(value, "head"):
48
- try:
49
- result["preview"] = bounded(value.head().to_string(), max_bytes)
50
- except Exception:
51
- pass
52
- except Exception:
53
- pass
54
- return result
55
-
56
-
57
- def error_summary(exc):
58
- tb = traceback.format_exc()
59
- line = None
60
- try:
61
- extracted = traceback.extract_tb(exc.__traceback__)
62
- runtime_frames = [frame for frame in extracted if frame.filename == "<pibo-runtime>"]
63
- if runtime_frames:
64
- line = runtime_frames[-1].lineno
65
- except Exception:
66
- pass
67
- out = {"name": type(exc).__name__, "message": str(exc), "traceback": tb}
68
- if line is not None:
69
- out["line"] = line
70
- return out
71
-
72
-
73
- def execute(req):
74
- mode = req.get("mode") or "exec"
75
- code = req.get("code") or ""
76
- if mode == "auto":
77
- mode = "exec"
78
- stdout = io.StringIO()
79
- stderr = io.StringIO()
80
- try:
81
- with contextlib.redirect_stdout(stdout), contextlib.redirect_stderr(stderr):
82
- if mode == "eval":
83
- value = eval(compile(code, "<pibo-runtime>", "eval"), user_globals, user_globals)
84
- else:
85
- exec(compile(code, "<pibo-runtime>", "exec"), user_globals, user_globals)
86
- value = None
87
- return {
88
- "id": req.get("id"),
89
- "status": "ok",
90
- "stdout": stdout.getvalue(),
91
- "stderr": stderr.getvalue(),
92
- "result": summarize(value) if value is not None else None,
93
- }
94
- except KeyboardInterrupt as exc:
95
- return {"id": req.get("id"), "status": "interrupted", "stdout": stdout.getvalue(), "stderr": stderr.getvalue(), "error": error_summary(exc)}
96
- except Exception as exc:
97
- return {"id": req.get("id"), "status": "error", "stdout": stdout.getvalue(), "stderr": stderr.getvalue(), "error": error_summary(exc)}
98
-
99
-
100
- def inspect_value(req):
101
- expression = req.get("expression") or ""
102
- what = req.get("what") or "summary"
103
- max_bytes = int(req.get("maxBytes") or 8192)
104
- try:
105
- value = eval(compile(expression, "<pibo-runtime>", "eval"), user_globals, user_globals)
106
- result = {"id": req.get("id"), "status": "ok"}
107
- if what in ("summary", "all"):
108
- result["summary"] = summarize(value, max_bytes)
109
- if what in ("signature", "all"):
110
- try:
111
- result["signature"] = bounded(str(inspect.signature(value)), max_bytes)
112
- except Exception as exc:
113
- result["signature"] = f"<signature unavailable: {type(exc).__name__}: {exc}>"
114
- if what in ("members", "all"):
115
- try:
116
- result["members"] = [name for name, _ in inspect.getmembers(value)[:200]]
117
- except Exception:
118
- result["members"] = dir(value)[:200]
119
- if what in ("source", "all"):
120
- try:
121
- result["source"] = bounded(inspect.getsource(value), max_bytes)
122
- except Exception as exc:
123
- result["source"] = f"<source unavailable: {type(exc).__name__}: {exc}>"
124
- if what in ("doc", "all"):
125
- result["doc"] = bounded(inspect.getdoc(value) or "", max_bytes)
126
- return result
127
- except Exception as exc:
128
- return {"id": req.get("id"), "status": "error", "error": error_summary(exc)}
129
-
130
-
131
- def list_vars(req):
132
- include_private = bool(req.get("includePrivate"))
133
- max_items = int(req.get("maxItems") or 100)
134
- max_bytes = int(req.get("maxBytes") or 4096)
135
- variables = []
136
- for name, value in sorted(user_globals.items()):
137
- if name == "__builtins__":
138
- continue
139
- if not include_private and name.startswith("_"):
140
- continue
141
- if inspect.ismodule(value):
142
- continue
143
- variables.append({"name": name, "summary": summarize(value, max_bytes)})
144
- if len(variables) >= max_items:
145
- break
146
- return {"id": req.get("id"), "status": "ok", "variables": variables, "truncated": len(variables) >= max_items}
147
-
148
-
149
- def write_response(resp):
150
- sys.stdout.write(json.dumps(resp, ensure_ascii=False) + "\n")
151
- sys.stdout.flush()
152
-
153
-
154
- def main():
155
- write_response({"id": "ready", "status": "ready"})
156
- for line in sys.stdin:
157
- try:
158
- req = json.loads(line)
159
- typ = req.get("type")
160
- if typ == "exec":
161
- resp = execute(req)
162
- elif typ == "inspect":
163
- resp = inspect_value(req)
164
- elif typ == "vars":
165
- resp = list_vars(req)
166
- elif typ == "shutdown":
167
- write_response({"id": req.get("id"), "status": "ok"})
168
- return
169
- else:
170
- resp = {"id": req.get("id"), "status": "error", "error": {"name": "RuntimeProtocolError", "message": f"unknown request type {typ}"}}
171
- except Exception as exc:
172
- resp = {"id": None, "status": "error", "error": error_summary(exc)}
173
- write_response(resp)
174
-
175
-
176
- if __name__ == "__main__":
177
- main()
1
+ export const PYTHON_RUNTIME_WORKER_SOURCE = String.raw `
2
+ import contextlib
3
+ import inspect
4
+ import io
5
+ import json
6
+ import signal
7
+ import sys
8
+ import traceback
9
+
10
+ user_globals = {"__name__": "__pibo_runtime__"}
11
+
12
+
13
+ def bounded(value, max_bytes=8192):
14
+ text = str(value)
15
+ encoded = text.encode("utf-8", "replace")
16
+ if len(encoded) <= max_bytes:
17
+ return text
18
+ return encoded[:max_bytes].decode("utf-8", "replace") + "\n...<truncated>"
19
+
20
+
21
+ def safe_repr(value, max_bytes=4096):
22
+ try:
23
+ return bounded(repr(value), max_bytes)
24
+ except Exception as exc:
25
+ return f"<repr failed: {type(exc).__name__}: {exc}>"
26
+
27
+
28
+ def summarize(value, max_bytes=4096):
29
+ result = {"type": type(value).__name__, "repr": safe_repr(value, max_bytes)}
30
+ try:
31
+ if hasattr(value, "shape"):
32
+ shape = getattr(value, "shape")
33
+ try:
34
+ result["shape"] = list(shape)
35
+ except Exception:
36
+ pass
37
+ if hasattr(value, "columns"):
38
+ try:
39
+ result["columns"] = [str(c) for c in list(getattr(value, "columns"))[:50]]
40
+ except Exception:
41
+ pass
42
+ if isinstance(value, dict):
43
+ result["length"] = len(value)
44
+ result["keys"] = [safe_repr(k, 128) for k in list(value.keys())[:50]]
45
+ elif isinstance(value, (list, tuple, set, frozenset, str, bytes, bytearray)):
46
+ result["length"] = len(value)
47
+ if hasattr(value, "head"):
48
+ try:
49
+ result["preview"] = bounded(value.head().to_string(), max_bytes)
50
+ except Exception:
51
+ pass
52
+ except Exception:
53
+ pass
54
+ return result
55
+
56
+
57
+ def error_summary(exc):
58
+ tb = traceback.format_exc()
59
+ line = None
60
+ try:
61
+ extracted = traceback.extract_tb(exc.__traceback__)
62
+ runtime_frames = [frame for frame in extracted if frame.filename == "<pibo-runtime>"]
63
+ if runtime_frames:
64
+ line = runtime_frames[-1].lineno
65
+ except Exception:
66
+ pass
67
+ out = {"name": type(exc).__name__, "message": str(exc), "traceback": tb}
68
+ if line is not None:
69
+ out["line"] = line
70
+ return out
71
+
72
+
73
+ def execute(req):
74
+ mode = req.get("mode") or "exec"
75
+ code = req.get("code") or ""
76
+ if mode == "auto":
77
+ mode = "exec"
78
+ stdout = io.StringIO()
79
+ stderr = io.StringIO()
80
+ try:
81
+ with contextlib.redirect_stdout(stdout), contextlib.redirect_stderr(stderr):
82
+ if mode == "eval":
83
+ value = eval(compile(code, "<pibo-runtime>", "eval"), user_globals, user_globals)
84
+ else:
85
+ exec(compile(code, "<pibo-runtime>", "exec"), user_globals, user_globals)
86
+ value = None
87
+ return {
88
+ "id": req.get("id"),
89
+ "status": "ok",
90
+ "stdout": stdout.getvalue(),
91
+ "stderr": stderr.getvalue(),
92
+ "result": summarize(value) if value is not None else None,
93
+ }
94
+ except KeyboardInterrupt as exc:
95
+ return {"id": req.get("id"), "status": "interrupted", "stdout": stdout.getvalue(), "stderr": stderr.getvalue(), "error": error_summary(exc)}
96
+ except Exception as exc:
97
+ return {"id": req.get("id"), "status": "error", "stdout": stdout.getvalue(), "stderr": stderr.getvalue(), "error": error_summary(exc)}
98
+
99
+
100
+ def inspect_value(req):
101
+ expression = req.get("expression") or ""
102
+ what = req.get("what") or "summary"
103
+ max_bytes = int(req.get("maxBytes") or 8192)
104
+ try:
105
+ value = eval(compile(expression, "<pibo-runtime>", "eval"), user_globals, user_globals)
106
+ result = {"id": req.get("id"), "status": "ok"}
107
+ if what in ("summary", "all"):
108
+ result["summary"] = summarize(value, max_bytes)
109
+ if what in ("signature", "all"):
110
+ try:
111
+ result["signature"] = bounded(str(inspect.signature(value)), max_bytes)
112
+ except Exception as exc:
113
+ result["signature"] = f"<signature unavailable: {type(exc).__name__}: {exc}>"
114
+ if what in ("members", "all"):
115
+ try:
116
+ result["members"] = [name for name, _ in inspect.getmembers(value)[:200]]
117
+ except Exception:
118
+ result["members"] = dir(value)[:200]
119
+ if what in ("source", "all"):
120
+ try:
121
+ result["source"] = bounded(inspect.getsource(value), max_bytes)
122
+ except Exception as exc:
123
+ result["source"] = f"<source unavailable: {type(exc).__name__}: {exc}>"
124
+ if what in ("doc", "all"):
125
+ result["doc"] = bounded(inspect.getdoc(value) or "", max_bytes)
126
+ return result
127
+ except Exception as exc:
128
+ return {"id": req.get("id"), "status": "error", "error": error_summary(exc)}
129
+
130
+
131
+ def list_vars(req):
132
+ include_private = bool(req.get("includePrivate"))
133
+ max_items = int(req.get("maxItems") or 100)
134
+ max_bytes = int(req.get("maxBytes") or 4096)
135
+ variables = []
136
+ for name, value in sorted(user_globals.items()):
137
+ if name == "__builtins__":
138
+ continue
139
+ if not include_private and name.startswith("_"):
140
+ continue
141
+ if inspect.ismodule(value):
142
+ continue
143
+ variables.append({"name": name, "summary": summarize(value, max_bytes)})
144
+ if len(variables) >= max_items:
145
+ break
146
+ return {"id": req.get("id"), "status": "ok", "variables": variables, "truncated": len(variables) >= max_items}
147
+
148
+
149
+ def write_response(resp):
150
+ sys.stdout.write(json.dumps(resp, ensure_ascii=False) + "\n")
151
+ sys.stdout.flush()
152
+
153
+
154
+ def main():
155
+ write_response({"id": "ready", "status": "ready"})
156
+ for line in sys.stdin:
157
+ try:
158
+ req = json.loads(line)
159
+ typ = req.get("type")
160
+ if typ == "exec":
161
+ resp = execute(req)
162
+ elif typ == "inspect":
163
+ resp = inspect_value(req)
164
+ elif typ == "vars":
165
+ resp = list_vars(req)
166
+ elif typ == "shutdown":
167
+ write_response({"id": req.get("id"), "status": "ok"})
168
+ return
169
+ else:
170
+ resp = {"id": req.get("id"), "status": "error", "error": {"name": "RuntimeProtocolError", "message": f"unknown request type {typ}"}}
171
+ except Exception as exc:
172
+ resp = {"id": None, "status": "error", "error": error_summary(exc)}
173
+ write_response(resp)
174
+
175
+
176
+ if __name__ == "__main__":
177
+ main()
178
178
  `;
@@ -11,15 +11,15 @@ import { runInstall } from "./install.js";
11
11
  import { runStatus, formatStatusText } from "./status.js";
12
12
  import { runUninstall } from "./uninstall.js";
13
13
  function printDiscovery() {
14
- console.log(`pibo vscode
15
-
16
- Manage the Pibo VS Code extension.
17
-
18
- Commands:
19
- install Download and install the latest Pibo VS Code extension
20
- uninstall Remove the installed Pibo VS Code extension
21
- status Show whether the extension is installed
22
-
14
+ console.log(`pibo vscode
15
+
16
+ Manage the Pibo VS Code extension.
17
+
18
+ Commands:
19
+ install Download and install the latest Pibo VS Code extension
20
+ uninstall Remove the installed Pibo VS Code extension
21
+ status Show whether the extension is installed
22
+
23
23
  Next: pibo vscode install --help`);
24
24
  }
25
25
  export async function runVscodeCli(argv = process.argv) {