@scoutflo/topology-contracts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +15 -0
  2. package/dist/src/correlation/candidate.d.ts +310 -0
  3. package/dist/src/correlation/candidate.js +31 -0
  4. package/dist/src/correlation/candidate.js.map +1 -0
  5. package/dist/src/correlation/index.d.ts +2 -0
  6. package/dist/src/correlation/index.js +19 -0
  7. package/dist/src/correlation/index.js.map +1 -0
  8. package/dist/src/correlation/rule.d.ts +80 -0
  9. package/dist/src/correlation/rule.js +29 -0
  10. package/dist/src/correlation/rule.js.map +1 -0
  11. package/dist/src/families/aws.d.ts +13 -0
  12. package/dist/src/families/aws.js +24 -0
  13. package/dist/src/families/aws.js.map +1 -0
  14. package/dist/src/families/index.d.ts +6 -0
  15. package/dist/src/families/index.js +30 -0
  16. package/dist/src/families/index.js.map +1 -0
  17. package/dist/src/families/integrations.d.ts +7 -0
  18. package/dist/src/families/integrations.js +12 -0
  19. package/dist/src/families/integrations.js.map +1 -0
  20. package/dist/src/families/kubernetes.d.ts +14 -0
  21. package/dist/src/families/kubernetes.js +26 -0
  22. package/dist/src/families/kubernetes.js.map +1 -0
  23. package/dist/src/index.d.ts +8 -0
  24. package/dist/src/index.js +48 -0
  25. package/dist/src/index.js.map +1 -0
  26. package/dist/src/providers/aliases.d.ts +12 -0
  27. package/dist/src/providers/aliases.js +26 -0
  28. package/dist/src/providers/aliases.js.map +1 -0
  29. package/dist/src/providers/index.d.ts +2 -0
  30. package/dist/src/providers/index.js +19 -0
  31. package/dist/src/providers/index.js.map +1 -0
  32. package/dist/src/providers/providers.d.ts +30 -0
  33. package/dist/src/providers/providers.js +58 -0
  34. package/dist/src/providers/providers.js.map +1 -0
  35. package/dist/src/schemas/index.d.ts +5 -0
  36. package/dist/src/schemas/index.js +38 -0
  37. package/dist/src/schemas/index.js.map +1 -0
  38. package/dist/src/source-sync/candidate.d.ts +967 -0
  39. package/dist/src/source-sync/candidate.js +84 -0
  40. package/dist/src/source-sync/candidate.js.map +1 -0
  41. package/dist/src/source-sync/capability.d.ts +64 -0
  42. package/dist/src/source-sync/capability.js +20 -0
  43. package/dist/src/source-sync/capability.js.map +1 -0
  44. package/dist/src/source-sync/common.d.ts +16 -0
  45. package/dist/src/source-sync/common.js +14 -0
  46. package/dist/src/source-sync/common.js.map +1 -0
  47. package/dist/src/source-sync/completeness.d.ts +28 -0
  48. package/dist/src/source-sync/completeness.js +21 -0
  49. package/dist/src/source-sync/completeness.js.map +1 -0
  50. package/dist/src/source-sync/index.d.ts +6 -0
  51. package/dist/src/source-sync/index.js +23 -0
  52. package/dist/src/source-sync/index.js.map +1 -0
  53. package/dist/src/source-sync/intent.d.ts +621 -0
  54. package/dist/src/source-sync/intent.js +31 -0
  55. package/dist/src/source-sync/intent.js.map +1 -0
  56. package/dist/src/source-sync/scope.d.ts +21 -0
  57. package/dist/src/source-sync/scope.js +14 -0
  58. package/dist/src/source-sync/scope.js.map +1 -0
  59. package/dist/src/source-sync/warning.d.ts +25 -0
  60. package/dist/src/source-sync/warning.js +19 -0
  61. package/dist/src/source-sync/warning.js.map +1 -0
  62. package/dist/src/topology/index.d.ts +2 -0
  63. package/dist/src/topology/index.js +19 -0
  64. package/dist/src/topology/index.js.map +1 -0
  65. package/dist/src/topology/relationTypes.d.ts +15 -0
  66. package/dist/src/topology/relationTypes.js +28 -0
  67. package/dist/src/topology/relationTypes.js.map +1 -0
  68. package/dist/src/topology/resourceTypes.d.ts +22 -0
  69. package/dist/src/topology/resourceTypes.js +42 -0
  70. package/dist/src/topology/resourceTypes.js.map +1 -0
  71. package/dist/test/contracts.test.d.ts +1 -0
  72. package/dist/test/contracts.test.js +175 -0
  73. package/dist/test/contracts.test.js.map +1 -0
  74. package/package.json +34 -0
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.topologySyncIntentSchema = exports.topologySyncIntentOptionsSchema = exports.topologySourceIntentSchema = exports.topologySourceIntentOptionsSchema = exports.topologySourceIntentIncludeSchema = exports.SOURCE_SYNC_INTENT_VERSION = void 0;
4
+ const zod_1 = require("zod");
5
+ const providers_1 = require("../providers");
6
+ const common_1 = require("./common");
7
+ exports.SOURCE_SYNC_INTENT_VERSION = 'topology.scoutflo.dev/v1';
8
+ exports.topologySourceIntentIncludeSchema = zod_1.z.object({
9
+ localities: zod_1.z.array(common_1.sourceSyncLocalitySchema).optional(),
10
+ families: zod_1.z.array(common_1.sourceSyncFamilySchema).optional(),
11
+ }).passthrough();
12
+ exports.topologySourceIntentOptionsSchema = common_1.recordSchema;
13
+ exports.topologySourceIntentSchema = zod_1.z.object({
14
+ provider: providers_1.topologyProviderInputSchema,
15
+ source_ref: common_1.recordSchema.optional(),
16
+ roots: zod_1.z.record(zod_1.z.array(common_1.nonEmptyStringSchema)).optional(),
17
+ include: exports.topologySourceIntentIncludeSchema.optional(),
18
+ exclude: common_1.recordSchema.optional(),
19
+ options: exports.topologySourceIntentOptionsSchema.optional(),
20
+ }).passthrough();
21
+ exports.topologySyncIntentOptionsSchema = zod_1.z.object({
22
+ include_correlation: zod_1.z.boolean().optional(),
23
+ dry_run_only: zod_1.z.boolean().optional(),
24
+ max_concurrency: zod_1.z.number().int().min(1).optional(),
25
+ }).passthrough();
26
+ exports.topologySyncIntentSchema = zod_1.z.object({
27
+ version: zod_1.z.literal(exports.SOURCE_SYNC_INTENT_VERSION),
28
+ sources: zod_1.z.array(exports.topologySourceIntentSchema).optional(),
29
+ options: exports.topologySyncIntentOptionsSchema.optional(),
30
+ }).passthrough();
31
+ //# sourceMappingURL=intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/source-sync/intent.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4CAA2D;AAC3D,qCAKkB;AAEL,QAAA,0BAA0B,GAAG,0BAA0B,CAAC;AAExD,QAAA,iCAAiC,GAAG,OAAC,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,iCAAwB,CAAC,CAAC,QAAQ,EAAE;IACxD,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,+BAAsB,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC,WAAW,EAAE,CAAC;AAEJ,QAAA,iCAAiC,GAAG,qBAAY,CAAC;AAEjD,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,QAAQ,EAAE,uCAA2B;IACrC,UAAU,EAAE,qBAAY,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,KAAK,CAAC,6BAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzD,OAAO,EAAE,yCAAiC,CAAC,QAAQ,EAAE;IACrD,OAAO,EAAE,qBAAY,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,yCAAiC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC,WAAW,EAAE,CAAC;AAEJ,QAAA,+BAA+B,GAAG,OAAC,CAAC,MAAM,CAAC;IACtD,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3C,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC,WAAW,EAAE,CAAC;AAEJ,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,kCAA0B,CAAC;IAC9C,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,kCAA0B,CAAC,CAAC,QAAQ,EAAE;IACvD,OAAO,EAAE,uCAA+B,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC,WAAW,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod';
2
+ export declare const topologySyncScopeSchema: z.ZodObject<{
3
+ provider: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["aws", "k8s", "gcp", "azure", "sentry", "prometheus", "grafana", "loki", "tempo", "mimir", "victoriametrics", "victorialogs", "victoriatraces", "github", "gitlab", "bitbucket", "argocd", "datadog", "groundcover", "elk", "jira", "confluence", "jsm", "custom"]>, z.ZodLiteral<"kubernetes">]>, "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom", "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom" | "kubernetes">;
4
+ provider_account_id: z.ZodOptional<z.ZodString>;
5
+ region: z.ZodOptional<z.ZodString>;
6
+ resource_families: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7
+ scope_key: z.ZodString;
8
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
9
+ provider: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["aws", "k8s", "gcp", "azure", "sentry", "prometheus", "grafana", "loki", "tempo", "mimir", "victoriametrics", "victorialogs", "victoriatraces", "github", "gitlab", "bitbucket", "argocd", "datadog", "groundcover", "elk", "jira", "confluence", "jsm", "custom"]>, z.ZodLiteral<"kubernetes">]>, "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom", "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom" | "kubernetes">;
10
+ provider_account_id: z.ZodOptional<z.ZodString>;
11
+ region: z.ZodOptional<z.ZodString>;
12
+ resource_families: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
13
+ scope_key: z.ZodString;
14
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
15
+ provider: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["aws", "k8s", "gcp", "azure", "sentry", "prometheus", "grafana", "loki", "tempo", "mimir", "victoriametrics", "victorialogs", "victoriatraces", "github", "gitlab", "bitbucket", "argocd", "datadog", "groundcover", "elk", "jira", "confluence", "jsm", "custom"]>, z.ZodLiteral<"kubernetes">]>, "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom", "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom" | "kubernetes">;
16
+ provider_account_id: z.ZodOptional<z.ZodString>;
17
+ region: z.ZodOptional<z.ZodString>;
18
+ resource_families: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
19
+ scope_key: z.ZodString;
20
+ }, z.ZodTypeAny, "passthrough">>;
21
+ export type TopologySyncScope = z.infer<typeof topologySyncScopeSchema>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.topologySyncScopeSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const providers_1 = require("../providers");
6
+ const common_1 = require("./common");
7
+ exports.topologySyncScopeSchema = zod_1.z.object({
8
+ provider: providers_1.topologyProviderInputSchema,
9
+ provider_account_id: common_1.nonEmptyStringSchema.optional(),
10
+ region: common_1.nonEmptyStringSchema.optional(),
11
+ resource_families: zod_1.z.array(common_1.sourceSyncFamilySchema).optional(),
12
+ scope_key: common_1.nonEmptyStringSchema,
13
+ }).passthrough();
14
+ //# sourceMappingURL=scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/source-sync/scope.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4CAA2D;AAC3D,qCAGkB;AAEL,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,uCAA2B;IACrC,mBAAmB,EAAE,6BAAoB,CAAC,QAAQ,EAAE;IACpD,MAAM,EAAE,6BAAoB,CAAC,QAAQ,EAAE;IACvC,iBAAiB,EAAE,OAAC,CAAC,KAAK,CAAC,+BAAsB,CAAC,CAAC,QAAQ,EAAE;IAC7D,SAAS,EAAE,6BAAoB;CAChC,CAAC,CAAC,WAAW,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ export declare const topologySyncWarningSeveritySchema: z.ZodEnum<["info", "warning", "error"]>;
3
+ export declare const topologySyncWarningSchema: z.ZodObject<{
4
+ code: z.ZodString;
5
+ message: z.ZodString;
6
+ severity: z.ZodOptional<z.ZodEnum<["info", "warning", "error"]>>;
7
+ scope_key: z.ZodOptional<z.ZodString>;
8
+ affected_scope_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
9
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
10
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
11
+ code: z.ZodString;
12
+ message: z.ZodString;
13
+ severity: z.ZodOptional<z.ZodEnum<["info", "warning", "error"]>>;
14
+ scope_key: z.ZodOptional<z.ZodString>;
15
+ affected_scope_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
16
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
17
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
18
+ code: z.ZodString;
19
+ message: z.ZodString;
20
+ severity: z.ZodOptional<z.ZodEnum<["info", "warning", "error"]>>;
21
+ scope_key: z.ZodOptional<z.ZodString>;
22
+ affected_scope_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
23
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
24
+ }, z.ZodTypeAny, "passthrough">>;
25
+ export type TopologySyncWarning = z.infer<typeof topologySyncWarningSchema>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.topologySyncWarningSchema = exports.topologySyncWarningSeveritySchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const common_1 = require("./common");
6
+ exports.topologySyncWarningSeveritySchema = zod_1.z.enum([
7
+ 'info',
8
+ 'warning',
9
+ 'error',
10
+ ]);
11
+ exports.topologySyncWarningSchema = zod_1.z.object({
12
+ code: common_1.nonEmptyStringSchema,
13
+ message: common_1.nonEmptyStringSchema,
14
+ severity: exports.topologySyncWarningSeveritySchema.optional(),
15
+ scope_key: common_1.nonEmptyStringSchema.optional(),
16
+ affected_scope_keys: zod_1.z.array(common_1.nonEmptyStringSchema).optional(),
17
+ details: common_1.recordSchema.optional(),
18
+ }).passthrough();
19
+ //# sourceMappingURL=warning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warning.js","sourceRoot":"","sources":["../../../src/source-sync/warning.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,qCAGkB;AAEL,QAAA,iCAAiC,GAAG,OAAC,CAAC,IAAI,CAAC;IACtD,MAAM;IACN,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,6BAAoB;IAC1B,OAAO,EAAE,6BAAoB;IAC7B,QAAQ,EAAE,yCAAiC,CAAC,QAAQ,EAAE;IACtD,SAAS,EAAE,6BAAoB,CAAC,QAAQ,EAAE;IAC1C,mBAAmB,EAAE,OAAC,CAAC,KAAK,CAAC,6BAAoB,CAAC,CAAC,QAAQ,EAAE;IAC7D,OAAO,EAAE,qBAAY,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './resourceTypes';
2
+ export * from './relationTypes';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./resourceTypes"), exports);
18
+ __exportStar(require("./relationTypes"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/topology/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,kDAAgC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const TOPOLOGY_RELATION_TYPE: {
3
+ readonly PART_OF: "PART_OF";
4
+ readonly ROUTES_TO: "ROUTES_TO";
5
+ readonly DEPLOYED_AS: "DEPLOYED_AS";
6
+ readonly DEPENDS_ON: "DEPENDS_ON";
7
+ readonly CALLS: "CALLS";
8
+ readonly MONITORED_BY: "MONITORED_BY";
9
+ readonly SENDS_LOGS_TO: "SENDS_LOGS_TO";
10
+ readonly SENDS_METRICS_TO: "SENDS_METRICS_TO";
11
+ readonly SENDS_TRACES_TO: "SENDS_TRACES_TO";
12
+ };
13
+ export declare const TOPOLOGY_RELATION_TYPE_VALUES: readonly ["PART_OF", "ROUTES_TO", "DEPLOYED_AS", "DEPENDS_ON", "CALLS", "MONITORED_BY", "SENDS_LOGS_TO", "SENDS_METRICS_TO", "SENDS_TRACES_TO"];
14
+ export declare const topologyRelationTypeSchema: z.ZodEnum<["PART_OF", "ROUTES_TO", "DEPLOYED_AS", "DEPENDS_ON", "CALLS", "MONITORED_BY", "SENDS_LOGS_TO", "SENDS_METRICS_TO", "SENDS_TRACES_TO"]>;
15
+ export type TopologyRelationType = z.infer<typeof topologyRelationTypeSchema>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.topologyRelationTypeSchema = exports.TOPOLOGY_RELATION_TYPE_VALUES = exports.TOPOLOGY_RELATION_TYPE = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.TOPOLOGY_RELATION_TYPE = {
6
+ PART_OF: 'PART_OF',
7
+ ROUTES_TO: 'ROUTES_TO',
8
+ DEPLOYED_AS: 'DEPLOYED_AS',
9
+ DEPENDS_ON: 'DEPENDS_ON',
10
+ CALLS: 'CALLS',
11
+ MONITORED_BY: 'MONITORED_BY',
12
+ SENDS_LOGS_TO: 'SENDS_LOGS_TO',
13
+ SENDS_METRICS_TO: 'SENDS_METRICS_TO',
14
+ SENDS_TRACES_TO: 'SENDS_TRACES_TO',
15
+ };
16
+ exports.TOPOLOGY_RELATION_TYPE_VALUES = [
17
+ exports.TOPOLOGY_RELATION_TYPE.PART_OF,
18
+ exports.TOPOLOGY_RELATION_TYPE.ROUTES_TO,
19
+ exports.TOPOLOGY_RELATION_TYPE.DEPLOYED_AS,
20
+ exports.TOPOLOGY_RELATION_TYPE.DEPENDS_ON,
21
+ exports.TOPOLOGY_RELATION_TYPE.CALLS,
22
+ exports.TOPOLOGY_RELATION_TYPE.MONITORED_BY,
23
+ exports.TOPOLOGY_RELATION_TYPE.SENDS_LOGS_TO,
24
+ exports.TOPOLOGY_RELATION_TYPE.SENDS_METRICS_TO,
25
+ exports.TOPOLOGY_RELATION_TYPE.SENDS_TRACES_TO,
26
+ ];
27
+ exports.topologyRelationTypeSchema = zod_1.z.enum(exports.TOPOLOGY_RELATION_TYPE_VALUES);
28
+ //# sourceMappingURL=relationTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationTypes.js","sourceRoot":"","sources":["../../../src/topology/relationTypes.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,sBAAsB,GAAG;IACpC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;CAC1B,CAAC;AAEE,QAAA,6BAA6B,GAAG;IAC3C,8BAAsB,CAAC,OAAO;IAC9B,8BAAsB,CAAC,SAAS;IAChC,8BAAsB,CAAC,WAAW;IAClC,8BAAsB,CAAC,UAAU;IACjC,8BAAsB,CAAC,KAAK;IAC5B,8BAAsB,CAAC,YAAY;IACnC,8BAAsB,CAAC,aAAa;IACpC,8BAAsB,CAAC,gBAAgB;IACvC,8BAAsB,CAAC,eAAe;CAC9B,CAAC;AAEE,QAAA,0BAA0B,GAAG,OAAC,CAAC,IAAI,CAAC,qCAA6B,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod';
2
+ export declare const TOPOLOGY_RESOURCE_TYPE: {
3
+ readonly AWS_ACCOUNT: "aws_account";
4
+ readonly VPC: "vpc";
5
+ readonly SUBNET: "subnet";
6
+ readonly EC2_INSTANCE: "ec2_instance";
7
+ readonly RDS_INSTANCE: "rds_instance";
8
+ readonly S3_BUCKET: "s3_bucket";
9
+ readonly EKS_CLUSTER: "eks_cluster";
10
+ readonly KUBERNETES_CLUSTER: "kubernetes_cluster";
11
+ readonly KUBERNETES_NAMESPACE: "kubernetes_namespace";
12
+ readonly KUBERNETES_DEPLOYMENT: "kubernetes_deployment";
13
+ readonly KUBERNETES_STATEFUL_SET: "kubernetes_stateful_set";
14
+ readonly KUBERNETES_DAEMON_SET: "kubernetes_daemon_set";
15
+ readonly KUBERNETES_JOB: "kubernetes_job";
16
+ readonly KUBERNETES_CRON_JOB: "kubernetes_cron_job";
17
+ readonly KUBERNETES_SERVICE: "kubernetes_service";
18
+ readonly INTEGRATION_RESOURCE: "integration_resource";
19
+ };
20
+ export declare const TOPOLOGY_RESOURCE_TYPE_VALUES: readonly ["aws_account", "vpc", "subnet", "ec2_instance", "rds_instance", "s3_bucket", "eks_cluster", "kubernetes_cluster", "kubernetes_namespace", "kubernetes_deployment", "kubernetes_stateful_set", "kubernetes_daemon_set", "kubernetes_job", "kubernetes_cron_job", "kubernetes_service", "integration_resource"];
21
+ export declare const topologyResourceTypeSchema: z.ZodEnum<["aws_account", "vpc", "subnet", "ec2_instance", "rds_instance", "s3_bucket", "eks_cluster", "kubernetes_cluster", "kubernetes_namespace", "kubernetes_deployment", "kubernetes_stateful_set", "kubernetes_daemon_set", "kubernetes_job", "kubernetes_cron_job", "kubernetes_service", "integration_resource"]>;
22
+ export type TopologyResourceType = z.infer<typeof topologyResourceTypeSchema>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.topologyResourceTypeSchema = exports.TOPOLOGY_RESOURCE_TYPE_VALUES = exports.TOPOLOGY_RESOURCE_TYPE = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.TOPOLOGY_RESOURCE_TYPE = {
6
+ AWS_ACCOUNT: 'aws_account',
7
+ VPC: 'vpc',
8
+ SUBNET: 'subnet',
9
+ EC2_INSTANCE: 'ec2_instance',
10
+ RDS_INSTANCE: 'rds_instance',
11
+ S3_BUCKET: 's3_bucket',
12
+ EKS_CLUSTER: 'eks_cluster',
13
+ KUBERNETES_CLUSTER: 'kubernetes_cluster',
14
+ KUBERNETES_NAMESPACE: 'kubernetes_namespace',
15
+ KUBERNETES_DEPLOYMENT: 'kubernetes_deployment',
16
+ KUBERNETES_STATEFUL_SET: 'kubernetes_stateful_set',
17
+ KUBERNETES_DAEMON_SET: 'kubernetes_daemon_set',
18
+ KUBERNETES_JOB: 'kubernetes_job',
19
+ KUBERNETES_CRON_JOB: 'kubernetes_cron_job',
20
+ KUBERNETES_SERVICE: 'kubernetes_service',
21
+ INTEGRATION_RESOURCE: 'integration_resource',
22
+ };
23
+ exports.TOPOLOGY_RESOURCE_TYPE_VALUES = [
24
+ exports.TOPOLOGY_RESOURCE_TYPE.AWS_ACCOUNT,
25
+ exports.TOPOLOGY_RESOURCE_TYPE.VPC,
26
+ exports.TOPOLOGY_RESOURCE_TYPE.SUBNET,
27
+ exports.TOPOLOGY_RESOURCE_TYPE.EC2_INSTANCE,
28
+ exports.TOPOLOGY_RESOURCE_TYPE.RDS_INSTANCE,
29
+ exports.TOPOLOGY_RESOURCE_TYPE.S3_BUCKET,
30
+ exports.TOPOLOGY_RESOURCE_TYPE.EKS_CLUSTER,
31
+ exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_CLUSTER,
32
+ exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_NAMESPACE,
33
+ exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_DEPLOYMENT,
34
+ exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_STATEFUL_SET,
35
+ exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_DAEMON_SET,
36
+ exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_JOB,
37
+ exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_CRON_JOB,
38
+ exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_SERVICE,
39
+ exports.TOPOLOGY_RESOURCE_TYPE.INTEGRATION_RESOURCE,
40
+ ];
41
+ exports.topologyResourceTypeSchema = zod_1.z.enum(exports.TOPOLOGY_RESOURCE_TYPE_VALUES);
42
+ //# sourceMappingURL=resourceTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceTypes.js","sourceRoot":"","sources":["../../../src/topology/resourceTypes.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,sBAAsB,GAAG;IACpC,WAAW,EAAE,aAAa;IAC1B,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;CACpC,CAAC;AAEE,QAAA,6BAA6B,GAAG;IAC3C,8BAAsB,CAAC,WAAW;IAClC,8BAAsB,CAAC,GAAG;IAC1B,8BAAsB,CAAC,MAAM;IAC7B,8BAAsB,CAAC,YAAY;IACnC,8BAAsB,CAAC,YAAY;IACnC,8BAAsB,CAAC,SAAS;IAChC,8BAAsB,CAAC,WAAW;IAClC,8BAAsB,CAAC,kBAAkB;IACzC,8BAAsB,CAAC,oBAAoB;IAC3C,8BAAsB,CAAC,qBAAqB;IAC5C,8BAAsB,CAAC,uBAAuB;IAC9C,8BAAsB,CAAC,qBAAqB;IAC5C,8BAAsB,CAAC,cAAc;IACrC,8BAAsB,CAAC,mBAAmB;IAC1C,8BAAsB,CAAC,kBAAkB;IACzC,8BAAsB,CAAC,oBAAoB;CACnC,CAAC;AAEE,QAAA,0BAA0B,GAAG,OAAC,CAAC,IAAI,CAAC,qCAA6B,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_test_1 = __importDefault(require("node:test"));
8
+ const src_1 = require("../src");
9
+ (0, node_test_1.default)('exports package marker, provider constants, and provider normalization', () => {
10
+ strict_1.default.equal(src_1.TOPOLOGY_CONTRACTS_PACKAGE, '@scoutflo/topology-contracts');
11
+ strict_1.default.equal(src_1.TOPOLOGY_PROVIDER.K8S, 'k8s');
12
+ strict_1.default.equal(src_1.topologyProviderSchema.parse('k8s'), 'k8s');
13
+ strict_1.default.equal((0, src_1.normalizeTopologyProvider)('kubernetes'), 'k8s');
14
+ strict_1.default.equal((0, src_1.normalizeTopologyProvider)('k8s'), 'k8s');
15
+ });
16
+ (0, node_test_1.default)('exports first-pass topology family constants', () => {
17
+ strict_1.default.deepEqual(Object.values(src_1.AWS_TOPOLOGY_FAMILY), [
18
+ 'account',
19
+ 'vpc',
20
+ 'subnet',
21
+ 'ec2_instance',
22
+ 'rds_instance',
23
+ 's3_bucket',
24
+ 'eks_cluster',
25
+ ]);
26
+ strict_1.default.deepEqual(Object.values(src_1.KUBERNETES_TOPOLOGY_FAMILY), [
27
+ 'cluster',
28
+ 'namespace',
29
+ 'deployment',
30
+ 'statefulset',
31
+ 'daemonset',
32
+ 'job',
33
+ 'cronjob',
34
+ 'service',
35
+ ]);
36
+ strict_1.default.equal(src_1.INTEGRATION_TOPOLOGY_FAMILY.INTEGRATION_RESOURCE, 'integration_resource');
37
+ });
38
+ (0, node_test_1.default)('parses Gateway snake_case source-sync capabilities with extension keys', () => {
39
+ const parsed = src_1.sourceSyncCapabilitySchema.parse({
40
+ provider: 'k8s',
41
+ status: 'experimental',
42
+ source_sync_version: '2026-06-16',
43
+ supports_dry_run: true,
44
+ supports_apply: false,
45
+ supports_selected_apply: true,
46
+ supports_correlation: true,
47
+ families: ['cluster', 'namespace', 'deployment'],
48
+ locality_options: [{ kind: 'namespace', id: 'checkout', label: 'checkout' }],
49
+ non_goals: ['pod_inventory'],
50
+ gateway_registry_key: 'kubernetes-source-sync',
51
+ });
52
+ strict_1.default.equal(parsed.provider, 'k8s');
53
+ strict_1.default.equal(parsed.gateway_registry_key, 'kubernetes-source-sync');
54
+ });
55
+ (0, node_test_1.default)('parses topology source-sync intent version and options', () => {
56
+ const parsed = src_1.topologySyncIntentSchema.parse({
57
+ version: src_1.SOURCE_SYNC_INTENT_VERSION,
58
+ sources: [
59
+ {
60
+ provider: 'aws',
61
+ source_ref: { provider_account_id: '123456789012', region: 'ap-south-1' },
62
+ roots: { aws_account: ['account-123'] },
63
+ include: {
64
+ localities: [{ kind: 'region', id: 'ap-south-1' }],
65
+ families: ['account', 'vpc', 'subnet'],
66
+ },
67
+ exclude: { families: ['s3_bucket'] },
68
+ },
69
+ ],
70
+ options: {
71
+ include_correlation: true,
72
+ dry_run_only: true,
73
+ max_concurrency: 2,
74
+ },
75
+ });
76
+ strict_1.default.equal(parsed.version, 'topology.scoutflo.dev/v1');
77
+ strict_1.default.equal(parsed.options?.max_concurrency, 2);
78
+ });
79
+ (0, node_test_1.default)('parses source-sync scope, completeness, and warning boundary DTOs', () => {
80
+ strict_1.default.equal(src_1.topologySyncScopeSchema.parse({
81
+ provider: 'aws',
82
+ provider_account_id: '123456789012',
83
+ region: 'ap-south-1',
84
+ resource_families: ['vpc', 'subnet'],
85
+ scope_key: 'aws:123456789012:ap-south-1:ec2',
86
+ }).scope_key, 'aws:123456789012:ap-south-1:ec2');
87
+ strict_1.default.equal(src_1.topologySyncCompletenessSchema.parse({
88
+ overall: 'partial',
89
+ completed_scope_keys: ['aws:123456789012:ap-south-1:ec2:vpc'],
90
+ partial_scope_keys: ['aws:123456789012:ap-south-1:ec2:subnet'],
91
+ failed_scope_keys: [],
92
+ pagination_complete: false,
93
+ permission_complete: true,
94
+ }).overall, 'partial');
95
+ strict_1.default.equal(src_1.topologySyncWarningSchema.parse({
96
+ code: 'pagination_incomplete',
97
+ message: 'Subnet pagination did not complete',
98
+ affected_scope_keys: ['aws:123456789012:ap-south-1:ec2:subnet'],
99
+ details: { provider: 'aws' },
100
+ }).code, 'pagination_incomplete');
101
+ });
102
+ (0, node_test_1.default)('parses source-sync node and relationship candidate boundary DTOs', () => {
103
+ const node = src_1.topologySourceNodeCandidateSchema.parse({
104
+ entity_type: 'resource',
105
+ resource_type: 'vpc',
106
+ source_node_key: 'aws:123456789012:ap-south-1:vpc:vpc-123',
107
+ canonical_key: 'resource:aws:123456789012:ap-south-1:vpc:vpc-123',
108
+ proposed_name: 'aws-123456789012-ap-south-1-vpc-vpc-123',
109
+ display_name: 'vpc-123',
110
+ source_refs: [{
111
+ provider: 'aws',
112
+ source_node_key: 'aws:123456789012:ap-south-1:vpc:vpc-123',
113
+ scope_key: 'aws:123456789012:ap-south-1:ec2:vpc',
114
+ source_type: 'AWS::EC2::VPC',
115
+ external_id: 'vpc-123',
116
+ status: 'active',
117
+ observed_at: '2026-06-16T00:00:00.000Z',
118
+ }],
119
+ attributes: { provider: 'aws' },
120
+ source_attributes: { aws: { vpc_id: 'vpc-123' } },
121
+ observed_at: '2026-06-16T00:00:00.000Z',
122
+ });
123
+ const relationship = src_1.topologySourceRelationshipCandidateSchema.parse({
124
+ from_source_node_key: node.source_node_key,
125
+ to_source_node_key: 'aws:123456789012:global:account:123456789012',
126
+ relation: 'PART_OF',
127
+ relation_class: 'structural',
128
+ source_edge_key: 'aws:123456789012:ap-south-1:vpc-123:PART_OF:account-123456789012',
129
+ scope_key: 'aws:123456789012:ap-south-1:ec2:vpc',
130
+ canonical_key: 'relationship:aws:vpc-123:part-of:account-123456789012',
131
+ semantic_key: 'aws:123456789012:ap-south-1:structural',
132
+ assertion_type: 'observed',
133
+ confidence: 10,
134
+ confidence_source: 'source_api',
135
+ evidence: [{ type: 'source_ref', ref: node.source_node_key }],
136
+ can_retire_absent: true,
137
+ observed_at: '2026-06-16T00:00:00.000Z',
138
+ });
139
+ strict_1.default.equal(relationship.relation, 'PART_OF');
140
+ });
141
+ (0, node_test_1.default)('parses topology correlation rule metadata and candidate DTOs', () => {
142
+ const rule = src_1.topologyCorrelationRuleMetadataSchema.parse({
143
+ rule_key: 'k8s_service_selector_to_workload',
144
+ rule_version: '1.0.0',
145
+ profile_key: 'default',
146
+ relationship_lane: 'intra_source_correlated',
147
+ relationship_kind: 'deployment_binding',
148
+ relation: 'ROUTES_TO',
149
+ apply_policy: 'selected_apply',
150
+ default_min_confidence: 8,
151
+ required_endpoints: [
152
+ { entity_type: 'resource', resource_type: 'kubernetes_service' },
153
+ { entity_type: 'resource', resource_type: 'kubernetes_deployment' },
154
+ ],
155
+ evidence_policy: { selector_match: 'required' },
156
+ confidence_policy: { exact_selector_match: 9 },
157
+ ambiguity_policy: { multiple_matches: 'blocked' },
158
+ });
159
+ const candidate = src_1.topologyCorrelationCandidateSchema.parse({
160
+ candidate_key: 'candidate:k8s:svc-checkout:routes-to:deploy-api',
161
+ rule_key: rule.rule_key,
162
+ rule_version: rule.rule_version,
163
+ from: { type: 'resource', id: 'res-k8s-service' },
164
+ to: { type: 'resource', id: 'res-k8s-deployment' },
165
+ relation: rule.relation,
166
+ canonical_key: 'relationship:k8s:service:checkout:routes-to:deployment:api',
167
+ semantic_key: 'k8s:cluster-prod:namespace:checkout:routes-to',
168
+ confidence: { score: 9, source: 'source_api' },
169
+ evidence: [{ type: 'source_ref', ref: 'k8s:cluster-prod:namespace:checkout:service:checkout' }],
170
+ decision: 'ready',
171
+ diagnostics: [{ code: 'selector_match', message: 'Service selector matched one workload' }],
172
+ });
173
+ strict_1.default.equal(candidate.decision, 'ready');
174
+ });
175
+ //# sourceMappingURL=contracts.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.test.js","sourceRoot":"","sources":["../../test/contracts.test.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@scoutflo/topology-contracts",
3
+ "version": "0.1.0",
4
+ "description": "Pure shared topology vocabulary and Zod schemas for Scoutflo topology workflows.",
5
+ "main": "dist/src/index.js",
6
+ "types": "dist/src/index.d.ts",
7
+ "files": [
8
+ "dist/"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc -p tsconfig.json",
12
+ "test": "npm run build && node --test dist/test/*.test.js"
13
+ },
14
+ "keywords": [
15
+ "scoutflo",
16
+ "topology",
17
+ "contracts",
18
+ "zod"
19
+ ],
20
+ "author": "Scoutflo",
21
+ "license": "MIT",
22
+ "dependencies": {
23
+ "@scoutflo/correlation-core": "0.1.0",
24
+ "zod": "^3.23.8"
25
+ },
26
+ "devDependencies": {
27
+ "@types/node": "^20.14.10",
28
+ "typescript": "^5.5.3"
29
+ },
30
+ "publishConfig": {
31
+ "registry": "https://registry.npmjs.org",
32
+ "access": "public"
33
+ }
34
+ }