hikoutei 0.11.101-dev → 0.11.103-dev

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 (56) hide show
  1. package/dist/cli/adoptFlow.d.ts.map +1 -1
  2. package/dist/cli/adoptFlow.js +31 -0
  3. package/dist/cli/adoptFlow.js.map +1 -1
  4. package/dist/cli/checkpoint.d.ts +38 -52
  5. package/dist/cli/checkpoint.d.ts.map +1 -1
  6. package/dist/cli/checkpoint.js +87 -34
  7. package/dist/cli/checkpoint.js.map +1 -1
  8. package/dist/cli/envFileWriter.d.ts +42 -8
  9. package/dist/cli/envFileWriter.d.ts.map +1 -1
  10. package/dist/cli/envFileWriter.js +60 -30
  11. package/dist/cli/envFileWriter.js.map +1 -1
  12. package/dist/cli/errors.d.ts +6 -5
  13. package/dist/cli/errors.d.ts.map +1 -1
  14. package/dist/cli/errors.js +6 -5
  15. package/dist/cli/errors.js.map +1 -1
  16. package/dist/cli/gcloudRunner.d.ts +22 -5
  17. package/dist/cli/gcloudRunner.d.ts.map +1 -1
  18. package/dist/cli/gcloudRunner.js +168 -0
  19. package/dist/cli/gcloudRunner.js.map +1 -1
  20. package/dist/cli/keyContract.d.ts +62 -0
  21. package/dist/cli/keyContract.d.ts.map +1 -0
  22. package/dist/cli/keyContract.js +24 -0
  23. package/dist/cli/keyContract.js.map +1 -0
  24. package/dist/cli/keyMaterial.d.ts +1 -1
  25. package/dist/cli/keyMaterial.d.ts.map +1 -1
  26. package/dist/cli/keyMaterial.js +2 -2
  27. package/dist/cli/keyMaterial.js.map +1 -1
  28. package/dist/cli/keyProvision.d.ts +22 -44
  29. package/dist/cli/keyProvision.d.ts.map +1 -1
  30. package/dist/cli/keyProvision.js +212 -103
  31. package/dist/cli/keyProvision.js.map +1 -1
  32. package/dist/cli/setupFlow.d.ts +2 -7
  33. package/dist/cli/setupFlow.d.ts.map +1 -1
  34. package/dist/cli/setupFlow.js +301 -55
  35. package/dist/cli/setupFlow.js.map +1 -1
  36. package/dist/cli/setupPathCollision.d.ts +11 -3
  37. package/dist/cli/setupPathCollision.d.ts.map +1 -1
  38. package/dist/cli/setupPathCollision.js +10 -7
  39. package/dist/cli/setupPathCollision.js.map +1 -1
  40. package/dist/cli/setupPaths.d.ts +2 -0
  41. package/dist/cli/setupPaths.d.ts.map +1 -1
  42. package/dist/cli/setupPaths.js +9 -0
  43. package/dist/cli/setupPaths.js.map +1 -1
  44. package/dist/sheets/providers/google-sheets-api/model/batchBuilder.d.ts +10 -0
  45. package/dist/sheets/providers/google-sheets-api/model/batchBuilder.d.ts.map +1 -1
  46. package/dist/sheets/providers/google-sheets-api/model/batchBuilder.js +25 -36
  47. package/dist/sheets/providers/google-sheets-api/model/batchBuilder.js.map +1 -1
  48. package/dist/sheets/providers/google-sheets-api/model/planner.d.ts.map +1 -1
  49. package/dist/sheets/providers/google-sheets-api/model/planner.js +0 -3
  50. package/dist/sheets/providers/google-sheets-api/model/planner.js.map +1 -1
  51. package/dist/sheets/providers/google-sheets-api/operations/fastAppend.d.ts.map +1 -1
  52. package/dist/sheets/providers/google-sheets-api/operations/fastAppend.js +3 -13
  53. package/dist/sheets/providers/google-sheets-api/operations/fastAppend.js.map +1 -1
  54. package/dist/sheets/providers/google-sheets-api/operations/rowChecks.js +9 -10
  55. package/dist/sheets/providers/google-sheets-api/operations/rowChecks.js.map +1 -1
  56. package/package.json +1 -1
@@ -38,8 +38,9 @@ export interface EnvFileWriteResult {
38
38
  * refused before any open so a FIFO can never block), the file is opened
39
39
  * WITHOUT following symlinks (`O_NOFOLLOW` where supported) and
40
40
  * non-blocking (`O_NONBLOCK` where supported), the descriptor is
41
- * fstat-verified as a regular file BEFORE a single byte is read (covering
42
- * a non-regular replacement between the lstat check and the open), and any
41
+ * fstat-verified as the SAME file the lstat observed (device/inode
42
+ * identity, covering a same-type replacement as well as a non-regular one)
43
+ * BEFORE a single byte is read, and any
43
44
  * alias of the credentials file or other reserved paths (hardlink/symlink
44
45
  * alias — the key contents are never read through it) is refused before a
45
46
  * single byte is read. The preserved env content is built in memory and written to a unique private sibling temp
@@ -62,7 +63,40 @@ export declare function writeSetupEnvFile(outputPath: string, credentialsPath: s
62
63
  * (a stale pool line is removed as a managed key). Paths are joined
63
64
  * with commas and no spaces, matching the runtime pool parser.
64
65
  */
65
- poolPaths?: readonly string[]): EnvFileWriteResult;
66
+ poolPaths?: readonly string[],
67
+ /**
68
+ * Filesystem used for the existing-output read; injectable so tests can
69
+ * prove the descriptor-identity check without a racy real swap. The
70
+ * atomic write below always uses the default filesystem.
71
+ */
72
+ loadFs?: EnvFileLoadFs): EnvFileWriteResult;
73
+ /**
74
+ * Filesystem operations the existing-output read uses; injectable for
75
+ * tests (same-type replacement-descriptor coverage without a racy real
76
+ * swap).
77
+ *
78
+ * Both `lstatSync` and `fstatSync` expose the device/inode so the read can
79
+ * BIND the opened descriptor to the entry the lstat verified: a file
80
+ * replaced between the type check and the open is refused before a single
81
+ * byte is read. Mirrors `SetupStateLoadFs` in checkpoint.ts.
82
+ */
83
+ export interface EnvFileLoadFs {
84
+ lstatSync(path: string): {
85
+ isSymbolicLink(): boolean;
86
+ isFile(): boolean;
87
+ readonly dev: number;
88
+ readonly ino: number;
89
+ };
90
+ openSync(path: string, flags: number): number;
91
+ fstatSync(fd: number): {
92
+ isFile(): boolean;
93
+ readonly dev: number;
94
+ readonly ino: number;
95
+ readonly mode: number;
96
+ };
97
+ readFileSync(fd: number, encoding: "utf8"): string;
98
+ closeSync(fd: number): void;
99
+ }
66
100
  /**
67
101
  * Writes content to the output path atomically via a unique private temp.
68
102
  *
@@ -91,14 +125,14 @@ export { noFollowFlag, nonBlockFlag } from "./setupPaths.js";
91
125
  * Re-runs the reserved-path collision check and fails closed when aliases
92
126
  * changed after the initial preflight.
93
127
  *
94
- * The reserved paths (key, output, checkpoint, temp, lock) are re-resolved
95
- * immediately before every checkpoint write and the .env write: a symlink
96
- * or hardlink planted after the preflight must never redirect a write to a
97
- * reserved file. Returns an error result on collision, `null` when safe.
128
+ * The reserved paths (key, output, checkpoint, temp, lock, and any extra
129
+ * pool-key paths) are re-resolved immediately before every checkpoint and
130
+ * `.env` write: aliases planted after preflight must never redirect a write.
131
+ * Returns an error result on collision, `null` when safe.
98
132
  */
99
133
  export declare function revalidateSetupPaths(options: {
100
134
  readonly keyPath: string;
101
135
  readonly outputPath: string;
102
136
  readonly statePath: string;
103
- }): SetupErrorResult | null;
137
+ }, extraReserved?: readonly string[]): SetupErrorResult | null;
104
138
  //# sourceMappingURL=envFileWriter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"envFileWriter.d.ts","sourceRoot":"","sources":["../../../../../../src/envFileWriter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGrE,2CAA2C;AAC3C,eAAO,MAAM,cAAc;;;IAGzB,sFAAsF;;CAE9E,CAAC;AAEX,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,aAAa,GAAE,SAAS,MAAM,EAAO;AACrC;;;;;GAKG;AACH,SAAS,GAAE,SAAS,MAAM,EAAO,GAChC,kBAAkB,CA2BpB;AA4GD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,GAAE,iBAA4C,GAC/C,IAAI,CA6EN;AAED;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+B7D;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,gBAAgB,GAAG,IAAI,CAa1B"}
1
+ {"version":3,"file":"envFileWriter.d.ts","sourceRoot":"","sources":["../../../../../../src/envFileWriter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGrE,2CAA2C;AAC3C,eAAO,MAAM,cAAc;;;IAGzB,sFAAsF;;CAE9E,CAAC;AAEX,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,aAAa,GAAE,SAAS,MAAM,EAAO;AACrC;;;;;GAKG;AACH,SAAS,GAAE,SAAS,MAAM,EAAO;AACjC;;;;GAIG;AACH,MAAM,GAAE,aAAoC,GAC3C,kBAAkB,CA2BpB;AAUD;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;QACvB,cAAc,IAAI,OAAO,CAAC;QAC1B,MAAM,IAAI,OAAO,CAAC;QAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG;QACrB,MAAM,IAAI,OAAO,CAAC;QAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACnD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AA+HD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,GAAE,iBAA4C,GAC/C,IAAI,CA6EN;AAED;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+B7D;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE;IACP,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,EACD,aAAa,GAAE,SAAS,MAAM,EAAO,GACpC,gBAAgB,GAAG,IAAI,CAiBzB"}
@@ -45,8 +45,9 @@ const ENV_FILE_MODE = 0o600;
45
45
  * refused before any open so a FIFO can never block), the file is opened
46
46
  * WITHOUT following symlinks (`O_NOFOLLOW` where supported) and
47
47
  * non-blocking (`O_NONBLOCK` where supported), the descriptor is
48
- * fstat-verified as a regular file BEFORE a single byte is read (covering
49
- * a non-regular replacement between the lstat check and the open), and any
48
+ * fstat-verified as the SAME file the lstat observed (device/inode
49
+ * identity, covering a same-type replacement as well as a non-regular one)
50
+ * BEFORE a single byte is read, and any
50
51
  * alias of the credentials file or other reserved paths (hardlink/symlink
51
52
  * alias — the key contents are never read through it) is refused before a
52
53
  * single byte is read. The preserved env content is built in memory and written to a unique private sibling temp
@@ -69,8 +70,14 @@ export function writeSetupEnvFile(outputPath, credentialsPath, spreadsheetUrl, r
69
70
  * (a stale pool line is removed as a managed key). Paths are joined
70
71
  * with commas and no spaces, matching the runtime pool parser.
71
72
  */
72
- poolPaths = []) {
73
- const read = readExistingEnvFile(outputPath, [credentialsPath, ...reservedPaths]);
73
+ poolPaths = [],
74
+ /**
75
+ * Filesystem used for the existing-output read; injectable so tests can
76
+ * prove the descriptor-identity check without a racy real swap. The
77
+ * atomic write below always uses the default filesystem.
78
+ */
79
+ loadFs = defaultEnvFileLoadFs) {
80
+ const read = readExistingEnvFile(outputPath, [credentialsPath, ...reservedPaths], loadFs);
74
81
  const existing = read.existing;
75
82
  const created = read.created;
76
83
  const rawLines = existing === "" ? [] : existing.split("\n");
@@ -95,6 +102,14 @@ poolPaths = []) {
95
102
  }
96
103
  return { created, modified };
97
104
  }
105
+ /** The default filesystem for the existing-output read. */
106
+ const defaultEnvFileLoadFs = {
107
+ lstatSync,
108
+ openSync: (path, flags) => openSync(path, flags),
109
+ fstatSync,
110
+ readFileSync,
111
+ closeSync,
112
+ };
98
113
  /**
99
114
  * Reads an existing .env output without following symlinks or aliases.
100
115
  *
@@ -104,25 +119,19 @@ poolPaths = []) {
104
119
  * FIFOs, devices, and sockets are refused BEFORE any open, so a FIFO can
105
120
  * never block the open or a later read. The file is opened with `O_NOFOLLOW`
106
121
  * (where supported) plus `O_NONBLOCK` (where supported), the descriptor is
107
- * fstat-verified as a regular file BEFORE a single byte is read — this
108
- * covers a non-regular replacement (for example a FIFO planted between the
109
- * lstat check and the open) and prevents a FIFO open/read from blocking —
110
- * and the descriptor inode is compared against every reserved path; any
111
- * match is refused before reading. A missing file is `created` with empty
112
- * content. Throws on unsafe entries; the caller preserves carrier codes
113
- * (`SetupPathSafetyError`) and falls back to `output_write_failed` for other errors.
122
+ * fstat-verified as a regular file with the SAME device/inode the lstat
123
+ * observed BEFORE a single byte is read — covering a same-type replacement
124
+ * (a different regular file swapped in between the lstat check and the
125
+ * open) as well as a non-regular replacement — and the descriptor inode is
126
+ * compared against every reserved path; any match is refused before
127
+ * reading. A missing file is `created` with empty content. Throws on unsafe
128
+ * entries; the caller preserves carrier codes (`SetupPathSafetyError`) and
129
+ * falls back to `output_write_failed` for other errors.
114
130
  */
115
- function readExistingEnvFile(outputPath, reservedPaths) {
131
+ function readExistingEnvFile(outputPath, reservedPaths, fs = defaultEnvFileLoadFs) {
132
+ let lst;
116
133
  try {
117
- const lst = lstatSync(outputPath);
118
- if (lst.isSymbolicLink()) {
119
- throw setupPathSafetyError(SETUP_ERROR_CODES.OUTPUT_SYMLINK_REFUSED, `refusing to follow a symlink at the output path ${outputPath}; remove the symlink and retry`);
120
- }
121
- if (!lst.isFile()) {
122
- // Directories, FIFOs, devices, and sockets are never opened or read:
123
- // a FIFO open without O_NONBLOCK would block indefinitely.
124
- throw setupPathSafetyError(SETUP_ERROR_CODES.OUTPUT_NOT_REGULAR_FILE, `the output path ${outputPath} is not a regular file; remove it and retry`);
125
- }
134
+ lst = fs.lstatSync(outputPath);
126
135
  }
127
136
  catch (error) {
128
137
  if (isNodeError(error) && error.code === "ENOENT") {
@@ -130,9 +139,17 @@ function readExistingEnvFile(outputPath, reservedPaths) {
130
139
  }
131
140
  throw error;
132
141
  }
142
+ if (lst.isSymbolicLink()) {
143
+ throw setupPathSafetyError(SETUP_ERROR_CODES.OUTPUT_SYMLINK_REFUSED, `refusing to follow a symlink at the output path ${outputPath}; remove the symlink and retry`);
144
+ }
145
+ if (!lst.isFile()) {
146
+ // Directories, FIFOs, devices, and sockets are never opened or read:
147
+ // a FIFO open without O_NONBLOCK would block indefinitely.
148
+ throw setupPathSafetyError(SETUP_ERROR_CODES.OUTPUT_NOT_REGULAR_FILE, `the output path ${outputPath} is not a regular file; remove it and retry`);
149
+ }
133
150
  let fd;
134
151
  try {
135
- fd = openSync(outputPath, constants.O_RDONLY | noFollowFlag() | nonBlockFlag());
152
+ fd = fs.openSync(outputPath, constants.O_RDONLY | noFollowFlag() | nonBlockFlag());
136
153
  }
137
154
  catch (error) {
138
155
  if (isNodeError(error) && (error.code === "ELOOP" || error.code === "EMLINK")) {
@@ -143,24 +160,33 @@ function readExistingEnvFile(outputPath, reservedPaths) {
143
160
  throw error;
144
161
  }
145
162
  try {
146
- const stat = fstatSync(fd);
163
+ const stat = fs.fstatSync(fd);
147
164
  if (!stat.isFile()) {
148
165
  // A non-regular entry replaced the output between the lstat check and
149
166
  // the open (e.g. a FIFO planted mid-run): refuse without reading it
150
167
  // (O_NONBLOCK made the open return instead of blocking on a FIFO).
151
168
  throw setupPathSafetyError(SETUP_ERROR_CODES.OUTPUT_NOT_REGULAR_FILE, `the output path ${outputPath} is not a regular file; remove it and retry`);
152
169
  }
170
+ if (stat.dev !== lst.dev || stat.ino !== lst.ino) {
171
+ // The descriptor is NOT the file the lstat verified: a same-type
172
+ // replacement (a different regular file) was swapped in between the
173
+ // lstat check and the open. Refuse before a single byte is read —
174
+ // the checked file's content must never be confused with the
175
+ // replacement's. Reuses the regular-file carrier: the opened entry
176
+ // is not the verified regular file.
177
+ throw setupPathSafetyError(SETUP_ERROR_CODES.OUTPUT_NOT_REGULAR_FILE, `the output path ${outputPath} was replaced before it could be read; remove it and retry`);
178
+ }
153
179
  const alias = reservedPaths.find((path) => sameInodeAsPath(stat, path));
154
180
  if (alias !== undefined) {
155
181
  throw setupPathSafetyError(SETUP_ERROR_CODES.OUTPUT_ALIASES_RESERVED, `the output path ${outputPath} aliases the reserved file ${alias}; refusing to read or write through it`);
156
182
  }
157
183
  // The owner bits come from the SAME secured descriptor read, so the
158
184
  // mode-repair decision below can never race a check-then-use sequence.
159
- return { existing: readFileSync(fd, "utf8"), created: false, mode: Number(stat.mode) & 0o777 };
185
+ return { existing: fs.readFileSync(fd, "utf8"), created: false, mode: Number(stat.mode) & 0o777 };
160
186
  }
161
187
  finally {
162
188
  try {
163
- closeSync(fd);
189
+ fs.closeSync(fd);
164
190
  }
165
191
  catch {
166
192
  // The read error is the one to report.
@@ -306,16 +332,20 @@ function removeOwnedTempFile(tempPath, dev, ino, fs) {
306
332
  * Re-runs the reserved-path collision check and fails closed when aliases
307
333
  * changed after the initial preflight.
308
334
  *
309
- * The reserved paths (key, output, checkpoint, temp, lock) are re-resolved
310
- * immediately before every checkpoint write and the .env write: a symlink
311
- * or hardlink planted after the preflight must never redirect a write to a
312
- * reserved file. Returns an error result on collision, `null` when safe.
335
+ * The reserved paths (key, output, checkpoint, temp, lock, and any extra
336
+ * pool-key paths) are re-resolved immediately before every checkpoint and
337
+ * `.env` write: aliases planted after preflight must never redirect a write.
338
+ * Returns an error result on collision, `null` when safe.
313
339
  */
314
- export function revalidateSetupPaths(options) {
340
+ export function revalidateSetupPaths(options, extraReserved = []) {
315
341
  const collision = findSetupPathCollision({
316
342
  keyPath: options.keyPath,
317
343
  outputPath: options.outputPath,
318
344
  statePath: options.statePath,
345
+ // Planned pool keys plus caller-supplied stored pool keys (checkpoint
346
+ // pool entries and any in-flight pool write-ahead): an alias planted
347
+ // mid-run must never redirect a checkpoint or .env write.
348
+ poolKeyPaths: extraReserved,
319
349
  });
320
350
  if (collision.status === "collision") {
321
351
  return errorResult(SETUP_ERROR_CODES.INVALID_ARGS, `${collision.message}; the reserved setup paths changed during the run, so nothing was written`);
@@ -1 +1 @@
1
- {"version":3,"file":"envFileWriter.js","sourceRoot":"","sources":["../../../../../../src/envFileWriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envFileWriter.js","sourceRoot":"","sources":["../../../../../../src/envFileWriter.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,11 @@
8
8
  * another, and so on; the message carries the specific detail. The 16 path-safety
9
9
  * carrier codes (CHECKPOINT_TEMP_*, OUTPUT_*, SETUP_WRITE_NO_PROGRESS,
10
10
  * SETUP_DIR_FSYNC_*, SETUP_RENAME_DURABLE_*) are operation-level: 16 distinct
11
- * codes cover 15 recoverable path-safety throw sites (OUTPUT_SYMLINK_REFUSED
12
- * and OUTPUT_NOT_REGULAR_FILE are each reused at two sites) so the boundary
13
- * catch can preserve machine-readable specificity instead of collapsing to a
14
- * generic write code.
11
+ * codes cover 16 recoverable path-safety throw sites (OUTPUT_SYMLINK_REFUSED
12
+ * is reused at two sites and OUTPUT_NOT_REGULAR_FILE at three: the lstat
13
+ * boundary, the descriptor type check, and the descriptor-identity check)
14
+ * so the boundary catch can preserve machine-readable specificity instead
15
+ * of collapsing to a generic write code.
15
16
  */
16
17
  export declare const SETUP_ERROR_CODES: {
17
18
  /** gcloud CLI is not installed or `gcloud --version` fails. */
@@ -109,7 +110,7 @@ export interface SetupFailure {
109
110
  /** Builds a structured failure value. */
110
111
  export declare function setupFailure(code: SetupErrorCode, message: string): SetupFailure;
111
112
  /**
112
- * Typed internal carrier thrown by the 15 recoverable path-safety sites.
113
+ * Typed internal carrier thrown by the 16 recoverable path-safety sites.
113
114
  *
114
115
  * The nearest boundary catch extracts the code when present and falls back
115
116
  * to the existing generic code (OUTPUT_WRITE_FAILED / SETUP_STATE_WRITE_FAILED)
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,iBAAiB;IAC5B,+DAA+D;;IAE/D,6DAA6D;;IAE7D,gGAAgG;;IAEhG,gHAAgH;;IAEhH,mFAAmF;;IAEnF,gFAAgF;;IAEhF,iGAAiG;;IAEjG,0CAA0C;;IAE1C,6DAA6D;;IAE7D,kDAAkD;;IAElD,mEAAmE;;IAEnE,yXAAyX;;IAEzX,mGAAmG;;IAEnG,iGAAiG;;IAEjG,0HAA0H;;IAE1H,oHAAoH;;IAEpH,sGAAsG;;IAEtG,wFAAwF;;IAExF,qFAAqF;;IAErF,0FAA0F;;IAE1F,yFAAyF;;IAEzF,kEAAkE;;IAElE,oDAAoD;;IAEpD,+EAA+E;;IAQ/E,6EAA6E;;IAE7E,6EAA6E;;IAE7E,4EAA4E;;IAE5E,4DAA4D;;IAE5D,4EAA4E;;IAE5E,sEAAsE;;IAEtE,yDAAyD;;IAEzD,sEAAsE;;IAEtE,qEAAqE;;IAErE,qEAAqE;;IAErE,wEAAwE;;IAExE,6EAA6E;;IAE7E,2EAA2E;;IAI3E,sFAAsF;;IAEtF,8EAA8E;;IAE9E,oEAAoE;;CAE5D,CAAC;AAEX,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAExF,2CAA2C;AAC3C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,sCAAsC;AACtC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAEhF;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;gBAClB,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;CAKlD;AAED,gDAAgD;AAChD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAEhG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAEtE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,iBAAiB;IAC5B,+DAA+D;;IAE/D,6DAA6D;;IAE7D,gGAAgG;;IAEhG,gHAAgH;;IAEhH,mFAAmF;;IAEnF,gFAAgF;;IAEhF,iGAAiG;;IAEjG,0CAA0C;;IAE1C,6DAA6D;;IAE7D,kDAAkD;;IAElD,mEAAmE;;IAEnE,yXAAyX;;IAEzX,mGAAmG;;IAEnG,iGAAiG;;IAEjG,0HAA0H;;IAE1H,oHAAoH;;IAEpH,sGAAsG;;IAEtG,wFAAwF;;IAExF,qFAAqF;;IAErF,0FAA0F;;IAE1F,yFAAyF;;IAEzF,kEAAkE;;IAElE,oDAAoD;;IAEpD,+EAA+E;;IAQ/E,6EAA6E;;IAE7E,6EAA6E;;IAE7E,4EAA4E;;IAE5E,4DAA4D;;IAE5D,4EAA4E;;IAE5E,sEAAsE;;IAEtE,yDAAyD;;IAEzD,sEAAsE;;IAEtE,qEAAqE;;IAErE,qEAAqE;;IAErE,wEAAwE;;IAExE,6EAA6E;;IAE7E,2EAA2E;;IAI3E,sFAAsF;;IAEtF,8EAA8E;;IAE9E,oEAAoE;;CAE5D,CAAC;AAEX,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAExF,2CAA2C;AAC3C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,sCAAsC;AACtC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAEhF;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;gBAClB,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;CAKlD;AAED,gDAAgD;AAChD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAEhG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAEtE"}
@@ -8,10 +8,11 @@
8
8
  * another, and so on; the message carries the specific detail. The 16 path-safety
9
9
  * carrier codes (CHECKPOINT_TEMP_*, OUTPUT_*, SETUP_WRITE_NO_PROGRESS,
10
10
  * SETUP_DIR_FSYNC_*, SETUP_RENAME_DURABLE_*) are operation-level: 16 distinct
11
- * codes cover 15 recoverable path-safety throw sites (OUTPUT_SYMLINK_REFUSED
12
- * and OUTPUT_NOT_REGULAR_FILE are each reused at two sites) so the boundary
13
- * catch can preserve machine-readable specificity instead of collapsing to a
14
- * generic write code.
11
+ * codes cover 16 recoverable path-safety throw sites (OUTPUT_SYMLINK_REFUSED
12
+ * is reused at two sites and OUTPUT_NOT_REGULAR_FILE at three: the lstat
13
+ * boundary, the descriptor type check, and the descriptor-identity check)
14
+ * so the boundary catch can preserve machine-readable specificity instead
15
+ * of collapsing to a generic write code.
15
16
  */
16
17
  export const SETUP_ERROR_CODES = {
17
18
  /** gcloud CLI is not installed or `gcloud --version` fails. */
@@ -109,7 +110,7 @@ export function setupFailure(code, message) {
109
110
  return { code, message };
110
111
  }
111
112
  /**
112
- * Typed internal carrier thrown by the 15 recoverable path-safety sites.
113
+ * Typed internal carrier thrown by the 16 recoverable path-safety sites.
113
114
  *
114
115
  * The nearest boundary catch extracts the code when present and falls back
115
116
  * to the existing generic code (OUTPUT_WRITE_FAILED / SETUP_STATE_WRITE_FAILED)
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -21,16 +21,33 @@ export type GcloudRunResult = {
21
21
  readonly stdout: string;
22
22
  readonly stderr: string;
23
23
  };
24
+ /** Expected device/inode identity of the staging directory at `cwd`. */
25
+ export interface GcloudCwdIdentity {
26
+ readonly dev: number;
27
+ readonly ino: number;
28
+ }
24
29
  /** Extra options for one gcloud invocation. */
25
30
  export interface GcloudRunOptions {
26
31
  /**
27
- * Working directory of the subprocess. The key create uses it to run
28
- * with a RELATIVE `key.json` destination from the validated private
29
- * staging directory, so the credential write is bound to the staging
30
- * directory the flow verified instead of a pathname that could be
31
- * swapped mid-run.
32
+ * Working directory of the subprocess. Only the key create sets it, to
33
+ * run with a RELATIVE `key.json` destination from the staging
34
+ * directory. When `cwdIdentity` and `cwdFd` are present, the runner
35
+ * launches an isolated Node wrapper (`process.execPath`) that `chdir`s
36
+ * into the pathname and verifies `statSync('.')` against the pinned
37
+ * descriptor and expected identity before invoking `gcloud` with no
38
+ * `cwd` option. Pinning the fd prevents inode reuse from validating a
39
+ * replacement. The parent process CWD is never changed. Other callers omit
40
+ * these fields and run
41
+ * `gcloud` directly (see `keyProvision.ts`).
32
42
  */
33
43
  readonly cwd?: string;
44
+ /**
45
+ * Expected staging identity captured by `prepareStageDir`. Only
46
+ * meaningful with `cwd`; the key-create call always sets it with `cwdFd`.
47
+ */
48
+ readonly cwdIdentity?: GcloudCwdIdentity;
49
+ /** Open staging-directory descriptor kept alive through the child launch. */
50
+ readonly cwdFd?: number;
34
51
  }
35
52
  /** Runs gcloud with the given arguments and returns the process outcome. */
36
53
  export interface GcloudRunner {
@@ -1 +1 @@
1
- {"version":3,"file":"gcloudRunner.d.ts","sourceRoot":"","sources":["../../../../../../src/gcloudRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,wCAAwC;AACxC,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChC;IACA,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEJ,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACpF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAYnE;AAKD;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,iEAAkE,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAClC;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC;IAC9E,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC;CACpG;AAED,2FAA2F;AAC3F,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,KACnC,iBAAiB,CAAC;AAEvB,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,YAAkC,GAAG,iBAAiB,CAyB3G;AAWD;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CA6BjD"}
1
+ {"version":3,"file":"gcloudRunner.d.ts","sourceRoot":"","sources":["../../../../../../src/gcloudRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,wCAAwC;AACxC,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChC;IACA,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEJ,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACpF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAYnE;AAKD;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,iEAAkE,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAClC;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC;IAC9E,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC;CACpG;AAED,2FAA2F;AAC3F,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,KACnC,iBAAiB,CAAC;AAEvB,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,YAAkC,GAAG,iBAAiB,CAyB3G;AAWD;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAqCjD"}
@@ -8,6 +8,7 @@
8
8
  * binary is reported distinctly (`not_found`) from a failed invocation.
9
9
  */
10
10
  import { execFile, spawn } from "node:child_process";
11
+ import { randomBytes } from "node:crypto";
11
12
  /**
12
13
  * Wraps a runner so a throwing invocation becomes a sanitized failed result.
13
14
  *
@@ -100,6 +101,14 @@ function spawnAsLoginSpawner(command, args, options) {
100
101
  export function createGcloudRunner() {
101
102
  return {
102
103
  run(args, options) {
104
+ // Only the key create sets the verified CWD fields; every other
105
+ // caller runs gcloud directly below with no wrapper involved.
106
+ if (options?.cwd !== undefined && options.cwdIdentity !== undefined) {
107
+ if (options.cwdFd === undefined) {
108
+ return Promise.resolve({ status: "failed", code: null, stdout: "", stderr: "" });
109
+ }
110
+ return runKeyCreateInVerifiedCwd(args, options.cwd, options.cwdIdentity, options.cwdFd);
111
+ }
103
112
  return new Promise((resolve) => {
104
113
  execFile(GCLOUD_BINARY, [...args], {
105
114
  encoding: "utf8",
@@ -122,4 +131,163 @@ export function createGcloudRunner() {
122
131
  },
123
132
  };
124
133
  }
134
+ /**
135
+ * Runs one gcloud invocation with its CWD bound to a verified directory
136
+ * object instead of a re-resolved pathname.
137
+ *
138
+ * The parent process CWD is never changed: a small isolated Node child
139
+ * (via `process.execPath`, no shell) `chdir`s into the staging pathname,
140
+ * compares `statSync('.')` with `fstatSync(3)` for the inherited pinned
141
+ * descriptor and the expected identity, then only on an exact match spawns
142
+ * `gcloud` with no `cwd` option so it inherits the wrapper's object-bound
143
+ * directory. A pathname replacement cannot pass by reusing the old inode.
144
+ *
145
+ * Control reporting never parses ordinary gcloud output: the wrapper
146
+ * appends one trailer line carrying a per-call random token
147
+ * (`<token> status=<word>[ code=<n>]`) to its stderr, and the gcloud
148
+ * child is spawned WITHOUT the token in its environment so its own
149
+ * output cannot forge the trailer. stdout is gcloud stdout verbatim;
150
+ * stderr minus the trailer is gcloud stderr verbatim.
151
+ */
152
+ function runKeyCreateInVerifiedCwd(args, stageDir, expected, stageFd) {
153
+ // Per-call random token so only this invocation's wrapper can report
154
+ // its control statuses; gcloud output cannot guess it (and never
155
+ // receives it via the environment).
156
+ const token = randomBytes(16).toString("hex");
157
+ return new Promise((resolve) => {
158
+ const child = spawn(process.execPath, [
159
+ "-e",
160
+ STAGE_CWD_WRAPPER_SCRIPT,
161
+ stageDir,
162
+ String(expected.dev),
163
+ String(expected.ino),
164
+ JSON.stringify([...args]),
165
+ token,
166
+ ], {
167
+ stdio: ["ignore", "pipe", "pipe", stageFd],
168
+ // No `cwd` or `env` override: the wrapper starts in the caller's
169
+ // environment and receives the pinned directory at fd 3.
170
+ });
171
+ let stdout = "";
172
+ let stderr = "";
173
+ let spawnError = null;
174
+ child.stdout?.setEncoding("utf8");
175
+ child.stderr?.setEncoding("utf8");
176
+ child.stdout?.on("data", (chunk) => {
177
+ stdout += chunk;
178
+ });
179
+ child.stderr?.on("data", (chunk) => {
180
+ stderr += chunk;
181
+ });
182
+ child.on("error", (error) => {
183
+ spawnError = error;
184
+ });
185
+ child.on("close", (exitCode) => {
186
+ const parsed = parseStageWrapperTrailer(stderr, token);
187
+ if (parsed === null) {
188
+ // The wrapper crashed or its output was truncated: fail closed
189
+ // with the same shape as a spawn failure. Never report
190
+ // `not_found` here; that status is reserved for the wrapper's
191
+ // explicit gcloud-missing trailer.
192
+ const code = typeof exitCode === "number"
193
+ ? exitCode
194
+ : spawnError !== null && typeof spawnError.code === "number"
195
+ ? spawnError.code
196
+ : null;
197
+ resolve({ status: "failed", code, stdout, stderr });
198
+ return;
199
+ }
200
+ const gcloudStderr = stderr.slice(0, parsed.trailerIndex);
201
+ if (parsed.status === "cwd_mismatch" || parsed.status === "wrapper_error") {
202
+ // The pathname did not name the pinned directory when the wrapper
203
+ // bound its CWD: gcloud was never invoked.
204
+ resolve({ status: "failed", code: null, stdout: "", stderr: "" });
205
+ return;
206
+ }
207
+ if (parsed.status === "not_found") {
208
+ resolve({ status: "not_found" });
209
+ return;
210
+ }
211
+ if (parsed.status === "spawn_error") {
212
+ resolve({ status: "failed", code: null, stdout, stderr: gcloudStderr });
213
+ return;
214
+ }
215
+ if (parsed.status === "ok") {
216
+ resolve({ status: "ok", stdout, stderr: gcloudStderr });
217
+ return;
218
+ }
219
+ resolve({ status: "failed", code: parsed.code, stdout, stderr: gcloudStderr });
220
+ });
221
+ });
222
+ }
223
+ /**
224
+ * Finds this call's control trailer in the wrapper stderr.
225
+ *
226
+ * Returns null when the trailer is absent (wrapper crash/truncation).
227
+ * Only the exact random token line is treated as control data; ordinary
228
+ * gcloud output is never parsed.
229
+ */
230
+ function parseStageWrapperTrailer(stderr, token) {
231
+ const trailerIndex = stderr.lastIndexOf(token);
232
+ if (trailerIndex < 0) {
233
+ return null;
234
+ }
235
+ const trailer = stderr.slice(trailerIndex);
236
+ const match = /^([0-9a-f]+) status=(\S+)(?: code=(\S+))?/.exec(trailer);
237
+ if (match === null || match[1] !== token) {
238
+ return null;
239
+ }
240
+ const status = match[2];
241
+ const rawCode = match[3];
242
+ let code = null;
243
+ if (rawCode !== undefined) {
244
+ const numeric = Number(rawCode);
245
+ code = Number.isInteger(numeric) ? numeric : null;
246
+ }
247
+ return { status, code, trailerIndex };
248
+ }
249
+ /**
250
+ * Isolated wrapper evaluated by the child Node (`node -e`).
251
+ *
252
+ * Uses only portable built-ins (`node:fs`, `node:child_process`): chdir
253
+ * into the staging pathname, compare `statSync('.')` with `fstatSync(3)`
254
+ * and the expected identity, then only on an exact match spawn `gcloud`
255
+ * with no `cwd` option (inheriting the object-bound CWD) and no shell. Control values
256
+ * are passed as wrapper arguments, never added to or removed from the
257
+ * inherited environment; the gcloud child receives the original env.
258
+ * Written without template literals so the outer `node -e` string needs
259
+ * no escaping of nested interpolation.
260
+ */
261
+ const STAGE_CWD_WRAPPER_SCRIPT = [
262
+ "'use strict';",
263
+ "(() => {",
264
+ "const fs = require('node:fs');",
265
+ "const cp = require('node:child_process');",
266
+ "const [stageDir, rawDev, rawIno, rawArgs, token] = process.argv.slice(1);",
267
+ "const expectedDev = Number(rawDev);",
268
+ "const expectedIno = Number(rawIno);",
269
+ "let gcloudArgs;",
270
+ "try { gcloudArgs = JSON.parse(rawArgs); }",
271
+ "catch (e) { process.stderr.write(token + ' status=wrapper_error\\n'); return; }",
272
+ "if (!Array.isArray(gcloudArgs)) { process.stderr.write(token + ' status=wrapper_error\\n'); return; }",
273
+ "function report(suffix) { process.stderr.write(token + ' status=' + suffix + '\\n'); }",
274
+ "try { process.chdir(stageDir); }",
275
+ "catch (e) { report('cwd_mismatch'); return; }",
276
+ "let st, pinned;",
277
+ "try { st = fs.statSync('.'); pinned = fs.fstatSync(3); }",
278
+ "catch (e) { report('cwd_mismatch'); return; }",
279
+ "if (!st.isDirectory() || !pinned.isDirectory() || pinned.dev !== expectedDev || pinned.ino !== expectedIno || st.dev !== pinned.dev || st.ino !== pinned.ino) { report('cwd_mismatch'); return; }",
280
+ "let result;",
281
+ "try { result = cp.spawnSync('gcloud', gcloudArgs, { encoding: 'utf8', maxBuffer: 1048576 }); }",
282
+ "catch (e) { report('spawn_error'); return; }",
283
+ "if (result.stdout) process.stdout.write(result.stdout);",
284
+ "if (result.stderr) process.stderr.write(result.stderr);",
285
+ "if (result.error) {",
286
+ "if (result.error.code === 'ENOENT') { report('not_found'); return; }",
287
+ "report('spawn_error'); return;",
288
+ "}",
289
+ "if (result.status === 0) { report('ok'); return; }",
290
+ "report('failed code=' + String(result.status));",
291
+ "})();",
292
+ ].join("\n");
125
293
  //# sourceMappingURL=gcloudRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcloudRunner.js","sourceRoot":"","sources":["../../../../../../src/gcloudRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gcloudRunner.js","sourceRoot":"","sources":["../../../../../../src/gcloudRunner.ts"],"names":[],"mappings":"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"}