@harrylabsj/kiwi 0.6.0 → 0.6.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/README.md +21 -0
- package/contracts/candidate-agent-dto-1.0.README.md +12 -8
- package/contracts/conformance/python-service/README.md +19 -0
- package/contracts/conformance/python-service/run.py +134 -0
- package/contracts/kiwi-catalog/1.0/listing-record.schema.json +11 -1
- package/contracts/kiwi-contracts.lock.json +7 -0
- package/contracts/manifest.json +61 -0
- package/contracts/vectors/candidate-agent.invalid-private-field.json +7 -0
- package/contracts/vectors/candidate-agent.valid.json +26 -0
- package/dist/a2a/client/client.js +39 -34
- package/dist/a2a/client/client.js.map +1 -1
- package/dist/a2a/client/url-policy.d.ts +8 -1
- package/dist/a2a/client/url-policy.js +18 -2
- package/dist/a2a/client/url-policy.js.map +1 -1
- package/dist/a2a/clock.d.ts +30 -0
- package/dist/a2a/clock.js +39 -0
- package/dist/a2a/clock.js.map +1 -0
- package/dist/a2a/negotiate.d.ts +6 -0
- package/dist/a2a/negotiate.js +10 -12
- package/dist/a2a/negotiate.js.map +1 -1
- package/dist/a2a/node.d.ts +23 -3
- package/dist/a2a/node.js +128 -18
- package/dist/a2a/node.js.map +1 -1
- package/dist/a2a/server/merchant-handler.d.ts +4 -0
- package/dist/a2a/server/merchant-handler.js +238 -25
- package/dist/a2a/server/merchant-handler.js.map +1 -1
- package/dist/a2a/server/pipeline.d.ts +17 -0
- package/dist/a2a/server/pipeline.js +89 -1
- package/dist/a2a/server/pipeline.js.map +1 -1
- package/dist/a2a/server/ucp.d.ts +30 -2
- package/dist/a2a/server/ucp.js +23 -14
- package/dist/a2a/server/ucp.js.map +1 -1
- package/dist/agent/agent-db.js +5 -0
- package/dist/agent/agent-db.js.map +1 -1
- package/dist/agent/buyer/buyer-tools.d.ts +5 -0
- package/dist/agent/buyer/buyer-tools.js +8 -1
- package/dist/agent/buyer/buyer-tools.js.map +1 -1
- package/dist/agent/buyer/types.d.ts +0 -25
- package/dist/agent/buyer/types.js.map +1 -1
- package/dist/agent/kernel-builder.d.ts +27 -0
- package/dist/agent/kernel-builder.js +180 -0
- package/dist/agent/kernel-builder.js.map +1 -0
- package/dist/agent/kernel.d.ts +6 -0
- package/dist/agent/kernel.js +95 -8
- package/dist/agent/kernel.js.map +1 -1
- package/dist/agent/memory/store.d.ts +5 -0
- package/dist/agent/memory/store.js +29 -1
- package/dist/agent/memory/store.js.map +1 -1
- package/dist/agent/merchant/action-candidate.js +15 -1
- package/dist/agent/merchant/action-candidate.js.map +1 -1
- package/dist/agent/merchant/merchant-client.js +22 -4
- package/dist/agent/merchant/merchant-client.js.map +1 -1
- package/dist/agent/merchant/types.d.ts +5 -2
- package/dist/agent/merchant/types.js +6 -2
- package/dist/agent/merchant/types.js.map +1 -1
- package/dist/agent/negotiation-chat.js +34 -14
- package/dist/agent/negotiation-chat.js.map +1 -1
- package/dist/cli.d.ts +56 -0
- package/dist/cli.js +141 -156
- package/dist/cli.js.map +1 -1
- package/dist/commerce/data-source.d.ts +7 -3
- package/dist/commerce/data-source.js.map +1 -1
- package/dist/commerce/http-client.js +35 -31
- package/dist/commerce/http-client.js.map +1 -1
- package/dist/commerce/shopping-cli-source.js +66 -48
- package/dist/commerce/shopping-cli-source.js.map +1 -1
- package/dist/config/profile.d.ts +7 -0
- package/dist/config/profile.js +23 -0
- package/dist/config/profile.js.map +1 -1
- package/dist/counterparty/a2a-direct/index.d.ts +5 -0
- package/dist/counterparty/a2a-direct/index.js +24 -0
- package/dist/counterparty/a2a-direct/index.js.map +1 -1
- package/dist/counterparty/shopping-cli-hosted/index.js +52 -19
- package/dist/counterparty/shopping-cli-hosted/index.js.map +1 -1
- package/dist/discovery/catalog-source/kiwi-record.d.ts +3 -0
- package/dist/discovery/catalog-source/kiwi-record.js.map +1 -1
- package/dist/discovery/catalog-source/kiwi-source.js +46 -36
- package/dist/discovery/catalog-source/kiwi-source.js.map +1 -1
- package/dist/discovery/catalog-source/register.d.ts +6 -0
- package/dist/discovery/catalog-source/register.js +27 -8
- package/dist/discovery/catalog-source/register.js.map +1 -1
- package/dist/discovery/catalog-source/source.js +39 -35
- package/dist/discovery/catalog-source/source.js.map +1 -1
- package/dist/discovery/resolve.d.ts +15 -0
- package/dist/discovery/resolve.js +59 -35
- package/dist/discovery/resolve.js.map +1 -1
- package/dist/discovery/ucp/index.d.ts +1 -1
- package/dist/discovery/ucp/index.js +1 -1
- package/dist/discovery/ucp/index.js.map +1 -1
- package/dist/discovery/ucp/resolver.d.ts +5 -0
- package/dist/discovery/ucp/resolver.js +65 -38
- package/dist/discovery/ucp/resolver.js.map +1 -1
- package/dist/discovery/ucp/vendor.d.ts +1 -1
- package/dist/discovery/ucp/vendor.js +1 -1
- package/dist/handoff/delivery.d.ts +4 -2
- package/dist/handoff/delivery.js +6 -1
- package/dist/handoff/delivery.js.map +1 -1
- package/dist/handoff/errors.d.ts +1 -1
- package/dist/handoff/errors.js +1 -0
- package/dist/handoff/errors.js.map +1 -1
- package/dist/handoff/idempotency.d.ts +10 -1
- package/dist/handoff/idempotency.js +13 -3
- package/dist/handoff/idempotency.js.map +1 -1
- package/dist/handoff/index.d.ts +1 -1
- package/dist/handoff/index.js +1 -1
- package/dist/handoff/index.js.map +1 -1
- package/dist/handoff/ledger.d.ts +9 -0
- package/dist/handoff/ledger.js +66 -0
- package/dist/handoff/ledger.js.map +1 -1
- package/dist/handoff/transaction.d.ts +21 -3
- package/dist/handoff/transaction.js +50 -11
- package/dist/handoff/transaction.js.map +1 -1
- package/dist/handoff/ucp-checkout/channel.js +15 -10
- package/dist/handoff/ucp-checkout/channel.js.map +1 -1
- package/dist/negotiation/jcs.js +11 -8
- package/dist/negotiation/jcs.js.map +1 -1
- package/dist/negotiation/lease/store.d.ts +25 -0
- package/dist/negotiation/lease/store.js +101 -0
- package/dist/negotiation/lease/store.js.map +1 -0
- package/dist/negotiation/recovery/recover.js +25 -1
- package/dist/negotiation/recovery/recover.js.map +1 -1
- package/dist/negotiation/state/phase.js +12 -4
- package/dist/negotiation/state/phase.js.map +1 -1
- package/dist/operator/runner.d.ts +11 -0
- package/dist/operator/runner.js +20 -1
- package/dist/operator/runner.js.map +1 -1
- package/dist/product-catalog.d.ts +43 -0
- package/dist/product-catalog.js +60 -0
- package/dist/product-catalog.js.map +1 -0
- package/dist/product-cli.d.ts +1 -1
- package/dist/product-cli.js +1 -1
- package/dist/product-publish.d.ts +15 -17
- package/dist/product-publish.js +279 -46
- package/dist/product-publish.js.map +1 -1
- package/dist/supervisor/stack-config.d.ts +6 -1
- package/dist/supervisor/stack-config.js +11 -3
- package/dist/supervisor/stack-config.js.map +1 -1
- package/dist/trust/identity/message-signature.js +17 -0
- package/dist/trust/identity/message-signature.js.map +1 -1
- package/dist/weixin/channel.d.ts +89 -0
- package/dist/weixin/channel.js +370 -0
- package/dist/weixin/channel.js.map +1 -0
- package/dist/weixin/cli-weixin.d.ts +29 -0
- package/dist/weixin/cli-weixin.js +130 -0
- package/dist/weixin/cli-weixin.js.map +1 -0
- package/dist/weixin/credentials.d.ts +33 -0
- package/dist/weixin/credentials.js +107 -0
- package/dist/weixin/credentials.js.map +1 -0
- package/dist/weixin/ilink-client.d.ts +44 -0
- package/dist/weixin/ilink-client.js +287 -0
- package/dist/weixin/ilink-client.js.map +1 -0
- package/dist/weixin/login.d.ts +37 -0
- package/dist/weixin/login.js +93 -0
- package/dist/weixin/login.js.map +1 -0
- package/dist/weixin/qr.d.ts +26 -0
- package/dist/weixin/qr.js +525 -0
- package/dist/weixin/qr.js.map +1 -0
- package/dist/weixin/types.d.ts +114 -0
- package/dist/weixin/types.js +48 -0
- package/dist/weixin/types.js.map +1 -0
- package/package.json +12 -2
- package/dist/commerce/erp-source.d.ts +0 -51
- package/dist/commerce/erp-source.js +0 -184
- package/dist/commerce/erp-source.js.map +0 -1
- package/dist/commerce/local-db-source.d.ts +0 -50
- package/dist/commerce/local-db-source.js +0 -162
- package/dist/commerce/local-db-source.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr.js","sourceRoot":"","sources":["../../src/weixin/qr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 harrylabsj
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* 微信远程控制通道(iLink Bot API)——协议 DTO、错误分类与时序配置。
|
|
18
|
+
*
|
|
19
|
+
* 协议学习自 Hermes Agent 的 weixin adapter(gateway/platforms/weixin.py):
|
|
20
|
+
* 腾讯 iLink Bot API(个人微信 bot 身份)。模块语义:
|
|
21
|
+
* - 错误统一 `WeixinError`(code 分类,fail-closed 决策点);
|
|
22
|
+
* - 所有 DTO 只声明我们消费的字段(wire 容忍服务端前向扩展);
|
|
23
|
+
* - 时序全部可注入覆盖(测试用),生产缺省对齐 Hermes 行为。
|
|
24
|
+
*/
|
|
25
|
+
/** iLink 服务默认 base URL(与 Hermes ILINK_BASE_URL 一致)。 */
|
|
26
|
+
export declare const ILINK_DEFAULT_BASE_URL = "https://ilinkai.weixin.qq.com";
|
|
27
|
+
/** iLink 协议错误分类(Hermes 归约;分类逻辑集中在客户端 request())。 */
|
|
28
|
+
export type WeixinErrorCode = "network" | "timeout" | "http" | "redirect" | "response_too_large" | "invalid_json" | "protocol" | "auth" | "session_stale" | "qr_expired" | "validation" | "not_configured";
|
|
29
|
+
/** 微信通道错误(fail-closed:任何协议/校验异常抛此类型,不静默容错)。 */
|
|
30
|
+
export declare class WeixinError extends Error {
|
|
31
|
+
readonly code: WeixinErrorCode;
|
|
32
|
+
constructor(code: WeixinErrorCode, message: string);
|
|
33
|
+
}
|
|
34
|
+
/** confirmed 返回并持久化的 bot 凭证。 */
|
|
35
|
+
export interface BotCredentials {
|
|
36
|
+
/** iLink bot 身份 ID。 */
|
|
37
|
+
ilink_bot_id: string;
|
|
38
|
+
/** bot 访问令牌(仅 base_info 中发送,绝不落日志)。 */
|
|
39
|
+
bot_token: string;
|
|
40
|
+
/** confirmed 携带的 baseurl;后续请求全走它(redirect 后可能变更)。 */
|
|
41
|
+
base_url: string;
|
|
42
|
+
/** 扫描者本人微信用户 ID(= 默认授权身份)。 */
|
|
43
|
+
ilink_user_id: string;
|
|
44
|
+
/** 持久化时间(now() 时钟)。 */
|
|
45
|
+
saved_at: string;
|
|
46
|
+
}
|
|
47
|
+
/** get_bot_qrcode 响应。 */
|
|
48
|
+
export interface BotQrcode {
|
|
49
|
+
/** 二维码 hex token(状态轮询用)。 */
|
|
50
|
+
qrcode: string;
|
|
51
|
+
/** 完整可扫 URL(微信扫一扫实际扫描内容)。 */
|
|
52
|
+
qrcode_img_content: string;
|
|
53
|
+
}
|
|
54
|
+
/** 扫码状态轮询结果(判别联合)。 */
|
|
55
|
+
export type QrcodeStatus = {
|
|
56
|
+
state: "wait" | "scaned";
|
|
57
|
+
} | {
|
|
58
|
+
state: "scaned_but_redirect";
|
|
59
|
+
baseUrl: string;
|
|
60
|
+
} | {
|
|
61
|
+
state: "expired";
|
|
62
|
+
} | {
|
|
63
|
+
state: "confirmed";
|
|
64
|
+
credentials: BotCredentials;
|
|
65
|
+
};
|
|
66
|
+
/** getupdates 里的单条入站消息(只提取消费字段;非文本消息 text="")。 */
|
|
67
|
+
export interface InboundMessage {
|
|
68
|
+
/** 消息来源标识(bot 自身视角)。 */
|
|
69
|
+
account: string;
|
|
70
|
+
from_user_id: string;
|
|
71
|
+
message_id: string;
|
|
72
|
+
/** item_list 中 type:1 的 text_item.text;非文本消息为空串。 */
|
|
73
|
+
text: string;
|
|
74
|
+
/** 回执令牌:回复必须回显((account,user) 缓存)。 */
|
|
75
|
+
context_token: string;
|
|
76
|
+
}
|
|
77
|
+
export interface GetUpdatesResult {
|
|
78
|
+
messages: InboundMessage[];
|
|
79
|
+
/** 下轮轮询游标(服务端返回,逐轮写穿持久化)。 */
|
|
80
|
+
next_sync_buf: string;
|
|
81
|
+
/** 服务端建议长轮询时长(毫秒;首轮缺省 LONG_POLL_DEFAULT_MS)。 */
|
|
82
|
+
longpoll_timeout_ms: number;
|
|
83
|
+
}
|
|
84
|
+
export interface SendMessageInput {
|
|
85
|
+
to_user_id: string;
|
|
86
|
+
text: string;
|
|
87
|
+
/** (account,user) 缓存回显;无则不带。 */
|
|
88
|
+
context_token?: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 时序配置(全部可注入覆盖——测试用;生产缺省对齐 Hermes 行为)。
|
|
92
|
+
*/
|
|
93
|
+
export interface WeixinTimings {
|
|
94
|
+
/** 长轮询 fetch 超时 = server longpoll_timeout + 该余量(毫秒)。 */
|
|
95
|
+
longPollGraceMs: number;
|
|
96
|
+
/** 连续协议错误退避(毫秒)。 */
|
|
97
|
+
protocolBackoffMs: number;
|
|
98
|
+
/** -14 会话过期冷却(毫秒)。 */
|
|
99
|
+
sessionStaleCooldownMs: number;
|
|
100
|
+
/** 网络/HTTP 错误指数退避(毫秒;第 4 次起封顶最后一项)。 */
|
|
101
|
+
httpBackoffMs: readonly [number, number, number, number];
|
|
102
|
+
/** buyer 任务轮询间隔(毫秒;0 = 禁用)。 */
|
|
103
|
+
schedulerTickMs: number;
|
|
104
|
+
/** autopilot 磋商轮询间隔(毫秒;0 = 禁用)。 */
|
|
105
|
+
negotiateTickMs: number;
|
|
106
|
+
/** 去重指纹/context_token 缓存容量。 */
|
|
107
|
+
dedupCap: number;
|
|
108
|
+
/** 二维码轮询间隔(毫秒)。 */
|
|
109
|
+
qrPollMs: number;
|
|
110
|
+
/** 二维码过期刷新上限。 */
|
|
111
|
+
qrRefreshCap: number;
|
|
112
|
+
}
|
|
113
|
+
/** 生产缺省时序(Hermes weixin.py 常量对齐)。 */
|
|
114
|
+
export declare const DEFAULT_WEIXIN_TIMINGS: WeixinTimings;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 harrylabsj
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* 微信远程控制通道(iLink Bot API)——协议 DTO、错误分类与时序配置。
|
|
18
|
+
*
|
|
19
|
+
* 协议学习自 Hermes Agent 的 weixin adapter(gateway/platforms/weixin.py):
|
|
20
|
+
* 腾讯 iLink Bot API(个人微信 bot 身份)。模块语义:
|
|
21
|
+
* - 错误统一 `WeixinError`(code 分类,fail-closed 决策点);
|
|
22
|
+
* - 所有 DTO 只声明我们消费的字段(wire 容忍服务端前向扩展);
|
|
23
|
+
* - 时序全部可注入覆盖(测试用),生产缺省对齐 Hermes 行为。
|
|
24
|
+
*/
|
|
25
|
+
/** iLink 服务默认 base URL(与 Hermes ILINK_BASE_URL 一致)。 */
|
|
26
|
+
export const ILINK_DEFAULT_BASE_URL = "https://ilinkai.weixin.qq.com";
|
|
27
|
+
/** 微信通道错误(fail-closed:任何协议/校验异常抛此类型,不静默容错)。 */
|
|
28
|
+
export class WeixinError extends Error {
|
|
29
|
+
code;
|
|
30
|
+
constructor(code, message) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = "WeixinError";
|
|
33
|
+
this.code = code;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** 生产缺省时序(Hermes weixin.py 常量对齐)。 */
|
|
37
|
+
export const DEFAULT_WEIXIN_TIMINGS = {
|
|
38
|
+
longPollGraceMs: 20_000,
|
|
39
|
+
protocolBackoffMs: 30_000,
|
|
40
|
+
sessionStaleCooldownMs: 600_000,
|
|
41
|
+
httpBackoffMs: [2_000, 5_000, 15_000, 60_000],
|
|
42
|
+
schedulerTickMs: 60_000,
|
|
43
|
+
negotiateTickMs: 15_000,
|
|
44
|
+
dedupCap: 1_000,
|
|
45
|
+
qrPollMs: 1_000,
|
|
46
|
+
qrRefreshCap: 3,
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/weixin/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AAEH,uDAAuD;AACvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,+BAA+B,CAAC;AAiBtE,+CAA+C;AAC/C,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAkB;IAE/B,YAAY,IAAqB,EAAE,OAAe;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAkFD,qCAAqC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,sBAAsB,EAAE,OAAO;IAC/B,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAC7C,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC;CAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@harrylabsj/kiwi",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "Kiwi: standalone A2A commerce negotiation agent runtime (Pi Agent Core + shopping-cli Commerce API)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -27,8 +27,11 @@
|
|
|
27
27
|
"format": "prettier --write .",
|
|
28
28
|
"format:check": "prettier --check .",
|
|
29
29
|
"test": "vitest run",
|
|
30
|
+
"verify:vectors": "node scripts/verify-contract-vectors.mjs",
|
|
31
|
+
"verify:contracts": "node scripts/verify-contracts.mjs",
|
|
30
32
|
"verify:package": "bash scripts/verify-package.sh",
|
|
31
|
-
"verify": "
|
|
33
|
+
"verify:portfolio-lock": "node scripts/verify-portfolio-lock-candidate.mjs",
|
|
34
|
+
"verify": "npm run lint && npm run typecheck && npm run build && npm run test && npm run verify:contracts && npm run verify:vectors && npm run verify:package",
|
|
32
35
|
"prepublishOnly": "npm run build"
|
|
33
36
|
},
|
|
34
37
|
"dependencies": {
|
|
@@ -41,15 +44,22 @@
|
|
|
41
44
|
"devDependencies": {
|
|
42
45
|
"@eslint/js": "^9.29.0",
|
|
43
46
|
"@types/node": "^24.0.0",
|
|
47
|
+
"@types/qrcode": "^1.5.6",
|
|
44
48
|
"@typescript-eslint/eslint-plugin": "^8.34.0",
|
|
45
49
|
"@typescript-eslint/parser": "^8.34.0",
|
|
46
50
|
"eslint": "^9.29.0",
|
|
47
51
|
"globals": "^17.9.0",
|
|
52
|
+
"jsqr": "^1.4.0",
|
|
48
53
|
"prettier": "^3.5.3",
|
|
54
|
+
"qrcode": "^1.5.4",
|
|
49
55
|
"typescript": "^5.8.3",
|
|
50
56
|
"vitest": "^3.2.4"
|
|
51
57
|
},
|
|
52
58
|
"publishConfig": {
|
|
53
59
|
"access": "public"
|
|
60
|
+
},
|
|
61
|
+
"repository": {
|
|
62
|
+
"type": "git",
|
|
63
|
+
"url": "git+https://github.com/harrylabsj/kiwi.git"
|
|
54
64
|
}
|
|
55
65
|
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2026 harrylabsj
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* ErpCommerceDataSource —— HTTP ERP adapter(shopping-cli data hub
|
|
18
|
-
* v0.2.1 §3/#7「至少一种 ERP / external business data adapter」)。
|
|
19
|
-
*
|
|
20
|
-
* 上游代理语义(UPSTREAM_PROXY):字段权威在外部 ERP;Kiwi 只做
|
|
21
|
-
* 读取与超时/HTTP 失败映射(fail-closed,不静默容错)。任何非 2xx /
|
|
22
|
-
* 网络 / 超时 / 结构错误抛 CommerceError。
|
|
23
|
-
*/
|
|
24
|
-
import { type CommerceDataSource, type CommerceField, type ProductFact, type ProductSearchQuery } from "./data-source.js";
|
|
25
|
-
import type { CommerceHealth } from "./types.js";
|
|
26
|
-
export interface ErpCommerceDataSourceDeps {
|
|
27
|
-
/** ERP 服务根 URL(http/https,无 userinfo/query/fragment)。 */
|
|
28
|
-
baseUrl: string;
|
|
29
|
-
/** 可选的 bearer 凭证。 */
|
|
30
|
-
authToken?: string;
|
|
31
|
-
/** 拉取超时 ms(默认 15000)。 */
|
|
32
|
-
timeoutMs?: number;
|
|
33
|
-
/** 注入 fetch(测试)。 */
|
|
34
|
-
fetchImpl?: typeof fetch;
|
|
35
|
-
}
|
|
36
|
-
/** ERP 上游数据源(UPSTREAM_PROXY)。 */
|
|
37
|
-
export declare class ErpCommerceDataSource implements CommerceDataSource {
|
|
38
|
-
private readonly baseUrl;
|
|
39
|
-
private readonly deps;
|
|
40
|
-
constructor(deps: ErpCommerceDataSourceDeps);
|
|
41
|
-
private getJson;
|
|
42
|
-
getProduct(sku: string): Promise<ProductFact | undefined>;
|
|
43
|
-
getProducts(query?: ProductSearchQuery): Promise<ProductFact[]>;
|
|
44
|
-
getInventory(sku: string): Promise<CommerceField<number> | undefined>;
|
|
45
|
-
getPrice(sku: string): Promise<CommerceField<{
|
|
46
|
-
currency: string;
|
|
47
|
-
amount_minor: number;
|
|
48
|
-
}> | undefined>;
|
|
49
|
-
getPublicListing(): Promise<Record<string, unknown>>;
|
|
50
|
-
health(): Promise<CommerceHealth>;
|
|
51
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2026 harrylabsj
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* ErpCommerceDataSource —— HTTP ERP adapter(shopping-cli data hub
|
|
18
|
-
* v0.2.1 §3/#7「至少一种 ERP / external business data adapter」)。
|
|
19
|
-
*
|
|
20
|
-
* 上游代理语义(UPSTREAM_PROXY):字段权威在外部 ERP;Kiwi 只做
|
|
21
|
-
* 读取与超时/HTTP 失败映射(fail-closed,不静默容错)。任何非 2xx /
|
|
22
|
-
* 网络 / 超时 / 结构错误抛 CommerceError。
|
|
23
|
-
*/
|
|
24
|
-
import { CommerceError } from "./data-source.js";
|
|
25
|
-
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
26
|
-
function validateBaseUrl(value) {
|
|
27
|
-
let url;
|
|
28
|
-
try {
|
|
29
|
-
url = new URL(value);
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
throw new CommerceError("invalid_input", `erp baseUrl is not a valid URL: "${value}"`);
|
|
33
|
-
}
|
|
34
|
-
if (url.protocol !== "https:" && url.protocol !== "http:") {
|
|
35
|
-
throw new CommerceError("invalid_input", `erp baseUrl must use http or https (got ${url.protocol})`);
|
|
36
|
-
}
|
|
37
|
-
if (url.username !== "" || url.password !== "") {
|
|
38
|
-
throw new CommerceError("invalid_input", "erp baseUrl must not embed credentials (userinfo)");
|
|
39
|
-
}
|
|
40
|
-
if (url.search !== "" || url.hash !== "") {
|
|
41
|
-
throw new CommerceError("invalid_input", "erp baseUrl must not contain query or fragment (paths are appended to it)");
|
|
42
|
-
}
|
|
43
|
-
return value.replace(/\/+$/, "");
|
|
44
|
-
}
|
|
45
|
-
function parseProduct(raw, path) {
|
|
46
|
-
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
47
|
-
throw new CommerceError("request_failed", `erp product at ${path} is not an object`);
|
|
48
|
-
}
|
|
49
|
-
const obj = raw;
|
|
50
|
-
const sku = obj.sku;
|
|
51
|
-
if (typeof sku !== "string" || sku.length === 0) {
|
|
52
|
-
throw new CommerceError("request_failed", `erp product at ${path} is missing sku`);
|
|
53
|
-
}
|
|
54
|
-
const fact = {
|
|
55
|
-
sku,
|
|
56
|
-
...(typeof obj.title === "string" && obj.title !== "" ? { title: obj.title } : {}),
|
|
57
|
-
...(typeof obj.price_minor === "number" && Number.isInteger(obj.price_minor)
|
|
58
|
-
? { price_minor: obj.price_minor }
|
|
59
|
-
: {}),
|
|
60
|
-
...(typeof obj.currency === "string" && obj.currency !== "" ? { currency: obj.currency } : {}),
|
|
61
|
-
...(typeof obj.stock === "number" && Number.isInteger(obj.stock) ? { stock: obj.stock } : {}),
|
|
62
|
-
...(typeof obj.delivery_lead_days === "number" && Number.isInteger(obj.delivery_lead_days)
|
|
63
|
-
? { delivery_lead_days: obj.delivery_lead_days }
|
|
64
|
-
: {}),
|
|
65
|
-
};
|
|
66
|
-
return fact;
|
|
67
|
-
}
|
|
68
|
-
/** ERP 上游数据源(UPSTREAM_PROXY)。 */
|
|
69
|
-
export class ErpCommerceDataSource {
|
|
70
|
-
baseUrl;
|
|
71
|
-
deps;
|
|
72
|
-
constructor(deps) {
|
|
73
|
-
this.baseUrl = validateBaseUrl(deps.baseUrl);
|
|
74
|
-
this.deps = deps;
|
|
75
|
-
}
|
|
76
|
-
async getJson(requestPath) {
|
|
77
|
-
const fetchImpl = this.deps.fetchImpl ?? globalThis.fetch;
|
|
78
|
-
const timeoutMs = this.deps.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
79
|
-
const url = `${this.baseUrl}${requestPath}`;
|
|
80
|
-
const controller = new AbortController();
|
|
81
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
82
|
-
let response;
|
|
83
|
-
try {
|
|
84
|
-
response = await fetchImpl(url, {
|
|
85
|
-
signal: controller.signal,
|
|
86
|
-
headers: {
|
|
87
|
-
accept: "application/json",
|
|
88
|
-
...(this.deps.authToken !== undefined
|
|
89
|
-
? { authorization: `Bearer ${this.deps.authToken}` }
|
|
90
|
-
: {}),
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
catch (err) {
|
|
95
|
-
const name = err?.name;
|
|
96
|
-
const detail = err instanceof Error ? err.message : String(err);
|
|
97
|
-
throw new CommerceError("request_failed", name === "AbortError"
|
|
98
|
-
? `erp request timed out after ${timeoutMs}ms: ${url}`
|
|
99
|
-
: `erp request failed: ${url} (${detail})`);
|
|
100
|
-
}
|
|
101
|
-
finally {
|
|
102
|
-
clearTimeout(timer);
|
|
103
|
-
}
|
|
104
|
-
if (response.status === 404) {
|
|
105
|
-
// 404 = 资源不存在:getProduct 的"未知 SKU → undefined"接口承诺
|
|
106
|
-
//(composite 次要源靠它跳过自身不收录的 SKU,而不是整体抛错)。
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
if (!response.ok) {
|
|
110
|
-
throw new CommerceError("request_failed", `erp request returned HTTP ${response.status} from ${url}`);
|
|
111
|
-
}
|
|
112
|
-
let raw;
|
|
113
|
-
try {
|
|
114
|
-
raw = await response.json();
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
throw new CommerceError("request_failed", `erp response from ${url} is not valid JSON`);
|
|
118
|
-
}
|
|
119
|
-
return raw;
|
|
120
|
-
}
|
|
121
|
-
async getProduct(sku) {
|
|
122
|
-
if (typeof sku !== "string" || sku.length === 0) {
|
|
123
|
-
throw new CommerceError("invalid_input", "sku must be a non-empty string");
|
|
124
|
-
}
|
|
125
|
-
const raw = await this.getJson(`/products/${encodeURIComponent(sku)}`);
|
|
126
|
-
if (raw === null)
|
|
127
|
-
return undefined;
|
|
128
|
-
return parseProduct(raw, `/products/${sku}`);
|
|
129
|
-
}
|
|
130
|
-
async getProducts(query = {}) {
|
|
131
|
-
const limit = Math.max(1, Math.min(Number(query.limit ?? 20) || 20, 100));
|
|
132
|
-
const params = new URLSearchParams();
|
|
133
|
-
if (query.q !== undefined && query.q !== "")
|
|
134
|
-
params.set("q", query.q);
|
|
135
|
-
params.set("limit", String(limit));
|
|
136
|
-
const raw = await this.getJson(`/products?${params.toString()}`);
|
|
137
|
-
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
138
|
-
throw new CommerceError("request_failed", "erp product list response must be an object");
|
|
139
|
-
}
|
|
140
|
-
const body = raw;
|
|
141
|
-
if (!Array.isArray(body.results)) {
|
|
142
|
-
throw new CommerceError("request_failed", 'erp product list response is missing array field "results"');
|
|
143
|
-
}
|
|
144
|
-
return body.results.map((element, i) => parseProduct(element, `/products/${i}`));
|
|
145
|
-
}
|
|
146
|
-
async getInventory(sku) {
|
|
147
|
-
const product = await this.getProduct(sku);
|
|
148
|
-
if (product?.stock === undefined)
|
|
149
|
-
return undefined;
|
|
150
|
-
return {
|
|
151
|
-
value: product.stock,
|
|
152
|
-
authority: "UPSTREAM_PROXY",
|
|
153
|
-
source: "erp",
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
async getPrice(sku) {
|
|
157
|
-
const product = await this.getProduct(sku);
|
|
158
|
-
if (product?.price_minor === undefined || product.currency === undefined)
|
|
159
|
-
return undefined;
|
|
160
|
-
return {
|
|
161
|
-
value: { currency: product.currency, amount_minor: product.price_minor },
|
|
162
|
-
authority: "UPSTREAM_PROXY",
|
|
163
|
-
source: "erp",
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
async getPublicListing() {
|
|
167
|
-
const products = await this.getProducts({ limit: 100 });
|
|
168
|
-
return { source: "erp", count: products.length, products };
|
|
169
|
-
}
|
|
170
|
-
async health() {
|
|
171
|
-
try {
|
|
172
|
-
await this.getJson("/health");
|
|
173
|
-
return { ok: true, service: "erp-commerce-data-source", version: "1" };
|
|
174
|
-
}
|
|
175
|
-
catch (err) {
|
|
176
|
-
return {
|
|
177
|
-
ok: false,
|
|
178
|
-
service: "erp-commerce-data-source",
|
|
179
|
-
details: { error: err instanceof Error ? err.message : String(err) },
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
//# sourceMappingURL=erp-source.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"erp-source.js","sourceRoot":"","sources":["../../src/commerce/erp-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2026 harrylabsj
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { DatabaseSync } from "node:sqlite";
|
|
17
|
-
import type { CommerceHealth } from "./types.js";
|
|
18
|
-
import { type CommerceDataSource, type CommerceField, type ProductFact, type ProductSearchQuery } from "./data-source.js";
|
|
19
|
-
declare const CTOR: unique symbol;
|
|
20
|
-
/** 本地商品库 CommerceDataSource(LOCAL_AUTHORITATIVE)。 */
|
|
21
|
-
export declare class LocalDatabaseCommerceDataSource implements CommerceDataSource {
|
|
22
|
-
private readonly db;
|
|
23
|
-
constructor(db: DatabaseSync, _token: typeof CTOR);
|
|
24
|
-
getProduct(sku: string): Promise<ProductFact | undefined>;
|
|
25
|
-
getProducts(query?: ProductSearchQuery): Promise<ProductFact[]>;
|
|
26
|
-
getInventory(sku: string): Promise<CommerceField<number> | undefined>;
|
|
27
|
-
getPrice(sku: string): Promise<CommerceField<{
|
|
28
|
-
currency: string;
|
|
29
|
-
amount_minor: number;
|
|
30
|
-
}> | undefined>;
|
|
31
|
-
getPublicListing(): Promise<Record<string, unknown>>;
|
|
32
|
-
health(): Promise<CommerceHealth>;
|
|
33
|
-
/** 写入商品事实(本地权威:录入即事实)。 */
|
|
34
|
-
upsertProduct(input: {
|
|
35
|
-
sku: string;
|
|
36
|
-
title?: string;
|
|
37
|
-
price_minor: number;
|
|
38
|
-
currency?: string;
|
|
39
|
-
stock?: number;
|
|
40
|
-
delivery_lead_days?: number;
|
|
41
|
-
updated_at?: string;
|
|
42
|
-
}): ProductFact;
|
|
43
|
-
close(): void;
|
|
44
|
-
private rowToFact;
|
|
45
|
-
}
|
|
46
|
-
/** 打开(必要时创建)本地商品库;目录 0700 / 文件 0600。 */
|
|
47
|
-
export declare function openLocalDatabaseCommerceDataSource(options: {
|
|
48
|
-
dbPath: string;
|
|
49
|
-
}): LocalDatabaseCommerceDataSource;
|
|
50
|
-
export {};
|