@rubytech/create-maxy-code 0.1.58 → 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 -85
@@ -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,20 +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
- const xff = c.req.header("x-forwarded-for");
8111
- const xffPresent = typeof xff === "string" && xff.length > 0;
8112
- if (isLoopback && !xffPresent) {
8113
- console.log(`${TAG18} loopback-spawn-bypass remoteAddr=${remoteAddr} xff=absent`);
8114
- return next();
8115
- }
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();
8116
8111
  }
8117
8112
  return requireAdminSession(c, next);
8118
8113
  };
8119
- app14.use("*", requireAdminSessionUnlessLoopbackSpawn);
8114
+ app14.use("*", requireAdminSessionOrLoopback);
8120
8115
  app14.post("/", async (c) => {
8121
8116
  const routeStart = Date.now();
8122
8117
  const cacheKey = c.get("cacheKey") ?? "";
@@ -8127,8 +8122,6 @@ app14.post("/", async (c) => {
8127
8122
  }
8128
8123
  let senderId;
8129
8124
  let userId;
8130
- let specialist;
8131
- let originatingSessionId;
8132
8125
  let authSurface;
8133
8126
  if (cacheKey) {
8134
8127
  authSurface = "cookie";
@@ -8138,42 +8131,31 @@ app14.post("/", async (c) => {
8138
8131
  return c.json({ error: "admin-account-not-resolved" }, 500);
8139
8132
  }
8140
8133
  userId = getUserIdForSession(cacheKey) ?? void 0;
8141
- specialist = void 0;
8142
- originatingSessionId = void 0;
8143
8134
  } else {
8144
8135
  authSurface = "loopback";
8145
- if (typeof body.originatingSessionId !== "string" || !UUID_PATTERN.test(body.originatingSessionId)) {
8146
- console.log(`[turn-recorder] spawn-failed sessionId=unknown reason=missing-originating-session-id`);
8147
- 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);
8148
8138
  }
8149
- originatingSessionId = body.originatingSessionId;
8139
+ const lookupSessionId = body.adminSessionId;
8150
8140
  const operatorMeta = await fetch(
8151
- `${managerBase2()}/${encodeURIComponent(originatingSessionId)}/meta`
8141
+ `${managerBase2()}/${encodeURIComponent(lookupSessionId)}/meta`
8152
8142
  ).then((r) => r.ok ? r.json() : null).catch((err) => {
8153
8143
  console.error(`${TAG18} fetch-failed op=operator-meta-lookup message=${err instanceof Error ? err.message : String(err)}`);
8154
8144
  return null;
8155
8145
  });
8156
8146
  const operatorSenderId = operatorMeta && typeof operatorMeta.senderId === "string" && operatorMeta.senderId.length > 0 ? operatorMeta.senderId : null;
8157
8147
  if (!operatorSenderId) {
8158
- console.log(
8159
- `[turn-recorder] spawn-failed sessionId=${originatingSessionId} reason=originating-session-not-found`
8160
- );
8161
- return c.json({ error: "originating-session-not-found" }, 404);
8148
+ return c.json({ error: "admin-session-not-found" }, 404);
8162
8149
  }
8163
8150
  senderId = operatorSenderId;
8164
8151
  userId = void 0;
8165
- specialist = typeof body.specialist === "string" && /^[A-Za-z0-9_-]{1,64}$/.test(body.specialist) ? body.specialist : "database-operator";
8166
8152
  }
8167
8153
  const channel = typeof body.channel === "string" ? body.channel : "browser";
8168
8154
  const initialMessage = typeof body.initialMessage === "string" && body.initialMessage.trim() ? body.initialMessage : null;
8169
- const initialMessageBytes = initialMessage ? Buffer.byteLength(initialMessage, "utf8") : 0;
8170
8155
  const permissionMode = typeof body.permissionMode === "string" ? body.permissionMode : void 0;
8171
- if (authSurface === "cookie") {
8172
- 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"}`);
8173
- } else {
8174
- console.log(`[turn-recorder] spawn-request sessionId=${originatingSessionId} specialist=${specialist ?? "none"} initialMessageBytes=${initialMessageBytes}`);
8175
- }
8176
- 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"}`);
8177
8159
  const response = await performSpawnWithInitialMessage({
8178
8160
  senderId,
8179
8161
  userId,
@@ -8182,41 +8164,10 @@ app14.post("/", async (c) => {
8182
8164
  permissionMode,
8183
8165
  hidden: false,
8184
8166
  specialist,
8185
- initialMessage,
8186
- originatingSessionId
8167
+ model,
8168
+ initialMessage
8187
8169
  });
8188
- if (authSurface === "loopback" && originatingSessionId) {
8189
- const respText = await response.text().catch(() => "");
8190
- const respStatus = response.status;
8191
- const replay = new Response(respText, { status: respStatus, headers: response.headers });
8192
- let parsed = null;
8193
- try {
8194
- parsed = JSON.parse(respText);
8195
- } catch {
8196
- parsed = null;
8197
- }
8198
- if (respStatus >= 200 && respStatus < 300 && parsed && typeof parsed.sessionId === "string") {
8199
- const recorderSessionId = parsed.sessionId;
8200
- console.log(
8201
- `[turn-recorder] spawn-success sessionId=${originatingSessionId} recorderSessionId=${recorderSessionId} pid=${parsed.pid ?? 0} latency-ms=${Date.now() - t0}`
8202
- );
8203
- if (initialMessage) {
8204
- console.log(
8205
- `[turn-recorder] input-delivered sessionId=${originatingSessionId} recorderSessionId=${recorderSessionId} bytes=${initialMessageBytes} multiline=${initialMessage.includes("\n")}`
8206
- );
8207
- }
8208
- } else {
8209
- const reasonRaw = parsed && typeof parsed.error === "string" ? parsed.error : "unknown";
8210
- if (reasonRaw !== "tool-surface-missing" && reasonRaw !== "missing-originating-session-id") {
8211
- const detail = parsed && typeof parsed.detail === "string" ? parsed.detail.slice(0, 200) : "";
8212
- console.log(
8213
- `[turn-recorder] spawn-failed sessionId=${originatingSessionId} reason=manager-spawn http=${respStatus} err=${JSON.stringify(detail || reasonRaw)}`
8214
- );
8215
- }
8216
- }
8217
- return replay;
8218
- }
8219
- 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}`);
8220
8171
  return response;
8221
8172
  });
8222
8173
  app14.get("/events", async (c) => {
@@ -8343,23 +8294,6 @@ app14.get("/:sessionId/meta", async (c) => {
8343
8294
  if (!upstream) return c.json({ error: "manager-unreachable" }, 503);
8344
8295
  return new Response(upstream.body, { status: upstream.status, headers: upstream.headers });
8345
8296
  });
8346
- app14.patch("/:sessionId", async (c) => {
8347
- const sessionId = c.req.param("sessionId");
8348
- const body = await c.req.text();
8349
- const upstream = await fetch(
8350
- `${managerBase2()}/${encodeURIComponent(sessionId)}`,
8351
- {
8352
- method: "PATCH",
8353
- headers: { "content-type": "application/json" },
8354
- body
8355
- }
8356
- ).catch((err) => {
8357
- console.error(`${TAG18} fetch-failed op=patch message=${err instanceof Error ? err.message : String(err)}`);
8358
- return null;
8359
- });
8360
- if (!upstream) return c.json({ error: "manager-unreachable" }, 503);
8361
- return new Response(upstream.body, { status: upstream.status, headers: upstream.headers });
8362
- });
8363
8297
  app14.post("/:sessionId/input", async (c) => {
8364
8298
  const sessionId = c.req.param("sessionId");
8365
8299
  const rawBody = await c.req.text();