@rubytech/create-maxy-code 0.1.419 → 0.1.423

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 (89) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/package-lock.json +5158 -2922
  3. package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-compliance.test.sh +22 -0
  4. package/payload/platform/plugins/admin/hooks/prompt-optimiser-compliance.sh +14 -1
  5. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +3 -1
  6. package/payload/platform/plugins/docs/references/memory-guide.md +2 -0
  7. package/payload/platform/plugins/memory/PLUGIN.md +3 -0
  8. package/payload/platform/plugins/memory/skills/conversational-memory/SKILL.md +30 -1
  9. package/payload/platform/plugins/memory/skills/preference-audit/SKILL.md +50 -0
  10. package/payload/platform/plugins/whatsapp/PLUGIN.md +3 -1
  11. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/resolve-read-account.test.d.ts +2 -0
  12. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/resolve-read-account.test.d.ts.map +1 -0
  13. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/resolve-read-account.test.js +15 -0
  14. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/resolve-read-account.test.js.map +1 -0
  15. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +4 -3
  16. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  17. package/payload/platform/plugins/whatsapp/mcp/dist/resolve-read-account.d.ts +7 -0
  18. package/payload/platform/plugins/whatsapp/mcp/dist/resolve-read-account.d.ts.map +1 -0
  19. package/payload/platform/plugins/whatsapp/mcp/dist/resolve-read-account.js +13 -0
  20. package/payload/platform/plugins/whatsapp/mcp/dist/resolve-read-account.js.map +1 -0
  21. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-raised-by-env.test.d.ts +2 -0
  22. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-raised-by-env.test.d.ts.map +1 -0
  23. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-raised-by-env.test.js +66 -0
  24. package/payload/platform/plugins/work/mcp/dist/__tests__/work-create-raised-by-env.test.js.map +1 -0
  25. package/payload/platform/plugins/work/mcp/dist/tools/work-create.d.ts.map +1 -1
  26. package/payload/platform/plugins/work/mcp/dist/tools/work-create.js +8 -1
  27. package/payload/platform/plugins/work/mcp/dist/tools/work-create.js.map +1 -1
  28. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  29. package/payload/platform/services/claude-session-manager/dist/http-server.js +36 -2
  30. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  31. package/payload/platform/services/claude-session-manager/dist/index.js +39 -0
  32. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  33. package/payload/platform/services/claude-session-manager/dist/passive-dispatch-prune.d.ts +37 -0
  34. package/payload/platform/services/claude-session-manager/dist/passive-dispatch-prune.d.ts.map +1 -0
  35. package/payload/platform/services/claude-session-manager/dist/passive-dispatch-prune.js +80 -0
  36. package/payload/platform/services/claude-session-manager/dist/passive-dispatch-prune.js.map +1 -0
  37. package/payload/platform/services/claude-session-manager/dist/passive-intake-audit.d.ts +70 -0
  38. package/payload/platform/services/claude-session-manager/dist/passive-intake-audit.d.ts.map +1 -0
  39. package/payload/platform/services/claude-session-manager/dist/passive-intake-audit.js +129 -0
  40. package/payload/platform/services/claude-session-manager/dist/passive-intake-audit.js.map +1 -0
  41. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +6 -0
  42. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  43. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +12 -0
  44. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  45. package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
  46. package/payload/platform/services/telegram-channel/dist/instructions.js +30 -50
  47. package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
  48. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
  49. package/payload/platform/services/webchat-channel/dist/instructions.js +37 -78
  50. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
  51. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +14 -36
  52. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  53. package/payload/platform/services/whatsapp-channel/dist/notification.js +35 -80
  54. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  55. package/payload/platform/templates/agents/admin/IDENTITY.md +2 -1
  56. package/payload/platform/templates/specialists/agents/content-producer.md +4 -0
  57. package/payload/server/public/assets/{AdminLoginScreens-B1PkOF66.js → AdminLoginScreens-B1P6PrZ3.js} +1 -1
  58. package/payload/server/public/assets/{AdminShell-D8wNArGQ.js → AdminShell-Y1fHQApK.js} +1 -1
  59. package/payload/server/public/assets/{Checkbox-Bm9Er726.js → Checkbox-CgCqOslz.js} +1 -1
  60. package/payload/server/public/assets/{Transcript-CBIyQ8T5.js → Transcript-DZzFjhoq.js} +1 -1
  61. package/payload/server/public/assets/{admin-CWM9G_yA.js → admin-BRBjJEci.js} +1 -1
  62. package/payload/server/public/assets/{browser-D8QhNffV.js → browser-ID7iqIi4.js} +1 -1
  63. package/payload/server/public/assets/{calendar-qob5K4t_.js → calendar-BEQPMTtd.js} +1 -1
  64. package/payload/server/public/assets/chat-D0GDSWM-.js +1 -0
  65. package/payload/server/public/assets/chevron-left-A0HYKwGY.js +1 -0
  66. package/payload/server/public/assets/data-CV38dClT.js +1 -0
  67. package/payload/server/public/assets/{graph-DZ2HMpIB.js → graph-BK0MjKRy.js} +1 -1
  68. package/payload/server/public/assets/{graph-labels-BFG4bjXQ.js → graph-labels-BfG6FO25.js} +1 -1
  69. package/payload/server/public/assets/{maximize-2-DkZ40lSl.js → maximize-2-DrBaKD3z.js} +1 -1
  70. package/payload/server/public/assets/{operator-FrXrSsBj.js → operator-CnpNyIJ8.js} +1 -1
  71. package/payload/server/public/assets/{page-CHWMI9Tm.js → page-DC_L-IS1.js} +1 -1
  72. package/payload/server/public/assets/{page-CXKV01gT.js → page-DKHLflh7.js} +1 -1
  73. package/payload/server/public/assets/{public-2p1pJ4WF.js → public-ByUJr48E.js} +1 -1
  74. package/payload/server/public/assets/{rotate-ccw-D3o_bMBA.js → rotate-ccw-D45TbeAI.js} +1 -1
  75. package/payload/server/public/assets/useSubAccountSwitcher-CCn22f98.css +1 -0
  76. package/payload/server/public/browser.html +4 -4
  77. package/payload/server/public/calendar.html +5 -5
  78. package/payload/server/public/chat.html +9 -9
  79. package/payload/server/public/data.html +8 -8
  80. package/payload/server/public/graph.html +9 -9
  81. package/payload/server/public/index.html +11 -11
  82. package/payload/server/public/operator.html +11 -11
  83. package/payload/server/public/public.html +9 -9
  84. package/payload/server/server.js +171 -63
  85. package/payload/server/public/assets/chat-BNrxVUF6.js +0 -1
  86. package/payload/server/public/assets/chevron-left-BQThFVrd.js +0 -1
  87. package/payload/server/public/assets/data-C-EqNbRi.js +0 -1
  88. package/payload/server/public/assets/useSubAccountSwitcher-BUvlETHN.css +0 -1
  89. /package/payload/server/public/assets/{useSubAccountSwitcher-8dLvF3Ux.js → useSubAccountSwitcher-CprHkBnZ.js} +0 -0
@@ -1036,7 +1036,12 @@ export function buildHttpApp(deps) {
1036
1036
  timed(deps.logger, 'POST', '/public-spawn', 400, Date.now() - start);
1037
1037
  return c.json({ error: 'invalid-arguments', detail: { senderId: !!senderId, role, channel } }, 400);
1038
1038
  }
1039
- if (role === 'public') {
1039
+ // Task 1489 — a passive intake spawn rides role:'public' on this path but is
1040
+ // a trusted, sub-account-bound account manager, not an anonymous visitor. It
1041
+ // is exempt from the anonymous-visitor limiter: `!passive` keeps a manager's
1042
+ // requirement burst from being throttled, and keeps that burst from consuming
1043
+ // (or being throttled by) the shared per-sender/global anonymous budget.
1044
+ if (role === 'public' && !passive) {
1040
1045
  const decision = deps.publicSpawnLimiter.admit(senderId, channel);
1041
1046
  if (!decision.admitted) {
1042
1047
  deps.logger(`spawn-rate-limited senderId=${senderId} channel=${channel} scope=${decision.scope} window=${decision.windowMs} cap=${decision.cap}`);
@@ -1065,8 +1070,33 @@ export function buildHttpApp(deps) {
1065
1070
  : body.tunnelUrl === null
1066
1071
  ? null
1067
1072
  : undefined;
1073
+ // Task 1490 — scope a passive intake session's whole surface (JSONL
1074
+ // transcript, sidecar, permission-mode log, PTY cwd) to the sub-account it
1075
+ // manages, mirroring /rc-spawn's effectiveAccountDir. Without this only the
1076
+ // work MCP env was sub-scoped (Task 1483); the session artifacts landed
1077
+ // under the house, splitting intake activity from the :Task it produces.
1078
+ // accountId/accountDir stay house: the passive identity is an
1079
+ // account-agnostic template read from the house, and the graph is already
1080
+ // sub-scoped via the work server's ACCOUNT_ID. A present-but-unregistered
1081
+ // target is rejected (fail-closed, never silently house-scoped) — the same
1082
+ // rule /rc-spawn enforces (Task 983). The gate matches pty-spawner's
1083
+ // `isPassiveSpawn` invariant exactly (passive ALWAYS rides role:'public',
1084
+ // never a specialist); a passive flag on any other role/specialist is
1085
+ // ignored here too, so the transcript scope can never diverge from the
1086
+ // work-MCP graph scope (which only sub-scopes under the same invariant).
1087
+ let spawnCwd = deps.spawnCwd;
1088
+ if (passive && role === 'public' && !specialist && targetAccountId) {
1089
+ const accountsRoot = join(dirname(deps.platformRoot), 'data', 'accounts');
1090
+ if (!existsSync(join(accountsRoot, targetAccountId, 'account.json'))) {
1091
+ deps.logger(`[spawn] op=passive-account-reject target=${targetAccountId} reason=not-in-registry`);
1092
+ timed(deps.logger, 'POST', '/public-spawn', 400, Date.now() - start);
1093
+ return c.json({ error: 'targetAccountId not in this install registry' }, 400);
1094
+ }
1095
+ spawnCwd = join(accountsRoot, targetAccountId);
1096
+ }
1068
1097
  const result = await spawnClaudeSession({
1069
1098
  ...deps,
1099
+ spawnCwd,
1070
1100
  watcher: deps.watcher,
1071
1101
  onSessionReady: (tracker) => {
1072
1102
  // Task 1483 — a passive intake rides role:'public' but is NOT a public
@@ -1140,7 +1170,11 @@ export function buildHttpApp(deps) {
1140
1170
  // field so a dropped name is visible without reproducing.
1141
1171
  if (role === 'public') {
1142
1172
  if (publicTitle) {
1143
- deps.titleStores.forSessionCwd(deps.spawnCwd).set(result.session.sessionId, publicTitle);
1173
+ // Task 1490 — the title store is per-cwd; a passive session's cwd is the
1174
+ // sub-account (spawnCwd override above), so persist under the same cwd
1175
+ // the row is read from, not the house deps.spawnCwd. Identical to house
1176
+ // for every non-passive public spawn.
1177
+ deps.titleStores.forSessionCwd(spawnCwd).set(result.session.sessionId, publicTitle);
1144
1178
  deps.logger(`[spawn] role=public senderId=${senderId} sessionId=${result.session.sessionId.slice(0, 8)} title="${publicTitle}"`);
1145
1179
  }
1146
1180
  else {