@rubytech/create-maxy 1.0.762 → 1.0.764

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/neo4j/schema.cypher +50 -0
  3. package/payload/platform/package-lock.json +56 -1
  4. package/payload/platform/package.json +1 -0
  5. package/payload/platform/plugins/docs/references/outlook-guide.md +69 -0
  6. package/payload/platform/plugins/outlook/PLUGIN.md +48 -0
  7. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.d.ts +2 -0
  8. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.d.ts.map +1 -0
  9. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js +94 -0
  10. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js.map +1 -0
  11. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.d.ts +2 -0
  12. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.d.ts.map +1 -0
  13. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.js +31 -0
  14. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.js.map +1 -0
  15. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.d.ts +2 -0
  16. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.d.ts.map +1 -0
  17. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.js +213 -0
  18. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.js.map +1 -0
  19. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.d.ts +2 -0
  20. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.d.ts.map +1 -0
  21. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.js +130 -0
  22. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.js.map +1 -0
  23. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts +65 -0
  24. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts.map +1 -0
  25. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js +261 -0
  26. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js.map +1 -0
  27. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.d.ts +61 -0
  28. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.d.ts.map +1 -0
  29. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.js +170 -0
  30. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.js.map +1 -0
  31. package/payload/platform/plugins/outlook/mcp/dist/index.d.ts +18 -0
  32. package/payload/platform/plugins/outlook/mcp/dist/index.d.ts.map +1 -0
  33. package/payload/platform/plugins/outlook/mcp/dist/index.js +152 -0
  34. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -0
  35. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts +60 -0
  36. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -0
  37. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +189 -0
  38. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -0
  39. package/payload/platform/plugins/outlook/mcp/dist/lib/log.d.ts +23 -0
  40. package/payload/platform/plugins/outlook/mcp/dist/lib/log.d.ts.map +1 -0
  41. package/payload/platform/plugins/outlook/mcp/dist/lib/log.js +53 -0
  42. package/payload/platform/plugins/outlook/mcp/dist/lib/log.js.map +1 -0
  43. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.d.ts +26 -0
  44. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.d.ts.map +1 -0
  45. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.js +50 -0
  46. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.js.map +1 -0
  47. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.d.ts +12 -0
  48. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.d.ts.map +1 -0
  49. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js +32 -0
  50. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js.map +1 -0
  51. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.d.ts +59 -0
  52. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.d.ts.map +1 -0
  53. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.js +54 -0
  54. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.js.map +1 -0
  55. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.d.ts +14 -0
  56. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.d.ts.map +1 -0
  57. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.js +45 -0
  58. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.js.map +1 -0
  59. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.d.ts +15 -0
  60. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.d.ts.map +1 -0
  61. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.js +48 -0
  62. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.js.map +1 -0
  63. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts +8 -0
  64. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -0
  65. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +49 -0
  66. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -0
  67. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.d.ts +19 -0
  68. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.d.ts.map +1 -0
  69. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.js +58 -0
  70. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.js.map +1 -0
  71. package/payload/platform/plugins/outlook/mcp/package.json +20 -0
  72. package/payload/platform/plugins/outlook/mcp/scripts/verify-doc-impl.sh +109 -0
  73. package/payload/platform/plugins/outlook/references/auth.md +118 -0
  74. package/payload/platform/plugins/outlook/references/graph-surfaces.md +114 -0
  75. package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +65 -0
  76. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  77. package/payload/server/chunk-EIQT6QDH.js +9562 -0
  78. package/payload/server/chunk-S3M2NZMA.js +3136 -0
  79. package/payload/server/chunk-SGBNY4NP.js +9540 -0
  80. package/payload/server/client-pool-5V5GX3UT.js +28 -0
  81. package/payload/server/maxy-edge.js +2 -2
  82. package/payload/server/public/assets/{admin-7vGwd7wu.js → admin-V6NDkEoR.js} +2 -2
  83. package/payload/server/public/index.html +1 -1
  84. package/payload/server/server.js +104 -6
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/admin-7vGwd7wu.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-V6NDkEoR.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-B4QFltsm.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-qlgyTAkD.js">
@@ -47,7 +47,7 @@ import {
47
47
  vncLog,
48
48
  waitForExit,
49
49
  writeChromiumWrapper
50
- } from "./chunk-QXAUMZXQ.js";
50
+ } from "./chunk-EIQT6QDH.js";
51
51
  import {
52
52
  ACCOUNTS_DIR,
53
53
  GREETING_DIRECTIVE,
@@ -107,7 +107,7 @@ import {
107
107
  validateSession,
108
108
  verifyAndGetConversationUpdatedAt,
109
109
  verifyConversationOwnership
110
- } from "./chunk-43JK6WNK.js";
110
+ } from "./chunk-S3M2NZMA.js";
111
111
 
112
112
  // ../lib/graph-trash/dist/index.js
113
113
  var require_dist = __commonJS({
@@ -8132,7 +8132,7 @@ var app11 = new Hono();
8132
8132
  app11.post("/cancel", requireAdminSession, async (c) => {
8133
8133
  const session_key = c.var.sessionKey;
8134
8134
  try {
8135
- const { interruptClient: interruptClient2 } = await import("./client-pool-SGPHSYLK.js");
8135
+ const { interruptClient: interruptClient2 } = await import("./client-pool-5V5GX3UT.js");
8136
8136
  await interruptClient2(session_key);
8137
8137
  return c.json({ ok: true });
8138
8138
  } catch (err) {
@@ -8843,6 +8843,76 @@ var agents_default = app16;
8843
8843
  import crypto2 from "crypto";
8844
8844
  import { resolve as resolvePath } from "path";
8845
8845
  import { appendFileSync as appendFileSync5 } from "fs";
8846
+ var PERSISTENT_COMPONENT_NAMES = /* @__PURE__ */ new Set([
8847
+ "action-list",
8848
+ "document-editor",
8849
+ "rich-content-editor",
8850
+ "grid-editor"
8851
+ ]);
8852
+ function reconstructAssistantEvents(content, components, conversationId, messageId, streamLogPath) {
8853
+ if (components.length === 0) {
8854
+ return {
8855
+ events: content.length > 0 ? [{ type: "text", content }] : [],
8856
+ valid: 0,
8857
+ invalid: 0,
8858
+ submittedEventIndices: []
8859
+ };
8860
+ }
8861
+ const sorted = [...components].sort((a, b) => {
8862
+ if (a.textOffset !== b.textOffset) return a.textOffset - b.textOffset;
8863
+ return a.ordinal - b.ordinal;
8864
+ });
8865
+ const events = [];
8866
+ const submittedEventIndices = [];
8867
+ let cursor = 0;
8868
+ let valid = 0;
8869
+ let invalid = 0;
8870
+ for (const c of sorted) {
8871
+ const offset = Math.max(0, Math.min(c.textOffset, content.length));
8872
+ if (offset > cursor) {
8873
+ events.push({ type: "text", content: content.slice(cursor, offset) });
8874
+ cursor = offset;
8875
+ }
8876
+ let parsedData;
8877
+ let invalidReason = null;
8878
+ if (!c.name || c.name.trim() === "") {
8879
+ invalidReason = "missing-name";
8880
+ } else {
8881
+ try {
8882
+ parsedData = JSON.parse(c.data ?? "null");
8883
+ } catch {
8884
+ invalidReason = "json-parse";
8885
+ }
8886
+ if (invalidReason === null) {
8887
+ if (parsedData === null || typeof parsedData !== "object" || Array.isArray(parsedData)) {
8888
+ invalidReason = "not-object";
8889
+ }
8890
+ }
8891
+ }
8892
+ if (invalidReason !== null) {
8893
+ invalid += 1;
8894
+ const notice = `[component-rehydrate-invalid] ${c.name || "<unnamed>"} could not be restored (reason=${invalidReason})`;
8895
+ events.push({ type: "text", content: notice, _invalid: true });
8896
+ const line = `[${(/* @__PURE__ */ new Date()).toISOString()}] [component-rehydrate-invalid] conversationId=${conversationId.slice(0, 8)} messageId=${messageId.slice(0, 8)} name=${c.name || "<unnamed>"} reason=${invalidReason}
8897
+ `;
8898
+ try {
8899
+ appendFileSync5(streamLogPath, line);
8900
+ } catch {
8901
+ }
8902
+ continue;
8903
+ }
8904
+ valid += 1;
8905
+ const eventIndex = events.length;
8906
+ events.push({ type: "component", name: c.name, data: parsedData });
8907
+ if (c.submitted === true && !PERSISTENT_COMPONENT_NAMES.has(c.name)) {
8908
+ submittedEventIndices.push(eventIndex);
8909
+ }
8910
+ }
8911
+ if (cursor < content.length) {
8912
+ events.push({ type: "text", content: content.slice(cursor) });
8913
+ }
8914
+ return { events, valid, invalid, submittedEventIndices };
8915
+ }
8846
8916
  var LABEL_MAX_LENGTH = 200;
8847
8917
  function formatAge(updatedAtStr) {
8848
8918
  try {
@@ -8961,14 +9031,42 @@ app17.post("/:id/resume", requireAdminSession, async (c) => {
8961
9031
  }
8962
9032
  const streamLogPath = resolvePath(ACCOUNTS_DIR, accountId, "logs", `claude-agent-stream-${conversationId}.log`);
8963
9033
  const tag = persistedAgentSessionId ? `agentSessionId=${persistedAgentSessionId.slice(0, 8)}\u2026` : "agentSessionId=missing";
9034
+ let totalValid = 0;
9035
+ let totalInvalid = 0;
9036
+ let totalComponents = 0;
9037
+ const rehydrated = messages.map((m) => {
9038
+ const components = m.components ?? [];
9039
+ if (m.role !== "assistant") {
9040
+ return { messageId: m.messageId, role: m.role, content: m.content, createdAt: m.createdAt };
9041
+ }
9042
+ const { events, valid, invalid, submittedEventIndices } = reconstructAssistantEvents(m.content, components, conversationId, m.messageId, streamLogPath);
9043
+ totalValid += valid;
9044
+ totalInvalid += invalid;
9045
+ totalComponents += components.length;
9046
+ return {
9047
+ messageId: m.messageId,
9048
+ role: m.role,
9049
+ events,
9050
+ createdAt: m.createdAt,
9051
+ // Submitted-event indices for client `submittedComponents` seed —
9052
+ // empty array when no PERSISTENT_COMPONENT was approved live, omitted
9053
+ // from the wire payload to keep the response slim.
9054
+ ...submittedEventIndices.length > 0 ? { submittedEventIndices } : {}
9055
+ };
9056
+ });
9057
+ const textRuns = rehydrated.reduce((n, m) => n + (m.events?.filter((e) => e.type === "text").length ?? 0), 0);
8964
9058
  try {
8965
- appendFileSync5(streamLogPath, `[${(/* @__PURE__ */ new Date()).toISOString()}] [admin-resume] sessionKey=${sessionKey.slice(0, 8)} conversationId=${conversationId.slice(0, 8)} ${tag} loadedMessages=${messages.length}
9059
+ appendFileSync5(streamLogPath, `[${(/* @__PURE__ */ new Date()).toISOString()}] [admin-resume] sessionKey=${sessionKey.slice(0, 8)} conversationId=${conversationId.slice(0, 8)} ${tag} loadedMessages=${messages.length} componentCount=${totalComponents}
9060
+ `);
9061
+ if (totalComponents > 0) {
9062
+ appendFileSync5(streamLogPath, `[${(/* @__PURE__ */ new Date()).toISOString()}] [component-rehydrate] conversationId=${conversationId.slice(0, 8)} count=${totalComponents} valid=${totalValid} invalid=${totalInvalid} textRuns=${textRuns}
8966
9063
  `);
9064
+ }
8967
9065
  } catch {
8968
9066
  }
8969
9067
  const age = formatAge(updatedAt);
8970
- console.log(`[admin-resume] ${(/* @__PURE__ */ new Date()).toISOString()} conversationId=${conversationId.slice(0, 8)}\u2026 age=${age} loaded=${messages.length} messages ${tag} sessionKey=${sessionKey.slice(0, 8)}\u2026`);
8971
- return c.json({ conversationId, messages });
9068
+ console.log(`[admin-resume] ${(/* @__PURE__ */ new Date()).toISOString()} conversationId=${conversationId.slice(0, 8)}\u2026 age=${age} loaded=${messages.length} messages ${tag} components=${totalComponents} sessionKey=${sessionKey.slice(0, 8)}\u2026`);
9069
+ return c.json({ conversationId, messages: rehydrated });
8972
9070
  });
8973
9071
  app17.post("/:id/label", requireAdminSession, async (c) => {
8974
9072
  const conversationId = c.req.param("id");