c5d696556e
三樣都做完並實測過,但落地的最後一步是終端機裡等人親手打字的互動閘。 它們原本只存在於某個 session 的 scratchpad——那種目錄一關就沒了。 · recipes/gitea_put_file.yaml 出貨線 7 站等它 · recipes/cf_worker_deploy_simple.yaml ⚠️ 只適用無 bindings 的簡單情形(見 #90) · hash-component/ sha256/sha1/md5,已與系統原生指令逐位元核對 (.wasm 是 1.3MB 編譯產物,不進版控,README 附重編指令) README 寫了落地指令與各自的注意事項。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
75 lines
2.5 KiB
YAML
75 lines
2.5 KiB
YAML
canonical_id: "hash"
|
|
display_name: "計算雜湊"
|
|
category: "logic"
|
|
version: "v1"
|
|
wasi_target: "preview1"
|
|
stability: "floating"
|
|
runtime_compat:
|
|
- "cf-workers"
|
|
- "workerd"
|
|
- "wazero"
|
|
constraints:
|
|
max_size_kb: 2048
|
|
max_cold_start_ms: 50
|
|
no_network_syscall: true
|
|
no_filesystem_syscall: true
|
|
io_model: "stdin_stdout_json"
|
|
input_schema:
|
|
type: object
|
|
required: [input]
|
|
properties:
|
|
algorithm:
|
|
type: string
|
|
enum: [sha256, sha1, md5]
|
|
description: 雜湊演算法,預設 sha256
|
|
input:
|
|
type: string
|
|
description: 要算雜湊的內容
|
|
encoding:
|
|
type: string
|
|
enum: [hex, base64]
|
|
description: 輸出編碼,預設 hex
|
|
output_schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
data:
|
|
type: object
|
|
properties:
|
|
result:
|
|
type: string
|
|
algorithm:
|
|
type: string
|
|
encoding:
|
|
type: string
|
|
gherkin_tests:
|
|
- scenario: "sha256 hex(預設)"
|
|
given: '{"algorithm":"sha256","input":"hello"}'
|
|
then_contains: '"result":"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"'
|
|
- scenario: "sha1"
|
|
given: '{"algorithm":"sha1","input":"hello"}'
|
|
then_contains: '"result":"aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"'
|
|
- scenario: "md5"
|
|
given: '{"algorithm":"md5","input":"hello"}'
|
|
then_contains: '"result":"5d41402abc4b2a76b9719d911017c592"'
|
|
- scenario: "base64 編碼"
|
|
given: '{"algorithm":"sha256","input":"hello","encoding":"base64"}'
|
|
then_contains: '"result":"LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ="'
|
|
- scenario: "預設 algorithm=sha256"
|
|
given: '{"input":"hello"}'
|
|
then_contains: '"algorithm":"sha256"'
|
|
- scenario: "不支援的 algorithm"
|
|
given: '{"algorithm":"crc32","input":"hello"}'
|
|
then_contains: '{"success":false'
|
|
tags: [builtin, logic, hash, checksum, versioning]
|
|
description: >-
|
|
計算內容雜湊(sha256/sha1/md5,輸出 hex 或 base64)。純計算,無網路/檔案 syscall。
|
|
用途:出貨線版本號機制(Leo/Arcrun#91)——內容一變雜湊必變,是「改了東西版本沒動」在結構上
|
|
不可能發生的機制來源;build 站核對官方成品指紋也用它。
|
|
config_example: |
|
|
compute_hash: # 節點名稱(可自訂)
|
|
algorithm: "sha256" # 演算法(選填,預設 sha256),可選值:sha256/sha1/md5
|
|
input: "{{ctx.bundle_content}}" # 要算雜湊的內容(必填)
|
|
encoding: "hex" # 輸出編碼(選填,預設 hex),可選值:hex/base64
|