@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.
Files changed (167) hide show
  1. package/README.md +21 -0
  2. package/contracts/candidate-agent-dto-1.0.README.md +12 -8
  3. package/contracts/conformance/python-service/README.md +19 -0
  4. package/contracts/conformance/python-service/run.py +134 -0
  5. package/contracts/kiwi-catalog/1.0/listing-record.schema.json +11 -1
  6. package/contracts/kiwi-contracts.lock.json +7 -0
  7. package/contracts/manifest.json +61 -0
  8. package/contracts/vectors/candidate-agent.invalid-private-field.json +7 -0
  9. package/contracts/vectors/candidate-agent.valid.json +26 -0
  10. package/dist/a2a/client/client.js +39 -34
  11. package/dist/a2a/client/client.js.map +1 -1
  12. package/dist/a2a/client/url-policy.d.ts +8 -1
  13. package/dist/a2a/client/url-policy.js +18 -2
  14. package/dist/a2a/client/url-policy.js.map +1 -1
  15. package/dist/a2a/clock.d.ts +30 -0
  16. package/dist/a2a/clock.js +39 -0
  17. package/dist/a2a/clock.js.map +1 -0
  18. package/dist/a2a/negotiate.d.ts +6 -0
  19. package/dist/a2a/negotiate.js +10 -12
  20. package/dist/a2a/negotiate.js.map +1 -1
  21. package/dist/a2a/node.d.ts +23 -3
  22. package/dist/a2a/node.js +128 -18
  23. package/dist/a2a/node.js.map +1 -1
  24. package/dist/a2a/server/merchant-handler.d.ts +4 -0
  25. package/dist/a2a/server/merchant-handler.js +238 -25
  26. package/dist/a2a/server/merchant-handler.js.map +1 -1
  27. package/dist/a2a/server/pipeline.d.ts +17 -0
  28. package/dist/a2a/server/pipeline.js +89 -1
  29. package/dist/a2a/server/pipeline.js.map +1 -1
  30. package/dist/a2a/server/ucp.d.ts +30 -2
  31. package/dist/a2a/server/ucp.js +23 -14
  32. package/dist/a2a/server/ucp.js.map +1 -1
  33. package/dist/agent/agent-db.js +5 -0
  34. package/dist/agent/agent-db.js.map +1 -1
  35. package/dist/agent/buyer/buyer-tools.d.ts +5 -0
  36. package/dist/agent/buyer/buyer-tools.js +8 -1
  37. package/dist/agent/buyer/buyer-tools.js.map +1 -1
  38. package/dist/agent/buyer/types.d.ts +0 -25
  39. package/dist/agent/buyer/types.js.map +1 -1
  40. package/dist/agent/kernel-builder.d.ts +27 -0
  41. package/dist/agent/kernel-builder.js +180 -0
  42. package/dist/agent/kernel-builder.js.map +1 -0
  43. package/dist/agent/kernel.d.ts +6 -0
  44. package/dist/agent/kernel.js +95 -8
  45. package/dist/agent/kernel.js.map +1 -1
  46. package/dist/agent/memory/store.d.ts +5 -0
  47. package/dist/agent/memory/store.js +29 -1
  48. package/dist/agent/memory/store.js.map +1 -1
  49. package/dist/agent/merchant/action-candidate.js +15 -1
  50. package/dist/agent/merchant/action-candidate.js.map +1 -1
  51. package/dist/agent/merchant/merchant-client.js +22 -4
  52. package/dist/agent/merchant/merchant-client.js.map +1 -1
  53. package/dist/agent/merchant/types.d.ts +5 -2
  54. package/dist/agent/merchant/types.js +6 -2
  55. package/dist/agent/merchant/types.js.map +1 -1
  56. package/dist/agent/negotiation-chat.js +34 -14
  57. package/dist/agent/negotiation-chat.js.map +1 -1
  58. package/dist/cli.d.ts +56 -0
  59. package/dist/cli.js +141 -156
  60. package/dist/cli.js.map +1 -1
  61. package/dist/commerce/data-source.d.ts +7 -3
  62. package/dist/commerce/data-source.js.map +1 -1
  63. package/dist/commerce/http-client.js +35 -31
  64. package/dist/commerce/http-client.js.map +1 -1
  65. package/dist/commerce/shopping-cli-source.js +66 -48
  66. package/dist/commerce/shopping-cli-source.js.map +1 -1
  67. package/dist/config/profile.d.ts +7 -0
  68. package/dist/config/profile.js +23 -0
  69. package/dist/config/profile.js.map +1 -1
  70. package/dist/counterparty/a2a-direct/index.d.ts +5 -0
  71. package/dist/counterparty/a2a-direct/index.js +24 -0
  72. package/dist/counterparty/a2a-direct/index.js.map +1 -1
  73. package/dist/counterparty/shopping-cli-hosted/index.js +52 -19
  74. package/dist/counterparty/shopping-cli-hosted/index.js.map +1 -1
  75. package/dist/discovery/catalog-source/kiwi-record.d.ts +3 -0
  76. package/dist/discovery/catalog-source/kiwi-record.js.map +1 -1
  77. package/dist/discovery/catalog-source/kiwi-source.js +46 -36
  78. package/dist/discovery/catalog-source/kiwi-source.js.map +1 -1
  79. package/dist/discovery/catalog-source/register.d.ts +6 -0
  80. package/dist/discovery/catalog-source/register.js +27 -8
  81. package/dist/discovery/catalog-source/register.js.map +1 -1
  82. package/dist/discovery/catalog-source/source.js +39 -35
  83. package/dist/discovery/catalog-source/source.js.map +1 -1
  84. package/dist/discovery/resolve.d.ts +15 -0
  85. package/dist/discovery/resolve.js +59 -35
  86. package/dist/discovery/resolve.js.map +1 -1
  87. package/dist/discovery/ucp/index.d.ts +1 -1
  88. package/dist/discovery/ucp/index.js +1 -1
  89. package/dist/discovery/ucp/index.js.map +1 -1
  90. package/dist/discovery/ucp/resolver.d.ts +5 -0
  91. package/dist/discovery/ucp/resolver.js +65 -38
  92. package/dist/discovery/ucp/resolver.js.map +1 -1
  93. package/dist/discovery/ucp/vendor.d.ts +1 -1
  94. package/dist/discovery/ucp/vendor.js +1 -1
  95. package/dist/handoff/delivery.d.ts +4 -2
  96. package/dist/handoff/delivery.js +6 -1
  97. package/dist/handoff/delivery.js.map +1 -1
  98. package/dist/handoff/errors.d.ts +1 -1
  99. package/dist/handoff/errors.js +1 -0
  100. package/dist/handoff/errors.js.map +1 -1
  101. package/dist/handoff/idempotency.d.ts +10 -1
  102. package/dist/handoff/idempotency.js +13 -3
  103. package/dist/handoff/idempotency.js.map +1 -1
  104. package/dist/handoff/index.d.ts +1 -1
  105. package/dist/handoff/index.js +1 -1
  106. package/dist/handoff/index.js.map +1 -1
  107. package/dist/handoff/ledger.d.ts +9 -0
  108. package/dist/handoff/ledger.js +66 -0
  109. package/dist/handoff/ledger.js.map +1 -1
  110. package/dist/handoff/transaction.d.ts +21 -3
  111. package/dist/handoff/transaction.js +50 -11
  112. package/dist/handoff/transaction.js.map +1 -1
  113. package/dist/handoff/ucp-checkout/channel.js +15 -10
  114. package/dist/handoff/ucp-checkout/channel.js.map +1 -1
  115. package/dist/negotiation/jcs.js +11 -8
  116. package/dist/negotiation/jcs.js.map +1 -1
  117. package/dist/negotiation/lease/store.d.ts +25 -0
  118. package/dist/negotiation/lease/store.js +101 -0
  119. package/dist/negotiation/lease/store.js.map +1 -0
  120. package/dist/negotiation/recovery/recover.js +25 -1
  121. package/dist/negotiation/recovery/recover.js.map +1 -1
  122. package/dist/negotiation/state/phase.js +12 -4
  123. package/dist/negotiation/state/phase.js.map +1 -1
  124. package/dist/operator/runner.d.ts +11 -0
  125. package/dist/operator/runner.js +20 -1
  126. package/dist/operator/runner.js.map +1 -1
  127. package/dist/product-catalog.d.ts +43 -0
  128. package/dist/product-catalog.js +60 -0
  129. package/dist/product-catalog.js.map +1 -0
  130. package/dist/product-cli.d.ts +1 -1
  131. package/dist/product-cli.js +1 -1
  132. package/dist/product-publish.d.ts +15 -17
  133. package/dist/product-publish.js +279 -46
  134. package/dist/product-publish.js.map +1 -1
  135. package/dist/supervisor/stack-config.d.ts +6 -1
  136. package/dist/supervisor/stack-config.js +11 -3
  137. package/dist/supervisor/stack-config.js.map +1 -1
  138. package/dist/trust/identity/message-signature.js +17 -0
  139. package/dist/trust/identity/message-signature.js.map +1 -1
  140. package/dist/weixin/channel.d.ts +89 -0
  141. package/dist/weixin/channel.js +370 -0
  142. package/dist/weixin/channel.js.map +1 -0
  143. package/dist/weixin/cli-weixin.d.ts +29 -0
  144. package/dist/weixin/cli-weixin.js +130 -0
  145. package/dist/weixin/cli-weixin.js.map +1 -0
  146. package/dist/weixin/credentials.d.ts +33 -0
  147. package/dist/weixin/credentials.js +107 -0
  148. package/dist/weixin/credentials.js.map +1 -0
  149. package/dist/weixin/ilink-client.d.ts +44 -0
  150. package/dist/weixin/ilink-client.js +287 -0
  151. package/dist/weixin/ilink-client.js.map +1 -0
  152. package/dist/weixin/login.d.ts +37 -0
  153. package/dist/weixin/login.js +93 -0
  154. package/dist/weixin/login.js.map +1 -0
  155. package/dist/weixin/qr.d.ts +26 -0
  156. package/dist/weixin/qr.js +525 -0
  157. package/dist/weixin/qr.js.map +1 -0
  158. package/dist/weixin/types.d.ts +114 -0
  159. package/dist/weixin/types.js +48 -0
  160. package/dist/weixin/types.js.map +1 -0
  161. package/package.json +12 -2
  162. package/dist/commerce/erp-source.d.ts +0 -51
  163. package/dist/commerce/erp-source.js +0 -184
  164. package/dist/commerce/erp-source.js.map +0 -1
  165. package/dist/commerce/local-db-source.d.ts +0 -50
  166. package/dist/commerce/local-db-source.js +0 -162
  167. package/dist/commerce/local-db-source.js.map +0 -1
@@ -1,162 +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
- * LocalDatabaseCommerceDataSource —— 本地商品库(node:sqlite,
18
- * shopping-cli data hub v0.2.1 §4/#6「至少一种本地数据库源」)。
19
- *
20
- * 全部字段 LOCAL_AUTHORITATIVE(本地规则/录入即权威);存储惯例对齐
21
- * src/handoff/order-record.ts(目录 0700 / 文件 0600 / DatabaseSync)。
22
- * public-only:成本/底价等私有字段不在本表。
23
- */
24
- import { chmodSync, existsSync, mkdirSync } from "node:fs";
25
- import path from "node:path";
26
- import { DatabaseSync } from "node:sqlite";
27
- import { CommerceError, } from "./data-source.js";
28
- const PRODUCT_SCHEMA = `
29
- CREATE TABLE IF NOT EXISTS product_facts (
30
- sku TEXT PRIMARY KEY,
31
- title TEXT NOT NULL DEFAULT '',
32
- price_minor INTEGER NOT NULL,
33
- currency TEXT NOT NULL DEFAULT 'CNY',
34
- stock INTEGER,
35
- delivery_lead_days INTEGER,
36
- updated_at TEXT NOT NULL
37
- );
38
- CREATE INDEX IF NOT EXISTS idx_product_title ON product_facts(title);
39
- `;
40
- const CTOR = Symbol("local-db-source.ctor");
41
- /** LIKE 通配符转义(`%`/`_` 在用户输入里是字面量,不是通配符)。 */
42
- function escapeLike(value) {
43
- return value.replace(/[\\%_]/g, (ch) => `\\${ch}`);
44
- }
45
- /** 本地商品库 CommerceDataSource(LOCAL_AUTHORITATIVE)。 */
46
- export class LocalDatabaseCommerceDataSource {
47
- db;
48
- constructor(db, _token) {
49
- this.db = db;
50
- }
51
- async getProduct(sku) {
52
- if (typeof sku !== "string" || sku.length === 0) {
53
- throw new CommerceError("invalid_input", "sku must be a non-empty string");
54
- }
55
- const row = this.db
56
- .prepare("SELECT * FROM product_facts WHERE sku = ?")
57
- .get(sku);
58
- return row === undefined ? undefined : this.rowToFact(row);
59
- }
60
- async getProducts(query = {}) {
61
- const limit = Math.max(1, Math.min(Number(query.limit ?? 20) || 20, 100));
62
- const q = (query.q ?? "").trim();
63
- const rows = q
64
- ? this.db
65
- .prepare("SELECT * FROM product_facts WHERE sku LIKE ? ESCAPE '\\' OR title LIKE ? ESCAPE '\\' ORDER BY sku LIMIT ?")
66
- .all(`%${escapeLike(q)}%`, `%${escapeLike(q)}%`, limit)
67
- : this.db
68
- .prepare("SELECT * FROM product_facts ORDER BY sku LIMIT ?")
69
- .all(limit);
70
- return rows.map((r) => this.rowToFact(r));
71
- }
72
- async getInventory(sku) {
73
- const product = await this.getProduct(sku);
74
- if (product?.stock === undefined)
75
- return undefined;
76
- return {
77
- value: product.stock,
78
- authority: "LOCAL_AUTHORITATIVE",
79
- source: "local-db",
80
- };
81
- }
82
- async getPrice(sku) {
83
- const product = await this.getProduct(sku);
84
- if (product?.price_minor === undefined || product.currency === undefined)
85
- return undefined;
86
- return {
87
- value: { currency: product.currency, amount_minor: product.price_minor },
88
- authority: "LOCAL_AUTHORITATIVE",
89
- source: "local-db",
90
- };
91
- }
92
- async getPublicListing() {
93
- const rows = this.db
94
- .prepare("SELECT sku, title, price_minor, currency FROM product_facts ORDER BY sku LIMIT 500")
95
- .all();
96
- return { source: "local-db", count: rows.length, products: rows.map((r) => this.rowToFact(r)) };
97
- }
98
- async health() {
99
- try {
100
- this.db.prepare("SELECT COUNT(*) AS n FROM product_facts").get();
101
- return { ok: true, service: "local-db-commerce-data-source", version: "1" };
102
- }
103
- catch (err) {
104
- return {
105
- ok: false,
106
- service: "local-db-commerce-data-source",
107
- details: { error: err instanceof Error ? err.message : String(err) },
108
- };
109
- }
110
- }
111
- /** 写入商品事实(本地权威:录入即事实)。 */
112
- upsertProduct(input) {
113
- if (typeof input.sku !== "string" || input.sku.length === 0) {
114
- throw new CommerceError("invalid_input", "sku must be a non-empty string");
115
- }
116
- if (!Number.isInteger(input.price_minor) || input.price_minor < 0) {
117
- throw new CommerceError("invalid_input", "price_minor must be a non-negative integer");
118
- }
119
- const updatedAt = input.updated_at ?? new Date().toISOString();
120
- this.db
121
- .prepare(`INSERT INTO product_facts (sku, title, price_minor, currency, stock, delivery_lead_days, updated_at)
122
- VALUES (?, ?, ?, ?, ?, ?, ?)
123
- ON CONFLICT(sku) DO UPDATE SET
124
- title=excluded.title, price_minor=excluded.price_minor, currency=excluded.currency,
125
- stock=excluded.stock, delivery_lead_days=excluded.delivery_lead_days, updated_at=excluded.updated_at`)
126
- .run(input.sku, input.title ?? "", input.price_minor, input.currency ?? "CNY", input.stock ?? null, input.delivery_lead_days ?? null, updatedAt);
127
- const row = this.db.prepare("SELECT * FROM product_facts WHERE sku = ?").get(input.sku);
128
- if (row === undefined)
129
- throw new CommerceError("request_failed", "upsert did not persist");
130
- return this.rowToFact(row);
131
- }
132
- close() {
133
- this.db.close();
134
- }
135
- rowToFact(row) {
136
- return {
137
- sku: row.sku,
138
- ...(row.title !== "" ? { title: row.title } : {}),
139
- price_minor: row.price_minor,
140
- currency: row.currency,
141
- ...(row.stock !== null ? { stock: row.stock } : {}),
142
- ...(row.delivery_lead_days !== null ? { delivery_lead_days: row.delivery_lead_days } : {}),
143
- };
144
- }
145
- }
146
- /** 打开(必要时创建)本地商品库;目录 0700 / 文件 0600。 */
147
- export function openLocalDatabaseCommerceDataSource(options) {
148
- if (options.dbPath === ":memory:") {
149
- const db = new DatabaseSync(":memory:");
150
- db.exec(PRODUCT_SCHEMA);
151
- return new LocalDatabaseCommerceDataSource(db, CTOR);
152
- }
153
- const dir = path.dirname(options.dbPath);
154
- mkdirSync(dir, { recursive: true, mode: 0o700 });
155
- chmodSync(dir, 0o700);
156
- const db = new DatabaseSync(options.dbPath);
157
- if (existsSync(options.dbPath))
158
- chmodSync(options.dbPath, 0o600);
159
- db.exec(PRODUCT_SCHEMA);
160
- return new LocalDatabaseCommerceDataSource(db, CTOR);
161
- }
162
- //# sourceMappingURL=local-db-source.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-db-source.js","sourceRoot":"","sources":["../../src/commerce/local-db-source.ts"],"names":[],"mappings":"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"}