@monoes/monomindcli 2.9.24 → 2.9.27

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 (254) hide show
  1. package/.claude/helpers/control-start.cjs +15 -1
  2. package/.claude/helpers/handlers/edit-handler.cjs +3 -2
  3. package/.claude/helpers/handlers/route-handler.cjs +19 -4
  4. package/.claude/helpers/hook-handler.cjs +2 -0
  5. package/.claude/helpers/utils/monograph.cjs +8 -0
  6. package/.claude/skills/mastermind/SKILL.md +21 -0
  7. package/.claude/skills/mastermind/references/antigravity-tools.md +60 -0
  8. package/.claude/skills/mastermind/references/claude-code-tools.md +50 -0
  9. package/.claude/skills/mastermind/references/codex-tools.md +64 -0
  10. package/.claude/skills/mastermind/references/copilot-tools.md +49 -0
  11. package/.claude/skills/mastermind/references/gemini-tools.md +63 -0
  12. package/.claude/skills/mastermind/references/pi-tools.md +28 -0
  13. package/.claude/skills/mastermind-org/SKILL.md +16 -0
  14. package/dist/src/commands/browse.d.ts +2 -10
  15. package/dist/src/commands/browse.d.ts.map +1 -1
  16. package/dist/src/commands/browse.js +7 -2
  17. package/dist/src/commands/browse.js.map +1 -1
  18. package/dist/src/commands/doctor.d.ts.map +1 -1
  19. package/dist/src/commands/doctor.js +16 -1
  20. package/dist/src/commands/doctor.js.map +1 -1
  21. package/dist/src/commands/index.d.ts +1 -1
  22. package/dist/src/commands/index.d.ts.map +1 -1
  23. package/dist/src/commands/index.js +10 -1
  24. package/dist/src/commands/index.js.map +1 -1
  25. package/dist/src/commands/init.d.ts.map +1 -1
  26. package/dist/src/commands/init.js +63 -5
  27. package/dist/src/commands/init.js.map +1 -1
  28. package/dist/src/commands/mastermind.d.ts +10 -0
  29. package/dist/src/commands/mastermind.d.ts.map +1 -0
  30. package/dist/src/commands/mastermind.js +62 -0
  31. package/dist/src/commands/mastermind.js.map +1 -0
  32. package/dist/src/commands/platforms.d.ts +9 -7
  33. package/dist/src/commands/platforms.d.ts.map +1 -1
  34. package/dist/src/commands/platforms.js +225 -571
  35. package/dist/src/commands/platforms.js.map +1 -1
  36. package/dist/src/commands/status.d.ts.map +1 -1
  37. package/dist/src/commands/status.js +7 -1
  38. package/dist/src/commands/status.js.map +1 -1
  39. package/dist/src/commands/update.d.ts.map +1 -1
  40. package/dist/src/commands/update.js +22 -0
  41. package/dist/src/commands/update.js.map +1 -1
  42. package/dist/src/init/codex-generator.d.ts.map +1 -1
  43. package/dist/src/init/codex-generator.js +5 -3
  44. package/dist/src/init/codex-generator.js.map +1 -1
  45. package/dist/src/init/executor.d.ts +6 -0
  46. package/dist/src/init/executor.d.ts.map +1 -1
  47. package/dist/src/init/executor.js +32 -3
  48. package/dist/src/init/executor.js.map +1 -1
  49. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  50. package/dist/src/init/mcp-generator.js +5 -40
  51. package/dist/src/init/mcp-generator.js.map +1 -1
  52. package/dist/src/init/shared.d.ts.map +1 -1
  53. package/dist/src/init/shared.js +6 -5
  54. package/dist/src/init/shared.js.map +1 -1
  55. package/dist/src/init/types.d.ts +4 -0
  56. package/dist/src/init/types.d.ts.map +1 -1
  57. package/dist/src/init/types.js.map +1 -1
  58. package/dist/src/init/upgrade.d.ts.map +1 -1
  59. package/dist/src/init/upgrade.js +11 -1
  60. package/dist/src/init/upgrade.js.map +1 -1
  61. package/dist/src/init/write-antigravity.d.ts.map +1 -1
  62. package/dist/src/init/write-antigravity.js +5 -50
  63. package/dist/src/init/write-antigravity.js.map +1 -1
  64. package/dist/src/init/write-claude.d.ts.map +1 -1
  65. package/dist/src/init/write-claude.js +4 -88
  66. package/dist/src/init/write-claude.js.map +1 -1
  67. package/dist/src/init/write-codex.d.ts.map +1 -1
  68. package/dist/src/init/write-codex.js +20 -12
  69. package/dist/src/init/write-codex.js.map +1 -1
  70. package/dist/src/init/write-kimicode.d.ts.map +1 -1
  71. package/dist/src/init/write-kimicode.js +4 -48
  72. package/dist/src/init/write-kimicode.js.map +1 -1
  73. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  74. package/dist/src/knowledge/document-pipeline.js +6 -4
  75. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  76. package/dist/src/knowledge/eval/harness.d.ts.map +1 -1
  77. package/dist/src/knowledge/eval/harness.js +9 -11
  78. package/dist/src/knowledge/eval/harness.js.map +1 -1
  79. package/dist/src/mastermind/manifest-data.d.ts +10 -0
  80. package/dist/src/mastermind/manifest-data.d.ts.map +1 -0
  81. package/dist/src/mastermind/manifest-data.js +67 -0
  82. package/dist/src/mastermind/manifest-data.js.map +1 -0
  83. package/dist/src/mastermind/manifest.d.ts +22 -0
  84. package/dist/src/mastermind/manifest.d.ts.map +1 -0
  85. package/dist/src/mastermind/manifest.js +36 -0
  86. package/dist/src/mastermind/manifest.js.map +1 -0
  87. package/dist/src/mcp-client.d.ts.map +1 -1
  88. package/dist/src/mcp-client.js +2 -0
  89. package/dist/src/mcp-client.js.map +1 -1
  90. package/dist/src/mcp-tools/index.d.ts +1 -0
  91. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  92. package/dist/src/mcp-tools/index.js +1 -0
  93. package/dist/src/mcp-tools/index.js.map +1 -1
  94. package/dist/src/mcp-tools/platforms-tools.d.ts +5 -0
  95. package/dist/src/mcp-tools/platforms-tools.d.ts.map +1 -0
  96. package/dist/src/mcp-tools/platforms-tools.js +38 -0
  97. package/dist/src/mcp-tools/platforms-tools.js.map +1 -0
  98. package/dist/src/memory/intelligence.d.ts.map +1 -1
  99. package/dist/src/memory/intelligence.js +54 -20
  100. package/dist/src/memory/intelligence.js.map +1 -1
  101. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  102. package/dist/src/memory/memory-bridge.js +3 -2
  103. package/dist/src/memory/memory-bridge.js.map +1 -1
  104. package/dist/src/memory/memory-kg.js +3 -3
  105. package/dist/src/memory/memory-kg.js.map +1 -1
  106. package/dist/src/monovector/diff-classifier.d.ts +2 -2
  107. package/dist/src/monovector/diff-classifier.d.ts.map +1 -1
  108. package/dist/src/monovector/diff-classifier.js.map +1 -1
  109. package/dist/src/orgrt/session.d.ts.map +1 -1
  110. package/dist/src/orgrt/session.js +54 -24
  111. package/dist/src/orgrt/session.js.map +1 -1
  112. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  113. package/dist/src/orgrt/task-dag.js +5 -1
  114. package/dist/src/orgrt/task-dag.js.map +1 -1
  115. package/dist/src/platform-adapters/core.d.ts +20 -0
  116. package/dist/src/platform-adapters/core.d.ts.map +1 -0
  117. package/dist/src/platform-adapters/core.js +34 -0
  118. package/dist/src/platform-adapters/core.js.map +1 -0
  119. package/dist/src/platform-adapters/discovery.d.ts +15 -0
  120. package/dist/src/platform-adapters/discovery.d.ts.map +1 -0
  121. package/dist/src/platform-adapters/discovery.js +64 -0
  122. package/dist/src/platform-adapters/discovery.js.map +1 -0
  123. package/dist/src/platform-adapters/docs.d.ts +4 -0
  124. package/dist/src/platform-adapters/docs.d.ts.map +1 -0
  125. package/dist/src/platform-adapters/docs.js +34 -0
  126. package/dist/src/platform-adapters/docs.js.map +1 -0
  127. package/dist/src/platform-adapters/hook-bridge.d.ts +44 -0
  128. package/dist/src/platform-adapters/hook-bridge.d.ts.map +1 -0
  129. package/dist/src/platform-adapters/hook-bridge.js +133 -0
  130. package/dist/src/platform-adapters/hook-bridge.js.map +1 -0
  131. package/dist/src/platform-adapters/merge.d.ts +32 -0
  132. package/dist/src/platform-adapters/merge.d.ts.map +1 -0
  133. package/dist/src/platform-adapters/merge.js +209 -0
  134. package/dist/src/platform-adapters/merge.js.map +1 -0
  135. package/dist/src/platform-adapters/migration.d.ts +31 -0
  136. package/dist/src/platform-adapters/migration.d.ts.map +1 -0
  137. package/dist/src/platform-adapters/migration.js +402 -0
  138. package/dist/src/platform-adapters/migration.js.map +1 -0
  139. package/dist/src/platform-adapters/operations.d.ts +23 -0
  140. package/dist/src/platform-adapters/operations.d.ts.map +1 -0
  141. package/dist/src/platform-adapters/operations.js +405 -0
  142. package/dist/src/platform-adapters/operations.js.map +1 -0
  143. package/dist/src/platform-adapters/registry.d.ts +9 -0
  144. package/dist/src/platform-adapters/registry.d.ts.map +1 -0
  145. package/dist/src/platform-adapters/registry.js +614 -0
  146. package/dist/src/platform-adapters/registry.js.map +1 -0
  147. package/dist/src/platform-adapters/renderers/agents.d.ts +5 -0
  148. package/dist/src/platform-adapters/renderers/agents.d.ts.map +1 -0
  149. package/dist/src/platform-adapters/renderers/agents.js +46 -0
  150. package/dist/src/platform-adapters/renderers/agents.js.map +1 -0
  151. package/dist/src/platform-adapters/renderers/aider.d.ts +2 -0
  152. package/dist/src/platform-adapters/renderers/aider.d.ts.map +1 -0
  153. package/dist/src/platform-adapters/renderers/aider.js +3 -0
  154. package/dist/src/platform-adapters/renderers/aider.js.map +1 -0
  155. package/dist/src/platform-adapters/renderers/antigravity.d.ts +2 -0
  156. package/dist/src/platform-adapters/renderers/antigravity.d.ts.map +1 -0
  157. package/dist/src/platform-adapters/renderers/antigravity.js +3 -0
  158. package/dist/src/platform-adapters/renderers/antigravity.js.map +1 -0
  159. package/dist/src/platform-adapters/renderers/claude.d.ts +2 -0
  160. package/dist/src/platform-adapters/renderers/claude.d.ts.map +1 -0
  161. package/dist/src/platform-adapters/renderers/claude.js +3 -0
  162. package/dist/src/platform-adapters/renderers/claude.js.map +1 -0
  163. package/dist/src/platform-adapters/renderers/codex.d.ts +2 -0
  164. package/dist/src/platform-adapters/renderers/codex.d.ts.map +1 -0
  165. package/dist/src/platform-adapters/renderers/codex.js +3 -0
  166. package/dist/src/platform-adapters/renderers/codex.js.map +1 -0
  167. package/dist/src/platform-adapters/renderers/commands.d.ts +13 -0
  168. package/dist/src/platform-adapters/renderers/commands.d.ts.map +1 -0
  169. package/dist/src/platform-adapters/renderers/commands.js +78 -0
  170. package/dist/src/platform-adapters/renderers/commands.js.map +1 -0
  171. package/dist/src/platform-adapters/renderers/copilot.d.ts +2 -0
  172. package/dist/src/platform-adapters/renderers/copilot.d.ts.map +1 -0
  173. package/dist/src/platform-adapters/renderers/copilot.js +3 -0
  174. package/dist/src/platform-adapters/renderers/copilot.js.map +1 -0
  175. package/dist/src/platform-adapters/renderers/cursor.d.ts +2 -0
  176. package/dist/src/platform-adapters/renderers/cursor.d.ts.map +1 -0
  177. package/dist/src/platform-adapters/renderers/cursor.js +3 -0
  178. package/dist/src/platform-adapters/renderers/cursor.js.map +1 -0
  179. package/dist/src/platform-adapters/renderers/droid.d.ts +2 -0
  180. package/dist/src/platform-adapters/renderers/droid.d.ts.map +1 -0
  181. package/dist/src/platform-adapters/renderers/droid.js +3 -0
  182. package/dist/src/platform-adapters/renderers/droid.js.map +1 -0
  183. package/dist/src/platform-adapters/renderers/experimental.d.ts +6 -0
  184. package/dist/src/platform-adapters/renderers/experimental.d.ts.map +1 -0
  185. package/dist/src/platform-adapters/renderers/experimental.js +9 -0
  186. package/dist/src/platform-adapters/renderers/experimental.js.map +1 -0
  187. package/dist/src/platform-adapters/renderers/factory.d.ts +14 -0
  188. package/dist/src/platform-adapters/renderers/factory.d.ts.map +1 -0
  189. package/dist/src/platform-adapters/renderers/factory.js +53 -0
  190. package/dist/src/platform-adapters/renderers/factory.js.map +1 -0
  191. package/dist/src/platform-adapters/renderers/gemini.d.ts +2 -0
  192. package/dist/src/platform-adapters/renderers/gemini.d.ts.map +1 -0
  193. package/dist/src/platform-adapters/renderers/gemini.js +3 -0
  194. package/dist/src/platform-adapters/renderers/gemini.js.map +1 -0
  195. package/dist/src/platform-adapters/renderers/hooks.d.ts +37 -0
  196. package/dist/src/platform-adapters/renderers/hooks.d.ts.map +1 -0
  197. package/dist/src/platform-adapters/renderers/hooks.js +166 -0
  198. package/dist/src/platform-adapters/renderers/hooks.js.map +1 -0
  199. package/dist/src/platform-adapters/renderers/index.d.ts +8 -0
  200. package/dist/src/platform-adapters/renderers/index.d.ts.map +1 -0
  201. package/dist/src/platform-adapters/renderers/index.js +39 -0
  202. package/dist/src/platform-adapters/renderers/index.js.map +1 -0
  203. package/dist/src/platform-adapters/renderers/instructions.d.ts +6 -0
  204. package/dist/src/platform-adapters/renderers/instructions.d.ts.map +1 -0
  205. package/dist/src/platform-adapters/renderers/instructions.js +31 -0
  206. package/dist/src/platform-adapters/renderers/instructions.js.map +1 -0
  207. package/dist/src/platform-adapters/renderers/kimi.d.ts +2 -0
  208. package/dist/src/platform-adapters/renderers/kimi.d.ts.map +1 -0
  209. package/dist/src/platform-adapters/renderers/kimi.js +3 -0
  210. package/dist/src/platform-adapters/renderers/kimi.js.map +1 -0
  211. package/dist/src/platform-adapters/renderers/kiro.d.ts +2 -0
  212. package/dist/src/platform-adapters/renderers/kiro.d.ts.map +1 -0
  213. package/dist/src/platform-adapters/renderers/kiro.js +3 -0
  214. package/dist/src/platform-adapters/renderers/kiro.js.map +1 -0
  215. package/dist/src/platform-adapters/renderers/mcp.d.ts +29 -0
  216. package/dist/src/platform-adapters/renderers/mcp.d.ts.map +1 -0
  217. package/dist/src/platform-adapters/renderers/mcp.js +69 -0
  218. package/dist/src/platform-adapters/renderers/mcp.js.map +1 -0
  219. package/dist/src/platform-adapters/renderers/openclaw.d.ts +2 -0
  220. package/dist/src/platform-adapters/renderers/openclaw.d.ts.map +1 -0
  221. package/dist/src/platform-adapters/renderers/openclaw.js +3 -0
  222. package/dist/src/platform-adapters/renderers/openclaw.js.map +1 -0
  223. package/dist/src/platform-adapters/renderers/opencode.d.ts +2 -0
  224. package/dist/src/platform-adapters/renderers/opencode.d.ts.map +1 -0
  225. package/dist/src/platform-adapters/renderers/opencode.js +3 -0
  226. package/dist/src/platform-adapters/renderers/opencode.js.map +1 -0
  227. package/dist/src/platform-adapters/renderers/skills.d.ts +11 -0
  228. package/dist/src/platform-adapters/renderers/skills.d.ts.map +1 -0
  229. package/dist/src/platform-adapters/renderers/skills.js +60 -0
  230. package/dist/src/platform-adapters/renderers/skills.js.map +1 -0
  231. package/dist/src/platform-adapters/renderers/status.d.ts +23 -0
  232. package/dist/src/platform-adapters/renderers/status.d.ts.map +1 -0
  233. package/dist/src/platform-adapters/renderers/status.js +63 -0
  234. package/dist/src/platform-adapters/renderers/status.js.map +1 -0
  235. package/dist/src/platform-adapters/renderers/vscode.d.ts +2 -0
  236. package/dist/src/platform-adapters/renderers/vscode.d.ts.map +1 -0
  237. package/dist/src/platform-adapters/renderers/vscode.js +3 -0
  238. package/dist/src/platform-adapters/renderers/vscode.js.map +1 -0
  239. package/dist/src/platform-adapters/renderers/zed.d.ts +2 -0
  240. package/dist/src/platform-adapters/renderers/zed.d.ts.map +1 -0
  241. package/dist/src/platform-adapters/renderers/zed.js +3 -0
  242. package/dist/src/platform-adapters/renderers/zed.js.map +1 -0
  243. package/dist/src/platform-adapters/types.d.ts +105 -0
  244. package/dist/src/platform-adapters/types.d.ts.map +1 -0
  245. package/dist/src/platform-adapters/types.js +13 -0
  246. package/dist/src/platform-adapters/types.js.map +1 -0
  247. package/dist/src/platform-adapters/verification-ledger.d.ts +8 -0
  248. package/dist/src/platform-adapters/verification-ledger.d.ts.map +1 -0
  249. package/dist/src/platform-adapters/verification-ledger.js +24 -0
  250. package/dist/src/platform-adapters/verification-ledger.js.map +1 -0
  251. package/dist/src/ui/markdown.js +10 -0
  252. package/dist/tsconfig.tsbuildinfo +1 -1
  253. package/package.json +2 -2
  254. package/dist/src/ui/data/mastermind-sessions.json +0 -1
@@ -0,0 +1,46 @@
1
+ /** Native subagent manifest renderer. */
2
+ function toolPolicy(adapter) {
3
+ switch (adapter.id) {
4
+ case 'claude':
5
+ return ['tools:', ' - Read', ' - Grep', ' - Glob', ' - Bash'];
6
+ case 'opencode':
7
+ return ['permission:', ' read: allow', ' search: allow', ' shell: ask', ' edit: ask'];
8
+ case 'kimi':
9
+ return ['tools: read, search, shell'];
10
+ default:
11
+ // Keep policy fields out of platforms whose agent schema has not been verified.
12
+ return [];
13
+ }
14
+ }
15
+ function agentContent(adapter) {
16
+ return [
17
+ '---',
18
+ 'name: mastermind-coordinator',
19
+ 'description: Coordinates planning, review, debugging, research, and execution with Monomind.',
20
+ ...toolPolicy(adapter),
21
+ '---',
22
+ '',
23
+ 'Use the applicable `mastermind-*` skill and Monomind MCP tools. Escalate shell and edit actions according to the platform tool policy.',
24
+ '',
25
+ ].join('\n');
26
+ }
27
+ /** Render one portable coordinator definition where a native agent surface is available. */
28
+ export function renderAgents(adapter, scope) {
29
+ const location = adapter.paths.locations.agent?.[scope];
30
+ if (adapter.capabilities.agents !== 'native' ||
31
+ location === undefined ||
32
+ typeof location === 'string')
33
+ return [];
34
+ return [
35
+ {
36
+ kind: 'agent',
37
+ locationKey: 'agent',
38
+ content: agentContent(adapter),
39
+ scope,
40
+ replace: 'managed_block',
41
+ marker: `agents:${adapter.id}:mastermind-coordinator`,
42
+ format: 'md',
43
+ },
44
+ ];
45
+ }
46
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/agents.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAIzC,SAAS,UAAU,CAAC,OAAwB;IAC1C,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,KAAK,UAAU;YACb,OAAO,CAAC,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QAC5F,KAAK,MAAM;YACT,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACxC;YACE,gFAAgF;YAChF,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAwB;IAC5C,OAAO;QACL,KAAK;QACL,8BAA8B;QAC9B,8FAA8F;QAC9F,GAAG,UAAU,CAAC,OAAO,CAAC;QACtB,KAAK;QACL,EAAE;QACF,wIAAwI;QACxI,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,YAAY,CAAC,OAAwB,EAAE,KAAmB;IACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IACxD,IACE,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,QAAQ;QACxC,QAAQ,KAAK,SAAS;QACtB,OAAO,QAAQ,KAAK,QAAQ;QAE5B,OAAO,EAAE,CAAC;IAEZ,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;YAC9B,KAAK;YACL,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,UAAU,OAAO,CAAC,EAAE,yBAAyB;YACrD,MAAM,EAAE,IAAI;SACb;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const aiderRenderer: import("./factory.js").PlatformRenderer;
2
+ //# sourceMappingURL=aider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aider.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/aider.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,yCAAkC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createPlatformRenderer } from './factory.js';
2
+ export const aiderRenderer = createPlatformRenderer('aider');
3
+ //# sourceMappingURL=aider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aider.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/aider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const antigravityRenderer: import("./factory.js").PlatformRenderer;
2
+ //# sourceMappingURL=antigravity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/antigravity.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,yCAAwC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createPlatformRenderer } from './factory.js';
2
+ export const antigravityRenderer = createPlatformRenderer('antigravity');
3
+ //# sourceMappingURL=antigravity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const claudeRenderer: import("./factory.js").PlatformRenderer;
2
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/claude.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,yCAAmC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createPlatformRenderer } from './factory.js';
2
+ export const claudeRenderer = createPlatformRenderer('claude');
3
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const codexRenderer: import("./factory.js").PlatformRenderer;
2
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/codex.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,yCAAkC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createPlatformRenderer } from './factory.js';
2
+ export const codexRenderer = createPlatformRenderer('codex');
3
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** Native command and permission artifact renderers. */
2
+ import type { ArtifactIntent, InstallScope, PlatformAdapter } from '../types.js';
3
+ export interface CommandAlias {
4
+ name: string;
5
+ kind: 'skill' | 'cli';
6
+ invoke: string;
7
+ }
8
+ export declare const COMMAND_ALIASES: readonly CommandAlias[];
9
+ /** Render native aliases only after the adapter's capability has been promoted. */
10
+ export declare function renderCommands(adapter: PlatformAdapter, scope: InstallScope): ArtifactIntent[];
11
+ /** Render a permission policy only for an evidence-verified native surface. */
12
+ export declare function renderPermissions(adapter: PlatformAdapter, scope: InstallScope): ArtifactIntent[];
13
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/commands.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,OAAO,KAAK,EAAE,cAAc,EAAgB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE/F,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAUlD,CAAC;AAsBF,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,EAAE,CAe9F;AAsBD,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,EAAE,CAkBjG"}
@@ -0,0 +1,78 @@
1
+ /** Native command and permission artifact renderers. */
2
+ export const COMMAND_ALIASES = [
3
+ { name: 'plan', kind: 'skill', invoke: 'mastermind-plan' },
4
+ { name: 'review', kind: 'skill', invoke: 'mastermind-review' },
5
+ { name: 'debug', kind: 'skill', invoke: 'mastermind-debug' },
6
+ { name: 'research', kind: 'skill', invoke: 'mastermind-research' },
7
+ { name: 'execute', kind: 'skill', invoke: 'mastermind-execute' },
8
+ { name: 'org', kind: 'cli', invoke: 'monomind org run' },
9
+ { name: 'memory', kind: 'cli', invoke: 'monomind memory' },
10
+ { name: 'status', kind: 'cli', invoke: 'monomind status --json' },
11
+ { name: 'doctor', kind: 'cli', invoke: 'monomind platforms doctor' },
12
+ ];
13
+ function hasConcreteLocation(adapter, kind, scope) {
14
+ const location = adapter.paths.locations[kind]?.[scope];
15
+ return location !== undefined && typeof location !== 'string';
16
+ }
17
+ function commandContent(adapter) {
18
+ const aliases = COMMAND_ALIASES.map(({ name, invoke }) => `- \`/${name}\` → \`${invoke}\``);
19
+ return [
20
+ `# Monomind commands for ${adapter.displayName}`,
21
+ '',
22
+ 'Use these aliases to select a Mastermind workflow or CLI operation:',
23
+ ...aliases,
24
+ '',
25
+ ].join('\n');
26
+ }
27
+ /** Render native aliases only after the adapter's capability has been promoted. */
28
+ export function renderCommands(adapter, scope) {
29
+ if (adapter.capabilities.commands !== 'native' || !hasConcreteLocation(adapter, 'command', scope))
30
+ return [];
31
+ return [
32
+ {
33
+ kind: 'command',
34
+ locationKey: 'command',
35
+ content: commandContent(adapter),
36
+ scope,
37
+ replace: 'managed_block',
38
+ marker: `commands:${adapter.id}`,
39
+ format: 'md',
40
+ },
41
+ ];
42
+ }
43
+ function permissionContent(adapter) {
44
+ if (adapter.id === 'opencode') {
45
+ return [
46
+ '# Monomind tool policy',
47
+ 'permission:',
48
+ ' read: allow',
49
+ ' search: allow',
50
+ ' shell: ask',
51
+ ' edit: ask',
52
+ '',
53
+ ].join('\n');
54
+ }
55
+ return [
56
+ `# Monomind tool policy for ${adapter.displayName}`,
57
+ 'Read and search tools are allowed; edits and shell commands require confirmation.',
58
+ '',
59
+ ].join('\n');
60
+ }
61
+ /** Render a permission policy only for an evidence-verified native surface. */
62
+ export function renderPermissions(adapter, scope) {
63
+ if (adapter.capabilities.permissions !== 'native' ||
64
+ !hasConcreteLocation(adapter, 'permission', scope))
65
+ return [];
66
+ return [
67
+ {
68
+ kind: 'permission',
69
+ locationKey: 'permission',
70
+ content: permissionContent(adapter),
71
+ scope,
72
+ replace: 'managed_block',
73
+ marker: `permissions:${adapter.id}`,
74
+ format: 'md',
75
+ },
76
+ ];
77
+ }
78
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/commands.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAUxD,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;IAC1D,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE;IAC5D,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE;IAClE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE;IAChE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE;IACxD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE;IAC1D,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE;IACjE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE;CACrE,CAAC;AAEF,SAAS,mBAAmB,CAC1B,OAAwB,EACxB,IAAkB,EAClB,KAAmB;IAEnB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACxD,OAAO,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC;AAChE,CAAC;AAED,SAAS,cAAc,CAAC,OAAwB;IAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,QAAQ,IAAI,UAAU,MAAM,IAAI,CAAC,CAAC;IAC5F,OAAO;QACL,2BAA2B,OAAO,CAAC,WAAW,EAAE;QAChD,EAAE;QACF,qEAAqE;QACrE,GAAG,OAAO;QACV,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,OAAwB,EAAE,KAAmB;IAC1E,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;QAC/F,OAAO,EAAE,CAAC;IAEZ,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;YAChC,KAAK;YACL,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,YAAY,OAAO,CAAC,EAAE,EAAE;YAChC,MAAM,EAAE,IAAI;SACb;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAwB;IACjD,IAAI,OAAO,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO;YACL,wBAAwB;YACxB,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,OAAO;QACL,8BAA8B,OAAO,CAAC,WAAW,EAAE;QACnD,mFAAmF;QACnF,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,OAAwB,EAAE,KAAmB;IAC7E,IACE,OAAO,CAAC,YAAY,CAAC,WAAW,KAAK,QAAQ;QAC7C,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC;QAElD,OAAO,EAAE,CAAC;IAEZ,OAAO;QACL;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,YAAY;YACzB,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACnC,KAAK;YACL,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,eAAe,OAAO,CAAC,EAAE,EAAE;YACnC,MAAM,EAAE,IAAI;SACb;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const copilotRenderer: import("./factory.js").PlatformRenderer;
2
+ //# sourceMappingURL=copilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/copilot.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,yCAAoC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createPlatformRenderer } from './factory.js';
2
+ export const copilotRenderer = createPlatformRenderer('copilot');
3
+ //# sourceMappingURL=copilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const cursorRenderer: import("./factory.js").PlatformRenderer;
2
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/cursor.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,yCAAmC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createPlatformRenderer } from './factory.js';
2
+ export const cursorRenderer = createPlatformRenderer('cursor');
3
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const droidRenderer: import("./factory.js").PlatformRenderer;
2
+ //# sourceMappingURL=droid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"droid.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/droid.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,yCAAkC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createPlatformRenderer } from './factory.js';
2
+ export const droidRenderer = createPlatformRenderer('droid');
3
+ //# sourceMappingURL=droid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"droid.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/droid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Renderers whose native layouts remain discovery-gated. */
2
+ import { type PlatformRenderer } from './factory.js';
3
+ export declare const traeRenderer: PlatformRenderer;
4
+ export declare const hermesRenderer: PlatformRenderer;
5
+ export declare const EXPERIMENTAL_RENDERERS: Readonly<Record<'trae' | 'hermes', PlatformRenderer>>;
6
+ //# sourceMappingURL=experimental.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experimental.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/experimental.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE7E,eAAO,MAAM,YAAY,kBAAiC,CAAC;AAC3D,eAAO,MAAM,cAAc,kBAAmC,CAAC;AAE/D,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,gBAAgB,CAAC,CAIrF,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Renderers whose native layouts remain discovery-gated. */
2
+ import { createPlatformRenderer } from './factory.js';
3
+ export const traeRenderer = createPlatformRenderer('trae');
4
+ export const hermesRenderer = createPlatformRenderer('hermes');
5
+ export const EXPERIMENTAL_RENDERERS = Object.freeze({
6
+ trae: traeRenderer,
7
+ hermes: hermesRenderer,
8
+ });
9
+ //# sourceMappingURL=experimental.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experimental.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/experimental.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,sBAAsB,EAAyB,MAAM,cAAc,CAAC;AAE7E,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,sBAAsB,GACjC,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,cAAc;CACvB,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /** Pure platform-plan composition shared by the dedicated target renderers. */
2
+ import type { InstallRequest, PlatformAdapter, PlatformId, PlatformPlan } from '../types.js';
3
+ export interface PlatformRenderer {
4
+ readonly platform: PlatformId;
5
+ render(adapter: PlatformAdapter, request: InstallRequest): PlatformPlan;
6
+ }
7
+ /**
8
+ * Assemble a declarative plan only. The operations layer remains the sole
9
+ * owner of path resolution and filesystem writes.
10
+ */
11
+ export declare function renderPlatformPlan(adapter: PlatformAdapter, request: InstallRequest): PlatformPlan;
12
+ /** Bind the generic composition to one target without allowing id mix-ups. */
13
+ export declare function createPlatformRenderer(platform: PlatformId): PlatformRenderer;
14
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/factory.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAG/E,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK7F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,GAAG,YAAY,CAAC;CACzE;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,cAAc,GACtB,YAAY,CA6Bd;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU,GAAG,gBAAgB,CAU7E"}
@@ -0,0 +1,53 @@
1
+ /** Pure platform-plan composition shared by the dedicated target renderers. */
2
+ import { renderCoreArtifacts } from '../core.js';
3
+ import { renderHookArtifacts } from './hooks.js';
4
+ import { renderMcpArtifacts } from './mcp.js';
5
+ import { renderEnhancements } from './status.js';
6
+ function dedupe(diagnostics) {
7
+ return [...new Set(diagnostics)];
8
+ }
9
+ /**
10
+ * Assemble a declarative plan only. The operations layer remains the sole
11
+ * owner of path resolution and filesystem writes.
12
+ */
13
+ export function renderPlatformPlan(adapter, request) {
14
+ const core = renderCoreArtifacts(adapter, {
15
+ scope: request.scope,
16
+ enableHooks: request.enableHooks,
17
+ });
18
+ const enhancements = renderEnhancements(adapter, { scope: request.scope });
19
+ const mcp = renderMcpArtifacts(adapter, { scope: request.scope });
20
+ const hooks = renderHookArtifacts(adapter, {
21
+ scope: request.scope,
22
+ enableHooks: request.enableHooks,
23
+ enableBlockingHooks: request.enableBlockingHooks,
24
+ });
25
+ const diagnostics = [
26
+ ...core.diagnostics,
27
+ ...enhancements.diagnostics,
28
+ ...mcp.diagnostics,
29
+ ...hooks.diagnostics,
30
+ ];
31
+ if (adapter.requiresDiscovery && !request.discovery?.available) {
32
+ diagnostics.push(`${adapter.displayName}: native enhancements require successful discovery.`);
33
+ }
34
+ return {
35
+ scope: request.scope,
36
+ authorizedUserMutation: request.scope === 'project' || request.yes === true,
37
+ intents: [...core.intents, ...enhancements.intents, ...mcp.intents, ...hooks.intents],
38
+ diagnostics: dedupe(diagnostics),
39
+ };
40
+ }
41
+ /** Bind the generic composition to one target without allowing id mix-ups. */
42
+ export function createPlatformRenderer(platform) {
43
+ return Object.freeze({
44
+ platform,
45
+ render(adapter, request) {
46
+ if (adapter.id !== platform || request.platform !== platform) {
47
+ throw new Error(`Renderer ${platform} cannot render ${adapter.id}`);
48
+ }
49
+ return renderPlatformPlan(adapter, request);
50
+ },
51
+ });
52
+ }
53
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/factory.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOjD,SAAS,MAAM,CAAC,WAA8B;IAC5C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAwB,EACxB,OAAuB;IAEvB,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE;QACxC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,EAAE;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACjD,CAAC,CAAC;IACH,MAAM,WAAW,GAAG;QAClB,GAAG,IAAI,CAAC,WAAW;QACnB,GAAG,YAAY,CAAC,WAAW;QAC3B,GAAG,GAAG,CAAC,WAAW;QAClB,GAAG,KAAK,CAAC,WAAW;KACrB,CAAC;IAEF,IAAI,OAAO,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;QAC/D,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,qDAAqD,CAAC,CAAC;IAChG,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,sBAAsB,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI;QAC3E,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACrF,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CAAC,QAAoB;IACzD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ;QACR,MAAM,CAAC,OAAwB,EAAE,OAAuB;YACtD,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,kBAAkB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const geminiRenderer: import("./factory.js").PlatformRenderer;
2
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/gemini.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,yCAAmC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createPlatformRenderer } from './factory.js';
2
+ export const geminiRenderer = createPlatformRenderer('gemini');
3
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ /** Platform projections for the neutral opt-in hook contract. */
2
+ import type { ArtifactIntent, InstallScope, PlatformAdapter } from '../types.js';
3
+ export type HookTimeoutUnit = 'seconds' | 'milliseconds';
4
+ export interface HookRenderOptions {
5
+ scope?: InstallScope;
6
+ enableHooks?: boolean;
7
+ enableBlockingHooks?: boolean;
8
+ command?: string;
9
+ }
10
+ export interface HookRenderResult {
11
+ intents: ArtifactIntent[];
12
+ diagnostics: string[];
13
+ }
14
+ export interface HookTransport {
15
+ exitCode: 0 | 2;
16
+ stderr?: string;
17
+ }
18
+ /**
19
+ * Render no hook configuration unless the caller opted in and the adapter has
20
+ * a verified native hook capability. SessionStart is intentionally absent:
21
+ * Monomind never installs prompt-injection hooks.
22
+ */
23
+ export declare function renderHooks(adapter: PlatformAdapter, options?: HookRenderOptions): string;
24
+ /**
25
+ * A plan owns both sides of a hook integration: a verified configuration and
26
+ * the locally executable neutral bridge it invokes. Never install either
27
+ * half until a caller explicitly opts in.
28
+ */
29
+ export declare function renderHookArtifacts(adapter: PlatformAdapter, options?: HookRenderOptions): HookRenderResult;
30
+ /** The native command-hook protocol shared by Codex and Kimi. */
31
+ export declare function mapHookDecision(platform: PlatformAdapter['id'], decision: {
32
+ action: 'allow' | 'block' | 'observe';
33
+ reason?: string;
34
+ }): HookTransport | undefined;
35
+ /** Testable unit assertion kept next to the renderer data it protects. */
36
+ export declare function assertTimeoutUnit(rendered: string, unit: HookTimeoutUnit): boolean;
37
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/hooks.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEjF,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,cAAc,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAW7F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CA8DlB;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,EAC/B,QAAQ,EAAE;IAAE,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,aAAa,GAAG,SAAS,CAO3B;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAwBlF"}
@@ -0,0 +1,166 @@
1
+ /** Platform projections for the neutral opt-in hook contract. */
2
+ import { renderNeutralHookBridge } from '../hook-bridge.js';
3
+ const HOOK_COMMAND = 'node .agents/monomind/hook-bridge.mjs';
4
+ function hookCommand(options) {
5
+ return [
6
+ options.command ?? HOOK_COMMAND,
7
+ options.enableBlockingHooks ? '--enable-blocking-hooks' : '',
8
+ ]
9
+ .filter(Boolean)
10
+ .join(' ');
11
+ }
12
+ function hooksEnabled(options) {
13
+ // --enable-hooks is the backwards-compatible opt-in alias. The blocking
14
+ // spelling also opts in, then changes the explicit policy mode.
15
+ return options.enableHooks === true || options.enableBlockingHooks === true;
16
+ }
17
+ function hasVerifiedNativeHooks(adapter) {
18
+ return (adapter.capabilities.hooks === 'native' &&
19
+ ['schema', 'runtime'].includes(adapter.verification.hooks.level));
20
+ }
21
+ function renderCodexHooks(options) {
22
+ const command = JSON.stringify(hookCommand(options));
23
+ return [
24
+ '# Codex hook timeouts are measured in seconds.',
25
+ '# Hooks require workspace trust. This opt-in enables Codex hooks for this workspace.',
26
+ '[features]',
27
+ 'hooks = true',
28
+ '[[hooks.PreToolUse]]',
29
+ 'matcher = ".*"',
30
+ '[[hooks.PreToolUse.hooks]]',
31
+ 'type = "command"',
32
+ `command = ${command}`,
33
+ 'timeout = 2',
34
+ '',
35
+ '[[hooks.PostToolUse]]',
36
+ 'matcher = ".*"',
37
+ '[[hooks.PostToolUse.hooks]]',
38
+ 'type = "command"',
39
+ `command = ${command}`,
40
+ 'timeout = 10',
41
+ '',
42
+ ].join('\n');
43
+ }
44
+ function renderKimiHooks(options) {
45
+ const command = hookCommand(options);
46
+ return `${JSON.stringify({
47
+ hooks: [
48
+ { event: 'PreToolUse', command, timeout: 2_000 },
49
+ { event: 'PostToolUse', command, timeout: 10_000 },
50
+ ],
51
+ }, null, 2)}\n`;
52
+ }
53
+ /**
54
+ * Render no hook configuration unless the caller opted in and the adapter has
55
+ * a verified native hook capability. SessionStart is intentionally absent:
56
+ * Monomind never installs prompt-injection hooks.
57
+ */
58
+ export function renderHooks(adapter, options = {}) {
59
+ if (!hooksEnabled(options) || !hasVerifiedNativeHooks(adapter))
60
+ return '';
61
+ switch (adapter.id) {
62
+ case 'codex':
63
+ return renderCodexHooks(options);
64
+ case 'kimi':
65
+ return renderKimiHooks(options);
66
+ default:
67
+ return '';
68
+ }
69
+ }
70
+ /**
71
+ * A plan owns both sides of a hook integration: a verified configuration and
72
+ * the locally executable neutral bridge it invokes. Never install either
73
+ * half until a caller explicitly opts in.
74
+ */
75
+ export function renderHookArtifacts(adapter, options = {}) {
76
+ if (!hooksEnabled(options))
77
+ return { intents: [], diagnostics: [] };
78
+ if (options.scope === 'user') {
79
+ return {
80
+ intents: [],
81
+ diagnostics: [
82
+ `${adapter.displayName}: hooks are project-scoped; no user-scope hook was installed`,
83
+ ],
84
+ };
85
+ }
86
+ if (!hasVerifiedNativeHooks(adapter)) {
87
+ return {
88
+ intents: [],
89
+ diagnostics: [
90
+ `${adapter.displayName}: hook configuration is not upstream-verified; no hook was installed`,
91
+ ],
92
+ };
93
+ }
94
+ const content = renderHooks(adapter, options);
95
+ const hookLocation = adapter.paths.locations.hook?.project;
96
+ const bridgeLocation = adapter.paths.locations.hook_bridge?.project;
97
+ if (!content ||
98
+ !hookLocation ||
99
+ hookLocation === 'cli_fallback' ||
100
+ hookLocation === 'discovery' ||
101
+ !bridgeLocation ||
102
+ bridgeLocation === 'cli_fallback' ||
103
+ bridgeLocation === 'discovery') {
104
+ return {
105
+ intents: [],
106
+ diagnostics: [
107
+ `${adapter.displayName}: no verified project hook artifact location is declared`,
108
+ ],
109
+ };
110
+ }
111
+ return {
112
+ intents: [
113
+ {
114
+ kind: 'hook_bridge',
115
+ locationKey: 'hook_bridge',
116
+ content: renderNeutralHookBridge(),
117
+ scope: options.scope ?? 'project',
118
+ replace: 'managed_block',
119
+ marker: `hook-bridge:${adapter.id}`,
120
+ format: bridgeLocation.format,
121
+ },
122
+ {
123
+ kind: 'hook',
124
+ locationKey: 'hook',
125
+ content,
126
+ scope: options.scope ?? 'project',
127
+ replace: 'managed_block',
128
+ marker: `hooks:${adapter.id}`,
129
+ format: hookLocation.format,
130
+ },
131
+ ],
132
+ diagnostics: [],
133
+ };
134
+ }
135
+ /** The native command-hook protocol shared by Codex and Kimi. */
136
+ export function mapHookDecision(platform, decision) {
137
+ if (platform !== 'codex' && platform !== 'kimi')
138
+ return undefined;
139
+ if (decision.action !== 'block')
140
+ return { exitCode: 0 };
141
+ return {
142
+ exitCode: 2,
143
+ stderr: JSON.stringify({ decision: 'block', reason: decision.reason }),
144
+ };
145
+ }
146
+ /** Testable unit assertion kept next to the renderer data it protects. */
147
+ export function assertTimeoutUnit(rendered, unit) {
148
+ if (unit === 'seconds') {
149
+ return (/timeout = 2\b/.test(rendered) &&
150
+ /timeout = 10\b/.test(rendered) &&
151
+ !/timeout = (?:2000|10000)\b/.test(rendered));
152
+ }
153
+ try {
154
+ const parsed = JSON.parse(rendered);
155
+ if (!parsed ||
156
+ typeof parsed !== 'object' ||
157
+ !Array.isArray(parsed.hooks))
158
+ return false;
159
+ const timeouts = parsed.hooks.map(({ timeout }) => timeout);
160
+ return timeouts.includes(2_000) && timeouts.includes(10_000);
161
+ }
162
+ catch {
163
+ return false;
164
+ }
165
+ }
166
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/platform-adapters/renderers/hooks.ts"],"names":[],"mappings":"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"}