@cat-factory/contracts 0.325.0 → 0.327.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/dist/board-projection.d.ts +35 -0
- package/dist/board-projection.d.ts.map +1 -0
- package/dist/board-projection.js +47 -0
- package/dist/board-projection.js.map +1 -0
- package/dist/environments-kubernetes.d.ts +3 -3
- package/dist/environments-kubernetes.js +1 -1
- package/dist/environments.d.ts +13 -13
- package/dist/environments.js +1 -1
- package/dist/execution.d.ts +28 -2
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +16 -0
- package/dist/execution.js.map +1 -1
- package/dist/followUp.d.ts +69 -5
- package/dist/followUp.d.ts.map +1 -1
- package/dist/followUp.js +54 -2
- package/dist/followUp.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/pr-report.d.ts +130 -1
- package/dist/pr-report.d.ts.map +1 -1
- package/dist/pr-report.js +69 -1
- package/dist/pr-report.js.map +1 -1
- package/dist/public-decisions.d.ts +33 -4
- package/dist/public-decisions.d.ts.map +1 -1
- package/dist/public-decisions.js +7 -0
- package/dist/public-decisions.js.map +1 -1
- package/dist/routes/agent-runs.d.ts +8 -2
- package/dist/routes/agent-runs.d.ts.map +1 -1
- package/dist/routes/bug-hunt.d.ts +8 -2
- package/dist/routes/bug-hunt.d.ts.map +1 -1
- package/dist/routes/execution.d.ts +1266 -9
- package/dist/routes/execution.d.ts.map +1 -1
- package/dist/routes/execution.js +15 -0
- package/dist/routes/execution.js.map +1 -1
- package/dist/routes/followUp.d.ts +11 -5
- package/dist/routes/followUp.d.ts.map +1 -1
- package/dist/routes/human-review.d.ts +4 -1
- package/dist/routes/human-review.d.ts.map +1 -1
- package/dist/routes/human-test.d.ts +20 -5
- package/dist/routes/human-test.d.ts.map +1 -1
- package/dist/routes/public-decisions.d.ts +83 -41
- package/dist/routes/public-decisions.d.ts.map +1 -1
- package/dist/routes/public-evidence.d.ts +20 -0
- package/dist/routes/public-evidence.d.ts.map +1 -1
- package/dist/routes/visual-confirm.d.ts +12 -3
- package/dist/routes/visual-confirm.d.ts.map +1 -1
- package/dist/routes/workspaces.d.ts +8 -2
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/snapshot.d.ts +4 -1
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/wildcard-dns.d.ts +66 -0
- package/dist/wildcard-dns.d.ts.map +1 -0
- package/dist/wildcard-dns.js +215 -0
- package/dist/wildcard-dns.js.map +1 -0
- package/package.json +1 -1
|
@@ -33,6 +33,7 @@ export declare const approveVisualConfirmContract: {
|
|
|
33
33
|
}, undefined>;
|
|
34
34
|
}, undefined>;
|
|
35
35
|
readonly 200: v.ObjectSchema<{
|
|
36
|
+
readonly projected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
36
37
|
readonly id: v.StringSchema<undefined>;
|
|
37
38
|
readonly blockId: v.StringSchema<undefined>;
|
|
38
39
|
readonly pipelineId: v.StringSchema<undefined>;
|
|
@@ -411,10 +412,11 @@ export declare const approveVisualConfirmContract: {
|
|
|
411
412
|
readonly title: v.StringSchema<undefined>;
|
|
412
413
|
readonly detail: v.StringSchema<undefined>;
|
|
413
414
|
readonly suggestedAction: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
414
|
-
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
415
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "closed", "dismissed"], undefined>;
|
|
415
416
|
readonly answer: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
416
417
|
readonly sentToCoder: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
417
418
|
readonly dismissedByPolicy: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
419
|
+
readonly sendBackDropped: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
418
420
|
readonly ticketExternalId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
419
421
|
readonly ticketUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
420
422
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
@@ -725,6 +727,7 @@ export declare const approveVisualConfirmContract: {
|
|
|
725
727
|
readonly output: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
726
728
|
readonly outputIsRendered: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
727
729
|
readonly custom: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
730
|
+
readonly hasOutput: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
728
731
|
readonly model: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
729
732
|
readonly subscriptionTokenId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
730
733
|
readonly initiatedByUserId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -1254,6 +1257,7 @@ export declare const requestVisualConfirmFixContract: {
|
|
|
1254
1257
|
}, undefined>;
|
|
1255
1258
|
}, undefined>;
|
|
1256
1259
|
readonly 200: v.ObjectSchema<{
|
|
1260
|
+
readonly projected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1257
1261
|
readonly id: v.StringSchema<undefined>;
|
|
1258
1262
|
readonly blockId: v.StringSchema<undefined>;
|
|
1259
1263
|
readonly pipelineId: v.StringSchema<undefined>;
|
|
@@ -1632,10 +1636,11 @@ export declare const requestVisualConfirmFixContract: {
|
|
|
1632
1636
|
readonly title: v.StringSchema<undefined>;
|
|
1633
1637
|
readonly detail: v.StringSchema<undefined>;
|
|
1634
1638
|
readonly suggestedAction: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
1635
|
-
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
1639
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "closed", "dismissed"], undefined>;
|
|
1636
1640
|
readonly answer: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
1637
1641
|
readonly sentToCoder: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1638
1642
|
readonly dismissedByPolicy: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1643
|
+
readonly sendBackDropped: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1639
1644
|
readonly ticketExternalId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
1640
1645
|
readonly ticketUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
1641
1646
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
@@ -1946,6 +1951,7 @@ export declare const requestVisualConfirmFixContract: {
|
|
|
1946
1951
|
readonly output: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1947
1952
|
readonly outputIsRendered: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1948
1953
|
readonly custom: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
1954
|
+
readonly hasOutput: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1949
1955
|
readonly model: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1950
1956
|
readonly subscriptionTokenId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1951
1957
|
readonly initiatedByUserId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -2473,6 +2479,7 @@ export declare const recaptureVisualConfirmContract: {
|
|
|
2473
2479
|
}, undefined>;
|
|
2474
2480
|
}, undefined>;
|
|
2475
2481
|
readonly 200: v.ObjectSchema<{
|
|
2482
|
+
readonly projected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
2476
2483
|
readonly id: v.StringSchema<undefined>;
|
|
2477
2484
|
readonly blockId: v.StringSchema<undefined>;
|
|
2478
2485
|
readonly pipelineId: v.StringSchema<undefined>;
|
|
@@ -2851,10 +2858,11 @@ export declare const recaptureVisualConfirmContract: {
|
|
|
2851
2858
|
readonly title: v.StringSchema<undefined>;
|
|
2852
2859
|
readonly detail: v.StringSchema<undefined>;
|
|
2853
2860
|
readonly suggestedAction: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
2854
|
-
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
2861
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "closed", "dismissed"], undefined>;
|
|
2855
2862
|
readonly answer: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
2856
2863
|
readonly sentToCoder: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
2857
2864
|
readonly dismissedByPolicy: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
2865
|
+
readonly sendBackDropped: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
2858
2866
|
readonly ticketExternalId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
2859
2867
|
readonly ticketUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
2860
2868
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
@@ -3165,6 +3173,7 @@ export declare const recaptureVisualConfirmContract: {
|
|
|
3165
3173
|
readonly output: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
3166
3174
|
readonly outputIsRendered: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
3167
3175
|
readonly custom: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
3176
|
+
readonly hasOutput: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
3168
3177
|
readonly model: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
3169
3178
|
readonly subscriptionTokenId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
3170
3179
|
readonly initiatedByUserId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-confirm.d.ts","sourceRoot":"","sources":["../../src/routes/visual-confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B,eAAO,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"visual-confirm.d.ts","sourceRoot":"","sources":["../../src/routes/visual-confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMvC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM1C,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMzC,CAAA"}
|
|
@@ -571,6 +571,7 @@ export declare const createWorkspaceContract: {
|
|
|
571
571
|
readonly isUnattendedDefault: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
572
572
|
}, undefined>, undefined>;
|
|
573
573
|
readonly executions: v.ArraySchema<v.ObjectSchema<{
|
|
574
|
+
readonly projected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
574
575
|
readonly id: v.StringSchema<undefined>;
|
|
575
576
|
readonly blockId: v.StringSchema<undefined>;
|
|
576
577
|
readonly pipelineId: v.StringSchema<undefined>;
|
|
@@ -949,10 +950,11 @@ export declare const createWorkspaceContract: {
|
|
|
949
950
|
readonly title: v.StringSchema<undefined>;
|
|
950
951
|
readonly detail: v.StringSchema<undefined>;
|
|
951
952
|
readonly suggestedAction: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
952
|
-
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
953
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "closed", "dismissed"], undefined>;
|
|
953
954
|
readonly answer: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
954
955
|
readonly sentToCoder: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
955
956
|
readonly dismissedByPolicy: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
957
|
+
readonly sendBackDropped: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
956
958
|
readonly ticketExternalId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
957
959
|
readonly ticketUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
958
960
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
@@ -1263,6 +1265,7 @@ export declare const createWorkspaceContract: {
|
|
|
1263
1265
|
readonly output: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1264
1266
|
readonly outputIsRendered: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1265
1267
|
readonly custom: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
1268
|
+
readonly hasOutput: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1266
1269
|
readonly model: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1267
1270
|
readonly subscriptionTokenId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1268
1271
|
readonly initiatedByUserId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -4171,6 +4174,7 @@ export declare const getWorkspaceContract: {
|
|
|
4171
4174
|
readonly isUnattendedDefault: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
4172
4175
|
}, undefined>, undefined>;
|
|
4173
4176
|
readonly executions: v.ArraySchema<v.ObjectSchema<{
|
|
4177
|
+
readonly projected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
4174
4178
|
readonly id: v.StringSchema<undefined>;
|
|
4175
4179
|
readonly blockId: v.StringSchema<undefined>;
|
|
4176
4180
|
readonly pipelineId: v.StringSchema<undefined>;
|
|
@@ -4549,10 +4553,11 @@ export declare const getWorkspaceContract: {
|
|
|
4549
4553
|
readonly title: v.StringSchema<undefined>;
|
|
4550
4554
|
readonly detail: v.StringSchema<undefined>;
|
|
4551
4555
|
readonly suggestedAction: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
4552
|
-
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
4556
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "closed", "dismissed"], undefined>;
|
|
4553
4557
|
readonly answer: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
4554
4558
|
readonly sentToCoder: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
4555
4559
|
readonly dismissedByPolicy: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
4560
|
+
readonly sendBackDropped: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
4556
4561
|
readonly ticketExternalId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
4557
4562
|
readonly ticketUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
4558
4563
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
@@ -4863,6 +4868,7 @@ export declare const getWorkspaceContract: {
|
|
|
4863
4868
|
readonly output: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4864
4869
|
readonly outputIsRendered: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
4865
4870
|
readonly custom: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
4871
|
+
readonly hasOutput: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
4866
4872
|
readonly model: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4867
4873
|
readonly subscriptionTokenId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4868
4874
|
readonly initiatedByUserId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/routes/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;aAGlC,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAI7E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIjC,CAAA;AAEF,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/routes/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;aAGlC,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAI7E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIjC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA"}
|
package/dist/snapshot.d.ts
CHANGED
|
@@ -509,6 +509,7 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
|
|
|
509
509
|
readonly isUnattendedDefault: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
510
510
|
}, undefined>, undefined>;
|
|
511
511
|
readonly executions: v.ArraySchema<v.ObjectSchema<{
|
|
512
|
+
readonly projected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
512
513
|
readonly id: v.StringSchema<undefined>;
|
|
513
514
|
readonly blockId: v.StringSchema<undefined>;
|
|
514
515
|
readonly pipelineId: v.StringSchema<undefined>;
|
|
@@ -887,10 +888,11 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
|
|
|
887
888
|
readonly title: v.StringSchema<undefined>;
|
|
888
889
|
readonly detail: v.StringSchema<undefined>;
|
|
889
890
|
readonly suggestedAction: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
890
|
-
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
|
|
891
|
+
readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "closed", "dismissed"], undefined>;
|
|
891
892
|
readonly answer: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
892
893
|
readonly sentToCoder: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
893
894
|
readonly dismissedByPolicy: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
895
|
+
readonly sendBackDropped: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
894
896
|
readonly ticketExternalId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
895
897
|
readonly ticketUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
896
898
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
@@ -1201,6 +1203,7 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
|
|
|
1201
1203
|
readonly output: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1202
1204
|
readonly outputIsRendered: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1203
1205
|
readonly custom: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
1206
|
+
readonly hasOutput: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1204
1207
|
readonly model: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1205
1208
|
readonly subscriptionTokenId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1206
1209
|
readonly initiatedByUserId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
package/dist/snapshot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyC5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE7E,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB;;;IAGlC;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyC5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE7E,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB;;;IAGlC;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;OAGG;;;;IAEH;;;;;;OAMG;;;;;;IAEH;;;;OAIG;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;IAEH;;;;;;;;;;OAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;;;;OAWG;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;;OASG;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;IAEH;;;;;;;;;OASG;;;;QA5PH;;;;;WAKG;;;;;;QALH;;;;;WAKG;;;IA0PH;;;;;;;;;;;;;OAaG;;IAEH;;;;;;;;;;;;;;;;;;OAkBG;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;IAEH;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;;;;;;;;;;;;;OAaG;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;;OAKG;;;;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wildcard-DNS services this rule knows, as they appear at the END of a hostname.
|
|
3
|
+
*
|
|
4
|
+
* An allow-list rather than a pattern: the mis-parse is a property of how THESE resolvers read a
|
|
5
|
+
* name, so a host that merely looks similar is none of this rule's business and must not be
|
|
6
|
+
* refused on its behalf.
|
|
7
|
+
*/
|
|
8
|
+
export declare const WILDCARD_DNS_SUFFIXES: readonly ['nip.io', 'sslip.io'];
|
|
9
|
+
export type WildcardDnsSuffix = (typeof WILDCARD_DNS_SUFFIXES)[number];
|
|
10
|
+
/** The wildcard-DNS service a host is served by, or `null` for an ordinary hostname. */
|
|
11
|
+
export declare function wildcardDnsSuffix(host: string): WildcardDnsSuffix | null;
|
|
12
|
+
/**
|
|
13
|
+
* Every four-octet address embedded in a host, left to right, in dotted form.
|
|
14
|
+
*
|
|
15
|
+
* The addresses alone, for a caller that only wants to know what a name carries;
|
|
16
|
+
* {@link parseWildcardHost} owns what makes one.
|
|
17
|
+
*/
|
|
18
|
+
export declare function wildcardDnsWindows(host: string): string[];
|
|
19
|
+
/**
|
|
20
|
+
* A host whose wildcard-DNS answer is not the address its trailing labels name.
|
|
21
|
+
*
|
|
22
|
+
* `resolved` is what a lookup returns and `trailing` is what whoever configured the template
|
|
23
|
+
* meant, which is the pair a remedy needs: neither alone explains why a correct-looking URL
|
|
24
|
+
* reaches the wrong machine.
|
|
25
|
+
*/
|
|
26
|
+
export type WildcardDnsShift = {
|
|
27
|
+
host: string;
|
|
28
|
+
suffix: WildcardDnsSuffix;
|
|
29
|
+
/** What the resolver answers: the leftmost window. */
|
|
30
|
+
resolved: string;
|
|
31
|
+
/** The address the fixed tail of the name carries: the rightmost window. */
|
|
32
|
+
trailing: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Grade a RENDERED host, answering `null` when there is nothing to report.
|
|
36
|
+
*
|
|
37
|
+
* `null` covers three different innocent cases on purpose, because none of them is actionable:
|
|
38
|
+
* an ordinary hostname, a wildcard host holding exactly one address (whatever it is, that is the
|
|
39
|
+
* one that answers), and a host whose leftmost window IS the trailing one. Only a name carrying
|
|
40
|
+
* two DIFFERENT addresses can send a caller somewhere it did not ask for.
|
|
41
|
+
*/
|
|
42
|
+
export declare function describeWildcardDnsShift(host: string): WildcardDnsShift | null;
|
|
43
|
+
/**
|
|
44
|
+
* The one wording of this failure, so the provider's refusal and the preflight's remedy do not
|
|
45
|
+
* drift into two accounts of the same thing.
|
|
46
|
+
*
|
|
47
|
+
* It names the rendered host FIRST: the reader is holding a template and a namespace, and the
|
|
48
|
+
* composition of the two is the thing they have never seen written down.
|
|
49
|
+
*/
|
|
50
|
+
export declare function describeWildcardDnsShiftProblem(shift: WildcardDnsShift): string;
|
|
51
|
+
/**
|
|
52
|
+
* How to make a mis-resolving host resolve, given that the address is not the part that is wrong.
|
|
53
|
+
*
|
|
54
|
+
* **Every remedy is VERIFIED against the rule above before it is offered**, rather than derived
|
|
55
|
+
* from the mere fact that a shift exists. The respelling used to print "write the address with
|
|
56
|
+
* dashes" unconditionally, which for a host already written `…-5-127-0-0-1.nip.io` described the
|
|
57
|
+
* broken configuration back to the person who wrote it: a prefix extends a dashed run exactly as
|
|
58
|
+
* it extends a dotted one, and only MIXING the two breaks it. So the candidate fix is now
|
|
59
|
+
* computed, re-graded, and dropped when it would not have helped.
|
|
60
|
+
*
|
|
61
|
+
* Ordered by how little each one disturbs: the digits are almost always a pull-request number
|
|
62
|
+
* doing necessary work (a namespace has to be unique per environment), so the first two fixes
|
|
63
|
+
* keep them and break the SEPARATOR that lets them be read as an octet.
|
|
64
|
+
*/
|
|
65
|
+
export declare function wildcardDnsShiftRemedies(shift: WildcardDnsShift): readonly string[];
|
|
66
|
+
//# sourceMappingURL=wildcard-dns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wildcard-dns.d.ts","sourceRoot":"","sources":["../src/wildcard-dns.ts"],"names":[],"mappings":"AAoCA;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,YAAI,QAAQ,EAAE,UAAU,CAAU,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtE,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAExE;AA0ED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEzD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,iBAAiB,CAAA;IACzB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAY9E;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAO/E;AA+CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAyBnF"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Wildcard-DNS hostnames, and the way they mis-resolve when a name is prefixed onto them.
|
|
3
|
+
//
|
|
4
|
+
// `nip.io` and `sslip.io` answer any name that CONTAINS an IPv4 address, which is what makes
|
|
5
|
+
// `<namespace>.127.0.0.1.nip.io` a working ephemeral-environment URL on a machine with no DNS to
|
|
6
|
+
// administer. The trap is in HOW they find that address: the resolver scans the name for a run of
|
|
7
|
+
// four octets and answers the LEFTMOST one it finds, treating `.` and `-` as equally valid
|
|
8
|
+
// separators. A prefix ending in a separator plus digits therefore contributes a window of its
|
|
9
|
+
// own, and being further left, it wins:
|
|
10
|
+
//
|
|
11
|
+
// cf-acc-5.127.0.0.1.nip.io -> 5.127.0.0 (a stranger's network)
|
|
12
|
+
// app.127.0.0.1.nip.io -> 127.0.0.1 (the control, one label different)
|
|
13
|
+
//
|
|
14
|
+
// Both halves of that pairing were things the platform itself produced. The per-PR namespace
|
|
15
|
+
// default ended in `-<pullNumber>`, which has that shape for every pull request ever opened, and
|
|
16
|
+
// `backend/docs/local-k3s-environments.md` recommends exactly this host shape. Composed, they
|
|
17
|
+
// yielded an environment that rolled out, reported `ready`, published an address pointing
|
|
18
|
+
// somewhere else entirely, and died at the `tester` step forty minutes later with a connection
|
|
19
|
+
// error naming nothing that would lead anyone back to here. The defaults now render `pr<n>`, and
|
|
20
|
+
// this rule is what stops an operator's own templates re-composing the same name.
|
|
21
|
+
//
|
|
22
|
+
// **The rule is exact, not a heuristic**, which is what lets a caller REFUSE on it: every clause
|
|
23
|
+
// below was read off live resolutions rather than off nip.io's source (the fixtures in the test
|
|
24
|
+
// beside this file are those lookups). An octet rejects a leading zero and anything above 255, a
|
|
25
|
+
// window's three separators must be the same character, and a window has to start and end on a
|
|
26
|
+
// label boundary. Each of those is a case where the name still resolves correctly, so a looser
|
|
27
|
+
// rule here would refuse a working deployment.
|
|
28
|
+
//
|
|
29
|
+
// It lives in contracts because it grades a value contracts already owns (`hostTemplate` on the
|
|
30
|
+
// Kubernetes URL source, `environments-kubernetes.ts`) and more than one side has to agree about
|
|
31
|
+
// it: the environment provider refuses a provision whose URL would mis-resolve, and the
|
|
32
|
+
// acceptance suite's preflight grades its configured namespace/host pair before a pass spends
|
|
33
|
+
// anything. The SPA's two engine forms are the natural third caller and do not use it yet; the
|
|
34
|
+
// point of putting it here is that when they do, they call it rather than restate it.
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
/**
|
|
37
|
+
* The wildcard-DNS services this rule knows, as they appear at the END of a hostname.
|
|
38
|
+
*
|
|
39
|
+
* An allow-list rather than a pattern: the mis-parse is a property of how THESE resolvers read a
|
|
40
|
+
* name, so a host that merely looks similar is none of this rule's business and must not be
|
|
41
|
+
* refused on its behalf.
|
|
42
|
+
*/
|
|
43
|
+
export const WILDCARD_DNS_SUFFIXES = ['nip.io', 'sslip.io'];
|
|
44
|
+
/** The wildcard-DNS service a host is served by, or `null` for an ordinary hostname. */
|
|
45
|
+
export function wildcardDnsSuffix(host) {
|
|
46
|
+
return parseWildcardHost(host).suffix;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Whether a label is an octet AS THESE RESOLVERS READ ONE.
|
|
50
|
+
*
|
|
51
|
+
* The two rejections are load-bearing and both were confirmed by lookup: `cf-acc-05.127.0.0.1`
|
|
52
|
+
* and `foo-999.127.0.0.1` each resolve to 127.0.0.1, because a leading zero and a value above 255
|
|
53
|
+
* are not octets, so neither prefix opens a window. Accepting them here would refuse two host
|
|
54
|
+
* shapes that work.
|
|
55
|
+
*/
|
|
56
|
+
function isOctet(text) {
|
|
57
|
+
return /^(?:0|[1-9][0-9]{0,2})$/.test(text) && Number(text) <= 255;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Read a host once, finding every four-octet address it embeds, left to right, as the resolver
|
|
61
|
+
* would.
|
|
62
|
+
*
|
|
63
|
+
* Splitting on the separators is what enforces the label boundary: `pr5` and `5x` are single
|
|
64
|
+
* tokens and neither is an octet, which is why `cf-acc-pr5.127.0.0.1.nip.io` resolves correctly
|
|
65
|
+
* where `cf-acc-5.127.0.0.1.nip.io` does not. Windows OVERLAP by design (`1.2.3.4.5` holds both
|
|
66
|
+
* `1.2.3.4` and `2.3.4.5`), because the resolver's own scan does.
|
|
67
|
+
*/
|
|
68
|
+
function parseWildcardHost(host) {
|
|
69
|
+
const normalised = host.trim().toLowerCase().replace(/\.$/, '');
|
|
70
|
+
const suffix = WILDCARD_DNS_SUFFIXES.find((entry) => normalised.endsWith(`.${entry}`)) ?? null;
|
|
71
|
+
const scanned = suffix ? normalised.slice(0, -(suffix.length + 1)) : normalised;
|
|
72
|
+
const parts = scanned.split(/([.-])/);
|
|
73
|
+
const windows = [];
|
|
74
|
+
for (let i = 0; i + 6 < parts.length; i += 2) {
|
|
75
|
+
const labels = [parts[i], parts[i + 2], parts[i + 4], parts[i + 6]];
|
|
76
|
+
if (labels.some((label) => label === undefined || !isOctet(label)))
|
|
77
|
+
continue;
|
|
78
|
+
// A window's three separators must be the SAME character. `cf-acc-5.127-0-0-1.nip.io`
|
|
79
|
+
// resolves to 127.0.0.1 precisely because the run starting at `5` mixes `.` and `-`, so the
|
|
80
|
+
// resolver does not read it as an address at all.
|
|
81
|
+
const separators = [parts[i + 1], parts[i + 3], parts[i + 5]];
|
|
82
|
+
const separator = separators[0];
|
|
83
|
+
if (new Set(separators).size !== 1)
|
|
84
|
+
continue;
|
|
85
|
+
if (separator !== '.' && separator !== '-')
|
|
86
|
+
continue;
|
|
87
|
+
windows.push({ address: labels.join('.'), separator, start: i });
|
|
88
|
+
}
|
|
89
|
+
return { host: normalised, suffix, parts, windows };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Every four-octet address embedded in a host, left to right, in dotted form.
|
|
93
|
+
*
|
|
94
|
+
* The addresses alone, for a caller that only wants to know what a name carries;
|
|
95
|
+
* {@link parseWildcardHost} owns what makes one.
|
|
96
|
+
*/
|
|
97
|
+
export function wildcardDnsWindows(host) {
|
|
98
|
+
return parseWildcardHost(host).windows.map((window) => window.address);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Grade a RENDERED host, answering `null` when there is nothing to report.
|
|
102
|
+
*
|
|
103
|
+
* `null` covers three different innocent cases on purpose, because none of them is actionable:
|
|
104
|
+
* an ordinary hostname, a wildcard host holding exactly one address (whatever it is, that is the
|
|
105
|
+
* one that answers), and a host whose leftmost window IS the trailing one. Only a name carrying
|
|
106
|
+
* two DIFFERENT addresses can send a caller somewhere it did not ask for.
|
|
107
|
+
*/
|
|
108
|
+
export function describeWildcardDnsShift(host) {
|
|
109
|
+
const parsed = parseWildcardHost(host);
|
|
110
|
+
if (!parsed.suffix)
|
|
111
|
+
return null;
|
|
112
|
+
const resolved = parsed.windows[0];
|
|
113
|
+
const trailing = parsed.windows[parsed.windows.length - 1];
|
|
114
|
+
if (!resolved || !trailing || resolved.address === trailing.address)
|
|
115
|
+
return null;
|
|
116
|
+
return {
|
|
117
|
+
host: parsed.host,
|
|
118
|
+
suffix: parsed.suffix,
|
|
119
|
+
resolved: resolved.address,
|
|
120
|
+
trailing: trailing.address,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The one wording of this failure, so the provider's refusal and the preflight's remedy do not
|
|
125
|
+
* drift into two accounts of the same thing.
|
|
126
|
+
*
|
|
127
|
+
* It names the rendered host FIRST: the reader is holding a template and a namespace, and the
|
|
128
|
+
* composition of the two is the thing they have never seen written down.
|
|
129
|
+
*/
|
|
130
|
+
export function describeWildcardDnsShiftProblem(shift) {
|
|
131
|
+
return (`'${shift.host}' resolves to ${shift.resolved}, not ${shift.trailing}: ${shift.suffix} reads ` +
|
|
132
|
+
`the LEFTMOST four-octet run in a name and treats '.' and '-' alike, so the label before ` +
|
|
133
|
+
`${shift.trailing} ends in a separator plus digits and opens an earlier address. Anything ` +
|
|
134
|
+
`reaching this URL reaches ${shift.resolved}, which is not this cluster`);
|
|
135
|
+
}
|
|
136
|
+
/** The trailing address as it is WRITTEN in `host` (dotted or dashed), for quoting back. */
|
|
137
|
+
function trailingAddressAsWritten(host) {
|
|
138
|
+
const { windows } = parseWildcardHost(host);
|
|
139
|
+
const trailing = windows[windows.length - 1];
|
|
140
|
+
return trailing ? trailing.address.replace(/\./g, trailing.separator) : null;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The same host with the trailing address spelled using the OTHER separator, or `null` when the
|
|
144
|
+
* host carries no address to respell.
|
|
145
|
+
*
|
|
146
|
+
* What makes a respelling a fix is the uniform-separator rule: a prefix can only extend a run it
|
|
147
|
+
* shares a separator with, so flipping the address's own separator breaks the earlier window
|
|
148
|
+
* without touching the prefix. WHICH direction that is depends on what the operator already
|
|
149
|
+
* wrote, which is the part the remedy used to assume rather than read.
|
|
150
|
+
*/
|
|
151
|
+
function respellTrailingAddress(host) {
|
|
152
|
+
const parsed = parseWildcardHost(host);
|
|
153
|
+
const trailing = parsed.windows[parsed.windows.length - 1];
|
|
154
|
+
if (!trailing)
|
|
155
|
+
return null;
|
|
156
|
+
const flipped = trailing.separator === '.' ? '-' : '.';
|
|
157
|
+
const parts = [...parsed.parts];
|
|
158
|
+
parts[trailing.start + 1] = flipped;
|
|
159
|
+
parts[trailing.start + 3] = flipped;
|
|
160
|
+
parts[trailing.start + 5] = flipped;
|
|
161
|
+
const scanned = parts.join('');
|
|
162
|
+
return parsed.suffix ? `${scanned}.${parsed.suffix}` : scanned;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Whether the answering window runs INTO the trailing address rather than sitting entirely ahead
|
|
166
|
+
* of it.
|
|
167
|
+
*
|
|
168
|
+
* Overlapping is the ordinary case, and the one "end the prefix with a letter" addresses: the
|
|
169
|
+
* prefix's last label became the address's first octet. Disjoint means the prefix carries a
|
|
170
|
+
* complete address of its own, which no separator change removes, so telling someone to re-spell
|
|
171
|
+
* anything would be advice that cannot work.
|
|
172
|
+
*/
|
|
173
|
+
function shiftedWindowsOverlap(host) {
|
|
174
|
+
const { windows } = parseWildcardHost(host);
|
|
175
|
+
const first = windows[0];
|
|
176
|
+
const last = windows[windows.length - 1];
|
|
177
|
+
return first !== undefined && last !== undefined && first.start + 6 >= last.start;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* How to make a mis-resolving host resolve, given that the address is not the part that is wrong.
|
|
181
|
+
*
|
|
182
|
+
* **Every remedy is VERIFIED against the rule above before it is offered**, rather than derived
|
|
183
|
+
* from the mere fact that a shift exists. The respelling used to print "write the address with
|
|
184
|
+
* dashes" unconditionally, which for a host already written `…-5-127-0-0-1.nip.io` described the
|
|
185
|
+
* broken configuration back to the person who wrote it: a prefix extends a dashed run exactly as
|
|
186
|
+
* it extends a dotted one, and only MIXING the two breaks it. So the candidate fix is now
|
|
187
|
+
* computed, re-graded, and dropped when it would not have helped.
|
|
188
|
+
*
|
|
189
|
+
* Ordered by how little each one disturbs: the digits are almost always a pull-request number
|
|
190
|
+
* doing necessary work (a namespace has to be unique per environment), so the first two fixes
|
|
191
|
+
* keep them and break the SEPARATOR that lets them be read as an octet.
|
|
192
|
+
*/
|
|
193
|
+
export function wildcardDnsShiftRemedies(shift) {
|
|
194
|
+
const remedies = [
|
|
195
|
+
shiftedWindowsOverlap(shift.host)
|
|
196
|
+
? `End the prefix with a letter rather than a separator and digits: a namespace template ` +
|
|
197
|
+
`of '…-pr{{pullNumber}}' renders 'pr5', which is not an octet, where '…-{{pullNumber}}' ` +
|
|
198
|
+
`renders '5', which is.`
|
|
199
|
+
: `Take the address out of the prefix: '${shift.resolved}' is a complete four-octet run ` +
|
|
200
|
+
`standing on its own ahead of '${shift.trailing}', so no change to what separates them ` +
|
|
201
|
+
`can stop it answering first.`,
|
|
202
|
+
];
|
|
203
|
+
const respelled = respellTrailingAddress(shift.host);
|
|
204
|
+
const written = trailingAddressAsWritten(shift.host);
|
|
205
|
+
if (respelled !== null && written !== null && describeWildcardDnsShift(respelled) === null) {
|
|
206
|
+
remedies.push(`Or spell the address with the other separator ` +
|
|
207
|
+
`('${trailingAddressAsWritten(respelled)}.${shift.suffix}' rather than ` +
|
|
208
|
+
`'${written}.${shift.suffix}'): a four-octet run has to use ONE separator throughout, so ` +
|
|
209
|
+
`a prefix joined on with the other one can no longer extend it.`);
|
|
210
|
+
}
|
|
211
|
+
remedies.push(`Or serve the environments from a host you control, where the address is in a DNS record ` +
|
|
212
|
+
`rather than in the name.`);
|
|
213
|
+
return remedies;
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=wildcard-dns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wildcard-dns.js","sourceRoot":"","sources":["../src/wildcard-dns.ts"],"names":[],"mappings":"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"}
|