@opendatalabs/personal-server-ts-lite 1.12.0 → 1.12.1-canary.0bee0a7

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 (36) hide show
  1. package/dist/derivatives.d.ts.map +1 -1
  2. package/dist/derivatives.js +8 -2
  3. package/dist/derivatives.js.map +1 -1
  4. package/dist/index.d.ts +8 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +8 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/query/device-probe-entry.d.ts +27 -0
  9. package/dist/query/device-probe-entry.d.ts.map +1 -0
  10. package/dist/query/device-probe-entry.js +34 -0
  11. package/dist/query/device-probe-entry.js.map +1 -0
  12. package/dist/query/device-probe.d.ts +140 -0
  13. package/dist/query/device-probe.d.ts.map +1 -0
  14. package/dist/query/device-probe.js +289 -0
  15. package/dist/query/device-probe.js.map +1 -0
  16. package/dist/query/index.d.ts +18 -0
  17. package/dist/query/index.d.ts.map +1 -0
  18. package/dist/query/index.js +18 -0
  19. package/dist/query/index.js.map +1 -0
  20. package/dist/query/lite-query-service.d.ts +209 -0
  21. package/dist/query/lite-query-service.d.ts.map +1 -0
  22. package/dist/query/lite-query-service.js +455 -0
  23. package/dist/query/lite-query-service.js.map +1 -0
  24. package/dist/query/lite-tool-host.d.ts +81 -0
  25. package/dist/query/lite-tool-host.d.ts.map +1 -0
  26. package/dist/query/lite-tool-host.js +220 -0
  27. package/dist/query/lite-tool-host.js.map +1 -0
  28. package/dist/query/mcp-ask-port.d.ts +25 -0
  29. package/dist/query/mcp-ask-port.d.ts.map +1 -0
  30. package/dist/query/mcp-ask-port.js +51 -0
  31. package/dist/query/mcp-ask-port.js.map +1 -0
  32. package/dist/query/quickjs-sandbox.d.ts +187 -0
  33. package/dist/query/quickjs-sandbox.d.ts.map +1 -0
  34. package/dist/query/quickjs-sandbox.js +721 -0
  35. package/dist/query/quickjs-sandbox.js.map +1 -0
  36. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"derivatives.d.ts","sourceRoot":"","sources":["../src/derivatives.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAanD,+EAA+E;AAC/E,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAkBxB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAKvE;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3D,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,oBAAoB,GAAG,SAAS,CAAC;IACxD,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CAuDzB"}
1
+ {"version":3,"file":"derivatives.d.ts","sourceRoot":"","sources":["../src/derivatives.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAgBnD,+EAA+E;AAC/E,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAKvE;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3D,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,oBAAoB,GAAG,SAAS,CAAC;IACxD,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CAuDzB"}
@@ -8,10 +8,16 @@ const QUESTIONS_KEY = "derivative-questions-v1";
8
8
  /** A question store persisted as one JSON value in the PS-Lite state store. */
9
9
  export async function createPsLiteQuestionStore(stateStore) {
10
10
  const saved = await stateStore.get(QUESTIONS_KEY);
11
- // Registrations saved before the recompute policy existed keep the old
12
- // follow-every-change behavior.
11
+ // The state store holds plain JSON, so rows written before `mode` or
12
+ // `recompute` existed come back without them. There is no schema migration
13
+ // here the way there is in sqlite — rehydration is the migration, and a row
14
+ // that arrives without a recognised mode takes `completion`, the behaviour
15
+ // it was registered under; one without a recompute policy keeps the old
16
+ // follow-every-change behavior. Without this the fields are `undefined` and
17
+ // every later read of them is silently wrong.
13
18
  const initial = (saved?.version === 1 ? saved.questions : []).map((question) => ({
14
19
  ...question,
20
+ mode: question.mode === "code" ? "code" : "completion",
15
21
  recompute: question.recompute ?? "on-change",
16
22
  }));
17
23
  return createInMemoryQuestionStore({
@@ -1 +1 @@
1
- {"version":3,"file":"derivatives.js","sourceRoot":"","sources":["../src/derivatives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derivatives.js","sourceRoot":"","sources":["../src/derivatives.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,uCAAuC,EACvC,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAM3B,MAAM,mDAAmD,CAAC;AAK3D,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAchD,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,CAAuB,aAAa,CAAC,CAAC;IACxE,qEAAqE;IACrE,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAC/D,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACb,GAAG,QAAQ;QACX,IAAI,EACF,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,MAAgB,CAAC,CAAC,CAAE,YAAsB;QACxE,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAK,WAAqB;KACxD,CAAC,CACH,CAAC;IACF,OAAO,2BAA2B,CAAC;QACjC,OAAO;QACP,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,CACtB,UAAU,CAAC,GAAG,CAAuB,aAAa,EAAE;YAClD,OAAO,EAAE,CAAC;YACV,SAAS;SACV,CAAC;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAoB;IAC5D,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,0BAA0B,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/C,CAAC;AACJ,CAAC;AAgCD,MAAM,UAAU,6BAA6B,CAC3C,OAAuC;IAEvC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;QAC3B,CAAC,CAAC;YACE,IAAI,EAAE,CAAC,OAAgC,EAAE,OAAe,EAAE,EAAE,CAC1D,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;YACxC,IAAI,EAAE,CAAC,OAAgC,EAAE,OAAe,EAAE,EAAE,CAC1D,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;SACzC;QACH,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;QAChB,uCAAuC,CAAC;YACtC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;YACzC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK;YACrC,oEAAoE;YACpE,6DAA6D;YAC7D,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,kEAAkE;YAClE,qEAAqE;YACrE,+DAA+D;YAC/D,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI;gBACvC,CAAC,CAAC,yBAAyB,CAAC;oBACxB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;oBACzC,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,MAAM;iBACP,CAAC;gBACJ,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,MAAM,SAAS,GAAuB,wBAAwB,CAAC;QAC7D,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB;QACxD,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM;QACN,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE,CACtB,eAAe,CAAC,UAAU,EAAE;YAC1B,iEAAiE;YACjE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC1B,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE;gBACvC,cAAc,EAAE,KAAK,CAAC,cAAc;aACrC,CAAC;YACJ,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ;YACR,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc;YACvD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,IAAI;YAC5C,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE;YAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM;SACP,CAAC;KACL,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACvD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -15,4 +15,12 @@ export { DiagnosticsRecorder, collectDiagnosticsWithTimeout, DIAGNOSTICS_VERSION
15
15
  export { decodeDataFrame, encodeDataFrame, psLiteRelayControlUrl, psLiteRelayPublicUrl, RELAY_CLOSE_SESSION_REPLACED, startPsLiteRelayClient, type PsLiteRelayClient, type PsLiteRelayClientOptions, type PsLiteRelayCloseEvent, type PsLiteRelayStatus, type PsLiteRelayTlsFactory, type PsLiteRelayTlsPrepareInput, type PsLiteRelayTlsStep, type PsLiteRelayTlsStream, type PsLiteRelayTlsStreamInput, type PsLiteRelayWebSocket, type PsLiteRelayWebSocketFactory, } from "./relay.js";
16
16
  export { createLocalStoragePsLiteRelayTlsIdentityStore, createRustlsPsLiteRelayTlsFactory, psLiteRelayPublicHost, psLiteRelayPublicUrl as psLiteRelayTlsPublicUrl, type PsLiteRelayTlsIdentity, type PsLiteRelayTlsIdentityStore, type RustlsPsLiteRelayTlsOptions, } from "./relay-tls.js";
17
17
  export { assertCompletePsLitePersistenceBundle, psLitePersistenceRuntimeOptions, type PsLitePersistenceBundle, type PsLitePersistenceRuntimeOptions, } from "./persistence.js";
18
+ /**
19
+ * The query layer (design §19.17, plan phase 4a/8).
20
+ *
21
+ * PS-Lite answers `ask_personal_data` by running model-authored code in a
22
+ * QuickJS-WASM VM over a per-request in-memory grant. Re-exported from `./query`
23
+ * so a host can wire the port without reaching into the package's internals.
24
+ */
25
+ export { applyGrantCoverage as applyLiteGrantCoverage, createLiteAskPersonalDataPort, createLiteToolHost, createQuickJsSandbox, loadQuickJsModule, materializeGrantInMemory, probeVmGlobals, quickJsEnforcement, resolveGrant as resolveLiteGrant, runLiteQuery, unwrapEnvelopeData as unwrapLiteEnvelopeData, verifyOutcome as verifyLiteSandboxOutcome, EGRESS_GLOBALS as LITE_EGRESS_GLOBALS, LITE_QUERY_BUDGET, LITE_QUERY_LIMITS, MAX_STACK_BYTES as LITE_QUICKJS_MAX_STACK_BYTES, VIRTUAL_GRANT_ROOT as LITE_VIRTUAL_GRANT_ROOT, type LiteExecuteOutcome, type LiteGrantedScope, type LiteMaterializedGrant, type LiteMaterializedScope, type LiteQueryEvent, type LiteQueryEventSink, type LiteScopePayload, type LiteScopeReader, type LiteSkippedScope, type LiteToolHost, type QuickJsSandboxOptions, type RunLiteQueryOptions, } from "./query/index.js";
18
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,GACzC,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,gCAAgC,EAChC,6BAA6B,EAC7B,4BAA4B,EAC5B,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,oBAAoB,EACpB,+BAA+B,EAC/B,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,EACf,KAAK,iCAAiC,EACtC,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,oCAAoC,EACzC,KAAK,gCAAgC,EACrC,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,GAClC,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oCAAoC,EACpC,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,GACpC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,GACjC,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,qBAAqB,EACrB,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,iCAAiC,EACjC,yCAAyC,EACzC,KAAK,kCAAkC,EACvC,KAAK,0CAA0C,GAChD,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,GACjC,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,6CAA6C,EAC7C,iCAAiC,EACjC,qBAAqB,EACrB,oBAAoB,IAAI,uBAAuB,EAC/C,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,GACjC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,+BAA+B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,GACrC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16,4 +16,12 @@ export { DiagnosticsRecorder, collectDiagnosticsWithTimeout, DIAGNOSTICS_VERSION
16
16
  export { decodeDataFrame, encodeDataFrame, psLiteRelayControlUrl, psLiteRelayPublicUrl, RELAY_CLOSE_SESSION_REPLACED, startPsLiteRelayClient, } from "./relay.js";
17
17
  export { createLocalStoragePsLiteRelayTlsIdentityStore, createRustlsPsLiteRelayTlsFactory, psLiteRelayPublicHost, psLiteRelayPublicUrl as psLiteRelayTlsPublicUrl, } from "./relay-tls.js";
18
18
  export { assertCompletePsLitePersistenceBundle, psLitePersistenceRuntimeOptions, } from "./persistence.js";
19
+ /**
20
+ * The query layer (design §19.17, plan phase 4a/8).
21
+ *
22
+ * PS-Lite answers `ask_personal_data` by running model-authored code in a
23
+ * QuickJS-WASM VM over a per-request in-memory grant. Re-exported from `./query`
24
+ * so a host can wire the port without reaching into the package's internals.
25
+ */
26
+ export { applyGrantCoverage as applyLiteGrantCoverage, createLiteAskPersonalDataPort, createLiteToolHost, createQuickJsSandbox, loadQuickJsModule, materializeGrantInMemory, probeVmGlobals, quickJsEnforcement, resolveGrant as resolveLiteGrant, runLiteQuery, unwrapEnvelopeData as unwrapLiteEnvelopeData, verifyOutcome as verifyLiteSandboxOutcome, EGRESS_GLOBALS as LITE_EGRESS_GLOBALS, LITE_QUERY_BUDGET, LITE_QUERY_LIMITS, MAX_STACK_BYTES as LITE_QUICKJS_MAX_STACK_BYTES, VIRTUAL_GRANT_ROOT as LITE_VIRTUAL_GRANT_ROOT, } from "./query/index.js";
19
27
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,GAG7B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,GAGpB,MAAM,aAAa,CAAC;AAmBrB,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,yBAAyB,GAG1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,GAQhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GAUrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oCAAoC,EACpC,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,GAG1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,0BAA0B,GAU3B,MAAM,cAAc,CAAC;AAEtB,6EAA6E;AAC7E,mEAAmE;AACnE,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,qBAAqB,EACrB,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,GAIvB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,iCAAiC,EACjC,yCAAyC,GAG1C,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,GAWpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,GAYvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,6CAA6C,EAC7C,iCAAiC,EACjC,qBAAqB,EACrB,oBAAoB,IAAI,uBAAuB,GAIhD,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,+BAA+B,GAGhC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,GAG7B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,GAGpB,MAAM,aAAa,CAAC;AAmBrB,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,yBAAyB,GAG1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,GAQhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GAUrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oCAAoC,EACpC,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,GAG1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,0BAA0B,GAU3B,MAAM,cAAc,CAAC;AAEtB,6EAA6E;AAC7E,mEAAmE;AACnE,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,qBAAqB,EACrB,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,GAIvB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,iCAAiC,EACjC,yCAAyC,GAG1C,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,GAWpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,GAYvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,6CAA6C,EAC7C,iCAAiC,EACjC,qBAAqB,EACrB,oBAAoB,IAAI,uBAAuB,GAIhD,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,+BAA+B,GAGhC,MAAM,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,OAAO,EACL,kBAAkB,IAAI,sBAAsB,EAC5C,6BAA6B,EAC7B,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,YAAY,IAAI,gBAAgB,EAChC,YAAY,EACZ,kBAAkB,IAAI,sBAAsB,EAC5C,aAAa,IAAI,wBAAwB,EACzC,cAAc,IAAI,mBAAmB,EACrC,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,IAAI,4BAA4B,EAC/C,kBAAkB,IAAI,uBAAuB,GAa9C,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Browser entry for the mobile WASM device probe.
3
+ *
4
+ * Bundled to a single self-contained IIFE by `npm run bundle-device-probe`,
5
+ * which is the form the Flutter shell can serve: the QuickJS engine is
6
+ * base64-inlined by `@jitl/quickjs-singlefile-browser-release-sync`, so the
7
+ * page makes **no second request** for a `.wasm` file. That matters on exactly
8
+ * the two surfaces this probe exists for — iOS, whose in-process origin cannot
9
+ * emit a response header at all (design §19.17, `origin_host.dart:19-29`), and
10
+ * Android's asset loader, where a wrong MIME type is a silent failure.
11
+ *
12
+ * Deliberately **not** re-exported from `./index.ts`. This file exists to be
13
+ * bundled, not to be imported by the runtime, and keeping it off the package's
14
+ * public surface keeps the probe out of every consumer's module graph.
15
+ *
16
+ * The global is the shell's convention: `assets/probe/probe.js` attaches
17
+ * `globalThis.VANAPROBE` and Dart drives it by name. This attaches
18
+ * `globalThis.VANAQUERYPROBE` the same way.
19
+ */
20
+ import { DEVICE_PROBE_NAME, type DeviceProbeReport } from "./device-probe.js";
21
+ export interface VanaQueryProbeGlobal {
22
+ readonly name: typeof DEVICE_PROBE_NAME;
23
+ readonly version: number;
24
+ run(): Promise<DeviceProbeReport>;
25
+ format(report: DeviceProbeReport): string;
26
+ }
27
+ //# sourceMappingURL=device-probe-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-probe-entry.d.ts","sourceRoot":"","sources":["../../src/query/device-probe-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,iBAAiB,EAIjB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,iBAAiB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAAC;CAC3C"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Browser entry for the mobile WASM device probe.
3
+ *
4
+ * Bundled to a single self-contained IIFE by `npm run bundle-device-probe`,
5
+ * which is the form the Flutter shell can serve: the QuickJS engine is
6
+ * base64-inlined by `@jitl/quickjs-singlefile-browser-release-sync`, so the
7
+ * page makes **no second request** for a `.wasm` file. That matters on exactly
8
+ * the two surfaces this probe exists for — iOS, whose in-process origin cannot
9
+ * emit a response header at all (design §19.17, `origin_host.dart:19-29`), and
10
+ * Android's asset loader, where a wrong MIME type is a silent failure.
11
+ *
12
+ * Deliberately **not** re-exported from `./index.ts`. This file exists to be
13
+ * bundled, not to be imported by the runtime, and keeping it off the package's
14
+ * public surface keeps the probe out of every consumer's module graph.
15
+ *
16
+ * The global is the shell's convention: `assets/probe/probe.js` attaches
17
+ * `globalThis.VANAPROBE` and Dart drives it by name. This attaches
18
+ * `globalThis.VANAQUERYPROBE` the same way.
19
+ */
20
+ import { DEVICE_PROBE_NAME, DEVICE_PROBE_VERSION, formatDeviceProbeReport, runDeviceProbe, } from "./device-probe.js";
21
+ const api = {
22
+ name: DEVICE_PROBE_NAME,
23
+ version: DEVICE_PROBE_VERSION,
24
+ run: runDeviceProbe,
25
+ format: formatDeviceProbeReport,
26
+ };
27
+ globalThis.VANAQUERYPROBE = api;
28
+ // A load failure has to be visible from a device log with no debugger
29
+ // attached, and the host page has no other way to tell "script never ran" from
30
+ // "script ran and found nothing".
31
+ if (typeof console !== "undefined") {
32
+ console.log(`[${DEVICE_PROBE_NAME}] attached v${DEVICE_PROBE_VERSION}`);
33
+ }
34
+ //# sourceMappingURL=device-probe-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-probe-entry.js","sourceRoot":"","sources":["../../src/query/device-probe-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAS3B,MAAM,GAAG,GAAyB;IAChC,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,oBAAoB;IAC7B,GAAG,EAAE,cAAc;IACnB,MAAM,EAAE,uBAAuB;CAChC,CAAC;AAED,UAAwD,CAAC,cAAc,GAAG,GAAG,CAAC;AAE/E,sEAAsE;AACtE,+EAA+E;AAC/E,kCAAkC;AAClC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,IAAI,iBAAiB,eAAe,oBAAoB,EAAE,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * The mobile WASM device probe: one page load, four fields, no model call.
3
+ *
4
+ * Design §19.18 records QuickJS-on-WASM as **measured working** on desktop
5
+ * Chrome and desktop Safari and **UNVERIFIED** on iOS WKWebView and Android
6
+ * WebView, and says exactly what would settle it:
7
+ *
8
+ * > build `.bench/probe.ts` into `apps/mobile-shell/assets/ps/`, load it in
9
+ * > the Flutter shell on one real iOS device and one real Android device, and
10
+ * > read the four fields it already emits — `moduleLoad`,
11
+ * > `egressGlobalsPresent`, `mechanics`, `opfs.writable`.
12
+ *
13
+ * `.bench/` was a scratch directory and did not survive; this is that probe,
14
+ * in the package the fields belong to, so it is type-checked and tested
15
+ * alongside the sandbox whose behaviour it asserts. The field names are the
16
+ * ones §19.18 named, unchanged, because a paste-back report is only useful if
17
+ * it answers the question in the words the question was asked in.
18
+ *
19
+ * ### What it does not do
20
+ *
21
+ * It runs no model, reads no user data and writes nothing outside one
22
+ * throwaway OPFS file it deletes. It is a capability measurement, and a
23
+ * failure of any field is a result rather than an error — every branch below
24
+ * records *why* instead of throwing, because a probe that dies on the first
25
+ * missing capability answers one field and leaves three unknown.
26
+ *
27
+ * ### Why these four
28
+ *
29
+ * - `moduleLoad` — the single-file variant inlines the engine as base64
30
+ * (`loadQuickJsModule`), so this is the whole "does WASM instantiate here"
31
+ * question with no fetch, no MIME type and no CSP in it. On iOS it is also
32
+ * the Lockdown Mode question, which disables WebAssembly outright.
33
+ * - `egressGlobalsPresent` — the containment claim. §19.18: "Not denied:
34
+ * absent, because QuickJS never created them." Expected `[]`; anything else
35
+ * voids the claim on that engine.
36
+ * - `mechanics` — the three version-specific behaviours the sandbox is built
37
+ * on. They are asserted against Node's WASM build by
38
+ * `quickjs-sandbox.test.ts`; a WebView's WASM is not that build, so they are
39
+ * re-asked on the device rather than assumed.
40
+ * - `opfs.writable` — §19.17 recorded the mobile host defaulting to IndexedDB
41
+ * because "WKWebView can advertise OPFS while failing its first real write",
42
+ * and `isOpfsAvailable()` only feature-detects `getDirectory`. So presence is
43
+ * the wrong question; this performs the real `createWritable()` write that
44
+ * the OPFS store performs.
45
+ */
46
+ /** Stable identifier of the report shape, so a pasted-back block is unambiguous. */
47
+ export declare const DEVICE_PROBE_NAME = "vana-quickjs-device-probe";
48
+ /** Bumped whenever a field is added, removed or changes meaning. */
49
+ export declare const DEVICE_PROBE_VERSION = 2;
50
+ /** §19.18 field 1. */
51
+ export interface ModuleLoadField {
52
+ /** Did the WASM engine instantiate at all? */
53
+ ok: boolean;
54
+ /** Wall clock for the first instantiation, ms. `null` when it failed. */
55
+ ms: number | null;
56
+ /** Present only on failure. */
57
+ error?: string;
58
+ }
59
+ /** §19.18 field 3. */
60
+ export interface MechanicsField {
61
+ /**
62
+ * §19.17: `setMaxStackSize` at 8 MB makes *every* `evalCode` fail, including
63
+ * `1+1`. `MAX_STACK_BYTES` is chosen to sit under that threshold, so a
64
+ * device where this comes back `false` has a different WASM stack region and
65
+ * the constant needs re-measuring there.
66
+ */
67
+ stackLimitAt8MbFailsEval: boolean | null;
68
+ /**
69
+ * §19.17's silent-wrongness trap: at a limit too small, a QuickJS run can
70
+ * end with no exception and a null result. This asks for the *raising*
71
+ * behaviour directly — an allocation past the limit must surface an error,
72
+ * not an empty success.
73
+ */
74
+ memoryLimitRaisesRatherThanNull: boolean | null;
75
+ /**
76
+ * §19.18's third mechanic: a host function that *returns* `vm.newError(...)`
77
+ * hands the error back as an ordinary value rather than throwing. The
78
+ * grant-denial path depends on knowing this, and the first spike printed
79
+ * `LEAK` because it did not.
80
+ */
81
+ hostErrorReturnValueDoesNotThrow: boolean | null;
82
+ /** The stack ceiling this build ships, for the record. */
83
+ maxStackBytes: number;
84
+ /** Why any field above is `null`. Empty when all three were measured. */
85
+ errors: string[];
86
+ }
87
+ /** §19.18 field 4 — the report reads `opfs.writable`. */
88
+ export interface OpfsField {
89
+ /** What `isOpfsAvailable()` in `storage.ts` feature-detects, and no more. */
90
+ getDirectoryPresent: boolean;
91
+ /** Whether the method the OPFS store actually writes through exists. */
92
+ createWritablePresent: boolean;
93
+ /**
94
+ * **The field §19.18 names.** A real `createWritable()` write completed.
95
+ * This is the one that separates "advertises OPFS" from "OPFS works".
96
+ */
97
+ writable: boolean;
98
+ /** The bytes written came back byte-identical. */
99
+ roundTripOk: boolean;
100
+ error?: string;
101
+ }
102
+ export interface DeviceProbeReport {
103
+ probe: typeof DEVICE_PROBE_NAME;
104
+ version: number;
105
+ at: string;
106
+ /** Storage partitions by origin; a report from the wrong one means nothing. */
107
+ origin: string;
108
+ userAgent: string;
109
+ /** No `crypto.subtle` without one, and PS-Lite cannot boot. Context, not a verdict. */
110
+ secureContext: boolean;
111
+ /** §19.18 field 1. */
112
+ moduleLoad: ModuleLoadField;
113
+ /** §19.18 field 2. Expected `[]`. `null` when the module never loaded. */
114
+ egressGlobalsPresent: string[] | null;
115
+ /** §19.18 field 3. `null` when the module never loaded. */
116
+ mechanics: MechanicsField | null;
117
+ /** §19.18 field 4, read as `opfs.writable`. */
118
+ opfs: OpfsField;
119
+ /**
120
+ * One line a human can read without decoding the rest. It states what was
121
+ * measured; it never claims support that was not measured here.
122
+ */
123
+ verdict: string;
124
+ }
125
+ /**
126
+ * Run the probe and return the four §19.18 fields.
127
+ *
128
+ * Never throws: every failure is a recorded field. A caller on a device has no
129
+ * debugger, so an exception costs the whole run.
130
+ */
131
+ export declare function runDeviceProbe(): Promise<DeviceProbeReport>;
132
+ /**
133
+ * The paste-back block.
134
+ *
135
+ * Fenced with the same `===…-BEGIN===`/`===…-END===` sentinels the shell's W1
136
+ * suite uses, so a report can be lifted verbatim out of a noisy device log by
137
+ * `grep`, and so `W1Suite.reportText`'s clipboard copy carries it unchanged.
138
+ */
139
+ export declare function formatDeviceProbeReport(report: DeviceProbeReport): string;
140
+ //# sourceMappingURL=device-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-probe.d.ts","sourceRoot":"","sources":["../../src/query/device-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAcH,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AAE7D,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,sBAAsB;AACtB,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,EAAE,EAAE,OAAO,CAAC;IACZ,yEAAyE;IACzE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sBAAsB;AACtB,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,wBAAwB,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC;;;;;OAKG;IACH,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD;;;;;OAKG;IACH,gCAAgC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,yDAAyD;AACzD,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wEAAwE;IACxE,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,iBAAiB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB;IACtB,UAAU,EAAE,eAAe,CAAC;IAC5B,0EAA0E;IAC1E,oBAAoB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtC,2DAA2D;IAC3D,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IACjC,+CAA+C;IAC/C,IAAI,EAAE,SAAS,CAAC;IAChB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAoND;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAkDjE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAMzE"}
@@ -0,0 +1,289 @@
1
+ /**
2
+ * The mobile WASM device probe: one page load, four fields, no model call.
3
+ *
4
+ * Design §19.18 records QuickJS-on-WASM as **measured working** on desktop
5
+ * Chrome and desktop Safari and **UNVERIFIED** on iOS WKWebView and Android
6
+ * WebView, and says exactly what would settle it:
7
+ *
8
+ * > build `.bench/probe.ts` into `apps/mobile-shell/assets/ps/`, load it in
9
+ * > the Flutter shell on one real iOS device and one real Android device, and
10
+ * > read the four fields it already emits — `moduleLoad`,
11
+ * > `egressGlobalsPresent`, `mechanics`, `opfs.writable`.
12
+ *
13
+ * `.bench/` was a scratch directory and did not survive; this is that probe,
14
+ * in the package the fields belong to, so it is type-checked and tested
15
+ * alongside the sandbox whose behaviour it asserts. The field names are the
16
+ * ones §19.18 named, unchanged, because a paste-back report is only useful if
17
+ * it answers the question in the words the question was asked in.
18
+ *
19
+ * ### What it does not do
20
+ *
21
+ * It runs no model, reads no user data and writes nothing outside one
22
+ * throwaway OPFS file it deletes. It is a capability measurement, and a
23
+ * failure of any field is a result rather than an error — every branch below
24
+ * records *why* instead of throwing, because a probe that dies on the first
25
+ * missing capability answers one field and leaves three unknown.
26
+ *
27
+ * ### Why these four
28
+ *
29
+ * - `moduleLoad` — the single-file variant inlines the engine as base64
30
+ * (`loadQuickJsModule`), so this is the whole "does WASM instantiate here"
31
+ * question with no fetch, no MIME type and no CSP in it. On iOS it is also
32
+ * the Lockdown Mode question, which disables WebAssembly outright.
33
+ * - `egressGlobalsPresent` — the containment claim. §19.18: "Not denied:
34
+ * absent, because QuickJS never created them." Expected `[]`; anything else
35
+ * voids the claim on that engine.
36
+ * - `mechanics` — the three version-specific behaviours the sandbox is built
37
+ * on. They are asserted against Node's WASM build by
38
+ * `quickjs-sandbox.test.ts`; a WebView's WASM is not that build, so they are
39
+ * re-asked on the device rather than assumed.
40
+ * - `opfs.writable` — §19.17 recorded the mobile host defaulting to IndexedDB
41
+ * because "WKWebView can advertise OPFS while failing its first real write",
42
+ * and `isOpfsAvailable()` only feature-detects `getDirectory`. So presence is
43
+ * the wrong question; this performs the real `createWritable()` write that
44
+ * the OPFS store performs.
45
+ */
46
+ import { loadQuickJsModule, MAX_STACK_BYTES, probeVmGlobals, } from "./quickjs-sandbox.js";
47
+ /** Stable identifier of the report shape, so a pasted-back block is unambiguous. */
48
+ export const DEVICE_PROBE_NAME = "vana-quickjs-device-probe";
49
+ /** Bumped whenever a field is added, removed or changes meaning. */
50
+ export const DEVICE_PROBE_VERSION = 2;
51
+ const message = (err) => err instanceof Error ? err.message : String(err);
52
+ /**
53
+ * Ask the VM which of `EGRESS_GLOBALS` it has.
54
+ *
55
+ * A bare context rather than a configured sandbox: the question is what the
56
+ * *engine* creates on this platform, and a sandbox would answer for the
57
+ * injection code as well.
58
+ */
59
+ function measureEgressGlobals(module) {
60
+ const rt = module.newRuntime();
61
+ rt.setMaxStackSize(MAX_STACK_BYTES);
62
+ const vm = rt.newContext();
63
+ try {
64
+ return probeVmGlobals(vm).present;
65
+ }
66
+ finally {
67
+ vm.dispose();
68
+ rt.dispose();
69
+ }
70
+ }
71
+ /** Runs `body` against a fresh runtime/context pair and always disposes both. */
72
+ function withVm(module, configure, body) {
73
+ const rt = module.newRuntime();
74
+ configure(rt);
75
+ const vm = rt.newContext();
76
+ try {
77
+ return body(vm);
78
+ }
79
+ finally {
80
+ vm.dispose();
81
+ rt.dispose();
82
+ }
83
+ }
84
+ function measureMechanics(module) {
85
+ const out = {
86
+ stackLimitAt8MbFailsEval: null,
87
+ memoryLimitRaisesRatherThanNull: null,
88
+ hostErrorReturnValueDoesNotThrow: null,
89
+ maxStackBytes: MAX_STACK_BYTES,
90
+ errors: [],
91
+ };
92
+ try {
93
+ out.stackLimitAt8MbFailsEval = withVm(module, (rt) => rt.setMaxStackSize(8 * 1024 * 1024), (vm) => {
94
+ const r = vm.evalCode("1+1");
95
+ const failed = r.error !== undefined;
96
+ (r.error ?? r.value).dispose();
97
+ return failed;
98
+ });
99
+ }
100
+ catch (err) {
101
+ out.errors.push(`stackLimitAt8MbFailsEval: ${message(err)}`);
102
+ }
103
+ try {
104
+ out.memoryLimitRaisesRatherThanNull = withVm(module, (rt) => {
105
+ rt.setMemoryLimit(1024 * 1024);
106
+ rt.setMaxStackSize(MAX_STACK_BYTES);
107
+ }, (vm) => {
108
+ // Allocate well past the limit. The property under test is that the
109
+ // engine *surfaces* the failure rather than completing with nothing —
110
+ // §19.17's `ok: true, result: null`, which read as success.
111
+ const r = vm.evalCode("var a = []; for (var i = 0; i < 400000; i++) { a.push('x'.repeat(64)); } a.length");
112
+ const raised = r.error !== undefined;
113
+ (r.error ?? r.value).dispose();
114
+ return raised;
115
+ });
116
+ }
117
+ catch (err) {
118
+ // An out-of-memory that takes the whole runtime down is still "raised
119
+ // rather than silently null", and is the safe direction. Record it as such
120
+ // and say so, rather than losing the reading.
121
+ out.memoryLimitRaisesRatherThanNull = true;
122
+ out.errors.push(`memoryLimitRaisesRatherThanNull: raised at the host boundary: ${message(err)}`);
123
+ }
124
+ try {
125
+ out.hostErrorReturnValueDoesNotThrow = withVm(module, (rt) => rt.setMaxStackSize(MAX_STACK_BYTES), (vm) => {
126
+ const fn = vm.newFunction("__probe_error", () => vm.newError("returned, not thrown"));
127
+ vm.setProp(vm.global, "__probe_error", fn);
128
+ fn.dispose();
129
+ const r = vm.evalCode("(function () { try { var v = __probe_error(); return v instanceof Error ? 'returned' : 'other'; } catch (e) { return 'threw'; } })()");
130
+ if (r.error) {
131
+ r.error.dispose();
132
+ return null;
133
+ }
134
+ const verdict = vm.getString(r.value);
135
+ r.value.dispose();
136
+ return verdict === "returned";
137
+ });
138
+ }
139
+ catch (err) {
140
+ out.errors.push(`hostErrorReturnValueDoesNotThrow: ${message(err)}`);
141
+ }
142
+ return out;
143
+ }
144
+ /**
145
+ * The real write, not the feature detect.
146
+ *
147
+ * Mirrors what `assets/probe/probe.js` does for the shell's own W1 report, and
148
+ * what `packages/lite/src/storage.ts` does at runtime: `getFileHandle` with
149
+ * `create`, `createWritable`, write, close, read back, compare, delete.
150
+ */
151
+ async function measureOpfs() {
152
+ const out = {
153
+ getDirectoryPresent: false,
154
+ createWritablePresent: false,
155
+ writable: false,
156
+ roundTripOk: false,
157
+ };
158
+ const storage = globalThis.navigator?.storage;
159
+ out.getDirectoryPresent = typeof storage?.getDirectory === "function";
160
+ if (!out.getDirectoryPresent) {
161
+ out.error = "navigator.storage.getDirectory is absent";
162
+ return out;
163
+ }
164
+ const name = `vana-wasm-probe-${Date.now()}.txt`;
165
+ const payload = `${DEVICE_PROBE_NAME}:${DEVICE_PROBE_VERSION}`;
166
+ try {
167
+ const root = await storage.getDirectory();
168
+ const handle = await root.getFileHandle(name, { create: true });
169
+ out.createWritablePresent = typeof handle.createWritable === "function";
170
+ if (!out.createWritablePresent) {
171
+ out.error = "FileSystemFileHandle.createWritable is absent";
172
+ return out;
173
+ }
174
+ const writable = await handle.createWritable();
175
+ await writable.write(payload);
176
+ await writable.close();
177
+ out.writable = true;
178
+ const back = await (await handle.getFile()).text();
179
+ out.roundTripOk = back === payload;
180
+ if (!out.roundTripOk) {
181
+ out.error = `read back ${JSON.stringify(back)}, expected ${JSON.stringify(payload)}`;
182
+ }
183
+ await root.removeEntry(name).catch(() => undefined);
184
+ }
185
+ catch (err) {
186
+ // WebKit's generic `UnknownError` is the shape §19.17 recorded on the one
187
+ // device run that called `navigator.storage.persist()`. Keep the message
188
+ // verbatim; it is the only distinguishing detail that failure has.
189
+ out.error = message(err);
190
+ }
191
+ return out;
192
+ }
193
+ function summarise(report) {
194
+ if (!report.moduleLoad.ok) {
195
+ return `FAIL: QuickJS/WASM did not load here (${report.moduleLoad.error ?? "no reason reported"}). The query layer cannot run on this surface.`;
196
+ }
197
+ const problems = [];
198
+ if (report.egressGlobalsPresent?.length) {
199
+ problems.push(`egress globals present: ${report.egressGlobalsPresent.join(", ")}`);
200
+ }
201
+ const m = report.mechanics;
202
+ if (m) {
203
+ if (m.stackLimitAt8MbFailsEval === false) {
204
+ problems.push("8MB stack limit does NOT fail eval here (§19.17 differs)");
205
+ }
206
+ if (m.memoryLimitRaisesRatherThanNull === false) {
207
+ problems.push("memory limit returned null instead of raising");
208
+ }
209
+ if (m.hostErrorReturnValueDoesNotThrow === false) {
210
+ problems.push("a returned vm.newError threw instead of returning");
211
+ }
212
+ for (const e of m.errors)
213
+ problems.push(e);
214
+ }
215
+ if (!report.opfs.writable) {
216
+ problems.push(`OPFS is not writable here (${report.opfs.error ?? "no reason reported"}) — PS-Lite must stay on the IndexedDB file store on this surface`);
217
+ }
218
+ return problems.length === 0
219
+ ? `PASS on this surface: engine loaded in ${report.moduleLoad.ms}ms, no egress globals, all three mechanics hold, OPFS writable. This is one device; it says nothing about any other.`
220
+ : `PARTIAL: engine loaded in ${report.moduleLoad.ms}ms. Unresolved: ${problems.join("; ")}`;
221
+ }
222
+ /**
223
+ * Run the probe and return the four §19.18 fields.
224
+ *
225
+ * Never throws: every failure is a recorded field. A caller on a device has no
226
+ * debugger, so an exception costs the whole run.
227
+ */
228
+ export async function runDeviceProbe() {
229
+ const nav = globalThis.navigator;
230
+ const report = {
231
+ probe: DEVICE_PROBE_NAME,
232
+ version: DEVICE_PROBE_VERSION,
233
+ at: new Date().toISOString(),
234
+ origin: globalThis.location?.origin ??
235
+ "(no location)",
236
+ userAgent: nav?.userAgent ?? "(no navigator)",
237
+ secureContext: globalThis.isSecureContext === true,
238
+ moduleLoad: { ok: false, ms: null },
239
+ egressGlobalsPresent: null,
240
+ mechanics: null,
241
+ opfs: {
242
+ getDirectoryPresent: false,
243
+ createWritablePresent: false,
244
+ writable: false,
245
+ roundTripOk: false,
246
+ },
247
+ verdict: "",
248
+ };
249
+ let module;
250
+ const started = Date.now();
251
+ try {
252
+ module = await loadQuickJsModule();
253
+ report.moduleLoad = { ok: true, ms: Date.now() - started };
254
+ }
255
+ catch (err) {
256
+ report.moduleLoad = { ok: false, ms: null, error: message(err) };
257
+ }
258
+ if (module) {
259
+ try {
260
+ report.egressGlobalsPresent = measureEgressGlobals(module);
261
+ }
262
+ catch (err) {
263
+ // Fail closed, exactly as `probeVmGlobals` does: an unreadable probe is
264
+ // not a passing probe.
265
+ report.egressGlobalsPresent = [`<probe failed: ${message(err)}>`];
266
+ }
267
+ report.mechanics = measureMechanics(module);
268
+ }
269
+ // Independent of the engine: OPFS is measured even when WASM is unavailable,
270
+ // because "which of the two failed" is the whole value of the report.
271
+ report.opfs = await measureOpfs();
272
+ report.verdict = summarise(report);
273
+ return report;
274
+ }
275
+ /**
276
+ * The paste-back block.
277
+ *
278
+ * Fenced with the same `===…-BEGIN===`/`===…-END===` sentinels the shell's W1
279
+ * suite uses, so a report can be lifted verbatim out of a noisy device log by
280
+ * `grep`, and so `W1Suite.reportText`'s clipboard copy carries it unchanged.
281
+ */
282
+ export function formatDeviceProbeReport(report) {
283
+ return [
284
+ `===QUICKJS-PROBE-BEGIN ${report.origin}===`,
285
+ JSON.stringify(report, null, 2),
286
+ `===QUICKJS-PROBE-END ${report.origin}===`,
287
+ ].join("\n");
288
+ }
289
+ //# sourceMappingURL=device-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-probe.js","sourceRoot":"","sources":["../../src/query/device-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAQH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAE7D,oEAAoE;AACpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAiFtC,MAAM,OAAO,GAAG,CAAC,GAAY,EAAU,EAAE,CACvC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAEnD;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,MAAyB;IACrD,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IACpC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,OAAO,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,EAAE,CAAC;IACf,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,SAAS,MAAM,CACb,MAAyB,EACzB,SAAuC,EACvC,IAA+B;IAE/B,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,OAAO,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,EAAE,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAyB;IACjD,MAAM,GAAG,GAAmB;QAC1B,wBAAwB,EAAE,IAAI;QAC9B,+BAA+B,EAAE,IAAI;QACrC,gCAAgC,EAAE,IAAI;QACtC,aAAa,EAAE,eAAe;QAC9B,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,IAAI,CAAC;QACH,GAAG,CAAC,wBAAwB,GAAG,MAAM,CACnC,MAAM,EACN,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAC3C,CAAC,EAAE,EAAE,EAAE;YACL,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;YACrC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,+BAA+B,GAAG,MAAM,CAC1C,MAAM,EACN,CAAC,EAAE,EAAE,EAAE;YACL,EAAE,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;YAC/B,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC,EACD,CAAC,EAAE,EAAE,EAAE;YACL,oEAAoE;YACpE,sEAAsE;YACtE,4DAA4D;YAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACnB,mFAAmF,CACpF,CAAC;YACF,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;YACrC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sEAAsE;QACtE,2EAA2E;QAC3E,8CAA8C;QAC9C,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC;QAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,iEAAiE,OAAO,CAAC,GAAG,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,gCAAgC,GAAG,MAAM,CAC3C,MAAM,EACN,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,EAC3C,CAAC,EAAE,EAAE,EAAE;YACL,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,EAAE,CAC9C,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CACpC,CAAC;YACF,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CACnB,sIAAsI,CACvI,CAAC;YACF,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACZ,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,OAAO,KAAK,UAAU,CAAC;QAChC,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,WAAW;IACxB,MAAM,GAAG,GAAc;QACrB,mBAAmB,EAAE,KAAK;QAC1B,qBAAqB,EAAE,KAAK;QAC5B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;KACnB,CAAC;IAEF,MAAM,OAAO,GACX,UACD,CAAC,SAAS,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,mBAAmB,GAAG,OAAO,OAAO,EAAE,YAAY,KAAK,UAAU,CAAC;IACtE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC7B,GAAG,CAAC,KAAK,GAAG,0CAA0C,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,mBAAmB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IACjD,MAAM,OAAO,GAAG,GAAG,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MACX,OACD,CAAC,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,GAAG,CAAC,qBAAqB,GAAG,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;YAC/B,GAAG,CAAC,KAAK,GAAG,+CAA+C,CAAC;YAC5D,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEpB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,GAAG,CAAC,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,GAAG,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACvF,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0EAA0E;QAC1E,yEAAyE;QACzE,mEAAmE;QACnE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,MAAyB;IAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QAC1B,OAAO,yCAAyC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,oBAAoB,gDAAgD,CAAC;IAClJ,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CACX,2BAA2B,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC;QACN,IAAI,CAAC,CAAC,wBAAwB,KAAK,KAAK,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,CAAC,+BAA+B,KAAK,KAAK,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,CAAC,gCAAgC,KAAK,KAAK,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CACX,8BAA8B,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,oBAAoB,mEAAmE,CAC3I,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,0CAA0C,MAAM,CAAC,UAAU,CAAC,EAAE,sHAAsH;QACtL,CAAC,CAAC,6BAA6B,MAAM,CAAC,UAAU,CAAC,EAAE,mBAAmB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAChG,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,GAAG,GAAI,UAAqD,CAAC,SAAS,CAAC;IAC7E,MAAM,MAAM,GAAsB;QAChC,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,oBAAoB;QAC7B,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,MAAM,EACH,UAAiD,CAAC,QAAQ,EAAE,MAAM;YACnE,eAAe;QACjB,SAAS,EAAE,GAAG,EAAE,SAAS,IAAI,gBAAgB;QAC7C,aAAa,EACV,UAA4C,CAAC,eAAe,KAAK,IAAI;QACxE,UAAU,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;QACnC,oBAAoB,EAAE,IAAI;QAC1B,SAAS,EAAE,IAAI;QACf,IAAI,EAAE;YACJ,mBAAmB,EAAE,KAAK;YAC1B,qBAAqB,EAAE,KAAK;YAC5B,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,KAAK;SACnB;QACD,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,IAAI,MAAqC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACnC,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wEAAwE;YACxE,uBAAuB;YACvB,MAAM,CAAC,oBAAoB,GAAG,CAAC,kBAAkB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,6EAA6E;IAC7E,sEAAsE;IACtE,MAAM,CAAC,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;IAElC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAyB;IAC/D,OAAO;QACL,0BAA0B,MAAM,CAAC,MAAM,KAAK;QAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,wBAAwB,MAAM,CAAC,MAAM,KAAK;KAC3C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * PS-Lite's query layer: the browser half of the two-runtime split.
3
+ *
4
+ * `packages/core/src/query/` holds everything that is not runtime-specific —
5
+ * the agent loop, the prompt, the `vana` API, the coverage ledger and the
6
+ * result-frame protocol. This directory holds the parts that could only be
7
+ * written once you know you are in a browser: a QuickJS-WASM sandbox in place
8
+ * of an OS sandbox, and an in-memory grant in place of a scratch directory.
9
+ *
10
+ * See design §19.17 for the measurements that chose QuickJS, and
11
+ * `quickjs-sandbox.ts`'s header for what one containment layer costs against
12
+ * the Node path's two.
13
+ */
14
+ export { createQuickJsSandbox, loadQuickJsModule, probeVmGlobals, quickJsEnforcement, verifyOutcome, EGRESS_GLOBALS, MAX_STACK_BYTES, type QuickJsSandboxOptions, type VmGlobalProbe, } from "./quickjs-sandbox.js";
15
+ export { createLiteToolHost, type LiteExecuteOutcome, type LiteGrantedScope, type LiteToolHost, type LiteToolHostOptions, } from "./lite-tool-host.js";
16
+ export { applyGrantCoverage, materializeGrantInMemory, resolveGrant, runLiteQuery, unwrapEnvelopeData, LITE_QUERY_BUDGET, LITE_QUERY_LIMITS, VIRTUAL_GRANT_ROOT, type LiteMaterializedGrant, type LiteMaterializedScope, type LiteQueryEvent, type LiteQueryEventSink, type LiteScopePayload, type LiteScopeReader, type LiteSkippedScope, type LiteUnwrapResult, type RunLiteQueryOptions, } from "./lite-query-service.js";
17
+ export { createLiteAskPersonalDataPort } from "./mcp-ask-port.js";
18
+ //# sourceMappingURL=index.d.ts.map