@bf-meishijian/aip 0.0.26 → 0.0.28

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.
@@ -1,18 +1,17 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { managedAgentManifest, resolveHostShell, selectManagedAgentToolsForRun, validateManagedAgentToolSnapshot, withExternalMcpTools, } from "@ai-platform/api-contracts";
3
- import { createEditToolDefinition, createFindToolDefinition, createGrepToolDefinition, createLsToolDefinition, createReadToolDefinition, createWriteToolDefinition, } from "@earendil-works/pi-coding-agent";
2
+ import { resolveHostShell } from "@ai-platform/api-contracts";
4
3
  import { redactHostText } from "./host-log.js";
5
- import { createHostShellTool } from "./host-tools.js";
4
+ import { localEmployeeRuntime } from "./local-employee-runtime.js";
6
5
  import { PlatformClientError } from "./platform-client.js";
7
6
  export function generalRunTools(options) {
8
- const { spec, binding, client, cwd, environmentVariables } = options;
9
- const manifest = withExternalMcpTools(managedAgentManifest(spec.agentDefinition.id, spec.agentDefinition.version), spec.resolvedAgentConfig.externalTools);
10
- const resources = spec.input
11
- ?.resourceBindings;
12
- const declaredTools = selectManagedAgentToolsForRun(manifest, spec.resolvedAgentConfig.enabledOptionalToolIds, undefined, resources);
13
- const tools = validateManagedAgentToolSnapshot(manifest, spec.resolvedAgentConfig.tools, undefined, declaredTools);
14
- const names = [];
7
+ const { spec, binding, client, cwd, initial } = options;
8
+ let current = initial;
15
9
  const platformNames = new Map();
10
+ const updateNames = (config) => {
11
+ for (const tool of config.toolDefinitions)
12
+ platformNames.set(tool.name, tool.execution === "NATIVE" ? "workspace.command" : tool.handler);
13
+ };
14
+ updateNames(initial);
16
15
  const callIds = new Map();
17
16
  const toolCallId = (sourceId) => {
18
17
  let id = callIds.get(sourceId);
@@ -22,130 +21,102 @@ export function generalRunTools(options) {
22
21
  }
23
22
  return id;
24
23
  };
25
- const shell = resolveHostShell(process.platform, environmentVariables);
26
- const definitions = [];
27
- for (const tool of tools) {
28
- if (tool.id === "workspace.command") {
29
- // 显式配置的本地文件与命令能力复用 Pi 原生参数及各操作系统的执行后端。
30
- for (const native of [
31
- createHostShellTool(cwd, shell, environmentVariables),
32
- createReadToolDefinition(cwd),
33
- createWriteToolDefinition(cwd),
34
- createEditToolDefinition(cwd),
35
- createFindToolDefinition(cwd),
36
- createGrepToolDefinition(cwd),
37
- createLsToolDefinition(cwd),
38
- ]) {
39
- definitions.push(native);
40
- platformNames.set(native.name, tool.id);
41
- }
24
+ const invoke = async (name, id, input, signal) => {
25
+ try {
26
+ return await client.tool(spec.runId, name, {
27
+ ...binding,
28
+ toolCallId: id,
29
+ idempotencyKey: id,
30
+ graphNodeId: "general-pi",
31
+ input,
32
+ }, signal);
42
33
  }
43
- else {
44
- definitions.push({
45
- name: tool.providerName,
46
- label: tool.providerName,
47
- description: tool.description,
48
- parameters: tool.parameters,
49
- async execute(sourceId, args, signal) {
50
- const id = toolCallId(sourceId);
51
- if (options.localMcp?.names.has(tool.id)) {
52
- const result = await options.localMcp.call(tool.id, args, signal);
53
- return { content: [{ type: "text", text: JSON.stringify(result) }], details: {} };
54
- }
55
- let response;
34
+ catch (error) {
35
+ if (!(error instanceof PlatformClientError) || error.status >= 500)
36
+ options.protocolLost();
37
+ throw error;
38
+ }
39
+ };
40
+ const shell = resolveHostShell(process.platform, initial.environmentVariables ?? {});
41
+ const live = localEmployeeRuntime({
42
+ initial,
43
+ runId: spec.runId,
44
+ runRoot: cwd,
45
+ member: "employee",
46
+ ...(options.isClosing ? { isClosing: options.isClosing } : {}),
47
+ load: async (purpose, file, call) => {
48
+ if (purpose === "SKILL_READ" && file) {
49
+ const metadata = current.agent.skills.find((item) => item.id === file.skillId && item.path === file.skillPath);
50
+ if (!metadata)
51
+ throw new Error("EMPLOYEE_SKILL_FILE_UNAVAILABLE");
52
+ const response = await invoke("employee.read_skill", call?.toolName === "employee_read_skill" ? toolCallId(call.id) : randomUUID(), { skillName: metadata.name, path: metadata.path });
53
+ if (response.result.outcome !== "SUCCEEDED")
54
+ throw new Error("EMPLOYEE_SKILL_FILE_UNAVAILABLE");
55
+ }
56
+ current = await client.employeeConfig(spec.runId, { ...binding, purpose, ...file });
57
+ updateNames(current);
58
+ return current;
59
+ },
60
+ prompt: (config, locations) => [
61
+ config.agent.systemPrompt,
62
+ `当前为通用员工会话,工作目录:${cwd}。本地命令工具使用 ${shell.name},按实际工具反馈操作;连接中断或结果未知不表示执行成功。`,
63
+ `当前绑定技能目录(元数据,使用前显式读取 SKILL.md):\n${config.agent.skills
64
+ .filter((file) => file.path === "SKILL.md")
65
+ .map((file) => `${file.name}:${file.description ?? ""}\nSKILL.md:${locations.get(`${file.id}:${file.path}`)}`)
66
+ .join("\n") || "无"}`,
67
+ ].join("\n\n"),
68
+ platformTool: async (definition, sourceId, args, signal) => {
69
+ const response = await invoke(definition.handler, toolCallId(sourceId), args, signal);
70
+ return { content: [{ type: "text", text: JSON.stringify(response.result) }], details: {} };
71
+ },
72
+ wrapTool: (definition) => ({
73
+ ...definition,
74
+ async execute(id, args, signal, update, context) {
75
+ await options.beforeTool();
76
+ let result;
77
+ const native = platformNames.get(definition.name) === "workspace.command";
78
+ const record = async (outcome) => {
79
+ if (!native)
80
+ return;
81
+ const factId = toolCallId(id);
82
+ const input = args;
56
83
  try {
57
- response = await client.tool(spec.runId, tool.id, {
84
+ await client.recordToolFacts(spec.runId, {
58
85
  ...binding,
59
- toolCallId: id,
60
- idempotencyKey: id,
61
- graphNodeId: "general-pi",
62
- input: args,
63
- }, signal);
64
- }
65
- catch (error) {
66
- if (!(error instanceof PlatformClientError) || error.status >= 500)
67
- options.protocolLost();
68
- throw error;
69
- }
70
- return {
71
- content: [{ type: "text", text: JSON.stringify(response.result) }],
72
- details: {},
73
- };
74
- },
75
- });
76
- platformNames.set(tool.providerName, tool.id);
77
- }
78
- }
79
- names.push(...definitions.map((definition) => definition.name));
80
- const extension = (api) => {
81
- for (const definition of definitions) {
82
- api.registerTool({
83
- ...definition,
84
- async execute(id, args, signal, update, context) {
85
- await options.beforeTool();
86
- let result;
87
- const native = platformNames.get(definition.name) === "workspace.command";
88
- const record = async (outcome) => {
89
- if (!native)
90
- return;
91
- const factId = toolCallId(id);
92
- const input = args;
93
- try {
94
- await client.recordToolFacts(spec.runId, {
95
- ...binding,
96
- facts: [
97
- {
98
- toolCallId: factId,
99
- idempotencyKey: factId,
100
- graphNodeId: "general-pi",
101
- toolName: "workspace.command",
102
- outcome,
103
- input: {
104
- command: redactHostText(options.redact(typeof input.command === "string"
105
- ? input.command
106
- : `${definition.name} ${typeof input.path === "string" ? input.path : cwd}`)),
107
- },
108
- ...(outcome === "FAILED" ? { errorCode: "LOCAL_TOOL_FAILED" } : {}),
86
+ facts: [
87
+ {
88
+ toolCallId: factId,
89
+ idempotencyKey: factId,
90
+ graphNodeId: "general-pi",
91
+ toolName: "workspace.command",
92
+ outcome,
93
+ input: {
94
+ command: redactHostText(typeof input.command === "string"
95
+ ? input.command
96
+ : `${definition.name} ${typeof input.path === "string" ? input.path : cwd}`),
109
97
  },
110
- ],
111
- });
112
- }
113
- catch (error) {
114
- options.protocolLost();
115
- throw error;
116
- }
117
- };
118
- try {
119
- result = await definition.execute(id, args, signal, update, context);
98
+ ...(outcome === "FAILED" ? { errorCode: "LOCAL_TOOL_FAILED" } : {}),
99
+ },
100
+ ],
101
+ });
120
102
  }
121
103
  catch (error) {
122
- await record("FAILED");
123
- throw new Error(options.redact(error instanceof Error ? error.message : String(error)));
104
+ options.protocolLost();
105
+ throw error;
124
106
  }
125
- await record(result.isError === true ? "FAILED" : "SUCCEEDED");
126
- return {
127
- ...result,
128
- ...(result.details !== undefined
129
- ? { details: redactValues(result.details, options.redact) }
130
- : {}),
131
- ...(result.structuredContent !== undefined
132
- ? { structuredContent: redactValues(result.structuredContent, options.redact) }
133
- : {}),
134
- content: result.content.map((part) => part.type === "text" ? { ...part, text: options.redact(part.text) } : part),
135
- };
136
- },
137
- });
138
- }
139
- };
140
- return { extension, names, platformNames, toolCallId, shell };
141
- }
142
- function redactValues(value, redact) {
143
- if (typeof value === "string")
144
- return redact(value);
145
- if (Array.isArray(value))
146
- return value.map((item) => redactValues(item, redact));
147
- if (value && typeof value === "object")
148
- return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, redactValues(item, redact)]));
149
- return value;
107
+ };
108
+ try {
109
+ result = await definition.execute(id, args, signal, update, context);
110
+ }
111
+ catch (error) {
112
+ await record("FAILED");
113
+ throw error;
114
+ }
115
+ await record(result.isError === true ? "FAILED" : "SUCCEEDED");
116
+ return result;
117
+ },
118
+ }),
119
+ });
120
+ return { ...live, names: initial.activeToolNames, platformNames, toolCallId, shell };
150
121
  }
151
122
  //# sourceMappingURL=general-run-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"general-run-tools.js","sourceRoot":"","sources":["../src/general-run-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"general-run-tools.js","sourceRoot":"","sources":["../src/general-run-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"host-status.d.ts","sourceRoot":"","sources":["../src/host-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAIjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,SAAS,EAAiC,MAAM,YAAY,CAAC;AAG3E,eAAO,MAAM,sBAAsB,QAAe,CAAC;AACnD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClD,KAAK,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClE,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IACtD,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,8BAA8B,EAAE,GAAG,SAAS,CAAC;CAC1D,CAAC;AAEF,oFAAoF;AACpF,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAV1B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,YAAY,CAAqB;gBAGtB,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,MAAM,YAAA;IAGlC,IAAI,OAAO,YAEV;IAED,SAAS;IAIT,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM;IAQpB,MAAM,CAAC,UAAU,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAgBnC,aAAa;CAgD5B;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE;;;;iBAWy96Q,0DAAsB;qBAA0D,0DAAsB;iBAAsD,0DAAsB;oBAAyD,0DAAsB;kBAAuD,0DAAsB;mBAAwD,0DAAsB;iBAAsD,0DAAsB;;;oBAA8G,0DAAsB;;;;+BAA+J,0DAAsB;;;GADxy8Q"}
1
+ {"version":3,"file":"host-status.d.ts","sourceRoot":"","sources":["../src/host-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAIjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,SAAS,EAAiC,MAAM,YAAY,CAAC;AAG3E,eAAO,MAAM,sBAAsB,QAAe,CAAC;AACnD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClD,KAAK,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClE,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IACtD,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,8BAA8B,EAAE,GAAG,SAAS,CAAC;CAC1D,CAAC;AAEF,oFAAoF;AACpF,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAV1B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,YAAY,CAAqB;gBAGtB,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,MAAM,YAAA;IAGlC,IAAI,OAAO,YAEV;IAED,SAAS;IAIT,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM;IAQpB,MAAM,CAAC,UAAU,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAgBnC,aAAa;CAgD5B;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE;;;;iBAWg57Q,0DAAsB;qBAA0D,0DAAsB;iBAAsD,0DAAsB;oBAAyD,0DAAsB;kBAAuD,0DAAsB;mBAAwD,0DAAsB;iBAAsD,0DAAsB;;;oBAA8G,0DAAsB;;;;+BAA+J,0DAAsB;;;GAD/t9Q"}
@@ -1,4 +1,3 @@
1
- import { type AgentSession, type ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
1
  import type { PlatformClient } from "./platform-client.js";
3
2
  export type TeamMember = string;
4
3
  export type EmployeeConfig = Awaited<ReturnType<PlatformClient["employeeConfig"]>>;
@@ -12,7 +11,7 @@ export declare function liveEmployee(client: Pick<PlatformClient, "employeeConfi
12
11
  }, initial: EmployeeConfig, runRoot: string, team?: boolean, release?: boolean, phase?: "PREPARATION" | "DEVELOPMENT" | "DEPLOYMENT", isClosing?: () => boolean, executionContext?: () => string, onTerminalClose?: () => void, options?: {
13
12
  child?: boolean;
14
13
  }): {
15
- extension: ExtensionFactory;
16
- attach: (session: AgentSession) => void;
14
+ extension: import("@earendil-works/pi-coding-agent").ExtensionFactory;
15
+ attach: (session: import("@earendil-works/pi-coding-agent").AgentSession) => void;
17
16
  };
18
17
  //# sourceMappingURL=live-employee.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"live-employee.d.ts","sourceRoot":"","sources":["../src/live-employee.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,YAAY,EAQjB,KAAK,gBAAgB,EAGtB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAGnF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,IAAI,UAAO,EACX,MAAM,GAAE,aAAa,GAAG,aAAa,GAAG,YAA4B,EACpE,QAAQ,UAAQ,EAChB,KAAK,UAAQ,UAiCd;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,GAAG,cAAc,CAAC,EAC/D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,EACf,IAAI,UAAO,EACX,OAAO,UAAQ,EACf,KAAK,GAAE,aAAa,GAAG,aAAa,GAAG,YAA4B,EACnE,SAAS,GAAE,MAAM,OAAqB,EACtC,gBAAgB,GAAE,MAAM,MAAiB,EACzC,eAAe,GAAE,MAAM,IAAe,EACtC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO;;sBA2XR,YAAY;EAsDtC"}
1
+ {"version":3,"file":"live-employee.d.ts","sourceRoot":"","sources":["../src/live-employee.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACnF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,IAAI,UAAO,EACX,MAAM,GAAE,aAAa,GAAG,aAAa,GAAG,YAA4B,EACpE,QAAQ,UAAQ,EAChB,KAAK,UAAQ,UAiCd;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,GAAG,cAAc,CAAC,EAC/D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,EACf,IAAI,UAAO,EACX,OAAO,UAAQ,EACf,KAAK,GAAE,aAAa,GAAG,aAAa,GAAG,YAA4B,EACnE,SAAS,GAAE,MAAM,OAAqB,EACtC,gBAAgB,GAAE,MAAM,MAAiB,EACzC,eAAe,GAAE,MAAM,IAAe,EACtC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO;;;EA4ClC"}