abmind 0.2.6 → 0.2.7-alpha.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 (153) 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
@@ -0,0 +1,139 @@
1
+ import { logInfo, logWarn } from "../mem-logger.js";
2
+ import { extractEnglishTokens } from "../query-tokenizer.js";
3
+ import { createPiRuntime, hasDegraded } from "./runtime.js";
4
+ import { buildIdentity } from "./identity.js";
5
+ import { extractAssistantText, composeAbmindContext } from "./messages.js";
6
+ import { createRecallTool, createStoreTool } from "./tools.js";
7
+ import { createAbtarsStatusTool, createAbtarsNotifyTool, createAbtarsTaskQueueTool, createAbtarsTaskStatusTool, createAbtarsPeerListTool, createAbtarsPeerDelegateTool, } from "./abtars-tools.js";
8
+ const TAG = "pi-plugin";
9
+ const RECALL_POLICY = { limit: 5, maxChars: 8_000, minScore: 0.25, maxClassification: 2 };
10
+ export default async function abmindPiPlugin(pi) {
11
+ const runtime = await createPiRuntime();
12
+ if (hasDegraded(runtime)) {
13
+ logWarn(TAG, "Running in degraded mode — memory unavailable");
14
+ }
15
+ pi.on("session_start", async (event, ctx) => {
16
+ logInfo(TAG, `session_start: ${event.reason}`);
17
+ const { identity } = buildIdentity(event, ctx);
18
+ runtime.state.identity = identity;
19
+ runtime.state.runGeneration = 0;
20
+ runtime.state.lastCapturedGeneration = -1;
21
+ runtime.state.pendingUserPrompt = null;
22
+ if (!runtime.state.lifecycle) {
23
+ runtime.state.pendingWakeUp = "";
24
+ return;
25
+ }
26
+ try {
27
+ const result = await runtime.state.lifecycle.startSession({
28
+ identity,
29
+ maxChars: 12_000,
30
+ });
31
+ if (result.ok) {
32
+ runtime.state.pendingWakeUp = result.context;
33
+ }
34
+ else {
35
+ runtime.state.pendingWakeUp = "";
36
+ }
37
+ }
38
+ catch {
39
+ runtime.state.pendingWakeUp = "";
40
+ }
41
+ });
42
+ pi.on("before_agent_start", async (event, _ctx) => {
43
+ runtime.state.runGeneration++;
44
+ runtime.state.pendingUserPrompt = event.prompt;
45
+ if (!event.prompt.trim())
46
+ return;
47
+ const identity = runtime.state.identity;
48
+ if (!identity || !runtime.state.lifecycle)
49
+ return;
50
+ let recall = "";
51
+ try {
52
+ const tokens = extractEnglishTokens(event.prompt);
53
+ const result = await runtime.state.lifecycle.prepareTurn({
54
+ identity,
55
+ prompt: event.prompt,
56
+ query: { translated: tokens.length > 0 ? tokens : [event.prompt], original: event.prompt },
57
+ policy: RECALL_POLICY,
58
+ });
59
+ recall = result.context;
60
+ }
61
+ catch {
62
+ recall = "";
63
+ }
64
+ const wakeUp = runtime.state.pendingWakeUp;
65
+ if (wakeUp) {
66
+ runtime.state.pendingWakeUp = "";
67
+ }
68
+ const composed = composeAbmindContext(wakeUp, recall);
69
+ if (!composed)
70
+ return;
71
+ pi.sendMessage({
72
+ customType: "abmind-context",
73
+ content: composed,
74
+ display: false,
75
+ details: {
76
+ executionId: identity.executionId,
77
+ wakeUp: !!wakeUp,
78
+ recallHits: recall ? recall.split("\n").filter(l => l.startsWith("- (")).length : 0,
79
+ },
80
+ });
81
+ });
82
+ pi.on("agent_end", async (event, _ctx) => {
83
+ const identity = runtime.state.identity;
84
+ if (!identity || !runtime.state.lifecycle)
85
+ return;
86
+ const currentGeneration = runtime.state.runGeneration;
87
+ const userPrompt = runtime.state.pendingUserPrompt;
88
+ runtime.state.pendingUserPrompt = null;
89
+ if (currentGeneration <= runtime.state.lastCapturedGeneration)
90
+ return;
91
+ if (!userPrompt)
92
+ return;
93
+ const assistantText = extractAssistantText(event.messages);
94
+ if (!assistantText)
95
+ return;
96
+ try {
97
+ const result = runtime.state.lifecycle.completeTurn({
98
+ identity,
99
+ user: { content: userPrompt },
100
+ assistant: { content: assistantText },
101
+ });
102
+ if (result.status === "recorded") {
103
+ runtime.state.lastCapturedGeneration = currentGeneration;
104
+ }
105
+ }
106
+ catch {
107
+ // fail-open
108
+ }
109
+ });
110
+ pi.on("session_compact", async (_event, _ctx) => {
111
+ // No lifecycle operation — Pi owns compaction.
112
+ });
113
+ pi.on("session_shutdown", async (_event, _ctx) => {
114
+ runtime.state.pendingUserPrompt = null;
115
+ runtime.state.identity = null;
116
+ runtime.state.pendingWakeUp = "";
117
+ runtime.state.runGeneration = 0;
118
+ runtime.state.lastCapturedGeneration = -1;
119
+ runtime.close();
120
+ });
121
+ if (runtime.state.lifecycle) {
122
+ const getIdentity = () => {
123
+ if (!runtime.state.identity) {
124
+ throw new Error("No active identity — session_start not yet called");
125
+ }
126
+ return runtime.state.identity;
127
+ };
128
+ pi.registerTool(createRecallTool({ lifecycle: runtime.state.lifecycle, getIdentity }));
129
+ pi.registerTool(createStoreTool({ lifecycle: runtime.state.lifecycle, getIdentity }));
130
+ }
131
+ // #1313 — Pi-to-abtars capability bridge tools (always registered, report unavailable if no credential)
132
+ pi.registerTool(createAbtarsStatusTool());
133
+ pi.registerTool(createAbtarsNotifyTool());
134
+ pi.registerTool(createAbtarsTaskQueueTool());
135
+ pi.registerTool(createAbtarsTaskStatusTool());
136
+ pi.registerTool(createAbtarsPeerListTool());
137
+ pi.registerTool(createAbtarsPeerDelegateTool());
138
+ }
139
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pi-plugin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AgentMessage } from "./pi-types.js";
2
+ export declare function extractAssistantText(messages: AgentMessage[]): string | undefined;
3
+ export declare function composeAbmindContext(wakeUp: string, recall: string): string | undefined;
4
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/pi-plugin/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,eAAe,CAAC;AAIjF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,SAAS,CAejF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiBvF"}
@@ -0,0 +1,36 @@
1
+ const COMPOSITION_MAX_CHARS = 16_000;
2
+ export function extractAssistantText(messages) {
3
+ for (let i = messages.length - 1; i >= 0; i--) {
4
+ const msg = messages[i];
5
+ if (msg.role !== "assistant")
6
+ continue;
7
+ const asst = msg;
8
+ if (asst.stopReason !== "stop")
9
+ continue;
10
+ const textParts = [];
11
+ for (const block of asst.content) {
12
+ if (block.type === "text") {
13
+ textParts.push(block.text);
14
+ }
15
+ }
16
+ if (textParts.length > 0)
17
+ return textParts.join("\n");
18
+ }
19
+ return undefined;
20
+ }
21
+ export function composeAbmindContext(wakeUp, recall) {
22
+ const sections = [];
23
+ if (wakeUp.trim()) {
24
+ sections.push(`[Wake-up context]\n${wakeUp.trim()}`);
25
+ }
26
+ if (recall.trim()) {
27
+ sections.push(`[Memory recall]\n${recall.trim()}`);
28
+ }
29
+ if (sections.length === 0)
30
+ return undefined;
31
+ const joined = sections.join("\n\n");
32
+ if (joined.length <= COMPOSITION_MAX_CHARS)
33
+ return joined;
34
+ return joined.slice(0, COMPOSITION_MAX_CHARS);
35
+ }
36
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/pi-plugin/messages.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACvC,MAAM,IAAI,GAAG,GAAuB,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM;YAAE,SAAS;QACzC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,SAAS,CAAC,IAAI,CAAE,KAAqB,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,MAAc;IACjE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,IAAI,qBAAqB;QAAE,OAAO,MAAM,CAAC;IAE1D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Ambient type declarations for Pi extension API types.
3
+ *
4
+ * These types are provided by the Pi host at runtime via
5
+ * `@earendil-works/pi-coding-agent`, `@earendil-works/pi-agent-core`,
6
+ * and `@earendil-works/pi-ai`. We declare them here so the pi-plugin
7
+ * module compiles without those packages installed.
8
+ *
9
+ * At runtime inside Pi, the actual packages supply the real types and
10
+ * values. Standalone abmind must not import this file at the root level.
11
+ */
12
+ import type { TSchema } from "@sinclair/typebox";
13
+ export interface ExtensionAPI {
14
+ on<E = unknown, R = void>(event: string, handler: (event: E, ctx: ExtensionContext) => R | Promise<R>): void;
15
+ registerTool<TParams extends TSchema = TSchema, TDetails = unknown>(tool: ToolDefinition<TParams, TDetails>): void;
16
+ sendMessage<T = unknown>(message: Pick<CustomMessage<T>, "customType" | "content" | "display" | "details">, options?: {
17
+ triggerTurn?: boolean;
18
+ deliverAs?: "steer" | "followUp" | "nextTurn";
19
+ }): void;
20
+ events: EventBus;
21
+ }
22
+ export interface ExtensionContext {
23
+ sessionManager: ReadonlySessionManager;
24
+ signal: AbortSignal | undefined;
25
+ cwd: string;
26
+ }
27
+ export interface ReadonlySessionManager {
28
+ getSessionId(): string;
29
+ }
30
+ export interface EventBus {
31
+ emit(event: string, data: unknown): void;
32
+ }
33
+ export interface SessionStartEvent {
34
+ type: "session_start";
35
+ reason: "startup" | "reload" | "new" | "resume" | "fork";
36
+ previousSessionFile?: string;
37
+ }
38
+ export interface BeforeAgentStartEvent {
39
+ type: "before_agent_start";
40
+ prompt: string;
41
+ systemPrompt: string;
42
+ }
43
+ export interface AgentEndEvent {
44
+ type: "agent_end";
45
+ messages: AgentMessage[];
46
+ }
47
+ export interface SessionShutdownEvent {
48
+ type: "session_shutdown";
49
+ reason: "quit" | "reload" | "new" | "resume" | "fork";
50
+ targetSessionFile?: string;
51
+ }
52
+ export interface SessionCompactEvent {
53
+ type: "session_compact";
54
+ reason: "manual" | "threshold" | "overflow";
55
+ fromExtension: boolean;
56
+ }
57
+ export interface TextContent {
58
+ type: "text";
59
+ text: string;
60
+ }
61
+ export interface ThinkingContent {
62
+ type: "thinking";
63
+ thinking: string;
64
+ }
65
+ export interface ToolCallContent {
66
+ type: "toolCall";
67
+ id: string;
68
+ name: string;
69
+ arguments: Record<string, unknown>;
70
+ }
71
+ export interface AssistantMessage {
72
+ role: "assistant";
73
+ content: (TextContent | ThinkingContent | ToolCallContent)[];
74
+ stopReason: StopReason;
75
+ usage: {
76
+ inputTokens: number;
77
+ outputTokens: number;
78
+ };
79
+ model: string;
80
+ timestamp?: number;
81
+ }
82
+ export type StopReason = "stop" | "length" | "toolUse" | "error" | "aborted";
83
+ export interface UserMessage {
84
+ role: "user";
85
+ content: string | (TextContent | ImageContent)[];
86
+ timestamp: number;
87
+ }
88
+ export interface ToolResultMessage {
89
+ role: "toolResult";
90
+ toolCallId: string;
91
+ toolName: string;
92
+ content: (TextContent | ImageContent)[];
93
+ isError: boolean;
94
+ timestamp: number;
95
+ }
96
+ export interface CustomMessage<T = unknown> {
97
+ role: "custom";
98
+ customType: string;
99
+ content: string | (TextContent | ImageContent | ThinkingContent)[];
100
+ display: boolean;
101
+ details?: T;
102
+ timestamp: number;
103
+ }
104
+ export type AgentMessage = AssistantMessage | UserMessage | ToolResultMessage | CustomMessage;
105
+ export type ImageContent = {
106
+ type: "image";
107
+ data: string;
108
+ mimeType: string;
109
+ };
110
+ export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = unknown> {
111
+ name: string;
112
+ label: string;
113
+ description: string;
114
+ parameters: TParams;
115
+ promptSnippet?: string;
116
+ promptGuidelines?: string[];
117
+ execute(toolCallId: string, params: Record<string, unknown>, signal: AbortSignal | undefined, onUpdate: AgentToolUpdateCallback<TDetails> | undefined, ctx: ExtensionContext): Promise<AgentToolResult<TDetails>>;
118
+ }
119
+ export type AgentToolUpdateCallback<T> = (partialResult: AgentToolResult<T>) => void;
120
+ export interface AgentToolResult<T> {
121
+ content: (TextContent | ImageContent)[];
122
+ details: T;
123
+ terminate?: boolean;
124
+ }
125
+ export declare function defineTool<TParams extends TSchema, TDetails = unknown>(tool: ToolDefinition<TParams, TDetails>): ToolDefinition<TParams, TDetails>;
126
+ //# sourceMappingURL=pi-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-types.d.ts","sourceRoot":"","sources":["../../../src/pi-plugin/pi-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Ambient type declarations for Pi extension API types.
3
+ *
4
+ * These types are provided by the Pi host at runtime via
5
+ * `@earendil-works/pi-coding-agent`, `@earendil-works/pi-agent-core`,
6
+ * and `@earendil-works/pi-ai`. We declare them here so the pi-plugin
7
+ * module compiles without those packages installed.
8
+ *
9
+ * At runtime inside Pi, the actual packages supply the real types and
10
+ * values. Standalone abmind must not import this file at the root level.
11
+ */
12
+ export function defineTool(tool) {
13
+ return tool;
14
+ }
15
+ //# sourceMappingURL=pi-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-types.js","sourceRoot":"","sources":["../../../src/pi-plugin/pi-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsJH,MAAM,UAAU,UAAU,CACxB,IAAuC;IAEvC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { MemoryConfig } from "../memory-config.js";
2
+ import { MemoryManager } from "../memory-manager.js";
3
+ import { HostMemoryLifecycle } from "../host-integration/lifecycle.js";
4
+ import type { ExecutionIdentity } from "../host-integration/types.js";
5
+ export interface PiRuntimeState {
6
+ memory: MemoryManager | null;
7
+ lifecycle: HostMemoryLifecycle | null;
8
+ identity: ExecutionIdentity | null;
9
+ pendingWakeUp: string;
10
+ pendingUserPrompt: string | null;
11
+ runGeneration: number;
12
+ lastCapturedGeneration: number;
13
+ closed: boolean;
14
+ }
15
+ export interface PiRuntime {
16
+ state: PiRuntimeState;
17
+ close(): void;
18
+ }
19
+ export declare function createPiRuntime(memoryConfig?: Partial<MemoryConfig>): Promise<PiRuntime>;
20
+ export declare function hasDegraded(runtime: PiRuntime): boolean;
21
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/pi-plugin/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAItE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAqC9F;AAmBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAEvD"}
@@ -0,0 +1,60 @@
1
+ import { loadMemoryConfig } from "../memory-config.js";
2
+ import { MemoryManager } from "../memory-manager.js";
3
+ import { logError, logInfo } from "../mem-logger.js";
4
+ import { HostMemoryLifecycle } from "../host-integration/lifecycle.js";
5
+ const TAG = "pi-plugin";
6
+ export async function createPiRuntime(memoryConfig) {
7
+ const config = memoryConfig
8
+ ? { ...loadMemoryConfig(), ...memoryConfig }
9
+ : loadMemoryConfig();
10
+ let memory = null;
11
+ let lifecycle = null;
12
+ try {
13
+ memory = new MemoryManager(config);
14
+ await memory.initialize();
15
+ lifecycle = new HostMemoryLifecycle(memory, {
16
+ writerId: "abmind-pi-plugin",
17
+ failOpen: true,
18
+ });
19
+ logInfo(TAG, "Memory initialized for Pi plugin");
20
+ }
21
+ catch (err) {
22
+ logError(TAG, "Memory initialization failed (degraded mode)", err);
23
+ memory = null;
24
+ lifecycle = null;
25
+ }
26
+ const state = {
27
+ memory,
28
+ lifecycle: lifecycle ?? null,
29
+ identity: null,
30
+ pendingWakeUp: "",
31
+ pendingUserPrompt: null,
32
+ runGeneration: 0,
33
+ lastCapturedGeneration: -1,
34
+ closed: false,
35
+ };
36
+ return {
37
+ state,
38
+ close: () => closeRuntime(state),
39
+ };
40
+ }
41
+ function closeRuntime(state) {
42
+ if (state.closed)
43
+ return;
44
+ state.closed = true;
45
+ state.pendingWakeUp = "";
46
+ state.pendingUserPrompt = null;
47
+ state.identity = null;
48
+ state.runGeneration = 0;
49
+ state.lastCapturedGeneration = -1;
50
+ if (state.memory) {
51
+ state.memory.close();
52
+ state.memory = null;
53
+ }
54
+ state.lifecycle = null;
55
+ logInfo(TAG, "Pi plugin runtime closed");
56
+ }
57
+ export function hasDegraded(runtime) {
58
+ return runtime.state.lifecycle === null;
59
+ }
60
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/pi-plugin/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAW,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,MAAM,GAAG,GAAG,WAAW,CAAC;AAkBxB,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,YAAoC;IACxE,MAAM,MAAM,GAAG,YAAY;QACzB,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,EAAE,GAAG,YAAY,EAAE;QAC5C,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEvB,IAAI,MAAM,GAAyB,IAAI,CAAC;IACxC,IAAI,SAAS,GAA+B,IAAI,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,SAAS,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE;YAC1C,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,GAAG,EAAE,8CAA8C,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,GAAG,IAAI,CAAC;QACd,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAmB;QAC5B,MAAM;QACN,SAAS,EAAE,SAAS,IAAI,IAAI;QAC5B,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,EAAE;QACjB,iBAAiB,EAAE,IAAI;QACvB,aAAa,EAAE,CAAC;QAChB,sBAAsB,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,KAAK;KACd,CAAC;IAEF,OAAO;QACL,KAAK;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAqB;IACzC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO;IACzB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;IACzB,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;IACxB,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC;IAElC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAkB;IAC5C,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { HostMemoryLifecycle } from "../host-integration/lifecycle.js";
2
+ import type { ExecutionIdentity } from "../host-integration/types.js";
3
+ import { type ToolDefinition } from "./pi-types.js";
4
+ interface ToolDeps {
5
+ lifecycle: HostMemoryLifecycle;
6
+ getIdentity(): ExecutionIdentity;
7
+ }
8
+ export declare function createRecallTool(deps: ToolDeps): ToolDefinition;
9
+ export declare function createStoreTool(deps: ToolDeps): ToolDefinition;
10
+ export {};
11
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/pi-plugin/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EAAc,KAAK,cAAc,EAA+C,MAAM,eAAe,CAAC;AAsC7G,UAAU,QAAQ;IAChB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,WAAW,IAAI,iBAAiB,CAAC;CAClC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CA8D/D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAuE9D"}
@@ -0,0 +1,136 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { extractEnglishTokens } from "../query-tokenizer.js";
3
+ import { defineTool } from "./pi-types.js";
4
+ const MemoryTypeEnum = Type.Union([
5
+ Type.Literal("fact"),
6
+ Type.Literal("decision"),
7
+ Type.Literal("preference"),
8
+ Type.Literal("event"),
9
+ Type.Literal("lesson"),
10
+ Type.Literal("feedback"),
11
+ Type.Literal("story"),
12
+ Type.Literal("secret"),
13
+ ]);
14
+ const VALID_MEMORY_TYPES = ["fact", "decision", "preference", "event", "lesson", "feedback", "story", "secret"];
15
+ function toMemoryType(raw) {
16
+ if (raw && VALID_MEMORY_TYPES.includes(raw))
17
+ return raw;
18
+ return "fact";
19
+ }
20
+ export function createRecallTool(deps) {
21
+ return defineTool({
22
+ name: "abmind_recall",
23
+ label: "Abmind Recall",
24
+ description: "Search past memories, decisions, and facts stored by abmind. Returns relevant memory hits with scores.",
25
+ promptSnippet: "When the user asks about past decisions, preferences, or information that might have been stored in memory, use abmind_recall.",
26
+ promptGuidelines: [
27
+ "Use this tool when you need to remember information from past conversations",
28
+ "Formulate queries using key English terms the memory might be indexed under",
29
+ "Results include a relevance score — higher is better",
30
+ ],
31
+ parameters: Type.Object({
32
+ query: Type.String({ minLength: 1, description: "Search query — English terms likely to appear in stored memory" }),
33
+ limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 50, default: 10, description: "Maximum number of results" })),
34
+ minScore: Type.Optional(Type.Number({ minimum: 0, maximum: 1, description: "Minimum relevance score threshold" })),
35
+ maxClassification: Type.Optional(Type.Integer({ minimum: 0, maximum: 3, default: 2, description: "Maximum classification level (0=general, 3=personal)" })),
36
+ }),
37
+ async execute(_toolCallId, rawParams, signal, _onUpdate, _ctx) {
38
+ if (signal?.aborted) {
39
+ return { content: [{ type: "text", text: "Recall cancelled." }], details: { cancelled: true } };
40
+ }
41
+ const params = rawParams;
42
+ const identity = deps.getIdentity();
43
+ const tokens = extractEnglishTokens(params.query ?? "");
44
+ const limit = params.limit ?? 10;
45
+ const maxClassification = params.maxClassification ?? 2;
46
+ try {
47
+ const result = await deps.lifecycle.recall({
48
+ identity,
49
+ query: { translated: tokens.length > 0 ? tokens : [params.query], original: params.query },
50
+ limit,
51
+ minScore: params.minScore,
52
+ maxClassification,
53
+ });
54
+ const lines = result.hits.map(h => `- [${h.date}] (score: ${h.score.toFixed(3)}) ${h.content.slice(0, 200)}`);
55
+ const text = lines.length > 0
56
+ ? `Found ${result.hits.length} memory hit(s):\n${lines.join("\n")}`
57
+ : "No matching memories found.";
58
+ return {
59
+ content: [{ type: "text", text }],
60
+ details: { hits: result.hits, diagnostics: result.diagnostics },
61
+ };
62
+ }
63
+ catch (err) {
64
+ return {
65
+ content: [{ type: "text", text: `Recall failed: ${err instanceof Error ? err.message : String(err)}` }],
66
+ details: { error: String(err) },
67
+ };
68
+ }
69
+ },
70
+ });
71
+ }
72
+ export function createStoreTool(deps) {
73
+ return defineTool({
74
+ name: "abmind_store",
75
+ label: "Abmind Store",
76
+ description: "Store a fact, decision, preference, event, lesson, or feedback in abmind for long-term memory. Content should be in canonical English.",
77
+ promptSnippet: "When the user states a new preference, makes a decision, shares personal information, or expresses something worth remembering, use abmind_store.",
78
+ promptGuidelines: [
79
+ "Store factual information, user preferences, and decisions explicitly",
80
+ "Write content in clear, canonical English for best retrieval later",
81
+ "Use the memory type that best fits: fact, decision, preference, event, lesson, feedback, story, or secret",
82
+ ],
83
+ parameters: Type.Object({
84
+ content: Type.String({ minLength: 1, description: "Memory content in canonical English" }),
85
+ original: Type.Optional(Type.String({ description: "Original-language text (if translated)" })),
86
+ type: Type.Optional(MemoryTypeEnum),
87
+ topic: Type.Optional(Type.String({ description: "Topic label for categorization" })),
88
+ classification: Type.Optional(Type.Integer({ minimum: 0, maximum: 3, description: "Classification level (0=general, 3=highly personal)" })),
89
+ emotion: Type.Optional(Type.Integer({ minimum: -5, maximum: 5, description: "Emotional valence (-5=negative, 0=neutral, 5=positive)" })),
90
+ confidence: Type.Optional(Type.Number({ minimum: 0, maximum: 1, description: "Confidence in the memory accuracy" })),
91
+ }),
92
+ async execute(_toolCallId, rawParams, signal, _onUpdate, _ctx) {
93
+ if (signal?.aborted) {
94
+ return { content: [{ type: "text", text: "Store cancelled." }], details: { cancelled: true } };
95
+ }
96
+ const params = rawParams;
97
+ const identity = deps.getIdentity();
98
+ try {
99
+ const result = await deps.lifecycle.store({
100
+ identity,
101
+ contentEn: params.content ?? "",
102
+ contentOriginal: params.original ?? params.content ?? "",
103
+ memoryType: toMemoryType(params.type),
104
+ emotionScore: params.emotion ?? 0,
105
+ topic: params.topic ?? "general",
106
+ classification: params.classification ?? 1,
107
+ confidence: params.confidence,
108
+ emotionTags: undefined,
109
+ emotionContext: undefined,
110
+ keyword: undefined,
111
+ sourceMessageIds: undefined,
112
+ trust: undefined,
113
+ integrity: undefined,
114
+ credibility: undefined,
115
+ });
116
+ if (result.stored) {
117
+ return {
118
+ content: [{ type: "text", text: `Memory stored successfully (${result.memoriesCount} memory record(s)).` }],
119
+ details: result,
120
+ };
121
+ }
122
+ return {
123
+ content: [{ type: "text", text: `Store failed: ${result.error ?? "unknown error"}` }],
124
+ details: result,
125
+ };
126
+ }
127
+ catch (err) {
128
+ return {
129
+ content: [{ type: "text", text: `Store failed: ${err instanceof Error ? err.message : String(err)}` }],
130
+ details: { error: String(err) },
131
+ };
132
+ }
133
+ },
134
+ });
135
+ }
136
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/pi-plugin/tools.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
  * reconcile.ts — ensure ~/.abmind/ runtime tree matches source templates.
3
3
  * OVERWRITE: source-controlled dirs (prompts/sleep) — always fresh.
4
4
  * SEED: user-owned dirs (memory/core, config) — only if file missing.
5
+ * EXCEPTIONS: personalized files (memory/core/SOUL.md) — handled by
6
+ * `src/soul-seeder.ts`, not by this module. See #1323, #1324.
5
7
  */
6
8
  export declare function reconcile(templatesSrc: string, home: string): void;
7
9
  //# sourceMappingURL=reconcile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/reconcile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAoBlE"}
1
+ {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAsBlE"}