@rubytech/create-sitedesk-code 0.1.506 → 0.1.508

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 (117) hide show
  1. package/package.json +2 -2
  2. package/payload/platform/config/brand.json +101 -18
  3. package/payload/platform/lib/account-schema-regions/dist/index.d.ts +17 -5
  4. package/payload/platform/lib/account-schema-regions/dist/index.d.ts.map +1 -1
  5. package/payload/platform/lib/account-schema-regions/dist/index.js +20 -6
  6. package/payload/platform/lib/account-schema-regions/dist/index.js.map +1 -1
  7. package/payload/platform/lib/account-schema-regions/src/index.ts +20 -6
  8. package/payload/platform/plugins/admin/PLUGIN.md +46 -5
  9. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +138 -14
  10. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +14 -0
  11. package/payload/platform/plugins/aeo/PLUGIN.md +3 -0
  12. package/payload/platform/plugins/browser/PLUGIN.md +18 -0
  13. package/payload/platform/plugins/connector/PLUGIN.md +4 -0
  14. package/payload/platform/plugins/contacts/PLUGIN.md +9 -0
  15. package/payload/platform/plugins/docs/references/admin-ui.md +111 -13
  16. package/payload/platform/plugins/docs/references/plugins-guide.md +26 -0
  17. package/payload/platform/plugins/email/PLUGIN.md +17 -0
  18. package/payload/platform/plugins/filesystem/PLUGIN.md +6 -0
  19. package/payload/platform/plugins/google/PLUGIN.md +12 -0
  20. package/payload/platform/plugins/graph/PLUGIN.md +3 -0
  21. package/payload/platform/plugins/graph-viewer/PLUGIN.md +1 -0
  22. package/payload/platform/plugins/ledger/PLUGIN.md +7 -0
  23. package/payload/platform/plugins/memory/PLUGIN.md +47 -3
  24. package/payload/platform/plugins/outlook/PLUGIN.md +24 -0
  25. package/payload/platform/plugins/quickbooks/PLUGIN.md +15 -0
  26. package/payload/platform/plugins/replicate/PLUGIN.md +3 -0
  27. package/payload/platform/plugins/scheduling/PLUGIN.md +10 -0
  28. package/payload/platform/plugins/storage-broker/PLUGIN.md +12 -0
  29. package/payload/platform/plugins/telegram/PLUGIN.md +3 -0
  30. package/payload/platform/plugins/url-get/PLUGIN.md +1 -0
  31. package/payload/platform/plugins/voice-mirror/PLUGIN.md +5 -0
  32. package/payload/platform/plugins/whatsapp/PLUGIN.md +12 -0
  33. package/payload/platform/plugins/work/PLUGIN.md +15 -0
  34. package/payload/platform/plugins/workflows/PLUGIN.md +8 -0
  35. package/payload/platform/scripts/__tests__/provision-honours-disabled-agents.test.sh +84 -0
  36. package/payload/platform/scripts/check-risk-class.mjs +150 -0
  37. package/payload/platform/scripts/check-specialist-tool-surface.mjs +5 -2
  38. package/payload/platform/scripts/lib/__pycache__/account-schema-owned-dirs.cpython-314.pyc +0 -0
  39. package/payload/platform/scripts/lib/canonical-tool-names.mjs +7 -4
  40. package/payload/platform/scripts/lib/provision-account-dir.sh +47 -1
  41. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts +1 -1
  42. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts.map +1 -1
  43. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js +56 -3
  44. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js.map +1 -1
  45. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  46. package/payload/platform/services/claude-session-manager/dist/http-server.js +4 -0
  47. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  48. package/payload/platform/services/claude-session-manager/dist/index.js +8 -0
  49. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  50. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +32 -5
  51. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -1
  52. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +83 -19
  53. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
  54. package/payload/premium-plugins/sitedesk/plugins/sitedesk-job/PLUGIN.md +4 -0
  55. package/payload/server/{chunk-5ADBNEJA.js → chunk-2WAXM5N2.js} +111 -111
  56. package/payload/server/maxy-edge.js +1 -1
  57. package/payload/server/public/activity.html +5 -5
  58. package/payload/server/public/agents.html +4 -4
  59. package/payload/server/public/assets/{AdminLoginScreens-D5KOQA8S.js → AdminLoginScreens-DKeCt1uf.js} +1 -1
  60. package/payload/server/public/assets/{AdminShell-C8wazpnz.js → AdminShell-HeELCCjJ.js} +1 -1
  61. package/payload/server/public/assets/{activity-CFqkDhTs.js → activity-BEIDAxDA.js} +1 -1
  62. package/payload/server/public/assets/admin-C0-WU1sf.js +1 -0
  63. package/payload/server/public/assets/agents-DjUvMFTj.js +1 -0
  64. package/payload/server/public/assets/{browser-T_5xbnJh.js → browser-GkVTGqlb.js} +1 -1
  65. package/payload/server/public/assets/{calendar-CKjuiG8c.js → calendar-CSqJeFEg.js} +1 -1
  66. package/payload/server/public/assets/chat-C0Ps84U5.js +1 -0
  67. package/payload/server/public/assets/chevron-left-DQ2uNlu9.js +1 -0
  68. package/payload/server/public/assets/chevron-right-C4QCiRGD.js +1 -0
  69. package/payload/server/public/assets/clock-BEeQ7JxX.js +1 -0
  70. package/payload/server/public/assets/data-CGuNfym7.js +1 -0
  71. package/payload/server/public/assets/{file-text-c6cA4Evd.js → file-text-DiscM2pP.js} +1 -1
  72. package/payload/server/public/assets/{graph-DIk-o45J.js → graph-CRP5DM8C.js} +1 -1
  73. package/payload/server/public/assets/{graph-labels-5bjxhC_p.js → graph-labels-Du-6KoBE.js} +1 -1
  74. package/payload/server/public/assets/{maximize-2-BCQkFb1_.js → maximize-2-D-H_uIV-.js} +1 -1
  75. package/payload/server/public/assets/{operator-0UnNo2ms.js → operator-D5rA76YY.js} +1 -1
  76. package/payload/server/public/assets/page-CHK1415C.js +1 -0
  77. package/payload/server/public/assets/{page-HVtUfub2.js → page-DZE3H_n4.js} +4 -4
  78. package/payload/server/public/assets/{public-CKEYyIPn.js → public-DFHXVkdD.js} +1 -1
  79. package/payload/server/public/assets/{rotate-ccw-dTpO5dhL.js → rotate-ccw-CesEJsuO.js} +1 -1
  80. package/payload/server/public/assets/{routines-C6P1-Dto.js → routines-DYMYY_r8.js} +1 -1
  81. package/payload/server/public/assets/{skills-ClrpVqlz.js → skills-67jtJ16D.js} +1 -1
  82. package/payload/server/public/assets/{tasks-C8SNhSFC.js → tasks-D2C2a-uk.js} +1 -1
  83. package/payload/server/public/assets/{time-entry-format-CCO6N6XZ.js → time-entry-format-BixTGQAd.js} +1 -1
  84. package/payload/server/public/assets/{triangle-alert-CHjdKpag.js → triangle-alert-Co9RWb9q.js} +1 -1
  85. package/payload/server/public/assets/{useCopyFeedback-BTUu3-l8.js → useCopyFeedback-7zwf9_w4.js} +1 -1
  86. package/payload/server/public/assets/useSubAccountSwitcher-Bg72hdQ8.js +9 -0
  87. package/payload/server/public/assets/useSubAccountSwitcher-DE4v5_Fz.css +1 -0
  88. package/payload/server/public/assets/{useVoiceRecorder-BeNqxmm2.js → useVoiceRecorder-CZDDiwMD.js} +1 -1
  89. package/payload/server/public/assets/{wrench-CeNnc7oO.js → wrench-CjQqdj4P.js} +1 -1
  90. package/payload/server/public/brand/fonts/inter-400.woff2 +0 -0
  91. package/payload/server/public/brand/fonts/inter-500.woff2 +0 -0
  92. package/payload/server/public/brand/fonts/inter-600.woff2 +0 -0
  93. package/payload/server/public/brand/fonts/inter-700.woff2 +0 -0
  94. package/payload/server/public/brand/fonts/inter-800.woff2 +0 -0
  95. package/payload/server/public/brand-defaults.css +83 -5
  96. package/payload/server/public/browser.html +4 -4
  97. package/payload/server/public/calendar.html +7 -7
  98. package/payload/server/public/chat.html +13 -13
  99. package/payload/server/public/data.html +11 -11
  100. package/payload/server/public/graph.html +9 -9
  101. package/payload/server/public/index.html +14 -14
  102. package/payload/server/public/operator.html +14 -14
  103. package/payload/server/public/public.html +13 -13
  104. package/payload/server/public/routines.html +6 -6
  105. package/payload/server/public/skills.html +5 -5
  106. package/payload/server/public/tasks.html +6 -6
  107. package/payload/server/server.js +1584 -837
  108. package/payload/server/public/assets/admin-B-EGUWS4.js +0 -1
  109. package/payload/server/public/assets/agents-DPulfmrd.js +0 -1
  110. package/payload/server/public/assets/chat-DWLYAA70.js +0 -1
  111. package/payload/server/public/assets/chevron-left-DBMCTKlT.js +0 -1
  112. package/payload/server/public/assets/chevron-right-SBAr6zzc.js +0 -1
  113. package/payload/server/public/assets/clock-kkzt7Scf.js +0 -1
  114. package/payload/server/public/assets/data-CV8N9qcy.js +0 -1
  115. package/payload/server/public/assets/page-JJa2xdzf.js +0 -1
  116. package/payload/server/public/assets/useSubAccountSwitcher-DSW9vDi2.js +0 -9
  117. package/payload/server/public/assets/useSubAccountSwitcher-DyrH8DA8.css +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-sitedesk-code",
3
- "version": "0.1.506",
3
+ "version": "0.1.508",
4
4
  "description": "Install SiteDesk — automated back office for independent building contractors",
5
5
  "bin": {
6
6
  "create-sitedesk-code": "./dist/index.js"
@@ -13,7 +13,7 @@
13
13
  "build": "tsc",
14
14
  "bundle": "node scripts/bundle.js",
15
15
  "test": "npm run build && node --test 'dist/__tests__/*.test.js'",
16
- "prepublishOnly": "bash ../../platform/scripts/verify-skill-tool-surface.sh && node ../../platform/scripts/check-plugin-tools-mcp-consistency.mjs && node ../../platform/scripts/check-specialist-tool-surface.mjs && node ../../platform/scripts/check-agent-contract.mjs && node ../../platform/scripts/check-routing-prose-bash.mjs && node ../../platform/scripts/check-no-task-id-leaks.mjs && node ../../platform/scripts/check-no-esm-require.mjs && node ../../platform/scripts/check-no-raw-mcp-registrations.mjs && node ../../platform/scripts/check-skill-load-coverage.mjs && node ../../platform/scripts/check-architecture-skill-no-drift.mjs && node ../../platform/ui/scripts/check-route-wiring.mjs && node ../../platform/ui/scripts/check-edge-admin-routes.mjs && npm run build && node --test 'dist/__tests__/*.test.js' && chmod +x dist/index.js && npm run bundle && bash ../../platform/scripts/smoke-boot-services.sh && node ../../platform/ui/scripts/check-bundle-node-imports.mjs --dir=./payload/server/public/assets"
16
+ "prepublishOnly": "bash ../../platform/scripts/verify-skill-tool-surface.sh && node ../../platform/scripts/check-plugin-tools-mcp-consistency.mjs && node ../../platform/scripts/check-risk-class.mjs && node ../../platform/scripts/check-specialist-tool-surface.mjs && node ../../platform/scripts/check-agent-contract.mjs && node ../../platform/scripts/check-routing-prose-bash.mjs && node ../../platform/scripts/check-no-task-id-leaks.mjs && node ../../platform/scripts/check-no-esm-require.mjs && node ../../platform/scripts/check-no-raw-mcp-registrations.mjs && node ../../platform/scripts/check-skill-load-coverage.mjs && node ../../platform/scripts/check-architecture-skill-no-drift.mjs && node ../../platform/ui/scripts/check-brand-fonts.mjs && node ../../platform/ui/scripts/check-route-wiring.mjs && node ../../platform/ui/scripts/check-edge-admin-routes.mjs && npm run build && node --test 'dist/__tests__/*.test.js' && chmod +x dist/index.js && npm run bundle && bash ../../platform/scripts/smoke-boot-services.sh && node ../../platform/ui/scripts/check-bundle-node-imports.mjs --dir=./payload/server/public/assets"
17
17
  },
18
18
  "files": [
19
19
  "dist",
@@ -18,9 +18,13 @@
18
18
  "googleClientSecret": "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",
19
19
  "commercialMode": false,
20
20
  "vertical": "schema-construction",
21
- "shipsPremiumBundles": ["sitedesk"],
22
- "primaryContainer": { "label": "Job", "term": "Jobs" },
23
-
21
+ "shipsPremiumBundles": [
22
+ "sitedesk"
23
+ ],
24
+ "primaryContainer": {
25
+ "label": "Job",
26
+ "term": "Jobs"
27
+ },
24
28
  "defaultColors": {
25
29
  "primary": "#ea7232",
26
30
  "primaryHover": "#CE642C",
@@ -30,14 +34,11 @@
30
34
  "background": "#FAFAF8",
31
35
  "agentBubble": "#ECECE6"
32
36
  },
33
-
34
37
  "defaultFonts": {
35
38
  "display": "'Inter', -apple-system, BlinkMacSystemFont, sans-serif",
36
39
  "body": "'Inter', -apple-system, BlinkMacSystemFont, sans-serif"
37
40
  },
38
-
39
41
  "logoContainsName": true,
40
-
41
42
  "assets": {
42
43
  "logo": "sitedesk-square.png",
43
44
  "icon": "sitedesk-monochrome.png",
@@ -47,27 +48,69 @@
47
48
  "appIcon192": "sitedesk-app-icon-192.png",
48
49
  "maskableIcon": "sitedesk-app-icon-maskable-512.png"
49
50
  },
50
-
51
51
  "npm": {
52
52
  "packageName": "@rubytech/create-sitedesk-code",
53
53
  "binName": "create-sitedesk-code",
54
54
  "author": "Rubytech LLC"
55
55
  },
56
-
57
56
  "plugins": {
58
- "core": ["admin", "memory", "docs", "cloudflare", "anthropic", "workflows", "work", "ledger", "scheduling", "email", "contacts", "projects", "prompt-optimiser", "browser"],
59
- "defaultEnabled": ["business-assistant", "web-designer"],
60
- "available": ["connector", "telegram", "deep-research", "whatsapp", "replicate", "linkedin-import", "notion-import", "obsidian-import", "x-import", "slides"],
61
- "excluded": ["sales", "joblogic"]
57
+ "core": [
58
+ "admin",
59
+ "memory",
60
+ "docs",
61
+ "cloudflare",
62
+ "anthropic",
63
+ "workflows",
64
+ "work",
65
+ "ledger",
66
+ "scheduling",
67
+ "email",
68
+ "contacts",
69
+ "projects",
70
+ "prompt-optimiser",
71
+ "browser"
72
+ ],
73
+ "defaultEnabled": [
74
+ "business-assistant",
75
+ "web-designer"
76
+ ],
77
+ "available": [
78
+ "connector",
79
+ "telegram",
80
+ "deep-research",
81
+ "whatsapp",
82
+ "replicate",
83
+ "linkedin-import",
84
+ "notion-import",
85
+ "obsidian-import",
86
+ "x-import",
87
+ "slides"
88
+ ],
89
+ "excluded": [
90
+ "sales",
91
+ "joblogic"
92
+ ]
62
93
  },
63
-
64
94
  "externalPlugins": [
65
- { "name": "discord", "marketplace": "claude-plugins-official", "channelPlugin": true },
66
- { "name": "imessage", "marketplace": "claude-plugins-official", "channelPlugin": true },
67
- { "name": "superpowers", "marketplace": "claude-plugins-official" },
68
- { "name": "code-review", "marketplace": "claude-plugins-official" }
95
+ {
96
+ "name": "discord",
97
+ "marketplace": "claude-plugins-official",
98
+ "channelPlugin": true
99
+ },
100
+ {
101
+ "name": "imessage",
102
+ "marketplace": "claude-plugins-official",
103
+ "channelPlugin": true
104
+ },
105
+ {
106
+ "name": "superpowers",
107
+ "marketplace": "claude-plugins-official"
108
+ },
109
+ {
110
+ "name": "code-review",
111
+ "marketplace": "claude-plugins-official"
112
+ }
69
113
  ],
70
-
71
114
  "consent": {
72
115
  "copy": {
73
116
  "title": "Before you browse this listing",
@@ -85,5 +128,45 @@
85
128
  "accentFg": "#FFFFFF",
86
129
  "border": "#E0E0DB"
87
130
  }
131
+ },
132
+ "fonts": {
133
+ "display": {
134
+ "family": "Inter",
135
+ "faces": [
136
+ {
137
+ "weight": 400,
138
+ "file": "inter-400.woff2"
139
+ },
140
+ {
141
+ "weight": 500,
142
+ "file": "inter-500.woff2"
143
+ },
144
+ {
145
+ "weight": 600,
146
+ "file": "inter-600.woff2"
147
+ },
148
+ {
149
+ "weight": 700,
150
+ "file": "inter-700.woff2"
151
+ },
152
+ {
153
+ "weight": 800,
154
+ "file": "inter-800.woff2"
155
+ }
156
+ ]
157
+ },
158
+ "body": {
159
+ "family": "Inter",
160
+ "faces": [
161
+ {
162
+ "weight": 400,
163
+ "file": "inter-400.woff2"
164
+ },
165
+ {
166
+ "weight": 500,
167
+ "file": "inter-500.woff2"
168
+ }
169
+ ]
170
+ }
88
171
  }
89
172
  }
@@ -22,11 +22,23 @@
22
22
  * behaviour so a future edit cannot reintroduce separator sensitivity.
23
23
  */
24
24
  /**
25
- * Operator-data buckets from the shipped template
26
- * (platform/templates/account-schema/SCHEMA.md). They carry no ontology row
27
- * because they are not entity buckets, but they hold the operator's own data,
28
- * so they are home on every brand. On a vertical with no `## Top-level node
29
- * types` table (schema-knowledge-work) they are the whole of home.
25
+ * Non-ontology buckets that are still the operator's own work, so they are home
26
+ * on every brand. They carry no ontology row because they are not entity
27
+ * buckets. On a vertical with no `## Top-level node types` table
28
+ * (schema-knowledge-work) they are the whole of home.
29
+ *
30
+ * The membership test is "would the operator go looking for this?", not "who
31
+ * writes it". `output`, `generated` and `extracted` hold delivered work product;
32
+ * `sites` holds published websites; `uploads` holds what a client sent in. The
33
+ * shipped template groups those five under "tool-owned", but that is a rule
34
+ * about not reorganising their internals — a write constraint, not a reason to
35
+ * file them behind the platform's own plumbing. What stays out is genuinely
36
+ * internal: caches, state, logs, secrets, temp, the git and Claude control
37
+ * dirs, and plugin workspaces.
38
+ *
39
+ * Every name here is created at provision (provision-account-dir.sh `_seed_dirs`),
40
+ * so the standing home-parity audit finds them on disk rather than reporting
41
+ * them missing.
30
42
  *
31
43
  * Lives here rather than in either consumer because both the /data page and the
32
44
  * standing reconcile audit must agree on the same set; a hand-synced copy in
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAAyD,CAAA;AAiBjG,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iEAAiE;IACjE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,gEAAgE;IAChE,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;;;OAOG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,cAAc,CAAA;CAChD;AAiCD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAazE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAEtC,CAAA;AAiBF,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iEAAiE;IACjE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,gEAAgE;IAChE,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;;;OAOG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,cAAc,CAAA;CAChD;AAiCD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAazE"}
@@ -26,17 +26,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.HOME_FIXED = void 0;
27
27
  exports.parseSchemaRegions = parseSchemaRegions;
28
28
  /**
29
- * Operator-data buckets from the shipped template
30
- * (platform/templates/account-schema/SCHEMA.md). They carry no ontology row
31
- * because they are not entity buckets, but they hold the operator's own data,
32
- * so they are home on every brand. On a vertical with no `## Top-level node
33
- * types` table (schema-knowledge-work) they are the whole of home.
29
+ * Non-ontology buckets that are still the operator's own work, so they are home
30
+ * on every brand. They carry no ontology row because they are not entity
31
+ * buckets. On a vertical with no `## Top-level node types` table
32
+ * (schema-knowledge-work) they are the whole of home.
33
+ *
34
+ * The membership test is "would the operator go looking for this?", not "who
35
+ * writes it". `output`, `generated` and `extracted` hold delivered work product;
36
+ * `sites` holds published websites; `uploads` holds what a client sent in. The
37
+ * shipped template groups those five under "tool-owned", but that is a rule
38
+ * about not reorganising their internals — a write constraint, not a reason to
39
+ * file them behind the platform's own plumbing. What stays out is genuinely
40
+ * internal: caches, state, logs, secrets, temp, the git and Claude control
41
+ * dirs, and plugin workspaces.
42
+ *
43
+ * Every name here is created at provision (provision-account-dir.sh `_seed_dirs`),
44
+ * so the standing home-parity audit finds them on disk rather than reporting
45
+ * them missing.
34
46
  *
35
47
  * Lives here rather than in either consumer because both the /data page and the
36
48
  * standing reconcile audit must agree on the same set; a hand-synced copy in
37
49
  * each build is precisely the drift this shared module exists to prevent.
38
50
  */
39
- exports.HOME_FIXED = Object.freeze(['projects', 'contacts', 'documents']);
51
+ exports.HOME_FIXED = Object.freeze([
52
+ 'projects', 'contacts', 'documents', 'output', 'generated', 'extracted', 'sites', 'uploads',
53
+ ]);
40
54
  const ONT_START = '<!-- ontology-buckets:start -->';
41
55
  const ONT_END = '<!-- ontology-buckets:end -->';
42
56
  const PLUGIN_START = '<!-- plugin-owned-dirs:start -->';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AAmGH,gDAaC;AA9GD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACU,QAAA,UAAU,GAAsB,MAAM,CAAC,MAAM,CAAC;IACzD,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS;CAC5F,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,iCAAiC,CAAA;AACnD,MAAM,OAAO,GAAG,+BAA+B,CAAA;AAC/C,MAAM,YAAY,GAAG,kCAAkC,CAAA;AACvD,MAAM,UAAU,GAAG,gCAAgC,CAAA;AACnD,MAAM,aAAa,GAAG,sBAAsB,CAAA;AAE5C;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,mBAAmB,CAAA;AA0BpC,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,MAAM,CAAC,KAAe;IAC7B,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACxC,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1C,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACzC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IACxB,OAAO,IAAI;SACR,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC;SACxB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAuB;IACxD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAA;IAC5G,CAAC;IACD,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA;IACzC,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAChE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACpE,eAAe;QACf,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc;KACvC,CAAA;AACH,CAAC"}
@@ -23,17 +23,31 @@
23
23
  */
24
24
 
25
25
  /**
26
- * Operator-data buckets from the shipped template
27
- * (platform/templates/account-schema/SCHEMA.md). They carry no ontology row
28
- * because they are not entity buckets, but they hold the operator's own data,
29
- * so they are home on every brand. On a vertical with no `## Top-level node
30
- * types` table (schema-knowledge-work) they are the whole of home.
26
+ * Non-ontology buckets that are still the operator's own work, so they are home
27
+ * on every brand. They carry no ontology row because they are not entity
28
+ * buckets. On a vertical with no `## Top-level node types` table
29
+ * (schema-knowledge-work) they are the whole of home.
30
+ *
31
+ * The membership test is "would the operator go looking for this?", not "who
32
+ * writes it". `output`, `generated` and `extracted` hold delivered work product;
33
+ * `sites` holds published websites; `uploads` holds what a client sent in. The
34
+ * shipped template groups those five under "tool-owned", but that is a rule
35
+ * about not reorganising their internals — a write constraint, not a reason to
36
+ * file them behind the platform's own plumbing. What stays out is genuinely
37
+ * internal: caches, state, logs, secrets, temp, the git and Claude control
38
+ * dirs, and plugin workspaces.
39
+ *
40
+ * Every name here is created at provision (provision-account-dir.sh `_seed_dirs`),
41
+ * so the standing home-parity audit finds them on disk rather than reporting
42
+ * them missing.
31
43
  *
32
44
  * Lives here rather than in either consumer because both the /data page and the
33
45
  * standing reconcile audit must agree on the same set; a hand-synced copy in
34
46
  * each build is precisely the drift this shared module exists to prevent.
35
47
  */
36
- export const HOME_FIXED: readonly string[] = Object.freeze(['projects', 'contacts', 'documents'])
48
+ export const HOME_FIXED: readonly string[] = Object.freeze([
49
+ 'projects', 'contacts', 'documents', 'output', 'generated', 'extracted', 'sites', 'uploads',
50
+ ])
37
51
 
38
52
  const ONT_START = '<!-- ontology-buckets:start -->'
39
53
  const ONT_END = '<!-- ontology-buckets:end -->'
@@ -6,117 +6,158 @@ tools:
6
6
  - name: system-status
7
7
  publicAllowlist: false
8
8
  adminAllowlist: false
9
+ riskClass: read
9
10
  - name: public-hostname
10
11
  publicAllowlist: false
11
12
  adminAllowlist: false
13
+ riskClass: read
12
14
  - name: admin-hostname
13
15
  publicAllowlist: false
14
16
  adminAllowlist: false
17
+ riskClass: read
15
18
  - name: publish-site
16
19
  publicAllowlist: false
17
20
  adminAllowlist: false
21
+ riskClass: write_local
18
22
  - name: brand-settings
19
23
  publicAllowlist: false
20
24
  adminAllowlist: false
25
+ riskClass: write_local
21
26
  - name: account-manage
22
27
  publicAllowlist: false
23
28
  adminAllowlist: false
29
+ riskClass: write_local
24
30
  - name: capabilities-here
25
31
  publicAllowlist: false
26
32
  adminAllowlist: false
33
+ riskClass: read
27
34
  - name: account-update
28
35
  publicAllowlist: false
29
36
  adminAllowlist: false
37
+ riskClass: write_local
30
38
  - name: account_list
31
39
  publicAllowlist: false
32
40
  adminAllowlist: true
41
+ riskClass: read
33
42
  - name: account_roster
34
43
  publicAllowlist: false
35
44
  adminAllowlist: true
45
+ riskClass: read
36
46
  - name: account_create
37
47
  publicAllowlist: false
38
48
  adminAllowlist: true
49
+ riskClass: write_local
39
50
  - name: account_reassign_admin
40
51
  publicAllowlist: false
41
52
  adminAllowlist: true
53
+ riskClass: write_local
42
54
  - name: account_set_owner_name
43
55
  publicAllowlist: false
44
56
  adminAllowlist: true
57
+ riskClass: write_local
45
58
  - name: account_delete
46
59
  publicAllowlist: false
47
60
  adminAllowlist: true
61
+ riskClass: write_local
48
62
  - name: account_purge
49
63
  publicAllowlist: false
50
64
  adminAllowlist: true
65
+ riskClass: write_local
51
66
  - name: account_channel_routing
52
67
  publicAllowlist: false
53
68
  adminAllowlist: true
69
+ riskClass: read
54
70
  - name: account_channel_routing_set
55
71
  publicAllowlist: false
56
72
  adminAllowlist: true
73
+ riskClass: write_local
57
74
  - name: admin-add
58
75
  publicAllowlist: false
59
76
  adminAllowlist: true
77
+ riskClass: write_local
60
78
  - name: admin-remove
61
79
  publicAllowlist: false
62
80
  adminAllowlist: true
81
+ riskClass: write_local
63
82
  - name: admin-list
64
83
  publicAllowlist: false
65
84
  adminAllowlist: true
85
+ riskClass: read
66
86
  - name: admin-update-pin
67
87
  publicAllowlist: false
68
88
  adminAllowlist: true
89
+ riskClass: write_local
69
90
  - name: agent-list
70
91
  publicAllowlist: false
71
92
  adminAllowlist: true
93
+ riskClass: read
72
94
  - name: agent-config-read
73
95
  publicAllowlist: false
74
96
  adminAllowlist: true
97
+ riskClass: read
75
98
  - name: logs-read
76
99
  publicAllowlist: false
77
100
  adminAllowlist: false
101
+ riskClass: read
78
102
  - name: cpu-triage-start
79
103
  publicAllowlist: false
80
104
  adminAllowlist: true
105
+ riskClass: exec
81
106
  - name: cpu-triage-read
82
107
  publicAllowlist: false
83
108
  adminAllowlist: true
109
+ riskClass: read
84
110
  - name: plugin-read
85
111
  publicAllowlist: false
86
112
  adminAllowlist: false
113
+ riskClass: read
87
114
  - name: skill-load
88
115
  publicAllowlist: false
89
116
  adminAllowlist: true
117
+ riskClass: read
90
118
  - name: skill-search
91
119
  publicAllowlist: false
92
120
  adminAllowlist: true
121
+ riskClass: read
93
122
  - name: store-skill
94
123
  publicAllowlist: false
95
124
  adminAllowlist: true
125
+ riskClass: write_local
96
126
  - name: session-reset
97
127
  publicAllowlist: false
98
128
  adminAllowlist: true
129
+ riskClass: write_local
99
130
  - name: session-resume
100
131
  publicAllowlist: false
101
132
  adminAllowlist: true
133
+ riskClass: write_local
102
134
  - name: action-pending
103
135
  publicAllowlist: false
104
136
  adminAllowlist: true
137
+ riskClass: read
105
138
  - name: action-approve
106
139
  publicAllowlist: false
107
140
  adminAllowlist: true
141
+ riskClass: external
108
142
  - name: action-reject
109
143
  publicAllowlist: false
110
144
  adminAllowlist: true
145
+ riskClass: write_local
111
146
  - name: action-edit
112
147
  publicAllowlist: false
113
148
  adminAllowlist: true
149
+ riskClass: write_local
114
150
  hidden:
115
- - remote-auth-status
116
- - remote-auth-set-password
117
- - remote-auth-revoke-password
118
- - qr-generate
119
- - wifi
151
+ - name: remote-auth-status
152
+ riskClass: read
153
+ - name: remote-auth-set-password
154
+ riskClass: write_local
155
+ - name: remote-auth-revoke-password
156
+ riskClass: write_local
157
+ - name: qr-generate
158
+ riskClass: write_local
159
+ - name: wifi
160
+ riskClass: exec
120
161
  always: true
121
162
  embed: false
122
163
  mcp: