@gt-fe/eap-runtime 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +3 -1
  2. package/dist/api/handlers/invoke.handler.d.ts +1 -1
  3. package/dist/api/handlers/invoke.handler.js +3 -0
  4. package/dist/api/handlers/stream.handler.d.ts +1 -1
  5. package/dist/api/handlers/stream.handler.js +4 -1
  6. package/dist/api/routes/agent.routes.d.ts +2 -2
  7. package/dist/common/index.d.ts +1 -0
  8. package/dist/common/index.js +1 -0
  9. package/dist/common/logger.d.ts +16 -4
  10. package/dist/common/logger.js +82 -16
  11. package/dist/common/runtime-package-version.d.ts +2 -0
  12. package/dist/common/runtime-package-version.js +5 -0
  13. package/dist/common/types.d.ts +5 -5
  14. package/dist/common/types.js +2 -2
  15. package/dist/contracts/permission-checker.d.ts +1 -1
  16. package/dist/debug/llm-turn-log.d.ts +12 -0
  17. package/dist/debug/llm-turn-log.js +1 -0
  18. package/dist/governance/governance-client.d.ts +1 -1
  19. package/dist/governance/index.d.ts +1 -1
  20. package/dist/governance/permission-guard.d.ts +1 -1
  21. package/dist/graph/adapters/langgraph.adapter.d.ts +3 -1
  22. package/dist/graph/adapters/langgraph.adapter.js +67 -14
  23. package/dist/graph/adapters/subgraph-compiler.js +5 -2
  24. package/dist/graph/contracts/executable-graph.d.ts +19 -8
  25. package/dist/graph/contracts/executable-graph.js +1 -1
  26. package/dist/graph/nodes/llm-node.d.ts +3 -0
  27. package/dist/graph/nodes/llm-node.js +8 -0
  28. package/dist/graph/nodes/skill-bind-node.d.ts +3 -4
  29. package/dist/graph/nodes/skill-bind-node.js +1 -20
  30. package/dist/graph/nodes/tool-node.d.ts +2 -0
  31. package/dist/graph/nodes/tool-node.js +20 -14
  32. package/dist/index.d.ts +1 -1
  33. package/dist/memory/compression/index.d.ts +1 -1
  34. package/dist/memory/compression/index.js +1 -1
  35. package/dist/memory/compression/sliding-window.compression.js +7 -7
  36. package/dist/memory/index.d.ts +1 -1
  37. package/dist/memory/index.js +1 -1
  38. package/dist/memory/message-compression.service.d.ts +12 -1
  39. package/dist/memory/message-compression.service.js +29 -1
  40. package/dist/providers/http-llm-provider.d.ts +1 -0
  41. package/dist/providers/http-llm-provider.js +4 -1
  42. package/dist/providers/index.d.ts +1 -1
  43. package/dist/providers/index.js +1 -1
  44. package/dist/providers/local-llm-provider.d.ts +4 -1
  45. package/dist/providers/local-llm-provider.js +15 -3
  46. package/dist/providers/routing-llm-provider.js +13 -4
  47. package/dist/registry/agent-models.d.ts +1 -1
  48. package/dist/registry/agent-models.js +1 -1
  49. package/dist/registry/agent-registry-client.d.ts +1 -1
  50. package/dist/registry/deployment-snapshot.js +19 -17
  51. package/dist/registry/graph-loader.d.ts +11 -1
  52. package/dist/registry/graph-loader.js +115 -56
  53. package/dist/registry/preload-errors.d.ts +1 -1
  54. package/dist/registry/preload-errors.js +1 -1
  55. package/dist/registry/skill-io-guard.js +1 -1
  56. package/dist/registry/skill-tree.js +1 -1
  57. package/dist/runtime/agent-runtime.d.ts +3 -3
  58. package/dist/runtime/agent-runtime.js +14 -4
  59. package/dist/runtime/dev-runtime.d.ts +2 -0
  60. package/dist/runtime/dev-runtime.js +2 -0
  61. package/dist/runtime/types.d.ts +4 -4
  62. package/dist/server.js +1 -1
  63. package/dist/session/compression-middleware.d.ts +2 -1
  64. package/dist/session/compression-middleware.js +7 -4
  65. package/dist/sse/events/skill-events.d.ts +1 -1
  66. package/dist/sse/events/skill-events.js +1 -1
  67. package/dist/sse/events/stats-events.d.ts +9 -0
  68. package/dist/token/compression-budget-integration.d.ts +1 -1
  69. package/dist/token/compression-budget-integration.js +18 -10
  70. package/dist/token/context-window.d.ts +42 -0
  71. package/dist/token/context-window.js +73 -0
  72. package/dist/token/index.d.ts +1 -0
  73. package/dist/token/index.js +1 -0
  74. package/dist/tool/create-tool-executor.d.ts +1 -1
  75. package/dist/tool/dev-http-executor.d.ts +2 -1
  76. package/dist/tool/dev-http-executor.js +14 -2
  77. package/dist/tool/dev-mcp-executor.d.ts +11 -1
  78. package/dist/tool/dev-mcp-executor.js +27 -1
  79. package/dist/tool/dev-tool-executor.d.ts +2 -1
  80. package/dist/tool/dev-tool-executor.js +6 -0
  81. package/dist/tool/harness-command.js +1 -1
  82. package/dist/tool/harness-primitives.d.ts +7 -0
  83. package/dist/tool/harness-primitives.js +57 -6
  84. package/dist/tool/http-tool-executor.js +1 -1
  85. package/dist/tool/index.d.ts +2 -1
  86. package/dist/tool/index.js +1 -0
  87. package/dist/tool/local-mcp-client.d.ts +5 -2
  88. package/dist/tool/local-mcp-client.js +130 -3
  89. package/dist/tool/local-tool-executor.d.ts +3 -2
  90. package/dist/tool/local-tool-executor.js +16 -1
  91. package/dist/tool/mcp-list.d.ts +53 -0
  92. package/dist/tool/mcp-list.js +199 -0
  93. package/dist/tool/mcp-tool-executor.d.ts +6 -1
  94. package/dist/tool/mcp-tool-executor.js +53 -1
  95. package/dist/tool/skill-dir-infer.d.ts +17 -0
  96. package/dist/tool/skill-dir-infer.js +81 -0
  97. package/dist/tool/skill-script-refs.d.ts +1 -8
  98. package/dist/tool/skill-script-refs.js +32 -20
  99. package/dist/tool/system-prompt-builder.d.ts +35 -16
  100. package/dist/tool/system-prompt-builder.js +30 -58
  101. package/dist/tool/timeout.d.ts +2 -2
  102. package/dist/tool/timeout.js +6 -3
  103. package/dist/tool/tool-execution-router.d.ts +3 -2
  104. package/dist/tool/tool-execution-router.js +8 -1
  105. package/dist/tool/tool-executor.interface.d.ts +11 -0
  106. package/dist/tool/tool-orchestrator.d.ts +1 -1
  107. package/dist/tool/tool-orchestrator.js +1 -1
  108. package/dist/utils/format-error.d.ts +2 -2
  109. package/dist/utils/format-error.js +2 -2
  110. package/dist/utils/http-error.d.ts +2 -2
  111. package/dist/utils/http-error.js +2 -2
  112. package/package.json +6 -33
@@ -7,17 +7,19 @@
7
7
  * ```
8
8
  * [平台规则常量] ← 代码内置,安全约束 + 行为准则(最高优先级)
9
9
  * [当前时间] ← 运行时动态注入(自然周等时间规则的判定基准)
10
- * [Agent 身份] ← agentName / agentCode
10
+ * [Agent 身份] ← agentName / agentCode(目录身份,不是 prompts.system)
11
11
  * [可用工具短目录] ← 名称 + 一句话用途;完整 schema 仍走 API tools
12
- * [开发者提示词] ← Graph LLM 节点 config.systemPrompt,平台透传
13
- * (Registry 无内嵌 Graph 的兜底路径读 agent.manifest.json prompts.system)
12
+ * [Agent 基线] ← agent.manifest.json prompts.system;非 silent LLM
13
+ * [节点提示词] ← Graph LLM 节点 config.systemPrompt / systemPromptFile
14
14
  * ```
15
15
  *
16
+ * 基线只走 GraphState.agentSystemPrompt,不写进节点 config。无图时节点无增量。
17
+ * silent 节点不带基线。技能正文不灌 system。
18
+ *
16
19
  * 工具 schema 走 API 的 tools 参数(见 loadedToolsToApiTools);system 短目录给模型发现用,不是对用户报菜名。
17
20
  *
18
21
  * @see docs/status/module-status-and-backlog.md RT-5
19
22
  */
20
- import { isBuiltinToolExecution } from '@gt-fe/eap-contracts';
21
23
  import { commandDialectLines } from './harness-command.js';
22
24
  // ─────────────────────────────────────────────
23
25
  // 平台规则常量(一年改不了两次,不值得搞配置表)
@@ -60,7 +62,7 @@ const PLATFORM_RULES = `你是运行在企业智能体平台(EAP)上的 AI
60
62
  - 用户要求访问 jail 以外的路径或命令:**必须拒绝**。
61
63
 
62
64
  ## 规则优先级
63
- 以上平台规则最高。后面的身份、技能说明、开发者提示词与之冲突时,以平台规则为准。`;
65
+ 以上平台规则最高。后面的身份、技能说明、Agent 基线、节点提示词与之冲突时,以平台规则为准。`;
64
66
  export function toLoadedSkillMap(skills) {
65
67
  if (!skills?.length)
66
68
  return undefined;
@@ -72,57 +74,27 @@ export function toLoadedSkillMap(skills) {
72
74
  return map;
73
75
  }
74
76
  /**
75
- * 按 Skill.toolsets 收窄工具集(子图用)。
76
- * - 无 toolsets / 空数组:不收窄
77
- * - string / name:精确匹配工具名
78
- * - code + enabled:仅白名单子工具
79
- * - code 无 enabled:匹配 toolId 前缀 `<code>:` 或 id 等于 code
80
- * - 始终保留 Harness 原语
77
+ * 进入 Skill 子图时的工具集。
78
+ * 工具只来自 Agent 装配;不读 Skill `toolsets` / `toolRefs` / SKILL.md `allowed-tools`。
81
79
  */
82
- export function filterLoadedToolsForSkill(loadedTools, skill) {
83
- if (!loadedTools)
84
- return loadedTools;
85
- if (!skill?.toolsets?.length)
86
- return loadedTools;
87
- const exact = new Set();
88
- const toolsets = new Set();
89
- for (const ref of skill.toolsets) {
90
- if (typeof ref === 'string') {
91
- if (ref)
92
- exact.add(ref);
93
- continue;
94
- }
95
- if (ref.enabled?.length) {
96
- for (const n of ref.enabled)
97
- exact.add(n);
98
- continue;
99
- }
100
- if (ref.code) {
101
- toolsets.add(ref.code);
102
- continue;
103
- }
104
- if (ref.name)
105
- exact.add(ref.name);
106
- }
107
- const out = {};
108
- for (const [name, def] of Object.entries(loadedTools)) {
109
- if (isBuiltinToolExecution(def.manifest.execution)) {
110
- out[name] = def;
111
- continue;
112
- }
113
- const tid = String(def.toolId ?? def.manifest.id ?? '');
114
- if (exact.has(name) || exact.has(tid) || (def.manifest.name && exact.has(def.manifest.name))) {
115
- out[name] = def;
116
- continue;
117
- }
118
- for (const ts of toolsets) {
119
- if (tid === ts || tid.startsWith(`${ts}:`) || name === ts) {
120
- out[name] = def;
121
- break;
122
- }
123
- }
124
- }
125
- return out;
80
+ export function filterLoadedToolsForSkill(loadedTools, _skill) {
81
+ return loadedTools;
82
+ }
83
+ function trimPrompt(value) {
84
+ if (typeof value !== 'string')
85
+ return undefined;
86
+ const trimmed = value.trim();
87
+ return trimmed ? trimmed : undefined;
88
+ }
89
+ /**
90
+ * 非 silent LLM 才带 Agent 基线;节点提示词空则省略。
91
+ * silent 只保留节点增量(选技能 / JSON)。
92
+ */
93
+ export function resolveLlmPromptInputs(input) {
94
+ return {
95
+ agentPrompt: input.silent ? undefined : trimPrompt(input.agentSystemPrompt),
96
+ nodePrompt: trimPrompt(input.nodePrompt),
97
+ };
126
98
  }
127
99
  // ─────────────────────────────────────────────
128
100
  // SystemPromptBuilder
@@ -132,7 +104,7 @@ export function filterLoadedToolsForSkill(loadedTools, skill) {
132
104
  *
133
105
  * 具名段拼接(无模板引擎)。顺序固定,段标题用于排查。
134
106
  * 工具短目录进 system;完整 schema 走 API tools 参数。
135
- * 开发者提示词整段透传,不做 {{ }} 替换。
107
+ * Agent 基线与节点提示词整段透传,不做 {{ }} 替换。
136
108
  */
137
109
  export class SystemPromptBuilder {
138
110
  /**
@@ -155,7 +127,8 @@ export class SystemPromptBuilder {
155
127
  add('jail', '文件与命令权限', this.buildJail(context));
156
128
  add('tools-catalog', '可用工具', context.toolCatalog);
157
129
  add('skills-catalog', '可用技能', context.skillCatalog);
158
- add('developer', '开发者提示词', context.developerPrompt);
130
+ add('agent', 'Agent 基线', context.agentPrompt);
131
+ add('node', '节点提示词', context.nodePrompt);
159
132
  const text = sections
160
133
  .map((section) => `<!-- eap:${section.id} -->\n${section.body}`)
161
134
  .join('\n\n');
@@ -194,7 +167,6 @@ export class SystemPromptBuilder {
194
167
  if (workdir) {
195
168
  lines.push(`工作目录:${workdir}`);
196
169
  lines.push('`execute_command` 的 cwd **必须**是工作目录或其子目录,不能是预装技能/工具包。');
197
- lines.push('技能包只读。跑包内文件用环境变量 `EAP_SKILL_DIR`(技能包绝对根,不限 `scripts/`)。相对写出在工作目录。');
198
170
  }
199
171
  lines.push(...commandDialectLines(context.os?.platform ?? process.platform));
200
172
  if (skills.length > 0) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Tool / toolset `timeout`:秒。
3
- * 与 `@gt-fe/eap-contracts` `src/tool/timeout.ts` 同语义;Runtime 钉的是 contracts 0.0.9,
4
- * 尚未含这些导出。发版 contracts 后改为从 `@gt-fe/eap-contracts` 引用。
3
+ * 与 `@eap/contracts` `src/tool/timeout.ts` 同语义;Runtime 钉的是 contracts 0.0.9,
4
+ * 尚未含这些导出。发版 contracts 后改为从 `@eap/contracts` 引用。
5
5
  */
6
6
  export declare const DEFAULT_TOOL_TIMEOUT_SEC = 30;
7
7
  export declare const DEFAULT_HTTP_TOOL_TIMEOUT_SEC = 10;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Tool / toolset `timeout`:秒。
3
- * 与 `@gt-fe/eap-contracts` `src/tool/timeout.ts` 同语义;Runtime 钉的是 contracts 0.0.9,
4
- * 尚未含这些导出。发版 contracts 后改为从 `@gt-fe/eap-contracts` 引用。
3
+ * 与 `@eap/contracts` `src/tool/timeout.ts` 同语义;Runtime 钉的是 contracts 0.0.9,
4
+ * 尚未含这些导出。发版 contracts 后改为从 `@eap/contracts` 引用。
5
5
  */
6
6
  export const DEFAULT_TOOL_TIMEOUT_SEC = 30;
7
7
  export const DEFAULT_HTTP_TOOL_TIMEOUT_SEC = 10;
@@ -24,7 +24,10 @@ export function isAbortError(error) {
24
24
  return true;
25
25
  }
26
26
  const msg = (err.message ?? '').toLowerCase();
27
- return msg === 'this operation was aborted' || msg === 'the operation was aborted';
27
+ return (msg === 'this operation was aborted'
28
+ || msg === 'the operation was aborted'
29
+ || msg.includes('this operation was aborted')
30
+ || msg.includes('the operation was aborted'));
28
31
  }
29
32
  export function toolTimeoutErrorMessage(timeoutSec) {
30
33
  return `timeout after ${resolveToolTimeoutSec(timeoutSec)}s`;
@@ -4,8 +4,8 @@
4
4
  * @see docs/contracts/tool-execution.md §6
5
5
  * @see design.md §1.8.7
6
6
  */
7
- import type { IToolExecutor, ToolCallRequest } from './tool-executor.interface.js';
8
- import type { ILocalToolInstallStore } from '@gt-fe/eap-contracts';
7
+ import type { IToolExecutor, McpListedTool, ToolCallRequest } from './tool-executor.interface.js';
8
+ import type { ILocalToolInstallStore } from '@eap/contracts';
9
9
  export type DeploymentContext = 'server' | 'desktop' | 'dev';
10
10
  export interface ToolExecutionRouterOptions {
11
11
  httpExecutor: IToolExecutor;
@@ -21,5 +21,6 @@ export declare class ToolExecutionRouter implements IToolExecutor {
21
21
  private readonly options;
22
22
  constructor(options: ToolExecutionRouterOptions);
23
23
  execute(request: ToolCallRequest): Promise<import('./tool-executor.interface.js').ToolCallResult>;
24
+ listTools(request: ToolCallRequest): Promise<McpListedTool[]>;
24
25
  private pickExecutor;
25
26
  }
@@ -4,7 +4,7 @@
4
4
  * @see docs/contracts/tool-execution.md §6
5
5
  * @see design.md §1.8.7
6
6
  */
7
- import { resolveReadyInstallByToolName } from '@gt-fe/eap-contracts';
7
+ import { resolveReadyInstallByToolName } from '@eap/contracts';
8
8
  import { isLocalPreferredExecution } from './local-tool-executor.js';
9
9
  export class ToolExecutionRouter {
10
10
  options;
@@ -19,6 +19,13 @@ export class ToolExecutionRouter {
19
19
  }
20
20
  return result;
21
21
  }
22
+ async listTools(request) {
23
+ const executor = await this.pickExecutor(request);
24
+ if (typeof executor.listTools !== 'function') {
25
+ throw new Error('当前执行器不支持 MCP tools/list');
26
+ }
27
+ return executor.listTools(request);
28
+ }
22
29
  async pickExecutor(request) {
23
30
  const { deploymentContext, installStore, httpExecutor, localExecutor, toolTypes, toolRuntimes, forceToolServer, } = this.options;
24
31
  const forcedServer = Boolean(request.forceServer) || Boolean(forceToolServer?.includes(request.toolName));
@@ -93,9 +93,20 @@ export interface LLMToolCall {
93
93
  export interface LLMToolCallResponse {
94
94
  toolCalls: LLMToolCall[];
95
95
  }
96
+ /** MCP `tools/list` 条目(LLM function calling 的名称 / 描述 / schema) */
97
+ export interface McpListedTool {
98
+ name: string;
99
+ description?: string;
100
+ inputSchema?: Record<string, unknown>;
101
+ }
96
102
  /**
97
103
  * IToolExecutor — Tool 执行网关接口
98
104
  */
99
105
  export interface IToolExecutor {
100
106
  execute(request: ToolCallRequest): Promise<ToolCallResult>;
107
+ /**
108
+ * MCP `tools/list`。`type: mcp` 工具集忽略清单 `tools[]`,用本方法发现子工具。
109
+ * 未实现时 hydrate 在存在 discover stub 时失败。
110
+ */
111
+ listTools?(request: ToolCallRequest): Promise<McpListedTool[]>;
101
112
  }
@@ -4,7 +4,7 @@
4
4
  * @see design.md §1.1 Tool调用编排
5
5
  * @see requirements.md Requirement 8 AC1, AC3
6
6
  */
7
- import { type ExecutionContext } from '@gt-fe/eap-contracts';
7
+ import { type ExecutionContext } from '@eap/contracts';
8
8
  import type { IGovernanceClient } from '../governance/governance-client.js';
9
9
  export type { AuthContext, ToolCallRequest, ToolCallResult, LLMToolCall, LLMToolCallResponse, IToolExecutor, } from './tool-executor.interface.js';
10
10
  import type { AuthContext, ToolCallRequest, ToolCallResult, LLMToolCallResponse, IToolExecutor } from './tool-executor.interface.js';
@@ -4,7 +4,7 @@
4
4
  * @see design.md §1.1 Tool调用编排
5
5
  * @see requirements.md Requirement 8 AC1, AC3
6
6
  */
7
- import { isBuiltinToolExecution } from '@gt-fe/eap-contracts';
7
+ import { isBuiltinToolExecution } from '@eap/contracts';
8
8
  import { assertToolPermission, GovernanceUnavailableError, PermissionDeniedError, } from '../governance/permission-guard.js';
9
9
  /**
10
10
  * ToolOrchestrator — Tool 调用编排主服务
@@ -1,4 +1,4 @@
1
1
  /**
2
- * 将未知异常格式化为可读字符串 — 委托 @gt-fe/eap-contracts
2
+ * 将未知异常格式化为可读字符串 — 委托 @eap/contracts
3
3
  */
4
- export { formatUnknownError } from '@gt-fe/eap-contracts';
4
+ export { formatUnknownError } from '@eap/contracts';
@@ -1,4 +1,4 @@
1
1
  /**
2
- * 将未知异常格式化为可读字符串 — 委托 @gt-fe/eap-contracts
2
+ * 将未知异常格式化为可读字符串 — 委托 @eap/contracts
3
3
  */
4
- export { formatUnknownError } from '@gt-fe/eap-contracts';
4
+ export { formatUnknownError } from '@eap/contracts';
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Runtime HTTP 错误出口 — 对齐 @gt-fe/eap-contracts ErrorCodes / AppError
2
+ * Runtime HTTP 错误出口 — 对齐 @eap/contracts ErrorCodes / AppError
3
3
  */
4
- import { type ErrorCode, type AppError } from '@gt-fe/eap-contracts';
4
+ import { type ErrorCode, type AppError } from '@eap/contracts';
5
5
  import type { ServerResponse } from 'node:http';
6
6
  /** 公共 classify;连接失败不再误标为 GOVERNANCE_UNAVAILABLE */
7
7
  export declare function classifyRuntimeError(error: unknown): AppError;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Runtime HTTP 错误出口 — 对齐 @gt-fe/eap-contracts ErrorCodes / AppError
2
+ * Runtime HTTP 错误出口 — 对齐 @eap/contracts ErrorCodes / AppError
3
3
  */
4
- import { classifyError, formatUnknownError, ErrorCodes, } from '@gt-fe/eap-contracts';
4
+ import { classifyError, formatUnknownError, ErrorCodes, } from '@eap/contracts';
5
5
  /** 公共 classify;连接失败不再误标为 GOVERNANCE_UNAVAILABLE */
6
6
  export function classifyRuntimeError(error) {
7
7
  return classifyError(error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gt-fe/eap-runtime",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "Enterprise Agent Platform — Runtime核心:Graph执行引擎、Task生命周期、Session管理、Checkpoint持久化",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,43 +14,16 @@
14
14
  "files": [
15
15
  "dist"
16
16
  ],
17
- "publishConfig": {
18
- "registry": "https://registry.npmjs.org/",
19
- "access": "public"
20
- },
21
- "scripts": {
22
- "build": "tsc",
23
- "start": "node dist/server.js",
24
- "dev": "npx tsx src/server.ts",
25
- "clean": "rm -rf dist",
26
- "prepublishOnly": "npm run clean && npm run build",
27
- "lint": "eslint src --ext .ts",
28
- "test": "vitest run"
29
- },
30
- "keywords": [
31
- "eap",
32
- "runtime",
33
- "agent",
34
- "langgraph",
35
- "graph-engine"
36
- ],
37
17
  "license": "UNLICENSED",
38
18
  "dependencies": {
39
19
  "@langchain/langgraph": "^0.2.0",
40
20
  "ioredis": "^5.4.0",
41
21
  "pg": "^8.13.0",
42
22
  "yaml": "^2.6.1",
43
- "@gt-fe/eap-contracts": "0.0.10"
23
+ "@gt-fe/eap-contracts": "0.0.11"
44
24
  },
45
- "devDependencies": {
46
- "@types/node": "^22.0.0",
47
- "typescript": "^5.5.0",
48
- "vitest": "^2.0.0"
49
- },
50
- "pnpm": {
51
- "onlyBuiltDependencies": [
52
- "esbuild"
53
- ]
54
- },
55
- "packageManager": "pnpm@9.15.9"
25
+ "publishConfig": {
26
+ "registry": "https://registry.npmjs.org/",
27
+ "access": "public"
28
+ }
56
29
  }