@kingcrab/pi-imessage 0.0.42 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/README.md +101 -108
  2. package/dist/agent/behavior.js +79 -0
  3. package/dist/agent/chats.js +67 -0
  4. package/dist/agent/commands.js +163 -0
  5. package/dist/agent/compaction.js +51 -0
  6. package/dist/agent/deliver.js +139 -0
  7. package/dist/agent/direct-send.js +68 -0
  8. package/dist/agent/harness.js +79 -0
  9. package/dist/agent/health.js +32 -0
  10. package/dist/agent/models.js +69 -0
  11. package/dist/agent/progress-format.js +87 -0
  12. package/dist/agent/progress.js +135 -0
  13. package/dist/agent/prompt.js +79 -0
  14. package/dist/agent/replies.js +9 -0
  15. package/dist/agent/run.js +159 -0
  16. package/dist/agent/scheduling.js +290 -0
  17. package/dist/agent/time.js +18 -0
  18. package/dist/cli.js +88 -191
  19. package/dist/config/settings.js +60 -0
  20. package/dist/extensions/browser.js +326 -0
  21. package/dist/extensions/final-text.js +23 -0
  22. package/dist/extensions/memory.js +109 -0
  23. package/dist/extensions/message.js +33 -0
  24. package/dist/extensions/read-image.js +72 -0
  25. package/dist/extensions/schedules.js +41 -0
  26. package/dist/extensions/subagent.js +54 -0
  27. package/dist/extensions/web.js +99 -0
  28. package/dist/extensions/workspace.js +98 -0
  29. package/dist/main.js +571 -74
  30. package/dist/transport/attachments.js +37 -0
  31. package/dist/transport/http.js +110 -0
  32. package/dist/{rich-text.js → transport/rich-text.js} +25 -13
  33. package/dist/{send.js → transport/send.js} +13 -13
  34. package/dist/transport/watch.js +124 -0
  35. package/dist/web/app.js +748 -0
  36. package/dist/web/history.js +87 -0
  37. package/dist/web/memory.js +81 -0
  38. package/dist/web/page.js +28 -0
  39. package/dist/web/schedules.js +74 -0
  40. package/dist/web/server.js +348 -0
  41. package/dist/web/style.css +543 -0
  42. package/dist/web/tasks.js +63 -0
  43. package/docs/adr/0001-durable-owns-state.md +11 -0
  44. package/docs/adr/0002-module-layering.md +11 -0
  45. package/docs/adr/0003-replies-at-most-once.md +11 -0
  46. package/docs/adr/0004-native-extensions.md +11 -0
  47. package/docs/adr/0005-history-migration.md +11 -0
  48. package/docs/adr/0006-jsonl-storage.md +11 -0
  49. package/docs/adr/0007-images-by-path.md +11 -0
  50. package/docs/adr/0008-compaction-and-run.md +11 -0
  51. package/docs/adr/0009-one-shot-cutover.md +11 -0
  52. package/docs/adr/0010-test-budget.md +11 -0
  53. package/docs/adr/0011-reconcile-unsent-answers.md +24 -0
  54. package/docs/adr/0012-run-in-owned-conversation.md +22 -0
  55. package/docs/adr/0013-thin-adapters-around-durable.md +18 -0
  56. package/docs/adr/0014-ephemeral-private-storage.md +13 -0
  57. package/docs/adr/0015-ordinary-stop-keeps-native-inbox.md +21 -0
  58. package/docs/adr/0016-process-http-transport.md +21 -0
  59. package/docs/adr/0017-browser-cli-owned-scope.md +22 -0
  60. package/docs/adr/0018-tasks-without-prompt-api.md +19 -0
  61. package/docs/adr/0019-remove-scheduled-services.md +41 -0
  62. package/docs/adr/0020-chat-task-progress.md +41 -0
  63. package/docs/adr/0021-readable-progress-without-link-previews.md +33 -0
  64. package/docs/adr/0022-progress-admission-and-settlement.md +35 -0
  65. package/docs/adr/0023-retain-progress-type-prefixes.md +18 -0
  66. package/docs/adr/0024-status-marker-before-type-prefix.md +13 -0
  67. package/docs/adr/0025-reusable-progress-and-command-preview.md +49 -0
  68. package/docs/adr/0026-inline-command-only-requests.md +16 -0
  69. package/docs/adr/0027-command-preview-width.md +10 -0
  70. package/docs/adr/0028-command-preview-120.md +8 -0
  71. package/docs/adr/0030-shared-web-read-cache.md +33 -0
  72. package/docs/adr/0031-quiet-compaction-progress.md +32 -0
  73. package/docs/adr/0032-native-background-schedules.md +58 -0
  74. package/docs/adr/0033-operator-scheduled-run.md +23 -0
  75. package/docs/adr/0034-machine-local-schedule-time.md +36 -0
  76. package/docs/adr/0035-external-business-task-extensions.md +56 -0
  77. package/docs/adr/0036-workspace-policy-and-neutral-service-id.md +37 -0
  78. package/docs/adr/0037-restart-during-in-flight-work.md +30 -0
  79. package/docs/adr/0038-restart-any-time.md +25 -0
  80. package/docs/adr/0039-rerun-interrupted-tools.md +24 -0
  81. package/docs/adr/0040-chat-progress-notices.md +44 -0
  82. package/docs/adr/0041-restart-and-recovery.md +28 -0
  83. package/docs/adr/0042-background-schedules-and-workspace-extensions.md +44 -0
  84. package/docs/adr/0043-remove-legacy-migration.md +23 -0
  85. package/docs/adr/0044-message-channels.md +32 -0
  86. package/docs/adr/0045-chat-scheduling-tools.md +51 -0
  87. package/docs/adr/0046-selective-command-redaction.md +31 -0
  88. package/docs/adr/0047-one-scheduling-path.md +158 -0
  89. package/docs/adr/README.md +50 -0
  90. package/docs/api.md +92 -0
  91. package/docs/architecture.md +164 -0
  92. package/docs/browser.md +93 -0
  93. package/docs/memory.md +27 -0
  94. package/docs/screenshot.png +0 -0
  95. package/docs/workspace-extensions.md +133 -0
  96. package/examples/workspace-extensions/system-context/index.ts +69 -0
  97. package/examples/workspace-extensions/system-context/package.json +3 -0
  98. package/ops/README.md +267 -0
  99. package/ops/preflight.mjs +28 -0
  100. package/package.json +33 -45
  101. package/dist/agent.d.ts +0 -60
  102. package/dist/agent.d.ts.map +0 -1
  103. package/dist/agent.js +0 -715
  104. package/dist/agent.js.map +0 -1
  105. package/dist/cli.d.ts +0 -15
  106. package/dist/cli.d.ts.map +0 -1
  107. package/dist/cli.js.map +0 -1
  108. package/dist/imessage.d.ts +0 -33
  109. package/dist/imessage.d.ts.map +0 -1
  110. package/dist/imessage.js +0 -76
  111. package/dist/imessage.js.map +0 -1
  112. package/dist/logger.d.ts +0 -33
  113. package/dist/logger.d.ts.map +0 -1
  114. package/dist/logger.js +0 -104
  115. package/dist/logger.js.map +0 -1
  116. package/dist/main.d.ts +0 -5
  117. package/dist/main.d.ts.map +0 -1
  118. package/dist/main.js.map +0 -1
  119. package/dist/memory.d.ts +0 -53
  120. package/dist/memory.d.ts.map +0 -1
  121. package/dist/memory.js +0 -196
  122. package/dist/memory.js.map +0 -1
  123. package/dist/model-health.d.ts +0 -11
  124. package/dist/model-health.d.ts.map +0 -1
  125. package/dist/model-health.js +0 -67
  126. package/dist/model-health.js.map +0 -1
  127. package/dist/pipeline.d.ts +0 -27
  128. package/dist/pipeline.d.ts.map +0 -1
  129. package/dist/pipeline.js +0 -59
  130. package/dist/pipeline.js.map +0 -1
  131. package/dist/queue.d.ts +0 -23
  132. package/dist/queue.d.ts.map +0 -1
  133. package/dist/queue.js +0 -89
  134. package/dist/queue.js.map +0 -1
  135. package/dist/rich-text.d.ts +0 -26
  136. package/dist/rich-text.d.ts.map +0 -1
  137. package/dist/rich-text.js.map +0 -1
  138. package/dist/self-echo.d.ts +0 -19
  139. package/dist/self-echo.d.ts.map +0 -1
  140. package/dist/self-echo.js +0 -54
  141. package/dist/self-echo.js.map +0 -1
  142. package/dist/send.d.ts +0 -24
  143. package/dist/send.d.ts.map +0 -1
  144. package/dist/send.js.map +0 -1
  145. package/dist/settings.d.ts +0 -44
  146. package/dist/settings.d.ts.map +0 -1
  147. package/dist/settings.js +0 -80
  148. package/dist/settings.js.map +0 -1
  149. package/dist/store.d.ts +0 -57
  150. package/dist/store.d.ts.map +0 -1
  151. package/dist/store.js +0 -124
  152. package/dist/store.js.map +0 -1
  153. package/dist/tasks.d.ts +0 -95
  154. package/dist/tasks.d.ts.map +0 -1
  155. package/dist/tasks.js +0 -384
  156. package/dist/tasks.js.map +0 -1
  157. package/dist/types.d.ts +0 -93
  158. package/dist/types.d.ts.map +0 -1
  159. package/dist/types.js +0 -38
  160. package/dist/types.js.map +0 -1
  161. package/dist/watch.d.ts +0 -21
  162. package/dist/watch.d.ts.map +0 -1
  163. package/dist/watch.js +0 -219
  164. package/dist/watch.js.map +0 -1
  165. package/dist/web/data.d.ts +0 -11
  166. package/dist/web/data.d.ts.map +0 -1
  167. package/dist/web/data.js +0 -56
  168. package/dist/web/data.js.map +0 -1
  169. package/dist/web/html.d.ts +0 -5
  170. package/dist/web/html.d.ts.map +0 -1
  171. package/dist/web/html.js +0 -16
  172. package/dist/web/html.js.map +0 -1
  173. package/dist/web/index.d.ts +0 -23
  174. package/dist/web/index.d.ts.map +0 -1
  175. package/dist/web/index.js +0 -279
  176. package/dist/web/index.js.map +0 -1
  177. package/dist/web/render.d.ts +0 -11
  178. package/dist/web/render.d.ts.map +0 -1
  179. package/dist/web/render.js +0 -56
  180. package/dist/web/render.js.map +0 -1
  181. package/dist/web/templates/logs.eta +0 -75
  182. package/dist/web/templates/memory.eta +0 -91
  183. package/dist/web/templates/page.eta +0 -98
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /** Lightweight live check for the currently configured default AI model. */
2
- export interface ModelHealthResult {
3
- ok: boolean;
4
- model: string | null;
5
- latencyMs: number;
6
- checkedAt: string;
7
- error?: string;
8
- }
9
- export type ModelHealthChecker = () => Promise<ModelHealthResult>;
10
- export declare function createModelHealthChecker(workingDir: string): ModelHealthChecker;
11
- //# sourceMappingURL=model-health.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-health.d.ts","sourceRoot":"","sources":["../src/model-health.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAQ5E,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,CAoE/E"}
@@ -1,67 +0,0 @@
1
- /** Lightweight live check for the currently configured default AI model. */
2
- import { complete } from "@earendil-works/pi-ai/compat";
3
- import { AuthStorage, ModelRegistry, SettingsManager, getAgentDir } from "@earendil-works/pi-coding-agent";
4
- const CHECK_TIMEOUT_MS = 30_000;
5
- export function createModelHealthChecker(workingDir) {
6
- const agentDir = getAgentDir();
7
- const modelRegistry = ModelRegistry.create(AuthStorage.create());
8
- return async () => {
9
- const startedAt = Date.now();
10
- let modelLabel = null;
11
- try {
12
- modelRegistry.refresh();
13
- const settings = SettingsManager.create(workingDir, agentDir);
14
- const provider = settings.getDefaultProvider();
15
- const modelId = settings.getDefaultModel();
16
- if (!provider || !modelId)
17
- throw new Error("No default model configured");
18
- const model = modelRegistry.find(provider, modelId);
19
- modelLabel = `${provider}/${modelId}`;
20
- if (!model)
21
- 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
- console.log(`[health] model check start: ${modelLabel}`);
26
- const message = {
27
- role: "user",
28
- content: "Reply with exactly OK.",
29
- timestamp: Date.now(),
30
- };
31
- const response = await complete(model, { messages: [message] }, {
32
- apiKey: auth.apiKey,
33
- headers: auth.headers,
34
- maxTokens: 64,
35
- maxRetries: 0,
36
- timeoutMs: CHECK_TIMEOUT_MS,
37
- signal: AbortSignal.timeout(CHECK_TIMEOUT_MS),
38
- });
39
- if (response.stopReason === "error" || response.stopReason === "aborted") {
40
- throw new Error(response.errorMessage || `Model stopped with reason: ${response.stopReason}`);
41
- }
42
- const hasText = response.content.some((part) => part.type === "text" && part.text.trim().length > 0);
43
- if (!hasText)
44
- throw new Error("Model returned no text");
45
- const result = {
46
- ok: true,
47
- model: modelLabel,
48
- latencyMs: Date.now() - startedAt,
49
- checkedAt: new Date().toISOString(),
50
- };
51
- console.log(`[health] model check ok: ${modelLabel} latency_ms=${result.latencyMs}`);
52
- return result;
53
- }
54
- catch (error) {
55
- const result = {
56
- ok: false,
57
- model: modelLabel,
58
- latencyMs: Date.now() - startedAt,
59
- checkedAt: new Date().toISOString(),
60
- error: error instanceof Error ? error.message : String(error),
61
- };
62
- console.error(`[health] model check failed: ${modelLabel ?? "unknown"} latency_ms=${result.latencyMs} error="${result.error}"`);
63
- return result;
64
- }
65
- };
66
- }
67
- //# sourceMappingURL=model-health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-health.js","sourceRoot":"","sources":["../src/model-health.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Message pipeline — lifecycle-based processing for incoming messages.
3
- *
4
- * before (× 1) ──► start ──┬── emit reply ──► end (× 1)
5
- * ├── emit reply ──► end (× 1)
6
- * └── ...done
7
- *
8
- * before : Filter & prepare. Runs once. Sets shouldContinue=false to drop.
9
- * start : Calls agent. Invokes emit() for each reply produced.
10
- * Sets shouldContinue=false on outgoing to skip remaining start tasks.
11
- * end : Runs once per emitted reply (send, log, store).
12
- * Receives ChatContext (not IncomingMessage) — only chat-level identity.
13
- */
14
- import type { ChatContext, IncomingMessage, OutgoingMessage } from "./types.js";
15
- export type BeforeTask = (chat: ChatContext, incoming: IncomingMessage, outgoing: OutgoingMessage) => Promise<OutgoingMessage> | OutgoingMessage;
16
- /** emit() queues end-phase processing for one reply. Synchronous — does not block the caller. */
17
- export type EmitFn = (outgoing: OutgoingMessage) => void;
18
- export type StartTask = (chat: ChatContext, incoming: IncomingMessage, outgoing: OutgoingMessage, emit: EmitFn) => Promise<void>;
19
- export type EndTask = (chat: ChatContext, outgoing: OutgoingMessage) => Promise<OutgoingMessage> | OutgoingMessage;
20
- export interface MessagePipeline {
21
- before(task: BeforeTask): void;
22
- start(task: StartTask): void;
23
- end(task: EndTask): void;
24
- process(incoming: IncomingMessage): Promise<OutgoingMessage>;
25
- }
26
- export declare function createMessagePipeline(): MessagePipeline;
27
- //# sourceMappingURL=pipeline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGhF,MAAM,MAAM,UAAU,GAAG,CACxB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,eAAe,KACrB,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AAEhD,iGAAiG;AACjG,MAAM,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,CACvB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,MAAM,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AAEnH,MAAM,WAAW,eAAe;IAC/B,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7D;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CA8CvD"}
package/dist/pipeline.js DELETED
@@ -1,59 +0,0 @@
1
- /**
2
- * Message pipeline — lifecycle-based processing for incoming messages.
3
- *
4
- * before (× 1) ──► start ──┬── emit reply ──► end (× 1)
5
- * ├── emit reply ──► end (× 1)
6
- * └── ...done
7
- *
8
- * before : Filter & prepare. Runs once. Sets shouldContinue=false to drop.
9
- * start : Calls agent. Invokes emit() for each reply produced.
10
- * Sets shouldContinue=false on outgoing to skip remaining start tasks.
11
- * end : Runs once per emitted reply (send, log, store).
12
- * Receives ChatContext (not IncomingMessage) — only chat-level identity.
13
- */
14
- import { createOutgoingMessage, toChatContext } from "./types.js";
15
- export function createMessagePipeline() {
16
- const beforeTasks = [];
17
- const startTasks = [];
18
- const endTasks = [];
19
- async function runEndTasks(chat, outgoing) {
20
- let result = outgoing;
21
- for (const task of endTasks) {
22
- result = await task(chat, result);
23
- if (!result.shouldContinue)
24
- return;
25
- }
26
- }
27
- async function process(incoming) {
28
- const chat = toChatContext(incoming);
29
- let outgoing = createOutgoingMessage();
30
- for (const task of beforeTasks) {
31
- outgoing = await task(chat, incoming, outgoing);
32
- if (!outgoing.shouldContinue)
33
- return outgoing;
34
- }
35
- // emit() is sync — queues end tasks onto endChain for serialized execution
36
- let endChain = Promise.resolve();
37
- const emit = (out) => {
38
- endChain = endChain
39
- .then(() => runEndTasks(chat, out))
40
- .catch((error) => {
41
- console.error(`[pipeline] end task error for ${chat.chatGuid}:`, error);
42
- });
43
- };
44
- for (const task of startTasks) {
45
- await task(chat, incoming, outgoing, emit);
46
- if (!outgoing.shouldContinue)
47
- break;
48
- }
49
- await endChain;
50
- return outgoing;
51
- }
52
- return {
53
- before: (task) => beforeTasks.push(task),
54
- start: (task) => startTasks.push(task),
55
- end: (task) => endTasks.push(task),
56
- process,
57
- };
58
- }
59
- //# sourceMappingURL=pipeline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA0BlE,MAAM,UAAU,qBAAqB;IACpC,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,UAAU,WAAW,CAAC,IAAiB,EAAE,QAAyB;QACtE,IAAI,MAAM,GAAG,QAAQ,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,cAAc;gBAAE,OAAO;QACpC,CAAC;IACF,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,QAAyB;QAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,QAAQ,GAAG,qBAAqB,EAAE,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAChC,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,cAAc;gBAAE,OAAO,QAAQ,CAAC;QAC/C,CAAC;QAED,2EAA2E;QAC3E,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAW,CAAC,GAAG,EAAE,EAAE;YAC5B,QAAQ,GAAG,QAAQ;iBACjB,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBAClC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,cAAc;gBAAE,MAAM;QACrC,CAAC;QACD,MAAM,QAAQ,CAAC;QAEf,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACxC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,OAAO;KACP,CAAC;AACH,CAAC"}
package/dist/queue.d.ts DELETED
@@ -1,23 +0,0 @@
1
- /**
2
- * Queue primitives.
3
- *
4
- * AsyncQueue — generic unbounded async queue (push/pull/close).
5
- * KeyedQueue — keyed serial executor (same key serialized, different keys concurrent).
6
- */
7
- export declare class QueueClosedError extends Error {
8
- constructor();
9
- }
10
- export interface AsyncQueue<T> {
11
- push(item: T): void;
12
- pull(): Promise<T>;
13
- close(): void;
14
- }
15
- /**
16
- * Create an async queue with optional file-based persistence.
17
- * When `persistPath` is provided, the buffer is restored on creation
18
- * and flushed to disk after every push/pull.
19
- */
20
- export declare function createAsyncQueue<T>(persistPath?: string): AsyncQueue<T>;
21
- /** Same key → serial. Different keys → concurrent. */
22
- export declare function createKeyedQueue(): (key: string, task: () => Promise<void>) => void;
23
- //# sourceMappingURL=queue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,qBAAa,gBAAiB,SAAQ,KAAK;;CAK1C;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,IAAI,IAAI,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CA4DvE;AAID,sDAAsD;AACtD,wBAAgB,gBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAKnF"}
package/dist/queue.js DELETED
@@ -1,89 +0,0 @@
1
- /**
2
- * Queue primitives.
3
- *
4
- * AsyncQueue — generic unbounded async queue (push/pull/close).
5
- * KeyedQueue — keyed serial executor (same key serialized, different keys concurrent).
6
- */
7
- import { existsSync, readFileSync, writeFileSync } from "node:fs";
8
- export class QueueClosedError extends Error {
9
- constructor() {
10
- super("Queue closed");
11
- this.name = "QueueClosedError";
12
- }
13
- }
14
- /**
15
- * Create an async queue with optional file-based persistence.
16
- * When `persistPath` is provided, the buffer is restored on creation
17
- * and flushed to disk after every push/pull.
18
- */
19
- export function createAsyncQueue(persistPath) {
20
- const buffer = [];
21
- const waiters = [];
22
- let closed = false;
23
- // Restore persisted items on startup
24
- if (persistPath && existsSync(persistPath)) {
25
- try {
26
- const items = JSON.parse(readFileSync(persistPath, "utf-8"));
27
- if (Array.isArray(items)) {
28
- buffer.push(...items);
29
- console.log(`[queue] restored ${items.length} item(s) from ${persistPath}`);
30
- }
31
- }
32
- catch (error) {
33
- console.error(`[queue] failed to restore from ${persistPath}:`, error);
34
- }
35
- }
36
- function flush() {
37
- if (!persistPath)
38
- return;
39
- try {
40
- writeFileSync(persistPath, JSON.stringify(buffer));
41
- }
42
- catch (error) {
43
- console.error(`[queue] failed to persist to ${persistPath}:`, error);
44
- }
45
- }
46
- return {
47
- push(item) {
48
- if (closed)
49
- return;
50
- const waiter = waiters.shift();
51
- if (waiter) {
52
- waiter.resolve(item);
53
- // Item bypassed buffer, but still flush (buffer unchanged)
54
- }
55
- else {
56
- buffer.push(item);
57
- flush();
58
- }
59
- },
60
- pull() {
61
- if (closed)
62
- return Promise.reject(new QueueClosedError());
63
- const item = buffer.shift();
64
- if (item !== undefined) {
65
- flush();
66
- return Promise.resolve(item);
67
- }
68
- return new Promise((resolve, reject) => waiters.push({ resolve, reject }));
69
- },
70
- close() {
71
- closed = true;
72
- for (const waiter of waiters) {
73
- waiter.reject(new QueueClosedError());
74
- }
75
- waiters.length = 0;
76
- buffer.length = 0;
77
- flush();
78
- },
79
- };
80
- }
81
- // ── KeyedQueue ────────────────────────────────────────────────────────────────
82
- /** Same key → serial. Different keys → concurrent. */
83
- export function createKeyedQueue() {
84
- const chains = new Map();
85
- return (key, task) => {
86
- chains.set(key, (chains.get(key) ?? Promise.resolve()).then(task, task));
87
- };
88
- }
89
- //# sourceMappingURL=queue.js.map
package/dist/queue.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAC1C;QACC,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IAChC,CAAC;CACD;AAQD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAI,WAAoB;IACvD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,MAAM,OAAO,GAAwE,EAAE,CAAC;IACxF,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,qCAAqC;IACrC,IAAI,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAQ,CAAC;YACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,MAAM,iBAAiB,WAAW,EAAE,CAAC,CAAC;YAC7E,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,kCAAkC,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;IAED,SAAS,KAAK;QACb,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,IAAI,CAAC;YACJ,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,gCAAgC,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;IACF,CAAC;IAED,OAAO;QACN,IAAI,CAAC,IAAO;YACX,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrB,2DAA2D;YAC5D,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,KAAK,EAAE,CAAC;YACT,CAAC;QACF,CAAC;QAED,IAAI;YACH,IAAI,MAAM;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,KAAK,EAAE,CAAC;gBACR,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,KAAK;YACJ,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACnB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB,KAAK,EAAE,CAAC;QACT,CAAC;KACD,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,sDAAsD;AACtD,MAAM,UAAU,gBAAgB;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC;AACH,CAAC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Rich-text sending for Messages.app.
3
- *
4
- * Why this exists:
5
- * - AppleScript can send plain text to Messages.app, but it does not provide a
6
- * good way to construct and send formatted rich text.
7
- * - Node.js can drive shell commands and UI automation, but it cannot natively
8
- * create an AppKit NSAttributedString or write RTF to the macOS pasteboard.
9
- *
10
- * How it works:
11
- * 1. Parse the input text into styled spans (currently basic markdown markers).
12
- * 2. Generate a tiny temporary Swift/AppKit program at runtime.
13
- * 3. Run that Swift helper to place both RTF and plain text on the pasteboard.
14
- * 4. Open the target Messages conversation and paste/send via UI automation.
15
- *
16
- * Notes:
17
- * - This is intentionally self-contained: there is no checked-in Swift helper file.
18
- * - Because sending uses UI automation, it is best-effort and can be disrupted if
19
- * the user is actively interacting with Messages or changing app focus.
20
- * - This path is currently intended for direct-message iMessage chats.
21
- */
22
- export interface RichTextOptions {
23
- markdown?: boolean;
24
- }
25
- export declare function sendRichTextMessage(chatGuid: string, text: string, options?: RichTextOptions): Promise<void>;
26
- //# sourceMappingURL=rich-text.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../src/rich-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAqJD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../src/rich-text.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Self-echo filter — prevents the bot from replying to its own messages.
3
- *
4
- * In a self-chat, the Messages app echoes outgoing messages back as incoming.
5
- * Register each outgoing reply with remember() before sending. When the echo
6
- * arrives, isEcho() detects the match and the caller drops the message.
7
- * Each entry is consumed on first match so identical human follow-ups pass through.
8
- */
9
- export interface SelfEchoFilter {
10
- /** Register a message we just sent so its echo can be suppressed. */
11
- remember(senderId: string, text: string): void;
12
- /**
13
- * Returns true if this message looks like an echo of something we sent.
14
- * Consumes the entry on match so an identical human follow-up is not dropped.
15
- */
16
- isEcho(senderId: string, text: string): boolean;
17
- }
18
- export declare function createSelfEchoFilter(ttlMs?: number): SelfEchoFilter;
19
- //# sourceMappingURL=self-echo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"self-echo.d.ts","sourceRoot":"","sources":["../src/self-echo.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2CH,MAAM,WAAW,cAAc;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAChD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,GAAG,cAAc,CAyBnE"}
package/dist/self-echo.js DELETED
@@ -1,54 +0,0 @@
1
- /**
2
- * Self-echo filter — prevents the bot from replying to its own messages.
3
- *
4
- * In a self-chat, the Messages app echoes outgoing messages back as incoming.
5
- * Register each outgoing reply with remember() before sending. When the echo
6
- * arrives, isEcho() detects the match and the caller drops the message.
7
- * Each entry is consumed on first match so identical human follow-ups pass through.
8
- */
9
- function createExpiringSet(ttlMs) {
10
- const entries = [];
11
- function prune() {
12
- const now = Date.now();
13
- for (let i = entries.length - 1; i >= 0; i--) {
14
- if (entries[i].expiresAt <= now)
15
- entries.splice(i, 1);
16
- }
17
- }
18
- function add(value) {
19
- prune();
20
- entries.push({ value, expiresAt: Date.now() + ttlMs });
21
- }
22
- /** Returns true and consumes the entry if found, false otherwise. */
23
- function consume(value) {
24
- prune();
25
- const idx = entries.findIndex((e) => e.value === value);
26
- if (idx === -1)
27
- return false;
28
- entries.splice(idx, 1);
29
- return true;
30
- }
31
- return { add, consume };
32
- }
33
- export function createSelfEchoFilter(ttlMs = 60_000) {
34
- const buckets = new Map();
35
- function normalise(text) {
36
- return text.trim().toLowerCase();
37
- }
38
- function getBucket(senderId) {
39
- let bucket = buckets.get(senderId);
40
- if (!bucket) {
41
- bucket = createExpiringSet(ttlMs);
42
- buckets.set(senderId, bucket);
43
- }
44
- return bucket;
45
- }
46
- function remember(senderId, text) {
47
- getBucket(senderId).add(normalise(text));
48
- }
49
- function isEcho(senderId, text) {
50
- return getBucket(senderId).consume(normalise(text));
51
- }
52
- return { remember, isEcho };
53
- }
54
- //# sourceMappingURL=self-echo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"self-echo.js","sourceRoot":"","sources":["../src/self-echo.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,SAAS,iBAAiB,CAAC,KAAa;IACvC,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,SAAS,KAAK;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG;gBAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAED,SAAS,GAAG,CAAC,KAAa;QACzB,KAAK,EAAE,CAAC;QACR,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,qEAAqE;IACrE,SAAS,OAAO,CAAC,KAAa;QAC7B,KAAK,EAAE,CAAC;QACR,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACxD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AACzB,CAAC;AAcD,MAAM,UAAU,oBAAoB,CAAC,KAAK,GAAG,MAAM;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgD,CAAC;IAExE,SAAS,SAAS,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,SAAS,SAAS,CAAC,QAAgB;QAClC,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,IAAY;QAC/C,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,MAAM,CAAC,QAAgB,EAAE,IAAY;QAC7C,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC"}
package/dist/send.d.ts DELETED
@@ -1,24 +0,0 @@
1
- /**
2
- * Send iMessages via macOS Messages.app AppleScript.
3
- *
4
- * ┌──────────┐ AppleScript ┌──────────────┐
5
- * │ send.ts │ ───────────────> │ Messages.app │
6
- * └──────────┘ └──────────────┘
7
- *
8
- * Supports DM (buddy), group chat (chat id), and SMS targets.
9
- * Check Messages.app environment before first send with checkEnvironment().
10
- *
11
- * Attachment sends stage the file into ~/Library/Messages/Attachments/pi-imessage/
12
- * because Messages.app's imagent helper is sandboxed and cannot read arbitrary
13
- * paths (e.g. ~/.pi/..., ~/dotfile/...); staged copies are then verified against
14
- * chat.db so we surface real failures instead of trusting AppleScript's ack.
15
- */
16
- import type { RichTextSettings } from "./settings.js";
17
- /** Check Messages.app is running and iMessage is signed in. */
18
- export declare function checkEnvironment(): Promise<void>;
19
- export interface MessageSender {
20
- sendMessage(chatGuid: string, text: string, richText?: RichTextSettings): Promise<void>;
21
- sendAttachment(chatGuid: string, filePath: string): Promise<void>;
22
- }
23
- export declare function createMessageSender(): MessageSender;
24
- //# sourceMappingURL=send.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA2LtD,+DAA+D;AAC/D,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4CtD;AAID,MAAM,WAAW,aAAa;IAC7B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAqDnD"}
package/dist/send.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAC5C,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAEvE,iFAAiF;AAEjF,iEAAiE;AACjE,SAAS,iBAAiB,CAAC,GAAW;IACrC,OAAO,GAAG;SACR,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAY;IACtD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;IAEjC,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,qBAAqB,iBAAiB;8BACjB,aAAa;SAClC,WAAW;SACX,CAAC;IACT,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,OAAO,qBAAqB,iBAAiB;;6BAEjB,SAAS;SAC7B,WAAW;SACX,CAAC;AACV,CAAC;AAED,6DAA6D;AAC7D,SAAS,yBAAyB,CAAC,QAAgB,EAAE,QAAgB;IACpE,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;IAEjC,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,qBAAqB,iBAAiB;8BACjB,aAAa;oBACvB,WAAW;SACtB,CAAC;IACT,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,OAAO,qBAAqB,iBAAiB;;6BAEjB,SAAS;oBAClB,WAAW;SACtB,CAAC;AACV,CAAC;AAED,iFAAiF;AAEjF;;;;;;;GAOG;AACH,KAAK,UAAU,eAAe,CAAC,UAAkB;IAChD,6EAA6E;IAC7E,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;SACpC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;IAChG,MAAM,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACvC,OAAO;QACN,UAAU;QACV,OAAO,EAAE,KAAK,IAAI,EAAE;YACnB,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACR,gDAAgD;YACjD,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC;AASD,qFAAqF;AACrF,KAAK,UAAU,oBAAoB,CAClC,UAAkB,EAClB,SAAiB;IAEjB,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxC,8FAA8F;IAC9F,2EAA2E;IAC3E,MAAM,GAAG,GAAG;;;;4BAIe,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;;WAE/C,CAAC;IAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,IAAI,GAAqB,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAEpG,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACpG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAA0C,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,EAAE,CAAC;gBACT,IAAI,GAAG;oBACN,YAAY,EAAG,GAAG,CAAC,aAAwB,IAAI,IAAI;oBACnD,aAAa,EAAG,GAAG,CAAC,cAAyB,IAAI,IAAI;oBACrD,MAAM,EAAG,GAAG,CAAC,OAAkB,IAAI,IAAI;oBACvC,KAAK,EAAG,GAAG,CAAC,KAAgB,IAAI,IAAI;iBACpC,CAAC;gBACF,2EAA2E;gBAC3E,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnD,OAAO;wBACN,EAAE,EAAE,IAAI;wBACR,MAAM,EAAE,iBAAiB,IAAI,CAAC,YAAY,6BAA6B;wBACvE,GAAG,IAAI;qBACP,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;oBAC9B,OAAO;wBACN,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,oDAAoD,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,KAAK,+BAA+B;wBAC3H,GAAG,IAAI;qBACP,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBACpC,OAAO;wBACN,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,iBAAiB,IAAI,CAAC,KAAK,mBAAmB,IAAI,CAAC,aAAa,YAAY,IAAI,CAAC,MAAM,EAAE;wBACjG,GAAG,IAAI;qBACP,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,iDAAiD;YACjD,KAAK,GAAG,CAAC;QACV,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO;QACN,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,iBAAiB,SAAS,qBAAqB,IAAI,CAAC,YAAY,mBAAmB,IAAI,CAAC,aAAa,YAAY,IAAI,CAAC,MAAM,UAAU,IAAI,CAAC,KAAK,GAAG;QAC3J,GAAG,IAAI;KACP,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACrC,gCAAgC;IAChC,IAAI,CAAC;QACJ,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChD,CAAC;IAED,uDAAuD;IACvD,IAAI,CAAC;QACJ,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CACd,eAAe,YAAY,uGAAuG,CAClI,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,MAAM,GAAG,qBAAqB,iBAAiB;;;;;;;;;;;SAW7C,CAAC;IAET,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACX,iDAAiD,MAAM,yDAAyD,CAChH,CAAC;QACH,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CACX,kGAAkG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC1J,CAAC;IACH,CAAC;AACF,CAAC;AASD,MAAM,UAAU,mBAAmB;IAClC,OAAO;QACN,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,IAAY,EAAE,QAA2B;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,SAAS,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3E,IAAI,QAAQ,EAAE,OAAO,EAAE,CAAC;gBACvB,MAAM,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CACV,kBAAkB,QAAQ,SAAS,IAAI,gBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAC3G,CAAC;gBACF,OAAO;YACR,CAAC;YACD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CACV,kBAAkB,QAAQ,SAAS,IAAI,gBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAC3G,CAAC;QACH,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,QAAgB;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,yBAAyB,QAAQ,EAAE,CAAC,CAAC;YAE1E,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,UAAU,KAAK,QAAQ,CAAC;YACvC,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,yCAAyC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC/D,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBAEjF,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;gBACpF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBACD,OAAO,CAAC,GAAG,CACV,6BAA6B,QAAQ,gBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,MAAM,QAAQ,MAAM,MAAM,CAAC,MAAM,GAAG,CAC/G,CAAC;YACH,CAAC;oBAAS,CAAC;gBACV,IAAI,MAAM,EAAE,CAAC;oBACZ,0EAA0E;oBAC1E,UAAU,CAAC,GAAG,EAAE;wBACf,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAC3B,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC;YACF,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Settings — workspace-level configuration for the iMessage bot.
3
- *
4
- * Loaded from ~/.pi/imessage/settings.json (or WORKING_DIR/settings.json).
5
- *
6
- * ### Chat allowlist
7
- *
8
- * Controls whether the bot should reply to a given chat.
9
- * Messages are always logged regardless of this setting.
10
- *
11
- * Resolution priority (highest to lowest):
12
- *
13
- * blacklist["chatGuid"] > whitelist["chatGuid"] > blacklist["*"] > whitelist["*"]
14
- *
15
- * Examples:
16
- * whitelist: ["*"], blacklist: [] → reply to everyone
17
- * whitelist: ["1"], blacklist: [] → reply only to "1"
18
- * whitelist: ["*"], blacklist: ["2"] → reply to everyone except "2"
19
- * blacklist: ["*"], whitelist: [] → reply to nobody (log-only)
20
- * whitelist: ["1"], blacklist: ["*"] → reply only to "1"
21
- * whitelist: ["1"], blacklist: ["1"] → no reply (blacklist wins)
22
- *
23
- */
24
- export interface ChatAllowlist {
25
- whitelist: string[];
26
- blacklist: string[];
27
- }
28
- export interface RichTextSettings {
29
- enabled: boolean;
30
- markdown: boolean;
31
- }
32
- export interface Settings {
33
- chatAllowlist: ChatAllowlist;
34
- richText?: RichTextSettings;
35
- }
36
- /**
37
- * Determine whether the bot should reply to a given chatGuid.
38
- *
39
- * Priority: blacklist[chatGuid] > whitelist[chatGuid] > blacklist["*"] > whitelist["*"]
40
- */
41
- export declare function isReplyEnabled(settings: Settings, chatGuid: string): boolean;
42
- export declare function readSettings(workingDir: string): Settings;
43
- export declare function writeSettings(workingDir: string, settings: Settings): void;
44
- //# sourceMappingURL=settings.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO5E;AAQD,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CA0BzD;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE1E"}