@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.
- package/dist/__tests__/account-id-env.test.js +1 -1
- package/dist/__tests__/apt-resolve.test.js +7 -7
- package/dist/__tests__/brew-install.test.js +1 -1
- package/dist/__tests__/brew-resolve.test.js +1 -1
- package/dist/__tests__/cdp-port-no-silent-fallback.test.js +4 -4
- package/dist/__tests__/init-logging.test.js +1 -1
- package/dist/__tests__/launchd-plist.test.js +1 -1
- package/dist/__tests__/macos-version.test.js +1 -1
- package/dist/__tests__/peer-brand-detect.test.js +1 -1
- package/dist/__tests__/platform-detect.test.js +2 -2
- package/dist/__tests__/port-canonicalisation.test.js +1 -1
- package/dist/__tests__/preflight-port-classifier.test.js +6 -6
- package/dist/__tests__/samba-provision.test.js +1 -1
- package/dist/__tests__/snap-chromium.test.js +1 -1
- package/dist/apt-resolve.js +5 -5
- package/dist/brew-install.js +1 -1
- package/dist/brew-resolve.js +3 -3
- package/dist/index.js +146 -122
- package/dist/init-logging.js +1 -1
- package/dist/launchd-plist.js +1 -1
- package/dist/macos-version.js +2 -2
- package/dist/peer-brand-detect.js +1 -1
- package/dist/pinned-binaries.js +1 -1
- package/dist/platform-detect.js +1 -1
- package/dist/port-resolution.js +2 -2
- package/dist/preflight-port-classifier.js +3 -3
- package/dist/samba-provision.js +1 -1
- package/dist/snap-chromium.js +3 -3
- package/dist/uninstall.js +28 -28
- package/package.json +1 -1
- package/payload/docs/desktop-code-controls.md +63 -0
- package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.js +1 -1
- package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.js.map +1 -1
- package/payload/platform/lib/account-enumeration/dist/index.d.ts +1 -1
- package/payload/platform/lib/account-enumeration/src/__tests__/validate-env.test.ts +1 -1
- package/payload/platform/lib/account-enumeration/src/index.ts +1 -1
- package/payload/platform/lib/admins-write/dist/index.js +3 -3
- package/payload/platform/lib/admins-write/dist/index.js.map +1 -1
- package/payload/platform/lib/admins-write/src/index.ts +4 -4
- package/payload/platform/lib/entitlement/dist/index.d.ts +1 -1
- package/payload/platform/lib/entitlement/dist/index.js +2 -2
- package/payload/platform/lib/entitlement/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.js +1 -1
- package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.js.map +1 -1
- package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.d.ts +3 -3
- package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.js +3 -3
- package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.d.ts +1 -1
- package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.js +1 -1
- package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.d.ts +1 -1
- package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.js +1 -1
- package/payload/platform/lib/graph-mcp/dist/cypher-validate.d.ts +1 -1
- package/payload/platform/lib/graph-mcp/dist/cypher-validate.js +1 -1
- package/payload/platform/lib/graph-mcp/dist/index.d.ts +1 -1
- package/payload/platform/lib/graph-mcp/dist/index.js +24 -24
- package/payload/platform/lib/graph-mcp/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-mcp/dist/schema-cache.d.ts +1 -1
- package/payload/platform/lib/graph-mcp/dist/schema-cache.js +2 -2
- package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.d.ts +3 -3
- package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.js +3 -3
- package/payload/platform/lib/graph-mcp/src/__tests__/warnings-envelope.test.ts +1 -1
- package/payload/platform/lib/graph-mcp/src/cypher-rewrite-stamp.ts +3 -3
- package/payload/platform/lib/graph-mcp/src/cypher-shim-read.ts +1 -1
- package/payload/platform/lib/graph-mcp/src/cypher-shim-write.ts +1 -1
- package/payload/platform/lib/graph-mcp/src/cypher-validate.ts +1 -1
- package/payload/platform/lib/graph-mcp/src/index.ts +29 -29
- package/payload/platform/lib/graph-mcp/src/schema-cache.ts +2 -2
- package/payload/platform/lib/graph-mcp/src/schema-cypher-parser.ts +3 -3
- package/payload/platform/lib/graph-search/dist/index.d.ts +12 -12
- package/payload/platform/lib/graph-search/dist/index.js +11 -11
- package/payload/platform/lib/graph-search/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-search/src/__tests__/bm25-label-gate.test.ts +2 -2
- package/payload/platform/lib/graph-search/src/__tests__/bm25-strong-bypass-threshold.test.ts +2 -2
- package/payload/platform/lib/graph-search/src/__tests__/brochure-threshold.test.ts +3 -3
- package/payload/platform/lib/graph-search/src/__tests__/expand-batch.test.ts +2 -2
- package/payload/platform/lib/graph-search/src/__tests__/fulltext-coverage.test.ts +6 -6
- package/payload/platform/lib/graph-search/src/__tests__/hybrid.test.ts +5 -5
- package/payload/platform/lib/graph-search/src/__tests__/vector-threshold.test.ts +2 -2
- package/payload/platform/lib/graph-search/src/index.ts +18 -18
- package/payload/platform/lib/graph-trash/dist/index.d.ts +3 -3
- package/payload/platform/lib/graph-trash/dist/index.js +3 -3
- package/payload/platform/lib/graph-trash/src/index.ts +3 -3
- package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js +4 -4
- package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js.map +1 -1
- package/payload/platform/lib/graph-write/dist/audit.d.ts +2 -2
- package/payload/platform/lib/graph-write/dist/audit.js +2 -2
- package/payload/platform/lib/graph-write/dist/conversation-provenance.js +1 -1
- package/payload/platform/lib/graph-write/dist/conversation-provenance.js.map +1 -1
- package/payload/platform/lib/graph-write/dist/index.d.ts +5 -5
- package/payload/platform/lib/graph-write/dist/index.js +12 -12
- package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
- package/payload/platform/lib/graph-write/src/__tests__/action-provenance-gate.test.ts +4 -4
- package/payload/platform/lib/graph-write/src/audit.ts +2 -2
- package/payload/platform/lib/graph-write/src/conversation-provenance.ts +1 -1
- package/payload/platform/lib/graph-write/src/index.ts +13 -13
- package/payload/platform/lib/mcp-eager/dist/index.d.ts +2 -2
- package/payload/platform/lib/mcp-eager/dist/index.js +2 -2
- package/payload/platform/lib/mcp-eager/src/index.ts +2 -2
- package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts +2 -2
- package/payload/platform/lib/mcp-spawn-tee/dist/index.js +2 -2
- package/payload/platform/lib/mcp-spawn-tee/src/index.ts +2 -2
- package/payload/platform/lib/mcp-stderr-tee/dist/index.d.ts +1 -1
- package/payload/platform/lib/mcp-stderr-tee/dist/index.js +4 -4
- package/payload/platform/lib/mcp-stderr-tee/dist/index.js.map +1 -1
- package/payload/platform/lib/mcp-stderr-tee/src/index.ts +4 -4
- package/payload/platform/lib/oauth-llm/dist/index.d.ts +4 -4
- package/payload/platform/lib/oauth-llm/dist/index.js +3 -3
- package/payload/platform/lib/oauth-llm/dist/index.js.map +1 -1
- package/payload/platform/lib/oauth-llm/src/index.ts +6 -6
- package/payload/platform/lib/persistent-components/dist/index.d.ts +1 -1
- package/payload/platform/lib/persistent-components/dist/index.js +1 -1
- package/payload/platform/lib/persistent-components/src/index.ts +1 -1
- package/payload/platform/lib/task-secrets/dist/index.js +1 -1
- package/payload/platform/lib/task-secrets/dist/index.js.map +1 -1
- package/payload/platform/lib/task-secrets/src/__tests__/redact-secrets.test.ts +1 -1
- package/payload/platform/lib/task-secrets/src/index.ts +1 -1
- package/payload/platform/neo4j/edge-annotations.json +9 -9
- package/payload/platform/neo4j/schema.cypher +32 -33
- package/payload/platform/package.json +2 -2
- package/payload/platform/plugins/admin/PLUGIN.md +0 -2
- package/payload/platform/plugins/admin/hooks/__tests__/archive-ingest-surface-gate.test.sh +4 -4
- package/payload/platform/plugins/admin/hooks/__tests__/playwright-file-guard.test.sh +1 -1
- package/payload/platform/plugins/admin/hooks/__tests__/pre-tool-use-base64-guard.test.sh +1 -1
- package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +13 -13
- package/payload/platform/plugins/admin/hooks/pre-tool-use.sh +7 -7
- package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js +2 -2
- package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js +1 -1
- package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.js +2 -2
- package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.js +1 -1
- package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/index.js +38 -65
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js +2 -2
- package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js +2 -2
- package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js +5 -5
- package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js.map +1 -1
- package/payload/platform/plugins/admin/skills/plugin-management/SKILL.md +1 -1
- package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +0 -1
- package/payload/platform/plugins/admin/skills/publish-site/SKILL.md +1 -1
- package/payload/platform/plugins/admin/skills/unzip-attachment/SKILL.md +2 -2
- package/payload/platform/plugins/cloudflare/mcp/dist/index.js +1 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +1 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +6 -6
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +1 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts +2 -2
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +2 -2
- package/payload/platform/plugins/cloudflare/references/dashboard-guide.md +1 -1
- package/payload/platform/plugins/cloudflare/references/manual-setup.md +4 -4
- package/payload/platform/plugins/cloudflare/scripts/__tests__/tunnel-ingress.test.ts +1 -1
- package/payload/platform/plugins/cloudflare/scripts/_stream-log.sh +8 -8
- package/payload/platform/plugins/cloudflare/scripts/list-cf-domains.sh +2 -2
- package/payload/platform/plugins/cloudflare/scripts/list-cf-domains.ts +16 -16
- package/payload/platform/plugins/cloudflare/scripts/reset-tunnel.sh +1 -1
- package/payload/platform/plugins/cloudflare/scripts/setup-tunnel.sh +28 -28
- package/payload/platform/plugins/cloudflare/scripts/tunnel-ingress.ts +5 -5
- package/payload/platform/plugins/cloudflare/skills/setup-tunnel/SKILL.md +3 -3
- package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js +2 -2
- package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.d.ts +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.js +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +2 -2
- package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js +1 -1
- package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js.map +1 -1
- package/payload/platform/plugins/docs/references/deployment.md +30 -1
- package/payload/platform/plugins/docs/references/plugins-guide.md +2 -5
- package/payload/platform/plugins/docs/references/troubleshooting.md +3 -3
- package/payload/platform/plugins/email/mcp/dist/index.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +2 -2
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js +2 -2
- package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/screening.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +6 -6
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +2 -2
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -1
- package/payload/platform/plugins/email/references/email-reference.md +2 -2
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js +3 -3
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/loop/mcp/src/lib/neo4j.ts +3 -3
- package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +24 -24
- package/payload/platform/plugins/memory/bin/conversation-archive-ingest.sh +6 -6
- package/payload/platform/plugins/memory/mcp/dist/index.js +8 -8
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +33 -33
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +12 -12
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +3 -3
- package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js +1 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.d.ts +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js +6 -6
- package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js +7 -7
- package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +9 -9
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +25 -25
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +5 -5
- package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts +4 -4
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js +3 -3
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.d.ts +3 -3
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js +5 -5
- package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/uuid.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/uuid.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js +5 -5
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js +4 -4
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js +6 -6
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +7 -7
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js +3 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +3 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts +3 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js +2 -2
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +9 -9
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +10 -11
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +3 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +9 -9
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +5 -5
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +9 -9
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/scripts/boot-smoke.sh +1 -1
- package/payload/platform/plugins/memory/mcp/scripts/graph/fixture.cypher +1 -1
- package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -2
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/scripts/verify-doc-impl.sh +1 -1
- package/payload/platform/plugins/scheduling/PLUGIN.md +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.js +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js +3 -3
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts +2 -2
- package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js +5 -5
- package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +6 -6
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/tasks/mcp/dist/index.js +1 -1
- package/payload/platform/plugins/tasks/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.js +2 -2
- package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/tasks/mcp/dist/tools/project-create.js +2 -2
- package/payload/platform/plugins/tasks/mcp/dist/tools/project-create.js.map +1 -1
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.d.ts +1 -1
- package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.d.ts.map +1 -1
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.d.ts +5 -5
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.js +3 -3
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.js.map +1 -1
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.d.ts +4 -4
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.js +2 -2
- package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.js +2 -2
- package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.js.map +1 -1
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js +2 -2
- package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js +3 -3
- package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js.map +1 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts +1 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js +3 -3
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js.map +1 -1
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js +5 -5
- package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js.map +1 -1
- package/payload/platform/plugins/whatsapp/mcp/dist/call-api.d.ts +1 -1
- package/payload/platform/plugins/whatsapp/mcp/dist/call-api.js +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/index.js +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.d.ts +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.js +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js +2 -2
- package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +4 -4
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js.map +1 -1
- package/payload/platform/plugins/workflows/mcp/test-workflows.sh +2 -2
- package/payload/platform/scripts/__tests__/first-token-creates-stream-log.test.sh +1 -1
- package/payload/platform/scripts/__tests__/logs-read-prefix.sh +6 -6
- package/payload/platform/scripts/admin-conversation-recover.mjs +5 -5
- package/payload/platform/scripts/admin-persist-audit.ts +4 -4
- package/payload/platform/scripts/check-no-conversation-id-leaks.mjs +1 -1
- package/payload/platform/scripts/check-no-direct-clipboard.mjs +1 -1
- package/payload/platform/scripts/check-no-task-id-leaks.mjs +2 -2
- package/payload/platform/scripts/check-skill-load-coverage.mjs +1 -1
- package/payload/platform/scripts/component-knowledgedoc-backfill.ts +1 -1
- package/payload/platform/scripts/dedupe-userprofile-ghosts.sh +2 -2
- package/payload/platform/scripts/generate-entitlement-fixture.mjs +1 -1
- package/payload/platform/scripts/installer-device-verify.sh +6 -6
- package/payload/platform/scripts/lib/resolve-account-dir.sh +6 -6
- package/payload/platform/scripts/log-adherence-check.sh +3 -3
- package/payload/platform/scripts/logs-read.sh +13 -13
- package/payload/platform/scripts/logs-read.test.sh +1 -1
- package/payload/platform/scripts/migrate-import.sh +4 -4
- package/payload/platform/scripts/redact-install-logs.sh +1 -1
- package/payload/platform/scripts/seed-neo4j.sh +26 -32
- package/payload/platform/scripts/test-laptop-vnc-boot.sh +3 -3
- package/payload/platform/scripts/verify-skill-tool-surface.sh +17 -2
- package/payload/platform/scripts/vnc.sh +9 -9
- package/payload/platform/services/claude-session-manager/dist/config.d.ts +15 -1
- package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/config.js +43 -2
- package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +2 -2
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +133 -90
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +21 -3
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +2 -2
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +4 -4
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +2 -2
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +42 -17
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +116 -48
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js +1 -1
- package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +36 -11
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.js +53 -2
- package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js +2 -2
- package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +60 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js +169 -11
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/types.d.ts +8 -1
- package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/url-capture.js +1 -1
- package/payload/platform/services/claude-session-manager/dist/url-capture.js.map +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +14 -0
- package/payload/platform/templates/agents/admin/SOUL.md +1 -3
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -3
- package/payload/platform/templates/specialists/agents/project-manager.md +1 -1
- package/payload/platform/templates/systemd/edge.service.template +3 -3
- package/payload/premium-plugins/real-agent/BUNDLE.md +2 -4
- package/payload/premium-plugins/real-agent/plugins/.claude-plugin/marketplace.json +0 -5
- package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/neo4j.js +3 -3
- package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/neo4j.js.map +1 -1
- package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/lib/neo4j.ts +3 -3
- package/payload/server/{chunk-ZGJ6CUU2.js → chunk-3G6JMV7N.js} +1 -1
- package/payload/server/{chunk-KVGTWNKQ.js → chunk-NNHHGQJL.js} +314 -5
- package/payload/server/{chunk-RZQMYJVY.js → chunk-QC5LHYPH.js} +3 -3
- package/payload/server/{cloudflare-task-tracker-4PKOLE4H.js → cloudflare-task-tracker-NEB3X6O2.js} +2 -2
- package/payload/server/maxy-edge.js +2 -2
- package/payload/server/public/assets/{admin-Cuu1QdAA.js → admin-CF2ZQvXu.js} +1 -1
- package/payload/server/public/index.html +1 -1
- package/payload/server/server.js +274 -396
- package/payload/platform/plugins/anthropic/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/anthropic/PLUGIN.md +0 -40
- package/payload/platform/plugins/anthropic/references/console-api.md +0 -186
- package/payload/platform/plugins/anthropic/references/setup-guide.md +0 -36
- package/payload/platform/plugins/anthropic/skills/get-api-key/SKILL.md +0 -136
- package/payload/platform/plugins/estate-onboarding/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/estate-onboarding/PLUGIN.md +0 -30
- package/payload/platform/plugins/estate-onboarding/skills/bootstrap/SKILL.md +0 -26
- package/payload/platform/plugins/estate-onboarding/skills/bootstrap/references/onboarding-flow.md +0 -63
- package/payload/premium-plugins/real-agent/plugins/estate-onboarding/.claude-plugin/plugin.json +0 -8
- package/payload/premium-plugins/real-agent/plugins/estate-onboarding/PLUGIN.md +0 -30
- package/payload/premium-plugins/real-agent/plugins/estate-onboarding/skills/bootstrap/SKILL.md +0 -26
- 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
|
|
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
|
-
#
|
|
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
|
|
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
|
-
#
|
|
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
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
130
|
+
# Writer-side emits `sk_<hex16>` filenames; the underscore must
|
|
131
131
|
# stay in this regex or every post-1008 file becomes unretrievable
|
|
132
|
-
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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>`
|
|
282
|
-
# near the top of the script.
|
|
283
|
-
# after the
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
@@ -116,11 +116,11 @@ echo "[import] Account dir: $ACCOUNT_DIR"
|
|
|
116
116
|
# ------------------------------------------------------------------
|
|
117
117
|
# Neo4j connection
|
|
118
118
|
# ------------------------------------------------------------------
|
|
119
|
-
# NEO4J_URI is hard-required
|
|
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
|
|
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
|
|
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
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
114
|
-
# ingest path replaces the WhatsApp-specific
|
|
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
|
-
|
|
203
|
-
|
|
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
|
|
239
|
-
#
|
|
240
|
-
|
|
241
|
-
|
|
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
|
|
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
|
-
#
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
466
|
-
|
|
467
|
-
|
|
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
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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 "
|
|
88
|
+
echo "acceptance: PASS (4/4)"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Pre-publish acceptance gate
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
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
|
|
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
|
-
#
|
|
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
|
|
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
|
-
#
|
|
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
|
|
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
|
-
/**
|
|
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;
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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;
|
|
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"}
|