pi-fabric 0.90.1 → 0.91.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.
@@ -0,0 +1,91 @@
1
+ // src/runtime/monty-values.ts
2
+ var MAX_VALUE_BYTES = 16 * 1024 * 1024;
3
+ function normalizeMontyValue(value, hostValue = false) {
4
+ let remaining = MAX_VALUE_BYTES;
5
+ let nodes = 0;
6
+ const active = /* @__PURE__ */ new Set();
7
+ const visit = (item, depth) => {
8
+ if (++nodes > 1e5 || depth > 48) throw new TypeError("Monty JSON value exceeds the node/depth limit");
9
+ if (typeof item === "string") remaining -= Buffer.byteLength(item, "utf8");
10
+ else remaining -= 8;
11
+ if (remaining < 0) throw new TypeError("Monty JSON value exceeds 16 MiB");
12
+ if (item === null || typeof item === "string" || typeof item === "boolean") return item;
13
+ if (typeof item === "number" && Number.isFinite(item) && (!Number.isInteger(item) || Number.isSafeInteger(item))) return item;
14
+ if (typeof item !== "object" || item === null) throw new TypeError("Monty boundary requires JSON-compatible values (finite numbers and safe integers)");
15
+ if (active.has(item)) throw new TypeError("Monty boundary cannot serialize cyclic values");
16
+ active.add(item);
17
+ try {
18
+ if (Array.isArray(item)) return Array.from(item, (entry) => visit(entry, depth + 1));
19
+ const plain = Object.getPrototypeOf(item) === Object.prototype || Object.getPrototypeOf(item) === null;
20
+ if (!(item instanceof Map) && (!plain || !hostValue && Object.hasOwn(item, "__monty_type__"))) {
21
+ throw new TypeError("Monty boundary requires JSON-compatible values; bytes, sets and class/module objects are unsupported");
22
+ }
23
+ const result = {};
24
+ for (const [key, entry] of item instanceof Map ? item.entries() : Object.entries(item)) {
25
+ if (typeof key !== "string") throw new TypeError("Monty JSON dictionary keys must be strings");
26
+ visit(key, depth + 1);
27
+ Object.defineProperty(result, key, { value: visit(entry, depth + 1), enumerable: true, configurable: true, writable: true });
28
+ }
29
+ return result;
30
+ } finally {
31
+ active.delete(item);
32
+ }
33
+ };
34
+ return visit(hostValue && value === void 0 ? null : value, 0);
35
+ }
36
+ function montyInput(value) {
37
+ if (Array.isArray(value)) return value.map(montyInput);
38
+ if (value !== null && typeof value === "object") {
39
+ return new Map(Object.entries(value).map(([key, entry]) => [key, montyInput(entry)]));
40
+ }
41
+ return value;
42
+ }
43
+
44
+ // src/runtime/python-arguments.ts
45
+ var PRIMARY = { read: "path", ls: "path", bash: "command", powershell: "command", grep: "pattern", find: "pattern" };
46
+ var POSITIONAL = {
47
+ read: ["path", "offset", "limit"],
48
+ ls: ["path", "limit"],
49
+ grep: ["pattern", "path", "limit"],
50
+ find: ["pattern", "path", "limit"],
51
+ write: ["path", "content"],
52
+ edit: ["path", "oldText", "newText"],
53
+ bash: ["command"],
54
+ powershell: ["command"]
55
+ };
56
+ var record = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
57
+ function pythonArgumentsFor(ref, positional, kwargs) {
58
+ let args = normalizeMontyValue(kwargs);
59
+ const values = normalizeMontyValue(positional);
60
+ if (values.length === 1 && record(values[0])) {
61
+ if (Object.keys(values[0]).some((key) => Object.hasOwn(args, key))) throw new TypeError("Duplicate Fabric argument keys");
62
+ args = { ...values[0], ...args };
63
+ } else if (ref === "tools.search" && values.length === 1 && typeof values[0] === "string") {
64
+ args = { ...args, query: values[0] };
65
+ } else if (values.length) {
66
+ const name = ref.startsWith("pi.") ? ref.slice(3) : "";
67
+ const primary = Object.hasOwn(PRIMARY, name) ? PRIMARY[name] : void 0;
68
+ const fields = Object.hasOwn(POSITIONAL, name) ? POSITIONAL[name] : [];
69
+ if (primary && values.length === 2 && typeof values[0] === "string" && record(values[1])) {
70
+ args = { ...values[1], ...args, [primary]: values[0] };
71
+ } else if (fields.length && values.length <= fields.length) {
72
+ for (let index = 0; index < values.length; index++) args[fields[index]] = values[index];
73
+ } else throw new TypeError("Fabric calls accept a dictionary or keyword arguments; Pi tools also accept documented positional arguments");
74
+ }
75
+ if (ref === "pi.edit" && !Object.hasOwn(args, "edits") && (Object.hasOwn(args, "oldText") || Object.hasOwn(args, "newText"))) {
76
+ const edit = {};
77
+ for (const key of ["oldText", "newText"]) if (Object.hasOwn(args, key)) {
78
+ edit[key] = args[key];
79
+ delete args[key];
80
+ }
81
+ args.edits = [edit];
82
+ }
83
+ return args;
84
+ }
85
+
86
+ export {
87
+ normalizeMontyValue,
88
+ montyInput,
89
+ pythonArgumentsFor
90
+ };
91
+ //# sourceMappingURL=chunk-4S5PVL7Y.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/runtime/monty-values.ts", "../../src/runtime/python-arguments.ts"],
4
+ "sourcesContent": ["const MAX_VALUE_BYTES = 16 * 1024 * 1024;\n\n/** Strict JSON boundary: never silently stringify bytes, sets, unsafe ints or cycles. */\nexport function normalizeMontyValue(value: unknown, hostValue = false): unknown {\n let remaining = MAX_VALUE_BYTES;\n let nodes = 0;\n const active = new Set<object>();\n const visit = (item: unknown, depth: number): unknown => {\n if (++nodes > 100_000 || depth > 48) throw new TypeError(\"Monty JSON value exceeds the node/depth limit\");\n if (typeof item === \"string\") remaining -= Buffer.byteLength(item, \"utf8\");\n else remaining -= 8;\n if (remaining < 0) throw new TypeError(\"Monty JSON value exceeds 16 MiB\");\n if (item === null || typeof item === \"string\" || typeof item === \"boolean\") return item;\n if (typeof item === \"number\" && Number.isFinite(item) && (!Number.isInteger(item) || Number.isSafeInteger(item))) return item;\n if (typeof item !== \"object\" || item === null) throw new TypeError(\"Monty boundary requires JSON-compatible values (finite numbers and safe integers)\");\n if (active.has(item)) throw new TypeError(\"Monty boundary cannot serialize cyclic values\");\n active.add(item);\n try {\n if (Array.isArray(item)) return Array.from(item, (entry) => visit(entry, depth + 1));\n const plain = Object.getPrototypeOf(item) === Object.prototype || Object.getPrototypeOf(item) === null;\n if (!(item instanceof Map) && (!plain || (!hostValue && Object.hasOwn(item, \"__monty_type__\")))) {\n throw new TypeError(\"Monty boundary requires JSON-compatible values; bytes, sets and class/module objects are unsupported\");\n }\n const result: Record<string, unknown> = {};\n for (const [key, entry] of item instanceof Map ? item.entries() : Object.entries(item)) {\n if (typeof key !== \"string\") throw new TypeError(\"Monty JSON dictionary keys must be strings\");\n visit(key, depth + 1);\n Object.defineProperty(result, key, { value: visit(entry, depth + 1), enumerable: true, configurable: true, writable: true });\n }\n return result;\n } finally { active.delete(item); }\n };\n return visit(hostValue && value === undefined ? null : value, 0);\n}\n\n/** Maps prevent JSON keys such as __monty_type__ from being interpreted as native markers. */\nexport function montyInput(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(montyInput);\n if (value !== null && typeof value === \"object\") {\n return new Map(Object.entries(value).map(([key, entry]) => [key, montyInput(entry)]));\n }\n return value;\n}\n", "import { normalizeMontyValue } from \"./monty-values.js\";\n\nconst PRIMARY: Record<string, string> = { read: \"path\", ls: \"path\", bash: \"command\", powershell: \"command\", grep: \"pattern\", find: \"pattern\" };\nconst POSITIONAL: Record<string, string[]> = {\n read: [\"path\", \"offset\", \"limit\"], ls: [\"path\", \"limit\"], grep: [\"pattern\", \"path\", \"limit\"],\n find: [\"pattern\", \"path\", \"limit\"], write: [\"path\", \"content\"], edit: [\"path\", \"oldText\", \"newText\"], bash: [\"command\"], powershell: [\"command\"],\n};\nconst record = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === \"object\" && !Array.isArray(value);\n\nexport function pythonArgumentsFor(ref: string, positional: unknown[], kwargs: Record<string, unknown>): Record<string, unknown> {\n let args = normalizeMontyValue(kwargs) as Record<string, unknown>;\n const values = normalizeMontyValue(positional) as unknown[];\n if (values.length === 1 && record(values[0])) {\n if (Object.keys(values[0]).some((key) => Object.hasOwn(args, key))) throw new TypeError(\"Duplicate Fabric argument keys\");\n args = { ...values[0], ...args };\n } else if (ref === \"tools.search\" && values.length === 1 && typeof values[0] === \"string\") {\n args = { ...args, query: values[0] };\n } else if (values.length) {\n const name = ref.startsWith(\"pi.\") ? ref.slice(3) : \"\";\n const primary = Object.hasOwn(PRIMARY, name) ? PRIMARY[name] : undefined;\n const fields = Object.hasOwn(POSITIONAL, name) ? POSITIONAL[name]! : [];\n if (primary && values.length === 2 && typeof values[0] === \"string\" && record(values[1])) {\n args = { ...values[1], ...args, [primary]: values[0] };\n } else if (fields.length && values.length <= fields.length) {\n for (let index = 0; index < values.length; index++) args[fields[index]!] = values[index];\n } else throw new TypeError(\"Fabric calls accept a dictionary or keyword arguments; Pi tools also accept documented positional arguments\");\n }\n if (ref === \"pi.edit\" && !Object.hasOwn(args, \"edits\") && (Object.hasOwn(args, \"oldText\") || Object.hasOwn(args, \"newText\"))) {\n const edit: Record<string, unknown> = {};\n for (const key of [\"oldText\", \"newText\"]) if (Object.hasOwn(args, key)) { edit[key] = args[key]; delete args[key]; }\n args.edits = [edit];\n }\n return args;\n}\n\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"fabric-runtime-state.d.ts","sourceRoot":"","sources":["../src/fabric-runtime-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fabric-runtime-state.d.ts","sourceRoot":"","sources":["../src/fabric-runtime-state.ts"],"names":[],"mappings":"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"}
@@ -4187,7 +4187,7 @@ var PARSE_INTERVAL_MS = 50;
4187
4187
  var FabricSpeculationStreamTap = class {
4188
4188
  #options;
4189
4189
  #streams = /* @__PURE__ */ new Map();
4190
- // The scanner depends on the TypeScript compiler; the factory arrives through
4190
+ // Language parsers are lazy; the selected scanner factory arrives through
4191
4191
  // a lazy dynamic import so session startup never pays for it. Streams opened
4192
4192
  // before the factory lands are caught up in full (extractors buffer the
4193
4193
  // whole decoded prefix, so no candidate is lost, only delayed).
@@ -4299,7 +4299,7 @@ var RuntimeStateSpeculation = class {
4299
4299
  // Speculative PTC: the store is the epoch-checked promise cache consumed by
4300
4300
  // ActionRegistry.invoke; the tap watches fabric_exec argument streaming and
4301
4301
  // launches literal-args Tier-A calls early (docs/speculation.md).
4302
- constructor(registry, readConfig, readCapabilityView, allowRef = () => true) {
4302
+ constructor(registry, readConfig, readCapabilityView, allowRef = () => true, kernel = "typescript") {
4303
4303
  this.registry = registry;
4304
4304
  this.readConfig = readConfig;
4305
4305
  this.readCapabilityView = readCapabilityView;
@@ -4331,12 +4331,8 @@ var RuntimeStateSpeculation = class {
4331
4331
  );
4332
4332
  }
4333
4333
  });
4334
- void import("./speculation/scanner.js").then(
4335
- (module) => {
4336
- this.tap?.setScannerFactory(() => new module.LiteralCallScanner());
4337
- },
4338
- () => void 0
4339
- );
4334
+ const factory = kernel === "python" ? import("./speculation/python-scanner.js").then((module) => () => new module.PythonLiteralCallScanner()) : import("./speculation/scanner.js").then((module) => () => new module.LiteralCallScanner());
4335
+ void factory.then((create) => this.tap?.setScannerFactory(create), () => void 0);
4340
4336
  }
4341
4337
  #store;
4342
4338
  tap;
@@ -11411,7 +11407,11 @@ ${escapeXmlText(text)}
11411
11407
  this.#speculation = void 0;
11412
11408
  this.#registry?.setSpeculation(void 0);
11413
11409
  const config = this.#config;
11414
- const eligible = () => this.#config?.executor.kernel === "typescript" && (this.#config.schema.mode === "enforce" || this.#config.executor.runtime === "quickjs") && this.#config.speculation.enabled;
11410
+ const eligible = () => {
11411
+ const current = this.#config;
11412
+ if (!current?.speculation.enabled) return false;
11413
+ return current.executor.kernel === "python" ? current.executor.pythonRuntime === "monty" || current.schema.mode === "enforce" : current.schema.mode === "enforce" || current.executor.runtime === "quickjs";
11414
+ };
11415
11415
  if (!config || !this.#registry || !eligible()) return;
11416
11416
  this.#speculation = new RuntimeStateSpeculation(
11417
11417
  this.#registry,
@@ -11422,7 +11422,8 @@ ${escapeXmlText(text)}
11422
11422
  if (current.approvals[ref.startsWith("mcp.") ? "network" : "read"] !== "allow") return false;
11423
11423
  if (ref.startsWith("pi.") && !current.fullCodeMode && current.schema.mode !== "enforce") return false;
11424
11424
  return current.schema.mode !== "enforce" || schemaRefAllowedInEnforce(ref);
11425
- }
11425
+ },
11426
+ config.executor.kernel
11426
11427
  );
11427
11428
  }
11428
11429
  async claimHandoff(execution, sessionId, resultFormat, outerToolCallId) {