@apexops/capabilities 0.10.0-next.5 → 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 (92) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/archetype-source.d.ts +49 -0
  3. package/dist/archetype-source.d.ts.map +1 -0
  4. package/dist/archetype-source.js +421 -0
  5. package/dist/archetype-source.js.map +1 -0
  6. package/dist/bound-envelope-transport.js +1 -1
  7. package/dist/bound-envelope-transport.js.map +1 -1
  8. package/dist/executable-resolution.d.ts +21 -0
  9. package/dist/executable-resolution.d.ts.map +1 -0
  10. package/dist/executable-resolution.js +87 -0
  11. package/dist/executable-resolution.js.map +1 -0
  12. package/dist/governance-baseline.d.ts +87 -0
  13. package/dist/governance-baseline.d.ts.map +1 -0
  14. package/dist/governance-baseline.js +639 -0
  15. package/dist/governance-baseline.js.map +1 -0
  16. package/dist/governance-setup.d.ts +13 -0
  17. package/dist/governance-setup.d.ts.map +1 -0
  18. package/dist/governance-setup.js +231 -0
  19. package/dist/governance-setup.js.map +1 -0
  20. package/dist/iac-generation.d.ts.map +1 -1
  21. package/dist/iac-generation.js +56 -20
  22. package/dist/iac-generation.js.map +1 -1
  23. package/dist/iac-normalizers.d.ts.map +1 -1
  24. package/dist/iac-normalizers.js +19 -1
  25. package/dist/iac-normalizers.js.map +1 -1
  26. package/dist/iac.d.ts +30 -2
  27. package/dist/iac.d.ts.map +1 -1
  28. package/dist/iac.js.map +1 -1
  29. package/dist/index.d.ts +6 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +6 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/native-iac-providers.d.ts +20 -4
  34. package/dist/native-iac-providers.d.ts.map +1 -1
  35. package/dist/native-iac-providers.js +591 -27
  36. package/dist/native-iac-providers.js.map +1 -1
  37. package/dist/pack-manager.d.ts.map +1 -1
  38. package/dist/pack-manager.js +15 -14
  39. package/dist/pack-manager.js.map +1 -1
  40. package/dist/policy-validation.d.ts +68 -0
  41. package/dist/policy-validation.d.ts.map +1 -0
  42. package/dist/policy-validation.js +653 -0
  43. package/dist/policy-validation.js.map +1 -0
  44. package/dist/process-runner.d.ts.map +1 -1
  45. package/dist/process-runner.js +10 -1
  46. package/dist/process-runner.js.map +1 -1
  47. package/dist/rename-retry.d.ts +12 -0
  48. package/dist/rename-retry.d.ts.map +1 -0
  49. package/dist/rename-retry.js +27 -0
  50. package/dist/rename-retry.js.map +1 -0
  51. package/dist/repository-publish.d.ts +17 -0
  52. package/dist/repository-publish.d.ts.map +1 -0
  53. package/dist/repository-publish.js +124 -0
  54. package/dist/repository-publish.js.map +1 -0
  55. package/dist/terraform-provider-schema.d.ts.map +1 -1
  56. package/dist/terraform-provider-schema.js +6 -2
  57. package/dist/terraform-provider-schema.js.map +1 -1
  58. package/dist/test/archetype-source.test.d.ts +2 -0
  59. package/dist/test/archetype-source.test.d.ts.map +1 -0
  60. package/dist/test/archetype-source.test.js +258 -0
  61. package/dist/test/archetype-source.test.js.map +1 -0
  62. package/dist/test/executable-resolution.test.d.ts +2 -0
  63. package/dist/test/executable-resolution.test.d.ts.map +1 -0
  64. package/dist/test/executable-resolution.test.js +87 -0
  65. package/dist/test/executable-resolution.test.js.map +1 -0
  66. package/dist/test/governance-baseline.test.d.ts +2 -0
  67. package/dist/test/governance-baseline.test.d.ts.map +1 -0
  68. package/dist/test/governance-baseline.test.js +841 -0
  69. package/dist/test/governance-baseline.test.js.map +1 -0
  70. package/dist/test/governance-setup.test.d.ts +2 -0
  71. package/dist/test/governance-setup.test.d.ts.map +1 -0
  72. package/dist/test/governance-setup.test.js +160 -0
  73. package/dist/test/governance-setup.test.js.map +1 -0
  74. package/dist/test/iac-generation.test.js +203 -14
  75. package/dist/test/iac-generation.test.js.map +1 -1
  76. package/dist/test/native-iac-providers.test.js +1482 -5
  77. package/dist/test/native-iac-providers.test.js.map +1 -1
  78. package/dist/test/policy-validation.test.d.ts +2 -0
  79. package/dist/test/policy-validation.test.d.ts.map +1 -0
  80. package/dist/test/policy-validation.test.js +1061 -0
  81. package/dist/test/policy-validation.test.js.map +1 -0
  82. package/dist/test/rename-retry.test.d.ts +2 -0
  83. package/dist/test/rename-retry.test.d.ts.map +1 -0
  84. package/dist/test/rename-retry.test.js +25 -0
  85. package/dist/test/rename-retry.test.js.map +1 -0
  86. package/dist/test/repository-publish.test.d.ts +2 -0
  87. package/dist/test/repository-publish.test.d.ts.map +1 -0
  88. package/dist/test/repository-publish.test.js +123 -0
  89. package/dist/test/repository-publish.test.js.map +1 -0
  90. package/dist/test/terraform-provider-schema.test.js +12 -6
  91. package/dist/test/terraform-provider-schema.test.js.map +1 -1
  92. package/package.json +3 -3
@@ -0,0 +1,49 @@
1
+ import { type ArchetypeSourceProposalV1 } from "@apexops/contracts";
2
+ type RemoteJsonReader = (endpoint: string) => Promise<unknown>;
3
+ export declare function isRemoteArchetypeRepository(repository: string): boolean;
4
+ export declare function listRemoteArchetypes(request: {
5
+ repositoryPath: string;
6
+ revision: string;
7
+ catalogPath: string;
8
+ }, read?: RemoteJsonReader): Promise<{
9
+ repositoryPath: string;
10
+ revision: string;
11
+ catalogPath: string;
12
+ candidates: {
13
+ selectedPath: string;
14
+ treeObjectId: string;
15
+ requiresInspection: true;
16
+ }[];
17
+ }>;
18
+ export declare function inspectRemoteArchetype(request: {
19
+ repositoryPath: string;
20
+ revision: string;
21
+ selectedPath: string;
22
+ }, read?: RemoteJsonReader): Promise<{
23
+ proposal: ArchetypeSourceProposalV1;
24
+ contents: ReadonlyMap<string, string>;
25
+ }>;
26
+ export declare function listArchetypeSources(request: {
27
+ readonly repositoryPath: string;
28
+ readonly revision: string;
29
+ readonly catalogPath: string;
30
+ }): Promise<{
31
+ repositoryPath: string;
32
+ revision: string;
33
+ catalogPath: string;
34
+ candidates: {
35
+ selectedPath: string;
36
+ treeObjectId: string;
37
+ requiresInspection: true;
38
+ }[];
39
+ }>;
40
+ export declare function inspectArchetypeSource(request: {
41
+ readonly repositoryPath: string;
42
+ readonly revision: string;
43
+ readonly selectedPath: string;
44
+ }): Promise<{
45
+ readonly proposal: ArchetypeSourceProposalV1;
46
+ readonly contents: ReadonlyMap<string, string>;
47
+ }>;
48
+ export {};
49
+ //# sourceMappingURL=archetype-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archetype-source.d.ts","sourceRoot":"","sources":["../src/archetype-source.ts"],"names":[],"mappings":"AAKA,OAAO,EAML,KAAK,yBAAyB,EAC/B,MAAM,oBAAoB,CAAC;AA0B5B,KAAK,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/D,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAMvE;AA+FD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE;IACP,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,EACD,IAAI,GAAE,gBAAiC;;;;;;;;;GAuBxC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE;IACP,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,EACD,IAAI,GAAE,gBAAiC,GACtC,OAAO,CAAC;IAAE,QAAQ,EAAE,yBAAyB,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CA8EzF;AA+HD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;;;;;sBAQyC,MAAM;sBAAgB,MAAM;4BAAsB,IAAI;;GAgB/F;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAsE5G"}
@@ -0,0 +1,421 @@
1
+ import { execFile } from "node:child_process";
2
+ import { createHash } from "node:crypto";
3
+ import { lstat, realpath } from "node:fs/promises";
4
+ import { extname, isAbsolute } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { SECRET_FIELD_PATTERN, SECRET_VALUE_PATTERN, assertPolicyValidationJson, calculatePolicyValidationDigest, hasValidArchetypeSourceProposal, } from "@apexops/contracts";
7
+ const execute = promisify(execFile);
8
+ const LIMITS = Object.freeze({ files: 256, fileBytes: 1_048_576, totalBytes: 8_388_608, treeBytes: 2_097_152 });
9
+ const OBJECT_ID = /^(?:[a-f0-9]{40}|[a-f0-9]{64})$/;
10
+ const EXCLUDED_DIRECTORIES = new Set([
11
+ ".git",
12
+ ".apex",
13
+ ".github",
14
+ ".vscode",
15
+ ".azure",
16
+ ".terraform",
17
+ "node_modules",
18
+ "agent-output",
19
+ "logs",
20
+ "secrets",
21
+ ]);
22
+ const EXTENSIONS = new Set([".md", ".bicep", ".bicepparam", ".tf", ".json"]);
23
+ export function isRemoteArchetypeRepository(repository) {
24
+ return (/^https:\/\/github\.com\/[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})\/[A-Za-z0-9_.-]+(?:\.git)?$/.test(repository) &&
25
+ !repository.endsWith("/.") &&
26
+ !repository.endsWith("/.."));
27
+ }
28
+ async function readRemoteJson(endpoint) {
29
+ try {
30
+ const result = await execute("gh", ["api", "--hostname", "github.com", "--method", "GET", endpoint], {
31
+ encoding: "utf8",
32
+ maxBuffer: LIMITS.treeBytes,
33
+ timeout: 15_000,
34
+ env: { ...process.env, GH_PROMPT_DISABLED: "1", GH_PAGER: "cat" },
35
+ });
36
+ return JSON.parse(result.stdout);
37
+ }
38
+ catch {
39
+ throw new Error("Remote archetype read failed or exceeded limits; verify GitHub access outside APEX");
40
+ }
41
+ }
42
+ async function remoteTree(request, read) {
43
+ if (!isRemoteArchetypeRepository(request.repositoryPath) ||
44
+ !/^[a-f0-9]{40}$/.test(request.revision) ||
45
+ !safePath(request.selectedPath) ||
46
+ exclusion(`${request.selectedPath}/main.bicep`) === "source-authority")
47
+ throw new TypeError("Remote archetype selection is invalid");
48
+ const repository = request.repositoryPath.slice("https://github.com/".length).replace(/\.git$/, "");
49
+ const prefix = `repos/${repository}/git`;
50
+ let calls = 0;
51
+ const deadline = Date.now() + 120_000;
52
+ const json = async (endpoint) => {
53
+ if (++calls > 280 || Date.now() > deadline)
54
+ throw new Error("Remote archetype request budget exceeded");
55
+ const value = await read(endpoint);
56
+ if (Date.now() > deadline)
57
+ throw new Error("Remote archetype request budget exceeded");
58
+ assertPolicyValidationJson(value);
59
+ if (value === null ||
60
+ typeof value !== "object" ||
61
+ Array.isArray(value) ||
62
+ Buffer.byteLength(JSON.stringify(value)) > LIMITS.treeBytes)
63
+ throw new Error("Remote archetype response is invalid");
64
+ return value;
65
+ };
66
+ const commit = await json(`${prefix}/commits/${request.revision}`);
67
+ const tree = commit.tree;
68
+ if (commit.sha !== request.revision || typeof tree?.sha !== "string" || !/^[a-f0-9]{40}$/.test(tree.sha))
69
+ throw new Error("Remote archetype commit does not match");
70
+ const loadTree = async (objectId) => {
71
+ const result = await json(`${prefix}/trees/${objectId}`);
72
+ if (result.sha !== objectId ||
73
+ result.truncated !== false ||
74
+ !Array.isArray(result.tree) ||
75
+ result.tree.length > LIMITS.files)
76
+ throw new Error("Remote archetype tree is incomplete or exceeds limits");
77
+ const entries = result.tree.map((entry) => {
78
+ if (entry === null ||
79
+ typeof entry !== "object" ||
80
+ typeof entry.path !== "string" ||
81
+ entry.path.includes("/") ||
82
+ !safePath(entry.path) ||
83
+ typeof entry.sha !== "string" ||
84
+ !/^[a-f0-9]{40}$/.test(entry.sha) ||
85
+ typeof entry.mode !== "string" ||
86
+ typeof entry.type !== "string")
87
+ throw new Error("Remote archetype tree entry is invalid");
88
+ return {
89
+ path: entry.path,
90
+ objectId: entry.sha,
91
+ kind: entry.type,
92
+ mode: entry.mode,
93
+ ...(typeof entry.size === "number" ? { size: entry.size } : {}),
94
+ };
95
+ });
96
+ if (new Set(entries.map(({ path }) => path.toLowerCase())).size !== entries.length)
97
+ throw new Error("Remote archetype paths collide");
98
+ return entries;
99
+ };
100
+ let current = tree.sha;
101
+ const parts = request.selectedPath.split("/");
102
+ if (parts.length > 16)
103
+ throw new Error("Remote archetype path exceeds depth limit");
104
+ for (const part of parts) {
105
+ const selected = (await loadTree(current)).find(({ path }) => path === part);
106
+ if (selected?.kind !== "tree" || selected.mode !== "040000")
107
+ throw new Error("Remote archetype directory is missing");
108
+ current = selected.objectId;
109
+ }
110
+ return { repositoryPath: `https://github.com/${repository}`, prefix, json, loadTree, objectId: current };
111
+ }
112
+ export async function listRemoteArchetypes(request, read = readRemoteJson) {
113
+ request = structuredClone(request);
114
+ const source = await remoteTree({ ...request, selectedPath: request.catalogPath }, read);
115
+ const candidates = (await source.loadTree(source.objectId))
116
+ .filter(({ kind, mode, path }) => kind === "tree" && mode === "040000" && exclusion(`${path}/main.bicep`) !== "source-authority")
117
+ .map(({ path, objectId }) => ({
118
+ selectedPath: `${request.catalogPath}/${path}`,
119
+ treeObjectId: objectId,
120
+ requiresInspection: true,
121
+ }))
122
+ .sort((left, right) => left.selectedPath.localeCompare(right.selectedPath));
123
+ if (candidates.some(({ selectedPath }) => !safePath(selectedPath)))
124
+ throw new Error("Remote archetype candidate path exceeds limits");
125
+ return {
126
+ repositoryPath: source.repositoryPath,
127
+ revision: request.revision,
128
+ catalogPath: request.catalogPath,
129
+ candidates,
130
+ };
131
+ }
132
+ export async function inspectRemoteArchetype(request, read = readRemoteJson) {
133
+ request = structuredClone(request);
134
+ const source = await remoteTree(request, read);
135
+ const entries = [];
136
+ let visited = 0;
137
+ const visit = async (objectId, prefix, depth) => {
138
+ if (depth > 16)
139
+ throw new Error("Remote archetype tree exceeds depth limit");
140
+ for (const entry of await source.loadTree(objectId)) {
141
+ if (++visited > LIMITS.files)
142
+ throw new Error("Remote archetype tree exceeds entry limits");
143
+ const path = prefix ? `${prefix}/${entry.path}` : entry.path;
144
+ if (!safePath(path))
145
+ throw new Error("Remote archetype path is invalid");
146
+ if (entry.kind === "tree" && entry.mode === "040000")
147
+ await visit(entry.objectId, path, depth + 1);
148
+ else
149
+ entries.push({ ...entry, path });
150
+ }
151
+ };
152
+ await visit(source.objectId, "", 0);
153
+ const files = [];
154
+ const excluded = [];
155
+ const contents = new Map();
156
+ let total = 0;
157
+ for (const entry of entries) {
158
+ const reason = exclusion(entry.path);
159
+ if (reason !== undefined) {
160
+ excluded.push({ path: entry.path, reason });
161
+ continue;
162
+ }
163
+ if (entry.kind !== "blob" || entry.mode !== "100644")
164
+ throw new Error("Archetype source uses an unsupported file mode");
165
+ const size = entry.size;
166
+ if (!Number.isSafeInteger(size) ||
167
+ size === undefined ||
168
+ size < 0 ||
169
+ size > LIMITS.fileBytes ||
170
+ total + size > LIMITS.totalBytes)
171
+ throw new Error("Archetype content exceeds byte limits");
172
+ const blob = await source.json(`${source.prefix}/blobs/${entry.objectId}`);
173
+ if (blob.sha !== entry.objectId ||
174
+ blob.size !== size ||
175
+ blob.encoding !== "base64" ||
176
+ typeof blob.content !== "string")
177
+ throw new Error("Remote archetype blob is invalid");
178
+ const encoded = blob.content.replace(/\n/g, "");
179
+ const bytes = Buffer.from(encoded, "base64");
180
+ if (bytes.length !== size ||
181
+ bytes.toString("base64") !== encoded ||
182
+ createHash("sha1").update(`blob ${size}\0`).update(bytes).digest("hex") !== entry.objectId)
183
+ throw new Error("Remote archetype blob hash or size does not match");
184
+ const content = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes);
185
+ if (content.includes("\0"))
186
+ throw new Error("Archetype content contains binary data");
187
+ assertReusableContent(entry.path, content);
188
+ total += size;
189
+ files.push({ path: entry.path, bytes: size, hash: createHash("sha256").update(bytes).digest("hex") });
190
+ contents.set(entry.path, content);
191
+ }
192
+ if (files.length === 0)
193
+ throw new Error("Archetype has no reusable material");
194
+ const sort = (left, right) => left.path < right.path ? -1 : left.path > right.path ? 1 : 0;
195
+ files.sort(sort);
196
+ excluded.sort(sort);
197
+ const body = {
198
+ schemaVersion: "1.0.0",
199
+ repositoryPath: source.repositoryPath,
200
+ revision: request.revision,
201
+ selectedPath: request.selectedPath,
202
+ authorityImported: false,
203
+ requiresConsumerReview: true,
204
+ files,
205
+ excluded,
206
+ };
207
+ const proposal = { ...body, contentHash: calculatePolicyValidationDigest(body) };
208
+ if (!hasValidArchetypeSourceProposal(proposal))
209
+ throw new Error("Remote archetype proposal is invalid");
210
+ return { proposal, contents };
211
+ }
212
+ function safePath(path) {
213
+ return (path.length > 0 &&
214
+ path.length <= 512 &&
215
+ !isAbsolute(path) &&
216
+ !/[\\:\x00-\x1f\x7f]/u.test(path) &&
217
+ path.split("/").every((part) => part !== "" && part !== "." && part !== ".." && !/[. ]$/u.test(part)));
218
+ }
219
+ function exclusion(path) {
220
+ const parts = path.toLowerCase().split("/");
221
+ const name = parts.at(-1);
222
+ if (parts.some((part) => EXCLUDED_DIRECTORIES.has(part) || part.startsWith(".")) ||
223
+ /^(?:agents|claude|gemini)\.md$/u.test(name) ||
224
+ /(?:\.tfstate(?:\.|$)|\.tfplan$|\.tfvars$|\.env(?:\.|$)|\.(?:pem|key|pfx|publishsettings|azureauth)$)/u.test(name) ||
225
+ /^(?:approval|credentials?|secrets?|deployment|inventory|operation|governance|run|journal|writer)(?:[._-].*)?\.json$/u.test(name))
226
+ return "source-authority";
227
+ if (!EXTENSIONS.has(extname(name)))
228
+ return "unsupported-material";
229
+ return undefined;
230
+ }
231
+ function hasSecretObject(value) {
232
+ if (typeof value === "string")
233
+ return SECRET_VALUE_PATTERN.test(value);
234
+ if (Array.isArray(value))
235
+ return value.some(hasSecretObject);
236
+ if (value !== null && typeof value === "object")
237
+ return Object.entries(value).some(([key, child]) => (SECRET_FIELD_PATTERN.test(key) && typeof child === "string" && child.length > 0) || hasSecretObject(child));
238
+ return false;
239
+ }
240
+ function hasRuntimeAuthority(value) {
241
+ if (Array.isArray(value))
242
+ return value.some(hasRuntimeAuthority);
243
+ return (value !== null &&
244
+ typeof value === "object" &&
245
+ Object.entries(value).some(([key, child]) => [
246
+ "ownerEpoch",
247
+ "writerEpoch",
248
+ "approvalHash",
249
+ "previewHash",
250
+ "deploymentHash",
251
+ "leaseId",
252
+ "journalHead",
253
+ "accessToken",
254
+ "refreshToken",
255
+ ].includes(key) ||
256
+ (key === "kind" && child === "approval") ||
257
+ hasRuntimeAuthority(child)));
258
+ }
259
+ function assertReusableContent(path, content) {
260
+ if (SECRET_VALUE_PATTERN.test(content) ||
261
+ /(?:password|passwd|client_?secret|api_?key|access_?token|account_?key|connection_?string)\s*[=:]\s*['"][^'"\r\n]+['"]/iu.test(content))
262
+ throw new Error("Archetype source contains credential-like content");
263
+ if (extname(path).toLowerCase() === ".json") {
264
+ let parsed;
265
+ try {
266
+ parsed = JSON.parse(content);
267
+ assertPolicyValidationJson(parsed);
268
+ }
269
+ catch {
270
+ throw new Error("Archetype JSON content is invalid or exceeds bounds");
271
+ }
272
+ if (hasSecretObject(parsed))
273
+ throw new Error("Archetype source contains credential-like content");
274
+ if (hasRuntimeAuthority(parsed))
275
+ throw new Error("Archetype source contains runtime authority or deployment evidence");
276
+ }
277
+ }
278
+ async function openArchetypeRepository(request) {
279
+ if (!isAbsolute(request.repositoryPath) || !OBJECT_ID.test(request.revision))
280
+ throw new TypeError("Archetype source selection is invalid");
281
+ const info = await lstat(request.repositoryPath);
282
+ if (!info.isDirectory() || info.isSymbolicLink())
283
+ throw new Error("Archetype repository must be a regular directory");
284
+ const repositoryPath = await realpath(request.repositoryPath);
285
+ const environment = Object.fromEntries(Object.entries(process.env).filter(([key]) => !key.startsWith("GIT_")));
286
+ const git = async (args, maxBuffer = LIMITS.treeBytes) => {
287
+ try {
288
+ const result = await execute("git", ["--no-optional-locks", "-c", "core.fsmonitor=false", "-c", "core.hooksPath=/dev/null", "--no-pager", ...args], {
289
+ cwd: repositoryPath,
290
+ env: {
291
+ ...environment,
292
+ GIT_CONFIG_NOSYSTEM: "1",
293
+ GIT_CONFIG_GLOBAL: "/dev/null",
294
+ GIT_TERMINAL_PROMPT: "0",
295
+ GIT_NO_REPLACE_OBJECTS: "1",
296
+ GIT_NO_LAZY_FETCH: "1",
297
+ GIT_ALLOW_PROTOCOL: "",
298
+ },
299
+ encoding: "buffer",
300
+ maxBuffer,
301
+ timeout: 15_000,
302
+ });
303
+ return result.stdout;
304
+ }
305
+ catch {
306
+ throw new Error("Archetype Git object read failed or exceeded limits");
307
+ }
308
+ };
309
+ const root = (await git(["rev-parse", "--show-toplevel"])).toString("utf8").trim();
310
+ if ((await realpath(root)) !== repositoryPath)
311
+ throw new Error("Archetype source must be a repository root");
312
+ if ((await git(["cat-file", "-t", request.revision])).toString("utf8").trim() !== "commit")
313
+ throw new Error("Archetype revision must identify an exact commit");
314
+ return { repositoryPath, git };
315
+ }
316
+ export async function listArchetypeSources(request) {
317
+ if (!safePath(request.catalogPath) || exclusion(`${request.catalogPath}/main.bicep`) === "source-authority")
318
+ throw new TypeError("Archetype catalog path is invalid");
319
+ const { repositoryPath, git } = await openArchetypeRepository(request);
320
+ const listing = await git(["ls-tree", "-z", `${request.revision}:${request.catalogPath}`]);
321
+ const entries = new TextDecoder("utf-8", { fatal: true }).decode(listing).split("\0").filter(Boolean);
322
+ if (entries.length > LIMITS.files)
323
+ throw new Error("Archetype catalog exceeds entry limits");
324
+ const paths = new Set();
325
+ const candidates = [];
326
+ for (const entry of entries) {
327
+ const match = /^(\d{6}) (tree|blob|commit) ([a-f0-9]+)\t([\s\S]+)$/u.exec(entry);
328
+ if (!match || !OBJECT_ID.test(match[3]) || !safePath(match[4]) || paths.has(match[4].toLowerCase()))
329
+ throw new Error("Archetype catalog entry is invalid or collides");
330
+ paths.add(match[4].toLowerCase());
331
+ const selectedPath = `${request.catalogPath}/${match[4]}`;
332
+ if (match[1] !== "040000" || match[2] !== "tree" || exclusion(`${selectedPath}/main.bicep`) === "source-authority")
333
+ continue;
334
+ if (!safePath(selectedPath))
335
+ throw new Error("Archetype candidate path exceeds limits");
336
+ candidates.push({ selectedPath, treeObjectId: match[3], requiresInspection: true });
337
+ }
338
+ candidates.sort((left, right) => left.selectedPath < right.selectedPath ? -1 : left.selectedPath > right.selectedPath ? 1 : 0);
339
+ return { repositoryPath, revision: request.revision, catalogPath: request.catalogPath, candidates };
340
+ }
341
+ export async function inspectArchetypeSource(request) {
342
+ if (!safePath(request.selectedPath))
343
+ throw new TypeError("Archetype source selection is invalid");
344
+ if (exclusion(`${request.selectedPath}/main.bicep`) === "source-authority")
345
+ throw new Error("Archetype source authority directory is not reusable");
346
+ const { repositoryPath, git } = await openArchetypeRepository(request);
347
+ if ((await git(["cat-file", "-t", `${request.revision}:${request.selectedPath}`])).toString("utf8").trim() !== "tree")
348
+ throw new Error("Archetype selection must identify an exact commit and directory");
349
+ const listing = await git([
350
+ "ls-tree",
351
+ "-r",
352
+ "-z",
353
+ "--full-tree",
354
+ request.revision,
355
+ "--",
356
+ `:(literal)${request.selectedPath}/`,
357
+ ]);
358
+ const decoder = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
359
+ const entries = decoder.decode(listing).split("\0").filter(Boolean);
360
+ if (entries.length === 0 || entries.length > LIMITS.files)
361
+ throw new Error("Archetype source file count is invalid");
362
+ const files = [];
363
+ const excluded = [];
364
+ const contents = new Map();
365
+ const paths = new Set();
366
+ let totalBytes = 0;
367
+ for (const entry of entries) {
368
+ const match = /^(\d{6}) (blob|commit) ([a-f0-9]+)\t([\s\S]+)$/u.exec(entry);
369
+ if (!match || !OBJECT_ID.test(match[3]) || !match[4].startsWith(`${request.selectedPath}/`))
370
+ throw new Error("Archetype tree entry is invalid");
371
+ const path = match[4].slice(request.selectedPath.length + 1);
372
+ if (!safePath(path) || paths.has(path.toLowerCase()))
373
+ throw new Error("Archetype path is invalid or collides");
374
+ paths.add(path.toLowerCase());
375
+ const reason = exclusion(path);
376
+ if (reason !== undefined) {
377
+ excluded.push({ path, reason });
378
+ continue;
379
+ }
380
+ if (match[1] !== "100644" || match[2] !== "blob")
381
+ throw new Error("Archetype source uses an unsupported file mode");
382
+ const size = Number((await git(["cat-file", "-s", match[3]])).toString("utf8").trim());
383
+ if (!Number.isSafeInteger(size) || size < 0 || size > LIMITS.fileBytes || totalBytes + size > LIMITS.totalBytes)
384
+ throw new Error("Archetype content exceeds byte limits");
385
+ const bytes = await git(["cat-file", "blob", match[3]], LIMITS.fileBytes + 1);
386
+ if (bytes.length !== size)
387
+ throw new Error("Archetype blob size is inconsistent");
388
+ let content;
389
+ try {
390
+ content = decoder.decode(bytes);
391
+ }
392
+ catch {
393
+ throw new Error("Archetype content is not valid UTF-8");
394
+ }
395
+ if (content.includes("\0"))
396
+ throw new Error("Archetype content contains binary data");
397
+ assertReusableContent(path, content);
398
+ totalBytes += size;
399
+ files.push({ path, hash: createHash("sha256").update(bytes).digest("hex"), bytes: size });
400
+ contents.set(path, content);
401
+ }
402
+ if (files.length === 0)
403
+ throw new Error("Archetype has no reusable material");
404
+ files.sort((left, right) => (left.path < right.path ? -1 : left.path > right.path ? 1 : 0));
405
+ excluded.sort((left, right) => (left.path < right.path ? -1 : left.path > right.path ? 1 : 0));
406
+ const body = {
407
+ schemaVersion: "1.0.0",
408
+ repositoryPath,
409
+ revision: request.revision,
410
+ selectedPath: request.selectedPath,
411
+ authorityImported: false,
412
+ requiresConsumerReview: true,
413
+ files,
414
+ excluded,
415
+ };
416
+ const proposal = { ...body, contentHash: calculatePolicyValidationDigest(body) };
417
+ if (!hasValidArchetypeSourceProposal(proposal))
418
+ throw new Error("Archetype proposal is invalid");
419
+ return { proposal, contents };
420
+ }
421
+ //# sourceMappingURL=archetype-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archetype-source.js","sourceRoot":"","sources":["../src/archetype-source.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ function requireMetadata(metadata) {
46
46
  canonicalBindings(metadata.bindings);
47
47
  }
48
48
  function decodePayload(value) {
49
- if (value.length === 0 || !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value)) {
49
+ if (value.length === 0 || value.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(value)) {
50
50
  throw new Error("Bound envelope payload is invalid base64");
51
51
  }
52
52
  const payload = Buffer.from(value, "base64");
@@ -1 +1 @@
1
- {"version":3,"file":"bound-envelope-transport.js","sourceRoot":"","sources":["../src/bound-envelope-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bound-envelope-transport.js","sourceRoot":"","sources":["../src/bound-envelope-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface ExecutableResolutionOptions {
2
+ readonly platform?: NodeJS.Platform;
3
+ readonly env?: NodeJS.ProcessEnv;
4
+ readonly isExecutableFile?: (path: string, platform: NodeJS.Platform) => boolean;
5
+ }
6
+ export interface LaunchPlan {
7
+ readonly command: string;
8
+ readonly args: readonly string[];
9
+ readonly windowsVerbatimArguments: boolean;
10
+ }
11
+ /**
12
+ * Resolve a bare executable name the way the platform shell would. Node does not apply PATHEXT when spawning on
13
+ * Windows, so `az` and `npm` (installed as `az.cmd` and `npm.cmd`) are otherwise not found.
14
+ */
15
+ export declare function resolveExecutable(executable: string, options?: ExecutableResolutionOptions): string | undefined;
16
+ /**
17
+ * Plan a no-shell launch. Windows `.cmd` and `.bat` files cannot be spawned directly, and `shell: true` with an
18
+ * argument array is deprecated (DEP0190), so they run through `cmd.exe /d /s /c` with one validated command line.
19
+ */
20
+ export declare function planLaunch(executable: string, args: readonly string[], options?: ExecutableResolutionOptions): LaunchPlan;
21
+ //# sourceMappingURL=executable-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable-resolution.d.ts","sourceRoot":"","sources":["../src/executable-resolution.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC;CAClF;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;CAC5C;AAwBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,2BAAgC,GAAG,MAAM,GAAG,SAAS,CA+BnH;AAQD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE,2BAAgC,GACxC,UAAU,CAcZ"}