netra-artifacts 0.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/LICENSE +21 -0
- package/README.md +239 -0
- package/dist/artifacts/artifactEnvelope.d.ts +46 -0
- package/dist/artifacts/artifactEnvelope.d.ts.map +1 -0
- package/dist/artifacts/artifactEnvelope.js +217 -0
- package/dist/artifacts/artifactEnvelope.js.map +1 -0
- package/dist/artifacts/artifactStatus.d.ts +9 -0
- package/dist/artifacts/artifactStatus.d.ts.map +1 -0
- package/dist/artifacts/artifactStatus.js +10 -0
- package/dist/artifacts/artifactStatus.js.map +1 -0
- package/dist/artifacts/artifactStore.d.ts +15 -0
- package/dist/artifacts/artifactStore.d.ts.map +1 -0
- package/dist/artifacts/artifactStore.js +35 -0
- package/dist/artifacts/artifactStore.js.map +1 -0
- package/dist/artifacts/htmlArtifact.d.ts +10 -0
- package/dist/artifacts/htmlArtifact.d.ts.map +1 -0
- package/dist/artifacts/htmlArtifact.js +20 -0
- package/dist/artifacts/htmlArtifact.js.map +1 -0
- package/dist/artifacts/index.d.ts +5 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +5 -0
- package/dist/artifacts/index.js.map +1 -0
- package/dist/circuit-breaker/circuitBreaker.d.ts +35 -0
- package/dist/circuit-breaker/circuitBreaker.d.ts.map +1 -0
- package/dist/circuit-breaker/circuitBreaker.js +59 -0
- package/dist/circuit-breaker/circuitBreaker.js.map +1 -0
- package/dist/circuit-breaker/index.d.ts +3 -0
- package/dist/circuit-breaker/index.d.ts.map +1 -0
- package/dist/circuit-breaker/index.js +3 -0
- package/dist/circuit-breaker/index.js.map +1 -0
- package/dist/circuit-breaker/memoryCircuitStore.d.ts +24 -0
- package/dist/circuit-breaker/memoryCircuitStore.d.ts.map +1 -0
- package/dist/circuit-breaker/memoryCircuitStore.js +12 -0
- package/dist/circuit-breaker/memoryCircuitStore.js.map +1 -0
- package/dist/classifier/classifierPrompt.d.ts +7 -0
- package/dist/classifier/classifierPrompt.d.ts.map +1 -0
- package/dist/classifier/classifierPrompt.js +43 -0
- package/dist/classifier/classifierPrompt.js.map +1 -0
- package/dist/classifier/classifyMode.d.ts +21 -0
- package/dist/classifier/classifyMode.d.ts.map +1 -0
- package/dist/classifier/classifyMode.js +50 -0
- package/dist/classifier/classifyMode.js.map +1 -0
- package/dist/classifier/index.d.ts +4 -0
- package/dist/classifier/index.d.ts.map +1 -0
- package/dist/classifier/index.js +4 -0
- package/dist/classifier/index.js.map +1 -0
- package/dist/classifier/rules.d.ts +13 -0
- package/dist/classifier/rules.d.ts.map +1 -0
- package/dist/classifier/rules.js +118 -0
- package/dist/classifier/rules.js.map +1 -0
- package/dist/client/ArtifactChat.d.ts +15 -0
- package/dist/client/ArtifactChat.d.ts.map +1 -0
- package/dist/client/ArtifactChat.js +62 -0
- package/dist/client/ArtifactChat.js.map +1 -0
- package/dist/client/ArtifactMessage.d.ts +24 -0
- package/dist/client/ArtifactMessage.d.ts.map +1 -0
- package/dist/client/ArtifactMessage.js +29 -0
- package/dist/client/ArtifactMessage.js.map +1 -0
- package/dist/client/MarkdownMessage.d.ts +12 -0
- package/dist/client/MarkdownMessage.d.ts.map +1 -0
- package/dist/client/MarkdownMessage.js +141 -0
- package/dist/client/MarkdownMessage.js.map +1 -0
- package/dist/client/index.d.ts +8 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/useArtifactStream.d.ts +9 -0
- package/dist/client/useArtifactStream.d.ts.map +1 -0
- package/dist/client/useArtifactStream.js +210 -0
- package/dist/client/useArtifactStream.js.map +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +4 -0
- package/dist/client.js.map +1 -0
- package/dist/constants/defaults.d.ts +17 -0
- package/dist/constants/defaults.d.ts.map +1 -0
- package/dist/constants/defaults.js +38 -0
- package/dist/constants/defaults.js.map +1 -0
- package/dist/constants/events.d.ts +16 -0
- package/dist/constants/events.d.ts.map +1 -0
- package/dist/constants/events.js +16 -0
- package/dist/constants/events.js.map +1 -0
- package/dist/constants/index.d.ts +4 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +4 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/sandbox.d.ts +19 -0
- package/dist/constants/sandbox.d.ts.map +1 -0
- package/dist/constants/sandbox.js +24 -0
- package/dist/constants/sandbox.js.map +1 -0
- package/dist/core/createArtifactResponse.d.ts +5 -0
- package/dist/core/createArtifactResponse.d.ts.map +1 -0
- package/dist/core/createArtifactResponse.js +16 -0
- package/dist/core/createArtifactResponse.js.map +1 -0
- package/dist/core/createArtifactStream.d.ts +9 -0
- package/dist/core/createArtifactStream.d.ts.map +1 -0
- package/dist/core/createArtifactStream.js +34 -0
- package/dist/core/createArtifactStream.js.map +1 -0
- package/dist/core/createIds.d.ts +3 -0
- package/dist/core/createIds.d.ts.map +1 -0
- package/dist/core/createIds.js +13 -0
- package/dist/core/createIds.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lifecycle.d.ts +35 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +81 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/parseArtifactEnvelope.d.ts +2 -0
- package/dist/core/parseArtifactEnvelope.d.ts.map +1 -0
- package/dist/core/parseArtifactEnvelope.js +3 -0
- package/dist/core/parseArtifactEnvelope.js.map +1 -0
- package/dist/errors/ArtifactParseError.d.ts +10 -0
- package/dist/errors/ArtifactParseError.d.ts.map +1 -0
- package/dist/errors/ArtifactParseError.js +10 -0
- package/dist/errors/ArtifactParseError.js.map +1 -0
- package/dist/errors/ClassificationError.d.ts +13 -0
- package/dist/errors/ClassificationError.d.ts.map +1 -0
- package/dist/errors/ClassificationError.js +13 -0
- package/dist/errors/ClassificationError.js.map +1 -0
- package/dist/errors/StreamError.d.ts +11 -0
- package/dist/errors/StreamError.d.ts.map +1 -0
- package/dist/errors/StreamError.js +11 -0
- package/dist/errors/StreamError.js.map +1 -0
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +4 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/iframe/HtmlArtifactCard.d.ts +9 -0
- package/dist/iframe/HtmlArtifactCard.d.ts.map +1 -0
- package/dist/iframe/HtmlArtifactCard.js +117 -0
- package/dist/iframe/HtmlArtifactCard.js.map +1 -0
- package/dist/iframe/HtmlArtifactCodeView.d.ts +7 -0
- package/dist/iframe/HtmlArtifactCodeView.d.ts.map +1 -0
- package/dist/iframe/HtmlArtifactCodeView.js +20 -0
- package/dist/iframe/HtmlArtifactCodeView.js.map +1 -0
- package/dist/iframe/HtmlArtifactModal.d.ts +16 -0
- package/dist/iframe/HtmlArtifactModal.d.ts.map +1 -0
- package/dist/iframe/HtmlArtifactModal.js +99 -0
- package/dist/iframe/HtmlArtifactModal.js.map +1 -0
- package/dist/iframe/HtmlArtifactPreview.d.ts +15 -0
- package/dist/iframe/HtmlArtifactPreview.d.ts.map +1 -0
- package/dist/iframe/HtmlArtifactPreview.js +214 -0
- package/dist/iframe/HtmlArtifactPreview.js.map +1 -0
- package/dist/iframe/HtmlArtifactToolbar.d.ts +20 -0
- package/dist/iframe/HtmlArtifactToolbar.d.ts.map +1 -0
- package/dist/iframe/HtmlArtifactToolbar.js +14 -0
- package/dist/iframe/HtmlArtifactToolbar.js.map +1 -0
- package/dist/iframe/iframeSizing.d.ts +22 -0
- package/dist/iframe/iframeSizing.d.ts.map +1 -0
- package/dist/iframe/iframeSizing.js +74 -0
- package/dist/iframe/iframeSizing.js.map +1 -0
- package/dist/iframe/iframeSrcDoc.d.ts +34 -0
- package/dist/iframe/iframeSrcDoc.d.ts.map +1 -0
- package/dist/iframe/iframeSrcDoc.js +236 -0
- package/dist/iframe/iframeSrcDoc.js.map +1 -0
- package/dist/iframe/index.d.ts +15 -0
- package/dist/iframe/index.d.ts.map +1 -0
- package/dist/iframe/index.js +9 -0
- package/dist/iframe/index.js.map +1 -0
- package/dist/iframe/styles.d.ts +10 -0
- package/dist/iframe/styles.d.ts.map +1 -0
- package/dist/iframe/styles.js +181 -0
- package/dist/iframe/styles.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/htmlArtifactPrompt.d.ts +15 -0
- package/dist/prompts/htmlArtifactPrompt.d.ts.map +1 -0
- package/dist/prompts/htmlArtifactPrompt.js +248 -0
- package/dist/prompts/htmlArtifactPrompt.js.map +1 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +4 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/markdownPrompt.d.ts +3 -0
- package/dist/prompts/markdownPrompt.d.ts.map +1 -0
- package/dist/prompts/markdownPrompt.js +10 -0
- package/dist/prompts/markdownPrompt.js.map +1 -0
- package/dist/prompts/systemPrompt.d.ts +3 -0
- package/dist/prompts/systemPrompt.d.ts.map +1 -0
- package/dist/prompts/systemPrompt.js +3 -0
- package/dist/prompts/systemPrompt.js.map +1 -0
- package/dist/sanitizer/dangerousPatterns.d.ts +41 -0
- package/dist/sanitizer/dangerousPatterns.d.ts.map +1 -0
- package/dist/sanitizer/dangerousPatterns.js +41 -0
- package/dist/sanitizer/dangerousPatterns.js.map +1 -0
- package/dist/sanitizer/index.d.ts +4 -0
- package/dist/sanitizer/index.d.ts.map +1 -0
- package/dist/sanitizer/index.js +4 -0
- package/dist/sanitizer/index.js.map +1 -0
- package/dist/sanitizer/sanitizeConfig.d.ts +4 -0
- package/dist/sanitizer/sanitizeConfig.d.ts.map +1 -0
- package/dist/sanitizer/sanitizeConfig.js +10 -0
- package/dist/sanitizer/sanitizeConfig.js.map +1 -0
- package/dist/sanitizer/sanitizeHtml.d.ts +20 -0
- package/dist/sanitizer/sanitizeHtml.d.ts.map +1 -0
- package/dist/sanitizer/sanitizeHtml.js +81 -0
- package/dist/sanitizer/sanitizeHtml.js.map +1 -0
- package/dist/server/config.d.ts +6 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +68 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/createArtifactStreamResponse.d.ts +9 -0
- package/dist/server/createArtifactStreamResponse.d.ts.map +1 -0
- package/dist/server/createArtifactStreamResponse.js +104 -0
- package/dist/server/createArtifactStreamResponse.js.map +1 -0
- package/dist/server/createHtmlArtifactStream.d.ts +30 -0
- package/dist/server/createHtmlArtifactStream.d.ts.map +1 -0
- package/dist/server/createHtmlArtifactStream.js +115 -0
- package/dist/server/createHtmlArtifactStream.js.map +1 -0
- package/dist/server/createMarkdownStream.d.ts +13 -0
- package/dist/server/createMarkdownStream.d.ts.map +1 -0
- package/dist/server/createMarkdownStream.js +27 -0
- package/dist/server/createMarkdownStream.js.map +1 -0
- package/dist/server/createSseResponse.d.ts +7 -0
- package/dist/server/createSseResponse.d.ts.map +1 -0
- package/dist/server/createSseResponse.js +11 -0
- package/dist/server/createSseResponse.js.map +1 -0
- package/dist/server/index.d.ts +12 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +12 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +3 -0
- package/dist/server.js.map +1 -0
- package/dist/stream/assembleDocument.d.ts +42 -0
- package/dist/stream/assembleDocument.d.ts.map +1 -0
- package/dist/stream/assembleDocument.js +104 -0
- package/dist/stream/assembleDocument.js.map +1 -0
- package/dist/stream/buffering.d.ts +37 -0
- package/dist/stream/buffering.d.ts.map +1 -0
- package/dist/stream/buffering.js +97 -0
- package/dist/stream/buffering.js.map +1 -0
- package/dist/stream/debounce.d.ts +12 -0
- package/dist/stream/debounce.d.ts.map +1 -0
- package/dist/stream/debounce.js +36 -0
- package/dist/stream/debounce.js.map +1 -0
- package/dist/stream/decoder.d.ts +17 -0
- package/dist/stream/decoder.d.ts.map +1 -0
- package/dist/stream/decoder.js +71 -0
- package/dist/stream/decoder.js.map +1 -0
- package/dist/stream/encoder.d.ts +12 -0
- package/dist/stream/encoder.d.ts.map +1 -0
- package/dist/stream/encoder.js +19 -0
- package/dist/stream/encoder.js.map +1 -0
- package/dist/stream/events.d.ts +20 -0
- package/dist/stream/events.d.ts.map +1 -0
- package/dist/stream/events.js +65 -0
- package/dist/stream/events.js.map +1 -0
- package/dist/stream/index.d.ts +9 -0
- package/dist/stream/index.d.ts.map +1 -0
- package/dist/stream/index.js +9 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/predictiveHtmlParser.d.ts +52 -0
- package/dist/stream/predictiveHtmlParser.d.ts.map +1 -0
- package/dist/stream/predictiveHtmlParser.js +252 -0
- package/dist/stream/predictiveHtmlParser.js.map +1 -0
- package/dist/stream/sse.d.ts +7 -0
- package/dist/stream/sse.d.ts.map +1 -0
- package/dist/stream/sse.js +33 -0
- package/dist/stream/sse.js.map +1 -0
- package/dist/types/artifact.d.ts +88 -0
- package/dist/types/artifact.d.ts.map +1 -0
- package/dist/types/artifact.js +2 -0
- package/dist/types/artifact.js.map +1 -0
- package/dist/types/client.d.ts +98 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/client.js +2 -0
- package/dist/types/client.js.map +1 -0
- package/dist/types/config.d.ts +23 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/errors.d.ts +9 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +2 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/server.d.ts +111 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/server.js +2 -0
- package/dist/types/server.js.map +1 -0
- package/dist/types/stream.d.ts +60 -0
- package/dist/types/stream.d.ts.map +1 -0
- package/dist/types/stream.js +7 -0
- package/dist/types/stream.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/invariant.d.ts +6 -0
- package/dist/utils/invariant.d.ts.map +1 -0
- package/dist/utils/invariant.js +10 -0
- package/dist/utils/invariant.js.map +1 -0
- package/dist/utils/isBrowser.d.ts +3 -0
- package/dist/utils/isBrowser.d.ts.map +1 -0
- package/dist/utils/isBrowser.js +3 -0
- package/dist/utils/isBrowser.js.map +1 -0
- package/dist/utils/mergeConfig.d.ts +6 -0
- package/dist/utils/mergeConfig.d.ts.map +1 -0
- package/dist/utils/mergeConfig.js +17 -0
- package/dist/utils/mergeConfig.js.map +1 -0
- package/dist/utils/noop.d.ts +3 -0
- package/dist/utils/noop.d.ts.map +1 -0
- package/dist/utils/noop.js +3 -0
- package/dist/utils/noop.js.map +1 -0
- package/dist/utils/safeJsonParse.d.ts +7 -0
- package/dist/utils/safeJsonParse.d.ts.map +1 -0
- package/dist/utils/safeJsonParse.js +62 -0
- package/dist/utils/safeJsonParse.js.map +1 -0
- package/dist-cjs/artifacts/artifactEnvelope.js +224 -0
- package/dist-cjs/artifacts/artifactEnvelope.js.map +1 -0
- package/dist-cjs/artifacts/artifactStatus.js +14 -0
- package/dist-cjs/artifacts/artifactStatus.js.map +1 -0
- package/dist-cjs/artifacts/artifactStore.js +39 -0
- package/dist-cjs/artifacts/artifactStore.js.map +1 -0
- package/dist-cjs/artifacts/htmlArtifact.js +24 -0
- package/dist-cjs/artifacts/htmlArtifact.js.map +1 -0
- package/dist-cjs/artifacts/index.js +21 -0
- package/dist-cjs/artifacts/index.js.map +1 -0
- package/dist-cjs/circuit-breaker/circuitBreaker.js +63 -0
- package/dist-cjs/circuit-breaker/circuitBreaker.js.map +1 -0
- package/dist-cjs/circuit-breaker/index.js +19 -0
- package/dist-cjs/circuit-breaker/index.js.map +1 -0
- package/dist-cjs/circuit-breaker/memoryCircuitStore.js +16 -0
- package/dist-cjs/circuit-breaker/memoryCircuitStore.js.map +1 -0
- package/dist-cjs/classifier/classifierPrompt.js +47 -0
- package/dist-cjs/classifier/classifierPrompt.js.map +1 -0
- package/dist-cjs/classifier/classifyMode.js +53 -0
- package/dist-cjs/classifier/classifyMode.js.map +1 -0
- package/dist-cjs/classifier/index.js +20 -0
- package/dist-cjs/classifier/index.js.map +1 -0
- package/dist-cjs/classifier/rules.js +121 -0
- package/dist-cjs/classifier/rules.js.map +1 -0
- package/dist-cjs/client/ArtifactChat.js +98 -0
- package/dist-cjs/client/ArtifactChat.js.map +1 -0
- package/dist-cjs/client/ArtifactMessage.js +32 -0
- package/dist-cjs/client/ArtifactMessage.js.map +1 -0
- package/dist-cjs/client/MarkdownMessage.js +177 -0
- package/dist-cjs/client/MarkdownMessage.js.map +1 -0
- package/dist-cjs/client/index.js +20 -0
- package/dist-cjs/client/index.js.map +1 -0
- package/dist-cjs/client/useArtifactStream.js +246 -0
- package/dist-cjs/client/useArtifactStream.js.map +1 -0
- package/dist-cjs/client.js +20 -0
- package/dist-cjs/client.js.map +1 -0
- package/dist-cjs/constants/defaults.js +41 -0
- package/dist-cjs/constants/defaults.js.map +1 -0
- package/dist-cjs/constants/events.js +19 -0
- package/dist-cjs/constants/events.js.map +1 -0
- package/dist-cjs/constants/index.js +20 -0
- package/dist-cjs/constants/index.js.map +1 -0
- package/dist-cjs/constants/sandbox.js +27 -0
- package/dist-cjs/constants/sandbox.js.map +1 -0
- package/dist-cjs/core/createArtifactResponse.js +20 -0
- package/dist-cjs/core/createArtifactResponse.js.map +1 -0
- package/dist-cjs/core/createArtifactStream.js +37 -0
- package/dist-cjs/core/createArtifactStream.js.map +1 -0
- package/dist-cjs/core/createIds.js +17 -0
- package/dist-cjs/core/createIds.js.map +1 -0
- package/dist-cjs/core/index.js +22 -0
- package/dist-cjs/core/index.js.map +1 -0
- package/dist-cjs/core/lifecycle.js +86 -0
- package/dist-cjs/core/lifecycle.js.map +1 -0
- package/dist-cjs/core/parseArtifactEnvelope.js +8 -0
- package/dist-cjs/core/parseArtifactEnvelope.js.map +1 -0
- package/dist-cjs/errors/ArtifactParseError.js +14 -0
- package/dist-cjs/errors/ArtifactParseError.js.map +1 -0
- package/dist-cjs/errors/ClassificationError.js +17 -0
- package/dist-cjs/errors/ClassificationError.js.map +1 -0
- package/dist-cjs/errors/StreamError.js +15 -0
- package/dist-cjs/errors/StreamError.js.map +1 -0
- package/dist-cjs/errors/index.js +20 -0
- package/dist-cjs/errors/index.js.map +1 -0
- package/dist-cjs/iframe/HtmlArtifactCard.js +153 -0
- package/dist-cjs/iframe/HtmlArtifactCard.js.map +1 -0
- package/dist-cjs/iframe/HtmlArtifactCodeView.js +23 -0
- package/dist-cjs/iframe/HtmlArtifactCodeView.js.map +1 -0
- package/dist-cjs/iframe/HtmlArtifactModal.js +135 -0
- package/dist-cjs/iframe/HtmlArtifactModal.js.map +1 -0
- package/dist-cjs/iframe/HtmlArtifactPreview.js +250 -0
- package/dist-cjs/iframe/HtmlArtifactPreview.js.map +1 -0
- package/dist-cjs/iframe/HtmlArtifactToolbar.js +17 -0
- package/dist-cjs/iframe/HtmlArtifactToolbar.js.map +1 -0
- package/dist-cjs/iframe/iframeSizing.js +77 -0
- package/dist-cjs/iframe/iframeSizing.js.map +1 -0
- package/dist-cjs/iframe/iframeSrcDoc.js +241 -0
- package/dist-cjs/iframe/iframeSrcDoc.js.map +1 -0
- package/dist-cjs/iframe/index.js +22 -0
- package/dist-cjs/iframe/index.js.map +1 -0
- package/dist-cjs/iframe/styles.js +218 -0
- package/dist-cjs/iframe/styles.js.map +1 -0
- package/dist-cjs/index.js +52 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/prompts/htmlArtifactPrompt.js +252 -0
- package/dist-cjs/prompts/htmlArtifactPrompt.js.map +1 -0
- package/dist-cjs/prompts/index.js +20 -0
- package/dist-cjs/prompts/index.js.map +1 -0
- package/dist-cjs/prompts/markdownPrompt.js +13 -0
- package/dist-cjs/prompts/markdownPrompt.js.map +1 -0
- package/dist-cjs/prompts/systemPrompt.js +6 -0
- package/dist-cjs/prompts/systemPrompt.js.map +1 -0
- package/dist-cjs/sanitizer/dangerousPatterns.js +44 -0
- package/dist-cjs/sanitizer/dangerousPatterns.js.map +1 -0
- package/dist-cjs/sanitizer/index.js +43 -0
- package/dist-cjs/sanitizer/index.js.map +1 -0
- package/dist-cjs/sanitizer/sanitizeConfig.js +13 -0
- package/dist-cjs/sanitizer/sanitizeConfig.js.map +1 -0
- package/dist-cjs/sanitizer/sanitizeHtml.js +86 -0
- package/dist-cjs/sanitizer/sanitizeHtml.js.map +1 -0
- package/dist-cjs/server/config.js +72 -0
- package/dist-cjs/server/config.js.map +1 -0
- package/dist-cjs/server/createArtifactStreamResponse.js +107 -0
- package/dist-cjs/server/createArtifactStreamResponse.js.map +1 -0
- package/dist-cjs/server/createHtmlArtifactStream.js +119 -0
- package/dist-cjs/server/createHtmlArtifactStream.js.map +1 -0
- package/dist-cjs/server/createMarkdownStream.js +31 -0
- package/dist-cjs/server/createMarkdownStream.js.map +1 -0
- package/dist-cjs/server/createSseResponse.js +14 -0
- package/dist-cjs/server/createSseResponse.js.map +1 -0
- package/dist-cjs/server/index.js +34 -0
- package/dist-cjs/server/index.js.map +1 -0
- package/dist-cjs/server.js +19 -0
- package/dist-cjs/server.js.map +1 -0
- package/dist-cjs/stream/assembleDocument.js +109 -0
- package/dist-cjs/stream/assembleDocument.js.map +1 -0
- package/dist-cjs/stream/buffering.js +102 -0
- package/dist-cjs/stream/buffering.js.map +1 -0
- package/dist-cjs/stream/debounce.js +39 -0
- package/dist-cjs/stream/debounce.js.map +1 -0
- package/dist-cjs/stream/decoder.js +75 -0
- package/dist-cjs/stream/decoder.js.map +1 -0
- package/dist-cjs/stream/encoder.js +24 -0
- package/dist-cjs/stream/encoder.js.map +1 -0
- package/dist-cjs/stream/events.js +69 -0
- package/dist-cjs/stream/events.js.map +1 -0
- package/dist-cjs/stream/index.js +25 -0
- package/dist-cjs/stream/index.js.map +1 -0
- package/dist-cjs/stream/predictiveHtmlParser.js +256 -0
- package/dist-cjs/stream/predictiveHtmlParser.js.map +1 -0
- package/dist-cjs/stream/sse.js +36 -0
- package/dist-cjs/stream/sse.js.map +1 -0
- package/dist-cjs/types/artifact.js +3 -0
- package/dist-cjs/types/artifact.js.map +1 -0
- package/dist-cjs/types/client.js +3 -0
- package/dist-cjs/types/client.js.map +1 -0
- package/dist-cjs/types/config.js +3 -0
- package/dist-cjs/types/config.js.map +1 -0
- package/dist-cjs/types/errors.js +3 -0
- package/dist-cjs/types/errors.js.map +1 -0
- package/dist-cjs/types/index.js +3 -0
- package/dist-cjs/types/index.js.map +1 -0
- package/dist-cjs/types/server.js +3 -0
- package/dist-cjs/types/server.js.map +1 -0
- package/dist-cjs/types/stream.js +8 -0
- package/dist-cjs/types/stream.js.map +1 -0
- package/dist-cjs/utils/index.js +22 -0
- package/dist-cjs/utils/index.js.map +1 -0
- package/dist-cjs/utils/invariant.js +13 -0
- package/dist-cjs/utils/invariant.js.map +1 -0
- package/dist-cjs/utils/isBrowser.js +6 -0
- package/dist-cjs/utils/isBrowser.js.map +1 -0
- package/dist-cjs/utils/mergeConfig.js +20 -0
- package/dist-cjs/utils/mergeConfig.js.map +1 -0
- package/dist-cjs/utils/noop.js +7 -0
- package/dist-cjs/utils/noop.js.map +1 -0
- package/dist-cjs/utils/safeJsonParse.js +65 -0
- package/dist-cjs/utils/safeJsonParse.js.map +1 -0
- package/package.json +115 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MARKDOWN_SYSTEM_PROMPT = exports.HTML_ARTIFACT_SYSTEM_PROMPT = exports.buildHtmlArtifactPrompt = exports.StreamingEnvelopeParser = exports.parseArtifactEnvelope = exports.sanitize = exports.sanitizeHtml = exports.MemoryCircuitStore = exports.CircuitBreaker = exports.classifyByRules = exports.classifyMode = exports.latestUserText = exports.resolveServerConfig = exports.streamHtmlArtifactFromTextStream = exports.streamHtmlArtifact = exports.streamMarkdownFromTextStream = exports.streamMarkdown = exports.createSseResponse = exports.createArtifactStreamResponse = void 0;
|
|
4
|
+
var createArtifactStreamResponse_js_1 = require("./createArtifactStreamResponse.js");
|
|
5
|
+
Object.defineProperty(exports, "createArtifactStreamResponse", { enumerable: true, get: function () { return createArtifactStreamResponse_js_1.createArtifactStreamResponse; } });
|
|
6
|
+
var createSseResponse_js_1 = require("./createSseResponse.js");
|
|
7
|
+
Object.defineProperty(exports, "createSseResponse", { enumerable: true, get: function () { return createSseResponse_js_1.createSseResponse; } });
|
|
8
|
+
var createMarkdownStream_js_1 = require("./createMarkdownStream.js");
|
|
9
|
+
Object.defineProperty(exports, "streamMarkdown", { enumerable: true, get: function () { return createMarkdownStream_js_1.streamMarkdown; } });
|
|
10
|
+
Object.defineProperty(exports, "streamMarkdownFromTextStream", { enumerable: true, get: function () { return createMarkdownStream_js_1.streamMarkdownFromTextStream; } });
|
|
11
|
+
var createHtmlArtifactStream_js_1 = require("./createHtmlArtifactStream.js");
|
|
12
|
+
Object.defineProperty(exports, "streamHtmlArtifact", { enumerable: true, get: function () { return createHtmlArtifactStream_js_1.streamHtmlArtifact; } });
|
|
13
|
+
Object.defineProperty(exports, "streamHtmlArtifactFromTextStream", { enumerable: true, get: function () { return createHtmlArtifactStream_js_1.streamHtmlArtifactFromTextStream; } });
|
|
14
|
+
var config_js_1 = require("./config.js");
|
|
15
|
+
Object.defineProperty(exports, "resolveServerConfig", { enumerable: true, get: function () { return config_js_1.resolveServerConfig; } });
|
|
16
|
+
Object.defineProperty(exports, "latestUserText", { enumerable: true, get: function () { return config_js_1.latestUserText; } });
|
|
17
|
+
// Re-export the pieces a server integrator commonly needs.
|
|
18
|
+
var index_js_1 = require("../classifier/index.js");
|
|
19
|
+
Object.defineProperty(exports, "classifyMode", { enumerable: true, get: function () { return index_js_1.classifyMode; } });
|
|
20
|
+
Object.defineProperty(exports, "classifyByRules", { enumerable: true, get: function () { return index_js_1.classifyByRules; } });
|
|
21
|
+
var index_js_2 = require("../circuit-breaker/index.js");
|
|
22
|
+
Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return index_js_2.CircuitBreaker; } });
|
|
23
|
+
Object.defineProperty(exports, "MemoryCircuitStore", { enumerable: true, get: function () { return index_js_2.MemoryCircuitStore; } });
|
|
24
|
+
var index_js_3 = require("../sanitizer/index.js");
|
|
25
|
+
Object.defineProperty(exports, "sanitizeHtml", { enumerable: true, get: function () { return index_js_3.sanitizeHtml; } });
|
|
26
|
+
Object.defineProperty(exports, "sanitize", { enumerable: true, get: function () { return index_js_3.sanitize; } });
|
|
27
|
+
var artifactEnvelope_js_1 = require("../artifacts/artifactEnvelope.js");
|
|
28
|
+
Object.defineProperty(exports, "parseArtifactEnvelope", { enumerable: true, get: function () { return artifactEnvelope_js_1.parseArtifactEnvelope; } });
|
|
29
|
+
Object.defineProperty(exports, "StreamingEnvelopeParser", { enumerable: true, get: function () { return artifactEnvelope_js_1.StreamingEnvelopeParser; } });
|
|
30
|
+
var index_js_4 = require("../prompts/index.js");
|
|
31
|
+
Object.defineProperty(exports, "buildHtmlArtifactPrompt", { enumerable: true, get: function () { return index_js_4.buildHtmlArtifactPrompt; } });
|
|
32
|
+
Object.defineProperty(exports, "HTML_ARTIFACT_SYSTEM_PROMPT", { enumerable: true, get: function () { return index_js_4.HTML_ARTIFACT_SYSTEM_PROMPT; } });
|
|
33
|
+
Object.defineProperty(exports, "MARKDOWN_SYSTEM_PROMPT", { enumerable: true, get: function () { return index_js_4.MARKDOWN_SYSTEM_PROMPT; } });
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;AAAA,qFAAiF;AAAxE,+IAAA,4BAA4B,OAAA;AACrC,+DAA2D;AAAlD,yHAAA,iBAAiB,OAAA;AAC1B,qEAImC;AAHjC,yHAAA,cAAc,OAAA;AACd,uIAAA,4BAA4B,OAAA;AAG9B,6EAKuC;AAJrC,iIAAA,kBAAkB,OAAA;AAClB,+IAAA,gCAAgC,OAAA;AAIlC,yCAAkE;AAAzD,gHAAA,mBAAmB,OAAA;AAAE,2GAAA,cAAc,OAAA;AAE5C,2DAA2D;AAC3D,mDAAuE;AAA9D,wGAAA,YAAY,OAAA;AAAE,2GAAA,eAAe,OAAA;AACtC,wDAGqC;AAFnC,0GAAA,cAAc,OAAA;AACd,8GAAA,kBAAkB,OAAA;AAEpB,kDAA+D;AAAtD,wGAAA,YAAY,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAC/B,wEAG0C;AAFxC,4HAAA,qBAAqB,OAAA;AACrB,8HAAA,uBAAuB,OAAA;AAEzB,gDAI6B;AAH3B,mHAAA,uBAAuB,OAAA;AACvB,uHAAA,2BAA2B,OAAA;AAC3B,kHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Convenience top-level entry mirroring the `./server` subpath export.
|
|
18
|
+
__exportStar(require("./server/index.js"), exports);
|
|
19
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uEAAuE;AACvE,oDAAkC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StreamingHtmlProjector = void 0;
|
|
4
|
+
exports.assembleStreamingHtml = assembleStreamingHtml;
|
|
5
|
+
const artifactEnvelope_js_1 = require("../artifacts/artifactEnvelope.js");
|
|
6
|
+
const predictiveHtmlParser_js_1 = require("./predictiveHtmlParser.js");
|
|
7
|
+
function assembleStreamingHtml(partial) {
|
|
8
|
+
if (typeof partial !== "string") {
|
|
9
|
+
return { html: "", complete: false, renderable: false };
|
|
10
|
+
}
|
|
11
|
+
const source = (0, artifactEnvelope_js_1.cleanArtifactHtml)(partial);
|
|
12
|
+
if (source.trim() === "") {
|
|
13
|
+
return { html: "", complete: false, renderable: false };
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const parser = new predictiveHtmlParser_js_1.PredictiveHtmlParser();
|
|
17
|
+
const html = parser.push(source);
|
|
18
|
+
return {
|
|
19
|
+
html,
|
|
20
|
+
complete: parser.complete,
|
|
21
|
+
renderable: parser.isRenderable(),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return { html: partial, complete: false, renderable: true };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Incremental, stateful counterpart to {@link assembleStreamingHtml}. Holds one
|
|
30
|
+
* {@link PredictiveHtmlParser} across the whole stream and feeds it only the
|
|
31
|
+
* newly-arrived tail on each {@link update}, so total parse cost is O(n) over
|
|
32
|
+
* the stream instead of O(n²) (one-shot re-parses everything every frame).
|
|
33
|
+
*
|
|
34
|
+
* Pass the full accumulated raw HTML received so far on every call — the
|
|
35
|
+
* projector slices off whatever it hasn't consumed yet, so skipped/throttled
|
|
36
|
+
* frames are fine: the next call simply catches up on the larger tail. The
|
|
37
|
+
* input is expected to be append-only; if a shorter, non-prefix string arrives
|
|
38
|
+
* (a reset/new artifact) the projector re-syncs from scratch.
|
|
39
|
+
*/
|
|
40
|
+
class StreamingHtmlProjector {
|
|
41
|
+
parser = new predictiveHtmlParser_js_1.PredictiveHtmlParser();
|
|
42
|
+
/** Offset in the raw stream where real content begins (-1 = undecided). */
|
|
43
|
+
start = -1;
|
|
44
|
+
/** Chars of the content region (raw.slice(start)) already pushed. */
|
|
45
|
+
fed = 0;
|
|
46
|
+
lastRaw = "";
|
|
47
|
+
/** Feed the full accumulated raw HTML; returns the current projection. */
|
|
48
|
+
update(raw) {
|
|
49
|
+
if (typeof raw !== "string" || raw === "") {
|
|
50
|
+
return { html: "", complete: false, renderable: false };
|
|
51
|
+
}
|
|
52
|
+
// Re-sync if the stream isn't an append of what we've seen (reset/replace).
|
|
53
|
+
if (!raw.startsWith(this.lastRaw))
|
|
54
|
+
this.reset();
|
|
55
|
+
this.lastRaw = raw;
|
|
56
|
+
if (this.start === -1) {
|
|
57
|
+
const resolved = resolveContentStart(raw);
|
|
58
|
+
if (resolved === -1) {
|
|
59
|
+
// Leading whitespace/fence not yet resolvable — nothing safe to render.
|
|
60
|
+
return { html: "", complete: false, renderable: false };
|
|
61
|
+
}
|
|
62
|
+
this.start = resolved;
|
|
63
|
+
}
|
|
64
|
+
const content = raw.slice(this.start);
|
|
65
|
+
if (content.length > this.fed) {
|
|
66
|
+
const delta = content.slice(this.fed);
|
|
67
|
+
this.fed = content.length;
|
|
68
|
+
try {
|
|
69
|
+
this.parser.push(delta);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// PredictiveHtmlParser fails open internally; guard defensively.
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
html: this.parser.render(),
|
|
77
|
+
complete: this.parser.complete,
|
|
78
|
+
renderable: this.parser.isRenderable(),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
reset() {
|
|
82
|
+
this.parser.reset();
|
|
83
|
+
this.start = -1;
|
|
84
|
+
this.fed = 0;
|
|
85
|
+
this.lastRaw = "";
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.StreamingHtmlProjector = StreamingHtmlProjector;
|
|
89
|
+
/**
|
|
90
|
+
* Where real artifact content starts in the raw stream: past leading
|
|
91
|
+
* whitespace, and past a single opening ```/```html code fence if the model
|
|
92
|
+
* wrapped its output. Returns -1 while the answer can't be determined yet
|
|
93
|
+
* (buffer is all whitespace, or a fence opener whose newline hasn't arrived).
|
|
94
|
+
*/
|
|
95
|
+
function resolveContentStart(raw) {
|
|
96
|
+
let i = 0;
|
|
97
|
+
while (i < raw.length && /\s/.test(raw[i]))
|
|
98
|
+
i++;
|
|
99
|
+
if (i >= raw.length)
|
|
100
|
+
return -1; // all whitespace so far — wait
|
|
101
|
+
if (raw.startsWith("```", i)) {
|
|
102
|
+
const nl = raw.indexOf("\n", i);
|
|
103
|
+
if (nl === -1)
|
|
104
|
+
return -1; // fence opener incomplete — wait
|
|
105
|
+
return nl + 1;
|
|
106
|
+
}
|
|
107
|
+
return i;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=assembleDocument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assembleDocument.js","sourceRoot":"","sources":["../../src/stream/assembleDocument.ts"],"names":[],"mappings":";;;AAqBA,sDAmBC;AAxCD,0EAAqE;AACrE,uEAAiE;AAoBjE,SAAgB,qBAAqB,CAAC,OAAe;IACnD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,uCAAiB,EAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,8CAAoB,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE;SAClC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAa,sBAAsB;IACzB,MAAM,GAAG,IAAI,8CAAoB,EAAE,CAAC;IAC5C,2EAA2E;IACnE,KAAK,GAAG,CAAC,CAAC,CAAC;IACnB,qEAAqE;IAC7D,GAAG,GAAG,CAAC,CAAC;IACR,OAAO,GAAG,EAAE,CAAC;IAErB,0EAA0E;IAC1E,MAAM,CAAC,GAAW;QAChB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC1D,CAAC;QAED,4EAA4E;QAC5E,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QAEnB,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,wEAAwE;gBACxE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YAC1D,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACxB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC1B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AAnDD,wDAmDC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QAAE,CAAC,EAAE,CAAC;IACjD,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,+BAA+B;IAC/D,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,iCAAiC;QAC3D,OAAO,EAAE,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArtifactBuffer = void 0;
|
|
4
|
+
exports.looksRenderable = looksRenderable;
|
|
5
|
+
const artifactEnvelope_js_1 = require("../artifacts/artifactEnvelope.js");
|
|
6
|
+
const assembleDocument_js_1 = require("./assembleDocument.js");
|
|
7
|
+
/**
|
|
8
|
+
* Accumulates streamed artifact deltas and tracks the last *renderable*
|
|
9
|
+
* snapshot. Partial HTML mid-stream is frequently broken; the predictive parser
|
|
10
|
+
* repairs the current frontier into a temporary valid projection, while keeping
|
|
11
|
+
* the raw stream as the source of truth for final output and code view.
|
|
12
|
+
*/
|
|
13
|
+
class ArtifactBuffer {
|
|
14
|
+
chunks = [];
|
|
15
|
+
joined = "";
|
|
16
|
+
dirty = false;
|
|
17
|
+
_lastValidSnapshot = "";
|
|
18
|
+
/** Append a streamed delta. */
|
|
19
|
+
append(delta) {
|
|
20
|
+
if (!delta)
|
|
21
|
+
return;
|
|
22
|
+
this.chunks.push(delta);
|
|
23
|
+
this.dirty = true;
|
|
24
|
+
}
|
|
25
|
+
/** The full aggregated raw HTML received so far. */
|
|
26
|
+
get raw() {
|
|
27
|
+
if (this.dirty) {
|
|
28
|
+
this.joined = this.chunks.join("");
|
|
29
|
+
this.dirty = false;
|
|
30
|
+
}
|
|
31
|
+
return this.joined;
|
|
32
|
+
}
|
|
33
|
+
/** The last snapshot that passed the renderable heuristic. */
|
|
34
|
+
get lastValidSnapshot() {
|
|
35
|
+
return this._lastValidSnapshot;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Promote the current buffer to a snapshot if the predictive parser says
|
|
39
|
+
* there is visible body content. Returns the snapshot that should be
|
|
40
|
+
* displayed (new one if renderable, else the last good one). Pass an explicit
|
|
41
|
+
* `html` to commit a known-good final document.
|
|
42
|
+
*/
|
|
43
|
+
commit(html) {
|
|
44
|
+
const candidate = (0, artifactEnvelope_js_1.cleanArtifactHtml)(html ?? this.raw);
|
|
45
|
+
if (html !== undefined) {
|
|
46
|
+
this._lastValidSnapshot = candidate;
|
|
47
|
+
return this._lastValidSnapshot;
|
|
48
|
+
}
|
|
49
|
+
const assembled = (0, assembleDocument_js_1.assembleStreamingHtml)(candidate);
|
|
50
|
+
if (assembled.renderable) {
|
|
51
|
+
this._lastValidSnapshot = assembled.html;
|
|
52
|
+
}
|
|
53
|
+
return this._lastValidSnapshot;
|
|
54
|
+
}
|
|
55
|
+
/** Force-set the final snapshot (used on `artifact_done`). */
|
|
56
|
+
finalize(html) {
|
|
57
|
+
const finalHtml = (0, artifactEnvelope_js_1.cleanArtifactHtml)(html);
|
|
58
|
+
this._lastValidSnapshot = finalHtml;
|
|
59
|
+
this.chunks = [finalHtml];
|
|
60
|
+
this.joined = finalHtml;
|
|
61
|
+
this.dirty = false;
|
|
62
|
+
return finalHtml;
|
|
63
|
+
}
|
|
64
|
+
reset() {
|
|
65
|
+
this.chunks = [];
|
|
66
|
+
this.joined = "";
|
|
67
|
+
this.dirty = false;
|
|
68
|
+
this._lastValidSnapshot = "";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.ArtifactBuffer = ArtifactBuffer;
|
|
72
|
+
/**
|
|
73
|
+
* Heuristic: is this partial HTML safe enough to drop into an iframe without
|
|
74
|
+
* obvious breakage? We require that we are not in the middle of an open tag,
|
|
75
|
+
* not inside an unterminated `<style>` block, and not mid-way through an HTML
|
|
76
|
+
* entity. This is intentionally conservative — false negatives just mean we
|
|
77
|
+
* wait for the next chunk.
|
|
78
|
+
*/
|
|
79
|
+
function looksRenderable(html) {
|
|
80
|
+
if (!html)
|
|
81
|
+
return false;
|
|
82
|
+
// Don't render while sitting inside an unclosed tag: last '<' after last '>'.
|
|
83
|
+
const lastOpen = html.lastIndexOf("<");
|
|
84
|
+
const lastClose = html.lastIndexOf(">");
|
|
85
|
+
if (lastOpen > lastClose)
|
|
86
|
+
return false;
|
|
87
|
+
// Balanced <style> blocks.
|
|
88
|
+
const styleOpen = countMatches(html, /<style[\s>]/gi);
|
|
89
|
+
const styleClose = countMatches(html, /<\/style>/gi);
|
|
90
|
+
if (styleOpen !== styleClose)
|
|
91
|
+
return false;
|
|
92
|
+
// Not mid-entity (e.g. "&" without ";").
|
|
93
|
+
const trailingEntity = /&[a-z0-9#]*$/i.test(html);
|
|
94
|
+
if (trailingEntity)
|
|
95
|
+
return false;
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
function countMatches(input, pattern) {
|
|
99
|
+
const matches = input.match(pattern);
|
|
100
|
+
return matches ? matches.length : 0;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=buffering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffering.js","sourceRoot":"","sources":["../../src/stream/buffering.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.debounce = debounce;
|
|
4
|
+
function debounce(fn, waitMs) {
|
|
5
|
+
let timer = null;
|
|
6
|
+
let lastArgs = null;
|
|
7
|
+
const run = () => {
|
|
8
|
+
if (lastArgs) {
|
|
9
|
+
const args = lastArgs;
|
|
10
|
+
lastArgs = null;
|
|
11
|
+
fn(...args);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const debounced = ((...args) => {
|
|
15
|
+
lastArgs = args;
|
|
16
|
+
if (timer)
|
|
17
|
+
clearTimeout(timer);
|
|
18
|
+
timer = setTimeout(() => {
|
|
19
|
+
timer = null;
|
|
20
|
+
run();
|
|
21
|
+
}, waitMs);
|
|
22
|
+
});
|
|
23
|
+
debounced.flush = () => {
|
|
24
|
+
if (timer) {
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
timer = null;
|
|
27
|
+
}
|
|
28
|
+
run();
|
|
29
|
+
};
|
|
30
|
+
debounced.cancel = () => {
|
|
31
|
+
if (timer) {
|
|
32
|
+
clearTimeout(timer);
|
|
33
|
+
timer = null;
|
|
34
|
+
}
|
|
35
|
+
lastArgs = null;
|
|
36
|
+
};
|
|
37
|
+
return debounced;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=debounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/stream/debounce.ts"],"names":[],"mappings":";;AAWA,4BAyCC;AAzCD,SAAgB,QAAQ,CACtB,EAAwB,EACxB,MAAc;IAEd,IAAI,KAAK,GAAyC,IAAI,CAAC;IACvD,IAAI,QAAQ,GAAa,IAAI,CAAC;IAE9B,MAAM,GAAG,GAAG,GAAG,EAAE;QACf,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,QAAQ,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC;YAChB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,IAAO,EAAE,EAAE;QAChC,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC;YACb,GAAG,EAAE,CAAC;QACR,CAAC,EAAE,MAAM,CAAC,CAAC;IACb,CAAC,CAAiB,CAAC;IAEnB,SAAS,CAAC,KAAK,GAAG,GAAG,EAAE;QACrB,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,GAAG,EAAE,CAAC;IACR,CAAC,CAAC;IAEF,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SseDecoder = void 0;
|
|
4
|
+
const safeJsonParse_js_1 = require("../utils/safeJsonParse.js");
|
|
5
|
+
const events_js_1 = require("./events.js");
|
|
6
|
+
/**
|
|
7
|
+
* Incremental SSE decoder. Feed it raw text chunks; it returns any complete
|
|
8
|
+
* protocol events found so far. Frames are separated by a blank line and the
|
|
9
|
+
* payload lives on `data:` lines (concatenated per the SSE spec).
|
|
10
|
+
*/
|
|
11
|
+
class SseDecoder {
|
|
12
|
+
buffer = "";
|
|
13
|
+
/** Push a chunk of text and drain any complete events. */
|
|
14
|
+
push(chunk) {
|
|
15
|
+
this.buffer += chunk;
|
|
16
|
+
const events = [];
|
|
17
|
+
// Normalize CRLF so the split is reliable across platforms.
|
|
18
|
+
let separatorIndex;
|
|
19
|
+
while ((separatorIndex = this.indexOfFrameEnd()) !== -1) {
|
|
20
|
+
const rawFrame = this.buffer.slice(0, separatorIndex);
|
|
21
|
+
this.buffer = this.buffer.slice(separatorIndex + this.frameSeparatorLen);
|
|
22
|
+
const parsed = this.parseFrame(rawFrame);
|
|
23
|
+
if (parsed)
|
|
24
|
+
events.push(parsed);
|
|
25
|
+
}
|
|
26
|
+
return events;
|
|
27
|
+
}
|
|
28
|
+
/** Drain any trailing buffered frame at end-of-stream. */
|
|
29
|
+
flush() {
|
|
30
|
+
const remaining = this.buffer.trim();
|
|
31
|
+
this.buffer = "";
|
|
32
|
+
if (!remaining)
|
|
33
|
+
return [];
|
|
34
|
+
const parsed = this.parseFrame(remaining);
|
|
35
|
+
return parsed ? [parsed] : [];
|
|
36
|
+
}
|
|
37
|
+
frameSeparatorLen = 2;
|
|
38
|
+
indexOfFrameEnd() {
|
|
39
|
+
const lf = this.buffer.indexOf("\n\n");
|
|
40
|
+
const crlf = this.buffer.indexOf("\r\n\r\n");
|
|
41
|
+
if (crlf !== -1 && (lf === -1 || crlf < lf)) {
|
|
42
|
+
this.frameSeparatorLen = 4;
|
|
43
|
+
return crlf;
|
|
44
|
+
}
|
|
45
|
+
if (lf !== -1) {
|
|
46
|
+
this.frameSeparatorLen = 2;
|
|
47
|
+
return lf;
|
|
48
|
+
}
|
|
49
|
+
return -1;
|
|
50
|
+
}
|
|
51
|
+
parseFrame(frame) {
|
|
52
|
+
const dataLines = [];
|
|
53
|
+
for (const rawLine of frame.split(/\r?\n/)) {
|
|
54
|
+
const line = rawLine;
|
|
55
|
+
if (line.startsWith(":"))
|
|
56
|
+
continue; // comment / heartbeat
|
|
57
|
+
if (line.startsWith("data:")) {
|
|
58
|
+
dataLines.push(line.slice(5).replace(/^ /, ""));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (dataLines.length === 0)
|
|
62
|
+
return null;
|
|
63
|
+
const payload = dataLines.join("\n");
|
|
64
|
+
const parsed = (0, safeJsonParse_js_1.safeJsonParse)(payload, null);
|
|
65
|
+
if (!(0, events_js_1.isArtifactStreamEvent)(parsed))
|
|
66
|
+
return null;
|
|
67
|
+
if (parsed.type === "mode" &&
|
|
68
|
+
parsed.mode === "html_artifact") {
|
|
69
|
+
return { type: "mode", mode: "artifact" };
|
|
70
|
+
}
|
|
71
|
+
return parsed;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.SseDecoder = SseDecoder;
|
|
75
|
+
//# sourceMappingURL=decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/stream/decoder.ts"],"names":[],"mappings":";;;AAAA,gEAA0D;AAC1D,2CAAoD;AAGpD;;;;GAIG;AACH,MAAa,UAAU;IACb,MAAM,GAAG,EAAE,CAAC;IAEpB,0DAA0D;IAC1D,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACrB,MAAM,MAAM,GAA0B,EAAE,CAAC;QAEzC,4DAA4D;QAC5D,IAAI,cAAsB,CAAC;QAC3B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,0DAA0D;IAC1D,KAAK;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,CAAC;IAEO,iBAAiB,GAAG,CAAC,CAAC;IAEtB,eAAe;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,sBAAsB;YAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAExC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAA,gCAAa,EAAU,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,IAAA,iCAAqB,EAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAChD,IACE,MAAM,CAAC,IAAI,KAAK,MAAM;YACrB,MAA6B,CAAC,IAAI,KAAK,eAAe,EACvD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnED,gCAmEC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodeSseEvent = encodeSseEvent;
|
|
4
|
+
exports.encodeSseEventBytes = encodeSseEventBytes;
|
|
5
|
+
exports.encodeSseComment = encodeSseComment;
|
|
6
|
+
const events_js_1 = require("../constants/events.js");
|
|
7
|
+
/**
|
|
8
|
+
* Serialize a protocol event into a single SSE frame. The whole protocol uses
|
|
9
|
+
* one named event (`artifact`) and JSON-encodes the payload on the `data:`
|
|
10
|
+
* line, which keeps multi-line HTML safe (no raw newlines reach the wire).
|
|
11
|
+
*/
|
|
12
|
+
function encodeSseEvent(event) {
|
|
13
|
+
const data = JSON.stringify(event);
|
|
14
|
+
return `event: ${events_js_1.SSE_EVENT_NAME}\ndata: ${data}\n\n`;
|
|
15
|
+
}
|
|
16
|
+
/** Encode an event directly to bytes for a `ReadableStream<Uint8Array>`. */
|
|
17
|
+
function encodeSseEventBytes(event, encoder = new TextEncoder()) {
|
|
18
|
+
return encoder.encode(encodeSseEvent(event));
|
|
19
|
+
}
|
|
20
|
+
/** A comment frame used as a keep-alive heartbeat. */
|
|
21
|
+
function encodeSseComment(text = "keep-alive") {
|
|
22
|
+
return `: ${text}\n\n`;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/stream/encoder.ts"],"names":[],"mappings":";;AAQA,wCAGC;AAGD,kDAKC;AAGD,4CAEC;AAxBD,sDAAwD;AAGxD;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAA0B;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,UAAU,0BAAc,WAAW,IAAI,MAAM,CAAC;AACvD,CAAC;AAED,4EAA4E;AAC5E,SAAgB,mBAAmB,CACjC,KAA0B,EAC1B,UAAuB,IAAI,WAAW,EAAE;IAExC,OAAO,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,sDAAsD;AACtD,SAAgB,gBAAgB,CAAC,IAAI,GAAG,YAAY;IAClD,OAAO,KAAK,IAAI,MAAM,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.event = void 0;
|
|
4
|
+
exports.isArtifactStreamEvent = isArtifactStreamEvent;
|
|
5
|
+
/**
|
|
6
|
+
* Typed factory helpers for every protocol event. Using these keeps the
|
|
7
|
+
* server producer honest and gives the client exhaustive types.
|
|
8
|
+
*/
|
|
9
|
+
exports.event = {
|
|
10
|
+
mode: (mode) => ({ type: "mode", mode }),
|
|
11
|
+
messageStart: (messageId) => ({
|
|
12
|
+
type: "message_start",
|
|
13
|
+
messageId,
|
|
14
|
+
}),
|
|
15
|
+
messageDelta: (messageId, delta) => ({
|
|
16
|
+
type: "message_delta",
|
|
17
|
+
messageId,
|
|
18
|
+
delta,
|
|
19
|
+
}),
|
|
20
|
+
messageDone: (messageId, content) => ({
|
|
21
|
+
type: "message_done",
|
|
22
|
+
messageId,
|
|
23
|
+
content,
|
|
24
|
+
}),
|
|
25
|
+
artifactStart: (artifactId, title, artifactType = "html") => ({
|
|
26
|
+
type: "artifact_start",
|
|
27
|
+
artifactId,
|
|
28
|
+
title,
|
|
29
|
+
artifactType,
|
|
30
|
+
}),
|
|
31
|
+
artifactDelta: (artifactId, delta) => ({
|
|
32
|
+
type: "artifact_delta",
|
|
33
|
+
artifactId,
|
|
34
|
+
delta,
|
|
35
|
+
}),
|
|
36
|
+
artifactSnapshot: (artifactId, html) => ({
|
|
37
|
+
type: "artifact_snapshot",
|
|
38
|
+
artifactId,
|
|
39
|
+
html,
|
|
40
|
+
}),
|
|
41
|
+
artifactDone: (artifactId, html) => ({
|
|
42
|
+
type: "artifact_done",
|
|
43
|
+
artifactId,
|
|
44
|
+
html,
|
|
45
|
+
}),
|
|
46
|
+
error: (message, recoverable = true) => ({
|
|
47
|
+
type: "error",
|
|
48
|
+
message,
|
|
49
|
+
recoverable,
|
|
50
|
+
}),
|
|
51
|
+
done: () => ({ type: "done" }),
|
|
52
|
+
};
|
|
53
|
+
/** Runtime guard that an unknown value is a protocol event. */
|
|
54
|
+
function isArtifactStreamEvent(value) {
|
|
55
|
+
if (typeof value !== "object" || value === null)
|
|
56
|
+
return false;
|
|
57
|
+
const type = value.type;
|
|
58
|
+
return (type === "mode" ||
|
|
59
|
+
type === "message_start" ||
|
|
60
|
+
type === "message_delta" ||
|
|
61
|
+
type === "message_done" ||
|
|
62
|
+
type === "artifact_start" ||
|
|
63
|
+
type === "artifact_delta" ||
|
|
64
|
+
type === "artifact_snapshot" ||
|
|
65
|
+
type === "artifact_done" ||
|
|
66
|
+
type === "error" ||
|
|
67
|
+
type === "done");
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/stream/events.ts"],"names":[],"mappings":";;;AAqEA,sDAiBC;AAhFD;;;GAGG;AACU,QAAA,KAAK,GAAG;IACnB,IAAI,EAAE,CAAC,IAAkB,EAAuB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAE3E,YAAY,EAAE,CAAC,SAAiB,EAAuB,EAAE,CAAC,CAAC;QACzD,IAAI,EAAE,eAAe;QACrB,SAAS;KACV,CAAC;IAEF,YAAY,EAAE,CAAC,SAAiB,EAAE,KAAa,EAAuB,EAAE,CAAC,CAAC;QACxE,IAAI,EAAE,eAAe;QACrB,SAAS;QACT,KAAK;KACN,CAAC;IAEF,WAAW,EAAE,CAAC,SAAiB,EAAE,OAAe,EAAuB,EAAE,CAAC,CAAC;QACzE,IAAI,EAAE,cAAc;QACpB,SAAS;QACT,OAAO;KACR,CAAC;IAEF,aAAa,EAAE,CACb,UAAkB,EAClB,KAAa,EACb,eAA6B,MAAM,EACd,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,gBAAgB;QACtB,UAAU;QACV,KAAK;QACL,YAAY;KACb,CAAC;IAEF,aAAa,EAAE,CAAC,UAAkB,EAAE,KAAa,EAAuB,EAAE,CAAC,CAAC;QAC1E,IAAI,EAAE,gBAAgB;QACtB,UAAU;QACV,KAAK;KACN,CAAC;IAEF,gBAAgB,EAAE,CAAC,UAAkB,EAAE,IAAY,EAAuB,EAAE,CAAC,CAAC;QAC5E,IAAI,EAAE,mBAAmB;QACzB,UAAU;QACV,IAAI;KACL,CAAC;IAEF,YAAY,EAAE,CAAC,UAAkB,EAAE,IAAY,EAAuB,EAAE,CAAC,CAAC;QACxE,IAAI,EAAE,eAAe;QACrB,UAAU;QACV,IAAI;KACL,CAAC;IAEF,KAAK,EAAE,CAAC,OAAe,EAAE,WAAW,GAAG,IAAI,EAAuB,EAAE,CAAC,CAAC;QACpE,IAAI,EAAE,OAAO;QACb,OAAO;QACP,WAAW;KACZ,CAAC;IAEF,IAAI,EAAE,GAAwB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;CACpD,CAAC;AAEF,+DAA+D;AAC/D,SAAgB,qBAAqB,CACnC,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;IAChD,OAAO,CACL,IAAI,KAAK,MAAM;QACf,IAAI,KAAK,eAAe;QACxB,IAAI,KAAK,eAAe;QACxB,IAAI,KAAK,cAAc;QACvB,IAAI,KAAK,gBAAgB;QACzB,IAAI,KAAK,gBAAgB;QACzB,IAAI,KAAK,mBAAmB;QAC5B,IAAI,KAAK,eAAe;QACxB,IAAI,KAAK,OAAO;QAChB,IAAI,KAAK,MAAM,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./events.js"), exports);
|
|
18
|
+
__exportStar(require("./encoder.js"), exports);
|
|
19
|
+
__exportStar(require("./decoder.js"), exports);
|
|
20
|
+
__exportStar(require("./sse.js"), exports);
|
|
21
|
+
__exportStar(require("./buffering.js"), exports);
|
|
22
|
+
__exportStar(require("./debounce.js"), exports);
|
|
23
|
+
__exportStar(require("./assembleDocument.js"), exports);
|
|
24
|
+
__exportStar(require("./predictiveHtmlParser.js"), exports);
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,2CAAyB;AACzB,iDAA+B;AAC/B,gDAA8B;AAC9B,wDAAsC;AACtC,4DAA0C"}
|