@the-40-thieves/obsidian-tc-shared 1.0.1 → 1.0.2
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/config.schema.d.ts +255 -13
- package/dist/config.schema.d.ts.map +1 -1
- package/dist/config.schema.js +16 -2
- package/dist/config.schema.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/net-host.d.ts +16 -0
- package/dist/net-host.d.ts.map +1 -0
- package/dist/net-host.js +39 -0
- package/dist/net-host.js.map +1 -0
- package/dist/scopes.d.ts.map +1 -1
- package/dist/scopes.js +5 -4
- package/dist/scopes.js.map +1 -1
- package/package.json +1 -1
package/dist/config.schema.d.ts
CHANGED
|
@@ -168,23 +168,23 @@ export declare const VaultConfigSchema: z.ZodObject<{
|
|
|
168
168
|
}>;
|
|
169
169
|
export type VaultConfig = z.infer<typeof VaultConfigSchema>;
|
|
170
170
|
export declare const AuthConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
171
|
-
mode: z.ZodDefault<z.ZodEnum<["none", "jwt"
|
|
171
|
+
mode: z.ZodDefault<z.ZodEnum<["none", "jwt"]>>;
|
|
172
172
|
jwtSecret: z.ZodOptional<z.ZodString>;
|
|
173
173
|
tokenTtlSeconds: z.ZodDefault<z.ZodNumber>;
|
|
174
174
|
}, "strip", z.ZodTypeAny, {
|
|
175
|
-
mode: "none" | "jwt"
|
|
175
|
+
mode: "none" | "jwt";
|
|
176
176
|
tokenTtlSeconds: number;
|
|
177
177
|
jwtSecret?: string | undefined;
|
|
178
178
|
}, {
|
|
179
|
-
mode?: "none" | "jwt" |
|
|
179
|
+
mode?: "none" | "jwt" | undefined;
|
|
180
180
|
jwtSecret?: string | undefined;
|
|
181
181
|
tokenTtlSeconds?: number | undefined;
|
|
182
182
|
}>, {
|
|
183
|
-
mode: "none" | "jwt"
|
|
183
|
+
mode: "none" | "jwt";
|
|
184
184
|
tokenTtlSeconds: number;
|
|
185
185
|
jwtSecret?: string | undefined;
|
|
186
186
|
}, {
|
|
187
|
-
mode?: "none" | "jwt" |
|
|
187
|
+
mode?: "none" | "jwt" | undefined;
|
|
188
188
|
jwtSecret?: string | undefined;
|
|
189
189
|
tokenTtlSeconds?: number | undefined;
|
|
190
190
|
}>;
|
|
@@ -568,7 +568,7 @@ export declare const PlurConfigSchema: z.ZodObject<{
|
|
|
568
568
|
apiPrefix?: string | undefined;
|
|
569
569
|
}>;
|
|
570
570
|
export type PlurConfig = z.infer<typeof PlurConfigSchema>;
|
|
571
|
-
export declare const ServerConfigSchema: z.ZodObject<{
|
|
571
|
+
export declare const ServerConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
572
572
|
cacheDir: z.ZodDefault<z.ZodString>;
|
|
573
573
|
vaults: z.ZodArray<z.ZodObject<{
|
|
574
574
|
id: z.ZodString;
|
|
@@ -701,23 +701,23 @@ export declare const ServerConfigSchema: z.ZodObject<{
|
|
|
701
701
|
apiPrefix?: string | undefined;
|
|
702
702
|
}>>;
|
|
703
703
|
auth: z.ZodDefault<z.ZodEffects<z.ZodObject<{
|
|
704
|
-
mode: z.ZodDefault<z.ZodEnum<["none", "jwt"
|
|
704
|
+
mode: z.ZodDefault<z.ZodEnum<["none", "jwt"]>>;
|
|
705
705
|
jwtSecret: z.ZodOptional<z.ZodString>;
|
|
706
706
|
tokenTtlSeconds: z.ZodDefault<z.ZodNumber>;
|
|
707
707
|
}, "strip", z.ZodTypeAny, {
|
|
708
|
-
mode: "none" | "jwt"
|
|
708
|
+
mode: "none" | "jwt";
|
|
709
709
|
tokenTtlSeconds: number;
|
|
710
710
|
jwtSecret?: string | undefined;
|
|
711
711
|
}, {
|
|
712
|
-
mode?: "none" | "jwt" |
|
|
712
|
+
mode?: "none" | "jwt" | undefined;
|
|
713
713
|
jwtSecret?: string | undefined;
|
|
714
714
|
tokenTtlSeconds?: number | undefined;
|
|
715
715
|
}>, {
|
|
716
|
-
mode: "none" | "jwt"
|
|
716
|
+
mode: "none" | "jwt";
|
|
717
717
|
tokenTtlSeconds: number;
|
|
718
718
|
jwtSecret?: string | undefined;
|
|
719
719
|
}, {
|
|
720
|
-
mode?: "none" | "jwt" |
|
|
720
|
+
mode?: "none" | "jwt" | undefined;
|
|
721
721
|
jwtSecret?: string | undefined;
|
|
722
722
|
tokenTtlSeconds?: number | undefined;
|
|
723
723
|
}>>;
|
|
@@ -1092,7 +1092,7 @@ export declare const ServerConfigSchema: z.ZodObject<{
|
|
|
1092
1092
|
} | undefined;
|
|
1093
1093
|
}[];
|
|
1094
1094
|
auth: {
|
|
1095
|
-
mode: "none" | "jwt"
|
|
1095
|
+
mode: "none" | "jwt";
|
|
1096
1096
|
tokenTtlSeconds: number;
|
|
1097
1097
|
jwtSecret?: string | undefined;
|
|
1098
1098
|
};
|
|
@@ -1219,7 +1219,249 @@ export declare const ServerConfigSchema: z.ZodObject<{
|
|
|
1219
1219
|
apiPrefix?: string | undefined;
|
|
1220
1220
|
} | undefined;
|
|
1221
1221
|
auth?: {
|
|
1222
|
-
mode?: "none" | "jwt" |
|
|
1222
|
+
mode?: "none" | "jwt" | undefined;
|
|
1223
|
+
jwtSecret?: string | undefined;
|
|
1224
|
+
tokenTtlSeconds?: number | undefined;
|
|
1225
|
+
} | undefined;
|
|
1226
|
+
acl?: {
|
|
1227
|
+
readOnly?: boolean | undefined;
|
|
1228
|
+
defaultScopes?: string[] | undefined;
|
|
1229
|
+
rules?: {
|
|
1230
|
+
glob: string;
|
|
1231
|
+
scopes?: string[] | undefined;
|
|
1232
|
+
}[] | undefined;
|
|
1233
|
+
readPaths?: string[] | undefined;
|
|
1234
|
+
writePaths?: string[] | undefined;
|
|
1235
|
+
deletePaths?: string[] | undefined;
|
|
1236
|
+
} | undefined;
|
|
1237
|
+
embeddings?: {
|
|
1238
|
+
provider?: "ollama" | "openai" | "voyage" | "cohere" | undefined;
|
|
1239
|
+
model?: string | undefined;
|
|
1240
|
+
dimensions?: number | undefined;
|
|
1241
|
+
baseUrl?: string | undefined;
|
|
1242
|
+
apiKey?: string | undefined;
|
|
1243
|
+
} | undefined;
|
|
1244
|
+
transports?: {
|
|
1245
|
+
stdio?: boolean | undefined;
|
|
1246
|
+
http?: {
|
|
1247
|
+
enabled?: boolean | undefined;
|
|
1248
|
+
host?: string | undefined;
|
|
1249
|
+
port?: number | undefined;
|
|
1250
|
+
} | undefined;
|
|
1251
|
+
} | undefined;
|
|
1252
|
+
governor?: {
|
|
1253
|
+
maxResponseBytes?: number | undefined;
|
|
1254
|
+
} | undefined;
|
|
1255
|
+
throttle?: {
|
|
1256
|
+
enabled?: boolean | undefined;
|
|
1257
|
+
tiers?: {
|
|
1258
|
+
read?: {
|
|
1259
|
+
perMinute?: number | undefined;
|
|
1260
|
+
burst?: number | undefined;
|
|
1261
|
+
} | undefined;
|
|
1262
|
+
write?: {
|
|
1263
|
+
perMinute?: number | undefined;
|
|
1264
|
+
burst?: number | undefined;
|
|
1265
|
+
} | undefined;
|
|
1266
|
+
bulk?: {
|
|
1267
|
+
perMinute?: number | undefined;
|
|
1268
|
+
burst?: number | undefined;
|
|
1269
|
+
} | undefined;
|
|
1270
|
+
execute?: {
|
|
1271
|
+
perMinute?: number | undefined;
|
|
1272
|
+
burst?: number | undefined;
|
|
1273
|
+
} | undefined;
|
|
1274
|
+
admin?: {
|
|
1275
|
+
perMinute?: number | undefined;
|
|
1276
|
+
burst?: number | undefined;
|
|
1277
|
+
} | undefined;
|
|
1278
|
+
} | undefined;
|
|
1279
|
+
maxConcurrentWritesPerVault?: number | undefined;
|
|
1280
|
+
} | undefined;
|
|
1281
|
+
observability?: {
|
|
1282
|
+
traceDetail?: "standard" | "verbose" | undefined;
|
|
1283
|
+
tracesSampleRate?: number | undefined;
|
|
1284
|
+
otel?: {
|
|
1285
|
+
endpoint?: string | undefined;
|
|
1286
|
+
headers?: Record<string, string> | undefined;
|
|
1287
|
+
} | undefined;
|
|
1288
|
+
prometheus?: {
|
|
1289
|
+
enabled?: boolean | undefined;
|
|
1290
|
+
port?: number | undefined;
|
|
1291
|
+
bind?: string | undefined;
|
|
1292
|
+
} | undefined;
|
|
1293
|
+
morgiana?: {
|
|
1294
|
+
spool?: boolean | undefined;
|
|
1295
|
+
httpEndpoint?: string | undefined;
|
|
1296
|
+
httpHeaders?: Record<string, string> | undefined;
|
|
1297
|
+
} | undefined;
|
|
1298
|
+
retention?: {
|
|
1299
|
+
morgianaEventsDays?: number | undefined;
|
|
1300
|
+
tracesDays?: number | undefined;
|
|
1301
|
+
eventLogDays?: number | undefined;
|
|
1302
|
+
} | undefined;
|
|
1303
|
+
} | undefined;
|
|
1304
|
+
idempotencyTtlSeconds?: number | undefined;
|
|
1305
|
+
elicitTtlSeconds?: number | undefined;
|
|
1306
|
+
}>, {
|
|
1307
|
+
cacheDir: string;
|
|
1308
|
+
vaults: {
|
|
1309
|
+
path: string;
|
|
1310
|
+
id: string;
|
|
1311
|
+
name?: string | undefined;
|
|
1312
|
+
memory?: {
|
|
1313
|
+
folder: string;
|
|
1314
|
+
} | undefined;
|
|
1315
|
+
restApiUrl?: string | undefined;
|
|
1316
|
+
restApiKey?: string | undefined;
|
|
1317
|
+
bridges?: {
|
|
1318
|
+
timeoutMs: number;
|
|
1319
|
+
probeTimeoutMs: number;
|
|
1320
|
+
ocrTimeoutMs: number;
|
|
1321
|
+
templaterTimeoutMs: number;
|
|
1322
|
+
} | undefined;
|
|
1323
|
+
plugins?: {
|
|
1324
|
+
forceEnabled: string[];
|
|
1325
|
+
forceDisabled: string[];
|
|
1326
|
+
probeSkip: boolean;
|
|
1327
|
+
} | undefined;
|
|
1328
|
+
commands?: {
|
|
1329
|
+
enabled: boolean;
|
|
1330
|
+
allowlist: string[];
|
|
1331
|
+
} | undefined;
|
|
1332
|
+
workspace?: {
|
|
1333
|
+
traceFolder: string;
|
|
1334
|
+
} | undefined;
|
|
1335
|
+
}[];
|
|
1336
|
+
auth: {
|
|
1337
|
+
mode: "none" | "jwt";
|
|
1338
|
+
tokenTtlSeconds: number;
|
|
1339
|
+
jwtSecret?: string | undefined;
|
|
1340
|
+
};
|
|
1341
|
+
acl: {
|
|
1342
|
+
readOnly: boolean;
|
|
1343
|
+
defaultScopes: string[];
|
|
1344
|
+
rules: {
|
|
1345
|
+
glob: string;
|
|
1346
|
+
scopes: string[];
|
|
1347
|
+
}[];
|
|
1348
|
+
readPaths?: string[] | undefined;
|
|
1349
|
+
writePaths?: string[] | undefined;
|
|
1350
|
+
deletePaths?: string[] | undefined;
|
|
1351
|
+
};
|
|
1352
|
+
embeddings: {
|
|
1353
|
+
provider: "ollama" | "openai" | "voyage" | "cohere";
|
|
1354
|
+
model: string;
|
|
1355
|
+
dimensions: number;
|
|
1356
|
+
baseUrl?: string | undefined;
|
|
1357
|
+
apiKey?: string | undefined;
|
|
1358
|
+
};
|
|
1359
|
+
transports: {
|
|
1360
|
+
stdio: boolean;
|
|
1361
|
+
http: {
|
|
1362
|
+
enabled: boolean;
|
|
1363
|
+
host: string;
|
|
1364
|
+
port: number;
|
|
1365
|
+
};
|
|
1366
|
+
};
|
|
1367
|
+
governor: {
|
|
1368
|
+
maxResponseBytes: number;
|
|
1369
|
+
};
|
|
1370
|
+
throttle: {
|
|
1371
|
+
enabled: boolean;
|
|
1372
|
+
tiers: {
|
|
1373
|
+
read: {
|
|
1374
|
+
perMinute: number;
|
|
1375
|
+
burst: number;
|
|
1376
|
+
};
|
|
1377
|
+
write: {
|
|
1378
|
+
perMinute: number;
|
|
1379
|
+
burst: number;
|
|
1380
|
+
};
|
|
1381
|
+
bulk: {
|
|
1382
|
+
perMinute: number;
|
|
1383
|
+
burst: number;
|
|
1384
|
+
};
|
|
1385
|
+
execute: {
|
|
1386
|
+
perMinute: number;
|
|
1387
|
+
burst: number;
|
|
1388
|
+
};
|
|
1389
|
+
admin: {
|
|
1390
|
+
perMinute: number;
|
|
1391
|
+
burst: number;
|
|
1392
|
+
};
|
|
1393
|
+
};
|
|
1394
|
+
maxConcurrentWritesPerVault: number;
|
|
1395
|
+
};
|
|
1396
|
+
observability: {
|
|
1397
|
+
traceDetail: "standard" | "verbose";
|
|
1398
|
+
tracesSampleRate: number;
|
|
1399
|
+
otel: {
|
|
1400
|
+
headers: Record<string, string>;
|
|
1401
|
+
endpoint?: string | undefined;
|
|
1402
|
+
};
|
|
1403
|
+
prometheus: {
|
|
1404
|
+
enabled: boolean;
|
|
1405
|
+
port: number;
|
|
1406
|
+
bind: string;
|
|
1407
|
+
};
|
|
1408
|
+
morgiana: {
|
|
1409
|
+
spool: boolean;
|
|
1410
|
+
httpHeaders: Record<string, string>;
|
|
1411
|
+
httpEndpoint?: string | undefined;
|
|
1412
|
+
};
|
|
1413
|
+
retention: {
|
|
1414
|
+
morgianaEventsDays: number;
|
|
1415
|
+
tracesDays: number;
|
|
1416
|
+
eventLogDays: number;
|
|
1417
|
+
};
|
|
1418
|
+
};
|
|
1419
|
+
idempotencyTtlSeconds: number;
|
|
1420
|
+
elicitTtlSeconds: number;
|
|
1421
|
+
plur?: {
|
|
1422
|
+
timeoutMs: number;
|
|
1423
|
+
apiPrefix: string;
|
|
1424
|
+
apiKey?: string | undefined;
|
|
1425
|
+
endpoint?: string | undefined;
|
|
1426
|
+
} | undefined;
|
|
1427
|
+
}, {
|
|
1428
|
+
vaults: {
|
|
1429
|
+
path: string;
|
|
1430
|
+
id: string;
|
|
1431
|
+
name?: string | undefined;
|
|
1432
|
+
memory?: {
|
|
1433
|
+
folder?: string | undefined;
|
|
1434
|
+
} | undefined;
|
|
1435
|
+
restApiUrl?: string | undefined;
|
|
1436
|
+
restApiKey?: string | undefined;
|
|
1437
|
+
bridges?: {
|
|
1438
|
+
timeoutMs?: number | undefined;
|
|
1439
|
+
probeTimeoutMs?: number | undefined;
|
|
1440
|
+
ocrTimeoutMs?: number | undefined;
|
|
1441
|
+
templaterTimeoutMs?: number | undefined;
|
|
1442
|
+
} | undefined;
|
|
1443
|
+
plugins?: {
|
|
1444
|
+
forceEnabled?: string[] | undefined;
|
|
1445
|
+
forceDisabled?: string[] | undefined;
|
|
1446
|
+
probeSkip?: boolean | undefined;
|
|
1447
|
+
} | undefined;
|
|
1448
|
+
commands?: {
|
|
1449
|
+
enabled?: boolean | undefined;
|
|
1450
|
+
allowlist?: string[] | undefined;
|
|
1451
|
+
} | undefined;
|
|
1452
|
+
workspace?: {
|
|
1453
|
+
traceFolder?: string | undefined;
|
|
1454
|
+
} | undefined;
|
|
1455
|
+
}[];
|
|
1456
|
+
cacheDir?: string | undefined;
|
|
1457
|
+
plur?: {
|
|
1458
|
+
timeoutMs?: number | undefined;
|
|
1459
|
+
apiKey?: string | undefined;
|
|
1460
|
+
endpoint?: string | undefined;
|
|
1461
|
+
apiPrefix?: string | undefined;
|
|
1462
|
+
} | undefined;
|
|
1463
|
+
auth?: {
|
|
1464
|
+
mode?: "none" | "jwt" | undefined;
|
|
1223
1465
|
jwtSecret?: string | undefined;
|
|
1224
1466
|
tokenTtlSeconds?: number | undefined;
|
|
1225
1467
|
} | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../src/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../src/config.schema.ts"],"names":[],"mappings":"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"}
|
package/dist/config.schema.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { isLoopbackHost } from "./net-host";
|
|
2
3
|
// Per-vault plugin-bridge timeouts (M4 / THE-180, G2.2 §3.1 + §6). Inner fields
|
|
3
4
|
// carry defaults; the whole block is optional so a vault that predates M4
|
|
4
5
|
// validates unchanged (consumers read `vault.bridges?.x ?? <default>`).
|
|
@@ -55,7 +56,7 @@ export const VaultConfigSchema = z.object({
|
|
|
55
56
|
});
|
|
56
57
|
export const AuthConfigSchema = z
|
|
57
58
|
.object({
|
|
58
|
-
mode: z.enum(["none", "jwt"
|
|
59
|
+
mode: z.enum(["none", "jwt"]).default("none"),
|
|
59
60
|
jwtSecret: z.string().min(32).optional(),
|
|
60
61
|
tokenTtlSeconds: z.number().int().positive().default(86400),
|
|
61
62
|
})
|
|
@@ -177,7 +178,7 @@ export const PlurConfigSchema = z.object({
|
|
|
177
178
|
apiPrefix: z.string().default(""),
|
|
178
179
|
timeoutMs: z.number().int().positive().default(5000),
|
|
179
180
|
});
|
|
180
|
-
|
|
181
|
+
const ServerConfigObject = z.object({
|
|
181
182
|
cacheDir: z.string().default(".obsidian-tc"),
|
|
182
183
|
vaults: z.array(VaultConfigSchema).min(1),
|
|
183
184
|
plur: PlurConfigSchema.optional(),
|
|
@@ -191,4 +192,17 @@ export const ServerConfigSchema = z.object({
|
|
|
191
192
|
idempotencyTtlSeconds: z.number().int().positive().default(86400),
|
|
192
193
|
elicitTtlSeconds: z.number().int().positive().default(300),
|
|
193
194
|
});
|
|
195
|
+
// F2 fail-closed interlock: never run an unauthenticated server on a routable host. When the
|
|
196
|
+
// HTTP transport is enabled on a non-loopback host with auth.mode "none", every request would
|
|
197
|
+
// resolve to full wildcard scopes (see transports/http.ts resolveAuth) — refuse the config.
|
|
198
|
+
export const ServerConfigSchema = ServerConfigObject.superRefine((cfg, ctx) => {
|
|
199
|
+
const http = cfg.transports.http;
|
|
200
|
+
if (http.enabled && cfg.auth.mode === "none" && !isLoopbackHost(http.host)) {
|
|
201
|
+
ctx.addIssue({
|
|
202
|
+
code: z.ZodIssueCode.custom,
|
|
203
|
+
path: ["transports", "http", "host"],
|
|
204
|
+
message: `refusing to expose an unauthenticated server: transports.http.enabled is true with host "${http.host}" (non-loopback) while auth.mode is "none". Set auth.mode to "jwt" (with jwtSecret) or bind transports.http.host to a loopback address (127.0.0.1, ::1, localhost).`,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
});
|
|
194
208
|
//# sourceMappingURL=config.schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../src/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../src/config.schema.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize a host string for binding and loopback comparison: trim, lowercase,
|
|
3
|
+
* and strip a single surrounding pair of IPv6 brackets. Node's bind layer expects
|
|
4
|
+
* the bare address ("::1"), not the bracketed URL form ("[::1]"), so the same
|
|
5
|
+
* normalization must feed both the loopback check and the actual bind call.
|
|
6
|
+
* Otherwise a bracketed host can clear the F2 safety gate yet fail to bind.
|
|
7
|
+
*/
|
|
8
|
+
export declare function normalizeHostForBind(host: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* True only for genuine loopback hosts: "localhost", the IPv4 loopback block
|
|
11
|
+
* 127.0.0.0/8 (octets validated), IPv6 "::1", and IPv4-mapped IPv6 loopback
|
|
12
|
+
* "::ffff:127.x.x.x". "0.0.0.0", "::", and any LAN or public address are
|
|
13
|
+
* intentionally NOT loopback (F2).
|
|
14
|
+
*/
|
|
15
|
+
export declare function isLoopbackHost(host: string): boolean;
|
|
16
|
+
//# sourceMappingURL=net-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net-host.d.ts","sourceRoot":"","sources":["../src/net-host.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASpD"}
|
package/dist/net-host.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize a host string for binding and loopback comparison: trim, lowercase,
|
|
3
|
+
* and strip a single surrounding pair of IPv6 brackets. Node's bind layer expects
|
|
4
|
+
* the bare address ("::1"), not the bracketed URL form ("[::1]"), so the same
|
|
5
|
+
* normalization must feed both the loopback check and the actual bind call.
|
|
6
|
+
* Otherwise a bracketed host can clear the F2 safety gate yet fail to bind.
|
|
7
|
+
*/
|
|
8
|
+
export function normalizeHostForBind(host) {
|
|
9
|
+
return host.trim().toLowerCase().replace(/^\[/, "").replace(/\]$/, "");
|
|
10
|
+
}
|
|
11
|
+
// Strict dotted-quad IPv4 with every octet in 0-255. Kept dependency-free (no
|
|
12
|
+
// node:net) so this module stays usable from the isomorphic shared package.
|
|
13
|
+
// Rejects malformed values like "127.999.999.999" that a loose \d{1,3} regex
|
|
14
|
+
// would wrongly accept.
|
|
15
|
+
function isStrictIpv4(h) {
|
|
16
|
+
const m = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(h);
|
|
17
|
+
if (!m)
|
|
18
|
+
return false;
|
|
19
|
+
return m.slice(1).every((octet) => Number(octet) <= 255);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* True only for genuine loopback hosts: "localhost", the IPv4 loopback block
|
|
23
|
+
* 127.0.0.0/8 (octets validated), IPv6 "::1", and IPv4-mapped IPv6 loopback
|
|
24
|
+
* "::ffff:127.x.x.x". "0.0.0.0", "::", and any LAN or public address are
|
|
25
|
+
* intentionally NOT loopback (F2).
|
|
26
|
+
*/
|
|
27
|
+
export function isLoopbackHost(host) {
|
|
28
|
+
const h = normalizeHostForBind(host);
|
|
29
|
+
if (h === "localhost" || h === "::1")
|
|
30
|
+
return true;
|
|
31
|
+
if (isStrictIpv4(h))
|
|
32
|
+
return h.startsWith("127.");
|
|
33
|
+
if (h.startsWith("::ffff:")) {
|
|
34
|
+
const v4 = h.slice("::ffff:".length);
|
|
35
|
+
return isStrictIpv4(v4) && v4.startsWith("127.");
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=net-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net-host.js","sourceRoot":"","sources":["../src/net-host.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,wBAAwB;AACxB,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,CAAC,GAAG,8CAA8C,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/scopes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,kEAAmE,CAAC;AAC/F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAG3B,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,KAAK,CAG/C,CAAC;AAGH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAwB,CAAC;AAE1E,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKzE;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,CAS9E;AAGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,CAGvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGvD;AAGD,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAA2C,CAAC;AAE3F,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAErD;
|
|
1
|
+
{"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,kEAAmE,CAAC;AAC/F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAG3B,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,KAAK,CAG/C,CAAC;AAGH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAwB,CAAC;AAE1E,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKzE;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,CAS9E;AAGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,CAGvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGvD;AAGD,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAA2C,CAAC;AAE3F,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAErD;AAWD,wBAAgB,YAAY,CAAC,cAAc,EAAE,SAAS,KAAK,EAAE,GAAG,MAAM,CAIrE"}
|
package/dist/scopes.js
CHANGED
|
@@ -46,10 +46,11 @@ export function isMutatingScope(scope) {
|
|
|
46
46
|
// Scope-class precedence for the dispatch rate-limiter gate (THE-210) and the `scope_class`
|
|
47
47
|
// metric label (G2.4). A tool's governing class is the most operationally significant family
|
|
48
48
|
// among its required scopes: a bulk_* tool (write:notes + bulk:notes) is governed by `bulk`,
|
|
49
|
-
// an execute tool by `execute`, an admin tool by `admin`,
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
|
|
49
|
+
// an execute tool by `execute`, an admin tool by `admin`, a delete-only tool by `delete`, and
|
|
50
|
+
// so on. `delete` sits below `admin` but above `write` so a destructive single-delete is
|
|
51
|
+
// throttled at its own tier (THE-212) while a bulk_delete still resolves to `bulk`. A family
|
|
52
|
+
// with no configured throttle tier is treated as unlimited (an unknown tier is never throttled).
|
|
53
|
+
const SCOPE_CLASS_PRECEDENCE = ["bulk", "execute", "admin", "delete", "write", "read"];
|
|
53
54
|
export function scopeClassOf(requiredScopes) {
|
|
54
55
|
const families = new Set(requiredScopes.map((s) => parseScope(s).family));
|
|
55
56
|
for (const cls of SCOPE_CLASS_PRECEDENCE)
|
package/dist/scopes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopes.js","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAI/F,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAuB,IAAI,GAAG,CAAQ;IAClE,YAAY;IACZ,iBAAiB;CAClB,CAAC,CAAC;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAE1E,MAAM,UAAU,UAAU,CAAC,CAAQ;IACjC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,OAAwB,EAAE,QAAe;IACnE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM;YAAE,SAAS;QAC5D,IAAI,EAAE,CAAC,QAAQ,KAAK,GAAG,IAAI,EAAE,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,SAAS,CAAC,OAAwB,EAAE,QAA0B;IAC5E,MAAM,GAAG,GAAG,OAAO,YAAY,GAAG,CAAC,CAAC,CAAE,OAAsB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAChF,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAY;IAC5C,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAE3F,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,4FAA4F;AAC5F,6FAA6F;AAC7F,6FAA6F;AAC7F,
|
|
1
|
+
{"version":3,"file":"scopes.js","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAI/F,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAuB,IAAI,GAAG,CAAQ;IAClE,YAAY;IACZ,iBAAiB;CAClB,CAAC,CAAC;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAE1E,MAAM,UAAU,UAAU,CAAC,CAAQ;IACjC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,OAAwB,EAAE,QAAe;IACnE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM;YAAE,SAAS;QAC5D,IAAI,EAAE,CAAC,QAAQ,KAAK,GAAG,IAAI,EAAE,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,SAAS,CAAC,OAAwB,EAAE,QAA0B;IAC5E,MAAM,GAAG,GAAG,OAAO,YAAY,GAAG,CAAC,CAAC,CAAE,OAAsB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAChF,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAY;IAC5C,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAE3F,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,4FAA4F;AAC5F,6FAA6F;AAC7F,6FAA6F;AAC7F,8FAA8F;AAC9F,yFAAyF;AACzF,6FAA6F;AAC7F,iGAAiG;AACjG,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAEhG,MAAM,UAAU,YAAY,CAAC,cAAgC;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,GAAG,IAAI,sBAAsB;QAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC5E,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC"}
|