arcane-os 0.54.1 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -0
- package/README.md +35 -28
- package/browser-runtime/core/client.mjs +552 -0
- package/browser-runtime/core/contracts.mjs +85 -0
- package/docs/architecture.md +31 -23
- package/docs/compatibility.md +10 -1
- package/docs/consumer-updates.md +82 -0
- package/docs/platform-targets.md +20 -11
- package/docs/publishing.md +41 -18
- package/docs/reference/README.md +19 -7
- package/docs/reference/availability-and-normalization.md +15 -5
- package/docs/reference/behavioral-testing.md +7 -6
- package/docs/reference/cli.md +12 -4
- package/docs/reference/core-client.md +163 -0
- package/docs/reference/core-native-packaging.md +149 -0
- package/docs/reference/core-runtime.md +185 -0
- package/docs/reference/inventory/package-api.json +271 -5
- package/docs/reference/protocols.md +38 -14
- package/docs/reference/pwa.md +17 -0
- package/docs/reference/sdk-api.md +772 -15
- package/package.json +10 -3
- package/schemas/arcane-app.schema.json +10 -0
- package/schemas/arcane-package.schema.json +10 -0
- package/schemas/native-build-plan.schema.json +8 -0
- package/src/app-descriptor.mjs +18 -1
- package/src/app-layout.mjs +6 -2
- package/src/cli/main.mjs +8 -6
- package/src/core/host.mjs +23 -0
- package/src/core/hosts/arcane-core-loader.cjs +2 -0
- package/src/core/hosts/linux/arcane_core_process.c +568 -0
- package/src/core/hosts/linux/arcane_core_process.h +127 -0
- package/src/core/hosts/sea-launcher.cjs +17 -0
- package/src/core/hosts/windows/ArcaneCoreProcess.cs +416 -0
- package/src/core/runtime.mjs +345 -0
- package/src/core/stdio.mjs +209 -0
- package/src/core-classic-source.mjs +43 -0
- package/src/import-map.mjs +62 -0
- package/src/native/portable-layout.mjs +184 -0
- package/src/native/portable-provider.mjs +211 -0
- package/src/native-plan.mjs +10 -4
- package/src/native-provider-loader.mjs +15 -4
- package/src/packager/core.mjs +131 -32
- package/src/process.mjs +8 -4
- package/src/targets/index.mjs +3 -1
- package/src/toolchain.mjs +23 -6
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"sdkVersion": "0.
|
|
3
|
+
"sdkVersion": "0.55.0",
|
|
4
4
|
"environment": {
|
|
5
5
|
"runtime": "Node.js for Node entrypoints; browser for browser-only entrypoints",
|
|
6
6
|
"minimumVersion": "22.23.2 for Node entrypoints",
|
|
7
7
|
"moduleSystem": "ESM"
|
|
8
8
|
},
|
|
9
|
-
"memberCount":
|
|
9
|
+
"memberCount": 244,
|
|
10
10
|
"runtimeSubpathPatterns": {
|
|
11
11
|
"arcane-os/modules/*": "./runtime/arcane/modules/*",
|
|
12
12
|
"arcane-os/entities/*": "./runtime/arcane/entities/*"
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
"name": "assertIntegratedNativeToolchain",
|
|
341
341
|
"displayName": "assertIntegratedNativeToolchain()",
|
|
342
342
|
"kind": "function",
|
|
343
|
-
"signature": "assertIntegratedNativeToolchain({workspaceMode, workspaceRoot, toolchainRoot, target}={})",
|
|
343
|
+
"signature": "assertIntegratedNativeToolchain({workspaceMode, workspaceRoot, toolchainRoot, target, providerSource='arcane-checkout'}={})",
|
|
344
344
|
"entrypoints": [
|
|
345
345
|
"arcane-os",
|
|
346
346
|
"arcane-os/toolchain"
|
|
@@ -540,7 +540,7 @@
|
|
|
540
540
|
"name": "createNativeBuildPlan",
|
|
541
541
|
"displayName": "createNativeBuildPlan()",
|
|
542
542
|
"kind": "function",
|
|
543
|
-
"signature": "async createNativeBuildPlan({ nativeBuilder, toolchainRoot,
|
|
543
|
+
"signature": "async createNativeBuildPlan({ nativeBuilder, toolchainRoot, toolchain, appReleaseRoot, release, appDescriptor, selectedSdk, dependencyReleases, minimumCoreVersion, protectedRoots=[], outputRoot, targetRequest, signal, onEvent }={})",
|
|
544
544
|
"entrypoints": [
|
|
545
545
|
"arcane-os",
|
|
546
546
|
"arcane-os/native"
|
|
@@ -1037,7 +1037,7 @@
|
|
|
1037
1037
|
"name": "loadArcaneNativeProvider",
|
|
1038
1038
|
"displayName": "loadArcaneNativeProvider()",
|
|
1039
1039
|
"kind": "function",
|
|
1040
|
-
"signature": "loadArcaneNativeProvider({ arcaneRoot, target, inspect=lstat, canonicalize=realpath,
|
|
1040
|
+
"signature": "async loadArcaneNativeProvider({ arcaneRoot, target, inspect=lstat, canonicalize=realpath, importModule=specifier=>import(specifier), signal, onEvent }={})",
|
|
1041
1041
|
"entrypoints": [
|
|
1042
1042
|
"arcane-os",
|
|
1043
1043
|
"arcane-os/native-provider"
|
|
@@ -3619,6 +3619,272 @@
|
|
|
3619
3619
|
"availability": "Node and Browser",
|
|
3620
3620
|
"protocol": "Shared AI cancellation",
|
|
3621
3621
|
"normalization": "Preserves an existing ARCANE_AI_REQUEST_ABORTED value or returns an AbortError with that code and the supplied cause"
|
|
3622
|
+
},
|
|
3623
|
+
{
|
|
3624
|
+
"id": "core-contracts:CORE_PROTOCOL",
|
|
3625
|
+
"name": "CORE_PROTOCOL",
|
|
3626
|
+
"displayName": "CORE_PROTOCOL",
|
|
3627
|
+
"kind": "constant",
|
|
3628
|
+
"signature": "const CORE_PROTOCOL = 'arcane/1'",
|
|
3629
|
+
"entrypoints": ["arcane-os/core/contracts"],
|
|
3630
|
+
"primaryImport": "arcane-os/core/contracts",
|
|
3631
|
+
"group": "Core protocol contracts",
|
|
3632
|
+
"summary": "Identifies Arcane Core request, response, event and control frames.",
|
|
3633
|
+
"availability": "Node and browser/bundler",
|
|
3634
|
+
"protocol": "arcane/1",
|
|
3635
|
+
"normalization": "Exact protocol string; it identifies a frame contract without granting a method, service, transport or model capability"
|
|
3636
|
+
},
|
|
3637
|
+
{
|
|
3638
|
+
"id": "core-contracts:CORE_READY_EVENTS",
|
|
3639
|
+
"name": "CORE_READY_EVENTS",
|
|
3640
|
+
"displayName": "CORE_READY_EVENTS",
|
|
3641
|
+
"kind": "constant",
|
|
3642
|
+
"signature": "const CORE_READY_EVENTS",
|
|
3643
|
+
"entrypoints": ["arcane-os/core/contracts"],
|
|
3644
|
+
"primaryImport": "arcane-os/core/contracts",
|
|
3645
|
+
"group": "Core protocol contracts",
|
|
3646
|
+
"summary": "Lists the transport and dispatcher events that the Core client treats as durable completions.",
|
|
3647
|
+
"availability": "Node and browser/bundler",
|
|
3648
|
+
"protocol": "arcane/1 client readiness",
|
|
3649
|
+
"normalization": "Contains transport.ready and core.ready; neither event asserts application-service, repository or model readiness"
|
|
3650
|
+
},
|
|
3651
|
+
{
|
|
3652
|
+
"id": "core-contracts:CORE_FRAME_CONTRACTS",
|
|
3653
|
+
"name": "CORE_FRAME_CONTRACTS",
|
|
3654
|
+
"displayName": "CORE_FRAME_CONTRACTS",
|
|
3655
|
+
"kind": "constant",
|
|
3656
|
+
"signature": "const CORE_FRAME_CONTRACTS",
|
|
3657
|
+
"entrypoints": ["arcane-os/core/contracts"],
|
|
3658
|
+
"primaryImport": "arcane-os/core/contracts",
|
|
3659
|
+
"group": "Core protocol contracts",
|
|
3660
|
+
"summary": "Describes the public fields on Core request, response, event, cancellation and runtime.replay control frames.",
|
|
3661
|
+
"availability": "Node and browser/bundler",
|
|
3662
|
+
"protocol": "arcane/1 wire descriptions",
|
|
3663
|
+
"normalization": "Descriptive data only; it does not admit methods, validate application policy or create a transport"
|
|
3664
|
+
},
|
|
3665
|
+
{
|
|
3666
|
+
"id": "core-contracts:CORE_METHOD_CONTRACTS",
|
|
3667
|
+
"name": "CORE_METHOD_CONTRACTS",
|
|
3668
|
+
"displayName": "CORE_METHOD_CONTRACTS",
|
|
3669
|
+
"kind": "constant",
|
|
3670
|
+
"signature": "const CORE_METHOD_CONTRACTS",
|
|
3671
|
+
"entrypoints": ["arcane-os/core/contracts"],
|
|
3672
|
+
"primaryImport": "arcane-os/core/contracts",
|
|
3673
|
+
"group": "Core protocol contracts",
|
|
3674
|
+
"summary": "Describes existing Core method input, output and semantic shapes.",
|
|
3675
|
+
"availability": "Node and browser/bundler",
|
|
3676
|
+
"protocol": "arcane/1 method descriptions",
|
|
3677
|
+
"normalization": "Descriptive data only; the active host and its registered services remain the authority for method availability"
|
|
3678
|
+
},
|
|
3679
|
+
{
|
|
3680
|
+
"id": "core-contracts:CoreError",
|
|
3681
|
+
"name": "CoreError",
|
|
3682
|
+
"displayName": "CoreError",
|
|
3683
|
+
"kind": "class",
|
|
3684
|
+
"signature": "new CoreError(value)",
|
|
3685
|
+
"entrypoints": ["arcane-os/core/contracts"],
|
|
3686
|
+
"primaryImport": "arcane-os/core/contracts",
|
|
3687
|
+
"group": "Core protocol contracts",
|
|
3688
|
+
"summary": "Creates the common Core error while retaining supplied native diagnostic fields.",
|
|
3689
|
+
"availability": "Node and browser/bundler",
|
|
3690
|
+
"protocol": "arcane/1 error response",
|
|
3691
|
+
"normalization": "Preserves own fields, stack and cause; supplies Arcane defaults for absent name, code, message, resolution and diagnostic metadata"
|
|
3692
|
+
},
|
|
3693
|
+
{
|
|
3694
|
+
"id": "core-contracts:serializeCoreError",
|
|
3695
|
+
"name": "serializeCoreError",
|
|
3696
|
+
"displayName": "serializeCoreError()",
|
|
3697
|
+
"kind": "function",
|
|
3698
|
+
"signature": "serializeCoreError(error)",
|
|
3699
|
+
"entrypoints": ["arcane-os/core/contracts"],
|
|
3700
|
+
"primaryImport": "arcane-os/core/contracts",
|
|
3701
|
+
"group": "Core protocol contracts",
|
|
3702
|
+
"summary": "Projects an error into a complete plain diagnostic record for Core responses and events.",
|
|
3703
|
+
"availability": "Node and browser/bundler",
|
|
3704
|
+
"protocol": "arcane/1 error response",
|
|
3705
|
+
"normalization": "Retains own properties and ordinary name, message, stack and cause fields; recursively projects Error causes and AggregateError members"
|
|
3706
|
+
},
|
|
3707
|
+
{
|
|
3708
|
+
"id": "core-client:createCoreClient",
|
|
3709
|
+
"name": "createCoreClient",
|
|
3710
|
+
"displayName": "createCoreClient()",
|
|
3711
|
+
"kind": "function",
|
|
3712
|
+
"signature": "createCoreClient({global=globalThis,transport=null,eventOwner=arcaneEvents,eventOwnerReady,autoConnect=true,replayRuntimeState=false,onError}={})",
|
|
3713
|
+
"entrypoints": ["arcane-os/core/client"],
|
|
3714
|
+
"primaryImport": "arcane-os/core/client",
|
|
3715
|
+
"group": "Core browser client",
|
|
3716
|
+
"summary": "Creates one correlated Arcane Core RPC client with explicit transport, readiness, events, cancellation and lifetime ownership.",
|
|
3717
|
+
"availability": "Browser and native WebView JavaScript hosts; custom transports require a callable send(frame)",
|
|
3718
|
+
"protocol": "arcane/1 over the selected host transport",
|
|
3719
|
+
"normalization": "Preserves complete request, result and event data; retains FIFO event-owner handoff; failTransport(error) settles pending RPCs and acknowledgements with the complete failure and releases the client lifetime; opt-in replayRuntimeState sends one observed nonblocking runtime.replay control after transport readiness"
|
|
3720
|
+
},
|
|
3721
|
+
{
|
|
3722
|
+
"id": "core-client:createCoreFacade",
|
|
3723
|
+
"name": "createCoreFacade",
|
|
3724
|
+
"displayName": "createCoreFacade()",
|
|
3725
|
+
"kind": "function",
|
|
3726
|
+
"signature": "createCoreFacade(client)",
|
|
3727
|
+
"entrypoints": ["arcane-os/core/client"],
|
|
3728
|
+
"primaryImport": "arcane-os/core/client",
|
|
3729
|
+
"group": "Core browser client",
|
|
3730
|
+
"summary": "Projects a Core client into the established application-facing Arcane namespace.",
|
|
3731
|
+
"availability": "Browser and native WebView JavaScript hosts with a Core client",
|
|
3732
|
+
"protocol": "arcane/1 compatibility facade",
|
|
3733
|
+
"normalization": "Routes existing namespace methods through client.invoke while retaining operation-specific parameters, correlation, streaming callbacks, timeouts and cancellation"
|
|
3734
|
+
},
|
|
3735
|
+
{
|
|
3736
|
+
"id": "core-client:installCoreClient",
|
|
3737
|
+
"name": "installCoreClient",
|
|
3738
|
+
"displayName": "installCoreClient()",
|
|
3739
|
+
"kind": "function",
|
|
3740
|
+
"signature": "installCoreClient(global=globalThis,options={})",
|
|
3741
|
+
"entrypoints": ["arcane-os/core/client"],
|
|
3742
|
+
"primaryImport": "arcane-os/core/client",
|
|
3743
|
+
"group": "Core browser client",
|
|
3744
|
+
"summary": "Installs one synchronous global Arcane facade, native receive callback and terminal transport-failure callback for the selected renderer lifetime.",
|
|
3745
|
+
"availability": "Browser and native WebView JavaScript hosts",
|
|
3746
|
+
"protocol": "arcane/1 renderer facade",
|
|
3747
|
+
"normalization": "Repeated installation returns the same client; close/failTransport release owned resources and restore prior globals only while still owned; __arcaneTransportFailed preserves the complete host failure without killing Core"
|
|
3748
|
+
},
|
|
3749
|
+
{
|
|
3750
|
+
"id": "core-client:getInstalledCoreClient",
|
|
3751
|
+
"name": "getInstalledCoreClient",
|
|
3752
|
+
"displayName": "getInstalledCoreClient()",
|
|
3753
|
+
"kind": "function",
|
|
3754
|
+
"signature": "getInstalledCoreClient(global=globalThis)",
|
|
3755
|
+
"entrypoints": ["arcane-os/core/client"],
|
|
3756
|
+
"primaryImport": "arcane-os/core/client",
|
|
3757
|
+
"group": "Core browser client",
|
|
3758
|
+
"summary": "Returns the exact live SDK-installed client or null without installing, connecting or changing globals.",
|
|
3759
|
+
"availability": "Browser and native WebView JavaScript hosts",
|
|
3760
|
+
"protocol": "arcane/1 renderer client ownership",
|
|
3761
|
+
"normalization": "Recognizes ESM and classic SDK installation identity; returns null after close or terminal failure and does not treat a foreign Arcane facade as an SDK client"
|
|
3762
|
+
},
|
|
3763
|
+
{
|
|
3764
|
+
"id": "core-classic-source:createCoreClassicSource",
|
|
3765
|
+
"name": "createCoreClassicSource",
|
|
3766
|
+
"displayName": "createCoreClassicSource()",
|
|
3767
|
+
"kind": "function",
|
|
3768
|
+
"signature": "async createCoreClassicSource({eventOwnerModuleURL,replayRuntimeState=false}={})",
|
|
3769
|
+
"entrypoints": ["arcane-os/core/classic-source"],
|
|
3770
|
+
"primaryImport": "arcane-os/core/classic-source",
|
|
3771
|
+
"group": "Core classic client projection",
|
|
3772
|
+
"summary": "Generates the native host's classic injection script from the installed canonical Core client and contracts.",
|
|
3773
|
+
"availability": "Node; generated source runs in browser and native WebView renderers",
|
|
3774
|
+
"protocol": "arcane/1 classic-script injection",
|
|
3775
|
+
"normalization": "Returns the complete canonical client projection; installs synchronous facade shapes while deferring only the event-owner module connection when document parsing is incomplete; forwards explicit runtime replay selection with a false default"
|
|
3776
|
+
},
|
|
3777
|
+
{
|
|
3778
|
+
"id": "core-runtime:createCoreRuntime",
|
|
3779
|
+
"name": "createCoreRuntime",
|
|
3780
|
+
"displayName": "createCoreRuntime()",
|
|
3781
|
+
"kind": "function",
|
|
3782
|
+
"signature": "createCoreRuntime({application,version,services=[]}={})",
|
|
3783
|
+
"entrypoints": ["arcane-os/core/runtime"],
|
|
3784
|
+
"primaryImport": "arcane-os/core/runtime",
|
|
3785
|
+
"group": "Native Core runtime",
|
|
3786
|
+
"summary": "Creates an app-neutral Core dispatcher with explicit services, request lifetimes, events and graceful drain.",
|
|
3787
|
+
"availability": "Node on Windows, Linux and macOS native hosts; Android requires its host adaptation",
|
|
3788
|
+
"protocol": "arcane/1 dispatcher and service lifecycle",
|
|
3789
|
+
"normalization": "Starts services independently, preserves complete results/errors, cancels only request-lifetime work and drains accepted service work; runtime.replay publishes current dispatcher/service state without restart and preserves reentrant lifecycle publication order"
|
|
3790
|
+
},
|
|
3791
|
+
{
|
|
3792
|
+
"id": "core-stdio:encodeCoreFrame",
|
|
3793
|
+
"name": "encodeCoreFrame",
|
|
3794
|
+
"displayName": "encodeCoreFrame()",
|
|
3795
|
+
"kind": "function",
|
|
3796
|
+
"signature": "encodeCoreFrame(frame)",
|
|
3797
|
+
"entrypoints": ["arcane-os/core/stdio"],
|
|
3798
|
+
"primaryImport": "arcane-os/core/stdio",
|
|
3799
|
+
"group": "Native Core stdio transport",
|
|
3800
|
+
"summary": "Encodes one Core frame as UTF-8 JSON with the native Content-Length transport header.",
|
|
3801
|
+
"availability": "Node",
|
|
3802
|
+
"protocol": "Content-Length framed arcane/1 stdio",
|
|
3803
|
+
"normalization": "Returns a Buffer containing one transport frame; framing length remains transport-local and the JSON payload retains the supplied frame fields"
|
|
3804
|
+
},
|
|
3805
|
+
{
|
|
3806
|
+
"id": "core-stdio:createCoreFrameDecoder",
|
|
3807
|
+
"name": "createCoreFrameDecoder",
|
|
3808
|
+
"displayName": "createCoreFrameDecoder()",
|
|
3809
|
+
"kind": "function",
|
|
3810
|
+
"signature": "createCoreFrameDecoder(onFrame)",
|
|
3811
|
+
"entrypoints": ["arcane-os/core/stdio"],
|
|
3812
|
+
"primaryImport": "arcane-os/core/stdio",
|
|
3813
|
+
"group": "Native Core stdio transport",
|
|
3814
|
+
"summary": "Creates the incremental decoder for fragmented or consecutive native Core frames.",
|
|
3815
|
+
"availability": "Node",
|
|
3816
|
+
"protocol": "Content-Length framed arcane/1 stdio",
|
|
3817
|
+
"normalization": "push(chunk) delivers each complete parsed JSON value in order; finish() reports an incomplete final header or body instead of dropping it"
|
|
3818
|
+
},
|
|
3819
|
+
{
|
|
3820
|
+
"id": "core-stdio:startCoreStdio",
|
|
3821
|
+
"name": "startCoreStdio",
|
|
3822
|
+
"displayName": "startCoreStdio()",
|
|
3823
|
+
"kind": "function",
|
|
3824
|
+
"signature": "startCoreStdio({runtime,input=process.stdin,output=process.stdout,onError}={})",
|
|
3825
|
+
"entrypoints": ["arcane-os/core/stdio"],
|
|
3826
|
+
"primaryImport": "arcane-os/core/stdio",
|
|
3827
|
+
"group": "Native Core stdio transport",
|
|
3828
|
+
"summary": "Attaches an existing Core runtime to framed input and output with concurrent dispatch and graceful shutdown.",
|
|
3829
|
+
"availability": "Node with readable input and writable output streams",
|
|
3830
|
+
"protocol": "Content-Length framed arcane/1 stdio",
|
|
3831
|
+
"normalization": "Returns {runtime,closed,close}; preserves queued output order, reports parser and stream failures, drains accepted runtime work on EOF and never exits the host or ends caller-owned output"
|
|
3832
|
+
},
|
|
3833
|
+
{
|
|
3834
|
+
"id": "native-portable-provider:createPortableNativeProvider",
|
|
3835
|
+
"name": "createPortableNativeProvider",
|
|
3836
|
+
"displayName": "createPortableNativeProvider()",
|
|
3837
|
+
"kind": "function",
|
|
3838
|
+
"signature": "createPortableNativeProvider({services=[]}={})",
|
|
3839
|
+
"entrypoints": ["arcane-os/native/portable-provider"],
|
|
3840
|
+
"primaryImport": "arcane-os/native/portable-provider",
|
|
3841
|
+
"group": "Portable native provider",
|
|
3842
|
+
"summary": "Creates the SDK-owned provider that assembles one selected app and explicit services into a portable Core payload.",
|
|
3843
|
+
"availability": "Node; produces a portable payload rather than an executable host",
|
|
3844
|
+
"protocol": "arcane-native-builder/1 portable provider",
|
|
3845
|
+
"normalization": "Preserves complete selected app and dependency releases, uses explicit service module factories, reports executable:false and never substitutes for an unavailable platform host"
|
|
3846
|
+
},
|
|
3847
|
+
{
|
|
3848
|
+
"id": "native-portable-provider:arcaneNativeBuilderProvider",
|
|
3849
|
+
"name": "arcaneNativeBuilderProvider",
|
|
3850
|
+
"displayName": "arcaneNativeBuilderProvider",
|
|
3851
|
+
"kind": "singleton",
|
|
3852
|
+
"signature": "const arcaneNativeBuilderProvider",
|
|
3853
|
+
"entrypoints": ["arcane-os/native/portable-provider"],
|
|
3854
|
+
"primaryImport": "arcane-os/native/portable-provider",
|
|
3855
|
+
"group": "Portable native provider",
|
|
3856
|
+
"summary": "Package-owned portable provider with no preconfigured application services.",
|
|
3857
|
+
"availability": "Node; produces a portable payload rather than an executable host",
|
|
3858
|
+
"protocol": "arcane-native-builder/1 portable provider",
|
|
3859
|
+
"normalization": "Binding identity is exactly equal to the subpath default export; describe, doctor, prepare, build and verify retain portable semantics while run reports unsupported"
|
|
3860
|
+
},
|
|
3861
|
+
{
|
|
3862
|
+
"id": "native-portable-provider:default",
|
|
3863
|
+
"name": "default",
|
|
3864
|
+
"displayName": "arcaneNativeBuilderProvider default export",
|
|
3865
|
+
"kind": "singleton",
|
|
3866
|
+
"signature": "default as arcaneNativeBuilderProvider",
|
|
3867
|
+
"entrypoints": ["arcane-os/native/portable-provider"],
|
|
3868
|
+
"primaryImport": "arcane-os/native/portable-provider",
|
|
3869
|
+
"group": "Portable native provider",
|
|
3870
|
+
"summary": "Default package binding for the same portable provider exposed by arcaneNativeBuilderProvider.",
|
|
3871
|
+
"availability": "Node; produces a portable payload rather than an executable host",
|
|
3872
|
+
"protocol": "arcane-native-builder/1 portable provider",
|
|
3873
|
+
"normalization": "Binding identity is exactly equal to the named arcaneNativeBuilderProvider export"
|
|
3874
|
+
},
|
|
3875
|
+
{
|
|
3876
|
+
"id": "core-host:startCoreHost",
|
|
3877
|
+
"name": "startCoreHost",
|
|
3878
|
+
"displayName": "startCoreHost()",
|
|
3879
|
+
"kind": "function",
|
|
3880
|
+
"signature": "startCoreHost({application,version,services=[],input,output,onError,signal}={})",
|
|
3881
|
+
"entrypoints": ["arcane-os/core/host"],
|
|
3882
|
+
"primaryImport": "arcane-os/core/host",
|
|
3883
|
+
"group": "Native Core host composition",
|
|
3884
|
+
"summary": "Composes explicitly supplied application services with the shared Core runtime and stdio lifecycle.",
|
|
3885
|
+
"availability": "Node with readable input and writable output streams",
|
|
3886
|
+
"protocol": "arcane/1 over Content-Length framed stdio",
|
|
3887
|
+
"normalization": "Returns the existing {runtime,closed,close} transport owner; an optional abort signal invokes the same idempotent drain without killing the process, replacing service readiness or cancelling accepted service-lifetime work"
|
|
3622
3888
|
}
|
|
3623
3889
|
]
|
|
3624
3890
|
}
|
|
@@ -39,7 +39,7 @@ a nonzero CLI status.
|
|
|
39
39
|
Machine output uses `arcane-cli-events/1`. Native planning and providers use:
|
|
40
40
|
|
|
41
41
|
- `arcane-target-adapter/1` for target adapters;
|
|
42
|
-
- `arcane-native-build-plan/1` for
|
|
42
|
+
- `arcane-native-build-plan/1` for native plans with complete selected release inputs;
|
|
43
43
|
- `arcane-native-builder/1` for injected native builders;
|
|
44
44
|
- `arcane-integrated-toolchain/1` for the fixed integrated shared/Core provider.
|
|
45
45
|
|
|
@@ -47,6 +47,15 @@ These protocols normalize orchestration and results. They do not normalize a
|
|
|
47
47
|
Windows EXE, Linux DEB, Android APK, and portable directory into the same
|
|
48
48
|
artifact kind.
|
|
49
49
|
|
|
50
|
+
Portable CLI operations load the installed SDK's
|
|
51
|
+
`arcane-os/native/portable-provider` by default. Explicit `--arcane-root`
|
|
52
|
+
selection retains the checkout provider route; executable targets still need
|
|
53
|
+
their platform provider/toolchain. `arcane-os/core/host` composes the reusable
|
|
54
|
+
native runtime with explicitly supplied app services. Neither export is a
|
|
55
|
+
browser import, executable host or installer. The synchronous classic facade
|
|
56
|
+
and browser-safe client retain their separate public entries. Integrated
|
|
57
|
+
shared checks keep their existing Arcane OS development provider.
|
|
58
|
+
|
|
50
59
|
App-scoped managed browser imports have three supported control-plane entrypoints. The CLI
|
|
51
60
|
uses `arcane import-map`; Node callers use
|
|
52
61
|
`executeOperation('import-map', options)` or
|
|
@@ -79,9 +88,11 @@ Explicit host document lists use the separate root-exported
|
|
|
79
88
|
described below; they do not enter app discovery.
|
|
80
89
|
|
|
81
90
|
The application dependency boundary is conditional. Only an application that
|
|
82
|
-
actually consumes Arcane declares
|
|
83
|
-
|
|
84
|
-
|
|
91
|
+
actually consumes Arcane declares `arcane-os` in its own `package.json` and
|
|
92
|
+
resolves it through that project's normal install into its own `node_modules`.
|
|
93
|
+
During development the declaration tracks `latest`; the lockfile and installed
|
|
94
|
+
package record the exact selected version. An explicitly selected production
|
|
95
|
+
build may declare an exact version. An application that does not currently consume
|
|
85
96
|
Arcane adds no `arcane-os` dependency solely because of this rule; the user or
|
|
86
97
|
governing task may direct that application to adopt Arcane later, at which point
|
|
87
98
|
the same app-owned package, install, projection, and artifact boundary applies.
|
|
@@ -236,6 +247,12 @@ For an extension, select `browserPwa:false` for that artifact and place the
|
|
|
236
247
|
complete SDK-produced app beneath the app-owned extension root. The application
|
|
237
248
|
owns its manifest, toolbar/background launcher and permissions. Ordinary browser
|
|
238
249
|
PWA configuration and generated browser output remain independently available.
|
|
250
|
+
Before native-module processing, the stage removes active `data-arcane-pwa`
|
|
251
|
+
scripts and manifest relationships targeting the package's `arcane.webmanifest`
|
|
252
|
+
from the existing selected PWA document set. Authored bases resolve those links;
|
|
253
|
+
unrelated manifest URLs, other link relationships, comments, templates and other
|
|
254
|
+
inactive HTML retain their content. Source documents and saved PWA settings
|
|
255
|
+
remain unchanged; the operation does not sweep every packaged HTML file.
|
|
239
256
|
|
|
240
257
|
## Installed-package browser routes
|
|
241
258
|
|
|
@@ -366,10 +383,11 @@ layouts; the default nested scaffold continues to use its development dependency
|
|
|
366
383
|
## Installed SDK runtime materialization
|
|
367
384
|
|
|
368
385
|
`materializeInstalledSdkRuntime()` is the Node entrypoint for refreshing one
|
|
369
|
-
external workspace's checked-in `arcane/` projection from its one
|
|
370
|
-
installed SDK
|
|
386
|
+
external workspace's checked-in `arcane/` projection from its one declared and
|
|
387
|
+
installed SDK dependency. Import the function through the dependency key that
|
|
371
388
|
the workspace actually declares: `arcane-os` for the canonical package name or,
|
|
372
|
-
for example, `arcane-sdk` for the
|
|
389
|
+
for example, `arcane-sdk` for the development alias `npm:arcane-os@latest`. The
|
|
390
|
+
lockfile and installed package retain the exact resolved version. No
|
|
373
391
|
application- or Arcane OS-local copier owns this operation.
|
|
374
392
|
|
|
375
393
|
The operation resolves that declaration while holding the shared
|
|
@@ -548,8 +566,8 @@ exactly `dependencyName`, `packageSource`,
|
|
|
548
566
|
`canonicalPackageRoot`, `packageName`, `packageVersion`, `runtimeRoot`,
|
|
549
567
|
and `browserRuntimeRoot`. A
|
|
550
568
|
workspace may use the canonical dependency name or one npm alias such as
|
|
551
|
-
`npm:arcane-os@
|
|
552
|
-
and supplies its actual version. The resolver requires one declaration and a
|
|
569
|
+
`npm:arcane-os@latest`; the installed package manifest identifies `arcane-os`
|
|
570
|
+
and supplies its actual exact version. The resolver requires one declaration and a
|
|
553
571
|
direct physical installation with runtime and browser-runtime directories.
|
|
554
572
|
The application's normal npm declaration and lockfile own version selection.
|
|
555
573
|
|
|
@@ -984,9 +1002,12 @@ reachable.
|
|
|
984
1002
|
|
|
985
1003
|
### macOS
|
|
986
1004
|
|
|
987
|
-
No macOS target, native bridge,
|
|
988
|
-
by this SDK version. A browser may still run browser-only
|
|
989
|
-
|
|
1005
|
+
No macOS executable target, native bridge, platform host, artifact, or run
|
|
1006
|
+
contract is exposed by this SDK version. A browser may still run browser-only
|
|
1007
|
+
application code. A separately composed macOS host may use the reusable Node
|
|
1008
|
+
Core runtime, framed stdio transport, host composition, and portable payload,
|
|
1009
|
+
but those SDK primitives do not create a native bridge or executable host and
|
|
1010
|
+
do not by themselves satisfy a native capability.
|
|
990
1011
|
|
|
991
1012
|
## Development and remote HTTP transport
|
|
992
1013
|
|
|
@@ -1068,8 +1089,11 @@ The common contract ends where platform truth must remain different:
|
|
|
1068
1089
|
artifact kind, and some diagnostic/result fields remain platform-specific;
|
|
1069
1090
|
- unsupported platforms fail or return a documented unsupported state; they do
|
|
1070
1091
|
not run an unrelated browser implementation as a substitute;
|
|
1071
|
-
-
|
|
1072
|
-
|
|
1092
|
+
- the portable target defaults to the installed SDK provider and assembles a
|
|
1093
|
+
non-executable payload without an Arcane OS checkout;
|
|
1094
|
+
- executable native targets require their explicit checkout/provider, and the
|
|
1095
|
+
composed host must supply the protocol, version, features, capabilities,
|
|
1096
|
+
methods, and services that its application contract requires;
|
|
1073
1097
|
- that current-build compatibility does not promise that a future SDK will accept
|
|
1074
1098
|
this Core or that this SDK will accept a future Core.
|
|
1075
1099
|
|
package/docs/reference/pwa.md
CHANGED
|
@@ -206,6 +206,23 @@ manifest carries release information. Non-PWA and native packaging use the same
|
|
|
206
206
|
[clean local resource URLs](asset-versioning.md). Native packaging does not
|
|
207
207
|
generate the browser PWA worker, installation manifest or registration bootstrap.
|
|
208
208
|
|
|
209
|
+
## Package without browser PWA output
|
|
210
|
+
|
|
211
|
+
Select `browserPwa:false` for an artifact, such as an application directory
|
|
212
|
+
inside an extension-owned root. The package omits `arcane.webmanifest`,
|
|
213
|
+
`arcane-offline.json`, `arcane-sw.js`, and `arcane-pwa.mjs`. Before native-module
|
|
214
|
+
processing, it removes active SDK-marked `data-arcane-pwa` scripts and manifest
|
|
215
|
+
relationships that resolve to that package's `arcane.webmanifest` from the
|
|
216
|
+
selected application document set.
|
|
217
|
+
|
|
218
|
+
This is a package-output choice, not a source or saved-setting change. It
|
|
219
|
+
preserves unrelated manifest links and link relationships, comments, templates,
|
|
220
|
+
other inactive HTML, unselected documents, and authored PWA configuration. The
|
|
221
|
+
application remains responsible for any extension manifest, permissions,
|
|
222
|
+
background process, toolbar launcher, or other outer host. See the
|
|
223
|
+
[native-module output contract](protocols.md#native-module-package-output) and
|
|
224
|
+
[`packageApp()` options](sdk-api.md#packageapp) for the complete boundary.
|
|
225
|
+
|
|
209
226
|
## Development and hosting
|
|
210
227
|
|
|
211
228
|
Use the ordinary `arcane dev --app <id>` command after editing the selected
|