@ontrails/core 1.0.0-beta.15 → 1.0.0-beta.16
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/CHANGELOG.md +63 -0
- package/README.md +61 -16
- package/package.json +9 -8
- package/src/activation-provenance.ts +111 -0
- package/src/activation-source-compatibility.ts +430 -0
- package/src/activation-source-projection.ts +221 -0
- package/src/activation-source.ts +91 -0
- package/src/blob-ref.ts +51 -0
- package/src/context.ts +4 -0
- package/src/{internal/cross-batch.ts → cross-batch.ts} +3 -11
- package/src/detours.ts +8 -0
- package/src/draft.ts +4 -0
- package/src/error-projection.ts +51 -0
- package/src/errors.ts +192 -39
- package/src/execute.ts +443 -44
- package/src/fire.ts +965 -91
- package/src/index.ts +285 -38
- package/src/layer-projection.ts +192 -0
- package/src/layer.ts +32 -1
- package/src/observe.ts +361 -0
- package/src/permits.ts +12 -0
- package/src/redaction/patterns.ts +6 -3
- package/src/resilience.ts +8 -8
- package/src/resource-config.ts +477 -44
- package/src/resource.ts +21 -1
- package/src/result.ts +18 -0
- package/src/run.ts +2 -2
- package/src/schedule-runtime.ts +689 -0
- package/src/schedule.ts +324 -0
- package/src/serialization.ts +90 -57
- package/src/signal-diagnostics.ts +633 -0
- package/src/{internal/signal-ref.ts → signal-ref.ts} +1 -1
- package/src/signal.ts +37 -0
- package/src/store/accessor-protocol.ts +5 -5
- package/src/structured-examples.ts +245 -0
- package/src/surface-derivation.ts +91 -0
- package/src/surface-filter.ts +7 -13
- package/src/topo.ts +386 -6
- package/src/tracing.ts +345 -0
- package/src/trail.ts +168 -22
- package/src/trails/derive-trail.ts +1 -1
- package/src/trails/ingest.ts +7 -15
- package/src/{internal/trails-db.ts → trails-db.ts} +42 -21
- package/src/transport-error-map.ts +146 -28
- package/src/types.ts +82 -28
- package/src/validate-established-topo.ts +6 -0
- package/src/validate-topo.ts +212 -5
- package/src/validation.ts +58 -1
- package/src/webhook.ts +276 -0
- package/src/{internal/zod-wrappers.ts → zod-wrappers.ts} +0 -6
- package/.turbo/turbo-build.log +0 -1
- package/.turbo/turbo-lint.log +0 -3
- package/.turbo/turbo-typecheck.log +0 -1
- package/dist/blob-ref.d.ts +0 -20
- package/dist/blob-ref.d.ts.map +0 -1
- package/dist/blob-ref.js +0 -22
- package/dist/blob-ref.js.map +0 -1
- package/dist/branded.d.ts +0 -36
- package/dist/branded.d.ts.map +0 -1
- package/dist/branded.js +0 -89
- package/dist/branded.js.map +0 -1
- package/dist/collections.d.ts +0 -31
- package/dist/collections.d.ts.map +0 -1
- package/dist/collections.js +0 -60
- package/dist/collections.js.map +0 -1
- package/dist/context.d.ts +0 -22
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -37
- package/dist/context.js.map +0 -1
- package/dist/contour.d.ts +0 -81
- package/dist/contour.d.ts.map +0 -1
- package/dist/contour.js +0 -176
- package/dist/contour.js.map +0 -1
- package/dist/cross-schema.d.ts +0 -18
- package/dist/cross-schema.d.ts.map +0 -1
- package/dist/cross-schema.js +0 -29
- package/dist/cross-schema.js.map +0 -1
- package/dist/derive.d.ts +0 -44
- package/dist/derive.d.ts.map +0 -1
- package/dist/derive.js +0 -149
- package/dist/derive.js.map +0 -1
- package/dist/draft.d.ts +0 -28
- package/dist/draft.d.ts.map +0 -1
- package/dist/draft.js +0 -157
- package/dist/draft.js.map +0 -1
- package/dist/errors.d.ts +0 -141
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -185
- package/dist/errors.js.map +0 -1
- package/dist/execute.d.ts +0 -52
- package/dist/execute.d.ts.map +0 -1
- package/dist/execute.js +0 -511
- package/dist/execute.js.map +0 -1
- package/dist/fetch.d.ts +0 -15
- package/dist/fetch.d.ts.map +0 -1
- package/dist/fetch.js +0 -102
- package/dist/fetch.js.map +0 -1
- package/dist/fire.d.ts +0 -43
- package/dist/fire.d.ts.map +0 -1
- package/dist/fire.js +0 -185
- package/dist/fire.js.map +0 -1
- package/dist/guards.d.ts +0 -17
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -25
- package/dist/guards.js.map +0 -1
- package/dist/index.d.ts +0 -59
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -61
- package/dist/index.js.map +0 -1
- package/dist/internal/cross-batch.d.ts +0 -44
- package/dist/internal/cross-batch.d.ts.map +0 -1
- package/dist/internal/cross-batch.js +0 -58
- package/dist/internal/cross-batch.js.map +0 -1
- package/dist/internal/fork-ctx.d.ts +0 -41
- package/dist/internal/fork-ctx.d.ts.map +0 -1
- package/dist/internal/fork-ctx.js +0 -47
- package/dist/internal/fork-ctx.js.map +0 -1
- package/dist/internal/signal-ref.d.ts +0 -15
- package/dist/internal/signal-ref.d.ts.map +0 -1
- package/dist/internal/signal-ref.js +0 -41
- package/dist/internal/signal-ref.js.map +0 -1
- package/dist/internal/topo-saves.d.ts +0 -53
- package/dist/internal/topo-saves.d.ts.map +0 -1
- package/dist/internal/topo-saves.js +0 -449
- package/dist/internal/topo-saves.js.map +0 -1
- package/dist/internal/topo-snapshots.d.ts +0 -57
- package/dist/internal/topo-snapshots.d.ts.map +0 -1
- package/dist/internal/topo-snapshots.js +0 -372
- package/dist/internal/topo-snapshots.js.map +0 -1
- package/dist/internal/topo-store-read.d.ts +0 -70
- package/dist/internal/topo-store-read.d.ts.map +0 -1
- package/dist/internal/topo-store-read.js +0 -221
- package/dist/internal/topo-store-read.js.map +0 -1
- package/dist/internal/topo-store.d.ts +0 -26
- package/dist/internal/topo-store.d.ts.map +0 -1
- package/dist/internal/topo-store.js +0 -621
- package/dist/internal/topo-store.js.map +0 -1
- package/dist/internal/tracing.d.ts +0 -98
- package/dist/internal/tracing.d.ts.map +0 -1
- package/dist/internal/tracing.js +0 -102
- package/dist/internal/tracing.js.map +0 -1
- package/dist/internal/trails-db.d.ts +0 -16
- package/dist/internal/trails-db.d.ts.map +0 -1
- package/dist/internal/trails-db.js +0 -118
- package/dist/internal/trails-db.js.map +0 -1
- package/dist/internal/zod-wrappers.d.ts +0 -40
- package/dist/internal/zod-wrappers.d.ts.map +0 -1
- package/dist/internal/zod-wrappers.js +0 -59
- package/dist/internal/zod-wrappers.js.map +0 -1
- package/dist/layer.d.ts +0 -23
- package/dist/layer.d.ts.map +0 -1
- package/dist/layer.js +0 -21
- package/dist/layer.js.map +0 -1
- package/dist/path-security.d.ts +0 -28
- package/dist/path-security.d.ts.map +0 -1
- package/dist/path-security.js +0 -63
- package/dist/path-security.js.map +0 -1
- package/dist/patterns/bulk.d.ts +0 -15
- package/dist/patterns/bulk.d.ts.map +0 -1
- package/dist/patterns/bulk.js +0 -14
- package/dist/patterns/bulk.js.map +0 -1
- package/dist/patterns/change.d.ts +0 -10
- package/dist/patterns/change.d.ts.map +0 -1
- package/dist/patterns/change.js +0 -10
- package/dist/patterns/change.js.map +0 -1
- package/dist/patterns/date-range.d.ts +0 -10
- package/dist/patterns/date-range.d.ts.map +0 -1
- package/dist/patterns/date-range.js +0 -10
- package/dist/patterns/date-range.js.map +0 -1
- package/dist/patterns/index.d.ts +0 -9
- package/dist/patterns/index.d.ts.map +0 -1
- package/dist/patterns/index.js +0 -9
- package/dist/patterns/index.js.map +0 -1
- package/dist/patterns/pagination.d.ts +0 -18
- package/dist/patterns/pagination.d.ts.map +0 -1
- package/dist/patterns/pagination.js +0 -18
- package/dist/patterns/pagination.js.map +0 -1
- package/dist/patterns/progress.d.ts +0 -11
- package/dist/patterns/progress.d.ts.map +0 -1
- package/dist/patterns/progress.js +0 -11
- package/dist/patterns/progress.js.map +0 -1
- package/dist/patterns/sorting.d.ts +0 -13
- package/dist/patterns/sorting.d.ts.map +0 -1
- package/dist/patterns/sorting.js +0 -10
- package/dist/patterns/sorting.js.map +0 -1
- package/dist/patterns/status.d.ts +0 -15
- package/dist/patterns/status.d.ts.map +0 -1
- package/dist/patterns/status.js +0 -9
- package/dist/patterns/status.js.map +0 -1
- package/dist/patterns/timestamps.d.ts +0 -10
- package/dist/patterns/timestamps.d.ts.map +0 -1
- package/dist/patterns/timestamps.js +0 -10
- package/dist/patterns/timestamps.js.map +0 -1
- package/dist/redaction/index.d.ts +0 -4
- package/dist/redaction/index.d.ts.map +0 -1
- package/dist/redaction/index.js +0 -3
- package/dist/redaction/index.js.map +0 -1
- package/dist/redaction/patterns.d.ts +0 -9
- package/dist/redaction/patterns.d.ts.map +0 -1
- package/dist/redaction/patterns.js +0 -39
- package/dist/redaction/patterns.js.map +0 -1
- package/dist/redaction/redactor.d.ts +0 -27
- package/dist/redaction/redactor.d.ts.map +0 -1
- package/dist/redaction/redactor.js +0 -89
- package/dist/redaction/redactor.js.map +0 -1
- package/dist/resilience.d.ts +0 -34
- package/dist/resilience.d.ts.map +0 -1
- package/dist/resilience.js +0 -164
- package/dist/resilience.js.map +0 -1
- package/dist/resource-config.d.ts +0 -22
- package/dist/resource-config.d.ts.map +0 -1
- package/dist/resource-config.js +0 -210
- package/dist/resource-config.js.map +0 -1
- package/dist/resource.d.ts +0 -74
- package/dist/resource.d.ts.map +0 -1
- package/dist/resource.js +0 -61
- package/dist/resource.js.map +0 -1
- package/dist/result.d.ts +0 -57
- package/dist/result.d.ts.map +0 -1
- package/dist/result.js +0 -156
- package/dist/result.js.map +0 -1
- package/dist/run.d.ts +0 -28
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -35
- package/dist/run.js.map +0 -1
- package/dist/serialization.d.ts +0 -27
- package/dist/serialization.d.ts.map +0 -1
- package/dist/serialization.js +0 -154
- package/dist/serialization.js.map +0 -1
- package/dist/signal.d.ts +0 -33
- package/dist/signal.d.ts.map +0 -1
- package/dist/signal.js +0 -17
- package/dist/signal.js.map +0 -1
- package/dist/store/accessor-protocol.d.ts +0 -51
- package/dist/store/accessor-protocol.d.ts.map +0 -1
- package/dist/store/accessor-protocol.js +0 -2
- package/dist/store/accessor-protocol.js.map +0 -1
- package/dist/store/index.d.ts +0 -2
- package/dist/store/index.d.ts.map +0 -1
- package/dist/store/index.js +0 -2
- package/dist/store/index.js.map +0 -1
- package/dist/surface-filter.d.ts +0 -13
- package/dist/surface-filter.d.ts.map +0 -1
- package/dist/surface-filter.js +0 -76
- package/dist/surface-filter.js.map +0 -1
- package/dist/topo-store.d.ts +0 -62
- package/dist/topo-store.d.ts.map +0 -1
- package/dist/topo-store.js +0 -319
- package/dist/topo-store.js.map +0 -1
- package/dist/topo.d.ts +0 -39
- package/dist/topo.d.ts.map +0 -1
- package/dist/topo.js +0 -241
- package/dist/topo.js.map +0 -1
- package/dist/trail.d.ts +0 -163
- package/dist/trail.d.ts.map +0 -1
- package/dist/trail.js +0 -75
- package/dist/trail.js.map +0 -1
- package/dist/trails/derive-trail.d.ts +0 -66
- package/dist/trails/derive-trail.d.ts.map +0 -1
- package/dist/trails/derive-trail.js +0 -378
- package/dist/trails/derive-trail.js.map +0 -1
- package/dist/trails/index.d.ts +0 -5
- package/dist/trails/index.d.ts.map +0 -1
- package/dist/trails/index.js +0 -3
- package/dist/trails/index.js.map +0 -1
- package/dist/trails/ingest.d.ts +0 -24
- package/dist/trails/ingest.d.ts.map +0 -1
- package/dist/trails/ingest.js +0 -63
- package/dist/trails/ingest.js.map +0 -1
- package/dist/transport-error-map.d.ts +0 -106
- package/dist/transport-error-map.d.ts.map +0 -1
- package/dist/transport-error-map.js +0 -24
- package/dist/transport-error-map.js.map +0 -1
- package/dist/type-checks.test-d.d.ts +0 -71
- package/dist/type-checks.test-d.d.ts.map +0 -1
- package/dist/type-checks.test-d.js +0 -12
- package/dist/type-checks.test-d.js.map +0 -1
- package/dist/type-utils.d.ts +0 -33
- package/dist/type-utils.d.ts.map +0 -1
- package/dist/type-utils.js +0 -12
- package/dist/type-utils.js.map +0 -1
- package/dist/types.d.ts +0 -177
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/validate-established-topo.d.ts +0 -76
- package/dist/validate-established-topo.d.ts.map +0 -1
- package/dist/validate-established-topo.js +0 -43
- package/dist/validate-established-topo.js.map +0 -1
- package/dist/validate-topo.d.ts +0 -24
- package/dist/validate-topo.d.ts.map +0 -1
- package/dist/validate-topo.js +0 -193
- package/dist/validate-topo.js.map +0 -1
- package/dist/validation.d.ts +0 -27
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -165
- package/dist/validation.js.map +0 -1
- package/dist/workspace.d.ts +0 -25
- package/dist/workspace.d.ts.map +0 -1
- package/dist/workspace.js +0 -57
- package/dist/workspace.js.map +0 -1
- package/src/__tests__/blob-ref.test.ts +0 -103
- package/src/__tests__/branded.test.ts +0 -148
- package/src/__tests__/collections.test.ts +0 -126
- package/src/__tests__/context.test.ts +0 -77
- package/src/__tests__/contour.test.ts +0 -263
- package/src/__tests__/derive-trail.test.ts +0 -668
- package/src/__tests__/derive.test.ts +0 -260
- package/src/__tests__/errors.test.ts +0 -427
- package/src/__tests__/execute.test.ts +0 -1563
- package/src/__tests__/fetch.test.ts +0 -217
- package/src/__tests__/fire.test.ts +0 -1056
- package/src/__tests__/fork-ctx.test.ts +0 -83
- package/src/__tests__/guards.test.ts +0 -102
- package/src/__tests__/ingest.test.ts +0 -191
- package/src/__tests__/layer.test.ts +0 -125
- package/src/__tests__/path-security.test.ts +0 -114
- package/src/__tests__/patterns.test.ts +0 -273
- package/src/__tests__/redaction.test.ts +0 -244
- package/src/__tests__/resilience.test.ts +0 -246
- package/src/__tests__/resource.test.ts +0 -204
- package/src/__tests__/result.test.ts +0 -155
- package/src/__tests__/run.test.ts +0 -181
- package/src/__tests__/serialization.test.ts +0 -401
- package/src/__tests__/service-config.test.ts +0 -224
- package/src/__tests__/signal.test.ts +0 -82
- package/src/__tests__/surface-filter.test.ts +0 -196
- package/src/__tests__/topo-store-read.test.ts +0 -256
- package/src/__tests__/topo-store.test.ts +0 -869
- package/src/__tests__/topo.test.ts +0 -573
- package/src/__tests__/trail-permit.test.ts +0 -60
- package/src/__tests__/trail.test.ts +0 -426
- package/src/__tests__/trails-db.test.ts +0 -198
- package/src/__tests__/transport-error-map.test.ts +0 -82
- package/src/__tests__/type-utils.test.ts +0 -118
- package/src/__tests__/validate-topo.test.ts +0 -611
- package/src/__tests__/validation.test.ts +0 -336
- package/src/__tests__/workspace.test.ts +0 -183
- package/src/__tests__/zod-wrappers.test.ts +0 -62
- package/src/internal/topo-snapshots.ts +0 -517
- package/src/internal/topo-store-read.ts +0 -481
- package/src/internal/topo-store.ts +0 -1192
- package/src/internal/tracing.ts +0 -187
- package/src/topo-store.ts +0 -510
- package/src/type-checks.test-d.ts +0 -106
- package/tsconfig.json +0 -9
- package/tsconfig.tests.json +0 -10
- package/tsconfig.tsbuildinfo +0 -1
package/dist/cross-schema.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cross-invocation schema merging for trails with `crossInput`.
|
|
3
|
-
*
|
|
4
|
-
* When a trail declares `crossInput`, callers via `ctx.cross()` pass both
|
|
5
|
-
* public input and composition-only fields. The merged schema validates the
|
|
6
|
-
* combined shape so `executeTrail` doesn't reject the extra fields.
|
|
7
|
-
*/
|
|
8
|
-
import { z } from 'zod';
|
|
9
|
-
/**
|
|
10
|
-
* Build the validation schema for a cross-invoked trail.
|
|
11
|
-
*
|
|
12
|
-
* When the target trail declares `crossInput`, returns the intersection of
|
|
13
|
-
* `trail.input` and `trail.crossInput`. Returns `undefined` when no
|
|
14
|
-
* `crossInput` is declared, signaling that normal input validation suffices.
|
|
15
|
-
*/
|
|
16
|
-
export const buildCrossValidationSchema = (trailDef) => {
|
|
17
|
-
if (!trailDef.crossInput) {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
// Prefer .merge() for ZodObject pairs — produces a proper merged object
|
|
21
|
-
// schema that strips unknown keys and exposes .shape. Fall back to
|
|
22
|
-
// z.intersection for non-object schemas.
|
|
23
|
-
if (trailDef.input instanceof z.ZodObject &&
|
|
24
|
-
trailDef.crossInput instanceof z.ZodObject) {
|
|
25
|
-
return trailDef.input.merge(trailDef.crossInput);
|
|
26
|
-
}
|
|
27
|
-
return z.intersection(trailDef.input, trailDef.crossInput);
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=cross-schema.js.map
|
package/dist/cross-schema.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cross-schema.js","sourceRoot":"","sources":["../src/cross-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,QAAkB,EACK,EAAE;IACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,wEAAwE;IACxE,mEAAmE;IACnE,yCAAyC;IACzC,IACE,QAAQ,CAAC,KAAK,YAAY,CAAC,CAAC,SAAS;QACrC,QAAQ,CAAC,UAAU,YAAY,CAAC,CAAC,SAAS,EAC1C,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC7D,CAAC,CAAC"}
|
package/dist/derive.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema-driven field derivation for @ontrails/core
|
|
3
|
-
*
|
|
4
|
-
* Introspects Zod v4 schemas to produce a runtime-agnostic Field[] descriptor
|
|
5
|
-
* that UI consumers (CLI prompts, web forms, etc.) can consume.
|
|
6
|
-
*/
|
|
7
|
-
import type { z } from 'zod';
|
|
8
|
-
/** A runtime-agnostic field descriptor derived from a Zod schema. */
|
|
9
|
-
export interface Field {
|
|
10
|
-
readonly name: string;
|
|
11
|
-
readonly type: 'string' | 'number' | 'boolean' | 'enum' | 'multiselect' | 'string[]' | 'number[]';
|
|
12
|
-
readonly label: string;
|
|
13
|
-
readonly required: boolean;
|
|
14
|
-
readonly default?: unknown | undefined;
|
|
15
|
-
readonly options?: readonly {
|
|
16
|
-
value: string;
|
|
17
|
-
label?: string | undefined;
|
|
18
|
-
hint?: string | undefined;
|
|
19
|
-
}[] | undefined;
|
|
20
|
-
}
|
|
21
|
-
/** Per-field overrides supplied by trail authors. */
|
|
22
|
-
export interface FieldOverride {
|
|
23
|
-
readonly label?: string | undefined;
|
|
24
|
-
readonly message?: string | undefined;
|
|
25
|
-
readonly hint?: string | undefined;
|
|
26
|
-
readonly options?: readonly {
|
|
27
|
-
value: string;
|
|
28
|
-
label: string;
|
|
29
|
-
hint?: string | undefined;
|
|
30
|
-
}[] | undefined;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Derive the canonical ordered CLI path from a trail ID.
|
|
34
|
-
*
|
|
35
|
-
* @throws {ValidationError} if the trail ID contains empty segments (e.g. consecutive dots).
|
|
36
|
-
*/
|
|
37
|
-
export declare const deriveCliPath: (trailId: string) => string[];
|
|
38
|
-
/**
|
|
39
|
-
* Derive a runtime-agnostic Field[] from a Zod object schema.
|
|
40
|
-
*
|
|
41
|
-
* Uses Zod v4's `_zod.def` for introspection. Returns fields sorted by name.
|
|
42
|
-
*/
|
|
43
|
-
export declare const deriveFields: (schema: z.ZodType, overrides?: Record<string, FieldOverride>) => Field[];
|
|
44
|
-
//# sourceMappingURL=derive.d.ts.map
|
package/dist/derive.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../src/derive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQ7B,qEAAqE;AACrE,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EACT,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,aAAa,GACb,UAAU,GACV,UAAU,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EACb,SAAS;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,EAAE,GACH,SAAS,CAAC;CACf;AAED,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EACb,SAAS;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,EAAE,GACH,SAAS,CAAC;CACf;AAsJD;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,KAAG,MAAM,EASrD,CAAC;AAwBF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,QAAQ,CAAC,CAAC,OAAO,EACjB,YAAY,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KACxC,KAAK,EAiBP,CAAC"}
|
package/dist/derive.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema-driven field derivation for @ontrails/core
|
|
3
|
-
*
|
|
4
|
-
* Introspects Zod v4 schemas to produce a runtime-agnostic Field[] descriptor
|
|
5
|
-
* that UI consumers (CLI prompts, web forms, etc.) can consume.
|
|
6
|
-
*/
|
|
7
|
-
import { ValidationError } from './errors.js';
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
// Helpers
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
/** Convert camelCase / PascalCase to "Title Case" label. */
|
|
12
|
-
const humanize = (str) => str
|
|
13
|
-
.replaceAll(/([a-z])([A-Z])/g, '$1 $2')
|
|
14
|
-
.replaceAll(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')
|
|
15
|
-
.replace(/^./, (ch) => ch.toUpperCase());
|
|
16
|
-
/** Get the inner type from an optional or default wrapper. */
|
|
17
|
-
const getInnerType = (current) => current._zod.def['innerType'];
|
|
18
|
-
/** Propagate description from inner to state if present. */
|
|
19
|
-
const propagateDescription = (inner, state) => {
|
|
20
|
-
if (inner.description) {
|
|
21
|
-
state.description = inner.description;
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
/** Step one level of optional/default unwrapping. Returns null if not a wrapper type. */
|
|
25
|
-
const unwrapStep = (current, state) => {
|
|
26
|
-
const defType = current._zod.def['type'];
|
|
27
|
-
if (defType !== 'optional' && defType !== 'default') {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
state.required = false;
|
|
31
|
-
if (defType === 'default') {
|
|
32
|
-
state.defaultValue = current._zod.def['defaultValue'];
|
|
33
|
-
}
|
|
34
|
-
const inner = getInnerType(current);
|
|
35
|
-
propagateDescription(inner, state);
|
|
36
|
-
return inner;
|
|
37
|
-
};
|
|
38
|
-
/** Unwrap optional / default wrappers, collecting metadata. */
|
|
39
|
-
const unwrap = (s) => {
|
|
40
|
-
const state = {
|
|
41
|
-
defaultValue: undefined,
|
|
42
|
-
description: s.description,
|
|
43
|
-
required: true,
|
|
44
|
-
};
|
|
45
|
-
let current = s;
|
|
46
|
-
// eslint-disable-next-line no-constant-condition
|
|
47
|
-
while (true) {
|
|
48
|
-
const next = unwrapStep(current, state);
|
|
49
|
-
if (next === null) {
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
current = next;
|
|
53
|
-
}
|
|
54
|
-
return { ...state, inner: current };
|
|
55
|
-
};
|
|
56
|
-
const fieldTypeByDef = {
|
|
57
|
-
array: (s) => {
|
|
58
|
-
const element = s._zod.def['element'];
|
|
59
|
-
const { inner } = unwrap(element);
|
|
60
|
-
const elementType = inner._zod.def['type'];
|
|
61
|
-
if (elementType === 'enum') {
|
|
62
|
-
const entries = inner._zod.def['entries'];
|
|
63
|
-
return { options: Object.values(entries), type: 'multiselect' };
|
|
64
|
-
}
|
|
65
|
-
if (elementType !== 'number' && elementType !== 'string') {
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
options: undefined,
|
|
70
|
-
type: elementType === 'number' ? 'number[]' : 'string[]',
|
|
71
|
-
};
|
|
72
|
-
},
|
|
73
|
-
boolean: () => ({ options: undefined, type: 'boolean' }),
|
|
74
|
-
enum: (s) => {
|
|
75
|
-
const entries = s._zod.def['entries'];
|
|
76
|
-
return { options: Object.values(entries), type: 'enum' };
|
|
77
|
-
},
|
|
78
|
-
number: () => ({ options: undefined, type: 'number' }),
|
|
79
|
-
string: () => ({ options: undefined, type: 'string' }),
|
|
80
|
-
};
|
|
81
|
-
/** Derive field type and raw options from the unwrapped Zod def. */
|
|
82
|
-
const deriveFieldType = (s) => {
|
|
83
|
-
const defType = s._zod.def['type'];
|
|
84
|
-
const derive = fieldTypeByDef[defType];
|
|
85
|
-
return derive ? derive(s) : null;
|
|
86
|
-
};
|
|
87
|
-
/** Build options array, merging with overrides when present. */
|
|
88
|
-
const buildOptions = (rawOptions, overrideOptions) => {
|
|
89
|
-
if (!rawOptions) {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
if (!overrideOptions) {
|
|
93
|
-
return rawOptions.map((v) => ({ value: v }));
|
|
94
|
-
}
|
|
95
|
-
const overrideMap = new Map(overrideOptions.map((o) => [o.value, o]));
|
|
96
|
-
return rawOptions.map((v) => {
|
|
97
|
-
const ov = overrideMap.get(v);
|
|
98
|
-
return ov ? { hint: ov.hint, label: ov.label, value: v } : { value: v };
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
/**
|
|
102
|
-
* Derive the canonical ordered CLI path from a trail ID.
|
|
103
|
-
*
|
|
104
|
-
* @throws {ValidationError} if the trail ID contains empty segments (e.g. consecutive dots).
|
|
105
|
-
*/
|
|
106
|
-
export const deriveCliPath = (trailId) => {
|
|
107
|
-
const segments = trailId.split('.');
|
|
108
|
-
const emptyIndex = segments.findIndex((s) => s.length === 0);
|
|
109
|
-
if (emptyIndex !== -1) {
|
|
110
|
-
throw new ValidationError(`Trail ID "${trailId}" contains an empty segment at position ${emptyIndex}`);
|
|
111
|
-
}
|
|
112
|
-
return segments;
|
|
113
|
-
};
|
|
114
|
-
// ---------------------------------------------------------------------------
|
|
115
|
-
// Public API
|
|
116
|
-
// ---------------------------------------------------------------------------
|
|
117
|
-
/** Derive a single field from a shape entry. */
|
|
118
|
-
const deriveField = (key, value, overrides) => {
|
|
119
|
-
const { inner, required, defaultValue, description } = unwrap(value);
|
|
120
|
-
const derived = deriveFieldType(inner);
|
|
121
|
-
if (!derived) {
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
const { type, options: rawOptions } = derived;
|
|
125
|
-
const override = overrides?.[key];
|
|
126
|
-
const label = override?.label ?? description ?? humanize(key);
|
|
127
|
-
const options = buildOptions(rawOptions, override?.options);
|
|
128
|
-
return { default: defaultValue, label, name: key, options, required, type };
|
|
129
|
-
};
|
|
130
|
-
/**
|
|
131
|
-
* Derive a runtime-agnostic Field[] from a Zod object schema.
|
|
132
|
-
*
|
|
133
|
-
* Uses Zod v4's `_zod.def` for introspection. Returns fields sorted by name.
|
|
134
|
-
*/
|
|
135
|
-
export const deriveFields = (schema, overrides) => {
|
|
136
|
-
const s = schema;
|
|
137
|
-
if (s._zod.def['type'] !== 'object') {
|
|
138
|
-
return [];
|
|
139
|
-
}
|
|
140
|
-
const shape = s._zod.def['shape'];
|
|
141
|
-
if (!shape) {
|
|
142
|
-
return [];
|
|
143
|
-
}
|
|
144
|
-
const fields = Object.entries(shape).map(([key, value]) => deriveField(key, value, overrides));
|
|
145
|
-
return fields
|
|
146
|
-
.filter((field) => field !== null)
|
|
147
|
-
.toSorted((a, b) => a.name.localeCompare(b.name));
|
|
148
|
-
};
|
|
149
|
-
//# sourceMappingURL=derive.js.map
|
package/dist/derive.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"derive.js","sourceRoot":"","sources":["../src/derive.ts"],"names":[],"mappings":"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"}
|
package/dist/draft.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ValidationError } from './errors.js';
|
|
2
|
-
import { Result } from './result.js';
|
|
3
|
-
import type { Topo } from './topo.js';
|
|
4
|
-
export declare const DRAFT_ID_PREFIX = "_draft.";
|
|
5
|
-
export type DraftDependencyKind = 'cross' | 'contour' | 'resource' | 'replaced-by' | 'schema-reference' | 'signal-from';
|
|
6
|
-
export interface DraftDependency {
|
|
7
|
-
readonly fromId: string;
|
|
8
|
-
readonly kind: DraftDependencyKind;
|
|
9
|
-
readonly toId: string;
|
|
10
|
-
}
|
|
11
|
-
export interface DraftFinding {
|
|
12
|
-
readonly id: string;
|
|
13
|
-
readonly kind: 'contour' | 'resource' | 'signal' | 'trail' | 'unknown';
|
|
14
|
-
readonly message: string;
|
|
15
|
-
readonly rule: 'draft-contamination' | 'draft-id';
|
|
16
|
-
readonly via?: DraftDependencyKind | undefined;
|
|
17
|
-
readonly dependsOn?: string | undefined;
|
|
18
|
-
}
|
|
19
|
-
export interface DraftReport {
|
|
20
|
-
readonly contaminatedIds: ReadonlySet<string>;
|
|
21
|
-
readonly declaredDraftIds: ReadonlySet<string>;
|
|
22
|
-
readonly dependencies: readonly DraftDependency[];
|
|
23
|
-
readonly findings: readonly DraftFinding[];
|
|
24
|
-
}
|
|
25
|
-
export declare const isDraftId: (id: string) => boolean;
|
|
26
|
-
export declare const deriveDraftReport: (topo: Topo) => DraftReport;
|
|
27
|
-
export declare const validateDraftFreeTopo: (topo: Topo) => Result<void, ValidationError>;
|
|
28
|
-
//# sourceMappingURL=draft.d.ts.map
|
package/dist/draft.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGtC,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,SAAS,GACT,UAAU,GACV,aAAa,GACb,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,UAAU,CAAC;IAClD,QAAQ,CAAC,GAAG,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAcD,eAAO,MAAM,SAAS,GAAI,IAAI,MAAM,KAAG,OACP,CAAC;AAiPjC,eAAO,MAAM,iBAAiB,GAAI,MAAM,IAAI,KAAG,WAuB9C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,IAAI,KACT,MAAM,CAAC,IAAI,EAAE,eAAe,CAe9B,CAAC"}
|
package/dist/draft.js
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { getContourReferences } from './contour.js';
|
|
2
|
-
import { ValidationError } from './errors.js';
|
|
3
|
-
import { Result } from './result.js';
|
|
4
|
-
export const DRAFT_ID_PREFIX = '_draft.';
|
|
5
|
-
const replacedByTarget = (value) => {
|
|
6
|
-
const raw = value;
|
|
7
|
-
return typeof raw.replacedBy === 'string' ? raw.replacedBy : undefined;
|
|
8
|
-
};
|
|
9
|
-
export const isDraftId = (id) => id.startsWith(DRAFT_ID_PREFIX);
|
|
10
|
-
const dependenciesFromIds = (fromId, toIds, kind) => toIds.map((toId) => ({
|
|
11
|
-
fromId,
|
|
12
|
-
kind,
|
|
13
|
-
toId,
|
|
14
|
-
}));
|
|
15
|
-
const dependencyFromTarget = (fromId, toId, kind) => toId === undefined
|
|
16
|
-
? []
|
|
17
|
-
: [
|
|
18
|
-
{
|
|
19
|
-
fromId,
|
|
20
|
-
kind,
|
|
21
|
-
toId,
|
|
22
|
-
},
|
|
23
|
-
];
|
|
24
|
-
const trailDependencies = (trail) => [
|
|
25
|
-
...dependenciesFromIds(trail.id, (trail.contours ?? []).map((contour) => contour.name), 'contour'),
|
|
26
|
-
...dependenciesFromIds(trail.id, trail.crosses, 'cross'),
|
|
27
|
-
...dependenciesFromIds(trail.id, trail.resources.map(({ id }) => id), 'resource'),
|
|
28
|
-
...dependencyFromTarget(trail.id, replacedByTarget(trail), 'replaced-by'),
|
|
29
|
-
];
|
|
30
|
-
const contourDependencies = (contour) => dependenciesFromIds(contour.name, getContourReferences(contour).map((reference) => reference.contour), 'schema-reference');
|
|
31
|
-
const signalDependencies = (signal) => [
|
|
32
|
-
...dependenciesFromIds(signal.id, signal.from ?? [], 'signal-from'),
|
|
33
|
-
...dependencyFromTarget(signal.id, replacedByTarget(signal), 'replaced-by'),
|
|
34
|
-
];
|
|
35
|
-
const resourceDependencies = (resource) => dependencyFromTarget(resource.id, replacedByTarget(resource), 'replaced-by');
|
|
36
|
-
const nodeKind = (id, contours, trails, signals, resources) => {
|
|
37
|
-
if (contours.has(id)) {
|
|
38
|
-
return 'contour';
|
|
39
|
-
}
|
|
40
|
-
if (trails.has(id)) {
|
|
41
|
-
return 'trail';
|
|
42
|
-
}
|
|
43
|
-
if (signals.has(id)) {
|
|
44
|
-
return 'signal';
|
|
45
|
-
}
|
|
46
|
-
if (resources.has(id)) {
|
|
47
|
-
return 'resource';
|
|
48
|
-
}
|
|
49
|
-
return 'unknown';
|
|
50
|
-
};
|
|
51
|
-
const displayKind = (kind) => kind === 'unknown' ? 'Node' : kind[0]?.toUpperCase() + kind.slice(1);
|
|
52
|
-
const draftIdsFromKeys = (keys) => [...keys].filter(isDraftId);
|
|
53
|
-
const collectDeclaredDraftIds = (topo) => new Set([
|
|
54
|
-
...draftIdsFromKeys(topo.contours.keys()),
|
|
55
|
-
...draftIdsFromKeys(topo.trails.keys()),
|
|
56
|
-
...draftIdsFromKeys(topo.signals.keys()),
|
|
57
|
-
...draftIdsFromKeys(topo.resources.keys()),
|
|
58
|
-
]);
|
|
59
|
-
const findingForDraftId = (id, kind) => ({
|
|
60
|
-
id,
|
|
61
|
-
kind,
|
|
62
|
-
message: `${displayKind(id ? kind : 'unknown')} "${id}" is draft and cannot appear in the established graph.`,
|
|
63
|
-
rule: 'draft-id',
|
|
64
|
-
});
|
|
65
|
-
const findingForContamination = (id, kind, reason) => {
|
|
66
|
-
const dependencyLabel = isDraftId(reason.dependsOn)
|
|
67
|
-
? `draft "${reason.dependsOn}"`
|
|
68
|
-
: `draft-contaminated "${reason.dependsOn}"`;
|
|
69
|
-
return {
|
|
70
|
-
dependsOn: reason.dependsOn,
|
|
71
|
-
id,
|
|
72
|
-
kind,
|
|
73
|
-
message: `Established ${kind} "${id}" depends on ${dependencyLabel} ` +
|
|
74
|
-
`via ${reason.via} and cannot appear in the established graph.`,
|
|
75
|
-
rule: 'draft-contamination',
|
|
76
|
-
via: reason.via,
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
const contaminationReason = (dependency, contaminatedIds) => {
|
|
80
|
-
if (contaminatedIds.has(dependency.fromId)) {
|
|
81
|
-
return undefined;
|
|
82
|
-
}
|
|
83
|
-
if (!isDraftId(dependency.toId) && !contaminatedIds.has(dependency.toId)) {
|
|
84
|
-
return undefined;
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
dependsOn: dependency.toId,
|
|
88
|
-
via: dependency.kind,
|
|
89
|
-
};
|
|
90
|
-
};
|
|
91
|
-
const markContaminatedDependency = (dependency, contaminatedIds, reasons) => {
|
|
92
|
-
const reason = contaminationReason(dependency, contaminatedIds);
|
|
93
|
-
if (reason === undefined) {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
contaminatedIds.add(dependency.fromId);
|
|
97
|
-
reasons.set(dependency.fromId, reason);
|
|
98
|
-
return true;
|
|
99
|
-
};
|
|
100
|
-
const propagateContaminatedIds = (declaredDraftIds, dependencies) => {
|
|
101
|
-
const contaminatedIds = new Set(declaredDraftIds);
|
|
102
|
-
const reasons = new Map();
|
|
103
|
-
const visit = () => {
|
|
104
|
-
if (dependencies.some((dependency) => markContaminatedDependency(dependency, contaminatedIds, reasons))) {
|
|
105
|
-
visit();
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
visit();
|
|
109
|
-
return { contaminatedIds, reasons };
|
|
110
|
-
};
|
|
111
|
-
const contaminationFindingForId = (id, declaredDraftIds, reasons, contours, trails, signals, resources) => {
|
|
112
|
-
if (declaredDraftIds.has(id)) {
|
|
113
|
-
return undefined;
|
|
114
|
-
}
|
|
115
|
-
const reason = reasons.get(id);
|
|
116
|
-
if (reason === undefined) {
|
|
117
|
-
return undefined;
|
|
118
|
-
}
|
|
119
|
-
return findingForContamination(id, nodeKind(id, contours, trails, signals, resources), reason);
|
|
120
|
-
};
|
|
121
|
-
const collectFindings = (declaredDraftIds, contaminatedIds, reasons, contours, trails, signals, resources) => [
|
|
122
|
-
...[...declaredDraftIds]
|
|
123
|
-
.toSorted()
|
|
124
|
-
.map((id) => findingForDraftId(id, nodeKind(id, contours, trails, signals, resources))),
|
|
125
|
-
...[...contaminatedIds].toSorted().flatMap((id) => {
|
|
126
|
-
const finding = contaminationFindingForId(id, declaredDraftIds, reasons, contours, trails, signals, resources);
|
|
127
|
-
return finding === undefined ? [] : [finding];
|
|
128
|
-
}),
|
|
129
|
-
];
|
|
130
|
-
const collectDependencies = (topo) => [
|
|
131
|
-
...[...topo.contours.values()].flatMap(contourDependencies),
|
|
132
|
-
...[...topo.trails.values()].flatMap(trailDependencies),
|
|
133
|
-
...[...topo.signals.values()].flatMap(signalDependencies),
|
|
134
|
-
...[...topo.resources.values()].flatMap(resourceDependencies),
|
|
135
|
-
];
|
|
136
|
-
export const deriveDraftReport = (topo) => {
|
|
137
|
-
const declaredDraftIds = collectDeclaredDraftIds(topo);
|
|
138
|
-
const dependencies = collectDependencies(topo);
|
|
139
|
-
const { contaminatedIds, reasons } = propagateContaminatedIds(declaredDraftIds, dependencies);
|
|
140
|
-
const findings = collectFindings(declaredDraftIds, contaminatedIds, reasons, topo.contours, topo.trails, topo.signals, topo.resources);
|
|
141
|
-
return {
|
|
142
|
-
contaminatedIds,
|
|
143
|
-
declaredDraftIds,
|
|
144
|
-
dependencies,
|
|
145
|
-
findings,
|
|
146
|
-
};
|
|
147
|
-
};
|
|
148
|
-
export const validateDraftFreeTopo = (topo) => {
|
|
149
|
-
const analysis = deriveDraftReport(topo);
|
|
150
|
-
if (analysis.findings.length === 0) {
|
|
151
|
-
return Result.ok();
|
|
152
|
-
}
|
|
153
|
-
return Result.err(new ValidationError(`Established topo validation failed with ${analysis.findings.length} draft issue(s)`, {
|
|
154
|
-
context: { issues: analysis.findings },
|
|
155
|
-
}));
|
|
156
|
-
};
|
|
157
|
-
//# sourceMappingURL=draft.js.map
|
package/dist/draft.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error taxonomy for @ontrails/core
|
|
3
|
-
*
|
|
4
|
-
* Provides a structured error hierarchy with category-based mapping
|
|
5
|
-
* to exit codes, HTTP status codes, and JSON-RPC error codes.
|
|
6
|
-
*/
|
|
7
|
-
export declare const errorCategories: readonly ["validation", "not_found", "conflict", "permission", "timeout", "rate_limit", "network", "internal", "auth", "cancelled"];
|
|
8
|
-
export type ErrorCategory = (typeof errorCategories)[number];
|
|
9
|
-
export declare abstract class TrailsError extends Error {
|
|
10
|
-
abstract readonly category: ErrorCategory;
|
|
11
|
-
abstract readonly retryable: boolean;
|
|
12
|
-
readonly context?: Record<string, unknown> | undefined;
|
|
13
|
-
constructor(message: string, options?: {
|
|
14
|
-
cause?: Error;
|
|
15
|
-
context?: Record<string, unknown>;
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
export declare class ValidationError extends TrailsError {
|
|
19
|
-
readonly category: "validation";
|
|
20
|
-
readonly retryable: false;
|
|
21
|
-
}
|
|
22
|
-
export declare class AmbiguousError extends TrailsError {
|
|
23
|
-
readonly category: "validation";
|
|
24
|
-
readonly retryable: false;
|
|
25
|
-
}
|
|
26
|
-
export declare class AssertionError extends TrailsError {
|
|
27
|
-
readonly category: "internal";
|
|
28
|
-
readonly retryable: false;
|
|
29
|
-
}
|
|
30
|
-
export declare class NotFoundError extends TrailsError {
|
|
31
|
-
readonly category: "not_found";
|
|
32
|
-
readonly retryable: false;
|
|
33
|
-
}
|
|
34
|
-
export declare class AlreadyExistsError extends TrailsError {
|
|
35
|
-
readonly category: "conflict";
|
|
36
|
-
readonly retryable: false;
|
|
37
|
-
}
|
|
38
|
-
export declare class ConflictError extends TrailsError {
|
|
39
|
-
readonly category: "conflict";
|
|
40
|
-
readonly retryable: false;
|
|
41
|
-
}
|
|
42
|
-
export declare class PermissionError extends TrailsError {
|
|
43
|
-
readonly category: "permission";
|
|
44
|
-
readonly retryable: false;
|
|
45
|
-
}
|
|
46
|
-
export declare class TimeoutError extends TrailsError {
|
|
47
|
-
readonly category: "timeout";
|
|
48
|
-
readonly retryable: true;
|
|
49
|
-
}
|
|
50
|
-
export declare class RateLimitError extends TrailsError {
|
|
51
|
-
readonly category: "rate_limit";
|
|
52
|
-
readonly retryable: true;
|
|
53
|
-
readonly retryAfter?: number | undefined;
|
|
54
|
-
constructor(message: string, options?: {
|
|
55
|
-
cause?: Error;
|
|
56
|
-
context?: Record<string, unknown>;
|
|
57
|
-
retryAfter?: number;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
export declare class NetworkError extends TrailsError {
|
|
61
|
-
readonly category: "network";
|
|
62
|
-
readonly retryable: true;
|
|
63
|
-
}
|
|
64
|
-
export declare class InternalError extends TrailsError {
|
|
65
|
-
readonly category: ErrorCategory;
|
|
66
|
-
readonly retryable: false;
|
|
67
|
-
}
|
|
68
|
-
export declare class DerivationError extends TrailsError {
|
|
69
|
-
readonly category: "internal";
|
|
70
|
-
readonly retryable: false;
|
|
71
|
-
}
|
|
72
|
-
export declare class AuthError extends TrailsError {
|
|
73
|
-
readonly category: "auth";
|
|
74
|
-
readonly retryable: false;
|
|
75
|
-
}
|
|
76
|
-
export declare class CancelledError extends TrailsError {
|
|
77
|
-
readonly category: "cancelled";
|
|
78
|
-
readonly retryable: false;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Returned when a detour exhausts all recovery attempts.
|
|
82
|
-
*
|
|
83
|
-
* Inherits the wrapped error's category for trailhead mapping (e.g. a
|
|
84
|
-
* `RetryExhaustedError<ConflictError>` maps to HTTP 409), but always
|
|
85
|
-
* sets `retryable = false` to prevent amplification across `ctx.cross()`
|
|
86
|
-
* boundaries or stacked layers.
|
|
87
|
-
*/
|
|
88
|
-
export declare class RetryExhaustedError<TErr extends TrailsError = TrailsError> extends InternalError {
|
|
89
|
-
readonly category: ErrorCategory;
|
|
90
|
-
readonly cause: TErr;
|
|
91
|
-
/** Number of recovery attempts made before exhaustion. */
|
|
92
|
-
readonly attempts: number;
|
|
93
|
-
/** Name of the detour whose recovery was exhausted. */
|
|
94
|
-
readonly detour: string;
|
|
95
|
-
constructor(wrapped: TErr, metadata: {
|
|
96
|
-
readonly attempts: number;
|
|
97
|
-
readonly detour: string;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
export declare const exitCodeMap: {
|
|
101
|
-
readonly auth: 9;
|
|
102
|
-
readonly cancelled: 130;
|
|
103
|
-
readonly conflict: 3;
|
|
104
|
-
readonly internal: 8;
|
|
105
|
-
readonly network: 7;
|
|
106
|
-
readonly not_found: 2;
|
|
107
|
-
readonly permission: 4;
|
|
108
|
-
readonly rate_limit: 6;
|
|
109
|
-
readonly timeout: 5;
|
|
110
|
-
readonly validation: 1;
|
|
111
|
-
};
|
|
112
|
-
export declare const statusCodeMap: {
|
|
113
|
-
readonly auth: 401;
|
|
114
|
-
readonly cancelled: 499;
|
|
115
|
-
readonly conflict: 409;
|
|
116
|
-
readonly internal: 500;
|
|
117
|
-
readonly network: 502;
|
|
118
|
-
readonly not_found: 404;
|
|
119
|
-
readonly permission: 403;
|
|
120
|
-
readonly rate_limit: 429;
|
|
121
|
-
readonly timeout: 504;
|
|
122
|
-
readonly validation: 400;
|
|
123
|
-
};
|
|
124
|
-
export declare const jsonRpcCodeMap: {
|
|
125
|
-
readonly auth: -32600;
|
|
126
|
-
readonly cancelled: -32603;
|
|
127
|
-
readonly conflict: -32603;
|
|
128
|
-
readonly internal: -32603;
|
|
129
|
-
readonly network: -32603;
|
|
130
|
-
readonly not_found: -32601;
|
|
131
|
-
readonly permission: -32600;
|
|
132
|
-
readonly rate_limit: -32603;
|
|
133
|
-
readonly timeout: -32603;
|
|
134
|
-
readonly validation: -32602;
|
|
135
|
-
};
|
|
136
|
-
export declare const retryableMap: Record<ErrorCategory, boolean>;
|
|
137
|
-
/** Type guard: narrows unknown to TrailsError */
|
|
138
|
-
export declare const isTrailsError: (error?: unknown) => error is TrailsError;
|
|
139
|
-
/** Returns true if the error is retryable (TrailsError with retryable category). */
|
|
140
|
-
export declare const isRetryable: (error: Error) => boolean;
|
|
141
|
-
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|