halfcode-compiler.xnl 0.2.4 → 0.2.6
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/dist/application-assembly.js +1 -1
- package/dist/{index-DihSfO7X.d.ts → index-CEJBgfBZ.d.ts} +1 -1
- package/dist/{index-DjvNDidT.d.ts → index-DkqggaxV.d.ts} +1 -1
- package/dist/{index-D7UtYNm7.d.ts → index-X6R_4lMW.d.ts} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/kind-definition.d.ts +1 -1
- package/dist/{resource-core-UAvFx3m-.d.ts → resource-core-zEONBZ_o.d.ts} +1 -1
- package/dist/resource-core.d.ts +2 -2
- package/dist/resource-core.js +1 -1
- package/dist/resource-projection.d.ts +1 -1
- package/dist/skill-capsule.d.ts +1 -1
- package/dist/skill-capsule.js +1 -1
- package/dist/{src-Bj7BZokJ.js → src-DvYk6l4v.js} +178 -9
- package/dist/{src-ClihwpeP.js → src-m2ZrS5dQ.js} +1 -1
- package/dist/{src-6nezdi57.js → src-t2lJrIJe.js} +1 -1
- package/dist/system-skills/resource-dsl/documents.md +32 -1
- package/dist/system-skills/resource-dsl/files.md +2 -2
- package/dist/system-skills/sys-halfcode-resource-dsl.plan.js +8 -8
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as assertObjectOperationCatalog, c as resolveApplicationAssembly, i as assertObjectOperationCall, l as resourceRefToFqn, n as applicationAssemblyPackage, o as assertObjectOperationDefinition, r as assertExecuteObjectOperationRequest, s as loadApplicationAssembly, t as ObjectOperationContractError } from "./src-
|
|
1
|
+
import { a as assertObjectOperationCatalog, c as resolveApplicationAssembly, i as assertObjectOperationCall, l as resourceRefToFqn, n as applicationAssemblyPackage, o as assertObjectOperationDefinition, r as assertExecuteObjectOperationRequest, s as loadApplicationAssembly, t as ObjectOperationContractError } from "./src-t2lJrIJe.js";
|
|
2
2
|
export { ObjectOperationContractError, applicationAssemblyPackage, assertExecuteObjectOperationRequest, assertObjectOperationCall, assertObjectOperationCatalog, assertObjectOperationDefinition, loadApplicationAssembly, resolveApplicationAssembly, resourceRefToFqn };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ResourceDescriptor } from "./index-
|
|
1
|
+
import { a as ResourceDescriptor } from "./index-CEJBgfBZ.js";
|
|
2
2
|
//#region ../resource-projection/src/index.d.ts
|
|
3
3
|
interface ResourceRegistry {
|
|
4
4
|
readonly byKind: ReadonlyMap<string, readonly ResourceDescriptor[]>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as ApplicationAssembly } from "./index-Cqh9pEBa.js";
|
|
2
|
-
import { t as ResourceRegistry } from "./index-
|
|
2
|
+
import { t as ResourceRegistry } from "./index-DkqggaxV.js";
|
|
3
3
|
//#region ../compiler-skill/src/index.d.ts
|
|
4
4
|
interface SkillDescriptor {
|
|
5
5
|
name: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { A as ObjectTargets, B as applicationAssemblyPackage, C as ObjectOperationDefinition, D as ObjectOperationTargetDeclaration, E as ObjectOperationOwnerKind, F as ResourceSource, G as loadApplicationAssembly, H as assertObjectOperationCall, I as SkillCapsuleDependency, K as resolveApplicationAssembly, L as SkillCapsuleResource, M as ResolveApplicationAssemblyOptions, N as ResolvedAssemblyPortBinding, O as ObjectTargetKindDefinition, P as ResourceInclude, R as TextMaterial, S as ObjectOperationContractError, T as ObjectOperationHandler, U as assertObjectOperationCatalog, V as assertExecuteObjectOperationRequest, W as assertObjectOperationDefinition, _ as ObjectInvocationMode, a as AssemblyResource, b as ObjectOperationCatalog, c as BusinessObjectSopResource, d as ExecuteObjectOperationRequest, f as JsonObject, g as ObjectInvocation, h as LoadApplicationAssemblyOptions, i as AssemblyPortBinding, j as PageObjectResource, k as ObjectTargetRef, l as CodeBinding, m as JsonValue, n as ApplicationScope, o as AuthoringModuleDescriptor, p as JsonPrimitive, q as resourceRefToFqn, r as AssemblyPort, s as BusinessObjectResource, t as ApplicationAssembly, u as ContractedCallableResource, v as ObjectOperationBehavior, w as ObjectOperationEffect, x as ObjectOperationConfig, y as ObjectOperationCall, z as TextResource } from "./index-Cqh9pEBa.js";
|
|
2
|
-
import { A as admitCodePackages, B as createResourceContentIdentity, C as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, D as LoadCodePackageModuleInput, E as CodePackageLoadError, F as ResourceDependencyEdge, G as EffectiveResourceRegistry, H as ComposeLayeredResourceRegistryInput, I as ResourceDependencySnapshot, J as ResourceOrigin, K as ResourceLayerDescriptor, L as ResourceDigestContribution, M as BuildResourceDependencySnapshotInput, N as CreateResourceContentIdentityInput, O as LoadedCodePackageModule, P as ResourceContentIdentity, Q as Sha256Digest, R as SnapshotResource, S as validateResourceTree, T as CodePackageExportContract, U as EffectiveKindDefinition, V as sha256Digest, W as EffectiveResourceEntry, X as ResourceTombstoneOrigin, Y as ResourceTombstone, Z as composeLayeredResourceRegistry, _ as ResourceValue, a as ResourceDescriptor, b as SourceShape, c as ResourceKindContract, d as ResourceRecord, f as ResourceRegistry, g as ResourceValidationError, h as ResourceTreeBuildResult, i as RegisteredKindDefinition, j as loadCodePackageModule, k as admitCodePackageExports, l as ResourceMetadata, m as ResourceTree, n as LoadedResourceTree, o as ResourceDiagnostic, p as ResourceScalar, q as ResourceLayerInput, r as LoadedResourceTreeBuildResult, s as ResourceIdentity, t as LoadResourceTreeOptions, u as ResourceNode, v as ResourceValueList, w as CodePackageBinding, x as loadResourceTree, y as ResourceValueMap, z as buildResourceDependencySnapshot } from "./index-
|
|
3
|
-
import { i as ResourceCompositionError, n as ResourceLayerContentIdentityInput, r as resolveEffectiveResourceContentIdentities, t as ResolveEffectiveResourceContentIdentitiesInput } from "./resource-core-
|
|
4
|
-
import { S as skillCapsuleDistributionProjection, _ as applySkillCapsuleDistributionPlan, a as PlannedSkillCapsule, b as compilerSkillPackage, c as SkillCapsuleContentDigest, d as SkillCapsuleDistributionReceipt, f as SkillCapsuleIdentity, g as SkillReference, h as SkillDescriptor, i as PlanSkillCapsuleDistributionInput, l as SkillCapsuleDistributionError, m as SkillCapsuleProvenanceManifest, n as CompileResourceSkillCapsuleInput, o as PlannedSkillFile, p as SkillCapsulePlan, r as CompileSkillCapsuleInput, s as SkillCapsuleApplyStep, t as ApplySkillCapsuleDistributionOptions, u as SkillCapsuleDistributionPlan, v as compileResourceSkillCapsule, x as planSkillCapsuleDistribution, y as compileSkillCapsule } from "./index-
|
|
2
|
+
import { A as admitCodePackages, B as createResourceContentIdentity, C as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, D as LoadCodePackageModuleInput, E as CodePackageLoadError, F as ResourceDependencyEdge, G as EffectiveResourceRegistry, H as ComposeLayeredResourceRegistryInput, I as ResourceDependencySnapshot, J as ResourceOrigin, K as ResourceLayerDescriptor, L as ResourceDigestContribution, M as BuildResourceDependencySnapshotInput, N as CreateResourceContentIdentityInput, O as LoadedCodePackageModule, P as ResourceContentIdentity, Q as Sha256Digest, R as SnapshotResource, S as validateResourceTree, T as CodePackageExportContract, U as EffectiveKindDefinition, V as sha256Digest, W as EffectiveResourceEntry, X as ResourceTombstoneOrigin, Y as ResourceTombstone, Z as composeLayeredResourceRegistry, _ as ResourceValue, a as ResourceDescriptor, b as SourceShape, c as ResourceKindContract, d as ResourceRecord, f as ResourceRegistry, g as ResourceValidationError, h as ResourceTreeBuildResult, i as RegisteredKindDefinition, j as loadCodePackageModule, k as admitCodePackageExports, l as ResourceMetadata, m as ResourceTree, n as LoadedResourceTree, o as ResourceDiagnostic, p as ResourceScalar, q as ResourceLayerInput, r as LoadedResourceTreeBuildResult, s as ResourceIdentity, t as LoadResourceTreeOptions, u as ResourceNode, v as ResourceValueList, w as CodePackageBinding, x as loadResourceTree, y as ResourceValueMap, z as buildResourceDependencySnapshot } from "./index-CEJBgfBZ.js";
|
|
3
|
+
import { i as ResourceCompositionError, n as ResourceLayerContentIdentityInput, r as resolveEffectiveResourceContentIdentities, t as ResolveEffectiveResourceContentIdentitiesInput } from "./resource-core-zEONBZ_o.js";
|
|
4
|
+
import { S as skillCapsuleDistributionProjection, _ as applySkillCapsuleDistributionPlan, a as PlannedSkillCapsule, b as compilerSkillPackage, c as SkillCapsuleContentDigest, d as SkillCapsuleDistributionReceipt, f as SkillCapsuleIdentity, g as SkillReference, h as SkillDescriptor, i as PlanSkillCapsuleDistributionInput, l as SkillCapsuleDistributionError, m as SkillCapsuleProvenanceManifest, n as CompileResourceSkillCapsuleInput, o as PlannedSkillFile, p as SkillCapsulePlan, r as CompileSkillCapsuleInput, s as SkillCapsuleApplyStep, t as ApplySkillCapsuleDistributionOptions, u as SkillCapsuleDistributionPlan, v as compileResourceSkillCapsule, x as planSkillCapsuleDistribution, y as compileSkillCapsule } from "./index-X6R_4lMW.js";
|
|
5
5
|
//#region src/bundled-system-skills.d.ts
|
|
6
6
|
declare function loadHalfcodeResourceDslSystemSkillModule(): AuthoringModuleDescriptor;
|
|
7
7
|
declare function loadHalfcodeResourceDslSystemSkillPlan(): Promise<SkillCapsuleDistributionPlan>;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { _ as ResourceCompositionError, a as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, c as admitCodePackages, d as buildResourceDependencySnapshot, f as createResourceContentIdentity, l as loadCodePackageModule, n as loadResourceTree, o as CodePackageLoadError, p as sha256Digest, r as validateResourceTree, s as admitCodePackageExports, t as ResourceValidationError } from "./src-
|
|
2
|
-
import { a as assertObjectOperationCatalog, c as resolveApplicationAssembly, i as assertObjectOperationCall, l as resourceRefToFqn, n as applicationAssemblyPackage, o as assertObjectOperationDefinition, r as assertExecuteObjectOperationRequest, s as loadApplicationAssembly, t as ObjectOperationContractError } from "./src-
|
|
1
|
+
import { _ as ResourceCompositionError, a as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, c as admitCodePackages, d as buildResourceDependencySnapshot, f as createResourceContentIdentity, l as loadCodePackageModule, n as loadResourceTree, o as CodePackageLoadError, p as sha256Digest, r as validateResourceTree, s as admitCodePackageExports, t as ResourceValidationError } from "./src-DvYk6l4v.js";
|
|
2
|
+
import { a as assertObjectOperationCatalog, c as resolveApplicationAssembly, i as assertObjectOperationCall, l as resourceRefToFqn, n as applicationAssemblyPackage, o as assertObjectOperationDefinition, r as assertExecuteObjectOperationRequest, s as loadApplicationAssembly, t as ObjectOperationContractError } from "./src-t2lJrIJe.js";
|
|
3
3
|
import "./application-assembly.js";
|
|
4
4
|
import { composeLayeredResourceRegistry, resolveEffectiveResourceContentIdentities } from "./resource-core.js";
|
|
5
|
-
import { a as compilerSkillPackage, i as compileSkillCapsule, n as applySkillCapsuleDistributionPlan, o as planSkillCapsuleDistribution, r as compileResourceSkillCapsule, s as skillCapsuleDistributionProjection, t as SkillCapsuleDistributionError } from "./src-
|
|
5
|
+
import { a as compilerSkillPackage, i as compileSkillCapsule, n as applySkillCapsuleDistributionPlan, o as planSkillCapsuleDistribution, r as compileResourceSkillCapsule, s as skillCapsuleDistributionProjection, t as SkillCapsuleDistributionError } from "./src-m2ZrS5dQ.js";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
//#region src/bundled-system-skills.ts
|
|
8
8
|
function loadHalfcodeResourceDslSystemSkillModule() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ResourceDescriptor, c as ResourceKindContract } from "./index-
|
|
1
|
+
import { a as ResourceDescriptor, c as ResourceKindContract } from "./index-CEJBgfBZ.js";
|
|
2
2
|
//#region ../kind-definition/src/index.d.ts
|
|
3
3
|
interface KindDefinition extends ResourceDescriptor, ResourceKindContract {
|
|
4
4
|
kind: "KindDefinition";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { G as EffectiveResourceRegistry, L as ResourceDigestContribution, P as ResourceContentIdentity, n as LoadedResourceTree, o as ResourceDiagnostic } from "./index-
|
|
1
|
+
import { G as EffectiveResourceRegistry, L as ResourceDigestContribution, P as ResourceContentIdentity, n as LoadedResourceTree, o as ResourceDiagnostic } from "./index-CEJBgfBZ.js";
|
|
2
2
|
//#region ../resource-core/src/composition-error.d.ts
|
|
3
3
|
declare class ResourceCompositionError extends Error {
|
|
4
4
|
readonly diagnostics: readonly ResourceDiagnostic[];
|
package/dist/resource-core.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as admitCodePackages, B as createResourceContentIdentity, C as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, D as LoadCodePackageModuleInput, E as CodePackageLoadError, F as ResourceDependencyEdge, G as EffectiveResourceRegistry, H as ComposeLayeredResourceRegistryInput, I as ResourceDependencySnapshot, J as ResourceOrigin, K as ResourceLayerDescriptor, L as ResourceDigestContribution, M as BuildResourceDependencySnapshotInput, N as CreateResourceContentIdentityInput, O as LoadedCodePackageModule, P as ResourceContentIdentity, Q as Sha256Digest, R as SnapshotResource, S as validateResourceTree, T as CodePackageExportContract, U as EffectiveKindDefinition, V as sha256Digest, W as EffectiveResourceEntry, X as ResourceTombstoneOrigin, Y as ResourceTombstone, Z as composeLayeredResourceRegistry, _ as ResourceValue, a as ResourceDescriptor, b as SourceShape, c as ResourceKindContract, d as ResourceRecord, f as ResourceRegistry, g as ResourceValidationError, h as ResourceTreeBuildResult, i as RegisteredKindDefinition, j as loadCodePackageModule, k as admitCodePackageExports, l as ResourceMetadata, m as ResourceTree, n as LoadedResourceTree, o as ResourceDiagnostic, p as ResourceScalar, q as ResourceLayerInput, r as LoadedResourceTreeBuildResult, s as ResourceIdentity, t as LoadResourceTreeOptions, u as ResourceNode, v as ResourceValueList, w as CodePackageBinding, x as loadResourceTree, y as ResourceValueMap, z as buildResourceDependencySnapshot } from "./index-
|
|
2
|
-
import { i as ResourceCompositionError, n as ResourceLayerContentIdentityInput, r as resolveEffectiveResourceContentIdentities, t as ResolveEffectiveResourceContentIdentitiesInput } from "./resource-core-
|
|
1
|
+
import { A as admitCodePackages, B as createResourceContentIdentity, C as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, D as LoadCodePackageModuleInput, E as CodePackageLoadError, F as ResourceDependencyEdge, G as EffectiveResourceRegistry, H as ComposeLayeredResourceRegistryInput, I as ResourceDependencySnapshot, J as ResourceOrigin, K as ResourceLayerDescriptor, L as ResourceDigestContribution, M as BuildResourceDependencySnapshotInput, N as CreateResourceContentIdentityInput, O as LoadedCodePackageModule, P as ResourceContentIdentity, Q as Sha256Digest, R as SnapshotResource, S as validateResourceTree, T as CodePackageExportContract, U as EffectiveKindDefinition, V as sha256Digest, W as EffectiveResourceEntry, X as ResourceTombstoneOrigin, Y as ResourceTombstone, Z as composeLayeredResourceRegistry, _ as ResourceValue, a as ResourceDescriptor, b as SourceShape, c as ResourceKindContract, d as ResourceRecord, f as ResourceRegistry, g as ResourceValidationError, h as ResourceTreeBuildResult, i as RegisteredKindDefinition, j as loadCodePackageModule, k as admitCodePackageExports, l as ResourceMetadata, m as ResourceTree, n as LoadedResourceTree, o as ResourceDiagnostic, p as ResourceScalar, q as ResourceLayerInput, r as LoadedResourceTreeBuildResult, s as ResourceIdentity, t as LoadResourceTreeOptions, u as ResourceNode, v as ResourceValueList, w as CodePackageBinding, x as loadResourceTree, y as ResourceValueMap, z as buildResourceDependencySnapshot } from "./index-CEJBgfBZ.js";
|
|
2
|
+
import { i as ResourceCompositionError, n as ResourceLayerContentIdentityInput, r as resolveEffectiveResourceContentIdentities, t as ResolveEffectiveResourceContentIdentitiesInput } from "./resource-core-zEONBZ_o.js";
|
|
3
3
|
export { BuildResourceDependencySnapshotInput, CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, type CodePackageBinding, type CodePackageExportContract, CodePackageLoadError, ComposeLayeredResourceRegistryInput, CreateResourceContentIdentityInput, EffectiveKindDefinition, EffectiveResourceEntry, EffectiveResourceRegistry, type LoadCodePackageModuleInput, LoadResourceTreeOptions, type LoadedCodePackageModule, LoadedResourceTree, LoadedResourceTreeBuildResult, RegisteredKindDefinition, ResolveEffectiveResourceContentIdentitiesInput, ResourceCompositionError, ResourceContentIdentity, ResourceDependencyEdge, ResourceDependencySnapshot, ResourceDescriptor, ResourceDiagnostic, ResourceDigestContribution, ResourceIdentity, ResourceKindContract, ResourceLayerContentIdentityInput, ResourceLayerDescriptor, ResourceLayerInput, ResourceMetadata, ResourceNode, ResourceOrigin, ResourceRecord, ResourceRegistry, ResourceScalar, ResourceTombstone, ResourceTombstoneOrigin, ResourceTree, ResourceTreeBuildResult, ResourceValidationError, ResourceValue, ResourceValueList, ResourceValueMap, type Sha256Digest, SnapshotResource, SourceShape, admitCodePackageExports, admitCodePackages, buildResourceDependencySnapshot, composeLayeredResourceRegistry, createResourceContentIdentity, loadCodePackageModule, loadResourceTree, resolveEffectiveResourceContentIdentities, sha256Digest, validateResourceTree };
|
package/dist/resource-core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as ResourceCompositionError, a as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, c as admitCodePackages, d as buildResourceDependencySnapshot, f as createResourceContentIdentity, g as markEffectiveRegistryAuthentic, h as isEffectiveRegistryAuthentic, i as readonlyMap, l as loadCodePackageModule, m as effectiveRegistryLayerBindings, n as loadResourceTree, o as CodePackageLoadError, p as sha256Digest, r as validateResourceTree, s as admitCodePackageExports, t as ResourceValidationError, u as isLoadedResourceTreeAuthentic, v as compareCodeUnits, y as digestCanonical } from "./src-
|
|
1
|
+
import { _ as ResourceCompositionError, a as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, c as admitCodePackages, d as buildResourceDependencySnapshot, f as createResourceContentIdentity, g as markEffectiveRegistryAuthentic, h as isEffectiveRegistryAuthentic, i as readonlyMap, l as loadCodePackageModule, m as effectiveRegistryLayerBindings, n as loadResourceTree, o as CodePackageLoadError, p as sha256Digest, r as validateResourceTree, s as admitCodePackageExports, t as ResourceValidationError, u as isLoadedResourceTreeAuthentic, v as compareCodeUnits, y as digestCanonical } from "./src-DvYk6l4v.js";
|
|
2
2
|
//#region ../resource-core/src/layered-registry.ts
|
|
3
3
|
function composeLayeredResourceRegistry(input) {
|
|
4
4
|
const diagnostics = [];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as resourceProjectionPackage, t as ResourceRegistry } from "./index-
|
|
1
|
+
import { n as resourceProjectionPackage, t as ResourceRegistry } from "./index-DkqggaxV.js";
|
|
2
2
|
export { ResourceRegistry, resourceProjectionPackage };
|
package/dist/skill-capsule.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { I as SkillCapsuleDependency } from "./index-Cqh9pEBa.js";
|
|
2
|
-
import { S as skillCapsuleDistributionProjection, _ as applySkillCapsuleDistributionPlan, a as PlannedSkillCapsule, b as compilerSkillPackage, c as SkillCapsuleContentDigest, d as SkillCapsuleDistributionReceipt, f as SkillCapsuleIdentity, g as SkillReference, h as SkillDescriptor, i as PlanSkillCapsuleDistributionInput, l as SkillCapsuleDistributionError, m as SkillCapsuleProvenanceManifest, n as CompileResourceSkillCapsuleInput, o as PlannedSkillFile, p as SkillCapsulePlan, r as CompileSkillCapsuleInput, s as SkillCapsuleApplyStep, t as ApplySkillCapsuleDistributionOptions, u as SkillCapsuleDistributionPlan, v as compileResourceSkillCapsule, x as planSkillCapsuleDistribution, y as compileSkillCapsule } from "./index-
|
|
2
|
+
import { S as skillCapsuleDistributionProjection, _ as applySkillCapsuleDistributionPlan, a as PlannedSkillCapsule, b as compilerSkillPackage, c as SkillCapsuleContentDigest, d as SkillCapsuleDistributionReceipt, f as SkillCapsuleIdentity, g as SkillReference, h as SkillDescriptor, i as PlanSkillCapsuleDistributionInput, l as SkillCapsuleDistributionError, m as SkillCapsuleProvenanceManifest, n as CompileResourceSkillCapsuleInput, o as PlannedSkillFile, p as SkillCapsulePlan, r as CompileSkillCapsuleInput, s as SkillCapsuleApplyStep, t as ApplySkillCapsuleDistributionOptions, u as SkillCapsuleDistributionPlan, v as compileResourceSkillCapsule, x as planSkillCapsuleDistribution, y as compileSkillCapsule } from "./index-X6R_4lMW.js";
|
|
3
3
|
export { ApplySkillCapsuleDistributionOptions, CompileResourceSkillCapsuleInput, CompileSkillCapsuleInput, PlanSkillCapsuleDistributionInput, PlannedSkillCapsule, PlannedSkillFile, SkillCapsuleApplyStep, SkillCapsuleContentDigest, type SkillCapsuleDependency, SkillCapsuleDistributionError, SkillCapsuleDistributionPlan, SkillCapsuleDistributionReceipt, SkillCapsuleIdentity, SkillCapsulePlan, SkillCapsuleProvenanceManifest, SkillDescriptor, SkillReference, applySkillCapsuleDistributionPlan, compileResourceSkillCapsule, compileSkillCapsule, compilerSkillPackage, planSkillCapsuleDistribution, skillCapsuleDistributionProjection };
|
package/dist/skill-capsule.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as compilerSkillPackage, i as compileSkillCapsule, n as applySkillCapsuleDistributionPlan, o as planSkillCapsuleDistribution, r as compileResourceSkillCapsule, s as skillCapsuleDistributionProjection, t as SkillCapsuleDistributionError } from "./src-
|
|
1
|
+
import { a as compilerSkillPackage, i as compileSkillCapsule, n as applySkillCapsuleDistributionPlan, o as planSkillCapsuleDistribution, r as compileResourceSkillCapsule, s as skillCapsuleDistributionProjection, t as SkillCapsuleDistributionError } from "./src-m2ZrS5dQ.js";
|
|
2
2
|
export { SkillCapsuleDistributionError, applySkillCapsuleDistributionPlan, compileResourceSkillCapsule, compileSkillCapsule, compilerSkillPackage, planSkillCapsuleDistribution, skillCapsuleDistributionProjection };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { n as wordToString, t as parseXnl } from "./dist-Bkv7YeVi.js";
|
|
2
|
-
import { readFile, readdir, realpath, stat } from "node:fs/promises";
|
|
2
|
+
import { mkdtemp, readFile, readdir, realpath, rm, stat, writeFile } from "node:fs/promises";
|
|
3
3
|
import { dirname, extname, isAbsolute, join, posix, relative, resolve, sep } from "node:path";
|
|
4
|
+
import { parse } from "yaml";
|
|
4
5
|
import { createHash } from "node:crypto";
|
|
5
|
-
import {
|
|
6
|
+
import { tmpdir } from "node:os";
|
|
7
|
+
import { pathToFileURL } from "node:url";
|
|
6
8
|
//#region ../resource-core/src/canonical.ts
|
|
7
9
|
function compareCodeUnits(left, right) {
|
|
8
10
|
if (left < right) return -1;
|
|
@@ -379,6 +381,26 @@ const nodeCodePackageRuntime = Object.freeze({
|
|
|
379
381
|
realpath,
|
|
380
382
|
readFile,
|
|
381
383
|
stat,
|
|
384
|
+
prepareModuleSource: async ({ bytes }) => {
|
|
385
|
+
const directory = await mkdtemp(join(tmpdir(), "halfcode-code-package-module-"));
|
|
386
|
+
const sourcePath = join(directory, "entry.mjs");
|
|
387
|
+
try {
|
|
388
|
+
await writeFile(sourcePath, bytes, { flag: "wx" });
|
|
389
|
+
} catch (error) {
|
|
390
|
+
await rm(directory, {
|
|
391
|
+
recursive: true,
|
|
392
|
+
force: true
|
|
393
|
+
}).catch(() => void 0);
|
|
394
|
+
throw error;
|
|
395
|
+
}
|
|
396
|
+
return Object.freeze({
|
|
397
|
+
url: pathToFileURL(sourcePath).href,
|
|
398
|
+
dispose: async () => rm(directory, {
|
|
399
|
+
recursive: true,
|
|
400
|
+
force: true
|
|
401
|
+
})
|
|
402
|
+
});
|
|
403
|
+
},
|
|
382
404
|
importModule: async (url) => import(url)
|
|
383
405
|
});
|
|
384
406
|
var CodePackageLoadError = class extends Error {
|
|
@@ -396,6 +418,12 @@ function normalizeCodePackageBinding(record) {
|
|
|
396
418
|
diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_SHAPE_INVALID", record.documentUri, `Resource '${record.resourceId}' does not use the code-package source shape.`));
|
|
397
419
|
return { diagnostics };
|
|
398
420
|
}
|
|
421
|
+
const declaredEntry = stringValue(record.node.properties.entry);
|
|
422
|
+
const declaredRuntime = stringValue(record.node.properties.runtime);
|
|
423
|
+
const declaredModuleUri = declaredEntry ? normalizeModuleUri(`vfs://./${declaredEntry}`) : void 0;
|
|
424
|
+
if (!declaredEntry) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_ENTRY_DECLARATION_MISSING", record.documentUri, `CodePackage resource '${record.resourceId}' requires a manifest entry.`));
|
|
425
|
+
else if (!declaredModuleUri) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_ENTRY_DECLARATION_INVALID", record.documentUri, `CodePackage resource '${record.resourceId}' has an invalid manifest entry.`));
|
|
426
|
+
if (!declaredRuntime) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_RUNTIME_MISSING", record.documentUri, `CodePackage resource '${record.resourceId}' requires a manifest runtime.`));
|
|
399
427
|
const node = record.node.subdomains.CodeBinding;
|
|
400
428
|
if (!node || node.tag !== "CodeBinding") {
|
|
401
429
|
diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_BINDING_MISSING", record.documentUri, `CodePackage resource '${record.resourceId}' requires one CodeBinding.`));
|
|
@@ -408,6 +436,7 @@ function normalizeCodePackageBinding(record) {
|
|
|
408
436
|
const rawExport = node.properties.export;
|
|
409
437
|
const exportName = stringValue(rawExport);
|
|
410
438
|
if (rawExport !== void 0 && (!exportName || !/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(exportName))) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_EXPORT_INVALID", record.documentUri, `CodePackage resource '${record.resourceId}' has an invalid named export binding.`));
|
|
439
|
+
if (moduleUri && declaredModuleUri && moduleUri !== declaredModuleUri) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_ENTRY_BINDING_MISMATCH", record.documentUri, `CodePackage resource '${record.resourceId}' manifest entry and CodeBinding.module must identify the same package-local module.`));
|
|
411
440
|
if (diagnostics.length > 0 || !moduleUri) return { diagnostics: stableDiagnostics(diagnostics) };
|
|
412
441
|
return {
|
|
413
442
|
binding: Object.freeze({
|
|
@@ -458,13 +487,26 @@ async function loadCodePackageModuleWithRuntime(runtime, input) {
|
|
|
458
487
|
if (entry.diagnostics.length > 0 || !entry.entryPath || !entry.bytes) throw new CodePackageLoadError(entry.diagnostics);
|
|
459
488
|
const contribution = identity.contributions.find((item) => item.key === CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY);
|
|
460
489
|
if (!contribution || contribution.digest !== sha256Digest(entry.bytes) || contribution.sourceUri !== entry.sourceUri) throw loadError("RESOURCE_CODE_PACKAGE_REVISION_STALE", `${record.documentUri}#CodeBinding`, `CodePackage entry for '${record.resourceId}' changed after its ResourceTree was loaded.`);
|
|
461
|
-
|
|
490
|
+
let preparedSource;
|
|
491
|
+
try {
|
|
492
|
+
preparedSource = await runtime.prepareModuleSource({
|
|
493
|
+
bytes: entry.bytes,
|
|
494
|
+
revision: identity.contentDigest
|
|
495
|
+
});
|
|
496
|
+
} catch {
|
|
497
|
+
throw loadError("RESOURCE_CODE_PACKAGE_IMPORT_PREPARE_FAILED", `${record.documentUri}#CodeBinding`, `CodePackage entry for '${record.resourceId}' could not be prepared for import.`);
|
|
498
|
+
}
|
|
462
499
|
let moduleNamespace;
|
|
500
|
+
let importFailed = false;
|
|
463
501
|
try {
|
|
464
|
-
moduleNamespace = await runtime.importModule(url);
|
|
502
|
+
moduleNamespace = await runtime.importModule(preparedSource.url);
|
|
465
503
|
} catch {
|
|
466
|
-
|
|
504
|
+
importFailed = true;
|
|
505
|
+
moduleNamespace = Object.freeze({});
|
|
467
506
|
}
|
|
507
|
+
const cleanupFailed = await preparedSource.dispose().then(() => false, () => true);
|
|
508
|
+
if (importFailed) throw loadError("RESOURCE_CODE_PACKAGE_IMPORT_FAILED", `${record.documentUri}#CodeBinding`, `CodePackage entry for '${record.resourceId}' could not be imported.`);
|
|
509
|
+
if (cleanupFailed) throw loadError("RESOURCE_CODE_PACKAGE_IMPORT_CLEANUP_FAILED", `${record.documentUri}#CodeBinding`, `CodePackage entry for '${record.resourceId}' could not be cleaned up after import.`);
|
|
468
510
|
if (binding.exportName && !(binding.exportName in moduleNamespace)) throw loadError("RESOURCE_CODE_PACKAGE_EXPORT_MISSING", `${record.documentUri}#CodeBinding`, `CodePackage entry for '${record.resourceId}' does not export '${binding.exportName}'.`);
|
|
469
511
|
const currentBytes = await runtime.readFile(entry.entryPath).catch(() => void 0);
|
|
470
512
|
if (!currentBytes || sha256Digest(currentBytes) !== contribution.digest) throw loadError("RESOURCE_CODE_PACKAGE_REVISION_STALE", `${record.documentUri}#CodeBinding`, `CodePackage entry for '${record.resourceId}' changed while it was being imported.`);
|
|
@@ -699,7 +741,7 @@ async function loadCatalog(catalog, manifestDir, context) {
|
|
|
699
741
|
});
|
|
700
742
|
continue;
|
|
701
743
|
}
|
|
702
|
-
const records = await
|
|
744
|
+
const records = await loadResourceRecords(file, catalog.shape, context, definition.documentCardinality);
|
|
703
745
|
for (const record of records) {
|
|
704
746
|
if (record.kind !== catalog.kind) {
|
|
705
747
|
context.diagnostics.push(kindMismatch(record.kind, catalog.kind, record.documentUri));
|
|
@@ -727,17 +769,17 @@ async function catalogFiles(catalog, manifestDir, context) {
|
|
|
727
769
|
}
|
|
728
770
|
if (catalog.shape === "single-file") {
|
|
729
771
|
if (catalog.entry) {
|
|
730
|
-
if (!isPlainEntry(catalog.entry) || !catalog.entry
|
|
772
|
+
if (!isPlainEntry(catalog.entry) || !isSingleFileExtension(catalog.entry)) {
|
|
731
773
|
context.diagnostics.push({
|
|
732
774
|
code: "RESOURCE_CATALOG_ENTRY_INVALID",
|
|
733
775
|
location: catalog.location,
|
|
734
|
-
message: "A single-file catalog entry must be a plain XNL filename."
|
|
776
|
+
message: "A single-file catalog entry must be a plain XNL or Markdown filename."
|
|
735
777
|
});
|
|
736
778
|
return [];
|
|
737
779
|
}
|
|
738
780
|
return [join(root, catalog.entry)];
|
|
739
781
|
}
|
|
740
|
-
return entries.filter((entry) => entry.isFile() && entry.name
|
|
782
|
+
return entries.filter((entry) => entry.isFile() && isSingleFileExtension(entry.name)).sort((left, right) => compareCodeUnits(left.name, right.name)).map((entry) => join(root, entry.name));
|
|
741
783
|
}
|
|
742
784
|
if (!catalog.entry || !isPlainEntry(catalog.entry)) {
|
|
743
785
|
context.diagnostics.push({
|
|
@@ -752,6 +794,111 @@ async function catalogFiles(catalog, manifestDir, context) {
|
|
|
752
794
|
async function loadXnlRecord(filePath, sourceShape, context) {
|
|
753
795
|
return (await loadXnlRecords(filePath, sourceShape, context, "one"))[0];
|
|
754
796
|
}
|
|
797
|
+
async function loadResourceRecords(filePath, sourceShape, context, documentCardinality) {
|
|
798
|
+
if (extname(filePath).toLowerCase() !== ".md") return loadXnlRecords(filePath, sourceShape, context, documentCardinality);
|
|
799
|
+
if (sourceShape !== "single-file" || documentCardinality !== "one") {
|
|
800
|
+
context.diagnostics.push({
|
|
801
|
+
code: "RESOURCE_MARKDOWN_SOURCE_SHAPE_INVALID",
|
|
802
|
+
location: documentUriFor(context.rootDir, filePath),
|
|
803
|
+
message: "Markdown resource authority requires a single-file catalog with documentCardinality one."
|
|
804
|
+
});
|
|
805
|
+
return [];
|
|
806
|
+
}
|
|
807
|
+
const record = await loadMarkdownRecord(filePath, context);
|
|
808
|
+
return record ? [record] : [];
|
|
809
|
+
}
|
|
810
|
+
async function loadMarkdownRecord(filePath, context) {
|
|
811
|
+
const documentUri = documentUriFor(context.rootDir, filePath);
|
|
812
|
+
const authority = await readAuthorityFile(filePath, documentUri, context);
|
|
813
|
+
if (!authority) return void 0;
|
|
814
|
+
const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u.exec(authority.source);
|
|
815
|
+
if (!match) {
|
|
816
|
+
context.diagnostics.push({
|
|
817
|
+
code: "RESOURCE_MARKDOWN_FRONTMATTER_INVALID",
|
|
818
|
+
location: documentUri,
|
|
819
|
+
message: "Markdown resource authority requires a closed YAML frontmatter block at the start of the file."
|
|
820
|
+
});
|
|
821
|
+
return;
|
|
822
|
+
}
|
|
823
|
+
let parsed;
|
|
824
|
+
try {
|
|
825
|
+
parsed = parse(match[1] ?? "");
|
|
826
|
+
} catch (error) {
|
|
827
|
+
context.diagnostics.push({
|
|
828
|
+
code: "RESOURCE_MARKDOWN_FRONTMATTER_INVALID",
|
|
829
|
+
location: documentUri,
|
|
830
|
+
message: `Invalid Markdown resource frontmatter: ${error instanceof Error ? error.message : String(error)}`
|
|
831
|
+
});
|
|
832
|
+
return;
|
|
833
|
+
}
|
|
834
|
+
if (!isPlainObject(parsed)) {
|
|
835
|
+
context.diagnostics.push({
|
|
836
|
+
code: "RESOURCE_MARKDOWN_FRONTMATTER_INVALID",
|
|
837
|
+
location: documentUri,
|
|
838
|
+
message: "Markdown resource frontmatter must be a YAML object."
|
|
839
|
+
});
|
|
840
|
+
return;
|
|
841
|
+
}
|
|
842
|
+
const metadataValue = parsed.metadata;
|
|
843
|
+
const specValue = parsed.spec;
|
|
844
|
+
const kind = stringField(parsed.kind);
|
|
845
|
+
const apiVersion = stringField(parsed.apiVersion);
|
|
846
|
+
const metadataObject = isPlainObject(metadataValue) ? metadataValue : void 0;
|
|
847
|
+
const resourceId = metadataObject ? stringField(metadataObject.fqn) : void 0;
|
|
848
|
+
if (!kind || !apiVersion || !resourceId || specValue !== void 0 && !isPlainObject(specValue)) {
|
|
849
|
+
context.diagnostics.push({
|
|
850
|
+
code: "RESOURCE_MARKDOWN_METADATA_INVALID",
|
|
851
|
+
location: documentUri,
|
|
852
|
+
message: "Markdown resource frontmatter requires apiVersion, kind, metadata.fqn and an optional object spec."
|
|
853
|
+
});
|
|
854
|
+
return;
|
|
855
|
+
}
|
|
856
|
+
let properties;
|
|
857
|
+
try {
|
|
858
|
+
properties = Object.freeze(normalizeExternalMap(specValue ?? {}));
|
|
859
|
+
} catch (error) {
|
|
860
|
+
context.diagnostics.push({
|
|
861
|
+
code: "RESOURCE_MARKDOWN_METADATA_INVALID",
|
|
862
|
+
location: documentUri,
|
|
863
|
+
message: `Markdown resource spec is not JSON-compatible: ${error instanceof Error ? error.message : String(error)}`
|
|
864
|
+
});
|
|
865
|
+
return;
|
|
866
|
+
}
|
|
867
|
+
const version = metadataObject ? stringField(metadataObject.version) : void 0;
|
|
868
|
+
const lifecycle = metadataObject ? stringField(metadataObject.lifecycle) : void 0;
|
|
869
|
+
const name = metadataObject ? stringField(metadataObject.name) : void 0;
|
|
870
|
+
const description = stringField(properties.description);
|
|
871
|
+
const node = Object.freeze({
|
|
872
|
+
tag: kind,
|
|
873
|
+
resourceId,
|
|
874
|
+
metadata: Object.freeze({
|
|
875
|
+
apiVersion,
|
|
876
|
+
...version ? { version } : {}
|
|
877
|
+
}),
|
|
878
|
+
properties,
|
|
879
|
+
body: Object.freeze([]),
|
|
880
|
+
subdomains: Object.freeze({})
|
|
881
|
+
});
|
|
882
|
+
const record = Object.freeze({
|
|
883
|
+
kind,
|
|
884
|
+
resourceId,
|
|
885
|
+
fqn: resourceId,
|
|
886
|
+
...name ? { name } : {},
|
|
887
|
+
...description ? { description } : {},
|
|
888
|
+
metadata: Object.freeze({
|
|
889
|
+
apiVersion,
|
|
890
|
+
...lifecycle ? { lifecycle } : {},
|
|
891
|
+
...version ? { version } : {}
|
|
892
|
+
}),
|
|
893
|
+
sourceShape: "single-file",
|
|
894
|
+
logicalPath: relative(context.rootDir, filePath).split(sep).join("/"),
|
|
895
|
+
documentUri,
|
|
896
|
+
format: "markdown",
|
|
897
|
+
node
|
|
898
|
+
});
|
|
899
|
+
context.recordAuthorityDigests.set(record, authority.authorityDigest);
|
|
900
|
+
return record;
|
|
901
|
+
}
|
|
755
902
|
async function loadXnlRecords(filePath, sourceShape, context, documentCardinality) {
|
|
756
903
|
const documentUri = documentUriFor(context.rootDir, filePath);
|
|
757
904
|
const authority = await readAuthorityFile(filePath, documentUri, context);
|
|
@@ -1086,6 +1233,28 @@ function isDocumentCardinality(value) {
|
|
|
1086
1233
|
function isPlainEntry(value) {
|
|
1087
1234
|
return Boolean(value) && !value.includes("/") && !value.includes("\\") && !value.includes("..");
|
|
1088
1235
|
}
|
|
1236
|
+
function isSingleFileExtension(value) {
|
|
1237
|
+
const extension = extname(value).toLowerCase();
|
|
1238
|
+
return extension === ".xnl" || extension === ".md";
|
|
1239
|
+
}
|
|
1240
|
+
function isPlainObject(value) {
|
|
1241
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
1242
|
+
const prototype = Object.getPrototypeOf(value);
|
|
1243
|
+
return prototype === Object.prototype || prototype === null;
|
|
1244
|
+
}
|
|
1245
|
+
function stringField(value) {
|
|
1246
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
1247
|
+
}
|
|
1248
|
+
function normalizeExternalMap(value) {
|
|
1249
|
+
return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, normalizeExternalValue(child)]));
|
|
1250
|
+
}
|
|
1251
|
+
function normalizeExternalValue(value) {
|
|
1252
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") return value;
|
|
1253
|
+
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
1254
|
+
if (Array.isArray(value)) return Object.freeze(value.map(normalizeExternalValue));
|
|
1255
|
+
if (isPlainObject(value)) return Object.freeze(normalizeExternalMap(value));
|
|
1256
|
+
throw new TypeError(`unsupported value ${Object.prototype.toString.call(value)}`);
|
|
1257
|
+
}
|
|
1089
1258
|
function asString(value) {
|
|
1090
1259
|
return typeof value === "string" && value.trim() ? value : void 0;
|
|
1091
1260
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as resourceRefToFqn, u as resolveObjectOperationCompilation } from "./src-
|
|
1
|
+
import { l as resourceRefToFqn, u as resolveObjectOperationCompilation } from "./src-t2lJrIJe.js";
|
|
2
2
|
import { c as unsafeUnicodeCodeUnitIssue, i as planResourceMappings, o as safePathLexicalIssue, r as parseResourceMappings, t as ResourceMappingPathError } from "./src-25wZPUyX.js";
|
|
3
3
|
import { lstat, mkdir, mkdtemp, readFile, readdir, rename, rm, writeFile } from "node:fs/promises";
|
|
4
4
|
import { basename, dirname, join, posix, resolve } from "node:path";
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
)>
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
catalog 只描述组织,不复制每个 descriptor 的内容。`shape` 取 `single-file|directory|manifest
|
|
29
|
+
catalog 只描述组织,不复制每个 descriptor 的内容。`shape` 取 `single-file|directory|manifest|code-package`;后三者必须声明目录入口 `entry`。`single-file` 缺省扫描 `root` 下全部 `.xnl` 与 `.md` 文件,也可以用可选 `entry = "<name>.xnl|<name>.md"` 精确选择同目录中的一个 authority 文件。XNL 用根 tag/`#id` 确认 kind/identity;Markdown 用文件开头的 YAML frontmatter `kind` 与 `metadata.fqn` 确认,完整文件 bytes 是内容身份 authority。
|
|
30
30
|
|
|
31
31
|
## KindDefinition
|
|
32
32
|
|
|
@@ -75,6 +75,37 @@ descriptor 根 tag 直接使用 kind,`#id` 是资源 FQN。唯一概念进入
|
|
|
75
75
|
|
|
76
76
|
通用资源外壳只规定 identity、metadata channel、members/subdomains 和 provenance。各 Kind 的稳定领域字段及其 requiredness 由对应 `KindDefinition` 或 consumer contract 收窄;缺失的可选字段不会被填成空字符串。
|
|
77
77
|
|
|
78
|
+
文本资源可以直接使用 Markdown 单文件 authority,无需配对 XNL descriptor:
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
---
|
|
82
|
+
apiVersion: demo.resources/v1
|
|
83
|
+
kind: ApplicationSOP
|
|
84
|
+
metadata:
|
|
85
|
+
fqn: Demo.ApplicationSOP.Search
|
|
86
|
+
version: 1.0.0
|
|
87
|
+
spec:
|
|
88
|
+
description: 执行搜索并返回结构化结果
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
这里是 SOP 正文。
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
frontmatter 只规范化 identity、metadata 与 JSON-compatible `spec`;正文不会被解释为 dependency 或额外 metadata。
|
|
95
|
+
|
|
96
|
+
`code-package` descriptor 还必须声明 `entry` 与 `runtime`,并保留显式 CodeBinding:
|
|
97
|
+
|
|
98
|
+
```xnl
|
|
99
|
+
<CodePackage #demo.code_package.functions apiVersion="halfcode.resources/v1" version="1.0.0" {
|
|
100
|
+
entry = "bundle/index.js"
|
|
101
|
+
runtime = "bun"
|
|
102
|
+
} (
|
|
103
|
+
<CodeBinding { module = "vfs://./bundle/index.js" }>
|
|
104
|
+
)>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`entry` 必须是 package-local `.js|.mjs` 相对路径,并与 `CodeBinding.module` 精确一致;`runtime` 是非空 target-neutral runtime identifier。
|
|
108
|
+
|
|
78
109
|
允许 forest 的 Kind 仍逐根执行同样的 kind、identity 与 `apiVersion` 校验。例如 Decision Kind 可以显式声明:
|
|
79
110
|
|
|
80
111
|
```xnl
|
|
@@ -6,7 +6,7 @@ kind 与 identity 来自文件根 tag 和 `#id`。目录名、文件名和 catal
|
|
|
6
6
|
|
|
7
7
|
## 两种定义形态
|
|
8
8
|
|
|
9
|
-
- 单文件 definition:任意描述性 `.xnl`
|
|
9
|
+
- 单文件 definition:任意描述性 `.xnl` 或 `.md` 文件名;XNL 文件内有一个语义根,Markdown 由 frontmatter 声明 Kind/FQN 并由正文承载文本内容。
|
|
10
10
|
- 目录 bundle:入口固定为 `manifest.xnl`,域文件使用描述性 `.xnl` 文件名。
|
|
11
11
|
|
|
12
12
|
目录 bundle 示例:
|
|
@@ -40,7 +40,7 @@ loader 为每个 normalized descriptor 附加只读 provenance:
|
|
|
40
40
|
## 扫描边界
|
|
41
41
|
|
|
42
42
|
- 默认目录入口仅为 `manifest.xnl`。
|
|
43
|
-
- `single-file` catalog 缺省扫描 root 下全部 `.xnl`;声明 `entry = "name.xnl"` 时只加载该文件,便于多个不同 Kind 共用一个物理目录。
|
|
43
|
+
- `single-file` catalog 缺省扫描 root 下全部 `.xnl` 与 `.md`;声明 `entry = "name.xnl|name.md"` 时只加载该文件,便于多个不同 Kind 共用一个物理目录。
|
|
44
44
|
- 非入口 `.xnl` 文件只能作为显式域/物料被入口引用,不能被重复注册为第二资源。
|
|
45
45
|
- 多根文档必须由 KindDefinition 显式授权;loader 不根据文件名或根数量猜测 forest 语义。
|
|
46
46
|
- catalog root 必须是 `vfs://` URI。
|
|
@@ -72,8 +72,8 @@ const projection = {
|
|
|
72
72
|
"skillVersion": "1.0.0",
|
|
73
73
|
"capsuleRelativePath": "references/.halfcode/provenance.json",
|
|
74
74
|
"targetRelativePath": "sys-halfcode-resource-dsl/references/.halfcode/provenance.json",
|
|
75
|
-
"contentDigest": "sha256:
|
|
76
|
-
"contentBase64": "
|
|
75
|
+
"contentDigest": "sha256:8c988d0476e08fad62cffb55eca87b563698586bd040a5e64903d1d281460581",
|
|
76
|
+
"contentBase64": "ewogICJmb3JtYXQiOiAiaGFsZmNvZGUuc2tpbGwtcHJvdmVuYW5jZS92MSIsCiAgImdlbmVyYXRlZEJ5IjogImhhbGZjb2RlLnNraWxsLWRpc3RyaWJ1dGlvbi92MSIsCiAgInNvdXJjZSI6IHsKICAgICJmcW4iOiAiSGFsZmNvZGUuUmVzb3VyY2VEc2wuU2tpbGwuU3lzdGVtIiwKICAgICJhcGlWZXJzaW9uIjogImhhbGZjb2RlLnJlc291cmNlcy92MSIsCiAgICAidmVyc2lvbiI6ICIxLjAuMCIKICB9LAogICJwYXlsb2FkRmlsZXMiOiBbCiAgICB7CiAgICAgICJwYXRoIjogIlNLSUxMLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2Ojg4Yjc2YzA4YmE2MzAzYmFiNmFhNmMyYTZmNzcxNjU4ZWRkYjA3ZDk3MmNlM2Y5NzQzMDViNTI3MDhhODlmMjIiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJmdW5jdGlvbnMvYnVuZGxlLmpzIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjZkMDU3MWJiM2ExZWQ1Njk0YzMxMmNlNmUxNmY3NDQ0YTI3YTc1ZDQ3YmE3ODAzMTU3NTY4YTMxNDhkNmEzZmQiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJmdW5jdGlvbnMvcmVnaXN0cnkuanNvbiIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5NzE1NGEwNGEwMmZhNzExYzU1NTUzM2YzYWY5NjdjM2JjNWRiZTE1ZjRhZmQwMDEzZTdmY2YxNzcxMTJhNWU0IgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAib2JqZWN0cy9idW5kbGUuanMiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6NTQ1MDU5ODQ0OGQ2NzAzODdmYjkwNjJlMDI0MzlmNmFlMjIzYTYxNWU4MDVmNzgwNzk0N2FhN2E1ZmI1Njc4OSIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm9iamVjdHMvcmVnaXN0cnkuanNvbiIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjpjOTUzYWEyOWFjOTY0Y2E1N2RkODZlZWZkMmZmMDkzOGZkMTQ2N2M3ZDNjMGE0NmRmYWJmMTYxMjhmNjhkODA5IgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZG9jdW1lbnRzLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OmE2NDI3YjMyMGU2Zjk4NmM0MzRhODZmMzFjZDI2NWI2NmUyNWIzMDk3NTNkMmRhMTk0YmQ0OTM1YWFiM2NlMzkiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9mdW5jdGlvbi54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6Y2FjOTZjNDdiMThmMGMyZWFiNTFiODU2MTdhZTFiMTM1OGU1ZWRiNTdjYWNkOTQzYmRiOTE0OTVmZmZjZDk5YyIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL2luZGV4Lm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjFhYWRiOTAxODllZGY2MTEyNjZlYTI3MTNlYWU2MGNiOGYxOTMyYjE4YmVlMGU2MThjYWZhZmY5OWViMjUyOGYiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9raW5kLWRlZmluaXRpb24ueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjRhYjA3NTM5OGE1NDAyZGUzNDQ3OWY2MmY2ODhjNmJhMzU0NmU0MWQ2MjJhYjQzYjMzNWFjZTNiNGFjOThmNTgiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9yZXNvdXJjZS1tYXBwaW5ncy54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6MTg2MGVmOTY5YWExY2VkZjg2YzlmZTVkMGVmNDkzY2QwZGExZjI4NTk5MTUyOGVmYmNiYzUxZWUxMTc5ZTk0NCIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3Jlc291cmNlLXBhY2thZ2UueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjYxYmZlYzRjZmQ4OTcwNjQ5Mzg5NzVlMzFlNmZhYThjOGI5MWRkYzEyNzVhZDFhODFkZDg3M2Q5YjU2MTI1YjUiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9za2lsbC1jYXBzdWxlLWF1dGhvcmluZy54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6OTZlMWQxYzRlMjRkNzQyODUzYTYwMTU5NDQ3NDhlMzc2NTNmMDE3NTEyNTViOWNmZjliMmJhNTQzYzQ3YjlhYyIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3NraWxsLWNhcHN1bGUtZGV2b3BzLnhubCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5YTdmMmY4MzAxYTBjOGNhYWI4NmQzNjRkNWY4NGI5NzgwN2NhYTMxYzQzZWUxOTcxNjk2MmM4NzcwY2MzNjVjIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZXhhbXBsZXMvc2tpbGwtY2Fwc3VsZS1raW5kLWRlZmluaXRpb24ueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjI2ZTUzNTgxNjcwOWY4ZThjMmJkZTczOTJkMTRhYTY5NWU0ODM5ZTNhMmZlZjBmZWEwNDQ1MTA3ZThmNWEwZWEiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9za2lsbC1jYXBzdWxlLXJlc291cmNlLWRzbC54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6YzM2Y2IyZTlhY2Y5N2MyOGI1NWYxZWZkM2JiY2E4NDZiNmZiMmQ3M2ZlNGUxNTM2NzhkZmJmZDcwNTM4MmYxNSIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3NraWxsLWNhcHN1bGUtcnVuLnhubCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjphM2RkMTU2MzA3NTNjOTg0Y2QzMjM1YzZmMzQyODY3NjFhOGI3OGE4YzRiNzgxYzQwNzE5ZjNkYjY5ZTgyYjQxIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZmlsZXMubWQiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6NjQyYWY1ZGNiZmZhMDYxMTI4NzZmNjU0YjRjZDVlN2U4NjQ5ODE2NzQ4NGZkNDJjOTRjZjI1ZDE3MzllMmU5NSIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2luZGV4Lm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjE3YTg3YWFmNzczM2M2NDU3OWQ4MDEzNGE2NzAyOTlmNTRiYTQ0NjZlZGY5NDYwZWE3ZTJiNGZhMDkxNDIzYjMiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9sYW5ndWFnZS5tZCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5NWNlOTQ4NjAxZTM3ZWZmMGI4MDBhNmE2MDUxZTMyOTYxMmQxZjliY2U3NjczMGU1NzUxM2IwYzQ1NDc1MWMwIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvbWlncmF0aW9uLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OmVhOTc4ZmEyZmU1ZjU3ZDM5ZTBkYmRiOWUwNWIzNTc5OTM0NTFmM2YyYWI4NDQ3Y2I1YjZmYzE3Mzg5Mzg3Y2EiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9wcm9qZWN0aW9ucy5tZCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjpjYjA5YzQ0YTMxNWZkZDc3ZjdlZWI0ZDFlZWU5NjU1OTRmNWYwMmZkYTVhNmRlYTk3ZWE4MGZkOTViNjIzOWQwIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvc2tpbGwtY2Fwc3VsZXMubWQiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6Y2VhYTA3NzYxZWM1NDA1NzE2ZGMxYjJmZWExZTVmOTU1M2M1OWM5NDA0ZGEwODYwYjIzNjk4NjEwYzFjNDE0NCIKICAgIH0KICBdCn0K"
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
"skillFqn": "Halfcode.ResourceDsl.Skill.System",
|
|
@@ -81,8 +81,8 @@ const projection = {
|
|
|
81
81
|
"skillVersion": "1.0.0",
|
|
82
82
|
"capsuleRelativePath": "references/resource-dsl/documents.md",
|
|
83
83
|
"targetRelativePath": "sys-halfcode-resource-dsl/references/resource-dsl/documents.md",
|
|
84
|
-
"contentDigest": "sha256:
|
|
85
|
-
"contentBase64": "IyBkb2N1bWVudHMKCjxmcW4+SGFsZmNvZGUuUmVzb3VyY2VEc2wuV2lraS5kb2N1bWVudHM8L2Zxbj4KPGtpbmQ+V2lraVBhZ2U8L2tpbmQ+CjxkZXNjcmlwdGlvbj5SZXNvdXJjZSBkb2N1bWVudHMsIHBhY2thZ2UgY2F0YWxvZ3MgYW5kIEtpbmREZWZpbml0aW9uIGNvbnRyYWN0cy48L2Rlc2NyaXB0aW9uPgoKIyBSZXNvdXJjZSBEb2N1bWVudCBGYW1pbGllcwoKIyMgUmVzb3VyY2VQYWNrYWdlIOS4jiBDYXRhbG9ncwoK5LiA5LiqIHBhY2thZ2Ug5pyJ5LiU5Y+q5pyJ5LiA5LiqIGBSZXNvdXJjZVBhY2thZ2VgIGF1dGhvcml0eSByb29044CC5a6D5oul5pyJ5ZSv5LiAIGBDYXRhbG9nc2Ag5a2Q5Z+f77yb5q+P5LiqIGBDYXRhbG9nYCDlo7DmmI7kuIDnp43otYTmupDnmoTpgLvovpHmoLnkuI7nm67lvZXlhaXlj6PvvJoKCmBgYHhubAo8UmVzb3VyY2VQYWNrYWdlICNkZW1vLnJlc291cmNlX3dvcmtmbG93LmF1dGhvcmluZyBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIkFjdGl2ZSIKICBkZXNjcmlwdGlvbiA9ICJEZW1vIGF1dGhvcmluZyByZXNvdXJjZSBwYWNrYWdlIgp9ICgKICA8Q2F0YWxvZ3MgWwogICAgPENhdGFsb2cgI2tpbmRfZGVmaW5pdGlvbnMgewogICAgICBraW5kID0gIktpbmREZWZpbml0aW9uIgogICAgICBzaGFwZSA9ICJkaXJlY3RvcnkiCiAgICAgIHJvb3QgPSAidmZzOi8vLi9LaW5kRGVmaW5pdGlvbnMvIgogICAgICBlbnRyeSA9ICJtYW5pZmVzdC54bmwiCiAgICB9PgogICAgPENhdGFsb2cgI2Z1bmN0aW9ucyB7CiAgICAgIGtpbmQgPSAiRnVuY3Rpb24iCiAgICAgIHNoYXBlID0gImRpcmVjdG9yeSIKICAgICAgcm9vdCA9ICJ2ZnM6Ly8uL0Z1bmN0aW9ucy8iCiAgICAgIGVudHJ5ID0gIm1hbmlmZXN0LnhubCIKICAgIH0+CiAgXT4KKT4KYGBgCgpjYXRhbG9nIOWPquaPj+i/sOe7hOe7h++8jOS4jeWkjeWItuavj+S4qiBkZXNjcmlwdG9yIOeahOWGheWuueOAgmBzaGFwZWAg5Y+
|
|
84
|
+
"contentDigest": "sha256:a6427b320e6f986c434a86f31cd265b66e25b309753d2da194bd4935aab3ce39",
|
|
85
|
+
"contentBase64": "IyBkb2N1bWVudHMKCjxmcW4+SGFsZmNvZGUuUmVzb3VyY2VEc2wuV2lraS5kb2N1bWVudHM8L2Zxbj4KPGtpbmQ+V2lraVBhZ2U8L2tpbmQ+CjxkZXNjcmlwdGlvbj5SZXNvdXJjZSBkb2N1bWVudHMsIHBhY2thZ2UgY2F0YWxvZ3MgYW5kIEtpbmREZWZpbml0aW9uIGNvbnRyYWN0cy48L2Rlc2NyaXB0aW9uPgoKIyBSZXNvdXJjZSBEb2N1bWVudCBGYW1pbGllcwoKIyMgUmVzb3VyY2VQYWNrYWdlIOS4jiBDYXRhbG9ncwoK5LiA5LiqIHBhY2thZ2Ug5pyJ5LiU5Y+q5pyJ5LiA5LiqIGBSZXNvdXJjZVBhY2thZ2VgIGF1dGhvcml0eSByb29044CC5a6D5oul5pyJ5ZSv5LiAIGBDYXRhbG9nc2Ag5a2Q5Z+f77yb5q+P5LiqIGBDYXRhbG9nYCDlo7DmmI7kuIDnp43otYTmupDnmoTpgLvovpHmoLnkuI7nm67lvZXlhaXlj6PvvJoKCmBgYHhubAo8UmVzb3VyY2VQYWNrYWdlICNkZW1vLnJlc291cmNlX3dvcmtmbG93LmF1dGhvcmluZyBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIkFjdGl2ZSIKICBkZXNjcmlwdGlvbiA9ICJEZW1vIGF1dGhvcmluZyByZXNvdXJjZSBwYWNrYWdlIgp9ICgKICA8Q2F0YWxvZ3MgWwogICAgPENhdGFsb2cgI2tpbmRfZGVmaW5pdGlvbnMgewogICAgICBraW5kID0gIktpbmREZWZpbml0aW9uIgogICAgICBzaGFwZSA9ICJkaXJlY3RvcnkiCiAgICAgIHJvb3QgPSAidmZzOi8vLi9LaW5kRGVmaW5pdGlvbnMvIgogICAgICBlbnRyeSA9ICJtYW5pZmVzdC54bmwiCiAgICB9PgogICAgPENhdGFsb2cgI2Z1bmN0aW9ucyB7CiAgICAgIGtpbmQgPSAiRnVuY3Rpb24iCiAgICAgIHNoYXBlID0gImRpcmVjdG9yeSIKICAgICAgcm9vdCA9ICJ2ZnM6Ly8uL0Z1bmN0aW9ucy8iCiAgICAgIGVudHJ5ID0gIm1hbmlmZXN0LnhubCIKICAgIH0+CiAgXT4KKT4KYGBgCgpjYXRhbG9nIOWPquaPj+i/sOe7hOe7h++8jOS4jeWkjeWItuavj+S4qiBkZXNjcmlwdG9yIOeahOWGheWuueOAgmBzaGFwZWAg5Y+WIGBzaW5nbGUtZmlsZXxkaXJlY3Rvcnl8bWFuaWZlc3R8Y29kZS1wYWNrYWdlYO+8m+WQjuS4ieiAheW/hemhu+WjsOaYjuebruW9leWFpeWPoyBgZW50cnlg44CCYHNpbmdsZS1maWxlYCDnvLrnnIHmiavmj48gYHJvb3RgIOS4i+WFqOmDqCBgLnhubGAg5LiOIGAubWRgIOaWh+S7tu+8jOS5n+WPr+S7peeUqOWPr+mAiSBgZW50cnkgPSAiPG5hbWU+LnhubHw8bmFtZT4ubWQiYCDnsr7noa7pgInmi6nlkIznm67lvZXkuK3nmoTkuIDkuKogYXV0aG9yaXR5IOaWh+S7tuOAglhOTCDnlKjmoLkgdGFnL2AjaWRgIOehruiupCBraW5kL2lkZW50aXR577ybTWFya2Rvd24g55So5paH5Lu25byA5aS055qEIFlBTUwgZnJvbnRtYXR0ZXIgYGtpbmRgIOS4jiBgbWV0YWRhdGEuZnFuYCDnoa7orqTvvIzlrozmlbTmlofku7YgYnl0ZXMg5piv5YaF5a656Lqr5Lu9IGF1dGhvcml0eeOAggoKIyMgS2luZERlZmluaXRpb24KCmBLaW5kRGVmaW5pdGlvbmAg5aOw5piOIHNvdXJjZSBzaGFwZSDkuI4gZGVzY3JpcHRvciBjb250cmFjdO+8mgoKYGBgeG5sCjxLaW5kRGVmaW5pdGlvbiAjaGFsZmNvZGUucmVzb3VyY2Vfa2luZC5GdW5jdGlvbiBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIlN0YWJsZSIKICBzb3VyY2VTaGFwZXMgPSBbInNpbmdsZS1maWxlIiAiZGlyZWN0b3J5Il0KICBjdXJyZW50QXBpVmVyc2lvbiA9ICJoYWxmY29kZS5yZXNvdXJjZXMvdjEiCiAgc3VwcG9ydGVkQXBpVmVyc2lvbnMgPSBbImhhbGZjb2RlLnJlc291cmNlcy92MSJdCn0gKAogIDxEZXNjcmlwdG9yQ29udHJhY3QgKAogICAgPElkZW50aXR5IHsgcmVxdWlyZWQgPSB0cnVlIGZvcm0gPSAiZnFuIiB9PgogICAgPENvZGVCaW5kaW5nIHsgcHJvcGVydHkgPSAic3JjIiBzY2hlbWUgPSAidmZzIiBleHBvcnRGcmFnbWVudFJlcXVpcmVkID0gdHJ1ZSB9PgogICAgPEluc3RydWN0aW9uIHsgcmVxdWlyZWQgPSBmYWxzZSBzb3VyY2UgPSAiaW5saW5lLW9yLXZmcyIgfT4KICApPgopPgpgYGAKCmBjdXJyZW50QXBpVmVyc2lvbmAg5piv5paw6LWE5rqQ5ZKM6L+B56e755uu5qCH54mI5pys77yMYHN1cHBvcnRlZEFwaVZlcnNpb25zYCDmmK8gbG9hZGVyIOWPr+ebtOaOpeivu+WPlueahOWFvOWuuembhuWQiO+8jOS4lOW/hemhu+WMheWQqyBjdXJyZW5044CC5pyq55+l54mI5pys5b+F6aG75YWI57uP6L+H6LCD55So5pa55Zyo5Luj56CB5L6n5rOo5YaM55qE56Gu5a6a5oCnIG1pZ3JhdGlvbu+8jOWGjeS6pOe7mSBsb2FkZXLvvJvlj6/miafooYzovazmjaLkuI3lhpnlhaUgWE5M44CCCgpgZG9jdW1lbnRDYXJkaW5hbGl0eWAg57y655yB5Li6IGAib25lImDjgILlj6rmnIkgYHNvdXJjZVNoYXBlcyA9IFsic2luZ2xlLWZpbGUiXWAg55qEIEtpbmQg5Y+v5Lul5aOw5piOIGBkb2N1bWVudENhcmRpbmFsaXR5ID0gIm1hbnkiYO+8jOihqOekuuS4gOS4qiBhdXRob3JpdHkg5paH5qGj5YWB6K645YyF5ZCr5aSa5Liq5bm25YiX55qE5ZCMIEtpbmQg5qC577yb5a6D5LiN5piv5a+55omA5pyJIFhOTCDmlofku7bmlL7lrr3moLnnuqbmnZ/jgIIKCktpbmQgY29udHJhY3Qg5Y+v5Lul5oyJ6Ieq6Lqr6K+t5LmJ57qm5p2fIGxpZmVjeWNsZeOAgWRlc2NyaXB0aW9u44CBaW5zdHJ1Y3Rpb27jgIFjb2RlIGJpbmRpbmcg5LiOIGluY2x1ZGVz77yb6ZmkIGAjaWRgIOWSjCBgYXBpVmVyc2lvbmAg5aSW77yM6L+Z5Lqb5a2X5q616YO95LiN5piv6YCa55SoIGxvYWRlciDlvLrliqDnu5nmiYDmnIkgS2luZCDnmoTlhbHlkIzopoHmsYLjgIIKCuWKoOi9veaIkOWKn+WQju+8jGNvbnN1bWVyIOS7jiBgUmVzb3VyY2VUcmVlLnJlZ2lzdHJ5LmtpbmREZWZpbml0aW9uc2Ag5oyJIGByZXNvdXJjZUtpbmRgIOWPluW+l+inhOiMg+WMliBjb250cmFjdOOAguivpSBwcm9qZWN0aW9uIOWMheWQqyB2ZXJzaW9u44CBc291cmNlIHNoYXBl44CBY2FyZGluYWxpdHnjgIFyZXF1aXJlZCBmaWxlcyDku6Xlj4ogS2luZERlZmluaXRpb24g6Ieq6Lqr55qEIGByZXNvdXJjZUlkYC9gZG9jdW1lbnRVcmlgIHByb3ZlbmFuY2XvvJtLaW5kRGVmaW5pdGlvbiDkuI3mt7flhaXkuJrliqHotYTmupDnmoQgYHJlZ2lzdHJ5LmJ5S2luZGDjgIIKCiMjIFJlc291cmNlIGRlc2NyaXB0b3IKCmRlc2NyaXB0b3Ig5qC5IHRhZyDnm7TmjqXkvb/nlKgga2luZO+8jGAjaWRgIOaYr+i1hOa6kCBGUU7jgILllK/kuIDmpoLlv7Xov5vlhaUgYCgpYO+8m+mHjeWkjeaIkOWRmOi/m+WFpSBgW11g77yaCgpgYGB4bmwKPEZ1bmN0aW9uICNkZW1vLnJlc291cmNlX3dvcmtmbG93LnByZXBhcmVfZGF0YSBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIkFjdGl2ZSIKICB0aXRsZSA9ICJQcmVwYXJlIHdvcmtmbG93IGRhdGEiCn0gKAogIDxJbnN0cnVjdGlvbiA/aW5zdHJ1Y3Rpb24+CiAg5o6l5pS26L6T5YWl5bm25Lqn55Sf5LiL5ri4IHByb2NlZHVyZSDmiYDpnIDnmoTop4TojIPmlbDmja7jgIIKICA8Lz9pbnN0cnVjdGlvbj4KICA8Q29kZUJpbmRpbmcgewogICAgc3JjID0gInZmczovL0AvYXBwcy9kZW1vLXJlc291cmNlLXdvcmtmbG93LWF1dGhvcmluZy9zcmMvcHJvY2VkdXJlcy50cyNwcmVwYXJlUHJvY2VkdXJlIgogIH0+Cik+CmBgYAoK6YCa55So6LWE5rqQ5aSW5aOz5Y+q6KeE5a6aIGlkZW50aXR544CBbWV0YWRhdGEgY2hhbm5lbOOAgW1lbWJlcnMvc3ViZG9tYWlucyDlkowgcHJvdmVuYW5jZeOAguWQhCBLaW5kIOeahOeos+WumumihuWfn+Wtl+auteWPiuWFtiByZXF1aXJlZG5lc3Mg55Sx5a+55bqUIGBLaW5kRGVmaW5pdGlvbmAg5oiWIGNvbnN1bWVyIGNvbnRyYWN0IOaUtueqhO+8m+e8uuWkseeahOWPr+mAieWtl+auteS4jeS8muiiq+Whq+aIkOepuuWtl+espuS4suOAggoK5paH5pys6LWE5rqQ5Y+v5Lul55u05o6l5L2/55SoIE1hcmtkb3duIOWNleaWh+S7tiBhdXRob3JpdHnvvIzml6DpnIDphY3lr7kgWE5MIGRlc2NyaXB0b3LvvJoKCmBgYG1hcmtkb3duCi0tLQphcGlWZXJzaW9uOiBkZW1vLnJlc291cmNlcy92MQpraW5kOiBBcHBsaWNhdGlvblNPUAptZXRhZGF0YToKICBmcW46IERlbW8uQXBwbGljYXRpb25TT1AuU2VhcmNoCiAgdmVyc2lvbjogMS4wLjAKc3BlYzoKICBkZXNjcmlwdGlvbjog5omn6KGM5pCc57Si5bm26L+U5Zue57uT5p6E5YyW57uT5p6cCi0tLQoK6L+Z6YeM5pivIFNPUCDmraPmlofjgIIKYGBgCgpmcm9udG1hdHRlciDlj6rop4TojIPljJYgaWRlbnRpdHnjgIFtZXRhZGF0YSDkuI4gSlNPTi1jb21wYXRpYmxlIGBzcGVjYO+8m+ato+aWh+S4jeS8muiiq+ino+mHiuS4uiBkZXBlbmRlbmN5IOaIlumineWkliBtZXRhZGF0YeOAggoKYGNvZGUtcGFja2FnZWAgZGVzY3JpcHRvciDov5jlv4Xpobvlo7DmmI4gYGVudHJ5YCDkuI4gYHJ1bnRpbWVg77yM5bm25L+d55WZ5pi+5byPIENvZGVCaW5kaW5n77yaCgpgYGB4bmwKPENvZGVQYWNrYWdlICNkZW1vLmNvZGVfcGFja2FnZS5mdW5jdGlvbnMgYXBpVmVyc2lvbj0iaGFsZmNvZGUucmVzb3VyY2VzL3YxIiB2ZXJzaW9uPSIxLjAuMCIgewogIGVudHJ5ID0gImJ1bmRsZS9pbmRleC5qcyIKICBydW50aW1lID0gImJ1biIKfSAoCiAgPENvZGVCaW5kaW5nIHsgbW9kdWxlID0gInZmczovLy4vYnVuZGxlL2luZGV4LmpzIiB9PgopPgpgYGAKCmBlbnRyeWAg5b+F6aG75pivIHBhY2thZ2UtbG9jYWwgYC5qc3wubWpzYCDnm7jlr7not6/lvoTvvIzlubbkuI4gYENvZGVCaW5kaW5nLm1vZHVsZWAg57K+56Gu5LiA6Ie077ybYHJ1bnRpbWVgIOaYr+mdnuepuiB0YXJnZXQtbmV1dHJhbCBydW50aW1lIGlkZW50aWZpZXLjgIIKCuWFgeiuuCBmb3Jlc3Qg55qEIEtpbmQg5LuN6YCQ5qC55omn6KGM5ZCM5qC355qEIGtpbmTjgIFpZGVudGl0eSDkuI4gYGFwaVZlcnNpb25gIOagoemqjOOAguS+i+WmgiBEZWNpc2lvbiBLaW5kIOWPr+S7peaYvuW8j+WjsOaYju+8mgoKYGBgeG5sCjxLaW5kRGVmaW5pdGlvbiAjY29kdW1lbnQucmVzb3VyY2Vfa2luZC5EZWNpc2lvbiBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIlN0YWJsZSIKICBzb3VyY2VTaGFwZXMgPSBbInNpbmdsZS1maWxlIl0KICBjdXJyZW50QXBpVmVyc2lvbiA9ICJjb2R1bWVudC50ZWNoL3YxYWxwaGExIgogIHN1cHBvcnRlZEFwaVZlcnNpb25zID0gWyJjb2R1bWVudC50ZWNoL3YxYWxwaGExIl0KICBkb2N1bWVudENhcmRpbmFsaXR5ID0gIm1hbnkiCn0+CmBgYAoK5a+55bqUIGF1dGhvcml0eSDmlofku7blj6/ku6XmnInlpJrkuKrlubbliJcgYDxEZWNpc2lvbiAuLi4+YCDmoLnjgILmr4/kuKrmoLnlvZLkuIDljJbkuLrni6znq4sgcmVzb3VyY2UgcmVjb3Jk77yM5bm25YWx5Lqr6K+l5paH5Lu255qEIGBkb2N1bWVudFVyaWAgcHJvdmVuYW5jZe+8m+mHjeWkjSBgI2lkYOOAgea3t+WQiOaguSBraW5kIOaIluS4jeWPl+aUr+aMgeeahOeJiOacrOS7jeaYr+mUmeivr+OAggoKIyMgUmVzb3VyY2VNYXBwaW5ncwoKbWFwcGluZyDmoLnmi6XmnInlpJrkuKrllK/kuIAgY29sbGVjdGlvbiBzdWJkb21haW7vvJtjb2xsZWN0aW9uIOeahCBgW11gIOaJv+i9vemHjeWkjeadoeebru+8mgoKYGBgeG5sCjxSZXNvdXJjZU1hcHBpbmdzICNkZW1vLnJlc291cmNlX3dvcmtmbG93Lm1hcHBpbmdzIGFwaVZlcnNpb249ImhhbGZjb2RlLnJlc291cmNlcy92MSIgdmVyc2lvbj0iMS4wLjAiICgKICA8UmVmZXJlbmNlVGFyZ2V0cyBbCiAgICA8UmVmZXJlbmNlVGFyZ2V0ICNmdW5jdGlvbl9kZXBlbmRlbmN5IHsKICAgICAgZnJvbUtpbmQgPSAiRnVuY3Rpb24iCiAgICAgIGZpZWxkID0gImRlcGVuZHNPbiIKICAgICAgdGFyZ2V0S2luZCA9ICJGdW5jdGlvbiIKICAgIH0+CiAgXT4KICA8Q2FsbGFibGVBcnRpZmFjdHMgWwogICAgPENhbGxhYmxlQXJ0aWZhY3QgI2Z1bmN0aW9uX2NhbGxhYmxlIHsKICAgICAga2luZCA9ICJGdW5jdGlvbiIKICAgICAgYmluZGluZyA9ICJDb2RlQmluZGluZy5zcmMiCiAgICB9PgogIF0+CiAgPFNvdXJjZVJvb3RzIFsKICAgIDxTb3VyY2VSb290ICNhdXRob3JpbmcgewogICAgICB1cmkgPSAidmZzOi8vQC9hcHBzL2RlbW8tcmVzb3VyY2Utd29ya2Zsb3ctYXV0aG9yaW5nL3Jlc291cmNlcy8iCiAgICB9PgogIF0+Cik+CmBgYAoKbWFwcGluZyBrZXkg5piv5pi+5byP5bGe5oCn5oiWIGAjaWRg77yM5LiN5b6X5oqK55So5oi35pWw5o2u5Yqo5oCB5ou86L+bIHRhZyDlkI3jgIIK"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"skillFqn": "Halfcode.ResourceDsl.Skill.System",
|
|
@@ -180,8 +180,8 @@ const projection = {
|
|
|
180
180
|
"skillVersion": "1.0.0",
|
|
181
181
|
"capsuleRelativePath": "references/resource-dsl/files.md",
|
|
182
182
|
"targetRelativePath": "sys-halfcode-resource-dsl/references/resource-dsl/files.md",
|
|
183
|
-
"contentDigest": "sha256:
|
|
184
|
-
"contentBase64": "IyBmaWxlcwoKPGZxbj5IYWxmY29kZS5SZXNvdXJjZURzbC5XaWtpLmZpbGVzPC9mcW4+CjxraW5kPldpa2lQYWdlPC9raW5kPgo8ZGVzY3JpcHRpb24+UmVzb3VyY2Ugc291cmNlIHNoYXBlcywgVkZTIGNvbnRhaW5tZW50IGFuZCBmaWxlIHByb3ZlbmFuY2UuPC9kZXNjcmlwdGlvbj4KCiMgRmlsZXMgQW5kIEJ1bmRsZXMKCiMjIOWGheWuueS4uuecn+a6kAoKa2luZCDkuI4gaWRlbnRpdHkg5p2l6Ieq5paH5Lu25qC5IHRhZyDlkowgYCNpZGDjgILnm67lvZXlkI3jgIHmlofku7blkI3lkowgY2F0YWxvZyDot6/lvoTlj6rmmK/luIPlsYDvvJvmiavmj4/lmajkuI3lvpfpgJrov4flkI7nvIDmiJbnm67lvZXlkI3ooaXlhpnotYTmupDor63kuYnjgIIKCiMjIOS4pOenjeWumuS5ieW9ouaAgQoKLSDljZXmlofku7YgZGVmaW5pdGlvbu+8muS7u+aEj+aPj+i/
|
|
183
|
+
"contentDigest": "sha256:642af5dcbffa06112876f654b4cd5e7e86498167484fd42c94cf25d1739e2e95",
|
|
184
|
+
"contentBase64": "IyBmaWxlcwoKPGZxbj5IYWxmY29kZS5SZXNvdXJjZURzbC5XaWtpLmZpbGVzPC9mcW4+CjxraW5kPldpa2lQYWdlPC9raW5kPgo8ZGVzY3JpcHRpb24+UmVzb3VyY2Ugc291cmNlIHNoYXBlcywgVkZTIGNvbnRhaW5tZW50IGFuZCBmaWxlIHByb3ZlbmFuY2UuPC9kZXNjcmlwdGlvbj4KCiMgRmlsZXMgQW5kIEJ1bmRsZXMKCiMjIOWGheWuueS4uuecn+a6kAoKa2luZCDkuI4gaWRlbnRpdHkg5p2l6Ieq5paH5Lu25qC5IHRhZyDlkowgYCNpZGDjgILnm67lvZXlkI3jgIHmlofku7blkI3lkowgY2F0YWxvZyDot6/lvoTlj6rmmK/luIPlsYDvvJvmiavmj4/lmajkuI3lvpfpgJrov4flkI7nvIDmiJbnm67lvZXlkI3ooaXlhpnotYTmupDor63kuYnjgIIKCiMjIOS4pOenjeWumuS5ieW9ouaAgQoKLSDljZXmlofku7YgZGVmaW5pdGlvbu+8muS7u+aEj+aPj+i/sOaApyBgLnhubGAg5oiWIGAubWRgIOaWh+S7tuWQje+8m1hOTCDmlofku7blhoXmnInkuIDkuKror63kuYnmoLnvvIxNYXJrZG93biDnlLEgZnJvbnRtYXR0ZXIg5aOw5piOIEtpbmQvRlFOIOW5tueUseato+aWh+aJv+i9veaWh+acrOWGheWuueOAggotIOebruW9lSBidW5kbGXvvJrlhaXlj6Plm7rlrprkuLogYG1hbmlmZXN0LnhubGDvvIzln5/mlofku7bkvb/nlKjmj4/ov7DmgKcgYC54bmxgIOaWh+S7tuWQjeOAggoK55uu5b2VIGJ1bmRsZSDnpLrkvovvvJoKCmBgYHRleHQKRnVuY3Rpb25zLwogIFByZXBhcmVEYXRhLwogICAgbWFuaWZlc3QueG5sICAgICAgICMgPEZ1bmN0aW9uICNkZW1vLnJlc291cmNlX3dvcmtmbG93LnByZXBhcmVfZGF0YSAuLi4+CiAgICBpbnN0cnVjdGlvbi5tZCAgICAgIyBDb2RlQmluZGluZy9JbnN0cnVjdGlvbiDlvJXnlKjnmoQgbWF0ZXJpYWwKYGBgCgpgbWFuaWZlc3QueG5sYCDnmoTmoLnlhrPlrpogYnVuZGxlIGtpbmQg5LiOIGlkZW50aXR544CC54us56uL5a2Q5Z+f5Y+v5Lul5LuOIG1hbmlmZXN0IOeahCBgKClgIOWOn+agt+WkluaPkOS4uuWQjOWei+Wfn+aWh+S7tu+8m+WkluaPkOS4jeaUueWPmCBsb2dpY2FsIHJlZnPjgIIKCiMjIOWNleaWh+S7tiBmb3Jlc3QKCuWNleaWh+S7tum7mOiupOWPquacieS4gOS4quivreS5ieagueOAguS7heW9k+WvueW6lCBgS2luZERlZmluaXRpb25gIOWQjOaXtuWjsOaYjiBgc291cmNlU2hhcGVzID0gWyJzaW5nbGUtZmlsZSJdYCDkuI4gYGRvY3VtZW50Q2FyZGluYWxpdHkgPSAibWFueSJgIOaXtu+8jOWQjOS4gOS4qiBgLnhubGAgYXV0aG9yaXR5IOaWh+S7tuaJjeWPr+S7peWMheWQq+WkmuS4quW5tuWIl+agueOAggoKZm9yZXN0IOeahOavj+S4quagueaYr+eLrOeri+i1hOa6kO+8jOW/hemhu+S9v+eUqOWQjOS4gCBLaW5k77yM5YW35pyJ54us56uLIGAjaWRg77yM5bm26YCa6L+H6K+lIEtpbmQg55qE54mI5pys5aWR57qm44CCYFJlc291cmNlUGFja2FnZWDjgIFjYXRhbG9n44CBS2luZERlZmluaXRpb24g5LiO55uu5b2VIGJ1bmRsZSDlhaXlj6Plp4vnu4jkv53mjIHljZXmoLnjgIIKCiMjIFByb3ZlbmFuY2Ug5LiOIGxvZ2ljYWwgcGF0aAoKbG9hZGVyIOS4uuavj+S4qiBub3JtYWxpemVkIGRlc2NyaXB0b3Ig6ZmE5Yqg5Y+q6K+7IHByb3ZlbmFuY2XvvJoKCi0gYGRvY3VtZW50VXJpYO+8muWKoOi9vSBhdXRob3JpdHkg5paH5qGj55qEIGNhbm9uaWNhbCBWRlMgVVJJ77ybCi0gYGxvZ2ljYWxQYXRoYO+8muebuOWvuSBwYWNrYWdlIGNhdGFsb2cgcm9vdCDnmoTpgLvovpHot6/lvoTvvJsKLSBgcGFja2FnZUlkYO+8muS7jiBgUmVzb3VyY2VQYWNrYWdlICNpZGAg5rS+55Sf77ybCi0gYHJlc291cmNlSWRg77ya5p2l6IeqIGRlc2NyaXB0b3Ig5qC5IGAjaWRg44CCCgrov5nkupvlrZfmrrXnlLEgbG9hZGVyIOaLpeacie+8jGF1dGhvciDkuI3lnKggZGVzY3JpcHRvciDkuK3ph43lpI3phY3nva7jgIJjb25zdW1lciDlj6/ku6XorrDlvZUgcHJvdmVuYW5jZSDnlKjkuo7or4rmlq3vvIzkvYbkuI3lvpfkv67mlLnlkI7lj43lhpkgWE5M44CCCgojIyDmiavmj4/ovrnnlYwKCi0g6buY6K6k55uu5b2V5YWl5Y+j5LuF5Li6IGBtYW5pZmVzdC54bmxg44CCCi0gYHNpbmdsZS1maWxlYCBjYXRhbG9nIOe8uuecgeaJq+aPjyByb290IOS4i+WFqOmDqCBgLnhubGAg5LiOIGAubWRg77yb5aOw5piOIGBlbnRyeSA9ICJuYW1lLnhubHxuYW1lLm1kImAg5pe25Y+q5Yqg6L296K+l5paH5Lu277yM5L6/5LqO5aSa5Liq5LiN5ZCMIEtpbmQg5YWx55So5LiA5Liq54mp55CG55uu5b2V44CCCi0g6Z2e5YWl5Y+jIGAueG5sYCDmlofku7blj6rog73kvZzkuLrmmL7lvI/ln58v54mp5paZ6KKr5YWl5Y+j5byV55So77yM5LiN6IO96KKr6YeN5aSN5rOo5YaM5Li656ys5LqM6LWE5rqQ44CCCi0g5aSa5qC55paH5qGj5b+F6aG755SxIEtpbmREZWZpbml0aW9uIOaYvuW8j+aOiOadg++8m2xvYWRlciDkuI3moLnmja7mlofku7blkI3miJbmoLnmlbDph4/njJzmtYsgZm9yZXN0IOivreS5ieOAggotIGNhdGFsb2cgcm9vdCDlv4XpobvmmK8gYHZmczovL2AgVVJJ44CCCi0gcmVzb3VyY2UtY29yZSDotJ/otKMgVVJJIOino+aekOOAgei+ueeVjOajgOafpeWSjOmHjeWkjSBpZGVudGl0eSDor4rmlq3vvJtjb25zdW1lciDkuI3oh6rooYzmiavmj4/no4Hnm5jjgIIK"
|
|
185
185
|
},
|
|
186
186
|
{
|
|
187
187
|
"skillFqn": "Halfcode.ResourceDsl.Skill.System",
|
|
@@ -229,10 +229,10 @@ const projection = {
|
|
|
229
229
|
"contentBase64": "IyBza2lsbC1jYXBzdWxlcwoKPGZxbj5IYWxmY29kZS5SZXNvdXJjZURzbC5XaWtpLnNraWxsLWNhcHN1bGVzPC9mcW4+CjxraW5kPldpa2lQYWdlPC9raW5kPgo8ZGVzY3JpcHRpb24+U2tpbGxDYXBzdWxlIGRlcGVuZGVuY2llcywgZGV0ZXJtaW5pc3RpYyBwbGFucyBhbmQgYXRvbWljIGRpc3RyaWJ1dGlvbi48L2Rlc2NyaXB0aW9uPgoKIyBTa2lsbENhcHN1bGUgRGVwZW5kZW5jaWVzIEFuZCBEaXN0cmlidXRpb24KCiMjIElkZW50aXR5IGF1dGhvcml0eQoK5paw55qEIGBTa2lsbENhcHN1bGVgIGRlc2NyaXB0b3Ig55SxIFhOTCDmoLnoioLngrnni6zljaAgRlFO44CBY29uc3VtZXItZmFjaW5nIGBuYW1lYOOAgWBhcGlWZXJzaW9uYCDkuI4gYHZlcnNpb25g44CCYFNLSUxMLm1ldGFkYXRhLnlhbWxgIOWPquS/neWtmCB0aXRsZS9kZXNjcmlwdGlvbiDnrYnlkYjnjrDlrZfmrrXvvIzkuI3ph43lpI0gbmFtZS92ZXJzaW9u77ybYXNzZW1ibHkg5Lya5oqKIGNhbm9uaWNhbCBYTkwgbmFtZS92ZXJzaW9uIOaKleW9see7meaooeadv+OAguiLpSBkZXNjcmlwdG9yIOW3suWjsOaYjiBgbmFtZWAg6ICMIFlBTUwg5LuN6YeN5aSN6K+l5a2X5q6177yMYXNzZW1ibHkg5ZyoIGNvbXBpbGVyIOWGmeWFpeWJjeS7pSBgU0tJTExfQ0FQU1VMRV9OQU1FX0RVUExJQ0FURWAg5aSx6LSl44CC5Y6G5Y+yIGRlc2NyaXB0b3Ig5pyq5aOw5piOIFhOTCBuYW1lIOaXtu+8jOaXouaciSBZQU1MIG5hbWUg5LiOIEZRTiDlsL7mrrUgZmFsbGJhY2sg57un57ut5YW85a6577yb5paw6LWE5rqQ5LiN5b6X6YeH55So6K+l5YW85a656Lev5b6E44CCCgpYTkwgYHZlcnNpb25gIOS5n+aYryBjYXBzdWxlIGlkZW50aXR5IOS4jiBkZXBlbmRlbmN5IGJpbmRpbmcg55qE5ZSv5LiAIHZlcnNpb24gYXV0aG9yaXR544CC5Y6G5Y+yIFlBTUwg6Iul5LuN5bimIGB2ZXJzaW9uYO+8jOW/hemhu+S4jiBYTkwg5Lil5qC855u4562J77yM5ZCm5YiZIGFzc2VtYmx5IOS7pSBgU0tJTExfQ0FQU1VMRV9WRVJTSU9OX0NPTkZMSUNUYCDlpLHotKXjgIIKCmBgYHhubAo8U2tpbGxDYXBzdWxlICNleGFtcGxlLnJlc291cmNlX2xpZmVjeWNsZS5za2lsbC5hdXRob3JpbmcKICBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiCiAgdmVyc2lvbj0iMS4wLjAiIHsKICBuYW1lID0gImV4YW1wbGUtcmVzb3VyY2UtYXV0aG9yaW5nIgogIGRlc2NyaXB0aW9uID0gIkdlbmVyaWMgcmVzb3VyY2UgYXV0aG9yaW5nIG9wZXJhdGlvbnMuIgp9ICgKICA8U2tpbGxNZXRhZGF0YSB7IGhyZWYgPSAidmZzOi8vLi9TS0lMTC5tZXRhZGF0YS55YW1sIiBmb3JtYXQgPSAieWFtbCIgfT4KICA8VGVtcGxhdGUgeyBocmVmID0gInZmczovLy4vU0tJTEwudGVtcGxhdGUuZWpzIiBmb3JtYXQgPSAiZWpzIiB9PgopPgpgYGAKCuWvueW6lCBZQU1MIOWPquS/neWtmOWRiOeOsOWtl+aute+8mgoKYGBgeWFtbAp0aXRsZTogRXhhbXBsZSBSZXNvdXJjZSBBdXRob3JpbmcKZGVzY3JpcHRpb246IEdlbmVyaWMgcmVzb3VyY2UgYXV0aG9yaW5nIG9wZXJhdGlvbnMuCmBgYAoKIyMgYFNraWxsRGVwZW5kZW5jaWVzYCDkuI4gYEluY2x1ZGVzYAoK5Lik56eN5YWz57O75LiN5Y+v5LqS5o2i77yM5Lmf5LiN5YGa5ZCN56ew5oiW5paH5pys5o6o5pat77yaCgotIGBTa2lsbERlcGVuZGVuY2llcy9Ta2lsbERlcGVuZGVuY3lgIOWjsOaYjuWQjOS4gOS4qiBgQXBwbGljYXRpb25Bc3NlbWJseS5ieUZxbmAgcmVzb3VyY2UgdW5pdmVyc2Ug5Lit55qEIHNpYmxpbmcgYFNraWxsQ2Fwc3VsZWDjgIJgcmVmYCDlv4XpobvmmK8gYHJlc291cmNlOi8vPEZRTj5g77yM55uu5qCHIGtpbmQg5b+F6aG75pivIGBTa2lsbENhcHN1bGVg77yMYHZlcnNpb25gIOaYr+W/heWhq+eahOeyvuehriBiaW5kaW5n77yb5b2T5YmN54mI5pys5LiN6Kej6YeKIHNlbXZlciByYW5nZeOAggotIGBJbmNsdWRlcy9JbmNsdWRlYCDpgInmi6nopoHnvJblhaXlvZPliY0gY2Fwc3VsZSDnmoQgRnVuY3Rpb27jgIFQcm9tcHRGcmFnbWVudCDnrYnmma7pgJrotYTmupDjgILljbPkvr/kuIDkuKogSW5jbHVkZSDlhpnkuoYgYGtpbmQgPSAiU2tpbGxDYXBzdWxlImDvvIxwbGFubmVyIOS5n+S4jeS8muaKiuWug+aPkOWNh+S4uiBzaWJsaW5nIGRlcGVuZGVuY3njgIIKCmBgYHhubAo8U2tpbGxEZXBlbmRlbmNpZXMgWwogIDxTa2lsbERlcGVuZGVuY3kgewogICAgcmVmID0gInJlc291cmNlOi8vZXhhbXBsZS5yZXNvdXJjZV9saWZlY3ljbGUuc2tpbGwucmVzb3VyY2VfZHNsIgogICAgdmVyc2lvbiA9ICIxLjAuMCIKICB9PgpdPgo8SW5jbHVkZXMgWwogIDxJbmNsdWRlIHsKICAgIGtpbmQgPSAiUHJvbXB0RnJhZ21lbnQiCiAgICByZWYgPSAicmVzb3VyY2U6Ly9leGFtcGxlLnJlc291cmNlX2xpZmVjeWNsZS5wcm9tcHQuYXV0aG9yaW5nX3ByZWx1ZGUiCiAgfT4KXT4KYGBgCgrnvLrlpLHnm67moIfjgIHplJnor68ga2luZOOAgemHjeWkjSBkZXBlbmRlbmN544CB57K+56Gu54mI5pys5LiN5Yy56YWN5ZKMIGN5Y2xlIOmDveS8miBmYWlsIGNsb3NlZOOAguS+nei1luino+aekOWPquivu+WPluaXouaciSBhcHBsaWNhdGlvbiBhc3NlbWJsee+8jOS4jeWIm+W7uuesrOS6jOS7vSBjYXRhbG9nIOaIliBzY2FubmVy44CCCgojIyDlm5sgU2tpbGwgY2Fub25pY2FsIHRvcG9sb2d5Cgrop4TojIPnpLrkvovkvb/nlKjkuI7lhbfkvZPkuqflk4Hml6DlhbPnmoTlm5vkuKogU2tpbGzvvJoKCmBgYHRleHQKcmVzb3VyY2UgRFNMIC0+IGF1dGhvcmluZyAtPiBkZXZvcHMvcm9vdAogICAgICAgICAgICAgICAgICAgICAgICAgcnVuIC0+IGRldm9wcy9yb290CmBgYAoKLSBgZGV2b3BzL3Jvb3RgIOaYvuW8j+S+nei1liBgYXV0aG9yaW5nYCDkuI4gYHJ1bmDvvJsKLSBgYXV0aG9yaW5nYCDmmL7lvI/kvp3otZblhbHkuqsgYHJlc291cmNlIERTTGDvvJsKLSBgcnVuYCDkuI4gYHJlc291cmNlIERTTGAg5rKh5pyJIHNpYmxpbmcgZGVwZW5kZW5jeeOAggoK5a6M5pW0IGRlc2NyaXB0b3Ig5YiG5Yir5L2N5LqOIFtza2lsbC1jYXBzdWxlLWRldm9wcy54bmxdKGV4YW1wbGVzL3NraWxsLWNhcHN1bGUtZGV2b3BzLnhubCnjgIFbc2tpbGwtY2Fwc3VsZS1hdXRob3JpbmcueG5sXShleGFtcGxlcy9za2lsbC1jYXBzdWxlLWF1dGhvcmluZy54bmwp44CBW3NraWxsLWNhcHN1bGUtcnVuLnhubF0oZXhhbXBsZXMvc2tpbGwtY2Fwc3VsZS1ydW4ueG5sKSDlkowgW3NraWxsLWNhcHN1bGUtcmVzb3VyY2UtZHNsLnhubF0oZXhhbXBsZXMvc2tpbGwtY2Fwc3VsZS1yZXNvdXJjZS1kc2wueG5sKeOAguWPr+WKoOi9veOAgeWPr+inhOWIkueahCBidW5kbGUgZml4dHVyZSDkvY3kuo4gYGFwcHMvZGVtby1yZXNvdXJjZS13b3JrZmxvdy1hdXRob3JpbmcvcmVzb3VyY2VzLXhubC9Ta2lsbENhcHN1bGVzL1RvcG9sb2d5KmDjgILmiYDmnIkgY29uc3VtZXIgbmFtZSDkuI4gdmVyc2lvbiDpg73nlLEgWE5MIOWjsOaYju+8jGRlcGVuZGVuY3kg57uR5a6aIGAxLjAuMGDvvIxZQU1MIOS4jemHjeWkjSBpZGVudGl0eSDlrZfmrrXjgIIKCiMjIERldGVybWluaXN0aWMgcGxhbiDkuI4gYXRvbWljIGFwcGx5CgpgcGxhblNraWxsQ2Fwc3VsZURpc3RyaWJ1dGlvbmAg5LiOIGBhcHBseVNraWxsQ2Fwc3VsZURpc3RyaWJ1dGlvblBsYW5gIOaYr+S4pOS4queLrOeri+mYtuaute+8mgoKMS4gcGxhbm5lciDku47mmL7lvI8gcm9vdHMg6Kej5p6Q5Lyg6YCS6Zet5YyF77yM5oyJ5Zu65a6aIGNvZGUtdW5pdCDpobrluo/nlJ/miJAgZGVwZW5kZW5jeS1maXJzdCB0b3BvbG9nee+8mwoyLiBwbGFubmVyIOivu+WPluaJgOaciSBnZW5lcmF0ZWQvbWFwcGVkIGJ5dGVz77yM5bm25bCGIGNhbm9uaWNhbCBieXRlcyDkv53lrZjkuLrkuI3lj6/lj5jjgIHlj6/luo/liJfljJbnmoQgYGNvbnRlbnRCYXNlNjRgIGF1dGhvcml0ee+8m+WFvOWuueWtl+autSBgY29udGVudGAg5q+P5qyh6K+75Y+W5Y+q6L+U5Zue5paw55qEIGRlZmVuc2l2ZSBjb3B577ybCjMuIHBsYW5uZXIg5a+55omA5pyJ5Lya6L+b5YWlIFNLSUxML3JlZmVyZW5jZS9jYWxsYWJsZSBieXRlcyDnmoTotYTmupDpm4blkIjmjIkgRlFOIOS9v+eUqOWbuuWumiBVVEYtMTYgY29kZS11bml0IGNvbXBhcmF0b3Ig5o6S5bqP77yM5bm25a+55a6M5pW0IGNsb3N1cmUg5YGa6YeN5aSNIG91dHB1dCBuYW1l44CB55u45ZCMIHRhcmdldCDkuI7mlofku7Yv55uu5b2VIHByZWZpeCBjb2xsaXNpb24gcHJlZmxpZ2h077ybCjQuIHBsYW4g5L+d5a2YIHZlcnNpb25lZCBjb250ZW50L2NhcHN1bGUvY2xvc3VyZSBkaWdlc3TvvIzkuJTkuI3lkKvnu53lr7not6/lvoTjgIHml7bpl7TmiLPmiJblh73mlbDlr7nosaHvvJtwbGFuIOaIkOWKn+aIluWksei0pemDveS4jeWGmeebruaghyByb29077ybCjUuIGFwcGxpZXIg5YWIIGZhaWwtY2xvc2VkIOagoemqjOmdnuepuiByb290c+OAgXJvb3Qg5Y+v6L6+55qE5a6M5pW06Zet5YyF44CBY2Fub25pY2FsIGJhc2U2NCDkuI7lhajpg6ggZGlnZXN077yM5YaN5ZyoIGNhbGxlciDmj5DkvpvnmoQgYG91dHB1dFJvb3RgIOWQjOeItuebruW9lSBzdGFnZeOAgXJlYWRiYWNr77yM5LulIGJhY2t1cC9yZW5hbWUvcm9sbGJhY2sg5oiQ57uE5YiH5o2i44CCCgrmr4/kuKogcGxhbm5lZCBjYXBzdWxlIOi/mOW/hemhu+WMheWQq+WbuuWumui3r+W+hCBgcmVmZXJlbmNlcy8uaGFsZmNvZGUvcHJvdmVuYW5jZS5qc29uYOOAguivpeaWh+S7tueUsSBjb21waWxlciDnlJ/miJDvvIzkuI3nlLHmqKHmnb/nu7TmiqTvvJvlroPorrDlvZUgYGhhbGZjb2RlLnNraWxsLXByb3ZlbmFuY2UvdjFgIGZvcm1hdOOAgWBoYWxmY29kZS5za2lsbC1kaXN0cmlidXRpb24vdjFgIGdlbmVyYXRvcuOAgVNraWxsQ2Fwc3VsZSBYTkwg55qEIEZRTi9hcGlWZXJzaW9uL3ZlcnNpb27vvIzku6Xlj4rpmaToh6rouqvku6XlpJblhajpg6ggcGF5bG9hZCBmaWxlcyDnmoQgY2Fub25pY2FsIHBhdGgvY29udGVudCBkaWdlc3TjgIJtYW5pZmVzdCDoh6rouqvkvZzkuLrmma7pgJogcGxhbm5lZCBmaWxlIOi/m+WFpSBjYXBzdWxlL2Nsb3N1cmUgZGlnZXN077yM5Zug5q2k5LiN6ZyA6KaB6Ieq5byV55So5pGY6KaB44CCYXBwbGllciDkvJrlnKjku7vkvZXnm67moIflhpnlhaXliY3ku44gcGxhbiDph43lu7rlubYgZXhhY3Qg5qCh6aqM6L+Z5LqbIGZhY3Rz44CCCgpgYGB0cwpjb25zdCBwbGFuID0gYXdhaXQgcGxhblNraWxsQ2Fwc3VsZURpc3RyaWJ1dGlvbih7CiAgYXNzZW1ibHksCiAgcm9vdFNraWxsRnFuczogWyJleGFtcGxlLnJlc291cmNlX2xpZmVjeWNsZS5za2lsbC5kZXZvcHMiXSwKfSkKCmF3YWl0IGFwcGx5U2tpbGxDYXBzdWxlRGlzdHJpYnV0aW9uUGxhbihwbGFuLCB7IG91dHB1dFJvb3QgfSkKYGBgCgpIYWxmY29kZSDlj6rmi6XmnInpgJrnlKggcmVzb3VyY2UgZGVwZW5kZW5jeeOAgXBsYW4g5LiOIGF0b21pYyBhcHBseSBjb250cmFjdO+8m+ebruaghyByb29044CB5a6J6KOF5L2N572u44CB55Sf5ZG95ZGo5pyf6Zi25q615ZKM5Y2H57qn562W55Wl6YO955SxIGNhbGxlci9ob3N0IOWGs+WumuOAgmNvbXBpbGVyIOS4jeaOqOWvvOi/meS6myBwb2xpY3nvvIzkuZ/kuI3miorlroPku6zlhpnov5votYTmupAgYXV0aG9yaXR544CCCgojIyBDb25zdW1lciBSZXNvdXJjZSBEU0wgU2tpbGwKCmBkb2NzL3Jlc291cmNlLWRzbC9tYW5pZmVzdC54bmxgIOWwhuacrOebruW9leeahCBjYW5vbmljYWwg5paH5qGj55m76K6w5Li6IFJlc291cmNlUGFja2FnZS9XaWtpUGFnZSByZXNvdXJjZXPvvIzlubblo7DmmI4gYEhhbGZjb2RlLlJlc291cmNlRHNsLlNraWxsLlN5c3RlbWDjgIJjb21waWxlciDku47ov5nkupvljp/lp4vmlofmoaPnlJ/miJAgYHN5cy1oYWxmY29kZS1yZXNvdXJjZS1kc2xAMS4wLjBgIOeahCByZWZlcmVuY2Vz77ybYFNLSUxMLm1kYCDlj6rmj5DkvpvmuJDov5vliqDovb3pobrluo/vvIzkuI3lpI3liLbop4TojIPmraPmlofvvIzkuZ/kuI3ljIXlkKvku5PlupPnu7TmiqTlkb3ku6TmiJYgaG9zdCDlronoo4Xmk43kvZzjgILku5PlupPnu7TmiqTogIXnu6fnu63kvb/nlKggYHNraWxscy9mcmFtZXdvcmstcmVzb3VyY2UtZHNsYO+8jOS4pOiAheiBjOi0o+S4jeWPr+S6kuaNouOAggoK5pei5pyJIGBjb21waWxlU2tpbGxDYXBzdWxlYOOAgWBjb21waWxlUmVzb3VyY2VTa2lsbENhcHN1bGVgIOS4jiBgU2tpbGxDYXBzdWxlUGxhbmAg5L+d5oyB5YW85a6544CC5pawIHBsYW5uZXIvYXBwbGllciDlkoznsbvlnovku44gcGFja2FnZSByb290IOWPiiBgaGFsZmNvZGUtY29tcGlsZXIueG5sL3NraWxsLWNhcHN1bGVgIGFkZGl0aXZlIOWvvOWHuuOAggo="
|
|
230
230
|
}
|
|
231
231
|
],
|
|
232
|
-
"capsuleDigest": "sha256:
|
|
232
|
+
"capsuleDigest": "sha256:de0d03ff0d60f824eb4b34cb3417e660135d231ffe84d530cb61bd5e5d6eaed3"
|
|
233
233
|
}
|
|
234
234
|
],
|
|
235
|
-
"closureDigest": "sha256:
|
|
235
|
+
"closureDigest": "sha256:4d0b9cd96b326b85b9681e9ec4f0ce3fda11b92cd0c68c46ac474e5b7f460fd7"
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
function hydrateFile(file) {
|