@pipelex/sdk 0.15.0 → 0.16.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 +9 -0
- package/dist/client.d.ts +124 -54
- package/dist/client.js +209 -72
- package/dist/client.js.map +1 -1
- package/dist/execute-result.d.ts +11 -1
- package/dist/execute-result.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts +68 -16
- package/dist/prepare-inputs.d.ts +14 -38
- package/dist/prepare-inputs.js +14 -34
- package/dist/prepare-inputs.js.map +1 -1
- package/package.json +1 -1
package/dist/execute-result.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Kept in its own module (mirroring the Python SDK's `execute_result.py`) so the
|
|
5
5
|
* resolved-output concern sits apart from the raw wire models in `models.ts`.
|
|
6
6
|
*/
|
|
7
|
-
import type { DictPipeOutput, DictRunResultExecute } from "./models.js";
|
|
7
|
+
import type { DictPipeOutput, DictRunResultExecute, MethodProvenance } from "./models.js";
|
|
8
8
|
/**
|
|
9
9
|
* The SDK's blocking `execute()` result — a `DictRunResultExecute` that also exposes the
|
|
10
10
|
* resolved main output as `.main_stuff`.
|
|
@@ -29,6 +29,16 @@ export declare class PipelexExecuteResult implements DictRunResultExecute {
|
|
|
29
29
|
* `.main_stuff` throws `MissingMainStuffError`.
|
|
30
30
|
*/
|
|
31
31
|
readonly main_stuff_name: string | null;
|
|
32
|
+
/**
|
|
33
|
+
* Provenance of a `method_ref` run — `{address, tag, commit_sha}`, the commit
|
|
34
|
+
* SHA being what keeps the run explainable when a tag moves. Populated by the
|
|
35
|
+
* extension-copy loop below (so serializing still reproduces the wire shape:
|
|
36
|
+
* the key exists only when the server sent it); absent or `null` for runs
|
|
37
|
+
* from inline source or a bundle. `declare` because this only narrows the
|
|
38
|
+
* type of what the loop preserves — an emitted field definition would create
|
|
39
|
+
* the own property first and make the loop skip the wire value.
|
|
40
|
+
*/
|
|
41
|
+
readonly method_provenance?: MethodProvenance | null;
|
|
32
42
|
/** Server-specific response fields (preserved verbatim — the wire model is extension-open). */
|
|
33
43
|
[extension: string]: unknown;
|
|
34
44
|
constructor(raw: DictRunResultExecute);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-result.js","sourceRoot":"","sources":["../src/execute-result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEjG;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,oBAAoB;IACtB,eAAe,CAAS;IACxB,WAAW,CAAiB;IACrC;;;;OAIG;IACM,eAAe,CAAgB;
|
|
1
|
+
{"version":3,"file":"execute-result.js","sourceRoot":"","sources":["../src/execute-result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEjG;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,oBAAoB;IACtB,eAAe,CAAS;IACxB,WAAW,CAAiB;IACrC;;;;OAIG;IACM,eAAe,CAAgB;IAcxC,YAAY,GAAyB;QACnC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACnC,mGAAmG;QACnG,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,2FAA2F;QAC3F,2FAA2F;QAC3F,0FAA0F;QAC1F,2FAA2F;QAC3F,2FAA2F;QAC3F,0BAA0B;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1F,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,IAAI,UAAU;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,yFAAyF;QACzF,8FAA8F;QAC9F,4FAA4F;QAC5F,sDAAsD;QACtD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3C,MAAM,IAAI,qBAAqB,CAC7B,iBAAiB,IAAI,CAAC,eAAe,sCAAsC;gBACzE,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,2CAA2C;gBACnF,kFAAkF,EACpF,IAAI,CAAC,eAAe,CACrB,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
* errors. Consumers should import everything they need from `@pipelex/sdk`.
|
|
8
8
|
*/
|
|
9
9
|
/** Package version. Kept in sync with `package.json` — enforced by `tests/index.test.ts`. */
|
|
10
|
-
export declare const SDK_VERSION = "0.
|
|
10
|
+
export declare const SDK_VERSION = "0.16.0";
|
|
11
11
|
export * from "mthds/protocol";
|
|
12
12
|
export { PipelexApiClient, DEFAULT_API_BASE_URL } from "./client.js";
|
|
13
|
-
export type { MthdsFile,
|
|
13
|
+
export type { MthdsFile, PipelexApiRunExtensions, PipelexHostedRunExtensions, PipelexRunOptions, PipelexStartOptions, ValidateMethodSelector, ValidateFilesOptions, PipelexApiClientOptions, } from "./client.js";
|
|
14
14
|
export { methodSourceToContents } from "./method-source.js";
|
|
15
15
|
export { PipelexExecuteResult } from "./execute-result.js";
|
|
16
16
|
export type { UploadableAsset, UploadFileOptions, UploadRecord } from "./upload.js";
|
|
17
17
|
export type { PrepareInputsRequest, PreparedInputs } from "./prepare-inputs.js";
|
|
18
|
-
export type { DiagnosticKind, DiagnosticRange, Diagnostic, LintResponse, FormatResponse, DictStuff, DictWorkingMemory, DictPipeOutput, DictRunResultExecute, DryRunStatus, ValidatedPipeEntry, LiftablePipeEntry, PipelexValidationReport, PipelexInvalidReport, PipelexValidationResult, ValidationErrorCategory, ValidationErrorItem, FixSafety, FixOpKind, TomlScalar, TomlValue, SetKeyOp, EnsureTableOp, DeleteKeyOp, DeleteTableOp, RenameTableKeyOp, MoveKeyOp, RemapValueOp, FixOp, SuggestedFix, ConceptRepresentationFormat, InputsTemplateFormat, MthdsFileItem, CrateRequestBase, BuildRequestBase, BuildInputsRequest, BuildOutputRequest, BuildRunnerRequest, ConceptRequest, PipeSpecRequest, CrateInvalidReport, BuildInputsValidReport, BuildOutputValidReport, BuildRunnerValidReport, GeneratedArtifact, RunnerStructures, BuildInputsResponse, BuildOutputResponse, BuildRunnerResponse, ConceptResponse, PipeSpecResponse, ResolveRequest, ResolveValidReport, ResolveResponse, CodegenKind, CodegenTarget, CodegenRequest, CodegenValidReport, CodegenResponse, } from "./models.js";
|
|
18
|
+
export type { DiagnosticKind, DiagnosticRange, Diagnostic, LintResponse, FormatResponse, DictStuff, DictWorkingMemory, DictPipeOutput, DictRunResultExecute, MethodProvenance, PipelexRunResultStart, PipelexHostedToolingExtensions, DryRunStatus, ValidatedPipeEntry, LiftablePipeEntry, PipelexValidationReport, PipelexInvalidReport, PipelexValidationResult, ValidationErrorCategory, ValidationErrorItem, FixSafety, FixOpKind, TomlScalar, TomlValue, SetKeyOp, EnsureTableOp, DeleteKeyOp, DeleteTableOp, RenameTableKeyOp, MoveKeyOp, RemapValueOp, FixOp, SuggestedFix, ConceptRepresentationFormat, InputsTemplateFormat, MthdsFileItem, CrateRequestBase, BuildRequestBase, BuildInputsRequest, BuildOutputRequest, BuildRunnerRequest, ConceptRequest, PipeSpecRequest, CrateInvalidReport, BuildInputsValidReport, BuildOutputValidReport, BuildRunnerValidReport, GeneratedArtifact, RunnerStructures, BuildInputsResponse, BuildOutputResponse, BuildRunnerResponse, ConceptResponse, PipeSpecResponse, ResolveRequest, ResolveValidReport, ResolveResponse, CodegenKind, CodegenTarget, CodegenRequest, CodegenValidReport, CodegenResponse, } from "./models.js";
|
|
19
19
|
export { runCodegenCheck, isStampableArtifactPath, STAMPABLE_ARTIFACT_SUFFIXES, CodegenLockError, } from "./codegen-check.js";
|
|
20
20
|
export type { CodegenCheckInput, CodegenCheckReport, CodegenDrift, CodegenDriftCategory, CodegenTreeFile, } from "./codegen-check.js";
|
|
21
21
|
export type { UserProfile, ListMethodsQuery, MethodData, MethodDeletionAccepted, MethodDeletionState, MethodPage, MethodSummary, MethodWriteInput, Membership, MembershipsResponse, SubscriptionResponse, PlanView, InvoiceView, CheckoutResponse, ChangePlanResponse, BillingPortalResponse, PipelexApiKey, PipelexApiKeyCreated, PipelexApiKeyList, GatewayApiKey, GatewayApiKeyStatus, OnboardingRole, OnboardingCurrentTool, OnboardingInputType, OnboardingHeardFrom, OnboardingSubmission, ResolvedStorageUrl, UploadInput, UploadedFile, PipeStatus, ListRunsQuery, PipelineRun, RunDetail, RunErrorReport, RunPage, UpdateRunInput, } from "./product-models.js";
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* errors. Consumers should import everything they need from `@pipelex/sdk`.
|
|
8
8
|
*/
|
|
9
9
|
/** Package version. Kept in sync with `package.json` — enforced by `tests/index.test.ts`. */
|
|
10
|
-
export const SDK_VERSION = "0.
|
|
10
|
+
export const SDK_VERSION = "0.16.0";
|
|
11
11
|
// ── Pure MTHDS Protocol surface (re-exported from the `mthds/protocol` subpath) ──
|
|
12
12
|
// The standard's interface, wire models, request/options surface, abstract domain
|
|
13
13
|
// shapes, and the protocol-base `PipelineRequestError`. Re-exported so apps have a
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6FAA6F;AAC7F,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC,oFAAoF;AACpF,kFAAkF;AAClF,mFAAmF;AACnF,wBAAwB;AACxB,cAAc,gBAAgB,CAAC;AAE/B,wEAAwE;AACxE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6FAA6F;AAC7F,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC,oFAAoF;AACpF,kFAAkF;AAClF,mFAAmF;AACnF,wBAAwB;AACxB,cAAc,gBAAgB,CAAC;AAE/B,wEAAwE;AACxE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAYrE,+FAA+F;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,4FAA4F;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAyE3D,+EAA+E;AAC/E,4EAA4E;AAC5E,iFAAiF;AACjF,0EAA0E;AAC1E,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAiD5B,wEAAwE;AACxE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAWpE,+EAA+E;AAC/E,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
package/dist/models.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* the `/v1/build/*` request/response models. Built on the protocol wire types
|
|
8
8
|
* imported from the `mthds/protocol` subpath.
|
|
9
9
|
*/
|
|
10
|
-
import type { InputForm, InvalidValidationReport, PipeIOContracts, RunResultExecute, ValidationReport } from "mthds/protocol";
|
|
10
|
+
import type { InputForm, InvalidValidationReport, PipeIOContracts, RunResultExecute, RunResultStart, ValidationReport } from "mthds/protocol";
|
|
11
11
|
export interface DictStuff {
|
|
12
12
|
concept: string;
|
|
13
13
|
content: unknown;
|
|
@@ -41,6 +41,47 @@ export interface DictPipeOutput {
|
|
|
41
41
|
* protocol's extension-open response.
|
|
42
42
|
*/
|
|
43
43
|
export type DictRunResultExecute = RunResultExecute<DictPipeOutput>;
|
|
44
|
+
/**
|
|
45
|
+
* Provenance of a `method_ref` run — the package's resolved full address, the
|
|
46
|
+
* requested tag (`null` for a bare address, which resolves the default branch
|
|
47
|
+
* at HEAD), and the commit SHA that was actually fetched. The SHA is what keeps
|
|
48
|
+
* the run explainable when a tag moves. A Pipelex-API extension; attached to
|
|
49
|
+
* the start ack and the execute response for `method_ref` runs, absent (or
|
|
50
|
+
* `null`) otherwise.
|
|
51
|
+
*/
|
|
52
|
+
export interface MethodProvenance {
|
|
53
|
+
address: string;
|
|
54
|
+
tag: string | null;
|
|
55
|
+
commit_sha: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The `POST /v1/start` 202 ack as the Pipelex API returns it — the protocol's
|
|
59
|
+
* `RunResultStart` plus the server's `method_provenance` extension, populated
|
|
60
|
+
* for `method_ref` runs and absent or `null` otherwise.
|
|
61
|
+
*/
|
|
62
|
+
export interface PipelexRunResultStart extends RunResultStart {
|
|
63
|
+
method_provenance?: MethodProvenance | null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The hosted tooling routes' own selector — the layer-3 extension the platform
|
|
67
|
+
* adds on `POST /v1/validate`, `/v1/resolve`, and `/v1/codegen`: a stored
|
|
68
|
+
* method's catalog id (`mt_…`), resolved server-side against the org's catalog
|
|
69
|
+
* and injected as inline source before the runner sees the request. A **pass-
|
|
70
|
+
* through to the hosted API**: nothing is expanded client-side, and it is
|
|
71
|
+
* meaningless off-platform (a bare runner rejects the request as carrying no
|
|
72
|
+
* source it understands).
|
|
73
|
+
*
|
|
74
|
+
* The tooling routes are stateless, so there is no linkage exception: exactly
|
|
75
|
+
* one of inline source / `method_ref` / `method_id` per request — any second
|
|
76
|
+
* selector is a request-shape `422`. An unknown or foreign-org id is a `404`
|
|
77
|
+
* (indistinguishable by design); a stored method with no MTHDS source is a
|
|
78
|
+
* `422`. The `/v1/build/*` projections are deliberately excluded — they take
|
|
79
|
+
* no `method_id` (expand a stored method with `getMethodClosure` there).
|
|
80
|
+
*/
|
|
81
|
+
export interface PipelexHostedToolingExtensions {
|
|
82
|
+
/** A stored method's catalog id (`mt_…`) — hosted-only, resolved server-side. */
|
|
83
|
+
method_id?: string;
|
|
84
|
+
}
|
|
44
85
|
/** Per-pipe dry-run verdict in `validated_pipes[]` — mirror of pipelex's `DryRunStatus`. */
|
|
45
86
|
export type DryRunStatus = "SUCCESS" | "FAILURE" | "SKIPPED";
|
|
46
87
|
/** One entry of `PipelexValidationReport.validated_pipes` — `{pipe_ref, status}`. */
|
|
@@ -349,10 +390,13 @@ export interface MthdsFileItem {
|
|
|
349
390
|
* The closure selector every crate-family route shares — `/v1/resolve`, `/v1/codegen`,
|
|
350
391
|
* and `/v1/build/*` (mirror of the server's `MthdsFilesRequest`).
|
|
351
392
|
*
|
|
352
|
-
* Supply the closure EITHER as inline `files` OR as a `method_ref`
|
|
353
|
-
*
|
|
354
|
-
* `
|
|
355
|
-
*
|
|
393
|
+
* Supply the closure EITHER as inline `files` OR as a `method_ref` — never both, and
|
|
394
|
+
* never neither (both arms are a request-shape `422`). An **address-form** `method_ref`
|
|
395
|
+
* (`github.com/<owner>/<repo>[/<selector>][@<tag>]`) is resolved by the server
|
|
396
|
+
* (pipelex-api >= 0.21.0): the repository is fetched at the tag, the package is
|
|
397
|
+
* located by manifest identity, and its `.mthds` files feed the closure with their
|
|
398
|
+
* real relative paths as per-file sources. The **registry form** (any non-address
|
|
399
|
+
* reference) stays reserved and answers `501` until a method registry exists.
|
|
356
400
|
*
|
|
357
401
|
* The XOR is a server-side invariant, not a type-level one: expressing it as a union
|
|
358
402
|
* here would make the common `{ files }` call site pick a branch for no gain, and the
|
|
@@ -373,16 +417,16 @@ export interface BuildRequestBase extends CrateRequestBase {
|
|
|
373
417
|
* declares none, or declares several across its domains.
|
|
374
418
|
*/
|
|
375
419
|
pipe_ref?: string;
|
|
376
|
-
}
|
|
377
|
-
export interface BuildInputsRequest extends BuildRequestBase {
|
|
378
420
|
/**
|
|
379
|
-
*
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
421
|
+
* The `/v1/build/*` projections take NO `method_id` — the hosted platform's
|
|
422
|
+
* tooling selector covers `validate`/`resolve`/`codegen` only, and the build
|
|
423
|
+
* routes are deliberately excluded (they are frozen, being replaced by the
|
|
424
|
+
* codegen surface). Pinned to `never` so a stored-method caller reaches for
|
|
425
|
+
* `getMethodClosure` instead of a field no server resolves.
|
|
384
426
|
*/
|
|
385
427
|
method_id?: never;
|
|
428
|
+
}
|
|
429
|
+
export interface BuildInputsRequest extends BuildRequestBase {
|
|
386
430
|
/** `json` (default) puts the parsed template in `inputs`; `toml` puts raw text in `inputs_toml`. */
|
|
387
431
|
format?: InputsTemplateFormat;
|
|
388
432
|
/** Emit the ceremonial `{concept, content}` envelope per input. Defaults to the light shape. */
|
|
@@ -511,8 +555,12 @@ export interface PipeSpecResponse {
|
|
|
511
555
|
pipe_type: string;
|
|
512
556
|
toml: string;
|
|
513
557
|
}
|
|
514
|
-
/**
|
|
515
|
-
|
|
558
|
+
/**
|
|
559
|
+
* `POST /v1/resolve` request — the crate envelope (no projection axes) plus the
|
|
560
|
+
* hosted `method_id` selector. Exactly one of `files` / `method_ref` /
|
|
561
|
+
* `method_id` — the strict tooling XOR; see {@link PipelexHostedToolingExtensions}.
|
|
562
|
+
*/
|
|
563
|
+
export type ResolveRequest = CrateRequestBase & PipelexHostedToolingExtensions;
|
|
516
564
|
/**
|
|
517
565
|
* The `/v1/resolve` valid arm — the normalized library crate.
|
|
518
566
|
*
|
|
@@ -554,8 +602,12 @@ export type CodegenKind = "types";
|
|
|
554
602
|
* StructuredContent classes for a Pipelex host.
|
|
555
603
|
*/
|
|
556
604
|
export type CodegenTarget = "ts-zod" | "python-pydantic" | "python-structures";
|
|
557
|
-
/**
|
|
558
|
-
|
|
605
|
+
/**
|
|
606
|
+
* `POST /v1/codegen` request — the crate envelope plus the two explicit projection
|
|
607
|
+
* axes and the hosted `method_id` selector (exactly one of `files` / `method_ref` /
|
|
608
|
+
* `method_id`; see {@link PipelexHostedToolingExtensions}).
|
|
609
|
+
*/
|
|
610
|
+
export interface CodegenRequest extends CrateRequestBase, PipelexHostedToolingExtensions {
|
|
559
611
|
kind: CodegenKind;
|
|
560
612
|
target: CodegenTarget;
|
|
561
613
|
/**
|
package/dist/prepare-inputs.d.ts
CHANGED
|
@@ -22,29 +22,23 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { BuildInputsResponse, MthdsFileItem } from "./models.js";
|
|
24
24
|
import type { UploadCapableClient, UploadRecord } from "./upload.js";
|
|
25
|
-
/**
|
|
26
|
-
|
|
25
|
+
/**
|
|
26
|
+
* What `prepareInputs` takes: the method closure (inline `files` — the
|
|
27
|
+
* signature source), the target pipe, and the caller's compact inputs.
|
|
28
|
+
*
|
|
29
|
+
* `files` is the ONLY closure form here: preparation is a client-side walk over
|
|
30
|
+
* the closure's signature, so there is no by-id (or by-address) leg to
|
|
31
|
+
* delegate to a server. A stored method is expanded first —
|
|
32
|
+
* `prepareInputs({ files: await client.getMethodClosure(methodId), … })`.
|
|
33
|
+
*/
|
|
34
|
+
export interface PrepareInputsRequest {
|
|
35
|
+
/** The method closure — inline MTHDS files. This is the signature source. */
|
|
36
|
+
files: MthdsFileItem[];
|
|
27
37
|
/** The pipe to prepare inputs for, as a qualified `domain.pipe_code`; omit to default to the closure's `main_pipe`. */
|
|
28
38
|
pipe_ref?: string;
|
|
29
39
|
/** The caller's compact inputs (variable name → value). */
|
|
30
40
|
inputs: Record<string, unknown>;
|
|
31
41
|
}
|
|
32
|
-
/**
|
|
33
|
-
* What `prepareInputs` takes: the method closure, the target pipe, and the
|
|
34
|
-
* caller's compact inputs. Supply the closure EITHER as inline `files` OR as a
|
|
35
|
-
* stored `method_id` — never both. `method_id` is a client-side convenience:
|
|
36
|
-
* it is resolved to `files` via `getMethodClosure` before anything hits the
|
|
37
|
-
* wire (it never travels as a wire field), and requires an API key.
|
|
38
|
-
*/
|
|
39
|
-
export type PrepareInputsRequest = (PrepareInputsBase & {
|
|
40
|
-
/** The method closure — inline MTHDS files. This is the signature source. */
|
|
41
|
-
files: MthdsFileItem[];
|
|
42
|
-
method_id?: never;
|
|
43
|
-
}) | (PrepareInputsBase & {
|
|
44
|
-
/** A stored method's id — resolved client-side to its closure before the build call. */
|
|
45
|
-
method_id: string;
|
|
46
|
-
files?: never;
|
|
47
|
-
});
|
|
48
42
|
/** The result of `prepareInputs`: rewritten inputs (copy-on-write) plus upload records. */
|
|
49
43
|
export interface PreparedInputs {
|
|
50
44
|
/** A copy of `inputs` with each file-bearing value rewritten to canonical content carrying `pipelex-storage://` in `url`. */
|
|
@@ -53,8 +47,8 @@ export interface PreparedInputs {
|
|
|
53
47
|
uploads: UploadRecord[];
|
|
54
48
|
}
|
|
55
49
|
/**
|
|
56
|
-
* The client surface `prepareInputs` needs: raw `upload
|
|
57
|
-
* signature source
|
|
50
|
+
* The client surface `prepareInputs` needs: raw `upload` and the `buildInputs`
|
|
51
|
+
* signature source.
|
|
58
52
|
*/
|
|
59
53
|
export interface PrepareCapableClient extends UploadCapableClient {
|
|
60
54
|
buildInputs(request: {
|
|
@@ -63,24 +57,7 @@ export interface PrepareCapableClient extends UploadCapableClient {
|
|
|
63
57
|
format?: "json";
|
|
64
58
|
explicit?: boolean;
|
|
65
59
|
}): Promise<BuildInputsResponse>;
|
|
66
|
-
/** Resolve a stored method's id into its runnable closure — the by-id signature source. */
|
|
67
|
-
getMethodClosure(methodId: string): Promise<MthdsFileItem[]>;
|
|
68
60
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Resolve a `files` / `method_id` closure pair to inline files: reject an
|
|
71
|
-
* over-specified `{ files, method_id }` (both given) before any resolution
|
|
72
|
-
* runs, then either return the inline `files` unchanged or fetch-and-parse the
|
|
73
|
-
* stored method behind `method_id` via `getMethodClosure`. Returns `undefined`
|
|
74
|
-
* when NEITHER is given — the caller decides what that means for its own
|
|
75
|
-
* request shape, since `buildInputs` (client.ts) also accepts a third source,
|
|
76
|
-
* the reserved `method_ref`, that `prepareInputs` does not.
|
|
77
|
-
*
|
|
78
|
-
* Shared between `PipelexApiClient.buildInputs` and `resolveClosureFiles`
|
|
79
|
-
* (below) so the files/method_id invariant is defined in exactly one place —
|
|
80
|
-
* a duplicated copy of this exact check is what let a `buildInputs`-only
|
|
81
|
-
* revision briefly reject a legitimate `method_ref`-only request.
|
|
82
|
-
*/
|
|
83
|
-
export declare function resolveFilesOrMethodId(files: MthdsFileItem[] | undefined, methodId: string | undefined, getMethodClosure: (methodId: string) => Promise<MthdsFileItem[]>, makeError: (message: string) => Error): Promise<MthdsFileItem[] | undefined>;
|
|
84
61
|
/**
|
|
85
62
|
* Prepare a pipe's inputs: upload local/byte/data-URL assets at the signature's
|
|
86
63
|
* file-bearing positions and return copy-on-write rewritten inputs plus upload
|
|
@@ -93,4 +70,3 @@ export declare function resolveFilesOrMethodId(files: MthdsFileItem[] | undefine
|
|
|
93
70
|
* route's `ApiResponseError`.
|
|
94
71
|
*/
|
|
95
72
|
export declare function prepareInputs(client: PrepareCapableClient, request: PrepareInputsRequest): Promise<PreparedInputs>;
|
|
96
|
-
export {};
|
package/dist/prepare-inputs.js
CHANGED
|
@@ -157,42 +157,22 @@ async function resolveNode(ctx, templateNode, callerValue) {
|
|
|
157
157
|
return callerValue; // scalar (text/number/…) or shape mismatch — pass through
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
* request shape, since `buildInputs` (client.ts) also accepts a third source,
|
|
166
|
-
* the reserved `method_ref`, that `prepareInputs` does not.
|
|
167
|
-
*
|
|
168
|
-
* Shared between `PipelexApiClient.buildInputs` and `resolveClosureFiles`
|
|
169
|
-
* (below) so the files/method_id invariant is defined in exactly one place —
|
|
170
|
-
* a duplicated copy of this exact check is what let a `buildInputs`-only
|
|
171
|
-
* revision briefly reject a legitimate `method_ref`-only request.
|
|
160
|
+
* Read the request's closure `files`, guarding the untyped-caller shapes the
|
|
161
|
+
* type system already forbids: a missing closure (`files` is required), and the
|
|
162
|
+
* retired by-id form (`method_id` was a client-side expansion leg, deleted when
|
|
163
|
+
* the tooling routes gained native by-id — expand a stored method with
|
|
164
|
+
* `getMethodClosure` instead).
|
|
172
165
|
*/
|
|
173
|
-
|
|
174
|
-
if (
|
|
175
|
-
throw
|
|
176
|
-
|
|
177
|
-
if (methodId !== undefined) {
|
|
178
|
-
return getMethodClosure(methodId);
|
|
166
|
+
function resolveClosureFiles(request) {
|
|
167
|
+
if (request["method_id"] !== undefined) {
|
|
168
|
+
throw new InputPreparationError("Cannot prepare inputs: `method_id` is not a prepareInputs field. Expand the stored method " +
|
|
169
|
+
"first — prepareInputs({ files: await client.getMethodClosure(methodId), … }).");
|
|
179
170
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
* Resolve the request's closure to inline `files`: fetch and parse a stored
|
|
184
|
-
* method when `method_id` is given, else use the inline `files`. The either/or
|
|
185
|
-
* is a type invariant (the discriminated union); {@link resolveFilesOrMethodId}
|
|
186
|
-
* backs the over-specified "both given" case at runtime for non-typed callers,
|
|
187
|
-
* and the "neither given" case is rejected here (prepareInputs has no third
|
|
188
|
-
* closure source, unlike `buildInputs`).
|
|
189
|
-
*/
|
|
190
|
-
async function resolveClosureFiles(client, request) {
|
|
191
|
-
const files = await resolveFilesOrMethodId(request.files, request.method_id, (methodId) => client.getMethodClosure(methodId), (message) => new InputPreparationError(`Cannot prepare inputs: ${message}`));
|
|
192
|
-
if (files === undefined) {
|
|
193
|
-
throw new InputPreparationError("Cannot prepare inputs: supply either `files` (an inline MTHDS closure) or `method_id` (a stored method).");
|
|
171
|
+
if (request.files == null) {
|
|
172
|
+
throw new InputPreparationError("Cannot prepare inputs: supply `files` (the inline MTHDS closure). A stored method's closure " +
|
|
173
|
+
"comes from client.getMethodClosure(methodId).");
|
|
194
174
|
}
|
|
195
|
-
return files;
|
|
175
|
+
return request.files;
|
|
196
176
|
}
|
|
197
177
|
/**
|
|
198
178
|
* Prepare a pipe's inputs: upload local/byte/data-URL assets at the signature's
|
|
@@ -206,7 +186,7 @@ async function resolveClosureFiles(client, request) {
|
|
|
206
186
|
* route's `ApiResponseError`.
|
|
207
187
|
*/
|
|
208
188
|
export async function prepareInputs(client, request) {
|
|
209
|
-
const files =
|
|
189
|
+
const files = resolveClosureFiles(request);
|
|
210
190
|
const report = await client.buildInputs({
|
|
211
191
|
files,
|
|
212
192
|
...(request.pipe_ref === undefined ? {} : { pipe_ref: request.pipe_ref }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-inputs.js","sourceRoot":"","sources":["../src/prepare-inputs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,WAAW,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"prepare-inputs.js","sourceRoot":"","sources":["../src/prepare-inputs.ts"],"names":[],"mappings":"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"}
|