@atensec/pulumi-thoth 0.1.15 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/bin/governance/getExecutiveSummary.d.ts +2 -0
  2. package/bin/governance/getExecutiveSummary.d.ts.map +1 -1
  3. package/bin/governance/getExecutiveSummary.js.map +1 -1
  4. package/bin/governance/getReportsOverview.d.ts +3 -0
  5. package/bin/governance/getReportsOverview.d.ts.map +1 -1
  6. package/bin/governance/getReportsOverview.js.map +1 -1
  7. package/bin/governance/governanceSettings.d.ts +89 -3
  8. package/bin/governance/governanceSettings.d.ts.map +1 -1
  9. package/bin/governance/governanceSettings.js +18 -0
  10. package/bin/governance/governanceSettings.js.map +1 -1
  11. package/bin/index.d.ts +2 -1
  12. package/bin/index.d.ts.map +1 -1
  13. package/bin/index.js +3 -1
  14. package/bin/index.js.map +1 -1
  15. package/bin/mcp/vendor.d.ts +96 -0
  16. package/bin/mcp/vendor.d.ts.map +1 -1
  17. package/bin/mcp/vendor.js +16 -0
  18. package/bin/mcp/vendor.js.map +1 -1
  19. package/bin/types/index.d.ts +4 -0
  20. package/bin/types/index.d.ts.map +1 -0
  21. package/bin/types/index.js +34 -0
  22. package/bin/types/index.js.map +1 -0
  23. package/bin/types/input.d.ts +22 -0
  24. package/bin/types/input.d.ts.map +1 -0
  25. package/bin/types/input.js +5 -0
  26. package/bin/types/input.js.map +1 -0
  27. package/bin/types/output.d.ts +21 -0
  28. package/bin/types/output.d.ts.map +1 -0
  29. package/bin/types/output.js +5 -0
  30. package/bin/types/output.js.map +1 -0
  31. package/governance/getExecutiveSummary.ts +2 -0
  32. package/governance/getReportsOverview.ts +3 -0
  33. package/governance/governanceSettings.ts +103 -3
  34. package/index.ts +2 -0
  35. package/mcp/vendor.ts +112 -0
  36. package/package.json +1 -1
  37. package/tsconfig.json +3 -0
  38. package/types/index.ts +13 -0
  39. package/types/input.ts +27 -0
  40. package/types/output.ts +28 -0
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.output = exports.input = void 0;
29
+ // Export sub-modules:
30
+ const input = __importStar(require("./input"));
31
+ exports.input = input;
32
+ const output = __importStar(require("./output"));
33
+ exports.output = output;
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;;;;;;;;;;;;;;;;;;;;;;;;AAIjF,sBAAsB;AACtB,+CAAiC;AAI7B,sBAAK;AAHT,iDAAmC;AAI/B,wBAAM"}
@@ -0,0 +1,22 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ export declare namespace governance {
3
+ interface GovernanceSettingsComplianceCoverage {
4
+ /**
5
+ * Action-time controls with executable predicates.
6
+ */
7
+ enforced?: pulumi.Input<number | undefined>;
8
+ /**
9
+ * Controls classified as evidence gaps.
10
+ */
11
+ evidenceGap?: pulumi.Input<number | undefined>;
12
+ /**
13
+ * Controls outside action-time enforcement.
14
+ */
15
+ notActionTime?: pulumi.Input<number | undefined>;
16
+ /**
17
+ * Total classified controls.
18
+ */
19
+ total?: pulumi.Input<number | undefined>;
20
+ }
21
+ }
22
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../types/input.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAIzC,yBAAiB,UAAU,CAAC;IACxB,UAAiB,oCAAoC;QACjD;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC5C;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC/C;;WAEG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACjD;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;KAC5C;CACJ"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../types/input.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF"}
@@ -0,0 +1,21 @@
1
+ export declare namespace governance {
2
+ interface GovernanceSettingsComplianceCoverage {
3
+ /**
4
+ * Action-time controls with executable predicates.
5
+ */
6
+ enforced: number;
7
+ /**
8
+ * Controls classified as evidence gaps.
9
+ */
10
+ evidenceGap: number;
11
+ /**
12
+ * Controls outside action-time enforcement.
13
+ */
14
+ notActionTime: number;
15
+ /**
16
+ * Total classified controls.
17
+ */
18
+ total: number;
19
+ }
20
+ }
21
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../types/output.ts"],"names":[],"mappings":"AAOA,yBAAiB,UAAU,CAAC;IACxB,UAAiB,oCAAoC;QACjD;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,WAAW,EAAE,MAAM,CAAC;QACpB;;WAEG;QACH,aAAa,EAAE,MAAM,CAAC;QACtB;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;KACjB;CAEJ"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../types/output.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF"}
@@ -30,6 +30,8 @@ export interface GetExecutiveSummaryResult {
30
30
  * The provider-assigned unique ID for this managed resource.
31
31
  */
32
32
  readonly id: string;
33
+ readonly mcpCriticalDeviationAlerts: number;
34
+ readonly mcpDeviationAlerts: number;
33
35
  readonly rate?: number;
34
36
  readonly responseJson: string;
35
37
  }
@@ -28,6 +28,9 @@ export interface GetReportsOverviewResult {
28
28
  * The provider-assigned unique ID for this managed resource.
29
29
  */
30
30
  readonly id: string;
31
+ readonly mcpCriticalDeviationAlerts: number;
32
+ readonly mcpDeviationAlerts: number;
33
+ readonly mcpDeviationByTypeJson: string;
31
34
  readonly responseJson: string;
32
35
  }
33
36
  export function getReportsOverviewOutput(args?: GetReportsOverviewOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetReportsOverviewResult> {
@@ -2,6 +2,8 @@
2
2
  // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
3
 
4
4
  import * as pulumi from "@pulumi/pulumi";
5
+ import * as inputs from "../types/input";
6
+ import * as outputs from "../types/output";
5
7
  import * as utilities from "../utilities";
6
8
 
7
9
  export class GovernanceSettings extends pulumi.CustomResource {
@@ -32,10 +34,38 @@ export class GovernanceSettings extends pulumi.CustomResource {
32
34
  return obj['__pulumiType'] === GovernanceSettings.__pulumiType;
33
35
  }
34
36
 
37
+ /**
38
+ * Canonical declared regimes. Known during planning for known declarations.
39
+ */
40
+ declare public /*out*/ readonly canonicalRegimes: pulumi.Output<string[]>;
41
+ /**
42
+ * Pinned catalogue identity. Apply fails before mutation if the running catalogue differs.
43
+ */
44
+ declare public /*out*/ readonly complianceCatalogueSha256: pulumi.Output<string>;
45
+ /**
46
+ * Per-regime author classifications from the pinned executable catalogue, available before first apply. These counts are not a regulatory conformance assessment.
47
+ */
48
+ declare public /*out*/ readonly complianceCoverage: pulumi.Output<{[key: string]: outputs.governance.GovernanceSettingsComplianceCoverage}>;
49
+ /**
50
+ * Required with a nonempty declaration: observe evaluates and records advisory findings while preserving independent authorization; enforce adds non-grantable restrictions for DENY, STEP_UP and evidence-based UNRESOLVED. Changing mode affects every tenant agent within 1000 ms. Structurally unserved regimes report coverage gaps and add no action restriction.
51
+ */
52
+ declare public readonly complianceEnforcementMode: pulumi.Output<string | undefined>;
53
+ /**
54
+ * Pinned evaluator identity, checked before mutation.
55
+ */
56
+ declare public /*out*/ readonly complianceEvaluatorSha256: pulumi.Output<string>;
35
57
  /**
36
58
  * Compliance profile (soc2, healthcare, financial, public_sector, privacy, ai_governance).
37
59
  */
38
60
  declare public readonly complianceProfile: pulumi.Output<string | undefined>;
61
+ /**
62
+ * Revision used for optimistic concurrency. A stale apply or destroy fails without replacing a newer declaration.
63
+ */
64
+ declare public /*out*/ readonly complianceRevision: pulumi.Output<number>;
65
+ /**
66
+ * Explicit executable compliance declaration for all current and future tenant agents. Case and separators are ignored. Removing a managed declaration or setting [] clears it. Legacy profile defaults never activate this binding.
67
+ */
68
+ declare public readonly declaredRegulatoryRegimes: pulumi.Output<string[] | undefined>;
39
69
  /**
40
70
  * Additional JSON object merged into the outgoing settings payload for forward compatibility.
41
71
  */
@@ -65,7 +95,15 @@ export class GovernanceSettings extends pulumi.CustomResource {
65
95
  */
66
96
  declare public readonly modelRouterFailoverProviders: pulumi.Output<string[]>;
67
97
  /**
68
- * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Defaults to SOC2 when unset.
98
+ * Maximum positive cache lifetime for declaration changes: 1000 milliseconds.
99
+ */
100
+ declare public /*out*/ readonly propagationMaxMs: pulumi.Output<number>;
101
+ /**
102
+ * Declared regimes with no executable controls. These are coverage gaps, never a clean result or a per-action restriction.
103
+ */
104
+ declare public /*out*/ readonly regimesWithoutControls: pulumi.Output<string[]>;
105
+ /**
106
+ * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Legacy packs only; defaults to SOC2 when unset. Does not activate executable compliance.
69
107
  */
70
108
  declare public readonly regulatoryRegimes: pulumi.Output<string[] | undefined>;
71
109
  /**
@@ -134,7 +172,14 @@ export class GovernanceSettings extends pulumi.CustomResource {
134
172
  opts = opts || {};
135
173
  if (opts.id) {
136
174
  const state = argsOrState as GovernanceSettingsState | undefined;
175
+ resourceInputs["canonicalRegimes"] = state?.canonicalRegimes;
176
+ resourceInputs["complianceCatalogueSha256"] = state?.complianceCatalogueSha256;
177
+ resourceInputs["complianceCoverage"] = state?.complianceCoverage;
178
+ resourceInputs["complianceEnforcementMode"] = state?.complianceEnforcementMode;
179
+ resourceInputs["complianceEvaluatorSha256"] = state?.complianceEvaluatorSha256;
137
180
  resourceInputs["complianceProfile"] = state?.complianceProfile;
181
+ resourceInputs["complianceRevision"] = state?.complianceRevision;
182
+ resourceInputs["declaredRegulatoryRegimes"] = state?.declaredRegulatoryRegimes;
138
183
  resourceInputs["extraSettingsJson"] = state?.extraSettingsJson;
139
184
  resourceInputs["modelRouterAllowedModels"] = state?.modelRouterAllowedModels;
140
185
  resourceInputs["modelRouterAllowedProviders"] = state?.modelRouterAllowedProviders;
@@ -142,6 +187,8 @@ export class GovernanceSettings extends pulumi.CustomResource {
142
187
  resourceInputs["modelRouterDefaultProvider"] = state?.modelRouterDefaultProvider;
143
188
  resourceInputs["modelRouterEnabled"] = state?.modelRouterEnabled;
144
189
  resourceInputs["modelRouterFailoverProviders"] = state?.modelRouterFailoverProviders;
190
+ resourceInputs["propagationMaxMs"] = state?.propagationMaxMs;
191
+ resourceInputs["regimesWithoutControls"] = state?.regimesWithoutControls;
145
192
  resourceInputs["regulatoryRegimes"] = state?.regulatoryRegimes;
146
193
  resourceInputs["secretBrokerAllowedHosts"] = state?.secretBrokerAllowedHosts;
147
194
  resourceInputs["secretBrokerAuthBindingsJson"] = state?.secretBrokerAuthBindingsJson;
@@ -158,7 +205,9 @@ export class GovernanceSettings extends pulumi.CustomResource {
158
205
  resourceInputs["updatedAt"] = state?.updatedAt;
159
206
  } else {
160
207
  const args = argsOrState as GovernanceSettingsArgs | undefined;
208
+ resourceInputs["complianceEnforcementMode"] = args?.complianceEnforcementMode;
161
209
  resourceInputs["complianceProfile"] = args?.complianceProfile;
210
+ resourceInputs["declaredRegulatoryRegimes"] = args?.declaredRegulatoryRegimes;
162
211
  resourceInputs["extraSettingsJson"] = args?.extraSettingsJson;
163
212
  resourceInputs["modelRouterAllowedModels"] = args?.modelRouterAllowedModels;
164
213
  resourceInputs["modelRouterAllowedProviders"] = args?.modelRouterAllowedProviders;
@@ -178,6 +227,13 @@ export class GovernanceSettings extends pulumi.CustomResource {
178
227
  resourceInputs["shadowLow"] = args?.shadowLow;
179
228
  resourceInputs["shadowMedium"] = args?.shadowMedium;
180
229
  resourceInputs["toolRiskOverrides"] = args?.toolRiskOverrides;
230
+ resourceInputs["canonicalRegimes"] = undefined /*out*/;
231
+ resourceInputs["complianceCatalogueSha256"] = undefined /*out*/;
232
+ resourceInputs["complianceCoverage"] = undefined /*out*/;
233
+ resourceInputs["complianceEvaluatorSha256"] = undefined /*out*/;
234
+ resourceInputs["complianceRevision"] = undefined /*out*/;
235
+ resourceInputs["propagationMaxMs"] = undefined /*out*/;
236
+ resourceInputs["regimesWithoutControls"] = undefined /*out*/;
181
237
  resourceInputs["tenantId"] = undefined /*out*/;
182
238
  resourceInputs["updatedAt"] = undefined /*out*/;
183
239
  }
@@ -190,10 +246,38 @@ export class GovernanceSettings extends pulumi.CustomResource {
190
246
  * Input properties used for looking up and filtering GovernanceSettings resources.
191
247
  */
192
248
  export interface GovernanceSettingsState {
249
+ /**
250
+ * Canonical declared regimes. Known during planning for known declarations.
251
+ */
252
+ canonicalRegimes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
253
+ /**
254
+ * Pinned catalogue identity. Apply fails before mutation if the running catalogue differs.
255
+ */
256
+ complianceCatalogueSha256?: pulumi.Input<string | undefined>;
257
+ /**
258
+ * Per-regime author classifications from the pinned executable catalogue, available before first apply. These counts are not a regulatory conformance assessment.
259
+ */
260
+ complianceCoverage?: pulumi.Input<{[key: string]: pulumi.Input<inputs.governance.GovernanceSettingsComplianceCoverage>} | undefined>;
261
+ /**
262
+ * Required with a nonempty declaration: observe evaluates and records advisory findings while preserving independent authorization; enforce adds non-grantable restrictions for DENY, STEP_UP and evidence-based UNRESOLVED. Changing mode affects every tenant agent within 1000 ms. Structurally unserved regimes report coverage gaps and add no action restriction.
263
+ */
264
+ complianceEnforcementMode?: pulumi.Input<string | undefined>;
265
+ /**
266
+ * Pinned evaluator identity, checked before mutation.
267
+ */
268
+ complianceEvaluatorSha256?: pulumi.Input<string | undefined>;
193
269
  /**
194
270
  * Compliance profile (soc2, healthcare, financial, public_sector, privacy, ai_governance).
195
271
  */
196
272
  complianceProfile?: pulumi.Input<string | undefined>;
273
+ /**
274
+ * Revision used for optimistic concurrency. A stale apply or destroy fails without replacing a newer declaration.
275
+ */
276
+ complianceRevision?: pulumi.Input<number | undefined>;
277
+ /**
278
+ * Explicit executable compliance declaration for all current and future tenant agents. Case and separators are ignored. Removing a managed declaration or setting [] clears it. Legacy profile defaults never activate this binding.
279
+ */
280
+ declaredRegulatoryRegimes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
197
281
  /**
198
282
  * Additional JSON object merged into the outgoing settings payload for forward compatibility.
199
283
  */
@@ -223,7 +307,15 @@ export interface GovernanceSettingsState {
223
307
  */
224
308
  modelRouterFailoverProviders?: pulumi.Input<pulumi.Input<string>[] | undefined>;
225
309
  /**
226
- * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Defaults to SOC2 when unset.
310
+ * Maximum positive cache lifetime for declaration changes: 1000 milliseconds.
311
+ */
312
+ propagationMaxMs?: pulumi.Input<number | undefined>;
313
+ /**
314
+ * Declared regimes with no executable controls. These are coverage gaps, never a clean result or a per-action restriction.
315
+ */
316
+ regimesWithoutControls?: pulumi.Input<pulumi.Input<string>[] | undefined>;
317
+ /**
318
+ * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Legacy packs only; defaults to SOC2 when unset. Does not activate executable compliance.
227
319
  */
228
320
  regulatoryRegimes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
229
321
  /**
@@ -284,10 +376,18 @@ export interface GovernanceSettingsState {
284
376
  * The set of arguments for constructing a GovernanceSettings resource.
285
377
  */
286
378
  export interface GovernanceSettingsArgs {
379
+ /**
380
+ * Required with a nonempty declaration: observe evaluates and records advisory findings while preserving independent authorization; enforce adds non-grantable restrictions for DENY, STEP_UP and evidence-based UNRESOLVED. Changing mode affects every tenant agent within 1000 ms. Structurally unserved regimes report coverage gaps and add no action restriction.
381
+ */
382
+ complianceEnforcementMode?: pulumi.Input<string | undefined>;
287
383
  /**
288
384
  * Compliance profile (soc2, healthcare, financial, public_sector, privacy, ai_governance).
289
385
  */
290
386
  complianceProfile?: pulumi.Input<string | undefined>;
387
+ /**
388
+ * Explicit executable compliance declaration for all current and future tenant agents. Case and separators are ignored. Removing a managed declaration or setting [] clears it. Legacy profile defaults never activate this binding.
389
+ */
390
+ declaredRegulatoryRegimes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
291
391
  /**
292
392
  * Additional JSON object merged into the outgoing settings payload for forward compatibility.
293
393
  */
@@ -317,7 +417,7 @@ export interface GovernanceSettingsArgs {
317
417
  */
318
418
  modelRouterFailoverProviders?: pulumi.Input<pulumi.Input<string>[] | undefined>;
319
419
  /**
320
- * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Defaults to SOC2 when unset.
420
+ * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Legacy packs only; defaults to SOC2 when unset. Does not activate executable compliance.
321
421
  */
322
422
  regulatoryRegimes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
323
423
  /**
package/index.ts CHANGED
@@ -18,6 +18,7 @@ import * as fleet from "./fleet";
18
18
  import * as governance from "./governance";
19
19
  import * as mcp from "./mcp";
20
20
  import * as mdm from "./mdm";
21
+ import * as types from "./types";
21
22
 
22
23
  export {
23
24
  access,
@@ -28,6 +29,7 @@ export {
28
29
  governance,
29
30
  mcp,
30
31
  mdm,
32
+ types,
31
33
  };
32
34
  pulumi.runtime.registerResourcePackage("thoth", {
33
35
  version: utilities.getVersion(),
package/mcp/vendor.ts CHANGED
@@ -36,6 +36,10 @@ export class Vendor extends pulumi.CustomResource {
36
36
  * Whether this vendor is approved for pass-through MCP host access.
37
37
  */
38
38
  declare public readonly approved: pulumi.Output<boolean>;
39
+ /**
40
+ * Capability bindings this vendor/runtime identity is allowed to request.
41
+ */
42
+ declare public readonly capabilities: pulumi.Output<string[]>;
39
43
  /**
40
44
  * Creation timestamp.
41
45
  */
@@ -44,6 +48,14 @@ export class Vendor extends pulumi.CustomResource {
44
48
  * Human-friendly vendor display name.
45
49
  */
46
50
  declare public readonly displayName: pulumi.Output<string>;
51
+ /**
52
+ * Allowed egress host patterns enforced for this vendor/runtime identity.
53
+ */
54
+ declare public readonly egressAllowedHostPatterns: pulumi.Output<string[]>;
55
+ /**
56
+ * Egress policy mode for vendor traffic (enforce or observe).
57
+ */
58
+ declare public readonly egressPolicyMode: pulumi.Output<string>;
47
59
  /**
48
60
  * Allowed host patterns for this vendor (for example api.openai.com).
49
61
  */
@@ -52,10 +64,30 @@ export class Vendor extends pulumi.CustomResource {
52
64
  * Last observed timestamp (RFC3339) for this vendor in runtime traffic.
53
65
  */
54
66
  declare public readonly lastSeenAt: pulumi.Output<string>;
67
+ /**
68
+ * Signature bundle reference used for manifest verification.
69
+ */
70
+ declare public readonly manifestSignatureBundleRef: pulumi.Output<string>;
71
+ /**
72
+ * Signer identity for verified manifest signatures.
73
+ */
74
+ declare public readonly manifestSignatureSigner: pulumi.Output<string>;
75
+ /**
76
+ * Manifest signature verification status (verified, pending, failed).
77
+ */
78
+ declare public readonly manifestSignatureStatus: pulumi.Output<string>;
79
+ /**
80
+ * RFC3339 timestamp when manifest signature was verified.
81
+ */
82
+ declare public readonly manifestSignatureVerifiedAt: pulumi.Output<string>;
55
83
  /**
56
84
  * Optional reviewer notes for this vendor entry.
57
85
  */
58
86
  declare public readonly notes: pulumi.Output<string | undefined>;
87
+ /**
88
+ * Capability-scoped runtime identity used at action-time enforcement.
89
+ */
90
+ declare public readonly runtimeIdentity: pulumi.Output<string>;
59
91
  /**
60
92
  * Vendor entry source (for example manual, discovered).
61
93
  */
@@ -87,11 +119,19 @@ export class Vendor extends pulumi.CustomResource {
87
119
  if (opts.id) {
88
120
  const state = argsOrState as VendorState | undefined;
89
121
  resourceInputs["approved"] = state?.approved;
122
+ resourceInputs["capabilities"] = state?.capabilities;
90
123
  resourceInputs["createdAt"] = state?.createdAt;
91
124
  resourceInputs["displayName"] = state?.displayName;
125
+ resourceInputs["egressAllowedHostPatterns"] = state?.egressAllowedHostPatterns;
126
+ resourceInputs["egressPolicyMode"] = state?.egressPolicyMode;
92
127
  resourceInputs["hostPatterns"] = state?.hostPatterns;
93
128
  resourceInputs["lastSeenAt"] = state?.lastSeenAt;
129
+ resourceInputs["manifestSignatureBundleRef"] = state?.manifestSignatureBundleRef;
130
+ resourceInputs["manifestSignatureSigner"] = state?.manifestSignatureSigner;
131
+ resourceInputs["manifestSignatureStatus"] = state?.manifestSignatureStatus;
132
+ resourceInputs["manifestSignatureVerifiedAt"] = state?.manifestSignatureVerifiedAt;
94
133
  resourceInputs["notes"] = state?.notes;
134
+ resourceInputs["runtimeIdentity"] = state?.runtimeIdentity;
95
135
  resourceInputs["source"] = state?.source;
96
136
  resourceInputs["tenantId"] = state?.tenantId;
97
137
  resourceInputs["updatedAt"] = state?.updatedAt;
@@ -108,10 +148,18 @@ export class Vendor extends pulumi.CustomResource {
108
148
  throw new Error("Missing required property 'vendorId'");
109
149
  }
110
150
  resourceInputs["approved"] = args?.approved;
151
+ resourceInputs["capabilities"] = args?.capabilities;
111
152
  resourceInputs["displayName"] = args?.displayName;
153
+ resourceInputs["egressAllowedHostPatterns"] = args?.egressAllowedHostPatterns;
154
+ resourceInputs["egressPolicyMode"] = args?.egressPolicyMode;
112
155
  resourceInputs["hostPatterns"] = args?.hostPatterns;
113
156
  resourceInputs["lastSeenAt"] = args?.lastSeenAt;
157
+ resourceInputs["manifestSignatureBundleRef"] = args?.manifestSignatureBundleRef;
158
+ resourceInputs["manifestSignatureSigner"] = args?.manifestSignatureSigner;
159
+ resourceInputs["manifestSignatureStatus"] = args?.manifestSignatureStatus;
160
+ resourceInputs["manifestSignatureVerifiedAt"] = args?.manifestSignatureVerifiedAt;
114
161
  resourceInputs["notes"] = args?.notes;
162
+ resourceInputs["runtimeIdentity"] = args?.runtimeIdentity;
115
163
  resourceInputs["source"] = args?.source;
116
164
  resourceInputs["vendorId"] = args?.vendorId;
117
165
  resourceInputs["createdAt"] = undefined /*out*/;
@@ -131,6 +179,10 @@ export interface VendorState {
131
179
  * Whether this vendor is approved for pass-through MCP host access.
132
180
  */
133
181
  approved?: pulumi.Input<boolean | undefined>;
182
+ /**
183
+ * Capability bindings this vendor/runtime identity is allowed to request.
184
+ */
185
+ capabilities?: pulumi.Input<pulumi.Input<string>[] | undefined>;
134
186
  /**
135
187
  * Creation timestamp.
136
188
  */
@@ -139,6 +191,14 @@ export interface VendorState {
139
191
  * Human-friendly vendor display name.
140
192
  */
141
193
  displayName?: pulumi.Input<string | undefined>;
194
+ /**
195
+ * Allowed egress host patterns enforced for this vendor/runtime identity.
196
+ */
197
+ egressAllowedHostPatterns?: pulumi.Input<pulumi.Input<string>[] | undefined>;
198
+ /**
199
+ * Egress policy mode for vendor traffic (enforce or observe).
200
+ */
201
+ egressPolicyMode?: pulumi.Input<string | undefined>;
142
202
  /**
143
203
  * Allowed host patterns for this vendor (for example api.openai.com).
144
204
  */
@@ -147,10 +207,30 @@ export interface VendorState {
147
207
  * Last observed timestamp (RFC3339) for this vendor in runtime traffic.
148
208
  */
149
209
  lastSeenAt?: pulumi.Input<string | undefined>;
210
+ /**
211
+ * Signature bundle reference used for manifest verification.
212
+ */
213
+ manifestSignatureBundleRef?: pulumi.Input<string | undefined>;
214
+ /**
215
+ * Signer identity for verified manifest signatures.
216
+ */
217
+ manifestSignatureSigner?: pulumi.Input<string | undefined>;
218
+ /**
219
+ * Manifest signature verification status (verified, pending, failed).
220
+ */
221
+ manifestSignatureStatus?: pulumi.Input<string | undefined>;
222
+ /**
223
+ * RFC3339 timestamp when manifest signature was verified.
224
+ */
225
+ manifestSignatureVerifiedAt?: pulumi.Input<string | undefined>;
150
226
  /**
151
227
  * Optional reviewer notes for this vendor entry.
152
228
  */
153
229
  notes?: pulumi.Input<string | undefined>;
230
+ /**
231
+ * Capability-scoped runtime identity used at action-time enforcement.
232
+ */
233
+ runtimeIdentity?: pulumi.Input<string | undefined>;
154
234
  /**
155
235
  * Vendor entry source (for example manual, discovered).
156
236
  */
@@ -177,10 +257,22 @@ export interface VendorArgs {
177
257
  * Whether this vendor is approved for pass-through MCP host access.
178
258
  */
179
259
  approved?: pulumi.Input<boolean | undefined>;
260
+ /**
261
+ * Capability bindings this vendor/runtime identity is allowed to request.
262
+ */
263
+ capabilities?: pulumi.Input<pulumi.Input<string>[] | undefined>;
180
264
  /**
181
265
  * Human-friendly vendor display name.
182
266
  */
183
267
  displayName: pulumi.Input<string>;
268
+ /**
269
+ * Allowed egress host patterns enforced for this vendor/runtime identity.
270
+ */
271
+ egressAllowedHostPatterns?: pulumi.Input<pulumi.Input<string>[] | undefined>;
272
+ /**
273
+ * Egress policy mode for vendor traffic (enforce or observe).
274
+ */
275
+ egressPolicyMode?: pulumi.Input<string | undefined>;
184
276
  /**
185
277
  * Allowed host patterns for this vendor (for example api.openai.com).
186
278
  */
@@ -189,10 +281,30 @@ export interface VendorArgs {
189
281
  * Last observed timestamp (RFC3339) for this vendor in runtime traffic.
190
282
  */
191
283
  lastSeenAt?: pulumi.Input<string | undefined>;
284
+ /**
285
+ * Signature bundle reference used for manifest verification.
286
+ */
287
+ manifestSignatureBundleRef?: pulumi.Input<string | undefined>;
288
+ /**
289
+ * Signer identity for verified manifest signatures.
290
+ */
291
+ manifestSignatureSigner?: pulumi.Input<string | undefined>;
292
+ /**
293
+ * Manifest signature verification status (verified, pending, failed).
294
+ */
295
+ manifestSignatureStatus?: pulumi.Input<string | undefined>;
296
+ /**
297
+ * RFC3339 timestamp when manifest signature was verified.
298
+ */
299
+ manifestSignatureVerifiedAt?: pulumi.Input<string | undefined>;
192
300
  /**
193
301
  * Optional reviewer notes for this vendor entry.
194
302
  */
195
303
  notes?: pulumi.Input<string | undefined>;
304
+ /**
305
+ * Capability-scoped runtime identity used at action-time enforcement.
306
+ */
307
+ runtimeIdentity?: pulumi.Input<string | undefined>;
196
308
  /**
197
309
  * Vendor entry source (for example manual, discovered).
198
310
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atensec/pulumi-thoth",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "description": "Pulumi provider for Aten Security Thoth AI governance control plane.",
5
5
  "keywords": [
6
6
  "pulumi",
package/tsconfig.json CHANGED
@@ -110,6 +110,9 @@
110
110
  "mdm/provider.ts",
111
111
  "mdm/sync.ts",
112
112
  "provider.ts",
113
+ "types/index.ts",
114
+ "types/input.ts",
115
+ "types/output.ts",
113
116
  "utilities.ts"
114
117
  ]
115
118
  }
package/types/index.ts ADDED
@@ -0,0 +1,13 @@
1
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
2
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
+
4
+ import * as utilities from "../utilities";
5
+
6
+ // Export sub-modules:
7
+ import * as input from "./input";
8
+ import * as output from "./output";
9
+
10
+ export {
11
+ input,
12
+ output,
13
+ };
package/types/input.ts ADDED
@@ -0,0 +1,27 @@
1
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
2
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
+
4
+ import * as pulumi from "@pulumi/pulumi";
5
+ import * as inputs from "../types/input";
6
+ import * as outputs from "../types/output";
7
+
8
+ export namespace governance {
9
+ export interface GovernanceSettingsComplianceCoverage {
10
+ /**
11
+ * Action-time controls with executable predicates.
12
+ */
13
+ enforced?: pulumi.Input<number | undefined>;
14
+ /**
15
+ * Controls classified as evidence gaps.
16
+ */
17
+ evidenceGap?: pulumi.Input<number | undefined>;
18
+ /**
19
+ * Controls outside action-time enforcement.
20
+ */
21
+ notActionTime?: pulumi.Input<number | undefined>;
22
+ /**
23
+ * Total classified controls.
24
+ */
25
+ total?: pulumi.Input<number | undefined>;
26
+ }
27
+ }
@@ -0,0 +1,28 @@
1
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
2
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
+
4
+ import * as pulumi from "@pulumi/pulumi";
5
+ import * as inputs from "../types/input";
6
+ import * as outputs from "../types/output";
7
+
8
+ export namespace governance {
9
+ export interface GovernanceSettingsComplianceCoverage {
10
+ /**
11
+ * Action-time controls with executable predicates.
12
+ */
13
+ enforced: number;
14
+ /**
15
+ * Controls classified as evidence gaps.
16
+ */
17
+ evidenceGap: number;
18
+ /**
19
+ * Controls outside action-time enforcement.
20
+ */
21
+ notActionTime: number;
22
+ /**
23
+ * Total classified controls.
24
+ */
25
+ total: number;
26
+ }
27
+
28
+ }