crewly 1.20.280 → 1.20.282

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 (80) hide show
  1. package/config/hooks/live-checkout-guard/guard.mjs +452 -0
  2. package/config/skills/agent/core/receive-file/SKILL.md +53 -0
  3. package/config/skills/agent/core/receive-file/execute.sh +125 -0
  4. package/config/skills/agent/core/receive-file/execute.test.sh +80 -0
  5. package/config/skills/agent/core/send-file/SKILL.md +62 -0
  6. package/config/skills/agent/core/send-file/execute.sh +145 -0
  7. package/config/skills/agent/core/send-file/execute.test.sh +81 -0
  8. package/dist/backend/backend/src/constants.d.ts +30 -1
  9. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  10. package/dist/backend/backend/src/constants.js +38 -0
  11. package/dist/backend/backend/src/constants.js.map +1 -1
  12. package/dist/backend/backend/src/controllers/apps/apps.controller.d.ts +12 -0
  13. package/dist/backend/backend/src/controllers/apps/apps.controller.d.ts.map +1 -1
  14. package/dist/backend/backend/src/controllers/apps/apps.controller.js +41 -0
  15. package/dist/backend/backend/src/controllers/apps/apps.controller.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/apps/apps.routes.d.ts +4 -0
  17. package/dist/backend/backend/src/controllers/apps/apps.routes.d.ts.map +1 -1
  18. package/dist/backend/backend/src/controllers/apps/apps.routes.js +12 -1
  19. package/dist/backend/backend/src/controllers/apps/apps.routes.js.map +1 -1
  20. package/dist/backend/backend/src/controllers/connector/remote-mcp-proxy.controller.d.ts +5 -0
  21. package/dist/backend/backend/src/controllers/connector/remote-mcp-proxy.controller.d.ts.map +1 -1
  22. package/dist/backend/backend/src/controllers/connector/remote-mcp-proxy.controller.js +42 -1
  23. package/dist/backend/backend/src/controllers/connector/remote-mcp-proxy.controller.js.map +1 -1
  24. package/dist/backend/backend/src/controllers/connector/remote-mcp-tool-policy.d.ts +72 -0
  25. package/dist/backend/backend/src/controllers/connector/remote-mcp-tool-policy.d.ts.map +1 -0
  26. package/dist/backend/backend/src/controllers/connector/remote-mcp-tool-policy.js +113 -0
  27. package/dist/backend/backend/src/controllers/connector/remote-mcp-tool-policy.js.map +1 -0
  28. package/dist/backend/backend/src/index.d.ts.map +1 -1
  29. package/dist/backend/backend/src/index.js +25 -1
  30. package/dist/backend/backend/src/index.js.map +1 -1
  31. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +4 -1
  32. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  33. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +11 -2
  34. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  35. package/dist/backend/backend/src/services/agent/credential-guard.service.d.ts +3 -2
  36. package/dist/backend/backend/src/services/agent/credential-guard.service.d.ts.map +1 -1
  37. package/dist/backend/backend/src/services/agent/credential-guard.service.js +12 -4
  38. package/dist/backend/backend/src/services/agent/credential-guard.service.js.map +1 -1
  39. package/dist/backend/backend/src/services/agent/live-checkout-guard.service.d.ts +45 -0
  40. package/dist/backend/backend/src/services/agent/live-checkout-guard.service.d.ts.map +1 -0
  41. package/dist/backend/backend/src/services/agent/live-checkout-guard.service.js +109 -0
  42. package/dist/backend/backend/src/services/agent/live-checkout-guard.service.js.map +1 -0
  43. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +13 -7
  45. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  46. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  47. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
  48. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  49. package/dist/backend/backend/src/utils/boot-owner-alert.d.ts +33 -0
  50. package/dist/backend/backend/src/utils/boot-owner-alert.d.ts.map +1 -0
  51. package/dist/backend/backend/src/utils/boot-owner-alert.js +60 -0
  52. package/dist/backend/backend/src/utils/boot-owner-alert.js.map +1 -0
  53. package/dist/backend/backend/src/utils/build-provenance.d.ts +38 -0
  54. package/dist/backend/backend/src/utils/build-provenance.d.ts.map +1 -1
  55. package/dist/backend/backend/src/utils/build-provenance.js +63 -1
  56. package/dist/backend/backend/src/utils/build-provenance.js.map +1 -1
  57. package/dist/backend/build-info.json +2 -2
  58. package/dist/cli/backend/src/constants.d.ts +30 -1
  59. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  60. package/dist/cli/backend/src/constants.js +38 -0
  61. package/dist/cli/backend/src/constants.js.map +1 -1
  62. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +4 -1
  63. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  64. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +11 -2
  65. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  66. package/dist/cli/backend/src/services/agent/credential-guard.service.d.ts +3 -2
  67. package/dist/cli/backend/src/services/agent/credential-guard.service.d.ts.map +1 -1
  68. package/dist/cli/backend/src/services/agent/credential-guard.service.js +12 -4
  69. package/dist/cli/backend/src/services/agent/credential-guard.service.js.map +1 -1
  70. package/dist/cli/backend/src/services/agent/live-checkout-guard.service.d.ts +45 -0
  71. package/dist/cli/backend/src/services/agent/live-checkout-guard.service.d.ts.map +1 -0
  72. package/dist/cli/backend/src/services/agent/live-checkout-guard.service.js +109 -0
  73. package/dist/cli/backend/src/services/agent/live-checkout-guard.service.js.map +1 -0
  74. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  75. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +13 -7
  76. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  77. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  78. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
  79. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  80. package/package.json +1 -1
@@ -632,6 +632,8 @@ export const CONTROL_PLANE_GUARD_CONSTANTS = {
632
632
  'config/hooks/subagent-guard',
633
633
  // The credential guard (specs/2026-10-04-agent-credential-isolation.md).
634
634
  'config/hooks/credential-guard',
635
+ // The live-checkout guard: an agent must not be able to switch it off.
636
+ 'config/hooks/live-checkout-guard',
635
637
  'dist',
636
638
  ],
637
639
  /** Write-protected files under the install root. */
@@ -639,6 +641,23 @@ export const CONTROL_PLANE_GUARD_CONSTANTS = {
639
641
  /** Write-protected directories under the agent's project path (whole subtree). */
640
642
  PROJECT_DIRS: ['.claude/agents', '.crewly/triggers'],
641
643
  };
644
+ /**
645
+ * Live-checkout guard: agents may not change the checkout the running Crewly
646
+ * is built from (git state changes or file edits). Incident 2026-10-08/09: an
647
+ * agent switched branches in it and the next restart refused to start.
648
+ */
649
+ export const LIVE_CHECKOUT_GUARD_CONSTANTS = {
650
+ /** Backend env var; `0` turns the guard off for sessions launched by this backend. */
651
+ KILL_SWITCH_ENV: 'CREWLY_LIVE_CHECKOUT_GUARD',
652
+ /** Value of KILL_SWITCH_ENV that disables the guard. */
653
+ KILL_SWITCH_OFF_VALUE: '0',
654
+ /** The hook script (node), relative to the install root. */
655
+ HOOK_SCRIPT: 'config/hooks/live-checkout-guard/guard.mjs',
656
+ /** Claude Code tools the hook is attached to. */
657
+ CLAUDE_MATCHER: 'Bash|Edit|Write|MultiEdit|NotebookEdit',
658
+ /** Codex tools the hook is attached to (shell, plus its patch tool). */
659
+ CODEX_MATCHER: 'Bash|apply_patch|Edit|Write',
660
+ };
642
661
  /**
643
662
  * Credential guard (specs/2026-10-04-agent-credential-isolation.md, layer 2):
644
663
  * a pre-tool hook, on every runtime that has one, that refuses an agent's
@@ -7280,6 +7299,25 @@ export const REMOTE_MCP_CONSTANTS = {
7280
7299
  MAX_TOOL_NAMES: 50,
7281
7300
  /** Catalog presets the add form offers. */
7282
7301
  PROVIDERS: ['zoho', 'custom'],
7302
+ /**
7303
+ * Tools an AGENT may never call through the proxy, per server kind (the
7304
+ * server's provider, or its id when it has none). Compared after
7305
+ * trim + NFKC + lower-casing, so case and width tricks do not bypass it.
7306
+ * Zoho has no draft tool: a draft is a mode of sendEmail, so one missing
7307
+ * field sends mail. Mail is only ever drafted through the backend's
7308
+ * draft-only path (CREW-400). resendVerification* mails an address a
7309
+ * verification link; denied too since an agent has no reason to trigger it.
7310
+ */
7311
+ DENIED_AGENT_TOOLS: {
7312
+ zoho: [
7313
+ 'ZohoMail_sendEmail',
7314
+ 'ZohoMail_sendReplyEmail',
7315
+ 'ZohoMail_resendVerificationReplyToAdmin',
7316
+ 'ZohoMail_resendVerificationReplyToSelf',
7317
+ ],
7318
+ },
7319
+ /** Message an agent gets when it calls a denied tool. */
7320
+ DENIED_TOOL_MESSAGE: 'sending mail is not allowed for agents; save a draft instead',
7283
7321
  /**
7284
7322
  * OAuth state (clients, tokens, pending sign-ins) under CREWLY_HOME:
7285
7323
  * AES-256-GCM with the install's master key, mode 0600.