multilingualprogramming 0.7.0__tar.gz → 0.8.1__tar.gz
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.
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/PKG-INFO +1 -1
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/__main__.py +274 -1
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/js_generator.py +619 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/linear_manifest.py +96 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/midi_capture.py +156 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/midi_manifest.py +110 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/opcode_ontology.py +290 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_capabilities.py +140 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_core.py +1138 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_field_projection.py +257 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_graph_projection.py +295 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_migration.py +87 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_program.py +100 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_projection.py +279 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_sequence_projection.py +248 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/process_static_projection.py +200 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/projection_capabilities.py +37 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/runtime_builtins.py +125 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/semantic_core.py +213 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/sonic_capture.py +183 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/sonic_projection.py +134 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/spatial_capture.py +182 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/spatial_manifest.py +145 -0
- multilingualprogramming-0.8.1/multilingualprogramming/codegen/volumetric_manifest.py +104 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator.py +196 -5
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_core.py +202 -24
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_expression.py +110 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_manifest.py +39 -1
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_orchestrator.py +20 -2
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_runtime.py +715 -2
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_support.py +11 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/lexer/lexer.py +46 -1
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/parser/ast_nodes.py +7 -1
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/usm/builtins_aliases.json +360 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/version.py +1 -1
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming.egg-info/PKG-INFO +1 -1
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming.egg-info/SOURCES.txt +21 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/LICENSE +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/README.md +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/build_orchestrator.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/encoding_guard.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/executor.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/python_generator.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/repl.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/ui_lowering.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wasm_generator.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_loop.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_match.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_oop.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_print.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_generator_sequence.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/codegen/wat_ir_adapter.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/core/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/core/effects.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/core/ir_nodes.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/core/semantic_analyzer.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/core/semantic_lowering.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/core/types.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/core/validators.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/datetime/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/datetime/date_parser.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/datetime/mp_date.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/datetime/mp_datetime.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/datetime/mp_time.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/datetime/resource_loader.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/exceptions.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/imports.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/keyword/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/keyword/keyword_registry.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/keyword/keyword_validator.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/keyword/language_pack_validator.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/lexer/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/lexer/source_reader.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/lexer/token.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/lexer/token_types.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/numeral/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/numeral/abstract_numeral.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/numeral/complex_numeral.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/numeral/fraction_numeral.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/numeral/mp_numeral.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/numeral/numeral_converter.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/numeral/roman_numeral.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/numeral/unicode_numeral.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/parser/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/parser/ast_printer.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/parser/error_messages.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/parser/lexer.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/parser/parser.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/parser/surface_normalizer.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/datetime/eras.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/datetime/formats.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/datetime/months.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/datetime/weekdays.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/parser/error_messages.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/repl/commands.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/usm/keywords.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/usm/operators.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/usm/schema.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/usm/surface_patterns.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/resources/usm/ui_lowering.json +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/__init__.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/ai_runtime.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/ai_types.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/anthropic_provider.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/backend_selector.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/channel.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/inference_cache.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/memory_store.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/model_registry.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/multimodal_runtime.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/numeric_primitives.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/observability.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/ollama_provider.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/openai_provider.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/placement.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/prompt_optimizer.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/python_fallbacks.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/reactive.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/retrieval_runtime.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/semantic_match.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/swarm.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/runtime/tool_runtime.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/source_extensions.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/unicode_string.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/wasm/loader.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/wasm/tuple_abi.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/wasm/tuple_memory.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming.egg-info/dependency_links.txt +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming.egg-info/entry_points.txt +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming.egg-info/requires.txt +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming.egg-info/top_level.txt +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/pyproject.toml +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/setup.cfg +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/setup.py +0 -0
- {multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/tests/tests.py +0 -0
{multilingualprogramming-0.7.0 → multilingualprogramming-0.8.1}/multilingualprogramming/__main__.py
RENAMED
|
@@ -30,6 +30,7 @@ from multilingualprogramming.codegen.encoding_guard import (
|
|
|
30
30
|
)
|
|
31
31
|
from multilingualprogramming.codegen.build_orchestrator import BuildOrchestrator
|
|
32
32
|
from multilingualprogramming.codegen.executor import ProgramExecutor
|
|
33
|
+
from multilingualprogramming.codegen.js_generator import JavaScriptCodeGenerator
|
|
33
34
|
from multilingualprogramming.codegen.python_generator import PythonCodeGenerator
|
|
34
35
|
from multilingualprogramming.codegen.repl import REPL
|
|
35
36
|
from multilingualprogramming.codegen.wat_generator import WATCodeGenerator
|
|
@@ -49,6 +50,16 @@ from multilingualprogramming.source_extensions import (
|
|
|
49
50
|
find_package_init,
|
|
50
51
|
has_source_extension,
|
|
51
52
|
)
|
|
53
|
+
from multilingualprogramming.codegen.linear_manifest import build_linear_manifest_file
|
|
54
|
+
from multilingualprogramming.codegen.midi_manifest import build_midi_manifest_file
|
|
55
|
+
from multilingualprogramming.codegen.opcode_ontology import write_ontology_manifest
|
|
56
|
+
from multilingualprogramming.codegen.semantic_core import build_semantic_core_file
|
|
57
|
+
from multilingualprogramming.codegen.process_program import build_process_core_file
|
|
58
|
+
from multilingualprogramming.codegen.sonic_projection import build_sonic_manifest_file
|
|
59
|
+
from multilingualprogramming.codegen.spatial_manifest import build_spatial_manifest_file
|
|
60
|
+
from multilingualprogramming.codegen.volumetric_manifest import (
|
|
61
|
+
build_volumetric_manifest_file,
|
|
62
|
+
)
|
|
52
63
|
from multilingualprogramming.version import __version__
|
|
53
64
|
|
|
54
65
|
|
|
@@ -340,6 +351,19 @@ def cmd_build_wasm_bundle(args):
|
|
|
340
351
|
print(f"[PASS] {outputs.build_lockfile}")
|
|
341
352
|
|
|
342
353
|
|
|
354
|
+
def cmd_build_browser_module(args):
|
|
355
|
+
"""Build a browser-native ESM module for rich JSON-compatible output."""
|
|
356
|
+
program = _parse_program_from_file(args.file, args.lang)
|
|
357
|
+
exports = []
|
|
358
|
+
for item in getattr(args, "export", []) or []:
|
|
359
|
+
exports.extend(name.strip() for name in item.split(",") if name.strip())
|
|
360
|
+
module_source = JavaScriptCodeGenerator(exports=exports).generate(program)
|
|
361
|
+
out_path = Path(args.out)
|
|
362
|
+
out_path.parent.mkdir(parents=True, exist_ok=True)
|
|
363
|
+
out_path.write_text(module_source, encoding="utf-8")
|
|
364
|
+
print(f"[PASS] {out_path}")
|
|
365
|
+
|
|
366
|
+
|
|
343
367
|
def cmd_build_ui_bundle(args):
|
|
344
368
|
"""Build a self-contained reactive UI bundle (HTML + JS)."""
|
|
345
369
|
entry_file = Path(args.file)
|
|
@@ -367,6 +391,101 @@ def cmd_build_ui_bundle(args):
|
|
|
367
391
|
print(f"[WARN] {diag}")
|
|
368
392
|
|
|
369
393
|
|
|
394
|
+
def cmd_spatial_build(args):
|
|
395
|
+
"""Build a spatial JSON manifest from a Multilingual source file."""
|
|
396
|
+
manifest = build_spatial_manifest_file(
|
|
397
|
+
args.file,
|
|
398
|
+
args.out,
|
|
399
|
+
language=args.lang or "en",
|
|
400
|
+
)
|
|
401
|
+
print(f"[PASS] {args.out}")
|
|
402
|
+
print(f"[spatial] {manifest['kind']} entities={len(manifest['entities'])}")
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
def cmd_polymodal_build(args):
|
|
406
|
+
"""Build a modality-free semantic core manifest from Multilingual source."""
|
|
407
|
+
core = build_semantic_core_file(
|
|
408
|
+
args.file,
|
|
409
|
+
args.out,
|
|
410
|
+
language=args.lang or "en",
|
|
411
|
+
)
|
|
412
|
+
print(f"[PASS] {args.out}")
|
|
413
|
+
print(f"[polymodal] {core['kind']} entities={len(core['entities'])}")
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
def cmd_process_build(args):
|
|
417
|
+
"""Build a semantic-core-v1 process manifest from Multilingual source."""
|
|
418
|
+
core = build_process_core_file(
|
|
419
|
+
args.file,
|
|
420
|
+
args.out,
|
|
421
|
+
language=args.lang or "en",
|
|
422
|
+
)
|
|
423
|
+
state = core.get("state", {})
|
|
424
|
+
# A lattice program stores loci; a sequence (string-rewriting) program
|
|
425
|
+
# stores an ordered sequence. Report whichever this core carries.
|
|
426
|
+
if "sequence" in state:
|
|
427
|
+
size = f"symbols={len(state['sequence'])}"
|
|
428
|
+
else:
|
|
429
|
+
size = f"loci={len(state.get('loci', []))}"
|
|
430
|
+
print(f"[PASS] {args.out}")
|
|
431
|
+
print(
|
|
432
|
+
f"[process] {core['kind']} "
|
|
433
|
+
f"topology={core['topology'].get('kind')} "
|
|
434
|
+
f"schedule={core['schedule'].get('kind')} {size}"
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
def cmd_sonic_build(args):
|
|
439
|
+
"""Build a sonic JSON manifest from a Multilingual source file."""
|
|
440
|
+
manifest = build_sonic_manifest_file(
|
|
441
|
+
args.file,
|
|
442
|
+
args.out,
|
|
443
|
+
language=args.lang or "en",
|
|
444
|
+
)
|
|
445
|
+
print(f"[PASS] {args.out}")
|
|
446
|
+
print(f"[sonic] {manifest['kind']} voices={len(manifest['voices'])}")
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
def cmd_ontology_export(args):
|
|
450
|
+
"""Write the shared opcode ontology as JSON for browser runtimes."""
|
|
451
|
+
manifest = write_ontology_manifest(args.out)
|
|
452
|
+
print(f"[PASS] {args.out}")
|
|
453
|
+
print(f"[ontology] {manifest['kind']} opcodes={len(manifest['opcodes'])}")
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
def cmd_linear_build(args):
|
|
457
|
+
"""Build a 1D linear JSON manifest from a Multilingual source file."""
|
|
458
|
+
manifest = build_linear_manifest_file(
|
|
459
|
+
args.file,
|
|
460
|
+
args.out,
|
|
461
|
+
language=args.lang or "en",
|
|
462
|
+
)
|
|
463
|
+
print(f"[PASS] {args.out}")
|
|
464
|
+
print(f"[linear] {manifest['kind']} marks={len(manifest['marks'])}")
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
def cmd_volumetric_build(args):
|
|
468
|
+
"""Build a 3D volumetric JSON manifest from a Multilingual source file."""
|
|
469
|
+
manifest = build_volumetric_manifest_file(
|
|
470
|
+
args.file,
|
|
471
|
+
args.out,
|
|
472
|
+
language=args.lang or "en",
|
|
473
|
+
)
|
|
474
|
+
print(f"[PASS] {args.out}")
|
|
475
|
+
print(f"[volumetric] {manifest['kind']} marks={len(manifest['marks'])}")
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
def cmd_midi_build(args):
|
|
479
|
+
"""Build a MIDI JSON manifest from a Multilingual source file."""
|
|
480
|
+
manifest = build_midi_manifest_file(
|
|
481
|
+
args.file,
|
|
482
|
+
args.out,
|
|
483
|
+
language=args.lang or "en",
|
|
484
|
+
)
|
|
485
|
+
print(f"[PASS] {args.out}")
|
|
486
|
+
print(f"[midi] {manifest['kind']} events={len(manifest['events'])}")
|
|
487
|
+
|
|
488
|
+
|
|
370
489
|
def cmd_ir(args):
|
|
371
490
|
"""Lower a source file to semantic IR and print a summary."""
|
|
372
491
|
program = _parse_program_from_file(args.file, args.lang)
|
|
@@ -576,7 +695,7 @@ def _maybe_dispatch_direct_file_run(argv):
|
|
|
576
695
|
return True
|
|
577
696
|
|
|
578
697
|
|
|
579
|
-
def main(): # pylint: disable=too-many-statements
|
|
698
|
+
def main(): # pylint: disable=too-many-statements,too-many-locals,too-many-branches
|
|
580
699
|
"""Run the CLI entry point and dispatch subcommands."""
|
|
581
700
|
argv = sys.argv[1:]
|
|
582
701
|
if _maybe_dispatch_direct_file_run(argv):
|
|
@@ -724,6 +843,35 @@ def main(): # pylint: disable=too-many-statements
|
|
|
724
843
|
),
|
|
725
844
|
)
|
|
726
845
|
|
|
846
|
+
build_browser_module_parser = subparsers.add_parser(
|
|
847
|
+
"build-browser-module",
|
|
848
|
+
help="Build a browser-native ESM module for rich JSON-compatible functions",
|
|
849
|
+
)
|
|
850
|
+
build_browser_module_parser.add_argument("file", help="Path to the source file")
|
|
851
|
+
build_browser_module_parser.add_argument(
|
|
852
|
+
"--lang", default=None,
|
|
853
|
+
help="Source language code (e.g., en, fr, hi). Auto-detect if omitted.",
|
|
854
|
+
)
|
|
855
|
+
build_browser_module_parser.add_argument(
|
|
856
|
+
"--out", default="program.browser.mjs",
|
|
857
|
+
help="Output ESM module path (default: program.browser.mjs)",
|
|
858
|
+
)
|
|
859
|
+
build_browser_module_parser.add_argument(
|
|
860
|
+
"--export",
|
|
861
|
+
action="append",
|
|
862
|
+
default=[],
|
|
863
|
+
help=(
|
|
864
|
+
"Function to export. May be repeated or comma-separated. "
|
|
865
|
+
"If omitted, the module exposes call(name, ...args)."
|
|
866
|
+
),
|
|
867
|
+
)
|
|
868
|
+
build_browser_module_parser.add_argument(
|
|
869
|
+
"--stub-module",
|
|
870
|
+
action="append",
|
|
871
|
+
default=[],
|
|
872
|
+
help="Deprecated compatibility flag; native JS generation does not load Python modules.",
|
|
873
|
+
)
|
|
874
|
+
|
|
727
875
|
# build-ui-bundle subcommand
|
|
728
876
|
build_ui_bundle_parser = subparsers.add_parser(
|
|
729
877
|
"build-ui-bundle",
|
|
@@ -739,6 +887,113 @@ def main(): # pylint: disable=too-many-statements
|
|
|
739
887
|
help="Output directory for generated artifacts (default: build/ui)",
|
|
740
888
|
)
|
|
741
889
|
|
|
890
|
+
spatial_build_parser = subparsers.add_parser(
|
|
891
|
+
"spatial-build",
|
|
892
|
+
help="Build a fixed-semantic spatial JSON manifest",
|
|
893
|
+
)
|
|
894
|
+
spatial_build_parser.add_argument("file", help="Path to the source file")
|
|
895
|
+
spatial_build_parser.add_argument(
|
|
896
|
+
"--lang", default=None,
|
|
897
|
+
help="Source language code (e.g., en, fr, hi). Auto-detect if omitted.",
|
|
898
|
+
)
|
|
899
|
+
spatial_build_parser.add_argument(
|
|
900
|
+
"--out", default="program.spatial.json",
|
|
901
|
+
help="Output JSON manifest path (default: program.spatial.json)",
|
|
902
|
+
)
|
|
903
|
+
|
|
904
|
+
polymodal_build_parser = subparsers.add_parser(
|
|
905
|
+
"polymodal-build",
|
|
906
|
+
help="Build a modality-free semantic core manifest",
|
|
907
|
+
)
|
|
908
|
+
polymodal_build_parser.add_argument("file", help="Path to the source file")
|
|
909
|
+
polymodal_build_parser.add_argument(
|
|
910
|
+
"--lang", default=None,
|
|
911
|
+
help="Source language code (e.g., en, fr, hi). Auto-detect if omitted.",
|
|
912
|
+
)
|
|
913
|
+
polymodal_build_parser.add_argument(
|
|
914
|
+
"--out", default="program.semantic.json",
|
|
915
|
+
help="Output JSON manifest path (default: program.semantic.json)",
|
|
916
|
+
)
|
|
917
|
+
|
|
918
|
+
process_build_parser = subparsers.add_parser(
|
|
919
|
+
"process-build",
|
|
920
|
+
help="Build a semantic-core-v1 process manifest (dynamics as data)",
|
|
921
|
+
)
|
|
922
|
+
process_build_parser.add_argument("file", help="Path to the source file")
|
|
923
|
+
process_build_parser.add_argument(
|
|
924
|
+
"--lang", default=None,
|
|
925
|
+
help="Source language code (e.g., en, fr, hi). Auto-detect if omitted.",
|
|
926
|
+
)
|
|
927
|
+
process_build_parser.add_argument(
|
|
928
|
+
"--out", default="program.v1.json",
|
|
929
|
+
help="Output JSON manifest path (default: program.v1.json)",
|
|
930
|
+
)
|
|
931
|
+
|
|
932
|
+
sonic_build_parser = subparsers.add_parser(
|
|
933
|
+
"sonic-build",
|
|
934
|
+
help="Build a sonic projection JSON manifest",
|
|
935
|
+
)
|
|
936
|
+
sonic_build_parser.add_argument("file", help="Path to the source file")
|
|
937
|
+
sonic_build_parser.add_argument(
|
|
938
|
+
"--lang", default=None,
|
|
939
|
+
help="Source language code (e.g., en, fr, hi). Auto-detect if omitted.",
|
|
940
|
+
)
|
|
941
|
+
sonic_build_parser.add_argument(
|
|
942
|
+
"--out", default="program.sonic.json",
|
|
943
|
+
help="Output JSON manifest path (default: program.sonic.json)",
|
|
944
|
+
)
|
|
945
|
+
|
|
946
|
+
ontology_export_parser = subparsers.add_parser(
|
|
947
|
+
"ontology-export",
|
|
948
|
+
help="Write the shared opcode ontology JSON (for browser runtimes)",
|
|
949
|
+
)
|
|
950
|
+
ontology_export_parser.add_argument(
|
|
951
|
+
"--out", default="ontology.json",
|
|
952
|
+
help="Output JSON path (default: ontology.json)",
|
|
953
|
+
)
|
|
954
|
+
|
|
955
|
+
linear_build_parser = subparsers.add_parser(
|
|
956
|
+
"linear-build",
|
|
957
|
+
help="Build a 1D linear timeline JSON manifest",
|
|
958
|
+
)
|
|
959
|
+
linear_build_parser.add_argument("file", help="Path to the source file")
|
|
960
|
+
linear_build_parser.add_argument(
|
|
961
|
+
"--lang", default=None,
|
|
962
|
+
help="Source language code (e.g., en, fr, hi). Auto-detect if omitted.",
|
|
963
|
+
)
|
|
964
|
+
linear_build_parser.add_argument(
|
|
965
|
+
"--out", default="program.linear.json",
|
|
966
|
+
help="Output JSON manifest path (default: program.linear.json)",
|
|
967
|
+
)
|
|
968
|
+
|
|
969
|
+
volumetric_build_parser = subparsers.add_parser(
|
|
970
|
+
"volumetric-build",
|
|
971
|
+
help="Build a 3D volumetric JSON manifest",
|
|
972
|
+
)
|
|
973
|
+
volumetric_build_parser.add_argument("file", help="Path to the source file")
|
|
974
|
+
volumetric_build_parser.add_argument(
|
|
975
|
+
"--lang", default=None,
|
|
976
|
+
help="Source language code (e.g., en, fr, hi). Auto-detect if omitted.",
|
|
977
|
+
)
|
|
978
|
+
volumetric_build_parser.add_argument(
|
|
979
|
+
"--out", default="program.volumetric.json",
|
|
980
|
+
help="Output JSON manifest path (default: program.volumetric.json)",
|
|
981
|
+
)
|
|
982
|
+
|
|
983
|
+
midi_build_parser = subparsers.add_parser(
|
|
984
|
+
"midi-build",
|
|
985
|
+
help="Build a MIDI event JSON manifest",
|
|
986
|
+
)
|
|
987
|
+
midi_build_parser.add_argument("file", help="Path to the source file")
|
|
988
|
+
midi_build_parser.add_argument(
|
|
989
|
+
"--lang", default=None,
|
|
990
|
+
help="Source language code (e.g., en, fr, hi). Auto-detect if omitted.",
|
|
991
|
+
)
|
|
992
|
+
midi_build_parser.add_argument(
|
|
993
|
+
"--out", default="program.midi.json",
|
|
994
|
+
help="Output JSON manifest path (default: program.midi.json)",
|
|
995
|
+
)
|
|
996
|
+
|
|
742
997
|
# ir subcommand
|
|
743
998
|
ir_parser = subparsers.add_parser(
|
|
744
999
|
"ir", help="Show the semantic IR for a source file"
|
|
@@ -803,8 +1058,26 @@ def main(): # pylint: disable=too-many-statements
|
|
|
803
1058
|
cmd_encoding_check_generated(args)
|
|
804
1059
|
elif args.command == "build-wasm-bundle":
|
|
805
1060
|
cmd_build_wasm_bundle(args)
|
|
1061
|
+
elif args.command == "build-browser-module":
|
|
1062
|
+
cmd_build_browser_module(args)
|
|
806
1063
|
elif args.command == "build-ui-bundle":
|
|
807
1064
|
cmd_build_ui_bundle(args)
|
|
1065
|
+
elif args.command == "spatial-build":
|
|
1066
|
+
cmd_spatial_build(args)
|
|
1067
|
+
elif args.command == "polymodal-build":
|
|
1068
|
+
cmd_polymodal_build(args)
|
|
1069
|
+
elif args.command == "process-build":
|
|
1070
|
+
cmd_process_build(args)
|
|
1071
|
+
elif args.command == "sonic-build":
|
|
1072
|
+
cmd_sonic_build(args)
|
|
1073
|
+
elif args.command == "ontology-export":
|
|
1074
|
+
cmd_ontology_export(args)
|
|
1075
|
+
elif args.command == "linear-build":
|
|
1076
|
+
cmd_linear_build(args)
|
|
1077
|
+
elif args.command == "volumetric-build":
|
|
1078
|
+
cmd_volumetric_build(args)
|
|
1079
|
+
elif args.command == "midi-build":
|
|
1080
|
+
cmd_midi_build(args)
|
|
808
1081
|
elif args.command == "ir":
|
|
809
1082
|
cmd_ir(args)
|
|
810
1083
|
elif args.command == "explain":
|