@f2a/openclaw-adapter 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.
Files changed (51) hide show
  1. package/README.md +510 -0
  2. package/dist/announcement-queue.d.ts +71 -0
  3. package/dist/announcement-queue.d.ts.map +1 -0
  4. package/dist/announcement-queue.js +181 -0
  5. package/dist/announcement-queue.js.map +1 -0
  6. package/dist/capability-detector.d.ts +21 -0
  7. package/dist/capability-detector.d.ts.map +1 -0
  8. package/dist/capability-detector.js +177 -0
  9. package/dist/capability-detector.js.map +1 -0
  10. package/dist/connector.d.ts +62 -0
  11. package/dist/connector.d.ts.map +1 -0
  12. package/dist/connector.js +1063 -0
  13. package/dist/connector.js.map +1 -0
  14. package/dist/index.d.ts +16 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +44 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/network-client.d.ts +48 -0
  19. package/dist/network-client.d.ts.map +1 -0
  20. package/dist/network-client.js +104 -0
  21. package/dist/network-client.js.map +1 -0
  22. package/dist/node-manager.d.ts +50 -0
  23. package/dist/node-manager.d.ts.map +1 -0
  24. package/dist/node-manager.js +187 -0
  25. package/dist/node-manager.js.map +1 -0
  26. package/dist/plugin.d.ts +16 -0
  27. package/dist/plugin.d.ts.map +1 -0
  28. package/dist/plugin.js +116 -0
  29. package/dist/plugin.js.map +1 -0
  30. package/dist/reputation.d.ts +72 -0
  31. package/dist/reputation.d.ts.map +1 -0
  32. package/dist/reputation.js +215 -0
  33. package/dist/reputation.js.map +1 -0
  34. package/dist/task-guard.d.ts +77 -0
  35. package/dist/task-guard.d.ts.map +1 -0
  36. package/dist/task-guard.js +330 -0
  37. package/dist/task-guard.js.map +1 -0
  38. package/dist/task-queue.d.ts +71 -0
  39. package/dist/task-queue.d.ts.map +1 -0
  40. package/dist/task-queue.js +126 -0
  41. package/dist/task-queue.js.map +1 -0
  42. package/dist/types.d.ts +248 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +6 -0
  45. package/dist/types.js.map +1 -0
  46. package/dist/webhook-server.d.ts +44 -0
  47. package/dist/webhook-server.d.ts.map +1 -0
  48. package/dist/webhook-server.js +119 -0
  49. package/dist/webhook-server.js.map +1 -0
  50. package/openclaw.plugin.json +106 -0
  51. package/package.json +40 -0
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ /**
3
+ * F2A Announcement Queue
4
+ * 管理任务广播和认领(Claim Pattern)
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.announcementQueue = exports.AnnouncementQueue = void 0;
8
+ class AnnouncementQueue {
9
+ announcements = new Map();
10
+ maxSize;
11
+ maxAgeMs;
12
+ constructor(options) {
13
+ this.maxSize = options?.maxSize || 100;
14
+ this.maxAgeMs = options?.maxAgeMs || 30 * 60 * 1000; // 30分钟
15
+ }
16
+ /**
17
+ * 创建任务广播
18
+ */
19
+ create(announcement) {
20
+ // 清理过期
21
+ this.cleanup();
22
+ // 检查容量
23
+ if (this.announcements.size >= this.maxSize) {
24
+ throw new Error('Announcement queue is full');
25
+ }
26
+ const id = `ann-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
27
+ const created = {
28
+ ...announcement,
29
+ announcementId: id,
30
+ timestamp: Date.now(),
31
+ status: 'open',
32
+ claims: []
33
+ };
34
+ this.announcements.set(id, created);
35
+ return created;
36
+ }
37
+ /**
38
+ * 获取所有开放的广播
39
+ */
40
+ getOpen() {
41
+ return Array.from(this.announcements.values())
42
+ .filter(a => a.status === 'open')
43
+ .sort((a, b) => a.timestamp - b.timestamp);
44
+ }
45
+ /**
46
+ * 获取特定广播
47
+ */
48
+ get(announcementId) {
49
+ return this.announcements.get(announcementId);
50
+ }
51
+ /**
52
+ * 提交认领
53
+ */
54
+ submitClaim(announcementId, claim) {
55
+ const announcement = this.announcements.get(announcementId);
56
+ if (!announcement)
57
+ return null;
58
+ if (announcement.status !== 'open')
59
+ return null;
60
+ const claimId = `claim-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
61
+ const created = {
62
+ ...claim,
63
+ claimId,
64
+ announcementId,
65
+ timestamp: Date.now(),
66
+ status: 'pending'
67
+ };
68
+ if (!announcement.claims) {
69
+ announcement.claims = [];
70
+ }
71
+ announcement.claims.push(created);
72
+ return created;
73
+ }
74
+ /**
75
+ * 接受认领
76
+ */
77
+ acceptClaim(announcementId, claimId) {
78
+ const announcement = this.announcements.get(announcementId);
79
+ if (!announcement)
80
+ return null;
81
+ const claim = announcement.claims?.find(c => c.claimId === claimId);
82
+ if (!claim)
83
+ return null;
84
+ // 标记该认领为接受
85
+ claim.status = 'accepted';
86
+ // 拒绝其他认领
87
+ announcement.claims?.forEach(c => {
88
+ if (c.claimId !== claimId) {
89
+ c.status = 'rejected';
90
+ }
91
+ });
92
+ // 标记广播为已认领
93
+ announcement.status = 'claimed';
94
+ return claim;
95
+ }
96
+ /**
97
+ * 拒绝认领
98
+ */
99
+ rejectClaim(announcementId, claimId) {
100
+ const announcement = this.announcements.get(announcementId);
101
+ if (!announcement)
102
+ return null;
103
+ const claim = announcement.claims?.find(c => c.claimId === claimId);
104
+ if (!claim)
105
+ return null;
106
+ claim.status = 'rejected';
107
+ return claim;
108
+ }
109
+ /**
110
+ * 标记为已委托
111
+ */
112
+ markDelegated(announcementId) {
113
+ const announcement = this.announcements.get(announcementId);
114
+ if (!announcement)
115
+ return false;
116
+ announcement.status = 'delegated';
117
+ return true;
118
+ }
119
+ /**
120
+ * 获取我的认领(作为认领方)
121
+ */
122
+ getMyClaims(claimantId) {
123
+ const claims = [];
124
+ for (const announcement of this.announcements.values()) {
125
+ const myClaims = announcement.claims?.filter(c => c.claimant === claimantId);
126
+ if (myClaims) {
127
+ claims.push(...myClaims);
128
+ }
129
+ }
130
+ return claims.sort((a, b) => b.timestamp - a.timestamp);
131
+ }
132
+ /**
133
+ * 获取我的广播(作为发布方)
134
+ */
135
+ getMyAnnouncements(fromId) {
136
+ return Array.from(this.announcements.values())
137
+ .filter(a => a.from === fromId)
138
+ .sort((a, b) => b.timestamp - a.timestamp);
139
+ }
140
+ /**
141
+ * 获取统计
142
+ */
143
+ getStats() {
144
+ const all = Array.from(this.announcements.values());
145
+ return {
146
+ open: all.filter(a => a.status === 'open').length,
147
+ claimed: all.filter(a => a.status === 'claimed').length,
148
+ delegated: all.filter(a => a.status === 'delegated').length,
149
+ expired: all.filter(a => a.status === 'expired').length,
150
+ total: all.length
151
+ };
152
+ }
153
+ /**
154
+ * 清理过期
155
+ */
156
+ cleanup() {
157
+ const now = Date.now();
158
+ for (const [id, announcement] of this.announcements) {
159
+ const age = now - announcement.timestamp;
160
+ if (age > this.maxAgeMs) {
161
+ if (announcement.status === 'open') {
162
+ announcement.status = 'expired';
163
+ }
164
+ // 删除已过期一段时间的
165
+ if (age > this.maxAgeMs * 2) {
166
+ this.announcements.delete(id);
167
+ }
168
+ }
169
+ }
170
+ }
171
+ /**
172
+ * 清空
173
+ */
174
+ clear() {
175
+ this.announcements.clear();
176
+ }
177
+ }
178
+ exports.AnnouncementQueue = AnnouncementQueue;
179
+ // 导出单例
180
+ exports.announcementQueue = new AnnouncementQueue();
181
+ //# sourceMappingURL=announcement-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcement-queue.js","sourceRoot":"","sources":["../src/announcement-queue.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAYH,MAAa,iBAAiB;IACpB,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAC;IACpD,OAAO,CAAS;IAChB,QAAQ,CAAS;IAEzB,YAAY,OAAiD;QAC3D,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO;IAC9D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAA0F;QAC/F,OAAO;QACP,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,OAAO;QACP,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,OAAO,GAAqB;YAChC,GAAG,YAAY;YACf,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;aAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,cAAsB;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,WAAW,CACT,cAAsB,EACtB,KAA6E;QAE7E,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAEhD,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,OAAO,GAAc;YACzB,GAAG,KAAK;YACR,OAAO;YACP,cAAc;YACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,SAAS;SAClB,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACzB,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,cAAsB,EAAE,OAAe;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,WAAW;QACX,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QAE1B,SAAS;QACT,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;YAC/B,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC1B,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,WAAW;QACX,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC;QAEhC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,cAAsB,EAAE,OAAe;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,cAAsB;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QAEhC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,UAAkB;QAC5B,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;YAC7E,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAAc;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;YACjD,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;YACvD,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM;YAC3D,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;YACvD,KAAK,EAAE,GAAG,CAAC,MAAM;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC;YACzC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACxB,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACnC,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC;gBAClC,CAAC;gBACD,aAAa;gBACb,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAhMD,8CAgMC;AAED,OAAO;AACM,QAAA,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * OpenClaw 能力检测器
3
+ * 提供默认能力列表(外部插件无法动态检测 OpenClaw 内部能力)
4
+ */
5
+ import type { AgentCapability } from './types.js';
6
+ export interface OpenClawCapabilities {
7
+ tools: string[];
8
+ skills: string[];
9
+ }
10
+ export declare class CapabilityDetector {
11
+ /**
12
+ * 获取默认能力列表
13
+ * 外部插件无法直接访问 OpenClaw 内部,使用预定义的能力列表
14
+ */
15
+ getDefaultCapabilities(): AgentCapability[];
16
+ /**
17
+ * 合并自定义能力
18
+ */
19
+ mergeCustomCapabilities(defaults: AgentCapability[], custom: string[]): AgentCapability[];
20
+ }
21
+ //# sourceMappingURL=capability-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-detector.d.ts","sourceRoot":"","sources":["../src/capability-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,YAAY,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,kBAAkB;IAC7B;;;OAGG;IACH,sBAAsB,IAAI,eAAe,EAAE;IA6I3C;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE;CAqB1F"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ /**
3
+ * OpenClaw 能力检测器
4
+ * 提供默认能力列表(外部插件无法动态检测 OpenClaw 内部能力)
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CapabilityDetector = void 0;
8
+ class CapabilityDetector {
9
+ /**
10
+ * 获取默认能力列表
11
+ * 外部插件无法直接访问 OpenClaw 内部,使用预定义的能力列表
12
+ */
13
+ getDefaultCapabilities() {
14
+ return [
15
+ {
16
+ name: 'file-operation',
17
+ description: 'Read and write files on the local system',
18
+ tools: ['read', 'write', 'edit', 'list'],
19
+ parameters: {
20
+ action: {
21
+ type: 'string',
22
+ description: 'Action to perform: read, write, edit, list',
23
+ required: true
24
+ },
25
+ path: {
26
+ type: 'string',
27
+ description: 'File or directory path',
28
+ required: true
29
+ }
30
+ }
31
+ },
32
+ {
33
+ name: 'command-execution',
34
+ description: 'Execute shell commands',
35
+ tools: ['exec', 'bash'],
36
+ parameters: {
37
+ command: {
38
+ type: 'string',
39
+ description: 'Shell command to execute',
40
+ required: true
41
+ },
42
+ cwd: {
43
+ type: 'string',
44
+ description: 'Working directory',
45
+ required: false
46
+ }
47
+ }
48
+ },
49
+ {
50
+ name: 'web-browsing',
51
+ description: 'Browse web pages and fetch content',
52
+ tools: ['browser', 'fetch'],
53
+ parameters: {
54
+ url: {
55
+ type: 'string',
56
+ description: 'URL to browse or fetch',
57
+ required: true
58
+ },
59
+ action: {
60
+ type: 'string',
61
+ description: 'Action: fetch, screenshot, click, type',
62
+ required: false
63
+ }
64
+ }
65
+ },
66
+ {
67
+ name: 'image-analysis',
68
+ description: 'Analyze images using vision models',
69
+ tools: ['image', 'analyze'],
70
+ parameters: {
71
+ image: {
72
+ type: 'string',
73
+ description: 'Image path or URL',
74
+ required: true
75
+ },
76
+ prompt: {
77
+ type: 'string',
78
+ description: 'Analysis prompt',
79
+ required: false
80
+ }
81
+ }
82
+ },
83
+ {
84
+ name: 'subagent-creation',
85
+ description: 'Create sub-agents for parallel task execution',
86
+ tools: ['sessions_spawn', 'subagents'],
87
+ parameters: {
88
+ task: {
89
+ type: 'string',
90
+ description: 'Task description for sub-agent',
91
+ required: true
92
+ },
93
+ agentId: {
94
+ type: 'string',
95
+ description: 'Agent type to spawn',
96
+ required: false
97
+ }
98
+ }
99
+ },
100
+ {
101
+ name: 'messaging',
102
+ description: 'Send messages to users or channels',
103
+ tools: ['message', 'notify'],
104
+ parameters: {
105
+ target: {
106
+ type: 'string',
107
+ description: 'Message target',
108
+ required: true
109
+ },
110
+ content: {
111
+ type: 'string',
112
+ description: 'Message content',
113
+ required: true
114
+ }
115
+ }
116
+ },
117
+ {
118
+ name: 'code-generation',
119
+ description: 'Generate code in various programming languages',
120
+ tools: ['generate', 'refactor', 'explain'],
121
+ parameters: {
122
+ language: {
123
+ type: 'string',
124
+ description: 'Programming language',
125
+ required: true
126
+ },
127
+ description: {
128
+ type: 'string',
129
+ description: 'What the code should do',
130
+ required: true
131
+ }
132
+ }
133
+ },
134
+ {
135
+ name: 'task-delegation',
136
+ description: 'Delegate tasks to other agents in the network',
137
+ tools: ['delegate', 'discover'],
138
+ parameters: {
139
+ capability: {
140
+ type: 'string',
141
+ description: 'Required capability',
142
+ required: true
143
+ },
144
+ description: {
145
+ type: 'string',
146
+ description: 'Task description',
147
+ required: true
148
+ }
149
+ }
150
+ }
151
+ ];
152
+ }
153
+ /**
154
+ * 合并自定义能力
155
+ */
156
+ mergeCustomCapabilities(defaults, custom) {
157
+ const merged = [...defaults];
158
+ for (const capName of custom) {
159
+ if (!merged.find(c => c.name === capName)) {
160
+ merged.push({
161
+ name: capName,
162
+ description: `Custom capability: ${capName}`,
163
+ parameters: {
164
+ query: {
165
+ type: 'string',
166
+ description: 'Input for this capability',
167
+ required: true
168
+ }
169
+ }
170
+ });
171
+ }
172
+ }
173
+ return merged;
174
+ }
175
+ }
176
+ exports.CapabilityDetector = CapabilityDetector;
177
+ //# sourceMappingURL=capability-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-detector.js","sourceRoot":"","sources":["../src/capability-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * F2A OpenClaw Connector Plugin
3
+ * 主插件类 - 任务队列架构
4
+ */
5
+ import type { OpenClawPlugin, OpenClawPluginApi, Tool } from './types.js';
6
+ export declare class F2AOpenClawAdapter implements OpenClawPlugin {
7
+ name: string;
8
+ version: string;
9
+ private nodeManager;
10
+ private networkClient;
11
+ private webhookServer;
12
+ private reputationSystem;
13
+ private capabilityDetector;
14
+ private taskQueue;
15
+ private announcementQueue;
16
+ private config;
17
+ private nodeConfig;
18
+ private capabilities;
19
+ private api?;
20
+ /**
21
+ * 初始化插件
22
+ */
23
+ initialize(config: Record<string, unknown> & {
24
+ _api?: OpenClawPluginApi;
25
+ }): Promise<void>;
26
+ /**
27
+ * 获取插件提供的 Tools
28
+ */
29
+ getTools(): Tool[];
30
+ /**
31
+ * 创建 Webhook 处理器
32
+ */
33
+ private createWebhookHandler;
34
+ /**
35
+ * 注册到 F2A Node
36
+ */
37
+ private registerToNode;
38
+ private handleDiscover;
39
+ private handleDelegate;
40
+ private handleBroadcast;
41
+ private handleStatus;
42
+ private handleReputation;
43
+ private handlePollTasks;
44
+ private handleSubmitResult;
45
+ private handleTaskStats;
46
+ private handleAnnounce;
47
+ private handleListAnnouncements;
48
+ private handleClaim;
49
+ private handleManageClaims;
50
+ private handleMyClaims;
51
+ private handleAnnouncementStats;
52
+ private resolveAgent;
53
+ private formatBroadcastResults;
54
+ private mergeConfig;
55
+ private generateToken;
56
+ /**
57
+ * 关闭插件,清理资源
58
+ */
59
+ shutdown(): Promise<void>;
60
+ }
61
+ export default F2AOpenClawAdapter;
62
+ //# sourceMappingURL=connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,IAAI,EAaL,MAAM,YAAY,CAAC;AASpB,qBAAa,kBAAmB,YAAW,cAAc;IACvD,IAAI,SAA0B;IAC9B,OAAO,SAAW;IAElB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,GAAG,CAAC,CAAoB;IAEhC;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4E/F;;OAEG;IACH,QAAQ,IAAI,IAAI,EAAE;IAsQlB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiG5B;;OAEG;YACW,cAAc;YAWd,cAAc;YA6Cd,cAAc;YA2Cd,eAAe;YA2Df,YAAY;YAgCZ,gBAAgB;YA4DhB,eAAe;YAwDf,kBAAkB;YA4ClB,eAAe;YAuBf,cAAc;YAsDd,uBAAuB;YAsDvB,WAAW;YAyDX,kBAAkB;YAyFlB,cAAc;YA6Cd,uBAAuB;YAuBvB,YAAY;IA4B1B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,aAAa;IASrB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAoBhC;AAGD,eAAe,kBAAkB,CAAC"}