@troykelly/openclaw-projects 0.0.29 → 0.0.31
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/dist/api-client.d.ts +2 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +4 -0
- package/dist/api-client.js.map +1 -1
- package/dist/register-openclaw.d.ts.map +1 -1
- package/dist/register-openclaw.js +243 -12
- package/dist/register-openclaw.js.map +1 -1
- package/dist/services/api-source-service.d.ts +181 -0
- package/dist/services/api-source-service.d.ts.map +1 -0
- package/dist/services/api-source-service.js +120 -0
- package/dist/services/api-source-service.js.map +1 -0
- package/dist/tools/api-credential-manage.d.ts +83 -0
- package/dist/tools/api-credential-manage.d.ts.map +1 -0
- package/dist/tools/api-credential-manage.js +71 -0
- package/dist/tools/api-credential-manage.js.map +1 -0
- package/dist/tools/api-get.d.ts +47 -0
- package/dist/tools/api-get.d.ts.map +1 -0
- package/dist/tools/api-get.js +41 -0
- package/dist/tools/api-get.js.map +1 -0
- package/dist/tools/api-list.d.ts +54 -0
- package/dist/tools/api-list.d.ts.map +1 -0
- package/dist/tools/api-list.js +46 -0
- package/dist/tools/api-list.js.map +1 -0
- package/dist/tools/api-onboard.d.ts +134 -0
- package/dist/tools/api-onboard.d.ts.map +1 -0
- package/dist/tools/api-onboard.js +109 -0
- package/dist/tools/api-onboard.js.map +1 -0
- package/dist/tools/api-recall.d.ts +69 -0
- package/dist/tools/api-recall.d.ts.map +1 -0
- package/dist/tools/api-recall.js +101 -0
- package/dist/tools/api-recall.js.map +1 -0
- package/dist/tools/api-refresh.d.ts +50 -0
- package/dist/tools/api-refresh.d.ts.map +1 -0
- package/dist/tools/api-refresh.js +55 -0
- package/dist/tools/api-refresh.js.map +1 -0
- package/dist/tools/api-remove.d.ts +46 -0
- package/dist/tools/api-remove.d.ts.map +1 -0
- package/dist/tools/api-remove.js +45 -0
- package/dist/tools/api-remove.js.map +1 -0
- package/dist/tools/api-restore.d.ts +45 -0
- package/dist/tools/api-restore.d.ts.map +1 -0
- package/dist/tools/api-restore.js +41 -0
- package/dist/tools/api-restore.js.map +1 -0
- package/dist/tools/api-update.d.ts +57 -0
- package/dist/tools/api-update.d.ts.map +1 -0
- package/dist/tools/api-update.js +46 -0
- package/dist/tools/api-update.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +18 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/terminal-connections.d.ts +387 -0
- package/dist/tools/terminal-connections.d.ts.map +1 -0
- package/dist/tools/terminal-connections.js +631 -0
- package/dist/tools/terminal-connections.js.map +1 -0
- package/dist/tools/terminal-search.d.ts +139 -0
- package/dist/tools/terminal-search.d.ts.map +1 -0
- package/dist/tools/terminal-search.js +248 -0
- package/dist/tools/terminal-search.js.map +1 -0
- package/dist/tools/terminal-sessions.d.ts +344 -0
- package/dist/tools/terminal-sessions.d.ts.map +1 -0
- package/dist/tools/terminal-sessions.js +586 -0
- package/dist/tools/terminal-sessions.js.map +1 -0
- package/dist/tools/terminal-tunnels.d.ts +156 -0
- package/dist/tools/terminal-tunnels.d.ts.map +1 -0
- package/dist/tools/terminal-tunnels.js +266 -0
- package/dist/tools/terminal-tunnels.js.map +1 -0
- package/dist/types/openclaw-api.d.ts +1 -0
- package/dist/types/openclaw-api.d.ts.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/api-client.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export interface RequestOptions {
|
|
|
28
28
|
user_id?: string;
|
|
29
29
|
/** User email for identity resolution (e.g. namespace grant creation) (#1567) */
|
|
30
30
|
user_email?: string;
|
|
31
|
+
/** Target namespace for the request (adds X-Namespace header) (#1760) */
|
|
32
|
+
namespace?: string;
|
|
31
33
|
/** Custom timeout (overrides config) */
|
|
32
34
|
timeout?: number;
|
|
33
35
|
/** Mark request as coming from an agent (adds X-OpenClaw-Agent header) */
|
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAExD,yBAAyB;AACzB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2BAA2B;AAC3B,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE9F,sBAAsB;AACtB,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,yBAAyB;AACzB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,0BAA0B;AAC1B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AA+CD;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBACxB,OAAO,EAAE,gBAAgB;IASrC;;OAEG;YACW,OAAO;IA6DrB;;OAEG;YACW,cAAc;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api-client.js
CHANGED
|
@@ -145,6 +145,10 @@ export class ApiClient {
|
|
|
145
145
|
if (options?.user_email) {
|
|
146
146
|
headers['X-User-Email'] = options.user_email;
|
|
147
147
|
}
|
|
148
|
+
// Namespace scoping — ensures by-ID operations target the correct namespace (#1760)
|
|
149
|
+
if (options?.namespace) {
|
|
150
|
+
headers['X-Namespace'] = options.namespace;
|
|
151
|
+
}
|
|
148
152
|
// Mark request as coming from an agent for privacy filtering
|
|
149
153
|
if (options?.isAgent) {
|
|
150
154
|
headers['X-OpenClaw-Agent'] = options.user_id || 'plugin-agent';
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;AAyCxD;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK;IAC9E,yCAAyC;IACzC,MAAM,gBAAgB,GAAG,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC;IAClD,+CAA+C;IAC/C,MAAM,MAAM,GAAG,gBAAgB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,8EAA8E;IAC9E,OAAO,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAAc;IAClC,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,YAAY,CAAC;IAC1D,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,WAAW,CAAC;IACvC,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,cAAc,CAAC;IAC1C,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,cAAc,CAAC;IACzC,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC;IACzC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,SAAS;IACH,OAAO,CAAS;IAChB,MAAM,CAAqB;IAC3B,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,UAAU,CAAS;IACpC,YAAY,OAAyB;QACnC,yCAAyC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;IAC9C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc,EAAE,OAAwB;QAC7F,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAEjD,IAAI,SAAS,GAAoB,IAAI,CAAC;QAEtC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,mEAAmE;gBACnE,MAAM,KAAK,GAAG,SAAS,EAAE,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBACjI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE;oBACpF,IAAI;oBACJ,KAAK;iBACN,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAE5F,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEzB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5C,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mCAAmC;gBACnC,SAAS,GAAG;oBACV,MAAM,EAAE,CAAC;oBACT,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;oBACjE,IAAI,EAAE,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe;iBAC1F,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;oBACtC,MAAM;oBACN,IAAI;oBACJ,SAAS;oBACT,KAAK,EAAE,SAAS,CAAC,OAAO;iBACzB,CAAC,CAAC;gBAEH,+BAA+B;gBAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,SAAS,IAAI;gBAClB,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,8BAA8B;gBACvC,IAAI,EAAE,eAAe;aACtB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAC1B,MAAc,EACd,GAAW,EACX,IAAa,EACb,SAAiB,EACjB,OAAmC,EACnC,OAAe;QAEf,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,OAAO,GAA2B;gBACtC,cAAc,EAAE,SAAS;aAC1B,CAAC;YAEF,uDAAuD;YACvD,qEAAqE;YACrE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC/C,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,CAAC;YAED,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;YAC1C,CAAC;YAED,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;gBACxB,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAC/C,CAAC;YAED,oFAAoF;YACpF,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YAC7C,CAAC;YAED,6DAA6D;YAC7D,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;YAClE,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1D,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAEvD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU;wBACjD,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;wBACnC,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;qBACrE;iBACF,CAAC;YACJ,CAAC;YAED,oBAAoB;YACpB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAc,EAAE,CAAC;YACjD,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,GAAG,CAAI,IAAY,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAc,EAAE,OAAwB;QAClE,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,GAAG,CAAI,IAAY,EAAE,IAAc,EAAE,OAAwB;QACjE,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,KAAK,CAAI,IAAY,EAAE,IAAc,EAAE,OAAwB;QACnE,OAAO,IAAI,CAAC,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,qBAAqB;IACrB,KAAK,CAAC,MAAM,CAAI,IAAY,EAAE,OAAwB;QACpD,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;QAEjE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAErC,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS;SACV,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAyB;IACvD,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-openclaw.d.ts","sourceRoot":"","sources":["../src/register-openclaw.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAA2G,MAAM,aAAa,CAAC;AAKzJ,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"register-openclaw.d.ts","sourceRoot":"","sources":["../src/register-openclaw.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAA2G,MAAM,aAAa,CAAC;AAKzJ,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAyBxD,OAAO,KAAK,EAEV,UAAU,EAQV,iBAAiB,EAGlB,MAAM,yBAAyB,CAAC;AAajC,8CAA8C;AAC9C,UAAU,WAAW;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4GAA4G;IAC5G,iBAAiB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACzD,oEAAoE;IACpE,eAAe,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,eAAe,EAAE,OAAO,CAAC;IACzB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAyjDD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C9E;AAwuED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAq9B9B,CAAC;AAEF,yDAAyD;AACzD,eAAe,gBAAgB,CAAC;AAEhC,2CAA2C;AAC3C,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCnB,CAAC"}
|
|
@@ -16,7 +16,7 @@ import { createGatewayMethods, registerGatewayRpcMethods } from './gateway/rpc-m
|
|
|
16
16
|
import { createAutoCaptureHook, createGraphAwareRecallHook } from './hooks.js';
|
|
17
17
|
import { createLogger } from './logger.js';
|
|
18
18
|
import { createNotificationService } from './services/notification-service.js';
|
|
19
|
-
import { createContextSearchTool, createLinksQueryTool, createLinksRemoveTool, createLinksSetTool, createProjectSearchTool, createSkillStoreAggregateTool, createSkillStoreCollectionsTool, createSkillStoreDeleteTool, createSkillStoreGetTool, createSkillStoreListTool, createSkillStorePutTool, createSkillStoreSearchTool, } from './tools/index.js';
|
|
19
|
+
import { createContextSearchTool, createLinksQueryTool, createLinksRemoveTool, createLinksSetTool, createProjectSearchTool, createSkillStoreAggregateTool, createSkillStoreCollectionsTool, createSkillStoreDeleteTool, createSkillStoreGetTool, createSkillStoreListTool, createSkillStorePutTool, createSkillStoreSearchTool, createApiOnboardTool, createApiRecallTool, createApiGetTool, createApiListTool, createApiUpdateTool, createApiCredentialManageTool, createApiRefreshTool, createApiRemoveTool, createApiRestoreTool, } from './tools/index.js';
|
|
20
20
|
import { autoLinkInboundMessage } from './utils/auto-linker.js';
|
|
21
21
|
import { blendScores, computeGeoScore, haversineDistanceKm } from './utils/geo.js';
|
|
22
22
|
import { createBoundaryMarkers, detectInjectionPatternsAsync, sanitizeMessageForContext, sanitizeMetadataField, wrapExternalMessage, } from './utils/injection-protection.js';
|
|
@@ -1439,6 +1439,107 @@ const namespaceRevokeSchema = {
|
|
|
1439
1439
|
},
|
|
1440
1440
|
required: ['namespace', 'grant_id'],
|
|
1441
1441
|
};
|
|
1442
|
+
// ── API Onboarding tool schemas (#1784, #1785, #1786) ─────────────────────
|
|
1443
|
+
const apiOnboardSchema = {
|
|
1444
|
+
type: 'object',
|
|
1445
|
+
properties: {
|
|
1446
|
+
spec_url: { type: 'string', description: 'URL to fetch the OpenAPI spec from.', format: 'uri' },
|
|
1447
|
+
spec_content: { type: 'string', description: 'Inline OpenAPI spec content (JSON or YAML).' },
|
|
1448
|
+
name: { type: 'string', description: 'Human-readable name for the API.', maxLength: 200 },
|
|
1449
|
+
description: { type: 'string', description: 'Description of the API.', maxLength: 2000 },
|
|
1450
|
+
tags: { type: 'array', description: 'Tags to categorise the API.', items: { type: 'string' } },
|
|
1451
|
+
credentials: {
|
|
1452
|
+
type: 'array',
|
|
1453
|
+
description: 'Credentials for authenticating API calls.',
|
|
1454
|
+
items: {
|
|
1455
|
+
type: 'object',
|
|
1456
|
+
properties: {
|
|
1457
|
+
header_name: { type: 'string' },
|
|
1458
|
+
header_prefix: { type: 'string' },
|
|
1459
|
+
resolve_strategy: { type: 'string', enum: ['literal', 'env', 'file', 'command'] },
|
|
1460
|
+
resolve_reference: { type: 'string' },
|
|
1461
|
+
purpose: { type: 'string', enum: ['api_call', 'spec_fetch'] },
|
|
1462
|
+
},
|
|
1463
|
+
required: ['header_name', 'resolve_strategy', 'resolve_reference'],
|
|
1464
|
+
},
|
|
1465
|
+
},
|
|
1466
|
+
spec_auth_headers: { type: 'object', description: 'Headers for fetching the spec URL (if auth-protected).', additionalProperties: { type: 'string' } },
|
|
1467
|
+
},
|
|
1468
|
+
required: [],
|
|
1469
|
+
};
|
|
1470
|
+
const apiRecallSchema = {
|
|
1471
|
+
type: 'object',
|
|
1472
|
+
properties: {
|
|
1473
|
+
query: { type: 'string', description: 'Natural-language search query for API capabilities.', minLength: 1, maxLength: 1000 },
|
|
1474
|
+
limit: { type: 'integer', description: 'Maximum results to return.', minimum: 1, maximum: 50, default: 10 },
|
|
1475
|
+
memory_kind: { type: 'string', description: 'Filter by memory kind.', enum: ['overview', 'tag_group', 'operation'] },
|
|
1476
|
+
api_source_id: { type: 'string', description: 'Filter to a specific API source.', format: 'uuid' },
|
|
1477
|
+
tags: { type: 'array', description: 'Filter by tags.', items: { type: 'string' } },
|
|
1478
|
+
},
|
|
1479
|
+
required: ['query'],
|
|
1480
|
+
};
|
|
1481
|
+
const apiGetSchema = {
|
|
1482
|
+
type: 'object',
|
|
1483
|
+
properties: {
|
|
1484
|
+
id: { type: 'string', description: 'UUID of the API source.', format: 'uuid' },
|
|
1485
|
+
},
|
|
1486
|
+
required: ['id'],
|
|
1487
|
+
};
|
|
1488
|
+
const apiListSchema = {
|
|
1489
|
+
type: 'object',
|
|
1490
|
+
properties: {
|
|
1491
|
+
limit: { type: 'integer', description: 'Maximum results.', minimum: 1, maximum: 100 },
|
|
1492
|
+
offset: { type: 'integer', description: 'Pagination offset.', minimum: 0 },
|
|
1493
|
+
status: { type: 'string', description: 'Filter by status.', enum: ['active', 'error', 'disabled'] },
|
|
1494
|
+
},
|
|
1495
|
+
required: [],
|
|
1496
|
+
};
|
|
1497
|
+
const apiUpdateSchema = {
|
|
1498
|
+
type: 'object',
|
|
1499
|
+
properties: {
|
|
1500
|
+
id: { type: 'string', description: 'UUID of the API source to update.', format: 'uuid' },
|
|
1501
|
+
name: { type: 'string', description: 'New name.', maxLength: 200 },
|
|
1502
|
+
description: { type: 'string', description: 'New description.', maxLength: 2000 },
|
|
1503
|
+
tags: { type: 'array', description: 'New tags.', items: { type: 'string' } },
|
|
1504
|
+
status: { type: 'string', description: 'New status.', enum: ['active', 'error', 'disabled'] },
|
|
1505
|
+
},
|
|
1506
|
+
required: ['id'],
|
|
1507
|
+
};
|
|
1508
|
+
const apiCredentialManageSchema = {
|
|
1509
|
+
type: 'object',
|
|
1510
|
+
properties: {
|
|
1511
|
+
api_source_id: { type: 'string', description: 'UUID of the API source.', format: 'uuid' },
|
|
1512
|
+
action: { type: 'string', description: 'Action to perform.', enum: ['add', 'update', 'remove'] },
|
|
1513
|
+
credential_id: { type: 'string', description: 'UUID of the credential (for update/remove).', format: 'uuid' },
|
|
1514
|
+
header_name: { type: 'string', description: 'HTTP header name (e.g. Authorization).' },
|
|
1515
|
+
header_prefix: { type: 'string', description: 'Header value prefix (e.g. Bearer).' },
|
|
1516
|
+
resolve_strategy: { type: 'string', description: 'How to resolve the credential.', enum: ['literal', 'env', 'file', 'command'] },
|
|
1517
|
+
resolve_reference: { type: 'string', description: 'Credential value or reference.' },
|
|
1518
|
+
purpose: { type: 'string', description: 'Credential purpose.', enum: ['api_call', 'spec_fetch'] },
|
|
1519
|
+
},
|
|
1520
|
+
required: ['api_source_id', 'action'],
|
|
1521
|
+
};
|
|
1522
|
+
const apiRefreshSchema = {
|
|
1523
|
+
type: 'object',
|
|
1524
|
+
properties: {
|
|
1525
|
+
id: { type: 'string', description: 'UUID of the API source to refresh.', format: 'uuid' },
|
|
1526
|
+
},
|
|
1527
|
+
required: ['id'],
|
|
1528
|
+
};
|
|
1529
|
+
const apiRemoveSchema = {
|
|
1530
|
+
type: 'object',
|
|
1531
|
+
properties: {
|
|
1532
|
+
id: { type: 'string', description: 'UUID of the API source to soft-delete.', format: 'uuid' },
|
|
1533
|
+
},
|
|
1534
|
+
required: ['id'],
|
|
1535
|
+
};
|
|
1536
|
+
const apiRestoreSchema = {
|
|
1537
|
+
type: 'object',
|
|
1538
|
+
properties: {
|
|
1539
|
+
id: { type: 'string', description: 'UUID of the API source to restore.', format: 'uuid' },
|
|
1540
|
+
},
|
|
1541
|
+
required: ['id'],
|
|
1542
|
+
};
|
|
1442
1543
|
/**
|
|
1443
1544
|
* Async namespace discovery — fetches accessible namespaces from the API
|
|
1444
1545
|
* and updates state.resolvedNamespace.recall in-place (Issue #1537).
|
|
@@ -1490,10 +1591,21 @@ function createToolHandlers(state) {
|
|
|
1490
1591
|
const { config, logger, apiClient } = state;
|
|
1491
1592
|
// Issue #1644: Read user_id from mutable state on every call.
|
|
1492
1593
|
const getAgentId = () => state.agentId;
|
|
1493
|
-
/** Read user_id from mutable state on every call (Issue #1644) */
|
|
1594
|
+
/** Read user_id and namespace from mutable state on every call (Issue #1644, #1797) */
|
|
1494
1595
|
const reqOpts = () => ({
|
|
1495
1596
|
user_id: state.agentId,
|
|
1496
1597
|
user_email: state.agentEmail,
|
|
1598
|
+
namespace: state.resolvedNamespace.default,
|
|
1599
|
+
});
|
|
1600
|
+
/**
|
|
1601
|
+
* Request options with namespace header for by-ID operations (#1760).
|
|
1602
|
+
* Only use for GET/PATCH/DELETE on specific items (e.g. /api/work-items/:id).
|
|
1603
|
+
* Do NOT use for list/search/create — those already pass namespace via body/query
|
|
1604
|
+
* and the X-Namespace header would override them (middleware checks headers first).
|
|
1605
|
+
*/
|
|
1606
|
+
const reqOptsScoped = () => ({
|
|
1607
|
+
...reqOpts(),
|
|
1608
|
+
namespace: state.resolvedNamespace.default,
|
|
1497
1609
|
});
|
|
1498
1610
|
/** Read namespace from mutable state on every call (Issue #1644) */
|
|
1499
1611
|
function getStoreNamespace(params) {
|
|
@@ -1642,7 +1754,7 @@ function createToolHandlers(state) {
|
|
|
1642
1754
|
const { memory_id, query } = params;
|
|
1643
1755
|
try {
|
|
1644
1756
|
if (memory_id) {
|
|
1645
|
-
const response = await apiClient.delete(`/api/memories/${memory_id}`,
|
|
1757
|
+
const response = await apiClient.delete(`/api/memories/${memory_id}`, reqOptsScoped());
|
|
1646
1758
|
if (!response.success) {
|
|
1647
1759
|
return { success: false, error: response.error.message };
|
|
1648
1760
|
}
|
|
@@ -1671,7 +1783,7 @@ function createToolHandlers(state) {
|
|
|
1671
1783
|
}
|
|
1672
1784
|
// Single high-confidence match → auto-delete
|
|
1673
1785
|
if (matches.length === 1 && (matches[0].similarity ?? 0) > 0.9) {
|
|
1674
|
-
const delResponse = await apiClient.delete(`/api/memories/${matches[0].id}`,
|
|
1786
|
+
const delResponse = await apiClient.delete(`/api/memories/${matches[0].id}`, reqOptsScoped());
|
|
1675
1787
|
if (!delResponse.success) {
|
|
1676
1788
|
return { success: false, error: delResponse.error.message };
|
|
1677
1789
|
}
|
|
@@ -1684,7 +1796,7 @@ function createToolHandlers(state) {
|
|
|
1684
1796
|
};
|
|
1685
1797
|
}
|
|
1686
1798
|
// Multiple matches or low confidence → return candidates, don't delete
|
|
1687
|
-
const list = matches.map((m) => `- [${m.id
|
|
1799
|
+
const list = matches.map((m) => `- [${m.id}] ${m.content.slice(0, 60)}${m.content.length > 60 ? '...' : ''}`).join('\n');
|
|
1688
1800
|
return {
|
|
1689
1801
|
success: true,
|
|
1690
1802
|
data: {
|
|
@@ -1730,7 +1842,7 @@ function createToolHandlers(state) {
|
|
|
1730
1842
|
async project_get(params) {
|
|
1731
1843
|
const { project_id } = params;
|
|
1732
1844
|
try {
|
|
1733
|
-
const response = await apiClient.get(`/api/work-items/${project_id}?user_email=${encodeURIComponent(state.agentId)}`,
|
|
1845
|
+
const response = await apiClient.get(`/api/work-items/${project_id}?user_email=${encodeURIComponent(state.agentId)}`, reqOptsScoped());
|
|
1734
1846
|
if (!response.success) {
|
|
1735
1847
|
return { success: false, error: response.error.message };
|
|
1736
1848
|
}
|
|
@@ -1843,7 +1955,7 @@ function createToolHandlers(state) {
|
|
|
1843
1955
|
async todo_complete(params) {
|
|
1844
1956
|
const { todoId } = params;
|
|
1845
1957
|
try {
|
|
1846
|
-
const response = await apiClient.patch(`/api/work-items/${todoId}/status?user_email=${encodeURIComponent(state.agentId)}`, { status: 'completed' },
|
|
1958
|
+
const response = await apiClient.patch(`/api/work-items/${todoId}/status?user_email=${encodeURIComponent(state.agentId)}`, { status: 'completed' }, reqOptsScoped());
|
|
1847
1959
|
if (!response.success) {
|
|
1848
1960
|
return { success: false, error: response.error.message };
|
|
1849
1961
|
}
|
|
@@ -1966,7 +2078,7 @@ function createToolHandlers(state) {
|
|
|
1966
2078
|
async contact_get(params) {
|
|
1967
2079
|
const { contact_id } = params;
|
|
1968
2080
|
try {
|
|
1969
|
-
const response = await apiClient.get(`/api/contacts/${contact_id}?user_email=${encodeURIComponent(state.agentId)}`,
|
|
2081
|
+
const response = await apiClient.get(`/api/contacts/${contact_id}?user_email=${encodeURIComponent(state.agentId)}`, reqOptsScoped());
|
|
1970
2082
|
if (!response.success) {
|
|
1971
2083
|
return { success: false, error: response.error.message };
|
|
1972
2084
|
}
|
|
@@ -2046,7 +2158,7 @@ function createToolHandlers(state) {
|
|
|
2046
2158
|
if (k !== 'namespace' && v !== undefined)
|
|
2047
2159
|
body[k] = v;
|
|
2048
2160
|
}
|
|
2049
|
-
const response = await apiClient.patch(`/api/contacts/${contact_id}`, body,
|
|
2161
|
+
const response = await apiClient.patch(`/api/contacts/${contact_id}`, body, reqOptsScoped());
|
|
2050
2162
|
if (!response.success) {
|
|
2051
2163
|
return { success: false, error: response.error.message };
|
|
2052
2164
|
}
|
|
@@ -2090,7 +2202,7 @@ function createToolHandlers(state) {
|
|
|
2090
2202
|
if (!contact_id || !tags?.length)
|
|
2091
2203
|
return { success: false, error: 'contact_id and tags are required' };
|
|
2092
2204
|
try {
|
|
2093
|
-
const response = await apiClient.post(`/api/contacts/${contact_id}/tags`, { tags },
|
|
2205
|
+
const response = await apiClient.post(`/api/contacts/${contact_id}/tags`, { tags }, reqOptsScoped());
|
|
2094
2206
|
if (!response.success) {
|
|
2095
2207
|
return { success: false, error: response.error.message };
|
|
2096
2208
|
}
|
|
@@ -2112,7 +2224,7 @@ function createToolHandlers(state) {
|
|
|
2112
2224
|
if (!contact_id || !tag)
|
|
2113
2225
|
return { success: false, error: 'contact_id and tag are required' };
|
|
2114
2226
|
try {
|
|
2115
|
-
const response = await apiClient.delete(`/api/contacts/${contact_id}/tags/${encodeURIComponent(tag)}`,
|
|
2227
|
+
const response = await apiClient.delete(`/api/contacts/${contact_id}/tags/${encodeURIComponent(tag)}`, reqOptsScoped());
|
|
2116
2228
|
if (!response.success) {
|
|
2117
2229
|
return { success: false, error: response.error.message };
|
|
2118
2230
|
}
|
|
@@ -2729,7 +2841,7 @@ function createToolHandlers(state) {
|
|
|
2729
2841
|
contact_id = contacts[0].id;
|
|
2730
2842
|
}
|
|
2731
2843
|
// Use graph traversal endpoint which returns related_contacts
|
|
2732
|
-
const response = await apiClient.get(`/api/contacts/${contact_id}/relationships?user_email=${encodeURIComponent(state.agentId)}`,
|
|
2844
|
+
const response = await apiClient.get(`/api/contacts/${contact_id}/relationships?user_email=${encodeURIComponent(state.agentId)}`, reqOptsScoped());
|
|
2733
2845
|
if (!response.success) {
|
|
2734
2846
|
if (response.error.code === 'NOT_FOUND') {
|
|
2735
2847
|
return { success: false, error: 'Contact not found.' };
|
|
@@ -3196,6 +3308,43 @@ function createToolHandlers(state) {
|
|
|
3196
3308
|
return { success: false, error: 'Failed to revoke namespace access' };
|
|
3197
3309
|
}
|
|
3198
3310
|
},
|
|
3311
|
+
// ── API Onboarding tools (#1784, #1785, #1786) ──────────────────────
|
|
3312
|
+
async api_onboard(params) {
|
|
3313
|
+
const tool = createApiOnboardTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3314
|
+
return tool.execute(params);
|
|
3315
|
+
},
|
|
3316
|
+
async api_recall(params) {
|
|
3317
|
+
const tool = createApiRecallTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3318
|
+
return tool.execute(params);
|
|
3319
|
+
},
|
|
3320
|
+
async api_get(params) {
|
|
3321
|
+
const tool = createApiGetTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3322
|
+
return tool.execute(params);
|
|
3323
|
+
},
|
|
3324
|
+
async api_list(params) {
|
|
3325
|
+
const tool = createApiListTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3326
|
+
return tool.execute(params);
|
|
3327
|
+
},
|
|
3328
|
+
async api_update(params) {
|
|
3329
|
+
const tool = createApiUpdateTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3330
|
+
return tool.execute(params);
|
|
3331
|
+
},
|
|
3332
|
+
async api_credential_manage(params) {
|
|
3333
|
+
const tool = createApiCredentialManageTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3334
|
+
return tool.execute(params);
|
|
3335
|
+
},
|
|
3336
|
+
async api_refresh(params) {
|
|
3337
|
+
const tool = createApiRefreshTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3338
|
+
return tool.execute(params);
|
|
3339
|
+
},
|
|
3340
|
+
async api_remove(params) {
|
|
3341
|
+
const tool = createApiRemoveTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3342
|
+
return tool.execute(params);
|
|
3343
|
+
},
|
|
3344
|
+
async api_restore(params) {
|
|
3345
|
+
const tool = createApiRestoreTool({ client: apiClient, logger, config, user_id: getAgentId() });
|
|
3346
|
+
return tool.execute(params);
|
|
3347
|
+
},
|
|
3199
3348
|
};
|
|
3200
3349
|
}
|
|
3201
3350
|
/**
|
|
@@ -3756,6 +3905,88 @@ export const registerOpenClaw = (api) => {
|
|
|
3756
3905
|
return toAgentToolResult(result);
|
|
3757
3906
|
},
|
|
3758
3907
|
},
|
|
3908
|
+
// ── API Onboarding tools (#1784, #1785, #1786) ──────────────────────
|
|
3909
|
+
{
|
|
3910
|
+
name: 'api_onboard',
|
|
3911
|
+
description: 'Onboard a new API by providing its OpenAPI spec URL or inline content. Parses the spec into searchable memories and optionally stores credentials.',
|
|
3912
|
+
parameters: withNamespace(apiOnboardSchema),
|
|
3913
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3914
|
+
const result = await handlers.api_onboard(params);
|
|
3915
|
+
return toAgentToolResult(result);
|
|
3916
|
+
},
|
|
3917
|
+
},
|
|
3918
|
+
{
|
|
3919
|
+
name: 'api_recall',
|
|
3920
|
+
description: 'Search onboarded API memories to find endpoints, operations, and capabilities. Returns operation details including method, path, parameters, and credentials.',
|
|
3921
|
+
parameters: withNamespaces(apiRecallSchema),
|
|
3922
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3923
|
+
const result = await handlers.api_recall(params);
|
|
3924
|
+
return toAgentToolResult(result);
|
|
3925
|
+
},
|
|
3926
|
+
},
|
|
3927
|
+
{
|
|
3928
|
+
name: 'api_get',
|
|
3929
|
+
description: 'Get details about a specific onboarded API source including its status, spec version, and tags.',
|
|
3930
|
+
parameters: apiGetSchema,
|
|
3931
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3932
|
+
const result = await handlers.api_get(params);
|
|
3933
|
+
return toAgentToolResult(result);
|
|
3934
|
+
},
|
|
3935
|
+
},
|
|
3936
|
+
{
|
|
3937
|
+
name: 'api_list',
|
|
3938
|
+
description: 'List all onboarded API sources. Optionally filter by status (active, error, disabled).',
|
|
3939
|
+
parameters: apiListSchema,
|
|
3940
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3941
|
+
const result = await handlers.api_list(params);
|
|
3942
|
+
return toAgentToolResult(result);
|
|
3943
|
+
},
|
|
3944
|
+
},
|
|
3945
|
+
{
|
|
3946
|
+
name: 'api_update',
|
|
3947
|
+
description: 'Update an onboarded API source. Change its name, description, tags, or status.',
|
|
3948
|
+
parameters: apiUpdateSchema,
|
|
3949
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3950
|
+
const result = await handlers.api_update(params);
|
|
3951
|
+
return toAgentToolResult(result);
|
|
3952
|
+
},
|
|
3953
|
+
},
|
|
3954
|
+
{
|
|
3955
|
+
name: 'api_credential_manage',
|
|
3956
|
+
description: 'Manage credentials for an onboarded API source: add, update, or remove authentication headers.',
|
|
3957
|
+
parameters: apiCredentialManageSchema,
|
|
3958
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3959
|
+
const result = await handlers.api_credential_manage(params);
|
|
3960
|
+
return toAgentToolResult(result);
|
|
3961
|
+
},
|
|
3962
|
+
},
|
|
3963
|
+
{
|
|
3964
|
+
name: 'api_refresh',
|
|
3965
|
+
description: 'Refresh an API source by re-fetching its OpenAPI spec and updating memories. Returns a diff summary.',
|
|
3966
|
+
parameters: apiRefreshSchema,
|
|
3967
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3968
|
+
const result = await handlers.api_refresh(params);
|
|
3969
|
+
return toAgentToolResult(result);
|
|
3970
|
+
},
|
|
3971
|
+
},
|
|
3972
|
+
{
|
|
3973
|
+
name: 'api_remove',
|
|
3974
|
+
description: 'Soft-delete an onboarded API source. Can be restored later with api_restore.',
|
|
3975
|
+
parameters: apiRemoveSchema,
|
|
3976
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3977
|
+
const result = await handlers.api_remove(params);
|
|
3978
|
+
return toAgentToolResult(result);
|
|
3979
|
+
},
|
|
3980
|
+
},
|
|
3981
|
+
{
|
|
3982
|
+
name: 'api_restore',
|
|
3983
|
+
description: 'Restore a previously soft-deleted API source.',
|
|
3984
|
+
parameters: apiRestoreSchema,
|
|
3985
|
+
execute: async (_toolCallId, params, _signal, _onUpdate) => {
|
|
3986
|
+
const result = await handlers.api_restore(params);
|
|
3987
|
+
return toAgentToolResult(result);
|
|
3988
|
+
},
|
|
3989
|
+
},
|
|
3759
3990
|
];
|
|
3760
3991
|
for (const tool of tools) {
|
|
3761
3992
|
api.registerTool(tool);
|