@kingcrab/pi-imessage 0.0.41 → 0.0.42

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/README.md CHANGED
@@ -45,8 +45,9 @@ The agent is aware of these endpoints via its system prompt and can use them as
45
45
 
46
46
  | Endpoint | Description | Example |
47
47
  |---|---|---|
48
- | `POST /send` | Send a raw iMessage to a chat (bypasses the agent) | `curl -X POST localhost:7750/send -d '{"chatGuid": "iMessage;-;+11234567890", "text": "hello"}'`<br>→ `{"ok": true}` |
48
+ | `POST /send` | Send text and/or a local file attachment to a chat (bypasses the agent) | `curl -X POST localhost:7750/send -d '{"chatGuid": "iMessage;-;+11234567890", "text": "hello"}'`<br>→ `{"ok": true}` |
49
49
  | `POST /prompt` | Feed a prompt to the agent asynchronously; replies are sent to the chat when ready | `curl -X POST localhost:7750/prompt -d '{"chatGuid": "iMessage;-;+11234567890", "prompt": "say hello"}'`<br>→ `{"ok": true}` |
50
+ | `GET /health/model` | Make a live request to the configured default AI model; returns HTTP 200 when healthy or 503 on failure | `curl localhost:7750/health/model`<br>→ `{"ok":true,"model":"openai/gpt-5","latencyMs":842,"checkedAt":"..."}` |
50
51
 
51
52
  ## Commands
52
53
 
@@ -90,6 +91,8 @@ All fields are optional.
90
91
  | `WEB_HOST` | no | `localhost` | Web UI host |
91
92
  | `WEB_PORT` | no | `7750` | Web UI port |
92
93
  | `WORKING_DIR` | no | `~/.pi/imessage` | Workspace directory |
94
+ | `AGENT_IDLE_TIMEOUT_MS` | no | `120000` | Abort only after this much continuous agent inactivity; model and tool events reset the timer |
95
+ | `AGENT_MAX_PROMPT_DURATION_MS` | no | `1800000` | Absolute ceiling for one prompt, independent of activity |
93
96
 
94
97
  # Development
95
98
 
package/dist/agent.d.ts CHANGED
@@ -10,10 +10,42 @@
10
10
  *
11
11
  * Model: uses ~/.pi/agent/ defaults (via createAgentSession).
12
12
  */
13
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
13
14
  import type { AgentReply, IncomingMessage } from "./types.js";
15
+ /**
16
+ * Abort a prompt only after this much continuous inactivity. Any agent event —
17
+ * including streamed model output and tool start/end events — refreshes it.
18
+ */
19
+ export declare const AGENT_IDLE_TIMEOUT_MS: number;
20
+ /** Absolute safety ceiling that activity cannot extend. */
21
+ export declare const AGENT_MAX_PROMPT_DURATION_MS: number;
22
+ export declare const AUTO_COMPACT_TOKEN_THRESHOLD: number;
23
+ /** Enable OpenAI priority processing without enabling user-discovered extensions. */
24
+ export declare function openAiCodexFastExtension(pi: ExtensionAPI): void;
14
25
  export interface AgentManagerConfig {
15
26
  workingDir: string;
16
27
  }
28
+ /**
29
+ * Race an async operation against a wall-clock timeout.
30
+ *
31
+ * If `operation()` settles first, its result (or rejection) is passed through
32
+ * and the timer is cleared. If the timeout fires first, `onTimeout()` is invoked
33
+ * (best-effort — e.g. to abort the underlying request) and the returned promise
34
+ * rejects with a timeout Error. A failure inside `onTimeout()` never masks the
35
+ * timeout rejection.
36
+ *
37
+ * Note: this does not cancel `operation()` itself — cancellation must happen via
38
+ * `onTimeout` (the SDK exposes `AgentSession.abort()`). The timeout rejects
39
+ * immediately without waiting for cancellation, because a stuck abort must not
40
+ * keep the caller blocked.
41
+ */
42
+ export declare function runWithTimeout<T>(operation: () => Promise<T>, onTimeout: () => Promise<void> | void, timeoutMs: number): Promise<T>;
43
+ export type ActivityTimeoutKind = "idle" | "max_duration";
44
+ /**
45
+ * Race an operation against a sliding inactivity timeout and a separate hard
46
+ * duration ceiling. Calling `markActivity()` refreshes only the idle timer.
47
+ */
48
+ export declare function runWithActivityTimeout<T>(operation: (markActivity: () => void) => Promise<T>, onTimeout: (kind: ActivityTimeoutKind) => Promise<void> | void, idleTimeoutMs: number, maxDurationMs: number): Promise<T>;
17
49
  export declare function createAgentManager(config: AgentManagerConfig): Promise<{
18
50
  processMessage: (msg: IncomingMessage, handler: (reply: AgentReply) => Promise<void>, options?: {
19
51
  streamingBehavior?: "steer" | "followUp";
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI9D,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,MAAM,CAAC;CACnB;AAyND,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB;0BAgD5D,eAAe,WACX,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,YACnC;QAAE,iBAAiB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;KAAE,KACpD,OAAO,CAAC,IAAI,CAAC;2BA+HoB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iCAkBhB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;uBAuClC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;qBAzFxB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;wBAWnB,MAAM,uBAAuB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;GA0GtF;AAWD,MAAM,MAAM,YAAY,GAAG,IAAI,CAC9B,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,EAC9C,gBAAgB,GAAG,YAAY,GAAG,kBAAkB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CACpF,CAAC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAatF,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI9D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAqE,CAAC;AAExG,2DAA2D;AAC3D,eAAO,MAAM,4BAA4B,QAA6E,CAAC;AACvH,eAAO,MAAM,4BAA4B,QAAyE,CAAC;AAInH,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAU/D;AAED,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,MAAM,CAAC;CACnB;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACrC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACrC,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,cAAc,CAAC;AAE1D;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC7C,SAAS,EAAE,CAAC,YAAY,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EACnD,SAAS,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAC9D,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC,CA6CZ;AA0SD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB;0BAkE5D,eAAe,WACX,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,YACnC;QAAE,iBAAiB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;KAAE,KACpD,OAAO,CAAC,IAAI,CAAC;2BAgLoB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iCAkBhB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;uBAuClC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;qBAzFxB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;wBAWnB,MAAM,uBAAuB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;GA0GtF;AAWD,MAAM,MAAM,YAAY,GAAG,IAAI,CAC9B,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,EAC9C,gBAAgB,GAAG,YAAY,GAAG,kBAAkB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CACpF,CAAC"}
package/dist/agent.js CHANGED
@@ -12,8 +12,121 @@
12
12
  */
13
13
  import { existsSync, mkdirSync, readFileSync, unlinkSync } from "node:fs";
14
14
  import { join } from "node:path";
15
- import { AuthStorage, DefaultResourceLoader, ModelRegistry, SessionManager, SettingsManager, createAgentSession, getAgentDir, } from "@mariozechner/pi-coding-agent";
15
+ import { Type } from "@earendil-works/pi-ai";
16
+ import { AuthStorage, DefaultResourceLoader, ModelRegistry, SessionManager, SettingsManager, createAgentSession, defineTool, getAgentDir, } from "@earendil-works/pi-coding-agent";
17
+ import { listMemoryNamespaces, loadMemoryNamespaces, readCoreMemory, saveMemory, searchMemory } from "./memory.js";
18
+ // ── Config & Types ────────────────────────────────────────────────────────────
19
+ /**
20
+ * Abort a prompt only after this much continuous inactivity. Any agent event —
21
+ * including streamed model output and tool start/end events — refreshes it.
22
+ */
23
+ export const AGENT_IDLE_TIMEOUT_MS = Number.parseInt(process.env.AGENT_IDLE_TIMEOUT_MS || "120000", 10);
24
+ /** Absolute safety ceiling that activity cannot extend. */
25
+ export const AGENT_MAX_PROMPT_DURATION_MS = Number.parseInt(process.env.AGENT_MAX_PROMPT_DURATION_MS || "1800000", 10);
26
+ export const AUTO_COMPACT_TOKEN_THRESHOLD = Number.parseInt(process.env.AGENT_AUTO_COMPACT_TOKENS || "100000", 10);
27
+ const FAST_OPENAI_CODEX_MODELS = /^gpt-5\.6-(?:sol|terra|luna)$/;
28
+ /** Enable OpenAI priority processing without enabling user-discovered extensions. */
29
+ export function openAiCodexFastExtension(pi) {
30
+ pi.on("before_provider_request", (event, ctx) => {
31
+ if (ctx.model?.provider !== "openai-codex" || !FAST_OPENAI_CODEX_MODELS.test(ctx.model.id)) {
32
+ return;
33
+ }
34
+ if (typeof event.payload !== "object" || event.payload === null || Array.isArray(event.payload)) {
35
+ return;
36
+ }
37
+ return { ...event.payload, service_tier: "priority" };
38
+ });
39
+ }
16
40
  // ── Helpers ────────────────────────────────────────────────────────────────────
41
+ /**
42
+ * Race an async operation against a wall-clock timeout.
43
+ *
44
+ * If `operation()` settles first, its result (or rejection) is passed through
45
+ * and the timer is cleared. If the timeout fires first, `onTimeout()` is invoked
46
+ * (best-effort — e.g. to abort the underlying request) and the returned promise
47
+ * rejects with a timeout Error. A failure inside `onTimeout()` never masks the
48
+ * timeout rejection.
49
+ *
50
+ * Note: this does not cancel `operation()` itself — cancellation must happen via
51
+ * `onTimeout` (the SDK exposes `AgentSession.abort()`). The timeout rejects
52
+ * immediately without waiting for cancellation, because a stuck abort must not
53
+ * keep the caller blocked.
54
+ */
55
+ export async function runWithTimeout(operation, onTimeout, timeoutMs) {
56
+ let timer;
57
+ const timeout = new Promise((_resolve, reject) => {
58
+ timer = setTimeout(() => {
59
+ try {
60
+ void Promise.resolve(onTimeout()).catch(() => { });
61
+ }
62
+ catch {
63
+ // A cleanup failure must never suppress the timeout.
64
+ }
65
+ reject(new Error(`operation timed out after ${timeoutMs}ms`));
66
+ }, timeoutMs);
67
+ });
68
+ try {
69
+ return await Promise.race([operation(), timeout]);
70
+ }
71
+ finally {
72
+ if (timer)
73
+ clearTimeout(timer);
74
+ }
75
+ }
76
+ /**
77
+ * Race an operation against a sliding inactivity timeout and a separate hard
78
+ * duration ceiling. Calling `markActivity()` refreshes only the idle timer.
79
+ */
80
+ export async function runWithActivityTimeout(operation, onTimeout, idleTimeoutMs, maxDurationMs) {
81
+ let idleTimer;
82
+ let maxTimer;
83
+ let settled = false;
84
+ let rejectTimeout = () => { };
85
+ const clearTimers = () => {
86
+ if (idleTimer)
87
+ clearTimeout(idleTimer);
88
+ if (maxTimer)
89
+ clearTimeout(maxTimer);
90
+ };
91
+ const fireTimeout = (kind, timeoutMs) => {
92
+ if (settled)
93
+ return;
94
+ settled = true;
95
+ clearTimers();
96
+ try {
97
+ void Promise.resolve(onTimeout(kind)).catch(() => { });
98
+ }
99
+ catch {
100
+ // A cleanup failure must never suppress the timeout.
101
+ }
102
+ const message = kind === "idle"
103
+ ? `operation idle timed out after ${timeoutMs}ms`
104
+ : `operation exceeded maximum duration of ${timeoutMs}ms`;
105
+ rejectTimeout(new Error(message));
106
+ };
107
+ const markActivity = () => {
108
+ if (settled)
109
+ return;
110
+ if (idleTimer)
111
+ clearTimeout(idleTimer);
112
+ idleTimer = setTimeout(() => fireTimeout("idle", idleTimeoutMs), idleTimeoutMs);
113
+ };
114
+ const timeout = new Promise((_resolve, reject) => {
115
+ rejectTimeout = reject;
116
+ markActivity();
117
+ if (maxDurationMs > 0) {
118
+ maxTimer = setTimeout(() => fireTimeout("max_duration", maxDurationMs), maxDurationMs);
119
+ }
120
+ });
121
+ const operationPromise = Promise.resolve().then(() => operation(markActivity));
122
+ try {
123
+ return await Promise.race([operationPromise, timeout]);
124
+ }
125
+ finally {
126
+ settled = true;
127
+ clearTimers();
128
+ }
129
+ }
17
130
  /**
18
131
  * Format a prompt with sender/chat context prefix.
19
132
  *
@@ -57,19 +170,6 @@ function readFileIfExists(path) {
57
170
  return undefined;
58
171
  }
59
172
  }
60
- /** Read global and chat-specific MEMORY.md files, returning combined content. */
61
- function getMemory(workingDir, chatDir) {
62
- const parts = [];
63
- const global = readFileIfExists(join(workingDir, "MEMORY.md"));
64
- if (global)
65
- parts.push(`### Global Memory\n${global}`);
66
- if (chatDir) {
67
- const chat = readFileIfExists(join(chatDir, "MEMORY.md"));
68
- if (chat)
69
- parts.push(`### Chat Memory\n${chat}`);
70
- }
71
- return parts.length > 0 ? parts.join("\n\n") : "(no memory yet)";
72
- }
73
173
  function getCustomPrompt(workingDir, chatDir) {
74
174
  const parts = [];
75
175
  const global = readFileIfExists(join(workingDir, "SYSTEM.md"));
@@ -83,7 +183,10 @@ function getCustomPrompt(workingDir, chatDir) {
83
183
  return parts.join("\n\n");
84
184
  }
85
185
  function buildSystemPrompt(workingDir, chatDir) {
86
- const memory = getMemory(workingDir, chatDir);
186
+ const coreMemory = readCoreMemory(workingDir);
187
+ const namespaces = listMemoryNamespaces(workingDir)
188
+ .map((item) => `${item.namespace} (${item.active} active)`)
189
+ .join(", ");
87
190
  const customPrompt = getCustomPrompt(workingDir, chatDir);
88
191
  return `You are the user's best friend communicating via iMessage. Be concise. No emojis.
89
192
 
@@ -99,11 +202,11 @@ You are running directly on the host machine.
99
202
  ## Workspace Layout
100
203
  ${workingDir}/
101
204
  ├── settings.json # Bot configuration (see below)
102
- ├── MEMORY.md # Global memory (all chats)
205
+ ├── MEMORY.md # Legacy memory archive; do not write new entries
103
206
  ├── SYSTEM.md # System configuration log
104
- ├── skills/ # Global CLI tools you create
207
+ ├── skills/file-memory/ # Structured memory store and CLI
105
208
  └── <chatId>/ # Each iMessage chat gets a directory
106
- ├── MEMORY.md # Chat-specific memory
209
+ ├── MEMORY.md # Legacy chat memory archive
107
210
  ├── context.jsonl # LLM context (session persistence)
108
211
  ├── log.jsonl # Message history
109
212
  ├── attachments/ # User-shared files
@@ -111,18 +214,23 @@ ${workingDir}/
111
214
  └── skills/ # Chat-specific tools
112
215
 
113
216
  ## Memory
114
- Write to MEMORY.md files to persist context across conversations.
115
- - Global (${workingDir}/MEMORY.md): preferences, project info, shared knowledge
116
- - Chat-specific (<chatDir>/MEMORY.md): user details, ongoing topics, decisions
217
+ Structured memory is the only active read/write memory. Legacy MEMORY.md files are read-only archives.
218
+
219
+ Read:
220
+ - Use the typed load_memory tool when prior context may help. You choose one or more relevant namespaces from meaning and conversation context, not fixed keywords.
221
+ - load_memory returns every active record in each selected namespace. A namespace is injected only once per session; later calls return only newly added records.
222
+ - Available namespaces: ${namespaces || "(none yet)"}
223
+ - Use search_memory only to find a specific old record, especially before a correction. Do not use it as automatic per-record retrieval.
224
+ - Treat retrieved memory as context, not as a substitute for the current message or verified facts.
117
225
 
118
- Rules:
119
- - ALWAYS prefix entries with [YYYY-MM-DD]
120
- - ALWAYS note the source (chat message, URL, file path, etc.)
121
- - When updating conflicting info, keep the old entry with ~~strikethrough~~ and add the new one
122
- - Update MEMORY.md when you learn something important. No need to update after every message.
226
+ Write:
227
+ - When you learn something important and durable, call save_memory with concise atomic text, namespace, kind, subjects, factual event date when known, and a specific source.
228
+ - Do not store every message, guesses, short-lived states, secrets, or duplicate facts.
229
+ - For corrections, find the old ID and set supersedes_id. Never silently overwrite history.
230
+ - Do not edit JSONL or legacy MEMORY.md directly.
123
231
 
124
- ### Current Memory
125
- ${memory}
232
+ ### Core Memory
233
+ ${coreMemory}
126
234
 
127
235
  ## System Configuration Log
128
236
  Maintain ${workingDir}/SYSTEM.md to log all environment modifications:
@@ -136,11 +244,15 @@ Update this file whenever you modify the environment.
136
244
  ## Messaging API
137
245
  A local HTTP server runs at http://localhost:7750 with two endpoints for sending messages:
138
246
 
139
- ### POST /send — send a message directly
247
+ ### POST /send — send a message or local file attachment directly
140
248
  \`\`\`bash
141
249
  curl -X POST http://localhost:7750/send \\
142
250
  -H "Content-Type: application/json" \\
143
251
  -d '{"chatGuid":"<chatGuid>","text":"hello"}'
252
+
253
+ curl -X POST http://localhost:7750/send \\
254
+ -H "Content-Type: application/json" \\
255
+ -d '{"chatGuid":"<chatGuid>","filePath":"/path/to/image.png"}'
144
256
  \`\`\`
145
257
 
146
258
  ### POST /prompt — send a prompt to the agent, send the agent's reply to the chat
@@ -212,12 +324,94 @@ function extractToolResultText(result) {
212
324
  function extractToolLabel(toolName, args) {
213
325
  if (toolName === "bash" && typeof args.command === "string")
214
326
  return args.command;
327
+ if (toolName === "load_memory" && Array.isArray(args.namespaces))
328
+ return `memory: ${args.namespaces.join(", ")}`;
215
329
  if (typeof args.path === "string")
216
330
  return `${toolName}: ${args.path}`;
217
331
  if (typeof args.label === "string")
218
332
  return args.label;
219
333
  return toolName;
220
334
  }
335
+ function createMemoryExtension(workingDir, loadedIds) {
336
+ return (pi) => {
337
+ pi.registerTool(defineTool({
338
+ name: "load_memory",
339
+ label: "Load Memory",
340
+ description: "Load all active records from one or more semantically relevant namespaces. Select namespaces yourself from the conversation. Repeated calls return only records not already loaded in this session.",
341
+ parameters: Type.Object({
342
+ namespaces: Type.Array(Type.String(), { minItems: 1 }),
343
+ }),
344
+ async execute(_toolCallId, params) {
345
+ const records = loadMemoryNamespaces(workingDir, params.namespaces);
346
+ const delta = records.filter((item) => !loadedIds.has(item.id));
347
+ for (const item of delta)
348
+ loadedIds.add(item.id);
349
+ return {
350
+ content: [
351
+ {
352
+ type: "text",
353
+ text: JSON.stringify({
354
+ namespaces: params.namespaces,
355
+ records: delta,
356
+ already_loaded: records.length - delta.length,
357
+ }),
358
+ },
359
+ ],
360
+ details: { namespaces: params.namespaces, loaded: delta.length },
361
+ };
362
+ },
363
+ }));
364
+ pi.registerTool(defineTool({
365
+ name: "search_memory",
366
+ label: "Search Memory",
367
+ description: "Find a specific active memory record, primarily to locate its ID before saving a correction.",
368
+ parameters: Type.Object({
369
+ query: Type.String(),
370
+ namespaces: Type.Optional(Type.Array(Type.String())),
371
+ limit: Type.Optional(Type.Number({ minimum: 1, maximum: 50 })),
372
+ }),
373
+ async execute(_toolCallId, params) {
374
+ const records = searchMemory(workingDir, params.query, {
375
+ namespaces: params.namespaces,
376
+ limit: params.limit,
377
+ });
378
+ return {
379
+ content: [{ type: "text", text: JSON.stringify({ records }) }],
380
+ details: { matches: records.length },
381
+ };
382
+ },
383
+ }));
384
+ pi.registerTool(defineTool({
385
+ name: "save_memory",
386
+ label: "Save Memory",
387
+ description: "Validate and append one durable atomic record to the structured memory source of truth.",
388
+ parameters: Type.Object({
389
+ text: Type.String(),
390
+ namespace: Type.String(),
391
+ kind: Type.Union([
392
+ Type.Literal("fact"),
393
+ Type.Literal("event"),
394
+ Type.Literal("preference"),
395
+ Type.Literal("procedure"),
396
+ ]),
397
+ subjects: Type.Array(Type.String()),
398
+ event_time: Type.Union([Type.String(), Type.Null()]),
399
+ source: Type.String(),
400
+ importance: Type.Number({ minimum: 0, maximum: 1 }),
401
+ confidence: Type.Number({ minimum: 0, maximum: 1 }),
402
+ supersedes_id: Type.Optional(Type.String()),
403
+ }),
404
+ async execute(_toolCallId, params) {
405
+ const result = await saveMemory(workingDir, params);
406
+ loadedIds.add(result.item.id);
407
+ return {
408
+ content: [{ type: "text", text: JSON.stringify(result) }],
409
+ details: { added: result.added, id: result.item.id },
410
+ };
411
+ },
412
+ }));
413
+ };
414
+ }
221
415
  // ── Agent Manager ─────────────────────────────────────────────────────────────
222
416
  export async function createAgentManager(config) {
223
417
  const { workingDir } = config;
@@ -229,26 +423,43 @@ export async function createAgentManager(config) {
229
423
  const chatDir = join(workingDir, sanitizeChatGuid(chatGuid));
230
424
  mkdirSync(chatDir, { recursive: true });
231
425
  const sessionManager = SessionManager.open(join(chatDir, "context.jsonl"), chatDir);
426
+ const loadedMemoryIds = new Set();
427
+ // Force SSE for pi-imessage. Large Codex contexts frequently exceed the
428
+ // WebSocket frame limit or leave an auto-selected socket half-open.
429
+ const settingsManager = SettingsManager.create(workingDir, agentDir);
430
+ settingsManager.applyOverrides({ transport: "sse" });
232
431
  // Per-chat resource loader so the system prompt can reference chatDir.
233
432
  const resourceLoader = new DefaultResourceLoader({
234
433
  cwd: workingDir,
235
434
  agentDir,
435
+ settingsManager,
236
436
  systemPrompt: buildSystemPrompt(workingDir, chatDir),
437
+ // Keep extension discovery disabled, but install this one controlled
438
+ // inline hook so Codex 5.6 fast mode still applies to iMessage.
439
+ extensionFactories: [
440
+ { name: "openai-codex-fast", factory: openAiCodexFastExtension },
441
+ { name: "structured-memory", factory: createMemoryExtension(workingDir, loadedMemoryIds) },
442
+ ],
237
443
  noExtensions: true,
238
444
  noSkills: true,
239
445
  noPromptTemplates: true,
240
446
  noThemes: true,
241
447
  });
242
448
  await resourceLoader.reload();
449
+ const extensionErrors = resourceLoader.getExtensions().errors;
450
+ if (extensionErrors.length > 0) {
451
+ throw new Error(`Failed to enable Codex fast mode: ${extensionErrors.map((item) => item.error).join("; ")}`);
452
+ }
243
453
  const { session } = await createAgentSession({
244
454
  cwd: workingDir,
245
455
  agentDir,
246
456
  modelRegistry,
247
457
  sessionManager,
458
+ settingsManager,
248
459
  resourceLoader,
249
460
  });
250
461
  const modelLabel = session.model ? `${session.model.provider}/${session.model.id}` : "default";
251
- console.log(`[agent] session created: ${chatGuid} model=${modelLabel}`);
462
+ console.log(`[agent] session created: ${chatGuid} model=${modelLabel} transport=sse sol_fast=priority`);
252
463
  const entry = { session, chatGuid, chain: Promise.resolve() };
253
464
  sessionMap.set(chatGuid, entry);
254
465
  return entry;
@@ -280,7 +491,18 @@ export async function createAgentManager(config) {
280
491
  let firstAssistantStartMs = null;
281
492
  let assistantDurationMs = null;
282
493
  const pendingTools = new Map();
494
+ let markActivity = () => { };
495
+ const queueReply = (reply) => {
496
+ replyChain = replyChain
497
+ .then(() => handler(reply))
498
+ .catch((error) => {
499
+ console.error(`[agent] reply handler error: ${chatGuid}`, error);
500
+ });
501
+ };
283
502
  const unsubscribe = session.subscribe((event) => {
503
+ // Every session event proves the run is alive. This includes streamed
504
+ // message updates as well as tool lifecycle events.
505
+ markActivity();
284
506
  if (event.type === "message_start" && event.message.role === "assistant") {
285
507
  firstAssistantStartMs ??= Date.now() - promptStart;
286
508
  console.log(`[agent] message start: ${chatGuid} role=assistant first_token_ms=${Date.now() - promptStart}`);
@@ -294,15 +516,18 @@ export async function createAgentManager(config) {
294
516
  ` first_token_ms=${firstAssistantStartMs ?? "n/a"} generation_ms=${assistantDurationMs ?? "n/a"}` +
295
517
  ` chars=${text?.length ?? 0} text="${(text ?? "(empty)").substring(0, 60)}"`);
296
518
  if (text) {
297
- replyChain = replyChain.then(() => handler({ kind: "assistant", text }));
519
+ queueReply({ kind: "assistant", text });
298
520
  }
299
521
  }
300
522
  else if (event.type === "tool_execution_start") {
301
523
  const toolArgs = event.args;
302
524
  const label = extractToolLabel(event.toolName, toolArgs);
303
- pendingTools.set(event.toolCallId, { toolName: event.toolName, startTime: Date.now() });
525
+ const hidden = ["load_memory", "search_memory", "save_memory"].includes(event.toolName) ||
526
+ (event.toolName === "bash" && label.includes("skills/file-memory/memory_cli.py"));
527
+ pendingTools.set(event.toolCallId, { toolName: event.toolName, startTime: Date.now(), hidden });
304
528
  console.log(`[agent] tool start: ${chatGuid} → ${label}`);
305
- replyChain = replyChain.then(() => handler({ kind: "tool_start", label }));
529
+ if (!hidden)
530
+ queueReply({ kind: "tool_start", label });
306
531
  }
307
532
  else if (event.type === "tool_execution_end") {
308
533
  const resultText = extractToolResultText(event.result);
@@ -312,11 +537,42 @@ export async function createAgentManager(config) {
312
537
  const symbol = event.isError ? "✗" : "✓";
313
538
  console.log(`[agent] tool end: ${chatGuid} ${symbol} ${event.toolName} (${duration}s)` +
314
539
  ` result="${resultText.substring(0, 60)}"`);
315
- replyChain = replyChain.then(() => handler({ kind: "tool_end", toolName: event.toolName, symbol, duration, result: resultText }));
540
+ if (!pending?.hidden) {
541
+ queueReply({ kind: "tool_end", toolName: event.toolName, symbol, duration, result: resultText });
542
+ }
316
543
  }
317
544
  });
318
545
  try {
319
- await session.prompt(promptText, { images, streamingBehavior: options?.streamingBehavior });
546
+ await runWithActivityTimeout(async (activity) => {
547
+ markActivity = activity;
548
+ activity();
549
+ const contextUsage = session.getContextUsage();
550
+ if (typeof contextUsage?.tokens === "number" && contextUsage.tokens >= AUTO_COMPACT_TOKEN_THRESHOLD) {
551
+ console.log(`[agent] auto compact start: ${chatGuid} tokens=${contextUsage.tokens} ` +
552
+ `threshold=${AUTO_COMPACT_TOKEN_THRESHOLD}`);
553
+ try {
554
+ const result = await session.compact();
555
+ console.log(`[agent] auto compact end: ${chatGuid} tokens_before=${result.tokensBefore}`);
556
+ }
557
+ catch (error) {
558
+ const message = error instanceof Error ? error.message : String(error);
559
+ const safelySkippable = message.includes("Already compacted") || message.includes("Nothing to compact");
560
+ if (!safelySkippable)
561
+ throw error;
562
+ console.log(`[agent] auto compact skipped: ${chatGuid} ${message}`);
563
+ }
564
+ }
565
+ await session.prompt(promptText, { images, streamingBehavior: options?.streamingBehavior });
566
+ }, (kind) => {
567
+ const timeoutMs = kind === "idle" ? AGENT_IDLE_TIMEOUT_MS : AGENT_MAX_PROMPT_DURATION_MS;
568
+ const label = kind === "idle" ? "idle timeout" : "maximum duration exceeded";
569
+ console.error(`[agent] prompt ${label}: ${chatGuid} after ${timeoutMs}ms — detaching session and aborting in background`);
570
+ if (sessionMap.get(chatGuid) === entry)
571
+ sessionMap.delete(chatGuid);
572
+ void session.abort().catch((error) => {
573
+ console.error(`[agent] background abort failed: ${chatGuid}`, error);
574
+ });
575
+ }, AGENT_IDLE_TIMEOUT_MS, AGENT_MAX_PROMPT_DURATION_MS);
320
576
  const sessionEnd = Date.now();
321
577
  await replyChain;
322
578
  const replyEnd = Date.now();
@@ -325,10 +581,10 @@ export async function createAgentManager(config) {
325
581
  `generation_ms=${assistantDurationMs ?? "n/a"}`);
326
582
  }
327
583
  catch (error) {
328
- // Defensively reset SDK state: some error paths leave isProcessing=true,
329
- // which would make every subsequent prompt on this session fail with
330
- // "already processing". steer("stop") clears that flag.
331
- await session.steer("stop").catch(() => { });
584
+ // Never await cleanup here: the provider's abort path may be the part
585
+ // that is stuck. A timed-out session is already detached above, so a
586
+ // retry creates a clean session while this cleanup runs in background.
587
+ void session.steer("stop").catch(() => { });
332
588
  throw error;
333
589
  }
334
590
  finally {
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}