abmind 0.2.6 → 0.2.7-alpha.1

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 (173) hide show
  1. package/SUPPORTED-SURFACE.md +20 -2
  2. package/dist/cli/abmind-hook-recall.js +17 -40
  3. package/dist/cli/abmind-hook-recall.js.map +1 -1
  4. package/dist/cli/abmind-hook-store.js +10 -31
  5. package/dist/cli/abmind-hook-store.js.map +1 -1
  6. package/dist/cli/abmind-hook-wakeup.js +17 -3
  7. package/dist/cli/abmind-hook-wakeup.js.map +1 -1
  8. package/dist/cli/abmind-install.js +19 -19
  9. package/dist/cli/abmind-install.js.map +1 -1
  10. package/dist/cli/abmind-restore.js +10 -0
  11. package/dist/cli/abmind-restore.js.map +1 -1
  12. package/dist/cli/abmind-sleep.d.ts +9 -5
  13. package/dist/cli/abmind-sleep.d.ts.map +1 -1
  14. package/dist/cli/abmind-sleep.js +61 -14
  15. package/dist/cli/abmind-sleep.js.map +1 -1
  16. package/dist/cli/hook-lifecycle-adapter.d.ts +11 -0
  17. package/dist/cli/hook-lifecycle-adapter.d.ts.map +1 -0
  18. package/dist/cli/hook-lifecycle-adapter.js +33 -0
  19. package/dist/cli/hook-lifecycle-adapter.js.map +1 -0
  20. package/dist/src/context-engine.d.ts +13 -3
  21. package/dist/src/context-engine.d.ts.map +1 -1
  22. package/dist/src/context-engine.js +22 -5
  23. package/dist/src/context-engine.js.map +1 -1
  24. package/dist/src/context-orchestrator.d.ts +20 -2
  25. package/dist/src/context-orchestrator.d.ts.map +1 -1
  26. package/dist/src/context-orchestrator.js +11 -3
  27. package/dist/src/context-orchestrator.js.map +1 -1
  28. package/dist/src/context-tier-renderer.d.ts +8 -1
  29. package/dist/src/context-tier-renderer.d.ts.map +1 -1
  30. package/dist/src/context-tier-renderer.js +7 -2
  31. package/dist/src/context-tier-renderer.js.map +1 -1
  32. package/dist/src/ensure-initialized.d.ts +5 -0
  33. package/dist/src/ensure-initialized.d.ts.map +1 -1
  34. package/dist/src/ensure-initialized.js +19 -28
  35. package/dist/src/ensure-initialized.js.map +1 -1
  36. package/dist/src/host-integration/identity.d.ts +10 -0
  37. package/dist/src/host-integration/identity.d.ts.map +1 -0
  38. package/dist/src/host-integration/identity.js +66 -0
  39. package/dist/src/host-integration/identity.js.map +1 -0
  40. package/dist/src/host-integration/index.d.ts +5 -0
  41. package/dist/src/host-integration/index.d.ts.map +1 -0
  42. package/dist/src/host-integration/index.js +4 -0
  43. package/dist/src/host-integration/index.js.map +1 -0
  44. package/dist/src/host-integration/lifecycle.d.ts +14 -0
  45. package/dist/src/host-integration/lifecycle.d.ts.map +1 -0
  46. package/dist/src/host-integration/lifecycle.js +192 -0
  47. package/dist/src/host-integration/lifecycle.js.map +1 -0
  48. package/dist/src/host-integration/render.d.ts +5 -0
  49. package/dist/src/host-integration/render.d.ts.map +1 -0
  50. package/dist/src/host-integration/render.js +20 -0
  51. package/dist/src/host-integration/render.js.map +1 -0
  52. package/dist/src/host-integration/types.d.ts +107 -0
  53. package/dist/src/host-integration/types.d.ts.map +1 -0
  54. package/dist/src/host-integration/types.js +2 -0
  55. package/dist/src/host-integration/types.js.map +1 -0
  56. package/dist/src/imemory-system.d.ts +1 -1
  57. package/dist/src/imemory-system.d.ts.map +1 -1
  58. package/dist/src/index.d.ts +6 -4
  59. package/dist/src/index.d.ts.map +1 -1
  60. package/dist/src/index.js +3 -1
  61. package/dist/src/index.js.map +1 -1
  62. package/dist/src/maintenance-service.d.ts +11 -0
  63. package/dist/src/maintenance-service.d.ts.map +1 -1
  64. package/dist/src/maintenance-service.js +43 -0
  65. package/dist/src/maintenance-service.js.map +1 -1
  66. package/dist/src/memory-manager.d.ts +6 -2
  67. package/dist/src/memory-manager.d.ts.map +1 -1
  68. package/dist/src/memory-manager.js +9 -5
  69. package/dist/src/memory-manager.js.map +1 -1
  70. package/dist/src/message-store.d.ts +15 -3
  71. package/dist/src/message-store.d.ts.map +1 -1
  72. package/dist/src/message-store.js +28 -9
  73. package/dist/src/message-store.js.map +1 -1
  74. package/dist/src/openclaw-plugin/index.d.ts.map +1 -1
  75. package/dist/src/openclaw-plugin/index.js +3 -2
  76. package/dist/src/openclaw-plugin/index.js.map +1 -1
  77. package/dist/src/pi-plugin/abtars-client.d.ts +22 -0
  78. package/dist/src/pi-plugin/abtars-client.d.ts.map +1 -0
  79. package/dist/src/pi-plugin/abtars-client.js +153 -0
  80. package/dist/src/pi-plugin/abtars-client.js.map +1 -0
  81. package/dist/src/pi-plugin/abtars-tools.d.ts +8 -0
  82. package/dist/src/pi-plugin/abtars-tools.d.ts.map +1 -0
  83. package/dist/src/pi-plugin/abtars-tools.js +317 -0
  84. package/dist/src/pi-plugin/abtars-tools.js.map +1 -0
  85. package/dist/src/pi-plugin/identity.d.ts +8 -0
  86. package/dist/src/pi-plugin/identity.d.ts.map +1 -0
  87. package/dist/src/pi-plugin/identity.js +37 -0
  88. package/dist/src/pi-plugin/identity.js.map +1 -0
  89. package/dist/src/pi-plugin/index.d.ts +3 -0
  90. package/dist/src/pi-plugin/index.d.ts.map +1 -0
  91. package/dist/src/pi-plugin/index.js +139 -0
  92. package/dist/src/pi-plugin/index.js.map +1 -0
  93. package/dist/src/pi-plugin/messages.d.ts +4 -0
  94. package/dist/src/pi-plugin/messages.d.ts.map +1 -0
  95. package/dist/src/pi-plugin/messages.js +36 -0
  96. package/dist/src/pi-plugin/messages.js.map +1 -0
  97. package/dist/src/pi-plugin/pi-types.d.ts +126 -0
  98. package/dist/src/pi-plugin/pi-types.d.ts.map +1 -0
  99. package/dist/src/pi-plugin/pi-types.js +15 -0
  100. package/dist/src/pi-plugin/pi-types.js.map +1 -0
  101. package/dist/src/pi-plugin/runtime.d.ts +21 -0
  102. package/dist/src/pi-plugin/runtime.d.ts.map +1 -0
  103. package/dist/src/pi-plugin/runtime.js +60 -0
  104. package/dist/src/pi-plugin/runtime.js.map +1 -0
  105. package/dist/src/pi-plugin/tools.d.ts +11 -0
  106. package/dist/src/pi-plugin/tools.d.ts.map +1 -0
  107. package/dist/src/pi-plugin/tools.js +136 -0
  108. package/dist/src/pi-plugin/tools.js.map +1 -0
  109. package/dist/src/reconcile.d.ts +2 -0
  110. package/dist/src/reconcile.d.ts.map +1 -1
  111. package/dist/src/reconcile.js +21 -4
  112. package/dist/src/reconcile.js.map +1 -1
  113. package/dist/src/session-context.d.ts +1 -0
  114. package/dist/src/session-context.d.ts.map +1 -1
  115. package/dist/src/session-context.js +42 -23
  116. package/dist/src/session-context.js.map +1 -1
  117. package/dist/src/sleep/basic.d.ts +1 -1
  118. package/dist/src/sleep/basic.d.ts.map +1 -1
  119. package/dist/src/sleep/basic.js +5 -2
  120. package/dist/src/sleep/basic.js.map +1 -1
  121. package/dist/src/sleep/catchup.d.ts +3 -5
  122. package/dist/src/sleep/catchup.d.ts.map +1 -1
  123. package/dist/src/sleep/catchup.js +37 -55
  124. package/dist/src/sleep/catchup.js.map +1 -1
  125. package/dist/src/sleep/contracts.d.ts +112 -0
  126. package/dist/src/sleep/contracts.d.ts.map +1 -0
  127. package/dist/src/sleep/contracts.js +25 -0
  128. package/dist/src/sleep/contracts.js.map +1 -0
  129. package/dist/src/sleep/llm-budget.d.ts +34 -14
  130. package/dist/src/sleep/llm-budget.d.ts.map +1 -1
  131. package/dist/src/sleep/llm-budget.js +66 -52
  132. package/dist/src/sleep/llm-budget.js.map +1 -1
  133. package/dist/src/sleep/orchestrator.d.ts +19 -69
  134. package/dist/src/sleep/orchestrator.d.ts.map +1 -1
  135. package/dist/src/sleep/orchestrator.js +286 -270
  136. package/dist/src/sleep/orchestrator.js.map +1 -1
  137. package/dist/src/sleep/state.d.ts +7 -19
  138. package/dist/src/sleep/state.d.ts.map +1 -1
  139. package/dist/src/sleep/state.js +5 -38
  140. package/dist/src/sleep/state.js.map +1 -1
  141. package/dist/src/sleep/test-harness.d.ts +3 -1
  142. package/dist/src/sleep/test-harness.d.ts.map +1 -1
  143. package/dist/src/sleep/test-harness.js +3 -2
  144. package/dist/src/sleep/test-harness.js.map +1 -1
  145. package/dist/src/soul-seeder.d.ts +36 -0
  146. package/dist/src/soul-seeder.d.ts.map +1 -0
  147. package/dist/src/soul-seeder.js +69 -0
  148. package/dist/src/soul-seeder.js.map +1 -0
  149. package/dist/src/wake-up-builder.d.ts +3 -1
  150. package/dist/src/wake-up-builder.d.ts.map +1 -1
  151. package/dist/src/wake-up-builder.js +29 -5
  152. package/dist/src/wake-up-builder.js.map +1 -1
  153. package/package.json +20 -2
  154. package/dist/cli/abmind-rollback.d.ts +0 -8
  155. package/dist/cli/abmind-rollback.d.ts.map +0 -1
  156. package/dist/cli/abmind-rollback.js +0 -78
  157. package/dist/cli/abmind-rollback.js.map +0 -1
  158. package/dist/src/native-loader.d.ts +0 -7
  159. package/dist/src/native-loader.d.ts.map +0 -1
  160. package/dist/src/native-loader.js +0 -21
  161. package/dist/src/native-loader.js.map +0 -1
  162. package/dist/src/recall-benchmark.d.ts +0 -13
  163. package/dist/src/recall-benchmark.d.ts.map +0 -1
  164. package/dist/src/recall-benchmark.js +0 -260
  165. package/dist/src/recall-benchmark.js.map +0 -1
  166. package/dist/src/sleep/runtime.d.ts +0 -15
  167. package/dist/src/sleep/runtime.d.ts.map +0 -1
  168. package/dist/src/sleep/runtime.js +0 -2
  169. package/dist/src/sleep/runtime.js.map +0 -1
  170. package/dist/src/wake-up-renderer.d.ts +0 -24
  171. package/dist/src/wake-up-renderer.d.ts.map +0 -1
  172. package/dist/src/wake-up-renderer.js +0 -148
  173. package/dist/src/wake-up-renderer.js.map +0 -1
@@ -0,0 +1,22 @@
1
+ interface PiApiOk<T = unknown> {
2
+ ok: true;
3
+ data: T;
4
+ duplicate?: boolean;
5
+ }
6
+ interface PiApiErr {
7
+ ok: false;
8
+ error: {
9
+ code: string;
10
+ message: string;
11
+ retryable: boolean;
12
+ };
13
+ }
14
+ export type PiApiResponse<T = unknown> = PiApiOk<T> | PiApiErr;
15
+ export interface PiClientState {
16
+ available: boolean;
17
+ reason?: string;
18
+ }
19
+ export declare function checkPiClient(): PiClientState;
20
+ export declare function piRequest<T = unknown>(method: string, path: string, body?: Record<string, unknown>): Promise<PiApiResponse<T>>;
21
+ export {};
22
+ //# sourceMappingURL=abtars-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abtars-client.d.ts","sourceRoot":"","sources":["../../../src/pi-plugin/abtars-client.ts"],"names":[],"mappings":"AAkBA,UAAU,OAAO,CAAC,CAAC,GAAG,OAAO;IAC3B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9D;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuED,wBAAgB,aAAa,IAAI,aAAa,CAM7C;AAED,wBAAsB,SAAS,CAAC,CAAC,GAAG,OAAO,EACzC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3D,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CA0E3B"}
@@ -0,0 +1,153 @@
1
+ import { createHash, createPrivateKey, sign as cryptoSign, randomBytes } from "node:crypto";
2
+ import { readFileSync, existsSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import * as http from "node:http";
5
+ const DEFAULT_PORT = 7100;
6
+ const HOME = process.env["HOME"] ?? "/root";
7
+ const ABTARS_HOME = join(HOME, ".abtars");
8
+ const PI_CRED_PATH = join(ABTARS_HOME, "clients", "pi", "credential.json");
9
+ let _cachedCred = null;
10
+ let _lastMtime = 0;
11
+ function loadCredential() {
12
+ try {
13
+ if (!existsSync(PI_CRED_PATH))
14
+ return null;
15
+ const raw = readFileSync(PI_CRED_PATH, "utf-8");
16
+ const parsed = JSON.parse(raw);
17
+ if (parsed.version !== 1 || parsed.clientId !== "pi-local" || !parsed.signingKey || !parsed.keyId) {
18
+ return null;
19
+ }
20
+ return parsed;
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ function getCredential() {
27
+ try {
28
+ const stat = existsSync(PI_CRED_PATH) ? undefined : null;
29
+ if (stat === null) {
30
+ _cachedCred = null;
31
+ return null;
32
+ }
33
+ const mtime = 0;
34
+ if (!_cachedCred || mtime !== _lastMtime) {
35
+ _cachedCred = loadCredential();
36
+ _lastMtime = mtime;
37
+ }
38
+ return _cachedCred;
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ function sha256Hex(data) {
45
+ return createHash("sha256").update(data, "utf-8").digest("hex");
46
+ }
47
+ function buildCanonical(method, path, clientId, keyId, ts, nonce, body) {
48
+ return `abtars-pi-v1\n${method}\n${path}\n${clientId}\n${keyId}\n${ts}\n${nonce}\n${sha256Hex(body)}`;
49
+ }
50
+ function signCanonical(canonical, signingKeyBase64) {
51
+ const privKey = createPrivateKey({
52
+ key: Buffer.from(signingKeyBase64, "base64"),
53
+ format: "der",
54
+ type: "pkcs8",
55
+ });
56
+ return cryptoSign(null, Buffer.from(canonical, "utf-8"), privKey).toString("base64");
57
+ }
58
+ function getAgentPort() {
59
+ try {
60
+ const transportPath = join(ABTARS_HOME, "config", "transport.json");
61
+ if (existsSync(transportPath)) {
62
+ const cfg = JSON.parse(readFileSync(transportPath, "utf-8"));
63
+ if (typeof cfg["agentApiPort"] === "number")
64
+ return cfg["agentApiPort"];
65
+ }
66
+ }
67
+ catch {
68
+ // fall through
69
+ }
70
+ const envPort = process.env["AGENT_API_PORT"];
71
+ if (envPort) {
72
+ const p = parseInt(envPort, 10);
73
+ if (!isNaN(p) && p > 0 && p < 65536)
74
+ return p;
75
+ }
76
+ return DEFAULT_PORT;
77
+ }
78
+ export function checkPiClient() {
79
+ const cred = loadCredential();
80
+ if (!cred) {
81
+ return { available: false, reason: "no-credential" };
82
+ }
83
+ return { available: true };
84
+ }
85
+ export async function piRequest(method, path, body) {
86
+ const cred = getCredential();
87
+ if (!cred) {
88
+ return { ok: false, error: { code: "no_credential", message: "Pi credential not found", retryable: false } };
89
+ }
90
+ const bodyStr = body ? JSON.stringify(body) : "";
91
+ const ts = Math.floor(Date.now() / 1000);
92
+ const nonce = randomBytes(16).toString("hex");
93
+ const canonical = buildCanonical(method, path, cred.clientId, cred.keyId, ts, nonce, bodyStr);
94
+ const sig = signCanonical(canonical, cred.signingKey);
95
+ const port = getAgentPort();
96
+ return new Promise((resolve) => {
97
+ const headers = {
98
+ "X-Abtars-Pi-Client": cred.clientId,
99
+ "X-Abtars-Pi-Key-Id": cred.keyId,
100
+ "X-Abtars-Pi-Ts": String(ts),
101
+ "X-Abtars-Pi-Nonce": nonce,
102
+ "X-Abtars-Pi-Sig": sig,
103
+ "Content-Type": "application/json",
104
+ };
105
+ if (bodyStr) {
106
+ headers["Content-Length"] = String(Buffer.byteLength(bodyStr));
107
+ }
108
+ const req = http.request({
109
+ hostname: "127.0.0.1",
110
+ port,
111
+ path,
112
+ method,
113
+ headers,
114
+ timeout: 10_000,
115
+ }, (res) => {
116
+ let data = "";
117
+ res.on("data", (c) => { data += c.toString(); });
118
+ res.on("end", () => {
119
+ try {
120
+ const parsed = JSON.parse(data);
121
+ resolve(parsed);
122
+ }
123
+ catch {
124
+ resolve({
125
+ ok: false,
126
+ error: { code: "bad_response", message: "Invalid JSON response from abtars", retryable: true },
127
+ });
128
+ }
129
+ });
130
+ });
131
+ req.on("error", (err) => {
132
+ resolve({
133
+ ok: false,
134
+ error: {
135
+ code: "connection_failed",
136
+ message: `Cannot reach abtars on 127.0.0.1:${port}: ${err.message}`,
137
+ retryable: true,
138
+ },
139
+ });
140
+ });
141
+ req.on("timeout", () => {
142
+ req.destroy();
143
+ resolve({
144
+ ok: false,
145
+ error: { code: "timeout", message: "abtars Pi API request timed out", retryable: true },
146
+ });
147
+ });
148
+ if (bodyStr)
149
+ req.write(bodyStr);
150
+ req.end();
151
+ });
152
+ }
153
+ //# sourceMappingURL=abtars-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abtars-client.js","sourceRoot":"","sources":["../../../src/pi-plugin/abtars-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type ToolDefinition } from "./pi-types.js";
2
+ export declare function createAbtarsStatusTool(): ToolDefinition;
3
+ export declare function createAbtarsNotifyTool(): ToolDefinition;
4
+ export declare function createAbtarsTaskQueueTool(): ToolDefinition;
5
+ export declare function createAbtarsTaskStatusTool(): ToolDefinition;
6
+ export declare function createAbtarsPeerListTool(): ToolDefinition;
7
+ export declare function createAbtarsPeerDelegateTool(): ToolDefinition;
8
+ //# sourceMappingURL=abtars-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abtars-tools.d.ts","sourceRoot":"","sources":["../../../src/pi-plugin/abtars-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,cAAc,EAA+C,MAAM,eAAe,CAAC;AAoB7G,wBAAgB,sBAAsB,IAAI,cAAc,CA0CvD;AAED,wBAAgB,sBAAsB,IAAI,cAAc,CA6CvD;AAED,wBAAgB,yBAAyB,IAAI,cAAc,CA2D1D;AAED,wBAAgB,0BAA0B,IAAI,cAAc,CAsD3D;AAED,wBAAgB,wBAAwB,IAAI,cAAc,CA+DzD;AAED,wBAAgB,4BAA4B,IAAI,cAAc,CA8E7D"}
@@ -0,0 +1,317 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { randomUUID } from "node:crypto";
3
+ import { checkPiClient, piRequest } from "./abtars-client.js";
4
+ import { defineTool } from "./pi-types.js";
5
+ function unavailableResult(msg) {
6
+ return {
7
+ content: [{ type: "text", text: `[abtars] ${msg}` }],
8
+ details: { available: false },
9
+ };
10
+ }
11
+ function checkAvailability() {
12
+ const state = checkPiClient();
13
+ if (!state.available) {
14
+ const msg = state.reason === "no-credential"
15
+ ? "Pi credential not found. Run 'abtars pi authorize' first."
16
+ : "Pi client not available.";
17
+ return { ok: false, message: msg };
18
+ }
19
+ return { ok: true };
20
+ }
21
+ export function createAbtarsStatusTool() {
22
+ return defineTool({
23
+ name: "abtars_status",
24
+ label: "Abtars Status",
25
+ description: "Check if the abtars bridge is reachable, get its version, uptime, and available capabilities.",
26
+ promptSnippet: "Use abtars_status to check if the abtars bridge is running and get version/uptime info.",
27
+ promptGuidelines: [
28
+ "Check bridge availability before using other abtars tools",
29
+ ],
30
+ parameters: Type.Object({}),
31
+ async execute(_toolCallId, _params, _signal, _onUpdate, _ctx) {
32
+ const avail = checkAvailability();
33
+ if (!avail.ok)
34
+ return unavailableResult(avail.message);
35
+ const resp = await piRequest("GET", "/v1/pi/status");
36
+ if (resp.ok) {
37
+ const d = resp.data;
38
+ const lines = [
39
+ `Bridge: abtars ${d.version}`,
40
+ `Uptime: ${Math.floor(d.uptimeSec / 60)}m ${d.uptimeSec % 60}s`,
41
+ "Capabilities:",
42
+ ` notify: ${d.capabilities.notify ? "✅" : "❌"}`,
43
+ ` tasks: ${d.capabilities.tasks ? "✅" : "❌"}`,
44
+ ` peers: ${d.capabilities.peers ? "✅" : "❌"}`,
45
+ ` delegate: ${d.capabilities.delegate ? "✅" : "❌"}`,
46
+ ];
47
+ return {
48
+ content: [{ type: "text", text: lines.join("\n") }],
49
+ details: { available: true, data: d },
50
+ };
51
+ }
52
+ return {
53
+ content: [{ type: "text", text: `abtars unreachable: ${resp.error.message}` }],
54
+ details: { available: false, error: resp.error },
55
+ };
56
+ },
57
+ });
58
+ }
59
+ export function createAbtarsNotifyTool() {
60
+ return defineTool({
61
+ name: "abtars_notify",
62
+ label: "Abtars Notify",
63
+ description: "Send a text notification to the configured main chat (Telegram/Discord) through the abtars bridge.",
64
+ promptSnippet: "Use abtars_notify to send a message to the operator's main chat channel.",
65
+ promptGuidelines: [
66
+ "Messages are truncated to 4096 characters",
67
+ "Only plain text — no markdown, files, or media",
68
+ "Use for important alerts that need operator attention",
69
+ ],
70
+ parameters: Type.Object({
71
+ text: Type.String({ minLength: 1, maxLength: 4096, description: "Notification text to send to main chat" }),
72
+ }),
73
+ async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
74
+ const avail = checkAvailability();
75
+ if (!avail.ok)
76
+ return unavailableResult(avail.message);
77
+ const text = String(params["text"] ?? "").slice(0, 4096);
78
+ const requestId = randomUUID();
79
+ const resp = await piRequest("POST", "/v1/pi/notify", { request_id: requestId, text });
80
+ if (resp.ok) {
81
+ return {
82
+ content: [{ type: "text", text: "Notification sent to main chat." }],
83
+ details: { sent: true },
84
+ };
85
+ }
86
+ const msg = resp.error.code === "not_available"
87
+ ? "Main chat not configured on the bridge."
88
+ : resp.error.code === "rate_limited"
89
+ ? "Rate limited. Try again later."
90
+ : `Notify failed: ${resp.error.message}`;
91
+ return {
92
+ content: [{ type: "text", text: msg }],
93
+ details: { sent: false, error: resp.error },
94
+ };
95
+ },
96
+ });
97
+ }
98
+ export function createAbtarsTaskQueueTool() {
99
+ return defineTool({
100
+ name: "abtars_task_queue",
101
+ label: "Abtars Task Queue",
102
+ description: "Queue an asynchronous task for the abtars Orc to process. Returns immediately with a tracking ID.",
103
+ promptSnippet: "Use abtars_task_queue when you need Orc to process something asynchronously in the background.",
104
+ promptGuidelines: [
105
+ "Provide a clear, specific goal describing what to do",
106
+ "Optional context adds background information (up to 16 KiB)",
107
+ "Supply capability requirements to delegate to a capable peer",
108
+ "The task is not inside your own session — it runs independently",
109
+ "Check status later with abtars_task_status",
110
+ ],
111
+ parameters: Type.Object({
112
+ goal: Type.String({ minLength: 1, maxLength: 32768, description: "Task goal — what should Orc do" }),
113
+ context: Type.Optional(Type.String({ maxLength: 16384, description: "Optional background context for the task" })),
114
+ priority: Type.Optional(Type.Union([
115
+ Type.Literal("CRITICAL"),
116
+ Type.Literal("HIGH"),
117
+ Type.Literal("MEDIUM"),
118
+ Type.Literal("LOW"),
119
+ ])),
120
+ delivery: Type.Optional(Type.Union([
121
+ Type.Literal("silent"),
122
+ Type.Literal("deliver"),
123
+ Type.Literal("announce"),
124
+ ])),
125
+ }),
126
+ async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
127
+ const avail = checkAvailability();
128
+ if (!avail.ok)
129
+ return unavailableResult(avail.message);
130
+ const goal = String(params["goal"] ?? "").slice(0, 32768);
131
+ const context = params["context"] ? String(params["context"]).slice(0, 16384) : undefined;
132
+ const priority = String(params["priority"] ?? "MEDIUM");
133
+ const delivery = String(params["delivery"] ?? "silent");
134
+ const requestId = randomUUID();
135
+ const resp = await piRequest("POST", "/v1/pi/tasks", { request_id: requestId, goal, context, priority, delivery });
136
+ if (resp.ok) {
137
+ return {
138
+ content: [{ type: "text", text: `Task queued. Tracking ID: ${resp.data.task_id} (status: ${resp.data.status})` }],
139
+ details: { queued: true, taskId: resp.data.task_id },
140
+ };
141
+ }
142
+ return {
143
+ content: [{ type: "text", text: `Task queue failed: ${resp.error.message}` }],
144
+ details: { queued: false, error: resp.error },
145
+ };
146
+ },
147
+ });
148
+ }
149
+ export function createAbtarsTaskStatusTool() {
150
+ return defineTool({
151
+ name: "abtars_task_status",
152
+ label: "Abtars Task Status",
153
+ description: "Check the status of a previously queued abtars task by its tracking ID.",
154
+ promptSnippet: "Use abtars_task_status to check what happened with a queued task.",
155
+ promptGuidelines: [
156
+ "Provide the task ID returned from abtars_task_queue",
157
+ "Only tasks created by the same Pi client are visible",
158
+ ],
159
+ parameters: Type.Object({
160
+ task_id: Type.Integer({ minimum: 1, description: "The task tracking ID from abtars_task_queue" }),
161
+ }),
162
+ async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
163
+ const avail = checkAvailability();
164
+ if (!avail.ok)
165
+ return unavailableResult(avail.message);
166
+ const taskId = Number(params["task_id"]);
167
+ const resp = await piRequest("GET", `/v1/pi/tasks/${taskId}`);
168
+ if (resp.ok) {
169
+ const d = resp.data;
170
+ const lines = [
171
+ `Task #${d.task_id}`,
172
+ `Status: ${d.status}`,
173
+ `Created: ${d.created_at}`,
174
+ ];
175
+ if (d.completed_at)
176
+ lines.push(`Completed: ${d.completed_at}`);
177
+ if (d.result_summary)
178
+ lines.push(`Result: ${d.result_summary.slice(0, 500)}`);
179
+ if (d.error)
180
+ lines.push(`Error: ${d.error.slice(0, 500)}`);
181
+ return {
182
+ content: [{ type: "text", text: lines.join("\n") }],
183
+ details: d,
184
+ };
185
+ }
186
+ const msg = resp.error.code === "not_found"
187
+ ? `Task #${taskId} not found or not owned by this client.`
188
+ : `Task status check failed: ${resp.error.message}`;
189
+ return {
190
+ content: [{ type: "text", text: msg }],
191
+ details: { error: resp.error },
192
+ };
193
+ },
194
+ });
195
+ }
196
+ export function createAbtarsPeerListTool() {
197
+ return defineTool({
198
+ name: "abtars_peer_list",
199
+ label: "Abtars Peer List",
200
+ description: "List live peers connected to the abtars bridge, their capability sets, and load.",
201
+ promptSnippet: "Use abtars_peer_list to see what bridge peers are available and their capabilities.",
202
+ promptGuidelines: [
203
+ "Results show name, liveness, load, sessions, and capabilities",
204
+ "No network addresses or credential data are exposed",
205
+ "Use this before abtars_peer_delegate to find capable peers",
206
+ ],
207
+ parameters: Type.Object({
208
+ filter_capability: Type.Optional(Type.String({
209
+ description: "Optional capability filter — only show peers with this capability",
210
+ })),
211
+ }),
212
+ async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
213
+ const avail = checkAvailability();
214
+ if (!avail.ok)
215
+ return unavailableResult(avail.message);
216
+ const resp = await piRequest("GET", "/v1/pi/peers");
217
+ if (resp.ok) {
218
+ let peers = resp.data.peers;
219
+ const filterCap = params["filter_capability"];
220
+ if (typeof filterCap === "string" && filterCap) {
221
+ peers = peers.filter(p => p.capabilities.includes(filterCap));
222
+ }
223
+ if (peers.length === 0) {
224
+ return {
225
+ content: [{ type: "text", text: "No peers found." }],
226
+ details: { peers: [] },
227
+ };
228
+ }
229
+ const lines = peers.map(p => {
230
+ const age = p.lastSeenAge !== null
231
+ ? `${Math.floor(p.lastSeenAge / 1000)}s ago` : "unknown";
232
+ const caps = p.capabilities.length > 0 ? p.capabilities.join(", ") : "none";
233
+ return ` ${p.name} ${p.alive ? "🟢" : "🔴"} load=${(p.load * 100).toFixed(0)}% sessions=${p.sessions} last=${age} caps=[${caps}] v=${p.version}`;
234
+ });
235
+ return {
236
+ content: [{ type: "text", text: `Peers (${peers.length}):\n${lines.join("\n")}` }],
237
+ details: { peers },
238
+ };
239
+ }
240
+ return {
241
+ content: [{ type: "text", text: `Peer list failed: ${resp.error.message}` }],
242
+ details: { error: resp.error },
243
+ };
244
+ },
245
+ });
246
+ }
247
+ export function createAbtarsPeerDelegateTool() {
248
+ return defineTool({
249
+ name: "abtars_peer_delegate",
250
+ label: "Abtars Peer Delegate",
251
+ description: "Delegate an asynchronous task to a remote peer bridge. Selects the least-loaded capable peer automatically.",
252
+ promptSnippet: "Use abtars_peer_delegate to offload work to another bridge peer.",
253
+ promptGuidelines: [
254
+ "Provide a clear goal describing what the remote peer should do",
255
+ "Use requirements to specify needed capabilities (e.g. docker, browser)",
256
+ "Specify a target peer with 'peer' to override automatic selection",
257
+ "The task runs asynchronously on the remote bridge",
258
+ "Check abtars_peer_list first to see available peers",
259
+ ],
260
+ parameters: Type.Object({
261
+ goal: Type.String({ minLength: 1, maxLength: 32768, description: "Task goal for the remote peer" }),
262
+ peer: Type.Optional(Type.String({ maxLength: 128, description: "Specific peer name to delegate to (auto-select if omitted)" })),
263
+ context: Type.Optional(Type.String({ maxLength: 16384, description: "Optional background context" })),
264
+ priority: Type.Optional(Type.Union([
265
+ Type.Literal("CRITICAL"),
266
+ Type.Literal("HIGH"),
267
+ Type.Literal("MEDIUM"),
268
+ Type.Literal("LOW"),
269
+ ])),
270
+ requirements: Type.Optional(Type.Array(Type.String({ maxLength: 64 }), {
271
+ maxItems: 20,
272
+ description: "Required peer capabilities (e.g. docker, browser, gpu)",
273
+ })),
274
+ }),
275
+ async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
276
+ const avail = checkAvailability();
277
+ if (!avail.ok)
278
+ return unavailableResult(avail.message);
279
+ const goal = String(params["goal"] ?? "").slice(0, 32768);
280
+ const peer = params["peer"] ? String(params["peer"]).slice(0, 128) : undefined;
281
+ const context = params["context"] ? String(params["context"]).slice(0, 16384) : undefined;
282
+ const priority = String(params["priority"] ?? "MEDIUM");
283
+ const requirements = Array.isArray(params["requirements"])
284
+ ? params["requirements"].slice(0, 20)
285
+ : undefined;
286
+ const requestId = randomUUID();
287
+ const resp = await piRequest("POST", "/v1/pi/peers/delegate", {
288
+ request_id: requestId, goal, peer, context, priority,
289
+ ...(requirements ? { requirements } : {}),
290
+ });
291
+ if (resp.ok) {
292
+ const d = resp.data;
293
+ const lines = [
294
+ `Delegated to peer: ${d.peer}`,
295
+ `Remote task ID: ${d.task_id}`,
296
+ `Status: ${d.status}`,
297
+ ];
298
+ if (d.remote_session_id)
299
+ lines.push(`Remote session: ${d.remote_session_id}`);
300
+ return {
301
+ content: [{ type: "text", text: lines.join("\n") }],
302
+ details: d,
303
+ };
304
+ }
305
+ const msg = resp.error.code === "no_peers"
306
+ ? "No suitable peer found for delegation."
307
+ : resp.error.code === "rate_limited"
308
+ ? "Rate limited. Try again later."
309
+ : `Delegation failed: ${resp.error.message}`;
310
+ return {
311
+ content: [{ type: "text", text: msg }],
312
+ details: { delegated: false, error: resp.error },
313
+ };
314
+ },
315
+ });
316
+ }
317
+ //# sourceMappingURL=abtars-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abtars-tools.js","sourceRoot":"","sources":["../../../src/pi-plugin/abtars-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ExecutionIdentity } from "../host-integration/types.js";
2
+ import type { SessionStartEvent, ExtensionContext } from "./pi-types.js";
3
+ export declare function resolvePrincipal(): string;
4
+ export interface PiIdentityResult {
5
+ identity: ExecutionIdentity;
6
+ }
7
+ export declare function buildIdentity(event: SessionStartEvent, ctx: ExtensionContext): PiIdentityResult;
8
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/pi-plugin/identity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMzE,wBAAgB,gBAAgB,IAAI,MAAM,CAUzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAkB/F"}
@@ -0,0 +1,37 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { loadMasterUserId } from "../user-utils.js";
3
+ function nonEmpty(value) {
4
+ return value?.trim() || undefined;
5
+ }
6
+ export function resolvePrincipal() {
7
+ const fromEnv = process.env.ABMIND_USER_ID?.trim();
8
+ if (fromEnv)
9
+ return fromEnv;
10
+ try {
11
+ const master = loadMasterUserId();
12
+ if (master && master !== "master")
13
+ return master;
14
+ }
15
+ catch {
16
+ // fall through to default
17
+ }
18
+ return "default";
19
+ }
20
+ export function buildIdentity(event, ctx) {
21
+ const principalId = resolvePrincipal();
22
+ const conversationId = ctx.sessionManager.getSessionId();
23
+ const executionId = randomUUID();
24
+ const parentExecutionId = nonEmpty(process.env.ABMIND_PARENT_EXECUTION_ID);
25
+ const automaticWriteOwner = nonEmpty(process.env.ABMIND_AUTOMATIC_WRITE_OWNER) ?? "abmind-pi-plugin";
26
+ const identity = {
27
+ principalId,
28
+ conversationId,
29
+ executionId,
30
+ parentExecutionId,
31
+ host: "pi",
32
+ origin: `pi:${event.reason}`,
33
+ automaticWriteOwner,
34
+ };
35
+ return { identity };
36
+ }
37
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/pi-plugin/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,SAAS,QAAQ,CAAC,KAAgC;IAChD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IACnD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,MAAM,UAAU,aAAa,CAAC,KAAwB,EAAE,GAAqB;IAC3E,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAC;IACvC,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;IACzD,MAAM,WAAW,GAAG,UAAU,EAAE,CAAC;IACjC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC3E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,kBAAkB,CAAC;IAErG,MAAM,QAAQ,GAAsB;QAClC,WAAW;QACX,cAAc;QACd,WAAW;QACX,iBAAiB;QACjB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE;QAC5B,mBAAmB;KACpB,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ExtensionAPI } from "./pi-types.js";
2
+ export default function abmindPiPlugin(pi: ExtensionAPI): Promise<void>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pi-plugin/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,YAAY,EAOb,MAAM,eAAe,CAAC;AAKvB,wBAA8B,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2I5E"}