abelien-harness 0.14.0 → 0.16.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.
Files changed (567) hide show
  1. package/.env.example +14 -0
  2. package/README.md +11 -10
  3. package/bin/cli.mjs +11 -1
  4. package/package.json +5 -3
  5. package/skills/abelien-3dgen/SKILL.md +9 -4
  6. package/skills/abelien-algorithm/SKILL.md +35 -27
  7. package/skills/abelien-algorithm/actions/algorithm.candidates.json +43 -0
  8. package/skills/abelien-algorithm/actions/algorithm.finalize.json +38 -0
  9. package/skills/abelien-algorithm/actions/algorithm.lane-state.json +38 -0
  10. package/skills/abelien-algorithm/actions/algorithm.research.json +70 -0
  11. package/skills/abelien-algorithm/bindings.json +58 -0
  12. package/skills/abelien-algorithm/contract/host-tools.generated.json +1235 -0
  13. package/skills/abelien-algorithm/domain.json +8 -2
  14. package/skills/abelien-algorithm/references/actions/algorithm.candidates.generated.md +77 -0
  15. package/skills/abelien-algorithm/references/actions/algorithm.finalize.generated.md +93 -0
  16. package/skills/abelien-algorithm/references/actions/algorithm.lane-state.generated.md +67 -0
  17. package/skills/abelien-algorithm/references/actions/algorithm.research.generated.md +93 -0
  18. package/skills/abelien-algorithm/references/actions.generated.md +11 -0
  19. package/skills/abelien-algorithm/references/research-policy.md +14 -8
  20. package/skills/abelien-algorithm/references/selection-service-contract.md +4 -4
  21. package/skills/abelien-algorithm/schemas/algorithm-common.v1.json +22 -0
  22. package/skills/abelien-algorithm/schemas/candidates-input.v1.json +15 -0
  23. package/skills/abelien-algorithm/schemas/candidates-result.v1.json +17 -0
  24. package/skills/abelien-algorithm/schemas/finalize-input.v1.json +17 -0
  25. package/skills/abelien-algorithm/schemas/finalize-result.v1.json +28 -0
  26. package/skills/abelien-algorithm/schemas/lane-state-input.v1.json +14 -0
  27. package/skills/abelien-algorithm/schemas/lane-state-result.v1.json +14 -0
  28. package/skills/abelien-algorithm/schemas/research-input.v1.json +45 -0
  29. package/skills/abelien-algorithm/schemas/research-result.v1.json +19 -0
  30. package/skills/abelien-algorithm/scripts/evidence.mjs +8 -5
  31. package/skills/abelien-algorithm/scripts/research.mjs +14 -11
  32. package/skills/abelien-algorithm/workflows/user-journey-algorithm.json +1 -1
  33. package/skills/abelien-appearance/SKILL.md +9 -6
  34. package/skills/abelien-appearance/actions/appearance.points-fallback.json +31 -0
  35. package/skills/abelien-appearance/actions/appearance.points.json +41 -0
  36. package/skills/abelien-appearance/bindings.json +32 -0
  37. package/skills/abelien-appearance/contract/host-tools.generated.json +1644 -0
  38. package/skills/abelien-appearance/domain.json +73 -0
  39. package/skills/abelien-appearance/references/actions/appearance.points-fallback.generated.md +74 -0
  40. package/skills/abelien-appearance/references/actions/appearance.points.generated.md +221 -0
  41. package/skills/abelien-appearance/references/actions.generated.md +9 -0
  42. package/skills/abelien-appearance/references/points.md +63 -0
  43. package/skills/abelien-appearance/references/visual-review.md +2 -2
  44. package/skills/abelien-appearance/schemas/points-fallback-input.v1.json +16 -0
  45. package/skills/abelien-appearance/schemas/points-fallback-result.v1.json +18 -0
  46. package/skills/abelien-appearance/schemas/points-input.v1.json +36 -0
  47. package/skills/abelien-appearance/schemas/points-reading.v1.json +90 -0
  48. package/skills/abelien-appearance/schemas/points-result.v1.json +60 -0
  49. package/skills/abelien-appearance/scripts/points.mjs +169 -0
  50. package/skills/abelien-appearance/scripts/schemas.mjs +27 -0
  51. package/skills/abelien-clarify/SKILL.md +3 -5
  52. package/skills/abelien-clarify/contract/host-tools.generated.json +6 -0
  53. package/skills/abelien-clarify/domain.json +14 -0
  54. package/skills/abelien-clarify/references/actions.generated.md +7 -0
  55. package/skills/abelien-clarify/references/runtime-contract.md +9 -0
  56. package/skills/abelien-clarify/schemas/skill-result.v1.json +253 -0
  57. package/skills/abelien-clarify/scripts/validate-result.mjs +80 -0
  58. package/skills/abelien-guide/SKILL.md +2 -6
  59. package/skills/abelien-guide/references/shared-response-rules.md +1 -1
  60. package/skills/abelien-hardware/SKILL.md +44 -12
  61. package/skills/abelien-hardware/actions/hardware.change-scope.json +31 -0
  62. package/skills/abelien-hardware/actions/hardware.finalize.json +33 -0
  63. package/skills/abelien-hardware/actions/hardware.guide.json +27 -0
  64. package/skills/abelien-hardware/actions/hardware.prepare.json +28 -0
  65. package/skills/abelien-hardware/actions/hardware.replace-plan.json +31 -0
  66. package/skills/abelien-hardware/actions/hardware.resource.json +27 -0
  67. package/skills/abelien-hardware/actions/hardware.search.json +97 -0
  68. package/skills/abelien-hardware/actions/hardware.select.json +64 -0
  69. package/skills/abelien-hardware/actions/hardware.selection-commit.json +73 -0
  70. package/skills/abelien-hardware/actions/hardware.selection-propose.json +52 -0
  71. package/skills/abelien-hardware/actions/hardware.selection-recall.json +47 -0
  72. package/skills/abelien-hardware/actions/hardware.web-extract.json +28 -0
  73. package/skills/abelien-hardware/actions/hardware.web-merge.json +48 -0
  74. package/skills/abelien-hardware/actions/hardware.web-search.json +87 -0
  75. package/skills/abelien-hardware/actions/hardware.wiki.json +27 -0
  76. package/skills/abelien-hardware/actions/hardware.workflow.json +31 -0
  77. package/skills/abelien-hardware/assets/pdf-drawing-prompt.txt +1 -0
  78. package/skills/abelien-hardware/bindings.json +302 -0
  79. package/skills/abelien-hardware/contract/hardware-journey-orchestration.md +9 -1
  80. package/skills/abelien-hardware/contract/host-tools.generated.json +16216 -0
  81. package/skills/abelien-hardware/contract/online-supplement-host.md +4 -2
  82. package/skills/abelien-hardware/contract/web-evidence-contract.md +9 -5
  83. package/skills/abelien-hardware/domain.json +97 -2
  84. package/skills/abelien-hardware/references/actions/hardware.change-scope.generated.md +139 -0
  85. package/skills/abelien-hardware/references/actions/hardware.finalize.generated.md +175 -0
  86. package/skills/abelien-hardware/references/actions/hardware.guide.generated.md +37 -0
  87. package/skills/abelien-hardware/references/actions/hardware.prepare.generated.md +38 -0
  88. package/skills/abelien-hardware/references/actions/hardware.replace-plan.generated.md +120 -0
  89. package/skills/abelien-hardware/references/actions/hardware.resource.generated.md +43 -0
  90. package/skills/abelien-hardware/references/actions/hardware.search.generated.md +150 -0
  91. package/skills/abelien-hardware/references/actions/hardware.select.generated.md +178 -0
  92. package/skills/abelien-hardware/references/actions/hardware.selection-commit.generated.md +475 -0
  93. package/skills/abelien-hardware/references/actions/hardware.selection-propose.generated.md +471 -0
  94. package/skills/abelien-hardware/references/actions/hardware.selection-recall.generated.md +355 -0
  95. package/skills/abelien-hardware/references/actions/hardware.web-extract.generated.md +36 -0
  96. package/skills/abelien-hardware/references/actions/hardware.web-merge.generated.md +168 -0
  97. package/skills/abelien-hardware/references/actions/hardware.web-search.generated.md +165 -0
  98. package/skills/abelien-hardware/references/actions/hardware.wiki.generated.md +41 -0
  99. package/skills/abelien-hardware/references/actions/hardware.workflow.generated.md +94 -0
  100. package/skills/abelien-hardware/references/actions.generated.md +23 -0
  101. package/skills/abelien-hardware/references/hardware-selection/SKILL.md +13 -5
  102. package/skills/abelien-hardware/references/hardware-selection/references/query-contract.md +21 -50
  103. package/skills/abelien-hardware/references/selection-evidence-v2.md +76 -0
  104. package/skills/abelien-hardware/references/selection-service-contract.md +9 -4
  105. package/skills/abelien-hardware/schemas/change-scope-input.v1.json +29 -0
  106. package/skills/abelien-hardware/schemas/change-scope-result.v1.json +21 -0
  107. package/skills/abelien-hardware/schemas/hardware-common.v1.json +188 -0
  108. package/skills/abelien-hardware/schemas/hardware-selection-actions.v1.json +154 -0
  109. package/skills/abelien-hardware/schemas/hardware-selection.v2.json +502 -0
  110. package/skills/abelien-hardware/schemas/host-tools-input.v1.json +292 -0
  111. package/skills/abelien-hardware/schemas/proposal-input.v1.json +149 -0
  112. package/skills/abelien-hardware/schemas/proposal-result.v1.json +25 -0
  113. package/skills/abelien-hardware/schemas/replace-plan-input.v1.json +33 -0
  114. package/skills/abelien-hardware/schemas/replace-plan-result.v1.json +16 -0
  115. package/skills/abelien-hardware/schemas/search-input.v1.json +42 -0
  116. package/skills/abelien-hardware/schemas/search-result.v1.json +18 -0
  117. package/skills/abelien-hardware/schemas/select-input.v1.json +39 -0
  118. package/skills/abelien-hardware/schemas/select-result.v1.json +27 -0
  119. package/skills/abelien-hardware/schemas/web-merge-input.v1.json +52 -0
  120. package/skills/abelien-hardware/schemas/web-merge-result.v1.json +18 -0
  121. package/skills/abelien-hardware/schemas/web-search-input.v1.json +42 -0
  122. package/skills/abelien-hardware/schemas/web-search-result.v1.json +18 -0
  123. package/skills/abelien-hardware/scripts/admission.mjs +4 -2
  124. package/skills/abelien-hardware/scripts/provider-chain-contract.mjs +43 -16
  125. package/skills/abelien-hardware/scripts/replace-plan.mjs +14 -2
  126. package/skills/abelien-hardware/scripts/response-redaction.mjs +2 -1
  127. package/skills/abelien-hardware/scripts/selection-bom-use.mjs +47 -0
  128. package/skills/abelien-hardware/scripts/selection-commit.mjs +41 -0
  129. package/skills/abelien-hardware/scripts/selection-model.mjs +293 -0
  130. package/skills/abelien-hardware/scripts/selection-propose.mjs +327 -0
  131. package/skills/abelien-hardware/scripts/selection-recall.mjs +240 -0
  132. package/skills/abelien-hardware/scripts/selection-revision-store.mjs +115 -0
  133. package/skills/abelien-hardware/scripts/selection-structure.mjs +50 -0
  134. package/skills/abelien-hardware/scripts/taxonomy.mjs +25 -0
  135. package/skills/abelien-hardware/scripts/validate-replace-plan.mjs +5 -1
  136. package/skills/abelien-hardware/scripts/validate-slots.mjs +2 -1
  137. package/skills/abelien-hardware/scripts/volc-web-search.mjs +7 -4
  138. package/skills/abelien-hardware/scripts/web-common.mjs +4 -1
  139. package/skills/abelien-hardware/scripts/web-evidence-storage.mjs +6 -2
  140. package/skills/abelien-hardware/scripts/web-integrity.mjs +3 -1
  141. package/skills/abelien-hardware/scripts/web-merge.mjs +32 -3
  142. package/skills/abelien-hardware/scripts/web-pdf.mjs +135 -0
  143. package/skills/abelien-hardware/scripts/web-provider-chain.mjs +70 -17
  144. package/skills/abelien-hardware/scripts/web-receipt.mjs +4 -0
  145. package/skills/abelien-hardware/workflows/definitions/0b95321a6768f916b97b53957f0c5ad3aef7e3d484542bcda4c7ab370ee25a0f.json +272 -0
  146. package/skills/abelien-hardware/workflows/definitions/0e1c309516e5117f3ebb764503bc84dc1771b550b0f01eea994181fbd7a865e3.json +302 -0
  147. package/skills/abelien-hardware/workflows/definitions/136ef3d91d059f43e80a91338748f9d26a65be0cae6fc1ac553177f25af1faa5.json +176 -0
  148. package/skills/abelien-hardware/workflows/definitions/2444df49b516b42b6ff39036e7de94682d8a09af1154bab56b76f171c3750cb2.json +142 -0
  149. package/skills/abelien-hardware/workflows/definitions/2885447bb95dd1ae3a6ab11f5b549b51a797b56b083eb49ce1f7b3720ba2f0a8.json +304 -0
  150. package/skills/abelien-hardware/workflows/definitions/30fa7666f1e5550f8a2c463950545b3ac47c4aa6c012270aacbfbb2bca0888a9.json +144 -0
  151. package/skills/abelien-hardware/workflows/definitions/4d5012942f59fac4e98d8bec3f814b39864bc6654730e886bd3b32a4be293f64.json +348 -0
  152. package/skills/abelien-hardware/workflows/definitions/5770b5963e9f8a5185d4b9bc81011c950dee9349a666c4ef3127c6c3d486789a.json +224 -0
  153. package/skills/abelien-hardware/workflows/definitions/6f48911aa3f189eb7c3e2b239d4561a083d5ea88899205dc7f51c75a53f496d8.json +348 -0
  154. package/skills/abelien-hardware/workflows/definitions/801c406feff066849957231cab01f2bab4480a55ab6a44a0ada3224c4c696af8.json +230 -0
  155. package/skills/abelien-hardware/workflows/definitions/857a5b729a5164c4727d281d64b66941281173ebdde975a20f19a2a2acfbff3a.json +150 -0
  156. package/skills/abelien-hardware/workflows/definitions/b63cb14e876b7d274da3ecefa7e3b056a113ace7d7fb97fcd2c74b749673b6e3.json +218 -0
  157. package/skills/abelien-hardware/workflows/definitions/d391610e118c1d8603a63736d99d6025acbb6ef764395f52b148744c212a775d.json +228 -0
  158. package/skills/abelien-hardware/workflows/definitions/da4fa194d2a9f6349b563aeb4fba38e4f45f662e707c38e7eb2f8d5fcfc76e91.json +270 -0
  159. package/skills/abelien-hardware/workflows/definitions/f9cffb277c9bb2a148de9a6fd91ade3a8cd4b7af7df65023ad7ca64b0280b872.json +346 -0
  160. package/skills/abelien-hardware/workflows/user-journey-hardware-candidates.json +75 -1
  161. package/skills/abelien-hardware/workflows/user-journey-hardware-carry.json +58 -5
  162. package/skills/abelien-hardware/workflows/user-journey-hardware-replace.json +137 -7
  163. package/skills/abelien-hardware/workflows/user-journey-hardware.json +134 -6
  164. package/skills/abelien-harness/SKILL.md +12 -9
  165. package/skills/abelien-harness/contract/action-registry.md +103 -0
  166. package/skills/abelien-harness/contract/source-registry.md +9 -5
  167. package/skills/abelien-harness/contract/workflow-spec.md +15 -0
  168. package/skills/abelien-harness/contracts/README.md +112 -0
  169. package/skills/abelien-harness/contracts/examples/ActionDefinition/invalid-design-example-without-result-checks.json +24 -0
  170. package/skills/abelien-harness/contracts/examples/ActionDefinition/invalid-postcondition-without-entry.json +31 -0
  171. package/skills/abelien-harness/contracts/examples/ActionDefinition/invalid-transport-in-definition.json +32 -0
  172. package/skills/abelien-harness/contracts/examples/ActionDefinition/invalid-unknown-effect.json +33 -0
  173. package/skills/abelien-harness/contracts/examples/ActionDefinition/valid-async-web-search.json +45 -0
  174. package/skills/abelien-harness/contracts/examples/ActionDefinition/valid-implementation-dependent-build.json +32 -0
  175. package/skills/abelien-harness/contracts/examples/ActionDefinition/valid-local-change-scope.json +31 -0
  176. package/skills/abelien-harness/contracts/examples/ActionError/invalid-missing-submission-state.json +8 -0
  177. package/skills/abelien-harness/contracts/examples/ActionError/invalid-transient-after-submit.json +10 -0
  178. package/skills/abelien-harness/contracts/examples/ActionError/invalid-unknown-retried.json +9 -0
  179. package/skills/abelien-harness/contracts/examples/ActionError/valid-config-blocked.json +9 -0
  180. package/skills/abelien-harness/contracts/examples/ActionError/valid-design-conflict.json +24 -0
  181. package/skills/abelien-harness/contracts/examples/ActionError/valid-unknown-reconcile.json +9 -0
  182. package/skills/abelien-harness/contracts/examples/AppearancePoints/invalid-fallback-with-guessed-points.json +47 -0
  183. package/skills/abelien-harness/contracts/examples/AppearancePoints/invalid-missing-image-ref.json +94 -0
  184. package/skills/abelien-harness/contracts/examples/AppearancePoints/invalid-mm-without-scale.json +104 -0
  185. package/skills/abelien-harness/contracts/examples/AppearancePoints/invalid-ready-without-frame.json +100 -0
  186. package/skills/abelien-harness/contracts/examples/AppearancePoints/valid-degraded-fallback.json +27 -0
  187. package/skills/abelien-harness/contracts/examples/AppearancePoints/valid-ready.json +104 -0
  188. package/skills/abelien-harness/contracts/examples/ArtifactApplicability/invalid-current-with-reasons.json +30 -0
  189. package/skills/abelien-harness/contracts/examples/ArtifactApplicability/invalid-stale-without-reasons.json +15 -0
  190. package/skills/abelien-harness/contracts/examples/ArtifactApplicability/valid-current.json +15 -0
  191. package/skills/abelien-harness/contracts/examples/ArtifactApplicability/valid-stale-after-redraw.json +30 -0
  192. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/invalid-degraded-without-unknowns.json +17 -0
  193. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/invalid-design-example-string-inputs.json +19 -0
  194. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/invalid-fallback-on-ready.json +27 -0
  195. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/valid-degraded-fallback.json +27 -0
  196. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/valid-ready-evidence.json +17 -0
  197. package/skills/abelien-harness/contracts/examples/ArtifactNeed/invalid-accept-failed.json +6 -0
  198. package/skills/abelien-harness/contracts/examples/ArtifactNeed/invalid-empty-quality.json +4 -0
  199. package/skills/abelien-harness/contracts/examples/ArtifactNeed/valid-points-accept-degraded.json +7 -0
  200. package/skills/abelien-harness/contracts/examples/ArtifactNeed/valid-selection-ready-only.json +6 -0
  201. package/skills/abelien-harness/contracts/examples/ArtifactRecord/invalid-no-provenance.json +38 -0
  202. package/skills/abelien-harness/contracts/examples/ArtifactRecord/valid-degraded-points.json +44 -0
  203. package/skills/abelien-harness/contracts/examples/BomLine/invalid-placeholder-posing-as-purchased.json +24 -0
  204. package/skills/abelien-harness/contracts/examples/BomLine/invalid-placeholder-without-open-issues.json +20 -0
  205. package/skills/abelien-harness/contracts/examples/BomLine/invalid-purchased-without-identity-status.json +23 -0
  206. package/skills/abelien-harness/contracts/examples/BomLine/valid-designed-substitute.json +24 -0
  207. package/skills/abelien-harness/contracts/examples/BomLine/valid-placeholder.json +23 -0
  208. package/skills/abelien-harness/contracts/examples/BomLine/valid-purchased-exact.json +24 -0
  209. package/skills/abelien-harness/contracts/examples/BomLine/valid-purchased-series-only.json +24 -0
  210. package/skills/abelien-harness/contracts/examples/ConfirmationAnswer/invalid-client-operation-id.json +17 -0
  211. package/skills/abelien-harness/contracts/examples/ConfirmationAnswer/valid-accept.json +17 -0
  212. package/skills/abelien-harness/contracts/examples/ConfirmationIdentity/invalid-missing-version.json +8 -0
  213. package/skills/abelien-harness/contracts/examples/ConfirmationIdentity/invalid-zero-semantics-version.json +9 -0
  214. package/skills/abelien-harness/contracts/examples/ConfirmationIdentity/valid-selection-card.json +9 -0
  215. package/skills/abelien-harness/contracts/examples/ConfirmationRequest/invalid-no-options.json +20 -0
  216. package/skills/abelien-harness/contracts/examples/ConfirmationRequest/invalid-ui-copy-in-option.json +25 -0
  217. package/skills/abelien-harness/contracts/examples/ConfirmationRequest/valid-hardware-card.json +27 -0
  218. package/skills/abelien-harness/contracts/examples/DispatchClaim/invalid-claim-without-fence.json +44 -0
  219. package/skills/abelien-harness/contracts/examples/DispatchClaim/valid-claim.json +45 -0
  220. package/skills/abelien-harness/contracts/examples/DomainRevisionCommit/invalid-missing-expected-parent.json +18 -0
  221. package/skills/abelien-harness/contracts/examples/DomainRevisionCommit/invalid-schema-name.json +23 -0
  222. package/skills/abelien-harness/contracts/examples/DomainRevisionCommit/valid-from-parent.json +23 -0
  223. package/skills/abelien-harness/contracts/examples/DomainRevisionCommit/valid-new-lineage.json +14 -0
  224. package/skills/abelien-harness/contracts/examples/DomainRevisionHead/invalid-sequence-zero.json +13 -0
  225. package/skills/abelien-harness/contracts/examples/DomainRevisionHead/valid-head.json +13 -0
  226. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/invalid-content-not-object.json +17 -0
  227. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/invalid-first-with-parent.json +24 -0
  228. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/invalid-later-without-parent.json +24 -0
  229. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/valid-first-revision.json +20 -0
  230. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/valid-second-revision.json +28 -0
  231. package/skills/abelien-harness/contracts/examples/EffectiveAction/invalid-bound-unresolved-determinism.json +78 -0
  232. package/skills/abelien-harness/contracts/examples/EffectiveAction/invalid-unbound-with-binding-digest.json +69 -0
  233. package/skills/abelien-harness/contracts/examples/EffectiveAction/valid-bound-module.json +70 -0
  234. package/skills/abelien-harness/contracts/examples/EffectiveAction/valid-bound-studio-tool.json +78 -0
  235. package/skills/abelien-harness/contracts/examples/EffectiveAction/valid-unbound.json +69 -0
  236. package/skills/abelien-harness/contracts/examples/EventCursor/invalid-negative.json +4 -0
  237. package/skills/abelien-harness/contracts/examples/EventCursor/valid-fresh-tree.json +4 -0
  238. package/skills/abelien-harness/contracts/examples/EventEnvelope/invalid-legacy-state-name.json +14 -0
  239. package/skills/abelien-harness/contracts/examples/EventEnvelope/invalid-step-event-without-step.json +26 -0
  240. package/skills/abelien-harness/contracts/examples/EventEnvelope/invalid-zero-sequence.json +17 -0
  241. package/skills/abelien-harness/contracts/examples/EventEnvelope/valid-late-receipt-history.json +18 -0
  242. package/skills/abelien-harness/contracts/examples/EventEnvelope/valid-operation-accepted.json +17 -0
  243. package/skills/abelien-harness/contracts/examples/EventEnvelope/valid-step-waiting-on-card.json +27 -0
  244. package/skills/abelien-harness/contracts/examples/ExecutionClaim/invalid-zero-fence.json +7 -0
  245. package/skills/abelien-harness/contracts/examples/ExecutionClaim/valid-after-takeover.json +7 -0
  246. package/skills/abelien-harness/contracts/examples/ExecutionIdentity/invalid-fence-in-identity.json +19 -0
  247. package/skills/abelien-harness/contracts/examples/ExecutionIdentity/invalid-missing-target-revision.json +13 -0
  248. package/skills/abelien-harness/contracts/examples/ExecutionIdentity/valid-rework.json +20 -0
  249. package/skills/abelien-harness/contracts/examples/ExecutionIdentity/valid-web-search.json +18 -0
  250. package/skills/abelien-harness/contracts/examples/ExecutionManifest/invalid-alias-claimed-frozen.json +77 -0
  251. package/skills/abelien-harness/contracts/examples/ExecutionManifest/invalid-runtime-version-alias.json +77 -0
  252. package/skills/abelien-harness/contracts/examples/ExecutionManifest/valid-legacy-mapping.json +59 -0
  253. package/skills/abelien-harness/contracts/examples/ExecutionManifest/valid-runtime-run.json +77 -0
  254. package/skills/abelien-harness/contracts/examples/ImplementationBinding/invalid-credential-in-entry.json +23 -0
  255. package/skills/abelien-harness/contracts/examples/ImplementationBinding/invalid-module-without-export.json +19 -0
  256. package/skills/abelien-harness/contracts/examples/ImplementationBinding/invalid-studio-tool-with-path.json +24 -0
  257. package/skills/abelien-harness/contracts/examples/ImplementationBinding/invalid-unresolved-determinism.json +23 -0
  258. package/skills/abelien-harness/contracts/examples/ImplementationBinding/valid-http.json +23 -0
  259. package/skills/abelien-harness/contracts/examples/ImplementationBinding/valid-module.json +20 -0
  260. package/skills/abelien-harness/contracts/examples/ImplementationBinding/valid-studio-tool.json +23 -0
  261. package/skills/abelien-harness/contracts/examples/InputDigestSubject/invalid-shorthand-input-ref.json +22 -0
  262. package/skills/abelien-harness/contracts/examples/InputDigestSubject/invalid-transport-field.json +32 -0
  263. package/skills/abelien-harness/contracts/examples/InputDigestSubject/valid-web-search.json +31 -0
  264. package/skills/abelien-harness/contracts/examples/OperationRecord/invalid-prepared-but-submitted.json +36 -0
  265. package/skills/abelien-harness/contracts/examples/OperationRecord/invalid-unknown-not-submitted.json +36 -0
  266. package/skills/abelien-harness/contracts/examples/OperationRecord/valid-accepted.json +36 -0
  267. package/skills/abelien-harness/contracts/examples/OperationRecord/valid-prepared.json +36 -0
  268. package/skills/abelien-harness/contracts/examples/OperationRecord/valid-unknown.json +44 -0
  269. package/skills/abelien-harness/contracts/examples/PortError/invalid-unknown-code.json +4 -0
  270. package/skills/abelien-harness/contracts/examples/PortError/valid-fence-stale.json +9 -0
  271. package/skills/abelien-harness/contracts/examples/Receipt/invalid-failed-without-error.json +15 -0
  272. package/skills/abelien-harness/contracts/examples/Receipt/invalid-missing-implementation-identity.json +19 -0
  273. package/skills/abelien-harness/contracts/examples/Receipt/invalid-succeeded-with-error.json +44 -0
  274. package/skills/abelien-harness/contracts/examples/Receipt/valid-failed.json +39 -0
  275. package/skills/abelien-harness/contracts/examples/Receipt/valid-succeeded.json +20 -0
  276. package/skills/abelien-harness/contracts/examples/Ref/invalid-digest-with-prefix.json +5 -0
  277. package/skills/abelien-harness/contracts/examples/Ref/invalid-shorthand-string.json +1 -0
  278. package/skills/abelien-harness/contracts/examples/Ref/valid-concept-image.json +5 -0
  279. package/skills/abelien-harness/contracts/examples/ResourceRecord/invalid-digest-without-prefix.json +19 -0
  280. package/skills/abelien-harness/contracts/examples/ResourceRecord/invalid-renamed-meta.json +13 -0
  281. package/skills/abelien-harness/contracts/examples/ResourceRecord/valid-existing-store-shape.json +19 -0
  282. package/skills/abelien-harness/contracts/examples/RunRecord/invalid-child-without-parent-step.json +27 -0
  283. package/skills/abelien-harness/contracts/examples/RunRecord/invalid-runtime-without-manifest.json +21 -0
  284. package/skills/abelien-harness/contracts/examples/RunRecord/valid-legacy-child.json +27 -0
  285. package/skills/abelien-harness/contracts/examples/RunRecord/valid-root.json +21 -0
  286. package/skills/abelien-harness/contracts/examples/RunSnapshot/invalid-child-run-on-model-step.json +270 -0
  287. package/skills/abelien-harness/contracts/examples/RunSnapshot/invalid-legacy-state-name.json +153 -0
  288. package/skills/abelien-harness/contracts/examples/RunSnapshot/invalid-legacy-without-registration.json +266 -0
  289. package/skills/abelien-harness/contracts/examples/RunSnapshot/invalid-waiting-without-reason.json +268 -0
  290. package/skills/abelien-harness/contracts/examples/RunSnapshot/valid-cancelled-late-result-rework.json +139 -0
  291. package/skills/abelien-harness/contracts/examples/RunSnapshot/valid-legacy-hardware-subflow.json +272 -0
  292. package/skills/abelien-harness/contracts/examples/RunSnapshot/valid-parallel-join-degraded.json +153 -0
  293. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/invalid-missing-fit-envelope.json +27 -0
  294. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/invalid-uppercase-id.json +43 -0
  295. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/invalid-view-transform-fields.json +44 -0
  296. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/valid-speaker-1.json +43 -0
  297. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/valid-speaker-2.json +43 -0
  298. package/skills/abelien-harness/contracts/examples/Slot/invalid-box-with-diameter.json +29 -0
  299. package/skills/abelien-harness/contracts/examples/Slot/invalid-missing-reaction-ids.json +11 -0
  300. package/skills/abelien-harness/contracts/examples/Slot/invalid-two-level-path.json +11 -0
  301. package/skills/abelien-harness/contracts/examples/Slot/invalid-zero-quantity.json +12 -0
  302. package/skills/abelien-harness/contracts/examples/Slot/valid-shared-power.json +12 -0
  303. package/skills/abelien-harness/contracts/examples/Slot/valid-speaker-with-zone.json +33 -0
  304. package/skills/abelien-harness/contracts/examples/StepExecutionRecord/invalid-child-run-on-cli.json +23 -0
  305. package/skills/abelien-harness/contracts/examples/StepExecutionRecord/invalid-waiting-without-reason.json +19 -0
  306. package/skills/abelien-harness/contracts/examples/StepExecutionRecord/valid-subflow.json +31 -0
  307. package/skills/abelien-harness/contracts/examples/StepExecutionRecord/valid-waiting-external.json +23 -0
  308. package/skills/abelien-harness/contracts/examples/TargetRevisionRef/invalid-extra-parent.json +6 -0
  309. package/skills/abelien-harness/contracts/examples/TargetRevisionRef/valid-revision-4.json +5 -0
  310. package/skills/abelien-harness/contracts/examples/WaitReason/invalid-configuration-with-source-error.json +12 -0
  311. package/skills/abelien-harness/contracts/examples/WaitReason/invalid-confirmation-without-subject.json +4 -0
  312. package/skills/abelien-harness/contracts/examples/WaitReason/valid-budget.json +6 -0
  313. package/skills/abelien-harness/contracts/examples/WaitReason/valid-configuration.json +12 -0
  314. package/skills/abelien-harness/contracts/examples/WaitReason/valid-confirmation.json +13 -0
  315. package/skills/abelien-harness/contracts/examples/WaitReason/valid-data-dependency.json +18 -0
  316. package/skills/abelien-harness/contracts/examples/expectations.json +318 -0
  317. package/skills/abelien-harness/contracts/index.d.mts +32 -0
  318. package/skills/abelien-harness/contracts/index.mjs +47 -0
  319. package/skills/abelien-harness/contracts/ports/memory.d.mts +12 -0
  320. package/skills/abelien-harness/contracts/ports/memory.mjs +403 -0
  321. package/skills/abelien-harness/contracts/ports/ports.d.ts +137 -0
  322. package/skills/abelien-harness/contracts/schemas/action.v1.json +330 -0
  323. package/skills/abelien-harness/contracts/schemas/artifact.v1.json +102 -0
  324. package/skills/abelien-harness/contracts/schemas/confirmation.v1.json +64 -0
  325. package/skills/abelien-harness/contracts/schemas/cross-domain.v1.json +241 -0
  326. package/skills/abelien-harness/contracts/schemas/domain-revision.v1.json +68 -0
  327. package/skills/abelien-harness/contracts/schemas/error.v1.json +70 -0
  328. package/skills/abelien-harness/contracts/schemas/event.v1.json +204 -0
  329. package/skills/abelien-harness/contracts/schemas/execution-identity.v1.json +72 -0
  330. package/skills/abelien-harness/contracts/schemas/ref.v1.json +43 -0
  331. package/skills/abelien-harness/contracts/schemas/run-snapshot.v1.json +176 -0
  332. package/skills/abelien-harness/contracts/schemas/store.v1.json +209 -0
  333. package/skills/abelien-harness/contracts/types.d.ts +660 -0
  334. package/skills/abelien-harness/contracts/validate.mjs +182 -0
  335. package/skills/abelien-harness/runtime/README.md +171 -0
  336. package/skills/abelien-harness/runtime/actions.mjs +88 -0
  337. package/skills/abelien-harness/runtime/conformance/README.md +34 -0
  338. package/skills/abelien-harness/runtime/conformance/artifact-store.mjs +167 -0
  339. package/skills/abelien-harness/runtime/conformance/domain-revision-store.mjs +121 -0
  340. package/skills/abelien-harness/runtime/conformance/execution-store.mjs +346 -0
  341. package/skills/abelien-harness/runtime/conformance/fixtures.mjs +56 -0
  342. package/skills/abelien-harness/runtime/conformance/index.mjs +74 -0
  343. package/skills/abelien-harness/runtime/engine.mjs +1358 -0
  344. package/skills/abelien-harness/runtime/errors.mjs +80 -0
  345. package/skills/abelien-harness/runtime/executors.mjs +123 -0
  346. package/skills/abelien-harness/runtime/flow-graph.mjs +246 -0
  347. package/skills/abelien-harness/runtime/graph.mjs +534 -0
  348. package/skills/abelien-harness/runtime/ids.mjs +25 -0
  349. package/skills/abelien-harness/runtime/index.mjs +25 -0
  350. package/skills/abelien-harness/runtime/kernel.mjs +65 -0
  351. package/skills/abelien-harness/runtime/legacy/definitions.mjs +115 -0
  352. package/skills/abelien-harness/runtime/legacy/external-recovery.mjs +48 -0
  353. package/skills/abelien-harness/runtime/legacy/workflow-store.mjs +183 -0
  354. package/skills/abelien-harness/runtime/model-actions.md +57 -0
  355. package/skills/abelien-harness/runtime/model-actions.mjs +52 -0
  356. package/skills/abelien-harness/runtime/ports/file/artifact-store.mjs +103 -0
  357. package/skills/abelien-harness/runtime/ports/file/common.mjs +100 -0
  358. package/skills/abelien-harness/runtime/ports/file/execution-store.mjs +248 -0
  359. package/skills/abelien-harness/runtime/ports/file/index.mjs +23 -0
  360. package/skills/abelien-harness/runtime/ports/file/resource-store.mjs +51 -0
  361. package/skills/abelien-harness/runtime/snapshot.mjs +96 -0
  362. package/skills/abelien-harness/runtime/task-view/README.md +54 -0
  363. package/skills/abelien-harness/runtime/task-view/index.mjs +344 -0
  364. package/skills/abelien-harness/runtime/testing/index.mjs +123 -0
  365. package/skills/abelien-harness/runtime/testing/scenarios.mjs +343 -0
  366. package/skills/abelien-harness/runtime/workflow/flows.mjs +68 -0
  367. package/skills/abelien-harness/runtime/workflow/httl.mjs +77 -0
  368. package/skills/abelien-harness/runtime/workflow/index.mjs +190 -0
  369. package/skills/abelien-harness/runtime/workflow/legacy-flow.mjs +183 -0
  370. package/skills/abelien-harness/runtime/workflow/view.mjs +66 -0
  371. package/skills/abelien-harness/scripts/ab.mjs +49 -607
  372. package/skills/abelien-harness/scripts/action-cli.mjs +54 -0
  373. package/skills/abelien-harness/scripts/action-docs.mjs +308 -0
  374. package/skills/abelien-harness/scripts/action-registry.mjs +433 -0
  375. package/skills/abelien-harness/scripts/machine-state.mjs +21 -0
  376. package/skills/abelien-harness/scripts/receipt.mjs +5 -1
  377. package/skills/abelien-harness/scripts/source-registry.mjs +4 -3
  378. package/skills/abelien-harness/scripts/store.mjs +212 -0
  379. package/skills/abelien-harness/scripts/studio.mjs +1 -1
  380. package/skills/abelien-harness/scripts/template.mjs +22 -0
  381. package/skills/abelien-harness/scripts/web/common.mjs +2 -2
  382. package/skills/abelien-harness/scripts/web/deepseek.mjs +50 -0
  383. package/skills/abelien-harness/scripts/web/pdf-reader.mjs +105 -0
  384. package/skills/abelien-harness/scripts/web/search.mjs +37 -0
  385. package/skills/abelien-harness/scripts/web/source-registry.mjs +2 -0
  386. package/skills/abelien-harness/scripts/web/vision.mjs +85 -0
  387. package/skills/abelien-reference/SKILL.md +6 -6
  388. package/skills/abelien-reference/actions/reference.finalize.json +48 -0
  389. package/skills/abelien-reference/actions/reference.page.json +28 -0
  390. package/skills/abelien-reference/actions/reference.research.json +68 -0
  391. package/skills/abelien-reference/bindings.json +78 -0
  392. package/skills/abelien-reference/contract/catalog-reference.md +51 -0
  393. package/skills/abelien-reference/contract/host-responsibilities.md +4 -2
  394. package/skills/abelien-reference/contract/host-tools.generated.json +2632 -0
  395. package/skills/abelien-reference/domain.json +10 -3
  396. package/skills/abelien-reference/fixtures/catalog/speaker.json +390 -0
  397. package/skills/abelien-reference/fixtures/create.final.json +1 -0
  398. package/skills/abelien-reference/fixtures/restore.collected.json +1 -0
  399. package/skills/abelien-reference/fixtures/restore.final.json +1 -0
  400. package/skills/abelien-reference/references/actions/reference.finalize.generated.md +173 -0
  401. package/skills/abelien-reference/references/actions/reference.page.generated.md +40 -0
  402. package/skills/abelien-reference/references/actions/reference.research.generated.md +196 -0
  403. package/skills/abelien-reference/references/actions.generated.md +10 -0
  404. package/skills/abelien-reference/references/research-contract.md +10 -38
  405. package/skills/abelien-reference/schemas/catalog-reference.v1.json +306 -0
  406. package/skills/abelien-reference/schemas/finalize-input.v1.json +16 -0
  407. package/skills/abelien-reference/schemas/host-tools.v1.json +31 -0
  408. package/skills/abelien-reference/schemas/reference-evidence.v1.json +8 -5
  409. package/skills/abelien-reference/schemas/research-input.v1.json +149 -0
  410. package/skills/abelien-reference/scripts/catalog-reference.mjs +248 -0
  411. package/skills/abelien-reference/scripts/evidence.mjs +21 -10
  412. package/skills/abelien-reference/scripts/research.mjs +57 -25
  413. package/skills/abelien-structure/SKILL.md +49 -35
  414. package/skills/abelien-structure/actions/cad.assets.json +24 -0
  415. package/skills/abelien-structure/actions/cad.build.json +29 -0
  416. package/skills/abelien-structure/actions/cad.fallback.json +29 -0
  417. package/skills/abelien-structure/actions/cad.precheck.json +31 -0
  418. package/skills/abelien-structure/actions/structure.assets-request.json +36 -0
  419. package/skills/abelien-structure/actions/structure.cad-assemble.json +56 -0
  420. package/skills/abelien-structure/actions/structure.cad-check.json +51 -0
  421. package/skills/abelien-structure/actions/structure.layout-check.json +36 -0
  422. package/skills/abelien-structure/actions/structure.layout-request.json +36 -0
  423. package/skills/abelien-structure/actions/structure.prelude.json +41 -0
  424. package/skills/abelien-structure/actions/structure.swap-candidates.json +31 -0
  425. package/skills/abelien-structure/bindings.json +181 -0
  426. package/skills/abelien-structure/contract/host-tools.generated.json +28972 -0
  427. package/skills/abelien-structure/domain.json +205 -0
  428. package/skills/abelien-structure/flows/user-journey-cad.json +336 -0
  429. package/skills/abelien-structure/references/actions/cad.assets.generated.md +81 -0
  430. package/skills/abelien-structure/references/actions/cad.build.generated.md +37 -0
  431. package/skills/abelien-structure/references/actions/cad.fallback.generated.md +426 -0
  432. package/skills/abelien-structure/references/actions/cad.precheck.generated.md +46 -0
  433. package/skills/abelien-structure/references/actions/structure.assets-request.generated.md +511 -0
  434. package/skills/abelien-structure/references/actions/structure.cad-assemble.generated.md +315 -0
  435. package/skills/abelien-structure/references/actions/structure.cad-check.generated.md +329 -0
  436. package/skills/abelien-structure/references/actions/structure.layout-check.generated.md +414 -0
  437. package/skills/abelien-structure/references/actions/structure.layout-request.generated.md +364 -0
  438. package/skills/abelien-structure/references/actions/structure.prelude.generated.md +569 -0
  439. package/skills/abelien-structure/references/actions/structure.swap-candidates.generated.md +160 -0
  440. package/skills/abelien-structure/references/actions.generated.md +18 -0
  441. package/skills/abelien-structure/references/cad-functions.generated.md +540 -0
  442. package/skills/abelien-structure/references/cad-modules.md +68 -0
  443. package/skills/abelien-structure/references/handoff.md +8 -13
  444. package/skills/abelien-structure/references/skeleton.md +83 -0
  445. package/skills/abelien-structure/references/structure-reasonableness.md +5 -5
  446. package/skills/abelien-structure/schemas/asset-request.v1.json +61 -0
  447. package/skills/abelien-structure/schemas/cad-assemble-input.v1.json +20 -0
  448. package/skills/abelien-structure/schemas/cad-build.v1.json +422 -0
  449. package/skills/abelien-structure/schemas/cad-candidate.v1.json +50 -0
  450. package/skills/abelien-structure/schemas/cad-check-input.v1.json +24 -0
  451. package/skills/abelien-structure/schemas/cad-fallback-input.v1.json +39 -0
  452. package/skills/abelien-structure/schemas/cad-flow-input.v1.json +141 -0
  453. package/skills/abelien-structure/schemas/cad-modules.v1.json +163 -0
  454. package/skills/abelien-structure/schemas/cad-result.v1.json +231 -0
  455. package/skills/abelien-structure/schemas/cad-source.v1.json +157 -0
  456. package/skills/abelien-structure/schemas/component-assets.v1.json +44 -0
  457. package/skills/abelien-structure/schemas/layout-check-input.v1.json +13 -0
  458. package/skills/abelien-structure/schemas/layout-check-result.v1.json +57 -0
  459. package/skills/abelien-structure/schemas/layout-proposal.v1.json +72 -0
  460. package/skills/abelien-structure/schemas/layout-request-input.v1.json +96 -0
  461. package/skills/abelien-structure/schemas/layout-request.v1.json +108 -0
  462. package/skills/abelien-structure/schemas/prelude-input.v1.json +20 -0
  463. package/skills/abelien-structure/schemas/prelude.v1.json +459 -0
  464. package/skills/abelien-structure/schemas/skeleton.v1.json +318 -0
  465. package/skills/abelien-structure/schemas/swap-candidates-input.v1.json +50 -0
  466. package/skills/abelien-structure/schemas/swap-candidates-result.v1.json +46 -0
  467. package/skills/abelien-structure/scripts/cad.mjs +802 -0
  468. package/skills/abelien-structure/scripts/geometry.mjs +192 -0
  469. package/skills/abelien-structure/scripts/layout.mjs +657 -0
  470. package/skills/abelien-structure/scripts/schemas.mjs +34 -0
  471. package/skills/abelien-structure/scripts/swap.mjs +79 -0
  472. package/skills/abelien-structure-worker/SKILL.md +38 -8
  473. package/skills/abelien-structure-worker/domain.json +15 -1
  474. package/skills/abelien-structure-worker/worker/abelien_cad.py +50 -4
  475. package/skills/abelien-structure-worker/worker/assembly-validation.mjs +3 -2
  476. package/skills/abelien-structure-worker/worker/asset_probe.py +119 -0
  477. package/skills/abelien-structure-worker/worker/cad.py +81 -5
  478. package/skills/abelien-structure-worker/worker/cli-adapter.mjs +20 -1
  479. package/skills/abelien-structure-worker/worker/jobs.mjs +92 -35
  480. package/skills/abelien-structure-worker/worker/main.mjs +24 -3
  481. package/skills/abelien-structure-worker/worker/native.mjs +3 -2
  482. package/skills/abelien-structure-worker/worker/representation.mjs +2 -1
  483. package/skills/abelien-structure-worker/worker/source-contract.mjs +4 -3
  484. package/skills/abelien-workspace/SKILL.md +16 -10
  485. package/skills/abelien-workspace/actions/component.search.json +27 -0
  486. package/skills/abelien-workspace/actions/image.generate.json +29 -0
  487. package/skills/abelien-workspace/actions/image.import.json +30 -0
  488. package/skills/abelien-workspace/actions/question.card.json +26 -0
  489. package/skills/abelien-workspace/actions/studio.prepare.json +28 -0
  490. package/skills/abelien-workspace/actions/visual.review.json +31 -0
  491. package/skills/abelien-workspace/actions/workspace.hardware-reselect-input.json +15 -0
  492. package/skills/abelien-workspace/actions/workspace.intake-complete.json +31 -0
  493. package/skills/abelien-workspace/actions/workspace.intake-route.json +31 -0
  494. package/skills/abelien-workspace/actions/workspace.intake-wait.json +31 -0
  495. package/skills/abelien-workspace/actions/workspace.journey-next.json +30 -0
  496. package/skills/abelien-workspace/actions/workspace.lanes-next.json +30 -0
  497. package/skills/abelien-workspace/assets/creation-start-flow.json +316 -0
  498. package/skills/abelien-workspace/assets/hardware-reselect-flow.json +23 -0
  499. package/skills/abelien-workspace/assets/journey-stage-plan.json +1107 -79
  500. package/skills/abelien-workspace/assets/lane-plan.json +52 -5
  501. package/skills/abelien-workspace/bindings.json +216 -0
  502. package/skills/abelien-workspace/contract/host-tools.generated.json +9242 -0
  503. package/skills/abelien-workspace/domain.json +79 -3
  504. package/skills/abelien-workspace/flows/creation.create.json +1349 -0
  505. package/skills/abelien-workspace/flows/creation.modify.json +1353 -0
  506. package/skills/abelien-workspace/flows/creation.remix.json +506 -0
  507. package/skills/abelien-workspace/flows/creation.restore.json +1249 -0
  508. package/skills/abelien-workspace/references/actions/component.search.generated.md +35 -0
  509. package/skills/abelien-workspace/references/actions/image.generate.generated.md +31 -0
  510. package/skills/abelien-workspace/references/actions/image.import.generated.md +31 -0
  511. package/skills/abelien-workspace/references/actions/question.card.generated.md +39 -0
  512. package/skills/abelien-workspace/references/actions/studio.prepare.generated.md +37 -0
  513. package/skills/abelien-workspace/references/actions/visual.review.generated.md +41 -0
  514. package/skills/abelien-workspace/references/actions/workspace.hardware-reselect-input.generated.md +489 -0
  515. package/skills/abelien-workspace/references/actions/workspace.intake-complete.generated.md +187 -0
  516. package/skills/abelien-workspace/references/actions/workspace.intake-route.generated.md +184 -0
  517. package/skills/abelien-workspace/references/actions/workspace.intake-wait.generated.md +175 -0
  518. package/skills/abelien-workspace/references/actions/workspace.journey-next.generated.md +89 -0
  519. package/skills/abelien-workspace/references/actions/workspace.lanes-next.generated.md +59 -0
  520. package/skills/abelien-workspace/references/actions.generated.md +19 -0
  521. package/skills/abelien-workspace/references/creation-intake.md +44 -0
  522. package/skills/abelien-workspace/references/delivery-policy.md +27 -0
  523. package/skills/abelien-workspace/references/harness-binding.md +10 -15
  524. package/skills/abelien-workspace/references/journey-stage-plan.md +121 -43
  525. package/skills/abelien-workspace/references/product-flow.md +86 -0
  526. package/skills/abelien-workspace/references/studio-visual-contract.md +11 -0
  527. package/skills/abelien-workspace/references/user-journey.md +8 -8
  528. package/skills/abelien-workspace/schemas/appearance-points-reply.v1.json +27 -0
  529. package/skills/abelien-workspace/schemas/creation-intake.v1.json +566 -0
  530. package/skills/abelien-workspace/schemas/delivery-policy.v1.json +815 -0
  531. package/skills/abelien-workspace/schemas/hardware-reselect-input.v1.json +21 -0
  532. package/skills/abelien-workspace/schemas/hardware-reselect-result.v1.json +15 -0
  533. package/skills/abelien-workspace/schemas/hardware-result-reply.v1.json +67 -0
  534. package/skills/abelien-workspace/schemas/host-success-reply.v1.json +18 -0
  535. package/skills/abelien-workspace/schemas/host-tools.v1.json +152 -0
  536. package/skills/abelien-workspace/schemas/journey-next-input.v1.json +52 -0
  537. package/skills/abelien-workspace/schemas/journey-next-result.v1.json +92 -0
  538. package/skills/abelien-workspace/schemas/lanes-next-input.v1.json +49 -0
  539. package/skills/abelien-workspace/schemas/lanes-next-result.v1.json +54 -0
  540. package/skills/abelien-workspace/schemas/plan-common.v1.json +68 -0
  541. package/skills/abelien-workspace/schemas/reference-final-reply.v1.json +18 -0
  542. package/skills/abelien-workspace/schemas/skeleton-reply.v1.json +104 -0
  543. package/skills/abelien-workspace/schemas/studio-visual-spec.v1.json +454 -0
  544. package/skills/abelien-workspace/scripts/creation-intake.mjs +87 -0
  545. package/skills/abelien-workspace/scripts/creation-tasks.mjs +323 -0
  546. package/skills/abelien-workspace/scripts/delivery-policy.mjs +176 -0
  547. package/skills/abelien-workspace/scripts/flow-compile.mjs +291 -0
  548. package/skills/abelien-workspace/scripts/journey-next.mjs +42 -41
  549. package/skills/abelien-workspace/scripts/lanes-next.mjs +8 -10
  550. package/skills/abelien-workspace/scripts/plans.mjs +76 -0
  551. package/skills/abelien-workspace-host/SKILL.md +25 -0
  552. package/skills/abelien-workspace-host/actions/workspace.admission.json +30 -0
  553. package/skills/abelien-workspace-host/actions/workspace.delivery-claims.json +30 -0
  554. package/skills/abelien-workspace-host/bindings.json +32 -0
  555. package/skills/abelien-workspace-host/contract/host-tools.generated.json +3630 -0
  556. package/skills/abelien-workspace-host/domain.json +42 -0
  557. package/skills/abelien-workspace-host/references/actions/workspace.admission.generated.md +217 -0
  558. package/skills/abelien-workspace-host/references/actions/workspace.delivery-claims.generated.md +145 -0
  559. package/skills/abelien-workspace-host/references/actions.generated.md +9 -0
  560. package/skills/abelien-workspace-host/schemas/delivery-policy.v1.json +18 -0
  561. package/skills/abelien-workspace-host/scripts/delivery-policy.mjs +2 -0
  562. package/skills/abelien-structure/contract/run-stage-internals.md +0 -5
  563. package/skills/abelien-structure/references/build123d-execution.md +0 -71
  564. package/skills/abelien-structure/references/bundle-quality.md +0 -28
  565. package/skills/abelien-structure/scripts/check_bundle.py +0 -197
  566. package/skills/abelien-structure/scripts/run_stage.py +0 -265
  567. /package/skills/{abelien-structure → abelien-appearance}/scripts/check_visual_review.py +0 -0
package/.env.example CHANGED
@@ -41,6 +41,15 @@ ABELIEN_SOURCE_REGISTRY_TIMEOUT_MS=30000
41
41
  # ... or an absolute local directory for tests, offline runs and a single local host.
42
42
  ABELIEN_SOURCE_REGISTRY_DIR=
43
43
 
44
+ # PDF reading for the web fallback (registry mode): the host installs mupdf.js separately (npm "mupdf") and points
45
+ # at its dist/mupdf.js; drawing pages are read by an Ark vision endpoint (deepseek-v4-1-flash). Leave empty to
46
+ # still fetch and register PDFs, with unreadable parts recorded as unavailable.
47
+ ABELIEN_PDF_ENGINE_MODULE=
48
+ ABELIEN_SOURCE_VISION_ENDPOINT_ID=
49
+ ABELIEN_SOURCE_VISION_API_KEY=
50
+ ABELIEN_SOURCE_VISION_TIMEOUT_MS=60000
51
+ ABELIEN_SOURCE_VISION_CONCURRENCY=4
52
+
44
53
  # Optional loopback HTTP wrapper only; main hardware.select executes locally without a URL.
45
54
  # At least 32 bytes, keep the real token in a private env file. Do not expose this server publicly.
46
55
  ABELIEN_HARDWARE_SELECT_TOKEN=
@@ -52,7 +61,12 @@ ABELIEN_HARDWARE_SELECT_TOKEN=
52
61
  ABELIEN_HARDWARE_WEB_PRISMER=disabled
53
62
  # Volc subscription/pay-as-you-go search Keys are distinct from Ark generation Keys.
54
63
  PRISMER_API_KEY=
64
+ # Web search provider for hardware, reference and algorithm research: volc (default when empty) or deepseek.
65
+ # Independent of the model provider; each hardware evidence pins the provider it first used.
66
+ WEB_SEARCH_PROVIDER=
55
67
  WEB_SEARCH_API_KEY=
68
+ # DeepSeek Open Platform search Key (POST https://api.deepseek.com/v1/tools/search); never falls back to WEB_SEARCH_API_KEY.
69
+ WEB_SEARCH_DEEPSEEK_API_KEY=
56
70
  ABELIEN_HARDWARE_WEB_SEARCH_TIMEOUT_MS=30000
57
71
  ABELIEN_HARDWARE_WEB_PAGE_TIMEOUT_MS=30000
58
72
  # Host budget and loop abort independently bound Parse; unknown POSTs cannot retry.
package/README.md CHANGED
@@ -8,13 +8,14 @@ npx 可安装的多 agent skill harness:**通用内核 + 可插拔域包**。
8
8
  定位资源(如外观ID) → 调度能力(如 3D 模型生成/替换) → 组建状态管理 → workflow 编排
9
9
  ```
10
10
 
11
- 内核对领域不感知,随包分发 11 个 bundle:9 个 Agent 包装进 Agent 的 skills 目录,2 个宿主包(`kind: host`)只供宿主使用,安装器默认不装。产品层:[abelien-workspace](skills/abelien-workspace/SKILL.md)(旅程、版本与确认)·
11
+ 内核对领域不感知,随包分发 12 个 bundle:9 个 Agent 包装进 Agent 的 skills 目录,3 个宿主包(`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
13
  领域层:[abelien-hardware](skills/abelien-hardware/SKILL.md)(三级分类、OSS 召回、联网补位、本地选型与修订)·
14
- [abelien-algorithm](skills/abelien-algorithm/SKILL.md)(基于已验证硬件、官方资料优先的联网算法选型)·
15
- [abelien-appearance](skills/abelien-appearance/SKILL.md) 与 [abelien-structure](skills/abelien-structure/SKILL.md)(外观与机械结构)·
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` 使用)。
14
+ [abelien-algorithm](skills/abelien-algorithm/SKILL.md)(从需求拆能力并检索实现,硬件登记后复核绑定)·
15
+ [abelien-appearance](skills/abelien-appearance/SKILL.md) 与 [abelien-structure](skills/abelien-structure/SKILL.md)(外观与机械结构;读图出点位、骨架布局与换件条件的确定性动作)·
16
+ 宿主包:[abelien-structure-worker](skills/abelien-structure-worker/SKILL.md)(Structure Worker 与 15 个 `structure.*` 宿主专用能力)·
17
+ [abelien-3dgen](skills/abelien-3dgen/SKILL.md)(四家 provider 的 3D 构件生成,经 `ab generate 3d` 与宿主 `mesh.generate` 使用)·
18
+ [abelien-workspace-host](skills/abelien-workspace-host/SKILL.md)(产品准入与四维交付声明)。
18
19
 
19
20
  ## Quickstart
20
21
 
@@ -128,9 +129,9 @@ tool-receipt successor 与已有可信 runtime decision 也可以取得后续 co
128
129
  现行入口不再维护独立的“主控业务提示词”。宿主指令只交代身份、skills 的用途、读取/调用方式与授权边界;具体对话调度放在 guide,作品旅程与业务规则放在 workspace,领域工作放在对应 skill。它们可以由同一个宿主 Agent 执行,不需要额外的主控 Agent;旧 controller 文档仅作历史参考,不与 skills 流程重复注入。
129
130
 
130
131
  - 对话调度与沟通由 [abelien-guide](skills/abelien-guide/SKILL.md) 负责:组织上下文、调用领域 skill、呈现问题和结果;阶段、版本和确认条件统一读取 workspace。
131
- - 作品规则由 [abelien-workspace](skills/abelien-workspace/SKILL.md) 维护:完整 A1–C、采用与版本、组合检查、确认和交付恢复。作品推进没有 workflow:宿主持有作品状态,A1 通过之后的阶段与规则取 `workspace.journey-next`;产品服务的实际接入边界见 workspace 调用说明。
132
+ - 作品规则由 [abelien-workspace](skills/abelien-workspace/SKILL.md) 维护:完整 A1–C、采用与版本、组合检查、确认和交付恢复。新创作从 `creation.start` 进入,由 runtime 推进;`workspace.journey-next` 只投影阶段与规则。作品状态与产品服务的实际接入边界见 workspace 调用说明。
132
133
  - 需求澄清为 [abelien-clarify](skills/abelien-clarify/SKILL.md):把用户原话整理成 requirements、区分用户事实与系统假设、只问阻塞当前操作的问题,附只读校验脚本;共用表达规则随 guide 的 references 分发。两者自 2026-10-11 起以本仓为唯一编辑源,直接在 `skills/abelien-clarify/` 与 `skills/abelien-guide/references/` 修改,见下文「快照来源」。
133
- - 各 bundle 均为标准 `SKILL.md`(含 name/description/license/compatibility,
134
+ - 各 bundle 均为标准 `SKILL.md`(含 name/description 与适用的 compatibility;不强制 license 字段或值,
134
135
  兼容 claude-code / hermes / pi),agent 按 description 触发词路由;claude-code 与
135
136
  codex 的双入口收敛(根 `CLAUDE.md` / `AGENTS.md`)见 [docs/architecture/host-adapters.md](docs/architecture/host-adapters.md)。
136
137
  - workflow 驱动循环:`run` → 返回 `awaiting_agent` 时读 `steps[cursor].instruction`,
@@ -143,11 +144,11 @@ tool-receipt successor 与已有可信 runtime decision 也可以取得后续 co
143
144
 
144
145
  ## 产品旅程与 PRD
145
146
 
146
- 完整规则统一维护在 [workspace 用户旅程](skills/abelien-workspace/references/user-journey.md),旅程规则只有两处来源:正文维护 A1–C 判定与产品规则;A1 通过之后到交付首版的阶段顺序、逐阶段规则与允许动作只在[阶段计划](skills/abelien-workspace/assets/journey-stage-plan.json)维护,正文 §5 的一览由 `npm run render:journey-plan` 从它生成、测试比对。作品推进没有 workflow:任何宿主都持有自己的作品状态,按 `workspace.journey-next` 取下一阶段,再运行该阶段需要的领域 workflow;workflow 只承载单一领域内的多步流程,不替宿主判定作品完成。具体做法及旧实例处理见 [调用说明](skills/abelien-workspace/references/harness-binding.md)。
147
+ 完整规则统一维护在 [workspace 用户旅程](skills/abelien-workspace/references/user-journey.md),旅程规则只有两处来源:正文维护 A1–C 判定与产品规则;A1 通过之后到交付首版的阶段顺序、逐阶段规则与允许动作只在[阶段计划](skills/abelien-workspace/assets/journey-stage-plan.json)维护,正文 §5 的一览由 `npm run render:journey-plan` 从它生成、测试比对;它同时写清每个节点真正依赖什么,按意图编译成 runtime 执行的[创作流程图](skills/abelien-workspace/references/product-flow.md)(`npm run render:flows`),`journey-next` 是这张图的阶段投影。新创作从 `creation.start` 提交冻结原话与上下文,由 runtime 推进并行、汇合、确认与降级;宿主读取运行结果并核对真实作品状态,不另按 `journey-next` 编写阶段循环。独立领域 workflow 仍可单独使用,其成功不等于作品完成。具体做法及旧实例处理见 [调用说明](skills/abelien-workspace/references/harness-binding.md)。
147
148
 
148
149
  ```bash
149
- node skills/abelien-harness/scripts/ab.mjs --workdir <作品工作目录> capability run workspace.journey-next --input '{"intent":"create","artifacts":{"reference_final":true}}'
150
- # → 下一阶段、goal、directives 与 actions;宿主按它执行,硬件阶段再运行 user-journey-hardware
150
+ node skills/abelien-harness/scripts/ab.mjs --workdir <作品工作目录> capability run workspace.journey-next --input '{"intent":"create","locks":{"shape":false},"artifacts":{"reference_final":true}}'
151
+ # → 阶段投影、goal、directives 与 actions;实际创作按原 runtime 运行推进
151
152
  ```
152
153
 
153
154
  ### PRD 随需求对话维护
package/bin/cli.mjs CHANGED
@@ -5,6 +5,7 @@ import { fileURLToPath } from "node:url";
5
5
  import { install, update, remove, listInstalled } from "../lib/installer.mjs";
6
6
  import { TARGET_NAMES } from "../targets/registry.mjs";
7
7
  import { consumeStudioReceipt, readStudioReceipt } from "../skills/abelien-harness/scripts/receipt.mjs";
8
+ import { runCatalogReferenceCli } from "../skills/abelien-reference/scripts/catalog-reference.mjs";
8
9
 
9
10
  const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
10
11
  const args = process.argv.slice(2);
@@ -40,7 +41,8 @@ function print(results) {
40
41
  function usage() {
41
42
  console.error(`usage: abelien-harness <install|update|remove|list> [--target ${TARGET_NAMES.join("|")}|all] [--project] [--skills-dir <dir>] [--force] [--include-host]
42
43
  abelien-harness receipt consume --file <path> [--workdir <dir>]
43
- abelien-harness receipt get --wait <waitId> [--digest <sha256>] [--workdir <dir>]`);
44
+ abelien-harness receipt get --wait <waitId> [--digest <sha256>] [--workdir <dir>]
45
+ abelien-harness catalog <check|seal> --file <record.json|->`);
44
46
  process.exit(2);
45
47
  }
46
48
 
@@ -61,6 +63,14 @@ try {
61
63
  } else usage();
62
64
  break;
63
65
  }
66
+ case "catalog": {
67
+ // catalog.reference.v1 的校验/封装,供图鉴发布管线与宿主直接调用;单行 JSON,exit 0/1/2 与脚本直跑一致。
68
+ const { stdout, stderr, exitCode } = runCatalogReferenceCli(args.slice(1));
69
+ if (stdout) process.stdout.write(stdout + "\n");
70
+ if (stderr) process.stderr.write(stderr + "\n");
71
+ process.exitCode = exitCode;
72
+ break;
73
+ }
64
74
  default: usage();
65
75
  }
66
76
  } catch (e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abelien-harness",
3
- "version": "0.14.0",
3
+ "version": "0.16.0",
4
4
  "description": "npx-installable multi-agent skill harness: generic kernel + pluggable domain packs",
5
5
  "type": "module",
6
6
  "engines": {
@@ -21,6 +21,9 @@
21
21
  "test": "node --test",
22
22
  "eval": "node eval/run.mjs",
23
23
  "render:journey-plan": "node tools/render-journey-plan.mjs",
24
+ "render:actions": "node tools/render-actions.mjs",
25
+ "render:cad-functions": "node tools/render-cad-functions.mjs",
26
+ "render:flows": "node tools/render-flows.mjs",
24
27
  "prepare": "node scripts/install-hooks.mjs",
25
28
  "branch:new": "node scripts/new-branch.mjs",
26
29
  "sync": "node scripts/sync.mjs",
@@ -34,6 +37,5 @@
34
37
  "verify:hardware-search-index": "node tools/hardware-index/verify-search-index.mjs",
35
38
  "smoke:hardware-search": "node tools/hardware-index/smoke-search-index.mjs",
36
39
  "prepack": "npm run validate:hardware-selection-snapshot"
37
- },
38
- "license": "MIT"
40
+ }
39
41
  }
@@ -1,13 +1,10 @@
1
1
  ---
2
2
  name: abelien-3dgen
3
3
  description: 宿主包:3D 构件生成的四家 provider(Meshy/Hunyuan/Tripo/Ark)声明式 profile 与 22 款模型目录,供内核 ab generate 3d 引擎与宿主 mesh.generate 使用。不装进 Agent 的 skills 目录;模型侧的网格生成经宿主工具完成。
4
- license: MIT
5
4
  metadata:
6
5
  kind: host
7
6
  category: host-bundle
8
- allowed-tools:
9
- - Bash
10
- - Read
7
+ allowed-tools: Bash Read
11
8
  ---
12
9
 
13
10
  # abelien-3dgen — 3D 生成宿主包
@@ -22,6 +19,14 @@ allowed-tools:
22
19
 
23
20
  局部外观编辑由 appearance 主导,默认单图,Tripo 可作固定配置的默认供应商;使用[局部交接](../abelien-appearance/references/local-component-edit.md)。Web 的 mesh.generate@1 必须走[受信宿主 API](references/host-api.md),复用原 F4 身份与预算;模糊提交保持 unknown,不能再次提交。普通纹理单图 tripo-image-v3.1 仍 verified:false;独立无纹理低面数 tripo-image-v3.1-engineering-lowpoly 已经单次真实 API/30 credits 对账及有界工程资格验证,见[资格证据与限制](references/engineering-lowpoly-qualification.md)。该验证只覆盖声明的请求与单样例,2000面只是请求参数,不保证任意网格的拓扑、接口或制造质量。显式 operator qualification 仅走受信 host dependency,不能通过 CLI/env 绕过。
24
21
 
22
+ ## 输入、输出与恢复
23
+
24
+ 宿主输入同版来源图及哈希、目标/基线、固定 provider/model 与预算身份;CLI 按模型实际声明接收图片或文字。先检查 `providers` 的模态、视图数量、可用性和 profile,再按本次入口读 [host-api](references/host-api.md) 或下方 CLI 说明。选模型取决于任务所需模态与已验证能力,历史横评不替代当前资格。
25
+
26
+ 交回原 request/provider task 身份、实际状态、输入与 profile 摘要,以及验证后的 GLB 路径/哈希/字节数;appearance 审查视觉,structure 决定工程用法,workspace 决定采用。收到 task ID 只说明已提交,下载并核验产物后才能交模型文件。
27
+
28
+ 宿主 API 已有任务 ID 时只续查/取产物;已发创建请求但没有可信任务 ID 时保持 unknown 并对账,不换身份重发。下载失败只重取原任务产物。配置、模态或资格错误在发送前修正;CLI 不具备宿主 API 的跨进程发送保护,恢复要求严格的产品调用走 host-api,不能改走 CLI 重提。
29
+
25
30
  ## 四条命令
26
31
 
27
32
  ```bash
@@ -1,45 +1,53 @@
1
1
  ---
2
2
  name: abelien-algorithm
3
- description: 为产品 reaction 联网检索并选择有来源的端侧算法、模型、库或成熟云服务。需求明确后即可检索实现资料(与硬件选型并行),硬件登记后补查厂商资料并逐 reaction 绑定到已选型号;不用于硬件选型、代码实现或服务部署。
4
- license: MIT
5
- compatibility:
6
- - claude-code
7
- - hermes
8
- - pi
3
+ description: 从用户已澄清的功能需求拆出实现能力,形成搜索任务并筛选有来源的固件、库、模型或云服务。用于判断产品 reaction 怎么实现;可与硬件选型并行研究,硬件登记后复核绑定。不用于重新定义需求、硬件选型、代码实现或服务部署。
4
+ compatibility: 适用于 claude-code、hermes、pi 宿主
9
5
  metadata:
10
6
  category: algorithm-domain
11
7
  ---
12
8
 
13
9
  # Abelien Algorithm
14
10
 
15
- 本包分两步完成算法与实现选型:
11
+ ## 何时使用
16
12
 
17
- 1. **研究(不依赖硬件)**:需求明确后就为每个 reaction 检索实现资料,与硬件选型同时进行;候选写明资源需求(算力、内存、接口、传感器、联网),不猜硬件型号。
18
- 2. **绑定(硬件登记后)**:读取已登记的 `hardware-selection`(id 与 revision),补查已选型号的厂商资料,每个 reaction 绑定到具体 `component_id` 并复核兼容。硬件尚未 verified 也可以绑定,结果保持待确认。`selected_models[]` 为空或缺少厂商/型号时停止并返回具体缺口,不能根据类别名猜设备。
13
+ 用户需求已由 clarify 整理,需要判断每条 reaction 如何实现时使用;需求变化后,只重查受影响的能力与绑定。研究可以与硬件选型并行,具体型号兼容在硬件登记后复核。本 skill 完成实现研究与兼容选型,不承担需求重定义、硬件选型、代码实现、部署或设备实测。
19
14
 
20
- 车道在哪个阶段做哪一步由 workspace 的 `workspace.lanes-next` 决定(见意图路由 §4.1)。
15
+ ## 输入与输出
21
16
 
22
- 与同级 [structure](../abelien-structure/SKILL.md) 可在各自依赖满足后分别推进:将摄像头视野、拾音/发声开口、散热、动作范围等有依据的结构要求交回;结构反馈遮挡、空间或运动冲突时重判受影响绑定。换硬件须回 hardware 并重新核对版本。算法选型成功不代表装配或设备行为已经实测通过。
17
+ - **研究**:输入当前完整 Requirements(context、reaction、limits)和宿主提供的库内实现(若有);输出 `algorithm-research`(`status=proposed`),包含逐 reaction 的候选、实现说明、资源需求、来源及未解决项。
18
+ - **绑定**:输入上述候选、当前 `hardware-selection` 的 id 与 revision,以及带准确厂商/型号的 `selected_models`;输出 `algorithm-selection`,记录 reaction → 实现 → `component_id` 的绑定、兼容证据和版本,状态为 `verified` 或 `needs_confirmation`。硬件尚未 verified 时可以复核,结果保持待确认。
23
19
 
24
- ## 渐进加载
20
+ ## 开始前读取
25
21
 
26
- 1. 每次研究先读[联网检索与排序规则](references/research-policy.md)。
27
- 2. 准备提交候选或绑定时再读[算法选型服务契约](references/selection-service-contract.md)。
28
- 3. 研究:`algorithm.research`(`purpose=implementation`,查询带 `reaction_id`)→ 读正文 → `algorithm.candidates` 提交每个 reaction 的候选(格式见 [algorithm-candidates.v1](schemas/algorithm-candidates.v1.json)),保存为 `status=proposed`。
29
- 4. 绑定:`algorithm.research`(`purpose=hardware`,查询带 `component_id`)→ `algorithm.finalize`(`operation=bind`,`research` 格式见 [algorithm-bindings.v1](schemas/algorithm-bindings.v1.json))。来源只写 `research_id` 与 `page_id`,回执由 Harness 从自己存下的正文填写。
30
- 5. 宿主在每个阶段开跑前用只读的 `algorithm.lane-state` 查当前需求有没有已提议的候选、候选有没有绑定到当前硬件,映射成 `workspace.lanes-next` 的 artifacts。
31
- 6. 已有的 `user-journey-algorithm` workflow(先有 verified 硬件再研究)保持可用,供不走车道的宿主使用。
22
+ 1. 读取当前 Requirements 和[研究规则](references/research-policy.md),用 `algorithm.lane-state` 查看相同需求已有的候选与绑定,复用仍有效的结果。
23
+ 2. 绑定前回读完整硬件选型资源,核对 id、revision、厂商和准确型号;不得从类别名或旧对话猜设备。
24
+ 3. 准备提交时读取[选型服务契约](references/selection-service-contract.md);工具的参数、输出和错误处理以[动作手册](references/actions.generated.md)为准。需要 CLI 调用或资源读取语法时读同级 [harness](../abelien-harness/SKILL.md)。
32
25
 
33
- ## 核心边界
26
+ ## 核心判断:需求如何变成搜索任务
34
27
 
35
- - 研究步骤先看宿主给出的库内已适配算法(库内优先、库外再联网),再按算法/模型官方资料 → Hugging Face → 云服务厂商官方资料检索;绑定步骤先查已选型号的硬件厂商官方资料。搜索结果页、博客和聚合文章只能用于发现线索,不能单独支持最终选择。
36
- - 必须明确 `edge`、`cloud` 或 `hybrid`。离线、隐私、网络、延迟、费用或数据地域限制属于硬约束,不得为了找到候选而静默改成云端。
37
- - 端侧候选要核对处理器架构、OS/固件、runtime、算子、RAM、Flash/存储、加速器、输入输出格式及外设接口;没有精确设备实测时,不能承诺真实性能。
38
- - 交互类需求可以比较本地模型和云端 API,但“模型仓库存在”不等于“已有可调用云服务”,“当前 Agent 能调用模型”也不等于用户设备具备该能力。
39
- - 发现、兼容复核、集成、部署和实测是五种不同状态。本包只完成前两项并保存版本化选型结果。
28
+ 1. **拆能力**:从每条 reaction 的输入、期望反应、场景和硬约束拆出必要能力,保留原 `reaction_id`。普通规则或固件能完成的,不额外引入模型。
29
+ 2. **定问题、写查询**:先说明要查清哪个实现问题,再用“能力/任务 + 影响选择的约束 + 实现形态”搜索;有候选后,用准确名称补查官方 I/O、依赖、版本及缺失证据。沿用用户明确的平台限制,未定硬件只记录资源需求。
30
+ 3. **对应回需求**:先排除硬约束冲突,再比较能力覆盖、证据和集成代价。说明候选覆盖哪个环节、怎样衔接、依赖什么及仍缺什么;关键问题已有证据就收敛,只有实质取舍才保留备选。
40
31
 
41
- `algorithm.finalize` 不访问网络;它回读真实硬件基线,并核对来源回执,检查完整 reaction、型号/版本绑定和硬约束覆盖。只有元数据或 Agent 自述“已回读”不会获得 `verified`。回执来自可信宿主注入的证据解析器,或(`operation=bind`)来自 `algorithm.research` 自己读取并按 sha256 存下的正文;检索摘要(`text_source=search_snippet`)只用于发现,永远不算证据。具体字段及回执边界见选型服务契约。来源不可回读、候选版本不确定或存在阻塞未知项时,结果保持待确认,不伪造验证。
32
+ 库内已有实现适用时优先复用;按能力选择固件、库、模型或云服务的资料,不固定逐站搜索。端侧、云端、混合由用户的联网、隐私、延迟、费用和地域约束决定;官方正文用于支持结论,搜索摘要、热度及第三方榜单只用于发现。模型仓库存在不能证明云端 API 可用,Agent 能调用也不能证明设备具备该能力。
42
33
 
43
- ## 来源文档
34
+ ## 执行入口与工具
44
35
 
45
- 联网检索得到的页面,按原始请求、任务和来源身份读取已保存的原文或解析结果;检索摘要类内容只用于发现线索。缓存或 OCR 得到的内容不能证明厂商权威或工程结论。本领域自己的原始回执和权威判断不由别的服务替代。待完成的解析任务只查原任务,不重新提交。
36
+ 宿主按 workspace 的 `workspace.lanes-next` 确定研究或绑定阶段,调用以下同名动作:
37
+
38
+ - **研究**:`algorithm.research`(`purpose=implementation`,查询关联 `reaction_id`)→ 回读保存的正文 → `algorithm.candidates`。候选提交形状见 [algorithm-candidates.v1](schemas/algorithm-candidates.v1.json)。
39
+ - **绑定**:`algorithm.research`(`purpose=hardware`,查询关联 `component_id`)→ `algorithm.finalize`(`operation=bind`)。绑定提交形状见 [algorithm-bindings.v1](schemas/algorithm-bindings.v1.json)。
40
+
41
+ `algorithm.finalize` 不访问网络;来源引用已有 `research_id`、`page_id`,正文回执由 Harness 填写并核验。只有摘要或 Agent 自述不构成验证。未走车道的宿主仍可用 `user-journey-algorithm`,它要求先有 verified 硬件,研究判断与本 skill 相同。
42
+
43
+ ## 结果交接
44
+
45
+ 向调用方交回工具返回的资源 id、状态、逐 reaction 的实现选择、依据和未解决项;绑定结果同时交回选型 revision 与硬件基线。宿主用 `algorithm.lane-state` 回读后映射为 workspace 的 artifacts,不凭文字摘要推进状态。
46
+
47
+ 候选的算力、内存、runtime、联网和接口需求交给 hardware;有依据的视野、拾音/发声开口、散热或动作范围要求交给 [structure](../abelien-structure/SKILL.md)。研究完成不代表设备兼容,兼容选型也不代表集成、部署或实物验证完成;没有精确设备实测就保留性能未知。
48
+
49
+ ## 失败与恢复
50
+
51
+ - **输入缺口**:需求缺少会改变实现方向的事实时交回 guide/clarify;缺准确型号或硬件版本时暂停绑定,保留研究结果。硬件换型或结构反馈冲突后,复核受影响绑定。
52
+ - **证据不足**:来源读不到、版本不确定或硬约束无法证实时,记录具体缺口、影响和下一步;按现有输出保留 `unresolved` / `unknowns` / `blocking_unknowns`,不放宽需求或伪造 verified。
53
+ - **工具失败**:按动作手册区分输入错误、配置缺失和结果未知。已完成检索复用原记录;已发送但结果未知时保留原请求与研究身份,先回读/对账,不换 ID 重发。待完成的解析任务只查原任务。
@@ -0,0 +1,43 @@
1
+ {
2
+ "action_id": "algorithm.candidates",
3
+ "contract_version": 1,
4
+ "description": "核验 Agent 基于 implementation 研究为每个 reaction 提出的候选实现:引用须逐字出现在本次研究存下的正文,候选只能引用为自己 reaction 检索的页面,库内算法须来自研究输入的库清单;每个 reaction 要么有候选、要么写明未解决原因;保存为 status=proposed,不依赖硬件",
5
+ "audience": "agent",
6
+ "input_schema": "schemas/candidates-input.v1.json",
7
+ "output_schema": "schemas/candidates-result.v1.json",
8
+ "permissions": [
9
+ "algorithm.candidates",
10
+ "artifact.read",
11
+ "artifact.write"
12
+ ],
13
+ "effects": [
14
+ "data.read",
15
+ "artifact.write"
16
+ ],
17
+ "determinism": "deterministic",
18
+ "cache_policy": {
19
+ "mode": "disabled",
20
+ "allow_bypass": true
21
+ },
22
+ "errors": {
23
+ "VALIDATION": {
24
+ "category": "source",
25
+ "description": "research_id 不是 collected 的 implementation 研究、引用不在本次研究存下的正文、候选引用了别的 reaction 的页面、库内算法不在研究的库清单,或有 reaction 既没有候选也没有写明未解决原因",
26
+ "recovery": "correct_input"
27
+ },
28
+ "ALGORITHM_HOST": {
29
+ "category": "config",
30
+ "description": "宿主没有提供可信的资源读取、内容读写或资源列举端口",
31
+ "recovery": "await_configuration"
32
+ }
33
+ },
34
+ "result_checks": [
35
+ {
36
+ "kind": "output_schema"
37
+ },
38
+ {
39
+ "kind": "ref_integrity"
40
+ }
41
+ ],
42
+ "completion": "validated_result"
43
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "action_id": "algorithm.finalize",
3
+ "contract_version": 1,
4
+ "description": "把 Agent 基于硬件型号和官方联网证据做出的算法绑定归一化为版本化选型资源;operation=bind 时候选取自 algorithm.candidates,来源回执从 Harness 自己存下的研究正文解析,硬件基线尚未 verified 时结果固定为 needs_confirmation",
5
+ "audience": "agent",
6
+ "input_schema": "schemas/finalize-input.v1.json",
7
+ "output_schema": "schemas/finalize-result.v1.json",
8
+ "permissions": [
9
+ "algorithm.finalize",
10
+ "artifact.read",
11
+ "artifact.write"
12
+ ],
13
+ "effects": [
14
+ "data.read",
15
+ "artifact.write"
16
+ ],
17
+ "determinism": "deterministic",
18
+ "cache_policy": {
19
+ "mode": "disabled",
20
+ "allow_bypass": true
21
+ },
22
+ "errors": {
23
+ "VALIDATION": {
24
+ "category": "source",
25
+ "description": "operation 不对、硬件基线缺失或修订过期(select 还要求 verified)、reaction 不完整或没覆盖全部需求、来源不是一手资料或没有可核对的回执、绑定没选该 reaction 已提议的候选",
26
+ "recovery": "correct_input"
27
+ }
28
+ },
29
+ "result_checks": [
30
+ {
31
+ "kind": "output_schema"
32
+ },
33
+ {
34
+ "kind": "ref_integrity"
35
+ }
36
+ ],
37
+ "completion": "validated_result"
38
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "action_id": "algorithm.lane-state",
3
+ "contract_version": 1,
4
+ "description": "只读:按本草稿已存的资源回答当前需求有没有已提议的候选(落点、reaction、limits 与研究时一致),以及这些候选有没有绑定到给定的硬件选型 id 与 revision;宿主把结果映射成 workspace.lanes-next 的 artifacts",
5
+ "audience": "agent",
6
+ "input_schema": "schemas/lane-state-input.v1.json",
7
+ "output_schema": "schemas/lane-state-result.v1.json",
8
+ "permissions": [
9
+ "algorithm.lane-state",
10
+ "artifact.read"
11
+ ],
12
+ "effects": [
13
+ "data.read"
14
+ ],
15
+ "determinism": "deterministic",
16
+ "cache_policy": {
17
+ "mode": "disabled",
18
+ "allow_bypass": true
19
+ },
20
+ "errors": {
21
+ "VALIDATION": {
22
+ "category": "source",
23
+ "description": "字段不在表内、需求不合规,或硬件选型 ID 与修订不成对",
24
+ "recovery": "correct_input"
25
+ },
26
+ "ALGORITHM_HOST": {
27
+ "category": "config",
28
+ "description": "宿主没有提供可信的资源读取、内容读写或资源列举端口",
29
+ "recovery": "await_configuration"
30
+ }
31
+ },
32
+ "result_checks": [
33
+ {
34
+ "kind": "output_schema"
35
+ }
36
+ ],
37
+ "completion": "validated_result"
38
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "action_id": "algorithm.research",
3
+ "contract_version": 1,
4
+ "description": "执行 Agent 的检索计划并保存证据:purpose=implementation 只凭需求检索实现资料(可与硬件选型并行),purpose=hardware 检索已选型号的厂商资料;Volc 检索(每次最多 5 条)与公开 HTTPS 页面安全直读,正文按 sha256 存证;每条付费检索先存 sent 再发送,重跑复用已完成检索、结果未知时要求对账而不重发;同一请求完成后重复运行直接返回已有结果",
5
+ "audience": "agent",
6
+ "input_schema": "schemas/research-input.v1.json",
7
+ "output_schema": "schemas/research-result.v1.json",
8
+ "permissions": [
9
+ "algorithm.research",
10
+ "artifact.read",
11
+ "artifact.write"
12
+ ],
13
+ "effects": [
14
+ "data.read",
15
+ "network.read",
16
+ "artifact.write",
17
+ "budget.consume"
18
+ ],
19
+ "determinism": "nondeterministic",
20
+ "cache_policy": {
21
+ "mode": "disabled_by_default",
22
+ "allow_bypass": true
23
+ },
24
+ "errors": {
25
+ "VALIDATION": {
26
+ "category": "source",
27
+ "description": "输入不合规:字段不在表内、用途不对、reaction 不是 1–20 条、库清单重复、检索条目不是 1–8 条或指向不存在的 reaction/零件,或 hardware 用途的选型缺失或修订过期",
28
+ "recovery": "correct_input"
29
+ },
30
+ "ALGORITHM_WEB_CONFIG": {
31
+ "category": "config",
32
+ "description": "缺少检索凭据或网络配置非法;在任何请求之前失败",
33
+ "recovery": "await_configuration"
34
+ },
35
+ "ALGORITHM_WEB_CHECKPOINT_REQUIRED": {
36
+ "category": "config",
37
+ "description": "计划里有付费检索,但宿主没有提供检查点;在任何请求之前拒绝",
38
+ "recovery": "await_configuration"
39
+ },
40
+ "ALGORITHM_HOST": {
41
+ "category": "config",
42
+ "description": "宿主没有提供可信的资源读取、内容读写或资源列举端口",
43
+ "recovery": "await_configuration"
44
+ },
45
+ "ALGORITHM_WEB_RECONCILIATION_REQUIRED": {
46
+ "category": "unknown",
47
+ "description": "检查点里有已发送、结果未知的检索,或已存证据与本请求不符;不会自动重发,需对账",
48
+ "recovery": "reconcile"
49
+ },
50
+ "ALGORITHM_WEB_RESPONSE": {
51
+ "category": "unknown",
52
+ "description": "检索服务的回执格式不符;按原检查点对账",
53
+ "recovery": "reconcile"
54
+ },
55
+ "CAPABILITY_CHECKPOINT_CONFLICT": {
56
+ "category": "unknown",
57
+ "description": "内核码:同一请求并发运行时,后写入检查点者失败",
58
+ "recovery": "reconcile"
59
+ }
60
+ },
61
+ "result_checks": [
62
+ {
63
+ "kind": "output_schema"
64
+ },
65
+ {
66
+ "kind": "ref_integrity"
67
+ }
68
+ ],
69
+ "completion": "validated_result"
70
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "schema": "abelien.bindings.v1",
3
+ "description": "本包的缺省部署 profile:全部动作由本包模块实现。",
4
+ "bindings": [
5
+ {
6
+ "action_id": "algorithm.research",
7
+ "transport": "module",
8
+ "location": "local",
9
+ "effects": [],
10
+ "cancel": "unsupported",
11
+ "submission": {
12
+ "idempotent_submit": true,
13
+ "query_by_operation": true,
14
+ "remote_task_identity": "none",
15
+ "not_found_definitive": false
16
+ }
17
+ },
18
+ {
19
+ "action_id": "algorithm.candidates",
20
+ "transport": "module",
21
+ "location": "local",
22
+ "effects": [],
23
+ "cancel": "unsupported",
24
+ "submission": {
25
+ "idempotent_submit": true,
26
+ "query_by_operation": false,
27
+ "remote_task_identity": "none",
28
+ "not_found_definitive": true
29
+ }
30
+ },
31
+ {
32
+ "action_id": "algorithm.lane-state",
33
+ "transport": "module",
34
+ "location": "local",
35
+ "effects": [],
36
+ "cancel": "unsupported",
37
+ "submission": {
38
+ "idempotent_submit": true,
39
+ "query_by_operation": false,
40
+ "remote_task_identity": "none",
41
+ "not_found_definitive": true
42
+ }
43
+ },
44
+ {
45
+ "action_id": "algorithm.finalize",
46
+ "transport": "module",
47
+ "location": "local",
48
+ "effects": [],
49
+ "cancel": "unsupported",
50
+ "submission": {
51
+ "idempotent_submit": true,
52
+ "query_by_operation": false,
53
+ "remote_task_identity": "none",
54
+ "not_found_definitive": true
55
+ }
56
+ }
57
+ ]
58
+ }