@executioncontrolprotocol/core 0.12.0 → 0.13.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/README.md +14 -0
- package/dist/browser-runtime-entry.d.ts +11 -2
- package/dist/browser-runtime-entry.d.ts.map +1 -1
- package/dist/browser-runtime-entry.js +10 -1
- package/dist/browser-runtime-entry.js.map +1 -1
- package/dist/compile/transpile.d.ts +6 -0
- package/dist/compile/transpile.d.ts.map +1 -1
- package/dist/compile/transpile.js +19 -8
- package/dist/compile/transpile.js.map +1 -1
- package/dist/definitions/capability.d.ts +4 -1
- package/dist/definitions/capability.d.ts.map +1 -1
- package/dist/definitions/capability.js +7 -0
- package/dist/definitions/capability.js.map +1 -1
- package/dist/definitions/types.d.ts +3 -1
- package/dist/definitions/types.d.ts.map +1 -1
- package/dist/encoding/schemas.d.ts +26 -26
- package/dist/environment/describe.d.ts +1 -2
- package/dist/environment/describe.d.ts.map +1 -1
- package/dist/environment/describe.js +2 -0
- package/dist/environment/describe.js.map +1 -1
- package/dist/environment/ecp.d.ts +8 -0
- package/dist/environment/ecp.d.ts.map +1 -1
- package/dist/environment/ecp.js +12 -0
- package/dist/environment/ecp.js.map +1 -1
- package/dist/environment/environment.d.ts +31 -0
- package/dist/environment/environment.d.ts.map +1 -1
- package/dist/environment/environment.js +64 -1
- package/dist/environment/environment.js.map +1 -1
- package/dist/file/file-ref.d.ts +28 -0
- package/dist/file/file-ref.d.ts.map +1 -0
- package/dist/{image/image-ref.js → file/file-ref.js} +20 -20
- package/dist/file/file-ref.js.map +1 -0
- package/dist/fluent/render-workflow.d.ts +1 -1
- package/dist/fluent/render-workflow.d.ts.map +1 -1
- package/dist/fluent/render-workflow.js +5 -4
- package/dist/fluent/render-workflow.js.map +1 -1
- package/dist/harness/authoring/context-policy.d.ts.map +1 -1
- package/dist/harness/authoring/context-policy.js +2 -2
- package/dist/harness/authoring/context-policy.js.map +1 -1
- package/dist/harness/authoring/index.d.ts +1 -1
- package/dist/harness/authoring/index.d.ts.map +1 -1
- package/dist/harness/authoring/index.js +1 -1
- package/dist/harness/authoring/index.js.map +1 -1
- package/dist/harness/authoring/summarize-capability-schema.d.ts.map +1 -1
- package/dist/harness/authoring/summarize-capability-schema.js +14 -10
- package/dist/harness/authoring/summarize-capability-schema.js.map +1 -1
- package/dist/harness/authoring/summarize-environment.d.ts +11 -0
- package/dist/harness/authoring/summarize-environment.d.ts.map +1 -1
- package/dist/harness/authoring/summarize-environment.js +55 -10
- package/dist/harness/authoring/summarize-environment.js.map +1 -1
- package/dist/harness/authoring/summarize-workflow.d.ts +2 -0
- package/dist/harness/authoring/summarize-workflow.d.ts.map +1 -1
- package/dist/harness/authoring/summarize-workflow.js +40 -1
- package/dist/harness/authoring/summarize-workflow.js.map +1 -1
- package/dist/harness/execute-harness.d.ts.map +1 -1
- package/dist/harness/execute-harness.js +14 -10
- package/dist/harness/execute-harness.js.map +1 -1
- package/dist/harness/prompts/eql-primer.d.ts +1 -0
- package/dist/harness/prompts/eql-primer.d.ts.map +1 -1
- package/dist/harness/prompts/eql-primer.js +22 -0
- package/dist/harness/prompts/eql-primer.js.map +1 -1
- package/dist/harness/prompts/typescript-primer.d.ts.map +1 -1
- package/dist/harness/prompts/typescript-primer.js +15 -3
- package/dist/harness/prompts/typescript-primer.js.map +1 -1
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/invoke/execute-invoke.d.ts.map +1 -1
- package/dist/invoke/execute-invoke.js +20 -6
- package/dist/invoke/execute-invoke.js.map +1 -1
- package/dist/loaders/files.d.ts.map +1 -1
- package/dist/loaders/files.js +4 -2
- package/dist/loaders/files.js.map +1 -1
- package/dist/loaders/read-media-file.d.ts +6 -0
- package/dist/loaders/read-media-file.d.ts.map +1 -0
- package/dist/loaders/read-media-file.js +10 -0
- package/dist/loaders/read-media-file.js.map +1 -0
- package/dist/media/artifact-filename.d.ts +41 -0
- package/dist/media/artifact-filename.d.ts.map +1 -0
- package/dist/media/artifact-filename.js +119 -0
- package/dist/media/artifact-filename.js.map +1 -0
- package/dist/media/assert-media-type.d.ts +11 -0
- package/dist/media/assert-media-type.d.ts.map +1 -0
- package/dist/media/assert-media-type.js +43 -0
- package/dist/media/assert-media-type.js.map +1 -0
- package/dist/media/index.d.ts +13 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/index.js +13 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/resolve-file.d.ts +32 -0
- package/dist/media/resolve-file.d.ts.map +1 -0
- package/dist/media/resolve-file.js +110 -0
- package/dist/media/resolve-file.js.map +1 -0
- package/dist/media/write-media.d.ts +19 -0
- package/dist/media/write-media.d.ts.map +1 -0
- package/dist/media/write-media.js +46 -0
- package/dist/media/write-media.js.map +1 -0
- package/dist/patch/patch-document.d.ts +2 -2
- package/dist/runtime/artifacts.d.ts +31 -0
- package/dist/runtime/artifacts.d.ts.map +1 -0
- package/dist/runtime/artifacts.js +26 -0
- package/dist/runtime/artifacts.js.map +1 -0
- package/dist/runtime/blobs.d.ts +72 -0
- package/dist/runtime/blobs.d.ts.map +1 -0
- package/dist/runtime/blobs.js +129 -0
- package/dist/runtime/blobs.js.map +1 -0
- package/dist/runtime/capability-execution.d.ts +22 -0
- package/dist/runtime/capability-execution.d.ts.map +1 -0
- package/dist/runtime/capability-execution.js +25 -0
- package/dist/runtime/capability-execution.js.map +1 -0
- package/dist/runtime/context.d.ts +9 -1
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/context.js.map +1 -1
- package/dist/runtime/dispatch-capability.d.ts +42 -0
- package/dist/runtime/dispatch-capability.d.ts.map +1 -0
- package/dist/runtime/dispatch-capability.js +94 -0
- package/dist/runtime/dispatch-capability.js.map +1 -0
- package/dist/runtime/executor.d.ts +9 -0
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/in-memory-executor.d.ts.map +1 -1
- package/dist/runtime/in-memory-executor.js +67 -8
- package/dist/runtime/in-memory-executor.js.map +1 -1
- package/dist/runtime/mixed-blob-upload.d.ts +37 -0
- package/dist/runtime/mixed-blob-upload.d.ts.map +1 -0
- package/dist/runtime/mixed-blob-upload.js +65 -0
- package/dist/runtime/mixed-blob-upload.js.map +1 -0
- package/dist/runtime/remote-invoke.d.ts +21 -0
- package/dist/runtime/remote-invoke.d.ts.map +1 -0
- package/dist/runtime/remote-invoke.js +83 -0
- package/dist/runtime/remote-invoke.js.map +1 -0
- package/dist/runtime/runtime-ids.d.ts +5 -0
- package/dist/runtime/runtime-ids.d.ts.map +1 -0
- package/dist/runtime/runtime-ids.js +5 -0
- package/dist/runtime/runtime-ids.js.map +1 -0
- package/dist/schema/json-schema.d.ts +12 -4
- package/dist/schema/json-schema.d.ts.map +1 -1
- package/dist/schema/json-schema.js +40 -7
- package/dist/schema/json-schema.js.map +1 -1
- package/dist/testing/test-extension.d.ts.map +1 -1
- package/dist/testing/test-extension.js +6 -0
- package/dist/testing/test-extension.js.map +1 -1
- package/dist/testing/test-lifecycle-extension.d.ts +3 -1
- package/dist/testing/test-lifecycle-extension.d.ts.map +1 -1
- package/dist/testing/test-lifecycle-extension.js +7 -1
- package/dist/testing/test-lifecycle-extension.js.map +1 -1
- package/dist/validate/environment.d.ts.map +1 -1
- package/dist/validate/environment.js +26 -4
- package/dist/validate/environment.js.map +1 -1
- package/dist/validate/workflow-schema.d.ts +6 -6
- package/fixtures/schema-examples/workflow.output.eql +6 -2
- package/fixtures/schema-examples/workflow.output.json +17 -3
- package/package.json +6 -6
- package/dist/image/image-ref.d.ts +0 -28
- package/dist/image/image-ref.d.ts.map +0 -1
- package/dist/image/image-ref.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-invoke.d.ts","sourceRoot":"","sources":["../../src/invoke/execute-invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,YAAY,EAElB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"execute-invoke.d.ts","sourceRoot":"","sources":["../../src/invoke/execute-invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,YAAY,EAElB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAiEhE;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,OAAO,EACd,gBAAgB,CAAC,EAAE,YAAY,GAC9B,OAAO,CAAC,YAAY,CAAC,CA0IvB"}
|
|
@@ -7,6 +7,7 @@ import { createUsageLedger } from "../runtime/context.js";
|
|
|
7
7
|
import { emptyValidationResult } from "../validate/workflow-schema.js";
|
|
8
8
|
import { zodIssuesToValidationIssues } from "../validate/zod-mapper.js";
|
|
9
9
|
import { LATEST_ECP_VERSION as CORE_VERSION } from "@executioncontrolprotocol/types";
|
|
10
|
+
import { CapabilityDispatchError, createDispatchingCall, dispatchCapability, } from "../runtime/dispatch-capability.js";
|
|
10
11
|
const INVOKE_STUB_WORKFLOW = {
|
|
11
12
|
schema: "@executioncontrolprotocol.workflow",
|
|
12
13
|
version: LATEST_ECP_VERSION,
|
|
@@ -97,20 +98,33 @@ export async function executeInvoke(env, capabilityId, input, providerOverride)
|
|
|
97
98
|
logger: utilityCtx.logger,
|
|
98
99
|
usage: policyCtx.usage,
|
|
99
100
|
extensionConfig,
|
|
101
|
+
blobs: env.getBlobStore(),
|
|
102
|
+
artifacts: env.ensureArtifactStore(),
|
|
100
103
|
capabilities: {
|
|
101
|
-
call: async (id
|
|
102
|
-
|
|
103
|
-
if (!nested)
|
|
104
|
-
throw new Error(`Unknown capability: ${id}`);
|
|
105
|
-
return nested.handler(nestedInput, capCtx);
|
|
104
|
+
call: async (id) => {
|
|
105
|
+
throw new Error(`nested call not bound: ${id}`);
|
|
106
106
|
},
|
|
107
107
|
},
|
|
108
108
|
};
|
|
109
|
+
const dispatchOpts = {
|
|
110
|
+
ctx: capCtx,
|
|
111
|
+
registry,
|
|
112
|
+
runtimeId: env.getRuntimeId(),
|
|
113
|
+
remoteInvoke: env.getRemoteInvoke(),
|
|
114
|
+
};
|
|
115
|
+
capCtx.capabilities.call = createDispatchingCall(dispatchOpts);
|
|
109
116
|
let output;
|
|
110
117
|
try {
|
|
111
|
-
output = await
|
|
118
|
+
output = await dispatchCapability({
|
|
119
|
+
...dispatchOpts,
|
|
120
|
+
capabilityId,
|
|
121
|
+
input,
|
|
122
|
+
});
|
|
112
123
|
}
|
|
113
124
|
catch (err) {
|
|
125
|
+
if (err instanceof CapabilityDispatchError) {
|
|
126
|
+
return err.result;
|
|
127
|
+
}
|
|
114
128
|
const message = err instanceof Error ? err.message : String(err);
|
|
115
129
|
return invokeFailure(capabilityId, ECP_INVOKE_ERROR_CODES.INVOKE_FAILED, message);
|
|
116
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-invoke.js","sourceRoot":"","sources":["../../src/invoke/execute-invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GAInB,MAAM,iCAAiC,CAAA;AAGxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAA8C,MAAM,uBAAuB,CAAA;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"execute-invoke.js","sourceRoot":"","sources":["../../src/invoke/execute-invoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/loaders/files.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAIhE,0BAA0B;AAC1B,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhE;AAED,6CAA6C;AAC7C,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAG9E;AAED,kDAAkD;AAClD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAa9E;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/loaders/files.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAIhE,0BAA0B;AAC1B,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhE;AAED,6CAA6C;AAC7C,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAG9E;AAED,kDAAkD;AAClD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAa9E;AAoBD,8CAA8C;AAC9C,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAe9E;AAED,gDAAgD;AAChD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEhF"}
|
package/dist/loaders/files.js
CHANGED
|
@@ -3,7 +3,7 @@ import { tmpdir } from "node:os";
|
|
|
3
3
|
import { dirname, join, resolve } from "node:path";
|
|
4
4
|
import { pathToFileURL } from "node:url";
|
|
5
5
|
import { compileWorkflowSource } from "../compile/index.js";
|
|
6
|
-
import {
|
|
6
|
+
import { bundleEnvironmentSource } from "../compile/transpile.js";
|
|
7
7
|
/** Read file as utf-8. */
|
|
8
8
|
export async function readTextFile(path) {
|
|
9
9
|
return readFile(path, "utf8");
|
|
@@ -29,7 +29,9 @@ export async function loadWorkflowFile(path) {
|
|
|
29
29
|
}
|
|
30
30
|
async function loadBundledModule(source, filename) {
|
|
31
31
|
const abs = resolve(filename);
|
|
32
|
-
const code = await
|
|
32
|
+
const code = await bundleEnvironmentSource(source, abs, dirname(abs));
|
|
33
|
+
// Absolute file: externals let this temp module load from os.tmpdir()
|
|
34
|
+
// while native deps (sharp) and linked packages stay as runtime imports.
|
|
33
35
|
const dir = await mkdtemp(join(tmpdir(), "ecp-bundle-"));
|
|
34
36
|
const file = join(dir, "module.mjs");
|
|
35
37
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/loaders/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/loaders/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-media-file.d.ts","sourceRoot":"","sources":["../../src/loaders/read-media-file.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAG7E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
/**
|
|
3
|
+
* Read a host file path into bytes for {@link resolveFile} on Node.
|
|
4
|
+
* @category Loaders
|
|
5
|
+
*/
|
|
6
|
+
export async function readMediaFileFromPath(path) {
|
|
7
|
+
const buf = await readFile(path);
|
|
8
|
+
return new Uint8Array(buf);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=read-media-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-media-file.js","sourceRoot":"","sources":["../../src/loaders/read-media-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY;IACtD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File extension (no dot) for a MIME type, or `undefined` when unknown.
|
|
3
|
+
* @category Media
|
|
4
|
+
*/
|
|
5
|
+
export declare function extensionForMediaType(mediaType: string): string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Default artifact filename when the caller does not supply one.
|
|
8
|
+
* @category Media
|
|
9
|
+
*/
|
|
10
|
+
export declare function defaultArtifactFilename(mediaType: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve a safe download filename from stored metadata.
|
|
13
|
+
* Prefers `name`, then the URI basename, and upgrades `.bin` / extensionless names using `mediaType`.
|
|
14
|
+
* @category Media
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveArtifactFilename(name: string | undefined, uri: string, mediaType?: string): string;
|
|
17
|
+
/** HTTP path prefix for host artifact GET routes. @category Media */
|
|
18
|
+
export declare const ARTIFACT_HTTP_PATH_PREFIX = "/v1/artifacts";
|
|
19
|
+
/**
|
|
20
|
+
* Whether a request pathname targets {@link ARTIFACT_HTTP_PATH_PREFIX} (with optional filename segment).
|
|
21
|
+
* @category Media
|
|
22
|
+
*/
|
|
23
|
+
export declare function isArtifactFetchPathname(pathname: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Decode the optional filename segment from an artifact fetch pathname.
|
|
26
|
+
* @category Media
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseArtifactFetchPathname(pathname: string): string | undefined;
|
|
29
|
+
/** Options for {@link artifactFetchPathname}. @category Media */
|
|
30
|
+
export interface ArtifactFetchPathnameOptions {
|
|
31
|
+
/** Stored artifact display name. */
|
|
32
|
+
name?: string;
|
|
33
|
+
/** Stored artifact MIME type. */
|
|
34
|
+
mediaType?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build `/v1/artifacts/<filename>` so clients see an extension in the URL (not only headers).
|
|
38
|
+
* @category Media
|
|
39
|
+
*/
|
|
40
|
+
export declare function artifactFetchPathname(uri: string, options?: ArtifactFetchPathnameOptions): string;
|
|
41
|
+
//# sourceMappingURL=artifact-filename.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-filename.d.ts","sourceRoot":"","sources":["../../src/media/artifact-filename.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAa3E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGjE;AAqBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CASR;AAED,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,kBAAkB,CAAA;AAExD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKjE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU/E;AAED,iEAAiE;AACjE,MAAM,WAAW,4BAA4B;IAC3C,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CAGR"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/** Common MIME type → file extension (without dot). @category Media */
|
|
2
|
+
const MEDIA_TYPE_EXTENSIONS = {
|
|
3
|
+
"application/json": "json",
|
|
4
|
+
"application/pdf": "pdf",
|
|
5
|
+
"application/octet-stream": "bin",
|
|
6
|
+
"application/zip": "zip",
|
|
7
|
+
"audio/mpeg": "mp3",
|
|
8
|
+
"audio/wav": "wav",
|
|
9
|
+
"image/avif": "avif",
|
|
10
|
+
"image/gif": "gif",
|
|
11
|
+
"image/jpeg": "jpg",
|
|
12
|
+
"image/png": "png",
|
|
13
|
+
"image/svg+xml": "svg",
|
|
14
|
+
"image/tiff": "tiff",
|
|
15
|
+
"image/webp": "webp",
|
|
16
|
+
"text/csv": "csv",
|
|
17
|
+
"text/html": "html",
|
|
18
|
+
"text/plain": "txt",
|
|
19
|
+
"video/mp4": "mp4",
|
|
20
|
+
"video/webm": "webm",
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* File extension (no dot) for a MIME type, or `undefined` when unknown.
|
|
24
|
+
* @category Media
|
|
25
|
+
*/
|
|
26
|
+
export function extensionForMediaType(mediaType) {
|
|
27
|
+
const normalized = mediaType.split(";")[0]?.trim().toLowerCase() ?? "";
|
|
28
|
+
if (!normalized)
|
|
29
|
+
return undefined;
|
|
30
|
+
const direct = MEDIA_TYPE_EXTENSIONS[normalized];
|
|
31
|
+
if (direct)
|
|
32
|
+
return direct;
|
|
33
|
+
const slash = normalized.indexOf("/");
|
|
34
|
+
if (slash < 0)
|
|
35
|
+
return undefined;
|
|
36
|
+
const major = normalized.slice(0, slash);
|
|
37
|
+
const minor = normalized.slice(slash + 1);
|
|
38
|
+
if (major === "image" || major === "video" || major === "audio") {
|
|
39
|
+
return minor.replace(/^x-/, "").replace(/\+xml$/, "") || undefined;
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Default artifact filename when the caller does not supply one.
|
|
45
|
+
* @category Media
|
|
46
|
+
*/
|
|
47
|
+
export function defaultArtifactFilename(mediaType) {
|
|
48
|
+
const ext = extensionForMediaType(mediaType) ?? "bin";
|
|
49
|
+
return `media-${Date.now()}.${ext}`;
|
|
50
|
+
}
|
|
51
|
+
function sanitizeFilenamePart(raw) {
|
|
52
|
+
const trimmed = raw.trim().replace(/["\\\r\n]/g, "");
|
|
53
|
+
const safe = trimmed.replace(/[/\\]/g, "_");
|
|
54
|
+
return safe || "artifact";
|
|
55
|
+
}
|
|
56
|
+
function filenameExtension(filename) {
|
|
57
|
+
const base = filename.split(/[/\\]/).pop() ?? filename;
|
|
58
|
+
const dot = base.lastIndexOf(".");
|
|
59
|
+
if (dot <= 0 || dot === base.length - 1)
|
|
60
|
+
return undefined;
|
|
61
|
+
return base.slice(dot + 1).toLowerCase();
|
|
62
|
+
}
|
|
63
|
+
function filenameWithExtension(baseName, extension) {
|
|
64
|
+
const ext = extension.replace(/^\./, "");
|
|
65
|
+
const withoutExt = baseName.replace(/\.[^./\\]+$/, "");
|
|
66
|
+
return `${withoutExt}.${ext}`;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve a safe download filename from stored metadata.
|
|
70
|
+
* Prefers `name`, then the URI basename, and upgrades `.bin` / extensionless names using `mediaType`.
|
|
71
|
+
* @category Media
|
|
72
|
+
*/
|
|
73
|
+
export function resolveArtifactFilename(name, uri, mediaType) {
|
|
74
|
+
const raw = name?.trim() || uri.split("/").pop() || "artifact";
|
|
75
|
+
let filename = sanitizeFilenamePart(raw);
|
|
76
|
+
const ext = filenameExtension(filename);
|
|
77
|
+
const mediaExt = mediaType ? extensionForMediaType(mediaType) : undefined;
|
|
78
|
+
if (mediaExt && (!ext || ext === "bin")) {
|
|
79
|
+
filename = filenameWithExtension(filename, mediaExt);
|
|
80
|
+
}
|
|
81
|
+
return filename || "artifact";
|
|
82
|
+
}
|
|
83
|
+
/** HTTP path prefix for host artifact GET routes. @category Media */
|
|
84
|
+
export const ARTIFACT_HTTP_PATH_PREFIX = "/v1/artifacts";
|
|
85
|
+
/**
|
|
86
|
+
* Whether a request pathname targets {@link ARTIFACT_HTTP_PATH_PREFIX} (with optional filename segment).
|
|
87
|
+
* @category Media
|
|
88
|
+
*/
|
|
89
|
+
export function isArtifactFetchPathname(pathname) {
|
|
90
|
+
return (pathname === ARTIFACT_HTTP_PATH_PREFIX ||
|
|
91
|
+
pathname.startsWith(`${ARTIFACT_HTTP_PATH_PREFIX}/`));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Decode the optional filename segment from an artifact fetch pathname.
|
|
95
|
+
* @category Media
|
|
96
|
+
*/
|
|
97
|
+
export function parseArtifactFetchPathname(pathname) {
|
|
98
|
+
const prefix = `${ARTIFACT_HTTP_PATH_PREFIX}/`;
|
|
99
|
+
if (!pathname.startsWith(prefix))
|
|
100
|
+
return undefined;
|
|
101
|
+
const raw = pathname.slice(prefix.length);
|
|
102
|
+
if (!raw)
|
|
103
|
+
return undefined;
|
|
104
|
+
try {
|
|
105
|
+
return decodeURIComponent(raw);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Build `/v1/artifacts/<filename>` so clients see an extension in the URL (not only headers).
|
|
113
|
+
* @category Media
|
|
114
|
+
*/
|
|
115
|
+
export function artifactFetchPathname(uri, options) {
|
|
116
|
+
const filename = resolveArtifactFilename(options?.name, uri, options?.mediaType);
|
|
117
|
+
return `${ARTIFACT_HTTP_PATH_PREFIX}/${encodeURIComponent(filename)}`;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=artifact-filename.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-filename.js","sourceRoot":"","sources":["../../src/media/artifact-filename.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,qBAAqB,GAA2B;IACpD,kBAAkB,EAAE,MAAM;IAC1B,iBAAiB,EAAE,KAAK;IACxB,0BAA0B,EAAE,KAAK;IACjC,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,MAAM;IACpB,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;CACrB,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA;IACtE,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAA;IACjC,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAChD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACzC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,SAAS,CAAA;IACpE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,MAAM,GAAG,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,KAAK,CAAA;IACrD,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAA;AACrC,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC3C,OAAO,IAAI,IAAI,UAAU,CAAA;AAC3B,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAA;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;AAC1C,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB,EAAE,SAAiB;IAChE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IACtD,OAAO,GAAG,UAAU,IAAI,GAAG,EAAE,CAAA;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAwB,EACxB,GAAW,EACX,SAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,CAAA;IAC9D,IAAI,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzE,IAAI,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,CAAC;QACxC,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,QAAQ,IAAI,UAAU,CAAA;AAC/B,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAA;AAExD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,OAAO,CACL,QAAQ,KAAK,yBAAyB;QACtC,QAAQ,CAAC,UAAU,CAAC,GAAG,yBAAyB,GAAG,CAAC,CACrD,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,MAAM,MAAM,GAAG,GAAG,yBAAyB,GAAG,CAAA;IAC9C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAUD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,OAAsC;IAEtC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;IAChF,OAAO,GAAG,yBAAyB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAA;AACvE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assert resolved media type matches allowed MIME type(s), including wildcards (`image/*`).
|
|
3
|
+
* @category Media
|
|
4
|
+
*/
|
|
5
|
+
export declare function assertMediaType(resolvedMediaType: string | undefined, allowed: string | string[]): void;
|
|
6
|
+
/**
|
|
7
|
+
* Whether a resolved media type matches allowed MIME type(s).
|
|
8
|
+
* @category Media
|
|
9
|
+
*/
|
|
10
|
+
export declare function mediaTypeMatches(resolvedMediaType: string | undefined, allowed: string | string[]): boolean;
|
|
11
|
+
//# sourceMappingURL=assert-media-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-media-type.d.ts","sourceRoot":"","sources":["../../src/media/assert-media-type.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GACzB,IAAI,CAuBN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GACzB,OAAO,CAOT"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assert resolved media type matches allowed MIME type(s), including wildcards (`image/*`).
|
|
3
|
+
* @category Media
|
|
4
|
+
*/
|
|
5
|
+
export function assertMediaType(resolvedMediaType, allowed) {
|
|
6
|
+
const allowedList = Array.isArray(allowed) ? allowed : [allowed];
|
|
7
|
+
if (allowedList.length === 0) {
|
|
8
|
+
throw new Error("assertMediaType requires at least one allowed MIME type");
|
|
9
|
+
}
|
|
10
|
+
const mediaType = resolvedMediaType?.trim();
|
|
11
|
+
if (!mediaType) {
|
|
12
|
+
throw new Error("Resolved media type is missing or empty");
|
|
13
|
+
}
|
|
14
|
+
const normalized = mediaType.toLowerCase();
|
|
15
|
+
for (const entry of allowedList) {
|
|
16
|
+
const pattern = entry.trim().toLowerCase();
|
|
17
|
+
if (!pattern)
|
|
18
|
+
continue;
|
|
19
|
+
if (pattern.endsWith("/*")) {
|
|
20
|
+
const prefix = pattern.slice(0, -1);
|
|
21
|
+
if (normalized.startsWith(prefix))
|
|
22
|
+
return;
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (normalized === pattern)
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
throw new Error(`Media type "${mediaType}" is not allowed (expected ${allowedList.join(" or ")})`);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Whether a resolved media type matches allowed MIME type(s).
|
|
32
|
+
* @category Media
|
|
33
|
+
*/
|
|
34
|
+
export function mediaTypeMatches(resolvedMediaType, allowed) {
|
|
35
|
+
try {
|
|
36
|
+
assertMediaType(resolvedMediaType, allowed);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=assert-media-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-media-type.js","sourceRoot":"","sources":["../../src/media/assert-media-type.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,iBAAqC,EACrC,OAA0B;IAE1B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAChE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IACD,MAAM,SAAS,GAAG,iBAAiB,EAAE,IAAI,EAAE,CAAA;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5D,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;IAC1C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,SAAQ;QACtB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACnC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAM;YACzC,SAAQ;QACV,CAAC;QACD,IAAI,UAAU,KAAK,OAAO;YAAE,OAAM;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,eAAe,SAAS,8BAA8B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAClF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,iBAAqC,EACrC,OAA0B;IAE1B,IAAI,CAAC;QACH,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
|
|
3
|
+
* Unified file resolve/write for extensions.
|
|
4
|
+
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
|
|
7
|
+
* @category File
|
|
8
|
+
|
|
9
|
+
*/
|
|
10
|
+
export { resolveFile, STORAGE_ARTIFACT_URI_PREFIX, type ResolvedFile, type ResolveFileOptions, type FileCapabilityContext, } from "./resolve-file.js";
|
|
11
|
+
export { writeMediaArtifact, type WriteMediaArtifactOptions, } from "./write-media.js";
|
|
12
|
+
export { ARTIFACT_HTTP_PATH_PREFIX, artifactFetchPathname, defaultArtifactFilename, extensionForMediaType, isArtifactFetchPathname, parseArtifactFetchPathname, resolveArtifactFilename, type ArtifactFetchPathnameOptions, } from "./artifact-filename.js";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAEL,WAAW,EAEX,2BAA2B,EAE3B,KAAK,YAAY,EAEjB,KAAK,kBAAkB,EAEvB,KAAK,qBAAqB,GAE3B,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAEL,kBAAkB,EAElB,KAAK,yBAAyB,GAE/B,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAEL,yBAAyB,EAEzB,qBAAqB,EAErB,uBAAuB,EAEvB,qBAAqB,EAErB,uBAAuB,EAEvB,0BAA0B,EAE1B,uBAAuB,EAEvB,KAAK,4BAA4B,GAElC,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
|
|
3
|
+
* Unified file resolve/write for extensions.
|
|
4
|
+
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
|
|
7
|
+
* @category File
|
|
8
|
+
|
|
9
|
+
*/
|
|
10
|
+
export { resolveFile, STORAGE_ARTIFACT_URI_PREFIX, } from "./resolve-file.js";
|
|
11
|
+
export { writeMediaArtifact, } from "./write-media.js";
|
|
12
|
+
export { ARTIFACT_HTTP_PATH_PREFIX, artifactFetchPathname, defaultArtifactFilename, extensionForMediaType, isArtifactFetchPathname, parseArtifactFetchPathname, resolveArtifactFilename, } from "./artifact-filename.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAEL,WAAW,EAEX,2BAA2B,GAQ5B,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAEL,kBAAkB,GAInB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAEL,yBAAyB,EAEzB,qBAAqB,EAErB,uBAAuB,EAEvB,qBAAqB,EAErB,uBAAuB,EAEvB,0BAA0B,EAE1B,uBAAuB,GAIxB,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type FileRef } from "@executioncontrolprotocol/types";
|
|
2
|
+
import type { CapabilityContext } from "../runtime/context.js";
|
|
3
|
+
/** URI prefix for durable storage-backed artifacts. @category File */
|
|
4
|
+
export declare const STORAGE_ARTIFACT_URI_PREFIX = "ecp://storage/";
|
|
5
|
+
/** Resolved file bytes from {@link resolveFile}. @category File */
|
|
6
|
+
export interface ResolvedFile {
|
|
7
|
+
/** Raw bytes. */
|
|
8
|
+
bytes: Uint8Array;
|
|
9
|
+
/** MIME type when known. */
|
|
10
|
+
mediaType?: string;
|
|
11
|
+
/** Byte length. */
|
|
12
|
+
sizeBytes: number;
|
|
13
|
+
/** Optional display name. */
|
|
14
|
+
name?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Options for {@link resolveFile}. @category File */
|
|
17
|
+
export interface ResolveFileOptions {
|
|
18
|
+
/** When false (default), `kind: "url"` refs are rejected. */
|
|
19
|
+
allowRemoteUrls?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** Context required to resolve {@link FileRef} values. @category File */
|
|
22
|
+
export type FileCapabilityContext = CapabilityContext & {
|
|
23
|
+
/** Bound extension config (limits / storage prefixes). */
|
|
24
|
+
extensionConfig?: Record<string, unknown>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Resolve a portable {@link FileRef} to bytes using blobs, artifacts, fetch, or Node fs.
|
|
28
|
+
* Extensions should call this instead of reimplementing I/O.
|
|
29
|
+
* @category File
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveFile(ref: FileRef, ctx: FileCapabilityContext, options?: ResolveFileOptions): Promise<ResolvedFile>;
|
|
32
|
+
//# sourceMappingURL=resolve-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-file.d.ts","sourceRoot":"","sources":["../../src/media/resolve-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACb,MAAM,iCAAiC,CAAA;AAExC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE9D,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,mBAAmB,CAAA;AAE3D,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,KAAK,EAAE,UAAU,CAAA;IACjB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IACtD,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC1C,CAAA;AAgDD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,qBAAqB,EAC1B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,YAAY,CAAC,CAmEvB"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { FILE_REF_KINDS, } from "@executioncontrolprotocol/types";
|
|
2
|
+
import { isBrowserFileLocator } from "../runtime/blobs.js";
|
|
3
|
+
/** URI prefix for durable storage-backed artifacts. @category File */
|
|
4
|
+
export const STORAGE_ARTIFACT_URI_PREFIX = "ecp://storage/";
|
|
5
|
+
async function readFileFromPath(path) {
|
|
6
|
+
try {
|
|
7
|
+
const mod = await import("../loaders/read-media-file.js");
|
|
8
|
+
return mod.readMediaFileFromPath(path);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
throw new Error("File media refs require Node.js (node:fs/promises is not available in this runtime)");
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async function readBrowserLocator(locator, ctx, mediaType) {
|
|
15
|
+
const blob = ctx.blobs?.get(locator);
|
|
16
|
+
if (!blob) {
|
|
17
|
+
throw new Error(`No file stashed for locator ${locator}`);
|
|
18
|
+
}
|
|
19
|
+
const bytes = new Uint8Array(await blob.arrayBuffer());
|
|
20
|
+
return {
|
|
21
|
+
bytes,
|
|
22
|
+
mediaType: mediaType || blob.type || undefined,
|
|
23
|
+
sizeBytes: bytes.byteLength,
|
|
24
|
+
name: blob.name || undefined,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function readStoredArtifact(uri, ctx, mediaType) {
|
|
28
|
+
const fromCtx = ctx.artifacts?.get(uri);
|
|
29
|
+
if (!fromCtx) {
|
|
30
|
+
throw new Error(`Artifact not found: ${uri}`);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
bytes: fromCtx.bytes instanceof Uint8Array ? fromCtx.bytes : new Uint8Array(fromCtx.bytes),
|
|
34
|
+
mediaType: mediaType ?? fromCtx.mediaType,
|
|
35
|
+
sizeBytes: fromCtx.size,
|
|
36
|
+
name: fromCtx.name,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve a portable {@link FileRef} to bytes using blobs, artifacts, fetch, or Node fs.
|
|
41
|
+
* Extensions should call this instead of reimplementing I/O.
|
|
42
|
+
* @category File
|
|
43
|
+
*/
|
|
44
|
+
export async function resolveFile(ref, ctx, options = {}) {
|
|
45
|
+
const cfg = ctx.extensionConfig ?? {};
|
|
46
|
+
const limits = cfg.limits ?? {};
|
|
47
|
+
const allowRemoteUrls = options.allowRemoteUrls ?? limits.allowRemoteUrls ?? false;
|
|
48
|
+
switch (ref.kind) {
|
|
49
|
+
case FILE_REF_KINDS.BUFFER: {
|
|
50
|
+
const bytes = typeof Buffer !== "undefined"
|
|
51
|
+
? new Uint8Array(Buffer.from(ref.data, "base64"))
|
|
52
|
+
: Uint8Array.from(atob(ref.data), (c) => c.charCodeAt(0));
|
|
53
|
+
return { bytes, mediaType: ref.mediaType, sizeBytes: bytes.byteLength };
|
|
54
|
+
}
|
|
55
|
+
case FILE_REF_KINDS.FILE: {
|
|
56
|
+
if (isBrowserFileLocator(ref.path)) {
|
|
57
|
+
return readBrowserLocator(ref.path, ctx, ref.mediaType);
|
|
58
|
+
}
|
|
59
|
+
const bytes = await readFileFromPath(ref.path);
|
|
60
|
+
return { bytes, mediaType: ref.mediaType, sizeBytes: bytes.byteLength };
|
|
61
|
+
}
|
|
62
|
+
case FILE_REF_KINDS.URL: {
|
|
63
|
+
if (!allowRemoteUrls) {
|
|
64
|
+
throw new Error("Remote URL media refs are disabled (allowRemoteUrls)");
|
|
65
|
+
}
|
|
66
|
+
const res = await fetch(ref.url, { headers: ref.headers });
|
|
67
|
+
if (!res.ok)
|
|
68
|
+
throw new Error(`Failed to fetch media URL: ${res.status}`);
|
|
69
|
+
const arrayBuf = await res.arrayBuffer();
|
|
70
|
+
const bytes = new Uint8Array(arrayBuf);
|
|
71
|
+
const mediaType = ref.mediaType ?? res.headers.get("content-type") ?? undefined;
|
|
72
|
+
return { bytes, mediaType, sizeBytes: bytes.byteLength };
|
|
73
|
+
}
|
|
74
|
+
case FILE_REF_KINDS.ARTIFACT: {
|
|
75
|
+
if (isBrowserFileLocator(ref.uri)) {
|
|
76
|
+
return readBrowserLocator(ref.uri, ctx, ref.mediaType);
|
|
77
|
+
}
|
|
78
|
+
if (ref.uri.startsWith(STORAGE_ARTIFACT_URI_PREFIX)) {
|
|
79
|
+
const key = ref.uri.slice(STORAGE_ARTIFACT_URI_PREFIX.length);
|
|
80
|
+
const result = (await ctx.capabilities.call("@executioncontrolprotocol/storage.read", {
|
|
81
|
+
key,
|
|
82
|
+
}));
|
|
83
|
+
if (result.value instanceof Uint8Array) {
|
|
84
|
+
return {
|
|
85
|
+
bytes: result.value,
|
|
86
|
+
mediaType: ref.mediaType,
|
|
87
|
+
sizeBytes: result.value.byteLength,
|
|
88
|
+
name: ref.name,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (typeof result.value === "string") {
|
|
92
|
+
const bytes = typeof Buffer !== "undefined"
|
|
93
|
+
? new Uint8Array(Buffer.from(result.value, "base64"))
|
|
94
|
+
: Uint8Array.from(atob(result.value), (c) => c.charCodeAt(0));
|
|
95
|
+
return {
|
|
96
|
+
bytes,
|
|
97
|
+
mediaType: ref.mediaType,
|
|
98
|
+
sizeBytes: bytes.byteLength,
|
|
99
|
+
name: ref.name,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
throw new Error(`Artifact not found: ${ref.uri}`);
|
|
103
|
+
}
|
|
104
|
+
return readStoredArtifact(ref.uri, ctx, ref.mediaType);
|
|
105
|
+
}
|
|
106
|
+
default:
|
|
107
|
+
throw new Error("Unsupported file reference kind");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=resolve-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-file.js","sourceRoot":"","sources":["../../src/media/resolve-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type FileRef } from "@executioncontrolprotocol/types";
|
|
2
|
+
import { type FileCapabilityContext } from "./resolve-file.js";
|
|
3
|
+
/** Options for {@link writeMediaArtifact}. @category Media */
|
|
4
|
+
export interface WriteMediaArtifactOptions {
|
|
5
|
+
/** MIME type. */
|
|
6
|
+
mediaType: string;
|
|
7
|
+
/** Optional filename. */
|
|
8
|
+
name?: string;
|
|
9
|
+
/** URI path prefix under `ecp://` (default `artifacts/media`). */
|
|
10
|
+
prefix?: string;
|
|
11
|
+
/** When `"storage"`, write via `@executioncontrolprotocol/storage.write`. */
|
|
12
|
+
store?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Write bytes into the host artifact store (or durable storage) and return an artifact {@link FileRef}.
|
|
16
|
+
* @category Media
|
|
17
|
+
*/
|
|
18
|
+
export declare function writeMediaArtifact(data: Uint8Array, options: WriteMediaArtifactOptions, ctx: FileCapabilityContext): Promise<FileRef>;
|
|
19
|
+
//# sourceMappingURL=write-media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-media.d.ts","sourceRoot":"","sources":["../../src/media/write-media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAE9E,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAA;AAE1B,8DAA8D;AAC9D,MAAM,WAAW,yBAAyB;IACxC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,yBAAyB,EAClC,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC,OAAO,CAAC,CA2ClB"}
|