agent-office 0.4.9 → 0.6.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.
- package/LICENSE +1 -1
- package/README.md +259 -228
- package/dist/commands/cron-requests.d.ts +7 -0
- package/dist/commands/cron-requests.d.ts.map +1 -0
- package/dist/commands/cron-requests.js +31 -0
- package/dist/commands/cron-requests.js.map +1 -0
- package/dist/commands/crons.d.ts +10 -0
- package/dist/commands/crons.d.ts.map +1 -0
- package/dist/commands/crons.js +45 -0
- package/dist/commands/crons.js.map +1 -0
- package/dist/commands/hello.d.ts +5 -0
- package/dist/commands/hello.d.ts.map +1 -0
- package/dist/commands/hello.js +4 -0
- package/dist/commands/hello.js.map +1 -0
- package/dist/commands/messages.d.ts +5 -0
- package/dist/commands/messages.d.ts.map +1 -0
- package/dist/commands/messages.js +18 -0
- package/dist/commands/messages.js.map +1 -0
- package/dist/commands/sessions.d.ts +13 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +58 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/task-columns.d.ts +2 -0
- package/dist/commands/task-columns.d.ts.map +1 -0
- package/dist/commands/task-columns.js +13 -0
- package/dist/commands/task-columns.js.map +1 -0
- package/dist/commands/tasks.d.ts +11 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +75 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +50 -0
- package/dist/config.test.js.map +1 -0
- package/dist/db/index.d.ts +6 -70
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +4 -11
- package/dist/db/index.js.map +1 -0
- package/dist/db/mock-storage.d.ts +79 -0
- package/dist/db/mock-storage.d.ts.map +1 -0
- package/dist/db/mock-storage.js +381 -0
- package/dist/db/mock-storage.js.map +1 -0
- package/dist/db/mock-storage.test.d.ts +2 -0
- package/dist/db/mock-storage.test.d.ts.map +1 -0
- package/dist/db/mock-storage.test.js +234 -0
- package/dist/db/mock-storage.test.js.map +1 -0
- package/dist/db/postgresql-storage.d.ts +10 -8
- package/dist/db/postgresql-storage.d.ts.map +1 -0
- package/dist/db/postgresql-storage.js +76 -42
- package/dist/db/postgresql-storage.js.map +1 -0
- package/dist/db/sqlite-storage.d.ts +9 -8
- package/dist/db/sqlite-storage.d.ts.map +1 -0
- package/dist/db/sqlite-storage.js +75 -41
- package/dist/db/sqlite-storage.js.map +1 -0
- package/dist/db/storage-base.d.ts +7 -8
- package/dist/db/storage-base.d.ts.map +1 -0
- package/dist/db/storage-base.js +3 -2
- package/dist/db/storage-base.js.map +1 -0
- package/dist/db/storage.d.ts +12 -12
- package/dist/db/storage.d.ts.map +1 -0
- package/dist/db/storage.js +1 -0
- package/dist/db/storage.js.map +1 -0
- package/dist/db/types.d.ts +67 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +2 -0
- package/dist/db/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +397 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +49 -0
- package/dist/index.test.js.map +1 -0
- package/dist/lib/output.d.ts +2 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +8 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/services/cron-service.constraints.test.d.ts +2 -0
- package/dist/services/cron-service.constraints.test.d.ts.map +1 -0
- package/dist/services/cron-service.constraints.test.js +90 -0
- package/dist/services/cron-service.constraints.test.js.map +1 -0
- package/dist/services/cron-service.d.ts +45 -0
- package/dist/services/cron-service.d.ts.map +1 -0
- package/dist/services/cron-service.js +157 -0
- package/dist/services/cron-service.js.map +1 -0
- package/dist/services/cron-service.test.d.ts +2 -0
- package/dist/services/cron-service.test.d.ts.map +1 -0
- package/dist/services/cron-service.test.js +280 -0
- package/dist/services/cron-service.test.js.map +1 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +5 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/message-service.d.ts +16 -0
- package/dist/services/message-service.d.ts.map +1 -0
- package/dist/services/message-service.js +39 -0
- package/dist/services/message-service.js.map +1 -0
- package/dist/services/message-service.test.d.ts +2 -0
- package/dist/services/message-service.test.d.ts.map +1 -0
- package/dist/services/message-service.test.js +145 -0
- package/dist/services/message-service.test.js.map +1 -0
- package/dist/services/session-service.constraints.test.d.ts +2 -0
- package/dist/services/session-service.constraints.test.d.ts.map +1 -0
- package/dist/services/session-service.constraints.test.js +34 -0
- package/dist/services/session-service.constraints.test.js.map +1 -0
- package/dist/services/session-service.d.ts +27 -0
- package/dist/services/session-service.d.ts.map +1 -0
- package/dist/services/session-service.js +55 -0
- package/dist/services/session-service.js.map +1 -0
- package/dist/services/session-service.test.d.ts +2 -0
- package/dist/services/session-service.test.d.ts.map +1 -0
- package/dist/services/session-service.test.js +87 -0
- package/dist/services/session-service.test.js.map +1 -0
- package/dist/services/task-service.d.ts +25 -0
- package/dist/services/task-service.d.ts.map +1 -0
- package/dist/services/task-service.js +87 -0
- package/dist/services/task-service.js.map +1 -0
- package/dist/services/task-service.test.d.ts +2 -0
- package/dist/services/task-service.test.d.ts.map +1 -0
- package/dist/services/task-service.test.js +180 -0
- package/dist/services/task-service.test.js.map +1 -0
- package/package.json +40 -42
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -317
- package/dist/commands/communicator.d.ts +0 -9
- package/dist/commands/communicator.js +0 -2231
- package/dist/commands/manage.d.ts +0 -5
- package/dist/commands/manage.js +0 -20
- package/dist/commands/notifier.d.ts +0 -11
- package/dist/commands/notifier.js +0 -100
- package/dist/commands/screensaver.d.ts +0 -8
- package/dist/commands/screensaver.js +0 -1280
- package/dist/commands/serve.d.ts +0 -13
- package/dist/commands/serve.js +0 -95
- package/dist/commands/task-board.d.ts +0 -29
- package/dist/commands/task-board.js +0 -251
- package/dist/commands/worker.d.ts +0 -16
- package/dist/commands/worker.js +0 -145
- package/dist/db/migrate.d.ts +0 -2
- package/dist/db/migrate.js +0 -3
- package/dist/lib/agentic-coding-server.d.ts +0 -66
- package/dist/lib/agentic-coding-server.js +0 -7
- package/dist/lib/notifier.d.ts +0 -18
- package/dist/lib/notifier.js +0 -15
- package/dist/lib/opencode-coding-server.d.ts +0 -11
- package/dist/lib/opencode-coding-server.js +0 -66
- package/dist/lib/pi-coding-server.d.ts +0 -20
- package/dist/lib/pi-coding-server.js +0 -162
- package/dist/manage/app.d.ts +0 -6
- package/dist/manage/app.js +0 -128
- package/dist/manage/components/AgentCode.d.ts +0 -8
- package/dist/manage/components/AgentCode.js +0 -73
- package/dist/manage/components/CreateSession.d.ts +0 -8
- package/dist/manage/components/CreateSession.js +0 -37
- package/dist/manage/components/CronList.d.ts +0 -9
- package/dist/manage/components/CronList.js +0 -321
- package/dist/manage/components/CronRequests.d.ts +0 -8
- package/dist/manage/components/CronRequests.js +0 -181
- package/dist/manage/components/DeleteSession.d.ts +0 -7
- package/dist/manage/components/DeleteSession.js +0 -55
- package/dist/manage/components/InjectText.d.ts +0 -8
- package/dist/manage/components/InjectText.js +0 -51
- package/dist/manage/components/ItemSelector.d.ts +0 -7
- package/dist/manage/components/ItemSelector.js +0 -20
- package/dist/manage/components/MenuSelect.d.ts +0 -13
- package/dist/manage/components/MenuSelect.js +0 -22
- package/dist/manage/components/MyMail.d.ts +0 -9
- package/dist/manage/components/MyMail.js +0 -143
- package/dist/manage/components/Profile.d.ts +0 -8
- package/dist/manage/components/Profile.js +0 -60
- package/dist/manage/components/ReadMail.d.ts +0 -8
- package/dist/manage/components/ReadMail.js +0 -110
- package/dist/manage/components/SendMessage.d.ts +0 -9
- package/dist/manage/components/SendMessage.js +0 -79
- package/dist/manage/components/SessionList.d.ts +0 -9
- package/dist/manage/components/SessionList.js +0 -608
- package/dist/manage/components/SessionSidebar.d.ts +0 -6
- package/dist/manage/components/SessionSidebar.js +0 -24
- package/dist/manage/components/TailMessages.d.ts +0 -8
- package/dist/manage/components/TailMessages.js +0 -126
- package/dist/manage/hooks/useApi.d.ts +0 -147
- package/dist/manage/hooks/useApi.js +0 -181
- package/dist/server/cron.d.ts +0 -25
- package/dist/server/cron.js +0 -107
- package/dist/server/index.d.ts +0 -4
- package/dist/server/index.js +0 -22
- package/dist/server/routes.d.ts +0 -13
- package/dist/server/routes.js +0 -1396
package/dist/commands/manage.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render } from "ink";
|
|
3
|
-
import { App } from "../manage/app.js";
|
|
4
|
-
export async function manage(url, options) {
|
|
5
|
-
const password = options.password;
|
|
6
|
-
if (!password) {
|
|
7
|
-
console.error("Error: --password is required (or set AGENT_OFFICE_PASSWORD)");
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
|
-
// Validate the URL minimally
|
|
11
|
-
try {
|
|
12
|
-
new URL(url);
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
console.error(`Error: invalid server URL "${url}"`);
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
const { waitUntilExit } = render(_jsx(App, { serverUrl: url, password: password }));
|
|
19
|
-
await waitUntilExit();
|
|
20
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type AgentOfficeNotifier } from "../lib/notifier.js";
|
|
2
|
-
type Options = {
|
|
3
|
-
agentOfficeUrl?: string;
|
|
4
|
-
password?: string;
|
|
5
|
-
toEmail?: string;
|
|
6
|
-
resendApiKey?: string;
|
|
7
|
-
domain?: string;
|
|
8
|
-
waitMinutes?: string;
|
|
9
|
-
};
|
|
10
|
-
export declare function notifier(options: Options, customNotifier?: AgentOfficeNotifier): Promise<void>;
|
|
11
|
-
export {};
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { Cron } from "croner";
|
|
2
|
-
import { ResendNotifier } from "../lib/notifier.js";
|
|
3
|
-
export async function notifier(options, customNotifier) {
|
|
4
|
-
const toEmail = options.toEmail;
|
|
5
|
-
if (!toEmail) {
|
|
6
|
-
console.error("Error: --to-email or TO_EMAIL env required");
|
|
7
|
-
process.exit(1);
|
|
8
|
-
}
|
|
9
|
-
const domain = options.domain;
|
|
10
|
-
if (!domain) {
|
|
11
|
-
console.error("Error: --domain or EMAIL_DOMAIN env required");
|
|
12
|
-
process.exit(1);
|
|
13
|
-
}
|
|
14
|
-
const agentOfficeUrl = options.agentOfficeUrl ?? "http://127.0.0.1:7654";
|
|
15
|
-
const password = options.password;
|
|
16
|
-
if (!password) {
|
|
17
|
-
console.error("Error: --password or AGENT_OFFICE_PASSWORD env required");
|
|
18
|
-
process.exit(1);
|
|
19
|
-
}
|
|
20
|
-
const waitMinutes = parseInt(options.waitMinutes ?? "15", 10);
|
|
21
|
-
const waitHours = waitMinutes / 60;
|
|
22
|
-
let notify;
|
|
23
|
-
if (customNotifier) {
|
|
24
|
-
notify = customNotifier;
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
const resendApiKey = options.resendApiKey;
|
|
28
|
-
if (!resendApiKey) {
|
|
29
|
-
console.error("Error: --resend-api-key or RESEND_API_KEY env required");
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
notify = new ResendNotifier(resendApiKey);
|
|
33
|
-
}
|
|
34
|
-
const authHeaders = {
|
|
35
|
-
Authorization: `Bearer ${password}`,
|
|
36
|
-
"Content-Type": "application/json",
|
|
37
|
-
};
|
|
38
|
-
const check = async () => {
|
|
39
|
-
try {
|
|
40
|
-
// Fetch messages old enough to notify about
|
|
41
|
-
const resp = await fetch(`${agentOfficeUrl}/human/unread-old?hours=${waitHours}`, {
|
|
42
|
-
headers: authHeaders,
|
|
43
|
-
});
|
|
44
|
-
if (!resp.ok) {
|
|
45
|
-
console.error(`GET /human/unread-old failed: ${resp.status}`);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const qualifying = (await resp.json());
|
|
49
|
-
if (qualifying.length === 0) {
|
|
50
|
-
// Check if there are any unread messages at all (just not old enough yet)
|
|
51
|
-
const allResp = await fetch(`${agentOfficeUrl}/human/unread-old?hours=0`, {
|
|
52
|
-
headers: authHeaders,
|
|
53
|
-
});
|
|
54
|
-
if (allResp.ok) {
|
|
55
|
-
const allUnread = (await allResp.json());
|
|
56
|
-
if (allUnread.length > 0) {
|
|
57
|
-
console.log(`${allUnread.length} unread message(s) exist but haven't been waiting >${waitMinutes}m yet — skipping notification`);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
console.log("No unread messages — nothing to notify");
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const senders = [...new Set(qualifying.map((m) => m.from_name))];
|
|
66
|
-
for (const sender of senders) {
|
|
67
|
-
const fromAddress = `${sender} <${sender.replace(/\s+/g, "+")}@${domain}>`;
|
|
68
|
-
await notify.send({
|
|
69
|
-
from: fromAddress,
|
|
70
|
-
to: toEmail,
|
|
71
|
-
subject: "Agent Office: Message Waiting",
|
|
72
|
-
text: "There is a message waiting for you at Agent Office.",
|
|
73
|
-
});
|
|
74
|
-
console.log(`Sent out notification for waiting mail | from: ${fromAddress} | to: ${toEmail}`);
|
|
75
|
-
}
|
|
76
|
-
const ids = qualifying.map((m) => m.id);
|
|
77
|
-
const markResp = await fetch(`${agentOfficeUrl}/human/mark-notified`, {
|
|
78
|
-
method: "POST",
|
|
79
|
-
headers: authHeaders,
|
|
80
|
-
body: JSON.stringify({ ids }),
|
|
81
|
-
});
|
|
82
|
-
if (!markResp.ok) {
|
|
83
|
-
console.error(`POST /human/mark-notified failed: ${markResp.status}`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
catch (e) {
|
|
87
|
-
console.error("Notifier cron error:", e);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
const cron = new Cron("0 * * * *", check);
|
|
91
|
-
console.log(`Agent Office notifier started. Notifying for messages unread >${waitMinutes}m. Checking ${agentOfficeUrl} every hour. ^C to stop.`);
|
|
92
|
-
await check();
|
|
93
|
-
const shutdown = async () => {
|
|
94
|
-
console.log("\nShutting down...");
|
|
95
|
-
cron.stop();
|
|
96
|
-
process.exit(0);
|
|
97
|
-
};
|
|
98
|
-
process.on("SIGINT", shutdown);
|
|
99
|
-
process.on("SIGTERM", shutdown);
|
|
100
|
-
}
|