@kingcrab/pi-imessage 0.0.42 → 0.0.43
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 +19 -0
- package/dist/agent.d.ts +26 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +100 -35
- package/dist/agent.js.map +1 -1
- package/dist/main.js +21 -4
- package/dist/main.js.map +1 -1
- package/dist/model-health.d.ts.map +1 -1
- package/dist/model-health.js +16 -14
- package/dist/model-health.js.map +1 -1
- package/dist/reminders.d.ts +42 -0
- package/dist/reminders.d.ts.map +1 -0
- package/dist/reminders.js +207 -0
- package/dist/reminders.js.map +1 -0
- package/dist/web/index.d.ts +2 -0
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +57 -1
- package/dist/web/index.js.map +1 -1
- package/package.json +6 -17
package/README.md
CHANGED
|
@@ -9,6 +9,7 @@ A minimal and self-managing iMessage bot — powered by [pi](https://github.com/
|
|
|
9
9
|
- **Self-managing**: Turn the agent into whatever you need. He builds his own tools without pre-built assumptions
|
|
10
10
|
- **Transparent**: tool calls and reasoning are sent to your iMessage chat, so you can see exactly what it's doing and why
|
|
11
11
|
- **iMessage Integration**: Responds to DMs, SMS, and group chats; identifies who sent each message; understands quoted/reply-to messages
|
|
12
|
+
- **Persistent Reminders**: Schedule one-time messages without per-reminder cron jobs; reminders survive restarts and retry transient failures
|
|
12
13
|
- **Web UI**: browse chat history, toggle replies on/off per chat, live updates — disable with WEB_ENABLED=false and let the agent build your own web UI
|
|
13
14
|
|
|
14
15
|
# Get Started
|
|
@@ -39,6 +40,21 @@ Available at `http://localhost:7750` (configurable via `WEB_HOST` and `WEB_PORT`
|
|
|
39
40
|
|
|
40
41
|
P.S. Disable with `WEB_ENABLED=false` and let the agent build your own web UI
|
|
41
42
|
|
|
43
|
+
## Structured Memory
|
|
44
|
+
|
|
45
|
+
Durable memories are stored as namespaced JSONL records under
|
|
46
|
+
`WORKING_DIR/skills/file-memory/namespaces/`. Each record includes a stable ID,
|
|
47
|
+
creation timestamp, factual event date when known, source, kind, subjects,
|
|
48
|
+
importance, confidence, and status. This keeps every memory traceable without
|
|
49
|
+
inventing dates for older facts.
|
|
50
|
+
|
|
51
|
+
The agent uses typed tools to load complete namespaces, search for specific
|
|
52
|
+
records, and append validated memories. Corrections append a new record that
|
|
53
|
+
supersedes the old ID, preserving an auditable history instead of silently
|
|
54
|
+
rewriting it. Legacy global and per-chat `MEMORY.md` files remain read-only
|
|
55
|
+
archives. See [the structured memory flow](docs/structured-memory-sequence.md)
|
|
56
|
+
for migration, retrieval, and write behavior.
|
|
57
|
+
|
|
42
58
|
## API
|
|
43
59
|
|
|
44
60
|
The agent is aware of these endpoints via its system prompt and can use them as tools (e.g., scheduling a cron job that calls `/prompt`).
|
|
@@ -47,6 +63,9 @@ The agent is aware of these endpoints via its system prompt and can use them as
|
|
|
47
63
|
|---|---|---|
|
|
48
64
|
| `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
65
|
| `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}` |
|
|
66
|
+
| `POST /reminders` | Schedule a persistent one-time reminder; `scheduledAt` requires an explicit timezone | `curl -X POST localhost:7750/reminders -d '{"chatGuid":"iMessage;-;+11234567890","text":"check the oven","scheduledAt":"2026-08-08T21:30:00+08:00"}'` |
|
|
67
|
+
| `GET /reminders` | List reminders; optionally filter with `?status=pending` | `curl 'localhost:7750/reminders?status=pending'` |
|
|
68
|
+
| `DELETE /reminders/:id` | Cancel a pending reminder | `curl -X DELETE localhost:7750/reminders/<id>` |
|
|
50
69
|
| `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":"..."}` |
|
|
51
70
|
|
|
52
71
|
## Commands
|
package/dist/agent.d.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* Model: uses ~/.pi/agent/ defaults (via createAgentSession).
|
|
12
12
|
*/
|
|
13
13
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
14
|
+
import { type AgentSession } from "@earendil-works/pi-coding-agent";
|
|
14
15
|
import type { AgentReply, IncomingMessage } from "./types.js";
|
|
15
16
|
/**
|
|
16
17
|
* Abort a prompt only after this much continuous inactivity. Any agent event —
|
|
@@ -19,12 +20,28 @@ import type { AgentReply, IncomingMessage } from "./types.js";
|
|
|
19
20
|
export declare const AGENT_IDLE_TIMEOUT_MS: number;
|
|
20
21
|
/** Absolute safety ceiling that activity cannot extend. */
|
|
21
22
|
export declare const AGENT_MAX_PROMPT_DURATION_MS: number;
|
|
22
|
-
export declare const
|
|
23
|
+
export declare const AGENT_COMPACT_TIMEOUT_MS: number;
|
|
24
|
+
export declare const AUTO_COMPACT_CONTEXT_RATIO: number;
|
|
25
|
+
export declare const AUTO_COMPACT_FALLBACK_TOKENS = 100000;
|
|
26
|
+
/**
|
|
27
|
+
* Compact relative to the selected model's context window instead of using a
|
|
28
|
+
* fixed low threshold. AGENT_AUTO_COMPACT_TOKENS remains an explicit override.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getAutoCompactTokenThreshold(contextWindow?: number, explicitTokens?: string): number;
|
|
23
31
|
/** Enable OpenAI priority processing without enabling user-discovered extensions. */
|
|
24
32
|
export declare function openAiCodexFastExtension(pi: ExtensionAPI): void;
|
|
25
33
|
export interface AgentManagerConfig {
|
|
26
34
|
workingDir: string;
|
|
27
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Stop model work without injecting a synthetic user message into the transcript.
|
|
38
|
+
*
|
|
39
|
+
* AgentSession.steer("stop") is not an abort API: it queues a literal user
|
|
40
|
+
* message. If the current operation fails before consuming that queue (for
|
|
41
|
+
* example, compaction fails), the stale "stop" can be delivered with a later
|
|
42
|
+
* real chat message and misattributed to that sender.
|
|
43
|
+
*/
|
|
44
|
+
export declare function clearAndAbortSession(session: Pick<AgentSession, "abort" | "clearQueue">): Promise<void>;
|
|
28
45
|
/**
|
|
29
46
|
* Race an async operation against a wall-clock timeout.
|
|
30
47
|
*
|
|
@@ -52,9 +69,16 @@ export declare function createAgentManager(config: AgentManagerConfig): Promise<
|
|
|
52
69
|
}) => Promise<void>;
|
|
53
70
|
newSession: (chatGuid: string) => Promise<void>;
|
|
54
71
|
getSessionStatus: (chatGuid: string) => Promise<string>;
|
|
72
|
+
getRuntimeStatus: () => {
|
|
73
|
+
activePrompts: number;
|
|
74
|
+
sessions: number;
|
|
75
|
+
lastAgentActivityAt: string | null;
|
|
76
|
+
};
|
|
55
77
|
reload: (chatGuid: string) => Promise<void>;
|
|
56
78
|
stop: (chatGuid: string) => Promise<void>;
|
|
57
79
|
compact: (chatGuid: string, customInstructions?: string) => Promise<string>;
|
|
58
80
|
}>;
|
|
59
|
-
|
|
81
|
+
type CreatedAgentManager = Awaited<ReturnType<typeof createAgentManager>>;
|
|
82
|
+
export type AgentManager = Pick<CreatedAgentManager, "processMessage" | "newSession" | "getSessionStatus" | "reload" | "stop" | "compact"> & Partial<Pick<CreatedAgentManager, "getRuntimeStatus">>;
|
|
83
|
+
export {};
|
|
60
84
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AACtF,OAAO,EACN,KAAK,YAAY,EAQjB,MAAM,iCAAiC,CAAC;AAEzC,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,wBAAwB,QAAuE,CAAC;AAC7G,eAAO,MAAM,0BAA0B,QAAmE,CAAC;AAC3G,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC3C,aAAa,CAAC,EAAE,MAAM,EACtB,cAAc,SAA8C,GAC1D,MAAM,CAWR;AAID,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAU/D;AAED,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,MAAM,CAAC;CACnB;AASD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7G;AAID;;;;;;;;;;;;;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;AAuTD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB;0BAuE5D,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+LoB,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;GAkHtF;AAWD,KAAK,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,IAAI,CAC9B,mBAAmB,EACnB,gBAAgB,GAAG,YAAY,GAAG,kBAAkB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CACpF,GACA,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,CAAC"}
|
package/dist/agent.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { existsSync, mkdirSync, readFileSync, unlinkSync } from "node:fs";
|
|
14
14
|
import { join } from "node:path";
|
|
15
15
|
import { Type } from "@earendil-works/pi-ai";
|
|
16
|
-
import {
|
|
16
|
+
import { DefaultResourceLoader, ModelRuntime, SessionManager, SettingsManager, createAgentSession, defineTool, getAgentDir, } from "@earendil-works/pi-coding-agent";
|
|
17
17
|
import { listMemoryNamespaces, loadMemoryNamespaces, readCoreMemory, saveMemory, searchMemory } from "./memory.js";
|
|
18
18
|
// ── Config & Types ────────────────────────────────────────────────────────────
|
|
19
19
|
/**
|
|
@@ -23,7 +23,25 @@ import { listMemoryNamespaces, loadMemoryNamespaces, readCoreMemory, saveMemory,
|
|
|
23
23
|
export const AGENT_IDLE_TIMEOUT_MS = Number.parseInt(process.env.AGENT_IDLE_TIMEOUT_MS || "120000", 10);
|
|
24
24
|
/** Absolute safety ceiling that activity cannot extend. */
|
|
25
25
|
export const AGENT_MAX_PROMPT_DURATION_MS = Number.parseInt(process.env.AGENT_MAX_PROMPT_DURATION_MS || "1800000", 10);
|
|
26
|
-
export const
|
|
26
|
+
export const AGENT_COMPACT_TIMEOUT_MS = Number.parseInt(process.env.AGENT_COMPACT_TIMEOUT_MS || "60000", 10);
|
|
27
|
+
export const AUTO_COMPACT_CONTEXT_RATIO = Number.parseFloat(process.env.AGENT_AUTO_COMPACT_RATIO || "0.7");
|
|
28
|
+
export const AUTO_COMPACT_FALLBACK_TOKENS = 100_000;
|
|
29
|
+
/**
|
|
30
|
+
* Compact relative to the selected model's context window instead of using a
|
|
31
|
+
* fixed low threshold. AGENT_AUTO_COMPACT_TOKENS remains an explicit override.
|
|
32
|
+
*/
|
|
33
|
+
export function getAutoCompactTokenThreshold(contextWindow, explicitTokens = process.env.AGENT_AUTO_COMPACT_TOKENS || "") {
|
|
34
|
+
const explicit = Number.parseInt(explicitTokens, 10);
|
|
35
|
+
if (Number.isFinite(explicit) && explicit > 0)
|
|
36
|
+
return explicit;
|
|
37
|
+
if (typeof contextWindow !== "number" || !Number.isFinite(contextWindow) || contextWindow <= 0) {
|
|
38
|
+
return AUTO_COMPACT_FALLBACK_TOKENS;
|
|
39
|
+
}
|
|
40
|
+
const ratio = Number.isFinite(AUTO_COMPACT_CONTEXT_RATIO) && AUTO_COMPACT_CONTEXT_RATIO > 0 && AUTO_COMPACT_CONTEXT_RATIO < 1
|
|
41
|
+
? AUTO_COMPACT_CONTEXT_RATIO
|
|
42
|
+
: 0.7;
|
|
43
|
+
return Math.floor(contextWindow * ratio);
|
|
44
|
+
}
|
|
27
45
|
const FAST_OPENAI_CODEX_MODELS = /^gpt-5\.6-(?:sol|terra|luna)$/;
|
|
28
46
|
/** Enable OpenAI priority processing without enabling user-discovered extensions. */
|
|
29
47
|
export function openAiCodexFastExtension(pi) {
|
|
@@ -37,6 +55,18 @@ export function openAiCodexFastExtension(pi) {
|
|
|
37
55
|
return { ...event.payload, service_tier: "priority" };
|
|
38
56
|
});
|
|
39
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Stop model work without injecting a synthetic user message into the transcript.
|
|
60
|
+
*
|
|
61
|
+
* AgentSession.steer("stop") is not an abort API: it queues a literal user
|
|
62
|
+
* message. If the current operation fails before consuming that queue (for
|
|
63
|
+
* example, compaction fails), the stale "stop" can be delivered with a later
|
|
64
|
+
* real chat message and misattributed to that sender.
|
|
65
|
+
*/
|
|
66
|
+
export async function clearAndAbortSession(session) {
|
|
67
|
+
session.clearQueue();
|
|
68
|
+
await session.abort();
|
|
69
|
+
}
|
|
40
70
|
// ── Helpers ────────────────────────────────────────────────────────────────────
|
|
41
71
|
/**
|
|
42
72
|
* Race an async operation against a wall-clock timeout.
|
|
@@ -241,8 +271,8 @@ Maintain ${workingDir}/SYSTEM.md to log all environment modifications:
|
|
|
241
271
|
|
|
242
272
|
Update this file whenever you modify the environment.
|
|
243
273
|
|
|
244
|
-
## Messaging API
|
|
245
|
-
A local HTTP server runs at http://localhost:7750 with
|
|
274
|
+
## Messaging and Reminder API
|
|
275
|
+
A local HTTP server runs at http://localhost:7750 with endpoints for sending messages and scheduling reminders:
|
|
246
276
|
|
|
247
277
|
### POST /send — send a message or local file attachment directly
|
|
248
278
|
\`\`\`bash
|
|
@@ -266,8 +296,21 @@ curl -X POST http://localhost:7750/prompt \\
|
|
|
266
296
|
If the agent is already processing a message for this chat, the prompt is queued (followUp)
|
|
267
297
|
and will run after the current processing finishes.
|
|
268
298
|
|
|
269
|
-
|
|
270
|
-
|
|
299
|
+
### POST /reminders — schedule a persistent one-time reminder
|
|
300
|
+
Use this instead of creating a one-off script or crontab entry. \`scheduledAt\` must be
|
|
301
|
+
ISO 8601 with an explicit timezone. The reminder survives service restarts, catches up
|
|
302
|
+
after downtime, retries transient send failures, and supports an optional idempotency key.
|
|
303
|
+
\`\`\`bash
|
|
304
|
+
curl -X POST http://localhost:7750/reminders \\
|
|
305
|
+
-H "Content-Type: application/json" \\
|
|
306
|
+
-d '{"chatGuid":"<chatGuid>","text":"check the oven","scheduledAt":"2026-08-08T21:30:00+08:00","idempotencyKey":"check-oven-2026-08-08"}'
|
|
307
|
+
|
|
308
|
+
curl 'http://localhost:7750/reminders?status=pending'
|
|
309
|
+
curl -X DELETE http://localhost:7750/reminders/<reminderId>
|
|
310
|
+
\`\`\`
|
|
311
|
+
|
|
312
|
+
Use system crontab (\`crontab -e\`) only for recurring messages or tasks.
|
|
313
|
+
Example recurring crontab entries:
|
|
271
314
|
\`\`\`
|
|
272
315
|
# Send a static message every morning at 9:00
|
|
273
316
|
0 9 * * * curl -s -X POST http://localhost:7750/send -H "Content-Type: application/json" -d '{"chatGuid":"iMessage;-;+1234567890","text":"good morning"}'
|
|
@@ -416,8 +459,13 @@ function createMemoryExtension(workingDir, loadedIds) {
|
|
|
416
459
|
export async function createAgentManager(config) {
|
|
417
460
|
const { workingDir } = config;
|
|
418
461
|
const sessionMap = new Map();
|
|
462
|
+
let activePrompts = 0;
|
|
463
|
+
let lastAgentActivityAt = null;
|
|
419
464
|
const agentDir = getAgentDir();
|
|
420
|
-
const
|
|
465
|
+
const modelRuntime = await ModelRuntime.create({
|
|
466
|
+
authPath: join(agentDir, "auth.json"),
|
|
467
|
+
modelsPath: join(agentDir, "models.json"),
|
|
468
|
+
});
|
|
421
469
|
/** Create a new AgentSession for a chat, persisted to context.jsonl. */
|
|
422
470
|
async function createSession(chatGuid) {
|
|
423
471
|
const chatDir = join(workingDir, sanitizeChatGuid(chatGuid));
|
|
@@ -453,7 +501,7 @@ export async function createAgentManager(config) {
|
|
|
453
501
|
const { session } = await createAgentSession({
|
|
454
502
|
cwd: workingDir,
|
|
455
503
|
agentDir,
|
|
456
|
-
|
|
504
|
+
modelRuntime,
|
|
457
505
|
sessionManager,
|
|
458
506
|
settingsManager,
|
|
459
507
|
resourceLoader,
|
|
@@ -486,6 +534,8 @@ export async function createAgentManager(config) {
|
|
|
486
534
|
const queueWaitMs = promptStart - queuedAt;
|
|
487
535
|
console.log(`[agent] prompt start: ${chatGuid} model=${modelLabel} queue_ms=${queueWaitMs} ` +
|
|
488
536
|
`chars=${promptText.length} images=${msg.images.length} "${promptText.substring(0, 60)}"`);
|
|
537
|
+
activePrompts += 1;
|
|
538
|
+
lastAgentActivityAt = Date.now();
|
|
489
539
|
// Subscribe for this prompt's lifetime, routing events through handler
|
|
490
540
|
let replyChain = Promise.resolve();
|
|
491
541
|
let firstAssistantStartMs = null;
|
|
@@ -502,6 +552,7 @@ export async function createAgentManager(config) {
|
|
|
502
552
|
const unsubscribe = session.subscribe((event) => {
|
|
503
553
|
// Every session event proves the run is alive. This includes streamed
|
|
504
554
|
// message updates as well as tool lifecycle events.
|
|
555
|
+
lastAgentActivityAt = Date.now();
|
|
505
556
|
markActivity();
|
|
506
557
|
if (event.type === "message_start" && event.message.role === "assistant") {
|
|
507
558
|
firstAssistantStartMs ??= Date.now() - promptStart;
|
|
@@ -546,22 +597,6 @@ export async function createAgentManager(config) {
|
|
|
546
597
|
await runWithActivityTimeout(async (activity) => {
|
|
547
598
|
markActivity = activity;
|
|
548
599
|
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
600
|
await session.prompt(promptText, { images, streamingBehavior: options?.streamingBehavior });
|
|
566
601
|
}, (kind) => {
|
|
567
602
|
const timeoutMs = kind === "idle" ? AGENT_IDLE_TIMEOUT_MS : AGENT_MAX_PROMPT_DURATION_MS;
|
|
@@ -569,7 +604,7 @@ export async function createAgentManager(config) {
|
|
|
569
604
|
console.error(`[agent] prompt ${label}: ${chatGuid} after ${timeoutMs}ms — detaching session and aborting in background`);
|
|
570
605
|
if (sessionMap.get(chatGuid) === entry)
|
|
571
606
|
sessionMap.delete(chatGuid);
|
|
572
|
-
void session
|
|
607
|
+
void clearAndAbortSession(session).catch((error) => {
|
|
573
608
|
console.error(`[agent] background abort failed: ${chatGuid}`, error);
|
|
574
609
|
});
|
|
575
610
|
}, AGENT_IDLE_TIMEOUT_MS, AGENT_MAX_PROMPT_DURATION_MS);
|
|
@@ -579,16 +614,39 @@ export async function createAgentManager(config) {
|
|
|
579
614
|
console.log(`[agent] prompt end: ${chatGuid} total_ms=${replyEnd - promptStart} session_ms=${sessionEnd - promptStart} ` +
|
|
580
615
|
`handler_ms=${replyEnd - sessionEnd} first_token_ms=${firstAssistantStartMs ?? "n/a"} ` +
|
|
581
616
|
`generation_ms=${assistantDurationMs ?? "n/a"}`);
|
|
617
|
+
// Never make the current user wait for preventive compaction. Reply
|
|
618
|
+
// first, mark the prompt complete, then compact before the next queued
|
|
619
|
+
// prompt only when the model-relative threshold has been crossed.
|
|
620
|
+
const contextUsage = session.getContextUsage();
|
|
621
|
+
const threshold = getAutoCompactTokenThreshold(session.model?.contextWindow);
|
|
622
|
+
if (typeof contextUsage?.tokens === "number" && contextUsage.tokens >= threshold) {
|
|
623
|
+
console.log(`[agent] post-reply compact start: ${chatGuid} tokens=${contextUsage.tokens} threshold=${threshold} ` +
|
|
624
|
+
`context_window=${session.model?.contextWindow ?? "unknown"}`);
|
|
625
|
+
try {
|
|
626
|
+
const result = await runWithTimeout(() => session.compact(), () => {
|
|
627
|
+
console.error(`[agent] post-reply compact timeout: ${chatGuid} after ${AGENT_COMPACT_TIMEOUT_MS}ms`);
|
|
628
|
+
if (sessionMap.get(chatGuid) === entry)
|
|
629
|
+
sessionMap.delete(chatGuid);
|
|
630
|
+
void clearAndAbortSession(session).catch(() => { });
|
|
631
|
+
}, AGENT_COMPACT_TIMEOUT_MS);
|
|
632
|
+
console.log(`[agent] post-reply compact end: ${chatGuid} tokens_before=${result.tokensBefore}`);
|
|
633
|
+
}
|
|
634
|
+
catch (error) {
|
|
635
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
636
|
+
console.log(`[agent] post-reply compact skipped: ${chatGuid} ${message}`);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
582
639
|
}
|
|
583
640
|
catch (error) {
|
|
584
|
-
// Never
|
|
585
|
-
//
|
|
586
|
-
//
|
|
587
|
-
void session
|
|
641
|
+
// Never inject a steering message here. steer("stop") queues literal
|
|
642
|
+
// user text, which can survive a failed compaction and contaminate the
|
|
643
|
+
// next prompt. Abort and clear pending queues instead.
|
|
644
|
+
void clearAndAbortSession(session).catch(() => { });
|
|
588
645
|
throw error;
|
|
589
646
|
}
|
|
590
647
|
finally {
|
|
591
648
|
unsubscribe();
|
|
649
|
+
activePrompts = Math.max(0, activePrompts - 1);
|
|
592
650
|
}
|
|
593
651
|
}
|
|
594
652
|
/** Abort the in-progress agent run for a chat. No-op if no session or not running. */
|
|
@@ -598,8 +656,8 @@ export async function createAgentManager(config) {
|
|
|
598
656
|
console.log(`[agent] stop: no active session for ${chatGuid}`);
|
|
599
657
|
return;
|
|
600
658
|
}
|
|
601
|
-
await entry.session
|
|
602
|
-
console.log(`[agent] stop
|
|
659
|
+
await clearAndAbortSession(entry.session);
|
|
660
|
+
console.log(`[agent] stop aborted: ${chatGuid}`);
|
|
603
661
|
}
|
|
604
662
|
/** Compact the session context, reducing token usage while preserving a summary. */
|
|
605
663
|
async function compact(chatGuid, customInstructions) {
|
|
@@ -669,7 +727,7 @@ export async function createAgentManager(config) {
|
|
|
669
727
|
* Switch the requesting session to the current default model from settings.
|
|
670
728
|
*
|
|
671
729
|
* Mirrors pi TUI's /model command flow:
|
|
672
|
-
* 1.
|
|
730
|
+
* 1. modelRuntime.refresh() — reload models from disk
|
|
673
731
|
* 2. Resolve model from settings (TUI uses manual selection instead)
|
|
674
732
|
* 3. session.setModel() — updates agent + context.jsonl + settings.json
|
|
675
733
|
*
|
|
@@ -677,11 +735,11 @@ export async function createAgentManager(config) {
|
|
|
677
735
|
* handleModelCommand() → getModelCandidates() → session.setModel()
|
|
678
736
|
*/
|
|
679
737
|
async function reload(chatGuid) {
|
|
680
|
-
|
|
738
|
+
await modelRuntime.refresh();
|
|
681
739
|
const settings = SettingsManager.create(workingDir, agentDir);
|
|
682
740
|
const provider = settings.getDefaultProvider();
|
|
683
741
|
const modelId = settings.getDefaultModel();
|
|
684
|
-
const newModel = provider && modelId ?
|
|
742
|
+
const newModel = provider && modelId ? modelRuntime.getModel(provider, modelId) : undefined;
|
|
685
743
|
if (!newModel) {
|
|
686
744
|
console.log("[agent] reload: no default model in settings");
|
|
687
745
|
return;
|
|
@@ -698,7 +756,14 @@ export async function createAgentManager(config) {
|
|
|
698
756
|
}
|
|
699
757
|
console.log(`[agent] reloaded: ${chatGuid} switched to ${provider}/${modelId} thinkingLevel=${thinkingLevel ?? "unchanged"}`);
|
|
700
758
|
}
|
|
701
|
-
|
|
759
|
+
function getRuntimeStatus() {
|
|
760
|
+
return {
|
|
761
|
+
activePrompts,
|
|
762
|
+
sessions: sessionMap.size,
|
|
763
|
+
lastAgentActivityAt: lastAgentActivityAt === null ? null : new Date(lastAgentActivityAt).toISOString(),
|
|
764
|
+
};
|
|
765
|
+
}
|
|
766
|
+
return { processMessage, newSession, getSessionStatus, getRuntimeStatus, reload, stop, compact };
|
|
702
767
|
}
|
|
703
768
|
/** Format a token count as a compact string: 0, 1.2k, 5.9k, 12k, 1.8M, etc. */
|
|
704
769
|
function formatTokenCount(tokens) {
|
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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"}
|
package/dist/main.js
CHANGED
|
@@ -9,6 +9,7 @@ import { createIMessageBot } from "./imessage.js";
|
|
|
9
9
|
import { createAppLogger, createDigestLogger } from "./logger.js";
|
|
10
10
|
import { createModelHealthChecker } from "./model-health.js";
|
|
11
11
|
import { createAsyncQueue } from "./queue.js";
|
|
12
|
+
import { createReminderService } from "./reminders.js";
|
|
12
13
|
import { createSelfEchoFilter } from "./self-echo.js";
|
|
13
14
|
import { checkEnvironment, createMessageSender } from "./send.js";
|
|
14
15
|
import { readSettings, writeSettings } from "./settings.js";
|
|
@@ -17,6 +18,7 @@ import { createWatcher } from "./watch.js";
|
|
|
17
18
|
import { createWebServer } from "./web/index.js";
|
|
18
19
|
async function main() {
|
|
19
20
|
const webEnabled = process.env.WEB_ENABLED !== "false";
|
|
21
|
+
const workerEnabled = process.env.WORKER_ENABLED !== "false";
|
|
20
22
|
const webHost = process.env.WEB_HOST || "localhost";
|
|
21
23
|
const webPort = Number.parseInt(process.env.WEB_PORT || "7750", 10);
|
|
22
24
|
const workingDir = process.env.WORKING_DIR || join(homedir(), ".pi", "imessage");
|
|
@@ -35,6 +37,13 @@ async function main() {
|
|
|
35
37
|
const queue = createAsyncQueue(join(workingDir, "queue.json"));
|
|
36
38
|
const watcher = createWatcher({ queue });
|
|
37
39
|
const bot = createIMessageBot({ queue, agent, sender, echoFilter, store, getSettings, digestLogger });
|
|
40
|
+
const reminders = createReminderService({
|
|
41
|
+
workingDir,
|
|
42
|
+
deliver: async (reminder) => {
|
|
43
|
+
echoFilter.remember(reminder.chatGuid, reminder.text);
|
|
44
|
+
await sender.sendMessage(reminder.chatGuid, reminder.text);
|
|
45
|
+
},
|
|
46
|
+
});
|
|
38
47
|
const web = webEnabled
|
|
39
48
|
? createWebServer({
|
|
40
49
|
workingDir,
|
|
@@ -46,11 +55,16 @@ async function main() {
|
|
|
46
55
|
echoFilter,
|
|
47
56
|
agent,
|
|
48
57
|
checkModelHealth,
|
|
58
|
+
reminders,
|
|
49
59
|
})
|
|
50
60
|
: null;
|
|
51
61
|
console.log(`[sid] workspace: ${workingDir}`);
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
console.log(`[sid] worker: ${workerEnabled ? "active" : "shadow"}`);
|
|
63
|
+
if (workerEnabled) {
|
|
64
|
+
watcher.start();
|
|
65
|
+
bot.start();
|
|
66
|
+
reminders.start();
|
|
67
|
+
}
|
|
54
68
|
if (web)
|
|
55
69
|
web.start();
|
|
56
70
|
let shuttingDown = false;
|
|
@@ -59,8 +73,11 @@ async function main() {
|
|
|
59
73
|
return;
|
|
60
74
|
shuttingDown = true;
|
|
61
75
|
console.log("[sid] Shutting down…");
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
if (workerEnabled) {
|
|
77
|
+
watcher.stop();
|
|
78
|
+
bot.stop();
|
|
79
|
+
await reminders.stop();
|
|
80
|
+
}
|
|
64
81
|
await web?.stop();
|
|
65
82
|
digestLogger.close();
|
|
66
83
|
appLogger.close();
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,KAAK,UAAU,IAAI;IAClB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,OAAO,CAAC;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAEjF,kFAAkF;IAClF,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEpD,qEAAqE;IACrE,MAAM,gBAAgB,EAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,GAAa,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,CAAC,OAAiB,EAAQ,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAkB,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;IACtG,MAAM,GAAG,GAAG,UAAU;QACrB,CAAC,CAAC,eAAe,CAAC;YAChB,UAAU;YACV,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,WAAW;YACX,WAAW;YACX,MAAM;YACN,UAAU;YACV,KAAK;YACL,gBAAgB;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-health.d.ts","sourceRoot":"","sources":["../src/model-health.ts"],"names":[],"mappings":"AAAA,4EAA4E;
|
|
1
|
+
{"version":3,"file":"model-health.d.ts","sourceRoot":"","sources":["../src/model-health.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAO5E,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAElE,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAuE/E"}
|
package/dist/model-health.js
CHANGED
|
@@ -1,36 +1,34 @@
|
|
|
1
1
|
/** Lightweight live check for the currently configured default AI model. */
|
|
2
|
-
import {
|
|
3
|
-
import { AuthStorage, ModelRegistry, SettingsManager, getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import { ModelRuntime, SettingsManager, getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
4
3
|
const CHECK_TIMEOUT_MS = 30_000;
|
|
5
4
|
export function createModelHealthChecker(workingDir) {
|
|
6
5
|
const agentDir = getAgentDir();
|
|
7
|
-
const
|
|
6
|
+
const modelRuntimePromise = ModelRuntime.create({
|
|
7
|
+
authPath: `${agentDir}/auth.json`,
|
|
8
|
+
modelsPath: `${agentDir}/models.json`,
|
|
9
|
+
});
|
|
8
10
|
return async () => {
|
|
9
11
|
const startedAt = Date.now();
|
|
10
12
|
let modelLabel = null;
|
|
11
13
|
try {
|
|
12
|
-
|
|
14
|
+
const modelRuntime = await modelRuntimePromise;
|
|
15
|
+
await modelRuntime.refresh();
|
|
13
16
|
const settings = SettingsManager.create(workingDir, agentDir);
|
|
14
17
|
const provider = settings.getDefaultProvider();
|
|
15
18
|
const modelId = settings.getDefaultModel();
|
|
16
19
|
if (!provider || !modelId)
|
|
17
20
|
throw new Error("No default model configured");
|
|
18
|
-
const model =
|
|
21
|
+
const model = modelRuntime.getModel(provider, modelId);
|
|
19
22
|
modelLabel = `${provider}/${modelId}`;
|
|
20
23
|
if (!model)
|
|
21
24
|
throw new Error(`Default model not found: ${modelLabel}`);
|
|
22
|
-
const auth = await modelRegistry.getApiKeyAndHeaders(model);
|
|
23
|
-
if (!auth.ok)
|
|
24
|
-
throw new Error(auth.error);
|
|
25
25
|
console.log(`[health] model check start: ${modelLabel}`);
|
|
26
26
|
const message = {
|
|
27
27
|
role: "user",
|
|
28
28
|
content: "Reply with exactly OK.",
|
|
29
29
|
timestamp: Date.now(),
|
|
30
30
|
};
|
|
31
|
-
const response = await complete(model, { messages: [message] }, {
|
|
32
|
-
apiKey: auth.apiKey,
|
|
33
|
-
headers: auth.headers,
|
|
31
|
+
const response = await modelRuntime.complete(model, { messages: [message] }, {
|
|
34
32
|
maxTokens: 64,
|
|
35
33
|
maxRetries: 0,
|
|
36
34
|
timeoutMs: CHECK_TIMEOUT_MS,
|
|
@@ -39,9 +37,13 @@ export function createModelHealthChecker(workingDir) {
|
|
|
39
37
|
if (response.stopReason === "error" || response.stopReason === "aborted") {
|
|
40
38
|
throw new Error(response.errorMessage || `Model stopped with reason: ${response.stopReason}`);
|
|
41
39
|
}
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
const text = response.content
|
|
41
|
+
.filter((part) => part.type === "text")
|
|
42
|
+
.map((part) => part.text)
|
|
43
|
+
.join("")
|
|
44
|
+
.trim();
|
|
45
|
+
if (text !== "OK")
|
|
46
|
+
throw new Error(`Model health probe expected OK, received ${JSON.stringify(text)}`);
|
|
45
47
|
const result = {
|
|
46
48
|
ok: true,
|
|
47
49
|
model: modelLabel,
|
package/dist/model-health.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-health.js","sourceRoot":"","sources":["../src/model-health.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAG5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model-health.js","sourceRoot":"","sources":["../src/model-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export declare const REMINDER_STATUSES: readonly ["pending", "delivered", "cancelled", "failed"];
|
|
2
|
+
export type ReminderStatus = (typeof REMINDER_STATUSES)[number];
|
|
3
|
+
export interface Reminder {
|
|
4
|
+
id: string;
|
|
5
|
+
chatGuid: string;
|
|
6
|
+
text: string;
|
|
7
|
+
scheduledAt: string;
|
|
8
|
+
status: ReminderStatus;
|
|
9
|
+
attempts: number;
|
|
10
|
+
createdAt: string;
|
|
11
|
+
deliveredAt: string | null;
|
|
12
|
+
cancelledAt: string | null;
|
|
13
|
+
lastError: string | null;
|
|
14
|
+
idempotencyKey: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface CreateReminderInput {
|
|
17
|
+
chatGuid: string;
|
|
18
|
+
text: string;
|
|
19
|
+
scheduledAt: string;
|
|
20
|
+
idempotencyKey?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface CreateReminderResult {
|
|
23
|
+
reminder: Reminder;
|
|
24
|
+
created: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface ReminderService {
|
|
27
|
+
start(): void;
|
|
28
|
+
stop(): Promise<void>;
|
|
29
|
+
create(input: CreateReminderInput): CreateReminderResult;
|
|
30
|
+
list(status?: ReminderStatus): Reminder[];
|
|
31
|
+
cancel(id: string): Reminder | null;
|
|
32
|
+
}
|
|
33
|
+
export interface ReminderServiceConfig {
|
|
34
|
+
workingDir: string;
|
|
35
|
+
deliver: (reminder: Reminder) => Promise<void>;
|
|
36
|
+
now?: () => number;
|
|
37
|
+
retryBaseMs?: number;
|
|
38
|
+
maxAttempts?: number;
|
|
39
|
+
}
|
|
40
|
+
export declare function parseReminderTime(value: string): number;
|
|
41
|
+
export declare function createReminderService(config: ReminderServiceConfig): ReminderService;
|
|
42
|
+
//# sourceMappingURL=reminders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminders.d.ts","sourceRoot":"","sources":["../src/reminders.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,0DAA2D,CAAC;AAC1F,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAAC;IACzD,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,QAAQ,EAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAsBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvD;AAsBD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAiLpF"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { mkdirSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import Database from "better-sqlite3";
|
|
5
|
+
export const REMINDER_STATUSES = ["pending", "delivered", "cancelled", "failed"];
|
|
6
|
+
const MAX_TIMER_DELAY_MS = 2_147_000_000;
|
|
7
|
+
const DEFAULT_RETRY_BASE_MS = 30_000;
|
|
8
|
+
const DEFAULT_MAX_ATTEMPTS = 10;
|
|
9
|
+
const EXPLICIT_TIMEZONE_PATTERN = /(Z|[+-]\d{2}:?\d{2})$/i;
|
|
10
|
+
export function parseReminderTime(value) {
|
|
11
|
+
if (!EXPLICIT_TIMEZONE_PATTERN.test(value)) {
|
|
12
|
+
throw new Error("scheduledAt must be ISO 8601 with an explicit timezone, for example 2026-08-08T21:30:00+08:00");
|
|
13
|
+
}
|
|
14
|
+
const timestamp = Date.parse(value);
|
|
15
|
+
if (!Number.isFinite(timestamp))
|
|
16
|
+
throw new Error("scheduledAt is not a valid ISO 8601 timestamp");
|
|
17
|
+
return timestamp;
|
|
18
|
+
}
|
|
19
|
+
function iso(timestamp) {
|
|
20
|
+
return timestamp === null ? null : new Date(timestamp).toISOString();
|
|
21
|
+
}
|
|
22
|
+
function mapRow(row) {
|
|
23
|
+
return {
|
|
24
|
+
id: row.id,
|
|
25
|
+
chatGuid: row.chat_guid,
|
|
26
|
+
text: row.text,
|
|
27
|
+
scheduledAt: new Date(row.scheduled_at).toISOString(),
|
|
28
|
+
status: row.status,
|
|
29
|
+
attempts: row.attempts,
|
|
30
|
+
createdAt: new Date(row.created_at).toISOString(),
|
|
31
|
+
deliveredAt: iso(row.delivered_at),
|
|
32
|
+
cancelledAt: iso(row.cancelled_at),
|
|
33
|
+
lastError: row.last_error,
|
|
34
|
+
idempotencyKey: row.idempotency_key,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function createReminderService(config) {
|
|
38
|
+
const now = config.now ?? Date.now;
|
|
39
|
+
const retryBaseMs = config.retryBaseMs ?? DEFAULT_RETRY_BASE_MS;
|
|
40
|
+
const maxAttempts = config.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
41
|
+
mkdirSync(config.workingDir, { recursive: true });
|
|
42
|
+
const db = new Database(join(config.workingDir, "reminders.db"));
|
|
43
|
+
db.pragma("journal_mode = WAL");
|
|
44
|
+
db.exec(`
|
|
45
|
+
CREATE TABLE IF NOT EXISTS reminders (
|
|
46
|
+
id TEXT PRIMARY KEY,
|
|
47
|
+
chat_guid TEXT NOT NULL,
|
|
48
|
+
text TEXT NOT NULL,
|
|
49
|
+
scheduled_at INTEGER NOT NULL,
|
|
50
|
+
status TEXT NOT NULL CHECK (status IN ('pending', 'delivered', 'cancelled', 'failed')),
|
|
51
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
52
|
+
created_at INTEGER NOT NULL,
|
|
53
|
+
delivered_at INTEGER,
|
|
54
|
+
cancelled_at INTEGER,
|
|
55
|
+
last_error TEXT,
|
|
56
|
+
idempotency_key TEXT UNIQUE,
|
|
57
|
+
next_attempt_at INTEGER NOT NULL
|
|
58
|
+
);
|
|
59
|
+
CREATE INDEX IF NOT EXISTS reminders_due_idx ON reminders(status, next_attempt_at);
|
|
60
|
+
`);
|
|
61
|
+
const findById = db.prepare("SELECT * FROM reminders WHERE id = ?");
|
|
62
|
+
const findByIdempotencyKey = db.prepare("SELECT * FROM reminders WHERE idempotency_key = ?");
|
|
63
|
+
const insert = db.prepare(`
|
|
64
|
+
INSERT INTO reminders (
|
|
65
|
+
id, chat_guid, text, scheduled_at, status, attempts, created_at,
|
|
66
|
+
delivered_at, cancelled_at, last_error, idempotency_key, next_attempt_at
|
|
67
|
+
) VALUES (?, ?, ?, ?, 'pending', 0, ?, NULL, NULL, NULL, ?, ?)
|
|
68
|
+
`);
|
|
69
|
+
const listAll = db.prepare("SELECT * FROM reminders ORDER BY scheduled_at ASC, created_at ASC");
|
|
70
|
+
const listByStatus = db.prepare("SELECT * FROM reminders WHERE status = ? ORDER BY scheduled_at ASC, created_at ASC");
|
|
71
|
+
const nextPending = db.prepare("SELECT * FROM reminders WHERE status = 'pending' ORDER BY next_attempt_at ASC, created_at ASC LIMIT 1");
|
|
72
|
+
const duePending = db.prepare("SELECT * FROM reminders WHERE status = 'pending' AND next_attempt_at <= ? ORDER BY next_attempt_at ASC, created_at ASC");
|
|
73
|
+
const incrementAttempt = db.prepare("UPDATE reminders SET attempts = attempts + 1, last_error = NULL WHERE id = ? AND status = 'pending'");
|
|
74
|
+
const markDelivered = db.prepare("UPDATE reminders SET status = 'delivered', delivered_at = ?, last_error = NULL WHERE id = ? AND status = 'pending'");
|
|
75
|
+
const markRetry = db.prepare("UPDATE reminders SET next_attempt_at = ?, last_error = ? WHERE id = ? AND status = 'pending'");
|
|
76
|
+
const markFailed = db.prepare("UPDATE reminders SET status = 'failed', last_error = ? WHERE id = ? AND status = 'pending'");
|
|
77
|
+
const markCancelled = db.prepare("UPDATE reminders SET status = 'cancelled', cancelled_at = ? WHERE id = ? AND status = 'pending'");
|
|
78
|
+
let timer = null;
|
|
79
|
+
let started = false;
|
|
80
|
+
let processing = false;
|
|
81
|
+
let activeRun = null;
|
|
82
|
+
let closed = false;
|
|
83
|
+
function rowById(id) {
|
|
84
|
+
return findById.get(id);
|
|
85
|
+
}
|
|
86
|
+
function clearTimer() {
|
|
87
|
+
if (timer)
|
|
88
|
+
clearTimeout(timer);
|
|
89
|
+
timer = null;
|
|
90
|
+
}
|
|
91
|
+
function schedule() {
|
|
92
|
+
if (!started || processing)
|
|
93
|
+
return;
|
|
94
|
+
clearTimer();
|
|
95
|
+
const next = nextPending.get();
|
|
96
|
+
if (!next)
|
|
97
|
+
return;
|
|
98
|
+
const delay = Math.min(Math.max(0, next.next_attempt_at - now()), MAX_TIMER_DELAY_MS);
|
|
99
|
+
timer = setTimeout(() => {
|
|
100
|
+
timer = null;
|
|
101
|
+
activeRun = processDue()
|
|
102
|
+
.catch((error) => console.error("[reminder] scheduler error:", error))
|
|
103
|
+
.finally(() => {
|
|
104
|
+
activeRun = null;
|
|
105
|
+
});
|
|
106
|
+
}, delay);
|
|
107
|
+
timer.unref();
|
|
108
|
+
}
|
|
109
|
+
async function processDue() {
|
|
110
|
+
if (!started || processing)
|
|
111
|
+
return;
|
|
112
|
+
processing = true;
|
|
113
|
+
try {
|
|
114
|
+
const rows = duePending.all(now());
|
|
115
|
+
for (const row of rows) {
|
|
116
|
+
if (!started)
|
|
117
|
+
break;
|
|
118
|
+
incrementAttempt.run(row.id);
|
|
119
|
+
const current = rowById(row.id);
|
|
120
|
+
if (!current || current.status !== "pending")
|
|
121
|
+
continue;
|
|
122
|
+
const reminder = mapRow(current);
|
|
123
|
+
try {
|
|
124
|
+
await config.deliver(reminder);
|
|
125
|
+
markDelivered.run(now(), row.id);
|
|
126
|
+
console.log(`[reminder] delivered ${row.id} to ${row.chat_guid}`);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
130
|
+
if (current.attempts >= maxAttempts) {
|
|
131
|
+
markFailed.run(message, row.id);
|
|
132
|
+
console.error(`[reminder] permanently failed ${row.id} after ${current.attempts} attempts: ${message}`);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const retryDelay = Math.min(retryBaseMs * 2 ** Math.max(0, current.attempts - 1), 60 * 60 * 1000);
|
|
136
|
+
markRetry.run(now() + retryDelay, message, row.id);
|
|
137
|
+
console.warn(`[reminder] delivery failed ${row.id}; retrying in ${retryDelay}ms: ${message}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
processing = false;
|
|
144
|
+
schedule();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
start() {
|
|
149
|
+
if (started)
|
|
150
|
+
return;
|
|
151
|
+
if (closed)
|
|
152
|
+
throw new Error("reminder service is closed");
|
|
153
|
+
started = true;
|
|
154
|
+
console.log(`[reminder] scheduler started (${join(config.workingDir, "reminders.db")})`);
|
|
155
|
+
schedule();
|
|
156
|
+
},
|
|
157
|
+
async stop() {
|
|
158
|
+
if (closed)
|
|
159
|
+
return;
|
|
160
|
+
started = false;
|
|
161
|
+
clearTimer();
|
|
162
|
+
await activeRun;
|
|
163
|
+
db.close();
|
|
164
|
+
closed = true;
|
|
165
|
+
},
|
|
166
|
+
create(input) {
|
|
167
|
+
const chatGuid = input.chatGuid.trim();
|
|
168
|
+
const text = input.text.trim();
|
|
169
|
+
const idempotencyKey = input.idempotencyKey?.trim() || null;
|
|
170
|
+
if (!chatGuid)
|
|
171
|
+
throw new Error("chatGuid is required");
|
|
172
|
+
if (!text)
|
|
173
|
+
throw new Error("text is required");
|
|
174
|
+
const scheduledAt = parseReminderTime(input.scheduledAt);
|
|
175
|
+
if (idempotencyKey) {
|
|
176
|
+
const existing = findByIdempotencyKey.get(idempotencyKey);
|
|
177
|
+
if (existing) {
|
|
178
|
+
if (existing.chat_guid !== chatGuid || existing.text !== text || existing.scheduled_at !== scheduledAt) {
|
|
179
|
+
throw new Error("idempotencyKey already exists with different reminder data");
|
|
180
|
+
}
|
|
181
|
+
return { reminder: mapRow(existing), created: false };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const id = randomUUID();
|
|
185
|
+
const createdAt = now();
|
|
186
|
+
insert.run(id, chatGuid, text, scheduledAt, createdAt, idempotencyKey, scheduledAt);
|
|
187
|
+
const reminder = mapRow(rowById(id));
|
|
188
|
+
console.log(`[reminder] scheduled ${id} for ${reminder.scheduledAt} to ${chatGuid}`);
|
|
189
|
+
schedule();
|
|
190
|
+
return { reminder, created: true };
|
|
191
|
+
},
|
|
192
|
+
list(status) {
|
|
193
|
+
const rows = status ? listByStatus.all(status) : listAll.all();
|
|
194
|
+
return rows.map(mapRow);
|
|
195
|
+
},
|
|
196
|
+
cancel(id) {
|
|
197
|
+
const result = markCancelled.run(now(), id);
|
|
198
|
+
if (result.changes === 0)
|
|
199
|
+
return null;
|
|
200
|
+
const reminder = mapRow(rowById(id));
|
|
201
|
+
console.log(`[reminder] cancelled ${id}`);
|
|
202
|
+
schedule();
|
|
203
|
+
return reminder;
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=reminders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminders.js","sourceRoot":"","sources":["../src/reminders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AA4D1F,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAE3D,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC9C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,GAAG,CAAC,SAAwB;IACpC,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,MAAM,CAAC,GAAgB;IAC/B,OAAO;QACN,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;QACrD,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QACjD,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;QAClC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;QAClC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,cAAc,EAAE,GAAG,CAAC,eAAe;KACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IAClE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,qBAAqB,CAAC;IAChE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAC/D,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IACjE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;EAgBP,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IACpE,MAAM,oBAAoB,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;EAKzB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC;IAChG,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,oFAAoF,CAAC,CAAC;IACtH,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC7B,uGAAuG,CACvG,CAAC;IACF,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC5B,wHAAwH,CACxH,CAAC;IACF,MAAM,gBAAgB,GAAG,EAAE,CAAC,OAAO,CAClC,qGAAqG,CACrG,CAAC;IACF,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAC/B,oHAAoH,CACpH,CAAC;IACF,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC3B,8FAA8F,CAC9F,CAAC;IACF,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC5B,4FAA4F,CAC5F,CAAC;IACF,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAC/B,iGAAiG,CACjG,CAAC;IAEF,IAAI,KAAK,GAAyC,IAAI,CAAC;IACvD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,GAAyB,IAAI,CAAC;IAC3C,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,SAAS,OAAO,CAAC,EAAU;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAA4B,CAAC;IACpD,CAAC;IAED,SAAS,UAAU;QAClB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC;IACd,CAAC;IAED,SAAS,QAAQ;QAChB,IAAI,CAAC,OAAO,IAAI,UAAU;YAAE,OAAO;QACnC,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAA6B,CAAC;QAC1D,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACtF,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACvB,KAAK,GAAG,IAAI,CAAC;YACb,SAAS,GAAG,UAAU,EAAE;iBACtB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;iBACrE,OAAO,CAAC,GAAG,EAAE;gBACb,SAAS,GAAG,IAAI,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,KAAK,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK,UAAU,UAAU;QACxB,IAAI,CAAC,OAAO,IAAI,UAAU;YAAE,OAAO;QACnC,UAAU,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAkB,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO;oBAAE,MAAM;gBACpB,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;oBAAE,SAAS;gBACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC;oBACJ,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC/B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;gBACnE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,IAAI,OAAO,CAAC,QAAQ,IAAI,WAAW,EAAE,CAAC;wBACrC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;wBAChC,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,EAAE,UAAU,OAAO,CAAC,QAAQ,cAAc,OAAO,EAAE,CAAC,CAAC;oBACzG,CAAC;yBAAM,CAAC;wBACP,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;wBAClG,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;wBACnD,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,EAAE,iBAAiB,UAAU,OAAO,OAAO,EAAE,CAAC,CAAC;oBAC/F,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,UAAU,GAAG,KAAK,CAAC;YACnB,QAAQ,EAAE,CAAC;QACZ,CAAC;IACF,CAAC;IAED,OAAO;QACN,KAAK;YACJ,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC1D,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;YACzF,QAAQ,EAAE,CAAC;QACZ,CAAC;QACD,KAAK,CAAC,IAAI;YACT,IAAI,MAAM;gBAAE,OAAO;YACnB,OAAO,GAAG,KAAK,CAAC;YAChB,UAAU,EAAE,CAAC;YACb,MAAM,SAAS,CAAC;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,IAAI,CAAC;QACf,CAAC;QACD,MAAM,CAAC,KAA0B;YAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;YAC5D,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAEzD,IAAI,cAAc,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAA4B,CAAC;gBACrF,IAAI,QAAQ,EAAE,CAAC;oBACd,IAAI,QAAQ,CAAC,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;wBACxG,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;oBAC/E,CAAC;oBACD,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACvD,CAAC;YACF,CAAC;YAED,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;YACpF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAgB,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,QAAQ,CAAC,WAAW,OAAO,QAAQ,EAAE,CAAC,CAAC;YACrF,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,MAAuB;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAmB,CAAC,CAAC,CAAE,OAAO,CAAC,GAAG,EAAoB,CAAC;YACrG,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,CAAC,EAAU;YAChB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAgB,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;YAC1C,QAAQ,EAAE,CAAC;YACX,OAAO,QAAQ,CAAC;QACjB,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/web/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** Web server: serves the chat log UI, logs page, and API endpoints. */
|
|
2
2
|
import type { AgentManager } from "../agent.js";
|
|
3
3
|
import type { ModelHealthChecker } from "../model-health.js";
|
|
4
|
+
import { type ReminderService } from "../reminders.js";
|
|
4
5
|
import type { SelfEchoFilter } from "../self-echo.js";
|
|
5
6
|
import type { MessageSender } from "../send.js";
|
|
6
7
|
import type { Settings } from "../settings.js";
|
|
@@ -14,6 +15,7 @@ export interface WebServerConfig {
|
|
|
14
15
|
echoFilter: SelfEchoFilter;
|
|
15
16
|
agent: AgentManager;
|
|
16
17
|
checkModelHealth: ModelHealthChecker;
|
|
18
|
+
reminders: ReminderService;
|
|
17
19
|
}
|
|
18
20
|
export interface WebServer {
|
|
19
21
|
start(): void;
|
package/dist/web/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAKxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,QAAQ,CAAC;IAC5B,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,gBAAgB,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAKxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAqB,KAAK,eAAe,EAAuB,MAAM,iBAAiB,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,QAAQ,CAAC;IAC5B,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,SAAS,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAgDD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAySlE"}
|
package/dist/web/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { existsSync, readFileSync, readdirSync, watch } from "node:fs";
|
|
3
3
|
import { createServer } from "node:http";
|
|
4
4
|
import { join } from "node:path";
|
|
5
|
+
import { REMINDER_STATUSES } from "../reminders.js";
|
|
5
6
|
import { getChatBlocks } from "./data.js";
|
|
6
7
|
import { renderLogsPage, renderMemoryPage, renderPage } from "./render.js";
|
|
7
8
|
/** Read the tail of a log file. */
|
|
@@ -53,7 +54,7 @@ function readMemories(workingDir) {
|
|
|
53
54
|
return { globalMemory, chatMemories };
|
|
54
55
|
}
|
|
55
56
|
export function createWebServer(config) {
|
|
56
|
-
const { workingDir, host, port, getSettings, setSettings, sender, echoFilter, agent, checkModelHealth } = config;
|
|
57
|
+
const { workingDir, host, port, getSettings, setSettings, sender, echoFilter, agent, checkModelHealth, reminders } = config;
|
|
57
58
|
const sseClients = new Set();
|
|
58
59
|
let fsWatcher = null;
|
|
59
60
|
let debounceTimer = null;
|
|
@@ -141,12 +142,67 @@ export function createWebServer(config) {
|
|
|
141
142
|
jsonResponse(response, 200, { appLog, digestLog });
|
|
142
143
|
return;
|
|
143
144
|
}
|
|
145
|
+
// GET /health/runtime — lightweight readiness/drain state for deployment.
|
|
146
|
+
if (request.method === "GET" && url.pathname === "/health/runtime") {
|
|
147
|
+
const runtime = agent.getRuntimeStatus?.() ?? { activePrompts: 0, sessions: 0, lastAgentActivityAt: null };
|
|
148
|
+
jsonResponse(response, 200, { ok: true, ...runtime });
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
144
151
|
// GET /health/model — make a live request to the configured default AI model
|
|
145
152
|
if (request.method === "GET" && url.pathname === "/health/model") {
|
|
146
153
|
const result = await checkModelHealth();
|
|
147
154
|
jsonResponse(response, result.ok ? 200 : 503, result);
|
|
148
155
|
return;
|
|
149
156
|
}
|
|
157
|
+
// GET /reminders — list persisted reminders, optionally filtered by status
|
|
158
|
+
if (request.method === "GET" && url.pathname === "/reminders") {
|
|
159
|
+
const statusParam = url.searchParams.get("status");
|
|
160
|
+
if (statusParam && !REMINDER_STATUSES.includes(statusParam)) {
|
|
161
|
+
jsonResponse(response, 400, { error: `invalid status: ${statusParam}` });
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const status = (statusParam || undefined);
|
|
165
|
+
jsonResponse(response, 200, { reminders: reminders.list(status) });
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
// POST /reminders — persist a one-time reminder and deliver it at the requested instant
|
|
169
|
+
if (request.method === "POST" && url.pathname === "/reminders") {
|
|
170
|
+
try {
|
|
171
|
+
const body = await parseJsonBody(request);
|
|
172
|
+
if (typeof body.chatGuid !== "string" ||
|
|
173
|
+
typeof body.text !== "string" ||
|
|
174
|
+
typeof body.scheduledAt !== "string") {
|
|
175
|
+
jsonResponse(response, 400, { error: "chatGuid, text, and scheduledAt are required strings" });
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (body.idempotencyKey !== undefined && typeof body.idempotencyKey !== "string") {
|
|
179
|
+
jsonResponse(response, 400, { error: "idempotencyKey must be a string" });
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const result = reminders.create({
|
|
183
|
+
chatGuid: body.chatGuid,
|
|
184
|
+
text: body.text,
|
|
185
|
+
scheduledAt: body.scheduledAt,
|
|
186
|
+
idempotencyKey: body.idempotencyKey,
|
|
187
|
+
});
|
|
188
|
+
jsonResponse(response, result.created ? 201 : 200, { ok: true, ...result });
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
jsonResponse(response, 400, { error: error instanceof Error ? error.message : String(error) });
|
|
192
|
+
}
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// DELETE /reminders/:id — cancel a pending reminder
|
|
196
|
+
const reminderMatch = url.pathname.match(/^\/reminders\/([^/]+)$/);
|
|
197
|
+
if (request.method === "DELETE" && reminderMatch) {
|
|
198
|
+
const reminder = reminders.cancel(decodeURIComponent(reminderMatch[1]));
|
|
199
|
+
if (!reminder) {
|
|
200
|
+
jsonResponse(response, 404, { error: "pending reminder not found" });
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
jsonResponse(response, 200, { ok: true, reminder });
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
150
206
|
// POST /send — send a message and/or local file attachment directly to a chat
|
|
151
207
|
if (request.method === "POST" && url.pathname === "/send") {
|
|
152
208
|
try {
|
package/dist/web/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,28 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kingcrab/pi-imessage",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.43",
|
|
4
4
|
"description": "AI-powered iMessage bot using pi coding agent — understands images, quoted replies, and conversation context",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Henry Zhu",
|
|
8
8
|
"homepage": "https://github.com/daya0576/pi-imessage#readme",
|
|
9
9
|
"bugs": "https://github.com/daya0576/pi-imessage/issues",
|
|
10
|
-
"keywords": [
|
|
11
|
-
"imessage",
|
|
12
|
-
"ai",
|
|
13
|
-
"chatbot",
|
|
14
|
-
"pi",
|
|
15
|
-
"macos"
|
|
16
|
-
],
|
|
10
|
+
"keywords": ["imessage", "ai", "chatbot", "pi", "macos"],
|
|
17
11
|
"bin": {
|
|
18
12
|
"pi-imessage": "./dist/cli.js"
|
|
19
13
|
},
|
|
20
|
-
"files": [
|
|
21
|
-
"dist",
|
|
22
|
-
"!dist/__tests__",
|
|
23
|
-
"README.md",
|
|
24
|
-
"LICENSE"
|
|
25
|
-
],
|
|
14
|
+
"files": ["dist", "!dist/__tests__", "README.md", "LICENSE"],
|
|
26
15
|
"publishConfig": {
|
|
27
16
|
"access": "public",
|
|
28
17
|
"provenance": true
|
|
@@ -46,9 +35,9 @@
|
|
|
46
35
|
"check": "tsc --noEmit && biome check ."
|
|
47
36
|
},
|
|
48
37
|
"dependencies": {
|
|
49
|
-
"@earendil-works/pi-agent-core": "
|
|
50
|
-
"@earendil-works/pi-ai": "
|
|
51
|
-
"@earendil-works/pi-coding-agent": "
|
|
38
|
+
"@earendil-works/pi-agent-core": "0.84.1",
|
|
39
|
+
"@earendil-works/pi-ai": "0.84.1",
|
|
40
|
+
"@earendil-works/pi-coding-agent": "0.84.1",
|
|
52
41
|
"better-sqlite3": "^12.6.2",
|
|
53
42
|
"dotenv": "^17.3.1",
|
|
54
43
|
"eta": "^4.5.1"
|