@cat-factory/kernel 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/domain/environment-reachability.logic.d.ts +131 -0
- package/dist/domain/environment-reachability.logic.d.ts.map +1 -0
- package/dist/domain/environment-reachability.logic.js +277 -0
- package/dist/domain/environment-reachability.logic.js.map +1 -0
- package/dist/domain/types.d.ts +1 -1
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/ports/agent-executor.d.ts +35 -1
- package/dist/ports/agent-executor.d.ts.map +1 -1
- package/dist/ports/agent-executor.js.map +1 -1
- package/dist/ports/environment-provider.d.ts +15 -1
- package/dist/ports/environment-provider.d.ts.map +1 -1
- package/dist/ports/environment-repositories.d.ts +16 -1
- package/dist/ports/environment-repositories.d.ts.map +1 -1
- package/dist/ports/index.d.ts +2 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/route-probe.d.ts +68 -0
- package/dist/ports/route-probe.d.ts.map +1 -0
- package/dist/ports/route-probe.js +2 -0
- package/dist/ports/route-probe.js.map +1 -0
- package/dist/ports/runner-transport.d.ts +32 -6
- package/dist/ports/runner-transport.d.ts.map +1 -1
- package/dist/ports/runner-transport.js.map +1 -1
- package/dist/shared/environment-host-bridge.logic.d.ts +100 -6
- package/dist/shared/environment-host-bridge.logic.d.ts.map +1 -1
- package/dist/shared/environment-host-bridge.logic.js +113 -6
- package/dist/shared/environment-host-bridge.logic.js.map +1 -1
- package/dist/shared/ip-host.logic.d.ts +16 -0
- package/dist/shared/ip-host.logic.d.ts.map +1 -1
- package/dist/shared/ip-host.logic.js +52 -0
- package/dist/shared/ip-host.logic.js.map +1 -1
- package/package.json +2 -2
|
@@ -26,28 +26,122 @@ export declare function resolvesToLocalMachine(hostname: string): boolean;
|
|
|
26
26
|
* replaced, for a `--add-host` the container will not honour.
|
|
27
27
|
*/
|
|
28
28
|
export type LocalMachineHostBridge =
|
|
29
|
-
/** Not this machine. The container reaches it as written
|
|
29
|
+
/** Not this machine, and nowhere else to point it. The container reaches it as written. */
|
|
30
30
|
{
|
|
31
31
|
kind: 'none';
|
|
32
32
|
}
|
|
33
|
-
/** A NAME an added hosts-file entry re-points
|
|
33
|
+
/** A NAME an added hosts-file entry re-points, and what to point it AT. */
|
|
34
34
|
| {
|
|
35
35
|
kind: 'bridge';
|
|
36
36
|
host: string;
|
|
37
|
+
target: HostBridgeTarget;
|
|
37
38
|
}
|
|
38
|
-
/**
|
|
39
|
+
/** No hosts-file entry can make this reachable, and {@link UnbridgeableCause} says why. */
|
|
39
40
|
| {
|
|
40
41
|
kind: 'unbridgeable';
|
|
41
42
|
host: string;
|
|
43
|
+
cause: UnbridgeableCause;
|
|
42
44
|
};
|
|
43
45
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
+
* Why a name cannot be bridged, because the two causes have different remedies and a transport
|
|
47
|
+
* that reported them with one sentence would send an operator to the wrong fix.
|
|
48
|
+
*
|
|
49
|
+
* - `local_machine` the URL names THIS machine by a spelling no hosts entry re-points
|
|
50
|
+
* (`localhost`, a bare IP literal). Remedy: publish the environment on a
|
|
51
|
+
* name that resolves to the host, or run the step natively.
|
|
52
|
+
* - `unusable_address` the platform PROVED the name does not carry and that an address does, and
|
|
53
|
+
* that address cannot be installed: it is one no bridge may name, or the
|
|
54
|
+
* URL's own host is a literal nothing looks up. Remedy: publish a name and
|
|
55
|
+
* an address a bridge may name. This one is a run heading for failure with
|
|
56
|
+
* a proof on the record saying the environment is reachable, which is
|
|
57
|
+
* evidence pointing further from the cause than no bridge at all.
|
|
58
|
+
*/
|
|
59
|
+
export type UnbridgeableCause = 'local_machine' | 'unusable_address';
|
|
60
|
+
/**
|
|
61
|
+
* What a bridged name is mapped TO.
|
|
62
|
+
*
|
|
63
|
+
* A member on `bridge` rather than a fourth sibling `kind`, so `none` / `bridge` / `unbridgeable`
|
|
64
|
+
* keep meaning exactly what they mean: the three of them answer "what can this transport do about
|
|
65
|
+
* this name", and both targets are the same answer (re-point it) with different data.
|
|
66
|
+
*
|
|
67
|
+
* - `host-gateway` is the container runtime's own alias for the machine it runs on, and it is
|
|
68
|
+
* the ONLY target a local-machine name can take. It is a Docker-family token, resolved by the
|
|
69
|
+
* runtime rather than by us, which is why it is a literal here and never an address.
|
|
70
|
+
* - `{ ip }` is an address the ENVIRONMENT'S PROVIDER stated carries traffic for this name. It
|
|
71
|
+
* is the remote case, and it is the case that makes a bridge target DATA for the first time.
|
|
72
|
+
* Two rules bind it, both in {@link isBridgeableAddress} and at the caller: the address must
|
|
73
|
+
* be one a bridge may name, and the HOST side must be a host the job was actually handed,
|
|
74
|
+
* never a free-form string a provider chose. A provider that could re-point any name inside
|
|
75
|
+
* the container could re-point the harness's own alias for reaching back to its host.
|
|
76
|
+
*/
|
|
77
|
+
export type HostBridgeTarget = 'host-gateway' | {
|
|
78
|
+
ip: string;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Whether an address a provider stated may be used as a bridge target.
|
|
82
|
+
*
|
|
83
|
+
* Until this existed the target was the fixed literal `host-gateway`, so the destination of every
|
|
84
|
+
* bridge was CODE. An address makes it DATA, on a path whose container is itself the trust
|
|
85
|
+
* boundary, so the rule is stated here beside the classifier rather than left to whichever
|
|
86
|
+
* adapter interpolates the string.
|
|
87
|
+
*
|
|
88
|
+
* Deliberately NOT {@link isBlockedPrivateHost}, which is the strict policy for a URL an org
|
|
89
|
+
* supplies and blocks the whole RFC1918 space. An internal load balancer on `10.x` is precisely
|
|
90
|
+
* the population this feature exists for, and refusing it would leave the feature with nothing to
|
|
91
|
+
* name. What is refused instead is the set an address bridge could only ever be ABUSED to reach:
|
|
92
|
+
*
|
|
93
|
+
* - Anything that is not a CANONICAL literal. `decodeIpv4` accepts a bare 32-bit integer and
|
|
94
|
+
* hex/octal octets because a URL guard must see through those encodings; a bridge target has
|
|
95
|
+
* no reason to be spelled that way, and accepting the obfuscated forms is how `2130706433`
|
|
96
|
+
* becomes loopback in a reader that only pattern-matched `127.`.
|
|
97
|
+
* - LOOPBACK, which inside a container is the container's own namespace, where the harness
|
|
98
|
+
* itself is listening. A name re-pointed there does not reach the host; it reaches us.
|
|
99
|
+
* - LINK-LOCAL and the vendor metadata addresses, the endpoint an SSRF aims at for instance
|
|
100
|
+
* credentials, reached here by a name the agent has every reason to fetch.
|
|
101
|
+
* - The unspecified, multicast and broadcast addresses, which name no host at all.
|
|
102
|
+
*
|
|
103
|
+
* Every one of those classes is judged on the DECODED address rather than on how it is written.
|
|
104
|
+
* IPv6 has many spellings of one value, so a `host === '::1'` comparison admits `0::1` and
|
|
105
|
+
* `0:0:0:0:0:0:0:1`, and a `startsWith('fe80:')` test covers an eighth of `fe80::/10`; the
|
|
106
|
+
* metadata targets are read out of `isCloudMetadataHost`, the swept definition every other guard
|
|
107
|
+
* in the tree shares, rather than restated here where a vendor added there would not reach.
|
|
108
|
+
*/
|
|
109
|
+
export declare function isBridgeableAddress(address: string): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Grade a hostname for a host bridge: leave it alone, map it (to the host gateway or to a stated
|
|
112
|
+
* address), or report that it names this machine and cannot be mapped.
|
|
46
113
|
*
|
|
47
114
|
* The whole rule lives here rather than beside the container runtime because more than one layer
|
|
48
115
|
* has to agree about it, and because both wrong answers are silent in production: bridging a
|
|
49
116
|
* remote host breaks an environment that worked, and not bridging a wildcard-DNS loopback name
|
|
50
117
|
* leaves the tester on connection failures it reports as a dead environment.
|
|
118
|
+
*
|
|
119
|
+
* `address` is the address the environment's provider stated for THIS hostname, already PROVED to
|
|
120
|
+
* carry (see `EnvironmentRouteProof`); absent means the name is all anyone has. The two cases are
|
|
121
|
+
* ordered rather than combined, and the order is not arbitrary: a name that answers with this
|
|
122
|
+
* machine's own address is a dead end inside a container whatever a provider says about it, so it
|
|
123
|
+
* takes the gateway branch first and a stated address never overrides it.
|
|
124
|
+
*
|
|
125
|
+
* Note the asymmetry this leaves, which is correct. A REMOTE name with NO address is reported
|
|
126
|
+
* `none`: it reaches whatever it reaches from inside the container exactly as it does outside, and
|
|
127
|
+
* there is nothing to report. A remote name WITH one is a different fact, because an address is
|
|
128
|
+
* only ever present when the proof established that the name did not carry and the address did
|
|
129
|
+
* (`EnvironmentRouteProof.via`). Failing to install THAT is a run heading for the connection
|
|
130
|
+
* failures this mechanism exists to stop, with a proof on the record vouching for a route the
|
|
131
|
+
* container never got, so it is reported `unbridgeable` rather than passed over as `none`.
|
|
51
132
|
*/
|
|
52
|
-
export declare function classifyLocalMachineHostBridge(hostname: string): LocalMachineHostBridge;
|
|
133
|
+
export declare function classifyLocalMachineHostBridge(hostname: string, address?: string | null): LocalMachineHostBridge;
|
|
134
|
+
/**
|
|
135
|
+
* The one spelling of a bridge, for comparing a needed bridge against what a running container
|
|
136
|
+
* was CREATED with and for recording it on that container's handle.
|
|
137
|
+
*
|
|
138
|
+
* Derived rather than hand-formatted at each site because the comparison is an IDENTITY: a
|
|
139
|
+
* mismatch destroys and rebuilds a warm container, so two spellings of the same bridge would
|
|
140
|
+
* replace one for nothing, and one spelling covering two different targets would leave a run
|
|
141
|
+
* wedged against a stale address in a container nothing will replace.
|
|
142
|
+
*/
|
|
143
|
+
export declare function hostBridgeKey(bridge: {
|
|
144
|
+
host: string;
|
|
145
|
+
target: HostBridgeTarget;
|
|
146
|
+
}): string;
|
|
53
147
|
//# sourceMappingURL=environment-host-bridge.logic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-host-bridge.logic.d.ts","sourceRoot":"","sources":["../../src/shared/environment-host-bridge.logic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"environment-host-bridge.logic.d.ts","sourceRoot":"","sources":["../../src/shared/environment-host-bridge.logic.ts"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,sBAAsB;AAChC,2FAA2F;AACzF;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;AAClB,2EAA2E;GACzE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE;AAC5D,2FAA2F;GACzF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAEpE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,kBAAkB,CAAA;AAEpE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAe5D;AAmDD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,sBAAsB,CAcxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAAG,MAAM,CAGxF"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
// name to the gateway inside the container does that, and it keeps the `Host` header the ingress
|
|
25
25
|
// routes on correct for free, which a rewritten authority would not.
|
|
26
26
|
import { wildcardDnsSuffix, wildcardDnsWindows } from '@cat-factory/contracts';
|
|
27
|
-
import { decodeIpv4, isLocalMachineHost, isLoopbackHost } from './ip-host.logic.js';
|
|
27
|
+
import { decimalV4, decodeIpv4, decodeIpv6, isCloudMetadataHost, isLocalMachineHost, isLoopbackHost, mappedV4, } from './ip-host.logic.js';
|
|
28
28
|
/**
|
|
29
29
|
* The one spelling every rule here compares against: lower-cased, trimmed, IPv6 brackets and the
|
|
30
30
|
* fully-qualified trailing dot removed. Shared rather than repeated so a hostname cannot be judged
|
|
@@ -67,6 +67,77 @@ export function resolvesToLocalMachine(hostname) {
|
|
|
67
67
|
const [resolved] = wildcardDnsWindows(host);
|
|
68
68
|
return resolved !== undefined && isLoopbackHost(resolved);
|
|
69
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Whether an address a provider stated may be used as a bridge target.
|
|
72
|
+
*
|
|
73
|
+
* Until this existed the target was the fixed literal `host-gateway`, so the destination of every
|
|
74
|
+
* bridge was CODE. An address makes it DATA, on a path whose container is itself the trust
|
|
75
|
+
* boundary, so the rule is stated here beside the classifier rather than left to whichever
|
|
76
|
+
* adapter interpolates the string.
|
|
77
|
+
*
|
|
78
|
+
* Deliberately NOT {@link isBlockedPrivateHost}, which is the strict policy for a URL an org
|
|
79
|
+
* supplies and blocks the whole RFC1918 space. An internal load balancer on `10.x` is precisely
|
|
80
|
+
* the population this feature exists for, and refusing it would leave the feature with nothing to
|
|
81
|
+
* name. What is refused instead is the set an address bridge could only ever be ABUSED to reach:
|
|
82
|
+
*
|
|
83
|
+
* - Anything that is not a CANONICAL literal. `decodeIpv4` accepts a bare 32-bit integer and
|
|
84
|
+
* hex/octal octets because a URL guard must see through those encodings; a bridge target has
|
|
85
|
+
* no reason to be spelled that way, and accepting the obfuscated forms is how `2130706433`
|
|
86
|
+
* becomes loopback in a reader that only pattern-matched `127.`.
|
|
87
|
+
* - LOOPBACK, which inside a container is the container's own namespace, where the harness
|
|
88
|
+
* itself is listening. A name re-pointed there does not reach the host; it reaches us.
|
|
89
|
+
* - LINK-LOCAL and the vendor metadata addresses, the endpoint an SSRF aims at for instance
|
|
90
|
+
* credentials, reached here by a name the agent has every reason to fetch.
|
|
91
|
+
* - The unspecified, multicast and broadcast addresses, which name no host at all.
|
|
92
|
+
*
|
|
93
|
+
* Every one of those classes is judged on the DECODED address rather than on how it is written.
|
|
94
|
+
* IPv6 has many spellings of one value, so a `host === '::1'` comparison admits `0::1` and
|
|
95
|
+
* `0:0:0:0:0:0:0:1`, and a `startsWith('fe80:')` test covers an eighth of `fe80::/10`; the
|
|
96
|
+
* metadata targets are read out of `isCloudMetadataHost`, the swept definition every other guard
|
|
97
|
+
* in the tree shares, rather than restated here where a vendor added there would not reach.
|
|
98
|
+
*/
|
|
99
|
+
export function isBridgeableAddress(address) {
|
|
100
|
+
const host = normalizeHostname(address);
|
|
101
|
+
if (!host)
|
|
102
|
+
return false;
|
|
103
|
+
// Link-local (169.254/16, incl. IMDS), every vendor metadata address and the metadata NAMES,
|
|
104
|
+
// across every obfuscated encoding. One definition, shared with the SSRF guards.
|
|
105
|
+
if (isCloudMetadataHost(host))
|
|
106
|
+
return false;
|
|
107
|
+
if (host.includes(':')) {
|
|
108
|
+
// IPv6. An IPv4-mapped literal is judged on the address it carries, never on its spelling.
|
|
109
|
+
const mapped = mappedV4(host);
|
|
110
|
+
if (mapped)
|
|
111
|
+
return isBridgeableV4(mapped);
|
|
112
|
+
const groups = decodeIpv6(host);
|
|
113
|
+
return groups !== null && isBridgeableV6(groups);
|
|
114
|
+
}
|
|
115
|
+
const v4 = decimalV4(host);
|
|
116
|
+
return v4 !== null && isBridgeableV4(v4);
|
|
117
|
+
}
|
|
118
|
+
/** The IPv4 half of {@link isBridgeableAddress}, once the literal has been decoded. */
|
|
119
|
+
function isBridgeableV4(parts) {
|
|
120
|
+
const [a] = parts;
|
|
121
|
+
if (a === 0 || a === 127)
|
|
122
|
+
return false; // unspecified / loopback
|
|
123
|
+
if (a >= 224)
|
|
124
|
+
return false; // multicast, reserved, and 255.255.255.255
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
/** The IPv6 half, judged on the decoded groups so no spelling of a refused class gets through. */
|
|
128
|
+
function isBridgeableV6(groups) {
|
|
129
|
+
if (groups.every((group) => group === 0))
|
|
130
|
+
return false; // unspecified, `::`
|
|
131
|
+
// Loopback, `::1` in any spelling.
|
|
132
|
+
if (groups.every((group, index) => group === (index === 7 ? 1 : 0)))
|
|
133
|
+
return false;
|
|
134
|
+
const first = groups[0] ?? 0;
|
|
135
|
+
if ((first & 0xffc0) === 0xfe80)
|
|
136
|
+
return false; // link-local, fe80::/10
|
|
137
|
+
if ((first & 0xff00) === 0xff00)
|
|
138
|
+
return false; // multicast, ff00::/8
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
70
141
|
/**
|
|
71
142
|
* Whether mapping `host` to the container's host gateway would achieve anything.
|
|
72
143
|
*
|
|
@@ -99,21 +170,57 @@ function isHostsFileAddressable(host) {
|
|
|
99
170
|
return decodeIpv4(host) === null;
|
|
100
171
|
}
|
|
101
172
|
/**
|
|
102
|
-
* Grade a hostname for
|
|
103
|
-
* this machine and cannot be mapped.
|
|
173
|
+
* Grade a hostname for a host bridge: leave it alone, map it (to the host gateway or to a stated
|
|
174
|
+
* address), or report that it names this machine and cannot be mapped.
|
|
104
175
|
*
|
|
105
176
|
* The whole rule lives here rather than beside the container runtime because more than one layer
|
|
106
177
|
* has to agree about it, and because both wrong answers are silent in production: bridging a
|
|
107
178
|
* remote host breaks an environment that worked, and not bridging a wildcard-DNS loopback name
|
|
108
179
|
* leaves the tester on connection failures it reports as a dead environment.
|
|
180
|
+
*
|
|
181
|
+
* `address` is the address the environment's provider stated for THIS hostname, already PROVED to
|
|
182
|
+
* carry (see `EnvironmentRouteProof`); absent means the name is all anyone has. The two cases are
|
|
183
|
+
* ordered rather than combined, and the order is not arbitrary: a name that answers with this
|
|
184
|
+
* machine's own address is a dead end inside a container whatever a provider says about it, so it
|
|
185
|
+
* takes the gateway branch first and a stated address never overrides it.
|
|
186
|
+
*
|
|
187
|
+
* Note the asymmetry this leaves, which is correct. A REMOTE name with NO address is reported
|
|
188
|
+
* `none`: it reaches whatever it reaches from inside the container exactly as it does outside, and
|
|
189
|
+
* there is nothing to report. A remote name WITH one is a different fact, because an address is
|
|
190
|
+
* only ever present when the proof established that the name did not carry and the address did
|
|
191
|
+
* (`EnvironmentRouteProof.via`). Failing to install THAT is a run heading for the connection
|
|
192
|
+
* failures this mechanism exists to stop, with a proof on the record vouching for a route the
|
|
193
|
+
* container never got, so it is reported `unbridgeable` rather than passed over as `none`.
|
|
109
194
|
*/
|
|
110
|
-
export function classifyLocalMachineHostBridge(hostname) {
|
|
195
|
+
export function classifyLocalMachineHostBridge(hostname, address) {
|
|
111
196
|
const host = normalizeHostname(hostname);
|
|
112
197
|
if (!host)
|
|
113
198
|
return { kind: 'none' };
|
|
114
|
-
if (
|
|
199
|
+
if (resolvesToLocalMachine(host)) {
|
|
200
|
+
return isHostsFileAddressable(host)
|
|
201
|
+
? { kind: 'bridge', host, target: 'host-gateway' }
|
|
202
|
+
: { kind: 'unbridgeable', host, cause: 'local_machine' };
|
|
203
|
+
}
|
|
204
|
+
if (!address)
|
|
115
205
|
return { kind: 'none' };
|
|
116
|
-
|
|
206
|
+
const ip = normalizeHostname(address);
|
|
207
|
+
if (!isBridgeableAddress(ip) || !isHostsFileAddressable(host)) {
|
|
208
|
+
return { kind: 'unbridgeable', host, cause: 'unusable_address' };
|
|
209
|
+
}
|
|
210
|
+
return { kind: 'bridge', host, target: { ip } };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* The one spelling of a bridge, for comparing a needed bridge against what a running container
|
|
214
|
+
* was CREATED with and for recording it on that container's handle.
|
|
215
|
+
*
|
|
216
|
+
* Derived rather than hand-formatted at each site because the comparison is an IDENTITY: a
|
|
217
|
+
* mismatch destroys and rebuilds a warm container, so two spellings of the same bridge would
|
|
218
|
+
* replace one for nothing, and one spelling covering two different targets would leave a run
|
|
219
|
+
* wedged against a stale address in a container nothing will replace.
|
|
220
|
+
*/
|
|
221
|
+
export function hostBridgeKey(bridge) {
|
|
222
|
+
const target = bridge.target === 'host-gateway' ? 'host-gateway' : bridge.target.ip;
|
|
223
|
+
return bridge.host + '=' + target;
|
|
117
224
|
}
|
|
118
225
|
// The URL half of this (pull the hostname out, decide whether to bridge it) is deliberately NOT
|
|
119
226
|
// here: kernel compiles against `lib: ["ES2022"]` with no DOM and no Node types, so `URL` is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-host-bridge.logic.js","sourceRoot":"","sources":["../../src/shared/environment-host-bridge.logic.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,EAAE;AACF,oGAAoG;AACpG,8FAA8F;AAC9F,8FAA8F;AAC9F,iGAAiG;AACjG,iGAAiG;AACjG,8FAA8F;AAC9F,oGAAoG;AACpG,mGAAmG;AACnG,6DAA6D;AAC7D,EAAE;AACF,iGAAiG;AACjG,oGAAoG;AACpG,2FAA2F;AAC3F,0FAA0F;AAC1F,EAAE;AACF,oGAAoG;AACpG,wFAAwF;AACxF,mGAAmG;AACnG,kGAAkG;AAClG,gGAAgG;AAChG,mGAAmG;AACnG,iGAAiG;AACjG,qEAAqE;AAErE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"environment-host-bridge.logic.js","sourceRoot":"","sources":["../../src/shared/environment-host-bridge.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,22 @@ export declare function mappedV4(host: string): [number, number, number, number]
|
|
|
12
12
|
* rejects ALL numeric forms outright should use {@link isBlockedPrivateHost}.
|
|
13
13
|
*/
|
|
14
14
|
export declare function decodeIpv4(host: string): [number, number, number, number] | null;
|
|
15
|
+
/**
|
|
16
|
+
* Decode an IPv6 literal to its eight 16-bit groups, or null when it is not one.
|
|
17
|
+
*
|
|
18
|
+
* Exists because an IPv6 address has MANY spellings of one value and a rule that pattern-matches
|
|
19
|
+
* the canonical one is not a rule: `::1`, `0::1` and `0:0:0:0:0:0:0:1` are the same loopback
|
|
20
|
+
* address, and a check comparing against the literal `'::1'` admits the other two. Same for
|
|
21
|
+
* `fe80::/10`, where a `startsWith('fe80:')` test covers an eighth of the range and passes
|
|
22
|
+
* `fe90::1`. Callers that must classify an IPv6 target (link-local, multicast, loopback) decode
|
|
23
|
+
* first and judge the NUMBER, exactly as {@link decodeIpv4} exists so a guard never judges a v4
|
|
24
|
+
* spelling.
|
|
25
|
+
*
|
|
26
|
+
* Refused rather than decoded: a zone id (`fe80::1%eth0`), which names a local interface and can
|
|
27
|
+
* never be a routable target, and any group that is not 1-4 hex digits. A trailing dotted-quad is
|
|
28
|
+
* accepted, being the ordinary spelling of a mapped or translated address.
|
|
29
|
+
*/
|
|
30
|
+
export declare function decodeIpv6(hostname: string): number[] | null;
|
|
15
31
|
/**
|
|
16
32
|
* Whether a host resolves to a known cloud-metadata / link-local target — the endpoint
|
|
17
33
|
* an SSRF would aim at for instance credentials. Covers the metadata hostnames plus the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ip-host.logic.d.ts","sourceRoot":"","sources":["../../src/shared/ip-host.logic.ts"],"names":[],"mappings":"AAUA,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAO5E;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAS/E;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAmB9E;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAWhF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAe7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGxD;AAmBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAM5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAiC9D"}
|
|
1
|
+
{"version":3,"file":"ip-host.logic.d.ts","sourceRoot":"","sources":["../../src/shared/ip-host.logic.ts"],"names":[],"mappings":"AAUA,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAO5E;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAS/E;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAmB9E;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAWhF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAY5D;AAoBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAe7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGxD;AAmBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAM5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAiC9D"}
|
|
@@ -77,6 +77,58 @@ export function decodeIpv4(host) {
|
|
|
77
77
|
}
|
|
78
78
|
return null;
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Decode an IPv6 literal to its eight 16-bit groups, or null when it is not one.
|
|
82
|
+
*
|
|
83
|
+
* Exists because an IPv6 address has MANY spellings of one value and a rule that pattern-matches
|
|
84
|
+
* the canonical one is not a rule: `::1`, `0::1` and `0:0:0:0:0:0:0:1` are the same loopback
|
|
85
|
+
* address, and a check comparing against the literal `'::1'` admits the other two. Same for
|
|
86
|
+
* `fe80::/10`, where a `startsWith('fe80:')` test covers an eighth of the range and passes
|
|
87
|
+
* `fe90::1`. Callers that must classify an IPv6 target (link-local, multicast, loopback) decode
|
|
88
|
+
* first and judge the NUMBER, exactly as {@link decodeIpv4} exists so a guard never judges a v4
|
|
89
|
+
* spelling.
|
|
90
|
+
*
|
|
91
|
+
* Refused rather than decoded: a zone id (`fe80::1%eth0`), which names a local interface and can
|
|
92
|
+
* never be a routable target, and any group that is not 1-4 hex digits. A trailing dotted-quad is
|
|
93
|
+
* accepted, being the ordinary spelling of a mapped or translated address.
|
|
94
|
+
*/
|
|
95
|
+
export function decodeIpv6(hostname) {
|
|
96
|
+
const host = hostname.toLowerCase().replace(/^\[|\]$/g, '');
|
|
97
|
+
if (!host.includes(':') || host.includes('%'))
|
|
98
|
+
return null;
|
|
99
|
+
const halves = host.split('::');
|
|
100
|
+
if (halves.length > 2)
|
|
101
|
+
return null;
|
|
102
|
+
const head = expandIpv6Groups(halves[0] ?? '');
|
|
103
|
+
const tail = halves.length === 2 ? expandIpv6Groups(halves[1] ?? '') : [];
|
|
104
|
+
if (!head || !tail)
|
|
105
|
+
return null;
|
|
106
|
+
if (halves.length === 1)
|
|
107
|
+
return head.length === 8 ? head : null;
|
|
108
|
+
// `::` stands for at least one all-zero group, so a compression that saves nothing is malformed.
|
|
109
|
+
const filled = 8 - head.length - tail.length;
|
|
110
|
+
return filled >= 1 ? [...head, ...Array.from({ length: filled }, () => 0), ...tail] : null;
|
|
111
|
+
}
|
|
112
|
+
/** One colon-separated run of an IPv6 literal as 16-bit groups, or null when it is malformed. */
|
|
113
|
+
function expandIpv6Groups(part) {
|
|
114
|
+
if (part === '')
|
|
115
|
+
return [];
|
|
116
|
+
const chunks = part.split(':');
|
|
117
|
+
const groups = [];
|
|
118
|
+
for (const [index, chunk] of chunks.entries()) {
|
|
119
|
+
if (index === chunks.length - 1 && chunk.includes('.')) {
|
|
120
|
+
const v4 = decimalV4(chunk);
|
|
121
|
+
if (!v4)
|
|
122
|
+
return null;
|
|
123
|
+
groups.push((v4[0] << 8) | v4[1], (v4[2] << 8) | v4[3]);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (!/^[0-9a-f]{1,4}$/.test(chunk))
|
|
127
|
+
return null;
|
|
128
|
+
groups.push(parseInt(chunk, 16));
|
|
129
|
+
}
|
|
130
|
+
return groups;
|
|
131
|
+
}
|
|
80
132
|
/**
|
|
81
133
|
* Whether a host resolves to a known cloud-metadata / link-local target — the endpoint
|
|
82
134
|
* an SSRF would aim at for instance credentials. Covers the metadata hostnames plus the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ip-host.logic.js","sourceRoot":"","sources":["../../src/shared/ip-host.logic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ip-host.logic.js","sourceRoot":"","sources":["../../src/shared/ip-host.logic.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,sFAAsF;AACtF,gFAAgF;AAChF,gFAAgF;AAChF,mFAAmF;AACnF,sFAAsF;AACtF,oFAAoF;AACpF,oFAAoF;AACpF,iDAAiD;AAEjD,oFAAoF;AACpF,MAAM,UAAU,WAAW,CAAC,KAAuC;IACjE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAA;IACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IACjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAA;IAChD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACpE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;QAAE,OAAO,IAAI,CAAA;IACzD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACrB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,iBAAiB;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAA;IAChF,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;YAAE,OAAO,IAAI,CAAA;QACzD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACrB,CAAC;IACD,wEAAwE;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAClE,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QACtC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QACtC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC7B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG,UAAU;YAAE,OAAO,IAAI,CAAA;QAC/B,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAClC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/D,iGAAiG;IACjG,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5C,OAAO,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5F,CAAC;AAED,iGAAiG;AACjG,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,IAAI,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAA;YACpB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACvD,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAC/C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC3D,IAAI,IAAI,KAAK,0BAA0B;QAAE,OAAO,IAAI,CAAA;IACpD,iBAAiB;IACjB,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,IAAI,CAAA;IACzC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QACvB,iFAAiF;QACjF,+EAA+E;QAC/E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QACvC,0BAA0B;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;IACnE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC3D,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,6FAA6F;IAC7F,gFAAgF;IAChF,SAAS;IACT,IAAI;IACJ,+FAA+F;IAC/F,uEAAuE;IACvE,sBAAsB;IACtB,4BAA4B;IAC5B,yBAAyB;CAC1B,CAAC,CAAA;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC3D,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACrC,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAChD,6DAA6D;IAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC3D,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IAC5B,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAA;IACpE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtE,mCAAmC;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAChD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAC3F,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,MAAM;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAA;QACtC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,wEAAwE;IACxE,gDAAgD;IAChD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA,CAAC,mBAAmB;QAChE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA,CAAC,oCAAoC;IAC/E,CAAC;IAED,6EAA6E;IAC7E,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,EAAE;QAAE,OAAO,WAAW,CAAC,EAAE,CAAC,CAAA;IAE9B,8EAA8E;IAC9E,wEAAwE;IACxE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAE1E,OAAO,KAAK,CAAA;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/kernel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.327.0",
|
|
4
4
|
"description": "Shared vocabulary, pure logic, and port interfaces for the Agent Architecture Board.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cat-factory/contracts": "0.
|
|
27
|
+
"@cat-factory/contracts": "0.338.0",
|
|
28
28
|
"ai": "^7.0.85",
|
|
29
29
|
"yaml": "^2.9.0"
|
|
30
30
|
},
|