create-byan-agent 2.60.1 → 2.60.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +10 -0
- package/install/bin/byan-communication.cjs +11 -0
- package/install/lib/communication-manifest.json +243 -0
- package/install/lib/communication-migration.cjs +91 -0
- package/install/lib/communication-previous.json +181 -0
- package/install/lib/gitignore.js +135 -0
- package/install/lib/install-engine.js +17 -1
- package/install/package.json +1 -1
- package/install/templates/.claude/agents/bmad-byan.md +13 -26
- package/install/templates/.claude/agents/bmad-tao.md +47 -0
- package/install/templates/.claude/hooks/auto-dispatch-gate.js +81 -0
- package/install/templates/.claude/hooks/inject-tao.js +15 -71
- package/install/templates/.claude/hooks/inject-voice-anchor.js +21 -154
- package/install/templates/.claude/hooks/lib/dispatch-approval.cjs +135 -0
- package/install/templates/.claude/hooks/lib/dispatch-plan-format.js +293 -0
- package/install/templates/.claude/hooks/lib/plain-language.js +7 -14
- package/install/templates/.claude/hooks/lib/rtk-coverage.js +31 -0
- package/install/templates/.claude/hooks/lib/tool-log.js +143 -0
- package/install/templates/.claude/hooks/lib/voice-conformance.js +9 -32
- package/install/templates/.claude/hooks/lib/webfetch-output.js +37 -0
- package/install/templates/.claude/hooks/rtk-coverage.js +18 -0
- package/install/templates/.claude/hooks/tool-failure-guard.js +16 -9
- package/install/templates/.claude/hooks/webfetch-output.js +17 -0
- package/install/templates/.claude/rules/native-workflows.md +24 -5
- package/install/templates/.claude/rules/plain-language.md +7 -86
- package/install/templates/.claude/settings.json +56 -0
- package/install/templates/.claude/skills/byan-byan/SKILL.md +42 -83
- package/install/templates/.claude/skills/byan-hermes-dispatch/SKILL.md +22 -7
- package/install/templates/.claude/workflows/byan-auto-dispatch.js +86 -38
- package/install/templates/.codex/skills/byan/SKILL.md +7 -0
- package/install/templates/AGENTS.md +106 -0
- package/install/templates/_byan/_config/communication-policy.json +50 -0
- package/install/templates/_byan/_config/workflow-manifest.csv +2 -0
- package/install/templates/_byan/agent/byan/byan-soul.md +14 -2
- package/install/templates/_byan/agent/byan/byan-tao.md +35 -274
- package/install/templates/_byan/agent/byan/byan.md +6 -2
- package/install/templates/_byan/agent/byan/soul.md +419 -0
- package/install/templates/_byan/agent/byan/tao.md +60 -0
- package/install/templates/_byan/agent/tao/tao.md +26 -27
- package/install/templates/_byan/connaissance/mantras-sources.md +295 -0
- package/install/templates/_byan/core/activation/soul-activation.md +6 -5
- package/install/templates/_byan/core/communication.cjs +76 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/agent-matcher.js +38 -1
- package/install/templates/_byan/mcp/byan-mcp-server/lib/communication.cjs +77 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/dispatch-router.js +12 -3
- package/install/templates/_byan/mcp/byan-mcp-server/lib/dispatch.js +51 -20
- package/install/templates/_byan/mcp/byan-mcp-server/lib/fd-ack.js +75 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/leantime-fd-core.js +12 -1
- package/install/templates/_byan/mcp/byan-mcp-server/lib/native-tiers.js +114 -2
- package/install/templates/_byan/mcp/byan-mcp-server/lib/routing-ledger.js +356 -0
- package/install/templates/_byan/mcp/byan-mcp-server/lib/soul.js +9 -0
- package/install/templates/_byan/mcp/byan-mcp-server/server.js +24 -6
- package/install/templates/_byan/mcp/byan-mcp-server/skill-bundles-manifest.json +2 -2
- package/install/templates/_byan/workflow/simple/byan/data/mantras.yaml +2 -5
- package/install/templates/_byan/workflow/simple/byan/templates/tao-template.md +56 -0
- package/install/templates/docs/auto-dispatch.md +76 -0
- package/install/templates/docs/communication.md +69 -0
- package/install/templates/docs/native-workflows-contract.md +33 -11
- package/install/templates/docs/tool-output-cost.md +88 -0
- package/install/templates/scripts/communication-eval.cjs +192 -0
- package/install/templates/scripts/rtk-coverage-report.js +30 -0
- package/install/templates/src/byan-v2/data/mantras.json +1058 -0
- package/install/templates/tests/communication/README.md +106 -0
- package/install/templates/tests/communication/incises.test.cjs +26 -0
- package/install/templates/tests/communication/scenarios.json +391 -0
- package/package.json +1 -1
- package/src/byan-v2/data/mantras.json +26 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog - BYAN (create-byan-agent)
|
|
2
2
|
|
|
3
|
+
## 2.60.2 : communication fr-1 (13 septembre 2026)
|
|
4
|
+
|
|
5
|
+
- Correction après lecture de S05 : incises avec virgules ou parenthèses, titres informatifs, événements détectés non inventés ; règles propagées aux contrats et au mode dégradé, migration depuis la première révision fr-1.
|
|
6
|
+
|
|
7
|
+
- Français précis et profils par livrable dans Soul, Tao, agent et mantra IA-26.
|
|
8
|
+
- Suppression des signatures et du tutoiement imposés aux documents ; tirets de ponctuation réservés aux marqueurs de listes avec préservation des éléments exacts.
|
|
9
|
+
- Chargement, contrats de délégation et projections cohérents ; migration ciblée prévisualisable et réversible.
|
|
10
|
+
- Corpus de 30 scénarios et recette humaine avant activation pilote. Voir [le guide](docs/communication.md).
|
|
11
|
+
|
|
12
|
+
## 2026-09-11 — Routage natif et validation du plan
|
|
13
|
+
|
|
14
|
+
- Routage modele/effort par tache, protections de verification et tests de parite.
|
|
15
|
+
- Preparation separee de l execution, validation du plan courant au terminal et dans le desktop.
|
|
16
|
+
- Journal des decisions raccorde, accuses FD compacts, extrait WebFetch avec archive integrale, mesure RTK attribuable.
|
|
17
|
+
- Documentation : [parcours et limites](docs/auto-dispatch.md), [mesures des retours](docs/tool-output-cost.md).
|
|
18
|
+
|
|
19
|
+
|
|
3
20
|
All notable changes to this project will be documented in this file.
|
|
4
21
|
|
|
5
22
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
package/README.md
CHANGED
|
@@ -501,3 +501,13 @@ MIT © [Yan-Acadenice](https://github.com/Yan-Acadenice)
|
|
|
501
501
|
---
|
|
502
502
|
|
|
503
503
|
*Fait avec de la frustration, de la curiosité, et l'envie que l'IA soit vraiment utile — pas juste impressionnante.*
|
|
504
|
+
|
|
505
|
+
### Plan de dispatch avant execution
|
|
506
|
+
|
|
507
|
+
Le rail automatique prepare un plan modele/effort par tache, puis attend sa
|
|
508
|
+
validation explicite au terminal ou dans l application. Voir le
|
|
509
|
+
[parcours complet et les limites de plateforme](docs/auto-dispatch.md).
|
|
510
|
+
|
|
511
|
+
## Politique de communication
|
|
512
|
+
|
|
513
|
+
BYAN adapte le registre au destinataire de chaque livrable, conserve les faits et réserve les tirets de ponctuation aux marqueurs de listes. Configuration, migration et recette : [guide de communication](docs/communication.md).
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
const path=require('path');
|
|
4
|
+
const migration=require('../lib/communication-migration.cjs');
|
|
5
|
+
try {
|
|
6
|
+
const [command='preview',target='.',backup]=process.argv.slice(2);
|
|
7
|
+
const options={target:path.resolve(target),source:path.resolve(__dirname,'../templates'),manifest:require('../lib/communication-manifest.json')};
|
|
8
|
+
if(!['preview','apply','rollback'].includes(command))throw Error('Usage: node install/bin/byan-communication.cjs preview|apply|rollback PROJECT [BACKUP]');
|
|
9
|
+
const result=command==='rollback'?migration.rollback({target:options.target,backup}):migration[command](options);
|
|
10
|
+
process.stdout.write(JSON.stringify(result,null,2)+'\n');
|
|
11
|
+
}catch(e){console.error(e.message);process.exitCode=1;}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "fr-1",
|
|
3
|
+
"files": [
|
|
4
|
+
{
|
|
5
|
+
"path": "docs/communication.md",
|
|
6
|
+
"sha256": "1bbcf3a0ffd89429d2e24fbce876cd644404c4cd91a5ce76495874a60873df86",
|
|
7
|
+
"previous": [
|
|
8
|
+
"9c6d864da2f3dff7708b9caecbfe095fe334fd1b13c2a95d9cd978a7b2a9d095"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"path": "scripts/communication-eval.cjs",
|
|
13
|
+
"sha256": "9d5adcc8160edbcb068f1d98ecd02bdc84359d250e729ce067b75df7b66a124f",
|
|
14
|
+
"previous": [
|
|
15
|
+
"9d5adcc8160edbcb068f1d98ecd02bdc84359d250e729ce067b75df7b66a124f"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "tests/communication/scenarios.json",
|
|
20
|
+
"sha256": "f9244498d6cc57f263ddefcae5bbc60fd809e1234f6a45ea19d7f0353072f0df",
|
|
21
|
+
"previous": [
|
|
22
|
+
"2d530387c1f5e9864315f582399d8e6cf2b9b2fc4aaeee07de1933e86ae3d974"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "tests/communication/README.md",
|
|
27
|
+
"sha256": "4577b4dfb151548545e91e0feaf377f7e8583bb2827e3fbf1d2e114367d16b68",
|
|
28
|
+
"previous": [
|
|
29
|
+
"97b4d1d9c3ee91fd6c1fcbfeec1fd8a792558cc382fd3329a7ce6f27dfbfecb9"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": "tests/communication/incises.test.cjs",
|
|
34
|
+
"sha256": "ab58c6656686318c7330346d0dbc47ffeb582c3a992e2e9f5d24a94c698371cb",
|
|
35
|
+
"previous": []
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"path": "_byan/_config/communication-policy.json",
|
|
39
|
+
"sha256": "daee745439677aadf0914f0aad7b7077896e08e4537b74f0dc9dd9ecc7829532",
|
|
40
|
+
"previous": [
|
|
41
|
+
"a77896dc67ce4607d49cc0db8a811246a835e827c3e8a29ad4bc2cddd01ba330"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"path": "_byan/core/communication.cjs",
|
|
46
|
+
"sha256": "2aea00097194aafab69cb62a78fa24bfa24fceda10797233bc82aac54d3419d0",
|
|
47
|
+
"previous": [
|
|
48
|
+
"7e57f6927fea300bfc7e36efe60fbcb594e65d23ac9552682989adacfd71e001"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"path": "_byan/agent/byan/soul.md",
|
|
53
|
+
"sha256": "71dd5477ed0f19e190fb4e139ee6ed52f81e27dc6c79036aaa831e00cb2f7a17",
|
|
54
|
+
"previous": [
|
|
55
|
+
"b82e4dea777ebaa61b0e8f0504bf744a625a5c45d314d1bd59157de1a5fe7035",
|
|
56
|
+
"71dd5477ed0f19e190fb4e139ee6ed52f81e27dc6c79036aaa831e00cb2f7a17"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"path": "_byan/agent/byan/tao.md",
|
|
61
|
+
"sha256": "6c18a3bac36dfa961dad9fdca3ad9b9f4233200be279ea0218d62d089625dc34",
|
|
62
|
+
"previous": [
|
|
63
|
+
"f08dedfb375a1306d0eddb166e958a08f379fe09cd6a65a1d7ab95dc8149f65c",
|
|
64
|
+
"c25aa9861b2ed79e4fb988261c4c4ea0cd161950dd552db51f748fdc984bdd02"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"path": "_byan/agent/byan/byan.md",
|
|
69
|
+
"sha256": "0b5c54f6b274c322bccb78fa905af501f5b7a2fcb918e6fc5ca25954fbf7a416",
|
|
70
|
+
"previous": [
|
|
71
|
+
"4b828da47f2f4c47dbea4786821b7a4bdfbd021554111682eae6a59555dc12e2",
|
|
72
|
+
"0b5c54f6b274c322bccb78fa905af501f5b7a2fcb918e6fc5ca25954fbf7a416"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"path": "_byan/agent/byan/byan-soul.md",
|
|
77
|
+
"sha256": "71dd5477ed0f19e190fb4e139ee6ed52f81e27dc6c79036aaa831e00cb2f7a17",
|
|
78
|
+
"previous": [
|
|
79
|
+
"b82e4dea777ebaa61b0e8f0504bf744a625a5c45d314d1bd59157de1a5fe7035",
|
|
80
|
+
"71dd5477ed0f19e190fb4e139ee6ed52f81e27dc6c79036aaa831e00cb2f7a17"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"path": "_byan/agent/byan/byan-tao.md",
|
|
85
|
+
"sha256": "6c18a3bac36dfa961dad9fdca3ad9b9f4233200be279ea0218d62d089625dc34",
|
|
86
|
+
"previous": [
|
|
87
|
+
"f08dedfb375a1306d0eddb166e958a08f379fe09cd6a65a1d7ab95dc8149f65c",
|
|
88
|
+
"c25aa9861b2ed79e4fb988261c4c4ea0cd161950dd552db51f748fdc984bdd02"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"path": "_byan/agent/tao/tao.md",
|
|
93
|
+
"sha256": "a3bfb4cb2ff6ec2deed6ca2339d7d293e7cbdd45e2a32ecef0d6a63ab56e61a5",
|
|
94
|
+
"previous": [
|
|
95
|
+
"b9a60707c5b0fb873a73837cf2f155b0d8e7a9fa34030fbba7c345a8882ec463",
|
|
96
|
+
"a3bfb4cb2ff6ec2deed6ca2339d7d293e7cbdd45e2a32ecef0d6a63ab56e61a5"
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"path": "_byan/core/activation/soul-activation.md",
|
|
101
|
+
"sha256": "0e9353bd6d15af1558ad345651a9a82852e2500b9c318ba0b8c67d5aed51371d",
|
|
102
|
+
"previous": [
|
|
103
|
+
"252609719d2bd33d5355308358dc3fd8c0fab2f7e7d1fe793f3f7ffa05bbe5a3",
|
|
104
|
+
"0e9353bd6d15af1558ad345651a9a82852e2500b9c318ba0b8c67d5aed51371d"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"path": "_byan/workflow/simple/byan/templates/tao-template.md",
|
|
109
|
+
"sha256": "30b6c8beced6fa0cdd13b4e1e368e64c81c96e028014e28c1e4f1d36f6e779f7",
|
|
110
|
+
"previous": [
|
|
111
|
+
"1bb74ef134b33c65a5310e01743a50df3d1f21163b56cfd38458362eb7a571d8",
|
|
112
|
+
"33170d7f76573f7ff8a2a4c9007bf9fc6d374ec12c31c10c67fbcd55591b3fb3"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"path": "_byan/workflow/simple/byan/data/mantras.yaml",
|
|
117
|
+
"sha256": "3b0234651fb52662cb194568e2e405f3591ba506e1e9a06580a98b9c6ee66e6f",
|
|
118
|
+
"previous": [
|
|
119
|
+
"5219d7f708ca79a89927d7840cdb1b8736af4e50d61355f29da91bde06688b37",
|
|
120
|
+
"355d5562c01bd3f44dea12059b289fe4da69ad5b36b0856b4d94c7d441b563ee"
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"path": "_byan/connaissance/mantras-sources.md",
|
|
125
|
+
"sha256": "bf9c76dccbeb37837dd1903b752f35023a7c994090ba89f2a47c01e2252c5a07",
|
|
126
|
+
"previous": [
|
|
127
|
+
"aaa2bd4d4d5d83796c09a884c38d151aad992da908d31bebd6959bb1b09882b7",
|
|
128
|
+
"349cfd2cf9cab190a644dd36bce9112cf326feb5b1e6710ec864a9322915d6d8"
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"path": "src/byan-v2/data/mantras.json",
|
|
133
|
+
"sha256": "bcf23ede5ed4d6bc01493d98f9fd29dec48c6f4aae43c3f596672d57d6582e18",
|
|
134
|
+
"previous": [
|
|
135
|
+
"1b956c57ad61e594b3f3f3fe1afdc5ef878f66bdc25f2987e6018c4dae774ea1",
|
|
136
|
+
"d6f4a08811a71312039a2ea0624896ffaeb62059db673f2a522bee6d6dfaba57"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"path": ".claude/hooks/inject-tao.js",
|
|
141
|
+
"sha256": "88e5ea0d7a6a97604c783806053045d4be9fac9c4bd919ecfeabdc57c25839b5",
|
|
142
|
+
"previous": [
|
|
143
|
+
"2c20ab72978f16290ddcd23944db2780f1eae6ed87b3ba001949e579cf168579",
|
|
144
|
+
"88e5ea0d7a6a97604c783806053045d4be9fac9c4bd919ecfeabdc57c25839b5"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"path": ".claude/hooks/inject-voice-anchor.js",
|
|
149
|
+
"sha256": "dc54bb0cc75083d7c6528259963e6cd068a385a86437debdc3a769d38243ce95",
|
|
150
|
+
"previous": [
|
|
151
|
+
"d35c7d239b7582e7a46c87aa102ace4c7b2f07202be705a12e43e96f1df4caeb",
|
|
152
|
+
"dc54bb0cc75083d7c6528259963e6cd068a385a86437debdc3a769d38243ce95"
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"path": ".claude/hooks/lib/plain-language.js",
|
|
157
|
+
"sha256": "934f77d487b950db0edf4fc8db50bbe24c49d2b5e008b71aa01270e50fac16db",
|
|
158
|
+
"previous": [
|
|
159
|
+
"90c2357b755da9e0862855363e1b7c5f53bf09df0e687df568734573a108c48d",
|
|
160
|
+
"934f77d487b950db0edf4fc8db50bbe24c49d2b5e008b71aa01270e50fac16db"
|
|
161
|
+
]
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"path": ".claude/hooks/lib/voice-conformance.js",
|
|
165
|
+
"sha256": "8ced1f7c932acb0bcd9150b0c317af1d87a9a377972b100a01270ddb27777201",
|
|
166
|
+
"previous": [
|
|
167
|
+
"b4277c59acacda4a49cdd10cef69569334c6c05f6e89f14cbb28289e7836dd7b",
|
|
168
|
+
"8ced1f7c932acb0bcd9150b0c317af1d87a9a377972b100a01270ddb27777201"
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"path": ".claude/rules/plain-language.md",
|
|
173
|
+
"sha256": "cabe670358e8dd76a1e0610ff25e36290eee4943fecb00fd8e9f1a64dc932d21",
|
|
174
|
+
"previous": [
|
|
175
|
+
"c4f804919bec260ed87d87d9109399dda52ab93652f3bea18bf99935878e86c4",
|
|
176
|
+
"cabe670358e8dd76a1e0610ff25e36290eee4943fecb00fd8e9f1a64dc932d21"
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"path": ".claude/skills/byan-byan/SKILL.md",
|
|
181
|
+
"sha256": "049cd334b54031e43cc287580c46e57aa99fdd166769d686f17cd97042b527ed",
|
|
182
|
+
"previous": [
|
|
183
|
+
"04ec7039907df44105f546b276d3354262ee1b87c6b060bdbb4011c98d7c2c3f",
|
|
184
|
+
"049cd334b54031e43cc287580c46e57aa99fdd166769d686f17cd97042b527ed"
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"path": ".claude/skills/byan-hermes-dispatch/SKILL.md",
|
|
189
|
+
"sha256": "f9f61c1a8816eafb6480be1fcc442339388af3790cf5ce9889a3369351c2353a",
|
|
190
|
+
"previous": [
|
|
191
|
+
"2b975bca060a6da329d384a2ed8065fa4dc2eb4817960040d3865dfce7a87eb6",
|
|
192
|
+
"f9f61c1a8816eafb6480be1fcc442339388af3790cf5ce9889a3369351c2353a"
|
|
193
|
+
]
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"path": ".codex/skills/byan/SKILL.md",
|
|
197
|
+
"sha256": "b17b7f5f8f9f3de84b9fa076540161ce4edc8daeb8122068855c220c5f351337",
|
|
198
|
+
"previous": [
|
|
199
|
+
"4cf06b7aa0478748d2327cf34d5917384e1c5215c36d5c4469013d9832b4f0f7",
|
|
200
|
+
"b17b7f5f8f9f3de84b9fa076540161ce4edc8daeb8122068855c220c5f351337"
|
|
201
|
+
]
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"path": ".claude/agents/bmad-byan.md",
|
|
205
|
+
"sha256": "ac46c69aa7636883141222ccaa21cf8c9b6a482a06f4558a32998d4af9491cfd",
|
|
206
|
+
"previous": [
|
|
207
|
+
"f7c0f579393194ac9bd4058b53f199fecae3a4d57eae687ae952feb9afce8e42",
|
|
208
|
+
"ac46c69aa7636883141222ccaa21cf8c9b6a482a06f4558a32998d4af9491cfd"
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"path": ".claude/agents/bmad-tao.md",
|
|
213
|
+
"sha256": "0b6d1d2db6cf958a3ac0eb51a56e7c6d991f72eb77da060a64cae943a6ee5603",
|
|
214
|
+
"previous": [
|
|
215
|
+
"4d9957ecdfa7cc4a029a19d638423f3dbe168f253471aa67dd1045a284ec4bda",
|
|
216
|
+
"0b6d1d2db6cf958a3ac0eb51a56e7c6d991f72eb77da060a64cae943a6ee5603"
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"path": "AGENTS.md",
|
|
221
|
+
"sha256": "15b16a62c0cacd11584559c3def19ba279244b1df4f1fb776b47fdee2b58d523",
|
|
222
|
+
"previous": [
|
|
223
|
+
"2e7b2834a111363a25450269350ac4b8a80423163f5e9d4c511033d7c0105a3e",
|
|
224
|
+
"15b16a62c0cacd11584559c3def19ba279244b1df4f1fb776b47fdee2b58d523"
|
|
225
|
+
]
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"path": "_byan/mcp/byan-mcp-server/lib/soul.js",
|
|
229
|
+
"sha256": "8e497c3411bb35e28e19d28e96d1db2b675a9c574361866a202f0bb9e7ca27a8",
|
|
230
|
+
"previous": [
|
|
231
|
+
"8aa7049069805e5221a898afc96458dcdae47d176b276c54b2a2312a2f80f839",
|
|
232
|
+
"8e497c3411bb35e28e19d28e96d1db2b675a9c574361866a202f0bb9e7ca27a8"
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"path": "_byan/mcp/byan-mcp-server/lib/communication.cjs",
|
|
237
|
+
"sha256": "d85c467de9a9be0a5f3def07c9479f09f9b14544abeadd22c1d165d661078292",
|
|
238
|
+
"previous": [
|
|
239
|
+
"d123e8ac9e30c788547503d80ad5ee8c14ec66c1646a9b0abd2df92a696659cb"
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const crypto = require('crypto');
|
|
5
|
+
const hash = value => crypto.createHash('sha256').update(value).digest('hex');
|
|
6
|
+
function safe(root, rel) {
|
|
7
|
+
if (typeof rel !== 'string' || !rel || path.isAbsolute(rel) || rel.split(/[\\/]/).some(p => p === '..' || p === '.' || !p)) throw Error('invalid path');
|
|
8
|
+
let current = path.resolve(root);
|
|
9
|
+
if (fs.existsSync(current) && fs.lstatSync(current).isSymbolicLink()) throw Error('symlink path');
|
|
10
|
+
for (const part of rel.split('/')) {
|
|
11
|
+
current = path.join(current, part);
|
|
12
|
+
if (fs.existsSync(current) && fs.lstatSync(current).isSymbolicLink()) throw Error('symlink path');
|
|
13
|
+
}
|
|
14
|
+
return current;
|
|
15
|
+
}
|
|
16
|
+
function read(file) { try { return fs.readFileSync(file); } catch(e) { if(e.code==='ENOENT') return null; throw e; } }
|
|
17
|
+
function atomic(file, data) {
|
|
18
|
+
fs.mkdirSync(path.dirname(file), {recursive:true});
|
|
19
|
+
const tmp=file+'.communication-'+crypto.randomBytes(6).toString('hex');
|
|
20
|
+
try { fs.writeFileSync(tmp,data,{mode:0o600});fs.renameSync(tmp,file); }
|
|
21
|
+
finally { if(fs.existsSync(tmp)) fs.unlinkSync(tmp); }
|
|
22
|
+
}
|
|
23
|
+
function preview({source,target,manifest}) {
|
|
24
|
+
if(manifest.version!=='fr-1'||!Array.isArray(manifest.files)) throw Error('invalid manifest');
|
|
25
|
+
const seen=new Set();
|
|
26
|
+
const files=manifest.files.map(entry=>{
|
|
27
|
+
if(seen.has(entry.path)) throw Error('duplicate path');seen.add(entry.path);
|
|
28
|
+
const desired=read(safe(source,entry.path));
|
|
29
|
+
if(!desired||hash(desired)!==entry.sha256) throw Error('source mismatch');
|
|
30
|
+
const current=read(safe(target,entry.path)), before=current===null?null:hash(current);
|
|
31
|
+
const action=before===entry.sha256?'unchanged':before===null?'create':(entry.previous||[]).includes(before)?'update':'conflict';
|
|
32
|
+
return {path:entry.path,before,after:entry.sha256,action};
|
|
33
|
+
});
|
|
34
|
+
return {version:manifest.version,files,conflicts:files.filter(f=>f.action==='conflict').map(f=>f.path)};
|
|
35
|
+
}
|
|
36
|
+
function apply(options) {
|
|
37
|
+
const plan=preview(options);
|
|
38
|
+
if(plan.conflicts.length) throw Error('migration conflict: '+plan.conflicts.join(', '));
|
|
39
|
+
const changes=plan.files.filter(f=>f.action!=='unchanged');
|
|
40
|
+
if(!changes.length) return {changed:0,backup:null};
|
|
41
|
+
const backupRel='_byan-output/communication-backups/'+Date.now()+'-'+crypto.randomBytes(6).toString('hex');
|
|
42
|
+
const backup=safe(options.target,backupRel);
|
|
43
|
+
fs.mkdirSync(backup,{recursive:true,mode:0o700});
|
|
44
|
+
const records=changes.map(entry=>{
|
|
45
|
+
const file=safe(options.target,entry.path),before=read(file);
|
|
46
|
+
if((before===null?null:hash(before))!==entry.before) throw Error('migration conflict after preview');
|
|
47
|
+
if(before!==null) atomic(safe(backup,entry.path),before);
|
|
48
|
+
return {...entry,mode:before===null?null:fs.statSync(file).mode & 0o777};
|
|
49
|
+
});
|
|
50
|
+
atomic(path.join(backup,'manifest.json'),JSON.stringify({version:'fr-1',files:records},null,2));
|
|
51
|
+
const applied=[];
|
|
52
|
+
try {
|
|
53
|
+
for(const entry of records) {
|
|
54
|
+
const file=safe(options.target,entry.path),content=read(safe(options.source,entry.path));
|
|
55
|
+
if(!content||hash(content)!==entry.after) throw Error('source mismatch after preview');
|
|
56
|
+
const before=read(file);if((before===null?null:hash(before))!==entry.before) throw Error('migration conflict after backup');
|
|
57
|
+
atomic(file,content);applied.push(entry);if(entry.mode!==null) fs.chmodSync(file,entry.mode);
|
|
58
|
+
}
|
|
59
|
+
} catch(error) {
|
|
60
|
+
for(const entry of applied.reverse()) {
|
|
61
|
+
const file=safe(options.target,entry.path);
|
|
62
|
+
if(hash(fs.readFileSync(file))!==entry.after) continue;
|
|
63
|
+
if(entry.before===null) fs.unlinkSync(file);
|
|
64
|
+
else {atomic(file,fs.readFileSync(safe(backup,entry.path)));fs.chmodSync(file,entry.mode);}
|
|
65
|
+
}
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
return {changed:records.length,backup:backupRel};
|
|
69
|
+
}
|
|
70
|
+
function rollback({target,backup}) {
|
|
71
|
+
const dir=safe(target,backup),manifest=JSON.parse(fs.readFileSync(path.join(dir,'manifest.json'),'utf8'));
|
|
72
|
+
if(manifest.version!=='fr-1'||!Array.isArray(manifest.files)) throw Error('invalid backup');
|
|
73
|
+
for(const entry of manifest.files) {
|
|
74
|
+
const current=read(safe(target,entry.path));
|
|
75
|
+
const currentHash=current===null?null:hash(current);
|
|
76
|
+
if(currentHash!==entry.after && currentHash!==entry.before) throw Error('rollback conflict: '+entry.path);
|
|
77
|
+
if(entry.before!==null && hash(fs.readFileSync(safe(dir,entry.path)))!==entry.before) throw Error('backup mismatch');
|
|
78
|
+
}
|
|
79
|
+
for(const entry of manifest.files) {
|
|
80
|
+
const file=safe(target,entry.path);
|
|
81
|
+
const current=read(file);
|
|
82
|
+
if((current===null?null:hash(current))===entry.before) {
|
|
83
|
+
if(entry.before!==null && entry.mode!==null) fs.chmodSync(file,entry.mode);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if(entry.before===null) fs.unlinkSync(file);
|
|
87
|
+
else {atomic(file,fs.readFileSync(safe(dir,entry.path)));if(entry.mode!==null) fs.chmodSync(file,entry.mode);}
|
|
88
|
+
}
|
|
89
|
+
return {restored:manifest.files.length};
|
|
90
|
+
}
|
|
91
|
+
module.exports={preview,apply,rollback};
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"AGENTS.md": [
|
|
3
|
+
"2e7b2834a111363a25450269350ac4b8a80423163f5e9d4c511033d7c0105a3e",
|
|
4
|
+
"15b16a62c0cacd11584559c3def19ba279244b1df4f1fb776b47fdee2b58d523"
|
|
5
|
+
],
|
|
6
|
+
"CLAUDE.md": [
|
|
7
|
+
"6d91f1a3064be1f6205f9ee43f6f83482076795745c94cc095686123926ab4e2"
|
|
8
|
+
],
|
|
9
|
+
".codex/skills/byan/SKILL.md": [
|
|
10
|
+
"4cf06b7aa0478748d2327cf34d5917384e1c5215c36d5c4469013d9832b4f0f7",
|
|
11
|
+
"b17b7f5f8f9f3de84b9fa076540161ce4edc8daeb8122068855c220c5f351337"
|
|
12
|
+
],
|
|
13
|
+
".claude/skills/byan-byan/SKILL.md": [
|
|
14
|
+
"04ec7039907df44105f546b276d3354262ee1b87c6b060bdbb4011c98d7c2c3f",
|
|
15
|
+
"049cd334b54031e43cc287580c46e57aa99fdd166769d686f17cd97042b527ed"
|
|
16
|
+
],
|
|
17
|
+
".claude/skills/byan-hermes-dispatch/SKILL.md": [
|
|
18
|
+
"2b975bca060a6da329d384a2ed8065fa4dc2eb4817960040d3865dfce7a87eb6",
|
|
19
|
+
"f9f61c1a8816eafb6480be1fcc442339388af3790cf5ce9889a3369351c2353a"
|
|
20
|
+
],
|
|
21
|
+
".claude/rules/plain-language.md": [
|
|
22
|
+
"c4f804919bec260ed87d87d9109399dda52ab93652f3bea18bf99935878e86c4",
|
|
23
|
+
"cabe670358e8dd76a1e0610ff25e36290eee4943fecb00fd8e9f1a64dc932d21"
|
|
24
|
+
],
|
|
25
|
+
"_byan/agent/byan/soul.md": [
|
|
26
|
+
"b82e4dea777ebaa61b0e8f0504bf744a625a5c45d314d1bd59157de1a5fe7035",
|
|
27
|
+
"71dd5477ed0f19e190fb4e139ee6ed52f81e27dc6c79036aaa831e00cb2f7a17"
|
|
28
|
+
],
|
|
29
|
+
"_byan/agent/byan/tao.md": [
|
|
30
|
+
"f08dedfb375a1306d0eddb166e958a08f379fe09cd6a65a1d7ab95dc8149f65c",
|
|
31
|
+
"c25aa9861b2ed79e4fb988261c4c4ea0cd161950dd552db51f748fdc984bdd02"
|
|
32
|
+
],
|
|
33
|
+
"_byan/agent/byan/byan.md": [
|
|
34
|
+
"4b828da47f2f4c47dbea4786821b7a4bdfbd021554111682eae6a59555dc12e2",
|
|
35
|
+
"0b5c54f6b274c322bccb78fa905af501f5b7a2fcb918e6fc5ca25954fbf7a416"
|
|
36
|
+
],
|
|
37
|
+
"_byan/agent/byan/byan-soul.md": [
|
|
38
|
+
"b82e4dea777ebaa61b0e8f0504bf744a625a5c45d314d1bd59157de1a5fe7035",
|
|
39
|
+
"71dd5477ed0f19e190fb4e139ee6ed52f81e27dc6c79036aaa831e00cb2f7a17"
|
|
40
|
+
],
|
|
41
|
+
"_byan/agent/byan/byan-tao.md": [
|
|
42
|
+
"f08dedfb375a1306d0eddb166e958a08f379fe09cd6a65a1d7ab95dc8149f65c",
|
|
43
|
+
"c25aa9861b2ed79e4fb988261c4c4ea0cd161950dd552db51f748fdc984bdd02"
|
|
44
|
+
],
|
|
45
|
+
"_byan/agent/tao/tao.md": [
|
|
46
|
+
"b9a60707c5b0fb873a73837cf2f155b0d8e7a9fa34030fbba7c345a8882ec463",
|
|
47
|
+
"a3bfb4cb2ff6ec2deed6ca2339d7d293e7cbdd45e2a32ecef0d6a63ab56e61a5"
|
|
48
|
+
],
|
|
49
|
+
"_byan/core/activation/soul-activation.md": [
|
|
50
|
+
"252609719d2bd33d5355308358dc3fd8c0fab2f7e7d1fe793f3f7ffa05bbe5a3",
|
|
51
|
+
"0e9353bd6d15af1558ad345651a9a82852e2500b9c318ba0b8c67d5aed51371d"
|
|
52
|
+
],
|
|
53
|
+
"_byan/workflow/simple/byan/templates/tao-template.md": [
|
|
54
|
+
"1bb74ef134b33c65a5310e01743a50df3d1f21163b56cfd38458362eb7a571d8",
|
|
55
|
+
"33170d7f76573f7ff8a2a4c9007bf9fc6d374ec12c31c10c67fbcd55591b3fb3"
|
|
56
|
+
],
|
|
57
|
+
"_byan/workflow/simple/byan/data/mantras.yaml": [
|
|
58
|
+
"5219d7f708ca79a89927d7840cdb1b8736af4e50d61355f29da91bde06688b37",
|
|
59
|
+
"355d5562c01bd3f44dea12059b289fe4da69ad5b36b0856b4d94c7d441b563ee"
|
|
60
|
+
],
|
|
61
|
+
"_byan/connaissance/mantras-sources.md": [
|
|
62
|
+
"aaa2bd4d4d5d83796c09a884c38d151aad992da908d31bebd6959bb1b09882b7",
|
|
63
|
+
"349cfd2cf9cab190a644dd36bce9112cf326feb5b1e6710ec864a9322915d6d8"
|
|
64
|
+
],
|
|
65
|
+
"src/byan-v2/data/mantras.json": [
|
|
66
|
+
"1b956c57ad61e594b3f3f3fe1afdc5ef878f66bdc25f2987e6018c4dae774ea1",
|
|
67
|
+
"d6f4a08811a71312039a2ea0624896ffaeb62059db673f2a522bee6d6dfaba57"
|
|
68
|
+
],
|
|
69
|
+
"src/byan-v2/generation/mantra-validator.js": [
|
|
70
|
+
"2826d74f868c7130eea8f9468de830d5890121e041fcb662dbe08a63a1f5ab41"
|
|
71
|
+
],
|
|
72
|
+
"src/byan-v2/generation/mantra-audit.js": [
|
|
73
|
+
"43f8040905e150bf5b657b9edb093508e2241f6eb821b7f14ca2b2ad12fa8c0b"
|
|
74
|
+
],
|
|
75
|
+
".claude/hooks/inject-soul.js": [
|
|
76
|
+
"34417463d2d3cce1521356778e53f15f0cef7fe7f04514f54cdda243ebb3a087"
|
|
77
|
+
],
|
|
78
|
+
".claude/hooks/inject-tao.js": [
|
|
79
|
+
"2c20ab72978f16290ddcd23944db2780f1eae6ed87b3ba001949e579cf168579",
|
|
80
|
+
"88e5ea0d7a6a97604c783806053045d4be9fac9c4bd919ecfeabdc57c25839b5"
|
|
81
|
+
],
|
|
82
|
+
".claude/hooks/inject-voice-anchor.js": [
|
|
83
|
+
"d35c7d239b7582e7a46c87aa102ace4c7b2f07202be705a12e43e96f1df4caeb",
|
|
84
|
+
"dc54bb0cc75083d7c6528259963e6cd068a385a86437debdc3a769d38243ce95"
|
|
85
|
+
],
|
|
86
|
+
".claude/hooks/lib/plain-language.js": [
|
|
87
|
+
"90c2357b755da9e0862855363e1b7c5f53bf09df0e687df568734573a108c48d",
|
|
88
|
+
"934f77d487b950db0edf4fc8db50bbe24c49d2b5e008b71aa01270e50fac16db"
|
|
89
|
+
],
|
|
90
|
+
".claude/hooks/lib/voice-conformance.js": [
|
|
91
|
+
"b4277c59acacda4a49cdd10cef69569334c6c05f6e89f14cbb28289e7836dd7b",
|
|
92
|
+
"8ced1f7c932acb0bcd9150b0c317af1d87a9a377972b100a01270ddb27777201"
|
|
93
|
+
],
|
|
94
|
+
".claude/hooks/plain-language-check.js": [
|
|
95
|
+
"a1b50e769fa8f6e01d158c2e3a56c50c09d0d0d8f4535a3c145ed3ffe28adb4e"
|
|
96
|
+
],
|
|
97
|
+
".claude/hooks/voice-conformance-check.js": [
|
|
98
|
+
"64cd87840edc7a8e6f2630ff2d8c842ad7d8a3f7c38c8b39c56d8075d79111b2"
|
|
99
|
+
],
|
|
100
|
+
"_byan/mcp/byan-mcp-server/lib/soul.js": [
|
|
101
|
+
"8aa7049069805e5221a898afc96458dcdae47d176b276c54b2a2312a2f80f839",
|
|
102
|
+
"8e497c3411bb35e28e19d28e96d1db2b675a9c574361866a202f0bb9e7ca27a8"
|
|
103
|
+
],
|
|
104
|
+
"_byan/mcp/byan-mcp-server/lib/sync-soul.js": [
|
|
105
|
+
"8524407d6a67c97bb8d9cbe3fabbab605cd103b9ec5a477a850759a38ddf8294"
|
|
106
|
+
],
|
|
107
|
+
"install/lib/codex-native-setup.js": [
|
|
108
|
+
"b2b0752858da137f55cba0ced91fa07bc1838bd7df8df0325df4821f0fe4172e"
|
|
109
|
+
],
|
|
110
|
+
"install/lib/claude-native-setup.js": [
|
|
111
|
+
"54f9120100113471b0b35a994de7dc177a2f589447c4f4b1f55240d4acd2347d"
|
|
112
|
+
],
|
|
113
|
+
"install/lib/global-skills-sync.js": [
|
|
114
|
+
"c45c6ffbef4f6672879b1056bc002860c05d9aaeba61f7d4a4206e1d4ae8bff7"
|
|
115
|
+
],
|
|
116
|
+
"install/lib/subagent-generator.js": [
|
|
117
|
+
"54ff2318532ee770539c85c53598ee777722cf912459439341b6e88a98696381"
|
|
118
|
+
],
|
|
119
|
+
"install/lib/agent-generator.js": [
|
|
120
|
+
"d139f505e898f5543c90faa5a225810e2e939da3aed81e6b2d919ee1c30502fa"
|
|
121
|
+
],
|
|
122
|
+
"install/packages/install-core/lib/plan.js": [
|
|
123
|
+
"1b05bfbda1814f3108fe7ac0bce4a29194e0b6b037434b7a82aaa6c85a8d1e77"
|
|
124
|
+
],
|
|
125
|
+
"install/packages/install-core/lib/apply.js": [
|
|
126
|
+
"2eba7c2b2f85792c00f9553278778cc3a893074c09bdcf7d17213110a645215e"
|
|
127
|
+
],
|
|
128
|
+
"services/byan-mcp/src/mcp/create-server.ts": [
|
|
129
|
+
"73b9bd7ca2e12bab156b38673b2592ecbfffb4aba83cadb56625dd045a2ea272"
|
|
130
|
+
],
|
|
131
|
+
"services/byan-mcp/src/domain/wcaw.ts": [
|
|
132
|
+
"4e71521509ef607e2f704e195abc4c68ff2ed6e35f467612d1f77c12bdceabb5"
|
|
133
|
+
],
|
|
134
|
+
"services/byan-mcp/src/execution/model-executor.ts": [
|
|
135
|
+
"9b1fd05407ec75f68648baeb099573186104431293f2bc3de7ee01d6ce705e7c"
|
|
136
|
+
],
|
|
137
|
+
"services/byan-mcp/src/execution/local-cli-executor.ts": [
|
|
138
|
+
"12aa6666fcac4d70488642b2ee8a6759582f011b432db8a2a1672480d7cf535e"
|
|
139
|
+
],
|
|
140
|
+
"services/byan-mcp/src/execution/openai-responses-executor.ts": [
|
|
141
|
+
"a5de0e67d106d11ff0d45eea8144050c33c86113e53423203d049200e125a45b"
|
|
142
|
+
],
|
|
143
|
+
"app/main/engines/codex-engine.ts": [
|
|
144
|
+
"dc62f5de4504f68d8e59a2310162a066fc2af8b8ac03d9e2c854837b7c4600eb"
|
|
145
|
+
],
|
|
146
|
+
"app/main/engines/claude-engine.ts": [
|
|
147
|
+
"43b01941b4a7bfe9afe3cfe48a0e2e7307752eefe0309282496855658d60700e"
|
|
148
|
+
],
|
|
149
|
+
"app/shared/agent-definition.ts": [
|
|
150
|
+
"27005280da157b9e1d31aa0c9d100322bb73ab98f74c570584e8e28b38e5167a"
|
|
151
|
+
],
|
|
152
|
+
".claude/agents/bmad-byan.md": [
|
|
153
|
+
"f7c0f579393194ac9bd4058b53f199fecae3a4d57eae687ae952feb9afce8e42",
|
|
154
|
+
"ac46c69aa7636883141222ccaa21cf8c9b6a482a06f4558a32998d4af9491cfd"
|
|
155
|
+
],
|
|
156
|
+
".claude/agents/bmad-tao.md": [
|
|
157
|
+
"4d9957ecdfa7cc4a029a19d638423f3dbe168f253471aa67dd1045a284ec4bda",
|
|
158
|
+
"0b6d1d2db6cf958a3ac0eb51a56e7c6d991f72eb77da060a64cae943a6ee5603"
|
|
159
|
+
],
|
|
160
|
+
"docs/communication.md": [
|
|
161
|
+
"9c6d864da2f3dff7708b9caecbfe095fe334fd1b13c2a95d9cd978a7b2a9d095"
|
|
162
|
+
],
|
|
163
|
+
"scripts/communication-eval.cjs": [
|
|
164
|
+
"9d5adcc8160edbcb068f1d98ecd02bdc84359d250e729ce067b75df7b66a124f"
|
|
165
|
+
],
|
|
166
|
+
"tests/communication/scenarios.json": [
|
|
167
|
+
"2d530387c1f5e9864315f582399d8e6cf2b9b2fc4aaeee07de1933e86ae3d974"
|
|
168
|
+
],
|
|
169
|
+
"tests/communication/README.md": [
|
|
170
|
+
"97b4d1d9c3ee91fd6c1fcbfeec1fd8a792558cc382fd3329a7ce6f27dfbfecb9"
|
|
171
|
+
],
|
|
172
|
+
"_byan/_config/communication-policy.json": [
|
|
173
|
+
"a77896dc67ce4607d49cc0db8a811246a835e827c3e8a29ad4bc2cddd01ba330"
|
|
174
|
+
],
|
|
175
|
+
"_byan/core/communication.cjs": [
|
|
176
|
+
"7e57f6927fea300bfc7e36efe60fbcb594e65d23ac9552682989adacfd71e001"
|
|
177
|
+
],
|
|
178
|
+
"_byan/mcp/byan-mcp-server/lib/communication.cjs": [
|
|
179
|
+
"d123e8ac9e30c788547503d80ad5ee8c14ec66c1646a9b0abd2df92a696659cb"
|
|
180
|
+
]
|
|
181
|
+
}
|