@executioncontrolprotocol/core 0.11.3 → 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 +25 -1
- 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-browser.d.ts +25 -2
- package/dist/compile/transpile-browser.d.ts.map +1 -1
- package/dist/compile/transpile-browser.js +32 -5
- package/dist/compile/transpile-browser.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/normalize-workflow.d.ts.map +1 -1
- package/dist/encoding/normalize-workflow.js +2 -0
- package/dist/encoding/normalize-workflow.js.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 +73 -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 +10 -2
- 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 +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- 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 +70 -10
- 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 +47 -0
- package/dist/schema/json-schema.d.ts.map +1 -0
- package/dist/schema/json-schema.js +209 -0
- package/dist/schema/json-schema.js.map +1 -0
- package/dist/schema/workflow-io.d.ts +18 -0
- package/dist/schema/workflow-io.d.ts.map +1 -0
- package/dist/schema/workflow-io.js +33 -0
- package/dist/schema/workflow-io.js.map +1 -0
- 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 +16 -6
- package/dist/validate/workflow-schema.d.ts.map +1 -1
- package/dist/validate/workflow-schema.js +2 -0
- package/dist/validate/workflow-schema.js.map +1 -1
- package/dist/workflow/builder.d.ts +13 -0
- package/dist/workflow/builder.d.ts.map +1 -1
- package/dist/workflow/builder.js +40 -0
- package/dist/workflow/builder.js.map +1 -1
- 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
|
@@ -20,11 +20,23 @@ export const EQL_VALUE_EXPRESSIONS = [
|
|
|
20
20
|
"- \"literal string\"",
|
|
21
21
|
"- 42 or true or false",
|
|
22
22
|
"- {\"field\": \"value\"} JSON object",
|
|
23
|
+
"- REF <acceptsKey> — read workflow run input (accepts property seeds state.<key>)",
|
|
23
24
|
"- REF <stepId>.output — reference another step's output (chain steps this way)",
|
|
24
25
|
].join("\n");
|
|
26
|
+
export const EQL_WORKFLOW_IO = [
|
|
27
|
+
"Workflow I/O (@executioncontrolprotocol.workflow):",
|
|
28
|
+
"- ACCEPTS block declares run input fields (type declarations, not assignments):",
|
|
29
|
+
" WITH <fieldName>:<type>[!]",
|
|
30
|
+
"- RETURNS block declares workflow output fields:",
|
|
31
|
+
" OUT <fieldName>:<type>[!]",
|
|
32
|
+
"- Types: string, number, integer, boolean, object, array, file, unknown",
|
|
33
|
+
"- Suffix ! marks required fields (e.g. value:string!)",
|
|
34
|
+
"- Place ACCEPTS / RETURNS after WORKFLOW line and before STEP lines.",
|
|
35
|
+
].join("\n");
|
|
25
36
|
export const EQL_WORKFLOW_OPERATIONS = [
|
|
26
37
|
"Supported operations (@executioncontrolprotocol.workflow):",
|
|
27
38
|
"- WORKFLOW <id> [\"optional label\"]",
|
|
39
|
+
"- ACCEPTS / RETURNS typed-field blocks (see workflow I/O rules above)",
|
|
28
40
|
"- STEP <stepId> USES <capabilityId>",
|
|
29
41
|
" LABEL \"Human label\"",
|
|
30
42
|
" WITH <inputField> = <value expression>",
|
|
@@ -37,6 +49,12 @@ export const EQL_PATCH_OPERATIONS = [
|
|
|
37
49
|
"- PATCH WORKFLOW <workflowId> — required first line; names the target workflow (not a field change)",
|
|
38
50
|
"- UPDATE WORKFLOW — change workflow metadata on that target",
|
|
39
51
|
" LABEL \"new workflow label\"",
|
|
52
|
+
" ACCEPTS",
|
|
53
|
+
" WITH <fieldName>:<type>[!]",
|
|
54
|
+
" RETURNS",
|
|
55
|
+
" OUT <fieldName>:<type>[!]",
|
|
56
|
+
" CLEAR ACCEPTS",
|
|
57
|
+
" CLEAR RETURNS",
|
|
40
58
|
"- UPDATE STEP <stepId> — change fields on an existing step",
|
|
41
59
|
" LABEL \"new step label\"",
|
|
42
60
|
" WITH <field> = <value expression>",
|
|
@@ -121,6 +139,8 @@ export const EQL_PATCH_CANONICAL_EXAMPLES = [
|
|
|
121
139
|
export const EQL_WORKFLOW_PRIMER = [
|
|
122
140
|
EQL_ZERO_KNOWLEDGE_INTRO,
|
|
123
141
|
"",
|
|
142
|
+
EQL_WORKFLOW_IO,
|
|
143
|
+
"",
|
|
124
144
|
EQL_WORKFLOW_OPERATIONS,
|
|
125
145
|
"",
|
|
126
146
|
EQL_VALUE_EXPRESSIONS,
|
|
@@ -128,6 +148,8 @@ export const EQL_WORKFLOW_PRIMER = [
|
|
|
128
148
|
export const EQL_PATCH_PRIMER = [
|
|
129
149
|
EQL_ZERO_KNOWLEDGE_INTRO,
|
|
130
150
|
"",
|
|
151
|
+
EQL_WORKFLOW_IO,
|
|
152
|
+
"",
|
|
131
153
|
EQL_PATCH_OPERATIONS,
|
|
132
154
|
"",
|
|
133
155
|
EQL_VALUE_EXPRESSIONS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eql-primer.js","sourceRoot":"","sources":["../../../src/harness/prompts/eql-primer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eql-primer.js","sourceRoot":"","sources":["../../../src/harness/prompts/eql-primer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-primer.d.ts","sourceRoot":"","sources":["../../../src/harness/prompts/typescript-primer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typescript-primer.d.ts","sourceRoot":"","sources":["../../../src/harness/prompts/typescript-primer.ts"],"names":[],"mappings":"AAkCA;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAmB5E"}
|
|
@@ -13,10 +13,20 @@ export const reply: HarnessReply = {
|
|
|
13
13
|
}`;
|
|
14
14
|
const WORKFLOW_TEMPLATE = `import { workflow, step, ref } from "@executioncontrolprotocol/core"
|
|
15
15
|
|
|
16
|
-
export default workflow("
|
|
17
|
-
.id("
|
|
16
|
+
export default workflow("Echo from input")
|
|
17
|
+
.id("echo-from-input")
|
|
18
|
+
.accepts({
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: { value: { type: "string" } },
|
|
21
|
+
required: ["value"],
|
|
22
|
+
})
|
|
23
|
+
.returns({
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: { echo: { type: "object" } },
|
|
26
|
+
required: ["echo"],
|
|
27
|
+
})
|
|
18
28
|
.run([
|
|
19
|
-
step("@executioncontrolprotocol/test.echo", "Echo").id("echo").with({ value: "
|
|
29
|
+
step("@executioncontrolprotocol/test.echo", "Echo").id("echo").with({ value: ref("value") }).as("echo"),
|
|
20
30
|
])`;
|
|
21
31
|
/**
|
|
22
32
|
* Minimal TypeScript output template for a harness output schema.
|
|
@@ -40,6 +50,8 @@ export function typescriptPrimerForOutputSchema(outputSchema) {
|
|
|
40
50
|
? [
|
|
41
51
|
"Allowed @executioncontrolprotocol/core imports: workflow, step, ref, branch, parallel, loop.",
|
|
42
52
|
"Use .id(\"stepId\") on steps when ids must stay stable across edits.",
|
|
53
|
+
"Chain .accepts({...}) and .returns({...}) before .run() for workflow I/O schemas.",
|
|
54
|
+
"Wire accepts keys with ref(\"key\") — not ref(\"step.output\") for run input.",
|
|
43
55
|
"Never output the word typescript on its own line before imports.",
|
|
44
56
|
]
|
|
45
57
|
: [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-primer.js","sourceRoot":"","sources":["../../../src/harness/prompts/typescript-primer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE7F,MAAM,eAAe,GAAG;;;;;EAKtB,CAAA;AAEF,MAAM,cAAc,GAAG;;;;;EAKrB,CAAA;AAEF,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"typescript-primer.js","sourceRoot":"","sources":["../../../src/harness/prompts/typescript-primer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE7F,MAAM,eAAe,GAAG;;;;;EAKtB,CAAA;AAEF,MAAM,cAAc,GAAG;;;;;EAKrB,CAAA;AAEF,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;KAgBrB,CAAA;AAEL;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAAC,YAAoB;IACpE,IAAI,YAAY,KAAK,iBAAiB;QAAE,OAAO,eAAe,CAAA;IAC9D,IAAI,YAAY,KAAK,wBAAwB;QAAE,OAAO,cAAc,CAAA;IACpE,IAAI,YAAY,KAAK,oCAAoC;QAAE,OAAO,iBAAiB,CAAA;IACnF,OAAO,qBAAqB,YAAY,4BAA4B,CAAA;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,YAAoB;IAClE,MAAM,WAAW,GACf,YAAY,KAAK,oCAAoC;QACnD,CAAC,CAAC;YACE,8FAA8F;YAC9F,sEAAsE;YACtE,mFAAmF;YACnF,+EAA+E;YAC/E,kEAAkE;SACnE;QACH,CAAC,CAAC,EAAE,CAAA;IACR,OAAO;QACL,oCAAoC;QACpC,gEAAgE;QAChE,8BAA8B,YAAY,GAAG;QAC7C,GAAG,WAAW;QACd,WAAW;QACX,iCAAiC,CAAC,YAAY,CAAC;KAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export { stripMarkdownCodeFences } from "./encoding/strip-markdown-fences.js";
|
|
|
21
21
|
export { stripHarnessTypeScriptOutput } from "./encoding/strip-harness-typescript-output.js";
|
|
22
22
|
export { workflow, WorkflowBuilder } from "./workflow/builder.js";
|
|
23
23
|
export { parallel, branch, loop } from "./workflow/flow.js";
|
|
24
|
+
export { jsonSchemaFromZod, jsonSchemaObjectProperties, validateAgainstJsonSchema, resolveStatePath, pickWorkflowReturns, isZodType, } from "./schema/json-schema.js";
|
|
25
|
+
export { validateWorkflowAcceptsInput, applyWorkflowReturns } from "./schema/workflow-io.js";
|
|
24
26
|
export { environment, Environment } from "./environment/environment.js";
|
|
25
27
|
export { EcpImpl, type Ecp, type RunOptions } from "./environment/ecp.js";
|
|
26
28
|
export { createTestSessionBuilder, restoreTestSession, type TestSession, type TestSessionBuilder, type TestSessionStartOptions, } from "./test-session/index.js";
|
|
@@ -39,6 +41,14 @@ export { matchesNamespace, matchesAnyNamespace } from "./registry/namespace.js";
|
|
|
39
41
|
export { InMemoryRuntimeExecutor } from "./runtime/in-memory-executor.js";
|
|
40
42
|
export type { PolicyContext, CapabilityContext, LifecycleContext, EnvironmentLifecycleHost, UsageLedger, Logger, RunContext, StepExecutionContext, } from "./runtime/context.js";
|
|
41
43
|
export { createUsageLedger } from "./runtime/context.js";
|
|
44
|
+
export { resolveCapabilityExecution, isBrowserRuntimeId, isNodeRuntimeId, } from "./runtime/capability-execution.js";
|
|
45
|
+
export { NODE_RUNTIME_ID, BROWSER_RUNTIME_ID } from "./runtime/runtime-ids.js";
|
|
46
|
+
export { hopRemoteInvoke, invokeFailure, isInvokeResult, type RemoteInvokeBinding, } from "./runtime/remote-invoke.js";
|
|
47
|
+
export { dispatchCapability, dispatchCapabilityResult, createDispatchingCall, CapabilityDispatchError, } from "./runtime/dispatch-capability.js";
|
|
48
|
+
export { BROWSER_FILE_LOCATOR_PREFIX, isBrowserFileLocator, createBrowserFileLocator, createCapabilityBlobStore, stashCapabilityBlob, collectBrowserLocators, serializeCapabilityBlobs, hydrateCapabilityBlobs, type CapabilityBlob, type CapabilityBlobStore, type SerializedCapabilityBlob, } from "./runtime/blobs.js";
|
|
49
|
+
export { createCapabilityArtifactStore, type CapabilityArtifact, type CapabilityArtifactStore, } from "./runtime/artifacts.js";
|
|
50
|
+
export { resolveFile, writeMediaArtifact, defaultArtifactFilename, extensionForMediaType, resolveArtifactFilename, artifactFetchPathname, isArtifactFetchPathname, parseArtifactFetchPathname, ARTIFACT_HTTP_PATH_PREFIX, STORAGE_ARTIFACT_URI_PREFIX, type ResolvedFile, type ResolveFileOptions, type WriteMediaArtifactOptions, type FileCapabilityContext, type ArtifactFetchPathnameOptions, } from "./media/index.js";
|
|
51
|
+
export { handleMixedBrowserBlobUpload, type MixedBlobUploadInput, type MixedBlobUploadOutput, } from "./runtime/mixed-blob-upload.js";
|
|
42
52
|
export { registerTestExtension, testExtension } from "./testing/test-extension.js";
|
|
43
53
|
export { renderWorkflowToFluent, renderWorkflowManifestToFluent, encodeFluent, type RenderWorkflowToFluentOptions, } from "./fluent/index.js";
|
|
44
54
|
export { validateWorkflow } from "./validate/workflow.js";
|
|
@@ -47,6 +57,7 @@ export { EcpError, normalizeWorkflowManifest, encodeFailure, decodeFailure, ecpE
|
|
|
47
57
|
export { buildStepIndex, resolveEcpPatchPath, applyPatch, createPatchBuilder, type PatchOperationBuilder, type StepIndex, ecpPatchDocumentSchema, ecpPatchEntrySchema, } from "./patch/index.js";
|
|
48
58
|
export { zodIssuesToValidationIssues } from "./validate/zod-mapper.js";
|
|
49
59
|
export type { StoreContext, MutationBuffer, StoreReadOptions, StoreWriteOptions, } from "./runtime/store.js";
|
|
50
|
-
export {
|
|
51
|
-
export type {
|
|
60
|
+
export { isFileRef, collectFileRefs, collectOutputFormatHints, fileRefUrlHostname, isSvgHint, } from "./file/file-ref.js";
|
|
61
|
+
export type { CollectedFileRef, CollectedFormatHint } from "./file/file-ref.js";
|
|
62
|
+
export { assertMediaType, mediaTypeMatches } from "./media/assert-media-type.js";
|
|
52
63
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,cAAc,iCAAiC,CAAA;AAE/C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,GACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAA;AAC5F,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,8 @@ export { stripMarkdownCodeFences } from "./encoding/strip-markdown-fences.js";
|
|
|
20
20
|
export { stripHarnessTypeScriptOutput } from "./encoding/strip-harness-typescript-output.js";
|
|
21
21
|
export { workflow, WorkflowBuilder } from "./workflow/builder.js";
|
|
22
22
|
export { parallel, branch, loop } from "./workflow/flow.js";
|
|
23
|
+
export { jsonSchemaFromZod, jsonSchemaObjectProperties, validateAgainstJsonSchema, resolveStatePath, pickWorkflowReturns, isZodType, } from "./schema/json-schema.js";
|
|
24
|
+
export { validateWorkflowAcceptsInput, applyWorkflowReturns } from "./schema/workflow-io.js";
|
|
23
25
|
export { environment, Environment } from "./environment/environment.js";
|
|
24
26
|
export { EcpImpl } from "./environment/ecp.js";
|
|
25
27
|
export { createTestSessionBuilder, restoreTestSession, } from "./test-session/index.js";
|
|
@@ -35,6 +37,14 @@ export { RegistryFrozenError, RegistryRegistrationDeniedError, } from "./registr
|
|
|
35
37
|
export { matchesNamespace, matchesAnyNamespace } from "./registry/namespace.js";
|
|
36
38
|
export { InMemoryRuntimeExecutor } from "./runtime/in-memory-executor.js";
|
|
37
39
|
export { createUsageLedger } from "./runtime/context.js";
|
|
40
|
+
export { resolveCapabilityExecution, isBrowserRuntimeId, isNodeRuntimeId, } from "./runtime/capability-execution.js";
|
|
41
|
+
export { NODE_RUNTIME_ID, BROWSER_RUNTIME_ID } from "./runtime/runtime-ids.js";
|
|
42
|
+
export { hopRemoteInvoke, invokeFailure, isInvokeResult, } from "./runtime/remote-invoke.js";
|
|
43
|
+
export { dispatchCapability, dispatchCapabilityResult, createDispatchingCall, CapabilityDispatchError, } from "./runtime/dispatch-capability.js";
|
|
44
|
+
export { BROWSER_FILE_LOCATOR_PREFIX, isBrowserFileLocator, createBrowserFileLocator, createCapabilityBlobStore, stashCapabilityBlob, collectBrowserLocators, serializeCapabilityBlobs, hydrateCapabilityBlobs, } from "./runtime/blobs.js";
|
|
45
|
+
export { createCapabilityArtifactStore, } from "./runtime/artifacts.js";
|
|
46
|
+
export { resolveFile, writeMediaArtifact, defaultArtifactFilename, extensionForMediaType, resolveArtifactFilename, artifactFetchPathname, isArtifactFetchPathname, parseArtifactFetchPathname, ARTIFACT_HTTP_PATH_PREFIX, STORAGE_ARTIFACT_URI_PREFIX, } from "./media/index.js";
|
|
47
|
+
export { handleMixedBrowserBlobUpload, } from "./runtime/mixed-blob-upload.js";
|
|
38
48
|
export { registerTestExtension, testExtension } from "./testing/test-extension.js";
|
|
39
49
|
export { renderWorkflowToFluent, renderWorkflowManifestToFluent, encodeFluent, } from "./fluent/index.js";
|
|
40
50
|
export { validateWorkflow } from "./validate/workflow.js";
|
|
@@ -42,5 +52,6 @@ export { capabilityIdSchema, commitModeSchema, parseWorkflowManifest, stepNodeSc
|
|
|
42
52
|
export { EcpError, normalizeWorkflowManifest, encodeFailure, decodeFailure, ecpEncodeInputSchema, ecpDecodeInputSchema, ecpEncodeResultSchema, ecpDecodeResultSchema, } from "./encoding/index.js";
|
|
43
53
|
export { buildStepIndex, resolveEcpPatchPath, applyPatch, createPatchBuilder, ecpPatchDocumentSchema, ecpPatchEntrySchema, } from "./patch/index.js";
|
|
44
54
|
export { zodIssuesToValidationIssues } from "./validate/zod-mapper.js";
|
|
45
|
-
export {
|
|
55
|
+
export { isFileRef, collectFileRefs, collectOutputFormatHints, fileRefUrlHostname, isSvgHint, } from "./file/file-ref.js";
|
|
56
|
+
export { assertMediaType, mediaTypeMatches } from "./media/assert-media-type.js";
|
|
46
57
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,cAAc,iCAAiC,CAAA;AAE/C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AAQtC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAA;AAC5F,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;
|
|
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":"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"}
|
|
@@ -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"}
|