abelien-harness 0.11.0 → 0.14.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/.env.example +16 -0
- package/README.md +11 -11
- package/bin/cli.mjs +3 -1
- package/lib/bundle.mjs +4 -1
- package/lib/installer.mjs +11 -2
- package/package.json +7 -8
- package/skills/abelien-3dgen/SKILL.md +6 -7
- package/skills/abelien-3dgen/domain.json +6 -4
- package/skills/abelien-algorithm/SKILL.md +6 -6
- package/skills/abelien-algorithm/domain.json +104 -48
- package/skills/abelien-algorithm/references/selection-service-contract.md +2 -2
- package/skills/abelien-appearance/SKILL.md +4 -4
- package/skills/abelien-appearance/references/local-component-edit.md +4 -4
- package/skills/abelien-clarify/SKILL.md +2 -4
- package/skills/abelien-guide/SKILL.md +3 -3
- package/skills/abelien-hardware/SKILL.md +30 -19
- package/skills/{abelien-workspace/references → abelien-hardware/contract}/hardware-journey-orchestration.md +8 -5
- package/skills/abelien-hardware/{references → contract}/knowledge-recall-service-contract.md +1 -1
- package/skills/abelien-hardware/contract/online-supplement-host.md +17 -0
- package/skills/abelien-hardware/{references → contract}/search-index-format.md +5 -1
- package/skills/abelien-hardware/contract/selection-host.md +53 -0
- package/skills/abelien-hardware/{references → contract}/web-evidence-contract.md +12 -1
- package/skills/abelien-hardware/domain.json +123 -70
- package/skills/abelien-hardware/references/planning-modes.md +4 -9
- package/skills/abelien-hardware/references/selection-service-contract.md +141 -10
- package/skills/abelien-hardware/scripts/admission.mjs +149 -0
- package/skills/abelien-hardware/scripts/change-scope.mjs +95 -0
- package/skills/abelien-hardware/scripts/dimensions.mjs +6 -0
- package/skills/abelien-hardware/scripts/finalize-selection.mjs +7 -3
- package/skills/abelien-hardware/scripts/load-guide.mjs +5 -1
- package/skills/abelien-hardware/scripts/provider-chain-contract.mjs +57 -19
- package/skills/abelien-hardware/scripts/public-page.mjs +1 -1
- package/skills/abelien-hardware/scripts/replace-plan.mjs +60 -0
- package/skills/{abelien-hardware-selection/scripts/server.mjs → abelien-hardware/scripts/select-server.mjs} +3 -3
- package/skills/abelien-hardware/scripts/select.mjs +270 -0
- package/skills/abelien-hardware/scripts/validate-replace-plan.mjs +14 -0
- package/skills/{abelien-hardware-selection → abelien-hardware}/scripts/validate-slots.mjs +1 -1
- package/skills/abelien-hardware/scripts/web-evidence-storage.mjs +25 -0
- package/skills/abelien-hardware/scripts/web-integrity.mjs +11 -8
- package/skills/abelien-hardware/scripts/web-merge.mjs +18 -4
- package/skills/abelien-hardware/scripts/web-provider-chain.mjs +126 -7
- package/skills/abelien-hardware/scripts/web-search-plan.mjs +5 -1
- package/skills/abelien-hardware/scripts/web-search.mjs +10 -5
- package/skills/abelien-hardware/workflows/definitions/15733a6263923bb50ea9059a0d1f472c66ccf80a89210e8e2392aceed39627d7.json +176 -0
- package/skills/{abelien-workspace/workflows/user-journey-hardware-candidates.json → abelien-hardware/workflows/definitions/1e35ae6536437c22dd60caffc8685e8e657c1bd3b3b812fe29367ef683674d3a.json} +1 -1
- package/skills/abelien-hardware/workflows/definitions/8636c86ba6a58e1cebdac0ca264e7fceb75051e4fcfaea9b1f5438a7f2688e9d.json +176 -0
- package/skills/abelien-hardware/workflows/definitions/9d99cb6a75eb2ab5efff8743a03a6041a54fc8e54fe8d2377edebdb730e26eef.json +150 -0
- package/skills/abelien-hardware/workflows/definitions/cd412ef03523d80447211cc1742c936e128f42b72e5001739b655fbdc58d5122.json +218 -0
- package/skills/abelien-hardware/workflows/definitions/cf280c394953f22348a831326986e987bb182cc7159a7b4b2ca85b00cab57f03.json +91 -0
- package/skills/abelien-hardware/workflows/definitions/f5a2d9d048fb9b29c6071aec6eea725135dafd6e288a086109ef5c30df8803dd.json +218 -0
- package/skills/abelien-hardware/workflows/user-journey-hardware-candidates.json +150 -0
- package/skills/abelien-hardware/workflows/user-journey-hardware-carry.json +91 -0
- package/skills/abelien-hardware/workflows/user-journey-hardware-replace.json +218 -0
- package/skills/abelien-hardware/workflows/user-journey-hardware.json +176 -0
- package/skills/abelien-harness/SKILL.md +3 -6
- package/skills/abelien-harness/{references → contract}/adapter-contract.md +11 -1
- package/skills/abelien-harness/contract/source-registry.md +93 -0
- package/skills/abelien-harness/scripts/ab.mjs +133 -30
- package/skills/abelien-harness/scripts/source-registry.mjs +46 -0
- package/skills/abelien-harness/scripts/web/public-read.mjs +11 -7
- package/skills/abelien-harness/scripts/web/source-registry.mjs +332 -0
- package/skills/abelien-reference/SKILL.md +11 -16
- package/skills/abelien-reference/contract/host-responsibilities.md +12 -0
- package/skills/abelien-reference/domain.json +1 -1
- package/skills/abelien-reference/references/research-contract.md +5 -11
- package/skills/abelien-reference/schemas/reference-evidence.v1.json +7 -3
- package/skills/abelien-reference/scripts/evidence.mjs +1 -1
- package/skills/abelien-reference/scripts/research.mjs +59 -6
- package/skills/abelien-structure/SKILL.md +7 -9
- package/skills/abelien-structure/contract/run-stage-internals.md +5 -0
- package/skills/abelien-structure/references/build123d-execution.md +2 -0
- package/skills/abelien-structure/references/structure-reasonableness.md +69 -0
- package/skills/abelien-structure-worker/SKILL.md +30 -0
- package/skills/abelien-structure-worker/domain.json +136 -0
- package/skills/abelien-workspace/SKILL.md +5 -13
- package/skills/abelien-workspace/assets/journey-stage-plan.json +89 -18
- package/skills/abelien-workspace/contract/host-binding.md +45 -0
- package/skills/abelien-workspace/domain.json +5 -6
- package/skills/abelien-workspace/references/domain-model.md +10 -3
- package/skills/abelien-workspace/references/harness-binding.md +13 -41
- package/skills/abelien-workspace/references/journey-stage-plan.md +55 -18
- package/skills/abelien-workspace/references/user-journey.md +10 -21
- package/skills/abelien-workspace/scripts/journey-next.mjs +14 -0
- package/skills/abelien-workspace/workflows/definitions/12a5a83350fba28a0697e45b523671070e84a160dda3855614845e66c2cafc10.json +218 -0
- package/skills/abelien-workspace/workflows/{user-journey-hardware.json → definitions/1fa24ed4fe5349806f2419defcdd83670c56c9907c07c059d1419cea70657f87.json} +1 -1
- package/skills/abelien-workspace/workflows/definitions/317a130c4aa0c713c349cf8bc7c6bece438011c00c6b212050b8ed13086d8fb7.json +176 -0
- package/skills/abelien-workspace/workflows/definitions/5b8f57571b8cab9983c8342c9345c426694c24403ecf6356df453f1aeecc88e8.json +91 -0
- package/skills/abelien-workspace/workflows/definitions/b657cd0f837ae5a0ac3852608321c4bbb165b612600cd10621d69a40b44340da.json +218 -0
- package/skills/abelien-guide/references/harness-binding.md +0 -5
- package/skills/abelien-guide/references/user-journey.md +0 -9
- package/skills/abelien-hardware/references/search-index-release.md +0 -78
- package/skills/abelien-hardware/scripts/build-search-index.mjs +0 -196
- package/skills/abelien-hardware/scripts/publish-search-index.mjs +0 -49
- package/skills/abelien-hardware/scripts/search-index-release.mjs +0 -330
- package/skills/abelien-hardware/scripts/smoke-search-index.mjs +0 -39
- package/skills/abelien-hardware/scripts/validate-selection-snapshot.mjs +0 -77
- package/skills/abelien-hardware/scripts/verify-search-index.mjs +0 -33
- package/skills/abelien-hardware-selection/SKILL.md +0 -29
- package/skills/abelien-hardware-selection/domain.json +0 -42
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/SKILL.md +0 -40
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/actuation-motion.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/communication.md +0 -21
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/compute-control.md +0 -24
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/display.md +0 -10
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/electrical-interconnect.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/interaction.md +0 -15
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/power-energy.md +0 -14
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/sensing-perception.md +0 -23
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-1/thermal-fluid.md +0 -14
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/actuator.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/driver.md +0 -21
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/end-effector.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/mobile-platform.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/propulsion.md +0 -13
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/robot-arm.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/robot-system.md +0 -20
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/switching.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/tool-driver.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/actuation-motion/transmission.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/antenna.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/cellular.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/fieldbus.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/gateway.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/long-range.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/mesh-network.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/radio.md +0 -13
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/remote-control.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/serial-interface.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/short-range.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/wide-area.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/wired-network.md +0 -14
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/communication/wireless-network.md +0 -19
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/accelerator.md +0 -17
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/controller-board.md +0 -17
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/controller-module.md +0 -14
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/data-logging.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/edge-ai.md +0 -17
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/industrial-controller.md +0 -13
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/industrial-io.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/io-expansion.md +0 -13
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/memory.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/motion-controller.md +0 -14
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/processor.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/programming-debug.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/security.md +0 -10
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/signal-conversion.md +0 -24
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/storage.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/compute-control/timing.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/display/display-module.md +0 -16
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/display/display-terminal.md +0 -13
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/electrical-interconnect/bus-adapter.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/electrical-interconnect/connector.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/electrical-interconnect/hub.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/electrical-interconnect/level-shifting.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/interaction/audio-input.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/interaction/audio-output.md +0 -13
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/interaction/audio-processing.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/interaction/haptic-feedback.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/interaction/safety-input.md +0 -17
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/interaction/user-input.md +0 -22
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/interaction/visual-feedback.md +0 -11
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/power-energy/battery.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/power-energy/charging.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/power-energy/energy-harvesting.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/power-energy/power-conversion.md +0 -20
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/power-energy/power-management.md +0 -28
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/power-energy/power-supply.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/acoustic.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/biometric.md +0 -15
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/distance.md +0 -15
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/electrical-state.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/environment.md +0 -24
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/fluid-chemical.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/force-torque.md +0 -13
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/human-presence.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/identification.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/localization.md +0 -18
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/magnetic.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/motion-attitude.md +0 -13
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/optical.md +0 -20
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/safety-perception.md +0 -14
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/sensing-perception/vision.md +0 -20
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/thermal-fluid/cooling-control.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/thermal-fluid/cooling.md +0 -14
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/thermal-fluid/filtration.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/thermal-fluid/fluid-control.md +0 -10
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/thermal-fluid/sealing.md +0 -9
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/level-2/thermal-fluid/thermal-control.md +0 -12
- package/skills/abelien-hardware-selection/references/hardware-selection-v2/references/query-contract.md +0 -63
- package/skills/abelien-hardware-selection/references/selection-service-contract.md +0 -95
- package/skills/abelien-hardware-selection/scripts/load-guide.mjs +0 -46
- package/skills/abelien-hardware-selection/scripts/select.mjs +0 -155
- package/skills/abelien-harness/references/m1-integration.md +0 -21
- package/skills/abelien-structure/domain.json +0 -64
- package/skills/abelien-structure/references/visual-review.md +0 -5
- package/skills/abelien-workspace/workflows/definitions/e3273f7952f7f1f043cb5df12f3cf377b351d2b31ec8db7197acb5674c8d8591.json +0 -1
- package/skills/abelien-workspace/workflows/user-journey-hardware-revise.json +0 -32
- /package/skills/abelien-harness/{references → contract}/fixtures/studio-harness-creation-receipt-v1.json +0 -0
- /package/skills/abelien-harness/{references → contract}/fixtures/studio-harness-receipt-v1.json +0 -0
- /package/skills/abelien-harness/{references → contract}/kernel-protocol.md +0 -0
- /package/skills/abelien-harness/{references → contract}/workflow-spec.md +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/abelien_cad.py +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/assembly-validation.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/cad.py +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/cli-adapter.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/component-fit-glb.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/component-fit.d.mts +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/component-fit.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/component-target-image.d.mts +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/component-target-image.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/component-target-render.py +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/config.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/engineering-fit.d.mts +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/engineering-fit.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/engineering-policy.json +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/engineering-repair.py +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/engineering.py +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/identity.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/inspection-geometry.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/jobs.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/library-runtime.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/main.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/manifest-digest.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/materials.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/native-launcher.py +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/native.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/representation.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/sandbox.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/source-contract.mjs +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/source_call_stats.py +0 -0
- /package/skills/{abelien-structure → abelien-structure-worker}/worker/supervisor.mjs +0 -0
package/.env.example
CHANGED
|
@@ -25,6 +25,22 @@ OSS_ALLOW_LEGACY_MANIFEST_FALLBACK=false
|
|
|
25
25
|
# Optional external hardware revision service
|
|
26
26
|
ABELIEN_HARDWARE_REVISE_URL=
|
|
27
27
|
|
|
28
|
+
# Optional component admission (P2-05): a selected web part enters the component library before the
|
|
29
|
+
# selection is saved. Set URL and token together (HTTPS, or HTTP on loopback; token at least 32 chars).
|
|
30
|
+
# Leave both empty to keep web parts under their external: ID with an EXTERNAL_NOT_ADMITTED unknown.
|
|
31
|
+
ABELIEN_HARDWARE_ADMISSION_URL=
|
|
32
|
+
ABELIEN_HARDWARE_ADMISSION_TOKEN=
|
|
33
|
+
ABELIEN_HARDWARE_ADMISSION_TIMEOUT_MS=30000
|
|
34
|
+
|
|
35
|
+
# Vendor source registry (P2-05, required before any web source is read when Prismer is off): every vendor page,
|
|
36
|
+
# file, search and image read is recorded once and reused across products. Configure exactly one backend:
|
|
37
|
+
# the trusted host endpoint (private OSS for files, shared RDS for records; token at least 32 chars) ...
|
|
38
|
+
ABELIEN_SOURCE_REGISTRY_URL=
|
|
39
|
+
ABELIEN_SOURCE_REGISTRY_TOKEN=
|
|
40
|
+
ABELIEN_SOURCE_REGISTRY_TIMEOUT_MS=30000
|
|
41
|
+
# ... or an absolute local directory for tests, offline runs and a single local host.
|
|
42
|
+
ABELIEN_SOURCE_REGISTRY_DIR=
|
|
43
|
+
|
|
28
44
|
# Optional loopback HTTP wrapper only; main hardware.select executes locally without a URL.
|
|
29
45
|
# At least 32 bytes, keep the real token in a private env file. Do not expose this server publicly.
|
|
30
46
|
ABELIEN_HARDWARE_SELECT_TOKEN=
|
package/README.md
CHANGED
|
@@ -8,13 +8,13 @@ npx 可安装的多 agent skill harness:**通用内核 + 可插拔域包**。
|
|
|
8
8
|
定位资源(如外观ID) → 调度能力(如 3D 模型生成/替换) → 组建状态管理 → workflow 编排
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
内核对领域不感知,随包分发
|
|
11
|
+
内核对领域不感知,随包分发 11 个 bundle:9 个 Agent 包装进 Agent 的 skills 目录,2 个宿主包(`kind: host`)只供宿主使用,安装器默认不装。产品层:[abelien-workspace](skills/abelien-workspace/SKILL.md)(旅程、版本与确认)·
|
|
12
12
|
[abelien-guide](skills/abelien-guide/SKILL.md)(对话调度与沟通)· [abelien-clarify](skills/abelien-clarify/SKILL.md)(需求澄清只读快照)。
|
|
13
|
-
领域层:[abelien-hardware](skills/abelien-hardware/SKILL.md)
|
|
14
|
-
[abelien-hardware-selection](skills/abelien-hardware-selection/SKILL.md)(本地三级分类选型)·
|
|
13
|
+
领域层:[abelien-hardware](skills/abelien-hardware/SKILL.md)(三级分类、OSS 召回、联网补位、本地选型与修订)·
|
|
15
14
|
[abelien-algorithm](skills/abelien-algorithm/SKILL.md)(基于已验证硬件、官方资料优先的联网算法选型)·
|
|
16
15
|
[abelien-appearance](skills/abelien-appearance/SKILL.md) 与 [abelien-structure](skills/abelien-structure/SKILL.md)(外观与机械结构)·
|
|
17
|
-
[abelien-
|
|
16
|
+
宿主包:[abelien-structure-worker](skills/abelien-structure-worker/SKILL.md)(Structure Worker 与 `structure.*` 宿主专用能力)·
|
|
17
|
+
[abelien-3dgen](skills/abelien-3dgen/SKILL.md)(四家 provider 的 3D 构件生成,经 `ab generate 3d` 与宿主 `mesh.generate` 使用)。
|
|
18
18
|
|
|
19
19
|
## Quickstart
|
|
20
20
|
|
|
@@ -23,6 +23,7 @@ npx abelien-harness install # 默认 claude-code 全局
|
|
|
23
23
|
npx abelien-harness install --target all # claude-code + hermes + pi
|
|
24
24
|
npx abelien-harness install --project # 装到 <cwd>/.claude/skills
|
|
25
25
|
npx abelien-harness install --skills-dir /any/dir # 自定义目录
|
|
26
|
+
npx abelien-harness install --include-host # 开发机:连宿主包一起装(Worker、provider)
|
|
26
27
|
npx abelien-harness list | update | remove
|
|
27
28
|
```
|
|
28
29
|
|
|
@@ -90,12 +91,12 @@ EaaS 后执行 `abelien-harness receipt consume --file ... --workdir ...`,并
|
|
|
90
91
|
consume 的 `status:"consumed"` 只确认落盘:它不调用 `workflow advance`,也不完成当前 Agent step。
|
|
91
92
|
重复同摘要幂等;同 wait 不同摘要冲突;取消或终态运行仍保存回执,但 workflow 观察会标为 terminal,
|
|
92
93
|
不会伪造恢复。完整 envelope、路径、锁和摘要契约见
|
|
93
|
-
[workflow 规范](skills/abelien-harness/
|
|
94
|
+
[workflow 规范](skills/abelien-harness/contract/workflow-spec.md#studio-工具回执收件箱)。
|
|
94
95
|
|
|
95
96
|
同一 receipt 入口支持严格互斥的 creation/modification 谱系;creation 的 `cad.final` 回执要求精确
|
|
96
97
|
preview 父候选与可信 definitionDigest 等待身份。预览通过、相同源码 final 构建和 final 再审查由 Web
|
|
97
98
|
执行定义约束;本仓新增的只是受信创建客户端(`ab studio creation create|active|get` 回读,见
|
|
98
|
-
[workflow 规范](skills/abelien-harness/
|
|
99
|
+
[workflow 规范](skills/abelien-harness/contract/workflow-spec.md)),没有第二份编排,也未据此宣称 EaaS 已发布或实测通过,既有 unknown 不重发。
|
|
99
100
|
|
|
100
101
|
### 生产 Studio broker 客户端
|
|
101
102
|
|
|
@@ -158,7 +159,7 @@ PRD 以用户指定的飞书模板 revision 191 为结构依据,保留七块
|
|
|
158
159
|
|
|
159
160
|
### 真实硬件阶段
|
|
160
161
|
|
|
161
|
-
另有独立的 `user-journey-hardware` 阶段流程:输入 clarify 交回的 Requirements(context / reaction[] / limits[],每条须带 `source ∈ {user,system}`、非空 `text` 与全局唯一 `id`,limits 另有 `strength ∈ {hard,preference}`;格式不合规在读取任何可信召回之前即失败),在 agent
|
|
162
|
+
另有独立的 `user-journey-hardware` 阶段流程:输入 clarify 交回的 Requirements(context / reaction[] / limits[],每条须带 `source ∈ {user,system}`、非空 `text` 与全局唯一 `id`,limits 另有 `strength ∈ {hard,preference}`;格式不合规在读取任何可信召回之前即失败),在 agent 暂停点按需加载 `abelien-hardware` 的三级分类规则,再将槽位交给 `hardware.select`——它是 `abelien-hardware` 的 `domain.json` 声明的 `{type:"module"}` 本地 adapter(`scripts/select.mjs`),不连网络、无服务端 URL。主流程先 OSS 搜索、再 Agent 证据判断、最后本地 `hardware.select`;未知不通过门禁。契约见 `abelien-hardware/references/selection-service-contract.md`;verified 不是工程实测。算法与外观真实阶段尚未接到该流程。分类规则正文只有 `abelien-hardware/references/hardware-selection/` 一份。
|
|
162
163
|
|
|
163
164
|
### OSS 候选检索工具
|
|
164
165
|
|
|
@@ -184,7 +185,7 @@ npm run publish:hardware-search-index -- \
|
|
|
184
185
|
|
|
185
186
|
如果旧上传器只上传了 Wiki Markdown、云端尚无 `_manifest.json`,首次加 `--bootstrap-manifest`;发布器会先逐个验证全部远端 Wiki 后才创建 Manifest。后续正常发布不再需要该参数。
|
|
186
187
|
|
|
187
|
-
也可分别运行 `npm run verify:hardware-search-index` 和 `npm run smoke:hardware-search`。搜索默认要求索引存在;缺少 `_catalog.json` 会返回 `WIKI_SEARCH_INDEX_MISSING`,不会静默下载整个分类。迁移期可显式设置 `OSS_ALLOW_LEGACY_MANIFEST_FALLBACK=true`,但响应会标记 `legacy_manifest_full_scan`,不应作为长期生产配置。格式见 [search-index-format.md](skills/abelien-hardware/
|
|
188
|
+
也可分别运行 `npm run verify:hardware-search-index` 和 `npm run smoke:hardware-search`。搜索默认要求索引存在;缺少 `_catalog.json` 会返回 `WIKI_SEARCH_INDEX_MISSING`,不会静默下载整个分类。迁移期可显式设置 `OSS_ALLOW_LEGACY_MANIFEST_FALLBACK=true`,但响应会标记 `legacy_manifest_full_scan`,不应作为长期生产配置。格式见 [search-index-format.md](skills/abelien-hardware/contract/search-index-format.md),发布操作见 [tools/hardware-index/README.md](tools/hardware-index/README.md)(运维工具在仓库 `tools/hardware-index/`,不随包分发)。
|
|
188
189
|
|
|
189
190
|
在本仓库内启动硬件阶段:
|
|
190
191
|
|
|
@@ -194,7 +195,6 @@ export CAD_STORAGE_ENDPOINT='https://oss-cn-hangzhou.aliyuncs.com'
|
|
|
194
195
|
export CAD_STORAGE_BUCKET='your-bucket'
|
|
195
196
|
export CAD_STORAGE_ACCESS_KEY='...'
|
|
196
197
|
export CAD_STORAGE_SECRET_KEY='...'
|
|
197
|
-
export ABELIEN_HARDWARE_REVISE_URL='https://your-selector.example/revise'
|
|
198
198
|
node skills/abelien-harness/scripts/ab.mjs workflow run user-journey-hardware --input '{"requirements":{"context":{"text":"放在桌面上","source":"user"},"reaction":[{"id":"r-turn","text":"有人靠近时转头看向对方","source":"user"}],"limits":[{"id":"l-net","text":"不能联网","source":"user","strength":"hard"}]}}'
|
|
199
199
|
# 返回 awaiting_agent 后,按请求读取 skills/abelien-hardware/SKILL.md,
|
|
200
200
|
# 用其 scripts/load-guide.mjs 逐层加载规则,再对该 run 执行 workflow advance --result '{"slots":[...]}'。
|
|
@@ -219,7 +219,7 @@ abelien-<slug>/
|
|
|
219
219
|
本地实现,如选型域的 `hardware.select`)。换 adapter 不改 `ab capability` / workflow 接口。
|
|
220
220
|
|
|
221
221
|
域包若要在运行期 import 同级的另一个 bundle,把对方写进 `domain.json` 的
|
|
222
|
-
**`requires`**(如 `abelien-hardware-selection`
|
|
222
|
+
**`requires`**(如 `abelien-reference` 声明 `["abelien-harness"]`;原 `abelien-hardware-selection` 曾声明 `["abelien-harness","abelien-hardware"]`,2026-10-15 并入 `abelien-hardware` 后不再有域包依赖兄弟域包的情况)。
|
|
223
223
|
skill-lint 双向守卫核对声明与实际 import 一致,打包校验再确认声明的包确实在包里
|
|
224
224
|
——缺包在运行期只会是 `Cannot find module`。
|
|
225
225
|
|
|
@@ -265,7 +265,7 @@ npm run branch:new|sync|push:ready|land # 分支纪律:切分支 / rebase
|
|
|
265
265
|
`docs/agent-prd/v2` 同步;那边的副本由宿主仓移除,避免两处规则漂移。理由见[意图路由](docs/architecture/intent-routing.md)
|
|
266
266
|
的职责划分:规则只在 harness 维护,宿主只消费锁定的安装包。
|
|
267
267
|
|
|
268
|
-
|
|
268
|
+
快照来源登记 `tools/snapshot-sources.json` 与同步工具已随 2026-10-15 的域包合并删除。硬件分类规则的唯一正文在
|
|
269
269
|
`skills/abelien-hardware/references/hardware-selection/`,`prepack` 以 `validate:hardware-selection-snapshot` 校验其完整性。
|
|
270
270
|
|
|
271
271
|
- 必要问题的选项上限沿用 clarify 的 `result / questions / note` 契约(最多三个,可少于三个或纯自由输入),
|
package/bin/cli.mjs
CHANGED
|
@@ -24,6 +24,7 @@ const opts = {
|
|
|
24
24
|
project: has("project"),
|
|
25
25
|
skillsDir,
|
|
26
26
|
force: has("force"),
|
|
27
|
+
includeHost: has("include-host"),
|
|
27
28
|
};
|
|
28
29
|
|
|
29
30
|
function print(results) {
|
|
@@ -32,11 +33,12 @@ function print(results) {
|
|
|
32
33
|
console.log(`${path.basename(r.skillsDir)}: ${action} -> ${r.target} (${r.skillsDir})`);
|
|
33
34
|
if (r.retired?.length) console.log(` retired: ${r.retired.join(", ")}(新版已不再发布,整包移除)`);
|
|
34
35
|
if (r.keptRetired?.length) console.log(` kept: ${r.keptRetired.join(", ")}(本地有改动,未删除;确认后可手动移除)`);
|
|
36
|
+
if (r.skippedHost?.length) console.log(` host bundles not installed: ${r.skippedHost.join(", ")}(宿主包;需要时加 --include-host)`);
|
|
35
37
|
for (const n of r.notes ?? []) console.log(` note: ${n}`);
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
function usage() {
|
|
39
|
-
console.error(`usage: abelien-harness <install|update|remove|list> [--target ${TARGET_NAMES.join("|")}|all] [--project] [--skills-dir <dir>] [--force]
|
|
41
|
+
console.error(`usage: abelien-harness <install|update|remove|list> [--target ${TARGET_NAMES.join("|")}|all] [--project] [--skills-dir <dir>] [--force] [--include-host]
|
|
40
42
|
abelien-harness receipt consume --file <path> [--workdir <dir>]
|
|
41
43
|
abelien-harness receipt get --wait <waitId> [--digest <sha256>] [--workdir <dir>]`);
|
|
42
44
|
process.exit(2);
|
package/lib/bundle.mjs
CHANGED
|
@@ -20,7 +20,10 @@ export function bundleManifest(skillsRoot) {
|
|
|
20
20
|
const dir = path.join(skillsRoot, d.name);
|
|
21
21
|
const files = {};
|
|
22
22
|
for (const rel of listBundleFiles(dir)) files[rel] = sha256Hex(fs.readFileSync(path.join(dir, rel), "utf8"));
|
|
23
|
-
|
|
23
|
+
// 包类型取自 domain.json 的 kind:host 是宿主包(Worker、provider),安装器默认不装进 Agent 的 skills 目录。
|
|
24
|
+
const domainFile = path.join(dir, "domain.json");
|
|
25
|
+
const kind = fs.existsSync(domainFile) && JSON.parse(fs.readFileSync(domainFile, "utf8")).kind === "host" ? "host" : "agent";
|
|
26
|
+
out.push({ slug: d.name, dir, files, digest: sha256Hex(canonicalJson(files)), kind });
|
|
24
27
|
}
|
|
25
28
|
return out.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
26
29
|
}
|
package/lib/installer.mjs
CHANGED
|
@@ -35,11 +35,19 @@ function retiredBundles(receipt, t, publishedSlugs, force) {
|
|
|
35
35
|
return { removed, kept };
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
// Agent 的 skills 目录只装 Agent 包;宿主包(kind: host)要显式 includeHost。
|
|
39
|
+
// 之前装过、现在改成宿主包的 bundle 不在本次清单里,按退役规则整包移除(本地改过的保留并上报)。
|
|
40
|
+
function selectedManifest(packageRoot, includeHost) {
|
|
41
|
+
const all = bundleManifest(path.join(packageRoot, "skills"));
|
|
42
|
+
return { all, manifest: all.filter(m => includeHost || m.kind !== "host") };
|
|
43
|
+
}
|
|
44
|
+
|
|
38
45
|
function doInstall(opts, retiredFiles = new Map()) {
|
|
39
46
|
const { packageRoot, target, project, skillsDir, env = process.env } = opts;
|
|
40
|
-
const manifest =
|
|
47
|
+
const { all, manifest } = selectedManifest(packageRoot, opts.includeHost === true);
|
|
41
48
|
if (!manifest.length) throw fail("EMPTY_BUNDLE", "no abelien-* skill bundles found in package");
|
|
42
49
|
const publishedSlugs = new Set(manifest.map(m => m.slug));
|
|
50
|
+
const skippedHost = all.filter(m => !publishedSlugs.has(m.slug)).map(m => m.slug);
|
|
43
51
|
const receipt = readReceipt(env);
|
|
44
52
|
const results = [];
|
|
45
53
|
for (const t of resolveTargets({ target, project, skillsDir, env })) {
|
|
@@ -62,6 +70,7 @@ function doInstall(opts, retiredFiles = new Map()) {
|
|
|
62
70
|
target: t.name,
|
|
63
71
|
skillsDir: t.dir,
|
|
64
72
|
slugs: manifest.map(m => m.slug),
|
|
73
|
+
skippedHost,
|
|
65
74
|
notes: targets[t.name].notes,
|
|
66
75
|
retired: retired.map(r => r.slug),
|
|
67
76
|
keptRetired: keptRetired.map(k => k.slug),
|
|
@@ -78,7 +87,7 @@ export const install = doInstall;
|
|
|
78
87
|
|
|
79
88
|
export function update(opts) {
|
|
80
89
|
const { packageRoot, target, project, skillsDir, force, env = process.env } = opts;
|
|
81
|
-
const manifest =
|
|
90
|
+
const { manifest } = selectedManifest(packageRoot, opts.includeHost === true);
|
|
82
91
|
const receipt = readReceipt(env);
|
|
83
92
|
const drifted = [];
|
|
84
93
|
const retiredFiles = new Map();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abelien-harness",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "npx-installable multi-agent skill harness: generic kernel + pluggable domain packs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -28,13 +28,12 @@
|
|
|
28
28
|
"land": "node scripts/land.mjs",
|
|
29
29
|
"release:check": "node scripts/release-check.mjs",
|
|
30
30
|
"release": "node scripts/release.mjs",
|
|
31
|
-
"build:hardware-search-index": "node
|
|
32
|
-
"validate:hardware-selection-snapshot": "node
|
|
33
|
-
"publish:hardware-search-index": "node
|
|
34
|
-
"verify:hardware-search-index": "node
|
|
35
|
-
"smoke:hardware-search": "node
|
|
36
|
-
"
|
|
37
|
-
"prepack": "npm run validate:hardware-selection-snapshot && node tools/sync-hardware-selection.mjs --check --strict"
|
|
31
|
+
"build:hardware-search-index": "node tools/hardware-index/build-search-index.mjs",
|
|
32
|
+
"validate:hardware-selection-snapshot": "node tools/hardware-index/validate-selection-snapshot.mjs",
|
|
33
|
+
"publish:hardware-search-index": "node tools/hardware-index/publish-search-index.mjs",
|
|
34
|
+
"verify:hardware-search-index": "node tools/hardware-index/verify-search-index.mjs",
|
|
35
|
+
"smoke:hardware-search": "node tools/hardware-index/smoke-search-index.mjs",
|
|
36
|
+
"prepack": "npm run validate:hardware-selection-snapshot"
|
|
38
37
|
},
|
|
39
38
|
"license": "MIT"
|
|
40
39
|
}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: abelien-3dgen
|
|
3
|
-
description: 3D
|
|
3
|
+
description: 宿主包:3D 构件生成的四家 provider(Meshy/Hunyuan/Tripo/Ark)声明式 profile 与 22 款模型目录,供内核 ab generate 3d 引擎与宿主 mesh.generate 使用。不装进 Agent 的 skills 目录;模型侧的网格生成经宿主工具完成。
|
|
4
4
|
license: MIT
|
|
5
|
-
compatibility:
|
|
6
|
-
- claude-code
|
|
7
|
-
- hermes
|
|
8
|
-
- pi
|
|
9
5
|
metadata:
|
|
10
|
-
|
|
6
|
+
kind: host
|
|
7
|
+
category: host-bundle
|
|
11
8
|
allowed-tools:
|
|
12
9
|
- Bash
|
|
13
10
|
- Read
|
|
14
11
|
---
|
|
15
12
|
|
|
16
|
-
# abelien-3dgen — 3D
|
|
13
|
+
# abelien-3dgen — 3D 生成宿主包
|
|
14
|
+
|
|
15
|
+
本包是宿主包(`domain.json` 的 `kind: host`):安装器默认不把它装进 claude-code / hermes / pi 的 skills 目录,宿主从钉死的 npm 包里按路径加载;开发机需要直接跑 `ab generate 3d` 时用 `install --include-host`。产品里的网格生成走宿主的 `mesh.generate` 工具。
|
|
17
16
|
|
|
18
17
|
本包是图生网格能力,不负责外观采用或结构判定。通常由同级 [appearance](../abelien-appearance/SKILL.md) 在外观探索/参考还原时按需使用:交回任务、来源图片、模型及参数依据,由 appearance 核对视觉目标,再把需要工程实现的网格作为参考交给 structure。网格成功不能冒充参数化 CAD、碰撞检查、视觉验收或作品已采用。标准件 CAD 复用与 Build123d 定制结构不通过本 provider 流程重造。
|
|
19
18
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abelien-3dgen",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"kind": "host",
|
|
5
|
+
"description": "宿主包:3D 构件生成的声明式 provider profile(官方形状为准),供内核 generate 引擎与宿主 mesh.generate 使用;不装进 Agent 的 skills 目录",
|
|
6
|
+
"resources": [
|
|
7
|
+
"gen3d"
|
|
8
|
+
],
|
|
6
9
|
"capabilities": {},
|
|
7
10
|
"adapters": {}
|
|
8
11
|
}
|
|
9
|
-
|
|
@@ -12,12 +12,12 @@ metadata:
|
|
|
12
12
|
|
|
13
13
|
# Abelien Algorithm
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
本包分两步完成算法与实现选型:
|
|
16
16
|
|
|
17
17
|
1. **研究(不依赖硬件)**:需求明确后就为每个 reaction 检索实现资料,与硬件选型同时进行;候选写明资源需求(算力、内存、接口、传感器、联网),不猜硬件型号。
|
|
18
18
|
2. **绑定(硬件登记后)**:读取已登记的 `hardware-selection`(id 与 revision),补查已选型号的厂商资料,每个 reaction 绑定到具体 `component_id` 并复核兼容。硬件尚未 verified 也可以绑定,结果保持待确认。`selected_models[]` 为空或缺少厂商/型号时停止并返回具体缺口,不能根据类别名猜设备。
|
|
19
19
|
|
|
20
|
-
车道在哪个阶段做哪一步由 workspace 的 `workspace.lanes-next`
|
|
20
|
+
车道在哪个阶段做哪一步由 workspace 的 `workspace.lanes-next` 决定(见意图路由 §4.1)。
|
|
21
21
|
|
|
22
22
|
与同级 [structure](../abelien-structure/SKILL.md) 可在各自依赖满足后分别推进:将摄像头视野、拾音/发声开口、散热、动作范围等有依据的结构要求交回;结构反馈遮挡、空间或运动冲突时重判受影响绑定。换硬件须回 hardware 并重新核对版本。算法选型成功不代表装配或设备行为已经实测通过。
|
|
23
23
|
|
|
@@ -32,14 +32,14 @@ metadata:
|
|
|
32
32
|
|
|
33
33
|
## 核心边界
|
|
34
34
|
|
|
35
|
-
-
|
|
35
|
+
- 研究步骤先看宿主给出的库内已适配算法(库内优先、库外再联网),再按算法/模型官方资料 → Hugging Face → 云服务厂商官方资料检索;绑定步骤先查已选型号的硬件厂商官方资料。搜索结果页、博客和聚合文章只能用于发现线索,不能单独支持最终选择。
|
|
36
36
|
- 必须明确 `edge`、`cloud` 或 `hybrid`。离线、隐私、网络、延迟、费用或数据地域限制属于硬约束,不得为了找到候选而静默改成云端。
|
|
37
37
|
- 端侧候选要核对处理器架构、OS/固件、runtime、算子、RAM、Flash/存储、加速器、输入输出格式及外设接口;没有精确设备实测时,不能承诺真实性能。
|
|
38
38
|
- 交互类需求可以比较本地模型和云端 API,但“模型仓库存在”不等于“已有可调用云服务”,“当前 Agent 能调用模型”也不等于用户设备具备该能力。
|
|
39
39
|
- 发现、兼容复核、集成、部署和实测是五种不同状态。本包只完成前两项并保存版本化选型结果。
|
|
40
40
|
|
|
41
|
-
`algorithm.finalize` 不访问网络;它回读真实硬件基线,并核对来源回执,检查完整 reaction、型号/版本绑定和硬约束覆盖。只有元数据或 Agent 自述“已回读”不会获得 `verified`。回执来自可信宿主注入的证据解析器,或(`operation=bind`)来自 `algorithm.research` 自己读取并按 sha256 存下的正文;检索摘要(`text_source=search_snippet
|
|
41
|
+
`algorithm.finalize` 不访问网络;它回读真实硬件基线,并核对来源回执,检查完整 reaction、型号/版本绑定和硬约束覆盖。只有元数据或 Agent 自述“已回读”不会获得 `verified`。回执来自可信宿主注入的证据解析器,或(`operation=bind`)来自 `algorithm.research` 自己读取并按 sha256 存下的正文;检索摘要(`text_source=search_snippet`)只用于发现,永远不算证据。具体字段及回执边界见选型服务契约。来源不可回读、候选版本不确定或存在阻塞未知项时,结果保持待确认,不伪造验证。
|
|
42
42
|
|
|
43
|
-
##
|
|
43
|
+
## 来源文档
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
联网检索得到的页面,按原始请求、任务和来源身份读取已保存的原文或解析结果;检索摘要类内容只用于发现线索。缓存或 OCR 得到的内容不能证明厂商权威或工程结论。本领域自己的原始回执和权威判断不由别的服务替代。待完成的解析任务只查原任务,不重新提交。
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abelien-algorithm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "算法域包:需求明确后即可检索实现资料(与硬件选型并行),硬件登记后补厂商资料并逐 reaction 绑定、复核兼容",
|
|
5
|
-
"requires": [
|
|
6
|
-
|
|
5
|
+
"requires": [
|
|
6
|
+
"abelien-harness"
|
|
7
|
+
],
|
|
8
|
+
"resources": [
|
|
9
|
+
"algorithm-selection",
|
|
10
|
+
"algorithm-research"
|
|
11
|
+
],
|
|
7
12
|
"capabilities": {
|
|
8
13
|
"algorithm.research": {
|
|
9
14
|
"description": "执行 Agent 的检索计划并保存证据:purpose=implementation 只凭需求检索实现资料(可与硬件选型并行),purpose=hardware 检索已选型号的厂商资料;Volc 检索(每次最多 5 条)与公开 HTTPS 页面安全直读,正文按 sha256 存证;每条付费检索先存 sent 再发送,重跑复用已完成检索、结果未知时要求对账而不重发;同一请求完成后重复运行直接返回已有结果",
|
|
@@ -12,18 +17,47 @@
|
|
|
12
17
|
"path": "scripts/research.mjs",
|
|
13
18
|
"export": "researchAlgorithms"
|
|
14
19
|
},
|
|
15
|
-
"input": {
|
|
20
|
+
"input": {
|
|
21
|
+
"from": "input"
|
|
22
|
+
},
|
|
16
23
|
"resultContract": {
|
|
17
|
-
"nonEmptyStrings": [
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
"nonEmptyStrings": [
|
|
25
|
+
"id",
|
|
26
|
+
"status",
|
|
27
|
+
"schema",
|
|
28
|
+
"request_digest",
|
|
29
|
+
"purpose"
|
|
30
|
+
],
|
|
31
|
+
"arrays": [
|
|
32
|
+
"reactions",
|
|
33
|
+
"searches",
|
|
34
|
+
"pages",
|
|
35
|
+
"unknowns"
|
|
36
|
+
],
|
|
37
|
+
"statusValues": [
|
|
38
|
+
"collected"
|
|
39
|
+
]
|
|
20
40
|
},
|
|
21
41
|
"produces": "algorithm-research",
|
|
22
42
|
"checkpoint": true,
|
|
23
43
|
"checkpointContract": {
|
|
24
|
-
"nonEmptyStrings": [
|
|
25
|
-
|
|
26
|
-
|
|
44
|
+
"nonEmptyStrings": [
|
|
45
|
+
"id",
|
|
46
|
+
"status",
|
|
47
|
+
"schema",
|
|
48
|
+
"request_digest",
|
|
49
|
+
"purpose"
|
|
50
|
+
],
|
|
51
|
+
"arrays": [
|
|
52
|
+
"reactions",
|
|
53
|
+
"searches",
|
|
54
|
+
"pages",
|
|
55
|
+
"unknowns"
|
|
56
|
+
],
|
|
57
|
+
"statusValues": [
|
|
58
|
+
"in_progress",
|
|
59
|
+
"collected"
|
|
60
|
+
]
|
|
27
61
|
}
|
|
28
62
|
},
|
|
29
63
|
"algorithm.candidates": {
|
|
@@ -33,11 +67,24 @@
|
|
|
33
67
|
"path": "scripts/candidates.mjs",
|
|
34
68
|
"export": "proposeAlgorithmCandidates"
|
|
35
69
|
},
|
|
36
|
-
"input": {
|
|
70
|
+
"input": {
|
|
71
|
+
"from": "input"
|
|
72
|
+
},
|
|
37
73
|
"resultContract": {
|
|
38
|
-
"nonEmptyStrings": [
|
|
39
|
-
|
|
40
|
-
|
|
74
|
+
"nonEmptyStrings": [
|
|
75
|
+
"id",
|
|
76
|
+
"status",
|
|
77
|
+
"schema",
|
|
78
|
+
"collected_id"
|
|
79
|
+
],
|
|
80
|
+
"arrays": [
|
|
81
|
+
"candidates",
|
|
82
|
+
"unresolved",
|
|
83
|
+
"unknowns"
|
|
84
|
+
],
|
|
85
|
+
"statusValues": [
|
|
86
|
+
"proposed"
|
|
87
|
+
]
|
|
41
88
|
},
|
|
42
89
|
"produces": "algorithm-research"
|
|
43
90
|
},
|
|
@@ -48,34 +95,14 @@
|
|
|
48
95
|
"path": "scripts/lane-state.mjs",
|
|
49
96
|
"export": "algorithmLaneState"
|
|
50
97
|
},
|
|
51
|
-
"input": {
|
|
52
|
-
|
|
53
|
-
"nonEmptyStrings": ["requirements_digest"]
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
"algorithm.select": {
|
|
57
|
-
"description": "复核 Agent 联网研究证据,选择端侧、云端或混合实现并形成版本化算法选型",
|
|
58
|
-
"adapter": {
|
|
59
|
-
"type": "http",
|
|
60
|
-
"method": "POST",
|
|
61
|
-
"url": "env:ABELIEN_ALGORITHM_SELECT_URL",
|
|
62
|
-
"bodyFrom": "input",
|
|
63
|
-
"timeoutMs": 60000,
|
|
64
|
-
"retries": 0
|
|
98
|
+
"input": {
|
|
99
|
+
"from": "input"
|
|
65
100
|
},
|
|
66
|
-
"input": { "from": "input" },
|
|
67
101
|
"resultContract": {
|
|
68
|
-
"nonEmptyStrings": [
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"verified": {
|
|
73
|
-
"nonEmptyArrays": ["bindings", "sources"],
|
|
74
|
-
"emptyArrays": ["blocking_unknowns"]
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
"produces": "algorithm-selection"
|
|
102
|
+
"nonEmptyStrings": [
|
|
103
|
+
"requirements_digest"
|
|
104
|
+
]
|
|
105
|
+
}
|
|
79
106
|
},
|
|
80
107
|
"algorithm.finalize": {
|
|
81
108
|
"description": "把 Agent 基于硬件型号和官方联网证据做出的算法绑定归一化为版本化选型资源;operation=bind 时候选取自 algorithm.candidates,来源回执从 Harness 自己存下的研究正文解析,硬件基线尚未 verified 时结果固定为 needs_confirmation",
|
|
@@ -84,15 +111,39 @@
|
|
|
84
111
|
"path": "scripts/finalize-selection.mjs",
|
|
85
112
|
"export": "finalizeAlgorithmSelection"
|
|
86
113
|
},
|
|
87
|
-
"input": {
|
|
114
|
+
"input": {
|
|
115
|
+
"from": "input"
|
|
116
|
+
},
|
|
88
117
|
"resultContract": {
|
|
89
|
-
"nonEmptyStrings": [
|
|
90
|
-
|
|
91
|
-
|
|
118
|
+
"nonEmptyStrings": [
|
|
119
|
+
"id",
|
|
120
|
+
"status",
|
|
121
|
+
"hardware_selection_id",
|
|
122
|
+
"hardware_selection_revision",
|
|
123
|
+
"source_snapshot",
|
|
124
|
+
"revision"
|
|
125
|
+
],
|
|
126
|
+
"arrays": [
|
|
127
|
+
"bindings",
|
|
128
|
+
"candidates",
|
|
129
|
+
"sources",
|
|
130
|
+
"unavailable_sources",
|
|
131
|
+
"unknowns",
|
|
132
|
+
"blocking_unknowns"
|
|
133
|
+
],
|
|
134
|
+
"statusValues": [
|
|
135
|
+
"verified",
|
|
136
|
+
"needs_confirmation"
|
|
137
|
+
],
|
|
92
138
|
"whenStatus": {
|
|
93
139
|
"verified": {
|
|
94
|
-
"nonEmptyArrays": [
|
|
95
|
-
|
|
140
|
+
"nonEmptyArrays": [
|
|
141
|
+
"bindings",
|
|
142
|
+
"sources"
|
|
143
|
+
],
|
|
144
|
+
"emptyArrays": [
|
|
145
|
+
"blocking_unknowns"
|
|
146
|
+
]
|
|
96
147
|
}
|
|
97
148
|
}
|
|
98
149
|
},
|
|
@@ -103,13 +154,18 @@
|
|
|
103
154
|
"algorithm-selection": {
|
|
104
155
|
"description": "联网研究提案到算法选型已验证的阶段门",
|
|
105
156
|
"initial": "researched",
|
|
106
|
-
"states": [
|
|
157
|
+
"states": [
|
|
158
|
+
"researched",
|
|
159
|
+
"selected"
|
|
160
|
+
],
|
|
107
161
|
"transitions": [
|
|
108
162
|
{
|
|
109
163
|
"from": "researched",
|
|
110
164
|
"to": "selected",
|
|
111
165
|
"on": "confirmSelection",
|
|
112
|
-
"guard": {
|
|
166
|
+
"guard": {
|
|
167
|
+
"status": "verified"
|
|
168
|
+
}
|
|
113
169
|
}
|
|
114
170
|
]
|
|
115
171
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 算法选型服务契约
|
|
2
2
|
|
|
3
|
-
本文件只在向 `algorithm.finalize` 提交联网研究结果时读取。Harness 不实现搜索引擎、Hugging Face 或云厂商客户端;联网由宿主 Agent
|
|
3
|
+
本文件只在向 `algorithm.finalize` 提交联网研究结果时读取。Harness 不实现搜索引擎、Hugging Face 或云厂商客户端;联网由宿主 Agent 使用获准工具完成,本地能力负责检查结果形状并保存稳定引用。
|
|
4
4
|
|
|
5
5
|
## 并行车道:research → candidates → bind(P2-03,2026-10-14)
|
|
6
6
|
|
|
@@ -101,6 +101,6 @@
|
|
|
101
101
|
- 每个 source 含 `id/source_type/title/publisher/url/version/accessed_at/content_sha256/excerpt/evidence_ref`;仅 `hardware_vendor/implementation_official/huggingface/cloud_vendor` 可支持通过。硬件来源列 `hardware_component_ids`,实现来源列 `implementation_ref` 并匹配确定版本。
|
|
102
102
|
- 来源自述不足以通过。可信宿主通过 `main(argv,{readEvidence})` 注入只读回执解析器:`readEvidence(evidence_ref)` 返回 `{url,content_sha256,fetched_at,content}`。URL、哈希、访问时间须精确匹配,UTF-8 正文重算哈希一致且包含 excerpt。解析器不得直接返回模型提交的对象;必须读取宿主实际获取的不可变正文。裸 CLI 未接该接口时保持待确认,不假装已联网。
|
|
103
103
|
|
|
104
|
-
结果明确 `validation_scope:"baseline_and_research_contract_only"`、`source_retrieval_verified` 和 `device_tested:false`。即便宿主回读凭据有效,也只证明取过这些字节;官方身份、兼容语义与来源是否支持结论仍需研究审查,不能以格式通过声称设备部署或实测通过。
|
|
104
|
+
结果明确 `validation_scope:"baseline_and_research_contract_only"`、`source_retrieval_verified` 和 `device_tested:false`。即便宿主回读凭据有效,也只证明取过这些字节;官方身份、兼容语义与来源是否支持结论仍需研究审查,不能以格式通过声称设备部署或实测通过。
|
|
105
105
|
|
|
106
106
|
发现候选不等于已集成或已实测;Agent 不得把厂商理论峰值、其他开发板数据或模型卡自报指标写成当前整机实测结果。
|
|
@@ -17,7 +17,7 @@ compatibility:
|
|
|
17
17
|
- A1/A2:从文字和参考媒体提取外观方向,形成首版轮廓、比例、CMF、部位与辨识特征目标。
|
|
18
18
|
- B1 修改:处理颜色、材质、表面语言、整体轮廓、局部造型、灯效和装饰件;保留未被修改的目标。
|
|
19
19
|
- 还原参考产品:区分照片、视频、源 CAD、渲染与概念图,只对有证据的可见特征提出匹配要求。
|
|
20
|
-
-
|
|
20
|
+
- 型号识别与比例核对由 [reference](../abelien-reference/SKILL.md) 完成:`reference.finalize` 用测量值与规格算出比例,冲突写进 `identity.conflict`。采用外部规格作外观基准前先看这个结论;有冲突就列出各候选及依据,不以最先找到的资料为准。向用户展示识别结果与来源不等于要求确认:高置信时展示后继续,冲突时保留候选供切换。
|
|
21
21
|
- structure 返回模型和实际渲染后:按匹配视角执行视觉审查;工程冲突则共同形成可见取舍,必要时由 guide 交给用户决定。
|
|
22
22
|
- 同版视觉结果和外观提案交回 workspace 采用;本包不创建自己的作品版本或确认流程。
|
|
23
23
|
|
|
@@ -28,7 +28,7 @@ compatibility:
|
|
|
28
28
|
1. **核对对象与版本。** 明确是整机还是部位、当前作品/基线、固定区域、允许变化范围、用户要求和参考来源。过期图片或旧渲染不能覆盖新版。
|
|
29
29
|
2. **建立外观目标。** 将整体轮廓、比例、分件、特征位置、颜色、材质、纹理、透明/发光表现整理成稳定目标;区分硬要求、偏好、观察事实、推断和未知。
|
|
30
30
|
3. **提出编辑。** 输出改变前后、影响部位、所用参考及预期视图。纯 CMF 变化不假装结构改变;新增摄像头、开口或可动部位时通知 hardware/structure。
|
|
31
|
-
4. **按需生成视觉资产。** 无现成 CAD 的文字 Studio 目标是在需求足够后先出概念图,默认沿用原图绑定真实硬件并交 structure;缺图、自然语言重试与重画统一按 workspace 的[图片请求规则](../abelien-workspace/references/user-journey.md#image-retry-intent)承接。已有符合需求的真实 CAD
|
|
31
|
+
4. **按需生成视觉资产。** 无现成 CAD 的文字 Studio 目标是在需求足够后先出概念图,默认沿用原图绑定真实硬件并交 structure;缺图、自然语言重试与重画统一按 workspace 的[图片请求规则](../abelien-workspace/references/user-journey.md#image-retry-intent)承接。已有符合需求的真实 CAD 时,概念图不应成为首次展示的硬性前置。概念探索可使用图像生成;需要图生网格时由宿主的网格生成工具(`mesh.generate`)完成。生成图或网格是外观候选,不是可制造 CAD,也不代表已经采用。
|
|
32
32
|
5. **交给 structure 实现。** 提供形态目标、视图、比例基准、必须保留的特征和允许妥协范围。structure 返回空间/制造冲突、实际模型、相机信息和真实渲染。
|
|
33
33
|
6. **实际视觉审查。** 读[视觉审查](references/visual-review.md),真正查看目标参考与本版实际渲染;分别记录 pass、conflict、unknown、not_checked。脚本通过或文字自述“很像”不能替代看图。
|
|
34
34
|
7. **迭代或交回。** 可在授权范围内修正外观目标,受工程约束影响的方案回到 structure。只有影响用户目标或需要其取舍时进入 B2;完成后把同版提案、证据和视觉结论交回 workspace。
|
|
@@ -46,6 +46,6 @@ compatibility:
|
|
|
46
46
|
|
|
47
47
|
本包不注册空 `domain.json` 或虚假 `appearance.*` capability。宿主没有图像查看、渲染或编辑能力时,明确报告缺口,不用文字模拟已经完成的外观工作。
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## 来源文档
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
联网检索得到的页面,按原始请求、任务和来源身份读取已保存的原文或解析结果;检索摘要类内容只用于发现线索。缓存或 OCR 得到的内容不能证明厂商权威或工程结论。本领域自己的原始回执和权威判断不由别的服务替代。待完成的解析任务只查原任务,不重新提交。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 局部自由造型外观件编辑
|
|
2
2
|
|
|
3
|
-
这是 appearance、structure
|
|
3
|
+
这是 appearance、structure、宿主网格生成与 workspace 的交接契约;不是新的作品状态机。
|
|
4
4
|
|
|
5
5
|
## 输入与默认体验
|
|
6
6
|
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
## 职责和执行
|
|
12
12
|
|
|
13
|
-
1. appearance 确认改变哪些可见区域,保留哪些特征,调用现有 image.generate
|
|
14
|
-
2.
|
|
13
|
+
1. appearance 确认改变哪些可见区域,保留哪些特征,调用现有 image.generate 作单图修改,再由宿主执行 mesh.generate@1(purpose=appearance_component)。Tripo 是自由造型的可选默认供应商,实际模型/预算/可用性由固定宿主配置决定;不覆盖别的已选供应商。
|
|
14
|
+
2. 网格生成返回真实自包含 GLB、来源图哈希、provider/model、原请求与任务身份。生成候选不得声称具备精确尺寸、安装接口或 CAD 源码。单图 tripo-image-v3.1 与四视图模型是不同请求形状,模型级 verified 门独立生效。
|
|
15
15
|
3. structure 通过独立 `structure.adapt` 步骤调用 `cad.build@2`(purpose=appearance_adaptation):宿主解析同一 creation 已结算的 meshInvocationId、原件精确几何、单位/坐标系、不可变接口及 attachment 证据。模型只能引用冻结的 baselineCandidateId/designDigest、targetOccurrenceId、meshInvocationId 和原 inputRevision/manifestDigest,不能提供文件路径、安装约束或“接口已通过”声明。旧 cad.build@1 的 Build123d 流程保持独立。
|
|
16
16
|
4. 把新外观实际装回同一整机候选,分别报告尺寸、原生比例、保护区域、接口、碰撞、间隙与壁厚的 pass/conflict/unknown。对齐坐标、compatibilityKey 或画面像装上了均不证明接口匹配。缺真实接口约束时只允许预览;不得缩放精确原件来凑齐。
|
|
17
17
|
5. appearance 查看同版整机实际渲染并做视觉审查。workspace 使用既有候选/采用事务;旧基线、错误目标、unknown 适用工程项不得进入 CAD 确认或导出捷径。网格预览、fit 通过与已采用是三个事实。
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
|
|
27
27
|
## 恢复和验收
|
|
28
28
|
|
|
29
|
-
工具不新建预算、回执或采用系统。宿主使用原 F4 invocation/upstreamKey、租约与预算,provider
|
|
29
|
+
工具不新建预算、回执或采用系统。宿主使用原 F4 invocation/upstreamKey、租约与预算,provider 恢复由宿主按原生成任务身份处理。刷新、取消、超时和模糊结果只能查原任务;拿不到 provider ID 时保持 unknown,不重新生成。
|
|
30
30
|
|
|
31
31
|
真实验收需同一 draft/version 下的目标件选择、单图编辑、实际 provider 结果和结算、同整机预览、几何/视觉结论与采用回读。HTTP fixtures、本地 GLB 或技能说明不构成产品验收。
|