@harrylabsj/kiwi 0.7.4 → 0.7.5
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/dist/a2a/client/client.d.ts +7 -2
- package/dist/a2a/client/client.js +34 -5
- package/dist/a2a/client/client.js.map +1 -1
- package/dist/a2a/client/jsonrpc.js +2 -1
- package/dist/a2a/client/jsonrpc.js.map +1 -1
- package/dist/a2a/client/parse.js +6 -2
- package/dist/a2a/client/parse.js.map +1 -1
- package/dist/a2a/client/types.d.ts +11 -0
- package/dist/a2a/client/url-policy.js +29 -0
- package/dist/a2a/client/url-policy.js.map +1 -1
- package/dist/a2a/node.d.ts +7 -0
- package/dist/a2a/node.js +32 -3
- package/dist/a2a/node.js.map +1 -1
- package/dist/a2a/server/card.d.ts +6 -0
- package/dist/a2a/server/card.js +42 -0
- package/dist/a2a/server/card.js.map +1 -1
- package/dist/a2a/server/errors.d.ts +12 -2
- package/dist/a2a/server/errors.js +13 -2
- package/dist/a2a/server/errors.js.map +1 -1
- package/dist/a2a/server/generic-responder.d.ts +48 -0
- package/dist/a2a/server/generic-responder.js +57 -0
- package/dist/a2a/server/generic-responder.js.map +1 -0
- package/dist/a2a/server/index.d.ts +2 -0
- package/dist/a2a/server/index.js +2 -0
- package/dist/a2a/server/index.js.map +1 -1
- package/dist/a2a/server/merchant-handler.d.ts +12 -1
- package/dist/a2a/server/merchant-handler.js +96 -22
- package/dist/a2a/server/merchant-handler.js.map +1 -1
- package/dist/a2a/server/pipeline.d.ts +28 -0
- package/dist/a2a/server/pipeline.js +66 -3
- package/dist/a2a/server/pipeline.js.map +1 -1
- package/dist/a2a/server/server.d.ts +12 -0
- package/dist/a2a/server/server.js +255 -11
- package/dist/a2a/server/server.js.map +1 -1
- package/dist/a2a/server/task-registry.d.ts +8 -0
- package/dist/a2a/server/task-registry.js +17 -0
- package/dist/a2a/server/task-registry.js.map +1 -1
- package/dist/a2a/server/throttle.d.ts +13 -0
- package/dist/a2a/server/throttle.js +41 -1
- package/dist/a2a/server/throttle.js.map +1 -1
- package/dist/a2a/server/types.d.ts +6 -0
- package/dist/a2a/v1/headers.d.ts +33 -0
- package/dist/a2a/v1/headers.js +56 -0
- package/dist/a2a/v1/headers.js.map +1 -0
- package/dist/a2a/v1/methods.d.ts +52 -0
- package/dist/a2a/v1/methods.js +75 -0
- package/dist/a2a/v1/methods.js.map +1 -0
- package/dist/a2a/v1/part.d.ts +48 -0
- package/dist/a2a/v1/part.js +63 -0
- package/dist/a2a/v1/part.js.map +1 -0
- package/dist/a2a/v1/types.d.ts +94 -0
- package/dist/a2a/v1/types.js +62 -0
- package/dist/a2a/v1/types.js.map +1 -0
- package/dist/agent/buyer/buyer-tools.js +92 -19
- package/dist/agent/buyer/buyer-tools.js.map +1 -1
- package/dist/agent/buyer/search-loop.js +17 -2
- package/dist/agent/buyer/search-loop.js.map +1 -1
- package/dist/agent/buyer/types.js +4 -1
- package/dist/agent/buyer/types.js.map +1 -1
- package/dist/agent/kernel.js +70 -25
- package/dist/agent/kernel.js.map +1 -1
- package/dist/agent/merchant/action-candidate.d.ts +10 -0
- package/dist/agent/merchant/action-candidate.js +36 -4
- package/dist/agent/merchant/action-candidate.js.map +1 -1
- package/dist/agent/merchant/merchant-client.d.ts +4 -1
- package/dist/agent/merchant/merchant-client.js +41 -29
- package/dist/agent/merchant/merchant-client.js.map +1 -1
- package/dist/agent/negotiation-chat.d.ts +11 -0
- package/dist/agent/negotiation-chat.js +15 -0
- package/dist/agent/negotiation-chat.js.map +1 -1
- package/dist/agent/system-prompt.js +1 -1
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/write-gate.d.ts +4 -0
- package/dist/agent/write-gate.js +9 -3
- package/dist/agent/write-gate.js.map +1 -1
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +51 -7
- package/dist/cli.js.map +1 -1
- package/dist/commerce/data-source.d.ts +11 -1
- package/dist/commerce/data-source.js.map +1 -1
- package/dist/commerce/shopping-cli-source.js +10 -0
- package/dist/commerce/shopping-cli-source.js.map +1 -1
- package/dist/config/profile.d.ts +2 -0
- package/dist/config/profile.js +21 -7
- package/dist/config/profile.js.map +1 -1
- package/dist/demo/demo-runner.d.ts +81 -0
- package/dist/demo/demo-runner.js +344 -0
- package/dist/demo/demo-runner.js.map +1 -0
- package/dist/discovery/agent-card/types.d.ts +3 -0
- package/dist/discovery/agent-card/validate.js +7 -0
- package/dist/discovery/agent-card/validate.js.map +1 -1
- package/dist/discovery/catalog-source/register.d.ts +5 -1
- package/dist/discovery/catalog-source/register.js +14 -3
- package/dist/discovery/catalog-source/register.js.map +1 -1
- package/dist/discovery/resolve.js +3 -0
- package/dist/discovery/resolve.js.map +1 -1
- package/dist/discovery/ucp/resolver.d.ts +2 -0
- package/dist/discovery/ucp/resolver.js +3 -1
- package/dist/discovery/ucp/resolver.js.map +1 -1
- package/dist/handoff/ledger.js +23 -5
- package/dist/handoff/ledger.js.map +1 -1
- package/dist/handoff/order-record.js +26 -4
- package/dist/handoff/order-record.js.map +1 -1
- package/dist/handoff/transaction.js +13 -3
- package/dist/handoff/transaction.js.map +1 -1
- package/dist/negotiation/lease/store.js +14 -4
- package/dist/negotiation/lease/store.js.map +1 -1
- package/dist/negotiation/state/phase.js +12 -0
- package/dist/negotiation/state/phase.js.map +1 -1
- package/dist/net/safe-http.js +9 -1
- package/dist/net/safe-http.js.map +1 -1
- package/dist/operator/controller.d.ts +3 -0
- package/dist/operator/controller.js +18 -5
- package/dist/operator/controller.js.map +1 -1
- package/dist/product-buyer.d.ts +5 -0
- package/dist/product-buyer.js +1 -1
- package/dist/product-buyer.js.map +1 -1
- package/dist/product-cli.d.ts +10 -3
- package/dist/product-cli.js +13 -5
- package/dist/product-cli.js.map +1 -1
- package/dist/product-init.d.ts +6 -0
- package/dist/product-init.js +1 -1
- package/dist/product-init.js.map +1 -1
- package/dist/supervisor/manage.d.ts +5 -1
- package/dist/supervisor/manage.js +100 -9
- package/dist/supervisor/manage.js.map +1 -1
- package/dist/trust/identity/auth-verifier.d.ts +8 -0
- package/dist/trust/identity/auth-verifier.js +14 -0
- package/dist/trust/identity/auth-verifier.js.map +1 -1
- package/dist/weixin/credentials.js +15 -4
- package/dist/weixin/credentials.js.map +1 -1
- package/dist/weixin/ilink-client.d.ts +9 -0
- package/dist/weixin/ilink-client.js +46 -0
- package/dist/weixin/ilink-client.js.map +1 -1
- package/dist/weixin/login.js +5 -2
- package/dist/weixin/login.js.map +1 -1
- package/examples/profiles/merchant.deepseek.yaml +1 -0
- package/examples/profiles/merchant.fake.yaml +1 -0
- package/examples/profiles/merchant.local.yaml +1 -0
- package/package.json +8 -3
|
@@ -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
|
+
/** 通用响应器产出的任务形状(legacy 内部状态名)。 */
|
|
17
|
+
export interface GenericResponderTask {
|
|
18
|
+
state: "working" | "completed" | "input-required";
|
|
19
|
+
contextId?: string;
|
|
20
|
+
artifacts?: Array<{
|
|
21
|
+
artifactId: string;
|
|
22
|
+
parts: unknown[];
|
|
23
|
+
}>;
|
|
24
|
+
/** 任务状态里的回显消息(1.0 wire:ROLE_AGENT + 统一 Part)。 */
|
|
25
|
+
statusMessage?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
/** 通用消息响应:二选一——返回 Task 或直接返回 Message。 */
|
|
28
|
+
export interface GenericMessageResponse {
|
|
29
|
+
task?: GenericResponderTask;
|
|
30
|
+
message?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface GenericResponderInput {
|
|
33
|
+
/** 原始 1.0 消息(parts 为统一 Part wire 形状)。 */
|
|
34
|
+
message: Record<string, unknown>;
|
|
35
|
+
/** server 为本消息生成的任务 id。 */
|
|
36
|
+
taskId: string;
|
|
37
|
+
/** server 生成(或消息自带)的 contextId。 */
|
|
38
|
+
contextId: string;
|
|
39
|
+
now: () => string;
|
|
40
|
+
}
|
|
41
|
+
export type GenericMessageResponder = (input: GenericResponderInput) => GenericMessageResponse;
|
|
42
|
+
/** 生成新的 contextId(A2A 不透明字符串,ctx_<uuidv7>)。 */
|
|
43
|
+
export declare function newGenericContextId(): string;
|
|
44
|
+
/**
|
|
45
|
+
* 默认响应器:spec 一致的回显。完成任务,把输入 parts 原样作为 text artifact
|
|
46
|
+
* 回显(空 parts 则无 artifact),statusMessage 带 ROLE_AGENT 回显。
|
|
47
|
+
*/
|
|
48
|
+
export declare const defaultGenericResponder: GenericMessageResponder;
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
* 通用 A2A 消息响应器(issue 10 / TCK)。
|
|
18
|
+
*
|
|
19
|
+
* 处理不带 KNP envelope 的普通 A2A 1.0 消息(SendMessage):无磋商管线语义,
|
|
20
|
+
* 按官方参考实现契约响应。响应器可注入——产品缺省是 spec 一致的回显
|
|
21
|
+
* (完成任务 + 回显 parts 为 artifact + 生成 contextId);TCK 参考场景
|
|
22
|
+
* (messageId 前缀路由:complete-task / input-required / artifact-* /
|
|
23
|
+
* message-response)由 conformance 层注入,不进入产品默认路径。
|
|
24
|
+
*
|
|
25
|
+
* 不变量:本模块只产出 1.0 wire 形状(ROLE_AGENT + 统一 Part),不做 0.3
|
|
26
|
+
* 建模;状态用 legacy 内部名(completed / input-required),由 server 的
|
|
27
|
+
* upperTaskState 上抛为 TASK_STATE_*。
|
|
28
|
+
*/
|
|
29
|
+
import { uuidv7 } from "../../negotiation/domain/identifiers.js";
|
|
30
|
+
import { newArtifactId } from "./task-registry.js";
|
|
31
|
+
/** 生成新的 contextId(A2A 不透明字符串,ctx_<uuidv7>)。 */
|
|
32
|
+
export function newGenericContextId() {
|
|
33
|
+
return `ctx_${uuidv7()}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 默认响应器:spec 一致的回显。完成任务,把输入 parts 原样作为 text artifact
|
|
37
|
+
* 回显(空 parts 则无 artifact),statusMessage 带 ROLE_AGENT 回显。
|
|
38
|
+
*/
|
|
39
|
+
export const defaultGenericResponder = (input) => {
|
|
40
|
+
const parts = Array.isArray(input.message.parts) ? input.message.parts : [];
|
|
41
|
+
const statusMessage = {
|
|
42
|
+
role: "ROLE_AGENT",
|
|
43
|
+
parts,
|
|
44
|
+
messageId: `msg_${uuidv7()}`,
|
|
45
|
+
};
|
|
46
|
+
return {
|
|
47
|
+
task: {
|
|
48
|
+
state: "completed",
|
|
49
|
+
contextId: input.contextId,
|
|
50
|
+
artifacts: parts.length > 0
|
|
51
|
+
? [{ artifactId: newArtifactId(), parts }]
|
|
52
|
+
: undefined,
|
|
53
|
+
statusMessage,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=generic-responder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-responder.js","sourceRoot":"","sources":["../../../src/a2a/server/generic-responder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA6BnD,+CAA+C;AAC/C,MAAM,UAAU,mBAAmB;IACjC,OAAO,OAAO,MAAM,EAAE,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA4B,CAAC,KAAK,EAA0B,EAAE;IAChG,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,OAAO,CAAC,KAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,MAAM,aAAa,GAA4B;QAC7C,IAAI,EAAE,YAAY;QAClB,KAAK;QACL,SAAS,EAAE,OAAO,MAAM,EAAE,EAAE;KAC7B,CAAC;IACF,OAAO;QACL,IAAI,EAAE;YACJ,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EACP,KAAK,CAAC,MAAM,GAAG,CAAC;gBACd,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC;gBAC1C,CAAC,CAAC,SAAS;YACf,aAAa;SACd;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -41,3 +41,5 @@ export { JSONRPC_CODES, ServerProtocolError, authError, fromNegotiationError, in
|
|
|
41
41
|
export type { JsonRpcErrorBody } from "./errors.js";
|
|
42
42
|
export { extractKnpEnvelope, KNP_ENVELOPE_DATA_KEY, parseInboundMessage, } from "./inbound-message.js";
|
|
43
43
|
export type { A2AServerOptions, AgentCardConfig, AgentCardConfigProvider, AuthContext, AuthResult, AuthVerifier, InboundNegotiationContext, NegotiationHandler, NegotiationHandlerResult, } from "./types.js";
|
|
44
|
+
export { defaultGenericResponder, newGenericContextId } from "./generic-responder.js";
|
|
45
|
+
export type { GenericMessageResponder, GenericMessageResponse, GenericResponderInput, GenericResponderTask, } from "./generic-responder.js";
|
package/dist/a2a/server/index.js
CHANGED
|
@@ -39,4 +39,6 @@ export { InboundPipeline } from "./pipeline.js";
|
|
|
39
39
|
export { TaskRegistry, isKnownTaskState, newArtifactId, newTaskId } from "./task-registry.js";
|
|
40
40
|
export { JSONRPC_CODES, ServerProtocolError, authError, fromNegotiationError, internalServerError, payloadTooLarge, protocolCodeOf, protocolError, rateLimited, schemaInvalid, taskNotFound, } from "./errors.js";
|
|
41
41
|
export { extractKnpEnvelope, KNP_ENVELOPE_DATA_KEY, parseInboundMessage, } from "./inbound-message.js";
|
|
42
|
+
// issue 10:通用(非 KNP)A2A 消息响应器——conformance SUT 注入 TCK 参考场景。
|
|
43
|
+
export { defaultGenericResponder, newGenericContextId } from "./generic-responder.js";
|
|
42
44
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/a2a/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AASvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,gEAAgE;AAChE,+CAA+C;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/a2a/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AASvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,gEAAgE;AAChE,+CAA+C;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAY9B,4DAA4D;AAC5D,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -34,6 +34,13 @@ export declare const MERCHANT_OFFER_PRICE_MINOR = 85000;
|
|
|
34
34
|
export declare const MERCHANT_DEAL_PRICE_MINOR = 83500;
|
|
35
35
|
export declare const MERCHANT_QUANTITY = 200;
|
|
36
36
|
export declare const MERCHANT_DELIVERY_BEFORE = "2026-08-20T18:00:00Z";
|
|
37
|
+
/**
|
|
38
|
+
* 整数 minor 折扣价(round-half-up)。审查 K-M14:Math.round 在浮点中间值上
|
|
39
|
+
* 取整可能亚分漂移(1999×0.95=1899.05 在二进制浮点里或为 1899.0499…/
|
|
40
|
+
* 1899.0500…1)——整数分子运算无浮点,金额恒为整数分。取整语义与 Math.round
|
|
41
|
+
* 一致(half-up);要求整数百分比(dealDiscountPercent 缺省 5)。
|
|
42
|
+
*/
|
|
43
|
+
export declare function applyDiscountPercentMinor(priceMinor: number, discountPercent: number): number;
|
|
37
44
|
export interface MerchantHandlerOptions {
|
|
38
45
|
ledger: LedgerStore;
|
|
39
46
|
now: () => string;
|
|
@@ -43,6 +50,9 @@ export interface MerchantHandlerOptions {
|
|
|
43
50
|
offerPriceMinor?: number;
|
|
44
51
|
/** 真实商品源(接 shopping-cli /products/{sku} 等开放商品层);缺省用内置演示价。 */
|
|
45
52
|
productSource?: MerchantProductSource;
|
|
53
|
+
/** 商品源故障时是否回退内置演示价(fail-open);缺省 false = fail-closed
|
|
54
|
+
* (decline temporarily_unavailable)。仅本地 demo/测试形态显式开启。 */
|
|
55
|
+
allowDemoPriceFallback?: boolean;
|
|
46
56
|
/** 条件成交折扣百分比(deal = base × (1 - pct/100));缺省 5。 */
|
|
47
57
|
dealDiscountPercent?: number;
|
|
48
58
|
}
|
|
@@ -63,7 +73,8 @@ export interface MerchantProductSource {
|
|
|
63
73
|
/**
|
|
64
74
|
* 把 CommerceDataSource(v0.7.0 数据侧边界)适配成 MerchantProductSource。
|
|
65
75
|
* price_minor(分)→ 元(major)转换在此完成,与接口"元"单位约定一致;
|
|
66
|
-
* 未知 SKU → 抛错(resolveProduct
|
|
76
|
+
* 未知 SKU → 抛错(resolveProduct 默认 fail-closed decline,仅显式开启
|
|
77
|
+
* allowDemoPriceFallback 时才回退演示价)。
|
|
67
78
|
*/
|
|
68
79
|
export declare function dataSourceProductSource(dataSource: CommerceDataSource): MerchantProductSource;
|
|
69
80
|
/** offer 有效期(审查 P3:此前 valid_until 硬编码 2099——§11 "Offer with
|
|
@@ -27,10 +27,21 @@ export const MERCHANT_OFFER_PRICE_MINOR = 85_000; // CNY 850.00
|
|
|
27
27
|
export const MERCHANT_DEAL_PRICE_MINOR = 83_500; // CNY 835.00
|
|
28
28
|
export const MERCHANT_QUANTITY = 200;
|
|
29
29
|
export const MERCHANT_DELIVERY_BEFORE = "2026-08-20T18:00:00Z";
|
|
30
|
+
/**
|
|
31
|
+
* 整数 minor 折扣价(round-half-up)。审查 K-M14:Math.round 在浮点中间值上
|
|
32
|
+
* 取整可能亚分漂移(1999×0.95=1899.05 在二进制浮点里或为 1899.0499…/
|
|
33
|
+
* 1899.0500…1)——整数分子运算无浮点,金额恒为整数分。取整语义与 Math.round
|
|
34
|
+
* 一致(half-up);要求整数百分比(dealDiscountPercent 缺省 5)。
|
|
35
|
+
*/
|
|
36
|
+
export function applyDiscountPercentMinor(priceMinor, discountPercent) {
|
|
37
|
+
const numerator = 100 - discountPercent;
|
|
38
|
+
return Math.floor((priceMinor * numerator + 50) / 100);
|
|
39
|
+
}
|
|
30
40
|
/**
|
|
31
41
|
* 把 CommerceDataSource(v0.7.0 数据侧边界)适配成 MerchantProductSource。
|
|
32
42
|
* price_minor(分)→ 元(major)转换在此完成,与接口"元"单位约定一致;
|
|
33
|
-
* 未知 SKU → 抛错(resolveProduct
|
|
43
|
+
* 未知 SKU → 抛错(resolveProduct 默认 fail-closed decline,仅显式开启
|
|
44
|
+
* allowDemoPriceFallback 时才回退演示价)。
|
|
34
45
|
*/
|
|
35
46
|
export function dataSourceProductSource(dataSource) {
|
|
36
47
|
return {
|
|
@@ -44,6 +55,11 @@ export function dataSourceProductSource(dataSource) {
|
|
|
44
55
|
currency: fact.currency,
|
|
45
56
|
...(fact.title !== undefined ? { title: fact.title } : {}),
|
|
46
57
|
...(fact.stock !== undefined ? { stock: fact.stock } : {}),
|
|
58
|
+
// 审查 X-M1:handoff 成交入口必须随真实商品源到达 offer terms——
|
|
59
|
+
// 此前 dataSourceProductSource 丢弃该字段,KTH 目的地静默丢失。
|
|
60
|
+
...(fact.handoff_destination !== undefined
|
|
61
|
+
? { handoff_destination: fact.handoff_destination }
|
|
62
|
+
: {}),
|
|
47
63
|
};
|
|
48
64
|
},
|
|
49
65
|
};
|
|
@@ -106,6 +122,14 @@ const textReply = (text, taskState = "working") => ({
|
|
|
106
122
|
messageId: newMessageId(),
|
|
107
123
|
},
|
|
108
124
|
});
|
|
125
|
+
/** 商品源不可用(源宕机/未知 SKU/价格 lossy)且未开 demo 回退时抛出。
|
|
126
|
+
* handle 层捕获后 decline(temporarily_unavailable),而非报演示价。 */
|
|
127
|
+
class ProductSourceUnavailableError extends Error {
|
|
128
|
+
constructor(sku, cause) {
|
|
129
|
+
super(`商品源不可用(${sku}):${cause instanceof Error ? cause.message : String(cause ?? "")}`.trim());
|
|
130
|
+
this.name = "ProductSourceUnavailableError";
|
|
131
|
+
}
|
|
132
|
+
}
|
|
109
133
|
/** 商业拒绝(offer 未知/已关闭/terms_digest 不匹配/终态重开)。
|
|
110
134
|
* decline 消息由 pipeline 按 reason_code 自动构造。 */
|
|
111
135
|
const declineReply = (reasonCode = "state_conflict") => ({
|
|
@@ -126,6 +150,7 @@ const envelopeReply = (reply) => ({
|
|
|
126
150
|
export function createMerchantHandler(options) {
|
|
127
151
|
const { ledger, now, sender, counterparty } = options;
|
|
128
152
|
const offerPriceMinor = options.offerPriceMinor ?? MERCHANT_OFFER_PRICE_MINOR;
|
|
153
|
+
const allowDemoPriceFallback = options.allowDemoPriceFallback ?? false;
|
|
129
154
|
const conditionalByNegotiation = new Map();
|
|
130
155
|
// 审查 P2-D:终态(AGREEMENT_REACHED / WITHDRAWN / DECLINED / CANCELLED)
|
|
131
156
|
// 不得以同一 negotiation_id 重开(§17.4/§21.2)——运行时此前无任何终态
|
|
@@ -248,7 +273,13 @@ export function createMerchantHandler(options) {
|
|
|
248
273
|
priceBySku.set(sku, resolved);
|
|
249
274
|
return resolved;
|
|
250
275
|
}
|
|
251
|
-
catch {
|
|
276
|
+
catch (err) {
|
|
277
|
+
// 审查 K-H3:商品源故障(宕机/未知 SKU/价格 lossy)回退演示价是
|
|
278
|
+
// fail-open——真实报价路径上买家可能据此达成错误共识。仅当显式开
|
|
279
|
+
// 启 demo 回退时才兜底,否则抛错让 handle 层 decline(fail-closed)。
|
|
280
|
+
if (!allowDemoPriceFallback) {
|
|
281
|
+
throw new ProductSourceUnavailableError(sku, err);
|
|
282
|
+
}
|
|
252
283
|
// 失败回退**不写缓存**:一次性故障(超时/重启)不得让该 SKU 从此
|
|
253
284
|
// 永久按演示价报价(长驻进程里源恢复后价格仍错)。下一轮重试真实源。
|
|
254
285
|
return {
|
|
@@ -260,6 +291,18 @@ export function createMerchantHandler(options) {
|
|
|
260
291
|
}
|
|
261
292
|
return { priceMinor: offerPriceMinor, currency: MERCHANT_CURRENCY };
|
|
262
293
|
};
|
|
294
|
+
/** resolveProduct 的 fail-closed 包装:商品源不可用且未开 demo 回退时返回
|
|
295
|
+
* null(调用方 decline temporarily_unavailable),否则返回解析结果。 */
|
|
296
|
+
const resolveProductOrDecline = async (sku) => {
|
|
297
|
+
try {
|
|
298
|
+
return await resolveProduct(sku);
|
|
299
|
+
}
|
|
300
|
+
catch (err) {
|
|
301
|
+
if (err instanceof ProductSourceUnavailableError)
|
|
302
|
+
return null;
|
|
303
|
+
throw err;
|
|
304
|
+
}
|
|
305
|
+
};
|
|
263
306
|
const appendSent = async (reply) => {
|
|
264
307
|
await ledger.append({
|
|
265
308
|
event_kind: "message_sent",
|
|
@@ -287,12 +330,42 @@ export function createMerchantHandler(options) {
|
|
|
287
330
|
// conditionalByNegotiation / closedNegotiations / phaseStateByNegotiation 纯内存,
|
|
288
331
|
// 重启全丢:已终态 negotiation 可重新打开、已发 offer 返回 offer_unknown)。
|
|
289
332
|
for (const negotiationId of ledger.listNegotiations()) {
|
|
333
|
+
// 审查 K-M12:单次读链 + 单趟合并扫描——phase / resume_phase /
|
|
334
|
+
// active_offer_id / last conditional_offer 一次算出。此前按 phase 与
|
|
335
|
+
// conditional 分两趟遍历每条链,长驻 merchant 启动时间随磋商数线性放大
|
|
336
|
+
// (O(total events) 的全量恢复是正确性必需,这里只减掉冗余遍历)。
|
|
290
337
|
const events = ledger.events(negotiationId);
|
|
291
338
|
let phase = "OPEN";
|
|
339
|
+
// 审查 K-M15:恢复完整相位状态——AWAITING_CLARIFICATION 的 resume_phase
|
|
340
|
+
// 由「进入它的转换的 from_phase」推导(进入只能是 OPEN/OFFER_OPEN);
|
|
341
|
+
// active_offer_id 由链上最后一条 offer 类出站消息推导。此前只恢复 phase,
|
|
342
|
+
// resume_phase/active_offer_id 全丢:崩溃后停在 AWAITING_CLARIFICATION、
|
|
343
|
+
// buyer 重试澄清被 state_conflict 永久卡死。
|
|
344
|
+
let lastTransitionFrom;
|
|
345
|
+
let activeOfferId;
|
|
346
|
+
let lastConditional;
|
|
292
347
|
for (const event of events) {
|
|
293
348
|
if (event.state_transition?.to_phase !== undefined) {
|
|
349
|
+
lastTransitionFrom = event.state_transition.from_phase;
|
|
294
350
|
phase = event.state_transition.to_phase;
|
|
295
351
|
}
|
|
352
|
+
if (event.event_kind !== "message_sent")
|
|
353
|
+
continue;
|
|
354
|
+
const envelope = event.wire_payload;
|
|
355
|
+
if (envelope?.action === "offer" || envelope?.action === "counter_offer" || envelope?.action === "conditional_offer") {
|
|
356
|
+
const offerId = envelope.payload?.offer_id;
|
|
357
|
+
if (typeof offerId === "string" && offerId !== "")
|
|
358
|
+
activeOfferId = offerId;
|
|
359
|
+
}
|
|
360
|
+
if (envelope?.action === "conditional_offer") {
|
|
361
|
+
const payload = envelope.payload;
|
|
362
|
+
if (payload?.offer_id !== undefined) {
|
|
363
|
+
lastConditional = {
|
|
364
|
+
conditional: envelope.payload,
|
|
365
|
+
quantity: payload.base_terms?.items?.[0]?.quantity?.value ?? MERCHANT_QUANTITY,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
}
|
|
296
369
|
}
|
|
297
370
|
// 审查 P1-07(跨重启残留,独立验收发现):终态相位同样必须恢复——相位
|
|
298
371
|
// 取自链上 state_transition 事实(非臆造)。否则 cancel/withdraw/decline
|
|
@@ -302,27 +375,19 @@ export function createMerchantHandler(options) {
|
|
|
302
375
|
phaseStateByNegotiation.set(negotiationId, {
|
|
303
376
|
negotiation_id: negotiationId,
|
|
304
377
|
phase,
|
|
378
|
+
...(phase === "AWAITING_CLARIFICATION" && lastTransitionFrom !== undefined
|
|
379
|
+
? {
|
|
380
|
+
resume_phase: lastTransitionFrom === "OFFER_OPEN" ? "OFFER_OPEN" : "OPEN",
|
|
381
|
+
...(activeOfferId !== undefined ? { active_offer_id: activeOfferId } : {}),
|
|
382
|
+
}
|
|
383
|
+
: phase === "OFFER_OPEN" && activeOfferId !== undefined
|
|
384
|
+
? { active_offer_id: activeOfferId }
|
|
385
|
+
: {}),
|
|
305
386
|
});
|
|
306
387
|
if (isTerminalPhase(phase)) {
|
|
307
388
|
closedNegotiations.add(negotiationId);
|
|
308
389
|
continue; // 终态后 conditional 已删除,不恢复
|
|
309
390
|
}
|
|
310
|
-
// 恢复最后发出的 conditional_offer(message_sent 事件携带完整 envelope)
|
|
311
|
-
let lastConditional;
|
|
312
|
-
for (const event of events) {
|
|
313
|
-
if (event.event_kind !== "message_sent")
|
|
314
|
-
continue;
|
|
315
|
-
const envelope = event.wire_payload;
|
|
316
|
-
if (envelope?.action !== "conditional_offer")
|
|
317
|
-
continue;
|
|
318
|
-
const payload = envelope.payload;
|
|
319
|
-
if (payload?.offer_id === undefined)
|
|
320
|
-
continue;
|
|
321
|
-
lastConditional = {
|
|
322
|
-
conditional: envelope.payload,
|
|
323
|
-
quantity: payload.base_terms?.items?.[0]?.quantity?.value ?? MERCHANT_QUANTITY,
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
391
|
if (lastConditional !== undefined) {
|
|
327
392
|
conditionalByNegotiation.set(negotiationId, lastConditional);
|
|
328
393
|
}
|
|
@@ -359,7 +424,10 @@ export function createMerchantHandler(options) {
|
|
|
359
424
|
const payload = envelope.payload;
|
|
360
425
|
const sku = payload.items?.[0]?.sku ?? MERCHANT_SKU;
|
|
361
426
|
const quantity = payload.items?.[0]?.quantity?.value ?? MERCHANT_QUANTITY;
|
|
362
|
-
const
|
|
427
|
+
const product = await resolveProductOrDecline(sku);
|
|
428
|
+
if (product === null)
|
|
429
|
+
return declineReply("temporarily_unavailable");
|
|
430
|
+
const { priceMinor, currency, note, handoff_destination } = product;
|
|
363
431
|
const reply = seedEnvelope({
|
|
364
432
|
negotiation_id: negotiationId,
|
|
365
433
|
in_reply_to: inReplyTo,
|
|
@@ -387,7 +455,10 @@ export function createMerchantHandler(options) {
|
|
|
387
455
|
const buyerOffer = envelope.payload;
|
|
388
456
|
const sku = buyerOffer.terms?.items?.[0]?.sku ?? MERCHANT_SKU;
|
|
389
457
|
const quantity = buyerOffer.terms?.items?.[0]?.quantity?.value ?? MERCHANT_QUANTITY;
|
|
390
|
-
const
|
|
458
|
+
const product = await resolveProductOrDecline(sku);
|
|
459
|
+
if (product === null)
|
|
460
|
+
return declineReply("temporarily_unavailable");
|
|
461
|
+
const { priceMinor, currency, note, handoff_destination } = product;
|
|
391
462
|
const reply = seedEnvelope({
|
|
392
463
|
negotiation_id: negotiationId,
|
|
393
464
|
in_reply_to: inReplyTo,
|
|
@@ -413,10 +484,13 @@ export function createMerchantHandler(options) {
|
|
|
413
484
|
const counter = envelope.payload;
|
|
414
485
|
const sku = counter.proposed_terms?.items?.[0]?.sku ?? MERCHANT_SKU;
|
|
415
486
|
const quantity = counter.proposed_terms?.items?.[0]?.quantity?.value ?? MERCHANT_QUANTITY;
|
|
416
|
-
const
|
|
487
|
+
const product = await resolveProductOrDecline(sku);
|
|
488
|
+
if (product === null)
|
|
489
|
+
return declineReply("temporarily_unavailable");
|
|
490
|
+
const { priceMinor, currency, note, handoff_destination } = product;
|
|
417
491
|
// 条件成交价 = base × (1 - 折扣%):批量确实更便宜。
|
|
418
492
|
const discountPercent = options.dealDiscountPercent ?? 5;
|
|
419
|
-
const dealPriceMinor =
|
|
493
|
+
const dealPriceMinor = applyDiscountPercentMinor(priceMinor, discountPercent);
|
|
420
494
|
const reply = seedEnvelope({
|
|
421
495
|
negotiation_id: negotiationId,
|
|
422
496
|
in_reply_to: inReplyTo,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merchant-handler.js","sourceRoot":"","sources":["../../../src/a2a/server/merchant-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"merchant-handler.js","sourceRoot":"","sources":["../../../src/a2a/server/merchant-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,UAAU,GACX,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3G,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,eAAe,GAIhB,MAAM,kCAAkC,CAAC;AAS1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,0CAA0C,CAAC;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,CAAC,aAAa;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,CAAC,aAAa;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAAkB,EAAE,eAAuB;IACnF,MAAM,SAAS,GAAG,GAAG,GAAG,eAAe,CAAC;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;AACzD,CAAC;AA6BD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAA8B;IAE9B,OAAO;QACL,KAAK,CAAC,UAAU,CAAC,GAAW;YAC1B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACxF,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,GAAG;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,+CAA+C;gBAC/C,gDAAgD;gBAChD,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE;oBACnD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAQD,SAAS,YAAY,CAAC,IAAkB;IACtC,OAAO,gBAAgB,CAAC;QACtB,UAAU,EAAE,mBAAmB;QAC/B,gBAAgB,EAAE,KAAK;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,aAAa,EAAE;QAChD,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE;QAC7C,GAAG,IAAI;KACR,CAAC,CAAC;AACL,CAAC;AAED;;qDAEqD;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErD,SAAS,UAAU,CACjB,IAA6G,EAC7G,GAAW;IAEX,OAAO;QACL,KAAK,EAAE;YACL;gBACE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,YAAY;gBAC7B,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;gBACjD,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,iBAAiB,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE;aAC5F;SACF;QACD,iBAAiB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE;QAChE,sDAAsD;QACtD,kBAAkB;QAClB,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE;YACnD,CAAC,CAAC,EAAE,CAAC;QACP,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,WAAW,EAAE;KACzE,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAKvB;IACC,OAAO;QACL,IAAI,EAAE,+BAA+B;QACrC,YAAY,EAAE,cAAc,EAAE;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,YAAqB,CAAC;QACxD,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,YAAY;QAC5B,aAAa,EAAE,KAAK;QACpB,kBAAkB,EAAE,KAAK;QACzB,kBAAkB,EAAE,KAAK;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,YAAqC,SAAS,EAA4B,EAAE,CAAC,CAAC;IAC7G,IAAI,EAAE,UAAU;IAChB,SAAS;IACT,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/B,sDAAsD;QACtD,+BAA+B;QAC/B,SAAS,EAAE,YAAY,EAAE;KAC1B;CACF,CAAC,CAAC;AAEH;2DAC2D;AAC3D,MAAM,6BAA8B,SAAQ,KAAK;IAC/C,YAAY,GAAW,EAAE,KAAe;QACtC,KAAK,CACH,UAAU,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CACxF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED;8CAC8C;AAC9C,MAAM,YAAY,GAAG,CAAC,aAAgC,gBAAgB,EAA4B,EAAE,CAAC,CAAC;IACpG,IAAI,EAAE,UAAU;IAChB,UAAU;IACV,SAAS,EAAE,WAAW;CACvB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,KAA0C,EAA4B,EAAE,CAAC,CAAC;IAC/F,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC;QACxD,SAAS,EAAE,KAAK,CAAC,UAAU;KAC5B;CACF,CAAC,CAAC;AAEH,iCAAiC;AACjC,MAAM,UAAU,qBAAqB,CACnC,OAA+B;IAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACtD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,0BAA0B,CAAC;IAC9E,MAAM,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC;IACvE,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAsE,CAAC;IAC/G,mEAAmE;IACnE,mDAAmD;IACnD,kDAAkD;IAClD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,yDAAyD;IACzD,wCAAwC;IACxC,kDAAkD;IAClD,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAiC,CAAC;IACzE,gDAAgD;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;QACjC,SAAS;QACT,KAAK;QACL,OAAO;QACP,eAAe;QACf,mBAAmB;QACnB,mBAAmB;KACpB,CAAC,CAAC;IAEH;;;;mBAIe;IACf,MAAM,YAAY,GAAG,KAAK,EACxB,aAAqB,EACrB,KAA4B,EACV,EAAE;QACpB,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAClG,IAAI,IAA2B,CAAC;QAChC,IAAI,CAAC;YACH,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,uBAAuB,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,gDAAgD;IAChD,MAAM,kBAAkB,GAAG,CACzB,QAA+C,EACZ,EAAE;QACrC,MAAM,OAAO,GAAG,MAAM,CAAE,QAAQ,CAAC,OAA8C,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QACjG,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,OAAO;gBACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC9C,KAAK,eAAe;gBAClB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YACtD,KAAK,mBAAmB;gBACtB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC1D,KAAK,eAAe;gBAClB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;YACnC,KAAK,wBAAwB;gBAC3B,0CAA0C;gBAC1C,6DAA6D;gBAC7D,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;YAC5C,KAAK,mBAAmB;gBACtB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC1D,KAAK,UAAU;gBACb,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAG,QAAQ,CAAC,OAA0C,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9I,KAAK,SAAS;gBACZ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAG,QAAQ,CAAC,OAA0C,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7I,KAAK,QAAQ;gBACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC5B;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF;;iCAE6B;IAC7B,MAAM,qBAAqB,GAAG,KAAK,EACjC,aAAqB,EACrB,OAAyB,EACzB,SAA4B,EACb,EAAE;QACjB,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,SAAS,IAAI,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;QAC5D,uBAAuB,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtH,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,UAAU,EAAE,kBAAkB;YAC9B,cAAc,EAAE,aAAa;YAC7B,gBAAgB,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE;YAClE,QAAQ,EAAE;gBACR,eAAe,EAAE,MAAM;gBACvB,qBAAqB,EAAE,YAAY;gBACnC,KAAK,EAAE,UAAU;aAClB;YACD,UAAU,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,KAAK,EAAE;YACxE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YACvB,WAAW,EAAE,GAAG,EAAE;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;IACF,0DAA0D;IAC1D,6CAA6C;IAC7C,cAAc;IACd,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgE,CAAC;IAE3F,2CAA2C;IAC3C,MAAM,cAAc,GAAG,KAAK,EAC1B,GAAW,EACqF,EAAE;QAClG,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,kBAAkB;gBAAE,OAAO,MAAM,CAAC;YACvE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB;QAC9C,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5D,0DAA0D;gBAC1D,0CAA0C;gBAC1C,gDAAgD;gBAChD,kCAAkC;gBAClC,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACzD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CACb,SAAS,OAAO,CAAC,KAAK,OAAO,iBAAiB,gBAAgB,CAC/D,CAAC;gBACJ,CAAC;gBACD,MAAM,QAAQ,GAAG;oBACf,UAAU,EAAE,SAAS,CAAC,YAAY;oBAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBACrB,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;wBAC3C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;wBACtD,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;gBACF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC9B,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,0CAA0C;gBAC1C,uCAAuC;gBACvC,qDAAqD;gBACrD,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC5B,MAAM,IAAI,6BAA6B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpD,CAAC;gBACD,uCAAuC;gBACvC,oCAAoC;gBACpC,OAAO;oBACL,UAAU,EAAE,eAAe;oBAC3B,QAAQ,EAAE,iBAAiB;oBAC3B,IAAI,EAAE,UAAU,GAAG,YAAY;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACtE,CAAC,CAAC;IAEF;8DAC0D;IAC1D,MAAM,uBAAuB,GAAG,KAAK,EACnC,GAAW,EAC4F,EAAE;QACzG,IAAI,CAAC;YACH,OAAO,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,6BAA6B;gBAAE,OAAO,IAAI,CAAC;YAC9D,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,EAAE,KAA0C,EAAiB,EAAE;QACrF,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,UAAU,EAAE,cAAc;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE;gBACR,eAAe,EAAE,MAAM;gBACvB,qBAAqB,EAAE,YAAY;gBACnC,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;YACD,UAAU,EAAE;gBACV,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;aACzC;YACD,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,YAAY,EAAE,KAA2C;YACzD,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YACvB,WAAW,EAAE,KAAK,CAAC,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,kDAAkD;IAClD,4CAA4C;IAC5C,+EAA+E;IAC/E,yDAAyD;IACzD,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACtD,iDAAiD;QACjD,4DAA4D;QAC5D,gDAAgD;QAChD,2CAA2C;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAqB,MAAM,CAAC;QACrC,2DAA2D;QAC3D,kDAAkD;QAClD,qDAAqD;QACrD,gEAAgE;QAChE,mCAAmC;QACnC,IAAI,kBAAgD,CAAC;QACrD,IAAI,aAAiC,CAAC;QACtC,IAAI,eAAuF,CAAC;QAC5F,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,gBAAgB,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnD,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBACvD,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC1C,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,KAAK,cAAc;gBAAE,SAAS;YAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,YAEV,CAAC;YACd,IAAI,QAAQ,EAAE,MAAM,KAAK,OAAO,IAAI,QAAQ,EAAE,MAAM,KAAK,eAAe,IAAI,QAAQ,EAAE,MAAM,KAAK,mBAAmB,EAAE,CAAC;gBACrH,MAAM,OAAO,GAAI,QAAQ,CAAC,OAA6C,EAAE,QAAQ,CAAC;gBAClF,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE;oBAAE,aAAa,GAAG,OAAO,CAAC;YAC7E,CAAC;YACD,IAAI,QAAQ,EAAE,MAAM,KAAK,mBAAmB,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAEZ,CAAC;gBACd,IAAI,OAAO,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACpC,eAAe,GAAG;wBAChB,WAAW,EAAE,QAAQ,CAAC,OAAkC;wBACxD,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,iBAAiB;qBAC/E,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,wCAAwC;QACxC,2DAA2D;QAC3D,wDAAwD;QACxD,iDAAiD;QACjD,mDAAmD;QACnD,uBAAuB,CAAC,GAAG,CAAC,aAAa,EAAE;YACzC,cAAc,EAAE,aAAa;YAC7B,KAAK;YACL,GAAG,CAAC,KAAK,KAAK,wBAAwB,IAAI,kBAAkB,KAAK,SAAS;gBACxE,CAAC,CAAC;oBACE,YAAY,EAAE,kBAAkB,KAAK,YAAY,CAAC,CAAC,CAAE,YAAsB,CAAC,CAAC,CAAE,MAAgB;oBAC/F,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3E;gBACH,CAAC,CAAC,KAAK,KAAK,YAAY,IAAI,aAAa,KAAK,SAAS;oBACrD,CAAC,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE;oBACpC,CAAC,CAAC,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACtC,SAAS,CAAC,0BAA0B;QACtC,CAAC;QACD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,wBAAwB,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,2BAA2B;QACjC,KAAK,CAAC,MAAM,CAAC,GAA8B;YACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC9B,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC;YAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC;YAEtC,kDAAkD;YAClD,IAAI,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrF,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;YACxC,CAAC;YAED,yCAAyC;YACzC,oDAAoD;YACpD,mDAAmD;YACnD,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,KAAK,mBAAmB,CAAC;YAC/D,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;gBAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAED,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACxB,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,oDAAoD;oBACpD,yDAAyD;oBACzD,qCAAqC;oBACrC,OAAO,SAAS,CACd,YAAY,YAAY,OAAO,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,mCAAmC,CAC1H,CAAC;gBACJ,CAAC;gBACD,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,OAAO,GAAG,QAAQ,CAAC,OAExB,CAAC;oBACF,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC;oBACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,iBAAiB,CAAC;oBAC1E,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAC;oBACnD,IAAI,OAAO,KAAK,IAAI;wBAAE,OAAO,YAAY,CAAC,yBAAyB,CAAC,CAAC;oBACrE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;oBACpE,MAAM,KAAK,GAAG,YAAY,CAAC;wBACzB,cAAc,EAAE,aAAa;wBAC7B,WAAW,EAAE,SAAS;wBACtB,KAAK,EAAE,UAAU;wBACjB,MAAM,EAAE,OAAO;wBACf,UAAU,EAAE,GAAG,EAAE;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,OAAO;4BACb,QAAQ,EAAE,UAAU,EAAE;4BACtB,KAAK,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC;yBACvF;wBACD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACxD,CAAC,CAAC;oBACH,gDAAgD;oBAChD,4CAA4C;oBAC5C,MAAM,YAAY,CAAC,aAAa,EAAE;wBAChC,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,MAAM,CAAE,KAAK,CAAC,OAAkC,CAAC,QAAQ,IAAI,EAAE,CAAC;qBAC3E,CAAC,CAAC;oBACH,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;oBACxB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,+CAA+C;oBAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAuG,CAAC;oBACpI,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC;oBAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,iBAAiB,CAAC;oBACpF,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAC;oBACnD,IAAI,OAAO,KAAK,IAAI;wBAAE,OAAO,YAAY,CAAC,yBAAyB,CAAC,CAAC;oBACrE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;oBACpE,MAAM,KAAK,GAAG,YAAY,CAAC;wBACzB,cAAc,EAAE,aAAa;wBAC7B,WAAW,EAAE,SAAS;wBACtB,KAAK,EAAE,UAAU;wBACjB,MAAM,EAAE,eAAe;wBACvB,UAAU,EAAE,GAAG,EAAE;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,eAAe;4BACrB,QAAQ,EAAE,UAAU,EAAE;4BACtB,sBAAsB,EAAE,UAAU,CAAC,QAAQ,IAAI,EAAE;4BACjD,cAAc,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC;yBAChG;wBACD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACxD,CAAC,CAAC;oBACH,MAAM,YAAY,CAAC,aAAa,EAAE;wBAChC,IAAI,EAAE,eAAe;wBACrB,QAAQ,EAAE,MAAM,CAAE,KAAK,CAAC,OAAkC,CAAC,QAAQ,IAAI,EAAE,CAAC;qBAC3E,CAAC,CAAC;oBACH,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;oBACxB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAGxB,CAAC;oBACF,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC;oBACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,iBAAiB,CAAC;oBAC1F,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAC;oBACnD,IAAI,OAAO,KAAK,IAAI;wBAAE,OAAO,YAAY,CAAC,yBAAyB,CAAC,CAAC;oBACrE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;oBACpE,oCAAoC;oBACpC,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC;oBACzD,MAAM,cAAc,GAAG,yBAAyB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;oBAC9E,MAAM,KAAK,GAAG,YAAY,CAAC;wBACzB,cAAc,EAAE,aAAa;wBAC7B,WAAW,EAAE,SAAS;wBACtB,KAAK,EAAE,UAAU;wBACjB,MAAM,EAAE,mBAAmB;wBAC3B,UAAU,EAAE,GAAG,EAAE;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,mBAAmB;4BACzB,QAAQ,EAAE,UAAU,EAAE;4BACtB,sBAAsB,EAAE,OAAO,CAAC,QAAQ;4BACxC,UAAU,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC;4BAC3F,UAAU,EAAE;gCACV;oCACE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;oCAC7E,UAAU,EAAE,UAAU,CACpB,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAC5E,GAAG,EAAE,CACN;iCACF;6BACF;yBACF;wBACD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACxD,CAAC,CAAC;oBACH,wBAAwB,CAAC,GAAG,CAAC,aAAa,EAAE;wBAC1C,WAAW,EAAE,KAAK,CAAC,OAA6C;wBAChE,QAAQ;qBACT,CAAC,CAAC;oBACH,MAAM,YAAY,CAAC,aAAa,EAAE;wBAChC,IAAI,EAAE,mBAAmB;wBACzB,QAAQ,EAAE,MAAM,CAAE,KAAK,CAAC,OAAkC,CAAC,QAAQ,IAAI,EAAE,CAAC;qBAC3E,CAAC,CAAC;oBACH,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;oBACxB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,SAAS,GAAI,QAAQ,CAAC,OAAgD,CAAC,SAAS,IAAI,EAAE,CAAC;oBAC7F,6CAA6C;oBAC7C,iDAAiD;oBACjD,gDAAgD;oBAChD,+CAA+C;oBAC/C,MAAM,KAAK,GAAG,YAAY,CAAC;wBACzB,cAAc,EAAE,aAAa;wBAC7B,WAAW,EAAE,SAAS;wBACtB,KAAK,EAAE,UAAU;wBACjB,MAAM,EAAE,wBAAwB;wBAChC,UAAU,EAAE,GAAG,EAAE;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,wBAAwB;4BAC9B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC7B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG;gCACrB,MAAM,EAAE,mBAAmB,wBAAwB,yCAAyC;6BAC7F,CAAC,CAAC;yBACJ;wBACD,cAAc,EAAE,mBAAmB,wBAAwB,0CAA0C;qBACtG,CAAC,CAAC;oBACH,sCAAsC;oBACtC,qDAAqD;oBACrD,iDAAiD;oBACjD,sDAAsD;oBACtD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;oBACvF,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBACxC,CAAC;oBACD,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;oBACxB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3D,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAuD,CAAC;oBACvF,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;oBACrD,mDAAmD;oBACnD,oDAAoD;oBACpD,6CAA6C;oBAC7C,qCAAqC;oBACrC,MAAM,aAAa,GAAI,MAAM,EAAE,WAAiD,EAAE,QAAQ,IAAI,EAAE,CAAC;oBACjG,MAAM,mBAAmB,GACvB,MAAM,KAAK,SAAS,IAAI,eAAe,KAAK,EAAE,IAAI,eAAe,KAAK,aAAa;wBACjF,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,SAAS,CAAC;oBAChB,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;wBACtC,OAAO,YAAY,CAAC,eAAe,CAAC,CAAC;oBACvC,CAAC;oBACD,sDAAsD;oBACtD,qDAAqD;oBACrD,qBAAqB;oBACrB,MAAM,WAAW,GAAG,wBAAwB,CAAC,mBAAmB,CAAC,WAAoB,EAAE;wBACrF,0BAA0B,EAAE,mBAAmB,CAAC,QAAQ;qBACzD,CAAC,CAAC;oBACH,+CAA+C;oBAC/C,0CAA0C;oBAC1C,MAAM,UAAU,GAAI,WAAoD,EAAE,WAAW,CAAC;oBACtF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;wBAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,GAAG,KAAK,EAAE,CAAC;4BACtF,OAAO,YAAY,CAAC,eAAe,CAAC,CAAC;wBACvC,CAAC;oBACH,CAAC;oBACD,MAAM,eAAe,GAAG,aAAa,CAAC,YAAY,IAAI,EAAE,CAAC;oBACzD,IAAI,eAAe,KAAK,EAAE,IAAI,eAAe,KAAK,aAAa,CAAC,WAAoB,CAAC,EAAE,CAAC;wBACtF,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;oBAC/C,CAAC;oBACD,sCAAsC;oBACtC,yCAAyC;oBACzC,uDAAuD;oBACvD,oDAAoD;oBACpD,wCAAwC;oBACxC,gDAAgD;oBAChD,kDAAkD;oBAClD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE;wBACjD,IAAI,EAAE,mBAAmB;wBACzB,QAAQ,EAAE,eAAe;qBAC1B,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBACxC,CAAC;oBACD,MAAM,SAAS,GAAG,cAAc,CAAC;wBAC/B,cAAc,EAAE,aAAa;wBAC7B,iBAAiB,EAAE,eAAe;wBAClC,YAAY,EAAE,WAAW;wBACzB,UAAU,EAAE,GAAG,EAAE;qBAClB,CAAC,CAAC;oBACH,MAAM,YAAY,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC;oBACpE,MAAM,OAAO,GAAe;wBAC1B,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;wBAClE,SAAS,EAAE,YAAY,EAAE;qBAC1B,CAAC;oBACF,wCAAwC;oBACxC,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBAC/C,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACtC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;gBAC9F,CAAC;gBACD,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,KAAK,GAAI,QAAQ,CAAC,OAA8B,CAAC,KAAK,IAAI,OAAO,CAAC;oBACxE,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBAC/C,uDAAuD;oBACvD,gCAAgC;oBAChC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;wBACtB,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBACtC,MAAM,YAAY,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;oBAChF,CAAC;oBACD,OAAO,SAAS,CAAC,oBAAoB,KAAK,IAAI,CAAC,CAAC;gBAClD,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,KAAK,GAAI,QAAQ,CAAC,OAA8B,CAAC,KAAK,IAAI,OAAO,CAAC;oBACxE,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBAC/C,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;wBACtB,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBACtC,MAAM,YAAY,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;oBAC/E,CAAC;oBACD,OAAO,SAAS,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC;gBACjD,CAAC;gBACD,KAAK,QAAQ;oBACX,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBAC/C,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACtC,MAAM,YAAY,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACtD,OAAO,SAAS,CAAC,wBAAwB,CAAC,CAAC;gBAC7C;oBACE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;YAClE,CAAC;QACH,CAAC;KACF,CAAC;AAEJ,CAAC"}
|
|
@@ -21,6 +21,7 @@ import { A2AServerThrottle } from "./throttle.js";
|
|
|
21
21
|
import type { TrustLevel } from "../../trust/identity/trust-policy.js";
|
|
22
22
|
import { TaskRegistry } from "./task-registry.js";
|
|
23
23
|
import type { NegotiationHandler } from "./types.js";
|
|
24
|
+
import { type GenericMessageResponder } from "./generic-responder.js";
|
|
24
25
|
export interface InboundPipelineOptions {
|
|
25
26
|
handler: NegotiationHandler;
|
|
26
27
|
idempotency: IdempotencyStore;
|
|
@@ -30,6 +31,8 @@ export interface InboundPipelineOptions {
|
|
|
30
31
|
logError: (message: string, err: unknown) => void;
|
|
31
32
|
/** WP3 §31 反滥用限流(可选;配置后判定在认证之后、schema 校验之前)。 */
|
|
32
33
|
throttle?: A2AServerThrottle;
|
|
34
|
+
/** 通用(非 KNP)A2A 消息响应器(issue 10 / TCK);缺省用 spec 一致的回显。 */
|
|
35
|
+
genericResponder?: GenericMessageResponder;
|
|
33
36
|
}
|
|
34
37
|
export interface SendMessageCaller {
|
|
35
38
|
senderIdentity: string;
|
|
@@ -52,6 +55,12 @@ export interface SendMessageResult {
|
|
|
52
55
|
/** 新处理的落账事件;幂等重放时为 undefined。 */
|
|
53
56
|
ledgerEvent?: LedgerEvent;
|
|
54
57
|
}
|
|
58
|
+
/** 通用(非 KNP)消息的归一化响应:task(已入库)或 message(1.0 wire)。 */
|
|
59
|
+
export type GenericSendResult = {
|
|
60
|
+
task: A2ATask;
|
|
61
|
+
} | {
|
|
62
|
+
message: Record<string, unknown>;
|
|
63
|
+
};
|
|
55
64
|
export declare class InboundPipeline {
|
|
56
65
|
private readonly handler;
|
|
57
66
|
private readonly idempotency;
|
|
@@ -60,6 +69,7 @@ export declare class InboundPipeline {
|
|
|
60
69
|
private readonly now;
|
|
61
70
|
private readonly logError;
|
|
62
71
|
private readonly throttle;
|
|
72
|
+
private readonly genericResponder;
|
|
63
73
|
constructor(options: InboundPipelineOptions);
|
|
64
74
|
private toThrottleRequest;
|
|
65
75
|
/** 从已落账 message_received 事件还原最小 A2ATask(P1-05 恢复路径)。
|
|
@@ -83,4 +93,22 @@ export declare class InboundPipeline {
|
|
|
83
93
|
sendMessage(input: SendMessageInput, caller: SendMessageCaller): Promise<SendMessageResult>;
|
|
84
94
|
/** tasks/get:内存优先,miss 时回退 Ledger 视图(§23 恢复第 4 步)。 */
|
|
85
95
|
getTask(taskId: string): Promise<A2ATask | null>;
|
|
96
|
+
/** ListTasks(issue 10 / TCK CORE-LIST):返回内存任务列表。 */
|
|
97
|
+
listTasks(): {
|
|
98
|
+
tasks: A2ATask[];
|
|
99
|
+
};
|
|
100
|
+
/** CancelTask(issue 10 / TCK CORE-CANCEL)。 */
|
|
101
|
+
cancelTask(taskId: string): {
|
|
102
|
+
ok: boolean;
|
|
103
|
+
outcome: "canceled" | "not_found" | "not_cancelable";
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* 通用 A2A 消息(issue 10 / TCK CORE-SEND/EXECUTION-MODE/MULTI):无 KNP
|
|
107
|
+
* envelope 的普通消息不进磋商管线——交给通用响应器(缺省:完成任务 + 回显
|
|
108
|
+
* parts 为 artifact + 生成 contextId)。让 A2A 1.0 server 对任意消息合规
|
|
109
|
+
* (KNP 是扩展,非 A2A 必载)。响应器可注入(TCK 参考场景)。
|
|
110
|
+
*/
|
|
111
|
+
sendGenericMessage(message: Record<string, unknown>): GenericSendResult;
|
|
112
|
+
/** 内存任务注册表是否已存在该任务(issue 10 / TCK CORE-MULTI-004)。 */
|
|
113
|
+
hasTask(taskId: string): boolean;
|
|
86
114
|
}
|
|
@@ -40,10 +40,16 @@ import { extractKnpEnvelope, parseInboundMessage } from "./inbound-message.js";
|
|
|
40
40
|
import { fromNegotiationError, internalServerError, protocolCodeOf, protocolError, rateLimited, schemaInvalid, } from "./errors.js";
|
|
41
41
|
import { A2AServerThrottle, domainFromUcpProfile } from "./throttle.js";
|
|
42
42
|
import { isKnownTaskState, newArtifactId, newTaskId, TaskRegistry } from "./task-registry.js";
|
|
43
|
+
import { defaultGenericResponder, newGenericContextId, } from "./generic-responder.js";
|
|
43
44
|
// ---------------------------------------------------------------------------
|
|
44
45
|
// 按幂等键串行化:防止并发同 key 请求双执行 handler
|
|
45
46
|
// ---------------------------------------------------------------------------
|
|
46
47
|
const locks = new Map();
|
|
48
|
+
// 审查 K-M16:幂等文件惰性清理节流——此前每条入站消息都全量 sweep
|
|
49
|
+
// (readdir 扫描全部 idem-*.json 并逐一读取),忙时开销随规模线性放大。
|
|
50
|
+
// 改每 IDEMPOTENCY_SWEEP_INTERVAL_MS 至多一次;首次调用必执行(0 起点)。
|
|
51
|
+
const IDEMPOTENCY_SWEEP_INTERVAL_MS = 5 * 60_000;
|
|
52
|
+
let lastIdempotencySweepAt = 0;
|
|
47
53
|
async function withKeyLock(key, fn) {
|
|
48
54
|
const tail = locks.get(key) ?? Promise.resolve();
|
|
49
55
|
let release;
|
|
@@ -139,6 +145,7 @@ export class InboundPipeline {
|
|
|
139
145
|
now;
|
|
140
146
|
logError;
|
|
141
147
|
throttle;
|
|
148
|
+
genericResponder;
|
|
142
149
|
constructor(options) {
|
|
143
150
|
this.handler = options.handler;
|
|
144
151
|
this.idempotency = options.idempotency;
|
|
@@ -147,6 +154,7 @@ export class InboundPipeline {
|
|
|
147
154
|
this.now = options.now;
|
|
148
155
|
this.logError = options.logError;
|
|
149
156
|
this.throttle = options.throttle;
|
|
157
|
+
this.genericResponder = options.genericResponder ?? defaultGenericResponder;
|
|
150
158
|
}
|
|
151
159
|
toThrottleRequest(caller) {
|
|
152
160
|
return {
|
|
@@ -217,10 +225,15 @@ export class InboundPipeline {
|
|
|
217
225
|
}
|
|
218
226
|
/** message/send 入站处理(限流 → 校验 → 幂等 → handler → Ledger → 幂等 commit)。 */
|
|
219
227
|
async sendMessage(input, caller) {
|
|
220
|
-
// 惰性清理(评审项 L2):negotiation 幂等文件的 sweep
|
|
221
|
-
//
|
|
228
|
+
// 惰性清理(评审项 L2 / 审查 K-M16):negotiation 幂等文件的 sweep 此前
|
|
229
|
+
// 无调用方,过期行永久保留、磁盘无界增长。入站消息处理是低频操作,但每条
|
|
230
|
+
// 都全量扫文件仍随规模线性放大——节流为每 IDEMPOTENCY_SWEEP_INTERVAL_MS 一次。
|
|
222
231
|
try {
|
|
223
|
-
|
|
232
|
+
const nowMs = Date.now();
|
|
233
|
+
if (nowMs - lastIdempotencySweepAt >= IDEMPOTENCY_SWEEP_INTERVAL_MS) {
|
|
234
|
+
lastIdempotencySweepAt = nowMs;
|
|
235
|
+
this.idempotency.sweep();
|
|
236
|
+
}
|
|
224
237
|
}
|
|
225
238
|
catch {
|
|
226
239
|
// 清理失败不影响消息处理(fail-safe 方向;下次再试)。
|
|
@@ -407,6 +420,56 @@ export class InboundPipeline {
|
|
|
407
420
|
return inMemory;
|
|
408
421
|
return this.tasks.resolveFromLedger(this.ledger, taskId);
|
|
409
422
|
}
|
|
423
|
+
/** ListTasks(issue 10 / TCK CORE-LIST):返回内存任务列表。 */
|
|
424
|
+
listTasks() {
|
|
425
|
+
return { tasks: this.tasks.list() };
|
|
426
|
+
}
|
|
427
|
+
/** CancelTask(issue 10 / TCK CORE-CANCEL)。 */
|
|
428
|
+
cancelTask(taskId) {
|
|
429
|
+
return this.tasks.cancel(taskId);
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* 通用 A2A 消息(issue 10 / TCK CORE-SEND/EXECUTION-MODE/MULTI):无 KNP
|
|
433
|
+
* envelope 的普通消息不进磋商管线——交给通用响应器(缺省:完成任务 + 回显
|
|
434
|
+
* parts 为 artifact + 生成 contextId)。让 A2A 1.0 server 对任意消息合规
|
|
435
|
+
* (KNP 是扩展,非 A2A 必载)。响应器可注入(TCK 参考场景)。
|
|
436
|
+
*/
|
|
437
|
+
sendGenericMessage(message) {
|
|
438
|
+
const taskId = newTaskId();
|
|
439
|
+
const contextId = typeof message.contextId === "string" && message.contextId.length > 0
|
|
440
|
+
? message.contextId
|
|
441
|
+
: newGenericContextId();
|
|
442
|
+
const result = this.genericResponder({ message, taskId, contextId, now: this.now });
|
|
443
|
+
if (result.task !== undefined) {
|
|
444
|
+
const t = result.task;
|
|
445
|
+
// 1.0 通用路径是 raw 透传:task 的 message/artifacts 保持 1.0 wire 形状
|
|
446
|
+
// (统一 Part),非 0.3 建模——类型经 unknown 放宽是有意的。
|
|
447
|
+
const task = {
|
|
448
|
+
id: taskId,
|
|
449
|
+
status: {
|
|
450
|
+
state: t.state,
|
|
451
|
+
timestamp: this.now(),
|
|
452
|
+
...(t.statusMessage !== undefined
|
|
453
|
+
? { message: t.statusMessage }
|
|
454
|
+
: {}),
|
|
455
|
+
},
|
|
456
|
+
...(t.contextId !== undefined ? { contextId: t.contextId } : {}),
|
|
457
|
+
...(t.artifacts !== undefined
|
|
458
|
+
? { artifacts: t.artifacts }
|
|
459
|
+
: {}),
|
|
460
|
+
};
|
|
461
|
+
this.tasks.set(taskId, task);
|
|
462
|
+
return { task };
|
|
463
|
+
}
|
|
464
|
+
// 响应器契约:task XOR message;两者皆缺即内部错误(fail-closed)。
|
|
465
|
+
if (result.message === undefined)
|
|
466
|
+
throw internalServerError();
|
|
467
|
+
return { message: result.message };
|
|
468
|
+
}
|
|
469
|
+
/** 内存任务注册表是否已存在该任务(issue 10 / TCK CORE-MULTI-004)。 */
|
|
470
|
+
hasTask(taskId) {
|
|
471
|
+
return this.tasks.get(taskId) !== null;
|
|
472
|
+
}
|
|
410
473
|
}
|
|
411
474
|
function requireContextId(value) {
|
|
412
475
|
if (typeof value !== "string" || value.length === 0) {
|