@agimon-ai/doompi-config 0.0.1-alpha.2 → 0.0.1-alpha.21

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 (309) hide show
  1. package/README.md +139 -14
  2. package/dist/adapters/atomicJson.cjs +2 -0
  3. package/dist/adapters/atomicJson.cjs.map +1 -0
  4. package/dist/adapters/atomicJson.d.cts +6 -0
  5. package/dist/adapters/atomicJson.d.cts.map +1 -0
  6. package/dist/adapters/atomicJson.d.mts +6 -0
  7. package/dist/adapters/atomicJson.d.mts.map +1 -0
  8. package/dist/adapters/atomicJson.mjs +2 -0
  9. package/dist/adapters/atomicJson.mjs.map +1 -0
  10. package/dist/adapters/config.cjs +2 -0
  11. package/dist/adapters/config.cjs.map +1 -0
  12. package/dist/adapters/config.d.cts +11 -0
  13. package/dist/adapters/config.d.cts.map +1 -0
  14. package/dist/adapters/config.d.mts +11 -0
  15. package/dist/adapters/config.d.mts.map +1 -0
  16. package/dist/adapters/config.mjs +2 -0
  17. package/dist/adapters/config.mjs.map +1 -0
  18. package/dist/adapters/configWriter.cjs +2 -0
  19. package/dist/adapters/configWriter.cjs.map +1 -0
  20. package/dist/adapters/configWriter.d.cts +52 -0
  21. package/dist/adapters/configWriter.d.cts.map +1 -0
  22. package/dist/adapters/configWriter.d.mts +52 -0
  23. package/dist/adapters/configWriter.d.mts.map +1 -0
  24. package/dist/adapters/configWriter.mjs +2 -0
  25. package/dist/adapters/configWriter.mjs.map +1 -0
  26. package/dist/adapters/domains.cjs +2 -0
  27. package/dist/adapters/domains.cjs.map +1 -0
  28. package/dist/adapters/domains.d.cts +25 -0
  29. package/dist/adapters/domains.d.cts.map +1 -0
  30. package/dist/adapters/domains.d.mts +25 -0
  31. package/dist/adapters/domains.d.mts.map +1 -0
  32. package/dist/adapters/domains.mjs +2 -0
  33. package/dist/adapters/domains.mjs.map +1 -0
  34. package/dist/adapters/harnessState.cjs +2 -0
  35. package/dist/adapters/harnessState.cjs.map +1 -0
  36. package/dist/adapters/harnessState.d.cts +50 -0
  37. package/dist/adapters/harnessState.d.cts.map +1 -0
  38. package/dist/adapters/harnessState.d.mts +50 -0
  39. package/dist/adapters/harnessState.d.mts.map +1 -0
  40. package/dist/adapters/harnessState.mjs +2 -0
  41. package/dist/adapters/harnessState.mjs.map +1 -0
  42. package/dist/adapters/harnessStore.cjs +2 -0
  43. package/dist/adapters/harnessStore.cjs.map +1 -0
  44. package/dist/adapters/harnessStore.d.cts +102 -0
  45. package/dist/adapters/harnessStore.d.cts.map +1 -0
  46. package/dist/adapters/harnessStore.d.mts +102 -0
  47. package/dist/adapters/harnessStore.d.mts.map +1 -0
  48. package/dist/adapters/harnessStore.mjs +2 -0
  49. package/dist/adapters/harnessStore.mjs.map +1 -0
  50. package/dist/adapters/init.cjs +178 -0
  51. package/dist/adapters/init.cjs.map +1 -0
  52. package/dist/adapters/init.d.cts +39 -0
  53. package/dist/adapters/init.d.cts.map +1 -0
  54. package/dist/adapters/init.d.mts +39 -0
  55. package/dist/adapters/init.d.mts.map +1 -0
  56. package/dist/adapters/init.mjs +178 -0
  57. package/dist/adapters/init.mjs.map +1 -0
  58. package/dist/adapters/layeredConfig.cjs +2 -0
  59. package/dist/adapters/layeredConfig.cjs.map +1 -0
  60. package/dist/adapters/layeredConfig.d.cts +49 -0
  61. package/dist/adapters/layeredConfig.d.cts.map +1 -0
  62. package/dist/adapters/layeredConfig.d.mts +49 -0
  63. package/dist/adapters/layeredConfig.d.mts.map +1 -0
  64. package/dist/adapters/layeredConfig.mjs +2 -0
  65. package/dist/adapters/layeredConfig.mjs.map +1 -0
  66. package/dist/adapters/majorModes.cjs +2 -0
  67. package/dist/adapters/majorModes.cjs.map +1 -0
  68. package/dist/adapters/majorModes.d.cts +88 -0
  69. package/dist/adapters/majorModes.d.cts.map +1 -0
  70. package/dist/adapters/majorModes.d.mts +88 -0
  71. package/dist/adapters/majorModes.d.mts.map +1 -0
  72. package/dist/adapters/majorModes.mjs +2 -0
  73. package/dist/adapters/majorModes.mjs.map +1 -0
  74. package/dist/adapters/pi/configExtension.cjs +2 -0
  75. package/dist/adapters/pi/configExtension.cjs.map +1 -0
  76. package/dist/adapters/pi/configExtension.d.cts +8 -0
  77. package/dist/adapters/pi/configExtension.d.cts.map +1 -0
  78. package/dist/adapters/pi/configExtension.d.mts +8 -0
  79. package/dist/adapters/pi/configExtension.d.mts.map +1 -0
  80. package/dist/adapters/pi/configExtension.mjs +2 -0
  81. package/dist/adapters/pi/configExtension.mjs.map +1 -0
  82. package/dist/adapters/pi/doomConfigExtension.cjs +2 -0
  83. package/dist/adapters/pi/doomConfigExtension.cjs.map +1 -0
  84. package/dist/adapters/pi/doomConfigExtension.d.cts +8 -0
  85. package/dist/adapters/pi/doomConfigExtension.d.cts.map +1 -0
  86. package/dist/adapters/pi/doomConfigExtension.d.mts +8 -0
  87. package/dist/adapters/pi/doomConfigExtension.d.mts.map +1 -0
  88. package/dist/adapters/pi/doomConfigExtension.mjs +2 -0
  89. package/dist/adapters/pi/doomConfigExtension.mjs.map +1 -0
  90. package/dist/adapters/pi/helpContribution.cjs +2 -0
  91. package/dist/adapters/pi/helpContribution.cjs.map +1 -0
  92. package/dist/adapters/pi/helpContribution.mjs +2 -0
  93. package/dist/adapters/pi/helpContribution.mjs.map +1 -0
  94. package/dist/adapters/pi/piContext.cjs +2 -0
  95. package/dist/adapters/pi/piContext.cjs.map +1 -0
  96. package/dist/adapters/pi/piContext.d.cts +20 -0
  97. package/dist/adapters/pi/piContext.d.cts.map +1 -0
  98. package/dist/adapters/pi/piContext.d.mts +20 -0
  99. package/dist/adapters/pi/piContext.d.mts.map +1 -0
  100. package/dist/adapters/pi/piContext.mjs +2 -0
  101. package/dist/adapters/pi/piContext.mjs.map +1 -0
  102. package/dist/adapters/piConfig.cjs +2 -0
  103. package/dist/adapters/piConfig.cjs.map +1 -0
  104. package/dist/adapters/piConfig.d.cts +8 -0
  105. package/dist/adapters/piConfig.d.cts.map +1 -0
  106. package/dist/adapters/piConfig.d.mts +8 -0
  107. package/dist/adapters/piConfig.d.mts.map +1 -0
  108. package/dist/adapters/piConfig.mjs +2 -0
  109. package/dist/adapters/piConfig.mjs.map +1 -0
  110. package/dist/adapters/pluginCatalog.cjs +2 -0
  111. package/dist/adapters/pluginCatalog.cjs.map +1 -0
  112. package/dist/adapters/pluginCatalog.d.cts +12 -0
  113. package/dist/adapters/pluginCatalog.d.cts.map +1 -0
  114. package/dist/adapters/pluginCatalog.d.mts +12 -0
  115. package/dist/adapters/pluginCatalog.d.mts.map +1 -0
  116. package/dist/adapters/pluginCatalog.mjs +2 -0
  117. package/dist/adapters/pluginCatalog.mjs.map +1 -0
  118. package/dist/adapters/profiles.cjs +4 -0
  119. package/dist/adapters/profiles.cjs.map +1 -0
  120. package/dist/adapters/profiles.d.cts +36 -0
  121. package/dist/adapters/profiles.d.cts.map +1 -0
  122. package/dist/adapters/profiles.d.mts +36 -0
  123. package/dist/adapters/profiles.d.mts.map +1 -0
  124. package/dist/adapters/profiles.mjs +4 -0
  125. package/dist/adapters/profiles.mjs.map +1 -0
  126. package/dist/atomicJson.cjs +1 -2
  127. package/dist/atomicJson.d.cts +2 -6
  128. package/dist/atomicJson.d.mts +2 -6
  129. package/dist/atomicJson.mjs +1 -2
  130. package/dist/config/piConfig.cjs +1 -2
  131. package/dist/config/piConfig.d.cts +2 -7
  132. package/dist/config/piConfig.d.mts +2 -7
  133. package/dist/config/piConfig.mjs +1 -2
  134. package/dist/config/schema.d.cts +2 -33
  135. package/dist/config/schema.d.mts +2 -33
  136. package/dist/config.cjs +1 -2
  137. package/dist/config.d.cts +3 -24
  138. package/dist/config.d.mts +3 -24
  139. package/dist/config.mjs +1 -2
  140. package/dist/configWriter.cjs +1 -2
  141. package/dist/configWriter.d.cts +2 -52
  142. package/dist/configWriter.d.mts +2 -52
  143. package/dist/configWriter.mjs +1 -2
  144. package/dist/container/doomConfigContainer.cjs +2 -0
  145. package/dist/container/doomConfigContainer.cjs.map +1 -0
  146. package/dist/container/doomConfigContainer.d.cts +12 -0
  147. package/dist/container/doomConfigContainer.d.cts.map +1 -0
  148. package/dist/container/doomConfigContainer.d.mts +12 -0
  149. package/dist/container/doomConfigContainer.d.mts.map +1 -0
  150. package/dist/container/doomConfigContainer.mjs +2 -0
  151. package/dist/container/doomConfigContainer.mjs.map +1 -0
  152. package/dist/container.cjs +1 -2
  153. package/dist/container.d.cts +2 -12
  154. package/dist/container.d.mts +2 -12
  155. package/dist/container.mjs +1 -2
  156. package/dist/domains.cjs +1 -2
  157. package/dist/domains.d.cts +6 -77
  158. package/dist/domains.d.mts +6 -77
  159. package/dist/domains.mjs +1 -2
  160. package/dist/extensions/doom.cjs +1 -2
  161. package/dist/extensions/doom.d.cts +2 -8
  162. package/dist/extensions/doom.d.mts +2 -8
  163. package/dist/extensions/doom.mjs +1 -2
  164. package/dist/extensions/pi.cjs +1 -2
  165. package/dist/extensions/pi.d.cts +2 -8
  166. package/dist/extensions/pi.d.mts +2 -8
  167. package/dist/extensions/pi.mjs +1 -2
  168. package/dist/harnessState.cjs +1 -2
  169. package/dist/harnessState.d.cts +2 -50
  170. package/dist/harnessState.d.mts +2 -50
  171. package/dist/harnessState.mjs +1 -2
  172. package/dist/harnessStore.cjs +1 -2
  173. package/dist/harnessStore.d.cts +2 -102
  174. package/dist/harnessStore.d.mts +2 -102
  175. package/dist/harnessStore.mjs +1 -2
  176. package/dist/index.cjs +1 -1
  177. package/dist/index.d.cts +20 -16
  178. package/dist/index.d.mts +20 -16
  179. package/dist/index.mjs +1 -1
  180. package/dist/init.cjs +1 -76
  181. package/dist/init.d.cts +2 -33
  182. package/dist/init.d.mts +2 -33
  183. package/dist/init.mjs +1 -76
  184. package/dist/layeredConfig.cjs +1 -2
  185. package/dist/layeredConfig.d.cts +2 -49
  186. package/dist/layeredConfig.d.mts +2 -49
  187. package/dist/layeredConfig.mjs +1 -2
  188. package/dist/majorModes.cjs +1 -2
  189. package/dist/majorModes.d.cts +2 -75
  190. package/dist/majorModes.d.mts +2 -75
  191. package/dist/majorModes.mjs +1 -2
  192. package/dist/pi.cjs +1 -1
  193. package/dist/pi.d.cts +1 -1
  194. package/dist/pi.d.mts +1 -1
  195. package/dist/pi.mjs +1 -1
  196. package/dist/piContext.cjs +1 -2
  197. package/dist/piContext.d.cts +2 -19
  198. package/dist/piContext.d.mts +2 -19
  199. package/dist/piContext.mjs +1 -2
  200. package/dist/profiles.cjs +1 -4
  201. package/dist/profiles.d.cts +2 -35
  202. package/dist/profiles.d.mts +2 -35
  203. package/dist/profiles.mjs +1 -4
  204. package/dist/schemas/config/schema.d.cts +33 -0
  205. package/dist/schemas/config/schema.d.cts.map +1 -0
  206. package/dist/schemas/config/schema.d.mts +33 -0
  207. package/dist/schemas/config/schema.d.mts.map +1 -0
  208. package/dist/services/configPolicy.cjs +2 -0
  209. package/dist/services/configPolicy.cjs.map +1 -0
  210. package/dist/services/configPolicy.d.cts +19 -0
  211. package/dist/services/configPolicy.d.cts.map +1 -0
  212. package/dist/services/configPolicy.d.mts +19 -0
  213. package/dist/services/configPolicy.d.mts.map +1 -0
  214. package/dist/services/configPolicy.mjs +2 -0
  215. package/dist/services/configPolicy.mjs.map +1 -0
  216. package/dist/services/domains.cjs +2 -0
  217. package/dist/services/domains.cjs.map +1 -0
  218. package/dist/services/domains.d.cts +12 -0
  219. package/dist/services/domains.d.cts.map +1 -0
  220. package/dist/services/domains.d.mts +12 -0
  221. package/dist/services/domains.d.mts.map +1 -0
  222. package/dist/services/domains.mjs +2 -0
  223. package/dist/services/domains.mjs.map +1 -0
  224. package/dist/types/config.cjs +2 -0
  225. package/dist/types/config.cjs.map +1 -0
  226. package/dist/types/config.d.cts +136 -0
  227. package/dist/types/config.d.cts.map +1 -0
  228. package/dist/types/config.d.mts +136 -0
  229. package/dist/types/config.d.mts.map +1 -0
  230. package/dist/types/config.mjs +2 -0
  231. package/dist/types/config.mjs.map +1 -0
  232. package/dist/types/domains.d.cts +89 -0
  233. package/dist/types/domains.d.cts.map +1 -0
  234. package/dist/types/domains.d.mts +89 -0
  235. package/dist/types/domains.d.mts.map +1 -0
  236. package/dist/types.cjs +1 -2
  237. package/dist/types.d.cts +2 -132
  238. package/dist/types.d.mts +2 -132
  239. package/dist/types.mjs +1 -2
  240. package/llms.txt +9 -0
  241. package/package.json +18 -6
  242. package/skills/doom-pi-config/SKILL.md +6 -3
  243. package/skills/doom-pi-config/references/config-contract.md +123 -8
  244. package/dist/atomicJson.cjs.map +0 -1
  245. package/dist/atomicJson.d.cts.map +0 -1
  246. package/dist/atomicJson.d.mts.map +0 -1
  247. package/dist/atomicJson.mjs.map +0 -1
  248. package/dist/config/piConfig.cjs.map +0 -1
  249. package/dist/config/piConfig.d.cts.map +0 -1
  250. package/dist/config/piConfig.d.mts.map +0 -1
  251. package/dist/config/piConfig.mjs.map +0 -1
  252. package/dist/config/schema.d.cts.map +0 -1
  253. package/dist/config/schema.d.mts.map +0 -1
  254. package/dist/config.cjs.map +0 -1
  255. package/dist/config.d.cts.map +0 -1
  256. package/dist/config.d.mts.map +0 -1
  257. package/dist/config.mjs.map +0 -1
  258. package/dist/configWriter.cjs.map +0 -1
  259. package/dist/configWriter.d.cts.map +0 -1
  260. package/dist/configWriter.d.mts.map +0 -1
  261. package/dist/configWriter.mjs.map +0 -1
  262. package/dist/container.cjs.map +0 -1
  263. package/dist/container.d.cts.map +0 -1
  264. package/dist/container.d.mts.map +0 -1
  265. package/dist/container.mjs.map +0 -1
  266. package/dist/domains.cjs.map +0 -1
  267. package/dist/domains.d.cts.map +0 -1
  268. package/dist/domains.d.mts.map +0 -1
  269. package/dist/domains.mjs.map +0 -1
  270. package/dist/extensions/doom.cjs.map +0 -1
  271. package/dist/extensions/doom.d.cts.map +0 -1
  272. package/dist/extensions/doom.d.mts.map +0 -1
  273. package/dist/extensions/doom.mjs.map +0 -1
  274. package/dist/extensions/pi.cjs.map +0 -1
  275. package/dist/extensions/pi.d.cts.map +0 -1
  276. package/dist/extensions/pi.d.mts.map +0 -1
  277. package/dist/extensions/pi.mjs.map +0 -1
  278. package/dist/harnessState.cjs.map +0 -1
  279. package/dist/harnessState.d.cts.map +0 -1
  280. package/dist/harnessState.d.mts.map +0 -1
  281. package/dist/harnessState.mjs.map +0 -1
  282. package/dist/harnessStore.cjs.map +0 -1
  283. package/dist/harnessStore.d.cts.map +0 -1
  284. package/dist/harnessStore.d.mts.map +0 -1
  285. package/dist/harnessStore.mjs.map +0 -1
  286. package/dist/init.cjs.map +0 -1
  287. package/dist/init.d.cts.map +0 -1
  288. package/dist/init.d.mts.map +0 -1
  289. package/dist/init.mjs.map +0 -1
  290. package/dist/layeredConfig.cjs.map +0 -1
  291. package/dist/layeredConfig.d.cts.map +0 -1
  292. package/dist/layeredConfig.d.mts.map +0 -1
  293. package/dist/layeredConfig.mjs.map +0 -1
  294. package/dist/majorModes.cjs.map +0 -1
  295. package/dist/majorModes.d.cts.map +0 -1
  296. package/dist/majorModes.d.mts.map +0 -1
  297. package/dist/majorModes.mjs.map +0 -1
  298. package/dist/piContext.cjs.map +0 -1
  299. package/dist/piContext.d.cts.map +0 -1
  300. package/dist/piContext.d.mts.map +0 -1
  301. package/dist/piContext.mjs.map +0 -1
  302. package/dist/profiles.cjs.map +0 -1
  303. package/dist/profiles.d.cts.map +0 -1
  304. package/dist/profiles.d.mts.map +0 -1
  305. package/dist/profiles.mjs.map +0 -1
  306. package/dist/types.cjs.map +0 -1
  307. package/dist/types.d.cts.map +0 -1
  308. package/dist/types.d.mts.map +0 -1
  309. package/dist/types.mjs.map +0 -1
@@ -1,77 +1,6 @@
1
- import { DOOM_DIR } from "./layeredConfig.mjs";
2
- //#region src/domains.d.ts
3
- /** A plugin entry is a whole plugin dir, or a subset of one. */
4
- type DomainPlugin = string | {
5
- dir: string;
6
- skills?: string[];
7
- agents?: string[];
8
- hooks?: boolean;
9
- mcp?: boolean;
10
- };
11
- interface DomainMcpAllowlist {
12
- /** Server names kept from the repo-level .mcp.json. */
13
- servers?: string[];
14
- /** Upstream server names kept in the agiflow-proxy config. */
15
- proxy?: string[];
16
- }
17
- interface DomainDefinition {
18
- /**
19
- * Plugin directories, each one relative to the config that declares it: the
20
- * repository root for `.doom/domains.yaml`, the global `.doom` directory for
21
- * `~/.pi/.doom/domains.yaml`. The path is written out in full, so a plugin
22
- * does not have to live under `plugins/`.
23
- */
24
- plugins?: DomainPlugin[];
25
- mcp?: DomainMcpAllowlist;
26
- /** Prepend .claude/skills. Defaults to true. */
27
- sharedSkills?: boolean;
28
- }
29
- /** A domain plus the root its plugin paths resolve against. */
30
- interface ResolvedDomain extends DomainDefinition {
31
- baseDirectory: string;
32
- }
33
- interface DomainManifest {
34
- domains: Record<string, ResolvedDomain>;
35
- aliases: Record<string, string[]>;
36
- /** Domains selected when neither flags nor the environment name any. */
37
- defaultDomains?: string[];
38
- }
39
- /**
40
- * Reads domains from the global and repository configs, repository last.
41
- *
42
- * Either file alone is a complete manifest. A repository domain replaces the
43
- * global domain of the same name outright, and a repository defaultDomains
44
- * list replaces the global list when present.
45
- */
46
- declare function loadDomains(repoRoot: string, homeDirectory?: string): DomainManifest;
47
- declare function listDomainNames(repoRoot: string, homeDirectory?: string): string[];
48
- /** Splits comma-joined selections and expands aliases into concrete domain names. */
49
- declare function expandDomainNames(manifest: DomainManifest, domainNames: readonly string[]): string[];
50
- declare function domainCompletionPrefix(textBeforeCursor: string): string | undefined;
51
- declare function domainCompletionItems(domainNames: string[], query: string): Array<{
52
- value: string;
53
- label: string;
54
- }>;
55
- /** A resolved plugin directory plus any subset filter the domain applied. */
56
- interface PluginEntry {
57
- directory: string;
58
- /** Skill names to keep. Omit to keep every skill in the plugin. */
59
- skills?: string[];
60
- /** Agent names to keep. Omit to keep every agent in the plugin. */
61
- agents?: string[];
62
- hooks?: boolean;
63
- mcp?: boolean;
64
- }
65
- /**
66
- * Whether to prepend .claude/skills.
67
- *
68
- * Shared skills are included unless every selected domain opts out, so mixing a
69
- * trimmed domain with an untrimmed one cannot strip the untrimmed one's skills.
70
- */
71
- declare function resolveSharedSkills(repoRoot: string, domainNames: string[], homeDirectory?: string): boolean;
72
- /** Resolves domains to plugin entries, preserving each plugin's subset filter. */
73
- declare function resolvePluginEntries(repoRoot: string, domainNames: string[], explicitDirectories: string[], homeDirectory?: string): PluginEntry[];
74
- declare function resolvePluginDirectories(repoRoot: string, domainNames: string[], explicitDirectories: string[], homeDirectory?: string): string[];
75
- //#endregion
76
- export { DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, PluginEntry, ResolvedDomain, domainCompletionItems, domainCompletionPrefix, expandDomainNames, listDomainNames, loadDomains, resolvePluginDirectories, resolvePluginEntries, resolveSharedSkills };
77
- //# sourceMappingURL=domains.d.mts.map
1
+ import { DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, GitPluginSource, LocalPluginSource, NpmPluginSource, PluginCatalog, PluginCatalogEntry, PluginEntry, PluginManifestMetadata, PluginSkillDiscovery, PluginSource, ResolvedDomain } from "./types/domains.mjs";
2
+ import { DOOM_DIR } from "./adapters/layeredConfig.mjs";
3
+ import { listDomainNames, loadDomains, resolvePluginDirectories, resolvePluginEntries, resolveSharedSkills } from "./adapters/domains.mjs";
4
+ import { MARKETPLACE_MANIFEST_RELATIVE_PATHS, findPluginManifestPath, isRemotePluginSource, pluginDirectoryForSource } from "./adapters/pluginCatalog.mjs";
5
+ import { domainCompletionItems, domainCompletionPrefix, expandDomainNames } from "./services/domains.mjs";
6
+ export { DOOM_DIR, type DomainDefinition, type DomainManifest, type DomainMcpAllowlist, type DomainPlugin, type GitPluginSource, type LocalPluginSource, MARKETPLACE_MANIFEST_RELATIVE_PATHS, type NpmPluginSource, type PluginCatalog, type PluginCatalogEntry, type PluginEntry, type PluginManifestMetadata, type PluginSkillDiscovery, type PluginSource, type ResolvedDomain, domainCompletionItems, domainCompletionPrefix, expandDomainNames, findPluginManifestPath, isRemotePluginSource, listDomainNames, loadDomains, pluginDirectoryForSource, resolvePluginDirectories, resolvePluginEntries, resolveSharedSkills };
package/dist/domains.mjs CHANGED
@@ -1,2 +1 @@
1
- import{DOOM_DIR as e,mergeNamedSources as t,readDoomConfigSources as n}from"./layeredConfig.mjs";import r from"node:fs";import i from"node:os";import a from"node:path";const o=`.doom/domains.yaml`;function s(e){if(!Array.isArray(e)||e.some(e=>typeof e!=`string`||!e.trim()))throw Error(`defaultDomains in ${o} must be an array of non-empty strings`);return[...new Set(e.map(e=>e.trim()))]}function c(e,r=i.homedir()){let a=n(`domains.yaml`,e,r),c={},l;for(let e of a)Object.assign(c,e.document.aliases??{}),Object.hasOwn(e.document,`defaultDomains`)&&(l=s(e.document.defaultDomains));let d=t(a,e=>e.domains);if(l){for(let e of u({domains:d,aliases:c},l))if(!Object.hasOwn(d,e))throw Error(`Unknown default domain "${e}" in ${o}`)}return{domains:d,aliases:c,...l?{defaultDomains:l}:{}}}function l(e,t){let n=c(e,t);return[...new Set([...Object.keys(n.domains),...Object.keys(n.aliases)])].sort()}function u(e,t){return t.flatMap(e=>e.split(`,`).map(e=>e.trim()).filter(Boolean)).flatMap(t=>e.aliases[t]??[t])}function d(e){return e.match(/^\/domains\s+(?:[^\s,]+,)*([^\s,]*)$/)?.[1]}function f(e,t){let n=t.toLowerCase();return e.filter(e=>e.toLowerCase().startsWith(n)).map(e=>({value:e,label:e}))}function p(e,t,n){let r=c(e,n),i=u(r,t);return i.length===0||i.some(e=>r.domains[e]?.sharedSkills!==!1)}function m(e,t,n,i){let o=c(e,i),s=[],l=new Set;for(let e of u(o,t)){let t=o.domains[e];if(!t)throw Error(`Unknown domain: ${e}`);for(let e of t.plugins??[]){let n=typeof e!=`string`,i=a.resolve(t.baseDirectory,n?e.dir:e);if(!r.existsSync(i))throw Error(`Domain plugin does not exist: ${i}`);l.has(i)||(l.add(i),s.push(n?{directory:i,skills:e.skills,agents:e.agents,hooks:e.hooks,mcp:e.mcp}:{directory:i}))}}for(let e of n){if(!r.existsSync(e))throw Error(`Plugin directory does not exist: ${e}`);let t=a.resolve(e);l.has(t)||(l.add(t),s.push({directory:t}))}return s}function h(e,t,n,r){return m(e,t,n,r).map(e=>e.directory)}export{e as DOOM_DIR,f as domainCompletionItems,d as domainCompletionPrefix,u as expandDomainNames,l as listDomainNames,c as loadDomains,h as resolvePluginDirectories,m as resolvePluginEntries,p as resolveSharedSkills};
2
- //# sourceMappingURL=domains.mjs.map
1
+ import{domainCompletionItems as e,domainCompletionPrefix as t,expandDomainNames as n}from"./services/domains.mjs";import{DOOM_DIR as r}from"./adapters/layeredConfig.mjs";import{MARKETPLACE_MANIFEST_RELATIVE_PATHS as i,findPluginManifestPath as a,isRemotePluginSource as o,pluginDirectoryForSource as s}from"./adapters/pluginCatalog.mjs";import{listDomainNames as c,loadDomains as l,resolvePluginDirectories as u,resolvePluginEntries as d,resolveSharedSkills as f}from"./adapters/domains.mjs";export{r as DOOM_DIR,i as MARKETPLACE_MANIFEST_RELATIVE_PATHS,e as domainCompletionItems,t as domainCompletionPrefix,n as expandDomainNames,a as findPluginManifestPath,o as isRemotePluginSource,c as listDomainNames,l as loadDomains,s as pluginDirectoryForSource,u as resolvePluginDirectories,d as resolvePluginEntries,f as resolveSharedSkills};
@@ -1,2 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../config.cjs"),t=require("../config/piConfig.cjs"),n=new WeakSet,r=new WeakMap;function i(e){return r.get(e)}function a(i,a={}){if(n.has(i))throw Error(`Doom config adapter is already registered for this host.`);n.add(i),i.on(`session_start`,(n,i)=>{r.set(i,t.loadPiConfig({repoRoot:i.cwd,homeDirectory:a.homeDirectory,defaults:a.defaults,overlay:{...e.loadDoomConfig(i.cwd,a.homeDirectory)},programmatic:a.programmatic,environment:a.environment,cli:a.cli,isProjectTrusted:()=>i.isProjectTrusted()}))}),i.on(`session_shutdown`,(e,t)=>{r.delete(t)})}exports.default=a,exports.readDoomConfigContext=i;
2
- //# sourceMappingURL=doom.cjs.map
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../adapters/pi/doomConfigExtension.cjs");exports.default=e.default,exports.readDoomConfigContext=e.readDoomConfigContext;
@@ -1,8 +1,2 @@
1
- import { ConfigAdapterRegistrationOptions, PiConfig } from "../config/schema.cjs";
2
- import { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
3
- //#region src/extensions/doom.d.ts
4
- declare function readDoomConfigContext(context: ExtensionContext): PiConfig | undefined;
5
- declare function registerDoomConfigAdapter(pi: ExtensionAPI, options?: ConfigAdapterRegistrationOptions): void;
6
- //#endregion
7
- export { registerDoomConfigAdapter as default, readDoomConfigContext };
8
- //# sourceMappingURL=doom.d.cts.map
1
+ import registerDoomConfigAdapter, { readDoomConfigContext } from "../adapters/pi/doomConfigExtension.cjs";
2
+ export { registerDoomConfigAdapter as default, readDoomConfigContext };
@@ -1,8 +1,2 @@
1
- import { ConfigAdapterRegistrationOptions, PiConfig } from "../config/schema.mjs";
2
- import { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
3
- //#region src/extensions/doom.d.ts
4
- declare function readDoomConfigContext(context: ExtensionContext): PiConfig | undefined;
5
- declare function registerDoomConfigAdapter(pi: ExtensionAPI, options?: ConfigAdapterRegistrationOptions): void;
6
- //#endregion
7
- export { registerDoomConfigAdapter as default, readDoomConfigContext };
8
- //# sourceMappingURL=doom.d.mts.map
1
+ import registerDoomConfigAdapter, { readDoomConfigContext } from "../adapters/pi/doomConfigExtension.mjs";
2
+ export { registerDoomConfigAdapter as default, readDoomConfigContext };
@@ -1,2 +1 @@
1
- import{loadDoomConfig as e}from"../config.mjs";import{loadPiConfig as t}from"../config/piConfig.mjs";const n=new WeakSet,r=new WeakMap;function i(e){return r.get(e)}function a(i,a={}){if(n.has(i))throw Error(`Doom config adapter is already registered for this host.`);n.add(i),i.on(`session_start`,(n,i)=>{r.set(i,t({repoRoot:i.cwd,homeDirectory:a.homeDirectory,defaults:a.defaults,overlay:{...e(i.cwd,a.homeDirectory)},programmatic:a.programmatic,environment:a.environment,cli:a.cli,isProjectTrusted:()=>i.isProjectTrusted()}))}),i.on(`session_shutdown`,(e,t)=>{r.delete(t)})}export{a as default,i as readDoomConfigContext};
2
- //# sourceMappingURL=doom.mjs.map
1
+ import e,{readDoomConfigContext as t}from"../adapters/pi/doomConfigExtension.mjs";export{e as default,t as readDoomConfigContext};
@@ -1,2 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../config/piConfig.cjs"),t=new WeakSet,n=new WeakMap;function r(e){return n.get(e)}function i(r,i={}){if(t.has(r))throw Error(`Pi config adapter is already registered for this host.`);t.add(r),r.on(`session_start`,(t,r)=>{n.set(r,e.loadPiConfig({repoRoot:r.cwd,homeDirectory:i.homeDirectory,defaults:i.defaults,programmatic:i.programmatic,environment:i.environment,cli:i.cli,isProjectTrusted:()=>r.isProjectTrusted()}))}),r.on(`session_shutdown`,(e,t)=>{n.delete(t)})}exports.default=i,exports.readPiConfigContext=r;
2
- //# sourceMappingURL=pi.cjs.map
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../adapters/pi/configExtension.cjs");exports.default=e.default,exports.readPiConfigContext=e.readPiConfigContext;
@@ -1,8 +1,2 @@
1
- import { ConfigAdapterRegistrationOptions, PiConfig } from "../config/schema.cjs";
2
- import { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
3
- //#region src/extensions/pi.d.ts
4
- declare function readPiConfigContext(context: ExtensionContext): PiConfig | undefined;
5
- declare function registerPiConfigAdapter(pi: ExtensionAPI, options?: ConfigAdapterRegistrationOptions): void;
6
- //#endregion
7
- export { registerPiConfigAdapter as default, readPiConfigContext };
8
- //# sourceMappingURL=pi.d.cts.map
1
+ import registerPiConfigAdapter, { readPiConfigContext } from "../adapters/pi/configExtension.cjs";
2
+ export { registerPiConfigAdapter as default, readPiConfigContext };
@@ -1,8 +1,2 @@
1
- import { ConfigAdapterRegistrationOptions, PiConfig } from "../config/schema.mjs";
2
- import { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
3
- //#region src/extensions/pi.d.ts
4
- declare function readPiConfigContext(context: ExtensionContext): PiConfig | undefined;
5
- declare function registerPiConfigAdapter(pi: ExtensionAPI, options?: ConfigAdapterRegistrationOptions): void;
6
- //#endregion
7
- export { registerPiConfigAdapter as default, readPiConfigContext };
8
- //# sourceMappingURL=pi.d.mts.map
1
+ import registerPiConfigAdapter, { readPiConfigContext } from "../adapters/pi/configExtension.mjs";
2
+ export { registerPiConfigAdapter as default, readPiConfigContext };
@@ -1,2 +1 @@
1
- import{loadPiConfig as e}from"../config/piConfig.mjs";const t=new WeakSet,n=new WeakMap;function r(e){return n.get(e)}function i(r,i={}){if(t.has(r))throw Error(`Pi config adapter is already registered for this host.`);t.add(r),r.on(`session_start`,(t,r)=>{n.set(r,e({repoRoot:r.cwd,homeDirectory:i.homeDirectory,defaults:i.defaults,programmatic:i.programmatic,environment:i.environment,cli:i.cli,isProjectTrusted:()=>r.isProjectTrusted()}))}),r.on(`session_shutdown`,(e,t)=>{n.delete(t)})}export{i as default,r as readPiConfigContext};
2
- //# sourceMappingURL=pi.mjs.map
1
+ import e,{readPiConfigContext as t}from"../adapters/pi/configExtension.mjs";export{e as default,t as readPiConfigContext};
@@ -1,2 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./_virtual/_rolldown/runtime.cjs");let t=require("node:path");t=e.__toESM(t,1);const n=new Set([`profileEnvironment`,`pluginHooks`]),r={root:`DOOMPI_ROOT`,majorMode:`DOOMPI_MAJOR_MODE`,temporaryDirectory:`DOOMPI_TEMP_DIR`,domains:`DOOMPI_DOMAINS`,layers:`DOOMPI_LAYERS`,profile:`DOOMPI_PROFILE`,profileEnvironment:`DOOMPI_PROFILE_ENV`,hookGroups:`DOOMPI_HOOK_GROUPS`,skillDirectories:`DOOMPI_SKILL_DIRS`,agentDirectories:`DOOMPI_AGENT_DIRS`,additionalDirectories:`DOOMPI_ADDITIONAL_DIRS`,childExtensions:`DOOMPI_CHILD_EXTENSIONS`,pluginDirectories:`DOOMPI_PLUGIN_DIRS`,pluginHooks:`DOOMPI_PLUGIN_HOOKS`,mcpConfigPath:`DOOMPI_MCP_CONFIG`,personaFile:`DOOMPI_PERSONA_FILE`,workflowExtension:`DOOMPI_WORKFLOW_EXTENSION`,hooks:`DOOMPI_HOOKS_ENABLED`,agents:`DOOMPI_AGENTS_ENABLED`,mcp:`DOOMPI_MCP_ENABLED`,allowProtectedWrites:`DOOMPI_ALLOW_PROTECTED_WRITES`};function i(e){return e?.split(`,`).map(e=>e.trim()).filter(Boolean)??[]}function a(e){return e?.split(t.default.delimiter).map(e=>e.trim()).filter(Boolean)??[]}function o(e){return e!==`0`}function s(e,t,n){if(!e)return{};try{let t=JSON.parse(e);return typeof t!=`object`||!t||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).filter(e=>typeof e[1]==`string`))}catch(e){return n?.(t,e),{}}}function c(e,t,n){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch(e){return n?.(t,e),[]}}function l(e,t,n){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.pluginRoot==`string`&&typeof e.configPath==`string`):[]}catch(e){return n?.(t,e),[]}}function u(e=process.env,t){let n=r,u=e[n.hookGroups];return{root:e[n.root]||void 0,majorMode:e[n.majorMode]||`copilot`,temporaryDirectory:e[n.temporaryDirectory]||void 0,domains:i(e[n.domains]),layers:i(e[n.layers]),profile:e[n.profile]||void 0,profileEnvironment:s(e[n.profileEnvironment],n.profileEnvironment,t),hookGroups:u===void 0?void 0:i(u),skillDirectories:a(e[n.skillDirectories]),agentDirectories:a(e[n.agentDirectories]),additionalDirectories:a(e[n.additionalDirectories]),childExtensions:c(e[n.childExtensions],n.childExtensions,t),pluginDirectories:a(e[n.pluginDirectories]),pluginHooks:l(e[n.pluginHooks],n.pluginHooks,t),mcpConfigPath:e[n.mcpConfigPath]||void 0,personaFile:e[n.personaFile]||void 0,workflowExtension:e[n.workflowExtension]||void 0,hooks:o(e[n.hooks]),agents:o(e[n.agents]),mcp:o(e[n.mcp]),allowProtectedWrites:o(e[n.allowProtectedWrites])}}function d(e,n=process.env){let i=(e,t)=>{t===void 0?delete n[e]:n[e]=t},a=(e,t)=>i(e,t?`1`:`0`),o=r;return`root`in e&&i(o.root,e.root),`majorMode`in e&&i(o.majorMode,e.majorMode),`temporaryDirectory`in e&&i(o.temporaryDirectory,e.temporaryDirectory),`domains`in e&&i(o.domains,e.domains?.join(`,`)),`layers`in e&&i(o.layers,e.layers?.join(`,`)),`profile`in e&&i(o.profile,e.profile),`hookGroups`in e&&i(o.hookGroups,e.hookGroups?.join(`,`)),`skillDirectories`in e&&i(o.skillDirectories,e.skillDirectories?.join(t.default.delimiter)),`agentDirectories`in e&&i(o.agentDirectories,e.agentDirectories?.join(t.default.delimiter)),`additionalDirectories`in e&&i(o.additionalDirectories,e.additionalDirectories?.join(t.default.delimiter)),`childExtensions`in e&&i(o.childExtensions,JSON.stringify(e.childExtensions??[])),`pluginDirectories`in e&&i(o.pluginDirectories,e.pluginDirectories?.join(t.default.delimiter)),`mcpConfigPath`in e&&i(o.mcpConfigPath,e.mcpConfigPath),`personaFile`in e&&i(o.personaFile,e.personaFile),`workflowExtension`in e&&i(o.workflowExtension,e.workflowExtension),e.hooks!==void 0&&a(o.hooks,e.hooks),e.agents!==void 0&&a(o.agents,e.agents),e.mcp!==void 0&&a(o.mcp,e.mcp),e.allowProtectedWrites!==void 0&&a(o.allowProtectedWrites,e.allowProtectedWrites),n}exports.FILE_ONLY_STATE_FIELDS=n,exports.HARNESS_STATE_KEYS=r,exports.projectHarnessEnvironment=d,exports.readHarnessState=u;
2
- //# sourceMappingURL=harnessState.cjs.map
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/harnessState.cjs");exports.FILE_ONLY_STATE_FIELDS=e.FILE_ONLY_STATE_FIELDS,exports.HARNESS_STATE_KEYS=e.HARNESS_STATE_KEYS,exports.projectHarnessEnvironment=e.projectHarnessEnvironment,exports.readHarnessState=e.readHarnessState;
@@ -1,50 +1,2 @@
1
- import { HarnessState } from "./types.cjs";
2
- //#region src/harnessState.d.ts
3
- /**
4
- * State that lives in the file only.
5
- *
6
- * Both are JSON documents that every spawned process and every hook would
7
- * otherwise copy in its environment, and neither has a reader outside this
8
- * package: the plugin hook list is consumed by the Pi hooks extension and the
9
- * profile environment by the profile switcher, both of which read the store.
10
- */
11
- declare const FILE_ONLY_STATE_FIELDS: ReadonlySet<keyof HarnessState>;
12
- type HarnessStateParseReporter = (key: string, error: unknown) => void;
13
- declare const HARNESS_STATE_KEYS: {
14
- readonly root: "DOOMPI_ROOT";
15
- readonly majorMode: "DOOMPI_MAJOR_MODE";
16
- readonly temporaryDirectory: "DOOMPI_TEMP_DIR";
17
- readonly domains: "DOOMPI_DOMAINS";
18
- readonly layers: "DOOMPI_LAYERS";
19
- readonly profile: "DOOMPI_PROFILE";
20
- readonly profileEnvironment: "DOOMPI_PROFILE_ENV";
21
- readonly hookGroups: "DOOMPI_HOOK_GROUPS";
22
- readonly skillDirectories: "DOOMPI_SKILL_DIRS";
23
- readonly agentDirectories: "DOOMPI_AGENT_DIRS";
24
- readonly additionalDirectories: "DOOMPI_ADDITIONAL_DIRS";
25
- readonly childExtensions: "DOOMPI_CHILD_EXTENSIONS";
26
- readonly pluginDirectories: "DOOMPI_PLUGIN_DIRS";
27
- readonly pluginHooks: "DOOMPI_PLUGIN_HOOKS";
28
- readonly mcpConfigPath: "DOOMPI_MCP_CONFIG";
29
- readonly personaFile: "DOOMPI_PERSONA_FILE";
30
- readonly workflowExtension: "DOOMPI_WORKFLOW_EXTENSION";
31
- readonly hooks: "DOOMPI_HOOKS_ENABLED";
32
- readonly agents: "DOOMPI_AGENTS_ENABLED";
33
- readonly mcp: "DOOMPI_MCP_ENABLED";
34
- readonly allowProtectedWrites: "DOOMPI_ALLOW_PROTECTED_WRITES";
35
- };
36
- declare function readHarnessState(environment?: NodeJS.ProcessEnv, report?: HarnessStateParseReporter): HarnessState;
37
- /**
38
- * Publishes a state patch into an environment.
39
- *
40
- * Takes the environment rather than assuming `process.env`, because the
41
- * launcher builds a child environment and Doom Team builds a spawn snapshot;
42
- * neither should mutate its own process to describe another one.
43
- *
44
- * Fields in FILE_ONLY_FIELDS are skipped: the file carries them, and a reader
45
- * that needs them reads the store.
46
- */
47
- declare function projectHarnessEnvironment(patch: Partial<HarnessState>, environment?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
48
- //#endregion
49
- export { FILE_ONLY_STATE_FIELDS, HARNESS_STATE_KEYS, HarnessStateParseReporter, projectHarnessEnvironment, readHarnessState };
50
- //# sourceMappingURL=harnessState.d.cts.map
1
+ import { FILE_ONLY_STATE_FIELDS, HARNESS_STATE_KEYS, HarnessStateParseReporter, projectHarnessEnvironment, readHarnessState } from "./adapters/harnessState.cjs";
2
+ export { FILE_ONLY_STATE_FIELDS, HARNESS_STATE_KEYS, type HarnessStateParseReporter, projectHarnessEnvironment, readHarnessState };
@@ -1,50 +1,2 @@
1
- import { HarnessState } from "./types.mjs";
2
- //#region src/harnessState.d.ts
3
- /**
4
- * State that lives in the file only.
5
- *
6
- * Both are JSON documents that every spawned process and every hook would
7
- * otherwise copy in its environment, and neither has a reader outside this
8
- * package: the plugin hook list is consumed by the Pi hooks extension and the
9
- * profile environment by the profile switcher, both of which read the store.
10
- */
11
- declare const FILE_ONLY_STATE_FIELDS: ReadonlySet<keyof HarnessState>;
12
- type HarnessStateParseReporter = (key: string, error: unknown) => void;
13
- declare const HARNESS_STATE_KEYS: {
14
- readonly root: "DOOMPI_ROOT";
15
- readonly majorMode: "DOOMPI_MAJOR_MODE";
16
- readonly temporaryDirectory: "DOOMPI_TEMP_DIR";
17
- readonly domains: "DOOMPI_DOMAINS";
18
- readonly layers: "DOOMPI_LAYERS";
19
- readonly profile: "DOOMPI_PROFILE";
20
- readonly profileEnvironment: "DOOMPI_PROFILE_ENV";
21
- readonly hookGroups: "DOOMPI_HOOK_GROUPS";
22
- readonly skillDirectories: "DOOMPI_SKILL_DIRS";
23
- readonly agentDirectories: "DOOMPI_AGENT_DIRS";
24
- readonly additionalDirectories: "DOOMPI_ADDITIONAL_DIRS";
25
- readonly childExtensions: "DOOMPI_CHILD_EXTENSIONS";
26
- readonly pluginDirectories: "DOOMPI_PLUGIN_DIRS";
27
- readonly pluginHooks: "DOOMPI_PLUGIN_HOOKS";
28
- readonly mcpConfigPath: "DOOMPI_MCP_CONFIG";
29
- readonly personaFile: "DOOMPI_PERSONA_FILE";
30
- readonly workflowExtension: "DOOMPI_WORKFLOW_EXTENSION";
31
- readonly hooks: "DOOMPI_HOOKS_ENABLED";
32
- readonly agents: "DOOMPI_AGENTS_ENABLED";
33
- readonly mcp: "DOOMPI_MCP_ENABLED";
34
- readonly allowProtectedWrites: "DOOMPI_ALLOW_PROTECTED_WRITES";
35
- };
36
- declare function readHarnessState(environment?: NodeJS.ProcessEnv, report?: HarnessStateParseReporter): HarnessState;
37
- /**
38
- * Publishes a state patch into an environment.
39
- *
40
- * Takes the environment rather than assuming `process.env`, because the
41
- * launcher builds a child environment and Doom Team builds a spawn snapshot;
42
- * neither should mutate its own process to describe another one.
43
- *
44
- * Fields in FILE_ONLY_FIELDS are skipped: the file carries them, and a reader
45
- * that needs them reads the store.
46
- */
47
- declare function projectHarnessEnvironment(patch: Partial<HarnessState>, environment?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
48
- //#endregion
49
- export { FILE_ONLY_STATE_FIELDS, HARNESS_STATE_KEYS, HarnessStateParseReporter, projectHarnessEnvironment, readHarnessState };
50
- //# sourceMappingURL=harnessState.d.mts.map
1
+ import { FILE_ONLY_STATE_FIELDS, HARNESS_STATE_KEYS, HarnessStateParseReporter, projectHarnessEnvironment, readHarnessState } from "./adapters/harnessState.mjs";
2
+ export { FILE_ONLY_STATE_FIELDS, HARNESS_STATE_KEYS, type HarnessStateParseReporter, projectHarnessEnvironment, readHarnessState };
@@ -1,2 +1 @@
1
- import e from"node:path";const t=new Set([`profileEnvironment`,`pluginHooks`]),n={root:`DOOMPI_ROOT`,majorMode:`DOOMPI_MAJOR_MODE`,temporaryDirectory:`DOOMPI_TEMP_DIR`,domains:`DOOMPI_DOMAINS`,layers:`DOOMPI_LAYERS`,profile:`DOOMPI_PROFILE`,profileEnvironment:`DOOMPI_PROFILE_ENV`,hookGroups:`DOOMPI_HOOK_GROUPS`,skillDirectories:`DOOMPI_SKILL_DIRS`,agentDirectories:`DOOMPI_AGENT_DIRS`,additionalDirectories:`DOOMPI_ADDITIONAL_DIRS`,childExtensions:`DOOMPI_CHILD_EXTENSIONS`,pluginDirectories:`DOOMPI_PLUGIN_DIRS`,pluginHooks:`DOOMPI_PLUGIN_HOOKS`,mcpConfigPath:`DOOMPI_MCP_CONFIG`,personaFile:`DOOMPI_PERSONA_FILE`,workflowExtension:`DOOMPI_WORKFLOW_EXTENSION`,hooks:`DOOMPI_HOOKS_ENABLED`,agents:`DOOMPI_AGENTS_ENABLED`,mcp:`DOOMPI_MCP_ENABLED`,allowProtectedWrites:`DOOMPI_ALLOW_PROTECTED_WRITES`};function r(e){return e?.split(`,`).map(e=>e.trim()).filter(Boolean)??[]}function i(t){return t?.split(e.delimiter).map(e=>e.trim()).filter(Boolean)??[]}function a(e){return e!==`0`}function o(e,t,n){if(!e)return{};try{let t=JSON.parse(e);return typeof t!=`object`||!t||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).filter(e=>typeof e[1]==`string`))}catch(e){return n?.(t,e),{}}}function s(e,t,n){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch(e){return n?.(t,e),[]}}function c(e,t,n){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.pluginRoot==`string`&&typeof e.configPath==`string`):[]}catch(e){return n?.(t,e),[]}}function l(e=process.env,t){let l=n,u=e[l.hookGroups];return{root:e[l.root]||void 0,majorMode:e[l.majorMode]||`copilot`,temporaryDirectory:e[l.temporaryDirectory]||void 0,domains:r(e[l.domains]),layers:r(e[l.layers]),profile:e[l.profile]||void 0,profileEnvironment:o(e[l.profileEnvironment],l.profileEnvironment,t),hookGroups:u===void 0?void 0:r(u),skillDirectories:i(e[l.skillDirectories]),agentDirectories:i(e[l.agentDirectories]),additionalDirectories:i(e[l.additionalDirectories]),childExtensions:s(e[l.childExtensions],l.childExtensions,t),pluginDirectories:i(e[l.pluginDirectories]),pluginHooks:c(e[l.pluginHooks],l.pluginHooks,t),mcpConfigPath:e[l.mcpConfigPath]||void 0,personaFile:e[l.personaFile]||void 0,workflowExtension:e[l.workflowExtension]||void 0,hooks:a(e[l.hooks]),agents:a(e[l.agents]),mcp:a(e[l.mcp]),allowProtectedWrites:a(e[l.allowProtectedWrites])}}function u(t,r=process.env){let i=(e,t)=>{t===void 0?delete r[e]:r[e]=t},a=(e,t)=>i(e,t?`1`:`0`),o=n;return`root`in t&&i(o.root,t.root),`majorMode`in t&&i(o.majorMode,t.majorMode),`temporaryDirectory`in t&&i(o.temporaryDirectory,t.temporaryDirectory),`domains`in t&&i(o.domains,t.domains?.join(`,`)),`layers`in t&&i(o.layers,t.layers?.join(`,`)),`profile`in t&&i(o.profile,t.profile),`hookGroups`in t&&i(o.hookGroups,t.hookGroups?.join(`,`)),`skillDirectories`in t&&i(o.skillDirectories,t.skillDirectories?.join(e.delimiter)),`agentDirectories`in t&&i(o.agentDirectories,t.agentDirectories?.join(e.delimiter)),`additionalDirectories`in t&&i(o.additionalDirectories,t.additionalDirectories?.join(e.delimiter)),`childExtensions`in t&&i(o.childExtensions,JSON.stringify(t.childExtensions??[])),`pluginDirectories`in t&&i(o.pluginDirectories,t.pluginDirectories?.join(e.delimiter)),`mcpConfigPath`in t&&i(o.mcpConfigPath,t.mcpConfigPath),`personaFile`in t&&i(o.personaFile,t.personaFile),`workflowExtension`in t&&i(o.workflowExtension,t.workflowExtension),t.hooks!==void 0&&a(o.hooks,t.hooks),t.agents!==void 0&&a(o.agents,t.agents),t.mcp!==void 0&&a(o.mcp,t.mcp),t.allowProtectedWrites!==void 0&&a(o.allowProtectedWrites,t.allowProtectedWrites),r}export{t as FILE_ONLY_STATE_FIELDS,n as HARNESS_STATE_KEYS,u as projectHarnessEnvironment,l as readHarnessState};
2
- //# sourceMappingURL=harnessState.mjs.map
1
+ import{FILE_ONLY_STATE_FIELDS as e,HARNESS_STATE_KEYS as t,projectHarnessEnvironment as n,readHarnessState as r}from"./adapters/harnessState.mjs";export{e as FILE_ONLY_STATE_FIELDS,t as HARNESS_STATE_KEYS,n as projectHarnessEnvironment,r as readHarnessState};
@@ -1,2 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./_virtual/_rolldown/runtime.cjs"),t=require("./atomicJson.cjs"),n=require("./harnessState.cjs");let r=require("node:fs");r=e.__toESM(r,1);let i=require("node:os");i=e.__toESM(i,1);let a=require("node:path");a=e.__toESM(a,1);const o=`DOOMPI_STATE`;let s;function c(){s=void 0}function l(e,t){let n=JSON.parse(e);if(n.version!==1)throw Error(`Harness state at ${t} has version ${String(n.version)}, expected 1`);if(typeof n.state!=`object`||n.state===null)throw Error(`Harness state at ${t} has no state object`);return{version:1,owner:{pid:n.owner?.pid??-1,startedAt:n.owner?.startedAt??``},state:n.state}}function u(e=process.env,t){let i=e===process.env;if(i&&s)return s;let a=e[o],c;if(a&&r.default.existsSync(a))try{let e=l(r.default.readFileSync(a,`utf8`),a);c={filePath:a,owned:e.owner.pid===process.pid||e.owner.pid===0,state:e.state}}catch(e){t?.(o,e)}return c??={owned:!1,state:n.readHarnessState(e,t)},i&&(s=c),c}function d(e){return u(process.env,e).state}function f(e){return a.default.join(e,`harness-state.json`)}function p(){return a.default.join(i.default.tmpdir(),`doom-harness`,`${String(process.pid)}.json`)}function m(e,n,r=process.pid){t.writePrivateAtomicJson(e,{version:1,owner:{pid:r,startedAt:new Date().toISOString()},state:n})}function h(e,t){let r=f(t.directory);return m(r,e,t.unclaimed?0:process.pid),t.environment[o]=r,n.projectHarnessEnvironment(e,t.environment),!t.unclaimed&&t.environment===process.env&&(s={filePath:r,owned:!0,state:e}),r}function g(e,t=process.env){let r=u(t),i={...r.state,...e},a=r.owned&&r.filePath?r.filePath:p();return m(a,i),t[o]=a,t===process.env&&(s={filePath:a,owned:!0,state:i}),n.projectHarnessEnvironment(e,t),i}function _(e=process.env){let t=s;c(),!(!t?.owned||!t.filePath)&&(r.default.rmSync(t.filePath,{force:!0}),delete e[o])}function v(e=d()){return e.root??process.cwd()}function y(e=d()){if(!e.root)throw Error(`${n.HARNESS_STATE_KEYS.root} is not set`);return e.root}function b(e=d()){let t=y(e);if(!e.temporaryDirectory)throw Error(`${n.HARNESS_STATE_KEYS.temporaryDirectory} is not set`);return{root:t,temporaryDirectory:e.temporaryDirectory}}exports.HARNESS_STATE_POINTER=o,exports.createHarnessSession=h,exports.disposeHarnessState=_,exports.getHarnessState=d,exports.harnessRoot=v,exports.loadHarnessState=u,exports.requireHarnessPaths=b,exports.requireHarnessRoot=y,exports.resetHarnessStore=c,exports.updateHarnessState=g;
2
- //# sourceMappingURL=harnessStore.cjs.map
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/harnessStore.cjs");exports.HARNESS_STATE_POINTER=e.HARNESS_STATE_POINTER,exports.createHarnessSession=e.createHarnessSession,exports.disposeHarnessState=e.disposeHarnessState,exports.getHarnessState=e.getHarnessState,exports.harnessRoot=e.harnessRoot,exports.loadHarnessState=e.loadHarnessState,exports.requireHarnessPaths=e.requireHarnessPaths,exports.requireHarnessRoot=e.requireHarnessRoot,exports.resetHarnessStore=e.resetHarnessStore,exports.updateHarnessState=e.updateHarnessState;
@@ -1,102 +1,2 @@
1
- import { HarnessState } from "./types.cjs";
2
- import { HarnessStateParseReporter } from "./harnessState.cjs";
3
- //#region src/harnessStore.d.ts
4
- /**
5
- * Who owns the harness state, and where it lives.
6
- *
7
- * The state used to be the environment: twenty variables that every reader
8
- * re-parsed and every writer mutated globally. The file is the authority now,
9
- * and the environment is a projection published for the readers that can only
10
- * see an environment, which are bash hooks, the shell launchers, packages that
11
- * do not depend on this one, and any process spawned by any of them.
12
- *
13
- * OWNERSHIP IS PER PROCESS, AND THAT IS THE WHOLE DESIGN:
14
- * Doom Team subagents run detached, in their own process group, from an
15
- * environment snapshot taken at spawn. A child can outlive its parent. If it
16
- * shared the parent's file it would corrupt a session it does not own, and if
17
- * that file sat in the parent's run directory the parent's shutdown sweep would
18
- * delete it from under a live run. So every process writes a file it owns:
19
- * `owner.pid` records who, and a process that finds someone else's file copies
20
- * it before its first write.
21
- *
22
- * AVOID:
23
- * - Treating the file as shared mutable state between processes. Atomic writes
24
- * prevent torn reads, not lost updates
25
- * - Reading the environment directly for anything this exposes
26
- */
27
- /** Points at the state file. The one variable that is not derived. */
28
- declare const HARNESS_STATE_POINTER = "DOOMPI_STATE";
29
- interface HarnessStateFile {
30
- version: number;
31
- owner: {
32
- pid: number;
33
- startedAt: string;
34
- };
35
- state: HarnessState;
36
- }
37
- interface LoadedHarnessState {
38
- /** Undefined when this process is running off the environment fallback. */
39
- filePath?: string;
40
- owned: boolean;
41
- state: HarnessState;
42
- }
43
- /** Drops the cached state. For tests, and for a process changing identity. */
44
- declare function resetHarnessStore(): void;
45
- /**
46
- * Reads the state for this process, once.
47
- *
48
- * A missing pointer means nobody wrote a file for this process, so the
49
- * environment is all there is: a nested run, a third-party spawn, or a caller
50
- * older than the store. A pointer that cannot be read is reported and then
51
- * treated the same way, because a session that starts degraded beats a session
52
- * that does not start at all.
53
- */
54
- declare function loadHarnessState(environment?: NodeJS.ProcessEnv, report?: HarnessStateParseReporter): LoadedHarnessState;
55
- declare function getHarnessState(report?: HarnessStateParseReporter): HarnessState;
56
- /**
57
- * Starts a session: writes the file and publishes the derived environment.
58
- *
59
- * The environment is a parameter because the caller is usually describing a
60
- * process other than itself. The launcher builds the environment for the Pi it
61
- * is about to spawn, and Doom Team builds the snapshot for a detached child, so
62
- * neither should touch its own `process.env` to do it.
63
- */
64
- declare function createHarnessSession(state: HarnessState, options: {
65
- directory: string;
66
- environment: NodeJS.ProcessEnv;
67
- /**
68
- * Leave the file for a process that does not exist yet to claim.
69
- *
70
- * What a spawner wants: the child owns its state from its first read, in a
71
- * directory the spawner manages, so the parent cleaning up its own session
72
- * cannot pull the file out from under a detached run.
73
- */
74
- unclaimed?: boolean;
75
- }): string;
76
- /**
77
- * Applies a patch to this process's state.
78
- *
79
- * Copy on write: a process holding a file it does not own writes its own copy
80
- * and repoints itself at it, so a child can never rewrite its parent's session.
81
- */
82
- declare function updateHarnessState(patch: Partial<HarnessState>, environment?: NodeJS.ProcessEnv): HarnessState;
83
- /** Removes this process's own state file. Safe when there is none. */
84
- declare function disposeHarnessState(environment?: NodeJS.ProcessEnv): void;
85
- declare function harnessRoot(state?: Pick<HarnessState, 'root'>): string;
86
- /**
87
- * The repository root, or a hard error.
88
- *
89
- * Separate from `requireHarnessPaths` because most callers only need the root,
90
- * and separate from `harnessRoot` because falling back to `process.cwd()` would
91
- * quietly operate on whatever directory the session happens to sit in. A caller
92
- * that asks for the root wants the session's repository or nothing.
93
- */
94
- declare function requireHarnessRoot(state?: Pick<HarnessState, 'root'>): string;
95
- /** The root and the run's scratch directory, for callers that write to disk. */
96
- declare function requireHarnessPaths(state?: Pick<HarnessState, 'root' | 'temporaryDirectory'>): {
97
- root: string;
98
- temporaryDirectory: string;
99
- };
100
- //#endregion
101
- export { HARNESS_STATE_POINTER, HarnessStateFile, LoadedHarnessState, createHarnessSession, disposeHarnessState, getHarnessState, harnessRoot, loadHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState };
102
- //# sourceMappingURL=harnessStore.d.cts.map
1
+ import { HARNESS_STATE_POINTER, HarnessStateFile, LoadedHarnessState, createHarnessSession, disposeHarnessState, getHarnessState, harnessRoot, loadHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState } from "./adapters/harnessStore.cjs";
2
+ export { HARNESS_STATE_POINTER, type HarnessStateFile, type LoadedHarnessState, createHarnessSession, disposeHarnessState, getHarnessState, harnessRoot, loadHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState };
@@ -1,102 +1,2 @@
1
- import { HarnessState } from "./types.mjs";
2
- import { HarnessStateParseReporter } from "./harnessState.mjs";
3
- //#region src/harnessStore.d.ts
4
- /**
5
- * Who owns the harness state, and where it lives.
6
- *
7
- * The state used to be the environment: twenty variables that every reader
8
- * re-parsed and every writer mutated globally. The file is the authority now,
9
- * and the environment is a projection published for the readers that can only
10
- * see an environment, which are bash hooks, the shell launchers, packages that
11
- * do not depend on this one, and any process spawned by any of them.
12
- *
13
- * OWNERSHIP IS PER PROCESS, AND THAT IS THE WHOLE DESIGN:
14
- * Doom Team subagents run detached, in their own process group, from an
15
- * environment snapshot taken at spawn. A child can outlive its parent. If it
16
- * shared the parent's file it would corrupt a session it does not own, and if
17
- * that file sat in the parent's run directory the parent's shutdown sweep would
18
- * delete it from under a live run. So every process writes a file it owns:
19
- * `owner.pid` records who, and a process that finds someone else's file copies
20
- * it before its first write.
21
- *
22
- * AVOID:
23
- * - Treating the file as shared mutable state between processes. Atomic writes
24
- * prevent torn reads, not lost updates
25
- * - Reading the environment directly for anything this exposes
26
- */
27
- /** Points at the state file. The one variable that is not derived. */
28
- declare const HARNESS_STATE_POINTER = "DOOMPI_STATE";
29
- interface HarnessStateFile {
30
- version: number;
31
- owner: {
32
- pid: number;
33
- startedAt: string;
34
- };
35
- state: HarnessState;
36
- }
37
- interface LoadedHarnessState {
38
- /** Undefined when this process is running off the environment fallback. */
39
- filePath?: string;
40
- owned: boolean;
41
- state: HarnessState;
42
- }
43
- /** Drops the cached state. For tests, and for a process changing identity. */
44
- declare function resetHarnessStore(): void;
45
- /**
46
- * Reads the state for this process, once.
47
- *
48
- * A missing pointer means nobody wrote a file for this process, so the
49
- * environment is all there is: a nested run, a third-party spawn, or a caller
50
- * older than the store. A pointer that cannot be read is reported and then
51
- * treated the same way, because a session that starts degraded beats a session
52
- * that does not start at all.
53
- */
54
- declare function loadHarnessState(environment?: NodeJS.ProcessEnv, report?: HarnessStateParseReporter): LoadedHarnessState;
55
- declare function getHarnessState(report?: HarnessStateParseReporter): HarnessState;
56
- /**
57
- * Starts a session: writes the file and publishes the derived environment.
58
- *
59
- * The environment is a parameter because the caller is usually describing a
60
- * process other than itself. The launcher builds the environment for the Pi it
61
- * is about to spawn, and Doom Team builds the snapshot for a detached child, so
62
- * neither should touch its own `process.env` to do it.
63
- */
64
- declare function createHarnessSession(state: HarnessState, options: {
65
- directory: string;
66
- environment: NodeJS.ProcessEnv;
67
- /**
68
- * Leave the file for a process that does not exist yet to claim.
69
- *
70
- * What a spawner wants: the child owns its state from its first read, in a
71
- * directory the spawner manages, so the parent cleaning up its own session
72
- * cannot pull the file out from under a detached run.
73
- */
74
- unclaimed?: boolean;
75
- }): string;
76
- /**
77
- * Applies a patch to this process's state.
78
- *
79
- * Copy on write: a process holding a file it does not own writes its own copy
80
- * and repoints itself at it, so a child can never rewrite its parent's session.
81
- */
82
- declare function updateHarnessState(patch: Partial<HarnessState>, environment?: NodeJS.ProcessEnv): HarnessState;
83
- /** Removes this process's own state file. Safe when there is none. */
84
- declare function disposeHarnessState(environment?: NodeJS.ProcessEnv): void;
85
- declare function harnessRoot(state?: Pick<HarnessState, 'root'>): string;
86
- /**
87
- * The repository root, or a hard error.
88
- *
89
- * Separate from `requireHarnessPaths` because most callers only need the root,
90
- * and separate from `harnessRoot` because falling back to `process.cwd()` would
91
- * quietly operate on whatever directory the session happens to sit in. A caller
92
- * that asks for the root wants the session's repository or nothing.
93
- */
94
- declare function requireHarnessRoot(state?: Pick<HarnessState, 'root'>): string;
95
- /** The root and the run's scratch directory, for callers that write to disk. */
96
- declare function requireHarnessPaths(state?: Pick<HarnessState, 'root' | 'temporaryDirectory'>): {
97
- root: string;
98
- temporaryDirectory: string;
99
- };
100
- //#endregion
101
- export { HARNESS_STATE_POINTER, HarnessStateFile, LoadedHarnessState, createHarnessSession, disposeHarnessState, getHarnessState, harnessRoot, loadHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState };
102
- //# sourceMappingURL=harnessStore.d.mts.map
1
+ import { HARNESS_STATE_POINTER, HarnessStateFile, LoadedHarnessState, createHarnessSession, disposeHarnessState, getHarnessState, harnessRoot, loadHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState } from "./adapters/harnessStore.mjs";
2
+ export { HARNESS_STATE_POINTER, type HarnessStateFile, type LoadedHarnessState, createHarnessSession, disposeHarnessState, getHarnessState, harnessRoot, loadHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState };
@@ -1,2 +1 @@
1
- import{writePrivateAtomicJson as e}from"./atomicJson.mjs";import{HARNESS_STATE_KEYS as t,projectHarnessEnvironment as n,readHarnessState as r}from"./harnessState.mjs";import i from"node:fs";import a from"node:os";import o from"node:path";const s=`DOOMPI_STATE`;let c;function l(){c=void 0}function u(e,t){let n=JSON.parse(e);if(n.version!==1)throw Error(`Harness state at ${t} has version ${String(n.version)}, expected 1`);if(typeof n.state!=`object`||n.state===null)throw Error(`Harness state at ${t} has no state object`);return{version:1,owner:{pid:n.owner?.pid??-1,startedAt:n.owner?.startedAt??``},state:n.state}}function d(e=process.env,t){let n=e===process.env;if(n&&c)return c;let a=e[s],o;if(a&&i.existsSync(a))try{let e=u(i.readFileSync(a,`utf8`),a);o={filePath:a,owned:e.owner.pid===process.pid||e.owner.pid===0,state:e.state}}catch(e){t?.(s,e)}return o??={owned:!1,state:r(e,t)},n&&(c=o),o}function f(e){return d(process.env,e).state}function p(e){return o.join(e,`harness-state.json`)}function m(){return o.join(a.tmpdir(),`doom-harness`,`${String(process.pid)}.json`)}function h(t,n,r=process.pid){e(t,{version:1,owner:{pid:r,startedAt:new Date().toISOString()},state:n})}function g(e,t){let r=p(t.directory);return h(r,e,t.unclaimed?0:process.pid),t.environment[s]=r,n(e,t.environment),!t.unclaimed&&t.environment===process.env&&(c={filePath:r,owned:!0,state:e}),r}function _(e,t=process.env){let r=d(t),i={...r.state,...e},a=r.owned&&r.filePath?r.filePath:m();return h(a,i),t[s]=a,t===process.env&&(c={filePath:a,owned:!0,state:i}),n(e,t),i}function v(e=process.env){let t=c;l(),!(!t?.owned||!t.filePath)&&(i.rmSync(t.filePath,{force:!0}),delete e[s])}function y(e=f()){return e.root??process.cwd()}function b(e=f()){if(!e.root)throw Error(`${t.root} is not set`);return e.root}function x(e=f()){let n=b(e);if(!e.temporaryDirectory)throw Error(`${t.temporaryDirectory} is not set`);return{root:n,temporaryDirectory:e.temporaryDirectory}}export{s as HARNESS_STATE_POINTER,g as createHarnessSession,v as disposeHarnessState,f as getHarnessState,y as harnessRoot,d as loadHarnessState,x as requireHarnessPaths,b as requireHarnessRoot,l as resetHarnessStore,_ as updateHarnessState};
2
- //# sourceMappingURL=harnessStore.mjs.map
1
+ import{HARNESS_STATE_POINTER as e,createHarnessSession as t,disposeHarnessState as n,getHarnessState as r,harnessRoot as i,loadHarnessState as a,requireHarnessPaths as o,requireHarnessRoot as s,resetHarnessStore as c,updateHarnessState as l}from"./adapters/harnessStore.mjs";export{e as HARNESS_STATE_POINTER,t as createHarnessSession,n as disposeHarnessState,r as getHarnessState,i as harnessRoot,a as loadHarnessState,o as requireHarnessPaths,s as requireHarnessRoot,c as resetHarnessStore,l as updateHarnessState};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./config.cjs"),t=require("./configWriter.cjs"),n=require("./init.cjs"),r=require("./types.cjs"),i=require("./container.cjs"),a=require("./layeredConfig.cjs"),o=require("./domains.cjs"),s=require("./config/piConfig.cjs"),c=require("./atomicJson.cjs"),l=require("./harnessState.cjs"),u=require("./harnessStore.cjs"),d=require("./majorModes.cjs"),f=require("./piContext.cjs"),p=require("./profiles.cjs");exports.DOOM_CONFIG_ENTRY_TYPE=f.DOOM_CONFIG_ENTRY_TYPE,exports.DOOM_CONFIG_TEMPLATES=n.DOOM_CONFIG_TEMPLATES,exports.DOOM_CONFIG_TYPES=r.DOOM_CONFIG_TYPES,exports.DOOM_DIR=a.DOOM_DIR,exports.DOOM_PLANNING_THINKING_LEVELS=e.DOOM_PLANNING_THINKING_LEVELS,exports.DOOM_VOICE_ENGINES=e.DOOM_VOICE_ENGINES,exports.DOOM_VOICE_TTS_ENGINES=e.DOOM_VOICE_TTS_ENGINES,Object.defineProperty(exports,"DoomConfigService",{enumerable:!0,get:function(){return i.DoomConfigService}}),exports.FILE_ONLY_STATE_FIELDS=l.FILE_ONLY_STATE_FIELDS,exports.GLOBAL_DOOM_SEED_FILES=n.GLOBAL_DOOM_SEED_FILES,exports.HARNESS_STATE_KEYS=l.HARNESS_STATE_KEYS,exports.HARNESS_STATE_POINTER=u.HARNESS_STATE_POINTER,exports.PERSONA_FILES=p.PERSONA_FILES,exports.appendDoomConfigSelection=f.appendDoomConfigSelection,exports.applyProfileEnvironment=p.applyProfileEnvironment,exports.buildPersonaPrompt=p.buildPersonaPrompt,exports.createDoomConfigContainer=i.createDoomConfigContainer,exports.createDoomConfigContext=f.createDoomConfigContext,exports.createDoomConfigModule=i.createDoomConfigModule,exports.createHarnessSession=u.createHarnessSession,exports.disposeHarnessState=u.disposeHarnessState,exports.domainCompletionItems=o.domainCompletionItems,exports.domainCompletionPrefix=o.domainCompletionPrefix,exports.expandDomainNames=o.expandDomainNames,exports.getHarnessState=u.getHarnessState,exports.globalDoomConfigDirectory=e.globalDoomConfigDirectory,exports.globalDoomConfigPath=e.globalDoomConfigPath,exports.harnessRoot=u.harnessRoot,exports.initializeGlobalDoomConfig=n.initializeGlobalDoomConfig,exports.isLocalPackageSpecifier=d.isLocalPackageSpecifier,exports.layerEntries=d.layerEntries,exports.layerHookGroups=d.layerHookGroups,exports.listDomainNames=o.listDomainNames,exports.listProfileNames=p.listProfileNames,exports.loadDomains=o.loadDomains,exports.loadDoomConfig=e.loadDoomConfig,exports.loadHarnessState=u.loadHarnessState,exports.loadMajorModesConfig=d.loadMajorModesConfig,exports.loadPiConfig=s.loadPiConfig,exports.loadProfiles=p.loadProfiles,exports.mergeDoomConfigs=e.mergeDoomConfigs,exports.parseDoomConfig=e.parseDoomConfig,exports.parsePlanningModeConfig=e.parsePlanningModeConfig,exports.piConfigPaths=s.piConfigPaths,exports.projectHarnessEnvironment=l.projectHarnessEnvironment,exports.provideDoomConfigContext=f.provideDoomConfigContext,exports.readDoomConfigSelection=f.readDoomConfigSelection,exports.readHarnessState=l.readHarnessState,exports.replaceProfileEnvironment=p.replaceProfileEnvironment,exports.repositoryDoomConfigPath=e.repositoryDoomConfigPath,exports.requireDoomConfigContext=f.requireDoomConfigContext,exports.requireHarnessPaths=u.requireHarnessPaths,exports.requireHarnessRoot=u.requireHarnessRoot,exports.resetHarnessStore=u.resetHarnessStore,exports.resolveLayerCustomization=d.resolveLayerCustomization,exports.resolveLayers=d.resolveLayers,exports.resolvePlanningPlansDirectory=e.resolvePlanningPlansDirectory,exports.resolvePluginDirectories=o.resolvePluginDirectories,exports.resolvePluginEntries=o.resolvePluginEntries,exports.resolveProfile=p.resolveProfile,exports.resolveSharedSkills=o.resolveSharedSkills,exports.resolveVoiceConfig=e.resolveVoiceConfig,exports.setDoomConfigValue=t.setDoomConfigValue,exports.unsetDoomConfigValue=t.unsetDoomConfigValue,exports.updateHarnessState=u.updateHarnessState,exports.writeDoomConfigValues=t.writeDoomConfigValues,exports.writePrivateAtomicJson=c.writePrivateAtomicJson;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/atomicJson.cjs"),t=require("./services/configPolicy.cjs"),n=require("./adapters/config.cjs"),r=require("./adapters/configWriter.cjs"),i=require("./types/config.cjs"),a=require("./container/doomConfigContainer.cjs"),o=require("./services/domains.cjs"),s=require("./adapters/layeredConfig.cjs"),c=require("./adapters/pluginCatalog.cjs"),l=require("./adapters/domains.cjs"),u=require("./adapters/harnessState.cjs"),d=require("./adapters/harnessStore.cjs"),f=require("./adapters/init.cjs"),p=require("./adapters/majorModes.cjs"),m=require("./adapters/pi/piContext.cjs"),h=require("./adapters/piConfig.cjs"),g=require("./adapters/profiles.cjs");exports.DOOM_CONFIG_ENTRY_TYPE=m.DOOM_CONFIG_ENTRY_TYPE,exports.DOOM_CONFIG_TEMPLATES=f.DOOM_CONFIG_TEMPLATES,exports.DOOM_CONFIG_TYPES=i.DOOM_CONFIG_TYPES,exports.DOOM_DIR=s.DOOM_DIR,exports.DOOM_PLANNING_THINKING_LEVELS=t.DOOM_PLANNING_THINKING_LEVELS,exports.DOOM_VOICE_ENGINES=t.DOOM_VOICE_ENGINES,exports.DOOM_VOICE_TTS_ENGINES=t.DOOM_VOICE_TTS_ENGINES,Object.defineProperty(exports,"DoomConfigService",{enumerable:!0,get:function(){return a.DoomConfigService}}),exports.FILE_ONLY_STATE_FIELDS=u.FILE_ONLY_STATE_FIELDS,exports.GLOBAL_DOOM_SEED_FILES=f.GLOBAL_DOOM_SEED_FILES,exports.HARNESS_STATE_KEYS=u.HARNESS_STATE_KEYS,exports.HARNESS_STATE_POINTER=d.HARNESS_STATE_POINTER,exports.MARKETPLACE_MANIFEST_RELATIVE_PATHS=c.MARKETPLACE_MANIFEST_RELATIVE_PATHS,exports.PERSONA_FILES=g.PERSONA_FILES,exports.REPOSITORY_DOOM_CONFIG_TEMPLATES=f.REPOSITORY_DOOM_CONFIG_TEMPLATES,exports.appendDoomConfigSelection=m.appendDoomConfigSelection,exports.applyProfileEnvironment=g.applyProfileEnvironment,exports.buildPersonaPrompt=g.buildPersonaPrompt,exports.createDoomConfigContainer=a.createDoomConfigContainer,exports.createDoomConfigContext=m.createDoomConfigContext,exports.createDoomConfigContextAsync=m.createDoomConfigContextAsync,exports.createDoomConfigModule=a.createDoomConfigModule,exports.createHarnessSession=d.createHarnessSession,exports.disposeHarnessState=d.disposeHarnessState,exports.domainCompletionItems=o.domainCompletionItems,exports.domainCompletionPrefix=o.domainCompletionPrefix,exports.expandDomainNames=o.expandDomainNames,exports.findPluginManifestPath=c.findPluginManifestPath,exports.getHarnessState=d.getHarnessState,exports.globalDoomConfigDirectory=n.globalDoomConfigDirectory,exports.globalDoomConfigPath=n.globalDoomConfigPath,exports.harnessRoot=d.harnessRoot,exports.initializeGlobalDoomConfig=f.initializeGlobalDoomConfig,exports.initializeRepositoryDoomConfig=f.initializeRepositoryDoomConfig,exports.isLocalPackageSpecifier=p.isLocalPackageSpecifier,exports.isRemotePluginSource=c.isRemotePluginSource,exports.layerEntries=p.layerEntries,exports.layerHookGroups=p.layerHookGroups,exports.listDomainNames=l.listDomainNames,exports.listProfileNames=g.listProfileNames,exports.loadDomains=l.loadDomains,exports.loadDoomConfig=n.loadDoomConfig,exports.loadDoomConfigAsync=n.loadDoomConfigAsync,exports.loadHarnessState=d.loadHarnessState,exports.loadMajorModesConfig=p.loadMajorModesConfig,exports.loadPiConfig=h.loadPiConfig,exports.loadPiConfigAsync=h.loadPiConfigAsync,exports.loadProfiles=g.loadProfiles,exports.mergeDoomConfigs=t.mergeDoomConfigs,exports.parseDoomConfig=t.parseDoomConfig,exports.parsePlanningModeConfig=t.parsePlanningModeConfig,exports.piConfigPaths=h.piConfigPaths,exports.pluginDirectoryForSource=c.pluginDirectoryForSource,exports.projectHarnessEnvironment=u.projectHarnessEnvironment,exports.provideDoomConfigContext=m.provideDoomConfigContext,exports.readDoomConfigSelection=m.readDoomConfigSelection,exports.readHarnessState=u.readHarnessState,exports.replaceProfileEnvironment=g.replaceProfileEnvironment,exports.repositoryDoomConfigPath=n.repositoryDoomConfigPath,exports.requireDoomConfigContext=m.requireDoomConfigContext,exports.requireHarnessPaths=d.requireHarnessPaths,exports.requireHarnessRoot=d.requireHarnessRoot,exports.resetHarnessStore=d.resetHarnessStore,exports.resolveLayers=p.resolveLayers,exports.resolvePackageConfigurations=p.resolvePackageConfigurations,exports.resolvePlanningPlansDirectory=n.resolvePlanningPlansDirectory,exports.resolvePluginDirectories=l.resolvePluginDirectories,exports.resolvePluginEntries=l.resolvePluginEntries,exports.resolveProfile=g.resolveProfile,exports.resolveSharedSkills=l.resolveSharedSkills,exports.resolveVoiceConfig=t.resolveVoiceConfig,exports.setDoomConfigValue=r.setDoomConfigValue,exports.unsetDoomConfigValue=r.unsetDoomConfigValue,exports.updateHarnessState=d.updateHarnessState,exports.writeDoomConfigValues=r.writeDoomConfigValues,exports.writePrivateAtomicJson=e.writePrivateAtomicJson;