abelien-harness 0.15.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 (555) hide show
  1. package/.env.example +5 -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 +43 -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/bindings.json +302 -0
  78. package/skills/abelien-hardware/contract/hardware-journey-orchestration.md +9 -1
  79. package/skills/abelien-hardware/contract/host-tools.generated.json +16216 -0
  80. package/skills/abelien-hardware/contract/online-supplement-host.md +2 -2
  81. package/skills/abelien-hardware/contract/web-evidence-contract.md +5 -5
  82. package/skills/abelien-hardware/domain.json +97 -2
  83. package/skills/abelien-hardware/references/actions/hardware.change-scope.generated.md +139 -0
  84. package/skills/abelien-hardware/references/actions/hardware.finalize.generated.md +175 -0
  85. package/skills/abelien-hardware/references/actions/hardware.guide.generated.md +37 -0
  86. package/skills/abelien-hardware/references/actions/hardware.prepare.generated.md +38 -0
  87. package/skills/abelien-hardware/references/actions/hardware.replace-plan.generated.md +120 -0
  88. package/skills/abelien-hardware/references/actions/hardware.resource.generated.md +43 -0
  89. package/skills/abelien-hardware/references/actions/hardware.search.generated.md +150 -0
  90. package/skills/abelien-hardware/references/actions/hardware.select.generated.md +178 -0
  91. package/skills/abelien-hardware/references/actions/hardware.selection-commit.generated.md +475 -0
  92. package/skills/abelien-hardware/references/actions/hardware.selection-propose.generated.md +471 -0
  93. package/skills/abelien-hardware/references/actions/hardware.selection-recall.generated.md +355 -0
  94. package/skills/abelien-hardware/references/actions/hardware.web-extract.generated.md +36 -0
  95. package/skills/abelien-hardware/references/actions/hardware.web-merge.generated.md +168 -0
  96. package/skills/abelien-hardware/references/actions/hardware.web-search.generated.md +165 -0
  97. package/skills/abelien-hardware/references/actions/hardware.wiki.generated.md +41 -0
  98. package/skills/abelien-hardware/references/actions/hardware.workflow.generated.md +94 -0
  99. package/skills/abelien-hardware/references/actions.generated.md +23 -0
  100. package/skills/abelien-hardware/references/hardware-selection/SKILL.md +13 -5
  101. package/skills/abelien-hardware/references/hardware-selection/references/query-contract.md +21 -50
  102. package/skills/abelien-hardware/references/selection-evidence-v2.md +76 -0
  103. package/skills/abelien-hardware/references/selection-service-contract.md +9 -4
  104. package/skills/abelien-hardware/schemas/change-scope-input.v1.json +29 -0
  105. package/skills/abelien-hardware/schemas/change-scope-result.v1.json +21 -0
  106. package/skills/abelien-hardware/schemas/hardware-common.v1.json +188 -0
  107. package/skills/abelien-hardware/schemas/hardware-selection-actions.v1.json +154 -0
  108. package/skills/abelien-hardware/schemas/hardware-selection.v2.json +502 -0
  109. package/skills/abelien-hardware/schemas/host-tools-input.v1.json +292 -0
  110. package/skills/abelien-hardware/schemas/proposal-input.v1.json +149 -0
  111. package/skills/abelien-hardware/schemas/proposal-result.v1.json +25 -0
  112. package/skills/abelien-hardware/schemas/replace-plan-input.v1.json +33 -0
  113. package/skills/abelien-hardware/schemas/replace-plan-result.v1.json +16 -0
  114. package/skills/abelien-hardware/schemas/search-input.v1.json +42 -0
  115. package/skills/abelien-hardware/schemas/search-result.v1.json +18 -0
  116. package/skills/abelien-hardware/schemas/select-input.v1.json +39 -0
  117. package/skills/abelien-hardware/schemas/select-result.v1.json +27 -0
  118. package/skills/abelien-hardware/schemas/web-merge-input.v1.json +52 -0
  119. package/skills/abelien-hardware/schemas/web-merge-result.v1.json +18 -0
  120. package/skills/abelien-hardware/schemas/web-search-input.v1.json +42 -0
  121. package/skills/abelien-hardware/schemas/web-search-result.v1.json +18 -0
  122. package/skills/abelien-hardware/scripts/provider-chain-contract.mjs +26 -12
  123. package/skills/abelien-hardware/scripts/replace-plan.mjs +14 -2
  124. package/skills/abelien-hardware/scripts/response-redaction.mjs +2 -1
  125. package/skills/abelien-hardware/scripts/selection-bom-use.mjs +47 -0
  126. package/skills/abelien-hardware/scripts/selection-commit.mjs +41 -0
  127. package/skills/abelien-hardware/scripts/selection-model.mjs +293 -0
  128. package/skills/abelien-hardware/scripts/selection-propose.mjs +327 -0
  129. package/skills/abelien-hardware/scripts/selection-recall.mjs +240 -0
  130. package/skills/abelien-hardware/scripts/selection-revision-store.mjs +115 -0
  131. package/skills/abelien-hardware/scripts/selection-structure.mjs +50 -0
  132. package/skills/abelien-hardware/scripts/taxonomy.mjs +25 -0
  133. package/skills/abelien-hardware/scripts/validate-replace-plan.mjs +5 -1
  134. package/skills/abelien-hardware/scripts/validate-slots.mjs +2 -1
  135. package/skills/abelien-hardware/scripts/volc-web-search.mjs +7 -4
  136. package/skills/abelien-hardware/scripts/web-common.mjs +4 -1
  137. package/skills/abelien-hardware/scripts/web-integrity.mjs +1 -1
  138. package/skills/abelien-hardware/scripts/web-provider-chain.mjs +15 -11
  139. package/skills/abelien-hardware/scripts/web-receipt.mjs +4 -0
  140. package/skills/abelien-hardware/workflows/definitions/0b95321a6768f916b97b53957f0c5ad3aef7e3d484542bcda4c7ab370ee25a0f.json +272 -0
  141. package/skills/abelien-hardware/workflows/definitions/0e1c309516e5117f3ebb764503bc84dc1771b550b0f01eea994181fbd7a865e3.json +302 -0
  142. package/skills/abelien-hardware/workflows/definitions/2444df49b516b42b6ff39036e7de94682d8a09af1154bab56b76f171c3750cb2.json +142 -0
  143. package/skills/abelien-hardware/workflows/definitions/2885447bb95dd1ae3a6ab11f5b549b51a797b56b083eb49ce1f7b3720ba2f0a8.json +304 -0
  144. package/skills/abelien-hardware/workflows/definitions/30fa7666f1e5550f8a2c463950545b3ac47c4aa6c012270aacbfbb2bca0888a9.json +144 -0
  145. package/skills/abelien-hardware/workflows/definitions/4d5012942f59fac4e98d8bec3f814b39864bc6654730e886bd3b32a4be293f64.json +348 -0
  146. package/skills/abelien-hardware/workflows/definitions/5770b5963e9f8a5185d4b9bc81011c950dee9349a666c4ef3127c6c3d486789a.json +224 -0
  147. package/skills/abelien-hardware/workflows/definitions/6f48911aa3f189eb7c3e2b239d4561a083d5ea88899205dc7f51c75a53f496d8.json +348 -0
  148. package/skills/abelien-hardware/workflows/definitions/801c406feff066849957231cab01f2bab4480a55ab6a44a0ada3224c4c696af8.json +230 -0
  149. package/skills/abelien-hardware/workflows/definitions/d391610e118c1d8603a63736d99d6025acbb6ef764395f52b148744c212a775d.json +228 -0
  150. package/skills/abelien-hardware/workflows/definitions/da4fa194d2a9f6349b563aeb4fba38e4f45f662e707c38e7eb2f8d5fcfc76e91.json +270 -0
  151. package/skills/abelien-hardware/workflows/definitions/f9cffb277c9bb2a148de9a6fd91ade3a8cd4b7af7df65023ad7ca64b0280b872.json +346 -0
  152. package/skills/abelien-hardware/workflows/user-journey-hardware-candidates.json +74 -0
  153. package/skills/abelien-hardware/workflows/user-journey-hardware-carry.json +58 -5
  154. package/skills/abelien-hardware/workflows/user-journey-hardware-replace.json +136 -6
  155. package/skills/abelien-hardware/workflows/user-journey-hardware.json +133 -5
  156. package/skills/abelien-harness/SKILL.md +12 -9
  157. package/skills/abelien-harness/contract/action-registry.md +103 -0
  158. package/skills/abelien-harness/contract/source-registry.md +4 -3
  159. package/skills/abelien-harness/contract/workflow-spec.md +12 -0
  160. package/skills/abelien-harness/contracts/README.md +112 -0
  161. package/skills/abelien-harness/contracts/examples/ActionDefinition/invalid-design-example-without-result-checks.json +24 -0
  162. package/skills/abelien-harness/contracts/examples/ActionDefinition/invalid-postcondition-without-entry.json +31 -0
  163. package/skills/abelien-harness/contracts/examples/ActionDefinition/invalid-transport-in-definition.json +32 -0
  164. package/skills/abelien-harness/contracts/examples/ActionDefinition/invalid-unknown-effect.json +33 -0
  165. package/skills/abelien-harness/contracts/examples/ActionDefinition/valid-async-web-search.json +45 -0
  166. package/skills/abelien-harness/contracts/examples/ActionDefinition/valid-implementation-dependent-build.json +32 -0
  167. package/skills/abelien-harness/contracts/examples/ActionDefinition/valid-local-change-scope.json +31 -0
  168. package/skills/abelien-harness/contracts/examples/ActionError/invalid-missing-submission-state.json +8 -0
  169. package/skills/abelien-harness/contracts/examples/ActionError/invalid-transient-after-submit.json +10 -0
  170. package/skills/abelien-harness/contracts/examples/ActionError/invalid-unknown-retried.json +9 -0
  171. package/skills/abelien-harness/contracts/examples/ActionError/valid-config-blocked.json +9 -0
  172. package/skills/abelien-harness/contracts/examples/ActionError/valid-design-conflict.json +24 -0
  173. package/skills/abelien-harness/contracts/examples/ActionError/valid-unknown-reconcile.json +9 -0
  174. package/skills/abelien-harness/contracts/examples/AppearancePoints/invalid-fallback-with-guessed-points.json +47 -0
  175. package/skills/abelien-harness/contracts/examples/AppearancePoints/invalid-missing-image-ref.json +94 -0
  176. package/skills/abelien-harness/contracts/examples/AppearancePoints/invalid-mm-without-scale.json +104 -0
  177. package/skills/abelien-harness/contracts/examples/AppearancePoints/invalid-ready-without-frame.json +100 -0
  178. package/skills/abelien-harness/contracts/examples/AppearancePoints/valid-degraded-fallback.json +27 -0
  179. package/skills/abelien-harness/contracts/examples/AppearancePoints/valid-ready.json +104 -0
  180. package/skills/abelien-harness/contracts/examples/ArtifactApplicability/invalid-current-with-reasons.json +30 -0
  181. package/skills/abelien-harness/contracts/examples/ArtifactApplicability/invalid-stale-without-reasons.json +15 -0
  182. package/skills/abelien-harness/contracts/examples/ArtifactApplicability/valid-current.json +15 -0
  183. package/skills/abelien-harness/contracts/examples/ArtifactApplicability/valid-stale-after-redraw.json +30 -0
  184. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/invalid-degraded-without-unknowns.json +17 -0
  185. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/invalid-design-example-string-inputs.json +19 -0
  186. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/invalid-fallback-on-ready.json +27 -0
  187. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/valid-degraded-fallback.json +27 -0
  188. package/skills/abelien-harness/contracts/examples/ArtifactEnvelope/valid-ready-evidence.json +17 -0
  189. package/skills/abelien-harness/contracts/examples/ArtifactNeed/invalid-accept-failed.json +6 -0
  190. package/skills/abelien-harness/contracts/examples/ArtifactNeed/invalid-empty-quality.json +4 -0
  191. package/skills/abelien-harness/contracts/examples/ArtifactNeed/valid-points-accept-degraded.json +7 -0
  192. package/skills/abelien-harness/contracts/examples/ArtifactNeed/valid-selection-ready-only.json +6 -0
  193. package/skills/abelien-harness/contracts/examples/ArtifactRecord/invalid-no-provenance.json +38 -0
  194. package/skills/abelien-harness/contracts/examples/ArtifactRecord/valid-degraded-points.json +44 -0
  195. package/skills/abelien-harness/contracts/examples/BomLine/invalid-placeholder-posing-as-purchased.json +24 -0
  196. package/skills/abelien-harness/contracts/examples/BomLine/invalid-placeholder-without-open-issues.json +20 -0
  197. package/skills/abelien-harness/contracts/examples/BomLine/invalid-purchased-without-identity-status.json +23 -0
  198. package/skills/abelien-harness/contracts/examples/BomLine/valid-designed-substitute.json +24 -0
  199. package/skills/abelien-harness/contracts/examples/BomLine/valid-placeholder.json +23 -0
  200. package/skills/abelien-harness/contracts/examples/BomLine/valid-purchased-exact.json +24 -0
  201. package/skills/abelien-harness/contracts/examples/BomLine/valid-purchased-series-only.json +24 -0
  202. package/skills/abelien-harness/contracts/examples/ConfirmationAnswer/invalid-client-operation-id.json +17 -0
  203. package/skills/abelien-harness/contracts/examples/ConfirmationAnswer/valid-accept.json +17 -0
  204. package/skills/abelien-harness/contracts/examples/ConfirmationIdentity/invalid-missing-version.json +8 -0
  205. package/skills/abelien-harness/contracts/examples/ConfirmationIdentity/invalid-zero-semantics-version.json +9 -0
  206. package/skills/abelien-harness/contracts/examples/ConfirmationIdentity/valid-selection-card.json +9 -0
  207. package/skills/abelien-harness/contracts/examples/ConfirmationRequest/invalid-no-options.json +20 -0
  208. package/skills/abelien-harness/contracts/examples/ConfirmationRequest/invalid-ui-copy-in-option.json +25 -0
  209. package/skills/abelien-harness/contracts/examples/ConfirmationRequest/valid-hardware-card.json +27 -0
  210. package/skills/abelien-harness/contracts/examples/DispatchClaim/invalid-claim-without-fence.json +44 -0
  211. package/skills/abelien-harness/contracts/examples/DispatchClaim/valid-claim.json +45 -0
  212. package/skills/abelien-harness/contracts/examples/DomainRevisionCommit/invalid-missing-expected-parent.json +18 -0
  213. package/skills/abelien-harness/contracts/examples/DomainRevisionCommit/invalid-schema-name.json +23 -0
  214. package/skills/abelien-harness/contracts/examples/DomainRevisionCommit/valid-from-parent.json +23 -0
  215. package/skills/abelien-harness/contracts/examples/DomainRevisionCommit/valid-new-lineage.json +14 -0
  216. package/skills/abelien-harness/contracts/examples/DomainRevisionHead/invalid-sequence-zero.json +13 -0
  217. package/skills/abelien-harness/contracts/examples/DomainRevisionHead/valid-head.json +13 -0
  218. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/invalid-content-not-object.json +17 -0
  219. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/invalid-first-with-parent.json +24 -0
  220. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/invalid-later-without-parent.json +24 -0
  221. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/valid-first-revision.json +20 -0
  222. package/skills/abelien-harness/contracts/examples/DomainRevisionRecord/valid-second-revision.json +28 -0
  223. package/skills/abelien-harness/contracts/examples/EffectiveAction/invalid-bound-unresolved-determinism.json +78 -0
  224. package/skills/abelien-harness/contracts/examples/EffectiveAction/invalid-unbound-with-binding-digest.json +69 -0
  225. package/skills/abelien-harness/contracts/examples/EffectiveAction/valid-bound-module.json +70 -0
  226. package/skills/abelien-harness/contracts/examples/EffectiveAction/valid-bound-studio-tool.json +78 -0
  227. package/skills/abelien-harness/contracts/examples/EffectiveAction/valid-unbound.json +69 -0
  228. package/skills/abelien-harness/contracts/examples/EventCursor/invalid-negative.json +4 -0
  229. package/skills/abelien-harness/contracts/examples/EventCursor/valid-fresh-tree.json +4 -0
  230. package/skills/abelien-harness/contracts/examples/EventEnvelope/invalid-legacy-state-name.json +14 -0
  231. package/skills/abelien-harness/contracts/examples/EventEnvelope/invalid-step-event-without-step.json +26 -0
  232. package/skills/abelien-harness/contracts/examples/EventEnvelope/invalid-zero-sequence.json +17 -0
  233. package/skills/abelien-harness/contracts/examples/EventEnvelope/valid-late-receipt-history.json +18 -0
  234. package/skills/abelien-harness/contracts/examples/EventEnvelope/valid-operation-accepted.json +17 -0
  235. package/skills/abelien-harness/contracts/examples/EventEnvelope/valid-step-waiting-on-card.json +27 -0
  236. package/skills/abelien-harness/contracts/examples/ExecutionClaim/invalid-zero-fence.json +7 -0
  237. package/skills/abelien-harness/contracts/examples/ExecutionClaim/valid-after-takeover.json +7 -0
  238. package/skills/abelien-harness/contracts/examples/ExecutionIdentity/invalid-fence-in-identity.json +19 -0
  239. package/skills/abelien-harness/contracts/examples/ExecutionIdentity/invalid-missing-target-revision.json +13 -0
  240. package/skills/abelien-harness/contracts/examples/ExecutionIdentity/valid-rework.json +20 -0
  241. package/skills/abelien-harness/contracts/examples/ExecutionIdentity/valid-web-search.json +18 -0
  242. package/skills/abelien-harness/contracts/examples/ExecutionManifest/invalid-alias-claimed-frozen.json +77 -0
  243. package/skills/abelien-harness/contracts/examples/ExecutionManifest/invalid-runtime-version-alias.json +77 -0
  244. package/skills/abelien-harness/contracts/examples/ExecutionManifest/valid-legacy-mapping.json +59 -0
  245. package/skills/abelien-harness/contracts/examples/ExecutionManifest/valid-runtime-run.json +77 -0
  246. package/skills/abelien-harness/contracts/examples/ImplementationBinding/invalid-credential-in-entry.json +23 -0
  247. package/skills/abelien-harness/contracts/examples/ImplementationBinding/invalid-module-without-export.json +19 -0
  248. package/skills/abelien-harness/contracts/examples/ImplementationBinding/invalid-studio-tool-with-path.json +24 -0
  249. package/skills/abelien-harness/contracts/examples/ImplementationBinding/invalid-unresolved-determinism.json +23 -0
  250. package/skills/abelien-harness/contracts/examples/ImplementationBinding/valid-http.json +23 -0
  251. package/skills/abelien-harness/contracts/examples/ImplementationBinding/valid-module.json +20 -0
  252. package/skills/abelien-harness/contracts/examples/ImplementationBinding/valid-studio-tool.json +23 -0
  253. package/skills/abelien-harness/contracts/examples/InputDigestSubject/invalid-shorthand-input-ref.json +22 -0
  254. package/skills/abelien-harness/contracts/examples/InputDigestSubject/invalid-transport-field.json +32 -0
  255. package/skills/abelien-harness/contracts/examples/InputDigestSubject/valid-web-search.json +31 -0
  256. package/skills/abelien-harness/contracts/examples/OperationRecord/invalid-prepared-but-submitted.json +36 -0
  257. package/skills/abelien-harness/contracts/examples/OperationRecord/invalid-unknown-not-submitted.json +36 -0
  258. package/skills/abelien-harness/contracts/examples/OperationRecord/valid-accepted.json +36 -0
  259. package/skills/abelien-harness/contracts/examples/OperationRecord/valid-prepared.json +36 -0
  260. package/skills/abelien-harness/contracts/examples/OperationRecord/valid-unknown.json +44 -0
  261. package/skills/abelien-harness/contracts/examples/PortError/invalid-unknown-code.json +4 -0
  262. package/skills/abelien-harness/contracts/examples/PortError/valid-fence-stale.json +9 -0
  263. package/skills/abelien-harness/contracts/examples/Receipt/invalid-failed-without-error.json +15 -0
  264. package/skills/abelien-harness/contracts/examples/Receipt/invalid-missing-implementation-identity.json +19 -0
  265. package/skills/abelien-harness/contracts/examples/Receipt/invalid-succeeded-with-error.json +44 -0
  266. package/skills/abelien-harness/contracts/examples/Receipt/valid-failed.json +39 -0
  267. package/skills/abelien-harness/contracts/examples/Receipt/valid-succeeded.json +20 -0
  268. package/skills/abelien-harness/contracts/examples/Ref/invalid-digest-with-prefix.json +5 -0
  269. package/skills/abelien-harness/contracts/examples/Ref/invalid-shorthand-string.json +1 -0
  270. package/skills/abelien-harness/contracts/examples/Ref/valid-concept-image.json +5 -0
  271. package/skills/abelien-harness/contracts/examples/ResourceRecord/invalid-digest-without-prefix.json +19 -0
  272. package/skills/abelien-harness/contracts/examples/ResourceRecord/invalid-renamed-meta.json +13 -0
  273. package/skills/abelien-harness/contracts/examples/ResourceRecord/valid-existing-store-shape.json +19 -0
  274. package/skills/abelien-harness/contracts/examples/RunRecord/invalid-child-without-parent-step.json +27 -0
  275. package/skills/abelien-harness/contracts/examples/RunRecord/invalid-runtime-without-manifest.json +21 -0
  276. package/skills/abelien-harness/contracts/examples/RunRecord/valid-legacy-child.json +27 -0
  277. package/skills/abelien-harness/contracts/examples/RunRecord/valid-root.json +21 -0
  278. package/skills/abelien-harness/contracts/examples/RunSnapshot/invalid-child-run-on-model-step.json +270 -0
  279. package/skills/abelien-harness/contracts/examples/RunSnapshot/invalid-legacy-state-name.json +153 -0
  280. package/skills/abelien-harness/contracts/examples/RunSnapshot/invalid-legacy-without-registration.json +266 -0
  281. package/skills/abelien-harness/contracts/examples/RunSnapshot/invalid-waiting-without-reason.json +268 -0
  282. package/skills/abelien-harness/contracts/examples/RunSnapshot/valid-cancelled-late-result-rework.json +139 -0
  283. package/skills/abelien-harness/contracts/examples/RunSnapshot/valid-legacy-hardware-subflow.json +272 -0
  284. package/skills/abelien-harness/contracts/examples/RunSnapshot/valid-parallel-join-degraded.json +153 -0
  285. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/invalid-missing-fit-envelope.json +27 -0
  286. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/invalid-uppercase-id.json +43 -0
  287. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/invalid-view-transform-fields.json +44 -0
  288. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/valid-speaker-1.json +43 -0
  289. package/skills/abelien-harness/contracts/examples/SkeletonOccurrence/valid-speaker-2.json +43 -0
  290. package/skills/abelien-harness/contracts/examples/Slot/invalid-box-with-diameter.json +29 -0
  291. package/skills/abelien-harness/contracts/examples/Slot/invalid-missing-reaction-ids.json +11 -0
  292. package/skills/abelien-harness/contracts/examples/Slot/invalid-two-level-path.json +11 -0
  293. package/skills/abelien-harness/contracts/examples/Slot/invalid-zero-quantity.json +12 -0
  294. package/skills/abelien-harness/contracts/examples/Slot/valid-shared-power.json +12 -0
  295. package/skills/abelien-harness/contracts/examples/Slot/valid-speaker-with-zone.json +33 -0
  296. package/skills/abelien-harness/contracts/examples/StepExecutionRecord/invalid-child-run-on-cli.json +23 -0
  297. package/skills/abelien-harness/contracts/examples/StepExecutionRecord/invalid-waiting-without-reason.json +19 -0
  298. package/skills/abelien-harness/contracts/examples/StepExecutionRecord/valid-subflow.json +31 -0
  299. package/skills/abelien-harness/contracts/examples/StepExecutionRecord/valid-waiting-external.json +23 -0
  300. package/skills/abelien-harness/contracts/examples/TargetRevisionRef/invalid-extra-parent.json +6 -0
  301. package/skills/abelien-harness/contracts/examples/TargetRevisionRef/valid-revision-4.json +5 -0
  302. package/skills/abelien-harness/contracts/examples/WaitReason/invalid-configuration-with-source-error.json +12 -0
  303. package/skills/abelien-harness/contracts/examples/WaitReason/invalid-confirmation-without-subject.json +4 -0
  304. package/skills/abelien-harness/contracts/examples/WaitReason/valid-budget.json +6 -0
  305. package/skills/abelien-harness/contracts/examples/WaitReason/valid-configuration.json +12 -0
  306. package/skills/abelien-harness/contracts/examples/WaitReason/valid-confirmation.json +13 -0
  307. package/skills/abelien-harness/contracts/examples/WaitReason/valid-data-dependency.json +18 -0
  308. package/skills/abelien-harness/contracts/examples/expectations.json +318 -0
  309. package/skills/abelien-harness/contracts/index.d.mts +32 -0
  310. package/skills/abelien-harness/contracts/index.mjs +47 -0
  311. package/skills/abelien-harness/contracts/ports/memory.d.mts +12 -0
  312. package/skills/abelien-harness/contracts/ports/memory.mjs +403 -0
  313. package/skills/abelien-harness/contracts/ports/ports.d.ts +137 -0
  314. package/skills/abelien-harness/contracts/schemas/action.v1.json +330 -0
  315. package/skills/abelien-harness/contracts/schemas/artifact.v1.json +102 -0
  316. package/skills/abelien-harness/contracts/schemas/confirmation.v1.json +64 -0
  317. package/skills/abelien-harness/contracts/schemas/cross-domain.v1.json +241 -0
  318. package/skills/abelien-harness/contracts/schemas/domain-revision.v1.json +68 -0
  319. package/skills/abelien-harness/contracts/schemas/error.v1.json +70 -0
  320. package/skills/abelien-harness/contracts/schemas/event.v1.json +204 -0
  321. package/skills/abelien-harness/contracts/schemas/execution-identity.v1.json +72 -0
  322. package/skills/abelien-harness/contracts/schemas/ref.v1.json +43 -0
  323. package/skills/abelien-harness/contracts/schemas/run-snapshot.v1.json +176 -0
  324. package/skills/abelien-harness/contracts/schemas/store.v1.json +209 -0
  325. package/skills/abelien-harness/contracts/types.d.ts +660 -0
  326. package/skills/abelien-harness/contracts/validate.mjs +182 -0
  327. package/skills/abelien-harness/runtime/README.md +171 -0
  328. package/skills/abelien-harness/runtime/actions.mjs +88 -0
  329. package/skills/abelien-harness/runtime/conformance/README.md +34 -0
  330. package/skills/abelien-harness/runtime/conformance/artifact-store.mjs +167 -0
  331. package/skills/abelien-harness/runtime/conformance/domain-revision-store.mjs +121 -0
  332. package/skills/abelien-harness/runtime/conformance/execution-store.mjs +346 -0
  333. package/skills/abelien-harness/runtime/conformance/fixtures.mjs +56 -0
  334. package/skills/abelien-harness/runtime/conformance/index.mjs +74 -0
  335. package/skills/abelien-harness/runtime/engine.mjs +1358 -0
  336. package/skills/abelien-harness/runtime/errors.mjs +80 -0
  337. package/skills/abelien-harness/runtime/executors.mjs +123 -0
  338. package/skills/abelien-harness/runtime/flow-graph.mjs +246 -0
  339. package/skills/abelien-harness/runtime/graph.mjs +534 -0
  340. package/skills/abelien-harness/runtime/ids.mjs +25 -0
  341. package/skills/abelien-harness/runtime/index.mjs +25 -0
  342. package/skills/abelien-harness/runtime/kernel.mjs +65 -0
  343. package/skills/abelien-harness/runtime/legacy/definitions.mjs +115 -0
  344. package/skills/abelien-harness/runtime/legacy/external-recovery.mjs +48 -0
  345. package/skills/abelien-harness/runtime/legacy/workflow-store.mjs +183 -0
  346. package/skills/abelien-harness/runtime/model-actions.md +57 -0
  347. package/skills/abelien-harness/runtime/model-actions.mjs +52 -0
  348. package/skills/abelien-harness/runtime/ports/file/artifact-store.mjs +103 -0
  349. package/skills/abelien-harness/runtime/ports/file/common.mjs +100 -0
  350. package/skills/abelien-harness/runtime/ports/file/execution-store.mjs +248 -0
  351. package/skills/abelien-harness/runtime/ports/file/index.mjs +23 -0
  352. package/skills/abelien-harness/runtime/ports/file/resource-store.mjs +51 -0
  353. package/skills/abelien-harness/runtime/snapshot.mjs +96 -0
  354. package/skills/abelien-harness/runtime/task-view/README.md +54 -0
  355. package/skills/abelien-harness/runtime/task-view/index.mjs +344 -0
  356. package/skills/abelien-harness/runtime/testing/index.mjs +123 -0
  357. package/skills/abelien-harness/runtime/testing/scenarios.mjs +343 -0
  358. package/skills/abelien-harness/runtime/workflow/flows.mjs +68 -0
  359. package/skills/abelien-harness/runtime/workflow/httl.mjs +77 -0
  360. package/skills/abelien-harness/runtime/workflow/index.mjs +190 -0
  361. package/skills/abelien-harness/runtime/workflow/legacy-flow.mjs +183 -0
  362. package/skills/abelien-harness/runtime/workflow/view.mjs +66 -0
  363. package/skills/abelien-harness/scripts/ab.mjs +49 -607
  364. package/skills/abelien-harness/scripts/action-cli.mjs +54 -0
  365. package/skills/abelien-harness/scripts/action-docs.mjs +308 -0
  366. package/skills/abelien-harness/scripts/action-registry.mjs +433 -0
  367. package/skills/abelien-harness/scripts/machine-state.mjs +21 -0
  368. package/skills/abelien-harness/scripts/source-registry.mjs +4 -3
  369. package/skills/abelien-harness/scripts/store.mjs +212 -0
  370. package/skills/abelien-harness/scripts/template.mjs +22 -0
  371. package/skills/abelien-harness/scripts/web/common.mjs +2 -2
  372. package/skills/abelien-harness/scripts/web/deepseek.mjs +50 -0
  373. package/skills/abelien-harness/scripts/web/search.mjs +37 -0
  374. package/skills/abelien-harness/scripts/web/source-registry.mjs +2 -0
  375. package/skills/abelien-reference/SKILL.md +6 -6
  376. package/skills/abelien-reference/actions/reference.finalize.json +48 -0
  377. package/skills/abelien-reference/actions/reference.page.json +28 -0
  378. package/skills/abelien-reference/actions/reference.research.json +68 -0
  379. package/skills/abelien-reference/bindings.json +78 -0
  380. package/skills/abelien-reference/contract/catalog-reference.md +51 -0
  381. package/skills/abelien-reference/contract/host-responsibilities.md +4 -2
  382. package/skills/abelien-reference/contract/host-tools.generated.json +2632 -0
  383. package/skills/abelien-reference/domain.json +10 -3
  384. package/skills/abelien-reference/fixtures/catalog/speaker.json +390 -0
  385. package/skills/abelien-reference/fixtures/create.final.json +1 -0
  386. package/skills/abelien-reference/fixtures/restore.collected.json +1 -0
  387. package/skills/abelien-reference/fixtures/restore.final.json +1 -0
  388. package/skills/abelien-reference/references/actions/reference.finalize.generated.md +173 -0
  389. package/skills/abelien-reference/references/actions/reference.page.generated.md +40 -0
  390. package/skills/abelien-reference/references/actions/reference.research.generated.md +196 -0
  391. package/skills/abelien-reference/references/actions.generated.md +10 -0
  392. package/skills/abelien-reference/references/research-contract.md +10 -38
  393. package/skills/abelien-reference/schemas/catalog-reference.v1.json +306 -0
  394. package/skills/abelien-reference/schemas/finalize-input.v1.json +16 -0
  395. package/skills/abelien-reference/schemas/host-tools.v1.json +31 -0
  396. package/skills/abelien-reference/schemas/reference-evidence.v1.json +8 -5
  397. package/skills/abelien-reference/schemas/research-input.v1.json +149 -0
  398. package/skills/abelien-reference/scripts/catalog-reference.mjs +248 -0
  399. package/skills/abelien-reference/scripts/evidence.mjs +21 -10
  400. package/skills/abelien-reference/scripts/research.mjs +57 -25
  401. package/skills/abelien-structure/SKILL.md +49 -35
  402. package/skills/abelien-structure/actions/cad.assets.json +24 -0
  403. package/skills/abelien-structure/actions/cad.build.json +29 -0
  404. package/skills/abelien-structure/actions/cad.fallback.json +29 -0
  405. package/skills/abelien-structure/actions/cad.precheck.json +31 -0
  406. package/skills/abelien-structure/actions/structure.assets-request.json +36 -0
  407. package/skills/abelien-structure/actions/structure.cad-assemble.json +56 -0
  408. package/skills/abelien-structure/actions/structure.cad-check.json +51 -0
  409. package/skills/abelien-structure/actions/structure.layout-check.json +36 -0
  410. package/skills/abelien-structure/actions/structure.layout-request.json +36 -0
  411. package/skills/abelien-structure/actions/structure.prelude.json +41 -0
  412. package/skills/abelien-structure/actions/structure.swap-candidates.json +31 -0
  413. package/skills/abelien-structure/bindings.json +181 -0
  414. package/skills/abelien-structure/contract/host-tools.generated.json +28972 -0
  415. package/skills/abelien-structure/domain.json +205 -0
  416. package/skills/abelien-structure/flows/user-journey-cad.json +336 -0
  417. package/skills/abelien-structure/references/actions/cad.assets.generated.md +81 -0
  418. package/skills/abelien-structure/references/actions/cad.build.generated.md +37 -0
  419. package/skills/abelien-structure/references/actions/cad.fallback.generated.md +426 -0
  420. package/skills/abelien-structure/references/actions/cad.precheck.generated.md +46 -0
  421. package/skills/abelien-structure/references/actions/structure.assets-request.generated.md +511 -0
  422. package/skills/abelien-structure/references/actions/structure.cad-assemble.generated.md +315 -0
  423. package/skills/abelien-structure/references/actions/structure.cad-check.generated.md +329 -0
  424. package/skills/abelien-structure/references/actions/structure.layout-check.generated.md +414 -0
  425. package/skills/abelien-structure/references/actions/structure.layout-request.generated.md +364 -0
  426. package/skills/abelien-structure/references/actions/structure.prelude.generated.md +569 -0
  427. package/skills/abelien-structure/references/actions/structure.swap-candidates.generated.md +160 -0
  428. package/skills/abelien-structure/references/actions.generated.md +18 -0
  429. package/skills/abelien-structure/references/cad-functions.generated.md +540 -0
  430. package/skills/abelien-structure/references/cad-modules.md +68 -0
  431. package/skills/abelien-structure/references/handoff.md +8 -13
  432. package/skills/abelien-structure/references/skeleton.md +83 -0
  433. package/skills/abelien-structure/references/structure-reasonableness.md +5 -5
  434. package/skills/abelien-structure/schemas/asset-request.v1.json +61 -0
  435. package/skills/abelien-structure/schemas/cad-assemble-input.v1.json +20 -0
  436. package/skills/abelien-structure/schemas/cad-build.v1.json +422 -0
  437. package/skills/abelien-structure/schemas/cad-candidate.v1.json +50 -0
  438. package/skills/abelien-structure/schemas/cad-check-input.v1.json +24 -0
  439. package/skills/abelien-structure/schemas/cad-fallback-input.v1.json +39 -0
  440. package/skills/abelien-structure/schemas/cad-flow-input.v1.json +141 -0
  441. package/skills/abelien-structure/schemas/cad-modules.v1.json +163 -0
  442. package/skills/abelien-structure/schemas/cad-result.v1.json +231 -0
  443. package/skills/abelien-structure/schemas/cad-source.v1.json +157 -0
  444. package/skills/abelien-structure/schemas/component-assets.v1.json +44 -0
  445. package/skills/abelien-structure/schemas/layout-check-input.v1.json +13 -0
  446. package/skills/abelien-structure/schemas/layout-check-result.v1.json +57 -0
  447. package/skills/abelien-structure/schemas/layout-proposal.v1.json +72 -0
  448. package/skills/abelien-structure/schemas/layout-request-input.v1.json +96 -0
  449. package/skills/abelien-structure/schemas/layout-request.v1.json +108 -0
  450. package/skills/abelien-structure/schemas/prelude-input.v1.json +20 -0
  451. package/skills/abelien-structure/schemas/prelude.v1.json +459 -0
  452. package/skills/abelien-structure/schemas/skeleton.v1.json +318 -0
  453. package/skills/abelien-structure/schemas/swap-candidates-input.v1.json +50 -0
  454. package/skills/abelien-structure/schemas/swap-candidates-result.v1.json +46 -0
  455. package/skills/abelien-structure/scripts/cad.mjs +802 -0
  456. package/skills/abelien-structure/scripts/geometry.mjs +192 -0
  457. package/skills/abelien-structure/scripts/layout.mjs +657 -0
  458. package/skills/abelien-structure/scripts/schemas.mjs +34 -0
  459. package/skills/abelien-structure/scripts/swap.mjs +79 -0
  460. package/skills/abelien-structure-worker/SKILL.md +38 -8
  461. package/skills/abelien-structure-worker/domain.json +15 -1
  462. package/skills/abelien-structure-worker/worker/abelien_cad.py +50 -4
  463. package/skills/abelien-structure-worker/worker/assembly-validation.mjs +3 -2
  464. package/skills/abelien-structure-worker/worker/asset_probe.py +119 -0
  465. package/skills/abelien-structure-worker/worker/cad.py +81 -5
  466. package/skills/abelien-structure-worker/worker/cli-adapter.mjs +20 -1
  467. package/skills/abelien-structure-worker/worker/jobs.mjs +92 -35
  468. package/skills/abelien-structure-worker/worker/main.mjs +24 -3
  469. package/skills/abelien-structure-worker/worker/native.mjs +3 -2
  470. package/skills/abelien-structure-worker/worker/representation.mjs +2 -1
  471. package/skills/abelien-structure-worker/worker/source-contract.mjs +4 -3
  472. package/skills/abelien-workspace/SKILL.md +16 -10
  473. package/skills/abelien-workspace/actions/component.search.json +27 -0
  474. package/skills/abelien-workspace/actions/image.generate.json +29 -0
  475. package/skills/abelien-workspace/actions/image.import.json +30 -0
  476. package/skills/abelien-workspace/actions/question.card.json +26 -0
  477. package/skills/abelien-workspace/actions/studio.prepare.json +28 -0
  478. package/skills/abelien-workspace/actions/visual.review.json +31 -0
  479. package/skills/abelien-workspace/actions/workspace.hardware-reselect-input.json +15 -0
  480. package/skills/abelien-workspace/actions/workspace.intake-complete.json +31 -0
  481. package/skills/abelien-workspace/actions/workspace.intake-route.json +31 -0
  482. package/skills/abelien-workspace/actions/workspace.intake-wait.json +31 -0
  483. package/skills/abelien-workspace/actions/workspace.journey-next.json +30 -0
  484. package/skills/abelien-workspace/actions/workspace.lanes-next.json +30 -0
  485. package/skills/abelien-workspace/assets/creation-start-flow.json +316 -0
  486. package/skills/abelien-workspace/assets/hardware-reselect-flow.json +23 -0
  487. package/skills/abelien-workspace/assets/journey-stage-plan.json +1107 -79
  488. package/skills/abelien-workspace/assets/lane-plan.json +52 -5
  489. package/skills/abelien-workspace/bindings.json +216 -0
  490. package/skills/abelien-workspace/contract/host-tools.generated.json +9242 -0
  491. package/skills/abelien-workspace/domain.json +79 -3
  492. package/skills/abelien-workspace/flows/creation.create.json +1349 -0
  493. package/skills/abelien-workspace/flows/creation.modify.json +1353 -0
  494. package/skills/abelien-workspace/flows/creation.remix.json +506 -0
  495. package/skills/abelien-workspace/flows/creation.restore.json +1249 -0
  496. package/skills/abelien-workspace/references/actions/component.search.generated.md +35 -0
  497. package/skills/abelien-workspace/references/actions/image.generate.generated.md +31 -0
  498. package/skills/abelien-workspace/references/actions/image.import.generated.md +31 -0
  499. package/skills/abelien-workspace/references/actions/question.card.generated.md +39 -0
  500. package/skills/abelien-workspace/references/actions/studio.prepare.generated.md +37 -0
  501. package/skills/abelien-workspace/references/actions/visual.review.generated.md +41 -0
  502. package/skills/abelien-workspace/references/actions/workspace.hardware-reselect-input.generated.md +489 -0
  503. package/skills/abelien-workspace/references/actions/workspace.intake-complete.generated.md +187 -0
  504. package/skills/abelien-workspace/references/actions/workspace.intake-route.generated.md +184 -0
  505. package/skills/abelien-workspace/references/actions/workspace.intake-wait.generated.md +175 -0
  506. package/skills/abelien-workspace/references/actions/workspace.journey-next.generated.md +89 -0
  507. package/skills/abelien-workspace/references/actions/workspace.lanes-next.generated.md +59 -0
  508. package/skills/abelien-workspace/references/actions.generated.md +19 -0
  509. package/skills/abelien-workspace/references/creation-intake.md +44 -0
  510. package/skills/abelien-workspace/references/delivery-policy.md +27 -0
  511. package/skills/abelien-workspace/references/harness-binding.md +10 -15
  512. package/skills/abelien-workspace/references/journey-stage-plan.md +121 -43
  513. package/skills/abelien-workspace/references/product-flow.md +86 -0
  514. package/skills/abelien-workspace/references/studio-visual-contract.md +11 -0
  515. package/skills/abelien-workspace/references/user-journey.md +8 -8
  516. package/skills/abelien-workspace/schemas/appearance-points-reply.v1.json +27 -0
  517. package/skills/abelien-workspace/schemas/creation-intake.v1.json +566 -0
  518. package/skills/abelien-workspace/schemas/delivery-policy.v1.json +815 -0
  519. package/skills/abelien-workspace/schemas/hardware-reselect-input.v1.json +21 -0
  520. package/skills/abelien-workspace/schemas/hardware-reselect-result.v1.json +15 -0
  521. package/skills/abelien-workspace/schemas/hardware-result-reply.v1.json +67 -0
  522. package/skills/abelien-workspace/schemas/host-success-reply.v1.json +18 -0
  523. package/skills/abelien-workspace/schemas/host-tools.v1.json +152 -0
  524. package/skills/abelien-workspace/schemas/journey-next-input.v1.json +52 -0
  525. package/skills/abelien-workspace/schemas/journey-next-result.v1.json +92 -0
  526. package/skills/abelien-workspace/schemas/lanes-next-input.v1.json +49 -0
  527. package/skills/abelien-workspace/schemas/lanes-next-result.v1.json +54 -0
  528. package/skills/abelien-workspace/schemas/plan-common.v1.json +68 -0
  529. package/skills/abelien-workspace/schemas/reference-final-reply.v1.json +18 -0
  530. package/skills/abelien-workspace/schemas/skeleton-reply.v1.json +104 -0
  531. package/skills/abelien-workspace/schemas/studio-visual-spec.v1.json +454 -0
  532. package/skills/abelien-workspace/scripts/creation-intake.mjs +87 -0
  533. package/skills/abelien-workspace/scripts/creation-tasks.mjs +323 -0
  534. package/skills/abelien-workspace/scripts/delivery-policy.mjs +176 -0
  535. package/skills/abelien-workspace/scripts/flow-compile.mjs +291 -0
  536. package/skills/abelien-workspace/scripts/journey-next.mjs +42 -41
  537. package/skills/abelien-workspace/scripts/lanes-next.mjs +8 -10
  538. package/skills/abelien-workspace/scripts/plans.mjs +76 -0
  539. package/skills/abelien-workspace-host/SKILL.md +25 -0
  540. package/skills/abelien-workspace-host/actions/workspace.admission.json +30 -0
  541. package/skills/abelien-workspace-host/actions/workspace.delivery-claims.json +30 -0
  542. package/skills/abelien-workspace-host/bindings.json +32 -0
  543. package/skills/abelien-workspace-host/contract/host-tools.generated.json +3630 -0
  544. package/skills/abelien-workspace-host/domain.json +42 -0
  545. package/skills/abelien-workspace-host/references/actions/workspace.admission.generated.md +217 -0
  546. package/skills/abelien-workspace-host/references/actions/workspace.delivery-claims.generated.md +145 -0
  547. package/skills/abelien-workspace-host/references/actions.generated.md +9 -0
  548. package/skills/abelien-workspace-host/schemas/delivery-policy.v1.json +18 -0
  549. package/skills/abelien-workspace-host/scripts/delivery-policy.mjs +2 -0
  550. package/skills/abelien-structure/contract/run-stage-internals.md +0 -5
  551. package/skills/abelien-structure/references/build123d-execution.md +0 -71
  552. package/skills/abelien-structure/references/bundle-quality.md +0 -28
  553. package/skills/abelien-structure/scripts/check_bundle.py +0 -197
  554. package/skills/abelien-structure/scripts/run_stage.py +0 -265
  555. /package/skills/{abelien-structure → abelien-appearance}/scripts/check_visual_review.py +0 -0
@@ -0,0 +1,1235 @@
1
+ {
2
+ "schema": "abelien.host-tools.v1",
3
+ "package": "abelien-algorithm",
4
+ "actions": [
5
+ {
6
+ "action_id": "algorithm.candidates",
7
+ "contract_version": 1,
8
+ "definition_digest": "b56ce171dbde92d68a3aec1ae149b1e7ceeb1e35d71b3bc34561cf2f8fa0f012",
9
+ "audience": "agent",
10
+ "description": "核验 Agent 基于 implementation 研究为每个 reaction 提出的候选实现:引用须逐字出现在本次研究存下的正文,候选只能引用为自己 reaction 检索的页面,库内算法须来自研究输入的库清单;每个 reaction 要么有候选、要么写明未解决原因;保存为 status=proposed,不依赖硬件",
11
+ "input_schema": {
12
+ "title": "abelien.algorithm.candidates.input.v1",
13
+ "description": "基于 implementation 研究为每个 reaction 提出的候选实现;research_id 由宿主按本步检索结果填入,其余字段与 algorithm-candidates 相同。",
14
+ "type": "object",
15
+ "required": [
16
+ "research_id",
17
+ "candidates"
18
+ ],
19
+ "properties": {
20
+ "research_id": {
21
+ "type": "string",
22
+ "pattern": "^algorithm-research:[A-Za-z0-9][A-Za-z0-9_-]{0,127}$",
23
+ "description": "已存的算法研究资源"
24
+ },
25
+ "candidates": {
26
+ "type": "array",
27
+ "maxItems": 40,
28
+ "description": "每个 reaction 1–3 个候选;违反硬约束的不提交。",
29
+ "items": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": [
33
+ "reaction_id",
34
+ "implementation_ref",
35
+ "implementation_type",
36
+ "execution_target",
37
+ "summary"
38
+ ],
39
+ "properties": {
40
+ "reaction_id": {
41
+ "type": "string",
42
+ "description": "需求里的 reaction id。"
43
+ },
44
+ "implementation_ref": {
45
+ "type": "string",
46
+ "minLength": 1,
47
+ "maxLength": 80,
48
+ "description": "实现的简短名称(如 FastLED、Open-Meteo Forecast API、microWakeWord),不带网址、括号说明或用途;说明写进 summary。绑定时原样引用。"
49
+ },
50
+ "implementation_version": {
51
+ "type": [
52
+ "string",
53
+ "null"
54
+ ],
55
+ "maxLength": 60,
56
+ "description": "来源写明的确定版本(如 3.9.0、v2.1.0、One Call 3.0 的 3.0);来源没写就填 null,不填 latest、main。"
57
+ },
58
+ "implementation_type": {
59
+ "enum": [
60
+ "firmware",
61
+ "library",
62
+ "model",
63
+ "cloud_service"
64
+ ]
65
+ },
66
+ "execution_target": {
67
+ "enum": [
68
+ "edge",
69
+ "cloud",
70
+ "hybrid"
71
+ ]
72
+ },
73
+ "library_entry_id": {
74
+ "type": [
75
+ "string",
76
+ "null"
77
+ ],
78
+ "description": "库内已适配算法的 entry_id;库外候选省略或填 null。"
79
+ },
80
+ "summary": {
81
+ "type": "string",
82
+ "minLength": 1,
83
+ "maxLength": 500,
84
+ "description": "怎么用它实现这个 reaction。"
85
+ },
86
+ "needs": {
87
+ "type": "object",
88
+ "additionalProperties": false,
89
+ "description": "对硬件的需求,按来源原文记录;原文没写的填 null 或留空列表,不猜。",
90
+ "properties": {
91
+ "compute": {
92
+ "type": [
93
+ "string",
94
+ "null"
95
+ ],
96
+ "maxLength": 500
97
+ },
98
+ "memory": {
99
+ "type": [
100
+ "string",
101
+ "null"
102
+ ],
103
+ "maxLength": 500
104
+ },
105
+ "storage": {
106
+ "type": [
107
+ "string",
108
+ "null"
109
+ ],
110
+ "maxLength": 500
111
+ },
112
+ "runtime": {
113
+ "type": [
114
+ "string",
115
+ "null"
116
+ ],
117
+ "maxLength": 500
118
+ },
119
+ "network": {
120
+ "type": [
121
+ "string",
122
+ "null"
123
+ ],
124
+ "maxLength": 500
125
+ },
126
+ "interfaces": {
127
+ "type": "array",
128
+ "maxItems": 20,
129
+ "items": {
130
+ "type": "string",
131
+ "minLength": 1,
132
+ "maxLength": 120
133
+ },
134
+ "description": "每项一个接口的短名,如 I2C、GPIO、I2S microphone。"
135
+ },
136
+ "sensors": {
137
+ "type": "array",
138
+ "maxItems": 20,
139
+ "items": {
140
+ "type": "string",
141
+ "minLength": 1,
142
+ "maxLength": 120
143
+ }
144
+ }
145
+ }
146
+ },
147
+ "quotes": {
148
+ "type": "array",
149
+ "maxItems": 6,
150
+ "description": "逐字取自本次研究读到的正文(可以是为别的 reaction 读到的页面,同一份资料常常支撑几个 reaction);库外候选至少一条。",
151
+ "items": {
152
+ "type": "object",
153
+ "additionalProperties": false,
154
+ "required": [
155
+ "page_id",
156
+ "text"
157
+ ],
158
+ "properties": {
159
+ "page_id": {
160
+ "type": "string",
161
+ "description": "本次研究的页面 id,如 p3。"
162
+ },
163
+ "text": {
164
+ "type": "string",
165
+ "minLength": 8,
166
+ "maxLength": 400
167
+ }
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
173
+ },
174
+ "unresolved": {
175
+ "type": "array",
176
+ "description": "确实找不到候选的 reaction,每个只写一次。",
177
+ "items": {
178
+ "type": "object",
179
+ "additionalProperties": false,
180
+ "required": [
181
+ "reaction_id",
182
+ "reason"
183
+ ],
184
+ "properties": {
185
+ "reaction_id": {
186
+ "type": "string"
187
+ },
188
+ "reason": {
189
+ "type": "string",
190
+ "minLength": 1,
191
+ "maxLength": 500
192
+ }
193
+ }
194
+ }
195
+ },
196
+ "unknowns": {
197
+ "type": "array",
198
+ "items": {
199
+ "type": "string",
200
+ "minLength": 1,
201
+ "maxLength": 500
202
+ }
203
+ }
204
+ },
205
+ "additionalProperties": false
206
+ },
207
+ "output_schema": {
208
+ "title": "abelien.algorithm.candidates.result.v1",
209
+ "description": "保存为 algorithm-research(status=proposed)的候选;不依赖硬件。",
210
+ "type": "object",
211
+ "required": [
212
+ "id",
213
+ "status",
214
+ "schema",
215
+ "collected_id",
216
+ "candidates",
217
+ "unresolved",
218
+ "unknowns"
219
+ ],
220
+ "properties": {
221
+ "id": {
222
+ "type": "string",
223
+ "minLength": 1
224
+ },
225
+ "status": {
226
+ "const": "proposed"
227
+ },
228
+ "schema": {
229
+ "type": "string",
230
+ "minLength": 1
231
+ },
232
+ "collected_id": {
233
+ "type": "string",
234
+ "minLength": 1,
235
+ "description": "所依据的 collected 研究"
236
+ },
237
+ "candidates": {
238
+ "type": "array",
239
+ "items": {
240
+ "type": "object"
241
+ }
242
+ },
243
+ "unresolved": {
244
+ "type": "array",
245
+ "items": {
246
+ "type": "object"
247
+ }
248
+ },
249
+ "unknowns": {
250
+ "type": "array",
251
+ "description": "未解决的缺口"
252
+ }
253
+ }
254
+ }
255
+ },
256
+ {
257
+ "action_id": "algorithm.finalize",
258
+ "contract_version": 1,
259
+ "definition_digest": "97b448d37858372a35e5a4040102ccbbeccc9e5437657cf20724c8369594062e",
260
+ "audience": "agent",
261
+ "description": "把 Agent 基于硬件型号和官方联网证据做出的算法绑定归一化为版本化选型资源;operation=bind 时候选取自 algorithm.candidates,来源回执从 Harness 自己存下的研究正文解析,硬件基线尚未 verified 时结果固定为 needs_confirmation",
262
+ "input_schema": {
263
+ "title": "abelien.algorithm.finalize.input.v1",
264
+ "description": "把 Agent 的算法绑定归一化为版本化选型资源。operation=bind 时候选取自 algorithm.candidates(proposed_id),来源回执由 Harness 从存下的研究正文填写;硬件基线尚未 verified 时结果固定为 needs_confirmation。",
265
+ "type": "object",
266
+ "required": [
267
+ "hardware_selection_id",
268
+ "hardware_selection_revision",
269
+ "requirements",
270
+ "reactions",
271
+ "research"
272
+ ],
273
+ "properties": {
274
+ "operation": {
275
+ "enum": [
276
+ "select",
277
+ "bind"
278
+ ],
279
+ "description": "缺省 select"
280
+ },
281
+ "hardware_selection_id": {
282
+ "type": "string",
283
+ "pattern": "^hardware-selection:[A-Za-z0-9][A-Za-z0-9_-]{0,127}$",
284
+ "description": "已存的硬件选型资源"
285
+ },
286
+ "hardware_selection_revision": {
287
+ "type": "string",
288
+ "minLength": 1
289
+ },
290
+ "proposed_id": {
291
+ "type": "string",
292
+ "pattern": "^algorithm-research:[A-Za-z0-9][A-Za-z0-9_-]{0,127}$",
293
+ "description": "仅 bind:已提议候选所在的研究"
294
+ },
295
+ "requirements": {
296
+ "type": "object",
297
+ "required": [
298
+ "limits"
299
+ ],
300
+ "properties": {
301
+ "limits": {
302
+ "type": "array",
303
+ "description": "约束(没有时为空数组)"
304
+ }
305
+ },
306
+ "description": "clarify 整理后的需求原样"
307
+ },
308
+ "reactions": {
309
+ "type": "array",
310
+ "minItems": 1,
311
+ "items": {
312
+ "type": "object"
313
+ },
314
+ "description": "需求的 reaction[] 原样,必须覆盖全部 reaction"
315
+ },
316
+ "research": {
317
+ "title": "abelien.algorithm-bindings.v1",
318
+ "description": "绑定与来源(bind 时 candidates 由 Harness 从 proposed 候选填入)",
319
+ "type": "object",
320
+ "additionalProperties": false,
321
+ "required": [
322
+ "bindings",
323
+ "sources"
324
+ ],
325
+ "properties": {
326
+ "bindings": {
327
+ "type": "array",
328
+ "description": "每个 reaction 恰好一条。",
329
+ "items": {
330
+ "type": "object",
331
+ "additionalProperties": false,
332
+ "required": [
333
+ "reaction_id",
334
+ "implementation_ref",
335
+ "implementation_version",
336
+ "implementation_type",
337
+ "execution_target",
338
+ "hardware_component_ids",
339
+ "source_ids",
340
+ "compatibility",
341
+ "constraint_checks"
342
+ ],
343
+ "properties": {
344
+ "reaction_id": {
345
+ "type": "string"
346
+ },
347
+ "implementation_ref": {
348
+ "type": "string",
349
+ "maxLength": 80,
350
+ "description": "该 reaction 已提议候选之一的 implementation_ref,原样照抄。"
351
+ },
352
+ "implementation_version": {
353
+ "type": "string",
354
+ "maxLength": 60,
355
+ "description": "确定版本;候选没写版本时取厂商或实现资料写明的版本,查不到就照实填 unknown(结果会保持待确认)。"
356
+ },
357
+ "implementation_type": {
358
+ "enum": [
359
+ "firmware",
360
+ "library",
361
+ "model",
362
+ "cloud_service"
363
+ ]
364
+ },
365
+ "execution_target": {
366
+ "enum": [
367
+ "edge",
368
+ "cloud",
369
+ "hybrid"
370
+ ]
371
+ },
372
+ "hardware_component_ids": {
373
+ "type": "array",
374
+ "minItems": 1,
375
+ "items": {
376
+ "type": "string"
377
+ },
378
+ "description": "已登记硬件选型里的 component_id。"
379
+ },
380
+ "source_ids": {
381
+ "type": "array",
382
+ "minItems": 1,
383
+ "items": {
384
+ "type": "string"
385
+ },
386
+ "description": "sources[].id:至少一条覆盖所列型号的 hardware_vendor 来源,和一条 implementation_ref 与版本都相同的实现来源。"
387
+ },
388
+ "compatibility": {
389
+ "type": "object",
390
+ "additionalProperties": false,
391
+ "required": [
392
+ "io",
393
+ "runtime",
394
+ "dependencies",
395
+ "network",
396
+ "license",
397
+ "resources"
398
+ ],
399
+ "properties": {
400
+ "io": {
401
+ "type": "object",
402
+ "additionalProperties": false,
403
+ "required": [
404
+ "status",
405
+ "summary",
406
+ "source_ids"
407
+ ],
408
+ "properties": {
409
+ "status": {
410
+ "enum": [
411
+ "pass",
412
+ "conflict",
413
+ "unknown"
414
+ ],
415
+ "description": "来源能证明成立才写 pass;证据不够写 unknown,冲突写 conflict。"
416
+ },
417
+ "summary": {
418
+ "type": "string",
419
+ "minLength": 1,
420
+ "maxLength": 500
421
+ },
422
+ "source_ids": {
423
+ "type": "array",
424
+ "items": {
425
+ "type": "string"
426
+ },
427
+ "description": "支撑这条判断的 sources[].id。"
428
+ }
429
+ }
430
+ },
431
+ "runtime": {
432
+ "type": "object",
433
+ "additionalProperties": false,
434
+ "required": [
435
+ "status",
436
+ "summary",
437
+ "source_ids"
438
+ ],
439
+ "properties": {
440
+ "status": {
441
+ "enum": [
442
+ "pass",
443
+ "conflict",
444
+ "unknown"
445
+ ],
446
+ "description": "来源能证明成立才写 pass;证据不够写 unknown,冲突写 conflict。"
447
+ },
448
+ "summary": {
449
+ "type": "string",
450
+ "minLength": 1,
451
+ "maxLength": 500
452
+ },
453
+ "source_ids": {
454
+ "type": "array",
455
+ "items": {
456
+ "type": "string"
457
+ },
458
+ "description": "支撑这条判断的 sources[].id。"
459
+ }
460
+ }
461
+ },
462
+ "dependencies": {
463
+ "type": "object",
464
+ "additionalProperties": false,
465
+ "required": [
466
+ "status",
467
+ "summary",
468
+ "source_ids"
469
+ ],
470
+ "properties": {
471
+ "status": {
472
+ "enum": [
473
+ "pass",
474
+ "conflict",
475
+ "unknown"
476
+ ],
477
+ "description": "来源能证明成立才写 pass;证据不够写 unknown,冲突写 conflict。"
478
+ },
479
+ "summary": {
480
+ "type": "string",
481
+ "minLength": 1,
482
+ "maxLength": 500
483
+ },
484
+ "source_ids": {
485
+ "type": "array",
486
+ "items": {
487
+ "type": "string"
488
+ },
489
+ "description": "支撑这条判断的 sources[].id。"
490
+ }
491
+ }
492
+ },
493
+ "network": {
494
+ "type": "object",
495
+ "additionalProperties": false,
496
+ "required": [
497
+ "status",
498
+ "summary",
499
+ "source_ids"
500
+ ],
501
+ "properties": {
502
+ "status": {
503
+ "enum": [
504
+ "pass",
505
+ "conflict",
506
+ "unknown"
507
+ ],
508
+ "description": "来源能证明成立才写 pass;证据不够写 unknown,冲突写 conflict。"
509
+ },
510
+ "summary": {
511
+ "type": "string",
512
+ "minLength": 1,
513
+ "maxLength": 500
514
+ },
515
+ "source_ids": {
516
+ "type": "array",
517
+ "items": {
518
+ "type": "string"
519
+ },
520
+ "description": "支撑这条判断的 sources[].id。"
521
+ }
522
+ }
523
+ },
524
+ "license": {
525
+ "type": "object",
526
+ "additionalProperties": false,
527
+ "required": [
528
+ "status",
529
+ "summary",
530
+ "source_ids"
531
+ ],
532
+ "properties": {
533
+ "status": {
534
+ "enum": [
535
+ "pass",
536
+ "conflict",
537
+ "unknown"
538
+ ],
539
+ "description": "来源能证明成立才写 pass;证据不够写 unknown,冲突写 conflict。"
540
+ },
541
+ "summary": {
542
+ "type": "string",
543
+ "minLength": 1,
544
+ "maxLength": 500
545
+ },
546
+ "source_ids": {
547
+ "type": "array",
548
+ "items": {
549
+ "type": "string"
550
+ },
551
+ "description": "支撑这条判断的 sources[].id。"
552
+ }
553
+ }
554
+ },
555
+ "resources": {
556
+ "type": "object",
557
+ "additionalProperties": false,
558
+ "required": [
559
+ "status",
560
+ "summary",
561
+ "source_ids"
562
+ ],
563
+ "properties": {
564
+ "status": {
565
+ "enum": [
566
+ "pass",
567
+ "conflict",
568
+ "unknown"
569
+ ],
570
+ "description": "来源能证明成立才写 pass;证据不够写 unknown,冲突写 conflict。"
571
+ },
572
+ "summary": {
573
+ "type": "string",
574
+ "minLength": 1,
575
+ "maxLength": 500
576
+ },
577
+ "source_ids": {
578
+ "type": "array",
579
+ "items": {
580
+ "type": "string"
581
+ },
582
+ "description": "支撑这条判断的 sources[].id。"
583
+ }
584
+ }
585
+ }
586
+ }
587
+ },
588
+ "constraint_checks": {
589
+ "type": "array",
590
+ "description": "需求里每条非 preference 的 limits 各一条。",
591
+ "items": {
592
+ "type": "object",
593
+ "additionalProperties": false,
594
+ "required": [
595
+ "constraint_id",
596
+ "status",
597
+ "summary",
598
+ "source_ids"
599
+ ],
600
+ "properties": {
601
+ "constraint_id": {
602
+ "type": "string",
603
+ "description": "limits[].id。"
604
+ },
605
+ "status": {
606
+ "enum": [
607
+ "pass",
608
+ "conflict",
609
+ "unknown"
610
+ ]
611
+ },
612
+ "summary": {
613
+ "type": "string",
614
+ "minLength": 1,
615
+ "maxLength": 500
616
+ },
617
+ "source_ids": {
618
+ "type": "array",
619
+ "items": {
620
+ "type": "string"
621
+ }
622
+ }
623
+ }
624
+ }
625
+ }
626
+ }
627
+ }
628
+ },
629
+ "sources": {
630
+ "type": "array",
631
+ "maxItems": 64,
632
+ "items": {
633
+ "type": "object",
634
+ "additionalProperties": false,
635
+ "required": [
636
+ "id",
637
+ "research_id",
638
+ "page_id",
639
+ "source_type",
640
+ "title",
641
+ "publisher",
642
+ "version",
643
+ "excerpt"
644
+ ],
645
+ "properties": {
646
+ "id": {
647
+ "type": "string",
648
+ "description": "本次提交内唯一。"
649
+ },
650
+ "research_id": {
651
+ "type": "string",
652
+ "description": "页面所在的 algorithm-research 资源 id(实现研究或本步厂商检索)。"
653
+ },
654
+ "page_id": {
655
+ "type": "string",
656
+ "description": "该研究里 text_source=page 的页面 id;检索摘要页不算证据。"
657
+ },
658
+ "source_type": {
659
+ "enum": [
660
+ "hardware_vendor",
661
+ "implementation_official",
662
+ "huggingface",
663
+ "cloud_vendor"
664
+ ],
665
+ "description": "按发布方选:所选型号的厂商资料 hardware_vendor;库、固件或模型的官方资料 implementation_official;Hugging Face 模型卡 huggingface;云服务官方文档 cloud_vendor。分销商、博客、论坛不是一手来源,不要列为来源。"
666
+ },
667
+ "title": {
668
+ "type": "string",
669
+ "minLength": 1,
670
+ "maxLength": 300
671
+ },
672
+ "publisher": {
673
+ "type": "string",
674
+ "minLength": 1,
675
+ "maxLength": 200
676
+ },
677
+ "version": {
678
+ "type": "string",
679
+ "maxLength": 60,
680
+ "description": "页面写明的文档版本、修订号或对应的实现版本;没写就填 unknown(结果会保持待确认)。"
681
+ },
682
+ "excerpt": {
683
+ "type": "string",
684
+ "minLength": 1,
685
+ "maxLength": 1200,
686
+ "description": "逐字取自该页正文的一段,支撑本来源被引用的结论。"
687
+ },
688
+ "hardware_component_ids": {
689
+ "type": "array",
690
+ "items": {
691
+ "type": "string"
692
+ },
693
+ "description": "hardware_vendor 来源覆盖的 component_id。"
694
+ },
695
+ "implementation_ref": {
696
+ "type": "string",
697
+ "maxLength": 80,
698
+ "description": "实现来源对应的 implementation_ref,与绑定一致。"
699
+ }
700
+ }
701
+ }
702
+ },
703
+ "unknowns": {
704
+ "type": "array",
705
+ "items": {
706
+ "type": "string",
707
+ "maxLength": 1000
708
+ }
709
+ },
710
+ "blocking_unknowns": {
711
+ "type": "array",
712
+ "items": {
713
+ "type": "string",
714
+ "maxLength": 1000
715
+ },
716
+ "description": "影响能否按此绑定实现的未知,写明怎么核实。"
717
+ },
718
+ "unavailable_sources": {
719
+ "type": "array",
720
+ "items": {
721
+ "type": "string",
722
+ "maxLength": 500
723
+ },
724
+ "description": "想读但读不到的资料及原因。"
725
+ }
726
+ }
727
+ }
728
+ }
729
+ },
730
+ "output_schema": {
731
+ "title": "abelien.algorithm.finalize.result.v1",
732
+ "description": "保存为 algorithm-selection 的算法选型。verified 必有绑定与来源、没有阻断未知。",
733
+ "type": "object",
734
+ "required": [
735
+ "id",
736
+ "status",
737
+ "hardware_selection_id",
738
+ "hardware_selection_revision",
739
+ "source_snapshot",
740
+ "revision",
741
+ "bindings",
742
+ "candidates",
743
+ "sources",
744
+ "unavailable_sources",
745
+ "unknowns",
746
+ "blocking_unknowns"
747
+ ],
748
+ "properties": {
749
+ "id": {
750
+ "type": "string",
751
+ "minLength": 1
752
+ },
753
+ "status": {
754
+ "enum": [
755
+ "verified",
756
+ "needs_confirmation"
757
+ ]
758
+ },
759
+ "hardware_selection_id": {
760
+ "type": "string",
761
+ "minLength": 1
762
+ },
763
+ "hardware_selection_revision": {
764
+ "type": "string",
765
+ "minLength": 1
766
+ },
767
+ "operation": {
768
+ "const": "bind"
769
+ },
770
+ "proposed_id": {
771
+ "type": "string"
772
+ },
773
+ "source_snapshot": {
774
+ "type": "string",
775
+ "minLength": 1
776
+ },
777
+ "revision": {
778
+ "type": "string",
779
+ "minLength": 1
780
+ },
781
+ "bindings": {
782
+ "type": "array",
783
+ "items": {
784
+ "type": "object"
785
+ }
786
+ },
787
+ "candidates": {
788
+ "type": "array"
789
+ },
790
+ "sources": {
791
+ "type": "array",
792
+ "items": {
793
+ "type": "object"
794
+ }
795
+ },
796
+ "unavailable_sources": {
797
+ "type": "array"
798
+ },
799
+ "unknowns": {
800
+ "type": "array",
801
+ "description": "未解决的缺口"
802
+ },
803
+ "blocking_unknowns": {
804
+ "type": "array"
805
+ }
806
+ },
807
+ "allOf": [
808
+ {
809
+ "if": {
810
+ "properties": {
811
+ "status": {
812
+ "const": "verified"
813
+ }
814
+ },
815
+ "required": [
816
+ "status"
817
+ ]
818
+ },
819
+ "then": {
820
+ "properties": {
821
+ "bindings": {
822
+ "minItems": 1
823
+ },
824
+ "sources": {
825
+ "minItems": 1
826
+ },
827
+ "blocking_unknowns": {
828
+ "maxItems": 0
829
+ }
830
+ }
831
+ }
832
+ }
833
+ ]
834
+ }
835
+ },
836
+ {
837
+ "action_id": "algorithm.lane-state",
838
+ "contract_version": 1,
839
+ "definition_digest": "49dbca22c3b02beb0157012af6ec3042949f2d6e2efb98c887dbad746dce0e79",
840
+ "audience": "agent",
841
+ "description": "只读:按本草稿已存的资源回答当前需求有没有已提议的候选(落点、reaction、limits 与研究时一致),以及这些候选有没有绑定到给定的硬件选型 id 与 revision;宿主把结果映射成 workspace.lanes-next 的 artifacts",
842
+ "input_schema": {
843
+ "title": "abelien.algorithm.lane-state.input.v1",
844
+ "description": "只读:按本草稿已存的资源回答当前需求有没有已提议的候选,以及它们有没有绑定到给定的硬件选型。",
845
+ "type": "object",
846
+ "required": [
847
+ "requirements"
848
+ ],
849
+ "properties": {
850
+ "requirements": {
851
+ "description": "clarify 整理后的需求(Requirements),原样传入;研究只看 context、reaction 与 limits",
852
+ "type": "object",
853
+ "required": [
854
+ "reaction"
855
+ ],
856
+ "properties": {
857
+ "context": {
858
+ "type": "object",
859
+ "properties": {
860
+ "text": {
861
+ "type": "string"
862
+ },
863
+ "source": {
864
+ "enum": [
865
+ "user",
866
+ "system"
867
+ ]
868
+ }
869
+ },
870
+ "description": "使用场景"
871
+ },
872
+ "reaction": {
873
+ "type": "array",
874
+ "minItems": 1,
875
+ "maxItems": 20,
876
+ "items": {
877
+ "type": "object",
878
+ "required": [
879
+ "id",
880
+ "text"
881
+ ],
882
+ "properties": {
883
+ "id": {
884
+ "type": "string",
885
+ "minLength": 1
886
+ },
887
+ "text": {
888
+ "type": "string",
889
+ "minLength": 1
890
+ }
891
+ }
892
+ },
893
+ "description": "触发→反应条目,1–20 条,id 不重复"
894
+ },
895
+ "limits": {
896
+ "type": "array",
897
+ "items": {
898
+ "type": "object",
899
+ "required": [
900
+ "id"
901
+ ],
902
+ "properties": {
903
+ "id": {
904
+ "type": "string",
905
+ "minLength": 1
906
+ },
907
+ "text": {
908
+ "type": "string"
909
+ },
910
+ "strength": {
911
+ "enum": [
912
+ "hard",
913
+ "preference"
914
+ ]
915
+ }
916
+ }
917
+ },
918
+ "description": "约束;只有明确的 preference 不阻断"
919
+ },
920
+ "intent": {
921
+ "type": "object"
922
+ }
923
+ }
924
+ },
925
+ "hardware_selection_id": {
926
+ "oneOf": [
927
+ {
928
+ "type": "null"
929
+ },
930
+ {
931
+ "type": "string",
932
+ "pattern": "^hardware-selection:[A-Za-z0-9][A-Za-z0-9_-]{0,127}$",
933
+ "description": "已存的硬件选型资源"
934
+ }
935
+ ],
936
+ "description": "当前硬件选型;还没有时省略或为 null"
937
+ },
938
+ "hardware_selection_revision": {
939
+ "type": "string",
940
+ "minLength": 1,
941
+ "description": "给出硬件选型时必填"
942
+ }
943
+ },
944
+ "additionalProperties": false
945
+ },
946
+ "output_schema": {
947
+ "title": "abelien.algorithm.lane-state.result.v1",
948
+ "description": "车道状态;宿主把它映射成 workspace.lanes-next 的 artifacts。",
949
+ "type": "object",
950
+ "required": [
951
+ "requirements_digest",
952
+ "proposed_id",
953
+ "selection_id",
954
+ "selection_status"
955
+ ],
956
+ "properties": {
957
+ "requirements_digest": {
958
+ "type": "string",
959
+ "minLength": 1,
960
+ "description": "落点、reaction、limits 的规范化摘要"
961
+ },
962
+ "proposed_id": {
963
+ "type": [
964
+ "string",
965
+ "null"
966
+ ],
967
+ "description": "同需求最新的已提议候选"
968
+ },
969
+ "selection_id": {
970
+ "type": [
971
+ "string",
972
+ "null"
973
+ ],
974
+ "description": "这些候选绑定到给定硬件的选型结果"
975
+ },
976
+ "selection_status": {
977
+ "type": [
978
+ "string",
979
+ "null"
980
+ ],
981
+ "description": "该绑定的状态"
982
+ }
983
+ }
984
+ }
985
+ },
986
+ {
987
+ "action_id": "algorithm.research",
988
+ "contract_version": 1,
989
+ "definition_digest": "2ef67d4c15ed3b06fb3772d7ec7ca83de4fb42b06ed740714e679f9bb08dc072",
990
+ "audience": "agent",
991
+ "description": "执行 Agent 的检索计划并保存证据:purpose=implementation 只凭需求检索实现资料(可与硬件选型并行),purpose=hardware 检索已选型号的厂商资料;Volc 检索(每次最多 5 条)与公开 HTTPS 页面安全直读,正文按 sha256 存证;每条付费检索先存 sent 再发送,重跑复用已完成检索、结果未知时要求对账而不重发;同一请求完成后重复运行直接返回已有结果",
992
+ "input_schema": {
993
+ "title": "abelien.algorithm.research.input.v1",
994
+ "description": "算法研究的检索计划:implementation 只凭需求检索实现资料(可与硬件选型并行),hardware 检索已选型号的厂商资料。",
995
+ "type": "object",
996
+ "required": [
997
+ "purpose",
998
+ "requirements",
999
+ "plan"
1000
+ ],
1001
+ "properties": {
1002
+ "purpose": {
1003
+ "enum": [
1004
+ "implementation",
1005
+ "hardware"
1006
+ ]
1007
+ },
1008
+ "requirements": {
1009
+ "description": "clarify 整理后的需求(Requirements),原样传入;研究只看 context、reaction 与 limits",
1010
+ "type": "object",
1011
+ "required": [
1012
+ "reaction"
1013
+ ],
1014
+ "properties": {
1015
+ "context": {
1016
+ "type": "object",
1017
+ "properties": {
1018
+ "text": {
1019
+ "type": "string"
1020
+ },
1021
+ "source": {
1022
+ "enum": [
1023
+ "user",
1024
+ "system"
1025
+ ]
1026
+ }
1027
+ },
1028
+ "description": "使用场景"
1029
+ },
1030
+ "reaction": {
1031
+ "type": "array",
1032
+ "minItems": 1,
1033
+ "maxItems": 20,
1034
+ "items": {
1035
+ "type": "object",
1036
+ "required": [
1037
+ "id",
1038
+ "text"
1039
+ ],
1040
+ "properties": {
1041
+ "id": {
1042
+ "type": "string",
1043
+ "minLength": 1
1044
+ },
1045
+ "text": {
1046
+ "type": "string",
1047
+ "minLength": 1
1048
+ }
1049
+ }
1050
+ },
1051
+ "description": "触发→反应条目,1–20 条,id 不重复"
1052
+ },
1053
+ "limits": {
1054
+ "type": "array",
1055
+ "items": {
1056
+ "type": "object",
1057
+ "required": [
1058
+ "id"
1059
+ ],
1060
+ "properties": {
1061
+ "id": {
1062
+ "type": "string",
1063
+ "minLength": 1
1064
+ },
1065
+ "text": {
1066
+ "type": "string"
1067
+ },
1068
+ "strength": {
1069
+ "enum": [
1070
+ "hard",
1071
+ "preference"
1072
+ ]
1073
+ }
1074
+ }
1075
+ },
1076
+ "description": "约束;只有明确的 preference 不阻断"
1077
+ },
1078
+ "intent": {
1079
+ "type": "object"
1080
+ }
1081
+ }
1082
+ },
1083
+ "library": {
1084
+ "type": [
1085
+ "array",
1086
+ "null"
1087
+ ],
1088
+ "maxItems": 50,
1089
+ "description": "仅 implementation:库内已有算法清单,候选只能从中引用库内条目",
1090
+ "items": {
1091
+ "type": "object",
1092
+ "required": [
1093
+ "entry_id",
1094
+ "name"
1095
+ ],
1096
+ "properties": {
1097
+ "entry_id": {
1098
+ "type": "string",
1099
+ "minLength": 1
1100
+ },
1101
+ "name": {
1102
+ "type": "string",
1103
+ "minLength": 1,
1104
+ "maxLength": 200
1105
+ },
1106
+ "category": {
1107
+ "type": "string"
1108
+ }
1109
+ }
1110
+ }
1111
+ },
1112
+ "hardware_selection_id": {
1113
+ "type": "string",
1114
+ "pattern": "^hardware-selection:[A-Za-z0-9][A-Za-z0-9_-]{0,127}$",
1115
+ "description": "仅 hardware:所查型号来自这份选型"
1116
+ },
1117
+ "hardware_selection_revision": {
1118
+ "type": "string",
1119
+ "minLength": 1,
1120
+ "description": "仅 hardware:选型修订号,必须是当前修订"
1121
+ },
1122
+ "plan": {
1123
+ "type": "object",
1124
+ "required": [
1125
+ "queries"
1126
+ ],
1127
+ "properties": {
1128
+ "queries": {
1129
+ "type": "array",
1130
+ "minItems": 1,
1131
+ "maxItems": 8,
1132
+ "items": {
1133
+ "type": "object",
1134
+ "required": [
1135
+ "query"
1136
+ ],
1137
+ "properties": {
1138
+ "reaction_id": {
1139
+ "type": "string",
1140
+ "description": "implementation 必填:检索服务的 reaction;hardware 可选"
1141
+ },
1142
+ "component_id": {
1143
+ "type": "string",
1144
+ "description": "仅 hardware:选型里的 component_id"
1145
+ },
1146
+ "query": {
1147
+ "type": "string",
1148
+ "minLength": 1,
1149
+ "maxLength": 200
1150
+ },
1151
+ "count": {
1152
+ "type": "integer",
1153
+ "minimum": 1,
1154
+ "maximum": 5
1155
+ }
1156
+ },
1157
+ "additionalProperties": false
1158
+ }
1159
+ },
1160
+ "max_pages": {
1161
+ "type": "integer",
1162
+ "minimum": 0,
1163
+ "maximum": 12,
1164
+ "default": 8
1165
+ }
1166
+ },
1167
+ "additionalProperties": false
1168
+ }
1169
+ },
1170
+ "additionalProperties": false
1171
+ },
1172
+ "output_schema": {
1173
+ "title": "abelien.algorithm.research.result.v1",
1174
+ "description": "保存为 algorithm-research 的研究证据(collected):检索、页面与正文摘要;proposed 是 algorithm.candidates 另存的结果。",
1175
+ "type": "object",
1176
+ "required": [
1177
+ "id",
1178
+ "status",
1179
+ "schema",
1180
+ "request_digest"
1181
+ ],
1182
+ "properties": {
1183
+ "id": {
1184
+ "type": "string",
1185
+ "minLength": 1
1186
+ },
1187
+ "status": {
1188
+ "enum": [
1189
+ "collected",
1190
+ "proposed"
1191
+ ]
1192
+ },
1193
+ "schema": {
1194
+ "type": "string",
1195
+ "minLength": 1
1196
+ },
1197
+ "request_digest": {
1198
+ "type": "string",
1199
+ "minLength": 1
1200
+ },
1201
+ "purpose": {
1202
+ "enum": [
1203
+ "implementation",
1204
+ "hardware"
1205
+ ]
1206
+ },
1207
+ "reactions": {
1208
+ "type": "array",
1209
+ "items": {
1210
+ "type": "object"
1211
+ }
1212
+ },
1213
+ "searches": {
1214
+ "type": "array",
1215
+ "items": {
1216
+ "type": "object"
1217
+ }
1218
+ },
1219
+ "pages": {
1220
+ "type": "array",
1221
+ "items": {
1222
+ "type": "object"
1223
+ },
1224
+ "description": "读取的页面:url、status、text_sha256 与正文 blob 引用"
1225
+ },
1226
+ "unknowns": {
1227
+ "type": "array",
1228
+ "description": "未解决的缺口"
1229
+ }
1230
+ }
1231
+ }
1232
+ }
1233
+ ],
1234
+ "tools": []
1235
+ }