oracle7-chameleon / scripts /build_saved_declared.py
psiloceyeben's picture
Upload folder using huggingface_hub
09aeaeb verified
Raw History Blame Contribute Delete
2.93 kB
"""Bounded offline generated-module reconstruction over a verified capture."""
import argparse
import json
import shutil
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / 'packages/core'))
from chameleon_core.repository_capture import verify_package
from chameleon_core.windows_job import run_bounded
from derived_overlay import validate_overlay
def build_saved(package, importer, output):
verify_package(package)
if importer not in package['repository']['files']:
raise ValueError('BUILD_IMPORTER_NOT_CAPTURED')
output.mkdir(exist_ok=False)
node = shutil.which('node')
if not node:
raise ValueError('NODE_UNAVAILABLE')
runtime = run_bounded([node, str(ROOT / 'scripts/build_declared_module.mjs')],
json.dumps({'package': package, 'importer': importer, 'policy': 'modern-esm-bundle-v1'}), ROOT)
stdout = runtime.pop('stdout')
(output / 'runtime.json').write_text(json.dumps(runtime, indent=2), encoding='utf-8')
if (runtime.get('returncode') != 0 or runtime.get('remaining_job_processes') != 0
or any(runtime.get(k) is not False for k in ('timed_out', 'cpu_budget_exhausted', 'output_budget_exhausted'))):
raise ValueError('BUILD_SUPERVISOR_FAILED')
candidate = json.loads(stdout)
if candidate['source_digest'] != package['digest'] or candidate['importer'] != importer:
raise ValueError('BUILD_CANDIDATE_BINDING')
(output / 'candidate.json').write_text(json.dumps(candidate, indent=2), encoding='utf-8')
overlay = {'version': 'derived-bundle-v1', 'source_digest': package['digest'], 'path': importer,
'before_sha256': package['repository']['files'][importer]['sha256'],
'after_base64': candidate['after_base64'], 'after_sha256': candidate['after_sha256'],
'operator': 'modern-esm-bundle-v1',
'build': {k: candidate[k] for k in ('tool', 'plan', 'used')}}
encoded, fingerprint = validate_overlay(overlay, package)
(output / 'overlay.json').write_text(encoded, encoding='utf-8')
return {'status': 'UNVERIFIED_CANDIDATE', 'source_digest': package['digest'],
'overlay_digest': fingerprint, 'bytes': candidate['bytes'], 'public_changes': False}
def main():
parser = argparse.ArgumentParser()
parser.add_argument('package')
parser.add_argument('importer')
parser.add_argument('output')
args = parser.parse_args()
source, output = Path(args.package).resolve(), Path(args.output).resolve()
base = ROOT / '.local/repository-pilot'
if (not source.is_relative_to(base) or source.stat().st_size > 8*1024*1024
or not output.is_relative_to(base) or output == base or output.exists()):
raise ValueError('BUILD_PILOT_BOUNDARY')
print(json.dumps(build_saved(json.loads(source.read_text(encoding='utf-8')), args.importer, output)))
if __name__ == '__main__':
main()