sesame-kit 0.4.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 (170) hide show
  1. package/LICENSE +26 -0
  2. package/LICENSE.biz3 +21 -0
  3. package/README.ja.md +225 -0
  4. package/README.md +222 -0
  5. package/bin/sesame.js +8 -0
  6. package/clients/js/sesame-client.mjs +208 -0
  7. package/clients/python/pyproject.toml +5 -0
  8. package/clients/python/sesame_client.py +323 -0
  9. package/clients/python/setup.cfg +11 -0
  10. package/docs/architecture.ja.md +132 -0
  11. package/docs/architecture.md +105 -0
  12. package/docs/commands.ja.md +316 -0
  13. package/docs/commands.md +308 -0
  14. package/docs/library.ja.md +152 -0
  15. package/docs/library.md +152 -0
  16. package/docs/migration.ja.md +13 -0
  17. package/docs/migration.md +13 -0
  18. package/package.json +114 -0
  19. package/src/access.js +375 -0
  20. package/src/account.js +36 -0
  21. package/src/auth.js +248 -0
  22. package/src/ble/devicemodel.js +164 -0
  23. package/src/ble/index.js +185 -0
  24. package/src/ble/protocol.js +319 -0
  25. package/src/ble/session.js +235 -0
  26. package/src/ble/transport.js +279 -0
  27. package/src/cli/access.js +373 -0
  28. package/src/cli/company.js +104 -0
  29. package/src/cli/iot.js +400 -0
  30. package/src/cli/org.js +788 -0
  31. package/src/cli/presetir.js +188 -0
  32. package/src/cli/schedule.js +83 -0
  33. package/src/cli/serve.js +308 -0
  34. package/src/cli.js +1815 -0
  35. package/src/client.js +957 -0
  36. package/src/company.js +147 -0
  37. package/src/config.js +575 -0
  38. package/src/crypto.js +162 -0
  39. package/src/devices.js +228 -0
  40. package/src/index.js +55 -0
  41. package/src/iot.js +513 -0
  42. package/src/ir.js +341 -0
  43. package/src/itemcodes.js +29 -0
  44. package/src/lock.js +194 -0
  45. package/src/org.js +803 -0
  46. package/src/paths.js +30 -0
  47. package/src/presetir.js +525 -0
  48. package/src/prompts.js +74 -0
  49. package/src/schedule.js +108 -0
  50. package/src/serve/daemon.js +251 -0
  51. package/src/serve/framing/grpc.js +145 -0
  52. package/src/serve/framing/http.js +144 -0
  53. package/src/serve/framing/ndjson.js +75 -0
  54. package/src/serve/framing/socket.js +73 -0
  55. package/src/serve/framing/stdio.js +28 -0
  56. package/src/serve/framing/token.js +36 -0
  57. package/src/serve/framing/ws.js +56 -0
  58. package/src/serve/grpc-methods.generated.json +378 -0
  59. package/src/serve/jsonrpc.js +164 -0
  60. package/src/serve/registry.js +226 -0
  61. package/src/serve/rpc-params.generated.json +1746 -0
  62. package/src/serve/sesame.proto +470 -0
  63. package/src/session-ui.js +181 -0
  64. package/src/sharekey.js +130 -0
  65. package/src/tokens.js +53 -0
  66. package/src/transport.js +634 -0
  67. package/src/util.js +26 -0
  68. package/types/access.d.ts +193 -0
  69. package/types/access.d.ts.map +1 -0
  70. package/types/account.d.ts +13 -0
  71. package/types/account.d.ts.map +1 -0
  72. package/types/auth.d.ts +80 -0
  73. package/types/auth.d.ts.map +1 -0
  74. package/types/ble/devicemodel.d.ts +212 -0
  75. package/types/ble/devicemodel.d.ts.map +1 -0
  76. package/types/ble/index.d.ts +160 -0
  77. package/types/ble/index.d.ts.map +1 -0
  78. package/types/ble/protocol.d.ts +201 -0
  79. package/types/ble/protocol.d.ts.map +1 -0
  80. package/types/ble/session.d.ts +129 -0
  81. package/types/ble/session.d.ts.map +1 -0
  82. package/types/ble/transport.d.ts +67 -0
  83. package/types/ble/transport.d.ts.map +1 -0
  84. package/types/cli/access.d.ts +6 -0
  85. package/types/cli/access.d.ts.map +1 -0
  86. package/types/cli/company.d.ts +6 -0
  87. package/types/cli/company.d.ts.map +1 -0
  88. package/types/cli/iot.d.ts +6 -0
  89. package/types/cli/iot.d.ts.map +1 -0
  90. package/types/cli/org.d.ts +6 -0
  91. package/types/cli/org.d.ts.map +1 -0
  92. package/types/cli/presetir.d.ts +6 -0
  93. package/types/cli/presetir.d.ts.map +1 -0
  94. package/types/cli/schedule.d.ts +6 -0
  95. package/types/cli/schedule.d.ts.map +1 -0
  96. package/types/cli/serve.d.ts +2 -0
  97. package/types/cli/serve.d.ts.map +1 -0
  98. package/types/cli.d.ts +2 -0
  99. package/types/cli.d.ts.map +1 -0
  100. package/types/client.d.ts +463 -0
  101. package/types/client.d.ts.map +1 -0
  102. package/types/company.d.ts +94 -0
  103. package/types/company.d.ts.map +1 -0
  104. package/types/config.d.ts +111 -0
  105. package/types/config.d.ts.map +1 -0
  106. package/types/crypto.d.ts +61 -0
  107. package/types/crypto.d.ts.map +1 -0
  108. package/types/devices.d.ts +116 -0
  109. package/types/devices.d.ts.map +1 -0
  110. package/types/index.d.ts +23 -0
  111. package/types/index.d.ts.map +1 -0
  112. package/types/iot.d.ts +312 -0
  113. package/types/iot.d.ts.map +1 -0
  114. package/types/ir.d.ts +147 -0
  115. package/types/ir.d.ts.map +1 -0
  116. package/types/itemcodes.d.ts +21 -0
  117. package/types/itemcodes.d.ts.map +1 -0
  118. package/types/lock.d.ts +89 -0
  119. package/types/lock.d.ts.map +1 -0
  120. package/types/org.d.ts +468 -0
  121. package/types/org.d.ts.map +1 -0
  122. package/types/paths.d.ts +10 -0
  123. package/types/paths.d.ts.map +1 -0
  124. package/types/presetir.d.ts +286 -0
  125. package/types/presetir.d.ts.map +1 -0
  126. package/types/prompts.d.ts +39 -0
  127. package/types/prompts.d.ts.map +1 -0
  128. package/types/schedule.d.ts +71 -0
  129. package/types/schedule.d.ts.map +1 -0
  130. package/types/serve/daemon.d.ts +133 -0
  131. package/types/serve/daemon.d.ts.map +1 -0
  132. package/types/serve/framing/grpc.d.ts +14 -0
  133. package/types/serve/framing/grpc.d.ts.map +1 -0
  134. package/types/serve/framing/http.d.ts +14 -0
  135. package/types/serve/framing/http.d.ts.map +1 -0
  136. package/types/serve/framing/ndjson.d.ts +19 -0
  137. package/types/serve/framing/ndjson.d.ts.map +1 -0
  138. package/types/serve/framing/socket.d.ts +14 -0
  139. package/types/serve/framing/socket.d.ts.map +1 -0
  140. package/types/serve/framing/stdio.d.ts +11 -0
  141. package/types/serve/framing/stdio.d.ts.map +1 -0
  142. package/types/serve/framing/token.d.ts +11 -0
  143. package/types/serve/framing/token.d.ts.map +1 -0
  144. package/types/serve/framing/ws.d.ts +13 -0
  145. package/types/serve/framing/ws.d.ts.map +1 -0
  146. package/types/serve/jsonrpc.d.ts +118 -0
  147. package/types/serve/jsonrpc.d.ts.map +1 -0
  148. package/types/serve/registry.d.ts +41 -0
  149. package/types/serve/registry.d.ts.map +1 -0
  150. package/types/session-ui.d.ts +36 -0
  151. package/types/session-ui.d.ts.map +1 -0
  152. package/types/sharekey.d.ts +35 -0
  153. package/types/sharekey.d.ts.map +1 -0
  154. package/types/tokens.d.ts +20 -0
  155. package/types/tokens.d.ts.map +1 -0
  156. package/types/transport.d.ts +138 -0
  157. package/types/transport.d.ts.map +1 -0
  158. package/types/util.d.ts +20 -0
  159. package/types/util.d.ts.map +1 -0
  160. package/vendor/biz3/README.md +37 -0
  161. package/vendor/biz3/constants/cmdCode.d.ts +48 -0
  162. package/vendor/biz3/constants/cmdCode.d.ts.map +1 -0
  163. package/vendor/biz3/constants/cmdCode.js +92 -0
  164. package/vendor/biz3/constants/messageConstants.d.ts +28 -0
  165. package/vendor/biz3/constants/messageConstants.d.ts.map +1 -0
  166. package/vendor/biz3/constants/messageConstants.js +30 -0
  167. package/vendor/biz3/constants/sesameDeviceModel.d.ts +75 -0
  168. package/vendor/biz3/constants/sesameDeviceModel.d.ts.map +1 -0
  169. package/vendor/biz3/constants/sesameDeviceModel.js +77 -0
  170. package/vendor/biz3/package.json +5 -0
@@ -0,0 +1,286 @@
1
+ /**
2
+ * エアコンの発射 command (HEX 文字列) を生成。
3
+ * biz3 buildCommand を再現 (remote-air/index.js:117-138, 呼び出しフロー extraLogic D)。
4
+ *
5
+ * 状態は buildAirCommand が buf[4..10] へ直接書き込むため、key 値は発射にほぼ影響しない
6
+ * (key は buf[9] に入るが、power は buf[8] が支配的)。keyType 未指定時は default 0x01。
7
+ *
8
+ * @param {{
9
+ * code: number, // remote.code (プリセット DB 由来の数値)
10
+ * power?: boolean, // 電源 ON/OFF (remote-air:126: power?0x01:0x00)
11
+ * temperature?: number, // UI 温度値 (16-32, 変換なしでそのまま)
12
+ * mode?: number, // mode index 0-4 (getModeValue で HXD 値に変換)
13
+ * fanSpeed?: number, // fanSpeed index 0-3
14
+ * windDirection?: number, // windDirection index 0-2
15
+ * autoSwing?: boolean, // 自動風向 (remote-air:131: autoSwing?0x01:0x00)
16
+ * keyType?: string, // getAirKey に渡す type (省略時 buf[9]=0x01)
17
+ * }} state
18
+ * @returns {string} 大文字 HEX command 文字列
19
+ */
20
+ export function buildAirCommandHex(state: {
21
+ code: number;
22
+ power?: boolean;
23
+ temperature?: number;
24
+ mode?: number;
25
+ fanSpeed?: number;
26
+ windDirection?: number;
27
+ autoSwing?: boolean;
28
+ keyType?: string;
29
+ }): string;
30
+ /**
31
+ * 非エアコン (TV/ライト/扇風機) の発射 command (HEX 文字列) を生成。
32
+ * biz3 buildCommand を再現 (remote-non-air/index.js:113-124, 呼び出しフロー extraLogic D)。
33
+ *
34
+ * @param {{
35
+ * irType: number, // IR_TYPE.TV / LIGHT / FAN (getKeyByDeviceType に渡す)
36
+ * code: number, // remote.code
37
+ * buttonType: string, // ボタン種別 (getTVKey/getLightKey/getFanKey の keyMap キー)
38
+ * }} p
39
+ * @returns {string} 大文字 HEX command 文字列
40
+ */
41
+ export function buildNonAirCommandHex({ irType, code, buttonType }: {
42
+ irType: number;
43
+ code: number;
44
+ buttonType: string;
45
+ }): string;
46
+ /**
47
+ * 既に生成した HEX command をそのまま Hub3 に発射する。
48
+ * frame は learnIR 等の sendIR と完全共通 (useRemoteCtrl.js:460-484)。
49
+ *
50
+ * フィールド名トラップ:
51
+ * - deviceId : Hub3 の deviceUUID 文字列 (hub3DeviceId ではなく **deviceId**)
52
+ * - irDeviceUUID: 保存済みリモコンの uuid。未保存プリセットでは **空文字 ''**
53
+ * (remote-air:369 / remote-non-air:155 で remote.uuid || '')
54
+ *
55
+ * 応答: action:'biz3IRRemote', op:'sendIR', success:bool, message?, data?
56
+ * (handleRemoteResponse:65-80 は op==='sendIR' && success で成功扱い)
57
+ *
58
+ * @param {import("./transport.js").Hub3WsClient} client
59
+ * @param {{
60
+ * deviceId: string, // Hub3 deviceUUID
61
+ * command: string, // HEX command (buildAir/NonAirCommandHex の戻り値)
62
+ * irType: number, // remote.type 実値 (IR_TYPE)
63
+ * companyID: string, // gStripe.customerInfo.companyID
64
+ * irDeviceUUID?: string, // remote.uuid (未保存は '')
65
+ * operation?: string, // 既定 'remoteEmit'
66
+ * timeoutMs?: number,
67
+ * }} p
68
+ * @returns {Promise<object>} 応答メッセージ (success / data / message)
69
+ */
70
+ export function sendIR(client: import("./transport.js").Hub3WsClient, p: {
71
+ deviceId: string;
72
+ command: string;
73
+ irType: number;
74
+ companyID: string;
75
+ irDeviceUUID?: string;
76
+ operation?: string;
77
+ timeoutMs?: number;
78
+ }): Promise<object>;
79
+ /**
80
+ * エアコン: 状態から command を生成してそのまま発射する複合関数。
81
+ * @param {import("./transport.js").Hub3WsClient} client
82
+ * @param {{
83
+ * deviceId: string, companyID: string, code: number,
84
+ * irDeviceUUID?: string, timeoutMs?: number,
85
+ * power?: boolean, temperature?: number, mode?: number,
86
+ * fanSpeed?: number, windDirection?: number, autoSwing?: boolean, keyType?: string,
87
+ * }} p
88
+ * @returns {Promise<{command:string, response:object}>}
89
+ */
90
+ export function emitAir(client: import("./transport.js").Hub3WsClient, p: {
91
+ deviceId: string;
92
+ companyID: string;
93
+ code: number;
94
+ irDeviceUUID?: string;
95
+ timeoutMs?: number;
96
+ power?: boolean;
97
+ temperature?: number;
98
+ mode?: number;
99
+ fanSpeed?: number;
100
+ windDirection?: number;
101
+ autoSwing?: boolean;
102
+ keyType?: string;
103
+ }): Promise<{
104
+ command: string;
105
+ response: object;
106
+ }>;
107
+ /**
108
+ * 非エアコン (TV/ライト/扇風機): ボタン押下を生成して発射する複合関数。
109
+ * @param {import("./transport.js").Hub3WsClient} client
110
+ * @param {{
111
+ * deviceId: string, companyID: string, code: number,
112
+ * irType: number, buttonType: string,
113
+ * irDeviceUUID?: string, timeoutMs?: number,
114
+ * }} p
115
+ * @returns {Promise<{command:string, response:object}>}
116
+ */
117
+ export function emitButton(client: import("./transport.js").Hub3WsClient, p: {
118
+ deviceId: string;
119
+ companyID: string;
120
+ code: number;
121
+ irType: number;
122
+ buttonType: string;
123
+ irDeviceUUID?: string;
124
+ timeoutMs?: number;
125
+ }): Promise<{
126
+ command: string;
127
+ response: object;
128
+ }>;
129
+ /**
130
+ * irType (remote.type) の確定値。
131
+ * 一次資料: presetIR.json extraLogic C / HXDParametersSwapper.getKeyByDeviceType:166-180。
132
+ * @readonly
133
+ */
134
+ export const IR_TYPE: Readonly<{
135
+ AIR: 49152;
136
+ FAN: 32768;
137
+ LIGHT: 57344;
138
+ TV: 8192;
139
+ }>;
140
+ /**
141
+ * HXD プリセット command の組み立て器。
142
+ * biz3 HXDCommandProcessor.js を 1:1 移植 (constructor 既定値・byte 配置・checksum 完全一致)。
143
+ */
144
+ export class HXDCommandProcessor {
145
+ power: number;
146
+ temperature: number;
147
+ fanSpeed: number;
148
+ windDirection: number;
149
+ autoWindDirection: number;
150
+ mode: number;
151
+ key: number;
152
+ code: number;
153
+ defaultTable: number[];
154
+ AirPrefixCode: number[];
155
+ commonPrefixCode: number[];
156
+ /**
157
+ * エアコン command (16 byte) を生成。
158
+ * vendor: HXDCommandProcessor.js:17-34。
159
+ * 配置: [0x30,0x01, codeHi,codeLo, temp,fanSpeed,windDir,autoWind,power,key,mode, 1,0,0, 0xff, checksum]
160
+ * @returns {number[]} 16 byte の配列
161
+ */
162
+ buildAirCommand(): number[];
163
+ /**
164
+ * 非エアコン (TV/ライト/扇風機) command (16 byte) を生成。
165
+ * vendor: HXDCommandProcessor.js:36-47。
166
+ * 配置: [0x30,0x00, codeHi,codeLo, 0,0,0,0,0, key, 0, 1,0,0, 0xff, checksum]
167
+ * @returns {number[]} 16 byte の配列
168
+ */
169
+ buildNonAirCommand(): number[];
170
+ /**
171
+ * command の骨格 (16 byte) を生成。Air/NonAir 共通。
172
+ * vendor: HXDCommandProcessor.js:49-71。
173
+ * @param {number[]} prefixCodeArray 2 byte prefix ([0x30,0x01] か [0x30,0x00])
174
+ * @param {number} code remote.code (16bit, ビッグエンディアンで 2 byte に分割)
175
+ * @param {number[]} table 既定 [0,0,0] (table[0]+1 が buf[11] に入る)
176
+ * @returns {number[]} 16 byte
177
+ */
178
+ buildKeyData(prefixCodeArray: number[], code: number, table: number[]): number[];
179
+ /**
180
+ * 数値を 16bit ビッグエンディアンの 2 byte に分割。
181
+ * vendor: HXDCommandProcessor.js:73-77。
182
+ * @param {number} number
183
+ * @returns {[number, number]} [上位 byte, 下位 byte]
184
+ */
185
+ decimalToTwoHexInts(number: number): [number, number];
186
+ /**
187
+ * byte 配列を大文字 HEX 文字列に変換 (区切り無し・各 byte 2 桁 0 埋め)。
188
+ * これが sendIR の command フィールドに入る文字列。
189
+ * vendor: HXDCommandProcessor.js:132-134。
190
+ * @param {number[]} byteArray
191
+ * @returns {string} 例 "30010000..."
192
+ */
193
+ toHexString(byteArray: number[]): string;
194
+ /**
195
+ * HEX 文字列を byte 配列に戻す。
196
+ * vendor: HXDCommandProcessor.js:124-130。
197
+ * @param {string} hexString
198
+ * @returns {number[]}
199
+ */
200
+ hexStringToByteArray(hexString: string): number[];
201
+ /**
202
+ * 保存済みエアコン command HEX から状態を復元 (発射には不要・state 復元用)。
203
+ * vendor: HXDCommandProcessor.js:84-117。
204
+ * 前提: length>=22, bytes[0]===0x30 && bytes[1]===0x01。不正時は null。
205
+ * @param {string} hexString
206
+ * @returns {{temperature:number,fanSpeed:number,windDirection:number,autoWindDirection:number,power:number,key:number,mode:number}|null}
207
+ */
208
+ parseAirCommand(hexString: string): {
209
+ temperature: number;
210
+ fanSpeed: number;
211
+ windDirection: number;
212
+ autoWindDirection: number;
213
+ power: number;
214
+ key: number;
215
+ mode: number;
216
+ } | null;
217
+ setPower(power: any): this;
218
+ setTemperature(temperature: any): this;
219
+ setModel(model: any): this;
220
+ setFanSpeed(fanSpeed: any): this;
221
+ setWindDirection(windDirection: any): this;
222
+ setAutoWindDirection(autoWindDirection: any): this;
223
+ setKey(key: any): this;
224
+ setCode(code: any): this;
225
+ }
226
+ /**
227
+ * HXD パラメータ変換器。biz3 HXDParametersSwapper.js を 1:1 移植。
228
+ * key テーブルは vendor の値・default フォールバックまで完全一致させている。
229
+ */
230
+ export class HXDParametersSwapper {
231
+ /**
232
+ * エアコン key (HXDParametersSwapper.js:4-17)。
233
+ * 注: UI type 'POWER_ON'/'TEMP_ADD' 等は keyMap に無く default 0x01 (ファイル冒頭トラップ参照)。
234
+ * @param {string} type
235
+ * @returns {number}
236
+ */
237
+ getAirKey(type: string): number;
238
+ /**
239
+ * mode index → HXD 値 (vendor:45-54)。{0:自動,1:制冷,2:除湿,3:送風,4:制熱}
240
+ * @param {number} index @returns {number}
241
+ */
242
+ getModeValue(index: number): number;
243
+ /**
244
+ * fanSpeed index → HXD 値 (vendor:67-75)。{0:自動,1:低,2:中,3:高}
245
+ * @param {number} index @returns {number}
246
+ */
247
+ getFanSpeedValue(index: number): number;
248
+ /**
249
+ * windDirection index → HXD 値 (vendor:87-94)。{0:上,1:中,2:下}。default 0x02。
250
+ * @param {number} index @returns {number}
251
+ */
252
+ getWindDirectionValue(index: number): number;
253
+ /**
254
+ * ライト key (vendor:114-125)。
255
+ * @param {string} type @returns {number}
256
+ */
257
+ getLightKey(type: string): number;
258
+ /**
259
+ * TV key (vendor:128-147)。
260
+ * @param {string} type @returns {number}
261
+ */
262
+ getTVKey(type: string): number;
263
+ /**
264
+ * 扇風機 key (vendor:150-162)。
265
+ * @param {string} type @returns {number}
266
+ */
267
+ getFanKey(type: string): number;
268
+ /**
269
+ * device type (irType) 別に key を引く (非エアコン UI 経由)。
270
+ * vendor: HXDParametersSwapper.js:166-180。
271
+ * 未知 type は warn を出さず default 0x01 (CLI なので console.warn は省略)。
272
+ * @param {number} irType IR_TYPE のいずれか
273
+ * @param {string} type ボタン種別文字列
274
+ * @returns {number}
275
+ */
276
+ getKeyByDeviceType(irType: number, type: string): number;
277
+ }
278
+ /**
279
+ * namespace (hub.presetir.*) に露出する client op の allowlist。
280
+ * HXDCommandProcessor / HXDParametersSwapper (class) と buildAirCommandHex /
281
+ * buildNonAirCommandHex (client を取らない純ビルダ) は namespace に出さない
282
+ * (client.js _bindNs が ws を第1引数に注入して壊れるため)。これらは低レベル
283
+ * ユーティリティとして index.js の presetir namespace から直接 import して使う。
284
+ */
285
+ export const NAMESPACE_OPS: string[];
286
+ //# sourceMappingURL=presetir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presetir.d.ts","sourceRoot":"","sources":["../src/presetir.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export function isInteractive(): boolean;
2
+ /**
3
+ * テキスト入力 prompt。空 OK なら required=false で。
4
+ * @param {string} message
5
+ * @param {{required?:boolean, defaultValue?:string|null}} [opts]
6
+ */
7
+ export function promptText(message: string, { required, defaultValue }?: {
8
+ required?: boolean;
9
+ defaultValue?: string | null;
10
+ }): Promise<string>;
11
+ /**
12
+ * yes/no 確認。デフォルトは defaultYes。
13
+ * @param {string} message
14
+ * @param {{defaultYes?:boolean}} [opts]
15
+ */
16
+ export function confirm(message: string, { defaultYes }?: {
17
+ defaultYes?: boolean;
18
+ }): Promise<boolean>;
19
+ /**
20
+ * リストから 1 つ選ばせる (↑↓ で移動 / Enter で決定)。要素 1 個なら auto-pick。空ならエラー。
21
+ *
22
+ * @template T
23
+ * @param {string} message
24
+ * @param {T[]} items
25
+ * @param {(item:T) => string} [getLabel] 表示ラベル (default: String)
26
+ * @returns {Promise<T>}
27
+ */
28
+ export function selectFromList<T>(message: string, items: T[], getLabel?: (item: T) => string): Promise<T>;
29
+ /**
30
+ * メニュー (selectFromList の薄いラッパ、ラベルだけ表示)。戻り値は選ばれたエントリの `value`。
31
+ *
32
+ * @param {string} title
33
+ * @param {{label:string, value:any}[]} entries
34
+ */
35
+ export function menu(title: string, entries: {
36
+ label: string;
37
+ value: any;
38
+ }[]): Promise<any>;
39
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.js"],"names":[],"mappings":"AAUA,yCAEC;AAOD;;;;GAIG;AACH,oCAHW,MAAM,+BACN;IAAC,QAAQ,CAAC,EAAC,OAAO,CAAC;IAAC,YAAY,CAAC,EAAC,MAAM,GAAC,IAAI,CAAA;CAAC,mBAQxD;AAED;;;;GAIG;AACH,iCAHW,MAAM,mBACN;IAAC,UAAU,CAAC,EAAC,OAAO,CAAA;CAAC,oBAI/B;AAED;;;;;;;;GAQG;AACH,+BANa,CAAC,WACH,MAAM,SACN,CAAC,EAAE,aACH,CAAC,IAAI,EAAC,CAAC,KAAK,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CActB;AAED;;;;;GAKG;AACH,4BAHW,MAAM,WACN;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,GAAG,CAAA;CAAC,EAAE,gBAKrC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @typedef {Object} ScheduleItem
3
+ * @property {string} scheduleId 取消に使う ID (schedule-list/index.js:49,82,102)
4
+ * @property {string} action 'lock' | 'unlock' | 'upgrade_firmware' 等
5
+ * (schedule-list/index.js:77 / UI ラベルは正規化された表示用で
6
+ * サーバ側の正式 enum は未確認)
7
+ * @property {string} displayTime '2026-01-01 09:00' または 'HH:MM' 形式 (index.js:78,31)
8
+ * @property {string} deviceName 対象デバイス名 (index.js:92)
9
+ */
10
+ /**
11
+ * サーバに登録済みの予約スケジュール一覧を取得する。
12
+ *
13
+ * フレーム: { action: "biz3Schedule", userId: <subUUID>, op: "getScheduleList" }
14
+ * 応答: { action: "biz3Schedule", op: "getScheduleList", data: [ ScheduleItem, ... ] }
15
+ * message.data は **オブジェクトでラップされず直接配列** (useManageSchedule.js:34-35
16
+ * が count=data.length / Items=data に自前で詰め替えている点に注意)。
17
+ *
18
+ * @param {import("./transport.js").Hub3WsClient} client
19
+ * @param {{subUUID:string, timeoutMs?:number}} params
20
+ * subUUID は gStripe.customerInfo.subUUID 相当 (生の文字列をそのまま userId に入れる)
21
+ * @returns {Promise<ScheduleItem[]>} スケジュール item の配列 (空なら [])
22
+ */
23
+ export function getScheduleList(client: import("./transport.js").Hub3WsClient, { subUUID, timeoutMs }?: {
24
+ subUUID: string;
25
+ timeoutMs?: number;
26
+ }): Promise<ScheduleItem[]>;
27
+ /**
28
+ * 予約スケジュールを 1 件取消す。
29
+ *
30
+ * フレーム: { action: "biz3Schedule", userId: <subUUID>, scheduleId: <scheduleId>, op: "cancelSchedule" }
31
+ * (フィールド順は原典 useManageSchedule.js:54-59 のリテラル順)
32
+ * 応答: { action: "biz3Schedule", op: "cancelSchedule", ... }
33
+ *
34
+ * 未確認: cancelSchedule 応答 data の具体構造は web コードからは判別不可。biz3 hook の switch
35
+ * には cancelSchedule ケースが無く (useManageSchedule.js:31-41 は getScheduleList のみ)、
36
+ * 完了は registerCallback の cb 受信 (= ack) でしか確認していない。UI は楽観的に isCancelling
37
+ * フラグを立てるだけ (schedule-list/index.js:47-51)。よって本実装は **ack 受信=成功** とみなし、
38
+ * resp.success が明示的に false の場合のみ throw する。成功フラグ等の data 形は実機検証要。
39
+ *
40
+ * @param {import("./transport.js").Hub3WsClient} client
41
+ * @param {{subUUID:string, scheduleId:string, timeoutMs?:number}} params
42
+ * scheduleId は getScheduleList で得た item.scheduleId をそのまま渡す。
43
+ * @returns {Promise<any>} サーバ応答 (ack)。data の構造は未確認のため raw を返す。
44
+ */
45
+ export function cancelSchedule(client: import("./transport.js").Hub3WsClient, { subUUID, scheduleId, timeoutMs }?: {
46
+ subUUID: string;
47
+ scheduleId: string;
48
+ timeoutMs?: number;
49
+ }): Promise<any>;
50
+ export const NAMESPACE_OPS: string[];
51
+ export type ScheduleItem = {
52
+ /**
53
+ * 取消に使う ID (schedule-list/index.js:49,82,102)
54
+ */
55
+ scheduleId: string;
56
+ /**
57
+ * 'lock' | 'unlock' | 'upgrade_firmware' 等
58
+ * (schedule-list/index.js:77 / UI ラベルは正規化された表示用で
59
+ * サーバ側の正式 enum は未確認)
60
+ */
61
+ action: string;
62
+ /**
63
+ * '2026-01-01 09:00' または 'HH:MM' 形式 (index.js:78,31)
64
+ */
65
+ displayTime: string;
66
+ /**
67
+ * 対象デバイス名 (index.js:92)
68
+ */
69
+ deviceName: string;
70
+ };
71
+ //# sourceMappingURL=schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../src/schedule.js"],"names":[],"mappings":"AA6BA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;GAYG;AACH,wCALW,OAAO,gBAAgB,EAAE,YAAY,2BACrC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,GAEjC,OAAO,CAAC,YAAY,EAAE,CAAC,CAkBnC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,uCALW,OAAO,gBAAgB,EAAE,YAAY,uCACrC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,GAEpD,OAAO,CAAC,GAAG,CAAC,CAkBxB;AAGD,qCAAmE;;;;;gBA5ErD,MAAM;;;;;;YACN,MAAM;;;;iBAGN,MAAM;;;;gBACN,MAAM"}
@@ -0,0 +1,133 @@
1
+ export class Daemon {
2
+ /**
3
+ * @param {{ hub: object, version?: string, debug?: boolean }} args
4
+ * hub は SesameHub3 (テストでは狭いインターフェースの fake)。
5
+ */
6
+ constructor({ hub, version, debug }: {
7
+ hub: object;
8
+ version?: string;
9
+ debug?: boolean;
10
+ });
11
+ hub: any;
12
+ version: string;
13
+ _debug: boolean;
14
+ authState: string;
15
+ _registry: Map<string, {
16
+ summary: string;
17
+ params: any[];
18
+ result: string;
19
+ handler: Function;
20
+ namespace?: string;
21
+ }>;
22
+ _openrpc: {
23
+ openrpc: string;
24
+ info: {
25
+ title: string;
26
+ version: any;
27
+ "x-contractVersion": string;
28
+ description: string;
29
+ };
30
+ methods: {
31
+ name: any;
32
+ summary: any;
33
+ params: any;
34
+ result: {
35
+ name: string;
36
+ schema: {
37
+ description: any;
38
+ type: string;
39
+ };
40
+ };
41
+ }[];
42
+ "x-events": {
43
+ name: string;
44
+ description: string;
45
+ }[];
46
+ };
47
+ /** @type {Map<string, Promise<any>>} メソッド名→直列化チェーン末尾 */
48
+ _locks: Map<string, Promise<any>>;
49
+ /** @type {Map<object, Set<string>>} Connection→購読 topic */
50
+ _subs: Map<object, Set<string>>;
51
+ /** hub 状態 push の単一購読の unsubscribe (張っている時のみ非 null) */
52
+ _stateUnsub: any;
53
+ _stopped: boolean;
54
+ _shuttingDown: boolean;
55
+ _retryTimer: NodeJS.Timeout;
56
+ _log(...a: any[]): void;
57
+ start(): void;
58
+ _connectLoop(): Promise<void>;
59
+ _hasStoredTokens(): boolean;
60
+ /** キャンセル可能な sleep。shutdown 時に即 resolve してループを抜けさせる。 */
61
+ _sleep(ms: any): Promise<any>;
62
+ _retryResolve: (value: any) => void;
63
+ addConnection(conn: any): void;
64
+ removeConnection(conn: any): void;
65
+ /** 1 メッセージを処理して応答オブジェクト (通知なら null) を返す。push はしない (HTTP POST 用)。 */
66
+ dispatchMessage(conn: any, raw: any): Promise<any>;
67
+ /** framing から: 1 行を処理し、応答があれば conn.send で push する。throw しない。 */
68
+ handleLine(conn: any, raw: any): Promise<void>;
69
+ /** メソッド実行。registry 解決 + rpc.discover + メソッド名単位の直列化。常に Promise を返す。 */
70
+ invoke(method: any, params: any, conn: any): Promise<any>;
71
+ /**
72
+ * 同名メソッドを直列化する。これは応答入替の主防御ではなく (request() ベースの op は
73
+ * transport の (action:op) FIFO が保証する) **listDevices 等 onMessage 先着 resolve で
74
+ * 解決する op** を、複数クライアント同時呼び出しから守る防御。同名 op を 1 並行に絞る。
75
+ */
76
+ _serialize(key: any, run: any): Promise<any>;
77
+ subscribe(conn: any, topics: any): {
78
+ subscribed: string[];
79
+ };
80
+ unsubscribe(conn: any, topics: any): {
81
+ subscribed: string[];
82
+ };
83
+ _anySubscribers(): boolean;
84
+ /** 状態 push の単一購読を (必要なら) 張る。hub 未接続なら接続時に再試行。 */
85
+ _ensureStateSub(): void;
86
+ _reestablishStateSub(): void;
87
+ _maybeTeardownStateSub(): void;
88
+ /**
89
+ * 状態 push を購読 Connection へ配信する。
90
+ * 注: lockState と deviceUpdate は現状どちらも biz3 の pubDeviceStateChange を源とする
91
+ * (同一ストリームの別ラベル)。両方購読している接続には **1 回だけ** 配信する
92
+ * (最初に購読している topic のラベルで) — 同一イベントの二重配信を避ける。
93
+ */
94
+ _fanout(msg: any): void;
95
+ /** 冪等。受付停止 → hub.close()(=_pendingCleanups 実行) → 解決。 */
96
+ shutdown(): Promise<void>;
97
+ /** 購読可能な topic 一覧 (framing が事前検証に使う)。 */
98
+ get topics(): string[];
99
+ /** テスト/イントロスペクション用。 */
100
+ get registry(): Map<string, {
101
+ summary: string;
102
+ params: any[];
103
+ result: string;
104
+ handler: Function;
105
+ namespace?: string;
106
+ }>;
107
+ get openrpc(): {
108
+ openrpc: string;
109
+ info: {
110
+ title: string;
111
+ version: any;
112
+ "x-contractVersion": string;
113
+ description: string;
114
+ };
115
+ methods: {
116
+ name: any;
117
+ summary: any;
118
+ params: any;
119
+ result: {
120
+ name: string;
121
+ schema: {
122
+ description: any;
123
+ type: string;
124
+ };
125
+ };
126
+ }[];
127
+ "x-events": {
128
+ name: string;
129
+ description: string;
130
+ }[];
131
+ };
132
+ }
133
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/serve/daemon.js"],"names":[],"mappings":"AAgCA;IACE;;;OAGG;IACH,qCAHW;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAoB5D;IAfC,SAAc;IACd,gBAAsB;IACtB,gBAAmB;IACnB,kBAA2B;IAC3B;;;;;;OAAgC;IAChC;;;;;;;;;;;;;;;;;;;;;;;;MAAwD;IACxD,wDAAwD;IACxD,QADW,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CACb;IACvB,2DAA2D;IAC3D,OADW,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CACb;IACtB,sDAAsD;IACtD,iBAAuB;IACvB,kBAAqB;IACrB,uBAA0B;IAC1B,4BAAuB;IAGzB,wBAA+D;IAG/D,cAMC;IAED,8BAoBC;IAED,4BAKC;IAED,uDAAuD;IACvD,8BAKC;IAHG,oCAA4B;IAMhC,+BAAwD;IAExD,kCAGC;IAGD,oEAAoE;IACpE,mDAEC;IAED,gEAAgE;IAChE,+CAKC;IAED,sEAAsE;IACtE,0DAqBC;IAED;;;;OAIG;IACH,6CAQC;IAGD;;MAMC;IAED;;MAMC;IAED,2BAGC;IAED,iDAAiD;IACjD,wBAWC;IAED,6BAMC;IAED,+BAMC;IAED;;;;;OAKG;IACH,wBAOC;IAGD,wDAAwD;IACxD,0BAQC;IAED,yCAAyC;IACzC,uBAA+B;IAE/B,uBAAuB;IACvB;;;;;;OAAyC;IACzC;;;;;;;;;;;;;;;;;;;;;;;;MAAuC;CACxC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @param {import("../daemon.js").Daemon} daemon
3
+ * @param {{ bind?:string, port:number, token:string }} opts
4
+ * @returns {Promise<{ port:number, stop:()=>Promise<void> }>}
5
+ */
6
+ export function startGrpcFraming(daemon: import("../daemon.js").Daemon, { bind, port, token }: {
7
+ bind?: string;
8
+ port: number;
9
+ token: string;
10
+ }): Promise<{
11
+ port: number;
12
+ stop: () => Promise<void>;
13
+ }>;
14
+ //# sourceMappingURL=grpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grpc.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/grpc.js"],"names":[],"mappings":"AA4CA;;;;GAIG;AACH,yCAJW,OAAO,cAAc,EAAE,MAAM,yBAC7B;IAAE,IAAI,CAAC,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC;IAAE,IAAI,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiG5D"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @param {import("../daemon.js").Daemon} daemon
3
+ * @param {{ bind?:string, port:number, token:string }} opts
4
+ * @returns {Promise<{ url:string, stop:()=>Promise<void> }>}
5
+ */
6
+ export function startHttpFraming(daemon: import("../daemon.js").Daemon, { bind, port, token }: {
7
+ bind?: string;
8
+ port: number;
9
+ token: string;
10
+ }): Promise<{
11
+ url: string;
12
+ stop: () => Promise<void>;
13
+ }>;
14
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/http.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,yCAJW,OAAO,cAAc,EAAE,MAAM,yBAC7B;IAAE,IAAI,CAAC,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC;IAAE,GAAG,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiI3D"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @param {import("node:stream").Readable} readable
3
+ * @param {import("node:stream").Writable} writable
4
+ * @param {{ onLine:(conn:object, raw:string)=>void, onClose?:()=>void,
5
+ * maxQueue?:number, maxLine?:number, closeWritable?:boolean }} opts
6
+ * @returns {{ id:string, send:(obj:object)=>void, close:()=>void }}
7
+ */
8
+ export function makeLineConnection(readable: import("node:stream").Readable, writable: import("node:stream").Writable, opts: {
9
+ onLine: (conn: object, raw: string) => void;
10
+ onClose?: () => void;
11
+ maxQueue?: number;
12
+ maxLine?: number;
13
+ closeWritable?: boolean;
14
+ }): {
15
+ id: string;
16
+ send: (obj: object) => void;
17
+ close: () => void;
18
+ };
19
+ //# sourceMappingURL=ndjson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/ndjson.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,6CANW,OAAO,aAAa,EAAE,QAAQ,YAC9B,OAAO,aAAa,EAAE,QAAQ,QAC9B;IAAE,MAAM,EAAC,CAAC,IAAI,EAAC,MAAM,EAAE,GAAG,EAAC,MAAM,KAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAC,MAAI,IAAI,CAAC;IAC1D,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAC,OAAO,CAAC,EAAC,MAAM,CAAC;IAAC,aAAa,CAAC,EAAC,OAAO,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,CAAC,GAAG,EAAC,MAAM,KAAG,IAAI,CAAC;IAAC,KAAK,EAAC,MAAI,IAAI,CAAA;CAAE,CAyDlE"}
@@ -0,0 +1,14 @@
1
+ /** 既存ソケットが生きてれば throw、stale なら unlink して継続。 */
2
+ export function ensureFreeSocket(socketPath: any): Promise<any>;
3
+ /**
4
+ * @param {import("../daemon.js").Daemon} daemon
5
+ * @param {{ socketPath:string }} opts
6
+ * @returns {Promise<{ path:string, stop:()=>Promise<void> }>}
7
+ */
8
+ export function startSocketFraming(daemon: import("../daemon.js").Daemon, { socketPath }: {
9
+ socketPath: string;
10
+ }): Promise<{
11
+ path: string;
12
+ stop: () => Promise<void>;
13
+ }>;
14
+ //# sourceMappingURL=socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/socket.js"],"names":[],"mappings":"AAYA,+CAA+C;AAC/C,gEAcC;AAED;;;;GAIG;AACH,2CAJW,OAAO,cAAc,EAAE,MAAM,kBAC7B;IAAE,UAAU,EAAC,MAAM,CAAA;CAAE,GACnB,OAAO,CAAC;IAAE,IAAI,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAwC5D"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @param {import("../daemon.js").Daemon} daemon
3
+ * @param {{ onShutdown?:()=>void }} [opts]
4
+ * @returns {{ stop:()=>void }}
5
+ */
6
+ export function startStdioFraming(daemon: import("../daemon.js").Daemon, { onShutdown }?: {
7
+ onShutdown?: () => void;
8
+ }): {
9
+ stop: () => void;
10
+ };
11
+ //# sourceMappingURL=stdio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/stdio.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,0CAJW,OAAO,cAAc,EAAE,MAAM,mBAC7B;IAAE,UAAU,CAAC,EAAC,MAAI,IAAI,CAAA;CAAE,GACtB;IAAE,IAAI,EAAC,MAAI,IAAI,CAAA;CAAE,CAkB7B"}
@@ -0,0 +1,11 @@
1
+ /** 32byte hex のランダム token。 */
2
+ export function generateToken(): string;
3
+ /** 定数時間比較。長さ不一致は false。 */
4
+ export function tokenMatches(provided: any, expected: any): boolean;
5
+ /**
6
+ * HTTP リクエストから token を取り出す。**通常は `Authorization: Bearer` ヘッダ**を使うこと。
7
+ * `?token=` クエリは **ブラウザ専用のフォールバック** (EventSource/WebSocket がヘッダを送れないため)。
8
+ * クエリに載せると proxy ログ/履歴に残るので、ヘッダを送れるクライアントは必ずヘッダを使う。
9
+ */
10
+ export function extractToken(req: any): string;
11
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/serve/framing/token.js"],"names":[],"mappings":"AAKA,8BAA8B;AAC9B,wCAEC;AAED,2BAA2B;AAC3B,oEAQC;AAED;;;;GAIG;AACH,+CASC"}