@particle-academy/prism 0.0.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/LICENSE +21 -0
- package/README.md +155 -0
- package/dist/audio/pending-request.d.ts +37 -0
- package/dist/audio/pending-request.d.ts.map +1 -0
- package/dist/audio/pending-request.js +91 -0
- package/dist/audio/pending-request.js.map +1 -0
- package/dist/audio/request.d.ts +37 -0
- package/dist/audio/request.d.ts.map +1 -0
- package/dist/audio/request.js +50 -0
- package/dist/audio/request.js.map +1 -0
- package/dist/audio/response.d.ts +24 -0
- package/dist/audio/response.d.ts.map +1 -0
- package/dist/audio/response.js +36 -0
- package/dist/audio/response.js.map +1 -0
- package/dist/batch/batch-job.d.ts +91 -0
- package/dist/batch/batch-job.d.ts.map +1 -0
- package/dist/batch/batch-job.js +156 -0
- package/dist/batch/batch-job.js.map +1 -0
- package/dist/batch/pending-request.d.ts +29 -0
- package/dist/batch/pending-request.d.ts.map +1 -0
- package/dist/batch/pending-request.js +73 -0
- package/dist/batch/pending-request.js.map +1 -0
- package/dist/batch/request.d.ts +73 -0
- package/dist/batch/request.d.ts.map +1 -0
- package/dist/batch/request.js +79 -0
- package/dist/batch/request.js.map +1 -0
- package/dist/embeddings/pending-request.d.ts +38 -0
- package/dist/embeddings/pending-request.d.ts.map +1 -0
- package/dist/embeddings/pending-request.js +86 -0
- package/dist/embeddings/pending-request.js.map +1 -0
- package/dist/embeddings/request.d.ts +27 -0
- package/dist/embeddings/request.d.ts.map +1 -0
- package/dist/embeddings/request.js +38 -0
- package/dist/embeddings/request.js.map +1 -0
- package/dist/embeddings/response.d.ts +19 -0
- package/dist/embeddings/response.d.ts.map +1 -0
- package/dist/embeddings/response.js +21 -0
- package/dist/embeddings/response.js.map +1 -0
- package/dist/enums.d.ts +52 -0
- package/dist/enums.d.ts.map +1 -0
- package/dist/enums.js +69 -0
- package/dist/enums.js.map +1 -0
- package/dist/errors.d.ts +119 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +115 -0
- package/dist/errors.js.map +1 -0
- package/dist/files/file-data.d.ts +53 -0
- package/dist/files/file-data.d.ts.map +1 -0
- package/dist/files/file-data.js +79 -0
- package/dist/files/file-data.js.map +1 -0
- package/dist/files/pending-request.d.ts +38 -0
- package/dist/files/pending-request.d.ts.map +1 -0
- package/dist/files/pending-request.js +96 -0
- package/dist/files/pending-request.js.map +1 -0
- package/dist/files/request.d.ts +77 -0
- package/dist/files/request.d.ts.map +1 -0
- package/dist/files/request.js +81 -0
- package/dist/files/request.js.map +1 -0
- package/dist/fim/pending-request.d.ts +31 -0
- package/dist/fim/pending-request.d.ts.map +1 -0
- package/dist/fim/pending-request.js +89 -0
- package/dist/fim/pending-request.js.map +1 -0
- package/dist/fim/request.d.ts +39 -0
- package/dist/fim/request.d.ts.map +1 -0
- package/dist/fim/request.js +65 -0
- package/dist/fim/request.js.map +1 -0
- package/dist/fim/response.d.ts +21 -0
- package/dist/fim/response.d.ts.map +1 -0
- package/dist/fim/response.js +30 -0
- package/dist/fim/response.js.map +1 -0
- package/dist/http/header-names.d.ts +36 -0
- package/dist/http/header-names.d.ts.map +1 -0
- package/dist/http/header-names.js +44 -0
- package/dist/http/header-names.js.map +1 -0
- package/dist/http/transport.d.ts +94 -0
- package/dist/http/transport.d.ts.map +1 -0
- package/dist/http/transport.js +131 -0
- package/dist/http/transport.js.map +1 -0
- package/dist/images/pending-request.d.ts +30 -0
- package/dist/images/pending-request.d.ts.map +1 -0
- package/dist/images/pending-request.js +66 -0
- package/dist/images/pending-request.js.map +1 -0
- package/dist/images/request.d.ts +19 -0
- package/dist/images/request.d.ts.map +1 -0
- package/dist/images/request.js +30 -0
- package/dist/images/request.js.map +1 -0
- package/dist/images/response.d.ts +29 -0
- package/dist/images/response.d.ts.map +1 -0
- package/dist/images/response.js +34 -0
- package/dist/images/response.js.map +1 -0
- package/dist/index.d.ts +108 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/filters.d.ts +40 -0
- package/dist/internal/filters.d.ts.map +1 -0
- package/dist/internal/filters.js +83 -0
- package/dist/internal/filters.js.map +1 -0
- package/dist/json.d.ts +41 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +75 -0
- package/dist/json.js.map +1 -0
- package/dist/moderation/pending-request.d.ts +24 -0
- package/dist/moderation/pending-request.d.ts.map +1 -0
- package/dist/moderation/pending-request.js +60 -0
- package/dist/moderation/pending-request.js.map +1 -0
- package/dist/moderation/request.d.ts +20 -0
- package/dist/moderation/request.d.ts.map +1 -0
- package/dist/moderation/request.js +31 -0
- package/dist/moderation/request.js.map +1 -0
- package/dist/moderation/response.d.ts +26 -0
- package/dist/moderation/response.d.ts.map +1 -0
- package/dist/moderation/response.js +34 -0
- package/dist/moderation/response.js.map +1 -0
- package/dist/prism.d.ts +43 -0
- package/dist/prism.d.ts.map +1 -0
- package/dist/prism.js +79 -0
- package/dist/prism.js.map +1 -0
- package/dist/providers/anthropic/anthropic.d.ts +67 -0
- package/dist/providers/anthropic/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic/anthropic.js +172 -0
- package/dist/providers/anthropic/anthropic.js.map +1 -0
- package/dist/providers/anthropic/build-request-body.d.ts +15 -0
- package/dist/providers/anthropic/build-request-body.d.ts.map +1 -0
- package/dist/providers/anthropic/build-request-body.js +51 -0
- package/dist/providers/anthropic/build-request-body.js.map +1 -0
- package/dist/providers/anthropic/maps/finish-reason-map.d.ts +14 -0
- package/dist/providers/anthropic/maps/finish-reason-map.d.ts.map +1 -0
- package/dist/providers/anthropic/maps/finish-reason-map.js +30 -0
- package/dist/providers/anthropic/maps/finish-reason-map.js.map +1 -0
- package/dist/providers/anthropic/maps/media-map.d.ts +25 -0
- package/dist/providers/anthropic/maps/media-map.d.ts.map +1 -0
- package/dist/providers/anthropic/maps/media-map.js +87 -0
- package/dist/providers/anthropic/maps/media-map.js.map +1 -0
- package/dist/providers/anthropic/maps/message-map.d.ts +31 -0
- package/dist/providers/anthropic/maps/message-map.d.ts.map +1 -0
- package/dist/providers/anthropic/maps/message-map.js +121 -0
- package/dist/providers/anthropic/maps/message-map.js.map +1 -0
- package/dist/providers/anthropic/maps/tool-choice-map.d.ts +11 -0
- package/dist/providers/anthropic/maps/tool-choice-map.d.ts.map +1 -0
- package/dist/providers/anthropic/maps/tool-choice-map.js +25 -0
- package/dist/providers/anthropic/maps/tool-choice-map.js.map +1 -0
- package/dist/providers/anthropic/maps/tool-map.d.ts +14 -0
- package/dist/providers/anthropic/maps/tool-map.d.ts.map +1 -0
- package/dist/providers/anthropic/maps/tool-map.js +22 -0
- package/dist/providers/anthropic/maps/tool-map.js.map +1 -0
- package/dist/providers/anthropic/parse-response.d.ts +21 -0
- package/dist/providers/anthropic/parse-response.d.ts.map +1 -0
- package/dist/providers/anthropic/parse-response.js +109 -0
- package/dist/providers/anthropic/parse-response.js.map +1 -0
- package/dist/providers/anthropic/rate-limits.d.ts +4 -0
- package/dist/providers/anthropic/rate-limits.d.ts.map +1 -0
- package/dist/providers/anthropic/rate-limits.js +47 -0
- package/dist/providers/anthropic/rate-limits.js.map +1 -0
- package/dist/providers/anthropic/stream-events.d.ts +27 -0
- package/dist/providers/anthropic/stream-events.d.ts.map +1 -0
- package/dist/providers/anthropic/stream-events.js +147 -0
- package/dist/providers/anthropic/stream-events.js.map +1 -0
- package/dist/providers/mistral/build-request-body.d.ts +32 -0
- package/dist/providers/mistral/build-request-body.d.ts.map +1 -0
- package/dist/providers/mistral/build-request-body.js +69 -0
- package/dist/providers/mistral/build-request-body.js.map +1 -0
- package/dist/providers/mistral/embeddings.d.ts +14 -0
- package/dist/providers/mistral/embeddings.d.ts.map +1 -0
- package/dist/providers/mistral/embeddings.js +41 -0
- package/dist/providers/mistral/embeddings.js.map +1 -0
- package/dist/providers/mistral/fim.d.ts +32 -0
- package/dist/providers/mistral/fim.d.ts.map +1 -0
- package/dist/providers/mistral/fim.js +70 -0
- package/dist/providers/mistral/fim.js.map +1 -0
- package/dist/providers/mistral/maps/finish-reason-map.d.ts +15 -0
- package/dist/providers/mistral/maps/finish-reason-map.d.ts.map +1 -0
- package/dist/providers/mistral/maps/finish-reason-map.js +32 -0
- package/dist/providers/mistral/maps/finish-reason-map.js.map +1 -0
- package/dist/providers/mistral/maps/media-map.d.ts +24 -0
- package/dist/providers/mistral/maps/media-map.d.ts.map +1 -0
- package/dist/providers/mistral/maps/media-map.js +41 -0
- package/dist/providers/mistral/maps/media-map.js.map +1 -0
- package/dist/providers/mistral/maps/message-map.d.ts +20 -0
- package/dist/providers/mistral/maps/message-map.d.ts.map +1 -0
- package/dist/providers/mistral/maps/message-map.js +83 -0
- package/dist/providers/mistral/maps/message-map.js.map +1 -0
- package/dist/providers/mistral/maps/tool-choice-map.d.ts +12 -0
- package/dist/providers/mistral/maps/tool-choice-map.d.ts.map +1 -0
- package/dist/providers/mistral/maps/tool-choice-map.js +25 -0
- package/dist/providers/mistral/maps/tool-choice-map.js.map +1 -0
- package/dist/providers/mistral/maps/tool-map.d.ts +15 -0
- package/dist/providers/mistral/maps/tool-map.d.ts.map +1 -0
- package/dist/providers/mistral/maps/tool-map.js +26 -0
- package/dist/providers/mistral/maps/tool-map.js.map +1 -0
- package/dist/providers/mistral/mistral.d.ts +90 -0
- package/dist/providers/mistral/mistral.d.ts.map +1 -0
- package/dist/providers/mistral/mistral.js +210 -0
- package/dist/providers/mistral/mistral.js.map +1 -0
- package/dist/providers/mistral/parse-response.d.ts +35 -0
- package/dist/providers/mistral/parse-response.d.ts.map +1 -0
- package/dist/providers/mistral/parse-response.js +114 -0
- package/dist/providers/mistral/parse-response.js.map +1 -0
- package/dist/providers/mistral/rate-limits.d.ts +24 -0
- package/dist/providers/mistral/rate-limits.d.ts.map +1 -0
- package/dist/providers/mistral/rate-limits.js +55 -0
- package/dist/providers/mistral/rate-limits.js.map +1 -0
- package/dist/providers/mistral/stream-events.d.ts +29 -0
- package/dist/providers/mistral/stream-events.d.ts.map +1 -0
- package/dist/providers/mistral/stream-events.js +142 -0
- package/dist/providers/mistral/stream-events.js.map +1 -0
- package/dist/providers/openai/audio.d.ts +16 -0
- package/dist/providers/openai/audio.d.ts.map +1 -0
- package/dist/providers/openai/audio.js +105 -0
- package/dist/providers/openai/audio.js.map +1 -0
- package/dist/providers/openai/batch.d.ts +29 -0
- package/dist/providers/openai/batch.d.ts.map +1 -0
- package/dist/providers/openai/batch.js +181 -0
- package/dist/providers/openai/batch.js.map +1 -0
- package/dist/providers/openai/build-request-body.d.ts +25 -0
- package/dist/providers/openai/build-request-body.d.ts.map +1 -0
- package/dist/providers/openai/build-request-body.js +66 -0
- package/dist/providers/openai/build-request-body.js.map +1 -0
- package/dist/providers/openai/build-structured-body.d.ts +16 -0
- package/dist/providers/openai/build-structured-body.d.ts.map +1 -0
- package/dist/providers/openai/build-structured-body.js +47 -0
- package/dist/providers/openai/build-structured-body.js.map +1 -0
- package/dist/providers/openai/embeddings.d.ts +6 -0
- package/dist/providers/openai/embeddings.d.ts.map +1 -0
- package/dist/providers/openai/embeddings.js +61 -0
- package/dist/providers/openai/embeddings.js.map +1 -0
- package/dist/providers/openai/files.d.ts +16 -0
- package/dist/providers/openai/files.d.ts.map +1 -0
- package/dist/providers/openai/files.js +80 -0
- package/dist/providers/openai/files.js.map +1 -0
- package/dist/providers/openai/images.d.ts +6 -0
- package/dist/providers/openai/images.d.ts.map +1 -0
- package/dist/providers/openai/images.js +55 -0
- package/dist/providers/openai/images.js.map +1 -0
- package/dist/providers/openai/maps/finish-reason-map.d.ts +21 -0
- package/dist/providers/openai/maps/finish-reason-map.d.ts.map +1 -0
- package/dist/providers/openai/maps/finish-reason-map.js +56 -0
- package/dist/providers/openai/maps/finish-reason-map.js.map +1 -0
- package/dist/providers/openai/maps/media-map.d.ts +25 -0
- package/dist/providers/openai/maps/media-map.d.ts.map +1 -0
- package/dist/providers/openai/maps/media-map.js +53 -0
- package/dist/providers/openai/maps/media-map.js.map +1 -0
- package/dist/providers/openai/maps/message-map.d.ts +21 -0
- package/dist/providers/openai/maps/message-map.d.ts.map +1 -0
- package/dist/providers/openai/maps/message-map.js +128 -0
- package/dist/providers/openai/maps/message-map.js.map +1 -0
- package/dist/providers/openai/maps/tool-choice-map.d.ts +14 -0
- package/dist/providers/openai/maps/tool-choice-map.d.ts.map +1 -0
- package/dist/providers/openai/maps/tool-choice-map.js +27 -0
- package/dist/providers/openai/maps/tool-choice-map.js.map +1 -0
- package/dist/providers/openai/maps/tool-map.d.ts +16 -0
- package/dist/providers/openai/maps/tool-map.d.ts.map +1 -0
- package/dist/providers/openai/maps/tool-map.js +34 -0
- package/dist/providers/openai/maps/tool-map.js.map +1 -0
- package/dist/providers/openai/moderation.d.ts +6 -0
- package/dist/providers/openai/moderation.d.ts.map +1 -0
- package/dist/providers/openai/moderation.js +26 -0
- package/dist/providers/openai/moderation.js.map +1 -0
- package/dist/providers/openai/openai.d.ts +103 -0
- package/dist/providers/openai/openai.d.ts.map +1 -0
- package/dist/providers/openai/openai.js +385 -0
- package/dist/providers/openai/openai.js.map +1 -0
- package/dist/providers/openai/parse-response.d.ts +21 -0
- package/dist/providers/openai/parse-response.d.ts.map +1 -0
- package/dist/providers/openai/parse-response.js +114 -0
- package/dist/providers/openai/parse-response.js.map +1 -0
- package/dist/providers/openai/rate-limits.d.ts +4 -0
- package/dist/providers/openai/rate-limits.d.ts.map +1 -0
- package/dist/providers/openai/rate-limits.js +47 -0
- package/dist/providers/openai/rate-limits.js.map +1 -0
- package/dist/providers/openai/stream-events.d.ts +13 -0
- package/dist/providers/openai/stream-events.d.ts.map +1 -0
- package/dist/providers/openai/stream-events.js +79 -0
- package/dist/providers/openai/stream-events.js.map +1 -0
- package/dist/providers/openai/structured-mode-resolver.d.ts +3 -0
- package/dist/providers/openai/structured-mode-resolver.d.ts.map +1 -0
- package/dist/providers/openai/structured-mode-resolver.js +41 -0
- package/dist/providers/openai/structured-mode-resolver.js.map +1 -0
- package/dist/providers/provider.d.ts +55 -0
- package/dist/providers/provider.d.ts.map +1 -0
- package/dist/providers/provider.js +73 -0
- package/dist/providers/provider.js.map +1 -0
- package/dist/providers/registry.d.ts +10 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +27 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/support/media.d.ts +16 -0
- package/dist/providers/support/media.d.ts.map +1 -0
- package/dist/providers/support/media.js +26 -0
- package/dist/providers/support/media.js.map +1 -0
- package/dist/schema/index.d.ts +114 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +192 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/streaming/events.d.ts +90 -0
- package/dist/streaming/events.d.ts.map +1 -0
- package/dist/streaming/events.js +152 -0
- package/dist/streaming/events.js.map +1 -0
- package/dist/streaming/sse.d.ts +17 -0
- package/dist/streaming/sse.d.ts.map +1 -0
- package/dist/streaming/sse.js +50 -0
- package/dist/streaming/sse.js.map +1 -0
- package/dist/structured/extract.d.ts +23 -0
- package/dist/structured/extract.d.ts.map +1 -0
- package/dist/structured/extract.js +43 -0
- package/dist/structured/extract.js.map +1 -0
- package/dist/structured/from-text.d.ts +16 -0
- package/dist/structured/from-text.d.ts.map +1 -0
- package/dist/structured/from-text.js +27 -0
- package/dist/structured/from-text.js.map +1 -0
- package/dist/structured/pending-request.d.ts +28 -0
- package/dist/structured/pending-request.d.ts.map +1 -0
- package/dist/structured/pending-request.js +48 -0
- package/dist/structured/pending-request.js.map +1 -0
- package/dist/structured/request.d.ts +28 -0
- package/dist/structured/request.d.ts.map +1 -0
- package/dist/structured/request.js +31 -0
- package/dist/structured/request.js.map +1 -0
- package/dist/structured/response.d.ts +44 -0
- package/dist/structured/response.d.ts.map +1 -0
- package/dist/structured/response.js +49 -0
- package/dist/structured/response.js.map +1 -0
- package/dist/text/pending-request.d.ts +77 -0
- package/dist/text/pending-request.d.ts.map +1 -0
- package/dist/text/pending-request.js +189 -0
- package/dist/text/pending-request.js.map +1 -0
- package/dist/text/request.d.ts +62 -0
- package/dist/text/request.d.ts.map +1 -0
- package/dist/text/request.js +117 -0
- package/dist/text/request.js.map +1 -0
- package/dist/text/response-builder.d.ts +16 -0
- package/dist/text/response-builder.d.ts.map +1 -0
- package/dist/text/response-builder.js +52 -0
- package/dist/text/response-builder.js.map +1 -0
- package/dist/text/response.d.ts +36 -0
- package/dist/text/response.d.ts.map +1 -0
- package/dist/text/response.js +40 -0
- package/dist/text/response.js.map +1 -0
- package/dist/text/step.d.ts +41 -0
- package/dist/text/step.d.ts.map +1 -0
- package/dist/text/step.js +46 -0
- package/dist/text/step.js.map +1 -0
- package/dist/tool.d.ts +34 -0
- package/dist/tool.d.ts.map +1 -0
- package/dist/tool.js +86 -0
- package/dist/tool.js.map +1 -0
- package/dist/value-objects/artifact.d.ts +14 -0
- package/dist/value-objects/artifact.d.ts.map +1 -0
- package/dist/value-objects/artifact.js +32 -0
- package/dist/value-objects/artifact.js.map +1 -0
- package/dist/value-objects/embedding.d.ts +24 -0
- package/dist/value-objects/embedding.d.ts.map +1 -0
- package/dist/value-objects/embedding.js +29 -0
- package/dist/value-objects/embedding.js.map +1 -0
- package/dist/value-objects/embeddings-usage.d.ts +16 -0
- package/dist/value-objects/embeddings-usage.d.ts.map +1 -0
- package/dist/value-objects/embeddings-usage.js +19 -0
- package/dist/value-objects/embeddings-usage.js.map +1 -0
- package/dist/value-objects/generated-audio.d.ts +20 -0
- package/dist/value-objects/generated-audio.d.ts.map +1 -0
- package/dist/value-objects/generated-audio.js +23 -0
- package/dist/value-objects/generated-audio.js.map +1 -0
- package/dist/value-objects/generated-image.d.ts +36 -0
- package/dist/value-objects/generated-image.d.ts.map +1 -0
- package/dist/value-objects/generated-image.js +35 -0
- package/dist/value-objects/generated-image.js.map +1 -0
- package/dist/value-objects/index.d.ts +13 -0
- package/dist/value-objects/index.d.ts.map +1 -0
- package/dist/value-objects/index.js +10 -0
- package/dist/value-objects/index.js.map +1 -0
- package/dist/value-objects/media/audio.d.ts +8 -0
- package/dist/value-objects/media/audio.d.ts.map +1 -0
- package/dist/value-objects/media/audio.js +9 -0
- package/dist/value-objects/media/audio.js.map +1 -0
- package/dist/value-objects/media/document.d.ts +44 -0
- package/dist/value-objects/media/document.d.ts.map +1 -0
- package/dist/value-objects/media/document.js +75 -0
- package/dist/value-objects/media/document.js.map +1 -0
- package/dist/value-objects/media/image.d.ts +13 -0
- package/dist/value-objects/media/image.d.ts.map +1 -0
- package/dist/value-objects/media/image.js +14 -0
- package/dist/value-objects/media/image.js.map +1 -0
- package/dist/value-objects/media/media.d.ts +119 -0
- package/dist/value-objects/media/media.d.ts.map +1 -0
- package/dist/value-objects/media/media.js +267 -0
- package/dist/value-objects/media/media.js.map +1 -0
- package/dist/value-objects/media/part.d.ts +25 -0
- package/dist/value-objects/media/part.d.ts.map +1 -0
- package/dist/value-objects/media/part.js +41 -0
- package/dist/value-objects/media/part.js.map +1 -0
- package/dist/value-objects/media/text.d.ts +24 -0
- package/dist/value-objects/media/text.d.ts.map +1 -0
- package/dist/value-objects/media/text.js +33 -0
- package/dist/value-objects/media/text.js.map +1 -0
- package/dist/value-objects/media/video.d.ts +7 -0
- package/dist/value-objects/media/video.d.ts.map +1 -0
- package/dist/value-objects/media/video.js +8 -0
- package/dist/value-objects/media/video.js.map +1 -0
- package/dist/value-objects/messages/assistant-message.d.ts +26 -0
- package/dist/value-objects/messages/assistant-message.d.ts.map +1 -0
- package/dist/value-objects/messages/assistant-message.js +37 -0
- package/dist/value-objects/messages/assistant-message.js.map +1 -0
- package/dist/value-objects/messages/index.d.ts +27 -0
- package/dist/value-objects/messages/index.d.ts.map +1 -0
- package/dist/value-objects/messages/index.js +32 -0
- package/dist/value-objects/messages/index.js.map +1 -0
- package/dist/value-objects/messages/system-message.d.ts +9 -0
- package/dist/value-objects/messages/system-message.d.ts.map +1 -0
- package/dist/value-objects/messages/system-message.js +17 -0
- package/dist/value-objects/messages/system-message.js.map +1 -0
- package/dist/value-objects/messages/tool-result-message.d.ts +14 -0
- package/dist/value-objects/messages/tool-result-message.d.ts.map +1 -0
- package/dist/value-objects/messages/tool-result-message.js +26 -0
- package/dist/value-objects/messages/tool-result-message.js.map +1 -0
- package/dist/value-objects/messages/user-message.d.ts +47 -0
- package/dist/value-objects/messages/user-message.d.ts.map +1 -0
- package/dist/value-objects/messages/user-message.js +87 -0
- package/dist/value-objects/messages/user-message.js.map +1 -0
- package/dist/value-objects/meta.d.ts +12 -0
- package/dist/value-objects/meta.d.ts.map +1 -0
- package/dist/value-objects/meta.js +28 -0
- package/dist/value-objects/meta.js.map +1 -0
- package/dist/value-objects/moderation-result.d.ts +20 -0
- package/dist/value-objects/moderation-result.d.ts.map +1 -0
- package/dist/value-objects/moderation-result.js +64 -0
- package/dist/value-objects/moderation-result.js.map +1 -0
- package/dist/value-objects/provider-rate-limit.d.ts +11 -0
- package/dist/value-objects/provider-rate-limit.d.ts.map +1 -0
- package/dist/value-objects/provider-rate-limit.js +34 -0
- package/dist/value-objects/provider-rate-limit.js.map +1 -0
- package/dist/value-objects/provider-tool.d.ts +19 -0
- package/dist/value-objects/provider-tool.d.ts.map +1 -0
- package/dist/value-objects/provider-tool.js +31 -0
- package/dist/value-objects/provider-tool.js.map +1 -0
- package/dist/value-objects/tool-call.d.ts +29 -0
- package/dist/value-objects/tool-call.d.ts.map +1 -0
- package/dist/value-objects/tool-call.js +112 -0
- package/dist/value-objects/tool-call.js.map +1 -0
- package/dist/value-objects/tool-result.d.ts +25 -0
- package/dist/value-objects/tool-result.d.ts.map +1 -0
- package/dist/value-objects/tool-result.js +45 -0
- package/dist/value-objects/tool-result.js.map +1 -0
- package/dist/value-objects/usage.d.ts +13 -0
- package/dist/value-objects/usage.d.ts.map +1 -0
- package/dist/value-objects/usage.js +31 -0
- package/dist/value-objects/usage.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { extname } from 'node:path';
|
|
3
|
+
import { PrismError } from '../../errors.js';
|
|
4
|
+
/**
|
|
5
|
+
* A binary payload, however it was given to us.
|
|
6
|
+
*
|
|
7
|
+
* One type behind five ways of naming the same bytes — a url, a base64 string,
|
|
8
|
+
* a local file, raw content, or a provider-side file id. Subclasses add nothing
|
|
9
|
+
* but a name; `Image` and `Audio` differ in what a provider does with them, not
|
|
10
|
+
* in what they are.
|
|
11
|
+
*
|
|
12
|
+
* The alternative was three standalone classes each restating url / base64 /
|
|
13
|
+
* mimeType, which is how a package ends up with three subtly different answers
|
|
14
|
+
* to "is this a file". `GeneratedImage` was the first of those and is now
|
|
15
|
+
* `Image`'s sibling under this base.
|
|
16
|
+
*
|
|
17
|
+
* TWO DELIBERATE DIVERGENCES FROM THE REFERENCE, both recorded in the port gaps
|
|
18
|
+
* register:
|
|
19
|
+
*
|
|
20
|
+
* - `fromStoragePath` is absent. It resolves through Laravel's filesystem, and
|
|
21
|
+
* there is no equivalent here to resolve through.
|
|
22
|
+
* - A url is NEVER fetched implicitly. The reference reads url content on
|
|
23
|
+
* demand inside `rawContent()`, so touching a property performs an outbound
|
|
24
|
+
* request; here `fetch()` is explicit and separate. A value object that
|
|
25
|
+
* reaches the network when you read it turns a stored locator into a request
|
|
26
|
+
* at replay time, which is the exact hazard prism-harness documents about
|
|
27
|
+
* replaying threads.
|
|
28
|
+
*/
|
|
29
|
+
export class Media {
|
|
30
|
+
url;
|
|
31
|
+
#base64;
|
|
32
|
+
#mimeType;
|
|
33
|
+
#rawContent = null;
|
|
34
|
+
#localPath = null;
|
|
35
|
+
#fileId = null;
|
|
36
|
+
#filename = null;
|
|
37
|
+
constructor(url = null, base64 = null, mimeType = null) {
|
|
38
|
+
this.url = url;
|
|
39
|
+
this.#base64 = base64;
|
|
40
|
+
this.#mimeType = mimeType;
|
|
41
|
+
}
|
|
42
|
+
static fromFileId(fileId) {
|
|
43
|
+
const media = new this();
|
|
44
|
+
media.setFileId(fileId);
|
|
45
|
+
return media;
|
|
46
|
+
}
|
|
47
|
+
static fromUrl(url, mimeType = null) {
|
|
48
|
+
const media = new this(url);
|
|
49
|
+
if (mimeType !== null) {
|
|
50
|
+
media.setMimeType(mimeType);
|
|
51
|
+
}
|
|
52
|
+
return media;
|
|
53
|
+
}
|
|
54
|
+
static fromBase64(base64, mimeType = null) {
|
|
55
|
+
return new this(null, base64, mimeType);
|
|
56
|
+
}
|
|
57
|
+
static fromRawContent(content, mimeType = null) {
|
|
58
|
+
const media = new this();
|
|
59
|
+
media.setRawContent(content, mimeType);
|
|
60
|
+
return media;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Read a file from disk.
|
|
64
|
+
*
|
|
65
|
+
* Refuses an EMPTY file, matching the reference. A zero-byte upload is almost
|
|
66
|
+
* always a mistake upstream, and a provider's error for it is far less useful
|
|
67
|
+
* than one naming the path.
|
|
68
|
+
*/
|
|
69
|
+
static fromLocalPath(path, mimeType = null) {
|
|
70
|
+
let content;
|
|
71
|
+
try {
|
|
72
|
+
// Same reason as base64 decoding: a plain Uint8Array, not a Buffer.
|
|
73
|
+
content = Uint8Array.from(readFileSync(path));
|
|
74
|
+
}
|
|
75
|
+
catch (cause) {
|
|
76
|
+
throw PrismError.unreadableMediaFile(path, cause);
|
|
77
|
+
}
|
|
78
|
+
if (content.byteLength === 0) {
|
|
79
|
+
throw PrismError.unreadableMediaFile(path, new Error('the file is empty'));
|
|
80
|
+
}
|
|
81
|
+
const media = new this();
|
|
82
|
+
media.setRawContent(content, mimeType ?? guessMimeType(path));
|
|
83
|
+
media.setLocalPath(path);
|
|
84
|
+
return media;
|
|
85
|
+
}
|
|
86
|
+
/** Alias, matching the reference's spelling. */
|
|
87
|
+
static fromPath(path) {
|
|
88
|
+
return this.fromLocalPath.call(this, path);
|
|
89
|
+
}
|
|
90
|
+
/** Name this payload for a provider that wants a filename. */
|
|
91
|
+
as(name) {
|
|
92
|
+
this.#filename = name;
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
filename() {
|
|
96
|
+
return this.#filename;
|
|
97
|
+
}
|
|
98
|
+
fileId() {
|
|
99
|
+
return this.#fileId;
|
|
100
|
+
}
|
|
101
|
+
localPath() {
|
|
102
|
+
return this.#localPath;
|
|
103
|
+
}
|
|
104
|
+
isFileId() {
|
|
105
|
+
return this.#fileId !== null;
|
|
106
|
+
}
|
|
107
|
+
isFile() {
|
|
108
|
+
return this.#localPath !== null;
|
|
109
|
+
}
|
|
110
|
+
isUrl() {
|
|
111
|
+
return this.url !== null;
|
|
112
|
+
}
|
|
113
|
+
hasBase64() {
|
|
114
|
+
return this.#base64 !== null || this.#rawContent !== null;
|
|
115
|
+
}
|
|
116
|
+
hasMimeType() {
|
|
117
|
+
return this.#mimeType !== null;
|
|
118
|
+
}
|
|
119
|
+
hasRawContent() {
|
|
120
|
+
return this.#rawContent !== null;
|
|
121
|
+
}
|
|
122
|
+
mimeType() {
|
|
123
|
+
return this.#mimeType;
|
|
124
|
+
}
|
|
125
|
+
rawContent() {
|
|
126
|
+
if (this.#rawContent !== null) {
|
|
127
|
+
return this.#rawContent;
|
|
128
|
+
}
|
|
129
|
+
if (this.#base64 !== null) {
|
|
130
|
+
// Copied into a plain Uint8Array rather than handed out as a Buffer.
|
|
131
|
+
// Buffer is a Uint8Array subclass, so returning one satisfies the type
|
|
132
|
+
// while leaking a Node-specific value that serialises differently — it
|
|
133
|
+
// JSON-encodes as `{type:'Buffer',data:[…]}`, which is not what a caller
|
|
134
|
+
// reading a `Uint8Array` expects to persist.
|
|
135
|
+
return Uint8Array.from(Buffer.from(this.#base64, 'base64'));
|
|
136
|
+
}
|
|
137
|
+
// A url is NOT fetched here. See the class docblock.
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* The payload as base64, or null when only a url or file id is known.
|
|
142
|
+
*
|
|
143
|
+
* Computed once and kept, because encoding a large file on every access is a
|
|
144
|
+
* cost a caller cannot see.
|
|
145
|
+
*/
|
|
146
|
+
base64() {
|
|
147
|
+
if (this.#base64 !== null) {
|
|
148
|
+
return this.#base64;
|
|
149
|
+
}
|
|
150
|
+
if (this.#rawContent === null) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
this.#base64 = Buffer.from(this.#rawContent).toString('base64');
|
|
154
|
+
return this.#base64;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Fetch a url's bytes into this payload. EXPLICIT, never automatic.
|
|
158
|
+
*
|
|
159
|
+
* Separate from `rawContent()` so that reading a property never performs an
|
|
160
|
+
* outbound request — a stored locator becoming a request the moment something
|
|
161
|
+
* replays it is the hazard, not the fetch itself.
|
|
162
|
+
*/
|
|
163
|
+
async fetch() {
|
|
164
|
+
if (this.url === null) {
|
|
165
|
+
throw PrismError.unfetchableMedia('this payload has no url');
|
|
166
|
+
}
|
|
167
|
+
const response = await globalThis.fetch(this.url);
|
|
168
|
+
if (!response.ok) {
|
|
169
|
+
throw PrismError.unfetchableMedia(`${this.url} responded ${response.status}`);
|
|
170
|
+
}
|
|
171
|
+
this.setRawContent(new Uint8Array(await response.arrayBuffer()), this.#mimeType ?? response.headers.get('content-type'));
|
|
172
|
+
return this;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* The serialized form.
|
|
176
|
+
*
|
|
177
|
+
* `base64()`, not the base64 FIELD: a payload built from raw content or from
|
|
178
|
+
* a local file has bytes and an empty `#base64` until something asks for it,
|
|
179
|
+
* so reading the field would serialize a full image as `base64: null` and the
|
|
180
|
+
* round trip would silently return an empty one. Encoding here costs one pass
|
|
181
|
+
* over bytes the caller has already decided to persist.
|
|
182
|
+
*/
|
|
183
|
+
toObject() {
|
|
184
|
+
return {
|
|
185
|
+
kind: this.kind,
|
|
186
|
+
url: this.url,
|
|
187
|
+
base64: this.base64(),
|
|
188
|
+
mime_type: this.#mimeType,
|
|
189
|
+
file_id: this.#fileId,
|
|
190
|
+
filename: this.#filename,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Put a serialized payload's fields back on a fresh instance.
|
|
195
|
+
*
|
|
196
|
+
* Protected and static so each subclass's own `fromObject` can call it
|
|
197
|
+
* without every one of them restating the five keys — and without the
|
|
198
|
+
* setters becoming public, which would make a value object mutable from
|
|
199
|
+
* anywhere for the sake of one code path.
|
|
200
|
+
*
|
|
201
|
+
* The local path is NOT restored: it names a file on the machine that
|
|
202
|
+
* serialized this, and a path that resolves to a different file elsewhere is
|
|
203
|
+
* worse than no path at all. The bytes travel as base64 instead.
|
|
204
|
+
*/
|
|
205
|
+
static restoreInto(media, object) {
|
|
206
|
+
if (typeof object.file_id === 'string') {
|
|
207
|
+
media.setFileId(object.file_id);
|
|
208
|
+
}
|
|
209
|
+
if (typeof object.filename === 'string') {
|
|
210
|
+
media.as(object.filename);
|
|
211
|
+
}
|
|
212
|
+
return media;
|
|
213
|
+
}
|
|
214
|
+
/** The url, base64 and mime type a serialized payload carries, as constructor arguments. */
|
|
215
|
+
static constructorArgs(object) {
|
|
216
|
+
return [
|
|
217
|
+
typeof object.url === 'string' ? object.url : null,
|
|
218
|
+
typeof object.base64 === 'string' ? object.base64 : null,
|
|
219
|
+
typeof object.mime_type === 'string' ? object.mime_type : null,
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
setRawContent(content, mimeType) {
|
|
223
|
+
this.#rawContent = content;
|
|
224
|
+
if (mimeType !== null) {
|
|
225
|
+
this.#mimeType = mimeType;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
setMimeType(mimeType) {
|
|
229
|
+
this.#mimeType = mimeType;
|
|
230
|
+
}
|
|
231
|
+
setLocalPath(path) {
|
|
232
|
+
this.#localPath = path;
|
|
233
|
+
}
|
|
234
|
+
setFileId(fileId) {
|
|
235
|
+
this.#fileId = fileId;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Mime type from the file extension.
|
|
240
|
+
*
|
|
241
|
+
* The reference sniffs the CONTENT with finfo. Node has no equivalent without a
|
|
242
|
+
* dependency, and this package takes none — so the extension is the guess, and
|
|
243
|
+
* an unknown one returns null rather than a plausible default. `application/
|
|
244
|
+
* octet-stream` would be accepted by a provider and then rejected as the wrong
|
|
245
|
+
* kind of file, which is a worse failure than being asked for the type.
|
|
246
|
+
*/
|
|
247
|
+
const MIME_TYPES = {
|
|
248
|
+
'.png': 'image/png',
|
|
249
|
+
'.jpg': 'image/jpeg',
|
|
250
|
+
'.jpeg': 'image/jpeg',
|
|
251
|
+
'.gif': 'image/gif',
|
|
252
|
+
'.webp': 'image/webp',
|
|
253
|
+
'.pdf': 'application/pdf',
|
|
254
|
+
'.txt': 'text/plain',
|
|
255
|
+
'.md': 'text/markdown',
|
|
256
|
+
'.mp3': 'audio/mpeg',
|
|
257
|
+
'.mp4': 'video/mp4',
|
|
258
|
+
'.wav': 'audio/wav',
|
|
259
|
+
'.webm': 'audio/webm',
|
|
260
|
+
'.ogg': 'audio/ogg',
|
|
261
|
+
'.flac': 'audio/flac',
|
|
262
|
+
'.m4a': 'audio/mp4',
|
|
263
|
+
};
|
|
264
|
+
export function guessMimeType(path) {
|
|
265
|
+
return MIME_TYPES[extname(path).toLowerCase()] ?? null;
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { JsonObject } from '../../json.js';
|
|
2
|
+
import type { Media } from './media.js';
|
|
3
|
+
import { Text } from './text.js';
|
|
4
|
+
/**
|
|
5
|
+
* One part of a user turn: text, or a payload.
|
|
6
|
+
*
|
|
7
|
+
* `Media` rather than the four subclasses by name, so a payload type added
|
|
8
|
+
* later is a part without this union having to be edited to allow it.
|
|
9
|
+
*/
|
|
10
|
+
export type MessagePart = Text | Media;
|
|
11
|
+
/**
|
|
12
|
+
* Rebuild a part from its serialized form.
|
|
13
|
+
*
|
|
14
|
+
* NO `kind` MEANS TEXT. That is the specified form rather than a tolerated one:
|
|
15
|
+
* a text part serializes as `{ text }` in this port, in `prism-py` and in the
|
|
16
|
+
* PHP reference alike, pinned by the conformance corpus — see {@link Text}. So
|
|
17
|
+
* every user message any consumer has already stored reads back unchanged, and
|
|
18
|
+
* a discriminator is only ever needed to tell the payload kinds apart from each
|
|
19
|
+
* other, which is the one thing their keys cannot do (an image, an audio file
|
|
20
|
+
* and a video serialize identically).
|
|
21
|
+
*
|
|
22
|
+
* @throws PrismError code `unknown_message_type`
|
|
23
|
+
*/
|
|
24
|
+
export declare function partFromObject(object: JsonObject): MessagePart;
|
|
25
|
+
//# sourceMappingURL=part.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"part.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/part.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAKhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,KAAK,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAqB9D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { PrismError } from '../../errors.js';
|
|
2
|
+
import { Audio } from './audio.js';
|
|
3
|
+
import { Document } from './document.js';
|
|
4
|
+
import { Image } from './image.js';
|
|
5
|
+
import { Text } from './text.js';
|
|
6
|
+
import { Video } from './video.js';
|
|
7
|
+
/**
|
|
8
|
+
* Rebuild a part from its serialized form.
|
|
9
|
+
*
|
|
10
|
+
* NO `kind` MEANS TEXT. That is the specified form rather than a tolerated one:
|
|
11
|
+
* a text part serializes as `{ text }` in this port, in `prism-py` and in the
|
|
12
|
+
* PHP reference alike, pinned by the conformance corpus — see {@link Text}. So
|
|
13
|
+
* every user message any consumer has already stored reads back unchanged, and
|
|
14
|
+
* a discriminator is only ever needed to tell the payload kinds apart from each
|
|
15
|
+
* other, which is the one thing their keys cannot do (an image, an audio file
|
|
16
|
+
* and a video serialize identically).
|
|
17
|
+
*
|
|
18
|
+
* @throws PrismError code `unknown_message_type`
|
|
19
|
+
*/
|
|
20
|
+
export function partFromObject(object) {
|
|
21
|
+
switch (object.kind) {
|
|
22
|
+
case 'text':
|
|
23
|
+
return Text.fromObject(object);
|
|
24
|
+
case 'image':
|
|
25
|
+
return Image.fromObject(object);
|
|
26
|
+
case 'document':
|
|
27
|
+
return Document.fromObject(object);
|
|
28
|
+
case 'audio':
|
|
29
|
+
return Audio.fromObject(object);
|
|
30
|
+
case 'video':
|
|
31
|
+
return Video.fromObject(object);
|
|
32
|
+
case undefined:
|
|
33
|
+
if (typeof object.text === 'string') {
|
|
34
|
+
return Text.fromObject(object);
|
|
35
|
+
}
|
|
36
|
+
throw PrismError.unknownMessageType(`media part ${JSON.stringify(object)} (no \`kind\`, and no text to fall back to)`);
|
|
37
|
+
default:
|
|
38
|
+
throw PrismError.unknownMessageType(`media part of kind ${JSON.stringify(object.kind)}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=part.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"part.js","sourceRoot":"","sources":["../../../src/value-objects/media/part.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAUnC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,SAAS;YACZ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,UAAU,CAAC,kBAAkB,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;QACzH;YACE,MAAM,UAAU,CAAC,kBAAkB,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { JsonObject } from '../../json.js';
|
|
2
|
+
/**
|
|
3
|
+
* A plain-text part of a user message.
|
|
4
|
+
*
|
|
5
|
+
* SERIALIZES AS `{ text }` AND NOTHING ELSE — no `kind` discriminator, unlike
|
|
6
|
+
* every other part. That asymmetry is deliberate and load-bearing: the
|
|
7
|
+
* conformance corpus pins this exact form (`rtp-0001`, and every row of
|
|
8
|
+
* `openai-text-response`), and the PHP reference emits it too, so a text part
|
|
9
|
+
* is one of the few places all three implementations are byte-identical.
|
|
10
|
+
* Adding a key for symmetry would take both ports out of parity with the
|
|
11
|
+
* reference on the only part type the reference can currently produce, and
|
|
12
|
+
* would make every message a consumer has already stored unreadable.
|
|
13
|
+
*
|
|
14
|
+
* A part carrying no `kind` therefore MEANS text, which is what
|
|
15
|
+
* {@link partFromObject} relies on.
|
|
16
|
+
*/
|
|
17
|
+
export declare class Text {
|
|
18
|
+
readonly text: string;
|
|
19
|
+
readonly kind: "text";
|
|
20
|
+
constructor(text: string);
|
|
21
|
+
toObject(): JsonObject;
|
|
22
|
+
static fromObject(object: JsonObject): Text;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,IAAI;IAGH,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;gBAEX,IAAI,EAAE,MAAM;IAEjC,QAAQ,IAAI,UAAU;IAItB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;CAO5C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { PrismError } from '../../errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* A plain-text part of a user message.
|
|
4
|
+
*
|
|
5
|
+
* SERIALIZES AS `{ text }` AND NOTHING ELSE — no `kind` discriminator, unlike
|
|
6
|
+
* every other part. That asymmetry is deliberate and load-bearing: the
|
|
7
|
+
* conformance corpus pins this exact form (`rtp-0001`, and every row of
|
|
8
|
+
* `openai-text-response`), and the PHP reference emits it too, so a text part
|
|
9
|
+
* is one of the few places all three implementations are byte-identical.
|
|
10
|
+
* Adding a key for symmetry would take both ports out of parity with the
|
|
11
|
+
* reference on the only part type the reference can currently produce, and
|
|
12
|
+
* would make every message a consumer has already stored unreadable.
|
|
13
|
+
*
|
|
14
|
+
* A part carrying no `kind` therefore MEANS text, which is what
|
|
15
|
+
* {@link partFromObject} relies on.
|
|
16
|
+
*/
|
|
17
|
+
export class Text {
|
|
18
|
+
text;
|
|
19
|
+
kind = 'text';
|
|
20
|
+
constructor(text) {
|
|
21
|
+
this.text = text;
|
|
22
|
+
}
|
|
23
|
+
toObject() {
|
|
24
|
+
return { text: this.text };
|
|
25
|
+
}
|
|
26
|
+
static fromObject(object) {
|
|
27
|
+
if (typeof object.text !== 'string') {
|
|
28
|
+
throw PrismError.unknownMessageType(`media part ${JSON.stringify(object)} (a text part needs a string \`text\`)`);
|
|
29
|
+
}
|
|
30
|
+
return new Text(object.text);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/value-objects/media/text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,IAAI;IAGM;IAFZ,IAAI,GAAG,MAAe,CAAC;IAEhC,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAErC,QAAQ;QACN,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAkB;QAClC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,UAAU,CAAC,kBAAkB,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;QACpH,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/video.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,qBAAa,KAAM,SAAQ,KAAK;IAC9B,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK;CAG7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../../src/value-objects/media/video.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,KAAM,SAAQ,KAAK;IACrB,IAAI,GAAG,OAAgB,CAAC;IAEjC,MAAM,CAAC,UAAU,CAAC,MAAkB;QAClC,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { JsonObject } from '../../json.js';
|
|
2
|
+
import { ToolCall } from '../tool-call.js';
|
|
3
|
+
export declare class AssistantMessage {
|
|
4
|
+
readonly content: string;
|
|
5
|
+
readonly toolCalls: readonly ToolCall[];
|
|
6
|
+
readonly additionalContent: Readonly<JsonObject>;
|
|
7
|
+
/**
|
|
8
|
+
* Approval requests are carried verbatim rather than modelled: the approval
|
|
9
|
+
* feature is not part of this port, but dropping the key would change what
|
|
10
|
+
* `toObject()` emits relative to the reference, so it round-trips as raw
|
|
11
|
+
* JSON instead.
|
|
12
|
+
*/
|
|
13
|
+
readonly toolApprovalRequests: readonly JsonObject[];
|
|
14
|
+
readonly type: "assistant";
|
|
15
|
+
constructor(content: string, toolCalls?: readonly ToolCall[], additionalContent?: Readonly<JsonObject>,
|
|
16
|
+
/**
|
|
17
|
+
* Approval requests are carried verbatim rather than modelled: the approval
|
|
18
|
+
* feature is not part of this port, but dropping the key would change what
|
|
19
|
+
* `toObject()` emits relative to the reference, so it round-trips as raw
|
|
20
|
+
* JSON instead.
|
|
21
|
+
*/
|
|
22
|
+
toolApprovalRequests?: readonly JsonObject[]);
|
|
23
|
+
toObject(): JsonObject;
|
|
24
|
+
static fromObject(object: JsonObject): AssistantMessage;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=assistant-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-message.d.ts","sourceRoot":"","sources":["../../../src/value-objects/messages/assistant-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,qBAAa,gBAAgB;IAIzB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE;IACvC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,EAAE,SAAS,UAAU,EAAE;IAZtD,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;gBAG1B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,SAAS,QAAQ,EAAO,EACnC,iBAAiB,GAAE,QAAQ,CAAC,UAAU,CAAM;IACrD;;;;;OAKG;IACM,oBAAoB,GAAE,SAAS,UAAU,EAAO;IAG3D,QAAQ,IAAI,UAAU;IAUtB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB;CAUxD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isJsonObject } from '../../json.js';
|
|
2
|
+
import { ToolCall } from '../tool-call.js';
|
|
3
|
+
export class AssistantMessage {
|
|
4
|
+
content;
|
|
5
|
+
toolCalls;
|
|
6
|
+
additionalContent;
|
|
7
|
+
toolApprovalRequests;
|
|
8
|
+
type = 'assistant';
|
|
9
|
+
constructor(content, toolCalls = [], additionalContent = {},
|
|
10
|
+
/**
|
|
11
|
+
* Approval requests are carried verbatim rather than modelled: the approval
|
|
12
|
+
* feature is not part of this port, but dropping the key would change what
|
|
13
|
+
* `toObject()` emits relative to the reference, so it round-trips as raw
|
|
14
|
+
* JSON instead.
|
|
15
|
+
*/
|
|
16
|
+
toolApprovalRequests = []) {
|
|
17
|
+
this.content = content;
|
|
18
|
+
this.toolCalls = toolCalls;
|
|
19
|
+
this.additionalContent = additionalContent;
|
|
20
|
+
this.toolApprovalRequests = toolApprovalRequests;
|
|
21
|
+
}
|
|
22
|
+
toObject() {
|
|
23
|
+
return {
|
|
24
|
+
type: 'assistant',
|
|
25
|
+
content: this.content,
|
|
26
|
+
tool_calls: this.toolCalls.map((toolCall) => toolCall.toObject()),
|
|
27
|
+
additional_content: { ...this.additionalContent },
|
|
28
|
+
tool_approval_requests: this.toolApprovalRequests.map((request) => ({ ...request })),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
static fromObject(object) {
|
|
32
|
+
return new AssistantMessage(typeof object.content === 'string' ? object.content : '', (Array.isArray(object.tool_calls) ? object.tool_calls : [])
|
|
33
|
+
.filter(isJsonObject)
|
|
34
|
+
.map((toolCall) => ToolCall.fromObject(toolCall)), isJsonObject(object.additional_content) ? object.additional_content : {}, (Array.isArray(object.tool_approval_requests) ? object.tool_approval_requests : []).filter(isJsonObject));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=assistant-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-message.js","sourceRoot":"","sources":["../../../src/value-objects/messages/assistant-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,OAAO,gBAAgB;IAIhB;IACA;IACA;IAOA;IAZF,IAAI,GAAG,WAAoB,CAAC;IAErC,YACW,OAAe,EACf,YAAiC,EAAE,EACnC,oBAA0C,EAAE;IACrD;;;;;OAKG;IACM,uBAA8C,EAAE;QAThD,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAA0B;QACnC,sBAAiB,GAAjB,iBAAiB,CAA2B;QAO5C,yBAAoB,GAApB,oBAAoB,CAA4B;IACxD,CAAC;IAEJ,QAAQ;QACN,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACjE,kBAAkB,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACjD,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;SACrF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAkB;QAClC,OAAO,IAAI,gBAAgB,CACzB,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EACxD,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,MAAM,CAAC,YAAY,CAAC;aACpB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EACnD,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EACxE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CACzG,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { JsonObject } from '../../json.js';
|
|
2
|
+
import { AssistantMessage } from './assistant-message.js';
|
|
3
|
+
import { SystemMessage } from './system-message.js';
|
|
4
|
+
import { ToolResultMessage } from './tool-result-message.js';
|
|
5
|
+
import { UserMessage } from './user-message.js';
|
|
6
|
+
export { AssistantMessage } from './assistant-message.js';
|
|
7
|
+
export { SystemMessage } from './system-message.js';
|
|
8
|
+
export { ToolResultMessage } from './tool-result-message.js';
|
|
9
|
+
export { UserMessage } from './user-message.js';
|
|
10
|
+
/**
|
|
11
|
+
* The message union, discriminated on `type`.
|
|
12
|
+
*
|
|
13
|
+
* `type` is the same string each message's `toObject()` emits, so the
|
|
14
|
+
* discriminant and the serialized form cannot drift apart.
|
|
15
|
+
*/
|
|
16
|
+
export type Message = UserMessage | AssistantMessage | SystemMessage | ToolResultMessage;
|
|
17
|
+
export type MessageType = Message['type'];
|
|
18
|
+
/**
|
|
19
|
+
* Rebuild a message from its serialized form.
|
|
20
|
+
*
|
|
21
|
+
* The reference package has `toArray()` and no counterpart, which left every
|
|
22
|
+
* consumer to invent its own. This is the counterpart.
|
|
23
|
+
*
|
|
24
|
+
* @throws PrismError code `unknown_message_type`
|
|
25
|
+
*/
|
|
26
|
+
export declare function messageFromObject(object: JsonObject): Message;
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAEzF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE1C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAa7D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PrismError } from '../../errors.js';
|
|
2
|
+
import { AssistantMessage } from './assistant-message.js';
|
|
3
|
+
import { SystemMessage } from './system-message.js';
|
|
4
|
+
import { ToolResultMessage } from './tool-result-message.js';
|
|
5
|
+
import { UserMessage } from './user-message.js';
|
|
6
|
+
export { AssistantMessage } from './assistant-message.js';
|
|
7
|
+
export { SystemMessage } from './system-message.js';
|
|
8
|
+
export { ToolResultMessage } from './tool-result-message.js';
|
|
9
|
+
export { UserMessage } from './user-message.js';
|
|
10
|
+
/**
|
|
11
|
+
* Rebuild a message from its serialized form.
|
|
12
|
+
*
|
|
13
|
+
* The reference package has `toArray()` and no counterpart, which left every
|
|
14
|
+
* consumer to invent its own. This is the counterpart.
|
|
15
|
+
*
|
|
16
|
+
* @throws PrismError code `unknown_message_type`
|
|
17
|
+
*/
|
|
18
|
+
export function messageFromObject(object) {
|
|
19
|
+
switch (object.type) {
|
|
20
|
+
case 'user':
|
|
21
|
+
return UserMessage.fromObject(object);
|
|
22
|
+
case 'assistant':
|
|
23
|
+
return AssistantMessage.fromObject(object);
|
|
24
|
+
case 'system':
|
|
25
|
+
return SystemMessage.fromObject(object);
|
|
26
|
+
case 'tool_result':
|
|
27
|
+
return ToolResultMessage.fromObject(object);
|
|
28
|
+
default:
|
|
29
|
+
throw PrismError.unknownMessageType(String(object.type));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/messages/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAYhD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,aAAa;YAChB,OAAO,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C;YACE,MAAM,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { JsonObject } from '../../json.js';
|
|
2
|
+
export declare class SystemMessage {
|
|
3
|
+
readonly content: string;
|
|
4
|
+
readonly type: "system";
|
|
5
|
+
constructor(content: string);
|
|
6
|
+
toObject(): JsonObject;
|
|
7
|
+
static fromObject(object: JsonObject): SystemMessage;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=system-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-message.d.ts","sourceRoot":"","sources":["../../../src/value-objects/messages/system-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,qBAAa,aAAa;IAGZ,QAAQ,CAAC,OAAO,EAAE,MAAM;IAFpC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;gBAEb,OAAO,EAAE,MAAM;IAEpC,QAAQ,IAAI,UAAU;IAOtB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa;CAGrD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class SystemMessage {
|
|
2
|
+
content;
|
|
3
|
+
type = 'system';
|
|
4
|
+
constructor(content) {
|
|
5
|
+
this.content = content;
|
|
6
|
+
}
|
|
7
|
+
toObject() {
|
|
8
|
+
return {
|
|
9
|
+
type: 'system',
|
|
10
|
+
content: this.content,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
static fromObject(object) {
|
|
14
|
+
return new SystemMessage(typeof object.content === 'string' ? object.content : '');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=system-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-message.js","sourceRoot":"","sources":["../../../src/value-objects/messages/system-message.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAGH;IAFZ,IAAI,GAAG,QAAiB,CAAC;IAElC,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAExC,QAAQ;QACN,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAkB;QAClC,OAAO,IAAI,aAAa,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { JsonObject } from '../../json.js';
|
|
2
|
+
import { ToolResult } from '../tool-result.js';
|
|
3
|
+
export declare class ToolResultMessage {
|
|
4
|
+
readonly toolResults: readonly ToolResult[];
|
|
5
|
+
/** Carried verbatim; see the note on `AssistantMessage.toolApprovalRequests`. */
|
|
6
|
+
readonly toolApprovalResponses: readonly JsonObject[];
|
|
7
|
+
readonly type: "tool_result";
|
|
8
|
+
constructor(toolResults?: readonly ToolResult[],
|
|
9
|
+
/** Carried verbatim; see the note on `AssistantMessage.toolApprovalRequests`. */
|
|
10
|
+
toolApprovalResponses?: readonly JsonObject[]);
|
|
11
|
+
toObject(): JsonObject;
|
|
12
|
+
static fromObject(object: JsonObject): ToolResultMessage;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=tool-result-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-result-message.d.ts","sourceRoot":"","sources":["../../../src/value-objects/messages/tool-result-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,qBAAa,iBAAiB;IAI1B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE;IAC3C,iFAAiF;IACjF,QAAQ,CAAC,qBAAqB,EAAE,SAAS,UAAU,EAAE;IALvD,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;gBAG5B,WAAW,GAAE,SAAS,UAAU,EAAO;IAChD,iFAAiF;IACxE,qBAAqB,GAAE,SAAS,UAAU,EAAO;IAG5D,QAAQ,IAAI,UAAU;IAQtB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,iBAAiB;CAQzD"}
|