@rubytech/create-maxy-code 0.1.57 → 0.1.59

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 (77) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +30 -19
  3. package/payload/platform/plugins/admin/hooks/turn-completed-graph-write.sh +35 -90
  4. package/payload/platform/plugins/docs/references/admin-session.md +17 -16
  5. package/payload/platform/plugins/docs/references/platform.md +3 -3
  6. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  7. package/payload/platform/plugins/preval/.claude-plugin/plugin.json +8 -0
  8. package/payload/platform/plugins/preval/PLUGIN.md +39 -0
  9. package/payload/platform/plugins/preval/skills/property-preval/SKILL.md +78 -0
  10. package/payload/platform/plugins/preval/skills/property-preval/references/render.py +265 -0
  11. package/payload/platform/plugins/preval/skills/property-preval/references/template-inputs.schema.json +143 -0
  12. package/payload/platform/plugins/preval/skills/property-preval/references/template.html +253 -0
  13. package/payload/platform/plugins/property-data/.claude-plugin/plugin.json +1 -1
  14. package/payload/platform/plugins/property-data/PLUGIN.md +46 -1
  15. package/payload/platform/plugins/property-data/mcp/dist/index.js +81 -1
  16. package/payload/platform/plugins/property-data/mcp/dist/index.js.map +1 -1
  17. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts +10 -0
  18. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +1 -1
  19. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js +13 -0
  20. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js.map +1 -1
  21. package/payload/platform/plugins/property-data/mcp/src/__tests__/endpoints.test.ts +252 -0
  22. package/payload/platform/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +16 -2
  23. package/payload/platform/plugins/property-data/mcp/src/index.ts +155 -0
  24. package/payload/platform/plugins/property-data/mcp/src/tools/endpoints.ts +20 -0
  25. package/payload/platform/plugins/property-data/skills/property-data/SKILL.md +19 -0
  26. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  27. package/payload/platform/services/claude-session-manager/dist/http-server.js +25 -260
  28. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  29. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +3 -7
  30. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
  31. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +6 -32
  32. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
  33. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +6 -24
  34. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  35. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +18 -91
  36. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  37. package/payload/platform/services/claude-session-manager/dist/reaper.d.ts.map +1 -1
  38. package/payload/platform/services/claude-session-manager/dist/reaper.js +0 -11
  39. package/payload/platform/services/claude-session-manager/dist/reaper.js.map +1 -1
  40. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +0 -21
  41. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -1
  42. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -1
  43. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  44. package/payload/platform/templates/agents/admin/SOUL.md +1 -1
  45. package/payload/premium-plugins/real-agent/BUNDLE.md +5 -3
  46. package/payload/premium-plugins/real-agent/agents/negotiator.md +1 -1
  47. package/payload/premium-plugins/real-agent/agents/valuer.md +1 -1
  48. package/payload/premium-plugins/real-agent/plugins/.claude-plugin/marketplace.json +5 -0
  49. package/payload/premium-plugins/real-agent/plugins/preval/.claude-plugin/plugin.json +8 -0
  50. package/payload/premium-plugins/real-agent/plugins/preval/PLUGIN.md +39 -0
  51. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/SKILL.md +78 -0
  52. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/render.py +265 -0
  53. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template-inputs.schema.json +143 -0
  54. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template.html +253 -0
  55. package/payload/premium-plugins/real-agent/plugins/property-data/.claude-plugin/plugin.json +1 -1
  56. package/payload/premium-plugins/real-agent/plugins/property-data/PLUGIN.md +46 -1
  57. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.js +81 -1
  58. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.js.map +1 -1
  59. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.d.ts +10 -0
  60. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +1 -1
  61. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.js +13 -0
  62. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.js.map +1 -1
  63. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/endpoints.test.ts +252 -0
  64. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +16 -2
  65. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/index.ts +155 -0
  66. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/endpoints.ts +20 -0
  67. package/payload/premium-plugins/real-agent/plugins/property-data/skills/property-data/SKILL.md +19 -0
  68. package/payload/server/public/assets/{admin-2ZJmzJ_g.js → admin-nqCBFiSl.js} +1 -1
  69. package/payload/server/public/assets/{data-DlmoKxmN.js → data-BGUAGVkV.js} +1 -1
  70. package/payload/server/public/assets/{graph-BVvcFSEQ.js → graph-MvYxZOBF.js} +1 -1
  71. package/payload/server/public/assets/{graph-labels-cCvgu38Y.js → graph-labels-D865qb3K.js} +1 -1
  72. package/payload/server/public/assets/{page-BnAxPkmg.js → page--hOVRrgN.js} +1 -1
  73. package/payload/server/public/assets/{page-BnaN3u86.js → page-C2b1nlOc.js} +1 -1
  74. package/payload/server/public/data.html +3 -3
  75. package/payload/server/public/graph.html +3 -3
  76. package/payload/server/public/index.html +4 -4
  77. package/payload/server/server.js +19 -83
@@ -5,11 +5,11 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Graph — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/graph-BVvcFSEQ.js"></script>
8
+ <script type="module" crossorigin src="/assets/graph-MvYxZOBF.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/brand-BWCtpG7_.js">
11
- <link rel="modulepreload" crossorigin href="/assets/graph-labels-cCvgu38Y.js">
12
- <link rel="modulepreload" crossorigin href="/assets/page-BnaN3u86.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/graph-labels-D865qb3K.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/page-C2b1nlOc.js">
13
13
  <link rel="stylesheet" crossorigin href="/assets/brand-BDASZqMG.css">
14
14
  </head>
15
15
  <body>
@@ -5,13 +5,13 @@
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-2ZJmzJ_g.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-nqCBFiSl.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/brand-BWCtpG7_.js">
11
- <link rel="modulepreload" crossorigin href="/assets/graph-labels-cCvgu38Y.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/graph-labels-D865qb3K.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/device-url-actions-CPoz5fqz.js">
13
- <link rel="modulepreload" crossorigin href="/assets/page-BnAxPkmg.js">
14
- <link rel="modulepreload" crossorigin href="/assets/page-BnaN3u86.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/page--hOVRrgN.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/page-C2b1nlOc.js">
15
15
  <link rel="stylesheet" crossorigin href="/assets/brand-BDASZqMG.css">
16
16
  <link rel="stylesheet" crossorigin href="/assets/admin-CWMpccrR.css">
17
17
  <link rel="stylesheet" href="/brand-defaults.css">
@@ -8064,12 +8064,12 @@ async function performSpawnWithInitialMessage(args) {
8064
8064
  permissionMode: args.permissionMode,
8065
8065
  hidden: args.hidden,
8066
8066
  specialist: args.specialist,
8067
+ model: args.model,
8067
8068
  aboutOwner,
8068
8069
  dormantPlugins,
8069
8070
  activePlugins,
8070
8071
  specialistDomains,
8071
- tunnelUrl,
8072
- originatingSessionId: args.originatingSessionId
8072
+ tunnelUrl
8073
8073
  });
8074
8074
  console.log(`${TAG18} forward-spawn-start managerBase=${managerBase2()} bytes=${upstreamPayload.length} hidden=${args.hidden} specialist=${args.specialist ?? "none"}`);
8075
8075
  const forwardStart = Date.now();
@@ -8103,18 +8103,15 @@ async function performSpawnWithInitialMessage(args) {
8103
8103
  }
8104
8104
  return new Response(upstream.body, { status: upstream.status, headers: upstream.headers });
8105
8105
  }
8106
- var requireAdminSessionUnlessLoopbackSpawn = async (c, next) => {
8107
- if (c.req.method === "POST" && c.req.path === "/api/admin/claude-sessions") {
8108
- const remoteAddr = c.env?.incoming?.socket?.remoteAddress ?? "";
8109
- const isLoopback = remoteAddr === "127.0.0.1" || remoteAddr === "::1" || remoteAddr === "::ffff:127.0.0.1";
8110
- if (isLoopback) {
8111
- console.log(`${TAG18} loopback-spawn-bypass remoteAddr=${remoteAddr}`);
8112
- return next();
8113
- }
8106
+ var requireAdminSessionOrLoopback = async (c, next) => {
8107
+ const remoteAddr = c.env?.incoming?.socket?.remoteAddress ?? "";
8108
+ const isLoopback = remoteAddr === "127.0.0.1" || remoteAddr === "::1" || remoteAddr === "::ffff:127.0.0.1";
8109
+ if (isLoopback && c.req.method === "POST" && c.req.path === "/api/admin/claude-sessions") {
8110
+ return next();
8114
8111
  }
8115
8112
  return requireAdminSession(c, next);
8116
8113
  };
8117
- app14.use("*", requireAdminSessionUnlessLoopbackSpawn);
8114
+ app14.use("*", requireAdminSessionOrLoopback);
8118
8115
  app14.post("/", async (c) => {
8119
8116
  const routeStart = Date.now();
8120
8117
  const cacheKey = c.get("cacheKey") ?? "";
@@ -8125,8 +8122,6 @@ app14.post("/", async (c) => {
8125
8122
  }
8126
8123
  let senderId;
8127
8124
  let userId;
8128
- let specialist;
8129
- let originatingSessionId;
8130
8125
  let authSurface;
8131
8126
  if (cacheKey) {
8132
8127
  authSurface = "cookie";
@@ -8136,42 +8131,31 @@ app14.post("/", async (c) => {
8136
8131
  return c.json({ error: "admin-account-not-resolved" }, 500);
8137
8132
  }
8138
8133
  userId = getUserIdForSession(cacheKey) ?? void 0;
8139
- specialist = void 0;
8140
- originatingSessionId = void 0;
8141
8134
  } else {
8142
8135
  authSurface = "loopback";
8143
- if (typeof body.originatingSessionId !== "string" || !UUID_PATTERN.test(body.originatingSessionId)) {
8144
- console.log(`[turn-recorder] spawn-failed sessionId=unknown reason=missing-originating-session-id`);
8145
- return c.json({ error: "originating-session-id-required" }, 400);
8136
+ if (typeof body.adminSessionId !== "string" || !UUID_PATTERN.test(body.adminSessionId)) {
8137
+ return c.json({ error: "admin-session-id-required" }, 400);
8146
8138
  }
8147
- originatingSessionId = body.originatingSessionId;
8139
+ const lookupSessionId = body.adminSessionId;
8148
8140
  const operatorMeta = await fetch(
8149
- `${managerBase2()}/${encodeURIComponent(originatingSessionId)}/meta`
8141
+ `${managerBase2()}/${encodeURIComponent(lookupSessionId)}/meta`
8150
8142
  ).then((r) => r.ok ? r.json() : null).catch((err) => {
8151
8143
  console.error(`${TAG18} fetch-failed op=operator-meta-lookup message=${err instanceof Error ? err.message : String(err)}`);
8152
8144
  return null;
8153
8145
  });
8154
8146
  const operatorSenderId = operatorMeta && typeof operatorMeta.senderId === "string" && operatorMeta.senderId.length > 0 ? operatorMeta.senderId : null;
8155
8147
  if (!operatorSenderId) {
8156
- console.log(
8157
- `[turn-recorder] spawn-failed sessionId=${originatingSessionId} reason=originating-session-not-found`
8158
- );
8159
- return c.json({ error: "originating-session-not-found" }, 404);
8148
+ return c.json({ error: "admin-session-not-found" }, 404);
8160
8149
  }
8161
8150
  senderId = operatorSenderId;
8162
8151
  userId = void 0;
8163
- specialist = typeof body.specialist === "string" && /^[A-Za-z0-9_-]{1,64}$/.test(body.specialist) ? body.specialist : "database-operator";
8164
8152
  }
8165
8153
  const channel = typeof body.channel === "string" ? body.channel : "browser";
8166
8154
  const initialMessage = typeof body.initialMessage === "string" && body.initialMessage.trim() ? body.initialMessage : null;
8167
- const initialMessageBytes = initialMessage ? Buffer.byteLength(initialMessage, "utf8") : 0;
8168
8155
  const permissionMode = typeof body.permissionMode === "string" ? body.permissionMode : void 0;
8169
- if (authSurface === "cookie") {
8170
- console.log(`${TAG18} spawn-request-in surface=cookie cacheKey-prefix=${cacheKey.slice(0, 8)} accountId=${senderId.slice(0, 8)} userId=${userId ? userId.slice(0, 8) : "absent"} channel=${channel} permissionMode=${permissionMode ?? "default"} initialMessage=${initialMessage ? "yes" : "no"}`);
8171
- } else {
8172
- console.log(`[turn-recorder] spawn-request sessionId=${originatingSessionId} specialist=${specialist ?? "none"} initialMessageBytes=${initialMessageBytes}`);
8173
- }
8174
- const t0 = Date.now();
8156
+ const specialist = typeof body.specialist === "string" && /^[A-Za-z0-9_-]{1,64}$/.test(body.specialist) ? body.specialist : void 0;
8157
+ const model = typeof body.model === "string" && /^[A-Za-z0-9._-]{1,64}$/.test(body.model) ? body.model : void 0;
8158
+ console.log(`${TAG18} spawn-request-in surface=${authSurface} accountId=${senderId.slice(0, 8)} userId=${userId ? userId.slice(0, 8) : "absent"} channel=${channel} permissionMode=${permissionMode ?? "default"} specialist=${specialist ?? "none"} model=${model ?? "default"} initialMessage=${initialMessage ? "yes" : "no"}`);
8175
8159
  const response = await performSpawnWithInitialMessage({
8176
8160
  senderId,
8177
8161
  userId,
@@ -8180,41 +8164,10 @@ app14.post("/", async (c) => {
8180
8164
  permissionMode,
8181
8165
  hidden: false,
8182
8166
  specialist,
8183
- initialMessage,
8184
- originatingSessionId
8167
+ model,
8168
+ initialMessage
8185
8169
  });
8186
- if (authSurface === "loopback" && originatingSessionId) {
8187
- const respText = await response.text().catch(() => "");
8188
- const respStatus = response.status;
8189
- const replay = new Response(respText, { status: respStatus, headers: response.headers });
8190
- let parsed = null;
8191
- try {
8192
- parsed = JSON.parse(respText);
8193
- } catch {
8194
- parsed = null;
8195
- }
8196
- if (respStatus >= 200 && respStatus < 300 && parsed && typeof parsed.sessionId === "string") {
8197
- const recorderSessionId = parsed.sessionId;
8198
- console.log(
8199
- `[turn-recorder] spawn-success sessionId=${originatingSessionId} recorderSessionId=${recorderSessionId} pid=${parsed.pid ?? 0} latency-ms=${Date.now() - t0}`
8200
- );
8201
- if (initialMessage) {
8202
- console.log(
8203
- `[turn-recorder] input-delivered sessionId=${originatingSessionId} recorderSessionId=${recorderSessionId} bytes=${initialMessageBytes} multiline=${initialMessage.includes("\n")}`
8204
- );
8205
- }
8206
- } else {
8207
- const reasonRaw = parsed && typeof parsed.error === "string" ? parsed.error : "unknown";
8208
- if (reasonRaw !== "tool-surface-missing" && reasonRaw !== "missing-originating-session-id") {
8209
- const detail = parsed && typeof parsed.detail === "string" ? parsed.detail.slice(0, 200) : "";
8210
- console.log(
8211
- `[turn-recorder] spawn-failed sessionId=${originatingSessionId} reason=manager-spawn http=${respStatus} err=${JSON.stringify(detail || reasonRaw)}`
8212
- );
8213
- }
8214
- }
8215
- return replay;
8216
- }
8217
- console.log(`${TAG18} route-done surface=cookie status=${response.status} route-ms=${Date.now() - routeStart}`);
8170
+ console.log(`${TAG18} route-done surface=${authSurface} status=${response.status} route-ms=${Date.now() - routeStart}`);
8218
8171
  return response;
8219
8172
  });
8220
8173
  app14.get("/events", async (c) => {
@@ -8341,23 +8294,6 @@ app14.get("/:sessionId/meta", async (c) => {
8341
8294
  if (!upstream) return c.json({ error: "manager-unreachable" }, 503);
8342
8295
  return new Response(upstream.body, { status: upstream.status, headers: upstream.headers });
8343
8296
  });
8344
- app14.patch("/:sessionId", async (c) => {
8345
- const sessionId = c.req.param("sessionId");
8346
- const body = await c.req.text();
8347
- const upstream = await fetch(
8348
- `${managerBase2()}/${encodeURIComponent(sessionId)}`,
8349
- {
8350
- method: "PATCH",
8351
- headers: { "content-type": "application/json" },
8352
- body
8353
- }
8354
- ).catch((err) => {
8355
- console.error(`${TAG18} fetch-failed op=patch message=${err instanceof Error ? err.message : String(err)}`);
8356
- return null;
8357
- });
8358
- if (!upstream) return c.json({ error: "manager-unreachable" }, 503);
8359
- return new Response(upstream.body, { status: upstream.status, headers: upstream.headers });
8360
- });
8361
8297
  app14.post("/:sessionId/input", async (c) => {
8362
8298
  const sessionId = c.req.param("sessionId");
8363
8299
  const rawBody = await c.req.text();