@horizon_works/banto 0.8.1 → 0.8.3
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/law_bridge.js +11 -2
- package/license/client.js +9 -3
- package/package.json +3 -2
- package/server.js +9 -3
package/law_bridge.js
CHANGED
|
@@ -29,12 +29,19 @@ const SUPPLEMENT = 'law-parts';
|
|
|
29
29
|
// ★子の場所。★配布版では npm の別パッケージ、開発中はリポジトリの中
|
|
30
30
|
function 子の場所() {
|
|
31
31
|
if (process.env.LAW_PARTS_SERVER) return process.env.LAW_PARTS_SERVER;
|
|
32
|
+
const fs = require('fs');
|
|
32
33
|
const 候補 = [
|
|
34
|
+
// ★配布版=npm から入れた別パッケージ(★番頭の隣に置かれる)
|
|
35
|
+
path.join(__dirname, '..', 'law-parts', 'server.js'),
|
|
36
|
+
path.join(__dirname, 'node_modules', '@horizon_works', 'law-parts', 'server.js'),
|
|
37
|
+
// ★開発中=リポジトリの中
|
|
33
38
|
path.join(__dirname, '..', 'law_parts', 'server.js'),
|
|
34
39
|
path.join(__dirname, 'law_parts', 'server.js'),
|
|
35
40
|
];
|
|
36
|
-
const fs = require('fs');
|
|
37
41
|
for (const p of 候補) { try { if (fs.existsSync(p)) return p; } catch (_) {} }
|
|
42
|
+
// ★入っていなければ、npx で取ってくる(★一度取れば npx が控える)
|
|
43
|
+
try { require.resolve('@horizon_works/law-parts/server.js'); return require.resolve('@horizon_works/law-parts/server.js'); }
|
|
44
|
+
catch (_) {}
|
|
38
45
|
return null;
|
|
39
46
|
}
|
|
40
47
|
|
|
@@ -115,7 +122,9 @@ let 子 = null, 待ち = new Map(), 次のid = 1000, 最後に使った = 0, 掃
|
|
|
115
122
|
function 子を立てる() {
|
|
116
123
|
const srv = 子の場所();
|
|
117
124
|
if (!srv) throw new Error('法令パーツの本体が見つかりません');
|
|
118
|
-
|
|
125
|
+
// ★親が契約を確かめたうえで呼んでいる、という印(★子は二重に鍵を見ない)
|
|
126
|
+
const env = Object.assign({}, process.env, { LAW_PARTS_VIA_BANTO: '1' });
|
|
127
|
+
const p = spawn(process.execPath, [srv], { env, stdio: ['pipe', 'pipe', 'ignore'] });
|
|
119
128
|
let buf = '';
|
|
120
129
|
p.stdout.on('data', (d) => {
|
|
121
130
|
buf += d;
|
package/license/client.js
CHANGED
|
@@ -98,10 +98,16 @@ function post(url, body, apiKey, timeoutMs = 4000) {
|
|
|
98
98
|
apiKey ? { apikey: apiKey, Authorization: 'Bearer ' + apiKey } : {}
|
|
99
99
|
) },
|
|
100
100
|
(res) => {
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
// 🚨★**バイトのまま溜めて、最後に1回だけ文字へ直す**(2026-08-28)。
|
|
102
|
+
// ★前は `b += d` で、届いたかたまりを**その場で文字に直していた**。
|
|
103
|
+
// ★★日本語は1文字3バイト。★かたまりの切れ目が文字の途中に来ると、
|
|
104
|
+
// ★そこだけ「」に化ける(★棚の説明で実際に起きた)。
|
|
105
|
+
// ★★通信は成功し、JSON も読めるので、**どこにも異常が出ない**。
|
|
106
|
+
const 粒 = [];
|
|
107
|
+
res.on('data', (d) => 粒.push(d));
|
|
108
|
+
const 読む = () => Buffer.concat(粒).toString('utf8');
|
|
103
109
|
res.on('end', () => {
|
|
104
|
-
try { resolve(JSON.parse(
|
|
110
|
+
try { resolve(JSON.parse(読む())); } catch (e) { reject(new Error('応答を読めません')); }
|
|
105
111
|
});
|
|
106
112
|
}
|
|
107
113
|
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@horizon_works/banto",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "AI番頭のOS。ルール・記憶・検査を1本のMCPで配ります。中身をクラウドへ渡さずに検査できます。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"optionalDependencies": {
|
|
43
43
|
"googleapis": "^144.0.0",
|
|
44
|
-
"@google-cloud/local-auth": "^3.0.1"
|
|
44
|
+
"@google-cloud/local-auth": "^3.0.1",
|
|
45
|
+
"@horizon_works/law-parts": "^0.1.0"
|
|
45
46
|
}
|
|
46
47
|
}
|
package/server.js
CHANGED
|
@@ -1188,11 +1188,17 @@ function supPost(fn, body) {
|
|
|
1188
1188
|
apikey: anonKey, Authorization: 'Bearer ' + anonKey,
|
|
1189
1189
|
},
|
|
1190
1190
|
}, (res) => {
|
|
1191
|
-
|
|
1192
|
-
|
|
1191
|
+
// 🚨★**バイトのまま溜めて、最後に1回だけ文字へ直す**(2026-08-28)。
|
|
1192
|
+
// ★前は `b += d` で、届いたかたまりを**その場で文字に直していた**。
|
|
1193
|
+
// ★★日本語は1文字3バイト。★かたまりの切れ目が文字の途中に来ると、
|
|
1194
|
+
// ★そこだけ「」に化ける(★棚の説明で実際に起きた)。
|
|
1195
|
+
// ★★通信は成功し、JSON も読めるので、**どこにも異常が出ない**。
|
|
1196
|
+
const 粒 = [];
|
|
1197
|
+
res.on('data', (d) => 粒.push(d));
|
|
1198
|
+
const 読む = () => Buffer.concat(粒).toString('utf8');
|
|
1193
1199
|
res.on('end', () => {
|
|
1194
1200
|
let j;
|
|
1195
|
-
try { j = JSON.parse(
|
|
1201
|
+
try { j = JSON.parse(読む()); } catch (_) { return reject(new Error('応答を読めません')); }
|
|
1196
1202
|
if (res.statusCode >= 400) {
|
|
1197
1203
|
return reject(new Error((j && (j.message || j.hint)) || ('HTTP ' + res.statusCode)));
|
|
1198
1204
|
}
|