@galaxy-tool-util/schema 0.1.0 → 0.2.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.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +14 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +14 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/workflow/clean.d.ts +27 -0
  7. package/dist/workflow/clean.d.ts.map +1 -1
  8. package/dist/workflow/clean.js +29 -0
  9. package/dist/workflow/clean.js.map +1 -1
  10. package/dist/workflow/coercions.d.ts +22 -0
  11. package/dist/workflow/coercions.d.ts.map +1 -0
  12. package/dist/workflow/coercions.js +67 -0
  13. package/dist/workflow/coercions.js.map +1 -0
  14. package/dist/workflow/index.d.ts +6 -1
  15. package/dist/workflow/index.d.ts.map +1 -1
  16. package/dist/workflow/index.js +6 -1
  17. package/dist/workflow/index.js.map +1 -1
  18. package/dist/workflow/normalized/index.d.ts +5 -2
  19. package/dist/workflow/normalized/index.d.ts.map +1 -1
  20. package/dist/workflow/normalized/index.js +2 -0
  21. package/dist/workflow/normalized/index.js.map +1 -1
  22. package/dist/workflow/normalized/stateful-runner.d.ts +82 -0
  23. package/dist/workflow/normalized/stateful-runner.d.ts.map +1 -0
  24. package/dist/workflow/normalized/stateful-runner.js +122 -0
  25. package/dist/workflow/normalized/stateful-runner.js.map +1 -0
  26. package/dist/workflow/normalized/toFormat2.d.ts +19 -1
  27. package/dist/workflow/normalized/toFormat2.d.ts.map +1 -1
  28. package/dist/workflow/normalized/toFormat2.js +47 -16
  29. package/dist/workflow/normalized/toFormat2.js.map +1 -1
  30. package/dist/workflow/normalized/toFormat2Stateful.d.ts +30 -0
  31. package/dist/workflow/normalized/toFormat2Stateful.d.ts.map +1 -0
  32. package/dist/workflow/normalized/toFormat2Stateful.js +58 -0
  33. package/dist/workflow/normalized/toFormat2Stateful.js.map +1 -0
  34. package/dist/workflow/normalized/toNative.d.ts +10 -1
  35. package/dist/workflow/normalized/toNative.d.ts.map +1 -1
  36. package/dist/workflow/normalized/toNative.js +24 -8
  37. package/dist/workflow/normalized/toNative.js.map +1 -1
  38. package/dist/workflow/normalized/toNativeStateful.d.ts +31 -0
  39. package/dist/workflow/normalized/toNativeStateful.d.ts.map +1 -0
  40. package/dist/workflow/normalized/toNativeStateful.js +55 -0
  41. package/dist/workflow/normalized/toNativeStateful.js.map +1 -0
  42. package/dist/workflow/precheck.d.ts +54 -0
  43. package/dist/workflow/precheck.d.ts.map +1 -0
  44. package/dist/workflow/precheck.js +91 -0
  45. package/dist/workflow/precheck.js.map +1 -0
  46. package/dist/workflow/raw/gxformat2.effect.d.ts +108 -332
  47. package/dist/workflow/raw/gxformat2.effect.d.ts.map +1 -1
  48. package/dist/workflow/raw/gxformat2.effect.js +106 -94
  49. package/dist/workflow/raw/gxformat2.effect.js.map +1 -1
  50. package/dist/workflow/raw/native.effect.d.ts +30 -177
  51. package/dist/workflow/raw/native.effect.d.ts.map +1 -1
  52. package/dist/workflow/raw/native.effect.js +43 -31
  53. package/dist/workflow/raw/native.effect.js.map +1 -1
  54. package/dist/workflow/roundtrip.d.ts +54 -0
  55. package/dist/workflow/roundtrip.d.ts.map +1 -0
  56. package/dist/workflow/roundtrip.js +516 -0
  57. package/dist/workflow/roundtrip.js.map +1 -0
  58. package/dist/workflow/runtime-markers.d.ts +20 -0
  59. package/dist/workflow/runtime-markers.d.ts.map +1 -0
  60. package/dist/workflow/runtime-markers.js +26 -0
  61. package/dist/workflow/runtime-markers.js.map +1 -0
  62. package/dist/workflow/stale-keys.d.ts +16 -0
  63. package/dist/workflow/stale-keys.d.ts.map +1 -0
  64. package/dist/workflow/stale-keys.js +43 -0
  65. package/dist/workflow/stale-keys.js.map +1 -0
  66. package/dist/workflow/state-merge.d.ts.map +1 -1
  67. package/dist/workflow/state-merge.js +5 -22
  68. package/dist/workflow/state-merge.js.map +1 -1
  69. package/dist/workflow/stateful-convert.d.ts +47 -0
  70. package/dist/workflow/stateful-convert.d.ts.map +1 -0
  71. package/dist/workflow/stateful-convert.js +151 -0
  72. package/dist/workflow/stateful-convert.js.map +1 -0
  73. package/dist/workflow/stateful-validate.d.ts +46 -0
  74. package/dist/workflow/stateful-validate.d.ts.map +1 -0
  75. package/dist/workflow/stateful-validate.js +96 -0
  76. package/dist/workflow/stateful-validate.js.map +1 -0
  77. package/dist/workflow/walker.d.ts +53 -0
  78. package/dist/workflow/walker.d.ts.map +1 -0
  79. package/dist/workflow/walker.js +189 -0
  80. package/dist/workflow/walker.js.map +1 -0
  81. package/package.json +18 -14
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Precheck native workflow steps for stateful conversion compatibility.
3
+ *
4
+ * Checks whether a step's tool_state can be walked by the schema-aware
5
+ * stateful converter, or whether it has issues (legacy replacement params,
6
+ * legacy parameter encoding) that require falling back to schema-free
7
+ * passthrough.
8
+ *
9
+ * Usage: called per-step by the stateful runner before conversion. A
10
+ * failing precheck short-circuits `convert` and pushes a structured
11
+ * `failureClass: "precheck"` status entry.
12
+ *
13
+ * Tool lookup is callback-shaped (`ToolInputsResolver`) matching the rest
14
+ * of the stateful conversion pipeline — the caller owns tool loading and
15
+ * version disambiguation.
16
+ */
17
+ import type { NormalizedNativeWorkflow, NormalizedNativeStep } from "./normalized/native.js";
18
+ import type { ToolInputsResolver } from "./normalized/stateful-runner.js";
19
+ import type { ToolParameterModel } from "../schema/bundle-types.js";
20
+ export interface StepPrecheckResult {
21
+ stepId: string;
22
+ toolId?: string;
23
+ canProcess: boolean;
24
+ skipReasons: string[];
25
+ }
26
+ export interface PrecheckResult {
27
+ canProcess: boolean;
28
+ skipReasons: string[];
29
+ stepResults: StepPrecheckResult[];
30
+ }
31
+ /**
32
+ * Precheck a single tool step's tool_state against its parameter inputs.
33
+ *
34
+ * Returns `canProcess: true` with empty reasons if the step is clean or
35
+ * if no inputs were provided (caller falls back at conversion time).
36
+ * Returns `canProcess: false` with reasons if legacy replacement params
37
+ * or legacy parameter encoding is detected.
38
+ *
39
+ * Non-tool steps (inputs, subworkflows) always pass — they have no
40
+ * tool_state to validate.
41
+ */
42
+ export declare function precheckNativeStep(step: NormalizedNativeStep, inputs: ToolParameterModel[] | undefined): StepPrecheckResult;
43
+ /**
44
+ * Precheck every step in a native workflow using a tool inputs resolver.
45
+ *
46
+ * For each step calls `precheckNativeStep`. Returns a workflow-level
47
+ * verdict (`canProcess` = all steps passed) plus per-step details, so
48
+ * callers can still do per-step stateful conversion for clean steps.
49
+ *
50
+ * Passing `null` as the resolver is allowed and means "no tool inputs
51
+ * available" — every step will pass (conversion-time fallback still runs).
52
+ */
53
+ export declare function precheckNativeWorkflow(workflow: NormalizedNativeWorkflow, resolver: ToolInputsResolver | null): PrecheckResult;
54
+ //# sourceMappingURL=precheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precheck.d.ts","sourceRoot":"","sources":["../../src/workflow/precheck.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,kBAAkB,EAAE,GAAG,SAAS,GACvC,kBAAkB,CA8BpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,wBAAwB,EAClC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,GAClC,cAAc,CA0BhB"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Precheck native workflow steps for stateful conversion compatibility.
3
+ *
4
+ * Checks whether a step's tool_state can be walked by the schema-aware
5
+ * stateful converter, or whether it has issues (legacy replacement params,
6
+ * legacy parameter encoding) that require falling back to schema-free
7
+ * passthrough.
8
+ *
9
+ * Usage: called per-step by the stateful runner before conversion. A
10
+ * failing precheck short-circuits `convert` and pushes a structured
11
+ * `failureClass: "precheck"` status entry.
12
+ *
13
+ * Tool lookup is callback-shaped (`ToolInputsResolver`) matching the rest
14
+ * of the stateful conversion pipeline — the caller owns tool loading and
15
+ * version disambiguation.
16
+ */
17
+ import { scanForReplacements } from "./replacement-scan.js";
18
+ import { scanToolState } from "./legacy-encoding.js";
19
+ /**
20
+ * Precheck a single tool step's tool_state against its parameter inputs.
21
+ *
22
+ * Returns `canProcess: true` with empty reasons if the step is clean or
23
+ * if no inputs were provided (caller falls back at conversion time).
24
+ * Returns `canProcess: false` with reasons if legacy replacement params
25
+ * or legacy parameter encoding is detected.
26
+ *
27
+ * Non-tool steps (inputs, subworkflows) always pass — they have no
28
+ * tool_state to validate.
29
+ */
30
+ export function precheckNativeStep(step, inputs) {
31
+ const stepId = String(step.id ?? "");
32
+ const toolId = step.tool_id ?? undefined;
33
+ const reasons = [];
34
+ if (step.type !== "tool") {
35
+ return { stepId, toolId, canProcess: true, skipReasons: [] };
36
+ }
37
+ if (inputs == null || toolId == null) {
38
+ return { stepId, toolId, canProcess: true, skipReasons: [] };
39
+ }
40
+ // Legacy replacement parameters (${...}) in typed fields
41
+ if (scanForReplacements(inputs, step.tool_state) === "yes") {
42
+ reasons.push("legacy replacement parameter (${...}) in typed field");
43
+ }
44
+ // Legacy parameter encoding (string-encoded containers)
45
+ const encodingResult = scanToolState(inputs, step.tool_state);
46
+ if (encodingResult.classification === "yes") {
47
+ const details = encodingResult.hits.map((h) => `${h.parameterName}: ${h.detail}`).join("; ");
48
+ reasons.push(`legacy parameter encoding detected (${details})`);
49
+ }
50
+ return {
51
+ stepId,
52
+ toolId,
53
+ canProcess: reasons.length === 0,
54
+ skipReasons: reasons,
55
+ };
56
+ }
57
+ /**
58
+ * Precheck every step in a native workflow using a tool inputs resolver.
59
+ *
60
+ * For each step calls `precheckNativeStep`. Returns a workflow-level
61
+ * verdict (`canProcess` = all steps passed) plus per-step details, so
62
+ * callers can still do per-step stateful conversion for clean steps.
63
+ *
64
+ * Passing `null` as the resolver is allowed and means "no tool inputs
65
+ * available" — every step will pass (conversion-time fallback still runs).
66
+ */
67
+ export function precheckNativeWorkflow(workflow, resolver) {
68
+ const stepResults = [];
69
+ const workflowReasons = [];
70
+ for (const [key, step] of Object.entries(workflow.steps)) {
71
+ const inputs = resolver != null && step.tool_id != null
72
+ ? resolver(step.tool_id, step.tool_version ?? null)
73
+ : undefined;
74
+ const stepResult = precheckNativeStep(step, inputs);
75
+ if (stepResult.stepId === "") {
76
+ stepResult.stepId = String(step.id ?? key);
77
+ }
78
+ stepResults.push(stepResult);
79
+ if (!stepResult.canProcess) {
80
+ for (const reason of stepResult.skipReasons) {
81
+ workflowReasons.push(`step ${stepResult.stepId}: ${reason}`);
82
+ }
83
+ }
84
+ }
85
+ return {
86
+ canProcess: workflowReasons.length === 0,
87
+ skipReasons: workflowReasons,
88
+ stepResults,
89
+ };
90
+ }
91
+ //# sourceMappingURL=precheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precheck.js","sourceRoot":"","sources":["../../src/workflow/precheck.ts"],"names":[],"mappings":"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"}