blacksmith-organization-system 1.0.0-dev.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +61 -65
  3. package/dist/bridges/git.d.ts +8 -0
  4. package/dist/bridges/git.js +20 -0
  5. package/dist/bridges/git.js.map +1 -0
  6. package/dist/bridges/github.d.ts +28 -0
  7. package/dist/bridges/github.js +71 -0
  8. package/dist/bridges/github.js.map +1 -0
  9. package/dist/cli.d.ts +2 -0
  10. package/dist/cli.js +53 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/core/context.d.ts +18 -0
  13. package/dist/core/context.js +14 -0
  14. package/dist/core/context.js.map +1 -0
  15. package/dist/core/element.d.ts +49 -0
  16. package/dist/core/element.js +97 -0
  17. package/dist/core/element.js.map +1 -0
  18. package/dist/core/host.d.ts +32 -0
  19. package/dist/core/host.js +5 -0
  20. package/dist/core/host.js.map +1 -0
  21. package/dist/core/paths.d.ts +5 -0
  22. package/dist/core/paths.js +42 -0
  23. package/dist/core/paths.js.map +1 -0
  24. package/dist/core/procedure.d.ts +11 -0
  25. package/dist/core/procedure.js +24 -0
  26. package/dist/core/procedure.js.map +1 -0
  27. package/dist/core/tool.d.ts +33 -0
  28. package/dist/core/tool.js +44 -0
  29. package/dist/core/tool.js.map +1 -0
  30. package/dist/core/version.d.ts +6 -0
  31. package/dist/core/version.js +37 -0
  32. package/dist/core/version.js.map +1 -0
  33. package/dist/hosts/node.d.ts +21 -0
  34. package/dist/hosts/node.js +76 -0
  35. package/dist/hosts/node.js.map +1 -0
  36. package/dist/hosts/watch-tree.d.ts +8 -0
  37. package/dist/hosts/watch-tree.js +86 -0
  38. package/dist/hosts/watch-tree.js.map +1 -0
  39. package/dist/index.d.ts +14 -0
  40. package/dist/index.js +18 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/main.d.ts +51 -0
  43. package/dist/main.js +85 -0
  44. package/dist/main.js.map +1 -0
  45. package/dist/models/_index.d.ts +18 -0
  46. package/dist/models/_index.js +20 -0
  47. package/dist/models/_index.js.map +1 -0
  48. package/dist/models/archive/class.d.ts +5 -0
  49. package/dist/models/archive/class.js +7 -0
  50. package/dist/models/archive/class.js.map +1 -0
  51. package/dist/models/craftbook/class.d.ts +10 -0
  52. package/dist/models/craftbook/class.js +13 -0
  53. package/dist/models/craftbook/class.js.map +1 -0
  54. package/dist/models/devarmory/class.d.ts +11 -0
  55. package/dist/models/devarmory/class.js +8 -0
  56. package/dist/models/devarmory/class.js.map +1 -0
  57. package/dist/models/devlog/class.d.ts +19 -0
  58. package/dist/models/devlog/class.js +61 -0
  59. package/dist/models/devlog/class.js.map +1 -0
  60. package/dist/models/forge/class.d.ts +9 -0
  61. package/dist/models/forge/class.js +24 -0
  62. package/dist/models/forge/class.js.map +1 -0
  63. package/dist/models/loop/class.d.ts +16 -0
  64. package/dist/models/loop/class.js +56 -0
  65. package/dist/models/loop/class.js.map +1 -0
  66. package/dist/models/loop/data.d.ts +12 -0
  67. package/dist/models/loop/data.js +20 -0
  68. package/dist/models/loop/data.js.map +1 -0
  69. package/dist/models/loop/load.d.ts +5 -0
  70. package/dist/models/loop/load.js +14 -0
  71. package/dist/models/loop/load.js.map +1 -0
  72. package/dist/models/project/anatomy.d.ts +2 -0
  73. package/dist/models/project/anatomy.js +15 -0
  74. package/dist/models/project/anatomy.js.map +1 -0
  75. package/dist/models/project/around.d.ts +3 -0
  76. package/dist/models/project/around.js +13 -0
  77. package/dist/models/project/around.js.map +1 -0
  78. package/dist/models/project/class.d.ts +21 -0
  79. package/dist/models/project/class.js +23 -0
  80. package/dist/models/project/class.js.map +1 -0
  81. package/dist/models/project/git.d.ts +8 -0
  82. package/dist/models/project/git.js +26 -0
  83. package/dist/models/project/git.js.map +1 -0
  84. package/dist/models/project/version.d.ts +6 -0
  85. package/dist/models/project/version.js +23 -0
  86. package/dist/models/project/version.js.map +1 -0
  87. package/dist/models/scope/class.d.ts +21 -0
  88. package/dist/models/scope/class.js +49 -0
  89. package/dist/models/scope/class.js.map +1 -0
  90. package/dist/models/settings/data.d.ts +12 -0
  91. package/dist/models/settings/data.js +9 -0
  92. package/dist/models/settings/data.js.map +1 -0
  93. package/dist/models/settings/load.d.ts +9 -0
  94. package/dist/models/settings/load.js +32 -0
  95. package/dist/models/settings/load.js.map +1 -0
  96. package/dist/models/system/class.d.ts +16 -0
  97. package/dist/models/system/class.js +21 -0
  98. package/dist/models/system/class.js.map +1 -0
  99. package/dist/models/system/parts.d.ts +21 -0
  100. package/dist/models/system/parts.js +22 -0
  101. package/dist/models/system/parts.js.map +1 -0
  102. package/dist/models/system/storylines.d.ts +39 -0
  103. package/dist/models/system/storylines.js +42 -0
  104. package/dist/models/system/storylines.js.map +1 -0
  105. package/dist/models/workshop/class.d.ts +20 -0
  106. package/dist/models/workshop/class.js +43 -0
  107. package/dist/models/workshop/class.js.map +1 -0
  108. package/dist/models/workshop/locate.d.ts +16 -0
  109. package/dist/models/workshop/locate.js +54 -0
  110. package/dist/models/workshop/locate.js.map +1 -0
  111. package/dist/procedures/_index.d.ts +7 -0
  112. package/dist/procedures/_index.js +10 -0
  113. package/dist/procedures/_index.js.map +1 -0
  114. package/dist/procedures/automerging/_index.d.ts +4 -0
  115. package/dist/procedures/automerging/_index.js +8 -0
  116. package/dist/procedures/automerging/_index.js.map +1 -0
  117. package/dist/procedures/automerging/context.d.ts +11 -0
  118. package/dist/procedures/automerging/context.js +2 -0
  119. package/dist/procedures/automerging/context.js.map +1 -0
  120. package/dist/procedures/automerging/steps.d.ts +4 -0
  121. package/dist/procedures/automerging/steps.js +34 -0
  122. package/dist/procedures/automerging/steps.js.map +1 -0
  123. package/dist/procedures/bootstrapping/_index.d.ts +4 -0
  124. package/dist/procedures/bootstrapping/_index.js +8 -0
  125. package/dist/procedures/bootstrapping/_index.js.map +1 -0
  126. package/dist/procedures/bootstrapping/context.d.ts +5 -0
  127. package/dist/procedures/bootstrapping/context.js +2 -0
  128. package/dist/procedures/bootstrapping/context.js.map +1 -0
  129. package/dist/procedures/bootstrapping/ensure-tree.d.ts +2 -0
  130. package/dist/procedures/bootstrapping/ensure-tree.js +5 -0
  131. package/dist/procedures/bootstrapping/ensure-tree.js.map +1 -0
  132. package/dist/procedures/bootstrapping/record.d.ts +2 -0
  133. package/dist/procedures/bootstrapping/record.js +12 -0
  134. package/dist/procedures/bootstrapping/record.js.map +1 -0
  135. package/dist/procedures/bumping/_index.d.ts +4 -0
  136. package/dist/procedures/bumping/_index.js +9 -0
  137. package/dist/procedures/bumping/_index.js.map +1 -0
  138. package/dist/procedures/bumping/context.d.ts +18 -0
  139. package/dist/procedures/bumping/context.js +4 -0
  140. package/dist/procedures/bumping/context.js.map +1 -0
  141. package/dist/procedures/bumping/steps.d.ts +4 -0
  142. package/dist/procedures/bumping/steps.js +50 -0
  143. package/dist/procedures/bumping/steps.js.map +1 -0
  144. package/dist/procedures/inspecting/_index.d.ts +4 -0
  145. package/dist/procedures/inspecting/_index.js +11 -0
  146. package/dist/procedures/inspecting/_index.js.map +1 -0
  147. package/dist/procedures/inspecting/judge.d.ts +2 -0
  148. package/dist/procedures/inspecting/judge.js +6 -0
  149. package/dist/procedures/inspecting/judge.js.map +1 -0
  150. package/dist/procedures/inspecting/read-areas.d.ts +2 -0
  151. package/dist/procedures/inspecting/read-areas.js +5 -0
  152. package/dist/procedures/inspecting/read-areas.js.map +1 -0
  153. package/dist/procedures/inspecting/read-forge.d.ts +2 -0
  154. package/dist/procedures/inspecting/read-forge.js +14 -0
  155. package/dist/procedures/inspecting/read-forge.js.map +1 -0
  156. package/dist/procedures/inspecting/report.d.ts +32 -0
  157. package/dist/procedures/inspecting/report.js +11 -0
  158. package/dist/procedures/inspecting/report.js.map +1 -0
  159. package/dist/procedures/inspecting/rules.d.ts +12 -0
  160. package/dist/procedures/inspecting/rules.js +75 -0
  161. package/dist/procedures/inspecting/rules.js.map +1 -0
  162. package/dist/procedures/proposing/_index.d.ts +4 -0
  163. package/dist/procedures/proposing/_index.js +9 -0
  164. package/dist/procedures/proposing/_index.js.map +1 -0
  165. package/dist/procedures/proposing/context.d.ts +16 -0
  166. package/dist/procedures/proposing/context.js +4 -0
  167. package/dist/procedures/proposing/context.js.map +1 -0
  168. package/dist/procedures/proposing/steps.d.ts +4 -0
  169. package/dist/procedures/proposing/steps.js +46 -0
  170. package/dist/procedures/proposing/steps.js.map +1 -0
  171. package/dist/procedures/versioning/_index.d.ts +16 -0
  172. package/dist/procedures/versioning/_index.js +22 -0
  173. package/dist/procedures/versioning/_index.js.map +1 -0
  174. package/dist/procedures/watching/_index.d.ts +5 -0
  175. package/dist/procedures/watching/_index.js +9 -0
  176. package/dist/procedures/watching/_index.js.map +1 -0
  177. package/dist/procedures/watching/classify.d.ts +5 -0
  178. package/dist/procedures/watching/classify.js +30 -0
  179. package/dist/procedures/watching/classify.js.map +1 -0
  180. package/dist/procedures/watching/context.d.ts +21 -0
  181. package/dist/procedures/watching/context.js +2 -0
  182. package/dist/procedures/watching/context.js.map +1 -0
  183. package/dist/procedures/watching/start.d.ts +2 -0
  184. package/dist/procedures/watching/start.js +24 -0
  185. package/dist/procedures/watching/start.js.map +1 -0
  186. package/dist/procedures/watching/wait.d.ts +2 -0
  187. package/dist/procedures/watching/wait.js +12 -0
  188. package/dist/procedures/watching/wait.js.map +1 -0
  189. package/dist/tools/_index.d.ts +3 -0
  190. package/dist/tools/_index.js +17 -0
  191. package/dist/tools/_index.js.map +1 -0
  192. package/dist/tools/devlog.d.ts +1 -0
  193. package/dist/tools/devlog.js +43 -0
  194. package/dist/tools/devlog.js.map +1 -0
  195. package/dist/tools/flow.d.ts +1 -0
  196. package/dist/tools/flow.js +81 -0
  197. package/dist/tools/flow.js.map +1 -0
  198. package/dist/tools/scope.d.ts +1 -0
  199. package/dist/tools/scope.js +51 -0
  200. package/dist/tools/scope.js.map +1 -0
  201. package/dist/tools/version.d.ts +1 -0
  202. package/dist/tools/version.js +23 -0
  203. package/dist/tools/version.js.map +1 -0
  204. package/dist/tools/workshop.d.ts +1 -0
  205. package/dist/tools/workshop.js +56 -0
  206. package/dist/tools/workshop.js.map +1 -0
  207. package/dist/views/devlog.d.ts +15 -0
  208. package/dist/views/devlog.js +31 -0
  209. package/dist/views/devlog.js.map +1 -0
  210. package/dist/views/event.d.ts +2 -0
  211. package/dist/views/event.js +6 -0
  212. package/dist/views/event.js.map +1 -0
  213. package/dist/views/flow.d.ts +12 -0
  214. package/dist/views/flow.js +26 -0
  215. package/dist/views/flow.js.map +1 -0
  216. package/dist/views/help.d.ts +2 -0
  217. package/dist/views/help.js +22 -0
  218. package/dist/views/help.js.map +1 -0
  219. package/dist/views/status.d.ts +5 -0
  220. package/dist/views/status.js +50 -0
  221. package/dist/views/status.js.map +1 -0
  222. package/package.json +31 -54
  223. package/resources/cli-art/big-logo-title.txt +24 -0
  224. package/resources/cli-art/big-shortcut-logo-title.txt +10 -0
  225. package/resources/cli-art/medium-logo-title.txt +13 -0
  226. package/resources/cli-art/minimenu-header.ptxml +13 -0
  227. package/resources/cli-art/minimenu-header.txt +11 -0
  228. package/resources/cli-art/small-logo-title.txt +10 -0
  229. package/resources/cli-art/wellcome.txt +10 -0
  230. package/resources/docs-templates/Home.md +7 -0
  231. package/resources/docs-templates/README.md +14 -0
  232. package/resources/docs-templates/_Footer.md +1 -0
  233. package/resources/docs-templates/_Sidebar.md +7 -0
  234. package/.claude-plugin/marketplace.json +0 -17
  235. package/.claude-plugin/mcp.json +0 -8
  236. package/.claude-plugin/plugin.json +0 -16
  237. package/AGENTS.md +0 -114
  238. package/CLAUDE.md +0 -1
  239. package/bin/bos +0 -3
  240. package/hooks/hooks.json +0 -40
  241. package/resources/house/HOUSE.md +0 -22
  242. package/resources/house/bloodlines.json +0 -35
  243. package/resources/house/children/deepseeks-of-anubis.json +0 -4
  244. package/resources/house/children/eon.json +0 -7
  245. package/resources/house/children/hermetic-officer.json +0 -1
  246. package/resources/house/children/ifrit.json +0 -1
  247. package/resources/house/children/license-keepers.json +0 -4
  248. package/resources/house/children/sebas.json +0 -10
  249. package/resources/house/children/shakespeare.json +0 -10
  250. package/resources/house/orders/ravensarmy.json +0 -6
  251. package/resources/house/orders/seiaic-ucdi.json +0 -5
  252. package/resources/ravens/skryba.md +0 -19
  253. package/resources/workshop-root/AGENTS.md +0 -92
  254. package/resources/workshop-root/CLAUDE.md +0 -1
  255. package/resources/workshop.default.json +0 -6
  256. package/skills/bos-archive/SKILL.md +0 -28
  257. package/skills/bos-craftbook/SKILL.md +0 -32
  258. package/skills/bos-craftset/SKILL.md +0 -36
  259. package/skills/bos-devarmory/SKILL.md +0 -34
  260. package/skills/bos-exhibit/SKILL.md +0 -28
  261. package/skills/bos-forge/SKILL.md +0 -28
  262. package/skills/bos-house/SKILL.md +0 -52
  263. package/skills/bos-project/SKILL.md +0 -27
  264. package/skills/bos-sarcophag/SKILL.md +0 -26
  265. package/skills/bos-scope/SKILL.md +0 -33
  266. package/skills/bos-sheme/SKILL.md +0 -38
  267. package/skills/bos-throwbox/SKILL.md +0 -27
  268. package/skills/bos-workshop/SKILL.md +0 -65
  269. package/skills/bos-workshop/assets/.gitkeep +0 -0
  270. package/skills/bos-workshop/references/bos-codebase.md +0 -116
  271. package/skills/bos-workshop/references/bos-concept.md +0 -121
  272. package/skills/bos-workshop/scripts/find-workshop.sh +0 -30
  273. package/src/agent-hook.mjs +0 -28
  274. package/src/bridge/_index.mjs +0 -24
  275. package/src/bridge/bos-instances-link/_index.mjs +0 -18
  276. package/src/bridge/docker-host/_index.mjs +0 -43
  277. package/src/bridge/docker-host/container.mjs +0 -32
  278. package/src/bridge/docker-host/image.mjs +0 -23
  279. package/src/bridge/docker-host/volume.mjs +0 -12
  280. package/src/bridge/docker-publish/_index.mjs +0 -24
  281. package/src/bridge/git-client/_index.mjs +0 -121
  282. package/src/bridge/git-client/author.mjs +0 -26
  283. package/src/bridge/gitea-api/_index.mjs +0 -62
  284. package/src/bridge/github-api/_index.mjs +0 -45
  285. package/src/bridge/npm-publish/_index.mjs +0 -19
  286. package/src/bridge/ollama-link/_index.mjs +0 -93
  287. package/src/bridge/ollama-link/ravens.mjs +0 -29
  288. package/src/bridge/ssh-link/_index.mjs +0 -33
  289. package/src/bridge/subprocess-runner/_index.mjs +0 -33
  290. package/src/cli.mjs +0 -29
  291. package/src/commands/_index.mjs +0 -51
  292. package/src/commands/bootstrap/exec.mjs +0 -7
  293. package/src/commands/bootstrap/help.md +0 -5
  294. package/src/commands/bootstrap/index.json +0 -7
  295. package/src/commands/close/exec.mjs +0 -4
  296. package/src/commands/close/help.md +0 -5
  297. package/src/commands/close/index.json +0 -7
  298. package/src/commands/describe/exec.mjs +0 -11
  299. package/src/commands/describe/help.md +0 -5
  300. package/src/commands/describe/index.json +0 -7
  301. package/src/commands/help/exec.mjs +0 -6
  302. package/src/commands/help/help.md +0 -3
  303. package/src/commands/help/index.json +0 -6
  304. package/src/commands/hook/exec.mjs +0 -3
  305. package/src/commands/hook/help.md +0 -4
  306. package/src/commands/hook/index.json +0 -7
  307. package/src/commands/hooks/exec.mjs +0 -5
  308. package/src/commands/hooks/help.md +0 -4
  309. package/src/commands/hooks/index.json +0 -7
  310. package/src/commands/house/exec.mjs +0 -8
  311. package/src/commands/house/help.md +0 -8
  312. package/src/commands/house/index.json +0 -7
  313. package/src/commands/locate/exec.mjs +0 -2
  314. package/src/commands/locate/help.md +0 -6
  315. package/src/commands/locate/index.json +0 -6
  316. package/src/commands/mode/exec.mjs +0 -17
  317. package/src/commands/mode/help.md +0 -14
  318. package/src/commands/mode/index.json +0 -8
  319. package/src/commands/mode/repl.mjs +0 -18
  320. package/src/commands/open/exec.mjs +0 -5
  321. package/src/commands/open/help.md +0 -4
  322. package/src/commands/open/index.json +0 -7
  323. package/src/commands/promote/exec.mjs +0 -5
  324. package/src/commands/promote/help.md +0 -6
  325. package/src/commands/promote/index.json +0 -7
  326. package/src/commands/repl/exec.mjs +0 -3
  327. package/src/commands/repl/help.md +0 -4
  328. package/src/commands/repl/index.json +0 -6
  329. package/src/commands/seal/exec.mjs +0 -8
  330. package/src/commands/seal/help.md +0 -4
  331. package/src/commands/seal/index.json +0 -7
  332. package/src/commands/sink/exec.mjs +0 -2
  333. package/src/commands/sink/help.md +0 -6
  334. package/src/commands/sink/index.json +0 -7
  335. package/src/commands/skills/exec.mjs +0 -5
  336. package/src/commands/skills/help.md +0 -5
  337. package/src/commands/skills/index.json +0 -7
  338. package/src/commands/status/exec.mjs +0 -2
  339. package/src/commands/status/help.md +0 -6
  340. package/src/commands/status/index.json +0 -7
  341. package/src/commands/status/repl.mjs +0 -14
  342. package/src/commands/verify/exec.mjs +0 -9
  343. package/src/commands/verify/help.md +0 -4
  344. package/src/commands/verify/index.json +0 -7
  345. package/src/controllers/_index.mjs +0 -5
  346. package/src/controllers/skills-controll.mjs +0 -13
  347. package/src/controllers/workshop-controll.mjs +0 -48
  348. package/src/core/basic-bridge.mjs +0 -29
  349. package/src/core/basic-controll.mjs +0 -26
  350. package/src/core/basic-element.mjs +0 -149
  351. package/src/core/basic-model.mjs +0 -7
  352. package/src/core/basic-procedure.mjs +0 -37
  353. package/src/core/basic-submodule.mjs +0 -21
  354. package/src/core/basic-view.mjs +0 -21
  355. package/src/core/self.mjs +0 -10
  356. package/src/index.mjs +0 -24
  357. package/src/main.ts +0 -82
  358. package/src/mcp.mjs +0 -8
  359. package/src/models/_index.mjs +0 -43
  360. package/src/models/archive/class.mjs +0 -9
  361. package/src/models/craftbook/class.mjs +0 -11
  362. package/src/models/craftbook/hang.scrapnotes.mjs +0 -10
  363. package/src/models/craftset/class.mjs +0 -14
  364. package/src/models/devarmory/class.mjs +0 -10
  365. package/src/models/exhibit/class.mjs +0 -8
  366. package/src/models/forge/class.mjs +0 -19
  367. package/src/models/house/bloodlines.mjs +0 -27
  368. package/src/models/house/class.mjs +0 -53
  369. package/src/models/house/groups.mjs +0 -38
  370. package/src/models/project/anatomy.mjs +0 -11
  371. package/src/models/project/class.mjs +0 -20
  372. package/src/models/sarcophag/class.mjs +0 -8
  373. package/src/models/scope/class.mjs +0 -19
  374. package/src/models/sheme/class.mjs +0 -8
  375. package/src/models/throwbox/class.mjs +0 -9
  376. package/src/models/workshop/class.mjs +0 -30
  377. package/src/models/workshop/hang.data.mjs +0 -10
  378. package/src/models/workshop/hang.nests.mjs +0 -14
  379. package/src/models/workshop/hang.setup.mjs +0 -10
  380. package/src/models/workshop/hang.storylines.logs.mjs +0 -10
  381. package/src/models/workshop/hang.storylines.manifests.mjs +0 -10
  382. package/src/models/workshop/hang.storylines.mjs +0 -39
  383. package/src/models/workshop/hang.storylines.ttystories.mjs +0 -10
  384. package/src/models/workshop/hang.system.mjs +0 -25
  385. package/src/models/workshop/host-roles.mjs +0 -9
  386. package/src/models/workshop/locate.mjs +0 -60
  387. package/src/models/workshop/modes.mjs +0 -31
  388. package/src/models/workshop/taskfile.mjs +0 -21
  389. package/src/procedures/_index.mjs +0 -32
  390. package/src/procedures/agent-recording/_index.mjs +0 -34
  391. package/src/procedures/agent-recording/situate.mjs +0 -11
  392. package/src/procedures/bootstrapping/DESCRIPTION.md +0 -6
  393. package/src/procedures/bootstrapping/_index.mjs +0 -13
  394. package/src/procedures/bootstrapping/deploy-guides.mjs +0 -15
  395. package/src/procedures/bootstrapping/ensure-tree.mjs +0 -4
  396. package/src/procedures/closing/DESCRIPTION.md +0 -6
  397. package/src/procedures/closing/_index.mjs +0 -11
  398. package/src/procedures/closing/capture-ttystory.mjs +0 -14
  399. package/src/procedures/closing/record-closing.mjs +0 -6
  400. package/src/procedures/describing/DESCRIPTION.md +0 -23
  401. package/src/procedures/describing/_index.mjs +0 -15
  402. package/src/procedures/describing/ask-skryba.mjs +0 -82
  403. package/src/procedures/describing/compose-message.mjs +0 -25
  404. package/src/procedures/describing/read-staged.mjs +0 -7
  405. package/src/procedures/describing/scopes.mjs +0 -38
  406. package/src/procedures/describing/staged-diff.mjs +0 -25
  407. package/src/procedures/describing/write-message.mjs +0 -15
  408. package/src/procedures/gathering/DESCRIPTION.md +0 -13
  409. package/src/procedures/gathering/_index.mjs +0 -13
  410. package/src/procedures/gathering/list-served.mjs +0 -9
  411. package/src/procedures/gathering/merge-residents.mjs +0 -31
  412. package/src/procedures/gathering/read-registry.mjs +0 -7
  413. package/src/procedures/hooking/DESCRIPTION.md +0 -6
  414. package/src/procedures/hooking/_index.mjs +0 -12
  415. package/src/procedures/hooking/hooks.mjs +0 -10
  416. package/src/procedures/hooking/install-hooks.mjs +0 -34
  417. package/src/procedures/hooking/record-hook.mjs +0 -13
  418. package/src/procedures/inspecting/DESCRIPTION.md +0 -3
  419. package/src/procedures/inspecting/_index.mjs +0 -9
  420. package/src/procedures/loading/DESCRIPTION.md +0 -4
  421. package/src/procedures/loading/_index.mjs +0 -15
  422. package/src/procedures/loading/load-config.mjs +0 -16
  423. package/src/procedures/loading/validate-mode.mjs +0 -8
  424. package/src/procedures/loading/validate-role.mjs +0 -8
  425. package/src/procedures/locating/DESCRIPTION.md +0 -6
  426. package/src/procedures/locating/_index.mjs +0 -13
  427. package/src/procedures/locating/locate-self.mjs +0 -7
  428. package/src/procedures/locating/locate-workshop.mjs +0 -16
  429. package/src/procedures/locating/read-environment.mjs +0 -12
  430. package/src/procedures/mode-switching/DESCRIPTION.md +0 -7
  431. package/src/procedures/mode-switching/_index.mjs +0 -10
  432. package/src/procedures/mode-switching/record-mode.mjs +0 -8
  433. package/src/procedures/mode-switching/switch-mode.mjs +0 -16
  434. package/src/procedures/opening/DESCRIPTION.md +0 -6
  435. package/src/procedures/opening/_index.mjs +0 -8
  436. package/src/procedures/opening/record-opening.mjs +0 -4
  437. package/src/procedures/promoting/DESCRIPTION.md +0 -8
  438. package/src/procedures/promoting/_index.mjs +0 -14
  439. package/src/procedures/promoting/apply.mjs +0 -28
  440. package/src/procedures/promoting/branch-flow.mjs +0 -23
  441. package/src/procedures/promoting/plan.mjs +0 -14
  442. package/src/procedures/promoting/read-position.mjs +0 -15
  443. package/src/procedures/sinking/DESCRIPTION.md +0 -8
  444. package/src/procedures/sinking/_index.mjs +0 -12
  445. package/src/procedures/sinking/inventory-forge.mjs +0 -18
  446. package/src/procedures/sinking/inventory-tools.mjs +0 -7
  447. package/src/procedures/skilling/DESCRIPTION.md +0 -11
  448. package/src/procedures/skilling/_index.mjs +0 -15
  449. package/src/procedures/skilling/collect-models.mjs +0 -15
  450. package/src/procedures/skilling/compose-skill.mjs +0 -49
  451. package/src/procedures/skilling/glossary.mjs +0 -23
  452. package/src/procedures/skilling/register-skills.mjs +0 -21
  453. package/src/procedures/skilling/write-skills.mjs +0 -19
  454. package/src/views/_index.mjs +0 -23
  455. package/src/views/agent/_index.mjs +0 -2
  456. package/src/views/agent/brief.mjs +0 -34
  457. package/src/views/help/_index.mjs +0 -41
  458. package/src/views/house/_index.mjs +0 -56
  459. package/src/views/inventory/_index.mjs +0 -27
  460. package/src/views/mcp/_index.mjs +0 -31
  461. package/src/views/mcp/tools.mjs +0 -87
  462. package/src/views/mode/_index.mjs +0 -34
  463. package/src/views/mode/chooser.mjs +0 -37
  464. package/src/views/promotion/_index.mjs +0 -20
  465. package/src/views/repl/_index.mjs +0 -30
  466. package/src/views/skills/_index.mjs +0 -24
  467. package/src/views/status/_index.mjs +0 -57
  468. package/src/views/status/tree.mjs +0 -19
  469. package/src/views/terminal/paint.mjs +0 -22
  470. package/template/SKILL.md +0 -16
package/src/main.ts DELETED
@@ -1,82 +0,0 @@
1
- // The spine of BOS: one class that binds the core mechanics together and
2
- // lazily loads the parts. Core classes hang on it as BOS.Bridge, BOS.Model,
3
- // BOS.Submodule…,
4
- // so every part extends them through this one import:
5
- // import { BOS } from "../main.ts"; class DockerHost extends BOS.Bridge {}
6
- import { EventEmitter } from "node:events";
7
-
8
- import { BasicBridge } from "./core/basic-bridge.mjs";
9
- import { BasicControll } from "./core/basic-controll.mjs";
10
- import { BasicModel } from "./core/basic-model.mjs";
11
- import { BasicProcedure } from "./core/basic-procedure.mjs";
12
- import { BasicSubmodule } from "./core/basic-submodule.mjs";
13
- import { BasicView } from "./core/basic-view.mjs";
14
-
15
- type Options = { workshop?: string; dryRun?: boolean; [key: string]: unknown };
16
- // parts are loaded at runtime (bos.load()) and differ per part, so their registries stay open
17
- // biome-ignore lint/suspicious/noExplicitAny: dynamic registries of classes and functions
18
- type Registry = Record<string, any>;
19
-
20
- export class BOS extends EventEmitter {
21
- static Bridge = BasicBridge;
22
- static Controll = BasicControll;
23
- static Model = BasicModel;
24
- static Procedure = BasicProcedure;
25
- static Submodule = BasicSubmodule;
26
- static View = BasicView;
27
-
28
- options: Options;
29
- bridges: Registry = {};
30
- models: Registry = {};
31
- procedures: Registry = {};
32
- controllers: Registry = {};
33
- commands: Registry = {};
34
- views: Registry = {};
35
-
36
- constructor(options: Options = {}) {
37
- super();
38
- this.options = options;
39
- }
40
-
41
- // parts import this file, so they are loaded here on demand, never at import time
42
- async load(): Promise<this> {
43
- const [bridges, models, procedures, controllers, commands, views] = await Promise.all([
44
- import("./bridge/_index.mjs"),
45
- import("./models/_index.mjs"),
46
- import("./procedures/_index.mjs"),
47
- import("./controllers/_index.mjs"),
48
- import("./commands/_index.mjs"),
49
- import("./views/_index.mjs"),
50
- ]);
51
- this.bridges = bridges.default;
52
- this.models = models.default;
53
- this.procedures = procedures.default;
54
- this.controllers = controllers.default;
55
- this.views = views.default;
56
- this.commands = await commands.loadCommands();
57
- this.emit("loaded", this);
58
- return this;
59
- }
60
-
61
- // the workshop as one easy handle: bos.workshop.status(), .open(), .close()…
62
- get workshop() {
63
- return new this.controllers.WorkshopControll(this.options);
64
- }
65
-
66
- // the agent skills of this repository: bos.skills.scaffold()
67
- get skills() {
68
- return new this.controllers.SkillsControll(this.options);
69
- }
70
-
71
- async command(name: string, operands: string[] = [], flags: Options = {}) {
72
- const command = this.commands[name];
73
- if (!command) throw new Error(`unknown command "${name}" (known: ${Object.keys(this.commands).join(", ")})`);
74
- return command.inline({ bos: this, operands, flags: { ...this.options, ...flags } });
75
- }
76
-
77
- toString() {
78
- return `[<Blacksmith_Organization_System::${this.constructor.name}>]`;
79
- }
80
- }
81
-
82
- export default BOS;
package/src/mcp.mjs DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- // bos-mcp: BOS as an MCP server over stdio (Claude Code loads it from .claude-plugin/mcp.json).
3
- // stdout belongs to the protocol: nothing else may print there.
4
- import { BOS } from "./main.ts";
5
- import { startMcpServer } from "./views/mcp/_index.mjs";
6
-
7
- const bos = await new BOS({ workshop: process.env.BOS_WORKSHOP }).load();
8
- await startMcpServer(bos);
@@ -1,43 +0,0 @@
1
- // Models: assets of the working environment that stand on their own, one directory each.
2
- // Submodules: organs that exist only inside their owner (models/<owner>/hang.<name>.mjs).
3
- import Archive from "./archive/class.mjs";
4
- import Craftbook from "./craftbook/class.mjs";
5
- import Scrapnotes from "./craftbook/hang.scrapnotes.mjs";
6
- import Craftset from "./craftset/class.mjs";
7
- import Devarmory from "./devarmory/class.mjs";
8
- import Exhibit from "./exhibit/class.mjs";
9
- import Forge from "./forge/class.mjs";
10
- import House from "./house/class.mjs";
11
- import Project from "./project/class.mjs";
12
- import Sarcophag from "./sarcophag/class.mjs";
13
- import Scope from "./scope/class.mjs";
14
- import Sheme from "./sheme/class.mjs";
15
- import Throwbox from "./throwbox/class.mjs";
16
- import Workshop from "./workshop/class.mjs";
17
- import Data from "./workshop/hang.data.mjs";
18
- import Nests from "./workshop/hang.nests.mjs";
19
- import Setup from "./workshop/hang.setup.mjs";
20
- import Storylines from "./workshop/hang.storylines.mjs";
21
- import System from "./workshop/hang.system.mjs";
22
-
23
- export { HOST_ROLES } from "./workshop/host-roles.mjs";
24
- export * from "./workshop/locate.mjs";
25
- export { MODES, modeByDigit } from "./workshop/modes.mjs";
26
-
27
- export const submodules = { System, Setup, Data, Nests, Storylines, Scrapnotes };
28
-
29
- export default {
30
- Workshop,
31
- Devarmory,
32
- Forge,
33
- Craftbook,
34
- Archive,
35
- Scope,
36
- Project,
37
- Sheme,
38
- Throwbox,
39
- Sarcophag,
40
- Exhibit,
41
- Craftset,
42
- House,
43
- };
@@ -1,9 +0,0 @@
1
- // work at rest: sarcophags, exhibits, mirrors (glossary: archive)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Archive extends BOS.Model {
5
- static type = "archive";
6
- static dirname = "archive";
7
- }
8
-
9
- export default Archive;
@@ -1,11 +0,0 @@
1
- // Knowledge: scrapnotes, craftsets, collections, recipes (glossary: craftbook).
2
- import { BOS } from "../../main.ts";
3
- import Scrapnotes from "./hang.scrapnotes.mjs";
4
-
5
- export class Craftbook extends BOS.Model {
6
- static type = "craftbook";
7
- static dirname = "craftbook";
8
- static submodules = { scrapnotes: Scrapnotes };
9
- }
10
-
11
- export default Craftbook;
@@ -1,10 +0,0 @@
1
- // craftbook/scrapnotes: every note not yet promoted to a document (glossary: scrapnote).
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Scrapnotes extends BOS.Submodule {
5
- static type = "scrapnotes";
6
- static ownerType = "craftbook";
7
- static dirname = "scrapnotes";
8
- }
9
-
10
- export default Scrapnotes;
@@ -1,14 +0,0 @@
1
- // Reusable kit of notes, notebooks, scripts and session setup (glossary: craftset).
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Craftset extends BOS.Model {
5
- static type = "craftset";
6
- static descriptors = {
7
- ".omnis.toml": () => "# [TODO] contents of .omnis.toml are not defined yet\n",
8
- "metadata.json": (element) => ({ name: element.name, created: Date.now() }),
9
- "manifest.json": () => ({ files: {} }),
10
- "Taskfile.yaml": () => "version: '3'\n\ntasks: {}\n",
11
- };
12
- }
13
-
14
- export default Craftset;
@@ -1,10 +0,0 @@
1
- // Tools, listed with checksums so missing or damaged ones can be found (glossary: devarmory).
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Devarmory extends BOS.Model {
5
- static type = "devarmory";
6
- static dirname = "devarmory";
7
- static descriptors = { "manifest.json": () => ({ tools: {}, files: {} }) }; // format still open
8
- }
9
-
10
- export default Devarmory;
@@ -1,8 +0,0 @@
1
- // view built from sarcophags (glossary: exhibit)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Exhibit extends BOS.Model {
5
- static type = "exhibit";
6
- }
7
-
8
- export default Exhibit;
@@ -1,19 +0,0 @@
1
- // Active work, the desk: scopes of projects (glossary: forge).
2
- import { readdirSync } from "node:fs";
3
-
4
- import { BOS } from "../../main.ts";
5
- import Scope from "../scope/class.mjs";
6
-
7
- export class Forge extends BOS.Model {
8
- static type = "forge";
9
- static dirname = "forge";
10
-
11
- scopes() {
12
- if (!this.exists()) return [];
13
- return readdirSync(this.path, { withFileTypes: true })
14
- .filter((entry) => entry.isDirectory() && !entry.name.startsWith("."))
15
- .map((entry) => new Scope(this.file(entry.name), this));
16
- }
17
- }
18
-
19
- export default Forge;
@@ -1,27 +0,0 @@
1
- // Bloodline: follow a model's parent_model back to its root; the root names the releaser.
2
- import { existsSync, readFileSync } from "node:fs";
3
-
4
- import { sameModel } from "./groups.mjs";
5
-
6
- export function readReleasers(path) {
7
- return existsSync(path) ? JSON.parse(readFileSync(path, "utf8")).releasers : [];
8
- }
9
-
10
- // catalog: [{ name, family, parent }] as ollama lists it; a parent that is a file path ends the chain
11
- export function rootOf(catalog, model) {
12
- const seen = new Set();
13
- let current = catalog.find((entry) => sameModel(entry.name, model));
14
- while (current?.parent && !current.parent.startsWith("/") && !seen.has(current.name)) {
15
- seen.add(current.name);
16
- const parent = catalog.find((entry) => sameModel(entry.name, current.parent));
17
- if (!parent) return { name: current.parent, family: current.family };
18
- current = parent;
19
- }
20
- return current ? { name: current.name, family: current.family } : { name: model, family: null };
21
- }
22
-
23
- export function bloodlineOf(catalog, releasers, model) {
24
- const root = rootOf(catalog, model);
25
- const rule = releasers.find(({ match }) => root.name.toLowerCase().replace(/^.*\//, "").startsWith(match));
26
- return { root: root.name, releaser: rule?.releaser ?? (root.family ? `${root.family} (architecture)` : "unknown") };
27
- }
@@ -1,53 +0,0 @@
1
- // The House of Anubis (resources/house/): bloodlines derived from what ollama serves,
2
- // children adopted by name, orders with duties. Every call to a resident asks here first.
3
-
4
- import { listRavens } from "../../bridge/ollama-link/ravens.mjs";
5
- import { RESOURCES } from "../../core/self.mjs";
6
- import { BOS } from "../../main.ts";
7
- import { bloodlineOf, readReleasers } from "./bloodlines.mjs";
8
- import { groupOf, readGroups, sameModel } from "./groups.mjs";
9
-
10
- export const STATES = ["active", "resting", "frozen"];
11
-
12
- export class House extends BOS.Model {
13
- static type = "house";
14
-
15
- constructor(path = `${RESOURCES}/house`, parent = null) {
16
- super(path, parent);
17
- }
18
-
19
- children() {
20
- return readGroups(this.file("children"));
21
- }
22
- orders() {
23
- return readGroups(this.file("orders"), listRavens());
24
- }
25
- releasers() {
26
- return readReleasers(this.file("bloodlines.json"));
27
- }
28
-
29
- bloodlineOf(catalog, model) {
30
- return bloodlineOf(catalog, this.releasers(), model);
31
- }
32
-
33
- // a member's own state wins over its group's; a resident nobody adopted is active
34
- stateOf(model) {
35
- for (const group of [...this.children(), ...this.orders()]) {
36
- if (groupOf([group], model)) {
37
- const member = group.members.find((m) => m.model && sameModel(m.model, model));
38
- return {
39
- state: member?.state ?? group.state,
40
- group: group.name,
41
- reason: member?.reason ?? group.reason ?? null,
42
- };
43
- }
44
- }
45
- return { state: "active", group: null, reason: null };
46
- }
47
-
48
- mayCall(model) {
49
- return this.stateOf(model).state === "active";
50
- }
51
- }
52
-
53
- export default House;
@@ -1,38 +0,0 @@
1
- // Children (adopted by name) and orders (duties): one JSON file per group,
2
- // with explicit members and/or name patterns that claim served models.
3
- import { existsSync, readdirSync, readFileSync } from "node:fs";
4
- import { basename, join } from "node:path";
5
-
6
- // "tulu3:latest" and "tulu3" are the same resident
7
- export const sameModel = (a, b) =>
8
- a?.replace(/:latest$/i, "").toLowerCase() === b?.replace(/:latest$/i, "").toLowerCase();
9
-
10
- export function readGroups(dir, ravens = []) {
11
- if (!existsSync(dir)) return [];
12
- return readdirSync(dir)
13
- .filter((file) => file.endsWith(".json"))
14
- .sort()
15
- .map((file) => {
16
- const group = {
17
- name: basename(file, ".json"),
18
- state: "active",
19
- patterns: [],
20
- members: [],
21
- ...JSON.parse(readFileSync(join(dir, file), "utf8")),
22
- };
23
- const fromRavens = group.fromRavens
24
- ? ravens.map((raven) => ({ name: raven.name, model: raven.model, duty: raven.duty }))
25
- : [];
26
- group.members = [...fromRavens, ...group.members].map((member) => ({
27
- kind: member.model ? "local" : "remote",
28
- ...member,
29
- }));
30
- return group;
31
- });
32
- }
33
-
34
- const claims = (group, model) =>
35
- group.members.some((member) => member.model && sameModel(member.model, model)) ||
36
- group.patterns.some((pattern) => model.toLowerCase().includes(pattern.toLowerCase()));
37
-
38
- export const groupOf = (groups, model) => groups.find((group) => claims(group, model ?? ""));
@@ -1,11 +0,0 @@
1
- // What every project carries (glossary: project → Anatomy).
2
- export const ANATOMY = {
3
- "README.md": "what it is and how to use it",
4
- LICENSE: "terms of use",
5
- "AGENTS.md": "instructions for AI agents (CLAUDE.md imports it)",
6
- "Taskfile.yml": "procedures: build, test, run",
7
- src: "source code",
8
- docs: "documentation",
9
- tests: "tests",
10
- ".github": "community files and CI workflows",
11
- };
@@ -1,20 +0,0 @@
1
- // One concrete project repository (glossary: project).
2
- import { existsSync } from "node:fs";
3
-
4
- import { BOS } from "../../main.ts";
5
- import { ANATOMY } from "./anatomy.mjs";
6
-
7
- export class Project extends BOS.Model {
8
- static type = "project";
9
- static anatomy = ANATOMY;
10
-
11
- anatomyCheck() {
12
- const parts = Object.keys(ANATOMY);
13
- return {
14
- present: parts.filter((part) => existsSync(this.file(part))),
15
- missing: parts.filter((part) => !existsSync(this.file(part))),
16
- };
17
- }
18
- }
19
-
20
- export default Project;
@@ -1,8 +0,0 @@
1
- // encrypted container holding one bare repository (glossary: sarcophag)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Sarcophag extends BOS.Model {
5
- static type = "sarcophag";
6
- }
7
-
8
- export default Sarcophag;
@@ -1,19 +0,0 @@
1
- // A private repository holding a family of projects, shemes and one throwbox (glossary: scope).
2
- import { existsSync, readdirSync } from "node:fs";
3
-
4
- import { BOS } from "../../main.ts";
5
- import Project from "../project/class.mjs";
6
-
7
- export class Scope extends BOS.Model {
8
- static type = "scope";
9
-
10
- // every directory inside that is a git repository counts as a project
11
- projects() {
12
- if (!this.exists()) return [];
13
- return readdirSync(this.path, { withFileTypes: true })
14
- .filter((entry) => entry.isDirectory() && existsSync(this.file(entry.name, ".git")))
15
- .map((entry) => new Project(this.file(entry.name), this));
16
- }
17
- }
18
-
19
- export default Scope;
@@ -1,8 +0,0 @@
1
- // source material that isn't code: graphics, CAD, photos, templates (glossary: sheme)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Sheme extends BOS.Model {
5
- static type = "sheme";
6
- }
7
-
8
- export default Sheme;
@@ -1,9 +0,0 @@
1
- // Collector of loose files of one scope; swept on close (glossary: throwbox).
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Throwbox extends BOS.Model {
5
- static type = "throwbox";
6
- static dirname = "throwbox";
7
- }
8
-
9
- export default Throwbox;
@@ -1,30 +0,0 @@
1
- // The workshop: root of crafting on a host or partition (glossary: workshop).
2
- // Areas are models (they hold assets); .BOS internals are submodules hanging on it.
3
- import { BOS } from "../../main.ts";
4
- import Archive from "../archive/class.mjs";
5
- import Craftbook from "../craftbook/class.mjs";
6
- import Devarmory from "../devarmory/class.mjs";
7
- import Forge from "../forge/class.mjs";
8
- import Data from "./hang.data.mjs";
9
- import Nests from "./hang.nests.mjs";
10
- import Setup from "./hang.setup.mjs";
11
- import Storylines from "./hang.storylines.mjs";
12
- import System from "./hang.system.mjs";
13
- import { placeOf, WORKSHOP_DIRNAME } from "./locate.mjs";
14
-
15
- export class Workshop extends BOS.Model {
16
- static type = "workshop";
17
- static dirname = WORKSHOP_DIRNAME;
18
- static submodules = { system: System, setup: Setup, data: Data, nests: Nests, storylines: Storylines };
19
- static children = [Devarmory, Forge, Craftbook, Archive];
20
-
21
- get forge() {
22
- return new Forge(this.file(Forge.dirname), this);
23
- }
24
-
25
- placeOf(path) {
26
- return placeOf(path, this.path);
27
- }
28
- }
29
-
30
- export default Workshop;
@@ -1,10 +0,0 @@
1
- // .BOS/data: data BOS works from, e.g. <pack>.gitlist (glossary: data)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Data extends BOS.Submodule {
5
- static type = "data";
6
- static ownerType = "workshop";
7
- static dirname = ".BOS/data";
8
- }
9
-
10
- export default Data;
@@ -1,14 +0,0 @@
1
- // .BOS/nests: volumes and disks of containers and VMs, always indexed and guarded (glossary: nestrelm).
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Nests extends BOS.Submodule {
5
- static type = "nestrelm";
6
- static ownerType = "workshop";
7
- static dirname = ".BOS/nests";
8
- static descriptors = {
9
- ".index.json": () => ({ nests: {} }),
10
- ".manifest.json": () => ({ files: {} }),
11
- };
12
- }
13
-
14
- export default Nests;
@@ -1,10 +0,0 @@
1
- // .BOS/setup: access and connectivity: keys, VPN, routing, aliases, tokens, setternet (glossary: setup)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Setup extends BOS.Submodule {
5
- static type = "setup";
6
- static ownerType = "workshop";
7
- static dirname = ".BOS/setup";
8
- }
9
-
10
- export default Setup;
@@ -1,10 +0,0 @@
1
- // .BOS/storylines/logs (glossary: storylines)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Logs extends BOS.Submodule {
5
- static type = "logs";
6
- static ownerType = "storylines";
7
- static dirname = "logs";
8
- }
9
-
10
- export default Logs;
@@ -1,10 +0,0 @@
1
- // .BOS/storylines/manifests (glossary: storylines)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Manifests extends BOS.Submodule {
5
- static type = "manifests";
6
- static ownerType = "storylines";
7
- static dirname = "manifests";
8
- }
9
-
10
- export default Manifests;
@@ -1,39 +0,0 @@
1
- // .BOS/storylines: records of what happened (glossary: storylines).
2
- // Not needed to launch; appears with the first recorded event.
3
- import { appendFileSync } from "node:fs";
4
-
5
- import { BOS } from "../../main.ts";
6
- import Logs from "./hang.storylines.logs.mjs";
7
- import Manifests from "./hang.storylines.manifests.mjs";
8
- import Ttystories from "./hang.storylines.ttystories.mjs";
9
-
10
- export class Storylines extends BOS.Submodule {
11
- static type = "storylines";
12
- static ownerType = "workshop";
13
- static dirname = ".BOS/storylines";
14
- static mandatory = false;
15
- static submodules = { ttystories: Ttystories, logs: Logs, manifests: Manifests };
16
- static descriptors = {
17
- "metadata.json": (_element, context) => ({
18
- origin: {
19
- host: context.env?.host ?? null,
20
- user: context.env?.user ?? null,
21
- unixusat: context.env?.unixusat ?? Date.now(),
22
- createdBy: "blacksmith-organization-system",
23
- },
24
- }),
25
- };
26
-
27
- // one JSON line per event: opening, closing, git hooks…
28
- record(event, context = {}) {
29
- const entry = { unixusat: Date.now(), host: context.env?.host ?? null, ...event };
30
- if (!context.dryRun) appendFileSync(this.logs.file("workshop.jsonl"), `${JSON.stringify(entry)}\n`);
31
- return entry;
32
- }
33
-
34
- ttystoryName({ env }) {
35
- return `ttystory-${env.host}-${env.unixusat}.txt`;
36
- }
37
- }
38
-
39
- export default Storylines;
@@ -1,10 +0,0 @@
1
- // .BOS/storylines/ttystories (glossary: storylines)
2
- import { BOS } from "../../main.ts";
3
-
4
- export class Ttystories extends BOS.Submodule {
5
- static type = "ttystories";
6
- static ownerType = "storylines";
7
- static dirname = "ttystories";
8
- }
9
-
10
- export default Ttystories;
@@ -1,25 +0,0 @@
1
- // .BOS: the folder where BOS keeps itself inside a workshop (glossary: system).
2
- // Its contents hang on the workshop directly: workshop.setup, workshop.storylines…
3
- import { writeFileSync } from "node:fs";
4
-
5
- import { BOS } from "../../main.ts";
6
- import { workshopTaskfile } from "./taskfile.mjs";
7
-
8
- export class System extends BOS.Submodule {
9
- static type = "system";
10
- static ownerType = "workshop";
11
- static dirname = ".BOS";
12
- static descriptors = {
13
- "workshop.json": (_element, context) => context.config ?? {},
14
- "Taskfile.yaml": workshopTaskfile,
15
- };
16
-
17
- // change some fields of workshop.json, keep every other one
18
- update(fields, context = {}) {
19
- const next = { ...this.readJSON("workshop.json", {}), ...fields };
20
- if (!context.dryRun) writeFileSync(this.file("workshop.json"), `${JSON.stringify(next, null, 2)}\n`);
21
- return next;
22
- }
23
- }
24
-
25
- export default System;
@@ -1,9 +0,0 @@
1
- // What a workshop makes its host in the setternet (glossary: host-role).
2
- export const HOST_ROLES = {
3
- "masters-outpost": "remote management of every BOS host in the setternet (Posterunek Mistrza)",
4
- "forging-point": "development, compilation and similar work (Punkt Kuźniczy)",
5
- "trial-hall": "virtual machines and testing (Sala Prób)",
6
- "market-stall": "publication only: automatic posts and announcements (Kram Targowy)",
7
- "canon-monolith": "the one master archive of all projects (Monolit Kanonu)",
8
- "side-catacomb": "archive dedicated to one function (Katakumb Poboczny)",
9
- };