@bevel-software/platform-core-backend 0.25.2 → 0.27.0

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 (733) hide show
  1. package/agent-guide/access-control.md +251 -0
  2. package/agent-guide/conventions.md +35 -0
  3. package/agent-guide/directory-structure.md +145 -0
  4. package/agent-guide/finding-things.md +7 -0
  5. package/agent-guide/html-views.md +83 -0
  6. package/agent-guide/introduction.md +27 -0
  7. package/agent-guide/new-knowledge-base.md +24 -0
  8. package/agent-guide/skills.md +47 -0
  9. package/agent-guide/tool-manuals.md +227 -0
  10. package/agent-guide/where-a-new-file-goes.md +36 -0
  11. package/dist/assets.d.ts +26 -0
  12. package/dist/assets.d.ts.map +1 -1
  13. package/dist/assets.js +35 -2
  14. package/dist/assets.js.map +1 -1
  15. package/dist/core/catalog-revision.d.ts +19 -1
  16. package/dist/core/catalog-revision.d.ts.map +1 -1
  17. package/dist/core/catalog-revision.js +14 -3
  18. package/dist/core/catalog-revision.js.map +1 -1
  19. package/dist/core/core-ports.d.ts +11 -0
  20. package/dist/core/core-ports.d.ts.map +1 -1
  21. package/dist/core/core-ports.js.map +1 -1
  22. package/dist/core/create-core-server.d.ts +5 -0
  23. package/dist/core/create-core-server.d.ts.map +1 -1
  24. package/dist/core/create-core-server.js +65 -3
  25. package/dist/core/create-core-server.js.map +1 -1
  26. package/dist/core/create-core-services.d.ts +35 -0
  27. package/dist/core/create-core-services.d.ts.map +1 -1
  28. package/dist/core/create-core-services.js +114 -12
  29. package/dist/core/create-core-services.js.map +1 -1
  30. package/dist/core/lifecycle.d.ts +16 -1
  31. package/dist/core/lifecycle.d.ts.map +1 -1
  32. package/dist/core/lifecycle.js +18 -1
  33. package/dist/core/lifecycle.js.map +1 -1
  34. package/dist/core-config.d.ts +21 -0
  35. package/dist/core-config.d.ts.map +1 -1
  36. package/dist/core-config.js +22 -1
  37. package/dist/core-config.js.map +1 -1
  38. package/dist/index.d.ts +1 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +2 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/modules/access/access-control.interface.d.ts +17 -0
  43. package/dist/modules/access/access-control.interface.d.ts.map +1 -1
  44. package/dist/modules/access/access-control.service.d.ts +2 -0
  45. package/dist/modules/access/access-control.service.d.ts.map +1 -1
  46. package/dist/modules/access/access-control.service.js +27 -0
  47. package/dist/modules/access/access-control.service.js.map +1 -1
  48. package/dist/modules/access/directory-sync-bot.js +1 -1
  49. package/dist/modules/access/directory-sync-bot.js.map +1 -1
  50. package/dist/modules/agent-guide/agent-guide.d.ts +145 -0
  51. package/dist/modules/agent-guide/agent-guide.d.ts.map +1 -0
  52. package/dist/modules/agent-guide/agent-guide.js +199 -0
  53. package/dist/modules/agent-guide/agent-guide.js.map +1 -0
  54. package/dist/modules/agent-guide/agent-guide.tools.d.ts +24 -0
  55. package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -0
  56. package/dist/modules/agent-guide/agent-guide.tools.js +100 -0
  57. package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -0
  58. package/dist/modules/agent-guide/index.d.ts +4 -0
  59. package/dist/modules/agent-guide/index.d.ts.map +1 -0
  60. package/dist/modules/agent-guide/index.js +4 -0
  61. package/dist/modules/agent-guide/index.js.map +1 -0
  62. package/dist/modules/agent-instructions/agent-instructions.routes.d.ts +3 -2
  63. package/dist/modules/agent-instructions/agent-instructions.routes.d.ts.map +1 -1
  64. package/dist/modules/agent-instructions/agent-instructions.routes.js +3 -2
  65. package/dist/modules/agent-instructions/agent-instructions.routes.js.map +1 -1
  66. package/dist/modules/agent-instructions/compose.d.ts +14 -6
  67. package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
  68. package/dist/modules/agent-instructions/compose.js +28 -8
  69. package/dist/modules/agent-instructions/compose.js.map +1 -1
  70. package/dist/modules/agent-instructions/index.d.ts +1 -1
  71. package/dist/modules/agent-instructions/index.d.ts.map +1 -1
  72. package/dist/modules/agent-instructions/index.js +1 -1
  73. package/dist/modules/agent-instructions/index.js.map +1 -1
  74. package/dist/modules/agent-instructions/shared-file-rules.d.ts +10 -50
  75. package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
  76. package/dist/modules/agent-instructions/shared-file-rules.js +51 -104
  77. package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
  78. package/dist/modules/audit/agent-audit.service.d.ts +21 -2
  79. package/dist/modules/audit/agent-audit.service.d.ts.map +1 -1
  80. package/dist/modules/audit/agent-audit.service.js +43 -2
  81. package/dist/modules/audit/agent-audit.service.js.map +1 -1
  82. package/dist/modules/audit/agent-connection.routes.d.ts +34 -0
  83. package/dist/modules/audit/agent-connection.routes.d.ts.map +1 -0
  84. package/dist/modules/audit/agent-connection.routes.js +38 -0
  85. package/dist/modules/audit/agent-connection.routes.js.map +1 -0
  86. package/dist/modules/audit/audit.contract.d.ts +24 -0
  87. package/dist/modules/audit/audit.contract.d.ts.map +1 -1
  88. package/dist/modules/audit/audit.contract.js.map +1 -1
  89. package/dist/modules/audit/index.d.ts +1 -0
  90. package/dist/modules/audit/index.d.ts.map +1 -1
  91. package/dist/modules/audit/index.js +1 -0
  92. package/dist/modules/audit/index.js.map +1 -1
  93. package/dist/modules/auth/account.routes.d.ts.map +1 -1
  94. package/dist/modules/auth/account.routes.js +10 -3
  95. package/dist/modules/auth/account.routes.js.map +1 -1
  96. package/dist/modules/auth/auth.middleware.d.ts +7 -0
  97. package/dist/modules/auth/auth.middleware.d.ts.map +1 -1
  98. package/dist/modules/auth/auth.middleware.js +1 -1
  99. package/dist/modules/auth/auth.middleware.js.map +1 -1
  100. package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -1
  101. package/dist/modules/code-mode/code-mode.tool.js +11 -3
  102. package/dist/modules/code-mode/code-mode.tool.js.map +1 -1
  103. package/dist/modules/database/core-schema.d.ts +96 -0
  104. package/dist/modules/database/core-schema.d.ts.map +1 -1
  105. package/dist/modules/database/core-schema.js +32 -3
  106. package/dist/modules/database/core-schema.js.map +1 -1
  107. package/dist/modules/embed/account-link.service.d.ts +42 -0
  108. package/dist/modules/embed/account-link.service.d.ts.map +1 -0
  109. package/dist/modules/embed/account-link.service.js +50 -0
  110. package/dist/modules/embed/account-link.service.js.map +1 -0
  111. package/dist/modules/embed/embed-link.d.ts +58 -0
  112. package/dist/modules/embed/embed-link.d.ts.map +1 -0
  113. package/dist/modules/embed/embed-link.js +160 -0
  114. package/dist/modules/embed/embed-link.js.map +1 -0
  115. package/dist/modules/embed/embed.errors.d.ts +30 -0
  116. package/dist/modules/embed/embed.errors.d.ts.map +1 -0
  117. package/dist/modules/embed/embed.errors.js +42 -0
  118. package/dist/modules/embed/embed.errors.js.map +1 -0
  119. package/dist/modules/embed/embed.interface.d.ts +204 -0
  120. package/dist/modules/embed/embed.interface.d.ts.map +1 -0
  121. package/dist/modules/embed/embed.interface.js +2 -0
  122. package/dist/modules/embed/embed.interface.js.map +1 -0
  123. package/dist/modules/embed/embed.routes.d.ts +59 -0
  124. package/dist/modules/embed/embed.routes.d.ts.map +1 -0
  125. package/dist/modules/embed/embed.routes.js +343 -0
  126. package/dist/modules/embed/embed.routes.js.map +1 -0
  127. package/dist/modules/embed/embed.service.d.ts +169 -0
  128. package/dist/modules/embed/embed.service.d.ts.map +1 -0
  129. package/dist/modules/embed/embed.service.js +627 -0
  130. package/dist/modules/embed/embed.service.js.map +1 -0
  131. package/dist/modules/embed/embed.tools.d.ts +51 -0
  132. package/dist/modules/embed/embed.tools.d.ts.map +1 -0
  133. package/dist/modules/embed/embed.tools.js +170 -0
  134. package/dist/modules/embed/embed.tools.js.map +1 -0
  135. package/dist/modules/embed/mcp-app.d.ts +64 -0
  136. package/dist/modules/embed/mcp-app.d.ts.map +1 -0
  137. package/dist/modules/embed/mcp-app.js +147 -0
  138. package/dist/modules/embed/mcp-app.js.map +1 -0
  139. package/dist/modules/embed/mcp-app.routes.d.ts +21 -0
  140. package/dist/modules/embed/mcp-app.routes.d.ts.map +1 -0
  141. package/dist/modules/embed/mcp-app.routes.js +36 -0
  142. package/dist/modules/embed/mcp-app.routes.js.map +1 -0
  143. package/dist/modules/github-app/github-app.connection.d.ts +15 -0
  144. package/dist/modules/github-app/github-app.connection.d.ts.map +1 -1
  145. package/dist/modules/github-app/github-app.connection.js +34 -3
  146. package/dist/modules/github-app/github-app.connection.js.map +1 -1
  147. package/dist/modules/kb-fs/locking-filesystem.d.ts +65 -0
  148. package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
  149. package/dist/modules/kb-fs/locking-filesystem.js +300 -0
  150. package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
  151. package/dist/modules/kb-sync/kb-sync.interface.d.ts +5 -0
  152. package/dist/modules/kb-sync/kb-sync.interface.d.ts.map +1 -1
  153. package/dist/modules/kb-sync/kb-sync.service.d.ts.map +1 -1
  154. package/dist/modules/kb-sync/kb-sync.service.js +6 -0
  155. package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
  156. package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
  157. package/dist/modules/mcp/mcp-auth.middleware.js +2 -1
  158. package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
  159. package/dist/modules/mcp/mcp.service.d.ts +57 -3
  160. package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
  161. package/dist/modules/mcp/mcp.service.js +177 -24
  162. package/dist/modules/mcp/mcp.service.js.map +1 -1
  163. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +24 -0
  164. package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
  165. package/dist/modules/mcp/oauth/bevel-oauth-provider.js +32 -4
  166. package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
  167. package/dist/modules/mcp/tool-schema-guard.d.ts +105 -0
  168. package/dist/modules/mcp/tool-schema-guard.d.ts.map +1 -0
  169. package/dist/modules/mcp/tool-schema-guard.js +171 -0
  170. package/dist/modules/mcp/tool-schema-guard.js.map +1 -0
  171. package/dist/modules/onboarding/onboarding.contract.d.ts +80 -0
  172. package/dist/modules/onboarding/onboarding.contract.d.ts.map +1 -0
  173. package/dist/modules/onboarding/onboarding.contract.js +7 -0
  174. package/dist/modules/onboarding/onboarding.contract.js.map +1 -0
  175. package/dist/modules/onboarding/onboarding.routes.d.ts +18 -0
  176. package/dist/modules/onboarding/onboarding.routes.d.ts.map +1 -0
  177. package/dist/modules/onboarding/onboarding.routes.js +81 -0
  178. package/dist/modules/onboarding/onboarding.routes.js.map +1 -0
  179. package/dist/modules/onboarding/starter-pack.service.d.ts +213 -0
  180. package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -0
  181. package/dist/modules/onboarding/starter-pack.service.js +492 -0
  182. package/dist/modules/onboarding/starter-pack.service.js.map +1 -0
  183. package/dist/modules/onboarding/starter-packs.d.ts +78 -0
  184. package/dist/modules/onboarding/starter-packs.d.ts.map +1 -0
  185. package/dist/modules/onboarding/starter-packs.js +156 -0
  186. package/dist/modules/onboarding/starter-packs.js.map +1 -0
  187. package/dist/modules/plugins/index.d.ts +1 -1
  188. package/dist/modules/plugins/index.d.ts.map +1 -1
  189. package/dist/modules/plugins/index.js +1 -1
  190. package/dist/modules/plugins/index.js.map +1 -1
  191. package/dist/modules/plugins/plugin-provision.service.d.ts +19 -0
  192. package/dist/modules/plugins/plugin-provision.service.d.ts.map +1 -1
  193. package/dist/modules/plugins/plugin-provision.service.js +18 -1
  194. package/dist/modules/plugins/plugin-provision.service.js.map +1 -1
  195. package/dist/modules/plugins/plugins.routes.d.ts +0 -36
  196. package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
  197. package/dist/modules/plugins/plugins.routes.js +31 -0
  198. package/dist/modules/plugins/plugins.routes.js.map +1 -1
  199. package/dist/modules/plugins/plugins.tools.d.ts +36 -2
  200. package/dist/modules/plugins/plugins.tools.d.ts.map +1 -1
  201. package/dist/modules/plugins/plugins.tools.js +71 -14
  202. package/dist/modules/plugins/plugins.tools.js.map +1 -1
  203. package/dist/modules/settings/deployment-settings.service.d.ts +34 -7
  204. package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
  205. package/dist/modules/settings/deployment-settings.service.js +148 -54
  206. package/dist/modules/settings/deployment-settings.service.js.map +1 -1
  207. package/dist/modules/settings/repository-source.d.ts +1 -0
  208. package/dist/modules/settings/repository-source.d.ts.map +1 -1
  209. package/dist/modules/settings/repository-source.js +3 -3
  210. package/dist/modules/settings/repository-source.js.map +1 -1
  211. package/dist/modules/settings/setup.routes.d.ts.map +1 -1
  212. package/dist/modules/settings/setup.routes.js +3 -6
  213. package/dist/modules/settings/setup.routes.js.map +1 -1
  214. package/dist/modules/skills/skills.tools.d.ts.map +1 -1
  215. package/dist/modules/skills/skills.tools.js +103 -43
  216. package/dist/modules/skills/skills.tools.js.map +1 -1
  217. package/dist/modules/tool-auth/connection-key-rejection.d.ts +10 -1
  218. package/dist/modules/tool-auth/connection-key-rejection.d.ts.map +1 -1
  219. package/dist/modules/tool-auth/connection-key-rejection.js +11 -3
  220. package/dist/modules/tool-auth/connection-key-rejection.js.map +1 -1
  221. package/dist/modules/tool-auth/external-api-key.interface.d.ts +8 -0
  222. package/dist/modules/tool-auth/external-api-key.interface.d.ts.map +1 -1
  223. package/dist/modules/tool-auth/external-api-key.service.d.ts +24 -2
  224. package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -1
  225. package/dist/modules/tool-auth/external-api-key.service.js +59 -2
  226. package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
  227. package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
  228. package/dist/modules/tool-auth/tool-auth.middleware.js +9 -4
  229. package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
  230. package/dist/modules/tool-helpers/index.d.ts +28 -1
  231. package/dist/modules/tool-helpers/index.d.ts.map +1 -1
  232. package/dist/modules/tool-helpers/index.js +28 -1
  233. package/dist/modules/tool-helpers/index.js.map +1 -1
  234. package/dist/modules/tool-helpers/route-argument-check.d.ts +10 -0
  235. package/dist/modules/tool-helpers/route-argument-check.d.ts.map +1 -0
  236. package/dist/modules/tool-helpers/route-argument-check.js +132 -0
  237. package/dist/modules/tool-helpers/route-argument-check.js.map +1 -0
  238. package/dist/modules/tool-helpers/route-tool-schemas.d.ts +89 -0
  239. package/dist/modules/tool-helpers/route-tool-schemas.d.ts.map +1 -0
  240. package/dist/modules/tool-helpers/route-tool-schemas.js +113 -0
  241. package/dist/modules/tool-helpers/route-tool-schemas.js.map +1 -0
  242. package/dist/modules/tool-helpers/tool-def.d.ts +71 -0
  243. package/dist/modules/tool-helpers/tool-def.d.ts.map +1 -1
  244. package/dist/modules/tool-helpers/tool-def.js +70 -6
  245. package/dist/modules/tool-helpers/tool-def.js.map +1 -1
  246. package/dist/modules/tool-helpers/tool-handler.d.ts +46 -6
  247. package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
  248. package/dist/modules/tool-helpers/tool-handler.js +157 -8
  249. package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
  250. package/dist/modules/tool-helpers/tool.contract.d.ts +9 -0
  251. package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
  252. package/dist/modules/tool-helpers/tool.contract.js.map +1 -1
  253. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +23 -4
  254. package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
  255. package/dist/modules/tool-manuals/tool-manuals.contract.js.map +1 -1
  256. package/dist/modules/tool-manuals/tool-manuals.service.d.ts +4 -0
  257. package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
  258. package/dist/modules/tool-manuals/tool-manuals.service.js +14 -0
  259. package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
  260. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +7 -0
  261. package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
  262. package/dist/modules/tool-manuals/tool-manuals.tools.js +77 -38
  263. package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
  264. package/dist/modules/tool-registry/description-length.d.ts +20 -16
  265. package/dist/modules/tool-registry/description-length.d.ts.map +1 -1
  266. package/dist/modules/tool-registry/description-length.js +50 -30
  267. package/dist/modules/tool-registry/description-length.js.map +1 -1
  268. package/dist/modules/tool-registry/guide-first.d.ts +27 -0
  269. package/dist/modules/tool-registry/guide-first.d.ts.map +1 -0
  270. package/dist/modules/tool-registry/guide-first.js +40 -0
  271. package/dist/modules/tool-registry/guide-first.js.map +1 -0
  272. package/dist/modules/tool-registry/tool-registry.d.ts +6 -0
  273. package/dist/modules/tool-registry/tool-registry.d.ts.map +1 -1
  274. package/dist/modules/tool-registry/tool-registry.js +9 -2
  275. package/dist/modules/tool-registry/tool-registry.js.map +1 -1
  276. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts +449 -0
  277. package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +1 -0
  278. package/dist/modules/workflow/agent-tools/change-request-read-shape.js +481 -0
  279. package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +1 -0
  280. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts +126 -0
  281. package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +1 -0
  282. package/dist/modules/workflow/agent-tools/change-request-read.tools.js +611 -0
  283. package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +1 -0
  284. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts +12 -1
  285. package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +1 -1
  286. package/dist/modules/workflow/agent-tools/change-request-summary.js +5 -1
  287. package/dist/modules/workflow/agent-tools/change-request-summary.js.map +1 -1
  288. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts +8 -1
  289. package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
  290. package/dist/modules/workflow/agent-tools/workflow.tools.js +133 -37
  291. package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
  292. package/dist/modules/workflow/file-lock.service.d.ts +29 -5
  293. package/dist/modules/workflow/file-lock.service.d.ts.map +1 -1
  294. package/dist/modules/workflow/file-lock.service.js +62 -5
  295. package/dist/modules/workflow/file-lock.service.js.map +1 -1
  296. package/dist/modules/workflow/git/git.service.d.ts +282 -14
  297. package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
  298. package/dist/modules/workflow/git/git.service.js +627 -126
  299. package/dist/modules/workflow/git/git.service.js.map +1 -1
  300. package/dist/modules/workflow/git/merge-commit.d.ts +73 -0
  301. package/dist/modules/workflow/git/merge-commit.d.ts.map +1 -0
  302. package/dist/modules/workflow/git/merge-commit.js +89 -0
  303. package/dist/modules/workflow/git/merge-commit.js.map +1 -0
  304. package/dist/modules/workflow/git/node-git-runner.d.ts +15 -0
  305. package/dist/modules/workflow/git/node-git-runner.d.ts.map +1 -1
  306. package/dist/modules/workflow/git/node-git-runner.js +78 -6
  307. package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
  308. package/dist/modules/workflow/git/pull-request.service.d.ts +94 -1
  309. package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -1
  310. package/dist/modules/workflow/git/pull-request.service.js +332 -37
  311. package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
  312. package/dist/modules/workflow/pending-commits.service.d.ts +15 -0
  313. package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -1
  314. package/dist/modules/workflow/pending-commits.service.js +25 -1
  315. package/dist/modules/workflow/pending-commits.service.js.map +1 -1
  316. package/dist/modules/workflow/pending-commits.worker.d.ts +6 -1
  317. package/dist/modules/workflow/pending-commits.worker.d.ts.map +1 -1
  318. package/dist/modules/workflow/pending-commits.worker.js +23 -6
  319. package/dist/modules/workflow/pending-commits.worker.js.map +1 -1
  320. package/dist/modules/workflow/recovery-bot.js +1 -1
  321. package/dist/modules/workflow/recovery-bot.js.map +1 -1
  322. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts +35 -0
  323. package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +1 -1
  324. package/dist/modules/workflow/review-workflow/review-workflow.service.js +180 -13
  325. package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -1
  326. package/dist/modules/workflow/sanitize-error.d.ts +16 -0
  327. package/dist/modules/workflow/sanitize-error.d.ts.map +1 -1
  328. package/dist/modules/workflow/sanitize-error.js +45 -0
  329. package/dist/modules/workflow/sanitize-error.js.map +1 -1
  330. package/dist/modules/workflow/workflow.routes.d.ts +6 -2
  331. package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
  332. package/dist/modules/workflow/workflow.routes.js +7 -2
  333. package/dist/modules/workflow/workflow.routes.js.map +1 -1
  334. package/dist/modules/workflow/workflow.service.d.ts +187 -15
  335. package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
  336. package/dist/modules/workflow/workflow.service.js +808 -106
  337. package/dist/modules/workflow/workflow.service.js.map +1 -1
  338. package/dist/modules/workspace/agent-download.builder.d.ts +105 -0
  339. package/dist/modules/workspace/agent-download.builder.d.ts.map +1 -0
  340. package/dist/modules/workspace/agent-download.builder.js +238 -0
  341. package/dist/modules/workspace/agent-download.builder.js.map +1 -0
  342. package/dist/modules/workspace/agent-download.routes.d.ts +77 -0
  343. package/dist/modules/workspace/agent-download.routes.d.ts.map +1 -0
  344. package/dist/modules/workspace/agent-download.routes.js +156 -0
  345. package/dist/modules/workspace/agent-download.routes.js.map +1 -0
  346. package/dist/modules/workspace/agent-download.store.d.ts +225 -0
  347. package/dist/modules/workspace/agent-download.store.d.ts.map +1 -0
  348. package/dist/modules/workspace/agent-download.store.js +423 -0
  349. package/dist/modules/workspace/agent-download.store.js.map +1 -0
  350. package/dist/modules/workspace/agent-upload.store.d.ts +10 -1
  351. package/dist/modules/workspace/agent-upload.store.d.ts.map +1 -1
  352. package/dist/modules/workspace/agent-upload.store.js +16 -6
  353. package/dist/modules/workspace/agent-upload.store.js.map +1 -1
  354. package/dist/modules/workspace/file-readers/raw-mime.d.ts +6 -0
  355. package/dist/modules/workspace/file-readers/raw-mime.d.ts.map +1 -0
  356. package/dist/modules/workspace/file-readers/raw-mime.js +38 -0
  357. package/dist/modules/workspace/file-readers/raw-mime.js.map +1 -0
  358. package/dist/modules/workspace/file-readers/text-reader.d.ts +5 -5
  359. package/dist/modules/workspace/file-readers/text-reader.d.ts.map +1 -1
  360. package/dist/modules/workspace/file-readers/text-reader.js +5 -8
  361. package/dist/modules/workspace/file-readers/text-reader.js.map +1 -1
  362. package/dist/modules/workspace/first-run.d.ts +111 -0
  363. package/dist/modules/workspace/first-run.d.ts.map +1 -0
  364. package/dist/modules/workspace/first-run.js +181 -0
  365. package/dist/modules/workspace/first-run.js.map +1 -0
  366. package/dist/modules/workspace/move-links.d.ts +92 -0
  367. package/dist/modules/workspace/move-links.d.ts.map +1 -0
  368. package/dist/modules/workspace/move-links.js +173 -0
  369. package/dist/modules/workspace/move-links.js.map +1 -0
  370. package/dist/modules/workspace/startup/steps/seed-tree.d.ts.map +1 -1
  371. package/dist/modules/workspace/startup/steps/seed-tree.js +24 -39
  372. package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
  373. package/dist/modules/workspace/startup/steps/template-files.step.d.ts +58 -52
  374. package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
  375. package/dist/modules/workspace/startup/steps/template-files.step.js +209 -223
  376. package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
  377. package/dist/modules/workspace/startup/steps/template-source.d.ts +5 -3
  378. package/dist/modules/workspace/startup/steps/template-source.d.ts.map +1 -1
  379. package/dist/modules/workspace/startup/steps/template-source.js +5 -3
  380. package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
  381. package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
  382. package/dist/modules/workspace/workspace.routes.js +63 -22
  383. package/dist/modules/workspace/workspace.routes.js.map +1 -1
  384. package/dist/modules/workspace/workspace.service.d.ts +75 -2
  385. package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
  386. package/dist/modules/workspace/workspace.service.js +197 -24
  387. package/dist/modules/workspace/workspace.service.js.map +1 -1
  388. package/dist/modules/workspace/workspace.tools.d.ts +68 -1
  389. package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
  390. package/dist/modules/workspace/workspace.tools.js +642 -71
  391. package/dist/modules/workspace/workspace.tools.js.map +1 -1
  392. package/dist/modules/write-access/write-access.d.ts.map +1 -1
  393. package/dist/modules/write-access/write-access.js +9 -0
  394. package/dist/modules/write-access/write-access.js.map +1 -1
  395. package/dist/shared/domain-errors.d.ts +84 -1
  396. package/dist/shared/domain-errors.d.ts.map +1 -1
  397. package/dist/shared/domain-errors.js +100 -12
  398. package/dist/shared/domain-errors.js.map +1 -1
  399. package/dist/shared/git.contract.d.ts +10 -1
  400. package/dist/shared/git.contract.d.ts.map +1 -1
  401. package/dist/shared/git.contract.js.map +1 -1
  402. package/dist/shared/hidden-tools.d.ts +44 -0
  403. package/dist/shared/hidden-tools.d.ts.map +1 -0
  404. package/dist/shared/hidden-tools.js +13 -0
  405. package/dist/shared/hidden-tools.js.map +1 -0
  406. package/dist/shared/utf8-text.d.ts +15 -0
  407. package/dist/shared/utf8-text.d.ts.map +1 -0
  408. package/dist/shared/utf8-text.js +20 -0
  409. package/dist/shared/utf8-text.js.map +1 -0
  410. package/dist/tenancy/static-tenant-source.d.ts +2 -1
  411. package/dist/tenancy/static-tenant-source.d.ts.map +1 -1
  412. package/dist/tenancy/static-tenant-source.js +9 -2
  413. package/dist/tenancy/static-tenant-source.js.map +1 -1
  414. package/kb-template/.bevelignore +0 -5
  415. package/mcp-app/page.html +349 -0
  416. package/migrations/0017_atlassian_account_links.sql +37 -0
  417. package/migrations/meta/0017_snapshot.json +2396 -0
  418. package/migrations/meta/_journal.json +8 -1
  419. package/package.json +6 -3
  420. package/src/__tests__/kb-layout-config.test.ts +10 -100
  421. package/src/__tests__/packaged-assets-ship.test.ts +66 -0
  422. package/src/assets.ts +38 -2
  423. package/src/core/__tests__/catalog-revision.test.ts +40 -0
  424. package/src/core/__tests__/gated-boot.test.ts +1 -0
  425. package/src/core/__tests__/lifecycle.test.ts +14 -0
  426. package/src/core/catalog-revision.ts +15 -2
  427. package/src/core/core-ports.ts +11 -0
  428. package/src/core/create-core-server.ts +78 -3
  429. package/src/core/create-core-services.ts +168 -10
  430. package/src/core/lifecycle.ts +28 -2
  431. package/src/core-config.ts +24 -1
  432. package/src/index.ts +2 -2
  433. package/src/modules/access/__tests__/access-control.atref-batch.test.ts +58 -0
  434. package/src/modules/access/__tests__/access-control.platform-restore.test.ts +8 -7
  435. package/src/modules/access/__tests__/access-control.service.test.ts +19 -0
  436. package/src/modules/access/__tests__/access-personal-plugin.test.ts +1 -18
  437. package/src/modules/access/access-control.interface.ts +28 -0
  438. package/src/modules/access/access-control.service.ts +37 -0
  439. package/src/modules/access/directory-sync-bot.ts +1 -1
  440. package/src/modules/agent-guide/__tests__/agent-guide.test.ts +386 -0
  441. package/src/modules/agent-guide/__tests__/agent-guide.tools.test.ts +207 -0
  442. package/src/modules/agent-guide/agent-guide.tools.ts +122 -0
  443. package/src/modules/agent-guide/agent-guide.ts +300 -0
  444. package/src/modules/agent-guide/index.ts +22 -0
  445. package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +39 -118
  446. package/src/modules/agent-instructions/agent-instructions.routes.ts +3 -2
  447. package/src/modules/agent-instructions/compose.ts +26 -8
  448. package/src/modules/agent-instructions/index.ts +0 -3
  449. package/src/modules/agent-instructions/shared-file-rules.ts +50 -112
  450. package/src/modules/audit/__tests__/agent-audit.service.test.ts +64 -4
  451. package/src/modules/audit/__tests__/agent-connection.routes.test.ts +102 -0
  452. package/src/modules/audit/agent-audit.service.ts +58 -3
  453. package/src/modules/audit/agent-connection.routes.ts +56 -0
  454. package/src/modules/audit/audit.contract.ts +26 -0
  455. package/src/modules/audit/index.ts +1 -0
  456. package/src/modules/auth/__tests__/account.routes.test.ts +5 -3
  457. package/src/modules/auth/account.routes.ts +10 -3
  458. package/src/modules/auth/auth.middleware.ts +1 -1
  459. package/src/modules/code-mode/__tests__/code-mode.tool.test.ts +18 -2
  460. package/src/modules/code-mode/code-mode.tool.ts +13 -2
  461. package/src/modules/database/core-schema.ts +33 -3
  462. package/src/modules/embed/__tests__/account-links.migration.test.ts +98 -0
  463. package/src/modules/embed/__tests__/embed-link.test.ts +122 -0
  464. package/src/modules/embed/__tests__/embed.routes.test.ts +362 -0
  465. package/src/modules/embed/__tests__/embed.service.lock.test.ts +193 -0
  466. package/src/modules/embed/__tests__/embed.service.test.ts +805 -0
  467. package/src/modules/embed/__tests__/embed.tools.test.ts +304 -0
  468. package/src/modules/embed/__tests__/mcp-app.test.ts +207 -0
  469. package/src/modules/embed/account-link.service.ts +76 -0
  470. package/src/modules/embed/embed-link.ts +180 -0
  471. package/src/modules/embed/embed.errors.ts +43 -0
  472. package/src/modules/embed/embed.interface.ts +203 -0
  473. package/src/modules/embed/embed.routes.ts +363 -0
  474. package/src/modules/embed/embed.service.ts +705 -0
  475. package/src/modules/embed/embed.tools.ts +206 -0
  476. package/src/modules/embed/mcp-app.routes.ts +41 -0
  477. package/src/modules/embed/mcp-app.ts +173 -0
  478. package/src/modules/github-app/__tests__/github-app.test.ts +76 -0
  479. package/src/modules/github-app/github-app.connection.ts +38 -4
  480. package/src/modules/kb-fs/__tests__/move-with-edits.test.ts +304 -0
  481. package/src/modules/kb-fs/locking-filesystem.ts +287 -0
  482. package/src/modules/kb-sync/__tests__/kb-sync.service.test.ts +35 -0
  483. package/src/modules/kb-sync/kb-sync.interface.ts +2 -0
  484. package/src/modules/kb-sync/kb-sync.service.ts +6 -0
  485. package/src/modules/mcp/__tests__/bevel-oauth-provider.test.ts +68 -11
  486. package/src/modules/mcp/__tests__/fake-downstream-mcp-server.ts +14 -3
  487. package/src/modules/mcp/__tests__/mcp-proxy-helpers.test.ts +37 -2
  488. package/src/modules/mcp/__tests__/mcp.app.e2e.test.ts +200 -0
  489. package/src/modules/mcp/__tests__/mcp.e2e.test.ts +252 -0
  490. package/src/modules/mcp/__tests__/mcp.service.test.ts +42 -24
  491. package/src/modules/mcp/__tests__/tool-call-interface.e2e.test.ts +499 -0
  492. package/src/modules/mcp/__tests__/tool-schema-guard.test.ts +266 -0
  493. package/src/modules/mcp/mcp-auth.middleware.ts +2 -1
  494. package/src/modules/mcp/mcp.service.ts +218 -31
  495. package/src/modules/mcp/oauth/bevel-oauth-provider.ts +42 -4
  496. package/src/modules/mcp/tool-schema-guard.ts +196 -0
  497. package/src/modules/onboarding/__tests__/onboarding.routes.test.ts +163 -0
  498. package/src/modules/onboarding/__tests__/starter-pack.service.test.ts +635 -0
  499. package/src/modules/onboarding/__tests__/starter-packs.test.ts +169 -0
  500. package/src/modules/onboarding/onboarding.contract.ts +85 -0
  501. package/src/modules/onboarding/onboarding.routes.ts +85 -0
  502. package/src/modules/onboarding/starter-pack.service.ts +580 -0
  503. package/src/modules/onboarding/starter-packs.ts +182 -0
  504. package/src/modules/plugins/__tests__/plugins.tools.test.ts +177 -4
  505. package/src/modules/plugins/index.ts +1 -0
  506. package/src/modules/plugins/plugin-provision.service.ts +22 -1
  507. package/src/modules/plugins/plugins.routes.ts +29 -0
  508. package/src/modules/plugins/plugins.tools.ts +75 -15
  509. package/src/modules/settings/__tests__/deployment-settings.service.test.ts +176 -56
  510. package/src/modules/settings/__tests__/repository-source.test.ts +9 -0
  511. package/src/modules/settings/deployment-settings.service.ts +144 -55
  512. package/src/modules/settings/repository-source.ts +4 -4
  513. package/src/modules/settings/setup.routes.ts +3 -6
  514. package/src/modules/skills/__tests__/skills.tools.description.test.ts +95 -0
  515. package/src/modules/skills/skills.tools.ts +112 -46
  516. package/src/modules/tool-auth/__tests__/connection-key-rejection.test.ts +32 -0
  517. package/src/modules/tool-auth/__tests__/external-api-key.service.test.ts +65 -0
  518. package/src/modules/tool-auth/connection-key-rejection.ts +13 -3
  519. package/src/modules/tool-auth/external-api-key.interface.ts +9 -0
  520. package/src/modules/tool-auth/external-api-key.service.ts +61 -4
  521. package/src/modules/tool-auth/tool-auth.middleware.ts +13 -4
  522. package/src/modules/tool-helpers/__tests__/branch-declaration.test.ts +502 -0
  523. package/src/modules/tool-helpers/__tests__/route-argument-check.test.ts +337 -0
  524. package/src/modules/tool-helpers/index.ts +34 -1
  525. package/src/modules/tool-helpers/route-argument-check.ts +149 -0
  526. package/src/modules/tool-helpers/route-tool-schemas.ts +171 -0
  527. package/src/modules/tool-helpers/tool-def.ts +132 -7
  528. package/src/modules/tool-helpers/tool-handler.ts +196 -8
  529. package/src/modules/tool-helpers/tool.contract.ts +9 -0
  530. package/src/modules/tool-manuals/__tests__/tool-manuals.detail.route.test.ts +57 -0
  531. package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +73 -4
  532. package/src/modules/tool-manuals/tool-manuals.contract.ts +24 -4
  533. package/src/modules/tool-manuals/tool-manuals.service.ts +17 -0
  534. package/src/modules/tool-manuals/tool-manuals.tools.ts +86 -38
  535. package/src/modules/tool-registry/__tests__/own-tool-schemas.test.ts +173 -0
  536. package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +81 -66
  537. package/src/modules/tool-registry/description-length.ts +57 -32
  538. package/src/modules/tool-registry/guide-first.ts +41 -0
  539. package/src/modules/tool-registry/tool-registry.ts +9 -2
  540. package/src/modules/workflow/__tests__/apply-failure.test.ts +6 -1
  541. package/src/modules/workflow/__tests__/file-lock.service.deletion-gate.test.ts +104 -0
  542. package/src/modules/workflow/__tests__/pending-commits.repository-replaced.test.ts +66 -0
  543. package/src/modules/workflow/__tests__/pending-commits.worker.test.ts +31 -2
  544. package/src/modules/workflow/__tests__/preserve-roles-yaml.test.ts +110 -6
  545. package/src/modules/workflow/__tests__/sanitize-error.test.ts +89 -1
  546. package/src/modules/workflow/__tests__/workflow.routes.push-refused.test.ts +202 -0
  547. package/src/modules/workflow/__tests__/workflow.service.branch-in-use.test.ts +6 -6
  548. package/src/modules/workflow/__tests__/workflow.service.delete-branch.test.ts +1026 -0
  549. package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +468 -10
  550. package/src/modules/workflow/__tests__/workflow.service.folder-proposals.test.ts +4 -0
  551. package/src/modules/workflow/__tests__/workflow.service.releaseLock.test.ts +5 -4
  552. package/src/modules/workflow/__tests__/workflow.service.update-from-target.test.ts +54 -2
  553. package/src/modules/workflow/agent-tools/__tests__/change-request-read-shape.test.ts +705 -0
  554. package/src/modules/workflow/agent-tools/__tests__/change-request-read.tools.test.ts +1554 -0
  555. package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +150 -4
  556. package/src/modules/workflow/agent-tools/change-request-read-shape.ts +712 -0
  557. package/src/modules/workflow/agent-tools/change-request-read.tools.ts +759 -0
  558. package/src/modules/workflow/agent-tools/change-request-summary.ts +5 -1
  559. package/src/modules/workflow/agent-tools/workflow.tools.ts +137 -35
  560. package/src/modules/workflow/file-lock.service.ts +67 -5
  561. package/src/modules/workflow/git/__tests__/git.service.appliedChange.test.ts +285 -0
  562. package/src/modules/workflow/git/__tests__/git.service.changedFilesForPr.test.ts +124 -0
  563. package/src/modules/workflow/git/__tests__/git.service.deleteBranch.test.ts +164 -0
  564. package/src/modules/workflow/git/__tests__/git.service.mergeChangeRequest.test.ts +334 -0
  565. package/src/modules/workflow/git/__tests__/git.service.pull.test.ts +48 -1
  566. package/src/modules/workflow/git/__tests__/node-git-runner.test.ts +231 -2
  567. package/src/modules/workflow/git/__tests__/pull-request.service.list-fetch.test.ts +72 -2
  568. package/src/modules/workflow/git/__tests__/pull-request.service.placeholder.test.ts +24 -2
  569. package/src/modules/workflow/git/__tests__/pull-request.service.test.ts +620 -1
  570. package/src/modules/workflow/git/git.service.ts +714 -133
  571. package/src/modules/workflow/git/merge-commit.ts +88 -0
  572. package/src/modules/workflow/git/node-git-runner.ts +82 -7
  573. package/src/modules/workflow/git/pull-request.service.ts +380 -54
  574. package/src/modules/workflow/pending-commits.service.ts +29 -1
  575. package/src/modules/workflow/pending-commits.worker.ts +24 -6
  576. package/src/modules/workflow/recovery-bot.ts +1 -1
  577. package/src/modules/workflow/review-workflow/__tests__/approval-states.test.ts +7 -1
  578. package/src/modules/workflow/review-workflow/__tests__/merge-records-own-commit.test.ts +407 -0
  579. package/src/modules/workflow/review-workflow/review-workflow.service.ts +191 -12
  580. package/src/modules/workflow/sanitize-error.ts +50 -0
  581. package/src/modules/workflow/workflow.routes.ts +7 -2
  582. package/src/modules/workflow/workflow.service.ts +886 -112
  583. package/src/modules/workspace/__tests__/agent-downloads.test.ts +823 -0
  584. package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +4 -3
  585. package/src/modules/workspace/__tests__/first-run.test.ts +234 -0
  586. package/src/modules/workspace/__tests__/git-internals.security.test.ts +5 -2
  587. package/src/modules/workspace/__tests__/md-links.test.ts +353 -0
  588. package/src/modules/workspace/__tests__/move-links.test.ts +261 -0
  589. package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +219 -0
  590. package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +3 -0
  591. package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +102 -0
  592. package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +52 -5
  593. package/src/modules/workspace/__tests__/workspace.routes.folder-zip-access.test.ts +190 -0
  594. package/src/modules/workspace/__tests__/workspace.routes.move-platform-files.test.ts +21 -10
  595. package/src/modules/workspace/__tests__/workspace.service.forget-clone-races.test.ts +8 -4
  596. package/src/modules/workspace/__tests__/workspace.service.test.ts +50 -8
  597. package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +33 -55
  598. package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +44 -1
  599. package/src/modules/workspace/__tests__/workspace.tools.test.ts +664 -34
  600. package/src/modules/workspace/agent-download.builder.ts +308 -0
  601. package/src/modules/workspace/agent-download.routes.ts +183 -0
  602. package/src/modules/workspace/agent-download.store.ts +533 -0
  603. package/src/modules/workspace/agent-upload.store.ts +23 -7
  604. package/src/modules/workspace/file-readers/raw-mime.ts +40 -0
  605. package/src/modules/workspace/file-readers/text-reader.ts +5 -8
  606. package/src/modules/workspace/first-run.ts +222 -0
  607. package/src/modules/workspace/move-links.ts +237 -0
  608. package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +191 -489
  609. package/src/modules/workspace/startup/steps/seed-tree.ts +23 -38
  610. package/src/modules/workspace/startup/steps/template-files.step.ts +217 -249
  611. package/src/modules/workspace/startup/steps/template-source.ts +5 -3
  612. package/src/modules/workspace/workspace.routes.ts +64 -22
  613. package/src/modules/workspace/workspace.service.ts +202 -25
  614. package/src/modules/workspace/workspace.tools.ts +707 -68
  615. package/src/modules/write-access/__tests__/write-access.test.ts +13 -0
  616. package/src/modules/write-access/write-access.ts +9 -0
  617. package/src/shared/domain-errors.ts +123 -11
  618. package/src/shared/git.contract.ts +8 -1
  619. package/src/shared/hidden-tools.ts +45 -0
  620. package/src/shared/utf8-text.ts +21 -0
  621. package/src/tenancy/__tests__/static-tenant-source.test.ts +1 -0
  622. package/src/tenancy/static-tenant-source.ts +10 -2
  623. package/starter-packs/README.md +103 -0
  624. package/starter-packs/engineering/KnowledgeBase/About us.md +9 -0
  625. package/starter-packs/engineering/KnowledgeBase/Architecture.md +9 -0
  626. package/starter-packs/engineering/KnowledgeBase/Glossary.md +9 -0
  627. package/starter-packs/engineering/KnowledgeBase/How we ship.md +9 -0
  628. package/starter-packs/engineering/Plugins/engineering-starter/LICENSE +21 -0
  629. package/starter-packs/engineering/Plugins/engineering-starter/SOURCE.md +20 -0
  630. package/starter-packs/engineering/Plugins/engineering-starter/access.md +19 -0
  631. package/starter-packs/engineering/Plugins/engineering-starter/plugin.json +10 -0
  632. package/starter-packs/engineering/Plugins/engineering-starter/skills/office-hours/SKILL.md +171 -0
  633. package/starter-packs/engineering/Plugins/engineering-starter/skills/office-hours/sections/phase-2a-startup-diagnostic.md +157 -0
  634. package/starter-packs/engineering/Plugins/engineering-starter/skills/office-hours/sections/phase-2b-builder-brainstorm.md +39 -0
  635. package/starter-packs/engineering/Plugins/engineering-starter/skills/plan-ceo-review/SKILL.md +144 -0
  636. package/starter-packs/engineering/Plugins/engineering-starter/skills/plan-eng-review/SKILL.md +144 -0
  637. package/starter-packs/engineering/Plugins/engineering-starter/skills/review/SKILL.md +80 -0
  638. package/starter-packs/engineering/Plugins/engineering-starter/skills/review/checklist.md +184 -0
  639. package/starter-packs/engineering/pack.yaml +11 -0
  640. package/starter-packs/general/KnowledgeBase/About us.md +9 -0
  641. package/starter-packs/general/KnowledgeBase/Glossary.md +9 -0
  642. package/starter-packs/general/KnowledgeBase/How we work.md +9 -0
  643. package/starter-packs/general/Plugins/general-starter/LICENSE +202 -0
  644. package/starter-packs/general/Plugins/general-starter/SOURCE.md +10 -0
  645. package/starter-packs/general/Plugins/general-starter/access.md +19 -0
  646. package/starter-packs/general/Plugins/general-starter/plugin.json +10 -0
  647. package/starter-packs/general/Plugins/general-starter/skills/memory-management/SKILL.md +332 -0
  648. package/starter-packs/general/Plugins/general-starter/skills/productivity-start/SKILL.md +163 -0
  649. package/starter-packs/general/Plugins/general-starter/skills/productivity-update/SKILL.md +167 -0
  650. package/starter-packs/general/Plugins/general-starter/skills/task-management/SKILL.md +83 -0
  651. package/starter-packs/general/pack.yaml +10 -0
  652. package/starter-packs/operations/KnowledgeBase/Glossary.md +9 -0
  653. package/starter-packs/operations/KnowledgeBase/How we work.md +9 -0
  654. package/starter-packs/operations/KnowledgeBase/Processes.md +9 -0
  655. package/starter-packs/operations/KnowledgeBase/Tools we use.md +9 -0
  656. package/starter-packs/operations/KnowledgeBase/Vendors.md +9 -0
  657. package/starter-packs/operations/Plugins/operations-starter/LICENSE +202 -0
  658. package/starter-packs/operations/Plugins/operations-starter/SOURCE.md +10 -0
  659. package/starter-packs/operations/Plugins/operations-starter/access.md +19 -0
  660. package/starter-packs/operations/Plugins/operations-starter/plugin.json +10 -0
  661. package/starter-packs/operations/Plugins/operations-starter/skills/capacity-plan/SKILL.md +111 -0
  662. package/starter-packs/operations/Plugins/operations-starter/skills/change-request/SKILL.md +119 -0
  663. package/starter-packs/operations/Plugins/operations-starter/skills/compliance-tracking/SKILL.md +44 -0
  664. package/starter-packs/operations/Plugins/operations-starter/skills/process-doc/SKILL.md +80 -0
  665. package/starter-packs/operations/Plugins/operations-starter/skills/process-optimization/SKILL.md +39 -0
  666. package/starter-packs/operations/Plugins/operations-starter/skills/risk-assessment/SKILL.md +40 -0
  667. package/starter-packs/operations/Plugins/operations-starter/skills/runbook/SKILL.md +85 -0
  668. package/starter-packs/operations/Plugins/operations-starter/skills/status-report/SKILL.md +75 -0
  669. package/starter-packs/operations/Plugins/operations-starter/skills/vendor-review/SKILL.md +102 -0
  670. package/starter-packs/operations/pack.yaml +12 -0
  671. package/starter-packs/sales/KnowledgeBase/About us.md +9 -0
  672. package/starter-packs/sales/KnowledgeBase/Customers.md +9 -0
  673. package/starter-packs/sales/KnowledgeBase/Glossary.md +9 -0
  674. package/starter-packs/sales/KnowledgeBase/How we sell.md +9 -0
  675. package/starter-packs/sales/KnowledgeBase/Objections.md +9 -0
  676. package/starter-packs/sales/KnowledgeBase/Pricing.md +9 -0
  677. package/starter-packs/sales/Plugins/sales-starter/LICENSE +202 -0
  678. package/starter-packs/sales/Plugins/sales-starter/SOURCE.md +10 -0
  679. package/starter-packs/sales/Plugins/sales-starter/access.md +19 -0
  680. package/starter-packs/sales/Plugins/sales-starter/plugin.json +10 -0
  681. package/starter-packs/sales/Plugins/sales-starter/skills/account-context/SKILL.md +94 -0
  682. package/starter-packs/sales/Plugins/sales-starter/skills/account-plan/SKILL.md +95 -0
  683. package/starter-packs/sales/Plugins/sales-starter/skills/account-research/SKILL.md +99 -0
  684. package/starter-packs/sales/Plugins/sales-starter/skills/account-tiering/SKILL.md +101 -0
  685. package/starter-packs/sales/Plugins/sales-starter/skills/call-prep/SKILL.md +111 -0
  686. package/starter-packs/sales/Plugins/sales-starter/skills/call-summary/SKILL.md +111 -0
  687. package/starter-packs/sales/Plugins/sales-starter/skills/close-plan/SKILL.md +106 -0
  688. package/starter-packs/sales/Plugins/sales-starter/skills/competitive-intelligence/SKILL.md +102 -0
  689. package/starter-packs/sales/Plugins/sales-starter/skills/create-an-asset/SKILL.md +105 -0
  690. package/starter-packs/sales/Plugins/sales-starter/skills/crm-hygiene-check/SKILL.md +103 -0
  691. package/starter-packs/sales/Plugins/sales-starter/skills/customer-health/SKILL.md +108 -0
  692. package/starter-packs/sales/Plugins/sales-starter/skills/customer-voice/SKILL.md +94 -0
  693. package/starter-packs/sales/Plugins/sales-starter/skills/daily-briefing/SKILL.md +61 -0
  694. package/starter-packs/sales/Plugins/sales-starter/skills/deal-advance-gap/SKILL.md +102 -0
  695. package/starter-packs/sales/Plugins/sales-starter/skills/deal-review/SKILL.md +105 -0
  696. package/starter-packs/sales/Plugins/sales-starter/skills/deal-signals/SKILL.md +96 -0
  697. package/starter-packs/sales/Plugins/sales-starter/skills/deal-slip-scenario/SKILL.md +104 -0
  698. package/starter-packs/sales/Plugins/sales-starter/skills/draft-outreach/SKILL.md +116 -0
  699. package/starter-packs/sales/Plugins/sales-starter/skills/end-of-day/SKILL.md +114 -0
  700. package/starter-packs/sales/Plugins/sales-starter/skills/expansion-whitespace/SKILL.md +97 -0
  701. package/starter-packs/sales/Plugins/sales-starter/skills/forecast/SKILL.md +100 -0
  702. package/starter-packs/sales/Plugins/sales-starter/skills/handle-objection/SKILL.md +93 -0
  703. package/starter-packs/sales/Plugins/sales-starter/skills/inbox-sweep/SKILL.md +114 -0
  704. package/starter-packs/sales/Plugins/sales-starter/skills/lead-triage/SKILL.md +106 -0
  705. package/starter-packs/sales/Plugins/sales-starter/skills/log-activity/SKILL.md +111 -0
  706. package/starter-packs/sales/Plugins/sales-starter/skills/pipeline-review/SKILL.md +97 -0
  707. package/starter-packs/sales/Plugins/sales-starter/skills/renewal-radar/SKILL.md +95 -0
  708. package/starter-packs/sales/Plugins/sales-starter/skills/rep-context/SKILL.md +90 -0
  709. package/starter-packs/sales/Plugins/sales-starter/skills/route-lead/SKILL.md +111 -0
  710. package/starter-packs/sales/Plugins/sales-starter/skills/sales-setup/SKILL.md +200 -0
  711. package/starter-packs/sales/Plugins/sales-starter/skills/schedule-meeting/SKILL.md +99 -0
  712. package/starter-packs/sales/Plugins/sales-starter/skills/stakeholder-map/SKILL.md +107 -0
  713. package/starter-packs/sales/Plugins/sales-starter/skills/team-pipeline/SKILL.md +105 -0
  714. package/starter-packs/sales/Plugins/sales-starter/skills/update-opportunity/SKILL.md +112 -0
  715. package/starter-packs/sales/Plugins/sales-starter/skills/weekly-wrap/SKILL.md +90 -0
  716. package/starter-packs/sales/Plugins/sales-starter/skills/win-loss-review/SKILL.md +88 -0
  717. package/starter-packs/sales/pack.yaml +13 -0
  718. package/starter-packs/support/KnowledgeBase/Escalations.md +9 -0
  719. package/starter-packs/support/KnowledgeBase/Glossary.md +9 -0
  720. package/starter-packs/support/KnowledgeBase/Known issues.md +9 -0
  721. package/starter-packs/support/KnowledgeBase/Products.md +9 -0
  722. package/starter-packs/support/KnowledgeBase/Tone of voice.md +9 -0
  723. package/starter-packs/support/Plugins/support-starter/LICENSE +202 -0
  724. package/starter-packs/support/Plugins/support-starter/SOURCE.md +10 -0
  725. package/starter-packs/support/Plugins/support-starter/access.md +19 -0
  726. package/starter-packs/support/Plugins/support-starter/plugin.json +10 -0
  727. package/starter-packs/support/Plugins/support-starter/skills/customer-escalation/SKILL.md +246 -0
  728. package/starter-packs/support/Plugins/support-starter/skills/customer-research/SKILL.md +250 -0
  729. package/starter-packs/support/Plugins/support-starter/skills/draft-response/SKILL.md +416 -0
  730. package/starter-packs/support/Plugins/support-starter/skills/kb-article/SKILL.md +350 -0
  731. package/starter-packs/support/Plugins/support-starter/skills/ticket-triage/SKILL.md +273 -0
  732. package/starter-packs/support/pack.yaml +12 -0
  733. package/kb-template/AGENTS.md +0 -730
@@ -0,0 +1,251 @@
1
+ ## Access control
2
+
3
+ Access to any path — reading it as much as writing it — is governed by
4
+ `roles.yaml` (who has which role), `groups.yaml` (who is in which group) and
5
+ `access.md` files (who may do what, where).
6
+
7
+ - **Roles** in `roles.yaml` map a role name to a list of members: emails, and
8
+ `group:<Name>` entries that give the role to a whole group (see *Giving a
9
+ role to a group* below). Role names are
10
+ case- and whitespace-insensitive (`Admin` = `admin` = `ADMIN`; `Product Team`
11
+ = `product team`). The reserved names `deny` and `everyone` cannot be used, and neither can
12
+ names starting with `role/` or `plugin/` — those spellings are tokens in
13
+ access entries (below). One exception to the file's authority: the
14
+ **deployment admin** — the address the server configuration sets as
15
+ `ADMIN_EMAIL` — is **always an Admin**, whether or not `roles.yaml` lists
16
+ it, and taking it out of the file does not change that. It is the rescue
17
+ path for a `roles.yaml` that has lost its last Admin. The App roles page
18
+ shows that account under Admin as a fixed member that cannot be added or
19
+ removed there; every other Admin membership is exactly what the file says,
20
+ and removing one takes effect on that person's next request.
21
+ - **Plugins are grantable principals.** `plugin/<name>/read`,
22
+ `plugin/<name>/write` and `plugin/<name>/owner` in any access file mean
23
+ everyone who currently holds that verb on the plugin whose manifest `name`
24
+ is `<name>`, derived live from the plugin's own `access.md`. Any spelling
25
+ folds to the identifier (`plugin/GTM/read` and `plugin/gtm/read` are one
26
+ principal). This is how a shared skill is made visible to a plugin's
27
+ members: `read: plugin/gtm/read` on the skill's folder.
28
+ Adding or removing someone on the plugin changes what they can read
29
+ everywhere the token is granted, with no copying.
30
+ - **Access rules** live in `access.md` files, which carry **two blocks with two
31
+ scopes**: the BODY (below the closing `---`) declares the rules for the
32
+ folder the file sits in, and the FRONTMATTER declares who may read and
33
+ write that `access.md` itself. Each block names verbs (`read`, `write`,
34
+ `download`, `owner`) whose entries are either grants (a bare principal) or
35
+ denials (the lowercase word `deny`, a space, then the principal).
36
+ Capitalised forms like `Deny` are *not* triggers; they are treated as part
37
+ of a name.
38
+ - **Principals** are a role name from `roles.yaml`, a group name from
39
+ `groups.yaml`, a person as `Name <email>`, a plugin token (above), or
40
+ **`everyone`** — the built-in org-wide principal: every signed-in person and
41
+ their agents. `read: everyone` in a folder's BODY opens that folder to the
42
+ whole organisation; it is how an organisation-wide skill or plugin is
43
+ shared. The same line in a file's FRONTMATTER only makes that one file
44
+ visible — a plugin's `access.md` ships with `read: everyone` in its
45
+ frontmatter so the plugin can be found and joined, and that admits nobody
46
+ to the plugin itself. A person's personal plugin
47
+ (`{{pluginsDir}}/personal-<id>/`) grants its owner access and denies
48
+ `everyone` outright, so opening a parent folder never opens it.
49
+ When a group and a role share a name, the bare name means the GROUP;
50
+ `role/<Name>` (for example `deny role/Reviewer`) always means the role.
51
+ - **Keep an `access.md` body pure YAML**, with any explanation in `#` comments.
52
+ A body that does not parse as YAML naming at least one verb is read in the
53
+ older format instead, where the FRONTMATTER carried the folder's rules — so a
54
+ stray line of prose silently changes which block governs the folder.
55
+ - **The verbs nest.** `owner` sits over `write` and `download`; `write` and
56
+ `download` each sit over `read` — anyone who may edit a node, or save a copy
57
+ of it, may also view it. `write` and `download` say nothing about each other.
58
+ The nesting is GRANT-ONLY: a grant of a higher verb confers the lower ones,
59
+ but `deny write` or `deny download` says nothing about `read` and never
60
+ strips a separate read grant. So `download: Ana <ana@x.io>` alone lets Ana
61
+ open the node as well as download it, and a `deny download` beside an
62
+ inherited read leaves her able to open it but not save it.
63
+ - **You can only change what you can read.** Nothing is created, changed,
64
+ moved into or removed from a place the caller cannot read — on every
65
+ branch, drafts included, whatever `write:` rules say. A write tool refused
66
+ for this says so (`write-denied`, naming the unreadable folder), and
67
+ proposing is not offered either: a proposal into a folder its author cannot
68
+ see would vanish from them the moment it landed. Two exceptions. A NEW
69
+ FOLDER directly under `{{knowledgeBaseDir}}/`, `{{skillsDir}}/` or
70
+ `{{pluginsDir}}/`: anyone may start one, whatever the root's rules grant
71
+ them, and the new folder's `access.md` is seeded with the creator's own
72
+ `read:` grant so what they put there is visible to them (a loose FILE
73
+ directly at a root has no folder to carry that grant and is not excepted).
74
+ And an Admin — or the deployment owner — may change the files directly in
75
+ the repository root (`roles.yaml`, `access.md`, `groups.yaml`, …) even when
76
+ the root grants read to nobody: the same rescue the write
77
+ floor gives them, so a tree whose root rules lock everyone out stays
78
+ repairable from inside the app. That rescue stops at the root; a subfolder
79
+ an admin cannot read is closed to them like to anyone else.
80
+ - **Resolution** walks repo root → file directory, accumulating per-principal
81
+ state. User-level entries trump role-level entries. A role denial removes
82
+ only that role's contribution; it does not undo grants from other roles.
83
+ - **`roles.yaml` is editable only by Admin** — hard-coded in the resolver,
84
+ never overridable by an `access.md`.
85
+ - **`access.md` files are picked up at any depth**, so a folder can tighten or
86
+ widen what it inherited from its parent.
87
+ - **Per-file rules exist for Markdown notes and `.tool` definitions.** A note
88
+ (`.md`, lowercase) may name verbs in its own frontmatter, and those rules
89
+ apply to that one note; a `.tool` definition keeps the access verbs in its
90
+ own YAML the same way; a distribution may register further file kinds
91
+ that carry their own rules. Any other file (a PDF, a presentation, a
92
+ spreadsheet, an image, any binary, a `.markdown` or `.MD` file, or binary
93
+ content saved as `.md`) takes its folder's rules: sharing it on its own is refused with
94
+ `folder-governs-access`, naming the folder. To change who
95
+ can open such a file, change its folder's `access.md`, or move the file to a
96
+ folder whose rules fit.
97
+
98
+ Rules are enforced at runtime; a malformed `roles.yaml` or `access.md` surfaces
99
+ when access is resolved.
100
+
101
+ ### Roles are pre-set — a "new role" is usually a group
102
+
103
+ **What a role is.** A role in `roles.yaml` is an app role: a capability the
104
+ platform defines and acts on (`Admin` is one), listed with the people who hold
105
+ it. The set of roles is pre-set by the platform. A role is not a way to name a
106
+ team.
107
+
108
+ **Agents never create roles.** Add people to a role that already exists, or
109
+ remove them, and nothing more: never add a role name to `roles.yaml`, and never
110
+ rename one — a rename is a delete plus a create. Such a write is refused with a
111
+ 422 that names the role and says: app roles are pre-set — add people to
112
+ existing roles, and use a GROUP for a task- or team-scoped set of people.
113
+ Relay that refusal to your user as it stands; do not look for another way to
114
+ write the file.
115
+
116
+ **Is it really a group?** When someone asks for a "new role", it almost always
117
+ is. It is a group when any of these hold:
118
+
119
+ - the name says who the people are — a team, a project, a customer, a
120
+ committee — rather than a capability the platform already has;
121
+ - it would change or disappear when the project ends or the team reshuffles;
122
+ - its purpose is to give those people access to some folders or files.
123
+
124
+ A request that matches a role that already exists is membership, not a new
125
+ role.
126
+
127
+ **What to do instead.**
128
+
129
+ 1. If an existing role already carries the capability, add the people to it.
130
+ 2. Otherwise make it a group: add or extend the group in `groups.yaml` (or
131
+ point your user at the app's Groups page), then grant the group in the
132
+ `access.md` of the folders it should reach.
133
+ 3. If your user still needs a role the platform does not have, that is not an
134
+ edit you can make — say so, and leave the decision to an admin.
135
+
136
+ ### Giving a role to a group
137
+
138
+ A role's member list takes a group as well as individual emails. Write the
139
+ entry as `- group:<Name>`, where `<Name>` is a group in the active group
140
+ source — `synced-groups.yaml` when the deployment syncs groups from an
141
+ identity provider, `groups.yaml` otherwise. Here a `Reviewer` role the
142
+ deployment already has goes to a whole group:
143
+
144
+ ```yaml
145
+ roles:
146
+ Admin:
147
+ - dana@example.com
148
+ Reviewer:
149
+ - lee@example.com
150
+ - group:Platform Team
151
+ ```
152
+
153
+ - **Matching.** The name is matched case- and whitespace-insensitively against
154
+ the active group source, like role names: `group:platform team` and
155
+ `group:Platform Team` are the same entry as `group:Platform Team`.
156
+ - **Unknown groups are refused.** An entry naming a group the active source
157
+ does not declare is a validation error: the write is refused with a 422
158
+ that names the entry and its role (`'- group:Platfrom Team' under role
159
+ 'Reviewer'`), and nothing is saved. Create the group first, or fix the name.
160
+ - **A group under `Admin` makes every member a full admin** — including anyone
161
+ added to the group later, and including the right to edit `roles.yaml`
162
+ itself. Only make that edit when your user is an Admin and explicitly asks
163
+ for exactly that, and say so in the commit summary; for anyone else, tell
164
+ them what it would mean and who can do it (below). `Admin` must also always keep at least one
165
+ direct email member; a group entry alone is not enough, so a broken
166
+ directory can never leave the deployment without an admin.
167
+ - **With direct emails.** Group entries and emails add up: the role's members
168
+ are everyone listed by email plus everyone currently in each listed group.
169
+ A person in both is simply a member; adding or removing someone from the
170
+ group changes the role with no edit to `roles.yaml`.
171
+ - **With denials.** Group members hold the role's grants exactly as if they
172
+ were listed by email. A denial of the role in an `access.md`
173
+ (`deny role/Reviewer`) therefore removes the role's contribution for
174
+ everyone in the group, as it does for the emails. Write the `role/` form:
175
+ a bare `deny Reviewer` would deny a group named `Reviewer` instead, if one
176
+ exists. The nearest `access.md` that says
177
+ anything about the person decides: a person granted by name
178
+ (`Name <email>`) in the SAME `access.md` as the denial keeps that access,
179
+ because within one file a person's own entry beats a role entry. A grant by
180
+ name in a folder further up does not survive a role denial closer to the
181
+ file.
182
+
183
+ **Only an Admin changes `roles.yaml`, and only on the default branch.** A
184
+ change request cannot carry the edit: when a request is merged, `roles.yaml`
185
+ is restored to what the default branch has, so a role edit drafted on a
186
+ branch is dropped at the merge without a word. Do not propose one. If your
187
+ user is an Admin, `edit_file` the file on the default branch directly — for
188
+ example, to give the Reviewer role to a group, add the entry under the
189
+ existing role:
190
+
191
+ ```yaml
192
+ roles:
193
+ Admin:
194
+ - dana@example.com
195
+ Reviewer:
196
+ - lee@example.com
197
+ - group:Platform Team # added
198
+ ```
199
+
200
+ If your user is not an Admin, tell them who is (the `Admin` entries in
201
+ `roles.yaml`) and that the change is made in the app's Roles page or by an
202
+ admin editing the file; do not open a change request for it.
203
+
204
+ ### Direct writes vs change requests
205
+
206
+ File-level write access decides how a change lands on the default branch:
207
+
208
+ - A user — or an agent acting as that user — whose access resolution grants
209
+ **write or owner on every file the change touches** may commit **directly**
210
+ to the default branch.
211
+ - Without that access, the change goes through a **branch + change request**,
212
+ approved by an owner / write-access holder of the affected files — every
213
+ affected file with an eligible approver needs that approval, whatever its
214
+ type (notes, binary files, files without an extension).
215
+ - Agents carry exactly their user's access, never more. Before writing to the
216
+ default branch, **ask the user** whether to write directly or go through the
217
+ review flow — and prefer a change request when in doubt, when the change is
218
+ large, or when it touches content the user does not own.
219
+
220
+ ### An agent proposes and syncs; a person merges
221
+
222
+ - **Propose** with `open_change_request`, then give the user the request's
223
+ `url`. Reviewing, approving and merging a change request happen in the app,
224
+ by a person — no agent tool approves a file, bypasses approval, or merges a
225
+ request. `merge_change_request` no longer exists.
226
+ - **Sync** a draft with `merge_branch`, `source` = the branch the request
227
+ targets, `target` = the draft. This is allowed while the draft's request is
228
+ open, and is how you bring it up to date or surface conflicts to resolve on
229
+ the draft.
230
+ - `merge_branch` refuses to merge a draft into the branch its open change
231
+ request targets — it names the request; ask the user to review it in the
232
+ app. Into a protected branch it merges only what you could commit there
233
+ directly, under the rule above — and never a change to `roles.yaml`, whoever
234
+ you are: roles are changed in the app, not merged in from a draft.
235
+ - **Delete** a draft with `delete_branch`, which removes it for everyone. Only
236
+ its author (`<email-localpart>/…`, or your own `suggestions/…` bundle) or an
237
+ Admin may. Preview with `dryRun: true` first: it changes nothing and says
238
+ whether the delete would go through, how many commits are not on the default
239
+ branch, and the last commit. A branch holding such commits is refused unless
240
+ you pass `discardUnmerged: true` — only when the user wants that work gone. An
241
+ open change request from or into the branch that proposes nothing is closed
242
+ by the delete. One that still proposes something refuses it, with a link:
243
+ its author can withdraw it, or an Admin can decline it, in the app — hand the
244
+ user that link. A request you cannot see is not named, and a preview leaves
245
+ it out, so a delete can still be refused after a clean preview. Hand the user the
246
+ `lastCommit` it answers, so the branch can be restored. The server removes a
247
+ draft on its own once its change request was merged, but only while nothing
248
+ has happened to it since: no commit that is not on the default branch, no
249
+ request open from or into it, no save still landing, no file held for
250
+ editing, and its last commit
251
+ the one that was merged. Any other draft stays until someone deletes it.
@@ -0,0 +1,35 @@
1
+ ## Conventions
2
+
3
+ These are conventions, not validations — nothing rejects a file for breaking
4
+ them. They exist because a knowledge base people can navigate beats one that is
5
+ merely correct.
6
+
7
+ 1. **Descriptive file names.** `Weekly-Sync-2026-03-14.md` beats `notes3.md`.
8
+ Avoid spaces; they survive git fine but make links noisier to read.
9
+
10
+ 2. **Markdown links between documents.** Use
11
+ `[Page Name](relative/path/to/Page.md)`, relative to the LINKING file's
12
+ directory rather than the repo root, so links resolve both in the app and on
13
+ the git host.
14
+ `move_file` keeps most of them working: it rewrites the links inside the
15
+ moved files and those in the other markdown pages it searches, and names
16
+ what it left — HTML pages, raw HTML inside a markdown page, and pages you
17
+ may not change. It does not search
18
+ `transcripts/` or `probes/` folders, and pages you cannot read are neither
19
+ searched nor named (the answer only says such pages may exist); links there
20
+ can still point at the old path. Paths written in prose or code are not
21
+ links, and a move leaves them as they are.
22
+
23
+ 3. **Absolute dates.** `YYYY-MM-DD`, never "last Tuesday" — a saved file
24
+ outlives the moment it was written.
25
+
26
+ 4. **Search before creating.** If a document on the subject exists, extend it
27
+ rather than starting a rival.
28
+
29
+ 5. **Preserve what is there.** Append or edit sections; do not overwrite a file
30
+ wholesale unless asked to.
31
+
32
+ 6. **Say where it came from.** When a claim rests on a specific source — a
33
+ person, a ticket, a document, a URL — name it inline near the claim, with
34
+ the date it was true. The next reader's first question is "says who, and is
35
+ it still true?".
@@ -0,0 +1,145 @@
1
+ ## Directory Structure
2
+
3
+ ```text
4
+ {{kbDirName}}/
5
+ ├── {{knowledgeBaseDir}}/ ← the knowledge itself; organise it however suits you
6
+ ├── {{skillsDir}}/ ← shared skills, organised by who owns them
7
+ ├── {{pluginsDir}}/ ← one folder per plugin: its tools, and links to skills
8
+ ├── roles.yaml ← identity → role mapping (Admin-only edits)
9
+ └── access.md ← repo-root access-control rules
10
+ ```
11
+
12
+ (The three root names above are this deployment's own — a deployment may
13
+ rename them in its setup screen, and this guide is rendered with the names in
14
+ effect each time it is composed.)
15
+
16
+ Tool paths are workspace-relative, and the workspace root holds this
17
+ repository as the `{{kbDirName}}/` folder (this deployment's own name for its
18
+ checkout): a file in it is `{{kbDirName}}/{{knowledgeBaseDir}}/Foo.md`. Write
19
+ the prefix where you can — it is the path every tool reports back — but a
20
+ path without it is PLACED under `{{kbDirName}}/` rather than refused, so
21
+ `{{knowledgeBaseDir}}/Foo.md` names that same file, and so does the
22
+ root-anchored `/{{kbDirName}}/{{knowledgeBaseDir}}/Foo.md` the app's Copy
23
+ path gives you. Nothing you send can land beside the repository,
24
+ where git would never see it. `.` or `..` segments, backslashes and every other
25
+ absolute path are refused.
26
+
27
+ Only those three folders are structural. `{{skillsDir}}/` holds shared skills at any
28
+ depth — the folder that holds a `SKILL.md` is the skill, and everything above
29
+ it is ownership (`{{skillsDir}}/<scope>/…/<skill>/SKILL.md`, with an `access.md` in
30
+ any scope folder that needs its own rules). `{{pluginsDir}}/` has a layout the
31
+ platform reads:
32
+
33
+ ```text
34
+ {{pluginsDir}}/<Plugin>/plugin.json the manifest (Agent Plugins) — what makes the folder a plugin; its `name` is the plugin's identity
35
+ {{pluginsDir}}/<Plugin>/skills/<skill>/SKILL.md a skill that lives inside the plugin
36
+ {{pluginsDir}}/<Plugin>/mcp.json MCP servers (authoritative)
37
+ {{pluginsDir}}/<Plugin>/software.bevel.hexis/tools/ `.tool` manuals
38
+ {{pluginsDir}}/<Plugin>/access.md who can read/write the plugin
39
+ {{pluginsDir}}/personal-<user-id>/… one per person: private
40
+ ```
41
+
42
+ **The manifest's `name` is the plugin.** It is a kebab-case identifier
43
+ (`sales-team`), and it is what every grant spells (`plugin/sales-team/read`),
44
+ what the URLs and the catalog key on, and what the compiled marketplace
45
+ publishes the plugin as. `displayName` is what people see it called ("Sales
46
+ Team"); absent, the folder name is shown. Rename a plugin from its page in the
47
+ app: an identifier change rewrites every grant that names it, in one commit —
48
+ editing `name` by hand leaves those grants pointing at a plugin that no longer
49
+ exists.
50
+
51
+ **A plugin LINKS shared skills rather than containing them.** Its manifest
52
+ lists skill paths under `extensions["software.bevel.hexis"].skills` — each
53
+ entry is one skill folder or a folder of skills under `{{skillsDir}}/`:
54
+
55
+ ```json
56
+ { "extensions": { "software.bevel.hexis": { "skills": ["{{skillsDir}}/Engineering/deploy", "{{skillsDir}}/Sales"] } } }
57
+ ```
58
+
59
+ One skill, stored once, can be listed by many plugins. A plugin's effective
60
+ skills are the ones inside its folder plus everything its links resolve to.
61
+ Do not edit that list by hand: linking is done from the plugin's page in the
62
+ app, because it is two edits at once — the manifest entry AND a grant on the
63
+ skill (see *Access control* below). A manifest entry without the grant lists
64
+ a skill the plugin's members cannot read; the app shows such a link as
65
+ needing setup and offers Repair.
66
+
67
+ **Ownership decides who may read a skill, never the plugin.** A shared
68
+ skill's readability comes from the `access.md` rules on its own folder and
69
+ the scopes above it. A plugin that links a skill someone cannot read simply
70
+ does not show it to them.
71
+
72
+ **Symlinks are not supported anywhere under `{{pluginsDir}}/`.** Access control
73
+ resolves rules by path, and a symlink is a second path to the same content —
74
+ the two can disagree about who may read what. The platform never creates
75
+ them and ignores any it finds (they can only arrive via a direct git push).
76
+
77
+ **A plugin follows the [Agent Plugins](https://agent-plugins.org) specification**
78
+ (v1.0.0), so another conformant client can load one: it reads `plugin.json`, the
79
+ skills under `skills/`, and the servers in `mcp.json`, and ignores everything
80
+ else. Two things here are ours and sit outside that portable core. `access.md`
81
+ stays at the plugin root because access resolution walks root → file, so the
82
+ same rules one level down would govern only that subtree. And `http`/`inline` `.tool`
83
+ manuals live under the reverse-DNS `software.bevel.hexis/` namespace, because
84
+ the specification describes MCP servers only and has no way to express them.
85
+
86
+ **MCP servers belong in `mcp.json` — do not write `.tool` files for them.**
87
+ Each `mcpServers` key is the server's identity: it is the namespace its vault
88
+ secrets bind to (`<name>_<VAR>`), so renaming a key unbinds every configured
89
+ secret and sign-in. The portable entry carries only where the server is
90
+ (`type`, `url`, literal headers). Anything this platform needs beyond that —
91
+ auth headers carrying `${VAR}` vault references, `variables` declarations,
92
+ a `description`, or `local: true` for a server only reachable from a user's
93
+ machine — goes in `plugin.json` under
94
+ `extensions["software.bevel.hexis"].mcpServers[<name>]`, which other clients
95
+ ignore by design. A `type: "stdio"` entry (a command run on the user's own
96
+ machine) is always local: the hosted endpoint never spawns it; the local
97
+ `hexis-mcp` server fetches the plugin's files to a local directory and runs it
98
+ per the Agent Plugins runtime contract (`PLUGIN_ROOT`/`PLUGIN_DATA`, `./`
99
+ commands contained to the plugin). A stdio server SHOULD exit when its stdin
100
+ reaches EOF — the client also terminates it on shutdown, but a server that
101
+ ignores EOF outlives crashes as an orphan whose working directory blocks the
102
+ plugin folder from ever refreshing.
103
+
104
+ **Secrets are never written into a plugin's portable files.** The specification
105
+ defines no portable credential mechanism on purpose: authorization and
106
+ credential storage are the client's business, header and `env` values are
107
+ "visible package data", and a client must not expand anything except
108
+ `${PLUGIN_ROOT}` and `${PLUGIN_DATA}`. So the Secrets Vault IS this platform's
109
+ answer to that — and `mcp.json` carries only where a server is, never a
110
+ `${VAR}` reference to how to authenticate with it. Those live in `plugin.json`
111
+ under `extensions["software.bevel.hexis"].mcpServers[<name>]`, which is ours
112
+ to interpret and which other clients ignore by design.
113
+
114
+ **Plugin folders are made through the platform, not by writing files.** A
115
+ folder is a plugin exactly when it carries a `plugin.json` (the platform
116
+ writes one into every legacy plugin folder at startup), and it is LISTED only
117
+ when it also carries an `access.md` — a bare directory under `{{pluginsDir}}/` is
118
+ neither. Plugins may sit at any depth under `{{pluginsDir}}/`; a folder that holds
119
+ plugins deeper down is a grouping folder, not a plugin. A new plugin needs an
120
+ `access.md` naming who runs it, and the write gate refuses a plain write
121
+ into an unused name there — so do not try to create a plugin by writing a
122
+ skill into `{{pluginsDir}}/<new-name>/…`; it will be denied. Use the two tools
123
+ instead:
124
+
125
+ - `my_plugin` — your user's personal plugin, holding their own skills and
126
+ tools, created on first use: `{{pluginsDir}}/personal-<id>/`. Readable only
127
+ by its owner — not even admins — and never listed as a plugin. Their personal
128
+ skills go under its `skills/`, each in its own folder with a `SKILL.md`;
129
+ write there with the file tools. A note or any other document goes under
130
+ `{{knowledgeBaseDir}}/` instead — see **Where a new file goes**.
131
+ - `create_plugin` — a shared plugin, named, optionally inside a grouping
132
+ folder under `{{pluginsDir}}/` (`parent`). The caller runs it; others join
133
+ through the app or are granted in its `access.md`.
134
+
135
+ The app's **New plugin** button and `POST /api/plugins` do the same. A skill
136
+ moves from a personal plugin into a shared plugin by moving its folder.
137
+
138
+ Everything under `{{knowledgeBaseDir}}/` is yours to arrange. Subfolders, naming,
139
+ whether a topic is one file or twenty — all of it is a judgement call about
140
+ what the next reader needs, not a rule the platform enforces.
141
+
142
+ A deployment may reserve further root folders of its own — `Data/`, `Agents/`
143
+ and `Pipelines/` scaffold an agentic execution layer in some installations.
144
+ They are not part of this template and are not created here; where they exist,
145
+ each carries its own `README.md` describing what belongs in it.
@@ -0,0 +1,7 @@
1
+ ## Finding things
2
+
3
+ - `grep` for keywords across `{{knowledgeBaseDir}}/`.
4
+ - Follow markdown links: when you read `[Some Page](relative/path/Some Page.md)`,
5
+ that path is relative to the file you are reading.
6
+ - `list_files` to see the shape of a folder before assuming where something
7
+ lives.
@@ -0,0 +1,83 @@
1
+ ## HTML views
2
+
3
+ An `.html` (or `.htm`) file in the knowledge base is a live page: the app shows
4
+ it in a sandboxed frame, scripts and all. Write one when a reader is better
5
+ served by something interactive — a dashboard, a filterable table, a chart —
6
+ than by a markdown document.
7
+
8
+ ### The frame
9
+
10
+ - **No network.** The page cannot fetch, load or send anything: no `fetch`, no
11
+ XHR, no WebSocket, no external script, stylesheet, font or image. Put the
12
+ data the page shows into the page itself.
13
+ - **Inline scripts and styles only.** `<script src>`, `<link>`, `<iframe>`,
14
+ `<object>`, `<embed>`, `<base>` and `<meta>` are removed. Write CSS in a
15
+ `<style>` element and code in an inline `<script>`. An image is a `data:`
16
+ URL.
17
+ - **Scripts run as ES modules**, in source order, after the document is
18
+ parsed: `document.getElementById` works without waiting for
19
+ `DOMContentLoaded`, top-level `await` works, and a top-level declaration is
20
+ local to its script, not a global.
21
+ - **No browser storage.** `localStorage`, `sessionStorage`, IndexedDB and
22
+ cookies are unavailable; a page keeps no state between views.
23
+ - **No host navigation.** The page cannot navigate the app, open a window or
24
+ submit a form. Links reach the app through the bridge below.
25
+ - **`window.bevel` exists only in the app.** Opened anywhere else, the page has
26
+ no bridge; guard a call with `window.bevel?.openNode`.
27
+
28
+ ### `window.bevel`
29
+
30
+ Core puts two members on it:
31
+
32
+ - `window.bevel.openNode(href)` — follow `href` as if the reader had clicked a
33
+ link to it.
34
+ - `window.bevel.navigate(href)` — the same function under a second name.
35
+
36
+ A distribution may add data members of its own to `window.bevel`; its own
37
+ section of this guide names them. Do not call a member this guide does not
38
+ name.
39
+
40
+ ### Links written in the markup
41
+
42
+ An `<a href>` in the page keeps its address only when it is one of these:
43
+
44
+ - a document of the knowledge base, `.md`, `.html` or `.htm`, with or without a heading — `../Knowledge/Alice.md#goal`, `Q3-Report.html`, `Notes.htm`
45
+ - an absolute workspace URL — `/workspace/main/{{knowledgeBaseDir}}/Alice.md`
46
+ - an external address — `https://example.com/docs`, `http://example.com`, `mailto:team@example.com`
47
+ - a bare fragment, a place in this page — `#totals`, `#`
48
+
49
+ Every other address is removed from the link when the page is shown, and the
50
+ link goes nowhere:
51
+
52
+ - any other scheme — `javascript:alert(1)`, `data:text/html,hi`, `file:///etc/hosts`, `tel:+15550100`
53
+ - a protocol-relative address — `//cdn.example.com/lib.js`
54
+ - a relative path to anything else — `data.csv`, `../Images/chart.png`
55
+
56
+ ### How a link resolves
57
+
58
+ The same rules apply to a click on a link and to `window.bevel.openNode(href)`
59
+ or `window.bevel.navigate(href)`:
60
+
61
+ - **A bare fragment scrolls the page.** `#totals` scrolls the element with
62
+ `id="totals"` into view inside the frame; the page stays loaded and the app
63
+ does not move. A fragment that names no element by `id`, and no `<a name>`,
64
+ does nothing. `#` and `#top` scroll to the top of the page only when no
65
+ target matches: an element with `id="top"`, or an `<a name="top">`, wins
66
+ over the top of the page. Use this for a table of contents or a "back to
67
+ top" link. The page's own address does not change, so `hashchange` never
68
+ fires: a page that routes by hash handles its own clicks.
69
+ - **A relative path** resolves against the folder of the page's own file and
70
+ opens that file in the app: from `{{knowledgeBaseDir}}/Reports/Q3.html`,
71
+ `../Knowledge/Alice.md#goal` opens `{{knowledgeBaseDir}}/Knowledge/Alice.md`
72
+ at its `goal` heading.
73
+ - **`/workspace/<branch>/<path>`** opens that file on that branch.
74
+ - **An external address** (`http:`, `https:`, `mailto:`) opens in a new tab.
75
+ A call from a script may also open `tel:`, `sms:`, `geo:` and a
76
+ protocol-relative `//host/path` address in a new tab, though a link
77
+ written in the markup cannot keep one.
78
+ - **Anything else** (`javascript:`, `data:`, `file:`, an empty string) does
79
+ nothing.
80
+
81
+ A click that a handler of the page has already cancelled with
82
+ `event.preventDefault()` is left to that handler: the bridge neither scrolls
83
+ nor opens anything for it.
@@ -0,0 +1,27 @@
1
+ # Knowledge base
2
+
3
+ This is a git-backed knowledge base. You are the primary agent responsible for
4
+ maintaining it.
5
+
6
+ > **This guide is served by the platform.** It is not a file in the
7
+ > repository: `get_agent_guide` returns it, whole or one section at a time,
8
+ > and so does `read_file` on `AGENTS.md` at the repository root — after the
9
+ > knowledge base's own `AGENTS.md`, when it has one; `grep` searches it there
10
+ > too. An `AGENTS.md` you find on disk is the organisation's own conventions
11
+ > file, written by its people; follow it, and never write this text into it.
12
+ > Deployment- or team-specific conventions belong there, or in files of your
13
+ > own anywhere under `{{knowledgeBaseDir}}/`, linked from wherever they are
14
+ > needed.
15
+
16
+ **Read `mcp-description.md` at the repository root first.** It says what this
17
+ knowledge base contains and when to consult it. Agents connected over MCP
18
+ receive the default branch's copy inline at the start of every session; a
19
+ clone reads the copy on its own branch.
20
+
21
+ **There is no required format for knowledge.** Write markdown the way the
22
+ subject wants to be written: prose, tables, checklists, diagrams, whatever
23
+ serves the reader. Nothing here parses your files into a schema or rejects a
24
+ document for having the wrong shape. If a deployment layers a structured
25
+ knowledge graph on top, it brings its own conventions, in sections of this
26
+ guide of its own; what follows describes the platform underneath, which stores
27
+ files and controls who may change them.
@@ -0,0 +1,24 @@
1
+ ## A new knowledge base
2
+
3
+ When `start_session` answers with a `firstRun` note, this knowledge base is
4
+ new: `{{kbDirName}}/{{knowledgeBaseDir}}/` has no pages yet, the starter guide
5
+ aside. The person has most likely just connected you, and you are the quickest way to
6
+ fill it. The note stops coming once real pages exist.
7
+
8
+ - **Offer once per conversation, in a sentence or two.** For example: "Your
9
+ Hexis knowledge base is connected and almost empty. Want me to draft a few
10
+ pages about your company — what you do, your customers, your products, your
11
+ glossary? Give me your website or tell me a bit, and I'll write them for you
12
+ to review."
13
+ - **Never in the way.** If they asked for something else, do that first and
14
+ make the offer in one line at the end. If they decline, drop it.
15
+ - **Draft from what they give you.** Read the website they name, or work from
16
+ what they tell you, and ask when something essential is missing rather than
17
+ inventing it. Good first pages: About the company, Customers, Products,
18
+ Glossary, How we work. Say where each fact came from (see Conventions).
19
+ - **Write them with the normal tools** (`write_file`, `write_files`) as
20
+ markdown under `{{kbDirName}}/{{knowledgeBaseDir}}/`, one page per subject.
21
+ Leave the starter guide as it is. A write you are refused says whether you
22
+ may propose it as a change instead; propose it only when it says you may.
23
+ - **Tell them where the pages are:** in the knowledge base in the app, where
24
+ they can read, edit or delete them, and every version stays in the history.
@@ -0,0 +1,47 @@
1
+ ## Skills (`{{skillsDir}}/<scope>/…/<skill>/SKILL.md`, or `{{pluginsDir}}/<Plugin>/skills/<skill>/SKILL.md`)
2
+
3
+ A skill is a folder holding a `SKILL.md` and whatever files it needs. Shared
4
+ skills live under `{{skillsDir}}/`, organised by ownership; a skill that belongs to
5
+ exactly one plugin may live inside that plugin's `skills/` folder instead.
6
+ Skill names are unique across the whole catalog, whichever home they have.
7
+ The frontmatter names it, declares which tools it may use, and may carry a
8
+ version:
9
+
10
+ ```yaml
11
+ ---
12
+ name: weekly-newsletter
13
+ description: Drafts the Friday newsletter for review.
14
+ allowed-tools: [slack_post_message]
15
+ metadata:
16
+ version: "1.4.0"
17
+ ---
18
+ ```
19
+
20
+ The body is the instructions, in plain markdown. `allowed-tools` entries are
21
+ tool names from the `.tool` manuals and MCP servers of the plugins that hold
22
+ the skill, and the agent client's own tools beside them (`Bash`, `Read`,
23
+ `Bash(git:*)` and the like, which the platform leaves to the client).
24
+ `metadata.version` is semver; `list_skills` reports it, and
25
+ `get_skill` with a `version` loads the skill as it was when it last declared
26
+ that version (omit `version` for the latest). Any other `metadata` keys are
27
+ the author's own notes — the catalog carries the file as it is and acts on
28
+ none of them.
29
+
30
+ A `SKILL.md` committed on the default branch is listed and loadable from the
31
+ very next `list_skills` or `get_skill`, on the connection you already have:
32
+ the released catalog is cached briefly and dropped the moment the default
33
+ branch changes, so the next request reads the workspace again.
34
+ See *A released tool or skill is live within ten seconds* under **Tool
35
+ Manuals** for the one caveat (an MCP client that caches the prompt list it
36
+ was given at connect time must re-list — the prompt-list-changed notification
37
+ that tells it to arrives with the connection's next catalog check, which is
38
+ within ten seconds on a connection in use and at its next use on an idle
39
+ one).
40
+
41
+ **How skills reach agents.** Through the MCP server (`list_skills`,
42
+ `get_skill`), or as native plugins: every user can clone a git remote from
43
+ the app's external-agent page that holds a plugin marketplace compiled from
44
+ exactly the skills they may read — one plugin per plugin here, a
45
+ `skills-and-knowledge` plugin for the rest plus this knowledge base's MCP
46
+ server, and `hexis-all`, one plugin holding every skill they may read and
47
+ the MCP server, for a single install.