@rubytech/create-maxy-code 0.1.548 → 0.1.550
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/package.json +2 -2
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +8 -6
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +9 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +7 -5
- package/payload/platform/plugins/scheduling/PLUGIN.md +6 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-embedding.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-embedding.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-embedding.test.js +142 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-embedding.test.js.map +1 -0
- 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 +41 -5
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/platform/scripts/check-routine-roster-doc.mjs +127 -0
- package/payload/server/server.js +8 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rubytech/create-maxy-code",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.550",
|
|
4
4
|
"description": "Install Maxy — AI for Productive People",
|
|
5
5
|
"bin": {
|
|
6
6
|
"create-maxy-code": "./dist/index.js"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"build": "tsc",
|
|
14
14
|
"bundle": "node scripts/bundle.js",
|
|
15
15
|
"test": "npm run build && node --test 'dist/__tests__/*.test.js'",
|
|
16
|
-
"prepublishOnly": "bash ../../platform/scripts/verify-skill-tool-surface.sh && node ../../platform/scripts/check-plugin-tools-mcp-consistency.mjs && node ../../platform/scripts/check-risk-class.mjs && node ../../platform/scripts/check-specialist-tool-surface.mjs && node ../../platform/scripts/check-agent-contract.mjs && node ../../platform/scripts/check-routing-prose-bash.mjs && node ../../platform/scripts/check-no-task-id-leaks.mjs && node ../../platform/scripts/check-no-esm-require.mjs && node ../../platform/scripts/check-no-raw-mcp-registrations.mjs && node ../../platform/scripts/check-skill-load-coverage.mjs && node ../../platform/scripts/check-architecture-skill-no-drift.mjs && node ../../platform/ui/scripts/check-brand-fonts.mjs && node ../../platform/ui/scripts/check-route-wiring.mjs && node ../../platform/ui/scripts/check-edge-admin-routes.mjs && npm run build && node --test 'dist/__tests__/*.test.js' && chmod +x dist/index.js && npm run bundle && bash ../../platform/scripts/smoke-boot-services.sh && node ../../platform/ui/scripts/check-bundle-node-imports.mjs --dir=./payload/server/public/assets"
|
|
16
|
+
"prepublishOnly": "bash ../../platform/scripts/verify-skill-tool-surface.sh && node ../../platform/scripts/check-plugin-tools-mcp-consistency.mjs && node ../../platform/scripts/check-risk-class.mjs && node ../../platform/scripts/check-specialist-tool-surface.mjs && node ../../platform/scripts/check-agent-contract.mjs && node ../../platform/scripts/check-routing-prose-bash.mjs && node ../../platform/scripts/check-no-task-id-leaks.mjs && node ../../platform/scripts/check-no-esm-require.mjs && node ../../platform/scripts/check-no-raw-mcp-registrations.mjs && node ../../platform/scripts/check-skill-load-coverage.mjs && node ../../platform/scripts/check-routine-roster-doc.mjs && node ../../platform/scripts/check-architecture-skill-no-drift.mjs && node ../../platform/ui/scripts/check-brand-fonts.mjs && node ../../platform/ui/scripts/check-route-wiring.mjs && node ../../platform/ui/scripts/check-edge-admin-routes.mjs && npm run build && node --test 'dist/__tests__/*.test.js' && chmod +x dist/index.js && npm run bundle && bash ../../platform/scripts/smoke-boot-services.sh && node ../../platform/ui/scripts/check-bundle-node-imports.mjs --dir=./payload/server/public/assets"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"dist",
|
|
@@ -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:67fd64d3983bd1c788d6945201c05ee4afeb63fd02fb033123b63e364e915430
|
|
5
5
|
brand: maxy-code
|
|
6
6
|
product-name: Maxy
|
|
7
7
|
---
|
|
@@ -3664,13 +3664,15 @@ one, over the same automation set the routes list. The roster seed's own
|
|
|
3664
3664
|
`descNull` counter is its narrow twin, scoped to seeded rows and so blind to
|
|
3665
3665
|
exactly the operator-created ones most likely to carry no caption.
|
|
3666
3666
|
|
|
3667
|
-
**The shipped roster.** Every account starts with
|
|
3667
|
+
**The shipped roster.** Every account starts with thirteen routines —
|
|
3668
3668
|
`start-of-day`, `inbound-check`, `end-of-day`, `appointment-reminder`,
|
|
3669
3669
|
`commitment-chase`, `calendar-reconcile`, `contact-reconcile`, `crm-reconcile`,
|
|
3670
|
-
`finance-reconcile`, `channel-link-check`, `
|
|
3671
|
-
`
|
|
3672
|
-
|
|
3673
|
-
|
|
3670
|
+
`finance-reconcile`, `weekly-digest`, `channel-link-check`, `graph-health`,
|
|
3671
|
+
`filesystem-health`, in `/routines` display order. `ROUTINE_ROSTER_KEYS.length`
|
|
3672
|
+
is authoritative for the count and this list follows it. They are seeded
|
|
3673
|
+
`eventStatus:'suspended'` with `nextRun` NULL and no channel or destination, so
|
|
3674
|
+
`/routines` is a catalogue to enable rather than a blank page. The list query
|
|
3675
|
+
applies no status filter and `AUTOMATION_WHERE`
|
|
3674
3676
|
admits them on `recurrence IS NOT NULL`, so they render with no change here.
|
|
3675
3677
|
They cannot fire: every dispatch query in `check-due-events.ts` selects
|
|
3676
3678
|
`eventStatus = 'scheduled'`, and the recurring one additionally requires
|
|
@@ -9,6 +9,15 @@ Invoked by the admin agent directly.
|
|
|
9
9
|
|
|
10
10
|
This is the platform's release timeline, newest first. Each entry shows the date it shipped and the version it shipped in, so you can tell the operator how current their install is. To compare, read the installed version from `capabilities-here` and match it against the versions below. Keep answers high level and in plain English; this is a summary, not a full commit log.
|
|
11
11
|
|
|
12
|
+
## 2026-08-02 (0.1.550)
|
|
13
|
+
|
|
14
|
+
- A Telegram conversation now starts with its channel attached, so the assistant can reply on it rather than the session coming up unable to answer.
|
|
15
|
+
|
|
16
|
+
## 2026-08-02 (0.1.549)
|
|
17
|
+
|
|
18
|
+
- Telegram now answers on the address it tells you to use, fixing messages that never arrived after yesterday's per-account change.
|
|
19
|
+
- The list of built-in routines in the docs is now checked against the routines that actually ship, so it cannot quietly fall out of date.
|
|
20
|
+
|
|
12
21
|
## 2026-08-02 (0.1.548)
|
|
13
22
|
|
|
14
23
|
- Telegram now works per account: each bot has its own address and secret, a scheduled message goes to the right account, and a check reports any bot that is set up but never delivers.
|
|
@@ -279,13 +279,15 @@ one, over the same automation set the routes list. The roster seed's own
|
|
|
279
279
|
`descNull` counter is its narrow twin, scoped to seeded rows and so blind to
|
|
280
280
|
exactly the operator-created ones most likely to carry no caption.
|
|
281
281
|
|
|
282
|
-
**The shipped roster.** Every account starts with
|
|
282
|
+
**The shipped roster.** Every account starts with thirteen routines —
|
|
283
283
|
`start-of-day`, `inbound-check`, `end-of-day`, `appointment-reminder`,
|
|
284
284
|
`commitment-chase`, `calendar-reconcile`, `contact-reconcile`, `crm-reconcile`,
|
|
285
|
-
`finance-reconcile`, `channel-link-check`, `
|
|
286
|
-
`
|
|
287
|
-
|
|
288
|
-
|
|
285
|
+
`finance-reconcile`, `weekly-digest`, `channel-link-check`, `graph-health`,
|
|
286
|
+
`filesystem-health`, in `/routines` display order. `ROUTINE_ROSTER_KEYS.length`
|
|
287
|
+
is authoritative for the count and this list follows it. They are seeded
|
|
288
|
+
`eventStatus:'suspended'` with `nextRun` NULL and no channel or destination, so
|
|
289
|
+
`/routines` is a catalogue to enable rather than a blank page. The list query
|
|
290
|
+
applies no status filter and `AUTOMATION_WHERE`
|
|
289
291
|
admits them on `recurrence IS NOT NULL`, so they render with no change here.
|
|
290
292
|
They cannot fire: every dispatch query in `check-due-events.ts` selects
|
|
291
293
|
`eventStatus = 'scheduled'`, and the recurring one additionally requires
|
|
@@ -210,6 +210,12 @@ Use standard 5-field cron syntax: `minute hour day-of-month month day-of-week`.
|
|
|
210
210
|
|
|
211
211
|
When `agentPrompt` is not among the fields, the line ends `(the instruction sent to the agent was not changed)`. That clause is the answer to "did my prompt rewrite land" — a confirmation without it means the dispatch prompt was written. Editing a meeting opens `Meeting updated:` and names the caller's own field names, not the stored `title`/`startsAt`/`endsAt`.
|
|
212
212
|
|
|
213
|
+
## What the search vector holds
|
|
214
|
+
|
|
215
|
+
A routine is findable by graph search through a vector built from its name and its description. `schedule-update` rebuilds that vector whenever a call changes either field, and it builds the text from the ROW, not from the call: an update that supplies only a description takes the name from the stored row, and one that supplies only a name takes the description. Building it from the call alone re-embedded a caption edit as `Event: — <description>`, leaving the routine findable by its caption but not its title. The admin Routines page rebuilds the same text the same way.
|
|
216
|
+
|
|
217
|
+
One line reports every rebuild, including a healthy one, so its absence cannot be read as a code path that stopped running: `[schedule-update] op=embed-recomputed eventId=<id> titled=<yes|no> nameSource=<param|stored|absent> chars=<n> wrote=<yes|no>`. `titled` is the assertion, since the vector itself cannot be read back to tell whether the title went into it. `nameSource` makes a `titled=no` actionable by separating a routine that genuinely has no name (`absent`) from a fallback that failed. `chars` is the length of the embedded text, the one figure that shows the input shrinking across successive edits. `wrote` is what keeps `titled` honest: the embedder returns nothing on any failure and the vector clause is then skipped, so `titled=yes wrote=no` means the text was correct but the row kept the vector it already had. The line is emitted after the write lands, so an id that turns out to be a meeting never produces one.
|
|
218
|
+
|
|
213
219
|
## Skip next
|
|
214
220
|
|
|
215
221
|
For recurring events, `schedule-update` with `skipNext: true` advances `nextRun` by one cycle without triggering. Use when the user says "skip tomorrow's briefing" or similar.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-update-embedding.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/schedule-update-embedding.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// Task 2366 — the search vector is built from the ROW, not from the request. A
|
|
2
|
+
// description-only update used to embed `Event: — <description>`, dropping the routine's
|
|
3
|
+
// title out of its own vector, and a name-only update dropped the caption the same way.
|
|
4
|
+
//
|
|
5
|
+
// TWIN: platform/ui/server/routes/admin/__tests__/routines.test.ts:694-705 asserts the same
|
|
6
|
+
// literal for the same (name, description) pair on the admin route. The two writers sit
|
|
7
|
+
// either side of a boundary with no shared package, so agreement is a matching literal in
|
|
8
|
+
// each suite. A change to one is a change to the pair.
|
|
9
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
10
|
+
const embedMock = vi.fn(async (_text) => [0.1, 0.2]);
|
|
11
|
+
vi.mock("../../lib/embedding.js", () => ({
|
|
12
|
+
computeEmbedding: (text) => embedMock(text),
|
|
13
|
+
}));
|
|
14
|
+
const runMock = vi.fn();
|
|
15
|
+
vi.mock("../../lib/neo4j.js", () => ({
|
|
16
|
+
getSession: () => ({ run: runMock, close: vi.fn(async () => { }) }),
|
|
17
|
+
}));
|
|
18
|
+
const { scheduleUpdate } = await import("../schedule-update.js");
|
|
19
|
+
const base = { accountId: "acct-2366", eventId: "evt-2366" };
|
|
20
|
+
/** The pre-read returns one stored row; the SET statement matches an :Event. */
|
|
21
|
+
function primeStoredRow(row) {
|
|
22
|
+
runMock.mockReset();
|
|
23
|
+
runMock.mockImplementation(async (cypher) => {
|
|
24
|
+
if (String(cypher).includes("AS timezone")) {
|
|
25
|
+
const full = {
|
|
26
|
+
eventStatus: "scheduled",
|
|
27
|
+
recurrence: null,
|
|
28
|
+
timezone: null,
|
|
29
|
+
startDate: null,
|
|
30
|
+
...row,
|
|
31
|
+
};
|
|
32
|
+
return { records: [{ get: (k) => full[k] ?? null }] };
|
|
33
|
+
}
|
|
34
|
+
return { records: [{ get: () => "evt-2366" }] };
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** The row is not an :Event; the :Meeting statement resolves instead. */
|
|
38
|
+
function primeMeeting() {
|
|
39
|
+
runMock.mockReset();
|
|
40
|
+
runMock.mockImplementation(async (cypher) => {
|
|
41
|
+
if (String(cypher).includes("MATCH (m:Meeting")) {
|
|
42
|
+
return { records: [{ get: () => "evt-2366" }] };
|
|
43
|
+
}
|
|
44
|
+
return { records: [] };
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** The text handed to the embedder on the single recompute this call made. */
|
|
48
|
+
function embeddedText() {
|
|
49
|
+
expect(embedMock).toHaveBeenCalledTimes(1);
|
|
50
|
+
return embedMock.mock.calls[0][0];
|
|
51
|
+
}
|
|
52
|
+
/** Every op=embed-recomputed line this call emitted. */
|
|
53
|
+
function embedLines() {
|
|
54
|
+
const spy = console.error;
|
|
55
|
+
return spy.mock.calls.map((c) => String(c[0])).filter((l) => l.includes("op=embed-recomputed"));
|
|
56
|
+
}
|
|
57
|
+
/** The single line, asserted to be single. */
|
|
58
|
+
function embedLine() {
|
|
59
|
+
const lines = embedLines();
|
|
60
|
+
expect(lines).toHaveLength(1);
|
|
61
|
+
return lines[0];
|
|
62
|
+
}
|
|
63
|
+
beforeEach(() => {
|
|
64
|
+
runMock.mockReset();
|
|
65
|
+
embedMock.mockClear();
|
|
66
|
+
vi.spyOn(console, "error").mockImplementation(() => { });
|
|
67
|
+
});
|
|
68
|
+
afterEach(() => {
|
|
69
|
+
vi.restoreAllMocks();
|
|
70
|
+
});
|
|
71
|
+
describe("schedule-update embedding text (Task 2366)", () => {
|
|
72
|
+
it("takes the name from the stored row on a description-only update", async () => {
|
|
73
|
+
primeStoredRow({ name: "Morning briefing", description: "Old caption." });
|
|
74
|
+
await scheduleUpdate({ ...base, description: "New caption." });
|
|
75
|
+
expect(embeddedText()).toBe("Event: Morning briefing — New caption.");
|
|
76
|
+
});
|
|
77
|
+
it("takes the description from the stored row on a name-only update", async () => {
|
|
78
|
+
primeStoredRow({ name: "Old name", description: "Stored caption." });
|
|
79
|
+
await scheduleUpdate({ ...base, name: "Evening briefing" });
|
|
80
|
+
expect(embeddedText()).toBe("Event: Evening briefing — Stored caption.");
|
|
81
|
+
});
|
|
82
|
+
it("uses neither stored value when the call carries both", async () => {
|
|
83
|
+
primeStoredRow({ name: "Old name", description: "Old caption." });
|
|
84
|
+
await scheduleUpdate({ ...base, name: "New name", description: "New caption." });
|
|
85
|
+
expect(embeddedText()).toBe("Event: New name — New caption.");
|
|
86
|
+
});
|
|
87
|
+
it("embeds the bare prefix when the stored name is null", async () => {
|
|
88
|
+
primeStoredRow({ name: null, description: "Old caption." });
|
|
89
|
+
await scheduleUpdate({ ...base, description: "New caption." });
|
|
90
|
+
expect(embeddedText()).toBe("Event: — New caption.");
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
describe("schedule-update op=embed-recomputed (Task 2366)", () => {
|
|
94
|
+
it("reports a stored name as titled=yes nameSource=stored with the input length", async () => {
|
|
95
|
+
primeStoredRow({ name: "Morning briefing", description: "Old caption." });
|
|
96
|
+
await scheduleUpdate({ ...base, description: "New caption." });
|
|
97
|
+
const line = embedLine();
|
|
98
|
+
expect(line).toContain("titled=yes");
|
|
99
|
+
expect(line).toContain("nameSource=stored");
|
|
100
|
+
expect(line).toContain(`chars=${"Event: Morning briefing — New caption.".length}`);
|
|
101
|
+
expect(line).toContain("wrote=yes");
|
|
102
|
+
// The 8-character slice, not the full id. `evt-2366` is already 8 characters.
|
|
103
|
+
expect(line).toContain("eventId=evt-2366");
|
|
104
|
+
});
|
|
105
|
+
it("reports wrote=no when the embedder returned nothing, and writes no clause", async () => {
|
|
106
|
+
primeStoredRow({ name: "Morning briefing", description: "Old caption." });
|
|
107
|
+
embedMock.mockResolvedValueOnce([]);
|
|
108
|
+
await scheduleUpdate({ ...base, description: "New caption." });
|
|
109
|
+
const line = embedLine();
|
|
110
|
+
// The text was built and the title was in it, but no vector replaced the stored one.
|
|
111
|
+
// Without this field a titled=yes line reads as "the vector holds the title" on a run
|
|
112
|
+
// where the row kept whatever it had before.
|
|
113
|
+
expect(line).toContain("titled=yes");
|
|
114
|
+
expect(line).toContain("wrote=no");
|
|
115
|
+
const setCall = runMock.mock.calls.find(([c]) => String(c).includes("SET "));
|
|
116
|
+
expect(String(setCall?.[0])).not.toContain("e.embedding");
|
|
117
|
+
});
|
|
118
|
+
it("reports nameSource=param when the call carries the name", async () => {
|
|
119
|
+
primeStoredRow({ name: "Old name", description: "Stored caption." });
|
|
120
|
+
await scheduleUpdate({ ...base, name: "Evening briefing" });
|
|
121
|
+
expect(embedLine()).toContain("nameSource=param");
|
|
122
|
+
});
|
|
123
|
+
it("reports titled=no nameSource=absent when no name exists anywhere", async () => {
|
|
124
|
+
primeStoredRow({ name: null, description: "Old caption." });
|
|
125
|
+
await scheduleUpdate({ ...base, description: "New caption." });
|
|
126
|
+
const line = embedLine();
|
|
127
|
+
expect(line).toContain("titled=no");
|
|
128
|
+
expect(line).toContain("nameSource=absent");
|
|
129
|
+
});
|
|
130
|
+
it("calls no embedder and emits no line when neither field is supplied", async () => {
|
|
131
|
+
primeStoredRow({ name: "Morning briefing", description: "Old caption." });
|
|
132
|
+
await scheduleUpdate({ ...base, location: "Room 2" });
|
|
133
|
+
expect(embedMock).not.toHaveBeenCalled();
|
|
134
|
+
expect(embedLines()).toHaveLength(0);
|
|
135
|
+
});
|
|
136
|
+
it("emits no line when the id is a meeting, because no vector was written", async () => {
|
|
137
|
+
primeMeeting();
|
|
138
|
+
await scheduleUpdate({ ...base, name: "Renamed meeting" });
|
|
139
|
+
expect(embedLines()).toHaveLength(0);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
//# sourceMappingURL=schedule-update-embedding.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-update-embedding.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/schedule-update-embedding.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-update.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMpF,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGtE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,sEAAuE,CAAC;AAEnG,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,UAAU,CACxB,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACrF,GAAG,EAAE,IAAI,GACR,UAAU,CAmCZ;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"schedule-update.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMpF,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGtE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,sEAAuE,CAAC;AAEnG,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,UAAU,CACxB,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACrF,GAAG,EAAE,IAAI,GACR,UAAU,CAmCZ;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAkehG"}
|
|
@@ -124,17 +124,24 @@ export async function scheduleUpdate(params) {
|
|
|
124
124
|
// two cases pay for the read; every other update keeps its single round trip.
|
|
125
125
|
const ids = { eventId: eventId.slice(0, 8), acct: accountId.slice(0, 8) };
|
|
126
126
|
let stored = null;
|
|
127
|
+
// Task 2366 — the embedding text is built from the ROW, so a call supplying exactly one
|
|
128
|
+
// of name/description needs the other read. Supplying both needs no read at all, and
|
|
129
|
+
// supplying neither triggers no recompute. This rides the existing pre-read rather than
|
|
130
|
+
// adding a second round trip, the same way the status and cron branches share it.
|
|
131
|
+
const embedNeedsStored = (updates.name !== undefined) !== (updates.description !== undefined);
|
|
127
132
|
// Task 2213 added `startDate` to this gate. A plain date change previously
|
|
128
133
|
// skipped the pre-read entirely, so `stored.timezone` was null and a zoneless
|
|
129
134
|
// value had no zone to be read in — the same query already returns it.
|
|
130
135
|
if (updates.eventStatus !== undefined ||
|
|
131
136
|
updates.recurrence !== undefined ||
|
|
132
|
-
updates.startDate !== undefined
|
|
137
|
+
updates.startDate !== undefined ||
|
|
138
|
+
embedNeedsStored) {
|
|
133
139
|
const readSession = getSession();
|
|
134
140
|
try {
|
|
135
141
|
const read = await readSession.run(`MATCH (e:Event {eventId: $eventId, accountId: $accountId})
|
|
136
142
|
RETURN e.eventStatus AS eventStatus, e.recurrence AS recurrence,
|
|
137
|
-
e.timezone AS timezone, e.startDate AS startDate
|
|
143
|
+
e.timezone AS timezone, e.startDate AS startDate,
|
|
144
|
+
e.name AS name, e.description AS description`, { eventId, accountId });
|
|
138
145
|
if (read.records.length > 0) {
|
|
139
146
|
const r = read.records[0];
|
|
140
147
|
stored = {
|
|
@@ -142,6 +149,8 @@ export async function scheduleUpdate(params) {
|
|
|
142
149
|
recurrence: (r.get("recurrence") ?? null),
|
|
143
150
|
timezone: (r.get("timezone") ?? null),
|
|
144
151
|
startDate: (r.get("startDate") ?? null),
|
|
152
|
+
name: (r.get("name") ?? null),
|
|
153
|
+
description: (r.get("description") ?? null),
|
|
145
154
|
};
|
|
146
155
|
}
|
|
147
156
|
}
|
|
@@ -353,14 +362,36 @@ export async function scheduleUpdate(params) {
|
|
|
353
362
|
setClauses.push(appendNotesCapped("e", "noteEntry"));
|
|
354
363
|
queryParams.noteEntry = noteLines.map((line) => `\n[${queryParams.now}] ${line}`).join("");
|
|
355
364
|
}
|
|
356
|
-
// Recompute embedding if name or description changed
|
|
365
|
+
// Recompute embedding if name or description changed. Task 2366 — each side comes from
|
|
366
|
+
// the CALL when the call carries it, otherwise from the ROW. Building it from the call
|
|
367
|
+
// alone re-embedded a description-only edit as `Event: — <description>`, with no title
|
|
368
|
+
// in the routine's own vector, and a name-only edit with no caption in it. Twin of
|
|
369
|
+
// routines.ts:638-648, which reads the stored name for the same reason.
|
|
370
|
+
let embedLog = null;
|
|
357
371
|
if (updates.name !== undefined || updates.description !== undefined) {
|
|
358
|
-
const
|
|
359
|
-
const
|
|
372
|
+
const name = updates.name !== undefined ? updates.name : stored?.name ?? null;
|
|
373
|
+
const description = updates.description !== undefined ? updates.description : stored?.description ?? null;
|
|
374
|
+
// filter(Boolean) stays: on a row with neither, `Event: ` is the honest best text.
|
|
375
|
+
const parts = [`Event: ${name ?? ""}`, description ?? ""].filter(Boolean);
|
|
376
|
+
const text = parts.join(" — ");
|
|
377
|
+
const embedding = await computeEmbedding(text);
|
|
360
378
|
if (embedding.length > 0) {
|
|
361
379
|
setClauses.push("e.embedding = $embedding");
|
|
362
380
|
queryParams.embedding = embedding;
|
|
363
381
|
}
|
|
382
|
+
// Task 2366 — the fault this replaces emitted nothing at all: the embedder was called,
|
|
383
|
+
// returned a vector, the write succeeded, and no line said whether the title was in it.
|
|
384
|
+
// The vector cannot be read back to tell. `titled` is the assertion; `nameSource`
|
|
385
|
+
// separates a row with no name from a fallback that broke; `chars` is the input length,
|
|
386
|
+
// the only figure that shows the text shrinking across edits. `wrote` is what keeps
|
|
387
|
+
// `titled` honest: computeEmbedding returns [] on any embedder failure and the clause
|
|
388
|
+
// above is then skipped, so without it a titled=yes line would read as "the title is in
|
|
389
|
+
// the vector" on a run where the row kept whatever vector it already had.
|
|
390
|
+
const nameSource = updates.name !== undefined ? "param" : stored?.name ? "stored" : "absent";
|
|
391
|
+
embedLog =
|
|
392
|
+
`[schedule-update] op=embed-recomputed eventId=${ids.eventId} ` +
|
|
393
|
+
`titled=${name ? "yes" : "no"} nameSource=${nameSource} chars=${text.length} ` +
|
|
394
|
+
`wrote=${embedding.length > 0 ? "yes" : "no"}`;
|
|
364
395
|
}
|
|
365
396
|
const neo4jSession = getSession();
|
|
366
397
|
try {
|
|
@@ -384,6 +415,11 @@ export async function scheduleUpdate(params) {
|
|
|
384
415
|
`tz=${effectiveTimezone ?? "null"} nextRun=${statusPlan.nextRun ?? "unchanged"} aheadMin=${aheadMin}`);
|
|
385
416
|
}
|
|
386
417
|
}
|
|
418
|
+
// Task 2366 — held until the write lands, for the reason the status line above states:
|
|
419
|
+
// an id that turns out to be a :Meeting reaches the recompute and gets no :Event
|
|
420
|
+
// vector, so emitting at the recompute would report a rebuild that never happened.
|
|
421
|
+
if (result.records.length > 0 && embedLog)
|
|
422
|
+
console.error(embedLog);
|
|
387
423
|
if (result.records.length === 0) {
|
|
388
424
|
// Task 2100 — the id may be a meeting uid. This branch edits
|
|
389
425
|
// title/startsAt/endsAt/location, and the uid is the (accountId, uid)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-update.js","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schedule-update.js","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// check-routine-roster-doc.mjs — pre-commit gate (Task 2367).
|
|
3
|
+
//
|
|
4
|
+
// `platform/plugins/docs/references/admin-ui.md` carries one paragraph naming
|
|
5
|
+
// the routines every account is seeded with. That paragraph is mirrored into
|
|
6
|
+
// the generated platform-architecture SKILL.md and ships to every account, so
|
|
7
|
+
// a routine added to ROUTINE_ROSTER and not to the paragraph is not an internal
|
|
8
|
+
// docs nit: an agent asked what routines ship answers the stale number and
|
|
9
|
+
// cannot name the ones it omits. That is exactly what happened between Task
|
|
10
|
+
// 2214 (which took the roster from eleven to thirteen) and Task 2367.
|
|
11
|
+
//
|
|
12
|
+
// Three assertions, all against the same paragraph:
|
|
13
|
+
//
|
|
14
|
+
// 1. Every roster key appears in it as a backticked token. Checked by exact
|
|
15
|
+
// substring per key, so it holds whatever a future key looks like. This is
|
|
16
|
+
// the drift that actually happened.
|
|
17
|
+
// 2. Every backticked key-SHAPED token in it is a roster key. A routine
|
|
18
|
+
// deleted from roster.ts leaves a key in the prose that names nothing, and
|
|
19
|
+
// assertion 1 cannot see that. Key-shaped means lowercase words joined by
|
|
20
|
+
// at least one hyphen, which is what every roster key has looked like
|
|
21
|
+
// since Task 2130. The cost of this rule is that an unrelated hyphenated
|
|
22
|
+
// term added to this paragraph fails the gate; the failure names the rule,
|
|
23
|
+
// so the fix is to move the term or correct the key. A hyphenless key
|
|
24
|
+
// would fall outside this scan but is still fully covered by assertion 1.
|
|
25
|
+
// 3. The number-word for the roster length appears immediately before
|
|
26
|
+
// "routines". The count and the list state one fact twice, and gating
|
|
27
|
+
// only the list leaves half the defect free to recur. This is not an
|
|
28
|
+
// English parser: it maps the length through a fixed table and asserts a
|
|
29
|
+
// literal. A length with no word in the table is a hard failure naming
|
|
30
|
+
// the missing word, so the gate is fail-closed on its own blind spot.
|
|
31
|
+
//
|
|
32
|
+
// The roster is read as SOURCE TEXT, so this runs in a fresh worktree with no
|
|
33
|
+
// install and no build. Precedent: readRiskClasses() in
|
|
34
|
+
// platform/scripts/lib/canonical-tool-names.mjs parses tool-surface.ts the
|
|
35
|
+
// same way.
|
|
36
|
+
//
|
|
37
|
+
// Ordering note: this gate runs BEFORE check-architecture-skill-no-drift.mjs in
|
|
38
|
+
// .husky/pre-commit. A wrong edit to the paragraph fails both, and the drift
|
|
39
|
+
// gate's message ("SKILL.md was out of sync") names the symptom rather than the
|
|
40
|
+
// cause. Under `set -e` the first failure is the one the author reads.
|
|
41
|
+
|
|
42
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
43
|
+
import { resolve, dirname, relative } from 'node:path';
|
|
44
|
+
import { fileURLToPath } from 'node:url';
|
|
45
|
+
|
|
46
|
+
const SELF = fileURLToPath(import.meta.url);
|
|
47
|
+
const MAXY_CODE_ROOT = resolve(dirname(SELF), '..', '..');
|
|
48
|
+
|
|
49
|
+
const ROSTER_TS = resolve(MAXY_CODE_ROOT, 'platform/lib/routine-templates/src/roster.ts');
|
|
50
|
+
const DOC = resolve(MAXY_CODE_ROOT, 'platform/plugins/docs/references/admin-ui.md');
|
|
51
|
+
|
|
52
|
+
const PARAGRAPH_MARKER = '**The shipped roster.**';
|
|
53
|
+
|
|
54
|
+
// Indexed by count. Extend when the roster outgrows it; a length past the end
|
|
55
|
+
// is a hard failure below rather than a silent pass.
|
|
56
|
+
const NUMBER_WORDS = [
|
|
57
|
+
'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
|
|
58
|
+
'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen',
|
|
59
|
+
'sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty',
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
// Assertion 2's scan only. Anchored inside backticks and requiring a hyphen, so
|
|
63
|
+
// `nextRun` (uppercase), `/routines` (slash) and `check-due-events.ts` (dot)
|
|
64
|
+
// are all excluded.
|
|
65
|
+
const KEY_SHAPE = /`([a-z0-9]+(?:-[a-z0-9]+)+)`/g;
|
|
66
|
+
|
|
67
|
+
const rel = (p) => relative(MAXY_CODE_ROOT, p);
|
|
68
|
+
|
|
69
|
+
for (const p of [ROSTER_TS, DOC]) {
|
|
70
|
+
if (!existsSync(p)) {
|
|
71
|
+
console.error(`[roster-doc] FAIL missing file: ${rel(p)}`);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// The roster's key list, in roster order. The interface declaration
|
|
77
|
+
// (`readonly key: string;`) carries no quotes and does not match.
|
|
78
|
+
const rosterKeys = [...readFileSync(ROSTER_TS, 'utf8').matchAll(/^\s*key:\s*"([^"]+)",/gm)]
|
|
79
|
+
.map((m) => m[1]);
|
|
80
|
+
|
|
81
|
+
if (rosterKeys.length === 0) {
|
|
82
|
+
console.error(`[roster-doc] FAIL parsed zero keys from ${rel(ROSTER_TS)} — the entry shape changed`);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const doc = readFileSync(DOC, 'utf8');
|
|
87
|
+
const start = doc.indexOf(PARAGRAPH_MARKER);
|
|
88
|
+
if (start === -1) {
|
|
89
|
+
console.error(`[roster-doc] FAIL ${rel(DOC)} has no paragraph starting "${PARAGRAPH_MARKER}"`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
const end = doc.indexOf('\n\n', start);
|
|
93
|
+
const paragraph = end === -1 ? doc.slice(start) : doc.slice(start, end);
|
|
94
|
+
|
|
95
|
+
// 1 — every roster key present, by exact backticked substring.
|
|
96
|
+
const present = rosterKeys.filter((k) => paragraph.includes(`\`${k}\``));
|
|
97
|
+
const missing = rosterKeys.filter((k) => !paragraph.includes(`\`${k}\``));
|
|
98
|
+
|
|
99
|
+
// 2 — every key-shaped token present is a roster key.
|
|
100
|
+
const rosterKeySet = new Set(rosterKeys);
|
|
101
|
+
const shaped = new Set([...paragraph.matchAll(KEY_SHAPE)].map((m) => m[1]));
|
|
102
|
+
const stale = [...shaped].filter((k) => !rosterKeySet.has(k));
|
|
103
|
+
|
|
104
|
+
const problems = [];
|
|
105
|
+
if (missing.length) problems.push(` MISSING from the paragraph: ${missing.join(', ')}`);
|
|
106
|
+
if (stale.length) problems.push(` STALE in the paragraph (no such roster key): ${stale.join(', ')}`);
|
|
107
|
+
|
|
108
|
+
// 3 — the count word.
|
|
109
|
+
const expectedWord = NUMBER_WORDS[rosterKeys.length];
|
|
110
|
+
if (expectedWord === undefined) {
|
|
111
|
+
problems.push(
|
|
112
|
+
` no number word for ${rosterKeys.length} — add it to NUMBER_WORDS in ${rel(SELF)}`,
|
|
113
|
+
);
|
|
114
|
+
} else if (!paragraph.includes(`${expectedWord} routines`)) {
|
|
115
|
+
const found = NUMBER_WORDS.find((w) => paragraph.includes(`${w} routines`));
|
|
116
|
+
problems.push(
|
|
117
|
+
` count word: expected "${expectedWord} routines", found ${found ? `"${found} routines"` : 'no number word'}`,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (problems.length) {
|
|
122
|
+
console.error(`[roster-doc] FAIL prose=${present.length} roster=${rosterKeys.length}`);
|
|
123
|
+
for (const l of problems) console.error(l);
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
console.log(`[roster-doc] ok prose=${present.length} roster=${rosterKeys.length}`);
|
package/payload/server/server.js
CHANGED
|
@@ -13057,6 +13057,12 @@ app10.post("/", async (c) => {
|
|
|
13057
13057
|
});
|
|
13058
13058
|
var telegram_default = app10;
|
|
13059
13059
|
|
|
13060
|
+
// server/telegram-mount.ts
|
|
13061
|
+
function mountTelegramRoutes(app77, telegramRoutes) {
|
|
13062
|
+
app77.route("/api/telegram", telegramRoutes);
|
|
13063
|
+
app77.route("/api/telegram/", telegramRoutes);
|
|
13064
|
+
}
|
|
13065
|
+
|
|
13060
13066
|
// server/routes/quickbooks.ts
|
|
13061
13067
|
import { join as join30 } from "path";
|
|
13062
13068
|
import { existsSync as existsSync22, readFileSync as readFileSync24, writeFileSync as writeFileSync9, mkdirSync as mkdirSync4, rmSync as rmSync3, renameSync as renameSync5 } from "fs";
|
|
@@ -22442,6 +22448,7 @@ async function managerRcSpawn(opts) {
|
|
|
22442
22448
|
adminUserId: opts.adminUserId,
|
|
22443
22449
|
waChannel: opts.waChannel,
|
|
22444
22450
|
webchatChannel: opts.webchatChannel,
|
|
22451
|
+
telegramChannel: opts.telegramChannel,
|
|
22445
22452
|
role: opts.role,
|
|
22446
22453
|
channel: opts.channel,
|
|
22447
22454
|
senderId: opts.senderId,
|
|
@@ -32861,7 +32868,7 @@ app76.route("/api/webchat", createWebchatRoutes({
|
|
|
32861
32868
|
resolvePermissionVerdict: (key, requestId, behavior) => webchatGateway.resolvePermissionVerdict(key, requestId, behavior)
|
|
32862
32869
|
}));
|
|
32863
32870
|
app76.route("/api/webchat/greeting", webchat_greeting_default);
|
|
32864
|
-
app76
|
|
32871
|
+
mountTelegramRoutes(app76, telegram_default);
|
|
32865
32872
|
app76.route("/api/quickbooks", quickbooks_default);
|
|
32866
32873
|
app76.route("/api/onboarding", onboarding_default);
|
|
32867
32874
|
app76.route("/api/admin", admin_default);
|