kairos-chain 3.96.1 → 3.98.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +64 -0
- data/lib/kairos_mcp/version.rb +1 -1
- data/templates/knowledge/hestiachain_meeting_place/hestiachain_meeting_place.md +17 -7
- data/templates/knowledge/hestiachain_meeting_place_jp/hestiachain_meeting_place_jp.md +16 -7
- data/templates/knowledge/photo_song_slideshow/assets/mv/mv_engine.js +710 -0
- data/templates/knowledge/photo_song_slideshow/assets/mv/mv_project.example.json +15 -0
- data/templates/knowledge/photo_song_slideshow/assets/mv/mv_template.html +36 -0
- data/templates/knowledge/photo_song_slideshow/assets/mv/scenes.example.js +71 -0
- data/templates/knowledge/photo_song_slideshow/assets/project.example.json +32 -0
- data/templates/knowledge/photo_song_slideshow/photo_song_slideshow.md +366 -0
- data/templates/knowledge/photo_song_slideshow/scripts/align_lyrics.rb +241 -0
- data/templates/knowledge/photo_song_slideshow/scripts/analyze_audio.rb +223 -0
- data/templates/knowledge/photo_song_slideshow/scripts/build_slideshow.rb +587 -0
- data/templates/knowledge/photo_song_slideshow/scripts/check_motion.rb +89 -0
- data/templates/knowledge/photo_song_slideshow/scripts/mv_assets.rb +195 -0
- data/templates/knowledge/photo_song_slideshow/scripts/mv_data.rb +32 -0
- data/templates/knowledge/photo_song_slideshow/scripts/mv_render.rb +290 -0
- data/templates/knowledge/photo_song_slideshow/scripts/survey_photos.rb +134 -0
- data/templates/knowledge/photo_song_slideshow/scripts/whatsapp_media.rb +139 -0
- data/templates/skillsets/hestia/knowledge/hestia_meeting_place/hestia_meeting_place.md +22 -4
- data/templates/skillsets/hestia/lib/hestia/agent_registry.rb +144 -15
- data/templates/skillsets/hestia/lib/hestia/place_router.rb +283 -67
- data/templates/skillsets/hestia/lib/hestia/registration_nonce_store.rb +36 -0
- data/templates/skillsets/hestia/lib/hestia/skill_board.rb +23 -0
- data/templates/skillsets/hestia/lib/hestia.rb +2 -1
- data/templates/skillsets/hestia/skillset.json +2 -2
- data/templates/skillsets/hestia/tools/meeting_place_status.rb +14 -0
- data/templates/skillsets/mmp/lib/mmp/crypto.rb +6 -0
- data/templates/skillsets/mmp/lib/mmp/identity.rb +89 -2
- data/templates/skillsets/mmp/lib/mmp/meeting_session_store.rb +18 -2
- data/templates/skillsets/mmp/lib/mmp/place_client.rb +47 -6
- data/templates/skillsets/mmp/lib/mmp/registration_proof.rb +149 -0
- data/templates/skillsets/mmp/lib/mmp.rb +2 -1
- data/templates/skillsets/mmp/skillset.json +1 -1
- data/templates/skillsets/mmp/tools/meeting_attest_skill.rb +4 -1
- data/templates/skillsets/mmp/tools/meeting_connect.rb +38 -6
- data/templates/skillsets/skillset_exchange/lib/skillset_exchange/place_extension.rb +99 -13
- data/templates/skillsets/skillset_exchange/skillset.json +3 -3
- metadata +18 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e312be42d3199a05aa52884dcf3370148369c0849df71492fd1c9ab1f79b57be
|
|
4
|
+
data.tar.gz: 87797db9bd4bdee55f8a5fe7a0fe341a55acc5f642808b3b885e441a66c632fa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6f0d61ef92ff884f20171cabcbe6222f2423e90937db362074b85abe074ac6bb05d1c21248935bcdeb667cecb9a6967fa261ab93cb37a46b6ba5064d93dbcc96
|
|
7
|
+
data.tar.gz: 1b806a572ffbfdfd5db978294e140e3682a9f532e1c916eeca4c81cfd8a3aa4193a5c61c5efc9a51fdfdfb9e99a2ec1f31a93b8bce8468fcabdc9082ae557a6d
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,70 @@ This project follows [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [3.98.0] - 2026-10-24
|
|
10
|
+
|
|
11
|
+
### Added — L1 `photo_song_slideshow`: photos → song → slideshow or music video
|
|
12
|
+
|
|
13
|
+
A shipped L1 knowledge entry for turning a set of photos into a song and then into a video: the agent
|
|
14
|
+
writes the lyrics, the person makes the song (SUNO or similar), and the entry carries everything after.
|
|
15
|
+
|
|
16
|
+
- **Slideshow mode**: photos out of WhatsApp Desktop with readable names (`whatsapp_media.rb`), a
|
|
17
|
+
150-photo survey for about 10k tokens and duplicate detection (`survey_photos.rb`), tempo fitted to the
|
|
18
|
+
kick drum (`analyze_audio.rb`), line timing of the person's own lyrics by speech recognition
|
|
19
|
+
(`align_lyrics.rb`), and a beat-cut HTML player plus an MP4 without shake (`build_slideshow.rb`,
|
|
20
|
+
`check_motion.rb`).
|
|
21
|
+
- **MV mode**: a canvas page (`assets/mv/mv_engine.js`, `mv_template.html`, `scenes.example.js`) with 20
|
|
22
|
+
scenes — split screens, twin clocks, a phone receiving photos, polaroids dropping on the beat, a heart
|
|
23
|
+
window over two faces, portrait clips side by side, a candle, a flame writing the title, every photo
|
|
24
|
+
forming a heart — plus light leaks, bokeh, bloom, letterbox and word-by-word lyrics. `mv_render.rb`
|
|
25
|
+
drives headless Chrome frame by frame, so the MP4 equals the paused preview; it renders resumable
|
|
26
|
+
20-second segments keyed by content, re-renders only a stated range (`--keep-outside`), and writes
|
|
27
|
+
1080p and 720p copies (`--light`). `mv_assets.rb` prepares pictures, cuts characters out of sticker
|
|
28
|
+
sheets and cuts video clips, refusing any output that could land on a source file.
|
|
29
|
+
- `align_lyrics.rb` writes word times, re-recognises quiet passages on their own (`--extra-pass`), warns
|
|
30
|
+
when the recording is probably a different song, and reuses a transcript only for the same recording.
|
|
31
|
+
|
|
32
|
+
Ruby standard library only; ffmpeg, ImageMagick 7, Google Chrome and a speech recogniser (`whisper-cli`
|
|
33
|
+
or `mlx_whisper`) are external commands. Two rounds of multi-LLM review; the second round's findings
|
|
34
|
+
were fixed after the round and checked by the author only.
|
|
35
|
+
|
|
36
|
+
## [3.97.0] - 2026-10-23
|
|
37
|
+
|
|
38
|
+
### Security — Meeting Place agent ids can no longer be taken over (hestia 0.3.0, mmp 1.2.0, skillset_exchange 0.2.0)
|
|
39
|
+
|
|
40
|
+
Anyone who knew an agent id could register it again with their own key, or present the static identity
|
|
41
|
+
signature the agent publishes, and then withdraw or replace that agent's deposits. The Place also honoured
|
|
42
|
+
session tokens the core P2P introduce endpoint mints for any presented id, unregister and knowledge needs
|
|
43
|
+
acted on the agent id named in the request body, and SkillSet storage directories (`<name>_<id>`) could
|
|
44
|
+
collide across depositors.
|
|
45
|
+
|
|
46
|
+
- **Key binding.** An agent id is bound to the first key that registers it, in `agent_bindings.json` under
|
|
47
|
+
the storage directory. No request and no fade-out changes or removes a binding; only the operator editing
|
|
48
|
+
the file with the Place stopped does. New bindings are limited to `binding_rate_per_hour` (default 60).
|
|
49
|
+
A bindings file that cannot be read stops the Place; a missing one is accepted only on a Place that has
|
|
50
|
+
never run.
|
|
51
|
+
- **Registration proof** (`MMP::RegistrationProof`). Registration carries an RSA-PSS signature over the
|
|
52
|
+
https origin the client dialed, the agent id, the issue time and a single-use nonce. The Place accepts only
|
|
53
|
+
its own origin (`meeting_place.web_ui.place_host`), fresh proofs that no earlier process could have
|
|
54
|
+
accepted, each nonce once, and keys with exponent 65537 and at least 2048 bits. Static identity
|
|
55
|
+
signatures are refused (`registration_proof_required`): **clients must update to mmp 1.2.0**.
|
|
56
|
+
- **Sessions.** The Place honours only sessions it issued (marked in the session store, carrying the hash of
|
|
57
|
+
the binding).
|
|
58
|
+
- **Unbound ids holding items** from before this release are bound only by a key that signed everything held
|
|
59
|
+
under them (deposits, attestations, SkillSet deposits), and only while every place extension declared by
|
|
60
|
+
an enabled SkillSet is mounted. Place extensions must implement `holdings_evidence(agent_id)`.
|
|
61
|
+
- **Writes act on the session id.** Unregister and needs refuse a body `agent_id` naming another id; a signed
|
|
62
|
+
attestation payload must name the session id.
|
|
63
|
+
- **Storage.** A SkillSet directory or board content file belongs to the first deposit holding it (compared
|
|
64
|
+
case-insensitively); colliding deposits are refused (409 `storage_conflict`).
|
|
65
|
+
- **Client.** The id a client presents to Meeting Places lives in `keys/mmp_place_id`: random for keypairs
|
|
66
|
+
created from now on, the previous id for existing installs. `meeting_connect` takes `fresh_id: true` to
|
|
67
|
+
take a new id after `key_mismatch`. `meeting_place_status` reports the running Place, including
|
|
68
|
+
`unmounted_extensions`.
|
|
69
|
+
- **Upgrading a Place that has run before:** create `<storage>/agent_bindings.json` (bindings you hold, or
|
|
70
|
+
`{}`) before the first start; then check `/health` shows `place_started: true` and `meeting_place_status`
|
|
71
|
+
lists no unmounted extensions.
|
|
72
|
+
|
|
9
73
|
## [3.96.1] - 2026-10-22
|
|
10
74
|
|
|
11
75
|
### Fixed — agent runs convene the persona seat their reviews declared none for (agent 1.0.2)
|
data/lib/kairos_mcp/version.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hestiachain_meeting_place
|
|
3
3
|
description: "HestiaChain Meeting Place — user guide for agent discovery, skill exchange, and trust anchoring"
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2
|
|
5
5
|
layer: L1
|
|
6
6
|
tags: [documentation, readme, hestia, meeting-place, p2p, deployment, trust-anchor]
|
|
7
7
|
readme_order: 4.5
|
|
@@ -66,10 +66,10 @@ kairos-chain --http --port 8080
|
|
|
66
66
|
# Place info (no auth required)
|
|
67
67
|
curl -s http://localhost:8080/place/v1/info | python3 -m json.tool
|
|
68
68
|
|
|
69
|
-
# Register an agent
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
# Register an agent: registration carries a signed, single-use proof
|
|
70
|
+
# (hestia >= 0.3.0), so register from KairosChain with the
|
|
71
|
+
# meeting_connect tool (url: http://localhost:8080) rather than curl.
|
|
72
|
+
# The session token is in its result.
|
|
73
73
|
|
|
74
74
|
# Browse the skill board (Bearer token required)
|
|
75
75
|
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
@@ -81,8 +81,8 @@ curl -s -H "Authorization: Bearer $TOKEN" \
|
|
|
81
81
|
| Method | Path | Auth | Description |
|
|
82
82
|
|--------|------|------|-------------|
|
|
83
83
|
| GET | `/place/v1/info` | None | Place metadata and identity |
|
|
84
|
-
| POST | `/place/v1/register` |
|
|
85
|
-
| POST | `/place/v1/unregister` | Bearer | Unregister
|
|
84
|
+
| POST | `/place/v1/register` | Registration proof (required, mmp >= 1.2.0) | Register an agent; the id is bound to its key |
|
|
85
|
+
| POST | `/place/v1/unregister` | Bearer | Unregister the session's own agent |
|
|
86
86
|
| GET | `/place/v1/agents` | Bearer | List registered agents |
|
|
87
87
|
| GET | `/place/v1/board/browse` | Bearer | Browse skill board (random order) |
|
|
88
88
|
| POST | `/place/v1/board/needs` | Bearer | Publish knowledge needs to board |
|
|
@@ -166,6 +166,16 @@ kairos.example.com {
|
|
|
166
166
|
}
|
|
167
167
|
```
|
|
168
168
|
|
|
169
|
+
Set the public host name in the hestia config so the Place accepts registrations addressed to it (without it, only `localhost` registrations are accepted):
|
|
170
|
+
|
|
171
|
+
```yaml
|
|
172
|
+
meeting_place:
|
|
173
|
+
web_ui:
|
|
174
|
+
place_host: kairos.example.com
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Upgrading a Place that has run before to hestia 0.3.0: the first start refuses until `agent_bindings.json` exists under the storage directory (`<data_dir>/storage/`). Create it with the bindings you hold, or as `{}`. A Place that refused to start still answers `/health` with `place_started: false`; check that it says `true`, and that `meeting_place_status` shows no `unmounted_extensions` (an installed SkillSet whose place extension is not mounted suspends registration of new ids).
|
|
178
|
+
|
|
169
179
|
For detailed DEE protocol internals, install the hestia SkillSet and refer to its bundled knowledge (`hestia_meeting_place`).
|
|
170
180
|
|
|
171
181
|
### Interaction Policy (instance discipline)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hestiachain_meeting_place_jp
|
|
3
3
|
description: "HestiaChain Meeting Place — エージェント探索・スキル交換・信頼アンカーのユーザーガイド"
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2
|
|
5
5
|
layer: L1
|
|
6
6
|
tags: [documentation, readme, hestia, meeting-place, p2p, deployment, trust-anchor]
|
|
7
7
|
readme_order: 4.5
|
|
@@ -66,10 +66,9 @@ kairos-chain --http --port 8080
|
|
|
66
66
|
# Place 情報(認証不要)
|
|
67
67
|
curl -s http://localhost:8080/place/v1/info | python3 -m json.tool
|
|
68
68
|
|
|
69
|
-
#
|
|
70
|
-
curl
|
|
71
|
-
|
|
72
|
-
-d '{"id":"agent-alpha","name":"Agent Alpha","capabilities":{"supported_actions":["test"]}}'
|
|
69
|
+
# エージェント登録:登録には署名つきの使い捨ての証明が要る(hestia 0.3.0 以降)。
|
|
70
|
+
# curl ではなく、KairosChain から meeting_connect ツール(url: http://localhost:8080)で登録する。
|
|
71
|
+
# 通行証(session token)はその結果に入っている。
|
|
73
72
|
|
|
74
73
|
# スキルボード閲覧(Bearer トークン必須)
|
|
75
74
|
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
@@ -81,8 +80,8 @@ curl -s -H "Authorization: Bearer $TOKEN" \
|
|
|
81
80
|
| メソッド | パス | 認証 | 説明 |
|
|
82
81
|
|---------|------|------|------|
|
|
83
82
|
| GET | `/place/v1/info` | なし | Place メタデータと身元情報 |
|
|
84
|
-
| POST | `/place/v1/register` |
|
|
85
|
-
| POST | `/place/v1/unregister` | Bearer |
|
|
83
|
+
| POST | `/place/v1/register` | 登録の証明(必須、mmp 1.2.0 以降) | エージェント登録。ID はその鍵に結びつく |
|
|
84
|
+
| POST | `/place/v1/unregister` | Bearer | 通行証の持ち主自身の登録解除 |
|
|
86
85
|
| GET | `/place/v1/agents` | Bearer | 登録エージェント一覧 |
|
|
87
86
|
| GET | `/place/v1/board/browse` | Bearer | スキルボード閲覧(ランダム順) |
|
|
88
87
|
| POST | `/place/v1/board/needs` | Bearer | 知識ニーズをボードに公開 |
|
|
@@ -166,4 +165,14 @@ kairos.example.com {
|
|
|
166
165
|
}
|
|
167
166
|
```
|
|
168
167
|
|
|
168
|
+
hestia の設定に公開ホスト名を書いてください。書かないと、localhost 宛ての登録しか受け付けません。
|
|
169
|
+
|
|
170
|
+
```yaml
|
|
171
|
+
meeting_place:
|
|
172
|
+
web_ui:
|
|
173
|
+
place_host: kairos.example.com
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
一度でも動かしたことのある Meeting Place を hestia 0.3.0 に上げる場合:保存ディレクトリ(`<data_dir>/storage/`)に `agent_bindings.json` ができるまで、最初の起動は止まります。手元にある結びつきを書いて作るか、`{}` で作ってください。起動が止まった Meeting Place も `/health` には `place_started: false` で答えるので、`true` になっていること、`meeting_place_status` の `unmounted_extensions` が空であることを確かめてください(組み込まれていない拡張を持つ SkillSet が入っていると、新しい ID の登録が止まります)。
|
|
177
|
+
|
|
169
178
|
DEE プロトコルの内部詳細については、hestia SkillSet をインストールし、同梱の knowledge(`hestia_meeting_place`)を参照してください。
|