@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,405 @@
1
+ /** Planning and application for evidence-gated platform artifacts. */
2
+ import { chmodSync, closeSync, cpSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { basename, dirname, isAbsolute, join, relative, resolve } from 'node:path';
5
+ import { mergeManagedBlock, mergeSkillManagedBlock, removeManagedMarker, safeJsonMerge, safeJsonRemove, } from './merge.js';
6
+ import { findLegacySurfaces, migrateLegacyArtifacts } from './migration.js';
7
+ import { PLATFORM_IDS, PLATFORM_REGISTRY } from './registry.js';
8
+ import { getRenderer } from './renderers/index.js';
9
+ function isWithin(parent, child) {
10
+ const rel = relative(parent, child);
11
+ return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
12
+ }
13
+ function locationFor(adapter, kind, scope, discovery) {
14
+ return discovery?.locations?.[kind]?.[scope] ?? adapter.paths.locations[kind]?.[scope];
15
+ }
16
+ export function redactUserPath(path, home = homedir()) {
17
+ const resolvedHome = resolve(home);
18
+ const resolvedPath = resolve(path);
19
+ return isWithin(resolvedHome, resolvedPath)
20
+ ? `<home>/${relative(resolvedHome, resolvedPath)}`.replace(/\/$/, '')
21
+ : '<external-user-path>';
22
+ }
23
+ /** The sole conversion from declarative adapter paths into real filesystem paths. */
24
+ export function resolveArtifactLocation(adapter, kind, scope, environment = {}) {
25
+ const location = locationFor(adapter, kind, scope, environment.discovery);
26
+ if (!location || location === 'discovery' || location === 'cli_fallback')
27
+ return undefined;
28
+ const base = scope === 'project'
29
+ ? resolve(environment.root ?? process.cwd())
30
+ : resolve(environment.home ?? homedir());
31
+ const fullPath = resolve(base, location.path);
32
+ if (!isWithin(base, fullPath))
33
+ return undefined;
34
+ return {
35
+ path: fullPath,
36
+ displayPath: scope === 'user' ? redactUserPath(fullPath, base) : relative(base, fullPath) || '.',
37
+ format: location.format,
38
+ entryPath: location.entryPath,
39
+ };
40
+ }
41
+ function assertMutationAuthorized(request) {
42
+ if (request.scope === 'user' && request.yes !== true) {
43
+ throw new Error('User-scope mutation requires --scope user --yes');
44
+ }
45
+ }
46
+ export async function planInstall(request) {
47
+ const adapter = PLATFORM_REGISTRY[request.platform];
48
+ return getRenderer(request.platform).render(adapter, request);
49
+ }
50
+ function atomicWrite(path, content) {
51
+ mkdirSync(dirname(path), { recursive: true });
52
+ const temporary = `${path}.${process.pid}.tmp`;
53
+ writeFileSync(temporary, content, 'utf8');
54
+ renameSync(temporary, path);
55
+ }
56
+ function backup(path, root, privateBackup = false) {
57
+ if (!existsSync(path))
58
+ return;
59
+ const backupRoot = join(root, '.monomind', 'backups', `${Date.now()}-${process.pid}`);
60
+ mkdirSync(backupRoot, { recursive: true, mode: privateBackup ? 0o700 : undefined });
61
+ // mkdir's mode is subject to umask and does not change an existing path. A
62
+ // user-scope backup can contain credentials from a platform config, so its
63
+ // leaf directory must be private regardless of the caller's umask.
64
+ if (privateBackup)
65
+ chmodSync(backupRoot, 0o700);
66
+ const destination = join(backupRoot, basename(path));
67
+ if (statSync(path).isDirectory())
68
+ cpSync(path, destination, { recursive: true });
69
+ else
70
+ writeFileSync(destination, readFileSync(path));
71
+ }
72
+ function scopeStateRoot(request) {
73
+ return request.scope === 'project'
74
+ ? resolve(request.path ?? process.cwd(), '.monomind')
75
+ : join(homedir(), '.monomind');
76
+ }
77
+ /**
78
+ * Locks are deliberately scope-local. A stale lock remains visible and fails
79
+ * safe; it is never removed by a later invocation that cannot prove ownership.
80
+ */
81
+ function withScopeLock(request, action) {
82
+ const privateLock = request.scope === 'user';
83
+ const lockPath = join(scopeStateRoot(request), 'locks', 'platforms.lock');
84
+ mkdirSync(dirname(lockPath), { recursive: true, mode: privateLock ? 0o700 : undefined });
85
+ if (privateLock)
86
+ chmodSync(dirname(lockPath), 0o700);
87
+ let fd;
88
+ try {
89
+ fd = openSync(lockPath, 'wx', privateLock ? 0o600 : undefined);
90
+ }
91
+ catch (error) {
92
+ const code = error.code;
93
+ if (code === 'EEXIST') {
94
+ throw new Error(`Platform mutation lock already exists: ${lockPath}. ` +
95
+ 'Inspect its PID and start time, then remove it manually only after verifying the owner is gone.');
96
+ }
97
+ throw error;
98
+ }
99
+ try {
100
+ writeFileSync(fd, `${JSON.stringify({ pid: process.pid, startedAt: new Date().toISOString(), scope: request.scope })}\n`, 'utf8');
101
+ return action();
102
+ }
103
+ finally {
104
+ closeSync(fd);
105
+ unlinkSync(lockPath);
106
+ }
107
+ }
108
+ /** A dry run is read-only, including Monomind's own lock and state roots. */
109
+ function withMutationLock(request, action) {
110
+ return request.dryRun ? action() : withScopeLock(request, action);
111
+ }
112
+ function intentLocation(adapter, intent, request) {
113
+ const location = resolveArtifactLocation(adapter, intent.locationKey, intent.scope, {
114
+ root: request.path,
115
+ discovery: request.discovery,
116
+ });
117
+ if (!location)
118
+ return undefined;
119
+ // Skill locations are package roots. Each canonical package supplies its
120
+ // relative output path; callers cannot escape that root.
121
+ if (intent.kind !== 'skill')
122
+ return location;
123
+ const relativePath = intent.relativePath ?? join('mastermind', 'SKILL.md');
124
+ const skillPath = resolve(location.path, relativePath);
125
+ if (!isWithin(location.path, skillPath))
126
+ return undefined;
127
+ return {
128
+ ...location,
129
+ path: skillPath,
130
+ displayPath: join(location.displayPath, relativePath),
131
+ };
132
+ }
133
+ /**
134
+ * Doctor must tolerate both document artifacts and directory-root artifacts
135
+ * (notably portable skill roots). A directory is managed only when its router
136
+ * package carries this platform's own marker; an arbitrary existing directory
137
+ * remains foreign.
138
+ */
139
+ function artifactState(path, kind, platform) {
140
+ // Intent markers use plural artifact namespaces for the two shared roots.
141
+ // Keep this mapping here rather than guessing from a filesystem path.
142
+ const marker = kind === 'instruction'
143
+ ? `monomind:start instructions:${platform}`
144
+ : kind === 'skill'
145
+ ? `monomind:start skills:${platform}`
146
+ : kind === 'status'
147
+ ? `monomind:start status:${platform}`
148
+ : `monomind:start ${kind}s:${platform}`;
149
+ try {
150
+ if (statSync(path).isDirectory()) {
151
+ if (kind !== 'skill')
152
+ return 'foreign';
153
+ const router = join(path, 'mastermind', 'SKILL.md');
154
+ return existsSync(router) && readFileSync(router, 'utf8').includes(marker)
155
+ ? 'managed'
156
+ : 'foreign';
157
+ }
158
+ return readFileSync(path, 'utf8').includes(marker) ? 'managed' : 'foreign';
159
+ }
160
+ catch {
161
+ // A raced deletion or inaccessible artifact is not evidence of ownership.
162
+ return 'foreign';
163
+ }
164
+ }
165
+ function isSkillPackage(intent) {
166
+ return intent.kind === 'skill' && (intent.relativePath ?? '').endsWith('/SKILL.md');
167
+ }
168
+ function markerComment(format) {
169
+ return format === 'js' ? '//' : '#';
170
+ }
171
+ function isEmptyOwnedSkillFile(content, intent) {
172
+ if (intent.kind !== 'skill')
173
+ return false;
174
+ if (!isSkillPackage(intent))
175
+ return content.trim().length === 0;
176
+ const frontmatter = content.match(/^---\n[\s\S]*?\n---\n/);
177
+ return frontmatter !== null && content.slice(frontmatter[0].length).trim().length === 0;
178
+ }
179
+ function applyIntent(adapter, intent, request) {
180
+ const location = intentLocation(adapter, intent, request);
181
+ if (!location)
182
+ return {
183
+ skipped: `${adapter.id}:${intent.kind}`,
184
+ diagnostics: [`No declared ${intent.kind} location for ${adapter.id}`],
185
+ };
186
+ const oldContent = existsSync(location.path) ? readFileSync(location.path, 'utf8') : '';
187
+ let content = oldContent;
188
+ let diagnostics = [];
189
+ if (intent.replace === 'managed_block') {
190
+ const marker = intent.marker ?? `${intent.kind}:${adapter.id}`;
191
+ if (isSkillPackage(intent)) {
192
+ const merged = mergeSkillManagedBlock(oldContent, marker, intent.content);
193
+ content = merged.content;
194
+ diagnostics = [...merged.diagnostics];
195
+ }
196
+ else {
197
+ content = mergeManagedBlock(oldContent, marker, intent.content, markerComment(location.format));
198
+ }
199
+ }
200
+ else if (intent.replace === 'named_entry') {
201
+ if (location.format !== 'json') {
202
+ return {
203
+ skipped: location.displayPath,
204
+ diagnostics: [
205
+ `ERROR: safe named-entry mutation for ${location.format ?? 'unknown'} is not available`,
206
+ ],
207
+ };
208
+ }
209
+ const parsed = JSON.parse(intent.content);
210
+ const merged = safeJsonMerge(oldContent || '{}', intent.entryPath ?? location.entryPath ?? [], parsed);
211
+ content = merged.content;
212
+ diagnostics = [...merged.diagnostics];
213
+ }
214
+ else if (!existsSync(location.path)) {
215
+ content = intent.content;
216
+ }
217
+ if (diagnostics.some((diagnostic) => diagnostic.startsWith('ERROR:')))
218
+ return { skipped: location.displayPath, diagnostics };
219
+ if (content === oldContent)
220
+ return { skipped: location.displayPath, diagnostics };
221
+ if (!request.dryRun) {
222
+ backup(location.path, request.scope === 'project' ? resolve(request.path ?? process.cwd()) : homedir(), request.scope === 'user');
223
+ atomicWrite(location.path, content);
224
+ }
225
+ return { changed: location.displayPath, diagnostics };
226
+ }
227
+ export async function applyPlan(plan, request) {
228
+ assertMutationAuthorized(request);
229
+ if (plan.scope !== request.scope)
230
+ throw new Error('Plan scope does not match mutation request scope');
231
+ if (!plan.authorizedUserMutation)
232
+ throw new Error('Plan is not authorized for user-scope mutation');
233
+ const adapter = PLATFORM_REGISTRY[request.platform];
234
+ const changed = [];
235
+ const skipped = [];
236
+ const diagnostics = [...plan.diagnostics];
237
+ withMutationLock(request, () => {
238
+ for (const intent of plan.intents) {
239
+ const result = applyIntent(adapter, intent, request);
240
+ if (result.changed)
241
+ changed.push(result.changed);
242
+ if (result.skipped)
243
+ skipped.push(result.skipped);
244
+ diagnostics.push(...result.diagnostics);
245
+ }
246
+ });
247
+ return { changed, skipped, diagnostics, plan };
248
+ }
249
+ export async function installPlatform(request) {
250
+ const plan = await planInstall(request);
251
+ if (request.dryRun)
252
+ return { changed: [], skipped: [], diagnostics: plan.diagnostics, plan };
253
+ return applyPlan(plan, request);
254
+ }
255
+ function targets(request) {
256
+ if (request.all)
257
+ return [...PLATFORM_IDS];
258
+ if (request.platform)
259
+ return [request.platform];
260
+ throw new Error('Specify a platform or --all');
261
+ }
262
+ function mutationRoot(request) {
263
+ return request.scope === 'project' ? resolve(request.path ?? process.cwd()) : resolve(homedir());
264
+ }
265
+ function mergeMigrationResult(results, migration) {
266
+ if (!results[0])
267
+ return;
268
+ results[0] = {
269
+ ...results[0],
270
+ changed: [...results[0].changed, ...migration.changed],
271
+ skipped: [...results[0].skipped, ...migration.skipped],
272
+ diagnostics: [...results[0].diagnostics, ...migration.diagnostics],
273
+ };
274
+ }
275
+ /**
276
+ * Legacy cleanup is part of upgrade, never an unscoped side effect of update.
277
+ * The adapter operation owns authorization, locking, and recoverable backups.
278
+ */
279
+ function migrateUnderLock(request) {
280
+ const root = mutationRoot(request);
281
+ return withMutationLock(request, () => migrateLegacyArtifacts(root, request.scope, {
282
+ dryRun: request.dryRun,
283
+ removeLegacy: request.removeLegacy,
284
+ beforeWrite: (path) => backup(path, root),
285
+ }));
286
+ }
287
+ export async function upgradePlatforms(request) {
288
+ assertMutationAuthorized(request);
289
+ const results = [];
290
+ for (const platform of targets(request))
291
+ results.push(await installPlatform({ ...request, platform }));
292
+ mergeMigrationResult(results, migrateUnderLock(request));
293
+ return results;
294
+ }
295
+ export async function uninstallPlatform(request) {
296
+ assertMutationAuthorized(request);
297
+ const results = [];
298
+ for (const platform of targets(request)) {
299
+ const plan = await planInstall({ ...request, platform });
300
+ const adapter = PLATFORM_REGISTRY[platform];
301
+ const changed = [];
302
+ const skipped = [];
303
+ const diagnostics = [...plan.diagnostics];
304
+ withMutationLock(request, () => {
305
+ for (const intent of plan.intents) {
306
+ const location = intentLocation(adapter, intent, { ...request, platform });
307
+ if (!location || !existsSync(location.path)) {
308
+ skipped.push(location?.displayPath ?? `${platform}:${intent.kind}`);
309
+ continue;
310
+ }
311
+ const oldContent = readFileSync(location.path, 'utf8');
312
+ let content = oldContent;
313
+ let resultDiagnostics = [];
314
+ if (intent.replace === 'managed_block') {
315
+ content = removeManagedMarker(oldContent, intent.marker ?? `${intent.kind}:${platform}`);
316
+ }
317
+ else if (intent.replace === 'named_entry') {
318
+ if (location.format !== 'json') {
319
+ diagnostics.push(`ERROR: safe named-entry removal for ${location.format ?? 'unknown'} is not available`);
320
+ skipped.push(location.displayPath);
321
+ continue;
322
+ }
323
+ const entryPath = intent.entryPath ?? location.entryPath;
324
+ if (!entryPath?.length) {
325
+ diagnostics.push(`ERROR: no named-entry path for ${location.displayPath}`);
326
+ skipped.push(location.displayPath);
327
+ continue;
328
+ }
329
+ const removal = safeJsonRemove(oldContent, entryPath.slice(0, -1), entryPath[entryPath.length - 1]);
330
+ content = removal.content;
331
+ resultDiagnostics = removal.diagnostics;
332
+ }
333
+ else {
334
+ skipped.push(location.displayPath);
335
+ continue;
336
+ }
337
+ diagnostics.push(...resultDiagnostics);
338
+ if (resultDiagnostics.some((diagnostic) => diagnostic.startsWith('ERROR:')) ||
339
+ content === oldContent) {
340
+ skipped.push(location.displayPath);
341
+ continue;
342
+ }
343
+ if (!request.dryRun) {
344
+ backup(location.path, request.scope === 'project' ? resolve(request.path ?? process.cwd()) : homedir(), request.scope === 'user');
345
+ if (isEmptyOwnedSkillFile(content, intent))
346
+ unlinkSync(location.path);
347
+ else
348
+ atomicWrite(location.path, content);
349
+ }
350
+ changed.push(location.displayPath);
351
+ }
352
+ });
353
+ results.push({ changed, skipped, diagnostics, plan });
354
+ }
355
+ if (request.removeLegacy) {
356
+ mergeMigrationResult(results, migrateUnderLock(request));
357
+ }
358
+ return results;
359
+ }
360
+ export async function migrateLegacyInstall(request) {
361
+ return upgradePlatforms(request);
362
+ }
363
+ export async function runPlatformsDoctor(request) {
364
+ const ids = request.platform ? [request.platform] : [...PLATFORM_IDS];
365
+ return ids.map((platform) => {
366
+ const adapter = PLATFORM_REGISTRY[platform];
367
+ const artifacts = [];
368
+ const diagnostics = [];
369
+ for (const kind of Object.keys(adapter.paths.locations)) {
370
+ const location = resolveArtifactLocation(adapter, kind, request.scope, {
371
+ root: request.path,
372
+ home: request.home,
373
+ });
374
+ if (!location)
375
+ continue;
376
+ if (!existsSync(location.path)) {
377
+ artifacts.push({ path: location.displayPath, state: 'missing' });
378
+ continue;
379
+ }
380
+ artifacts.push({
381
+ path: location.displayPath,
382
+ state: artifactState(location.path, kind, platform),
383
+ });
384
+ }
385
+ const base = request.scope === 'project'
386
+ ? resolve(request.path ?? process.cwd())
387
+ : resolve(request.home ?? homedir());
388
+ const legacyFindings = findLegacySurfaces(base, request.scope);
389
+ if (adapter.requiresDiscovery)
390
+ diagnostics.push(`${adapter.displayName}: native enhancements require successful discovery.`);
391
+ return {
392
+ platform,
393
+ capabilities: { ...adapter.capabilities },
394
+ verification: Object.fromEntries(Object.entries(adapter.verification).map(([capability, evidence]) => [
395
+ capability,
396
+ evidence.level,
397
+ ])),
398
+ artifacts,
399
+ legacy: { findings: legacyFindings, migratable: legacyFindings.length > 0 },
400
+ diagnostics,
401
+ sanitized: true,
402
+ };
403
+ });
404
+ }
405
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/platform-adapters/operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type PlatformAdapter, type PlatformId } from './types.js';
2
+ export type { Capability, PlatformAdapter, PlatformId, SupportLevel } from './types.js';
3
+ export { CAPABILITIES } from './types.js';
4
+ export declare const PLATFORM_IDS: readonly ["claude", "gemini", "cursor", "vscode", "copilot", "opencode", "aider", "kiro", "trae", "openclaw", "droid", "antigravity", "hermes", "codex", "kimi", "zed"];
5
+ export declare const LEGACY_PLATFORM_ALIASES: Readonly<Record<string, PlatformId>>;
6
+ export declare function resolvePlatformId(id: string): PlatformId | undefined;
7
+ export declare const PLATFORM_REGISTRY: Record<PlatformId, PlatformAdapter>;
8
+ export declare function assertRegistryIsVerifiable(registry: Record<PlatformId, PlatformAdapter>): void;
9
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/platform-adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,UAAU,EAGhB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,YAAY,yKAiBiB,CAAC;AAE3C,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAGvE,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAKpE;AA8VD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAiRjE,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,IAAI,CAkB9F"}