@harrylabsj/kiwi 0.7.22 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -10
- package/dist/a2a/node.js +1 -1
- package/dist/a2a/node.js.map +1 -1
- package/dist/agent/buyer/buyer-tools.js +15 -8
- package/dist/agent/buyer/buyer-tools.js.map +1 -1
- package/dist/agent/buyer/scheduler.d.ts +1 -0
- package/dist/agent/buyer/scheduler.js +5 -1
- package/dist/agent/buyer/scheduler.js.map +1 -1
- package/dist/agent/buyer/task-store.js +5 -2
- package/dist/agent/buyer/task-store.js.map +1 -1
- package/dist/agent/chat-tools.js +10 -3
- package/dist/agent/chat-tools.js.map +1 -1
- package/dist/agent/context/fencing.d.ts +27 -0
- package/dist/agent/context/fencing.js +126 -0
- package/dist/agent/context/fencing.js.map +1 -0
- package/dist/agent/context/grounding.d.ts +18 -0
- package/dist/agent/context/grounding.js +22 -0
- package/dist/agent/context/grounding.js.map +1 -0
- package/dist/agent/host/events.d.ts +31 -0
- package/dist/agent/host/events.js +62 -0
- package/dist/agent/host/events.js.map +1 -0
- package/dist/agent/host/tui-renderer.d.ts +17 -0
- package/dist/agent/host/tui-renderer.js +125 -0
- package/dist/agent/host/tui-renderer.js.map +1 -0
- package/dist/agent/host/web-renderer.d.ts +71 -0
- package/dist/agent/host/web-renderer.js +185 -0
- package/dist/agent/host/web-renderer.js.map +1 -0
- package/dist/agent/kernel-builder.d.ts +3 -1
- package/dist/agent/kernel-builder.js +4 -1
- package/dist/agent/kernel-builder.js.map +1 -1
- package/dist/agent/kernel.d.ts +20 -1
- package/dist/agent/kernel.js +251 -14
- package/dist/agent/kernel.js.map +1 -1
- package/dist/agent/merchant/intelligence/backend.d.ts +40 -0
- package/dist/agent/merchant/intelligence/backend.js +2 -0
- package/dist/agent/merchant/intelligence/backend.js.map +1 -0
- package/dist/agent/merchant/intelligence/default-backend.d.ts +38 -0
- package/dist/agent/merchant/intelligence/default-backend.js +454 -0
- package/dist/agent/merchant/intelligence/default-backend.js.map +1 -0
- package/dist/agent/merchant/intelligence/http-analytics-source.d.ts +55 -0
- package/dist/agent/merchant/intelligence/http-analytics-source.js +193 -0
- package/dist/agent/merchant/intelligence/http-analytics-source.js.map +1 -0
- package/dist/agent/merchant/intelligence/types.d.ts +109 -0
- package/dist/agent/merchant/intelligence/types.js +2 -0
- package/dist/agent/merchant/intelligence/types.js.map +1 -0
- package/dist/agent/merchant/merchant-enrichment.d.ts +10 -0
- package/dist/agent/merchant/merchant-enrichment.js +38 -0
- package/dist/agent/merchant/merchant-enrichment.js.map +1 -0
- package/dist/agent/merchant/merchant-grounding.d.ts +5 -0
- package/dist/agent/merchant/merchant-grounding.js +76 -0
- package/dist/agent/merchant/merchant-grounding.js.map +1 -0
- package/dist/agent/merchant/merchant-presentations.d.ts +8 -0
- package/dist/agent/merchant/merchant-presentations.js +184 -0
- package/dist/agent/merchant/merchant-presentations.js.map +1 -0
- package/dist/agent/merchant/merchant-tools.d.ts +8 -0
- package/dist/agent/merchant/merchant-tools.js +208 -9
- package/dist/agent/merchant/merchant-tools.js.map +1 -1
- package/dist/agent/presentation/registry.d.ts +14 -0
- package/dist/agent/presentation/registry.js +24 -0
- package/dist/agent/presentation/registry.js.map +1 -0
- package/dist/agent/presentation/runner.d.ts +11 -0
- package/dist/agent/presentation/runner.js +17 -0
- package/dist/agent/presentation/runner.js.map +1 -0
- package/dist/agent/presentation/sanitize.d.ts +16 -0
- package/dist/agent/presentation/sanitize.js +37 -0
- package/dist/agent/presentation/sanitize.js.map +1 -0
- package/dist/agent/presentation/types.d.ts +28 -0
- package/dist/agent/presentation/types.js +8 -0
- package/dist/agent/presentation/types.js.map +1 -0
- package/dist/agent/session.d.ts +1 -1
- package/dist/agent/session.js +2 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/agent/skills/registry.d.ts +11 -0
- package/dist/agent/skills/registry.js +119 -0
- package/dist/agent/skills/registry.js.map +1 -0
- package/dist/agent/skills/tools.d.ts +6 -0
- package/dist/agent/skills/tools.js +36 -0
- package/dist/agent/skills/tools.js.map +1 -0
- package/dist/agent/skills/types.d.ts +9 -0
- package/dist/agent/skills/types.js +2 -0
- package/dist/agent/skills/types.js.map +1 -0
- package/dist/agent/supplier/scheduler.d.ts +2 -0
- package/dist/agent/supplier/scheduler.js +101 -22
- package/dist/agent/supplier/scheduler.js.map +1 -1
- package/dist/agent/supplier/store.d.ts +2 -0
- package/dist/agent/supplier/store.js +44 -0
- package/dist/agent/supplier/store.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +5 -1
- package/dist/agent/system-prompt.js +20 -3
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/cli.js +34 -14
- package/dist/cli.js.map +1 -1
- package/dist/config/profile.d.ts +21 -0
- package/dist/config/profile.js +59 -0
- package/dist/config/profile.js.map +1 -1
- package/dist/discovery/catalog-source/kiwi-record.d.ts +2 -0
- package/dist/discovery/catalog-source/kiwi-record.js.map +1 -1
- package/dist/discovery/catalog-source/kiwi-source.js +2 -0
- package/dist/discovery/catalog-source/kiwi-source.js.map +1 -1
- package/dist/handoff/authorization.js +1 -1
- package/dist/http/merchant-server.d.ts +65 -0
- package/dist/http/merchant-server.js +346 -0
- package/dist/http/merchant-server.js.map +1 -0
- package/dist/merchant/stats-store.d.ts +7 -0
- package/dist/merchant/stats-store.js +11 -0
- package/dist/merchant/stats-store.js.map +1 -1
- package/dist/negotiation/action-candidate.js +1 -1
- package/dist/operator/types.d.ts +1 -1
- package/dist/product-cli.d.ts +2 -2
- package/dist/product-cli.js +5 -3
- package/dist/product-cli.js.map +1 -1
- package/dist/product-supplier.d.ts +73 -0
- package/dist/product-supplier.js +224 -5
- package/dist/product-supplier.js.map +1 -1
- package/dist/runtime/fake-model.d.ts +1 -1
- package/dist/trust/identity/jwk.d.ts +11 -0
- package/dist/trust/identity/jwk.js +2 -0
- package/dist/trust/identity/jwk.js.map +1 -0
- package/dist/trust/identity/jws.d.ts +2 -1
- package/dist/trust/identity/jws.js.map +1 -1
- package/dist/trust/identity/keys.d.ts +2 -1
- package/dist/trust/identity/keys.js.map +1 -1
- package/dist/trust/identity/message-signature.d.ts +1 -14
- package/dist/trust/identity/message-signature.js.map +1 -1
- package/dist/weixin/channel.d.ts +3 -0
- package/dist/weixin/channel.js +18 -2
- package/dist/weixin/channel.js.map +1 -1
- package/examples/profiles/merchant.deepseek.yaml +6 -0
- package/examples/profiles/merchant.fake.yaml +6 -0
- package/examples/profiles/merchant.local.yaml +6 -0
- package/package.json +7 -6
- package/skills/kiwi-buyer/SKILL.md +66 -0
- package/skills/merchant/catalog-operations/SKILL.md +17 -0
- package/skills/merchant/change-approval/SKILL.md +16 -0
- package/skills/merchant/human-review/SKILL.md +17 -0
- package/skills/merchant/inventory-operations/SKILL.md +17 -0
- package/skills/merchant/negotiation-review/SKILL.md +18 -0
- package/skills/merchant/performance-insights/SKILL.md +19 -0
- package/contracts/candidate-agent-dto-1.0.README.md +0 -43
- package/contracts/conformance/python-service/README.md +0 -19
|
@@ -0,0 +1,125 @@
|
|
|
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
|
+
*/
|
|
7
|
+
import { createTheme } from "../../tui/styles.js";
|
|
8
|
+
function asRecord(value) {
|
|
9
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
10
|
+
? value
|
|
11
|
+
: {};
|
|
12
|
+
}
|
|
13
|
+
function display(value) {
|
|
14
|
+
if (value === null || value === undefined)
|
|
15
|
+
return "—";
|
|
16
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean")
|
|
17
|
+
return String(value);
|
|
18
|
+
return JSON.stringify(value) ?? "—";
|
|
19
|
+
}
|
|
20
|
+
function renderUi(component, payload) {
|
|
21
|
+
const value = asRecord(payload);
|
|
22
|
+
if (component === "merchant_digest") {
|
|
23
|
+
const snapshot = asRecord(value.snapshot);
|
|
24
|
+
const alerts = asRecord(snapshot.alerts);
|
|
25
|
+
const metrics = Array.isArray(snapshot.metrics) ? snapshot.metrics : [];
|
|
26
|
+
return [
|
|
27
|
+
"[经营摘要] " + display(value.title),
|
|
28
|
+
...metrics.slice(0, 8).map((metric) => {
|
|
29
|
+
const item = asRecord(metric);
|
|
30
|
+
return ` ${display(item.name)}: ${display(item.value)} ${display(item.unit)}`;
|
|
31
|
+
}),
|
|
32
|
+
` 活跃磋商 ${display(alerts.active_negotiations)} · 人工审核 ${display(alerts.human_reviews)} · 待审批 ${display(alerts.pending_actions)}`,
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
if (component === "metrics") {
|
|
36
|
+
const points = Array.isArray(value.points) ? value.points : [];
|
|
37
|
+
return [
|
|
38
|
+
`[指标] ${display(value.metric)}(${display(value.period)} / ${display(value.granularity)})`,
|
|
39
|
+
...points.slice(0, 20).map((point) => {
|
|
40
|
+
const item = asRecord(point);
|
|
41
|
+
return ` ${display(item.date)} ${display(item.value)}`;
|
|
42
|
+
}),
|
|
43
|
+
...(typeof value.note === "string" && value.note !== "" ? [` 说明:${value.note}`] : []),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
if (component === "catalog") {
|
|
47
|
+
const products = Array.isArray(value.products) ? value.products : [];
|
|
48
|
+
const health = asRecord(value.health);
|
|
49
|
+
return [
|
|
50
|
+
`[目录] 共 ${display(health.total)} 件 · active ${display(health.active)} · paused ${display(health.paused)} · 缺货 ${display(health.out_of_stock)}`,
|
|
51
|
+
...products.slice(0, 20).map((product) => {
|
|
52
|
+
const item = asRecord(product);
|
|
53
|
+
return ` ${display(item.sku)} ${display(item.title)} 价格 ${display(item.price)} 库存 ${display(item.stock)}`;
|
|
54
|
+
}),
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
if (component === "negotiations") {
|
|
58
|
+
const rows = Array.isArray(payload) ? payload : [];
|
|
59
|
+
return [
|
|
60
|
+
`[磋商] ${rows.length} 条`,
|
|
61
|
+
...rows.slice(0, 20).map((row) => {
|
|
62
|
+
const item = asRecord(row);
|
|
63
|
+
return ` ${display(item.negotiation_id)} ${display(item.phase)} ${display(item.updated_at)}`;
|
|
64
|
+
}),
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
if (component === "human_review") {
|
|
68
|
+
const rows = Array.isArray(value.reviews) ? value.reviews : [];
|
|
69
|
+
return [
|
|
70
|
+
`[人工审核] ${rows.length} 条`,
|
|
71
|
+
...rows.slice(0, 20).map((row) => {
|
|
72
|
+
const item = asRecord(row);
|
|
73
|
+
return ` ${display(item.review_id)} ${display(item.severity)} ${display(item.reason)}`;
|
|
74
|
+
}),
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
if (component === "change_preview") {
|
|
78
|
+
const changes = Array.isArray(value.changes) ? value.changes : [];
|
|
79
|
+
return [
|
|
80
|
+
`[变更预览] ${display(value.headline)}(${display(value.status)})`,
|
|
81
|
+
...changes.slice(0, 20).map((change) => {
|
|
82
|
+
const item = asRecord(change);
|
|
83
|
+
return ` ${display(item.field)}: ${display(item.before)} → ${display(item.after)}`;
|
|
84
|
+
}),
|
|
85
|
+
...(typeof value.note === "string" && value.note !== "" ? [` 说明:${value.note}`] : []),
|
|
86
|
+
];
|
|
87
|
+
}
|
|
88
|
+
if (component === "suggestions") {
|
|
89
|
+
const suggestions = Array.isArray(value.suggestions) ? value.suggestions : [];
|
|
90
|
+
return ["[建议]", ...suggestions.slice(0, 4).map((suggestion) => ` · ${display(suggestion)}`)];
|
|
91
|
+
}
|
|
92
|
+
return [`[ui] ${component}`];
|
|
93
|
+
}
|
|
94
|
+
/** Optional renderer for hosts that want readable TUI projections from events. */
|
|
95
|
+
export class TuiEventSink {
|
|
96
|
+
output;
|
|
97
|
+
theme;
|
|
98
|
+
constructor(output) {
|
|
99
|
+
this.output = output;
|
|
100
|
+
this.theme = createTheme(output);
|
|
101
|
+
}
|
|
102
|
+
emit(event) {
|
|
103
|
+
const data = asRecord(event.data);
|
|
104
|
+
let lines = [];
|
|
105
|
+
if (event.type === "message" && typeof data.text === "string" && data.role !== "user") {
|
|
106
|
+
lines = [data.text];
|
|
107
|
+
}
|
|
108
|
+
else if (event.type === "grounding_started") {
|
|
109
|
+
lines = [`[数据] 正在读取 ${display(data.tool)}…`];
|
|
110
|
+
}
|
|
111
|
+
else if (event.type === "grounding_completed") {
|
|
112
|
+
lines = [`[数据] ${display(data.tool)}:${display(data.status)}`];
|
|
113
|
+
}
|
|
114
|
+
else if (event.type === "ui") {
|
|
115
|
+
lines = renderUi(display(data.component), data.payload);
|
|
116
|
+
}
|
|
117
|
+
else if (event.type === "error") {
|
|
118
|
+
lines = [`[错误] ${display(data.message)}`];
|
|
119
|
+
}
|
|
120
|
+
for (const line of lines)
|
|
121
|
+
this.output.write(`${this.theme.decorate(line)}\n`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
export { renderUi as renderTuiEvent };
|
|
125
|
+
//# sourceMappingURL=tui-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-renderer.js","sourceRoot":"","sources":["../../../src/agent/host/tui-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
*/
|
|
7
|
+
import type { AgentHostEvent } from "./events.js";
|
|
8
|
+
export interface MerchantWebMessage {
|
|
9
|
+
role: "user" | "assistant" | "system";
|
|
10
|
+
text: string;
|
|
11
|
+
sequence: number;
|
|
12
|
+
occurredAt: string;
|
|
13
|
+
}
|
|
14
|
+
export interface MerchantWebToolState {
|
|
15
|
+
tool: string;
|
|
16
|
+
callId: string;
|
|
17
|
+
status: "running" | "ok" | "error";
|
|
18
|
+
input?: unknown;
|
|
19
|
+
summary?: string;
|
|
20
|
+
partial?: unknown;
|
|
21
|
+
}
|
|
22
|
+
export interface MerchantWebViewState {
|
|
23
|
+
lastSequence: number;
|
|
24
|
+
streamText: string;
|
|
25
|
+
messages: MerchantWebMessage[];
|
|
26
|
+
grounding: Record<string, {
|
|
27
|
+
tool: string;
|
|
28
|
+
status: string;
|
|
29
|
+
}>;
|
|
30
|
+
tools: Record<string, MerchantWebToolState>;
|
|
31
|
+
ui: Record<string, {
|
|
32
|
+
payload: unknown;
|
|
33
|
+
sequence: number;
|
|
34
|
+
}>;
|
|
35
|
+
candidates: Record<string, {
|
|
36
|
+
status: string;
|
|
37
|
+
preview?: unknown;
|
|
38
|
+
}>;
|
|
39
|
+
negotiations: Record<string, {
|
|
40
|
+
phase: string;
|
|
41
|
+
summary: string;
|
|
42
|
+
}>;
|
|
43
|
+
progress: Array<{
|
|
44
|
+
message: string;
|
|
45
|
+
operation?: string;
|
|
46
|
+
step?: string;
|
|
47
|
+
}>;
|
|
48
|
+
errors: Array<{
|
|
49
|
+
code: string;
|
|
50
|
+
message: string;
|
|
51
|
+
retryable?: boolean;
|
|
52
|
+
}>;
|
|
53
|
+
replayGap?: {
|
|
54
|
+
after: number;
|
|
55
|
+
oldest: number;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Framework-neutral reducer for Web/Buddy hosts.
|
|
60
|
+
*
|
|
61
|
+
* It is intentionally a state reducer rather than a DOM/React renderer. The
|
|
62
|
+
* transport may replay events, so duplicate or older sequence numbers are
|
|
63
|
+
* ignored. All values are copied and sanitized before entering view state.
|
|
64
|
+
*/
|
|
65
|
+
export declare class MerchantWebEventRenderer {
|
|
66
|
+
private state;
|
|
67
|
+
get snapshot(): MerchantWebViewState;
|
|
68
|
+
reset(): void;
|
|
69
|
+
applyReplayGap(after: number, oldest: number): void;
|
|
70
|
+
apply(event: AgentHostEvent): MerchantWebViewState;
|
|
71
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
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
|
+
*/
|
|
7
|
+
import { sanitizeModelText } from "../context/fencing.js";
|
|
8
|
+
import { sanitizePresentationValue } from "../presentation/sanitize.js";
|
|
9
|
+
const MAX_ITEMS = 100;
|
|
10
|
+
function record(value) {
|
|
11
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
12
|
+
? value
|
|
13
|
+
: {};
|
|
14
|
+
}
|
|
15
|
+
function text(value, maxChars = 2_000) {
|
|
16
|
+
return typeof value === "string" ? sanitizeModelText(value, { maxChars }) : "";
|
|
17
|
+
}
|
|
18
|
+
function id(value) {
|
|
19
|
+
return text(value, 200);
|
|
20
|
+
}
|
|
21
|
+
function boundedPush(items, item) {
|
|
22
|
+
items.push(item);
|
|
23
|
+
while (items.length > MAX_ITEMS)
|
|
24
|
+
items.shift();
|
|
25
|
+
}
|
|
26
|
+
function boundedSet(items, key, value) {
|
|
27
|
+
items[key] = value;
|
|
28
|
+
while (Object.keys(items).length > MAX_ITEMS) {
|
|
29
|
+
const oldest = Object.keys(items)[0];
|
|
30
|
+
if (oldest === undefined)
|
|
31
|
+
break;
|
|
32
|
+
delete items[oldest];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function safePayload(value) {
|
|
36
|
+
return sanitizePresentationValue(value, { maxChars: 2_000, maxItems: MAX_ITEMS });
|
|
37
|
+
}
|
|
38
|
+
function emptyState() {
|
|
39
|
+
return {
|
|
40
|
+
lastSequence: 0,
|
|
41
|
+
streamText: "",
|
|
42
|
+
messages: [],
|
|
43
|
+
grounding: {},
|
|
44
|
+
tools: {},
|
|
45
|
+
ui: {},
|
|
46
|
+
candidates: {},
|
|
47
|
+
negotiations: {},
|
|
48
|
+
progress: [],
|
|
49
|
+
errors: [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Framework-neutral reducer for Web/Buddy hosts.
|
|
54
|
+
*
|
|
55
|
+
* It is intentionally a state reducer rather than a DOM/React renderer. The
|
|
56
|
+
* transport may replay events, so duplicate or older sequence numbers are
|
|
57
|
+
* ignored. All values are copied and sanitized before entering view state.
|
|
58
|
+
*/
|
|
59
|
+
export class MerchantWebEventRenderer {
|
|
60
|
+
state = emptyState();
|
|
61
|
+
get snapshot() {
|
|
62
|
+
return structuredClone(this.state);
|
|
63
|
+
}
|
|
64
|
+
reset() {
|
|
65
|
+
this.state = emptyState();
|
|
66
|
+
}
|
|
67
|
+
applyReplayGap(after, oldest) {
|
|
68
|
+
if (!Number.isSafeInteger(after) || !Number.isSafeInteger(oldest) || after < 0 || oldest < 0)
|
|
69
|
+
return;
|
|
70
|
+
this.state.replayGap = { after, oldest };
|
|
71
|
+
}
|
|
72
|
+
apply(event) {
|
|
73
|
+
if (!Number.isSafeInteger(event.sequence) || event.sequence <= this.state.lastSequence) {
|
|
74
|
+
return this.snapshot;
|
|
75
|
+
}
|
|
76
|
+
this.state.lastSequence = event.sequence;
|
|
77
|
+
const data = record(event.data);
|
|
78
|
+
switch (event.type) {
|
|
79
|
+
case "message": {
|
|
80
|
+
const role = data.role === "user" || data.role === "system" ? data.role : "assistant";
|
|
81
|
+
boundedPush(this.state.messages, {
|
|
82
|
+
role,
|
|
83
|
+
text: text(data.text),
|
|
84
|
+
sequence: event.sequence,
|
|
85
|
+
occurredAt: text(event.occurredAt, 64),
|
|
86
|
+
});
|
|
87
|
+
if (role === "assistant")
|
|
88
|
+
this.state.streamText = "";
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case "text_delta":
|
|
92
|
+
this.state.streamText = `${this.state.streamText}${text(data.text, 4_000)}`.slice(-20_000);
|
|
93
|
+
break;
|
|
94
|
+
case "grounding_started":
|
|
95
|
+
boundedSet(this.state.grounding, id(data.rule) || id(data.tool), { tool: id(data.tool), status: "running" });
|
|
96
|
+
break;
|
|
97
|
+
case "grounding_completed":
|
|
98
|
+
boundedSet(this.state.grounding, id(data.rule) || id(data.tool), { tool: id(data.tool), status: id(data.status) });
|
|
99
|
+
break;
|
|
100
|
+
case "tool_call": {
|
|
101
|
+
const callId = id(data.call_id);
|
|
102
|
+
if (callId !== "") {
|
|
103
|
+
boundedSet(this.state.tools, callId, {
|
|
104
|
+
tool: id(data.tool),
|
|
105
|
+
callId,
|
|
106
|
+
status: "running",
|
|
107
|
+
input: safePayload(data.input),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
case "ui_partial": {
|
|
113
|
+
const callId = id(data.call_id);
|
|
114
|
+
if (callId !== "") {
|
|
115
|
+
const current = this.state.tools[callId];
|
|
116
|
+
boundedSet(this.state.tools, callId, {
|
|
117
|
+
tool: id(data.tool) || current?.tool || "",
|
|
118
|
+
callId,
|
|
119
|
+
status: current?.status ?? "running",
|
|
120
|
+
...(current?.input === undefined ? {} : { input: current.input }),
|
|
121
|
+
partial: safePayload(data.partial),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case "tool_result": {
|
|
127
|
+
const callId = id(data.call_id);
|
|
128
|
+
if (callId !== "") {
|
|
129
|
+
const current = this.state.tools[callId];
|
|
130
|
+
boundedSet(this.state.tools, callId, {
|
|
131
|
+
tool: id(data.tool) || current?.tool || "",
|
|
132
|
+
callId,
|
|
133
|
+
status: data.status === "error" ? "error" : "ok",
|
|
134
|
+
...(current?.input === undefined ? {} : { input: current.input }),
|
|
135
|
+
summary: text(data.summary, 4_000),
|
|
136
|
+
...(current?.partial === undefined ? {} : { partial: current.partial }),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
case "ui": {
|
|
142
|
+
const component = id(data.component);
|
|
143
|
+
if (component !== "")
|
|
144
|
+
boundedSet(this.state.ui, component, { payload: safePayload(data.payload), sequence: event.sequence });
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case "candidate_update": {
|
|
148
|
+
const candidateId = id(data.candidate_id);
|
|
149
|
+
if (candidateId !== "")
|
|
150
|
+
boundedSet(this.state.candidates, candidateId, {
|
|
151
|
+
status: id(data.status),
|
|
152
|
+
...(data.preview === undefined ? {} : { preview: safePayload(data.preview) }),
|
|
153
|
+
});
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case "negotiation_update": {
|
|
157
|
+
const negotiationId = id(data.negotiation_id);
|
|
158
|
+
if (negotiationId !== "")
|
|
159
|
+
boundedSet(this.state.negotiations, negotiationId, {
|
|
160
|
+
phase: id(data.phase),
|
|
161
|
+
summary: text(data.summary),
|
|
162
|
+
});
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
case "progress":
|
|
166
|
+
boundedPush(this.state.progress, {
|
|
167
|
+
message: text(data.message),
|
|
168
|
+
...(data.operation === undefined ? {} : { operation: id(data.operation) }),
|
|
169
|
+
...(data.step === undefined ? {} : { step: id(data.step) }),
|
|
170
|
+
});
|
|
171
|
+
break;
|
|
172
|
+
case "error":
|
|
173
|
+
boundedPush(this.state.errors, {
|
|
174
|
+
code: id(data.code),
|
|
175
|
+
message: text(data.message),
|
|
176
|
+
...(typeof data.retryable === "boolean" ? { retryable: data.retryable } : {}),
|
|
177
|
+
});
|
|
178
|
+
break;
|
|
179
|
+
default:
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
return this.snapshot;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=web-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-renderer.js","sourceRoot":"","sources":["../../../src/agent/host/web-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
import { AgentKernel } from "./kernel.js";
|
|
17
17
|
import { type AgentProfile } from "../config/profile.js";
|
|
18
18
|
import type { CommerceClient } from "../commerce/types.js";
|
|
19
|
+
import type { AgentEventSink } from "./host/events.js";
|
|
20
|
+
import type { MerchantAnalyticsSource } from "./merchant/intelligence/types.js";
|
|
19
21
|
/** 裸 `kiwi` 的缺省 buyer profile(deepseek-v4-flash,环境变量可覆盖)。 */
|
|
20
22
|
export declare function defaultChatProfile(): AgentProfile;
|
|
21
23
|
/** 构建 commerce client(negotiation scope token 从 env 解析)。 */
|
|
@@ -24,4 +26,4 @@ export declare function buildClient(profile: AgentProfile): CommerceClient;
|
|
|
24
26
|
* 为 profile 构建 AgentKernel(chat/weixin 共享装配)。
|
|
25
27
|
* provider=fake 运行确定性离线 chat fake;真实 provider 解析模型与认证。
|
|
26
28
|
*/
|
|
27
|
-
export declare function buildChatKernel(profile: AgentProfile, dataDir?: string, catalog?: string): Promise<AgentKernel>;
|
|
29
|
+
export declare function buildChatKernel(profile: AgentProfile, dataDir?: string, catalog?: string, eventSink?: AgentEventSink, eventSessionId?: string, merchantAnalyticsSource?: MerchantAnalyticsSource): Promise<AgentKernel>;
|
|
@@ -80,7 +80,7 @@ export function buildClient(profile) {
|
|
|
80
80
|
* 为 profile 构建 AgentKernel(chat/weixin 共享装配)。
|
|
81
81
|
* provider=fake 运行确定性离线 chat fake;真实 provider 解析模型与认证。
|
|
82
82
|
*/
|
|
83
|
-
export async function buildChatKernel(profile, dataDir, catalog) {
|
|
83
|
+
export async function buildChatKernel(profile, dataDir, catalog, eventSink, eventSessionId, merchantAnalyticsSource) {
|
|
84
84
|
const paths = ensurePathsForDir(dataDir ?? agentDataDir(profile.agent_id));
|
|
85
85
|
let models;
|
|
86
86
|
let model;
|
|
@@ -174,6 +174,9 @@ export async function buildChatKernel(profile, dataDir, catalog) {
|
|
|
174
174
|
...(merchantClient !== undefined ? { merchantClient } : {}),
|
|
175
175
|
...(broker !== undefined ? { broker } : {}),
|
|
176
176
|
...(catalog !== undefined ? { catalog } : {}),
|
|
177
|
+
...(eventSink !== undefined ? { eventSink } : {}),
|
|
178
|
+
...(eventSessionId !== undefined ? { eventSessionId } : {}),
|
|
179
|
+
...(merchantAnalyticsSource !== undefined ? { merchantAnalyticsSource } : {}),
|
|
177
180
|
...(thinkingLevel !== undefined ? { thinkingLevel } : {}),
|
|
178
181
|
});
|
|
179
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel-builder.js","sourceRoot":"","sources":["../../src/agent/kernel-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"kernel-builder.js","sourceRoot":"","sources":["../../src/agent/kernel-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/kernel.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ import { type AgentMode } from "./mode.js";
|
|
|
38
38
|
import { WriteApprovalCandidateStore, type ApprovalExecutionResult } from "./merchant/action-candidate.js";
|
|
39
39
|
import type { CredentialBroker } from "./merchant/credential-broker.js";
|
|
40
40
|
import type { MerchantClient } from "./merchant/types.js";
|
|
41
|
+
import type { MerchantAnalyticsSource } from "./merchant/intelligence/types.js";
|
|
42
|
+
import type { AgentEventSink } from "./host/events.js";
|
|
41
43
|
import { MemoryStore } from "./memory/store.js";
|
|
42
44
|
import { type Principal } from "./memory/types.js";
|
|
43
45
|
import { PrivateVault } from "./memory/vault.js";
|
|
@@ -74,6 +76,14 @@ export interface AgentKernelOptions {
|
|
|
74
76
|
now?: () => string;
|
|
75
77
|
/** agent catalog base URL(buyer `negotiate_buyer_task` 的 A2A 商家发现用)。 */
|
|
76
78
|
catalog?: string;
|
|
79
|
+
/** 仅本地开发/E2E:允许 supplier pull 访问字面 loopback。 */
|
|
80
|
+
allowLoopback?: boolean;
|
|
81
|
+
/** Optional host projection for Merchant Experience integrations. */
|
|
82
|
+
eventSink?: AgentEventSink;
|
|
83
|
+
/** Transport session id used in host events; defaults to the local main session. */
|
|
84
|
+
eventSessionId?: string;
|
|
85
|
+
/** Optional authoritative sales/campaign/ROAS source for Merchant Intelligence. */
|
|
86
|
+
merchantAnalyticsSource?: MerchantAnalyticsSource;
|
|
77
87
|
}
|
|
78
88
|
/** A2A 磋商结果记忆记录(/negotiate 与 negotiate_buyer_task 共用形状)。 */
|
|
79
89
|
interface NegotiationRecord {
|
|
@@ -91,6 +101,7 @@ export interface KernelReply {
|
|
|
91
101
|
/** True when the command was /quit. */
|
|
92
102
|
quit: boolean;
|
|
93
103
|
}
|
|
104
|
+
export declare function toolResultSummary(toolName: string, result: unknown): string;
|
|
94
105
|
export declare class AgentKernel {
|
|
95
106
|
readonly profile: AgentProfile;
|
|
96
107
|
readonly principal: Principal;
|
|
@@ -115,6 +126,11 @@ export declare class AgentKernel {
|
|
|
115
126
|
private readonly commerceClient?;
|
|
116
127
|
private readonly merchantClient?;
|
|
117
128
|
private readonly broker?;
|
|
129
|
+
private readonly merchantIntelligence?;
|
|
130
|
+
/** Optional host event projection; it never owns business state. */
|
|
131
|
+
private readonly emitEvent?;
|
|
132
|
+
/** Removes the optional AgentHarness stream bridge during kernel shutdown. */
|
|
133
|
+
private readonly unsubscribeHarnessEvents?;
|
|
118
134
|
/** Shared mutable mode ref (tools read it via a getter before the kernel exists). */
|
|
119
135
|
private readonly modeRef;
|
|
120
136
|
/** Live execution hooks for pending candidates (v0.3.0-C /approve). */
|
|
@@ -168,7 +184,7 @@ export declare class AgentKernel {
|
|
|
168
184
|
/**
|
|
169
185
|
* Change the runtime mode. Switching INTO autopilot requires an explicit
|
|
170
186
|
* `confirm` — the same fail-closed rule as the operator control plane
|
|
171
|
-
* (
|
|
187
|
+
* (operator control-plane design §8).
|
|
172
188
|
*/
|
|
173
189
|
setMode(mode: AgentMode, options?: {
|
|
174
190
|
confirmed?: boolean;
|
|
@@ -226,6 +242,9 @@ export declare class AgentKernel {
|
|
|
226
242
|
* (消除"两个脑")。
|
|
227
243
|
*/
|
|
228
244
|
injectContext(text: string): Promise<void>;
|
|
245
|
+
private runMerchantGroundingRead;
|
|
246
|
+
/** Run at most two deterministic, read-only merchant grounding reads per turn. */
|
|
247
|
+
private merchantGrounding;
|
|
229
248
|
/**
|
|
230
249
|
* 把一轮 A2A 磋商结果写入记忆(episode namespace,active 无需人工确认):
|
|
231
250
|
* 持久上下文,`/why` 可查、跨重启可恢复。
|