@pyric/cli 0.1.0-alpha.30.1 → 0.1.0-alpha.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/assurance/.generated/conformance-verdicts.d.ts +4 -0
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  3. package/dist/assurance/.generated/conformance-verdicts.js +4 -0
  4. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  5. package/dist/bridge/server/peer.d.ts +10 -0
  6. package/dist/bridge/server/peer.d.ts.map +1 -1
  7. package/dist/bridge/server/peer.js +46 -1
  8. package/dist/bridge/server/peer.js.map +1 -1
  9. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  10. package/dist/conformance/.generated/can-i-use.js +1 -1
  11. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  12. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  13. package/dist/conformance/.generated/conformance-docs.js +1 -1
  14. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  15. package/dist/serve/ai-diagnostics-relay.d.ts +4 -1
  16. package/dist/serve/ai-diagnostics-relay.d.ts.map +1 -1
  17. package/dist/serve/ai-diagnostics-relay.js +3 -0
  18. package/dist/serve/ai-diagnostics-relay.js.map +1 -1
  19. package/dist/serve/ai-proxy.d.ts +21 -1
  20. package/dist/serve/ai-proxy.d.ts.map +1 -1
  21. package/dist/serve/ai-proxy.js +39 -14
  22. package/dist/serve/ai-proxy.js.map +1 -1
  23. package/dist/serve/ai-terminal-blocks.d.ts +6 -4
  24. package/dist/serve/ai-terminal-blocks.d.ts.map +1 -1
  25. package/dist/serve/ai-terminal-blocks.js +7 -4
  26. package/dist/serve/ai-terminal-blocks.js.map +1 -1
  27. package/dist/serve/ai-terminal-text.d.ts +8 -0
  28. package/dist/serve/ai-terminal-text.d.ts.map +1 -1
  29. package/dist/serve/ai-terminal-text.js +10 -0
  30. package/dist/serve/ai-terminal-text.js.map +1 -1
  31. package/dist/serve/entries/ai.d.ts.map +1 -1
  32. package/dist/serve/entries/ai.js +28 -26
  33. package/dist/serve/entries/ai.js.map +1 -1
  34. package/dist/serve/gemini-error-redaction.d.ts +6 -0
  35. package/dist/serve/gemini-error-redaction.d.ts.map +1 -0
  36. package/dist/serve/gemini-error-redaction.js +61 -0
  37. package/dist/serve/gemini-error-redaction.js.map +1 -0
  38. package/dist/serve/gemini-proxy.d.ts +40 -0
  39. package/dist/serve/gemini-proxy.d.ts.map +1 -0
  40. package/dist/serve/gemini-proxy.js +105 -0
  41. package/dist/serve/gemini-proxy.js.map +1 -0
  42. package/dist/serve/namespace.d.ts +9 -0
  43. package/dist/serve/namespace.d.ts.map +1 -1
  44. package/dist/serve/namespace.js +66 -14
  45. package/dist/serve/namespace.js.map +1 -1
  46. package/dist/serve/sandbox-session.d.ts +3 -0
  47. package/dist/serve/sandbox-session.d.ts.map +1 -1
  48. package/dist/serve/sandbox-session.js +1 -0
  49. package/dist/serve/sandbox-session.js.map +1 -1
  50. package/dist/serve/site-ui/docs/ai-compat/index.html +20 -1
  51. package/dist/serve/site-ui/docs/ai-compat.md +21 -0
  52. package/dist/serve/site-ui/docs/app-check-compat/index.html +8 -8
  53. package/dist/serve/site-ui/docs/app-check-compat.md +8 -8
  54. package/dist/serve/site-ui/docs/build/ai-logic/index.html +19 -5
  55. package/dist/serve/site-ui/docs/build/ai-logic.md +19 -2
  56. package/dist/serve/site-ui/docs/index.json +10 -0
  57. package/dist/serve/site-ui/docs/storage-compat/index.html +2 -2
  58. package/dist/serve/site-ui/docs/storage-compat.md +2 -2
  59. package/dist/serve/site-ui/docs/tutorial/index.html +11 -1
  60. package/dist/serve/site-ui/docs/tutorial.md +12 -1
  61. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  62. package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
  63. package/dist/serve/vite-sandbox-generation.js +2 -0
  64. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  65. package/dist/serve/worker/ai-proxy-paths.d.ts +32 -0
  66. package/dist/serve/worker/ai-proxy-paths.d.ts.map +1 -0
  67. package/dist/serve/worker/ai-proxy-paths.js +20 -0
  68. package/dist/serve/worker/ai-proxy-paths.js.map +1 -0
  69. package/dist/serve/worker/client/ai.d.ts +3 -1
  70. package/dist/serve/worker/client/ai.d.ts.map +1 -1
  71. package/dist/serve/worker/client/ai.js +3 -0
  72. package/dist/serve/worker/client/ai.js.map +1 -1
  73. package/dist/serve/worker/entry.js +2 -0
  74. package/dist/serve/worker/entry.js.map +1 -1
  75. package/dist/serve/worker/host-ai.d.ts +4 -5
  76. package/dist/serve/worker/host-ai.d.ts.map +1 -1
  77. package/dist/serve/worker/host-ai.js +19 -23
  78. package/dist/serve/worker/host-ai.js.map +1 -1
  79. package/dist/serve/worker/host-context.d.ts +13 -4
  80. package/dist/serve/worker/host-context.d.ts.map +1 -1
  81. package/dist/serve/worker/host-context.js.map +1 -1
  82. package/dist/serve/worker/inbound-validation/operation-arguments.d.ts.map +1 -1
  83. package/dist/serve/worker/inbound-validation/operation-arguments.js +11 -0
  84. package/dist/serve/worker/inbound-validation/operation-arguments.js.map +1 -1
  85. package/dist/serve/worker/protocol.d.ts +13 -0
  86. package/dist/serve/worker/protocol.d.ts.map +1 -1
  87. package/dist/serve/worker/protocol.js.map +1 -1
  88. package/package.json +4 -4
  89. package/src/assurance/.generated/conformance-verdicts.ts +4 -0
  90. package/src/bridge/server/peer.ts +49 -1
  91. package/src/conformance/.generated/can-i-use.ts +1 -1
  92. package/src/conformance/.generated/conformance-docs.ts +1 -1
  93. package/src/serve/ai-diagnostics-relay.ts +6 -1
  94. package/src/serve/ai-proxy.ts +43 -14
  95. package/src/serve/ai-terminal-blocks.ts +8 -4
  96. package/src/serve/ai-terminal-text.ts +11 -0
  97. package/src/serve/entries/ai.ts +28 -27
  98. package/src/serve/gemini-error-redaction.ts +60 -0
  99. package/src/serve/gemini-proxy.ts +140 -0
  100. package/src/serve/namespace.ts +69 -14
  101. package/src/serve/sandbox-session.ts +4 -0
  102. package/src/serve/vite-sandbox-generation.ts +2 -0
  103. package/src/serve/worker/ai-proxy-paths.ts +35 -0
  104. package/src/serve/worker/client/ai.ts +6 -1
  105. package/src/serve/worker/entry.ts +2 -0
  106. package/src/serve/worker/host-ai.ts +23 -23
  107. package/src/serve/worker/host-context.ts +13 -3
  108. package/src/serve/worker/inbound-validation/operation-arguments.ts +11 -0
  109. package/src/serve/worker/protocol.ts +14 -2
@@ -1 +1 @@
1
- {"version":3,"file":"conformance-docs.js","sourceRoot":"","sources":["../../../src/conformance/.generated/conformance-docs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conformance-docs.js","sourceRoot":"","sources":["../../../src/conformance/.generated/conformance-docs.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,8 @@ import type { SandboxEvent } from 'pyric/sandbox';
9
9
  * agent driving `pyric dev` in process therefore saw NOTHING.
10
10
  *
11
11
  * - `request_rejected`: a bad role, empty `contents`, a missing thought
12
- * signature, or an engine that answered an error envelope.
12
+ * signature, a request without a valid App Check token, or an engine
13
+ * that answered an error envelope.
13
14
  * - `response_blocked`: the SILENT refusal. A safety / recitation /
14
15
  * blocklist filter answers HTTP 200 with an empty candidate, so nothing
15
16
  * throws anywhere and the app simply renders nothing.
@@ -65,6 +66,8 @@ interface AiRejectionRelayPayload {
65
66
  code?: number;
66
67
  /** The rejection reason: production's own message for shape errors. */
67
68
  message: string;
69
+ /** Pyric's guidance beside production's message, such as the App Check gate's. */
70
+ hint?: string;
68
71
  }
69
72
  /** Shape POSTed for a `response_blocked` event. Carries the wire's own
70
73
  * vocabulary, `finishReason` (a candidate was withheld) or `blockReason`
@@ -1 +1 @@
1
- {"version":3,"file":"ai-diagnostics-relay.d.ts","sourceRoot":"","sources":["../../src/serve/ai-diagnostics-relay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH;;;oDAGoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC;CAC7D;AAED;6DAC6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,sBAAsB,CAAC;AAKtF;;4EAE4E;AAC5E,UAAU,uBAAuB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;kEAC8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;iBAIiB;AACjB,UAAU,qBAAqB;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;qEACqE;AACrE,UAAU,+BAA+B;IACvC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAChC,uBAAuB,GACvB,qBAAqB,GACrB,+BAA+B,CAAC;AAoGpC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,wBAAwB,GAAG,IAAI,CAM3F;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,KAAK,GAAG,IAAI,CAgB5F"}
1
+ {"version":3,"file":"ai-diagnostics-relay.d.ts","sourceRoot":"","sources":["../../src/serve/ai-diagnostics-relay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH;;;oDAGoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC;CAC7D;AAED;6DAC6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,sBAAsB,CAAC;AAKtF;;4EAE4E;AAC5E,UAAU,uBAAuB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;kEAC8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;iBAIiB;AACjB,UAAU,qBAAqB;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;qEACqE;AACrE,UAAU,+BAA+B;IACvC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAChC,uBAAuB,GACvB,qBAAqB,GACrB,+BAA+B,CAAC;AAsGpC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,wBAAwB,GAAG,IAAI,CAM3F;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,KAAK,GAAG,IAAI,CAgB5F"}
@@ -34,6 +34,9 @@ function toRejectionPayload(event) {
34
34
  payload.status = detailText(detail, 'status');
35
35
  if (typeof detail.code === 'number')
36
36
  payload.code = detail.code;
37
+ const hint = detailText(detail, 'hint');
38
+ if (hint !== undefined)
39
+ payload.hint = hint;
37
40
  return payload;
38
41
  }
39
42
  /** Narrow a `response_blocked` event to its relay payload. */
@@ -1 +1 @@
1
- {"version":3,"file":"ai-diagnostics-relay.js","sourceRoot":"","sources":["../../src/serve/ai-diagnostics-relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-diagnostics-relay.js","sourceRoot":"","sources":["../../src/serve/ai-diagnostics-relay.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,9 @@ export interface AiDiagnosticThrottle {
22
22
  export declare const AI_PROXY_DEFAULT_UPSTREAM = "http://localhost:11434/v1";
23
23
  /** The route the dev server mounts for OpenAI-compatible traffic. */
24
24
  export declare const AI_PROXY_ROUTE = "/__pyric/ai-proxy";
25
+ /** Largest request body the proxy forwards: the hosted method route's limit,
26
+ * which already carries AI requests with inline images. */
27
+ export declare const AI_PROXY_BODY_LIMIT_BYTES: number;
25
28
  /** The upstream-failure shapes the proxy surfaces to the terminal. */
26
29
  type AiProxyFailure = {
27
30
  kind: 'unreachable';
@@ -91,6 +94,12 @@ export declare function permitAiUpstreams(ai: {
91
94
  * Responses remain incremental; cancellation stops reading without a warning.
92
95
  */
93
96
  export declare function fetchAiUpstream(input: Parameters<typeof fetch>[0], init: RequestInit | undefined, throttle: AiDiagnosticThrottle, logger?: ServeLogger, source?: string): Promise<Response>;
97
+ /**
98
+ * Read an AI proxy request's body, at most {@link AI_PROXY_BODY_LIMIT_BYTES}.
99
+ * Past the limit it answers 413, and on a broken upload 400, and returns
100
+ * null: the caller sends nothing upstream. Both proxy routes read through it.
101
+ */
102
+ export declare function readAiProxyBody(req: IncomingMessage, res: ServerResponse): Promise<Uint8Array<ArrayBuffer> | null>;
94
103
  /**
95
104
  * Handle `POST /__pyric/ai-proxy/<suffix>`: a same-origin passthrough to the
96
105
  * configured OpenAI-compatible upstream, so the browser openai engine
@@ -101,7 +110,11 @@ export declare function fetchAiUpstream(input: Parameters<typeof fetch>[0], init
101
110
  * - POST only (the OpenAI chat-completions surface is POST); 405 otherwise.
102
111
  * - the path suffix + query ride through verbatim
103
112
  * (`/__pyric/ai-proxy/chat/completions` becomes `<upstream>/chat/completions`).
104
- * - the request body is forwarded verbatim; headers minus the
113
+ * - the caller must pass the namespace's loopback guard (Host, and an
114
+ * Origin naming this server when one is sent), which the namespace runs
115
+ * before this handler: the upstream may carry the developer's key.
116
+ * - the request body is forwarded verbatim, up to
117
+ * {@link AI_PROXY_BODY_LIMIT_BYTES} (413 past it); headers minus the
105
118
  * origin-sensitive/hop-by-hop set above (`authorization` DOES forward,
106
119
  * since upstreams may require a key).
107
120
  * - the response body is STREAMED through chunk-by-chunk. SSE passthrough
@@ -115,5 +128,12 @@ export declare function fetchAiUpstream(input: Parameters<typeof fetch>[0], init
115
128
  * means dropped silently (same opt-out contract as the denial relay).
116
129
  */
117
130
  export declare function handleAiProxy(configuredUpstream: string | undefined, throttle: AiDiagnosticThrottle, req: IncomingMessage, res: ServerResponse, url: URL, logger?: ServeLogger): Promise<void>;
131
+ /**
132
+ * Send an upstream's answer to the caller: its status and content type, then
133
+ * the body chunk by chunk. SSE passthrough must never buffer. A dropped
134
+ * client cancels the upstream read so an abandoned stream doesn't keep the
135
+ * upstream generating.
136
+ */
137
+ export declare function relayAiUpstream(upstream: Response, res: ServerResponse): Promise<void>;
118
138
  export {};
119
139
  //# sourceMappingURL=ai-proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-proxy.d.ts","sourceRoot":"","sources":["../../src/serve/ai-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD;;mDAEmD;AACnD,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAChD;AAED,mEAAmE;AACnE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AAErE,qEAAqE;AACrE,eAAO,MAAM,cAAc,sBAAsB,CAAC;AA0BlD,sEAAsE;AACtE,KAAK,cAAc,GACf;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACzE;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAwD/E;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAa,GAAG,MAAM,CA2BzF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAA;CAAE,CAY1D;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAKjF;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC7C,GAAG,IAAI,CASP;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAClC,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,SAAa,GAClB,OAAO,CAAC,QAAQ,CAAC,CA8CnB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,aAAa,CACjC,kBAAkB,EAAE,MAAM,GAAG,SAAS,EACtC,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,GAAG,EACR,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAuEf"}
1
+ {"version":3,"file":"ai-proxy.d.ts","sourceRoot":"","sources":["../../src/serve/ai-proxy.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,15 @@ import { redactUrl } from 'pyric/ai/internal';
2
2
  import { sanitizeForTerminal } from './ai-terminal-text.js';
3
3
  import { permitGuardHost } from '../register/net-guard.js';
4
4
  import { FIREBASE_AI_LOGIC_HOST } from '../google-endpoints.js';
5
+ import { HOSTED_METHOD_BODY_LIMIT } from './hosted/method-protocol.js';
6
+ import { BODY_TOO_LARGE_CODE, collectRawBody } from '../bridge/server/peer.js';
5
7
  /** Default upstream: local Ollama's OpenAI-compatible endpoint. */
6
8
  export const AI_PROXY_DEFAULT_UPSTREAM = 'http://localhost:11434/v1';
7
9
  /** The route the dev server mounts for OpenAI-compatible traffic. */
8
10
  export const AI_PROXY_ROUTE = '/__pyric/ai-proxy';
11
+ /** Largest request body the proxy forwards: the hosted method route's limit,
12
+ * which already carries AI requests with inline images. */
13
+ export const AI_PROXY_BODY_LIMIT_BYTES = HOSTED_METHOD_BODY_LIMIT;
9
14
  /**
10
15
  * Request headers that must NOT be forwarded upstream: origin-sensitive
11
16
  * browser context (`origin`/`referer`/`cookie`, since the upstream is a
@@ -233,6 +238,22 @@ export async function fetchAiUpstream(input, init, throttle, logger, source = 'a
233
238
  status: upstream.status, statusText: upstream.statusText, headers: upstream.headers,
234
239
  });
235
240
  }
241
+ /**
242
+ * Read an AI proxy request's body, at most {@link AI_PROXY_BODY_LIMIT_BYTES}.
243
+ * Past the limit it answers 413, and on a broken upload 400, and returns
244
+ * null: the caller sends nothing upstream. Both proxy routes read through it.
245
+ */
246
+ export async function readAiProxyBody(req, res) {
247
+ try {
248
+ return await collectRawBody(req, AI_PROXY_BODY_LIMIT_BYTES);
249
+ }
250
+ catch (error) {
251
+ const tooLarge = error.code === BODY_TOO_LARGE_CODE;
252
+ const status = tooLarge ? 413 : 400;
253
+ res.writeHead(status, { 'content-type': 'text/plain' }).end(tooLarge ? 'Payload Too Large' : 'Bad Request');
254
+ return null;
255
+ }
256
+ }
236
257
  /**
237
258
  * Handle `POST /__pyric/ai-proxy/<suffix>`: a same-origin passthrough to the
238
259
  * configured OpenAI-compatible upstream, so the browser openai engine
@@ -243,7 +264,11 @@ export async function fetchAiUpstream(input, init, throttle, logger, source = 'a
243
264
  * - POST only (the OpenAI chat-completions surface is POST); 405 otherwise.
244
265
  * - the path suffix + query ride through verbatim
245
266
  * (`/__pyric/ai-proxy/chat/completions` becomes `<upstream>/chat/completions`).
246
- * - the request body is forwarded verbatim; headers minus the
267
+ * - the caller must pass the namespace's loopback guard (Host, and an
268
+ * Origin naming this server when one is sent), which the namespace runs
269
+ * before this handler: the upstream may carry the developer's key.
270
+ * - the request body is forwarded verbatim, up to
271
+ * {@link AI_PROXY_BODY_LIMIT_BYTES} (413 past it); headers minus the
247
272
  * origin-sensitive/hop-by-hop set above (`authorization` DOES forward,
248
273
  * since upstreams may require a key).
249
274
  * - the response body is STREAMED through chunk-by-chunk. SSE passthrough
@@ -264,17 +289,10 @@ export async function handleAiProxy(configuredUpstream, throttle, req, res, url,
264
289
  const upstreamBase = resolveAiProxyUpstream(configuredUpstream).target;
265
290
  const suffix = url.pathname.slice(AI_PROXY_ROUTE.length);
266
291
  const target = `${upstreamBase}${suffix}${url.search}`;
267
- // Buffer the REQUEST body (small JSON payloads); the RESPONSE streams.
268
- const raw = await new Promise((resolve, reject) => {
269
- const chunks = [];
270
- req.on('data', (c) => chunks.push(c));
271
- req.on('end', () => resolve(Buffer.concat(chunks)));
272
- req.on('error', reject);
273
- });
274
- // Copy into a plain-ArrayBuffer view; fetch's BodyInit typing rejects
275
- // Buffer's ArrayBufferLike backing.
276
- const body = new Uint8Array(raw.byteLength);
277
- body.set(raw);
292
+ // The request body is a bounded JSON payload, read once; the RESPONSE streams.
293
+ const body = await readAiProxyBody(req, res);
294
+ if (body === null)
295
+ return;
278
296
  const headers = {};
279
297
  for (const [key, value] of Object.entries(req.headers)) {
280
298
  if (value === undefined)
@@ -298,6 +316,15 @@ export async function handleAiProxy(configuredUpstream, throttle, req, res, url,
298
316
  `(default ${AI_PROXY_DEFAULT_UPSTREAM}).`);
299
317
  return;
300
318
  }
319
+ await relayAiUpstream(upstream, res);
320
+ }
321
+ /**
322
+ * Send an upstream's answer to the caller: its status and content type, then
323
+ * the body chunk by chunk. SSE passthrough must never buffer. A dropped
324
+ * client cancels the upstream read so an abandoned stream doesn't keep the
325
+ * upstream generating.
326
+ */
327
+ export async function relayAiUpstream(upstream, res) {
301
328
  const responseHeaders = { 'cache-control': 'no-store' };
302
329
  const contentType = upstream.headers.get('content-type');
303
330
  if (contentType)
@@ -308,8 +335,6 @@ export async function handleAiProxy(configuredUpstream, throttle, req, res, url,
308
335
  return;
309
336
  }
310
337
  res.flushHeaders?.();
311
- // Chunk-by-chunk passthrough. A dropped client cancels the upstream read
312
- // so an abandoned SSE stream doesn't keep the upstream generating.
313
338
  const reader = upstream.body.getReader();
314
339
  res.on('close', () => {
315
340
  void reader.cancel().catch(() => { });
@@ -1 +1 @@
1
- {"version":3,"file":"ai-proxy.js","sourceRoot":"","sources":["../../src/serve/ai-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-proxy.js","sourceRoot":"","sources":["../../src/serve/ai-proxy.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ export interface AiRejectionPayload {
12
12
  code?: unknown;
13
13
  /** The rejection reason: production's own message for shape errors. */
14
14
  message?: unknown;
15
+ /** Pyric's guidance beside production's message, such as the App Check gate's. */
16
+ hint?: unknown;
15
17
  }
16
18
  /** Loosely-typed mirror of the AI blocked-response payload. Unlike a
17
19
  * rejection this carries no `message`: a filter block has no error envelope
@@ -51,10 +53,10 @@ export type AiDiagnosticPayload = AiRejectionPayload & AiBlockedPayload & AiMode
51
53
  /**
52
54
  * Format a relayed AI broker rejection into the compact terminal block, the
53
55
  * same ` [pyric] ...` idiom the denial relay and the ai-proxy warning print.
54
- * Three lines at most: the reason production itself gives, then the model
55
- * (with the resolved engine, since a rejection reads very differently for
56
- * `scripted` than for a real upstream), then the wire status. Exported for
57
- * unit tests.
56
+ * The reason production itself gives, then the model (with the resolved
57
+ * engine, since a rejection reads very differently for `scripted` than for a
58
+ * real upstream), then the wire status, then pyric's guidance when the broker
59
+ * gave one (the App Check gate does). Exported for unit tests.
58
60
  */
59
61
  export declare function formatAiRejectionBlock(payload: AiRejectionPayload): string;
60
62
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ai-terminal-blocks.d.ts","sourceRoot":"","sources":["../../src/serve/ai-terminal-blocks.ts"],"names":[],"mappings":"AAkBA;8DAC8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;mCAGmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;yDAEyD;AACzD,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,0BAA0B,CAAC;AA4BrG;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAc1E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAgBtE;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CAS1F;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC;IAC7C,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACrD,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACrD;;8DAE0D;IAC1D,UAAU,EAAE,OAAO,CAAC;CACrB;AAwBD;+DAC+D;AAC/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAIxE"}
1
+ {"version":3,"file":"ai-terminal-blocks.d.ts","sourceRoot":"","sources":["../../src/serve/ai-terminal-blocks.ts"],"names":[],"mappings":"AAkBA;8DAC8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;mCAGmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;yDAEyD;AACzD,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,0BAA0B,CAAC;AA4BrG;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAgB1E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAgBtE;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CAS1F;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC;IAC7C,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACrD,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACrD;;8DAE0D;IAC1D,UAAU,EAAE,OAAO,CAAC;CACrB;AAwBD;+DAC+D;AAC/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAIxE"}
@@ -31,10 +31,10 @@ function formatModelLine(model, engine) {
31
31
  /**
32
32
  * Format a relayed AI broker rejection into the compact terminal block, the
33
33
  * same ` [pyric] ...` idiom the denial relay and the ai-proxy warning print.
34
- * Three lines at most: the reason production itself gives, then the model
35
- * (with the resolved engine, since a rejection reads very differently for
36
- * `scripted` than for a real upstream), then the wire status. Exported for
37
- * unit tests.
34
+ * The reason production itself gives, then the model (with the resolved
35
+ * engine, since a rejection reads very differently for `scripted` than for a
36
+ * real upstream), then the wire status, then pyric's guidance when the broker
37
+ * gave one (the App Check gate does). Exported for unit tests.
38
38
  */
39
39
  export function formatAiRejectionBlock(payload) {
40
40
  const message = readText(payload.message) ?? 'request rejected';
@@ -51,6 +51,9 @@ export function formatAiRejectionBlock(payload) {
51
51
  suffix = ` (${code})`;
52
52
  lines.push(` ${label}${suffix}`);
53
53
  }
54
+ const hint = readText(payload.hint);
55
+ if (hint !== null)
56
+ lines.push(` ${hint}`);
54
57
  return lines.join('\n');
55
58
  }
56
59
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ai-terminal-blocks.js","sourceRoot":"","sources":["../../src/serve/ai-terminal-blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-terminal-blocks.js","sourceRoot":"","sources":["../../src/serve/ai-terminal-blocks.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,14 @@
23
23
  export declare const AI_TERMINAL_TEXT_MAX = 512;
24
24
  /** Cut text to {@link AI_TERMINAL_TEXT_MAX}, marking the cut. */
25
25
  export declare function capTerminalText(text: string): string;
26
+ /**
27
+ * Replace control, bidi-override and line-separator characters with spaces,
28
+ * and change nothing else: no flattening, no whitespace collapsing, no cut.
29
+ * For one line of text a reader copies out of the terminal, such as a
30
+ * pasteable command or JSON fixture, where the exact spacing and the whole
31
+ * length matter. The caller splits lines first and bounds the total.
32
+ */
33
+ export declare function stripTerminalControls(text: string): string;
26
34
  /**
27
35
  * Flatten an upstream-authored string into ONE terminal-safe line.
28
36
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ai-terminal-text.d.ts","sourceRoot":"","sources":["../../src/serve/ai-terminal-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAKxC,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAOD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGxD"}
1
+ {"version":3,"file":"ai-terminal-text.d.ts","sourceRoot":"","sources":["../../src/serve/ai-terminal-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAKxC,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAOD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGxD"}
@@ -32,6 +32,16 @@ export function capTerminalText(text) {
32
32
  /** Control, bidi-override, and line-separator characters. A remote string
33
33
  * carrying these can forge a terminal line or reverse the text around it. */
34
34
  const TERMINAL_UNSAFE_CHARS = /[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u2028-\u202e\u2066-\u2069\ufeff]/g;
35
+ /**
36
+ * Replace control, bidi-override and line-separator characters with spaces,
37
+ * and change nothing else: no flattening, no whitespace collapsing, no cut.
38
+ * For one line of text a reader copies out of the terminal, such as a
39
+ * pasteable command or JSON fixture, where the exact spacing and the whole
40
+ * length matter. The caller splits lines first and bounds the total.
41
+ */
42
+ export function stripTerminalControls(text) {
43
+ return text.replace(TERMINAL_UNSAFE_CHARS, ' ');
44
+ }
35
45
  /**
36
46
  * Flatten an upstream-authored string into ONE terminal-safe line.
37
47
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ai-terminal-text.js","sourceRoot":"","sources":["../../src/serve/ai-terminal-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAAG,iBAAiB,EAAE,CAAC;AACtE,CAAC;AAED;8EAC8E;AAC9E,MAAM,qBAAqB,GACzB,iFAAiF,CAAC;AAEpF;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACvF,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"ai-terminal-text.js","sourceRoot":"","sources":["../../src/serve/ai-terminal-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAAG,iBAAiB,EAAE,CAAC;AACtE,CAAC;AAED;8EAC8E;AAC9E,MAAM,qBAAqB,GACzB,iFAAiF,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACvF,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../src/serve/entries/ai.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,UAAU,CAAC;AAU/C,OAAO,EACL,OAAO,EACP,WAAW,EACX,OAAO,EACP,WAAW,EACX,eAAe,EACf,eAAe,EACf,OAAO,EACP,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAyMlB,eAAO,MAAM,KAAK,EAuCb,OAAO,UAAU,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../src/serve/entries/ai.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,UAAU,CAAC;AAW/C,OAAO,EACL,OAAO,EACP,WAAW,EACX,OAAO,EACP,WAAW,EACX,eAAe,EACf,eAAe,EACf,OAAO,EACP,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAqMlB,eAAO,MAAM,KAAK,EAuCb,OAAO,UAAU,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,cAAc,qBAAqB,CAAC"}
@@ -16,8 +16,11 @@
16
16
  * config with no `baseUrl` targets serve's same-origin `/__pyric/ai-proxy`
17
17
  * route (which forwards to the configured upstream, default
18
18
  * `http://localhost:11434/v1`) — so a localhost Ollama needs no CORS setup
19
- * on EITHER path. A custom AnswerEngine OBJECT can't cross the port and is
20
- * rejected in worker mode rather than creating a second page-local backend.
19
+ * on EITHER path. A gemini config without its own `apiKey` sends through
20
+ * `/__pyric/ai-proxy/gemini`, where the server attaches the key from its
21
+ * environment, so the key never reaches the page. A custom AnswerEngine
22
+ * OBJECT can't cross the port and is rejected in worker mode rather than
23
+ * creating a second page-local backend.
21
24
  * Direct/in-process `pyric/ai` sandboxes still accept custom engines.
22
25
  *
23
26
  * Engine config is per-sandbox (#98.4) and first-call-wins at the worker
@@ -32,12 +35,11 @@ import { createTransportAI } from 'pyric/ai/internal';
32
35
  import { FirebaseError, getApp } from 'pyric/app';
33
36
  import { isSandboxAppDeleted } from 'pyric/app/internal';
34
37
  import { aiGenerateContent, aiCountTokens, aiStreamGenerateContent } from '../worker/client.js';
38
+ import { AI_PROXY_PATH, browserGeminiEngine } from '../worker/ai-proxy-paths.js';
35
39
  import { useWorker } from './worker-runtime.js';
36
40
  import { workerClientForApp } from './app-client.js';
37
41
  // ── Mirror surface — path-independent (the mirror always runs in-page) ────
38
42
  export { AIError, AIErrorCode, Backend, BackendType, GoogleAIBackend, VertexAIBackend, AIModel, ChatSession, ChatSessionBase, GenerativeModel, AnyOfSchema, ArraySchema, BooleanSchema, IntegerSchema, NumberSchema, ObjectSchema, Schema, StringSchema, BlockReason, FinishReason, FunctionCallingMode, HarmBlockMethod, HarmBlockThreshold, HarmCategory, HarmProbability, HarmSeverity, ImageConfigAspectRatio, ImageConfigImageSize, Language, Modality, Outcome, POSSIBLE_ROLES, ResponseModality, SchemaType, ThinkingLevel, URLRetrievalStatus, getGenerativeModel, } from 'pyric/ai';
39
- /** The serve proxy route the browser openai engine defaults to (#98.2). */
40
- const AI_PROXY_PATH = '/__pyric/ai-proxy';
41
43
  /** A custom AnswerEngine object (vs a plain, worker-cloneable EngineConfig). */
42
44
  function isAnswerEngine(engine) {
43
45
  return typeof engine.generateContent === 'function';
@@ -103,20 +105,8 @@ function wireToEngineOption(wire) {
103
105
  };
104
106
  }
105
107
  const isGeminiWire = wire.kind === 'gemini';
106
- if (isGeminiWire) {
107
- const result = {
108
- kind: 'gemini',
109
- };
110
- const hasBaseUrl = wire.baseUrl !== undefined;
111
- if (hasBaseUrl) {
112
- result.baseUrl = wire.baseUrl;
113
- }
114
- const hasApiKey = wire.apiKey !== undefined;
115
- if (hasApiKey) {
116
- result.apiKey = wire.apiKey;
117
- }
118
- return result;
119
- }
108
+ if (isGeminiWire)
109
+ return browserGeminiEngine(wire);
120
110
  return {
121
111
  kind: 'scripted',
122
112
  ...(wire.script !== undefined
@@ -124,7 +114,10 @@ function wireToEngineOption(wire) {
124
114
  : {}),
125
115
  };
126
116
  }
127
- /** In-page path: default an openai config's absent baseUrl to the proxy. */
117
+ /**
118
+ * In-page path: default an openai config's absent baseUrl to the proxy, and
119
+ * send a gemini config without its own key through the gemini proxy.
120
+ */
128
121
  function withProxyDefault(options) {
129
122
  const engine = options?.engine;
130
123
  if (!engine || isAnswerEngine(engine))
@@ -133,6 +126,10 @@ function withProxyDefault(options) {
133
126
  if (config.kind === 'openai' && config.baseUrl === undefined) {
134
127
  return { ...options, engine: { ...config, baseUrl: AI_PROXY_PATH } };
135
128
  }
129
+ const isKeylessGemini = config.kind === 'gemini' && engine.apiKey === undefined;
130
+ if (isKeylessGemini) {
131
+ return { ...options, engine: browserGeminiEngine({ kind: 'gemini' }) };
132
+ }
136
133
  return options;
137
134
  }
138
135
  function aiErrorFromWire(err, modelResource, op) {
@@ -141,23 +138,28 @@ function aiErrorFromWire(err, modelResource, op) {
141
138
  return envelope ? setAiEvidence(aiErrorFromEnvelope(envelope, modelResource, op), err && typeof err === 'object' ? getAiEvidence(err) ?? {} : {}) : err;
142
139
  }
143
140
  // ── The port-forwarding AnswerEngine (worker path) ─────────────────────────
141
+ /**
142
+ * The handle's App Check claim rides every request to the worker broker,
143
+ * which plays AI Logic's gate (`pyric/ai`'s `app-check-gate.ts`).
144
+ */
144
145
  function portEngine(db, engineWire) {
145
- const params = (model, request) => ({
146
+ const params = (model, request, appCheck) => ({
146
147
  model,
147
148
  request,
148
149
  ...(engineWire !== undefined ? { engine: engineWire } : {}),
150
+ ...(appCheck !== undefined ? { appCheck } : {}),
149
151
  });
150
152
  const engine = {
151
- async generateContent(req, model) {
153
+ async generateContent(req, model, appCheck) {
152
154
  try {
153
- return unpackAiEvidence(await aiGenerateContent(db, params(model, req)));
155
+ return unpackAiEvidence(await aiGenerateContent(db, params(model, req, appCheck)));
154
156
  }
155
157
  catch (err) {
156
158
  throw aiErrorFromWire(err, model, 'generateContent');
157
159
  }
158
160
  },
159
- streamGenerateContent(req, model) {
160
- const inner = aiStreamGenerateContent(db, params(model, req));
161
+ streamGenerateContent(req, model, appCheck) {
162
+ const inner = aiStreamGenerateContent(db, params(model, req, appCheck));
161
163
  return (async function* mapped() {
162
164
  try {
163
165
  for await (const chunk of inner)
@@ -168,9 +170,9 @@ function portEngine(db, engineWire) {
168
170
  }
169
171
  })();
170
172
  },
171
- async countTokens(req, model) {
173
+ async countTokens(req, model, appCheck) {
172
174
  try {
173
- return unpackAiEvidence(await aiCountTokens(db, params(model, req)));
175
+ return unpackAiEvidence(await aiCountTokens(db, params(model, req, appCheck)));
174
176
  }
175
177
  catch (err) {
176
178
  throw aiErrorFromWire(err, model, 'countTokens');
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../../src/serve/entries/ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../../src/serve/entries/ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `text` with every credential in `credentials` removed, and every
3
+ * credential URL parameter masked. A JSON body stays JSON.
4
+ */
5
+ export declare function redactUpstreamError(text: string, credentials: readonly string[]): string;
6
+ //# sourceMappingURL=gemini-error-redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-error-redaction.d.ts","sourceRoot":"","sources":["../../src/serve/gemini-error-redaction.ts"],"names":[],"mappings":"AAmDA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAIxF"}