@poe-platform/safe-bash 0.1.825 → 0.1.827

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 (155) hide show
  1. package/dist/image-ast/index.js +39 -18
  2. package/dist/pdf-ast/image.js +1 -1
  3. package/dist/pdf-ast/index.js +1 -1
  4. package/dist/pdf-ast/vendor/pdfjs-fonts.mjs +9 -3
  5. package/dist/safe-bash/chunks/{chunk-AGHV53VF.js → chunk-M6XFU6LQ.js} +3 -1
  6. package/dist/safe-bash/chunks/{chunk-363QOIDR.js → chunk-T6FHWSHM.js} +3 -1
  7. package/dist/safe-bash/command-chunks/{chunk-ZPBL7TYJ.js → chunk-2JRHCVMQ.js} +1 -1
  8. package/dist/safe-bash/command-chunks/{chunk-FMGNXOMV.js → chunk-2L3NMRLG.js} +7 -3
  9. package/dist/safe-bash/command-chunks/{chunk-DAQO64WC.js → chunk-2YKOJPIW.js} +1 -1
  10. package/dist/safe-bash/command-chunks/{chunk-EPYJSPOY.js → chunk-3QCW4VQF.js} +12 -8
  11. package/dist/safe-bash/command-chunks/{chunk-YRBFNT5B.js → chunk-3YL2TMLA.js} +10 -1
  12. package/dist/safe-bash/command-chunks/{chunk-5H7ZHP7F.js → chunk-43NDRBKY.js} +1 -1
  13. package/dist/safe-bash/command-chunks/{chunk-BBOYR6LV.js → chunk-46GA576V.js} +3 -3
  14. package/dist/safe-bash/command-chunks/{chunk-WPT2FCHH.js → chunk-4SLPM2WM.js} +1 -1
  15. package/dist/safe-bash/command-chunks/{chunk-7ZQVMPSB.js → chunk-5CAXR62E.js} +1 -1
  16. package/dist/safe-bash/command-chunks/{chunk-3DTHX5UU.js → chunk-66653AEZ.js} +40 -14
  17. package/dist/safe-bash/command-chunks/{chunk-ETFJ4L7F.js → chunk-6OLE6CLV.js} +1 -1
  18. package/dist/safe-bash/command-chunks/{chunk-ZIDESNHW.js → chunk-7M3M6FKC.js} +1 -1
  19. package/dist/safe-bash/command-chunks/{chunk-2KMNVJB7.js → chunk-A7PKUIJT.js} +1 -1
  20. package/dist/safe-bash/command-chunks/{chunk-AVSINNZ6.js → chunk-DEQ47SBQ.js} +5 -5
  21. package/dist/safe-bash/command-chunks/{chunk-EV7A5FNN.js → chunk-FFFRLPXU.js} +2 -2
  22. package/dist/safe-bash/command-chunks/{chunk-4MVQE6CT.js → chunk-FYTBEGSY.js} +1 -1
  23. package/dist/safe-bash/command-chunks/{chunk-LFTGMUAV.js → chunk-HQIZR6EU.js} +192 -489
  24. package/dist/safe-bash/command-chunks/chunk-HS2L7I4N.js +219 -0
  25. package/dist/safe-bash/command-chunks/{chunk-WKS2PAZL.js → chunk-HUGKO4ZE.js} +10 -1
  26. package/dist/safe-bash/command-chunks/chunk-IGXH5W5Z.js +111 -0
  27. package/dist/safe-bash/command-chunks/{chunk-CMJBRGU2.js → chunk-IHQZKUBS.js} +1 -1
  28. package/dist/safe-bash/command-chunks/chunk-JADJ4BMN.js +1519 -0
  29. package/dist/safe-bash/command-chunks/{chunk-5AQAWIYK.js → chunk-JEZC5V3B.js} +4 -0
  30. package/dist/safe-bash/command-chunks/{chunk-YB5TNDY6.js → chunk-K5VJ4NNL.js} +39 -5
  31. package/dist/safe-bash/command-chunks/{chunk-7RQGRFHJ.js → chunk-KHWDEAE4.js} +2 -2
  32. package/dist/safe-bash/command-chunks/chunk-L54KVUSY.js +604 -0
  33. package/dist/safe-bash/command-chunks/{chunk-3NJETNC2.js → chunk-MBXNG6C3.js} +2 -2
  34. package/dist/safe-bash/command-chunks/{chunk-HCPEYQKT.js → chunk-N4SH6QY5.js} +285 -302
  35. package/dist/safe-bash/command-chunks/{chunk-3DID6MQY.js → chunk-OWTQYLID.js} +2 -2
  36. package/dist/safe-bash/command-chunks/{chunk-4EA7WI3L.js → chunk-QOOQD6BD.js} +42 -33
  37. package/dist/safe-bash/command-chunks/{chunk-RQTFK7AV.js → chunk-QZYEI4N6.js} +1 -1
  38. package/dist/safe-bash/command-chunks/{chunk-R3SLT3ZX.js → chunk-R6GON4H3.js} +11 -1
  39. package/dist/safe-bash/command-chunks/{chunk-2GILUQJY.js → chunk-R7ZGDHME.js} +3 -3
  40. package/dist/safe-bash/command-chunks/{chunk-HNEWGADJ.js → chunk-RUXOFW5G.js} +7 -6
  41. package/dist/safe-bash/command-chunks/{chunk-LKAFLJ5L.js → chunk-RWQKX44L.js} +1 -1
  42. package/dist/safe-bash/command-chunks/{chunk-PKH57OIC.js → chunk-SG2KOOD4.js} +2 -2
  43. package/dist/safe-bash/command-chunks/chunk-T4TGJYFV.js +60 -0
  44. package/dist/safe-bash/command-chunks/chunk-TGSNVLFZ.js +105 -0
  45. package/dist/safe-bash/command-chunks/{chunk-NXCJNPL3.js → chunk-UCE77LYV.js} +2 -1
  46. package/dist/safe-bash/command-chunks/{chunk-EWECMOQ5.js → chunk-UIHPHIKI.js} +1 -1
  47. package/dist/safe-bash/command-chunks/{chunk-XSZNL3GV.js → chunk-UJPWPRVB.js} +191 -146
  48. package/dist/safe-bash/command-chunks/{chunk-E5CDHXFA.js → chunk-VOR6YDZC.js} +26 -1
  49. package/dist/safe-bash/command-chunks/chunk-VSNVYOK2.js +30 -0
  50. package/dist/safe-bash/command-chunks/{chunk-4XYGJB24.js → chunk-VTH4AORO.js} +3 -3
  51. package/dist/safe-bash/command-chunks/{chunk-W5LH7D23.js → chunk-WKKJJBJQ.js} +8 -8
  52. package/dist/safe-bash/command-chunks/{chunk-OLXMWQJ5.js → chunk-WRO3PB2M.js} +1 -1
  53. package/dist/safe-bash/command-chunks/{chunk-RUAGHZNF.js → chunk-X5ODTF3E.js} +7 -5
  54. package/dist/safe-bash/command-chunks/{chunk-LH4VBNF6.js → chunk-XGTSP2CP.js} +84 -16
  55. package/dist/safe-bash/command-chunks/{chunk-K576GZED.js → chunk-XTHKXCF2.js} +2 -2
  56. package/dist/safe-bash/command-chunks/{chunk-J3VS55K4.js → chunk-YHRESVJ7.js} +9 -3
  57. package/dist/safe-bash/command-chunks/{chunk-UWIDPTOB.js → chunk-YSCKOUQP.js} +1 -1
  58. package/dist/safe-bash/command-chunks/{chunk-UYNJF5QN.js → chunk-ZALAWNOE.js} +76 -122
  59. package/dist/safe-bash/command-chunks/{chunk-OT75C5YS.js → chunk-ZYXKW2K7.js} +1 -1
  60. package/dist/safe-bash/command-chunks/{pdf-renderer-346WYKSZ.js → pdf-renderer-5QWOVFA4.js} +1 -1
  61. package/dist/safe-bash/command-chunks/{prompt-tool-debug-3POFNRYP.js → prompt-tool-debug-G7ATE7D5.js} +6 -4
  62. package/dist/safe-bash/commands/llm/index.browser.js +5 -1
  63. package/dist/safe-bash/commands/llm/index.js +1 -1
  64. package/dist/safe-bash/commands/python/executor.browser.js +3 -1
  65. package/dist/safe-bash/commands/python/executor.js +1 -1
  66. package/dist/safe-bash/commands/python/index.browser.js +5 -1
  67. package/dist/safe-bash/commands/python/index.js +1 -1
  68. package/dist/safe-bash/core.browser.js +2 -2
  69. package/dist/safe-bash/full-core.browser.js +10 -2
  70. package/dist/safe-bash-command-awk/awk-runtime.js +2 -2
  71. package/dist/safe-bash-command-awk/awk-syntax.js +1 -1
  72. package/dist/safe-bash-command-awk/awk.js +3 -3
  73. package/dist/safe-bash-command-awk/index.js +3 -3
  74. package/dist/safe-bash-command-gpg/index.js +11 -3
  75. package/dist/safe-bash-command-imagemagick/index.js +2 -2
  76. package/dist/safe-bash-command-llm/collections.js +6 -4
  77. package/dist/safe-bash-command-llm/command.js +4 -4
  78. package/dist/safe-bash-command-llm/import-json-document.d.ts +9 -2
  79. package/dist/safe-bash-command-llm/index.d.ts +2 -1
  80. package/dist/safe-bash-command-llm/index.js +10 -4
  81. package/dist/safe-bash-command-llm/loader-provider.d.ts +5 -0
  82. package/dist/safe-bash-command-mcp/index.js +10 -13
  83. package/dist/safe-bash-command-pdftoppm/index.js +2 -2
  84. package/dist/safe-bash-command-playwright-cli/index.js +2 -2
  85. package/dist/safe-bash-command-playwright-cli/playwright/ability-execution.d.ts +1 -0
  86. package/dist/safe-bash-command-playwright-cli/playwright/ability-execution.js +1 -1
  87. package/dist/safe-bash-command-playwright-cli/playwright/controller.d.ts +2 -0
  88. package/dist/safe-bash-command-playwright-cli/playwright/controller.js +2 -2
  89. package/dist/safe-bash-command-playwright-cli/playwright/index.js +2 -2
  90. package/dist/safe-bash-command-python/build-backend.d.ts +2 -0
  91. package/dist/safe-bash-command-python/cache.d.ts +1 -1
  92. package/dist/safe-bash-command-python/executor.d.ts +5 -2
  93. package/dist/safe-bash-command-python/executor.js +11 -6
  94. package/dist/safe-bash-command-python/host-capabilities.js +1 -1
  95. package/dist/safe-bash-command-python/index.js +11 -6
  96. package/dist/safe-bash-command-python/jspi.js +5 -3
  97. package/dist/safe-bash-command-python/manifest-file.d.ts +44 -0
  98. package/dist/safe-bash-command-python/manifest.d.ts +45 -0
  99. package/dist/safe-bash-command-python/provisioning.d.ts +20 -1
  100. package/dist/safe-bash-command-python/provisioning.js +3 -2
  101. package/dist/safe-bash-command-python/reply.js +7 -11
  102. package/dist/safe-bash-command-python/source-archive.js +2 -2
  103. package/dist/safe-bash-command-python/source-zip.js +2 -2
  104. package/dist/safe-bash-command-python/worker.js +34 -21
  105. package/dist/safe-bash-command-sqlite3/engine.d.ts +4 -0
  106. package/dist/safe-bash-command-sqlite3/index.js +174 -18
  107. package/dist/safe-bash-command-svgo/index.js +1 -1
  108. package/dist/safe-bash-command-tar/create.js +3 -3
  109. package/dist/safe-bash-command-tar/extract.js +3 -3
  110. package/dist/safe-bash-command-tar/index.js +5 -5
  111. package/dist/safe-bash-command-tar/modes.js +5 -5
  112. package/dist/safe-bash-command-tar/options.d.ts +1 -1
  113. package/dist/safe-bash-command-tar/options.js +1 -1
  114. package/dist/safe-bash-command-tar/stream.js +1 -1
  115. package/dist/safe-bash-command-wkhtmltopdf/index.js +1 -1
  116. package/dist/safe-bash-command-xan/argv.js +1 -1
  117. package/dist/safe-bash-command-xan/commands.js +3 -3
  118. package/dist/safe-bash-command-xan/index.js +3 -3
  119. package/dist/safe-bash-command-xan/io.js +2 -2
  120. package/dist/safe-bash-compression-engine/bounded-codec.js +3 -3
  121. package/dist/safe-bash-compression-engine/codec-loader.js +2 -2
  122. package/dist/safe-bash-compression-engine/files.js +6 -6
  123. package/dist/safe-bash-compression-engine/index.js +5 -5
  124. package/dist/safe-bash-compression-engine/operand.js +6 -6
  125. package/dist/safe-bash-compression-engine/options.js +1 -1
  126. package/dist/safe-bash-compression-engine/stream.js +5 -5
  127. package/dist/safe-bash-compression-engine/zstd-decode.js +4 -4
  128. package/dist/safe-bash-contracts/filesystem-descriptor.js +1 -1
  129. package/dist/safe-bash-contracts/filesystem-output.js +1 -1
  130. package/dist/safe-bash-csv-engine/index.js +6 -6
  131. package/dist/safe-bash-csv-engine/python-codec-aliases.js +1 -1
  132. package/dist/safe-bash-csv-engine/python-codepages.js +3 -3
  133. package/dist/safe-bash-csv-engine/python-file-codepages.js +2 -2
  134. package/dist/safe-bash-csv-engine/python-utf16.js +4 -4
  135. package/dist/safe-bash-csv-engine/text-decoder.js +6 -6
  136. package/dist/safe-bash-graphviz-engine/index.js +1 -1
  137. package/dist/safe-bash-pager-engine/index.js +2 -2
  138. package/dist/safe-bash-query-engine/capture.js +3 -3
  139. package/dist/safe-bash-query-engine/delpaths.js +3 -3
  140. package/dist/safe-bash-query-engine/formats.js +2 -2
  141. package/dist/safe-bash-query-engine/index.js +10 -10
  142. package/dist/safe-bash-query-engine/indices.js +3 -3
  143. package/dist/safe-bash-query-engine/input.d.ts +3 -3
  144. package/dist/safe-bash-query-engine/input.js +1 -1
  145. package/dist/safe-bash-query-engine/interpreter.js +9 -9
  146. package/dist/safe-bash-query-engine/query-core.js +10 -10
  147. package/dist/safe-bash-query-engine/regex.js +4 -4
  148. package/dist/safe-bash-query-engine/splits.js +5 -5
  149. package/dist/safe-bash-query-engine/values.js +2 -2
  150. package/package.json +2 -2
  151. package/dist/safe-bash/command-chunks/chunk-OOYVZAWL.js +0 -90
  152. package/dist/safe-bash/command-chunks/chunk-RZOHZGEZ.js +0 -772
  153. package/dist/safe-bash/command-chunks/chunk-WIUEM7HP.js +0 -58
  154. package/dist/safe-bash/command-chunks/chunk-WY6THI6J.js +0 -673
  155. package/dist/safe-bash/command-chunks/chunk-ZERCTWUI.js +0 -467
@@ -33,6 +33,8 @@ export interface PythonCommandsOptions {
33
33
  readonly packageProfile?: 'documents';
34
34
  readonly provisioning?: PythonPackageOptions;
35
35
  readonly environment?: PythonPackageEnvironment;
36
+ /** Built-in runtimes read host metadata on demand; inline supports older custom executors. */
37
+ readonly packageRecordTransport?: 'host' | 'inline';
36
38
  /** Host UI lifecycle; never written to guest stdout/stderr. */
37
39
  readonly onProgress?: (event: PythonInitializationProgress) => void;
38
40
  readonly onDiagnostic?: PythonDiagnosticObserver;
@@ -84,8 +86,9 @@ export { createPythonBuildDependencies, type PythonBuildDependenciesRequest } fr
84
86
  export { createPythonSourceSnapshot, type PythonSourceSnapshot } from './source-snapshot.js';
85
87
  export { createPythonBuildBackend, type PythonBuildHookRequest, type PythonSourceRequirementRequest, type PythonEditableRequirementRequest, type PythonSourceRequirement, type PythonLegacyBuildRequest, type PythonLegacyRequirementsRequest, type PythonBuildHookContext, type PythonBuildSystemRequest, type PythonBuildSystemDetails, type PythonBuildRequirementsRequest, type PythonBuildRequirementsStatus } from './build-backend.js';
86
88
  export type { PythonPackageInstallOptions, PythonPackageOptions, PythonPackageCache, PythonPackageProgress, PythonPackageStart, PythonPackageContext, PythonPackageEnvironment, PythonPackagePrepareContext } from './provisioning.js';
87
- export { PythonPackageConflictError, createPythonPackageManifestStore } from './manifest.js';
88
- export type { PythonPackageManifest, PythonPackageManifestStore } from './manifest.js';
89
+ export { PythonPackageConflictError, createPythonPackageManifestStore, createPythonPackageStreamingManifestStore } from './manifest.js';
90
+ export { createPythonPackageFileManifestStore } from './manifest-file.js';
91
+ export type { PythonPackageManifest, PythonPackageManifestStore, PythonPackageStreamingManifestStore } from './manifest.js';
89
92
  export { createPythonPackageCache } from './cache.js';
90
93
  export { createPythonExecutorPool } from './executor-pool.js';
91
94
  export type { PythonExecutorPool, PythonExecutorPoolOptions } from './executor-pool.js';
@@ -14,27 +14,30 @@ import {
14
14
  installPythonLlmPackages,
15
15
  pythonExecutorCommands,
16
16
  pythonLlmPackages
17
- } from "../safe-bash/command-chunks/chunk-LFTGMUAV.js";
17
+ } from "../safe-bash/command-chunks/chunk-HQIZR6EU.js";
18
18
  import {
19
19
  PythonPackageConflictError,
20
20
  createPythonPackageCache,
21
21
  createPythonPackageEnvironment,
22
+ createPythonPackageFileManifestStore,
22
23
  createPythonPackageManifestStore,
24
+ createPythonPackageStreamingManifestStore,
23
25
  publishPythonBuildWheel,
24
26
  pythonDocumentPackages
25
- } from "../safe-bash/command-chunks/chunk-RZOHZGEZ.js";
27
+ } from "../safe-bash/command-chunks/chunk-JADJ4BMN.js";
26
28
  import {
27
29
  createPythonShellCapability
28
30
  } from "../safe-bash/command-chunks/chunk-NHAG4DWL.js";
29
- import "../safe-bash/command-chunks/chunk-NXCJNPL3.js";
30
31
  import {
31
32
  createPythonJspiAssets
32
33
  } from "../safe-bash/command-chunks/chunk-IOZTDDNT.js";
33
34
  import {
34
35
  createPythonJspiExecutor
35
- } from "../safe-bash/command-chunks/chunk-XSZNL3GV.js";
36
+ } from "../safe-bash/command-chunks/chunk-UJPWPRVB.js";
36
37
  import "../safe-bash/command-chunks/chunk-FXWKMNX2.js";
37
- import "../safe-bash/command-chunks/chunk-WY6THI6J.js";
38
+ import "../safe-bash/command-chunks/chunk-L54KVUSY.js";
39
+ import "../safe-bash/command-chunks/chunk-HS2L7I4N.js";
40
+ import "../safe-bash/command-chunks/chunk-UCE77LYV.js";
38
41
  import {
39
42
  createPythonJspiNativeCall,
40
43
  createPythonJspiStatResult,
@@ -60,7 +63,7 @@ import {
60
63
  import {
61
64
  createPythonHostBridge,
62
65
  pythonHostFailureCode
63
- } from "../safe-bash/command-chunks/chunk-EPYJSPOY.js";
66
+ } from "../safe-bash/command-chunks/chunk-3QCW4VQF.js";
64
67
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
65
68
  export {
66
69
  PythonFailure,
@@ -85,7 +88,9 @@ export {
85
88
  createPythonLlmToolLoader,
86
89
  createPythonPackageCache,
87
90
  createPythonPackageEnvironment,
91
+ createPythonPackageFileManifestStore,
88
92
  createPythonPackageManifestStore,
93
+ createPythonPackageStreamingManifestStore,
89
94
  createPythonShellCapability,
90
95
  createPythonSourcePackageEnvironment,
91
96
  createPythonSourceSnapshot,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createPythonHostBridge,
3
3
  pythonHostFailureCode
4
- } from "../safe-bash/command-chunks/chunk-EPYJSPOY.js";
4
+ } from "../safe-bash/command-chunks/chunk-3QCW4VQF.js";
5
5
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
6
6
  export {
7
7
  createPythonHostBridge,
@@ -14,27 +14,30 @@ import {
14
14
  installPythonLlmPackages,
15
15
  pythonExecutorCommands,
16
16
  pythonLlmPackages
17
- } from "../safe-bash/command-chunks/chunk-LFTGMUAV.js";
17
+ } from "../safe-bash/command-chunks/chunk-HQIZR6EU.js";
18
18
  import {
19
19
  PythonPackageConflictError,
20
20
  createPythonPackageCache,
21
21
  createPythonPackageEnvironment,
22
+ createPythonPackageFileManifestStore,
22
23
  createPythonPackageManifestStore,
24
+ createPythonPackageStreamingManifestStore,
23
25
  publishPythonBuildWheel,
24
26
  pythonDocumentPackages
25
- } from "../safe-bash/command-chunks/chunk-RZOHZGEZ.js";
27
+ } from "../safe-bash/command-chunks/chunk-JADJ4BMN.js";
26
28
  import {
27
29
  createPythonShellCapability
28
30
  } from "../safe-bash/command-chunks/chunk-NHAG4DWL.js";
29
- import "../safe-bash/command-chunks/chunk-NXCJNPL3.js";
30
31
  import {
31
32
  createPythonJspiAssets
32
33
  } from "../safe-bash/command-chunks/chunk-IOZTDDNT.js";
33
34
  import {
34
35
  createPythonJspiExecutor
35
- } from "../safe-bash/command-chunks/chunk-XSZNL3GV.js";
36
+ } from "../safe-bash/command-chunks/chunk-UJPWPRVB.js";
36
37
  import "../safe-bash/command-chunks/chunk-FXWKMNX2.js";
37
- import "../safe-bash/command-chunks/chunk-WY6THI6J.js";
38
+ import "../safe-bash/command-chunks/chunk-L54KVUSY.js";
39
+ import "../safe-bash/command-chunks/chunk-HS2L7I4N.js";
40
+ import "../safe-bash/command-chunks/chunk-UCE77LYV.js";
38
41
  import {
39
42
  createPythonJspiNativeCall,
40
43
  createPythonJspiStatResult,
@@ -60,7 +63,7 @@ import {
60
63
  import {
61
64
  createPythonHostBridge,
62
65
  pythonHostFailureCode
63
- } from "../safe-bash/command-chunks/chunk-EPYJSPOY.js";
66
+ } from "../safe-bash/command-chunks/chunk-3QCW4VQF.js";
64
67
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
65
68
 
66
69
  // packages/safe-bash-command-python/src/default-runtime.ts
@@ -455,7 +458,9 @@ export {
455
458
  createPythonLlmToolLoader,
456
459
  createPythonPackageCache,
457
460
  createPythonPackageEnvironment,
461
+ createPythonPackageFileManifestStore,
458
462
  createPythonPackageManifestStore,
463
+ createPythonPackageStreamingManifestStore,
459
464
  createPythonShellCapability,
460
465
  createPythonSourcePackageEnvironment,
461
466
  createPythonSourceSnapshot,
@@ -1,13 +1,15 @@
1
1
  import {
2
2
  createPythonJspiExecutor
3
- } from "../safe-bash/command-chunks/chunk-XSZNL3GV.js";
3
+ } from "../safe-bash/command-chunks/chunk-UJPWPRVB.js";
4
4
  import "../safe-bash/command-chunks/chunk-FXWKMNX2.js";
5
- import "../safe-bash/command-chunks/chunk-WY6THI6J.js";
5
+ import "../safe-bash/command-chunks/chunk-L54KVUSY.js";
6
+ import "../safe-bash/command-chunks/chunk-HS2L7I4N.js";
7
+ import "../safe-bash/command-chunks/chunk-UCE77LYV.js";
6
8
  import "../safe-bash/command-chunks/chunk-P56KGNW7.js";
7
9
  import "../safe-bash/command-chunks/chunk-NK3FRG5O.js";
8
10
  import "../safe-bash/command-chunks/chunk-XNJGNDFW.js";
9
11
  import "../safe-bash/command-chunks/chunk-TO6UNFEF.js";
10
- import "../safe-bash/command-chunks/chunk-EPYJSPOY.js";
12
+ import "../safe-bash/command-chunks/chunk-3QCW4VQF.js";
11
13
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
12
14
  export {
13
15
  createPythonJspiExecutor
@@ -0,0 +1,44 @@
1
+ import { type FileSystem } from "../safe-bash-contracts/index.js";
2
+ /** Persistent caller-owned manifests with native conditional publication.
3
+ * filename selects a single existing manifest file; omit it for scope-keyed files.
4
+ * Publication and structured decoding stream; compatibility get returns owned bytes. */
5
+ export declare function createPythonPackageFileManifestStore({ fs, directory, maxCacheBytes, filename }: {
6
+ readonly fs: FileSystem;
7
+ readonly directory: string;
8
+ readonly maxCacheBytes?: number;
9
+ readonly filename?: string;
10
+ }): {
11
+ openSnapshot(scope: string, options: {
12
+ signal: AbortSignal;
13
+ maxBytes: number;
14
+ }): Promise<{
15
+ revision: string;
16
+ installed: readonly string[];
17
+ version: 0 | 1 | 2 | 3;
18
+ recordCount: number;
19
+ readRecord: (ordinal: number, offset: number) => Promise<string>;
20
+ readField?: (ordinal: number, field: number, offset: number) => Promise<string>;
21
+ close: () => Promise<void>;
22
+ } | undefined>;
23
+ getSnapshot(scope: string, options: {
24
+ signal: AbortSignal;
25
+ maxBytes: number;
26
+ }): Promise<{
27
+ revision: string;
28
+ value: unknown;
29
+ } | undefined>;
30
+ get(scope: string, options: {
31
+ readonly signal: AbortSignal;
32
+ }): Promise<import("./manifest.js").PythonPackageManifest | undefined>;
33
+ compareAndSet(scope: string, revision: string | undefined, bytes: Uint8Array, options: {
34
+ readonly signal: AbortSignal;
35
+ }): Promise<boolean>;
36
+ compareAndSetSource?(scope: string, revision: string | undefined, source: AsyncIterable<Uint8Array>, options: {
37
+ readonly signal: AbortSignal;
38
+ readonly maxBytes: number;
39
+ }): Promise<boolean>;
40
+ compareAndSetSnapshot?(scope: string, revision: string | undefined, snapshot: import("./manifest.js").PythonInstalledSnapshot | readonly string[], options: {
41
+ readonly signal: AbortSignal;
42
+ readonly maxBytes: number;
43
+ }): Promise<boolean>;
44
+ };
@@ -19,14 +19,59 @@ export interface PythonPackageManifest {
19
19
  readonly revision: string;
20
20
  readonly bytes: Uint8Array;
21
21
  }
22
+ /** Validated host snapshot whose metadata stays in caller backing storage. */
23
+ export interface PythonPackageRecordSnapshot {
24
+ readonly revision: string;
25
+ readonly installed: readonly string[];
26
+ readonly version: 0 | 1 | 2 | 3;
27
+ readonly recordCount: number;
28
+ readRecord(ordinal: number, offset: number): Promise<string>;
29
+ /** Optional bounded JSON field transport; fields are numbered 0 through 5. */
30
+ readField?(ordinal: number, field: number, offset: number): Promise<string>;
31
+ close(): Promise<void>;
32
+ }
22
33
  export interface PythonPackageManifestStore {
34
+ openSnapshot?(scope: string, options: {
35
+ readonly signal: AbortSignal;
36
+ readonly maxBytes: number;
37
+ }): Promise<PythonPackageRecordSnapshot | undefined>;
23
38
  get(scope: string, options: {
24
39
  readonly signal: AbortSignal;
25
40
  }): Promise<PythonPackageManifest | undefined>;
41
+ /** Optional incremental decoding; the returned value is validated by the environment.
42
+ * Enforce maxBytes on original input and retire all read handles before returning. */
43
+ getSnapshot?(scope: string, options: {
44
+ readonly signal: AbortSignal;
45
+ readonly maxBytes: number;
46
+ }): Promise<{
47
+ readonly revision: string;
48
+ readonly value: unknown;
49
+ } | undefined>;
26
50
  compareAndSet(scope: string, revision: string | undefined, bytes: Uint8Array, options: {
27
51
  readonly signal: AbortSignal;
28
52
  }): Promise<boolean>;
53
+ /** Atomic publication from an already validated byte source. */
54
+ compareAndSetSource?(scope: string, revision: string | undefined, source: AsyncIterable<Uint8Array>, options: {
55
+ readonly signal: AbortSignal;
56
+ readonly maxBytes: number;
57
+ }): Promise<boolean>;
58
+ /** Optional structured publication, avoiding the environment's byte buffer.
59
+ * The store must enforce maxBytes on the serialized representation. */
60
+ compareAndSetSnapshot?(scope: string, revision: string | undefined, snapshot: PythonInstalledSnapshot | readonly string[], options: {
61
+ readonly signal: AbortSignal;
62
+ readonly maxBytes: number;
63
+ }): Promise<boolean>;
64
+ }
65
+ export interface PythonPackageStreamingManifestStore {
66
+ get: PythonPackageManifestStore['get'];
67
+ /** Consume privately, then atomically compare and publish. Source errors must
68
+ * leave the prior snapshot unchanged. A stale revision may return false early. */
69
+ compareAndSet(scope: string, revision: string | undefined, source: AsyncIterable<Uint8Array>, options: {
70
+ readonly signal: AbortSignal;
71
+ }): Promise<boolean>;
29
72
  }
73
+ /** Adapt an atomic streaming store without assembling encoded manifest bytes. */
74
+ export declare function createPythonPackageStreamingManifestStore(store: PythonPackageStreamingManifestStore): PythonPackageManifestStore;
30
75
  export declare class PythonPackageConflictError extends Error {
31
76
  readonly code = "EPACKAGECONFLICT";
32
77
  readonly retryable = true;
@@ -10,6 +10,18 @@ export interface PythonPackageProgress {
10
10
  readonly totalBytes?: number;
11
11
  }
12
12
  export interface PythonPackageInstallOptions {
13
+ /** Primary Simple API package index. Defaults to PyPI. */
14
+ readonly indexUrl?: string;
15
+ /** Additional indexes searched alongside the primary index. */
16
+ readonly extraIndexUrls?: readonly string[];
17
+ /** Disable index lookup; direct wheel sources remain available. */
18
+ readonly noIndex?: boolean;
19
+ /** Install requested packages without resolving their runtime dependencies. */
20
+ readonly noDeps?: boolean;
21
+ /** Limit selected versions without installing unrequested packages. */
22
+ readonly constraints?: readonly string[];
23
+ /** Local constraint files; nested -r entries remain requirements. */
24
+ readonly constraintFiles?: readonly string[];
13
25
  /** Local source trees whose installed imports remain linked to caller storage. */
14
26
  readonly editable?: readonly string[];
15
27
  /** Include prerelease and development candidates during dependency resolution. */
@@ -43,7 +55,8 @@ export interface PythonPackageOptions extends PythonPackageInstallOptions {
43
55
  readonly maxCacheBytes?: number;
44
56
  readonly onProgress?: (event: PythonPackageProgress) => void;
45
57
  }
46
- export interface PythonPackageStart extends Omit<PythonPackageInstallOptions, 'noCache' | 'editable'> {
58
+ export interface PythonPackageStart extends Omit<PythonPackageInstallOptions, 'noCache' | 'editable' | 'constraintFiles' | 'indexUrl' | 'extraIndexUrls' | 'noIndex'> {
59
+ readonly indexUrls?: readonly string[];
47
60
  readonly session: string;
48
61
  /** Load installer tooling even when no application requirements are installed. */
49
62
  readonly bootstrap?: boolean;
@@ -55,6 +68,10 @@ export interface PythonPackageStart extends Omit<PythonPackageInstallOptions, 'n
55
68
  readonly legacy?: boolean;
56
69
  /** Installed metadata used only by uninstall; application startup still restores code. */
57
70
  readonly records?: readonly PythonPackageRecord[] | undefined;
71
+ /** Host-owned records are read through package-record-read; -1 means absent. */
72
+ readonly recordCount?: number;
73
+ /** The default native executor may publish a caller-owned manifest file. */
74
+ readonly streamManifest?: boolean;
58
75
  /** Prior installation; only legacy manifests resolve dependencies during restore. */
59
76
  readonly restore?: readonly string[];
60
77
  /** New or host-configured requirements whose dependency closure is resolved. */
@@ -71,6 +88,8 @@ export interface PythonPackageContext {
71
88
  readonly signal: AbortSignal;
72
89
  }
73
90
  export interface PythonPackagePrepareContext extends PythonPackageContext, PythonPackageInstallOptions, Partial<Pick<import("../safe-bash-contracts/index.js").CommandContext, 'env' | 'stdout' | 'stderr' | 'registerCleanup' | 'args'>> {
91
+ /** Keep metadata in the host session instead of copying it into startup. */
92
+ readonly recordTransport?: 'host' | 'inline';
74
93
  readonly uninstall?: PythonPackageStart['uninstall'];
75
94
  readonly requirements?: readonly string[];
76
95
  readonly requirementFiles?: readonly string[];
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  createPythonPackageEnvironment,
3
3
  pythonDocumentPackages
4
- } from "../safe-bash/command-chunks/chunk-RZOHZGEZ.js";
5
- import "../safe-bash/command-chunks/chunk-NXCJNPL3.js";
4
+ } from "../safe-bash/command-chunks/chunk-JADJ4BMN.js";
5
+ import "../safe-bash/command-chunks/chunk-HS2L7I4N.js";
6
+ import "../safe-bash/command-chunks/chunk-UCE77LYV.js";
6
7
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
7
8
  export {
8
9
  createPythonPackageEnvironment,
@@ -3,15 +3,14 @@ import { FsError } from "../safe-bash-contracts/errors.js";
3
3
  export function encodePythonReply(value, maxBytes) {
4
4
  let used = 0;
5
5
  const ancestors = new Set();
6
- const reserve = (bytes) => {
7
- used += bytes;
8
- if (used > maxBytes)
6
+ const checkSize = (bytes, remaining = maxBytes - used) => {
7
+ if (bytes > remaining)
9
8
  throw new FsError('EFBIG', { syscall: 'python reply' });
10
9
  };
10
+ const reserve = (bytes) => { checkSize(bytes); used += bytes; };
11
11
  const string = (text) => {
12
12
  // Every UTF-16 code unit needs at least one output byte, even before quoting.
13
- if (text.length + 2 > maxBytes - used)
14
- throw new FsError('EFBIG', { syscall: 'python reply' });
13
+ checkSize(text.length + 2);
15
14
  reserve(2);
16
15
  for (let index = 0; index < text.length; index++) {
17
16
  const code = text.charCodeAt(index);
@@ -33,8 +32,7 @@ export function encodePythonReply(value, maxBytes) {
33
32
  return text;
34
33
  };
35
34
  const own = (input, depth) => {
36
- if (depth > 64)
37
- throw new FsError('EFBIG', { syscall: 'python reply' });
35
+ checkSize(depth, 64);
38
36
  if (input === null || input === undefined) {
39
37
  reserve(4);
40
38
  return null;
@@ -57,8 +55,7 @@ export function encodePythonReply(value, maxBytes) {
57
55
  try {
58
56
  if (input instanceof Uint8Array || Array.isArray(input)) {
59
57
  // Each slot contributes at least one value byte and one separator.
60
- if (input.length > maxBytes - used)
61
- throw new FsError('EFBIG', { syscall: 'python reply' });
58
+ checkSize(input.length);
62
59
  reserve(2);
63
60
  const output = [];
64
61
  for (let index = 0; index < input.length; index++) {
@@ -78,8 +75,7 @@ export function encodePythonReply(value, maxBytes) {
78
75
  for (const key in input) {
79
76
  if (!Object.hasOwn(input, key))
80
77
  continue;
81
- if (++visited > maxBytes)
82
- throw new FsError('EFBIG', { syscall: 'python reply' });
78
+ checkSize(++visited, maxBytes);
83
79
  const descriptor = Object.getOwnPropertyDescriptor(input, key);
84
80
  if (!('value' in descriptor))
85
81
  throw new TypeError('Accessor Python reply');
@@ -3,10 +3,10 @@ import {
3
3
  extractPythonSourceZipFile,
4
4
  pythonSourceZipSize,
5
5
  splitPythonSourcePath
6
- } from "../safe-bash/command-chunks/chunk-LKAFLJ5L.js";
6
+ } from "../safe-bash/command-chunks/chunk-RWQKX44L.js";
7
7
  import {
8
8
  openPythonPackageFile
9
- } from "../safe-bash/command-chunks/chunk-NXCJNPL3.js";
9
+ } from "../safe-bash/command-chunks/chunk-UCE77LYV.js";
10
10
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
11
11
 
12
12
  // packages/safe-bash-command-python/src/source-archive.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  extractPythonSourceZip
3
- } from "../safe-bash/command-chunks/chunk-LKAFLJ5L.js";
4
- import "../safe-bash/command-chunks/chunk-NXCJNPL3.js";
3
+ } from "../safe-bash/command-chunks/chunk-RWQKX44L.js";
4
+ import "../safe-bash/command-chunks/chunk-UCE77LYV.js";
5
5
  import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
6
6
  export {
7
7
  extractPythonSourceZip
@@ -1,14 +1,11 @@
1
1
  import {
2
2
  installPythonPackages,
3
+ loadPythonRuntimePrograms,
3
4
  parsePythonInvocation,
4
- pythonDirectoryEntries,
5
- pythonExecution,
6
- pythonHardLinks,
7
- pythonImportMetadata,
8
- pythonRuntimeRelocation,
9
- pythonStatProjection,
10
- pythonTreeCleanup
11
- } from "../safe-bash/command-chunks/chunk-WY6THI6J.js";
5
+ pythonExecution
6
+ } from "../safe-bash/command-chunks/chunk-L54KVUSY.js";
7
+ import "../safe-bash/command-chunks/chunk-HS2L7I4N.js";
8
+ import "../safe-bash/command-chunks/chunk-UCE77LYV.js";
12
9
  import {
13
10
  PythonFailure
14
11
  } from "../safe-bash/command-chunks/chunk-TO6UNFEF.js";
@@ -139,25 +136,13 @@ async function runPythonWorker(options) {
139
136
  return previous;
140
137
  });
141
138
  if (runtime.version !== "314.0.6") throw new PythonFailure("runtime-abi", { cause: new Error("Python worker requires Pyodide 314.0.6") });
142
- if (start.packages) await installPythonPackages(runtime, start.packages, startupRequest, start.maxTransferBytes);
143
- const unavailablePackage = () => {
144
- throw new Error("Python package transport is only available during installation");
145
- };
146
- const publicRuntime = runtime;
147
- if ("loadPackage" in publicRuntime) publicRuntime.loadPackage = unavailablePackage;
148
- if (publicRuntime._api?.packageManager) publicRuntime._api.packageManager.downloadPackage = unavailablePackage;
149
- if (start.installOnly) {
150
- if (!start.packages?.uninstall) startupWrite("stdout", "Successfully installed requested Python packages");
151
- postMessage({ type: "exit", exitCode: 0 });
152
- return;
153
- }
154
139
  category = "runtime-abi";
155
140
  const errno = JSON.parse(runtime.runPython("__import__('json').dumps({k:v for k,v in vars(__import__('errno')).items() if k.startswith('E') and isinstance(v,int)})"));
156
141
  const request = createPythonWorkerRequest(start.shared, postMessage, (code) => new runtime.FS.ErrnoError(errno[code] ?? errno.EIO));
157
142
  const libraries = runtime._module?.LDSO?.loadedLibsByName;
158
143
  if (!libraries) throw new Error("Python runtime native loader ABI unavailable");
159
144
  if (typeof runtime._module._Py_FinalizeEx !== "function") throw new Error("Python runtime finalization ABI unavailable");
160
- runtime.runPython("import sys, zipimport, importlib.machinery, json, os, runpy, traceback");
145
+ runtime.runPython("import sys, zipimport, importlib.machinery, json, os, runpy, traceback, site, sysconfig, pyodide._package_loader");
161
146
  runtime.setStdin({ read(buffer) {
162
147
  const bytes = request("stdin", Math.min(buffer.length, start.maxTransferBytes));
163
148
  if (!Array.isArray(bytes) || bytes.length > buffer.length) throw new runtime.FS.ErrnoError(errno.EIO);
@@ -197,6 +182,7 @@ async function runPythonWorker(options) {
197
182
  if (name.startsWith("/lib/")) libraries[start.runtimeMount + name] = library;
198
183
  }
199
184
  runtime.globals.set("_safe_runtime_mount", start.runtimeMount);
185
+ const { pythonRuntimeRelocation, pythonImportMetadata, pythonDirectoryEntries, pythonStatProjection, pythonHardLinks, pythonTreeCleanup, pythonMetadataDiscovery } = await loadPythonRuntimePrograms();
200
186
  runtime.runPython(pythonRuntimeRelocation);
201
187
  runtime.globals.set("_safe_import_stat", (path) => {
202
188
  try {
@@ -237,6 +223,14 @@ async function runPythonWorker(options) {
237
223
  return JSON.stringify({ errno: error.errno ?? errno.EIO });
238
224
  }
239
225
  });
226
+ runtime.globals.set("_safe_directory_cursor", (operation, value) => {
227
+ try {
228
+ if (!["directoryOpen", "directoryNext", "close"].includes(operation)) throw new runtime.FS.ErrnoError(errno.EINVAL);
229
+ return JSON.stringify({ value: request(operation, value) });
230
+ } catch (error) {
231
+ return JSON.stringify({ errno: error.errno ?? errno.EIO });
232
+ }
233
+ });
240
234
  runtime.runPython(pythonStatProjection);
241
235
  runtime.globals.set("_safe_hard_link", (source, destination, follow) => {
242
236
  try {
@@ -267,6 +261,25 @@ async function runPythonWorker(options) {
267
261
  });
268
262
  runtime.runPython(pythonTreeCleanup);
269
263
  runtime.globals.set("_safe_invocation_json", JSON.stringify(start.invocation));
264
+ category = "startup";
265
+ if (start.packages) {
266
+ runtime.globals.set("_safe_metadata_root", () => request("package-root", start.packages.session));
267
+ runtime.runPython(pythonMetadataDiscovery);
268
+ const installationRoot = start.packages.requirements.length || start.packages.uninstall || start.packages.bootstrap ? request("package-root", start.packages.session) : void 0;
269
+ await installPythonPackages(runtime, start.packages, request, start.maxTransferBytes, installationRoot);
270
+ }
271
+ const unavailablePackage = () => {
272
+ throw new Error("Python package transport is only available during installation");
273
+ };
274
+ const publicRuntime = runtime;
275
+ if ("loadPackage" in publicRuntime) publicRuntime.loadPackage = unavailablePackage;
276
+ if (publicRuntime._api?.packageManager) publicRuntime._api.packageManager.downloadPackage = unavailablePackage;
277
+ if (start.installOnly) {
278
+ if (!start.packages?.uninstall) startupWrite("stdout", "Successfully installed requested Python packages");
279
+ const finalized2 = runtime._module._Py_FinalizeEx();
280
+ postMessage({ type: "exit", exitCode: finalized2 < 0 ? 120 : 0 });
281
+ return;
282
+ }
270
283
  postMessage({ type: "ready" });
271
284
  category = "runtime";
272
285
  const exitCode = runtime.runPython(pythonExecution);
@@ -152,6 +152,10 @@ export type ExprNode = {
152
152
  desc: boolean;
153
153
  nulls?: "FIRST" | "LAST" | undefined | undefined;
154
154
  }[];
155
+ frameBounds?: {
156
+ start: number;
157
+ end: number;
158
+ } | undefined;
155
159
  } | undefined;
156
160
  } | {
157
161
  kind: "subquery";