@cydm/pie 2.1.0 → 2.1.1

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 (37) hide show
  1. package/README.md +6 -3
  2. package/dist/builtin/extensions/ask-user/index.js +1 -1
  3. package/dist/builtin/extensions/computer-use/index.js +3993 -107
  4. package/dist/builtin/extensions/plan-mode/index.js +1 -1
  5. package/dist/builtin/extensions/subagent/index.js +2 -2
  6. package/dist/builtin/extensions/todo/index.js +1 -1
  7. package/dist/builtin/skills/chrome-devtools-axi/LICENSE +21 -0
  8. package/dist/builtin/skills/chrome-devtools-axi/SKILL.md +20 -1
  9. package/dist/builtin/skills/chrome-devtools-axi/chrome-devtools-axi-bridge.js +20034 -0
  10. package/dist/builtin/skills/chrome-devtools-axi/chrome-devtools-axi-cli.js +8 -2
  11. package/dist/builtin/skills/chrome-devtools-axi/chrome-devtools-axi-runtime.js +26 -0
  12. package/dist/builtin/skills/chrome-devtools-axi/chunk-42SGITKJ.js +11 -0
  13. package/dist/builtin/skills/chrome-devtools-axi/chunk-OJ6N23UZ.js +47 -0
  14. package/dist/builtin/skills/chrome-devtools-axi/chunk-UPATXALW.js +215 -0
  15. package/dist/builtin/skills/chrome-devtools-axi/cli-F2VCSVL4.js +4424 -0
  16. package/dist/builtin/skills/skill-creator/SKILL.md +5 -2
  17. package/dist/builtin/skills/skill-creator/eval-viewer/generate_review.mjs +7 -20
  18. package/dist/builtin/skills/skill-creator/eval-viewer/viewer.html +15 -15
  19. package/dist/builtin/skills/skill-creator/scripts/aggregate_benchmark.mjs +20 -19
  20. package/dist/builtin/skills/skill-creator/scripts/generate_report.mjs +3 -3
  21. package/dist/builtin/skills/skill-creator/scripts/improve_description.mjs +12 -8
  22. package/dist/builtin/skills/skill-creator/scripts/package_skill.mjs +1 -0
  23. package/dist/builtin/skills/skill-creator/scripts/pie_runner.mjs +77 -31
  24. package/dist/builtin/skills/skill-creator/scripts/run_eval.mjs +38 -11
  25. package/dist/builtin/skills/skill-creator/scripts/run_loop.mjs +12 -6
  26. package/dist/builtin/skills/skill-creator/scripts/skill_metadata.mjs +12 -1
  27. package/dist/builtin/skills/tui-use/LICENSE +21 -0
  28. package/dist/builtin/skills/tui-use/README.md +13 -3
  29. package/dist/builtin/skills/tui-use/SKILL.md +87 -39
  30. package/dist/builtin/skills/tui-use/tui-use-cli.cjs +10608 -0
  31. package/dist/builtin/skills/tui-use/tui-use-cli.js +39 -0
  32. package/dist/builtin/skills/tui-use/tui-use-daemon.cjs +7916 -0
  33. package/dist/chunks/{chunk-PMPD56N2.js → chunk-LU7RKALH.js} +82 -24
  34. package/dist/chunks/{chunk-G2POWIA5.js → chunk-TJ2F4FL5.js} +64 -16
  35. package/dist/cli.js +7503 -87
  36. package/package.json +26 -18
  37. package/scripts/repair-node-pty.mjs +45 -0
@@ -13,8 +13,14 @@ export function resolveChromeDevtoolsAxiCli() {
13
13
  // package and node module resolution cannot reach Pie's dependencies).
14
14
  const override = process.env.CHROME_DEVTOOLS_AXI_CLI_PATH?.trim();
15
15
  if (override) return override;
16
- const packageJson = require.resolve("chrome-devtools-axi/package.json");
17
- return path.join(path.dirname(packageJson), "dist", "bin", "chrome-devtools-axi.js");
16
+ const here = path.dirname(fileURLToPath(import.meta.url));
17
+ for (const candidate of [
18
+ path.join(here, "chrome-devtools-axi-runtime.js"),
19
+ path.resolve(here, "../../../dist/builtin/skills/chrome-devtools-axi/chrome-devtools-axi-runtime.js"),
20
+ ]) {
21
+ if (fs.existsSync(candidate)) return candidate;
22
+ }
23
+ throw new Error("Pie's AXI runtime is missing. Rebuild or reinstall Pie.");
18
24
  }
19
25
 
20
26
  /**
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __axiRequire } from "node:module"; const require = __axiRequire(import.meta.url);
3
+ import {
4
+ VERSION
5
+ } from "./chunk-42SGITKJ.js";
6
+ import "./chunk-OJ6N23UZ.js";
7
+
8
+ // ../../node_modules/axi-sdk-js/dist/fast-path.js
9
+ function tryFastPath(argv, options) {
10
+ if (argv.length !== 1) {
11
+ return false;
12
+ }
13
+ const flag = argv[0];
14
+ if (flag !== "-v" && flag !== "-V" && flag !== "--version") {
15
+ return false;
16
+ }
17
+ (options.stdout ?? process.stdout).write(`${options.version}
18
+ `);
19
+ return true;
20
+ }
21
+
22
+ // vendor/chrome-devtools-axi/bin/chrome-devtools-axi.ts
23
+ if (!tryFastPath(process.argv.slice(2), { version: VERSION })) {
24
+ const { main } = await import("./cli-F2VCSVL4.js");
25
+ await main(process.argv.slice(2));
26
+ }
@@ -0,0 +1,11 @@
1
+ import { createRequire as __axiRequire } from "node:module"; const require = __axiRequire(import.meta.url);
2
+
3
+ // vendor/chrome-devtools-axi/package.json
4
+ var version = "0.1.35-pie.1";
5
+
6
+ // vendor/chrome-devtools-axi/src/version.ts
7
+ var VERSION = version;
8
+
9
+ export {
10
+ VERSION
11
+ };
@@ -0,0 +1,47 @@
1
+ import { createRequire as __axiRequire } from "node:module"; const require = __axiRequire(import.meta.url);
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
9
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
10
+ }) : x)(function(x) {
11
+ if (typeof require !== "undefined") return require.apply(this, arguments);
12
+ throw Error('Dynamic require of "' + x + '" is not supported');
13
+ });
14
+ var __commonJS = (cb, mod) => function __require2() {
15
+ try {
16
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
17
+ } catch (e) {
18
+ throw mod = 0, e;
19
+ }
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ // If the importer is in node compatibility mode or this is not an ESM
35
+ // file that has been converted to a CommonJS file using a Babel-
36
+ // compatible transform (i.e. "__esModule" has not been set), then set
37
+ // "default" to the CommonJS "module.exports" for node compatibility.
38
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
39
+ mod
40
+ ));
41
+
42
+ export {
43
+ __require,
44
+ __commonJS,
45
+ __export,
46
+ __toESM
47
+ };
@@ -0,0 +1,215 @@
1
+ import { createRequire as __axiRequire } from "node:module"; const require = __axiRequire(import.meta.url);
2
+
3
+ // vendor/chrome-devtools-axi/src/selected-page.ts
4
+ import {
5
+ existsSync,
6
+ mkdirSync,
7
+ readFileSync,
8
+ unlinkSync,
9
+ writeFileSync
10
+ } from "node:fs";
11
+ import { dirname, join as join2 } from "node:path";
12
+
13
+ // vendor/chrome-devtools-axi/src/sessions.ts
14
+ import { join } from "node:path";
15
+ import { homedir } from "node:os";
16
+ var DEFAULT_SESSION_NAME = "default";
17
+ var DEFAULT_BASE_PORT = 9224;
18
+ var SESSION_PORT_RANGE = 1e3;
19
+ var STATE_DIR_NAME = ".chrome-devtools-axi";
20
+ function resolveSessionName() {
21
+ const raw = process.env.CHROME_DEVTOOLS_AXI_SESSION?.trim();
22
+ const name = raw && raw.length > 0 ? raw : DEFAULT_SESSION_NAME;
23
+ validateSessionName(name);
24
+ return name;
25
+ }
26
+ function validateSessionName(name) {
27
+ if (name === DEFAULT_SESSION_NAME) return;
28
+ if (!/^[A-Za-z0-9._-]{1,64}$/.test(name)) {
29
+ throw new Error(
30
+ `Invalid CHROME_DEVTOOLS_AXI_SESSION "${name}": use 1-64 chars from [A-Za-z0-9._-]`
31
+ );
32
+ }
33
+ if (/^\.+$/.test(name)) {
34
+ throw new Error(
35
+ `Invalid CHROME_DEVTOOLS_AXI_SESSION "${name}": a name made only of dots would collapse onto the default session's state directory`
36
+ );
37
+ }
38
+ }
39
+ function defaultPortForSession(name) {
40
+ if (name === DEFAULT_SESSION_NAME) return DEFAULT_BASE_PORT;
41
+ let hash = 2166136261;
42
+ for (let i = 0; i < name.length; i++) {
43
+ hash ^= name.charCodeAt(i);
44
+ hash = Math.imul(hash, 16777619);
45
+ }
46
+ return DEFAULT_BASE_PORT + Math.abs(hash) % SESSION_PORT_RANGE + 1;
47
+ }
48
+ function resolveSessionPort(name = resolveSessionName()) {
49
+ const explicit = process.env.CHROME_DEVTOOLS_AXI_PORT;
50
+ if (explicit) {
51
+ const parsed = Number.parseInt(explicit, 10);
52
+ if (!Number.isNaN(parsed) && parsed > 0) return parsed;
53
+ }
54
+ return defaultPortForSession(name);
55
+ }
56
+ function resolveSessionStateDir(name = resolveSessionName()) {
57
+ const base = join(homedir(), STATE_DIR_NAME);
58
+ return name === DEFAULT_SESSION_NAME ? base : join(base, "sessions", name);
59
+ }
60
+ function resolveSessionPidFile(name = resolveSessionName()) {
61
+ return join(resolveSessionStateDir(name), "bridge.pid");
62
+ }
63
+
64
+ // vendor/chrome-devtools-axi/src/selected-page.ts
65
+ function selectedPageFile() {
66
+ return join2(resolveSessionStateDir(), "selected-page-id");
67
+ }
68
+ function getSelectedPageId() {
69
+ const file = selectedPageFile();
70
+ try {
71
+ if (!existsSync(file)) return null;
72
+ const parsed = Number.parseInt(readFileSync(file, "utf-8").trim(), 10);
73
+ return Number.isInteger(parsed) && parsed >= 0 ? parsed : null;
74
+ } catch {
75
+ return null;
76
+ }
77
+ }
78
+ function setSelectedPageId(pageId) {
79
+ const file = selectedPageFile();
80
+ try {
81
+ mkdirSync(dirname(file), { recursive: true });
82
+ writeFileSync(file, String(pageId));
83
+ } catch {
84
+ }
85
+ }
86
+ function clearSelectedPageId() {
87
+ const hadSelection = getSelectedPageId() !== null;
88
+ const file = selectedPageFile();
89
+ try {
90
+ if (existsSync(file)) unlinkSync(file);
91
+ } catch {
92
+ }
93
+ return hadSelection && getSelectedPageId() === null;
94
+ }
95
+ function overlaySessionSelected(pages, selectedId = getSelectedPageId()) {
96
+ return pages.map((page) => ({
97
+ ...page,
98
+ selected: selectedId !== null && page.id === selectedId
99
+ }));
100
+ }
101
+ function rememberToolRouting(name, args, result) {
102
+ if (name === "select_page" && typeof args.pageId === "number") {
103
+ setSelectedPageId(args.pageId);
104
+ return;
105
+ }
106
+ if (name === "new_page") {
107
+ const requested = typeof args.url === "string" ? args.url : "";
108
+ const created = createdPageIdFromNewPageDump(result, requested);
109
+ if (created !== null) setSelectedPageId(created);
110
+ else clearSelectedPageId();
111
+ return;
112
+ }
113
+ if (name === "close_page" && typeof args.pageId === "number") {
114
+ if (getSelectedPageId() === args.pageId) clearSelectedPageId();
115
+ }
116
+ }
117
+ var MCP_PAGES_HEADER = /^## Pages$/;
118
+ var MCP_OTHER_SECTION = /^##\s+(Extension Pages|Extension Service Workers|Third-party developer tools|WebMCP tools)$/;
119
+ var GENERIC_SCHEME_SLASH_URL = /^[a-z][a-z0-9+.-]*:\/\//i;
120
+ var COLON_ONLY_SCHEME_URL = /^(?:about:|data:|view-source:|blob:)/i;
121
+ var PAGE_ID_LINE = /^(\d+):\s*(.*)$/;
122
+ function isSchemeUrl(label) {
123
+ return GENERIC_SCHEME_SLASH_URL.test(label) || COLON_ONLY_SCHEME_URL.test(label);
124
+ }
125
+ function stripMcpSuffixes(rest) {
126
+ let label = rest.replace(/\s+isolatedContext=.*$/, "");
127
+ label = label.replace(/\s*\[selected\]\s*$/, "").trimEnd();
128
+ return label;
129
+ }
130
+ function isCompletePageLabel(rest) {
131
+ const body = stripMcpSuffixes(rest);
132
+ if (isSchemeUrl(body)) return true;
133
+ if (!body.endsWith(")")) return false;
134
+ const open = body.lastIndexOf(" (");
135
+ if (open === -1) return false;
136
+ return isSchemeUrl(body.slice(open + 2, -1));
137
+ }
138
+ function pageUrlFromLabel(rest) {
139
+ const body = stripMcpSuffixes(rest);
140
+ if (isSchemeUrl(body)) return body;
141
+ const open = body.lastIndexOf(" (");
142
+ if (open !== -1 && body.endsWith(")")) {
143
+ return body.slice(open + 2, -1);
144
+ }
145
+ return body;
146
+ }
147
+ function urlsMatch(pageUrl, requested) {
148
+ if (!requested) return false;
149
+ if (pageUrl === requested) return true;
150
+ const trimSlash = (url) => url.length > 1 && url.endsWith("/") ? url.slice(0, -1) : url;
151
+ return trimSlash(pageUrl) === trimSlash(requested);
152
+ }
153
+ function createdPageIdFromNewPageDump(text, requestedUrl) {
154
+ let inPages = false;
155
+ let matchedIds = [];
156
+ let incomplete = false;
157
+ for (const raw of text.split(/\r?\n/)) {
158
+ const line = raw.trim();
159
+ if (MCP_PAGES_HEADER.test(line)) {
160
+ inPages = true;
161
+ matchedIds = [];
162
+ incomplete = false;
163
+ continue;
164
+ }
165
+ if (MCP_OTHER_SECTION.test(line)) {
166
+ inPages = false;
167
+ continue;
168
+ }
169
+ if (!inPages) continue;
170
+ const m = line.match(PAGE_ID_LINE);
171
+ if (!m) continue;
172
+ const id = Number.parseInt(m[1], 10);
173
+ const rest = m[2];
174
+ if (!isCompletePageLabel(rest)) {
175
+ incomplete = true;
176
+ continue;
177
+ }
178
+ const pageUrl = pageUrlFromLabel(rest);
179
+ if (pageUrl.startsWith("chrome-extension:")) continue;
180
+ if (urlsMatch(pageUrl, requestedUrl)) matchedIds.push(id);
181
+ }
182
+ if (incomplete) return null;
183
+ if (matchedIds.length !== 1) return null;
184
+ return matchedIds[0];
185
+ }
186
+
187
+ // vendor/chrome-devtools-axi/src/bridge-script.ts
188
+ import { existsSync as existsSync2 } from "node:fs";
189
+ import { resolve } from "node:path";
190
+ function resolveBridgeScript(importMetaDir) {
191
+ const bundled = resolve(importMetaDir, "chrome-devtools-axi-bridge.js");
192
+ if (existsSync2(bundled)) return bundled;
193
+ const builtScript = resolve(
194
+ importMetaDir,
195
+ "../bin/chrome-devtools-axi-bridge.js"
196
+ );
197
+ const sourceScript = builtScript.replace(/\.js$/, ".ts");
198
+ return existsSync2(sourceScript) ? sourceScript : builtScript;
199
+ }
200
+ var BRIDGE_PORT_IN_USE_EXIT_CODE = 48;
201
+ var PAGE_IDENTITY_CHANGED_ERROR = "The browser reconnected and every page id changed, so this call did not target the page you selected";
202
+
203
+ export {
204
+ resolveBridgeScript,
205
+ BRIDGE_PORT_IN_USE_EXIT_CODE,
206
+ PAGE_IDENTITY_CHANGED_ERROR,
207
+ resolveSessionName,
208
+ resolveSessionPort,
209
+ resolveSessionStateDir,
210
+ resolveSessionPidFile,
211
+ getSelectedPageId,
212
+ clearSelectedPageId,
213
+ overlaySessionSelected,
214
+ rememberToolRouting
215
+ };