@apexops/capabilities 0.10.0-next.4 → 0.11.0-next.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 (93) hide show
  1. package/README.md +26 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/archetype-source.d.ts +49 -0
  4. package/dist/archetype-source.d.ts.map +1 -0
  5. package/dist/archetype-source.js +421 -0
  6. package/dist/archetype-source.js.map +1 -0
  7. package/dist/bound-envelope-transport.js +1 -1
  8. package/dist/bound-envelope-transport.js.map +1 -1
  9. package/dist/executable-resolution.d.ts +21 -0
  10. package/dist/executable-resolution.d.ts.map +1 -0
  11. package/dist/executable-resolution.js +87 -0
  12. package/dist/executable-resolution.js.map +1 -0
  13. package/dist/governance-baseline.d.ts +87 -0
  14. package/dist/governance-baseline.d.ts.map +1 -0
  15. package/dist/governance-baseline.js +639 -0
  16. package/dist/governance-baseline.js.map +1 -0
  17. package/dist/governance-setup.d.ts +13 -0
  18. package/dist/governance-setup.d.ts.map +1 -0
  19. package/dist/governance-setup.js +231 -0
  20. package/dist/governance-setup.js.map +1 -0
  21. package/dist/iac-generation.d.ts.map +1 -1
  22. package/dist/iac-generation.js +56 -20
  23. package/dist/iac-generation.js.map +1 -1
  24. package/dist/iac-normalizers.d.ts.map +1 -1
  25. package/dist/iac-normalizers.js +19 -1
  26. package/dist/iac-normalizers.js.map +1 -1
  27. package/dist/iac.d.ts +30 -2
  28. package/dist/iac.d.ts.map +1 -1
  29. package/dist/iac.js.map +1 -1
  30. package/dist/index.d.ts +6 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +6 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/native-iac-providers.d.ts +20 -4
  35. package/dist/native-iac-providers.d.ts.map +1 -1
  36. package/dist/native-iac-providers.js +591 -27
  37. package/dist/native-iac-providers.js.map +1 -1
  38. package/dist/pack-manager.d.ts.map +1 -1
  39. package/dist/pack-manager.js +15 -14
  40. package/dist/pack-manager.js.map +1 -1
  41. package/dist/policy-validation.d.ts +68 -0
  42. package/dist/policy-validation.d.ts.map +1 -0
  43. package/dist/policy-validation.js +653 -0
  44. package/dist/policy-validation.js.map +1 -0
  45. package/dist/process-runner.d.ts.map +1 -1
  46. package/dist/process-runner.js +10 -1
  47. package/dist/process-runner.js.map +1 -1
  48. package/dist/rename-retry.d.ts +12 -0
  49. package/dist/rename-retry.d.ts.map +1 -0
  50. package/dist/rename-retry.js +27 -0
  51. package/dist/rename-retry.js.map +1 -0
  52. package/dist/repository-publish.d.ts +17 -0
  53. package/dist/repository-publish.d.ts.map +1 -0
  54. package/dist/repository-publish.js +124 -0
  55. package/dist/repository-publish.js.map +1 -0
  56. package/dist/terraform-provider-schema.d.ts.map +1 -1
  57. package/dist/terraform-provider-schema.js +6 -2
  58. package/dist/terraform-provider-schema.js.map +1 -1
  59. package/dist/test/archetype-source.test.d.ts +2 -0
  60. package/dist/test/archetype-source.test.d.ts.map +1 -0
  61. package/dist/test/archetype-source.test.js +258 -0
  62. package/dist/test/archetype-source.test.js.map +1 -0
  63. package/dist/test/executable-resolution.test.d.ts +2 -0
  64. package/dist/test/executable-resolution.test.d.ts.map +1 -0
  65. package/dist/test/executable-resolution.test.js +87 -0
  66. package/dist/test/executable-resolution.test.js.map +1 -0
  67. package/dist/test/governance-baseline.test.d.ts +2 -0
  68. package/dist/test/governance-baseline.test.d.ts.map +1 -0
  69. package/dist/test/governance-baseline.test.js +841 -0
  70. package/dist/test/governance-baseline.test.js.map +1 -0
  71. package/dist/test/governance-setup.test.d.ts +2 -0
  72. package/dist/test/governance-setup.test.d.ts.map +1 -0
  73. package/dist/test/governance-setup.test.js +160 -0
  74. package/dist/test/governance-setup.test.js.map +1 -0
  75. package/dist/test/iac-generation.test.js +203 -14
  76. package/dist/test/iac-generation.test.js.map +1 -1
  77. package/dist/test/native-iac-providers.test.js +1482 -5
  78. package/dist/test/native-iac-providers.test.js.map +1 -1
  79. package/dist/test/policy-validation.test.d.ts +2 -0
  80. package/dist/test/policy-validation.test.d.ts.map +1 -0
  81. package/dist/test/policy-validation.test.js +1061 -0
  82. package/dist/test/policy-validation.test.js.map +1 -0
  83. package/dist/test/rename-retry.test.d.ts +2 -0
  84. package/dist/test/rename-retry.test.d.ts.map +1 -0
  85. package/dist/test/rename-retry.test.js +25 -0
  86. package/dist/test/rename-retry.test.js.map +1 -0
  87. package/dist/test/repository-publish.test.d.ts +2 -0
  88. package/dist/test/repository-publish.test.d.ts.map +1 -0
  89. package/dist/test/repository-publish.test.js +123 -0
  90. package/dist/test/repository-publish.test.js.map +1 -0
  91. package/dist/test/terraform-provider-schema.test.js +12 -6
  92. package/dist/test/terraform-provider-schema.test.js.map +1 -1
  93. package/package.json +3 -3
@@ -0,0 +1,87 @@
1
+ import { accessSync, constants, statSync } from "node:fs";
2
+ import { posix, win32 } from "node:path";
3
+ const DEFAULT_PATHEXT = ".COM;.EXE;.BAT;.CMD";
4
+ function environmentValue(env, name, platform) {
5
+ if (platform !== "win32")
6
+ return env[name];
7
+ // Windows environment names are case-insensitive. Like Node, when PATH and Path both exist use the key that sorts first,
8
+ // so resolution sees the same value the child process receives.
9
+ const key = Object.keys(env)
10
+ .filter((candidate) => candidate.toUpperCase() === name)
11
+ .sort()[0];
12
+ return key === undefined ? undefined : env[key];
13
+ }
14
+ function defaultIsExecutableFile(path, platform) {
15
+ try {
16
+ if (!statSync(path).isFile())
17
+ return false;
18
+ if (platform !== "win32")
19
+ accessSync(path, constants.X_OK);
20
+ return true;
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ /**
27
+ * Resolve a bare executable name the way the platform shell would. Node does not apply PATHEXT when spawning on
28
+ * Windows, so `az` and `npm` (installed as `az.cmd` and `npm.cmd`) are otherwise not found.
29
+ */
30
+ export function resolveExecutable(executable, options = {}) {
31
+ const platform = options.platform ?? process.platform;
32
+ const env = options.env ?? process.env;
33
+ const isExecutableFile = options.isExecutableFile ?? defaultIsExecutableFile;
34
+ const path = platform === "win32" ? win32 : posix;
35
+ const extensions = platform === "win32"
36
+ ? (environmentValue(env, "PATHEXT", platform) ?? DEFAULT_PATHEXT)
37
+ .split(";")
38
+ .map((extension) => extension.trim().toLowerCase())
39
+ .filter((extension) => extension.startsWith("."))
40
+ : [""];
41
+ const candidatesFor = (base) => {
42
+ if (platform !== "win32")
43
+ return [base];
44
+ const extension = path.extname(base).toLowerCase();
45
+ return extensions.includes(extension) ? [base] : extensions.map((suffix) => `${base}${suffix}`);
46
+ };
47
+ const hasDirectory = executable.includes("/") || (platform === "win32" && executable.includes("\\"));
48
+ if (hasDirectory || path.isAbsolute(executable))
49
+ return candidatesFor(executable).find((candidate) => isExecutableFile(candidate, platform));
50
+ const directories = (environmentValue(env, "PATH", platform) ?? "")
51
+ .split(path.delimiter)
52
+ .map((directory) => directory.trim().replace(/^"(.*)"$/u, "$1"))
53
+ .filter((directory) => directory.length > 0);
54
+ for (const directory of directories) {
55
+ const found = candidatesFor(path.join(directory, executable)).find((candidate) => isExecutableFile(candidate, platform));
56
+ if (found !== undefined)
57
+ return found;
58
+ }
59
+ return undefined;
60
+ }
61
+ function quoteForCmd(value) {
62
+ // cmd.exe expands %VAR% and !VAR! even inside quotes and cannot carry quotes or line breaks in an argument.
63
+ if (/["%!\r\n\0]/u.test(value))
64
+ throw new TypeError("Argument cannot be passed safely to a Windows command script");
65
+ return value.length === 0 || /[\s&|<>()^,;=]/u.test(value) ? `"${value}"` : value;
66
+ }
67
+ /**
68
+ * Plan a no-shell launch. Windows `.cmd` and `.bat` files cannot be spawned directly, and `shell: true` with an
69
+ * argument array is deprecated (DEP0190), so they run through `cmd.exe /d /s /c` with one validated command line.
70
+ */
71
+ export function planLaunch(executable, args, options = {}) {
72
+ const platform = options.platform ?? process.platform;
73
+ const resolved = resolveExecutable(executable, options);
74
+ if (resolved === undefined)
75
+ return { command: executable, args: [...args], windowsVerbatimArguments: false };
76
+ if (platform === "win32" && /\.(?:cmd|bat)$/iu.test(resolved)) {
77
+ const env = options.env ?? process.env;
78
+ const commandLine = [resolved, ...args].map(quoteForCmd).join(" ");
79
+ return {
80
+ command: environmentValue(env, "COMSPEC", platform) ?? "cmd.exe",
81
+ args: ["/d", "/s", "/c", `"${commandLine}"`],
82
+ windowsVerbatimArguments: true,
83
+ };
84
+ }
85
+ return { command: resolved, args: [...args], windowsVerbatimArguments: false };
86
+ }
87
+ //# sourceMappingURL=executable-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable-resolution.js","sourceRoot":"","sources":["../src/executable-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAczC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C,SAAS,gBAAgB,CAAC,GAAsB,EAAE,IAAY,EAAE,QAAyB;IACvF,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,yHAAyH;IACzH,gEAAgE;IAChE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;SACvD,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACb,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY,EAAE,QAAyB;IACtE,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,QAAQ,KAAK,OAAO;YAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,OAAO,GAAgC,EAAE;IAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,uBAAuB,CAAC;IAC7E,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,MAAM,UAAU,GACd,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC;aAC5D,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;aAClD,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,aAAa,GAAG,CAAC,IAAY,EAAY,EAAE;QAC/C,IAAI,QAAQ,KAAK,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrG,IAAI,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC7C,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9F,MAAM,WAAW,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;SAChE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SACrB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAC/D,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAC/E,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CACtC,CAAC;QACF,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,4GAA4G;IAC5G,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;IACpH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACpF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,UAAkB,EAClB,IAAuB,EACvB,OAAO,GAAgC,EAAE;IAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;IAC7G,IAAI,QAAQ,KAAK,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACvC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnE,OAAO;YACL,OAAO,EAAE,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,SAAS;YAChE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,WAAW,GAAG,CAAC;YAC5C,wBAAwB,EAAE,IAAI;SAC/B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;AACjF,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { type GovernanceConstraintsV1 } from "@apexops/contracts";
2
+ export type GovernanceBaselineErrorCode = "invalid-input" | "invalid-options" | "incomplete" | "stale" | "target-mismatch";
3
+ export declare class GovernanceBaselineError extends Error {
4
+ readonly code: GovernanceBaselineErrorCode;
5
+ constructor(code: GovernanceBaselineErrorCode);
6
+ }
7
+ export interface GovernanceBaselineImportOptions {
8
+ readonly subscriptionId: string;
9
+ readonly targetScope?: string;
10
+ readonly now: string;
11
+ }
12
+ export type GovernanceBaselineValidator = (input: unknown) => boolean;
13
+ export type GovernanceBaselineRoot = {
14
+ readonly kind: "management-group";
15
+ readonly managementGroupId: string;
16
+ } | {
17
+ readonly kind: "subscription";
18
+ readonly subscriptionId: string;
19
+ };
20
+ export type GovernanceBaselineJsonValue = null | boolean | number | string | readonly GovernanceBaselineJsonValue[] | {
21
+ readonly [key: string]: GovernanceBaselineJsonValue;
22
+ };
23
+ export interface GovernanceBaselineFinding {
24
+ readonly policyId: string;
25
+ readonly assignmentId: string;
26
+ readonly policyDefinitionReferenceId?: string;
27
+ readonly requiredValue?: GovernanceBaselineJsonValue;
28
+ readonly effectiveParameters?: {
29
+ readonly [key: string]: GovernanceBaselineJsonValue;
30
+ };
31
+ readonly displayName: string;
32
+ readonly scope: string;
33
+ readonly effect: "deny" | "audit" | "auditIfNotExists" | "append" | "modify" | "deployIfNotExists" | "disabled";
34
+ readonly enforcementMode?: "Default" | "DoNotEnforce";
35
+ readonly classification: "blocker" | "auto-remediate" | "informational";
36
+ readonly resourceTypes: readonly string[];
37
+ readonly mappingStatus: "unmapped";
38
+ readonly reportedExemptions?: readonly NonNullable<GovernanceBaselineFinding["exemption"]>[];
39
+ readonly exemption: null | {
40
+ readonly id?: string;
41
+ readonly scope?: string;
42
+ readonly expiresOn?: string | null;
43
+ readonly category: "Waiver" | "Mitigated";
44
+ readonly policyDefinitionReferenceIds: readonly string[];
45
+ readonly verificationStatus: "unverified";
46
+ };
47
+ }
48
+ export interface GovernanceBaselineSelection {
49
+ readonly snapshot: {
50
+ readonly schemaVersion: "governance-baseline-selection-v2";
51
+ readonly subscriptionId: string;
52
+ readonly targetScope?: string;
53
+ readonly contentHash: string;
54
+ readonly provenance: {
55
+ readonly root: GovernanceBaselineRoot;
56
+ readonly source: "github-actions-baseline" | "alz-corp-reference";
57
+ readonly reference?: {
58
+ readonly release: string;
59
+ readonly commit: string;
60
+ };
61
+ readonly discoveryStatus: "COMPLETE";
62
+ readonly managementGroups: readonly string[];
63
+ readonly completenessSignature: string;
64
+ readonly signatureStatus: "unverified";
65
+ };
66
+ readonly findings: readonly GovernanceBaselineFinding[];
67
+ readonly tagsRequired: readonly {
68
+ readonly name: string;
69
+ readonly allowedValues?: readonly string[];
70
+ readonly default?: string;
71
+ }[];
72
+ readonly allowedLocations: readonly string[];
73
+ readonly reconciliationRequired: true;
74
+ };
75
+ readonly constraints: Pick<GovernanceConstraintsV1, "schemaVersion" | "targetScope" | "discoveredAt" | "expiresAt" | "summary">;
76
+ }
77
+ export declare function importGovernanceBaseline(input: unknown, options: GovernanceBaselineImportOptions, validateBaseline: GovernanceBaselineValidator): GovernanceBaselineSelection;
78
+ export declare function inspectGovernanceBaseline(input: unknown, options: GovernanceBaselineImportOptions, validateBaseline: GovernanceBaselineValidator): {
79
+ observedAt: string;
80
+ refreshRequired: boolean;
81
+ };
82
+ export interface GovernanceReferenceImportOptions {
83
+ readonly targetScope: string;
84
+ readonly now: string;
85
+ }
86
+ export declare function importGovernanceReference(input: unknown, options: GovernanceReferenceImportOptions): GovernanceBaselineSelection;
87
+ //# sourceMappingURL=governance-baseline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-baseline.d.ts","sourceRoot":"","sources":["../src/governance-baseline.ts"],"names":[],"mappings":"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"}