@gencode/shared 0.0.19 → 0.1.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/CHANGELOG.md ADDED
@@ -0,0 +1,21 @@
1
+ # @gencode/shared
2
+
3
+ ## 0.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 71b3e30: Add stable session metadata types to @gencode/shared, expand memory tool suite, and switch subagent spawn to synchronous result delivery.
8
+
9
+ - @gencode/shared: export `SessionSummary` and `SessionMetadata` types for cross-package use
10
+ - @gencode/agents: add memory_write, memory_log, memory_list, memory_forget, memory_update tools; improve memory tool descriptions and system prompt guidance; change subagent spawn from async acceptance to synchronous result return; suppress redundant assistant text after subagent completion
11
+ - @gencode/cli: update memory tool test coverage to match new tools
12
+
13
+ ### Patch Changes
14
+
15
+ - 350b9d1: Add a publish-time changelog guard and include package changelogs in npm artifacts.
16
+
17
+ ## 0.0.20
18
+
19
+ ### Patch Changes
20
+
21
+ - Establish the initial changelog baseline for the current published package version.
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # @gencode/shared
2
+
3
+ ## 包定位
4
+
5
+ `@gencode/shared` 负责跨包共享的稳定类型与协议定义。
6
+ 它存在的目的,是防止 `agents`、`cli`、`web` 等包之间出现协议漂移和镜像定义。
7
+
8
+ ## 负责内容
9
+
10
+ 这个包适合承载:
11
+ - 稳定共享类型
12
+ - 被多个包复用的 request / response 协议结构
13
+ - callback payload 结构
14
+ - websocket 事件载荷结构
15
+ - 共享的 run-event / progress-event 定义
16
+ - HITL、UI-tool 等跨包共享契约
17
+
18
+ ## 不负责内容
19
+
20
+ 这个包不应包含:
21
+ - 包特定的运行时编排逻辑
22
+ - transport 副作用
23
+ - Web 服务行为
24
+ - CLI 命令逻辑
25
+ - agent 领域逻辑
26
+
27
+ ## 当前源码入口
28
+
29
+ 阅读本包时,建议先看:
30
+ - `src/index.ts` —— 对外导出入口
31
+ - `src/agent-progress.ts`
32
+ - `src/context-protocol.ts`
33
+ - `src/hitl.ts`
34
+ - `src/run-events.ts`
35
+ - `src/ui-tool.ts`
36
+
37
+ 当前测试包括:
38
+ - `src/agent-progress.test.ts`
39
+ - `src/context-protocol.test.ts`
40
+ - `src/hitl.test.ts`
41
+ - `src/run-events.test.ts`
42
+ - `src/ui-tool.test.ts`
43
+
44
+ 当 `dist/` 存在时,应将其视为构建输出,而不是源码事实来源。
45
+
46
+ ## 与其他包的关系
47
+
48
+ - 当 `@gencode/agents` 的内部结果需要对外形成稳定共享结构时,应优先使用本包
49
+ - `@gencode/cli` 应尽量消费本包中的共享协议,而不是本地重新定义
50
+ - `@gencode/web` 在消费 CLI 输出时,也应尽量与本包中的契约保持一致
51
+
52
+ ## 开发说明
53
+
54
+ 一个类型或协议通常应该放在这里,当它满足以下条件之一:
55
+ - 被多个包共同依赖
56
+ - 描述了稳定的跨包契约
57
+ - 若出现镜像定义,漂移风险较高
58
+
59
+ 一个类型通常不应放在这里,当它:
60
+ - 只在单个包内使用
61
+ - 仅服务于某个内部实现细节
62
+ - 附带运行时行为,而不是共享结构
63
+
64
+ ## 验证
65
+
66
+ 在工作区根目录可运行:
67
+
68
+ ```bash
69
+ pnpm -C source/packages/shared test
70
+ ```
71
+
72
+ 工作区级验证:
73
+
74
+ ```bash
75
+ pnpm -C source typecheck
76
+ pnpm -C source test
77
+ ```
78
+
79
+ ## 相关规格文档
80
+
81
+ - `../../../specs/system-overview.md`
82
+ - `../../../specs/architecture-boundaries.md`
83
+ - `../../../specs/repo-map.md`
84
+ - `../../../specs/implementation-backlog.md`
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export { isAgentDiagnosticEvent } from "./agent-progress.js";
5
5
  export { formatTaskForDisplay } from "./task-display.js";
6
6
  export type { AgentCustomProgressEvent, AgentDiagnosticEvent, AgentDiagnosticLevel, AgentDiagnosticScope, AgentProgressEvent, AgentProgressEventBase, } from "./agent-progress.js";
7
7
  export type { CallbackEventPayload, Channel, RunResultPayload, StreamEnvelope, StreamEventName, } from "./run-events.js";
8
+ export type { SessionMetadata, SessionSummary } from "./session.js";
8
9
  export type { CollapseSpan, CompressionLayer, ContextCompactionState, ModelUsageCheckpoint, ReadStateRecord, SessionMemorySnapshot, SessionContextSnapshot, SnipRecord, ToolResultReference, ToolResultBudgetRecord, } from "./context-protocol.js";
9
10
  export { isHitlPending, isHitlResolved, isHitlExpired, isHitlTool, HITL_TOOL_NAMES, parseMatchedTextToResolution, parseTextToResolution, } from "./hitl.js";
10
11
  export type { HitlKind, HitlChoice, HitlChoiceInput, HitlTextInput, HitlFormInput, HitlInputSchema, HitlPreview, HitlPolicy, HitlRequest, HitlResolution, HitlCheckpointPhase, HitlCheckpoint, HitlToolContext, HitlStatus, PausedRunState, HitlHistoryEntry, } from "./hitl.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,UAAU,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EACV,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,UAAU,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EACV,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA6BzD,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAoBnB,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA8BzD,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAoBnB,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Channel } from "./run-events.js";
2
+ /**
3
+ * Stable cross-package session summary shape.
4
+ *
5
+ * This type is intended for list / query / display scenarios shared across
6
+ * packages such as agents, cli, and future web integrations.
7
+ */
8
+ export type SessionSummary = {
9
+ id: string;
10
+ title: string;
11
+ channel: Channel;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ };
15
+ /**
16
+ * Stable cross-package session metadata record.
17
+ *
18
+ * This type represents the canonical persisted metadata envelope for a session
19
+ * without including transcript, context snapshot, or export-specific payloads.
20
+ */
21
+ export type SessionMetadata = {
22
+ id: string;
23
+ title: string;
24
+ channel: Channel;
25
+ createdAt: string;
26
+ updatedAt: string;
27
+ };
28
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gencode/shared",
3
- "version": "0.0.19",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./config": {
@@ -13,7 +13,8 @@
13
13
  }
14
14
  },
15
15
  "files": [
16
- "dist"
16
+ "dist",
17
+ "CHANGELOG.md"
17
18
  ],
18
19
  "publishConfig": {
19
20
  "access": "public"
@@ -1,89 +0,0 @@
1
- /**
2
- * Agent configuration management for Pingclaw.
3
- * Handles loading/saving agents.json from .pingancoder directory.
4
- */
5
- import type { AgentsConfig, AgentConfig, AgentBinding, AgentModelConfig } from "./agents.js";
6
- export declare const AGENTS_CONFIG_FILE = "agents.json";
7
- /**
8
- * Resolves the .pingancoder directory path within a data directory.
9
- */
10
- export declare function pingancoderDir(dataDir: string): string;
11
- /**
12
- * Resolves the agents configuration file path.
13
- */
14
- export declare function resolveAgentsConfigPath(dataDir: string): string;
15
- /**
16
- * Resolves the agent-specific directory path.
17
- */
18
- export declare function resolveAgentDir(dataDir: string, agentId: string): string;
19
- /**
20
- * Resolves the subagent registry path.
21
- */
22
- export declare function resolveSubagentRegistryPath(dataDir: string): string;
23
- /**
24
- * Loads the agents configuration from disk.
25
- * Returns a default config if the file doesn't exist.
26
- */
27
- export declare function loadAgentsConfig(dataDir: string): Promise<AgentsConfig>;
28
- /**
29
- * Saves the agents configuration to disk.
30
- */
31
- export declare function saveAgentsConfig(dataDir: string, config: AgentsConfig): Promise<void>;
32
- /**
33
- * Lists all valid agent configurations.
34
- */
35
- export declare function listAgents(config: AgentsConfig): AgentConfig[];
36
- /**
37
- * Gets the default agent ID.
38
- * Returns the first agent marked as default, or "main" if none found.
39
- */
40
- export declare function resolveDefaultAgentId(config: AgentsConfig): string;
41
- /**
42
- * Normalizes an agent ID (lowercase, trimmed).
43
- */
44
- export declare function normalizeAgentId(id: string | undefined): string;
45
- /**
46
- * Gets an agent configuration by ID.
47
- */
48
- export declare function getAgentConfig(config: AgentsConfig, agentId: string): AgentConfig | undefined;
49
- /**
50
- * Lists all routing bindings.
51
- */
52
- export declare function listBindings(config: AgentsConfig): AgentBinding[];
53
- /**
54
- * Resolves the agent ID for a given channel/account/user combination.
55
- * Returns the agent ID from the first matching binding, or the default agent ID.
56
- */
57
- export declare function resolveAgentIdByBinding(config: AgentsConfig, channel: string, accountId?: string, userId?: string): string;
58
- /**
59
- * Resolves the model string from an AgentModelConfig or plain string.
60
- */
61
- export declare function resolveModelString(model: string | AgentModelConfig | undefined): string | undefined;
62
- /**
63
- * Resolves the model fallbacks from an AgentModelConfig.
64
- */
65
- export declare function resolveModelFallbacks(model: string | AgentModelConfig | undefined): string[] | undefined;
66
- /**
67
- * Adds a new agent to the configuration.
68
- * Returns false if an agent with the same ID already exists.
69
- */
70
- export declare function addAgent(dataDir: string, agent: AgentConfig): Promise<boolean>;
71
- /**
72
- * Removes an agent from the configuration.
73
- * Returns false if the agent doesn't exist or is the default agent.
74
- */
75
- export declare function removeAgent(dataDir: string, agentId: string): Promise<boolean>;
76
- /**
77
- * Adds a routing binding to the configuration.
78
- */
79
- export declare function addBinding(dataDir: string, binding: AgentBinding): Promise<void>;
80
- /**
81
- * Removes routing bindings matching the given criteria.
82
- * If channel is "*", removes all bindings for the agent.
83
- */
84
- export declare function removeBindings(dataDir: string, agentId: string, channel?: string, accountId?: string): Promise<number>;
85
- /**
86
- * Updates an agent's identity configuration.
87
- */
88
- export declare function updateAgentIdentity(dataDir: string, agentId: string, identity: Partial<AgentConfig["identity"]>): Promise<boolean>;
89
- //# sourceMappingURL=agents-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agents-config.d.ts","sourceRoot":"","sources":["../../src/config/agents-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7F,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAExE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwB7E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAO9D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAIlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GACd,WAAW,GAAG,SAAS,CAGzB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,EAAE,CAOjE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,GAC3C,MAAM,GAAG,SAAS,CAIpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,GAC3C,MAAM,EAAE,GAAG,SAAS,CAGtB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GACzC,OAAO,CAAC,OAAO,CAAC,CAuBlB"}
@@ -1,258 +0,0 @@
1
- /**
2
- * Agent configuration management for Pingclaw.
3
- * Handles loading/saving agents.json from .pingancoder directory.
4
- */
5
- import fs from "node:fs/promises";
6
- import path from "node:path";
7
- export const AGENTS_CONFIG_FILE = "agents.json";
8
- /**
9
- * Resolves the .pingancoder directory path within a data directory.
10
- */
11
- export function pingancoderDir(dataDir) {
12
- return path.join(dataDir, ".pingancoder");
13
- }
14
- /**
15
- * Resolves the agents configuration file path.
16
- */
17
- export function resolveAgentsConfigPath(dataDir) {
18
- return path.join(pingancoderDir(dataDir), AGENTS_CONFIG_FILE);
19
- }
20
- /**
21
- * Resolves the agent-specific directory path.
22
- */
23
- export function resolveAgentDir(dataDir, agentId) {
24
- return path.join(pingancoderDir(dataDir), "agents", agentId);
25
- }
26
- /**
27
- * Resolves the subagent registry path.
28
- */
29
- export function resolveSubagentRegistryPath(dataDir) {
30
- return path.join(pingancoderDir(dataDir), "subagents", "runs.json");
31
- }
32
- /**
33
- * Loads the agents configuration from disk.
34
- * Returns a default config if the file doesn't exist.
35
- */
36
- export async function loadAgentsConfig(dataDir) {
37
- const configPath = resolveAgentsConfigPath(dataDir);
38
- try {
39
- const content = await fs.readFile(configPath, "utf-8");
40
- const parsed = JSON.parse(content);
41
- // Validate and normalize the config
42
- if (!parsed || typeof parsed !== "object") {
43
- throw new Error("Invalid agents config: not an object");
44
- }
45
- if (!Array.isArray(parsed.agents)) {
46
- parsed.agents = [];
47
- }
48
- if (!Array.isArray(parsed.bindings)) {
49
- parsed.bindings = [];
50
- }
51
- return parsed;
52
- }
53
- catch (err) {
54
- const code = err.code;
55
- if (code === "ENOENT") {
56
- // Return default config for new installations
57
- return { agents: [{ id: "main", default: true }] };
58
- }
59
- throw err;
60
- }
61
- }
62
- /**
63
- * Saves the agents configuration to disk.
64
- */
65
- export async function saveAgentsConfig(dataDir, config) {
66
- const configPath = resolveAgentsConfigPath(dataDir);
67
- await fs.mkdir(path.dirname(configPath), { recursive: true });
68
- await fs.writeFile(configPath, JSON.stringify(config, null, 2), "utf-8");
69
- }
70
- /**
71
- * Lists all valid agent configurations.
72
- */
73
- export function listAgents(config) {
74
- if (!Array.isArray(config.agents)) {
75
- return [];
76
- }
77
- return config.agents.filter((a) => a && typeof a === "object" && typeof a.id === "string");
78
- }
79
- /**
80
- * Gets the default agent ID.
81
- * Returns the first agent marked as default, or "main" if none found.
82
- */
83
- export function resolveDefaultAgentId(config) {
84
- const agents = listAgents(config);
85
- const defaultAgent = agents.find(a => a.default === true);
86
- return defaultAgent?.id ?? "main";
87
- }
88
- /**
89
- * Normalizes an agent ID (lowercase, trimmed).
90
- */
91
- export function normalizeAgentId(id) {
92
- if (!id)
93
- return "main";
94
- return id.trim().toLowerCase();
95
- }
96
- /**
97
- * Gets an agent configuration by ID.
98
- */
99
- export function getAgentConfig(config, agentId) {
100
- const normalizedId = normalizeAgentId(agentId);
101
- return listAgents(config).find(a => normalizeAgentId(a.id) === normalizedId);
102
- }
103
- /**
104
- * Lists all routing bindings.
105
- */
106
- export function listBindings(config) {
107
- if (!Array.isArray(config.bindings)) {
108
- return [];
109
- }
110
- return config.bindings.filter((b) => b && typeof b === "object" && typeof b.agentId === "string");
111
- }
112
- /**
113
- * Resolves the agent ID for a given channel/account/user combination.
114
- * Returns the agent ID from the first matching binding, or the default agent ID.
115
- */
116
- export function resolveAgentIdByBinding(config, channel, accountId, userId) {
117
- for (const binding of listBindings(config)) {
118
- const match = binding.match;
119
- if (!match)
120
- continue;
121
- // Match channel
122
- if (match.channel !== channel)
123
- continue;
124
- // Match account if specified
125
- if (match.accountId && match.accountId !== accountId)
126
- continue;
127
- // Match user if specified
128
- if (match.userId && match.userId !== userId)
129
- continue;
130
- return binding.agentId;
131
- }
132
- // No matching binding, use default agent
133
- return resolveDefaultAgentId(config);
134
- }
135
- /**
136
- * Resolves the model string from an AgentModelConfig or plain string.
137
- */
138
- export function resolveModelString(model) {
139
- if (!model)
140
- return undefined;
141
- if (typeof model === "string")
142
- return model;
143
- return model.primary;
144
- }
145
- /**
146
- * Resolves the model fallbacks from an AgentModelConfig.
147
- */
148
- export function resolveModelFallbacks(model) {
149
- if (!model || typeof model === "string")
150
- return undefined;
151
- return model.fallbacks;
152
- }
153
- /**
154
- * Adds a new agent to the configuration.
155
- * Returns false if an agent with the same ID already exists.
156
- */
157
- export async function addAgent(dataDir, agent) {
158
- const config = await loadAgentsConfig(dataDir);
159
- const normalizedId = normalizeAgentId(agent.id);
160
- // Check for existing agent
161
- if (getAgentConfig(config, normalizedId)) {
162
- return false;
163
- }
164
- config.agents = config.agents ?? [];
165
- config.agents.push(agent);
166
- await saveAgentsConfig(dataDir, config);
167
- // Create agent directory
168
- const agentDir = resolveAgentDir(dataDir, agent.id);
169
- await fs.mkdir(agentDir, { recursive: true });
170
- return true;
171
- }
172
- /**
173
- * Removes an agent from the configuration.
174
- * Returns false if the agent doesn't exist or is the default agent.
175
- */
176
- export async function removeAgent(dataDir, agentId) {
177
- const config = await loadAgentsConfig(dataDir);
178
- const normalizedId = normalizeAgentId(agentId);
179
- const index = config.agents?.findIndex(a => a && normalizeAgentId(a.id) === normalizedId);
180
- if (index === undefined || index < 0) {
181
- return false;
182
- }
183
- // Don't allow removing the default agent
184
- if (config.agents?.[index]?.default === true) {
185
- return false;
186
- }
187
- config.agents?.splice(index, 1);
188
- // Remove associated bindings
189
- config.bindings = config.bindings?.filter(b => normalizeAgentId(b.agentId) !== normalizedId);
190
- await saveAgentsConfig(dataDir, config);
191
- return true;
192
- }
193
- /**
194
- * Adds a routing binding to the configuration.
195
- */
196
- export async function addBinding(dataDir, binding) {
197
- const config = await loadAgentsConfig(dataDir);
198
- config.bindings = config.bindings ?? [];
199
- config.bindings.push(binding);
200
- await saveAgentsConfig(dataDir, config);
201
- }
202
- /**
203
- * Removes routing bindings matching the given criteria.
204
- * If channel is "*", removes all bindings for the agent.
205
- */
206
- export async function removeBindings(dataDir, agentId, channel, accountId) {
207
- const config = await loadAgentsConfig(dataDir);
208
- const normalizedAgentId = normalizeAgentId(agentId);
209
- const originalLength = config.bindings?.length ?? 0;
210
- if (channel === "*") {
211
- // Remove all bindings for this agent
212
- config.bindings = config.bindings?.filter(b => normalizeAgentId(b.agentId) !== normalizedAgentId);
213
- }
214
- else {
215
- // Remove matching bindings
216
- config.bindings = config.bindings?.filter(b => {
217
- if (normalizeAgentId(b.agentId) !== normalizedAgentId)
218
- return true;
219
- if (channel && b.match?.channel !== channel)
220
- return true;
221
- if (accountId && b.match?.accountId !== accountId)
222
- return true;
223
- return false;
224
- });
225
- }
226
- const removed = originalLength - (config.bindings?.length ?? 0);
227
- if (removed > 0) {
228
- await saveAgentsConfig(dataDir, config);
229
- }
230
- return removed;
231
- }
232
- /**
233
- * Updates an agent's identity configuration.
234
- */
235
- export async function updateAgentIdentity(dataDir, agentId, identity) {
236
- const config = await loadAgentsConfig(dataDir);
237
- const agent = getAgentConfig(config, agentId);
238
- if (!agent) {
239
- return false;
240
- }
241
- // Initialize identity if not present
242
- const currentIdentity = agent.identity ?? {};
243
- const updatedIdentity = {
244
- ...currentIdentity,
245
- };
246
- if (identity.name !== undefined)
247
- updatedIdentity.name = identity.name;
248
- if (identity.theme !== undefined)
249
- updatedIdentity.theme = identity.theme;
250
- if (identity.emoji !== undefined)
251
- updatedIdentity.emoji = identity.emoji;
252
- if (identity.avatar !== undefined)
253
- updatedIdentity.avatar = identity.avatar;
254
- agent.identity = updatedIdentity;
255
- await saveAgentsConfig(dataDir, config);
256
- return true;
257
- }
258
- //# sourceMappingURL=agents-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agents-config.js","sourceRoot":"","sources":["../../src/config/agents-config.ts"],"names":[],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- /**
2
- * Agent configuration types for Pingclaw multi-agent support.
3
- * Compatible with the .pingancoder/agents.json config file.
4
- */
5
- /**
6
- * Single agent configuration.
7
- * Each agent can have its own model, skills, identity, and subagent settings.
8
- */
9
- export type AgentConfig = {
10
- /** Unique agent identifier */
11
- id: string;
12
- /** Whether this is the default agent */
13
- default?: boolean;
14
- /** Display name (overrides identity.name) */
15
- name?: string;
16
- /** Model configuration (string or object with primary/fallbacks) */
17
- model?: string | AgentModelConfig;
18
- /** Skills allowlist (omit = all skills; empty = none) */
19
- skills?: string[];
20
- /** Identity configuration for display/persona */
21
- identity?: {
22
- name?: string;
23
- theme?: string;
24
- emoji?: string;
25
- avatar?: string;
26
- };
27
- /** Subagent configuration for this agent */
28
- subagents?: {
29
- /** Allow spawning subagents under other agent ids. Use "*" to allow any. */
30
- allowAgents?: string[];
31
- /** Per-agent default model for spawned subagents (string or {primary,fallbacks}). */
32
- model?: string | AgentModelConfig;
33
- };
34
- };
35
- /**
36
- * Model configuration with primary and optional fallbacks.
37
- */
38
- export type AgentModelConfig = {
39
- primary: string;
40
- fallbacks?: string[];
41
- };
42
- /**
43
- * Routing binding configuration.
44
- * Maps channel/account/peer to a specific agent.
45
- */
46
- export type AgentBinding = {
47
- /** Target agent ID for this binding */
48
- agentId: string;
49
- /** Optional comment/description */
50
- comment?: string;
51
- /** Match conditions for this binding */
52
- match: {
53
- /** Channel type: web | klpa-im */
54
- channel: "web" | "klpa-im";
55
- /** Account ID (optional, for multi-account routing) */
56
- accountId?: string;
57
- /** User ID (optional, for user-specific routing) */
58
- userId?: string;
59
- };
60
- };
61
- /**
62
- * Root agents configuration structure.
63
- * Stored in .pingancoder/agents.json
64
- */
65
- export type AgentsConfig = {
66
- /** List of configured agents */
67
- agents: AgentConfig[];
68
- /** Routing bindings (channel -> agent mapping) */
69
- bindings?: AgentBinding[];
70
- /** Default configuration (optional) */
71
- defaults?: {
72
- model?: string | AgentModelConfig;
73
- };
74
- };
75
- //# sourceMappingURL=agents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/config/agents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAClC,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,4CAA4C;IAC5C,SAAS,CAAC,EAAE;QACV,4EAA4E;QAC5E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,qFAAqF;QACrF,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;KACnC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,KAAK,EAAE;QACL,kCAAkC;QAClC,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;QAC3B,uDAAuD;QACvD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,oDAAoD;QACpD,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gCAAgC;IAChC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;KACnC,CAAC;CACH,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Agent configuration types for Pingclaw multi-agent support.
3
- * Compatible with the .pingancoder/agents.json config file.
4
- */
5
- export {};
6
- //# sourceMappingURL=agents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/config/agents.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,9 +0,0 @@
1
- /**
2
- * @pingclaw/shared/config - Configuration management for Pingclaw.
3
- *
4
- * Provides types and functions for managing multi-agent configuration
5
- * stored in .pingancoder/agents.json.
6
- */
7
- export type { AgentConfig, AgentModelConfig, AgentBinding, AgentsConfig, } from "./agents.js";
8
- export { pingancoderDir, resolveAgentsConfigPath, resolveAgentDir, resolveSubagentRegistryPath, loadAgentsConfig, saveAgentsConfig, listAgents, resolveDefaultAgentId, normalizeAgentId, getAgentConfig, listBindings, resolveAgentIdByBinding, resolveModelString, resolveModelFallbacks, addAgent, removeAgent, addBinding, removeBindings, updateAgentIdentity, } from "./agents-config.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACR,WAAW,EACX,UAAU,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * @pingclaw/shared/config - Configuration management for Pingclaw.
3
- *
4
- * Provides types and functions for managing multi-agent configuration
5
- * stored in .pingancoder/agents.json.
6
- */
7
- // Config management
8
- export { pingancoderDir, resolveAgentsConfigPath, resolveAgentDir, resolveSubagentRegistryPath, loadAgentsConfig, saveAgentsConfig, listAgents, resolveDefaultAgentId, normalizeAgentId, getAgentConfig, listBindings, resolveAgentIdByBinding, resolveModelString, resolveModelFallbacks, addAgent, removeAgent, addBinding, removeBindings, updateAgentIdentity, } from "./agents-config.js";
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,oBAAoB;AACpB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACR,WAAW,EACX,UAAU,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}