@rubytech/create-maxy-code 0.1.32 → 0.1.34

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 (445) hide show
  1. package/dist/__tests__/account-id-env.test.js +1 -1
  2. package/dist/__tests__/apt-resolve.test.js +7 -7
  3. package/dist/__tests__/brew-install.test.js +1 -1
  4. package/dist/__tests__/brew-resolve.test.js +1 -1
  5. package/dist/__tests__/cdp-port-no-silent-fallback.test.js +4 -4
  6. package/dist/__tests__/init-logging.test.js +1 -1
  7. package/dist/__tests__/launchd-plist.test.js +1 -1
  8. package/dist/__tests__/macos-version.test.js +1 -1
  9. package/dist/__tests__/peer-brand-detect.test.js +1 -1
  10. package/dist/__tests__/platform-detect.test.js +2 -2
  11. package/dist/__tests__/port-canonicalisation.test.js +1 -1
  12. package/dist/__tests__/preflight-port-classifier.test.js +6 -6
  13. package/dist/__tests__/samba-provision.test.js +1 -1
  14. package/dist/__tests__/snap-chromium.test.js +1 -1
  15. package/dist/apt-resolve.js +5 -5
  16. package/dist/brew-install.js +1 -1
  17. package/dist/brew-resolve.js +3 -3
  18. package/dist/index.js +146 -122
  19. package/dist/init-logging.js +1 -1
  20. package/dist/launchd-plist.js +1 -1
  21. package/dist/macos-version.js +2 -2
  22. package/dist/peer-brand-detect.js +1 -1
  23. package/dist/pinned-binaries.js +1 -1
  24. package/dist/platform-detect.js +1 -1
  25. package/dist/port-resolution.js +2 -2
  26. package/dist/preflight-port-classifier.js +3 -3
  27. package/dist/samba-provision.js +1 -1
  28. package/dist/snap-chromium.js +3 -3
  29. package/dist/uninstall.js +28 -28
  30. package/package.json +1 -1
  31. package/payload/docs/desktop-code-controls.md +63 -0
  32. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.js +1 -1
  33. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.js.map +1 -1
  34. package/payload/platform/lib/account-enumeration/dist/index.d.ts +1 -1
  35. package/payload/platform/lib/account-enumeration/src/__tests__/validate-env.test.ts +1 -1
  36. package/payload/platform/lib/account-enumeration/src/index.ts +1 -1
  37. package/payload/platform/lib/admins-write/dist/index.js +3 -3
  38. package/payload/platform/lib/admins-write/dist/index.js.map +1 -1
  39. package/payload/platform/lib/admins-write/src/index.ts +4 -4
  40. package/payload/platform/lib/entitlement/dist/index.d.ts +1 -1
  41. package/payload/platform/lib/entitlement/dist/index.js +2 -2
  42. package/payload/platform/lib/entitlement/dist/index.js.map +1 -1
  43. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.js +1 -1
  44. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.js.map +1 -1
  45. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.d.ts +3 -3
  46. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.js +3 -3
  47. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.d.ts +1 -1
  48. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.js +1 -1
  49. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.d.ts +1 -1
  50. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.js +1 -1
  51. package/payload/platform/lib/graph-mcp/dist/cypher-validate.d.ts +1 -1
  52. package/payload/platform/lib/graph-mcp/dist/cypher-validate.js +1 -1
  53. package/payload/platform/lib/graph-mcp/dist/index.d.ts +1 -1
  54. package/payload/platform/lib/graph-mcp/dist/index.js +24 -24
  55. package/payload/platform/lib/graph-mcp/dist/index.js.map +1 -1
  56. package/payload/platform/lib/graph-mcp/dist/schema-cache.d.ts +1 -1
  57. package/payload/platform/lib/graph-mcp/dist/schema-cache.js +2 -2
  58. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.d.ts +3 -3
  59. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.js +3 -3
  60. package/payload/platform/lib/graph-mcp/src/__tests__/warnings-envelope.test.ts +1 -1
  61. package/payload/platform/lib/graph-mcp/src/cypher-rewrite-stamp.ts +3 -3
  62. package/payload/platform/lib/graph-mcp/src/cypher-shim-read.ts +1 -1
  63. package/payload/platform/lib/graph-mcp/src/cypher-shim-write.ts +1 -1
  64. package/payload/platform/lib/graph-mcp/src/cypher-validate.ts +1 -1
  65. package/payload/platform/lib/graph-mcp/src/index.ts +29 -29
  66. package/payload/platform/lib/graph-mcp/src/schema-cache.ts +2 -2
  67. package/payload/platform/lib/graph-mcp/src/schema-cypher-parser.ts +3 -3
  68. package/payload/platform/lib/graph-search/dist/index.d.ts +12 -12
  69. package/payload/platform/lib/graph-search/dist/index.js +11 -11
  70. package/payload/platform/lib/graph-search/dist/index.js.map +1 -1
  71. package/payload/platform/lib/graph-search/src/__tests__/bm25-label-gate.test.ts +2 -2
  72. package/payload/platform/lib/graph-search/src/__tests__/bm25-strong-bypass-threshold.test.ts +2 -2
  73. package/payload/platform/lib/graph-search/src/__tests__/brochure-threshold.test.ts +3 -3
  74. package/payload/platform/lib/graph-search/src/__tests__/expand-batch.test.ts +2 -2
  75. package/payload/platform/lib/graph-search/src/__tests__/fulltext-coverage.test.ts +6 -6
  76. package/payload/platform/lib/graph-search/src/__tests__/hybrid.test.ts +5 -5
  77. package/payload/platform/lib/graph-search/src/__tests__/vector-threshold.test.ts +2 -2
  78. package/payload/platform/lib/graph-search/src/index.ts +18 -18
  79. package/payload/platform/lib/graph-trash/dist/index.d.ts +3 -3
  80. package/payload/platform/lib/graph-trash/dist/index.js +3 -3
  81. package/payload/platform/lib/graph-trash/src/index.ts +3 -3
  82. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js +4 -4
  83. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js.map +1 -1
  84. package/payload/platform/lib/graph-write/dist/audit.d.ts +2 -2
  85. package/payload/platform/lib/graph-write/dist/audit.js +2 -2
  86. package/payload/platform/lib/graph-write/dist/conversation-provenance.js +1 -1
  87. package/payload/platform/lib/graph-write/dist/conversation-provenance.js.map +1 -1
  88. package/payload/platform/lib/graph-write/dist/index.d.ts +5 -5
  89. package/payload/platform/lib/graph-write/dist/index.js +12 -12
  90. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  91. package/payload/platform/lib/graph-write/src/__tests__/action-provenance-gate.test.ts +4 -4
  92. package/payload/platform/lib/graph-write/src/audit.ts +2 -2
  93. package/payload/platform/lib/graph-write/src/conversation-provenance.ts +1 -1
  94. package/payload/platform/lib/graph-write/src/index.ts +13 -13
  95. package/payload/platform/lib/mcp-eager/dist/index.d.ts +2 -2
  96. package/payload/platform/lib/mcp-eager/dist/index.js +2 -2
  97. package/payload/platform/lib/mcp-eager/src/index.ts +2 -2
  98. package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts +2 -2
  99. package/payload/platform/lib/mcp-spawn-tee/dist/index.js +2 -2
  100. package/payload/platform/lib/mcp-spawn-tee/src/index.ts +2 -2
  101. package/payload/platform/lib/mcp-stderr-tee/dist/index.d.ts +1 -1
  102. package/payload/platform/lib/mcp-stderr-tee/dist/index.js +4 -4
  103. package/payload/platform/lib/mcp-stderr-tee/dist/index.js.map +1 -1
  104. package/payload/platform/lib/mcp-stderr-tee/src/index.ts +4 -4
  105. package/payload/platform/lib/oauth-llm/dist/index.d.ts +4 -4
  106. package/payload/platform/lib/oauth-llm/dist/index.js +3 -3
  107. package/payload/platform/lib/oauth-llm/dist/index.js.map +1 -1
  108. package/payload/platform/lib/oauth-llm/src/index.ts +6 -6
  109. package/payload/platform/lib/persistent-components/dist/index.d.ts +1 -1
  110. package/payload/platform/lib/persistent-components/dist/index.js +1 -1
  111. package/payload/platform/lib/persistent-components/src/index.ts +1 -1
  112. package/payload/platform/lib/task-secrets/dist/index.js +1 -1
  113. package/payload/platform/lib/task-secrets/dist/index.js.map +1 -1
  114. package/payload/platform/lib/task-secrets/src/__tests__/redact-secrets.test.ts +1 -1
  115. package/payload/platform/lib/task-secrets/src/index.ts +1 -1
  116. package/payload/platform/neo4j/edge-annotations.json +9 -9
  117. package/payload/platform/neo4j/schema.cypher +32 -33
  118. package/payload/platform/package.json +2 -2
  119. package/payload/platform/plugins/admin/PLUGIN.md +0 -2
  120. package/payload/platform/plugins/admin/hooks/__tests__/archive-ingest-surface-gate.test.sh +4 -4
  121. package/payload/platform/plugins/admin/hooks/__tests__/playwright-file-guard.test.sh +1 -1
  122. package/payload/platform/plugins/admin/hooks/__tests__/pre-tool-use-base64-guard.test.sh +1 -1
  123. package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +13 -13
  124. package/payload/platform/plugins/admin/hooks/pre-tool-use.sh +7 -7
  125. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js +2 -2
  126. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js.map +1 -1
  127. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js +1 -1
  128. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js.map +1 -1
  129. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.js +2 -2
  130. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.js.map +1 -1
  131. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.js +1 -1
  132. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.js.map +1 -1
  133. package/payload/platform/plugins/admin/mcp/dist/index.js +38 -65
  134. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  135. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js +2 -2
  136. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js.map +1 -1
  137. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js +2 -2
  138. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js.map +1 -1
  139. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js +5 -5
  140. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js.map +1 -1
  141. package/payload/platform/plugins/admin/skills/plugin-management/SKILL.md +1 -1
  142. package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +0 -1
  143. package/payload/platform/plugins/admin/skills/publish-site/SKILL.md +1 -1
  144. package/payload/platform/plugins/admin/skills/unzip-attachment/SKILL.md +2 -2
  145. package/payload/platform/plugins/cloudflare/mcp/dist/index.js +1 -1
  146. package/payload/platform/plugins/cloudflare/mcp/dist/index.js.map +1 -1
  147. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +1 -1
  148. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +6 -6
  149. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +1 -1
  150. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts +2 -2
  151. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +2 -2
  152. package/payload/platform/plugins/cloudflare/references/dashboard-guide.md +1 -1
  153. package/payload/platform/plugins/cloudflare/references/manual-setup.md +4 -4
  154. package/payload/platform/plugins/cloudflare/scripts/__tests__/tunnel-ingress.test.ts +1 -1
  155. package/payload/platform/plugins/cloudflare/scripts/_stream-log.sh +8 -8
  156. package/payload/platform/plugins/cloudflare/scripts/list-cf-domains.sh +2 -2
  157. package/payload/platform/plugins/cloudflare/scripts/list-cf-domains.ts +16 -16
  158. package/payload/platform/plugins/cloudflare/scripts/reset-tunnel.sh +1 -1
  159. package/payload/platform/plugins/cloudflare/scripts/setup-tunnel.sh +28 -28
  160. package/payload/platform/plugins/cloudflare/scripts/tunnel-ingress.ts +5 -5
  161. package/payload/platform/plugins/cloudflare/skills/setup-tunnel/SKILL.md +3 -3
  162. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js +2 -2
  163. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js.map +1 -1
  164. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.d.ts +1 -1
  165. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.js +1 -1
  166. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +2 -2
  167. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -1
  168. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js +1 -1
  169. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js.map +1 -1
  170. package/payload/platform/plugins/docs/references/deployment.md +30 -1
  171. package/payload/platform/plugins/docs/references/plugins-guide.md +2 -5
  172. package/payload/platform/plugins/docs/references/troubleshooting.md +3 -3
  173. package/payload/platform/plugins/email/mcp/dist/index.js +1 -1
  174. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  175. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +2 -2
  176. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +1 -1
  177. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +1 -1
  178. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +1 -1
  179. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js +2 -2
  180. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js.map +1 -1
  181. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +1 -1
  182. package/payload/platform/plugins/email/mcp/dist/lib/screening.js +1 -1
  183. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +6 -6
  184. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +1 -1
  185. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +1 -1
  186. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +2 -2
  187. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -1
  188. package/payload/platform/plugins/email/references/email-reference.md +2 -2
  189. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js +3 -3
  190. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js.map +1 -1
  191. package/payload/platform/plugins/loop/mcp/src/lib/neo4j.ts +3 -3
  192. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +24 -24
  193. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.sh +6 -6
  194. package/payload/platform/plugins/memory/mcp/dist/index.js +8 -8
  195. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  196. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +33 -33
  197. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +1 -1
  198. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +12 -12
  199. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -1
  200. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +3 -3
  201. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -1
  202. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js +2 -2
  203. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js.map +1 -1
  204. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.d.ts.map +1 -1
  205. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js +1 -1
  206. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js.map +1 -1
  207. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts.map +1 -1
  208. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js +1 -2
  209. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js.map +1 -1
  210. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js +2 -2
  211. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js.map +1 -1
  212. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js +1 -1
  213. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js.map +1 -1
  214. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.d.ts +2 -2
  215. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.js +2 -2
  216. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js +6 -6
  217. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js.map +1 -1
  218. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts +1 -1
  219. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js +1 -1
  220. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts +2 -2
  221. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js +7 -7
  222. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js.map +1 -1
  223. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts +2 -2
  224. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js +2 -2
  225. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +9 -9
  226. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -1
  227. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +25 -25
  228. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -1
  229. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +1 -1
  230. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +5 -5
  231. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +1 -1
  232. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js +2 -2
  233. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js.map +1 -1
  234. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts +4 -4
  235. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js +3 -3
  236. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js.map +1 -1
  237. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.d.ts +3 -3
  238. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js +5 -5
  239. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js.map +1 -1
  240. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.js +1 -1
  241. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.js.map +1 -1
  242. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js +5 -5
  243. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js.map +1 -1
  244. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js +1 -1
  245. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js.map +1 -1
  246. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js +2 -2
  247. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js.map +1 -1
  248. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js +4 -4
  249. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js.map +1 -1
  250. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js +6 -6
  251. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js.map +1 -1
  252. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +7 -7
  253. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -1
  254. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js +2 -2
  255. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js.map +1 -1
  256. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js +3 -3
  257. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js.map +1 -1
  258. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts +1 -1
  259. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +3 -3
  260. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
  261. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts +1 -1
  262. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js +1 -1
  263. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +2 -2
  264. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
  265. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts +1 -1
  266. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +1 -1
  267. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts +2 -2
  268. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +1 -1
  269. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -1
  270. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts +3 -3
  271. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js +2 -2
  272. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js.map +1 -1
  273. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +9 -9
  274. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  275. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +10 -11
  276. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  277. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js +1 -1
  278. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js.map +1 -1
  279. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +1 -1
  280. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -1
  281. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +1 -1
  282. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
  283. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +1 -1
  284. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +3 -3
  285. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  286. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +9 -9
  287. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -1
  288. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +5 -5
  289. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +9 -9
  290. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
  291. package/payload/platform/plugins/memory/mcp/scripts/boot-smoke.sh +1 -1
  292. package/payload/platform/plugins/memory/mcp/scripts/graph/fixture.cypher +1 -1
  293. package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -2
  294. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +1 -1
  295. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
  296. package/payload/platform/plugins/outlook/mcp/scripts/verify-doc-impl.sh +1 -1
  297. package/payload/platform/plugins/scheduling/PLUGIN.md +1 -1
  298. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.js +1 -1
  299. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.js.map +1 -1
  300. package/payload/platform/plugins/scheduling/mcp/dist/index.js +1 -1
  301. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  302. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js +3 -3
  303. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js.map +1 -1
  304. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts +2 -2
  305. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js +5 -5
  306. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js.map +1 -1
  307. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +1 -1
  308. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +6 -6
  309. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  310. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +1 -1
  311. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  312. package/payload/platform/plugins/tasks/mcp/dist/index.js +1 -1
  313. package/payload/platform/plugins/tasks/mcp/dist/index.js.map +1 -1
  314. package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.js +2 -2
  315. package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.js.map +1 -1
  316. package/payload/platform/plugins/tasks/mcp/dist/tools/project-create.js +2 -2
  317. package/payload/platform/plugins/tasks/mcp/dist/tools/project-create.js.map +1 -1
  318. package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.d.ts +1 -1
  319. package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.d.ts.map +1 -1
  320. package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.d.ts +5 -5
  321. package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.js +3 -3
  322. package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.js.map +1 -1
  323. package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.d.ts +4 -4
  324. package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.js +2 -2
  325. package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.js.map +1 -1
  326. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.js +2 -2
  327. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.js.map +1 -1
  328. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js +2 -2
  329. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js.map +1 -1
  330. package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js +3 -3
  331. package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js.map +1 -1
  332. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts +1 -1
  333. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js +3 -3
  334. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js.map +1 -1
  335. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js +5 -5
  336. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js.map +1 -1
  337. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.d.ts +1 -1
  338. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.js +1 -1
  339. package/payload/platform/plugins/workflows/mcp/dist/index.js +1 -1
  340. package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -1
  341. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.d.ts +1 -1
  342. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.js +1 -1
  343. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +1 -1
  344. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js +2 -2
  345. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js.map +1 -1
  346. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +1 -1
  347. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -1
  348. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +4 -4
  349. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -1
  350. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js +1 -1
  351. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js.map +1 -1
  352. package/payload/platform/plugins/workflows/mcp/test-workflows.sh +2 -2
  353. package/payload/platform/scripts/__tests__/first-token-creates-stream-log.test.sh +1 -1
  354. package/payload/platform/scripts/__tests__/logs-read-prefix.sh +6 -6
  355. package/payload/platform/scripts/admin-conversation-recover.mjs +5 -5
  356. package/payload/platform/scripts/admin-persist-audit.ts +4 -4
  357. package/payload/platform/scripts/check-no-conversation-id-leaks.mjs +1 -1
  358. package/payload/platform/scripts/check-no-direct-clipboard.mjs +1 -1
  359. package/payload/platform/scripts/check-no-task-id-leaks.mjs +2 -2
  360. package/payload/platform/scripts/check-skill-load-coverage.mjs +1 -1
  361. package/payload/platform/scripts/component-knowledgedoc-backfill.ts +1 -1
  362. package/payload/platform/scripts/dedupe-userprofile-ghosts.sh +2 -2
  363. package/payload/platform/scripts/generate-entitlement-fixture.mjs +1 -1
  364. package/payload/platform/scripts/installer-device-verify.sh +6 -6
  365. package/payload/platform/scripts/lib/resolve-account-dir.sh +6 -6
  366. package/payload/platform/scripts/log-adherence-check.sh +3 -3
  367. package/payload/platform/scripts/logs-read.sh +13 -13
  368. package/payload/platform/scripts/logs-read.test.sh +1 -1
  369. package/payload/platform/scripts/migrate-import.sh +4 -4
  370. package/payload/platform/scripts/redact-install-logs.sh +1 -1
  371. package/payload/platform/scripts/seed-neo4j.sh +26 -32
  372. package/payload/platform/scripts/test-laptop-vnc-boot.sh +3 -3
  373. package/payload/platform/scripts/verify-skill-tool-surface.sh +17 -2
  374. package/payload/platform/scripts/vnc.sh +9 -9
  375. package/payload/platform/services/claude-session-manager/dist/config.d.ts +15 -1
  376. package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -1
  377. package/payload/platform/services/claude-session-manager/dist/config.js +43 -2
  378. package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -1
  379. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +2 -2
  380. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  381. package/payload/platform/services/claude-session-manager/dist/http-server.js +133 -90
  382. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  383. package/payload/platform/services/claude-session-manager/dist/index.js +21 -3
  384. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  385. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +2 -2
  386. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
  387. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +4 -4
  388. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
  389. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +1 -1
  390. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +1 -1
  391. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +2 -2
  392. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
  393. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +42 -17
  394. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  395. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +116 -48
  396. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  397. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js +1 -1
  398. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js.map +1 -1
  399. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +36 -11
  400. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -1
  401. package/payload/platform/services/claude-session-manager/dist/session-store.js +53 -2
  402. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -1
  403. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js +2 -2
  404. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js.map +1 -1
  405. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +60 -1
  406. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  407. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +169 -11
  408. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  409. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +1 -1
  410. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
  411. package/payload/platform/services/claude-session-manager/dist/types.d.ts +8 -1
  412. package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
  413. package/payload/platform/services/claude-session-manager/dist/url-capture.js +1 -1
  414. package/payload/platform/services/claude-session-manager/dist/url-capture.js.map +1 -1
  415. package/payload/platform/templates/agents/admin/IDENTITY.md +14 -0
  416. package/payload/platform/templates/agents/admin/SOUL.md +1 -3
  417. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -3
  418. package/payload/platform/templates/specialists/agents/project-manager.md +1 -1
  419. package/payload/platform/templates/systemd/edge.service.template +3 -3
  420. package/payload/premium-plugins/real-agent/BUNDLE.md +2 -4
  421. package/payload/premium-plugins/real-agent/plugins/.claude-plugin/marketplace.json +0 -5
  422. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/neo4j.js +3 -3
  423. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/neo4j.js.map +1 -1
  424. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/lib/neo4j.ts +3 -3
  425. package/payload/server/{chunk-ZGJ6CUU2.js → chunk-3G6JMV7N.js} +1 -1
  426. package/payload/server/{chunk-KVGTWNKQ.js → chunk-NNHHGQJL.js} +314 -5
  427. package/payload/server/{chunk-RZQMYJVY.js → chunk-QC5LHYPH.js} +3 -3
  428. package/payload/server/{cloudflare-task-tracker-4PKOLE4H.js → cloudflare-task-tracker-NEB3X6O2.js} +2 -2
  429. package/payload/server/maxy-edge.js +2 -2
  430. package/payload/server/public/assets/{admin-Cuu1QdAA.js → admin-CF2ZQvXu.js} +1 -1
  431. package/payload/server/public/index.html +1 -1
  432. package/payload/server/server.js +274 -396
  433. package/payload/platform/plugins/anthropic/.claude-plugin/plugin.json +0 -8
  434. package/payload/platform/plugins/anthropic/PLUGIN.md +0 -40
  435. package/payload/platform/plugins/anthropic/references/console-api.md +0 -186
  436. package/payload/platform/plugins/anthropic/references/setup-guide.md +0 -36
  437. package/payload/platform/plugins/anthropic/skills/get-api-key/SKILL.md +0 -136
  438. package/payload/platform/plugins/estate-onboarding/.claude-plugin/plugin.json +0 -8
  439. package/payload/platform/plugins/estate-onboarding/PLUGIN.md +0 -30
  440. package/payload/platform/plugins/estate-onboarding/skills/bootstrap/SKILL.md +0 -26
  441. package/payload/platform/plugins/estate-onboarding/skills/bootstrap/references/onboarding-flow.md +0 -63
  442. package/payload/premium-plugins/real-agent/plugins/estate-onboarding/.claude-plugin/plugin.json +0 -8
  443. package/payload/premium-plugins/real-agent/plugins/estate-onboarding/PLUGIN.md +0 -30
  444. package/payload/premium-plugins/real-agent/plugins/estate-onboarding/skills/bootstrap/SKILL.md +0 -26
  445. package/payload/premium-plugins/real-agent/plugins/estate-onboarding/skills/bootstrap/references/onboarding-flow.md +0 -63
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # log-adherence-check.sh — Task 1006 existence contract diagnostic.
2
+ # log-adherence-check.sh existence contract diagnostic.
3
3
  #
4
4
  # Reads every sessionKey under the active install's per-account logs and
5
5
  # asserts that a resolvable claude-agent-stream-<sessionKey>.log exists for
@@ -91,7 +91,7 @@ for k in "${UNIQUE[@]:-}"; do
91
91
  fi
92
92
  done
93
93
 
94
- # Task 1013 — duplicate-basename check. Two stream-log files for one
94
+ # duplicate-basename check. Two stream-log files for one
95
95
  # sessionKey across account dirs is the structural-failure signature this
96
96
  # task exists to make impossible. The build gate prevents the writer-side
97
97
  # regression that produces it (sessions.ts:568 wrong-identifier path); this
@@ -112,7 +112,7 @@ DUP_BASENAMES=0
112
112
  for k in "${!BASENAME_COUNT[@]}"; do
113
113
  if [[ ${BASENAME_COUNT[$k]} -gt 1 ]]; then
114
114
  DUP_BASENAMES=$((DUP_BASENAMES + 1))
115
- echo "${TS} [log-tee] dup-basename sessionKey=${k:0:8} count=${BASENAME_COUNT[$k]} surface=adherence-script — Task 1013 P0: writer collapse regressed" >> "$SERVER_LOG" 2>/dev/null || true
115
+ echo "${TS} [log-tee] dup-basename sessionKey=${k:0:8} count=${BASENAME_COUNT[$k]} surface=adherence-script P0: writer collapse regressed" >> "$SERVER_LOG" 2>/dev/null || true
116
116
  fi
117
117
  done
118
118
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  # logs-read.sh — Shell counterpart to the logs-read MCP tool.
3
3
  #
4
- # Task 1006: stream logs are per-session, not per-day or per-conversation.
4
+ # stream logs are per-session, not per-day or per-conversation.
5
5
  # The primary mode reads a single {prefix}-{sessionKey}.log file — the
6
6
  # operator types a sessionKey prefix and the surface returns the bytes from
7
7
  # first [spawn] to final [process-exit] without filtering. sessionKey is
@@ -17,7 +17,7 @@
17
17
  # heartbeat, public, server, mcp, vnc, chat-attempts
18
18
  # For per-session types (agent-stream/system/session/error/public): sessionKey
19
19
  # is required in the first mode. For platform-scoped types (server/vnc/
20
- # heartbeat): the id is ignored. chat-attempts is --tail-only (Task 1018):
20
+ # heartbeat): the id is ignored. chat-attempts is --tail-only:
21
21
  # cross-grep of edge.log + server.log for the chat-ingress quartet within
22
22
  # the most recent N minutes.
23
23
  #
@@ -95,7 +95,7 @@ account_suffix() {
95
95
 
96
96
  # --- Prefix map (mirrors MCP tool exactly) ---
97
97
  # Per-conversation types: stream log + its siblings (stderr, sse, public).
98
- # Task 850 — `agent-stream` is the canonical name for the per-conversation
98
+ # `agent-stream` is the canonical name for the per-conversation
99
99
  # tool-use/tool-result archive; `system` is kept as a backwards-compatible
100
100
  # alias.
101
101
  prefix_for_type() {
@@ -120,16 +120,16 @@ is_per_conversation_type() {
120
120
  SEARCH_TYPES="agent-stream error session public server mcp vnc"
121
121
  VALID_TYPES="agent-stream, system, session, error, heartbeat, public, server, mcp, vnc, chat-attempts"
122
122
 
123
- # Task 1018 — chat-attempts cross-grep prefixes. One row per chat-ingress
123
+ # chat-attempts cross-grep prefixes. One row per chat-ingress
124
124
  # checkpoint emitted across edge.log + server.log: edge-side inbound/outcome,
125
125
  # admin-auth gate verdict, chat-route handler entry. Absence of a row at any
126
126
  # checkpoint localises the failure to one stage of the ingress pipeline.
127
127
  CHAT_ATTEMPT_GREP='\[edge-admin\] inbound|\[edge-admin\] outcome|\[admin-auth\] outcome|\[chat-route\] entered'
128
128
 
129
129
  # Authoritative sessionKey character set.
130
- # Writer-side (Task 1008) emits `sk_<hex16>` filenames; the underscore must
130
+ # Writer-side emits `sk_<hex16>` filenames; the underscore must
131
131
  # stay in this regex or every post-1008 file becomes unretrievable
132
- # (Task 1010). UUID v4 sessionKeys (legacy and current alternate format)
132
+ #. UUID v4 sessionKeys (legacy and current alternate format)
133
133
  # also pass. Widening past this set is unsafe: session_key is concatenated
134
134
  # into a glob below (`${prefix}${session_key}*.log`), so any character bash
135
135
  # treats as a metacharacter (`*`, `?`, `[`, `;`, `$`, etc.) would escape
@@ -166,7 +166,7 @@ validate_type() {
166
166
  esac
167
167
  }
168
168
 
169
- # Task 1018 — chat-attempts cross-grep mode. Combines edge.log + server.log
169
+ # chat-attempts cross-grep mode. Combines edge.log + server.log
170
170
  # lines matching the chat-ingress quartet, filtered to the last N minutes,
171
171
  # sorted chronologically. Default window: 5 minutes (matches the typical
172
172
  # "agent doesn't respond" report window — operator sees the silence,
@@ -250,7 +250,7 @@ chat_attempts_mode() {
250
250
 
251
251
  # --- Per-session mode: prefix-match {prefix}{sessionKey-prefix}*.log ---
252
252
  #
253
- # Task 1006 — one filename shape per session: {prefix}{sessionKey}.log.
253
+ # one filename shape per session: {prefix}{sessionKey}.log.
254
254
  # The operator types an 8-char-or-greater sessionKey prefix; we glob
255
255
  # `${prefix}${session_key}*.log` across every account log dir. The earlier
256
256
  # full vs preflush two-shape contract is gone: sessionKey is the single
@@ -278,9 +278,9 @@ per_conversation_mode() {
278
278
 
279
279
  # Reject shell metacharacters in session_key — the prefix-match glob below
280
280
  # would otherwise turn user input into a shell pattern. SessionKeys are
281
- # `sk_<hex16>` (Task 1008) or UUID v4; both fit $SESSIONKEY_REGEX defined
282
- # near the top of the script. Task 1010 widened this from `[a-zA-Z0-9-]`
283
- # after the Task 1008 underscore-bearing format made every post-1008
281
+ # `sk_<hex16>` or UUID v4; both fit $SESSIONKEY_REGEX defined
282
+ # near the top of the script. widened this from `[a-zA-Z0-9-]`
283
+ # after the underscore-bearing format made every post-1008
284
284
  # session unretrievable.
285
285
  if [[ ! "$session_key" =~ $SESSIONKEY_REGEX ]]; then
286
286
  # Observability: surface the rejection before the operator-visible error
@@ -349,7 +349,7 @@ per_conversation_mode() {
349
349
  exit 0
350
350
  fi
351
351
 
352
- # Task 1006 — missing-on-resolve emission. Best-effort; never fails the
352
+ # missing-on-resolve emission. Best-effort; never fails the
353
353
  # invocation when server.log is unwritable.
354
354
  local miss_ts
355
355
  miss_ts="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
@@ -463,7 +463,7 @@ tail_mode() {
463
463
  local log_type="${1:-agent-stream}"
464
464
  local lines="${2:-50}"
465
465
 
466
- # Task 1018 — chat-attempts is cross-grep + time-windowed, not single-file
466
+ # chat-attempts is cross-grep + time-windowed, not single-file
467
467
  # tail. Dispatch before validate_type's numeric `lines` check (which would
468
468
  # be wrong here — argument 2 is `minutes`, not `lines`).
469
469
  if [[ "$log_type" == "chat-attempts" ]]; then
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # Task 1006 — bash harness for logs-read.sh single-shape resolution.
2
+ # bash harness for logs-read.sh single-shape resolution.
3
3
  #
4
4
  # Covers the three cases the new contract demands:
5
5
  # 1. sessionKey-named file present → bytes returned, exit 0.
@@ -116,11 +116,11 @@ echo "[import] Account dir: $ACCOUNT_DIR"
116
116
  # ------------------------------------------------------------------
117
117
  # Neo4j connection
118
118
  # ------------------------------------------------------------------
119
- # NEO4J_URI is hard-required (Task 788). The previous default
119
+ # NEO4J_URI is hard-required. The previous default
120
120
  # `bolt://localhost:7687` would silently route the import to the wrong Neo4j on
121
121
  # any brand-dedicated install, masking the actual configuration error.
122
122
  if [ -z "${NEO4J_URI:-}" ]; then
123
- echo "[import] ERROR: NEO4J_URI required (no default — see Task 788)" >&2
123
+ echo "[import] ERROR: NEO4J_URI required (no default)" >&2
124
124
  echo "[import] ERROR: Set NEO4J_URI=bolt://localhost:<brand.neo4jPort> before running." >&2
125
125
  exit 1
126
126
  fi
@@ -372,11 +372,11 @@ if [ -f "$PINS_FILE" ]; then
372
372
  python3 -c "import hashlib; print(hashlib.sha256('$MASTER_PIN'.encode()).hexdigest())" > "$PIN_DIR/.admin-pin"
373
373
  echo "[import] masterPin hash written to $PIN_DIR/.admin-pin"
374
374
 
375
- # Auth gate is users.json-authoritative (Task 791). seed-neo4j.sh creates
375
+ # Auth gate is users.json-authoritative. seed-neo4j.sh creates
376
376
  # users.json from .admin-pin, but only at install time — and install runs
377
377
  # before this script writes .admin-pin. Self-contained migration writes
378
378
  # users.json directly, mirroring seed-neo4j.sh's migration branch.
379
- # Task 904 — write to the persistent location (outside the install wipe
379
+ # write to the persistent location (outside the install wipe
380
380
  # zone) so subsequent installs do not overwrite this row with a stale backup.
381
381
  USERS_FILE="$PIN_DIR/users.json"
382
382
  if [ ! -f "$USERS_FILE" ]; then
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # Existing-pi install-log redaction (Task 744).
2
+ # Existing-pi install-log redaction.
3
3
  #
4
4
  # Idempotent one-shot remediation for Pis that completed installation BEFORE
5
5
  # the install-log redaction landed at packages/create-maxy-code/src/index.ts:152.
@@ -16,11 +16,11 @@ INSTALL_DIR="$(dirname "$PROJECT_DIR")"
16
16
  ACCOUNTS_DIR="$INSTALL_DIR/data/accounts"
17
17
  NEO4J_DIR="$PROJECT_DIR/neo4j"
18
18
 
19
- # NEO4J_URI is hard-required (Task 787). The previous default
19
+ # NEO4J_URI is hard-required. The previous default
20
20
  # `bolt://localhost:7687` would silently route the seed to the wrong Neo4j on
21
21
  # any brand-dedicated install — masking every other defect downstream.
22
22
  if [ -z "${NEO4J_URI:-}" ]; then
23
- echo "Error: NEO4J_URI required (no default — see Task 787)" >&2
23
+ echo "Error: NEO4J_URI required (no default)" >&2
24
24
  exit 1
25
25
  fi
26
26
  NEO4J_USER="${NEO4J_USER:-neo4j}"
@@ -45,7 +45,7 @@ CYPHER_SHELL="cypher-shell"
45
45
  # ------------------------------------------------------------------
46
46
 
47
47
  # Resolve existing account by identity (users.json[0].userId) or mint a new one on fresh install.
48
- # Orphan siblings under data/accounts/ — non-matching dirs left behind by Task 380's userId
48
+ # Orphan siblings under data/accounts/ — non-matching dirs left behind by the userId
49
49
  # regeneration — are swept to data/accounts/.trash/<uuid>-<ISO8601-ts>/. Multi-candidate with
50
50
  # no identity match aborts loud; .trash/ is operator-emptied, never auto-cleaned.
51
51
  # shellcheck source=lib/resolve-account-dir.sh
@@ -60,7 +60,7 @@ if [ -f "$PROJECT_DIR/config/brand.json" ]; then
60
60
  fi
61
61
  USERS_FILE="$HOME/$_RESOLVER_CONFIG_DIR_NAME/users.json" resolve_and_sweep_account_dir
62
62
 
63
- mkdir -p "$ACCOUNT_DIR/agents/admin" "$ACCOUNT_DIR/.claude" "$ACCOUNT_DIR/specialists/.claude-plugin" "$ACCOUNT_DIR/specialists/agents"
63
+ mkdir -p "$ACCOUNT_DIR/agents/admin" "$ACCOUNT_DIR/agents/public" "$ACCOUNT_DIR/.claude" "$ACCOUNT_DIR/specialists/.claude-plugin" "$ACCOUNT_DIR/specialists/agents"
64
64
 
65
65
  # Claude Code discovers project-level .claude/ (agents, settings) relative to the
66
66
  # nearest .git root. Without a .git in the account directory, Claude Code traverses
@@ -104,14 +104,14 @@ fi
104
104
  # PreToolUse — pre-tool-use.sh: admin write boundaries
105
105
  # playwright-file-guard.sh: intercepts browser_navigate with file:// URLs
106
106
  # webfetch-preflight.mjs: detects JS-SPA shells before WebFetch's
107
- # 60s extraction timeout (Task 536). Fail-open on any error;
107
+ # 60s extraction timeout. Fail-open on any error;
108
108
  # on positive SPA detection exits 2 with WEBFETCH_CANNOT_READ_JS_SPA.
109
- # archive-ingest-surface-gate.sh (Task 855 → Task 894):
109
+ # archive-ingest-surface-gate.sh:
110
110
  # narrows the database-operator subagent's effective surface
111
111
  # during conversation-archive ingestion to exactly one Bash
112
112
  # entry (memory/bin/conversation-archive-ingest.sh --source
113
- # <enum>) plus read-only neighbours. The Task-894 generalised
114
- # ingest path replaces the WhatsApp-specific Task-855 path.
113
+ # <enum>) plus read-only neighbours. The generalised
114
+ # ingest path replaces the WhatsApp-specific legacy path.
115
115
  # Defensive blocks remain on the deleted legacy MCP tool names
116
116
  # (mcp__memory__whatsapp-export-{parse,preview,insight-write,
117
117
  # insight-pass}, mcp__memory__memory-archive-write when
@@ -199,11 +199,8 @@ SETTINGS_EOF
199
199
 
200
200
  # Always overwrite IDENTITY.md — Rubytech-controlled, pure behaviour.
201
201
  cp "$TEMPLATES_DIR/agents/admin/IDENTITY.md" "$ACCOUNT_DIR/agents/admin/IDENTITY.md"
202
- if [ -d "$ACCOUNT_DIR/agents/public" ]; then
203
- cp "$TEMPLATES_DIR/agents/public/IDENTITY.md" "$ACCOUNT_DIR/agents/public/IDENTITY.md"
204
- else
205
- echo " Skipping agents/public — directory does not exist (user has not created a public agent)"
206
- fi
202
+ cp "$TEMPLATES_DIR/agents/public/IDENTITY.md" "$ACCOUNT_DIR/agents/public/IDENTITY.md"
203
+ echo " agents/public/IDENTITY.md installed"
207
204
 
208
205
  # Always overwrite specialist plugin — Rubytech-controlled, not user-editable.
209
206
  # Specialists are a Claude Code plugin loaded via --plugin-dir. The plugin lives at
@@ -235,13 +232,10 @@ rm -f "$ACCOUNT_DIR/.claude/agents/"*.md 2>/dev/null || true
235
232
  # SOUL.md — user-controlled personalisation. Only create if missing. Never overwrite.
236
233
  [ -f "$ACCOUNT_DIR/agents/admin/SOUL.md" ] || cp "$TEMPLATES_DIR/agents/admin/SOUL.md" "$ACCOUNT_DIR/agents/admin/SOUL.md"
237
234
 
238
- # Public agent filesonly provision if the user has created a public agent (directory exists).
239
- # config.json is what makes the agent visible in the sidebar; creating it here would
240
- # resurrect an agent the user deliberately deleted.
241
- if [ -d "$ACCOUNT_DIR/agents/public" ]; then
242
- [ -f "$ACCOUNT_DIR/agents/public/SOUL.md" ] || cp "$TEMPLATES_DIR/agents/public/SOUL.md" "$ACCOUNT_DIR/agents/public/SOUL.md"
243
- [ -f "$ACCOUNT_DIR/agents/public/config.json" ] || cp "$TEMPLATES_DIR/agents/public/config.json" "$ACCOUNT_DIR/agents/public/config.json"
244
- fi
235
+ # Public agent SOUL.md + config.json create if missing, never overwrite.
236
+ # IDENTITY.md is handled in the Rubytech-controlled block above.
237
+ [ -f "$ACCOUNT_DIR/agents/public/SOUL.md" ] || cp "$TEMPLATES_DIR/agents/public/SOUL.md" "$ACCOUNT_DIR/agents/public/SOUL.md"
238
+ [ -f "$ACCOUNT_DIR/agents/public/config.json" ] || cp "$TEMPLATES_DIR/agents/public/config.json" "$ACCOUNT_DIR/agents/public/config.json"
245
239
 
246
240
  # AGENTS.md — specialist registry. Pre-populated from templates, maintained by admin agent at runtime.
247
241
  # Always overwrite on re-seed (Rubytech-controlled initial state, like IDENTITY.md).
@@ -272,7 +266,7 @@ if [ ! -f "$ACCOUNT_DIR/account.json" ]; then
272
266
  fi
273
267
  fi
274
268
 
275
- # Backfill defaultAgent in account.json if missing (existing accounts pre-Task 108).
269
+ # Backfill defaultAgent in account.json if missing (existing accounts earlier).
276
270
  # Uses the first non-admin agent directory that has a config.json.
277
271
  if [ -f "$ACCOUNT_DIR/account.json" ] && ! grep -q '"defaultAgent"' "$ACCOUNT_DIR/account.json"; then
278
272
  _DEFAULT_SLUG=""
@@ -393,13 +387,13 @@ if [ -f "$CONFIG_DIR/brand.json" ]; then
393
387
  [ -n "$_BRAND_CFG_DIR" ] && _CONFIG_DIR_NAME="$_BRAND_CFG_DIR"
394
388
  fi
395
389
  ADMIN_PIN_FILE="$HOME/$_CONFIG_DIR_NAME/.admin-pin"
396
- # Task 904 — users.json lives under $HOME/$_CONFIG_DIR_NAME, not the wipe zone.
390
+ # users.json lives under $HOME/$_CONFIG_DIR_NAME, not the wipe zone.
397
391
  USERS_FILE="$HOME/$_CONFIG_DIR_NAME/users.json"
398
392
  mkdir -p "$HOME/$_CONFIG_DIR_NAME"
399
393
 
400
394
  # Only create users.json if it doesn't exist AND .admin-pin exists (migration case).
401
395
  # Fresh installs: users.json is created by set-pin POST during onboarding.
402
- # .admin-pin is legacy — no longer read by the platform (Task 431).
396
+ #.admin-pin is legacy — no longer read by the platform.
403
397
  if [ ! -f "$USERS_FILE" ] && [ -f "$ADMIN_PIN_FILE" ]; then
404
398
  USER_ID="$(cat /proc/sys/kernel/random/uuid 2>/dev/null || python3 -c 'import uuid; print(uuid.uuid4())')"
405
399
  PIN_HASH="$(cat "$ADMIN_PIN_FILE")"
@@ -432,7 +426,7 @@ elif [ -f "$USERS_FILE" ]; then
432
426
  USER_ID=$(python3 -c "import json; print(json.load(open('$USERS_FILE'))[0]['userId'])" 2>/dev/null || true)
433
427
  [ -n "$USER_ID" ] && echo " Existing users.json found, userId=$USER_ID"
434
428
 
435
- # Backfill admins in account.json if missing (existing accounts pre-Task 248).
429
+ # Backfill admins in account.json if missing (existing accounts earlier).
436
430
  if [ -f "$ACCOUNT_DIR/account.json" ] && ! grep -q '"admins"' "$ACCOUNT_DIR/account.json"; then
437
431
  python3 -c "
438
432
  import json
@@ -462,9 +456,9 @@ echo "==> Connecting to Neo4j at $NEO4J_URI as $NEO4J_USER"
462
456
 
463
457
  # Schema migrations run before the main schema apply so renames don't collide
464
458
  # with the new declarations. Each statement is idempotent (`IF EXISTS`):
465
- # - Task 249: `user_profile_account_unique` replaced by composite (accountId, userId).
466
- # - Task 249: `preference_category` index replaced by (accountId, userId, category).
467
- # - Task 748: `knowledge_fulltext` (3 labels) replaced by `entity_search` (~40 labels)
459
+ #: `user_profile_account_unique` replaced by composite (accountId, userId).
460
+ #: `preference_category` index replaced by (accountId, userId, category).
461
+ #: `knowledge_fulltext` (3 labels) replaced by `entity_search` (~40 labels)
468
462
  # with the universal label/property union. The new index is created by the
469
463
  # schema apply below; dropping the old name here is what lets cypher-shell
470
464
  # run both in one pass without conflict.
@@ -500,10 +494,10 @@ if [ -n "${USER_ID:-}" ]; then
500
494
  CREATED_AT=$(date -u +%Y-%m-%dT%H:%M:%SZ)
501
495
 
502
496
  echo "==> Creating AdminUser node for userId=$USER_ID"
503
- # Task 912 — stamp accountId + role='owner' at seed so the graph-write gate's
497
+ # stamp accountId + role='owner' at seed so the graph-write gate's
504
498
  # account-scoped MATCH (au:AdminUser {accountId: $accountId}) succeeds on the
505
499
  # first user-domain write. Pre-912 the seed only set name + createdAt, leaving
506
- # accountId NULL and tripping the Task 685 gate on every fresh install. The
500
+ # accountId NULL and tripping the gate on every fresh install. The
507
501
  # ON MATCH branch COALESCEs to preserve any existing non-null value.
508
502
  "$CYPHER_SHELL" -u "$NEO4J_USER" -p "$NEO4J_PASSWORD" -a "$NEO4J_URI" << CYPHER_EOF
509
503
  MERGE (au:AdminUser {userId: '$USER_ID'})
@@ -523,12 +517,12 @@ CYPHER_EOF
523
517
  echo " [seed] AdminUser stamped userId=${USER_ID:0:8} accountId=${ACCOUNT_ID:0:8} role=owner"
524
518
 
525
519
  # ------------------------------------------------------------------
526
- # 3b. Backfill orphaned conversations (Task 380)
520
+ # 3b. Backfill orphaned conversations
527
521
  # ------------------------------------------------------------------
528
522
  # When userId was regenerated on every install, conversations created with
529
523
  # previous userIds became invisible. Reassign them to the current userId.
530
524
  # Scoped to this accountId. Only touches conversations where userId is set
531
- # but doesn't match the current user (NULL userId is Task 378's domain).
525
+ # but doesn't match the current user (NULL userId is the domain).
532
526
  echo "==> Backfilling orphaned admin conversations for userId=$USER_ID"
533
527
  BACKFILL_RESULT=$("$CYPHER_SHELL" -u "$NEO4J_USER" -p "$NEO4J_PASSWORD" -a "$NEO4J_URI" << BACKFILL_EOF
534
528
  MATCH (c:Conversation {accountId: '$ACCOUNT_ID', agentType: 'admin'})
@@ -542,7 +536,7 @@ BACKFILL_EOF
542
536
  fi
543
537
 
544
538
  # ------------------------------------------------------------------
545
- # 4. Sweep any legacy OnboardingState nodes (Task 068)
539
+ # 4. Sweep any legacy OnboardingState nodes
546
540
  # ------------------------------------------------------------------
547
541
  # The onboarding state machine is gone. Existing devices upgrading to this
548
542
  # release may still carry an :OnboardingState node from a prior install;
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # Task 929 — laptop VNC + Chromium boot acceptance test.
2
+ # laptop VNC + Chromium boot acceptance test.
3
3
  #
4
4
  # Asserts the four green conditions from .tasks/929 §Verification:
5
5
  # 1. The configured Chromium binary's realpath does NOT contain `/snap/`.
@@ -29,7 +29,7 @@ pass() { echo "OK: $*"; }
29
29
  [ -r "$BRAND_JSON" ] || fail "${BRAND_JSON} unreadable"
30
30
  command -v jq >/dev/null 2>&1 || fail "jq not on PATH (apt install jq)"
31
31
  CONFIG_DIR=$(jq -r '.configDir // ".maxy"' "$BRAND_JSON")
32
- # Task 959 — brand.json is the single source of truth for cdpPort at
32
+ # brand.json is the single source of truth for cdpPort at
33
33
  # runtime; a missing field is a doctrinal violation, not a fallback.
34
34
  if ! CDP_PORT=$(jq -er '.cdpPort' "$BRAND_JSON" 2>/dev/null); then
35
35
  _keys=$(jq -r 'keys | join(",")' "$BRAND_JSON" 2>/dev/null || echo "unparseable")
@@ -85,4 +85,4 @@ if ! echo "$TAIL_AFTER_START" | grep -q "VNC + browser stack running"; then
85
85
  fi
86
86
  pass "[4/4] ${VNC_LOG} reports VNC + browser stack running with no Chromium failed-to-start"
87
87
 
88
- echo "Task 929 acceptance: PASS (4/4)"
88
+ echo "acceptance: PASS (4/4)"
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # Pre-publish acceptance gate (Task 744).
2
+ # Pre-publish acceptance gate.
3
3
  #
4
4
  # Statically intersects what each shipped skill *prescribes* (every
5
5
  # backtick-quoted `mcp__<server>__<tool>` token in SKILL.md and references/*.md)
@@ -27,7 +27,22 @@ set -euo pipefail
27
27
  REPO_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
28
28
  cd "$REPO_ROOT"
29
29
 
30
- python3 - <<'PYEOF'
30
+ # Script uses PEP 604 union syntax (`X | None`); requires Python ≥3.10.
31
+ # macOS system /usr/bin/python3 is 3.9, so pin to the highest 3.10+ available.
32
+ PY=""
33
+ for cand in python3.13 python3.12 python3.11 python3.10; do
34
+ if command -v "$cand" >/dev/null 2>&1; then PY="$cand"; break; fi
35
+ done
36
+ if [ -z "$PY" ]; then
37
+ v=$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])')
38
+ case "$v" in 3.1[0-9]|3.[2-9][0-9]|[4-9].*) PY=python3 ;; esac
39
+ fi
40
+ if [ -z "$PY" ]; then
41
+ echo "FATAL: verify-skill-tool-surface needs Python >= 3.10 (PEP 604 syntax); none found" >&2
42
+ exit 1
43
+ fi
44
+
45
+ "$PY" - <<'PYEOF'
31
46
  import os, re, sys
32
47
 
33
48
  REPO_ROOT = os.getcwd()
@@ -21,7 +21,7 @@
21
21
  # brand.json at install time and re-read at runtime; missing fields are
22
22
  # derived from `vncDisplay` via the ordinal offset rule.
23
23
  #
24
- # Task 664 retired the admin-UI terminal surface entirely. This script
24
+ # retired the admin-UI terminal surface entirely. This script
25
25
  # no longer spawns GUI terminal emulators of any kind; upgrades and
26
26
  # cloudflare-setup actions run via the detached action runner
27
27
  # (/api/admin/actions/*) rather than an in-browser terminal.
@@ -42,7 +42,7 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
42
42
  PLATFORM_ROOT="${MAXY_PLATFORM_ROOT:-$(dirname "$SCRIPT_DIR")}"
43
43
  BRAND_JSON="${PLATFORM_ROOT}/config/brand.json"
44
44
 
45
- # Task 959 — brand.json is the single source of truth at runtime; missing
45
+ # brand.json is the single source of truth at runtime; missing
46
46
  # fields loud-fail rather than silently substituting a vncDisplay-derived
47
47
  # offset (silent-fallback-masks-root-cause recurrence). The install-time
48
48
  # offset rule in packages/create-maxy-code/src/index.ts stamps every brand at
@@ -88,7 +88,7 @@ mkdir -p "$LOG_DIR"
88
88
 
89
89
  log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG_FILE"; }
90
90
 
91
- # Task 929 — resolve the absolute Chromium binary path from the install-time
91
+ # resolve the absolute Chromium binary path from the install-time
92
92
  # config file. The installer (packages/create-maxy-code/src/index.ts
93
93
  # ensureNonSnapChromium + writeChromiumBinaryPathFile) writes this file with
94
94
  # the non-snap binary chosen for this device — `/usr/bin/chromium` on Pi
@@ -129,7 +129,7 @@ CHROMIUM_CONFINEMENT="non-snap"
129
129
  log "[vnc.sh:chromium] bin=${CHROMIUM_BIN} realpath=${CHROMIUM_REALPATH} confinement=${CHROMIUM_CONFINEMENT}"
130
130
 
131
131
  kill_stale() {
132
- # Brand-scoped matchers (Task 553): pkill on --user-data-dir narrows the
132
+ # Brand-scoped matchers: pkill on --user-data-dir narrows the
133
133
  # Chromium kill to this brand's profile only, so two brands on the same
134
134
  # device do not stomp on each other. Xtigervnc matcher narrows to this
135
135
  # brand's display number.
@@ -163,7 +163,7 @@ kill_stale() {
163
163
  # Refuse to start when this brand's display is already held by an unrelated
164
164
  # process (e.g. a peer brand's Xtigervnc whose vncDisplay collides, or a
165
165
  # manual Xvfb invocation). Loud-fail so the operator sees the held-by-pid
166
- # rather than silently sharing a display with another stack. Task 553.
166
+ # rather than silently sharing a display with another stack..
167
167
  check_display_collision() {
168
168
  local lock="/tmp/.X${VNC_DISPLAY_NUM}-lock"
169
169
  local socket="/tmp/.X11-unix/X${VNC_DISPLAY_NUM}"
@@ -187,7 +187,7 @@ check_display_collision() {
187
187
  exit 1
188
188
  }
189
189
 
190
- # Task 924 — refuse to start when any of the three brand-scoped ports
190
+ # refuse to start when any of the three brand-scoped ports
191
191
  # (rfbport, websockify, CDP) is held by an unrelated process. Mirrors
192
192
  # check_display_collision's loud-fail format and exits non-zero so the
193
193
  # operator sees the held-by-pid rather than silently sharing the port.
@@ -302,7 +302,7 @@ start_chrome_on() {
302
302
  >> "$LOG_FILE" 2>&1 &
303
303
 
304
304
  if wait_for_port "${CDP_PORT}"; then
305
- # Log-only observability (Task 632): the display-membership invariant is
305
+ # Log-only observability: the display-membership invariant is
306
306
  # asserted but does NOT gate success here. Chromium does not D-Bus-delegate
307
307
  # its window creation, so the failure mode is not currently reachable — but
308
308
  # making the invariant visible now means future backend swaps (e.g.
@@ -323,7 +323,7 @@ start_chrome() {
323
323
  }
324
324
 
325
325
  # ---------------------------------------------------------------------------
326
- # Task 664 retired the admin-UI terminal surface entirely: the header
326
+ # retired the admin-UI terminal surface entirely: the header
327
327
  # TerminalOverlay + UpdateModal embedded terminal stack is gone. Only
328
328
  # the Chromium surface remains for BrowserOverlay.
329
329
  # ---------------------------------------------------------------------------
@@ -379,7 +379,7 @@ start_chrome_native() {
379
379
  >> "$LOG_FILE" 2>&1 &
380
380
 
381
381
  if wait_for_port "${CDP_PORT}"; then
382
- # Log-only observability (Task 632) — see start_chrome_on for rationale.
382
+ # Log-only observability — see start_chrome_on for rationale.
383
383
  # On Wayland sessions xdotool cannot inspect the compositor, so this
384
384
  # check is x11-only; fall back to unconditional windowPresent=unknown.
385
385
  if [ "$NATIVE_SESSION_TYPE" = "x11" ] && check_window_on_display "${NATIVE_DISPLAY}"; then
@@ -12,10 +12,24 @@ export interface ManagerConfig {
12
12
  claudeBin: string;
13
13
  spawnCwd: string;
14
14
  urlCaptureTimeoutMs: number;
15
+ /** upper bound on the spawn-time bridge-binding race. The
16
+ * spawn promise blocks until the jsonl-observer binds a JSONL to the
17
+ * captured URL's bridge suffix; on timeout the PTY is killed and the
18
+ * spawn returns 504. */
19
+ observeTimeoutMs: number;
15
20
  killGraceMs: number;
16
21
  jsonlReadMaxBytes: number;
17
22
  host: HostResolution;
18
- /** Task 013 per-`role=public` spawn rate limit. Loaded from
23
+ /** per-account directory resolved at boot. Mirrors the
24
+ * installer's `resolveInstallAccountId` walk: the first sub-directory of
25
+ * `<installDir>/data/accounts/` containing `account.json`. Per-spawn the
26
+ * composer reads `<accountDir>/agents/<role>/{IDENTITY.md,SOUL.md}` and
27
+ * injects them as `<identity>` / `<soul>` sentinels in the
28
+ * `--append-system-prompt` block; absence of an account dir refuses
29
+ * manager start with `account-dir-unresolved` (no silent fallback to
30
+ * stock Claude Code). */
31
+ accountDir: string;
32
+ /** per-`role=public` spawn rate limit. Loaded from
19
33
  * `brand.json.publicSpawnLimits` if present, else defaults; env vars
20
34
  * `MAXY_PUBLIC_SPAWN_CAP` / `MAXY_PUBLIC_SPAWN_WINDOW_MS` override every
21
35
  * per-channel bucket (operator escape hatch). */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD;;4DAEwD;IACxD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,cAAc,CAAA;IACpB;;;qDAGiD;IACjD,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AA6HD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAmC9E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD;;4DAEwD;IACxD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B;;;6BAGyB;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;;;8BAO0B;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB;;;qDAGiD;IACjD,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAuJD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAkD9E"}
@@ -1,9 +1,10 @@
1
- import { existsSync, readFileSync } from 'node:fs';
1
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
2
2
  import { homedir, hostname, networkInterfaces } from 'node:os';
3
- import { join } from 'node:path';
3
+ import { dirname, join } from 'node:path';
4
4
  import { DEFAULT_PUBLIC_SPAWN_LIMITS, } from './spawn-rate-limiter.js';
5
5
  const DEFAULT_PORT = 19400;
6
6
  const DEFAULT_URL_TIMEOUT_MS = 30_000;
7
+ const DEFAULT_OBSERVE_TIMEOUT_MS = 5_000;
7
8
  const DEFAULT_KILL_GRACE_MS = 5_000;
8
9
  const DEFAULT_JSONL_READ_MAX_BYTES = 1 * 1024 * 1024;
9
10
  const DEFAULT_BRAND_PORT = 19200;
@@ -103,6 +104,33 @@ function resolveLanIPv4() {
103
104
  const names = Object.keys(ifaces).join(',') || '(no interfaces detected)';
104
105
  return { ip: null, diagnostic: `no non-loopback IPv4 across interfaces: ${names}` };
105
106
  }
107
+ /** walk `<installDir>/data/accounts/` for the first sub-directory
108
+ * containing `account.json`. Mirrors the installer's `resolveInstallAccountId`
109
+ * (packages/create-maxy-code/src/index.ts) so the runtime reads the same
110
+ * account the installer wrote. Returns null when no account is found; the
111
+ * caller surfaces `account-dir-unresolved` and refuses to start.
112
+ *
113
+ * `installDir` = parent of `PLATFORM_ROOT` (the systemd unit passes
114
+ * `PLATFORM_ROOT=<installDir>/platform`, so `dirname()` is exact). */
115
+ function resolveAccountDir(platformRoot) {
116
+ const installDir = dirname(platformRoot);
117
+ const accountsRoot = join(installDir, 'data', 'accounts');
118
+ if (!existsSync(accountsRoot))
119
+ return null;
120
+ let entries;
121
+ try {
122
+ entries = readdirSync(accountsRoot);
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ for (const entry of entries) {
128
+ const candidate = join(accountsRoot, entry);
129
+ if (existsSync(join(candidate, 'account.json')))
130
+ return candidate;
131
+ }
132
+ return null;
133
+ }
106
134
  function resolveBrandPort(env) {
107
135
  const raw = env.MAXY_BRAND_PORT ?? env.PORT;
108
136
  if (!raw)
@@ -121,6 +149,17 @@ export function loadConfig(env = process.env) {
121
149
  const claudeBin = env.CLAUDE_BIN ?? 'claude';
122
150
  const spawnCwd = env.CLAUDE_SESSION_MANAGER_SPAWN_CWD ?? process.cwd();
123
151
  const brand = loadBrand(env);
152
+ const platformRoot = env.PLATFORM_ROOT ?? env.MAXY_PLATFORM_ROOT;
153
+ if (!platformRoot) {
154
+ // `loadBrand` already validates this, but Typescript narrowing needs the
155
+ // re-check here so `resolveAccountDir` sees a non-undefined string.
156
+ throw new Error('[claude-session-manager] PLATFORM_ROOT unresolved after loadBrand — internal error');
157
+ }
158
+ const accountDir = resolveAccountDir(platformRoot);
159
+ if (!accountDir) {
160
+ throw new Error(`[claude-session-manager] account-dir-unresolved: no <installDir>/data/accounts/<uuid>/account.json under ${dirname(platformRoot)}/data/accounts. ` +
161
+ 'The installer (seed-neo4j.sh / writeInstallDefaults) must run before manager start.');
162
+ }
124
163
  const lan = resolveLanIPv4();
125
164
  const brandPort = resolveBrandPort(env);
126
165
  const osHost = hostname();
@@ -134,6 +173,7 @@ export function loadConfig(env = process.env) {
134
173
  claudeBin,
135
174
  spawnCwd,
136
175
  urlCaptureTimeoutMs: DEFAULT_URL_TIMEOUT_MS,
176
+ observeTimeoutMs: DEFAULT_OBSERVE_TIMEOUT_MS,
137
177
  killGraceMs: DEFAULT_KILL_GRACE_MS,
138
178
  jsonlReadMaxBytes: DEFAULT_JSONL_READ_MAX_BYTES,
139
179
  host: {
@@ -143,6 +183,7 @@ export function loadConfig(env = process.env) {
143
183
  tunnelUrl,
144
184
  lanIPv4Diagnostic: lan.diagnostic,
145
185
  },
186
+ accountDir,
146
187
  publicSpawnLimits: applyEnvOverride(brand.fields.publicSpawnLimits, env),
147
188
  };
148
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,10 @@ export interface HttpDeps extends Omit<SpawnDeps, 'store' | 'onJsonlObserved'> {
7
7
  store: SessionStore;
8
8
  killGraceMs: number;
9
9
  jsonlReadMaxBytes: number;
10
- /** Task 013 — gates `POST /spawn role=public` on per-(senderId, channel)
10
+ /** gates `POST /spawn role=public` on per-(senderId, channel)
11
11
  * and global token buckets. `admin` spawns bypass entirely. */
12
12
  publicSpawnLimiter: RateLimiter;
13
- /** Task 013 — attaches a JSONL tail watcher to each `role=public` session
13
+ /** attaches a JSONL tail watcher to each `role=public` session
14
14
  * so tool_use→tool_result pairs emit `tool-call` log lines without an
15
15
  * operator having to parse the transcript by hand. */
16
16
  publicToolAudit: AuditRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAA4E,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAI3H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAc3D,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC5E,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB;oEACgE;IAChE,kBAAkB,EAAE,WAAW,CAAA;IAC/B;;2DAEuD;IACvD,eAAe,EAAE,aAAa,CAAA;CAC/B;AA2ED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAwgBjD"}
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAA4E,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAK3H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AA+C3D,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC5E,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB;oEACgE;IAChE,kBAAkB,EAAE,WAAW,CAAA;IAC/B;;2DAEuD;IACvD,eAAe,EAAE,aAAa,CAAA;CAC/B;AAgED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CA+iBjD"}