@rubytech/create-maxy-code 0.1.386 → 0.1.388
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/dist/__tests__/cron-heartbeat-registration.test.js +5 -0
- package/dist/cron-registration.js +1 -0
- package/dist/index.js +4 -0
- package/package.json +1 -1
- package/payload/platform/neo4j/schema.cypher +36 -1
- package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +61 -1
- package/payload/platform/plugins/docs/references/graph.md +11 -0
- package/payload/platform/plugins/docs/references/plugins-guide.md +1 -0
- package/payload/platform/plugins/docs/references/sweep-guide.md +43 -0
- package/payload/platform/plugins/memory/references/schema-estate-agent.md +34 -0
- package/payload/platform/plugins/scheduling/PLUGIN.md +17 -1
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +12 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js +101 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +54 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +117 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-classify.d.ts +7 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-classify.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-classify.js +6 -3
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-classify.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +88 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/standing-audit.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/standing-audit.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/standing-audit.test.js +77 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/standing-audit.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +59 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +131 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +62 -15
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-agent.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-agent.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-agent.test.js +110 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-agent.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.js +35 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-get-agent.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-agent.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-agent.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-agent.test.js +81 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-agent.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +7 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +21 -4
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +4 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +6 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +2 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +32 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/platform/plugins/sweep/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/sweep/PLUGIN.md +15 -0
- package/payload/platform/plugins/sweep/skills/sweep-workflow/SKILL.md +113 -0
- package/payload/platform/plugins/whatsapp/PLUGIN.md +1 -1
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js +19 -4
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +9 -4
- package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +12 -0
- package/payload/platform/scripts/seed-neo4j.sh +38 -0
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +5 -0
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/server.js +1 -1
- package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
- package/payload/server/public/assets/{AdminLoginScreens-oxqHKL3C.js → AdminLoginScreens-BejIjbmU.js} +1 -1
- package/payload/server/public/assets/{AdminShell-DBD6ruS1.js → AdminShell-D2-uBSB5.js} +1 -1
- package/payload/server/public/assets/{Checkbox-yr8-ftrE.js → Checkbox-1F1tzqca.js} +1 -1
- package/payload/server/public/assets/Transcript-DkGa4CQH.js +2 -0
- package/payload/server/public/assets/{admin-CQfZnuFy.js → admin-DqQARkjy.js} +1 -1
- package/payload/server/public/assets/{browser-DbdPeDK1.js → browser-nDtEK6RC.js} +1 -1
- package/payload/server/public/assets/{calendar-CFdOhe7Q.js → calendar-CO4Bwmho.js} +1 -1
- package/payload/server/public/assets/chat-DeIge_bC.js +1 -0
- package/payload/server/public/assets/chevron-left-DhVdq0aN.js +1 -0
- package/payload/server/public/assets/data-B1GIdzHk.js +1 -0
- package/payload/server/public/assets/{graph-Bluocsf_.js → graph-DFyicKd7.js} +1 -1
- package/payload/server/public/assets/{graph-labels-BcLJmY-v.js → graph-labels-D3BQdcpD.js} +1 -1
- package/payload/server/public/assets/{operator-DjK3MBSS.js → operator-BxrjWdT9.js} +1 -1
- package/payload/server/public/assets/{page-DQNYTb2d.js → page-ByDLq_o1.js} +1 -1
- package/payload/server/public/assets/{page-zJQTRXB2.js → page-D-Ep4bXd.js} +1 -1
- package/payload/server/public/assets/{public-CHCniosp.js → public-DbdqfdYq.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-JDfwjfIL.js → rotate-ccw-BkX8HODe.js} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-CfI3J2IX.css → useSubAccountSwitcher-DS0iqSkP.css} +1 -1
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +5 -5
- package/payload/server/public/chat.html +8 -8
- package/payload/server/public/data.html +7 -7
- package/payload/server/public/graph.html +8 -8
- package/payload/server/public/index.html +10 -10
- package/payload/server/public/operator.html +10 -10
- package/payload/server/public/public.html +8 -8
- package/payload/server/server.js +713 -331
- package/payload/server/public/assets/Transcript-FX_w6no6.js +0 -2
- package/payload/server/public/assets/chat-BunxcNDk.js +0 -1
- package/payload/server/public/assets/chevron-left-Cngmu0Py.js +0 -1
- package/payload/server/public/assets/data-IqZlMSwG.js +0 -1
- /package/payload/server/public/assets/{useSubAccountSwitcher-BpQ3oKiJ.js → useSubAccountSwitcher-DMbRhLPv.js} +0 -0
|
@@ -29,7 +29,12 @@ const OPTS = {
|
|
|
29
29
|
neo4jPort: 17687,
|
|
30
30
|
nodeBin: "/usr/bin/node",
|
|
31
31
|
logDir: "/home/me/.maxy-code/logs",
|
|
32
|
+
uiPort: 19201,
|
|
32
33
|
};
|
|
34
|
+
test("heartbeat entry carries MAXY_UI_INTERNAL_PORT so the dispatcher can reach the inject route (Task 1378)", () => {
|
|
35
|
+
const block = buildHeartbeatCronBlock(OPTS);
|
|
36
|
+
assert.match(block, /MAXY_UI_INTERNAL_PORT=19201 /, "entry must export the UI internal port for schedule-inject");
|
|
37
|
+
});
|
|
33
38
|
test("markers are # BEGIN/END <PRODUCT_UPPER> CRONS (admin system-status contract)", () => {
|
|
34
39
|
const { begin, end } = cronBlockMarkers("maxy-code");
|
|
35
40
|
assert.equal(begin, "# BEGIN MAXY-CODE CRONS");
|
|
@@ -36,6 +36,7 @@ export function buildHeartbeatCronBlock(opts) {
|
|
|
36
36
|
const log = `${opts.logDir}/check-due-events.log`;
|
|
37
37
|
const entry = `* * * * * PLATFORM_ROOT=${opts.platformRoot} ` +
|
|
38
38
|
`NEO4J_URI=bolt://localhost:${opts.neo4jPort} ` +
|
|
39
|
+
`MAXY_UI_INTERNAL_PORT=${opts.uiPort} ` +
|
|
39
40
|
`${opts.nodeBin} ${script} >> ${log} 2>&1 # heartbeat`;
|
|
40
41
|
return [begin, entry, end].join("\n");
|
|
41
42
|
}
|
package/dist/index.js
CHANGED
|
@@ -3056,6 +3056,10 @@ function installCrons() {
|
|
|
3056
3056
|
neo4jPort: NEO4J_PORT,
|
|
3057
3057
|
nodeBin,
|
|
3058
3058
|
logDir,
|
|
3059
|
+
// The UI server binds MAXY_UI_INTERNAL_PORT = PORT + 1 on Linux (see the
|
|
3060
|
+
// systemd unit writer); installCrons is Linux-only, so the same derivation
|
|
3061
|
+
// pins the port the schedule-inject dispatcher POSTs to (Task 1378).
|
|
3062
|
+
uiPort: PORT + 1,
|
|
3059
3063
|
});
|
|
3060
3064
|
const existing = spawnSync("crontab", ["-l"], { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] });
|
|
3061
3065
|
const currentCrontab = existing.status === 0 ? existing.stdout : "";
|
package/package.json
CHANGED
|
@@ -451,7 +451,7 @@ DROP INDEX entity_search_admin IF EXISTS;
|
|
|
451
451
|
|
|
452
452
|
CREATE FULLTEXT INDEX entity_search_admin IF NOT EXISTS
|
|
453
453
|
FOR (n:LocalBusiness|Service|PriceSpecification|OpeningHoursSpecification|Organization
|
|
454
|
-
|Listing|Property|Viewing|Offer|PostalAddress
|
|
454
|
+
|Listing|Property|Viewing|Offer|PostalAddress|Sale|Chain|ChainLink
|
|
455
455
|
|Job|Quote|QuoteLine|Valuation|Milestone|VariationNote|Invoice|InboundInvoice|JobCost|WhatsAppGroup
|
|
456
456
|
|Customer|Site|Asset|Visit|Part|PurchaseOrder|PpmContract|Contact|PurchaseOrderLine|InvoiceLine|InvoicePayment|Credit
|
|
457
457
|
|Person|UserProfile|Preference|AdminUser|AccessGrant
|
|
@@ -473,6 +473,7 @@ ON EACH [n.name, n.firstName, n.lastName, n.givenName, n.familyName,
|
|
|
473
473
|
n.displayName, n.slug, n.role,
|
|
474
474
|
n.client, n.address, n.supplier, n.clientName,
|
|
475
475
|
n.statement, n.decision, n.consequences,
|
|
476
|
+
n.generalNotes, n.proceedabilityNotes, n.owningAgent, n.owningTeam, n.chainId,
|
|
476
477
|
n.compiledTruth];
|
|
477
478
|
// `compiledTruth` (Task 306) is the authoritative admin-side summary on
|
|
478
479
|
// Person/Company/Concept/Project/LocalBusiness, indexed above. Its customer-facing
|
|
@@ -1345,6 +1346,40 @@ FOR (o:Offer) ON (o.accountId);
|
|
|
1345
1346
|
CREATE INDEX image_object_account IF NOT EXISTS
|
|
1346
1347
|
FOR (i:ImageObject) ON (i.accountId);
|
|
1347
1348
|
|
|
1349
|
+
// ----------------------------------------------------------
|
|
1350
|
+
// Sales-progression ontology (estate-agent vertical, Task 1372).
|
|
1351
|
+
// Post-sale-agreed chain state: the seam where :Offer ends. Idempotency keys
|
|
1352
|
+
// mirror schema-estate-agent.md "Sales progression":
|
|
1353
|
+
// :Sale — (accountId, sourceSystem, sourceId)
|
|
1354
|
+
// :Chain — (accountId, chainId)
|
|
1355
|
+
// :ChainLink — (accountId, chainId, priority)
|
|
1356
|
+
// Party contacts are first-class :Person nodes keyed
|
|
1357
|
+
// (accountId, chainId, priority, partyRole) — never a property blob. Written by
|
|
1358
|
+
// the estate-sales MCP progression-* tools via raw MERGE (account-scoped,
|
|
1359
|
+
// parent edge in the same statement — the account/adjacency gate by
|
|
1360
|
+
// construction). These declarations exist so parseLabelsFromSchemaCypher()
|
|
1361
|
+
// registers each label on a fresh deploy before the first write, and so the
|
|
1362
|
+
// fulltext-coverage doctrine test (every schema-declared label ∈ the
|
|
1363
|
+
// entity_search_admin union) stays satisfied. A fresh non-estate install
|
|
1364
|
+
// matches nothing in any of these constraints.
|
|
1365
|
+
CREATE CONSTRAINT sale_account_source_unique IF NOT EXISTS
|
|
1366
|
+
FOR (s:Sale) REQUIRE (s.accountId, s.sourceSystem, s.sourceId) IS UNIQUE;
|
|
1367
|
+
|
|
1368
|
+
CREATE INDEX sale_account IF NOT EXISTS FOR (s:Sale) ON (s.accountId);
|
|
1369
|
+
CREATE INDEX sale_status IF NOT EXISTS FOR (s:Sale) ON (s.status);
|
|
1370
|
+
CREATE INDEX sale_chain IF NOT EXISTS FOR (s:Sale) ON (s.chainId);
|
|
1371
|
+
|
|
1372
|
+
CREATE CONSTRAINT chain_account_chainid_unique IF NOT EXISTS
|
|
1373
|
+
FOR (c:Chain) REQUIRE (c.accountId, c.chainId) IS UNIQUE;
|
|
1374
|
+
|
|
1375
|
+
CREATE INDEX chain_account IF NOT EXISTS FOR (c:Chain) ON (c.accountId);
|
|
1376
|
+
|
|
1377
|
+
CREATE CONSTRAINT chainlink_account_chain_priority_unique IF NOT EXISTS
|
|
1378
|
+
FOR (cl:ChainLink) REQUIRE (cl.accountId, cl.chainId, cl.priority) IS UNIQUE;
|
|
1379
|
+
|
|
1380
|
+
CREATE INDEX chainlink_account IF NOT EXISTS FOR (cl:ChainLink) ON (cl.accountId);
|
|
1381
|
+
CREATE INDEX chainlink_chain IF NOT EXISTS FOR (cl:ChainLink) ON (cl.chainId);
|
|
1382
|
+
|
|
1348
1383
|
// :PostalAddress (schema:PostalAddress) — shared address nodes documented in
|
|
1349
1384
|
// schema-base.md. Address rows are deliberately accountId-free (one address
|
|
1350
1385
|
// can be shared across customers / orders / listings); writers MERGE on the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: platform-architecture
|
|
3
3
|
description: Use when grounding any documented-surface claim about what Maxy ships — plugins, skills, specialists, install/deploy flows, internals. This is the install catalogue, not evidence of what is enabled on the current account. For install state on this account, call `capabilities-here`; for documented surface, cite the `Source:` URL inline.
|
|
4
|
-
content-hash: sha256:
|
|
4
|
+
content-hash: sha256:ca771c68e3f7a68883043ba838fc2dd07004d77ac08f3326f2f60a9b7bc62be0
|
|
5
5
|
brand: maxy-code
|
|
6
6
|
product-name: Maxy
|
|
7
7
|
---
|
|
@@ -360,6 +360,7 @@ These are enabled during onboarding and can be added or removed at any time. Som
|
|
|
360
360
|
| Plugin | What it does | Enhances |
|
|
361
361
|
|--------|-------------|----------|
|
|
362
362
|
| `business-assistant` | Customer enquiries, scheduling, quoting, invoicing, daily briefings | Personal assistant |
|
|
363
|
+
| `sweep` | Catch-up composition — on "catch me up" / "what did I miss" / "morning sync" / "sweep", reads every connected inbox, calendar, and contact source, plus the site captures published sites write to Cloudflare D1 (enquiry forms, e-signatures, and other form completions), dedupes against the graph, and proposes to-dos, calendar items, contacts, and captured enquiries for approval. Composes `work`, `scheduling`, `contacts`, and `memory`; adds no tools and never sends. | Personal assistant |
|
|
363
364
|
| `sales` | Buying signal detection, closing techniques, objection handling | Personal assistant |
|
|
364
365
|
| `deep-research` | Structured multi-source research — query decomposition, source evaluation, citations | Research assistant |
|
|
365
366
|
| `projects` | Structured project execution — phased sprints, investigations, reviews, retrospectives, plus method references for stakeholder mapping, risk pre-mortems, task prioritization, and meeting-to-tasks | Project manager |
|
|
@@ -1683,6 +1684,54 @@ This means you can always trace a finished piece of work back to the Task that a
|
|
|
1683
1684
|
|
|
1684
1685
|
Cross-account access is refused. A Task that belongs to a different account on the same install is invisible to this loop — Maxy will not read it, name it, or surface it.
|
|
1685
1686
|
|
|
1687
|
+
---
|
|
1688
|
+
# Sweep
|
|
1689
|
+
Source: https://docs.getmaxy.com/sweep-guide.md
|
|
1690
|
+
|
|
1691
|
+
# Sweep Guide
|
|
1692
|
+
|
|
1693
|
+
## What a Sweep Is
|
|
1694
|
+
|
|
1695
|
+
A sweep catches you up. When you ask Maxy to catch you up, it reads every surface you have connected — your inbox, your calendar, your contacts — compares them against what it already holds in memory, and shows you the gaps: action items with no to-do yet, calendar events it has not recorded, and people or facts it does not yet know. Nothing is written until you approve it.
|
|
1696
|
+
|
|
1697
|
+
A sweep proposes. It never writes on its own, and it never sends a message, an email, or an invite.
|
|
1698
|
+
|
|
1699
|
+
## Running a Sweep
|
|
1700
|
+
|
|
1701
|
+
Ask Maxy naturally:
|
|
1702
|
+
|
|
1703
|
+
- "Catch me up"
|
|
1704
|
+
- "What did I miss?"
|
|
1705
|
+
- "Morning sync"
|
|
1706
|
+
- "Sweep"
|
|
1707
|
+
|
|
1708
|
+
A sweep runs only when you ask. There is no automatic or scheduled sweep.
|
|
1709
|
+
|
|
1710
|
+
## What a Sweep Reads
|
|
1711
|
+
|
|
1712
|
+
Maxy reads whichever surfaces you have connected:
|
|
1713
|
+
|
|
1714
|
+
- **Inbox** — recent mail, through whatever mail account is connected, looking for requests, commitments, and deadlines addressed to you.
|
|
1715
|
+
- **Calendar** — upcoming events, looking for anything not yet on your Maxy calendar.
|
|
1716
|
+
- **Contacts** — people and details not yet in your contacts.
|
|
1717
|
+
- **Site captures** — enquiries and form completions from your published website, such as contact forms and e-signatures. These do not arrive in your inbox; they land in the site's own database, and Maxy reads the ones it has not brought in yet. Bookings made through a booking page are handled automatically and are not part of the sweep.
|
|
1718
|
+
|
|
1719
|
+
If only one surface is connected, Maxy sweeps that one. If several are connected, it sweeps all of them. If a surface cannot be read, Maxy skips it, tells you which one and why, and carries on with the rest, so a run never quietly leaves something out. If nothing is connected, Maxy says so and stops.
|
|
1720
|
+
|
|
1721
|
+
## What a Sweep Proposes
|
|
1722
|
+
|
|
1723
|
+
After reading, Maxy shows what is new, grouped by what it would create:
|
|
1724
|
+
|
|
1725
|
+
- **To-dos** for action items that have no task yet.
|
|
1726
|
+
- **Calendar items** for events not yet recorded.
|
|
1727
|
+
- **People and facts** for contacts and details it does not yet hold.
|
|
1728
|
+
|
|
1729
|
+
A site capture becomes one of these too: an enquiry becomes a new contact routed to whoever handles first contact, and a signature or completion becomes a note or a to-do. Each proposal says what it is, where it came from, and what it would create or change. You approve the ones you want. Maxy then creates each approved record through the skill that owns it, and confirms once it is saved. Anything you decline is dropped.
|
|
1730
|
+
|
|
1731
|
+
## Running It Again
|
|
1732
|
+
|
|
1733
|
+
Run a sweep a second time and it proposes nothing it already recorded on the first run, because those records are now in memory and it recognises them. A repeat sweep is quiet on purpose; that is the sign your graph is already up to date.
|
|
1734
|
+
|
|
1686
1735
|
---
|
|
1687
1736
|
# Slides
|
|
1688
1737
|
Source: https://docs.getmaxy.com/slides.md
|
|
@@ -2981,6 +3030,17 @@ one or more filter chips switches to the chip-filtered view, which returns
|
|
|
2981
3030
|
every matching node and asks you to narrow if a single label set exceeds its
|
|
2982
3031
|
own larger limit.
|
|
2983
3032
|
|
|
3033
|
+
## Sales-progression nodes
|
|
3034
|
+
|
|
3035
|
+
For estate-agent accounts, a sale-agreed deal is held in the graph as a `Sale`
|
|
3036
|
+
(the agreed transaction), its `Chain` (the ordered links of connected sales),
|
|
3037
|
+
and a `ChainLink` per property in the chain (carrying the ten milestone dates
|
|
3038
|
+
and the seller, buyer, and solicitor contacts). These are the source of truth
|
|
3039
|
+
the negotiator's chase-progression and progression-inbox workflows read and
|
|
3040
|
+
update — they replace the old free-text progression notes. Like conversations,
|
|
3041
|
+
they are not top-level chips; you reach a chain by searching for its address or
|
|
3042
|
+
a party name and pivoting into its neighbourhood.
|
|
3043
|
+
|
|
2984
3044
|
## Search and pivot
|
|
2985
3045
|
|
|
2986
3046
|
Type a term in the search box to highlight matching nodes on the canvas. Hits get an amber border so you can pick them out of a busy view. Click any highlighted node to open its side panel and pivot into its neighbourhood — both clicks (hit and non-hit) behave identically.
|
|
@@ -22,6 +22,17 @@ one or more filter chips switches to the chip-filtered view, which returns
|
|
|
22
22
|
every matching node and asks you to narrow if a single label set exceeds its
|
|
23
23
|
own larger limit.
|
|
24
24
|
|
|
25
|
+
## Sales-progression nodes
|
|
26
|
+
|
|
27
|
+
For estate-agent accounts, a sale-agreed deal is held in the graph as a `Sale`
|
|
28
|
+
(the agreed transaction), its `Chain` (the ordered links of connected sales),
|
|
29
|
+
and a `ChainLink` per property in the chain (carrying the ten milestone dates
|
|
30
|
+
and the seller, buyer, and solicitor contacts). These are the source of truth
|
|
31
|
+
the negotiator's chase-progression and progression-inbox workflows read and
|
|
32
|
+
update — they replace the old free-text progression notes. Like conversations,
|
|
33
|
+
they are not top-level chips; you reach a chain by searching for its address or
|
|
34
|
+
a party name and pivoting into its neighbourhood.
|
|
35
|
+
|
|
25
36
|
## Search and pivot
|
|
26
37
|
|
|
27
38
|
Type a term in the search box to highlight matching nodes on the canvas. Hits get an amber border so you can pick them out of a busy view. Click any highlighted node to open its side panel and pivot into its neighbourhood — both clicks (hit and non-hit) behave identically.
|
|
@@ -36,6 +36,7 @@ These are enabled during onboarding and can be added or removed at any time. Som
|
|
|
36
36
|
| Plugin | What it does | Enhances |
|
|
37
37
|
|--------|-------------|----------|
|
|
38
38
|
| `business-assistant` | Customer enquiries, scheduling, quoting, invoicing, daily briefings | Personal assistant |
|
|
39
|
+
| `sweep` | Catch-up composition — on "catch me up" / "what did I miss" / "morning sync" / "sweep", reads every connected inbox, calendar, and contact source, plus the site captures published sites write to Cloudflare D1 (enquiry forms, e-signatures, and other form completions), dedupes against the graph, and proposes to-dos, calendar items, contacts, and captured enquiries for approval. Composes `work`, `scheduling`, `contacts`, and `memory`; adds no tools and never sends. | Personal assistant |
|
|
39
40
|
| `sales` | Buying signal detection, closing techniques, objection handling | Personal assistant |
|
|
40
41
|
| `deep-research` | Structured multi-source research — query decomposition, source evaluation, citations | Research assistant |
|
|
41
42
|
| `projects` | Structured project execution — phased sprints, investigations, reviews, retrospectives, plus method references for stakeholder mapping, risk pre-mortems, task prioritization, and meeting-to-tasks | Project manager |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Sweep Guide
|
|
2
|
+
|
|
3
|
+
## What a Sweep Is
|
|
4
|
+
|
|
5
|
+
A sweep catches you up. When you ask {{productName}} to catch you up, it reads every surface you have connected — your inbox, your calendar, your contacts — compares them against what it already holds in memory, and shows you the gaps: action items with no to-do yet, calendar events it has not recorded, and people or facts it does not yet know. Nothing is written until you approve it.
|
|
6
|
+
|
|
7
|
+
A sweep proposes. It never writes on its own, and it never sends a message, an email, or an invite.
|
|
8
|
+
|
|
9
|
+
## Running a Sweep
|
|
10
|
+
|
|
11
|
+
Ask {{productName}} naturally:
|
|
12
|
+
|
|
13
|
+
- "Catch me up"
|
|
14
|
+
- "What did I miss?"
|
|
15
|
+
- "Morning sync"
|
|
16
|
+
- "Sweep"
|
|
17
|
+
|
|
18
|
+
A sweep runs only when you ask. There is no automatic or scheduled sweep.
|
|
19
|
+
|
|
20
|
+
## What a Sweep Reads
|
|
21
|
+
|
|
22
|
+
{{productName}} reads whichever surfaces you have connected:
|
|
23
|
+
|
|
24
|
+
- **Inbox** — recent mail, through whatever mail account is connected, looking for requests, commitments, and deadlines addressed to you.
|
|
25
|
+
- **Calendar** — upcoming events, looking for anything not yet on your {{productName}} calendar.
|
|
26
|
+
- **Contacts** — people and details not yet in your contacts.
|
|
27
|
+
- **Site captures** — enquiries and form completions from your published website, such as contact forms and e-signatures. These do not arrive in your inbox; they land in the site's own database, and {{productName}} reads the ones it has not brought in yet. Bookings made through a booking page are handled automatically and are not part of the sweep.
|
|
28
|
+
|
|
29
|
+
If only one surface is connected, {{productName}} sweeps that one. If several are connected, it sweeps all of them. If a surface cannot be read, {{productName}} skips it, tells you which one and why, and carries on with the rest, so a run never quietly leaves something out. If nothing is connected, {{productName}} says so and stops.
|
|
30
|
+
|
|
31
|
+
## What a Sweep Proposes
|
|
32
|
+
|
|
33
|
+
After reading, {{productName}} shows what is new, grouped by what it would create:
|
|
34
|
+
|
|
35
|
+
- **To-dos** for action items that have no task yet.
|
|
36
|
+
- **Calendar items** for events not yet recorded.
|
|
37
|
+
- **People and facts** for contacts and details it does not yet hold.
|
|
38
|
+
|
|
39
|
+
A site capture becomes one of these too: an enquiry becomes a new contact routed to whoever handles first contact, and a signature or completion becomes a note or a to-do. Each proposal says what it is, where it came from, and what it would create or change. You approve the ones you want. {{productName}} then creates each approved record through the skill that owns it, and confirms once it is saved. Anything you decline is dropped.
|
|
40
|
+
|
|
41
|
+
## Running It Again
|
|
42
|
+
|
|
43
|
+
Run a sweep a second time and it proposes nothing it already recorded on the first run, because those records are now in memory and it recognises them. A repeat sweep is quiet on purpose; that is the sign your graph is already up to date.
|
|
@@ -127,6 +127,40 @@ If the source emits multiple distinct listing events tied to a single underlying
|
|
|
127
127
|
|
|
128
128
|
---
|
|
129
129
|
|
|
130
|
+
## Sales progression (sale-agreed → completion)
|
|
131
|
+
|
|
132
|
+
The ontology above stops at `:Offer` — the pre-sale-agreed funnel (enquiry, viewing, offer, negotiation) is modelled by `:Applicant`/`:Viewing`/`:Offer` and owned by the buyers and sales-cycle skills. **A chain only exists once a sale is agreed**, so the progression ontology begins there. It is the source of truth for the negotiator's `chase-progression` and `progression-inbox` workflows; it retires the old `memory/admin/pipeline/{date}-{slug}.md` markdown pipeline (that free-text store is no longer written).
|
|
133
|
+
|
|
134
|
+
| Entity | Neo4j Label | Schema.org Type | Natural key | Key properties |
|
|
135
|
+
|--------|-------------|-----------------|-------------|----------------|
|
|
136
|
+
| Sale | `Sale` | `schema:SellAction` | `(accountId, sourceSystem, sourceId)` | `chainId`, `isCompleteChain`, `salePrice` (pence), `status` (`sale-agreed`/`exchanged`/`completed`/`fallen-through`), `sstcDate` |
|
|
137
|
+
| Chain | `Chain` | `schema:ItemList` | `(accountId, chainId)` | `anticipatedExchangeDate`, `desiredCompletionDate`, `createdDate`, `owningTeam`, `owningAgent`, `isComplete` |
|
|
138
|
+
| ChainLink | `ChainLink` | `schema:ListItem` | `(accountId, chainId, priority)` | `priority` (int), `linkType` (`loop-property`/`external`), ten milestone dates (below), `address`, `salePrice` (pence), `generalNotes`, `proceedabilityNotes` |
|
|
139
|
+
|
|
140
|
+
**The ten milestone dates** on each `:ChainLink` (ISO-8601 strings, stored verbatim, nullable until known): `mortgageValuationDate`, `surveyDate`, `draftContractIssuedDate`, `searchesRequestedDate`, `searchesReceivedDate`, `mortgageOfferReceivedDate`, `sellerSignedDate`, `buyerSignedDate`, `exchangedDate`, `completedDate`. When a date is set from an email, the tool also stamps `<field>Source` (the email message id) for audit.
|
|
141
|
+
|
|
142
|
+
**Parties are first-class `:Person` nodes** (the `Applicant` pattern), one per role per link, keyed `(accountId, chainId, priority, partyRole)` where `partyRole ∈ {seller, seller-solicitor, buyer, buyer-solicitor, agent}`. Each carries `name` plus contact on `partyEmail`/`partyPhone`. Contact uses these party-scoped property names rather than the canonical `email`/`telephone` because `:Person` enforces `(accountId, email)` and `(accountId, telephone)` uniqueness — a party (a solicitor across several chains, or a buyer who is also a registered applicant) frequently shares an email with another `:Person`, which a synthetic-keyed node storing the canonical `email` would violate. `progression-party-lookup` matches `partyEmail`/`partyPhone`. Contact detail is never a property blob on the link, and re-running the upsert refreshes the party node in place rather than duplicating it.
|
|
143
|
+
|
|
144
|
+
### Relationship patterns (progression)
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
(:Sale)-[:IN_CHAIN]->(:Chain) // mandatory adjacency
|
|
148
|
+
(:Sale)-[:FOR_LISTING]->(:Listing) // best-effort domain parent
|
|
149
|
+
(:Sale)-[:FROM_OFFER]->(:Offer) // best-effort — the accepted offer the sale came from
|
|
150
|
+
(:Chain)-[:OWNED_BY]->(:LocalBusiness {accountId}) // mandatory adjacency (the account's own business)
|
|
151
|
+
(:Chain)-[:HAS_LINK]->(:ChainLink) // each link
|
|
152
|
+
(:ChainLink)-[:IS_PROPERTY]->(:Property) // when linkType = loop-property
|
|
153
|
+
(:ChainLink)-[:HAS_SELLER|:HAS_SELLER_SOLICITOR|:HAS_BUYER|:HAS_BUYER_SOLICITOR|:HAS_AGENT]->(:Person)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
`(:Sale)-[:IN_CHAIN]->(:Chain)` and `(:Chain)-[:OWNED_BY]->(:LocalBusiness)` are the mandatory ≥1-adjacency edges (a `:Sale` with no `IN_CHAIN` is a structural orphan; a `:Chain` with no `HAS_LINK` is an empty chain — both surfaced by the `seed-neo4j.sh` `[progression-reconcile]` signal). `FOR_LISTING`, `FROM_OFFER`, and `IS_PROPERTY` are best-effort: attached when the target node resolves, never blocking the write. The `owningAgent`/`owningTeam` chain properties are the account's own staff, not chain parties.
|
|
157
|
+
|
|
158
|
+
### Natural-key contract
|
|
159
|
+
|
|
160
|
+
The estate-sales `progression-chain-upsert` tool MERGEs each label on its natural key, account-scoped, attaching every parent edge in the same statement. Re-running it over the same chain updates in place — milestone dates and party detail refresh; no duplicate `:Sale`/`:Chain`/`:ChainLink`/party `:Person` is created. `progression-milestone-set` advances one date on one link (`MATCH … SET`). All writes carry `accountId = ACCOUNT_ID`; a cross-account or adjacency-less write is structurally impossible.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
130
164
|
## Filesystem ↔ graph (base template)
|
|
131
165
|
|
|
132
166
|
Unlike a construction job folder (operator-authored source files), the estate-agent projection is over a **published served tree** — hosting output the platform writes, not files the operator edits by hand. Each served listing lives at `<accountDir>/sites/<slug>/`, the on-disk target of `publish-site`, and is served at `https://<publicHost>/sites/<slug>/`. The graph references this tree by **hosted URL**, never by local path: a `:Listing`/`:ImageObject` URL property is the canonical reference, and the served file is the thing it points at. This mapping is the **base template** — the standard a brochure-pipeline publish projects into; it is shipped-generic, not any operator's data.
|
|
@@ -63,7 +63,7 @@ Create events immediately when the user identifies something time-bound — an a
|
|
|
63
63
|
`schedule-event` writes one of two graph nodes, decided from the parameters you pass — never from keywords in the title:
|
|
64
64
|
|
|
65
65
|
- A **`:Meeting`** when the thing is a real calendar appointment: you pass `attendees` with a counterparty (an `email` or a resolved `nodeId`), **or** you pass a bounded slot (both `startDate` and `endDate`) with no `recurrence` and no `action`. A meeting is `(accountId, uid)`-idempotent (the uid is a content hash of account + title + start, so re-booking the same appointment writes no duplicate) and carries `(:Person)-[:ATTENDED]->(:Meeting)` edges for each resolvable counterparty. This is the same node shape that `.ics` import and public-booking reconcile write, so one real meeting never ends up as both a meeting and an event.
|
|
66
|
-
- An **`:Event`** when the thing is a scheduler primitive: a `recurrence` (recurring trigger)
|
|
66
|
+
- An **`:Event`** when the thing is a scheduler primitive: a `recurrence` (recurring trigger), an `action` (tool auto-dispatch), or an `agentDispatch` (agent-turn dispatch) is present, **or** it is a bare one-time reminder (a `startDate` with no end and no counterparty).
|
|
67
67
|
|
|
68
68
|
To book a meeting with someone, resolve the counterparty to a `:Person` first (via `memory-search`) and pass their `nodeId` in `attendees`; pass `email` (with optional `name`) when you only have an address and want a stub created. A name-only attendee is informational and links no person — it does not, by itself, make the write a meeting.
|
|
69
69
|
|
|
@@ -115,6 +115,22 @@ Dispatch results are recorded on the Event node (`lastDispatchResult`, `lastDisp
|
|
|
115
115
|
|
|
116
116
|
Users and plugins both create events with actions via the same `schedule-event` interface — the mechanism is symmetric.
|
|
117
117
|
|
|
118
|
+
## Agent-bearing dispatch
|
|
119
|
+
|
|
120
|
+
An `action` invokes one pre-encoded MCP tool with no reasoning. When a due event needs an agent to decide what to do and say — "when this document is signed, work out what to tell me and message me on WhatsApp" — pass `agentDispatch` instead. When the event fires, the heartbeat hands the prompt to the destination's native channel: the channel spawns or resumes the deterministic admin session for that phone or chat, the agent runs the prompt with full admin tools, and its answer is delivered back over the account's paired socket. No operator session need be open.
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{ "channel": "whatsapp", "destination": "+447700900123", "prompt": "Check whether the tenancy agreement is signed yet and, if it is, message me a one-line confirmation." }
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- `channel` — `whatsapp` or `telegram`.
|
|
127
|
+
- `destination` — the E.164 phone (WhatsApp) or chat id (Telegram) to run the turn for and reply to. It **must already be a registered admin or account-manager** on that channel; a destination that is not is rejected when the event is created.
|
|
128
|
+
- `prompt` — the instruction the agent runs.
|
|
129
|
+
|
|
130
|
+
An event carries **either** an `action` **or** an `agentDispatch`, never both — setting one clears the other. Agent dispatch is stored as `agentChannel`, `agentDestination`, `agentPrompt`. Use `schedule-update` with `agentDispatch` to modify or `agentDispatch: null` to clear. On WhatsApp, a destination bound as an account-manager scopes the spawned session to its sub-account; on Telegram the session runs on the house account.
|
|
131
|
+
|
|
132
|
+
Dispatch results are recorded on the Event node (`lastDispatchResult`, `lastDispatchAt`) exactly as for tool actions. Every heartbeat tick also audits stored agent dispatches and logs `[schedule-audit] op=stale-dispatch` for any whose destination has stopped being an admin or whose bound sub-account is gone, so a binding that rots between scheduling and firing is surfaced before it mis-dispatches.
|
|
133
|
+
|
|
118
134
|
## Reconciling public bookings (D1 → graph)
|
|
119
135
|
|
|
120
136
|
`scheduling/mcp/dist/scripts/reconcile-bookings.js` turns public bookings into calendar meetings. The booking site (deployed by the cloudflare `calendar-site` skill) writes each submission to a Cloudflare D1 `bookings` table at the edge, so capture survives a brief Pi outage. This binary pulls accepted, unswept rows from each account's D1, writes one `:Meeting {source:'booking', uid:'booking-<id>'}` per row (idempotent — a re-run writes no duplicate), links the booker as a `:Person` via `[:ATTENDED]` (respecting the global email-uniqueness skip), notifies the admin (email; WhatsApp only when a thread already exists, never cold), then marks the row swept.
|
|
@@ -80,6 +80,11 @@ eagerTool(server, "schedule-event", "Create a scheduled event or appointment. A
|
|
|
80
80
|
tool: z.string().describe("MCP tool name to call when the event fires (e.g. 'memory-search')"),
|
|
81
81
|
args: z.record(z.unknown()).optional().describe("Arguments to pass to the tool call"),
|
|
82
82
|
}).optional().describe("Automated action: dispatches an MCP tool call when the event fires. The plugin must exist in platform/plugins/. Always records an event, never a meeting."),
|
|
83
|
+
agentDispatch: z.object({
|
|
84
|
+
channel: z.enum(["whatsapp", "telegram"]).describe("Native channel the agent turn is delivered over"),
|
|
85
|
+
destination: z.string().describe("E.164 phone (WhatsApp) or Telegram chat id — must already be a registered admin/account-manager on that channel"),
|
|
86
|
+
prompt: z.string().describe("The instruction the agent runs when the event fires"),
|
|
87
|
+
}).optional().describe("Agent-bearing dispatch: when the event fires, spawns or resumes the admin channel session for `destination` and runs `prompt` with full admin tools, delivering the answer back over the channel. Mutually exclusive with `action`. Always records an event, never a meeting."),
|
|
83
88
|
}, async (params) => {
|
|
84
89
|
if (!accountId)
|
|
85
90
|
return refuseNoAccount("schedule-event");
|
|
@@ -109,6 +114,8 @@ eagerTool(server, "schedule-event", "Create a scheduled event or appointment. A
|
|
|
109
114
|
parts.push(`next run: ${formatCombined(result.nextRun, timezone)}`);
|
|
110
115
|
if (params.action)
|
|
111
116
|
parts.push(`action: ${params.action.plugin}/${params.action.tool}`);
|
|
117
|
+
if (params.agentDispatch)
|
|
118
|
+
parts.push(`agent dispatch: ${params.agentDispatch.channel} → ${params.agentDispatch.destination}`);
|
|
112
119
|
return { content: [{ type: "text", text: parts.join(", ") }] };
|
|
113
120
|
}
|
|
114
121
|
catch (err) {
|
|
@@ -220,6 +227,11 @@ eagerTool(server, "schedule-update", "Update an event's properties or append a n
|
|
|
220
227
|
tool: z.string().describe("MCP tool name to call when the event fires"),
|
|
221
228
|
args: z.record(z.unknown()).optional().describe("Arguments to pass to the tool call"),
|
|
222
229
|
}).nullable().optional().describe("Set/replace the automated action, or pass null to clear it"),
|
|
230
|
+
agentDispatch: z.object({
|
|
231
|
+
channel: z.enum(["whatsapp", "telegram"]).describe("Native channel the agent turn is delivered over"),
|
|
232
|
+
destination: z.string().describe("E.164 phone (WhatsApp) or Telegram chat id — must already be a registered admin/account-manager on that channel"),
|
|
233
|
+
prompt: z.string().describe("The instruction the agent runs when the event fires"),
|
|
234
|
+
}).nullable().optional().describe("Set/replace the agent-bearing dispatch, or pass null to clear it. Mutually exclusive with action."),
|
|
223
235
|
}, async (params) => {
|
|
224
236
|
if (!accountId)
|
|
225
237
|
return refuseNoAccount("schedule-update");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-dispatch.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/agent-dispatch.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from "vitest";
|
|
2
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { normalizeE164, phonesMatch, isValidAgentDestination, boundSubAccountFor, } from "../agent-dispatch.js";
|
|
6
|
+
function makeAccountDir(config) {
|
|
7
|
+
const dir = mkdtempSync(join(tmpdir(), "agent-dispatch-"));
|
|
8
|
+
writeFileSync(join(dir, "account.json"), JSON.stringify(config), "utf-8");
|
|
9
|
+
return dir;
|
|
10
|
+
}
|
|
11
|
+
describe("normalizeE164 / phonesMatch (replica of platform normalize.ts)", () => {
|
|
12
|
+
it("normalizes spacing, '+' and '00' prefixes to digits", () => {
|
|
13
|
+
expect(normalizeE164("+44 7504 472444")).toBe("447504472444");
|
|
14
|
+
expect(normalizeE164("00447504472444")).toBe("447504472444");
|
|
15
|
+
expect(normalizeE164("whatsapp:+447504472444")).toBe("447504472444");
|
|
16
|
+
});
|
|
17
|
+
it("returns '' for non-numeric input", () => {
|
|
18
|
+
expect(normalizeE164("not-a-phone")).toBe("");
|
|
19
|
+
});
|
|
20
|
+
it("matches a spaced '+44 7…' against a bare '447…'", () => {
|
|
21
|
+
expect(phonesMatch("+44 7504472444", "447504472444")).toBe(true);
|
|
22
|
+
expect(phonesMatch("+447504472444", "+447999999999")).toBe(false);
|
|
23
|
+
expect(phonesMatch("", "")).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe("isValidAgentDestination — whatsapp", () => {
|
|
27
|
+
let dirs = [];
|
|
28
|
+
afterEach(() => {
|
|
29
|
+
for (const d of dirs)
|
|
30
|
+
rmSync(d, { recursive: true, force: true });
|
|
31
|
+
dirs = [];
|
|
32
|
+
});
|
|
33
|
+
it("accepts a destination present in adminPhones (phonesMatch)", () => {
|
|
34
|
+
const dir = makeAccountDir({ whatsapp: { adminPhones: ["+447504472444"] } });
|
|
35
|
+
dirs.push(dir);
|
|
36
|
+
// spaced form must still match the stored bare form
|
|
37
|
+
expect(isValidAgentDestination(dir, "whatsapp", "+44 7504 472444")).toEqual({ valid: true });
|
|
38
|
+
});
|
|
39
|
+
it("accepts a destination that is an accountManagers key", () => {
|
|
40
|
+
const dir = makeAccountDir({
|
|
41
|
+
whatsapp: { adminPhones: [], accountManagers: { "447504472444": "sub-abc" } },
|
|
42
|
+
});
|
|
43
|
+
dirs.push(dir);
|
|
44
|
+
expect(isValidAgentDestination(dir, "whatsapp", "+447504472444")).toEqual({ valid: true });
|
|
45
|
+
});
|
|
46
|
+
it("rejects a destination absent from both lists", () => {
|
|
47
|
+
const dir = makeAccountDir({ whatsapp: { adminPhones: ["+447504472444"] } });
|
|
48
|
+
dirs.push(dir);
|
|
49
|
+
expect(isValidAgentDestination(dir, "whatsapp", "+447999999999")).toEqual({
|
|
50
|
+
valid: false,
|
|
51
|
+
reason: "destination-not-admin",
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
it("rejects when there is no whatsapp config at all", () => {
|
|
55
|
+
const dir = makeAccountDir({});
|
|
56
|
+
dirs.push(dir);
|
|
57
|
+
expect(isValidAgentDestination(dir, "whatsapp", "+447504472444").valid).toBe(false);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe("isValidAgentDestination — telegram", () => {
|
|
61
|
+
let dirs = [];
|
|
62
|
+
afterEach(() => {
|
|
63
|
+
for (const d of dirs)
|
|
64
|
+
rmSync(d, { recursive: true, force: true });
|
|
65
|
+
dirs = [];
|
|
66
|
+
});
|
|
67
|
+
it("accepts a chat id in telegram.adminUsers", () => {
|
|
68
|
+
const dir = makeAccountDir({ telegram: { adminUsers: [12345678] } });
|
|
69
|
+
dirs.push(dir);
|
|
70
|
+
expect(isValidAgentDestination(dir, "telegram", "12345678")).toEqual({ valid: true });
|
|
71
|
+
});
|
|
72
|
+
it("rejects a chat id not in adminUsers", () => {
|
|
73
|
+
const dir = makeAccountDir({ telegram: { adminUsers: [12345678] } });
|
|
74
|
+
dirs.push(dir);
|
|
75
|
+
expect(isValidAgentDestination(dir, "telegram", "99999999")).toEqual({
|
|
76
|
+
valid: false,
|
|
77
|
+
reason: "destination-not-admin",
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe("boundSubAccountFor — whatsapp accountManagers only", () => {
|
|
82
|
+
let dirs = [];
|
|
83
|
+
afterEach(() => {
|
|
84
|
+
for (const d of dirs)
|
|
85
|
+
rmSync(d, { recursive: true, force: true });
|
|
86
|
+
dirs = [];
|
|
87
|
+
});
|
|
88
|
+
it("returns the bound sub-account for a manager destination", () => {
|
|
89
|
+
const dir = makeAccountDir({
|
|
90
|
+
whatsapp: { accountManagers: { "447504472444": "sub-abc" } },
|
|
91
|
+
});
|
|
92
|
+
dirs.push(dir);
|
|
93
|
+
expect(boundSubAccountFor(dir, "+44 7504 472444")).toBe("sub-abc");
|
|
94
|
+
});
|
|
95
|
+
it("returns null for a plain admin phone (no binding)", () => {
|
|
96
|
+
const dir = makeAccountDir({ whatsapp: { adminPhones: ["+447504472444"], accountManagers: {} } });
|
|
97
|
+
dirs.push(dir);
|
|
98
|
+
expect(boundSubAccountFor(dir, "+447504472444")).toBeNull();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=agent-dispatch.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-dispatch.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/agent-dispatch.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAc,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,SAAS,cAAc,CAAC,MAA+B;IACrD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3D,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC;AACb,CAAC;AAED,QAAQ,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC9E,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9D,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7D,MAAM,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,oDAAoD;QACpD,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,GAAG,GAAG,cAAc,CAAC;YACzB,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE;SAC9E,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;YACxE,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,uBAAuB;SAChC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,uBAAuB;SAChC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,GAAG,GAAG,cAAc,CAAC;YACzB,QAAQ,EAAE,EAAE,eAAe,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE;SAC7D,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|