@ibgib/web-gib 0.0.1

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 (372) hide show
  1. package/.ibgibignore +30 -0
  2. package/.vscode/ibgib-snippets.code-snippets +309 -0
  3. package/.vscode/launch.json +25 -0
  4. package/.vscode/settings.json +68 -0
  5. package/.vscode/tasks.json +38 -0
  6. package/CHANGELOG.md +427 -0
  7. package/README.md +66 -0
  8. package/dist/agent-texts/common-agent-texts.d.mts +14 -0
  9. package/dist/agent-texts/common-agent-texts.d.mts.map +1 -0
  10. package/dist/agent-texts/common-agent-texts.mjs +51 -0
  11. package/dist/agent-texts/common-agent-texts.mjs.map +1 -0
  12. package/dist/agent-texts/primary-agent-texts.d.mts +16 -0
  13. package/dist/agent-texts/primary-agent-texts.d.mts.map +1 -0
  14. package/dist/agent-texts/primary-agent-texts.mjs +27 -0
  15. package/dist/agent-texts/primary-agent-texts.mjs.map +1 -0
  16. package/dist/agent-texts/project-agent-texts.d.mts +8 -0
  17. package/dist/agent-texts/project-agent-texts.d.mts.map +1 -0
  18. package/dist/agent-texts/project-agent-texts.mjs +29 -0
  19. package/dist/agent-texts/project-agent-texts.mjs.map +1 -0
  20. package/dist/agent-texts/project-child-text-agent-texts.d.mts +5 -0
  21. package/dist/agent-texts/project-child-text-agent-texts.d.mts.map +1 -0
  22. package/dist/agent-texts/project-child-text-agent-texts.mjs +26 -0
  23. package/dist/agent-texts/project-child-text-agent-texts.mjs.map +1 -0
  24. package/dist/agent-texts/projects-agent-texts.d.mts +4 -0
  25. package/dist/agent-texts/projects-agent-texts.d.mts.map +1 -0
  26. package/dist/agent-texts/projects-agent-texts.mjs +15 -0
  27. package/dist/agent-texts/projects-agent-texts.mjs.map +1 -0
  28. package/dist/agent-texts/raw-agent-texts.d.mts +4 -0
  29. package/dist/agent-texts/raw-agent-texts.d.mts.map +1 -0
  30. package/dist/agent-texts/raw-agent-texts.mjs +17 -0
  31. package/dist/agent-texts/raw-agent-texts.mjs.map +1 -0
  32. package/dist/agent-texts/text-editor-agent-texts.d.mts +6 -0
  33. package/dist/agent-texts/text-editor-agent-texts.d.mts.map +1 -0
  34. package/dist/agent-texts/text-editor-agent-texts.mjs +19 -0
  35. package/dist/agent-texts/text-editor-agent-texts.mjs.map +1 -0
  36. package/dist/api/api-constants.d.mts +9 -0
  37. package/dist/api/api-constants.d.mts.map +1 -0
  38. package/dist/api/api-constants.mjs +9 -0
  39. package/dist/api/api-constants.mjs.map +1 -0
  40. package/dist/api/api-index.d.mts +10 -0
  41. package/dist/api/api-index.d.mts.map +1 -0
  42. package/dist/api/api-index.mjs +121 -0
  43. package/dist/api/api-index.mjs.map +1 -0
  44. package/dist/api/api-types.d.mts +36 -0
  45. package/dist/api/api-types.d.mts.map +1 -0
  46. package/dist/api/api-types.mjs +2 -0
  47. package/dist/api/api-types.mjs.map +1 -0
  48. package/dist/api/commands/chat/chat-index.d.mts +3 -0
  49. package/dist/api/commands/chat/chat-index.d.mts.map +1 -0
  50. package/dist/api/commands/chat/chat-index.mjs +9 -0
  51. package/dist/api/commands/chat/chat-index.mjs.map +1 -0
  52. package/dist/api/commands/chat/get-context-info.d.mts +71 -0
  53. package/dist/api/commands/chat/get-context-info.d.mts.map +1 -0
  54. package/dist/api/commands/chat/get-context-info.mjs +130 -0
  55. package/dist/api/commands/chat/get-context-info.mjs.map +1 -0
  56. package/dist/api/commands/chat/hello-world.d.mts +63 -0
  57. package/dist/api/commands/chat/hello-world.d.mts.map +1 -0
  58. package/dist/api/commands/chat/hello-world.mjs +132 -0
  59. package/dist/api/commands/chat/hello-world.mjs.map +1 -0
  60. package/dist/api/commands/chat/tell-user.d.mts +57 -0
  61. package/dist/api/commands/chat/tell-user.d.mts.map +1 -0
  62. package/dist/api/commands/chat/tell-user.mjs +199 -0
  63. package/dist/api/commands/chat/tell-user.mjs.map +1 -0
  64. package/dist/api/commands/command-constants.d.mts +22 -0
  65. package/dist/api/commands/command-constants.d.mts.map +1 -0
  66. package/dist/api/commands/command-constants.mjs +17 -0
  67. package/dist/api/commands/command-constants.mjs.map +1 -0
  68. package/dist/api/commands/command-helpers.d.mts +47 -0
  69. package/dist/api/commands/command-helpers.d.mts.map +1 -0
  70. package/dist/api/commands/command-helpers.mjs +76 -0
  71. package/dist/api/commands/command-helpers.mjs.map +1 -0
  72. package/dist/api/commands/command-service-v1.d.mts +28 -0
  73. package/dist/api/commands/command-service-v1.d.mts.map +1 -0
  74. package/dist/api/commands/command-service-v1.mjs +122 -0
  75. package/dist/api/commands/command-service-v1.mjs.map +1 -0
  76. package/dist/api/commands/command-service.respec.d.mts +7 -0
  77. package/dist/api/commands/command-service.respec.d.mts.map +1 -0
  78. package/dist/api/commands/command-service.respec.mjs +66 -0
  79. package/dist/api/commands/command-service.respec.mjs.map +1 -0
  80. package/dist/api/commands/command-types.d.mts +48 -0
  81. package/dist/api/commands/command-types.d.mts.map +1 -0
  82. package/dist/api/commands/command-types.mjs +12 -0
  83. package/dist/api/commands/command-types.mjs.map +1 -0
  84. package/dist/api/commands/ibgib/get-ibgibs.d.mts +94 -0
  85. package/dist/api/commands/ibgib/get-ibgibs.d.mts.map +1 -0
  86. package/dist/api/commands/ibgib/get-ibgibs.mjs +219 -0
  87. package/dist/api/commands/ibgib/get-ibgibs.mjs.map +1 -0
  88. package/dist/api/commands/ibgib/ibgib-index.d.mts +3 -0
  89. package/dist/api/commands/ibgib/ibgib-index.d.mts.map +1 -0
  90. package/dist/api/commands/ibgib/ibgib-index.mjs +7 -0
  91. package/dist/api/commands/ibgib/ibgib-index.mjs.map +1 -0
  92. package/dist/api/commands/ibgib/mut8-ibgib.d.mts +135 -0
  93. package/dist/api/commands/ibgib/mut8-ibgib.d.mts.map +1 -0
  94. package/dist/api/commands/ibgib/mut8-ibgib.mjs +318 -0
  95. package/dist/api/commands/ibgib/mut8-ibgib.mjs.map +1 -0
  96. package/dist/api/commands/templates/api-function-info.template.d.mts +73 -0
  97. package/dist/api/commands/templates/api-function-info.template.d.mts.map +1 -0
  98. package/dist/api/commands/templates/api-function-info.template.mjs +161 -0
  99. package/dist/api/commands/templates/api-function-info.template.mjs.map +1 -0
  100. package/dist/api/commands/text/text-edit.d.mts +54 -0
  101. package/dist/api/commands/text/text-edit.d.mts.map +1 -0
  102. package/dist/api/commands/text/text-edit.mjs +170 -0
  103. package/dist/api/commands/text/text-edit.mjs.map +1 -0
  104. package/dist/api/commands/text/text-index.d.mts +3 -0
  105. package/dist/api/commands/text/text-index.d.mts.map +1 -0
  106. package/dist/api/commands/text/text-index.mjs +5 -0
  107. package/dist/api/commands/text/text-index.mjs.map +1 -0
  108. package/dist/api/commands/ui/ui-index.d.mts +3 -0
  109. package/dist/api/commands/ui/ui-index.d.mts.map +1 -0
  110. package/dist/api/commands/ui/ui-index.mjs +5 -0
  111. package/dist/api/commands/ui/ui-index.mjs.map +1 -0
  112. package/dist/api/commands/ui/update-css-variables.d.mts +48 -0
  113. package/dist/api/commands/ui/update-css-variables.d.mts.map +1 -0
  114. package/dist/api/commands/ui/update-css-variables.mjs +145 -0
  115. package/dist/api/commands/ui/update-css-variables.mjs.map +1 -0
  116. package/dist/api/function-infos.web.d.mts +15 -0
  117. package/dist/api/function-infos.web.d.mts.map +1 -0
  118. package/dist/api/function-infos.web.mjs +63 -0
  119. package/dist/api/function-infos.web.mjs.map +1 -0
  120. package/dist/assumptions.respec.d.mts +2 -0
  121. package/dist/assumptions.respec.d.mts.map +1 -0
  122. package/dist/assumptions.respec.mjs +41 -0
  123. package/dist/assumptions.respec.mjs.map +1 -0
  124. package/dist/common/project/project-constants.d.mts +38 -0
  125. package/dist/common/project/project-constants.d.mts.map +1 -0
  126. package/dist/common/project/project-constants.mjs +71 -0
  127. package/dist/common/project/project-constants.mjs.map +1 -0
  128. package/dist/common/project/project-helper.d.mts +127 -0
  129. package/dist/common/project/project-helper.d.mts.map +1 -0
  130. package/dist/common/project/project-helper.mjs +683 -0
  131. package/dist/common/project/project-helper.mjs.map +1 -0
  132. package/dist/common/project/project-types.d.mts +91 -0
  133. package/dist/common/project/project-types.d.mts.map +1 -0
  134. package/dist/common/project/project-types.mjs +31 -0
  135. package/dist/common/project/project-types.mjs.map +1 -0
  136. package/dist/common/prompt-functions.web.d.mts +90 -0
  137. package/dist/common/prompt-functions.web.d.mts.map +1 -0
  138. package/dist/common/prompt-functions.web.mjs +426 -0
  139. package/dist/common/prompt-functions.web.mjs.map +1 -0
  140. package/dist/common/settings/settings-constants.d.mts +33 -0
  141. package/dist/common/settings/settings-constants.d.mts.map +1 -0
  142. package/dist/common/settings/settings-constants.mjs +54 -0
  143. package/dist/common/settings/settings-constants.mjs.map +1 -0
  144. package/dist/common/settings/settings-helpers.d.mts +59 -0
  145. package/dist/common/settings/settings-helpers.d.mts.map +1 -0
  146. package/dist/common/settings/settings-helpers.mjs +253 -0
  147. package/dist/common/settings/settings-helpers.mjs.map +1 -0
  148. package/dist/common/settings/settings-types.d.mts +118 -0
  149. package/dist/common/settings/settings-types.d.mts.map +1 -0
  150. package/dist/common/settings/settings-types.mjs +13 -0
  151. package/dist/common/settings/settings-types.mjs.map +1 -0
  152. package/dist/constants.d.mts +34 -0
  153. package/dist/constants.d.mts.map +1 -0
  154. package/dist/constants.mjs +35 -0
  155. package/dist/constants.mjs.map +1 -0
  156. package/dist/foo.d.mts +2 -0
  157. package/dist/foo.d.mts.map +1 -0
  158. package/dist/foo.mjs +19 -0
  159. package/dist/foo.mjs.map +1 -0
  160. package/dist/helpers.d.mts +137 -0
  161. package/dist/helpers.d.mts.map +1 -0
  162. package/dist/helpers.mjs +514 -0
  163. package/dist/helpers.mjs.map +1 -0
  164. package/dist/helpers.web.d.mts +324 -0
  165. package/dist/helpers.web.d.mts.map +1 -0
  166. package/dist/helpers.web.mjs +1133 -0
  167. package/dist/helpers.web.mjs.map +1 -0
  168. package/dist/helpers.web.respec.d.mts +2 -0
  169. package/dist/helpers.web.respec.d.mts.map +1 -0
  170. package/dist/helpers.web.respec.mjs +12 -0
  171. package/dist/helpers.web.respec.mjs.map +1 -0
  172. package/dist/index.d.mts +2 -0
  173. package/dist/index.d.mts.map +1 -0
  174. package/dist/index.mjs +3 -0
  175. package/dist/index.mjs.map +1 -0
  176. package/dist/respec-gib.node.d.mts +2 -0
  177. package/dist/respec-gib.node.d.mts.map +1 -0
  178. package/dist/respec-gib.node.mjs +211 -0
  179. package/dist/respec-gib.node.mjs.map +1 -0
  180. package/dist/spec-helper.node.respec.d.mts +13 -0
  181. package/dist/spec-helper.node.respec.d.mts.map +1 -0
  182. package/dist/spec-helper.node.respec.mjs +50 -0
  183. package/dist/spec-helper.node.respec.mjs.map +1 -0
  184. package/dist/storage/storage-helpers.web.d.mts +108 -0
  185. package/dist/storage/storage-helpers.web.d.mts.map +1 -0
  186. package/dist/storage/storage-helpers.web.mjs +757 -0
  187. package/dist/storage/storage-helpers.web.mjs.map +1 -0
  188. package/dist/storage/storage-types.web.d.mts +30 -0
  189. package/dist/storage/storage-types.web.d.mts.map +1 -0
  190. package/dist/storage/storage-types.web.mjs +2 -0
  191. package/dist/storage/storage-types.web.mjs.map +1 -0
  192. package/dist/types.web.d.mts +42 -0
  193. package/dist/types.web.d.mts.map +1 -0
  194. package/dist/types.web.mjs +2 -0
  195. package/dist/types.web.mjs.map +1 -0
  196. package/dist/ui/component/component-types.d.mts +225 -0
  197. package/dist/ui/component/component-types.d.mts.map +1 -0
  198. package/dist/ui/component/component-types.mjs +2 -0
  199. package/dist/ui/component/component-types.mjs.map +1 -0
  200. package/dist/ui/component/ibgib-component-service.d.mts +70 -0
  201. package/dist/ui/component/ibgib-component-service.d.mts.map +1 -0
  202. package/dist/ui/component/ibgib-component-service.mjs +201 -0
  203. package/dist/ui/component/ibgib-component-service.mjs.map +1 -0
  204. package/dist/ui/component/ibgib-dynamic-component-bases.d.mts +338 -0
  205. package/dist/ui/component/ibgib-dynamic-component-bases.d.mts.map +1 -0
  206. package/dist/ui/component/ibgib-dynamic-component-bases.mjs +1304 -0
  207. package/dist/ui/component/ibgib-dynamic-component-bases.mjs.map +1 -0
  208. package/dist/ui/ui-constants.d.mts +12 -0
  209. package/dist/ui/ui-constants.d.mts.map +1 -0
  210. package/dist/ui/ui-constants.mjs +93 -0
  211. package/dist/ui/ui-constants.mjs.map +1 -0
  212. package/dist/ui/ui-helpers.d.mts +42 -0
  213. package/dist/ui/ui-helpers.d.mts.map +1 -0
  214. package/dist/ui/ui-helpers.mjs +198 -0
  215. package/dist/ui/ui-helpers.mjs.map +1 -0
  216. package/dist/ui/ui-types.d.mts +13 -0
  217. package/dist/ui/ui-types.d.mts.map +1 -0
  218. package/dist/ui/ui-types.mjs +2 -0
  219. package/dist/ui/ui-types.mjs.map +1 -0
  220. package/dist/witness/agent/agent-constants.d.mts +97 -0
  221. package/dist/witness/agent/agent-constants.d.mts.map +1 -0
  222. package/dist/witness/agent/agent-constants.mjs +98 -0
  223. package/dist/witness/agent/agent-constants.mjs.map +1 -0
  224. package/dist/witness/agent/agent-helpers.d.mts +106 -0
  225. package/dist/witness/agent/agent-helpers.d.mts.map +1 -0
  226. package/dist/witness/agent/agent-helpers.mjs +601 -0
  227. package/dist/witness/agent/agent-helpers.mjs.map +1 -0
  228. package/dist/witness/agent/agent-one-file.app.d.mts +2 -0
  229. package/dist/witness/agent/agent-one-file.app.d.mts.map +1 -0
  230. package/dist/witness/agent/agent-one-file.app.mjs +8 -0
  231. package/dist/witness/agent/agent-one-file.app.mjs.map +1 -0
  232. package/dist/witness/agent/agent-one-file.d.mts +478 -0
  233. package/dist/witness/agent/agent-one-file.d.mts.map +1 -0
  234. package/dist/witness/agent/agent-one-file.mjs +1462 -0
  235. package/dist/witness/agent/agent-one-file.mjs.map +1 -0
  236. package/dist/witness/agent/agent-types.d.mts +83 -0
  237. package/dist/witness/agent/agent-types.d.mts.map +1 -0
  238. package/dist/witness/agent/agent-types.mjs +2 -0
  239. package/dist/witness/agent/agent-types.mjs.map +1 -0
  240. package/dist/witness/agent/agents-service-v1.d.mts +99 -0
  241. package/dist/witness/agent/agents-service-v1.d.mts.map +1 -0
  242. package/dist/witness/agent/agents-service-v1.mjs +453 -0
  243. package/dist/witness/agent/agents-service-v1.mjs.map +1 -0
  244. package/dist/witness/agent/function-info/function-info-one-file.d.mts +192 -0
  245. package/dist/witness/agent/function-info/function-info-one-file.d.mts.map +1 -0
  246. package/dist/witness/agent/function-info/function-info-one-file.mjs +192 -0
  247. package/dist/witness/agent/function-info/function-info-one-file.mjs.map +1 -0
  248. package/dist/witness/agent/gemini/agent-witness-gemini-v1.d.mts +51 -0
  249. package/dist/witness/agent/gemini/agent-witness-gemini-v1.d.mts.map +1 -0
  250. package/dist/witness/agent/gemini/agent-witness-gemini-v1.mjs +928 -0
  251. package/dist/witness/agent/gemini/agent-witness-gemini-v1.mjs.map +1 -0
  252. package/dist/witness/agent/gemini/gemini-agent-factory.d.mts +27 -0
  253. package/dist/witness/agent/gemini/gemini-agent-factory.d.mts.map +1 -0
  254. package/dist/witness/agent/gemini/gemini-agent-factory.mjs +144 -0
  255. package/dist/witness/agent/gemini/gemini-agent-factory.mjs.map +1 -0
  256. package/dist/witness/agent/gemini/gemini-constants.d.mts +36 -0
  257. package/dist/witness/agent/gemini/gemini-constants.d.mts.map +1 -0
  258. package/dist/witness/agent/gemini/gemini-constants.mjs +47 -0
  259. package/dist/witness/agent/gemini/gemini-constants.mjs.map +1 -0
  260. package/dist/witness/agent/gemini/gemini-helpers.d.mts +58 -0
  261. package/dist/witness/agent/gemini/gemini-helpers.d.mts.map +1 -0
  262. package/dist/witness/agent/gemini/gemini-helpers.mjs +210 -0
  263. package/dist/witness/agent/gemini/gemini-helpers.mjs.map +1 -0
  264. package/dist/witness/agent/gemini/gemini-types.d.mts +82 -0
  265. package/dist/witness/agent/gemini/gemini-types.d.mts.map +1 -0
  266. package/dist/witness/agent/gemini/gemini-types.mjs +3 -0
  267. package/dist/witness/agent/gemini/gemini-types.mjs.map +1 -0
  268. package/dist/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.d.mts +136 -0
  269. package/dist/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.d.mts.map +1 -0
  270. package/dist/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.mjs +334 -0
  271. package/dist/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.mjs.map +1 -0
  272. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.d.mts +35 -0
  273. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.d.mts.map +1 -0
  274. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.mjs +267 -0
  275. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.mjs.map +1 -0
  276. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace.d.mts +134 -0
  277. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace.d.mts.map +1 -0
  278. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace.mjs +389 -0
  279. package/dist/witness/space/metaspace/metaspace-webspace/metaspace-webspace.mjs.map +1 -0
  280. package/dist/witness/space/web-filesystem-space/web-filesystem-space-constants.d.mts +2 -0
  281. package/dist/witness/space/web-filesystem-space/web-filesystem-space-constants.d.mts.map +1 -0
  282. package/dist/witness/space/web-filesystem-space/web-filesystem-space-constants.mjs +2 -0
  283. package/dist/witness/space/web-filesystem-space/web-filesystem-space-constants.mjs.map +1 -0
  284. package/dist/witness/space/web-filesystem-space/web-filesystem-space-helper.d.mts +104 -0
  285. package/dist/witness/space/web-filesystem-space/web-filesystem-space-helper.d.mts.map +1 -0
  286. package/dist/witness/space/web-filesystem-space/web-filesystem-space-helper.mjs +457 -0
  287. package/dist/witness/space/web-filesystem-space/web-filesystem-space-helper.mjs.map +1 -0
  288. package/dist/witness/space/web-filesystem-space/web-filesystem-space-types.d.mts +93 -0
  289. package/dist/witness/space/web-filesystem-space/web-filesystem-space-types.d.mts.map +1 -0
  290. package/dist/witness/space/web-filesystem-space/web-filesystem-space-types.mjs +98 -0
  291. package/dist/witness/space/web-filesystem-space/web-filesystem-space-types.mjs.map +1 -0
  292. package/dist/witness/space/web-filesystem-space/web-filesystem-space-v1.d.mts +73 -0
  293. package/dist/witness/space/web-filesystem-space/web-filesystem-space-v1.d.mts.map +1 -0
  294. package/dist/witness/space/web-filesystem-space/web-filesystem-space-v1.mjs +650 -0
  295. package/dist/witness/space/web-filesystem-space/web-filesystem-space-v1.mjs.map +1 -0
  296. package/generate-version-file.js +29 -0
  297. package/package.json +60 -0
  298. package/src/agent-texts/common-agent-texts.mts +61 -0
  299. package/src/agent-texts/primary-agent-texts.mts +32 -0
  300. package/src/agent-texts/project-agent-texts.mts +29 -0
  301. package/src/agent-texts/project-child-text-agent-texts.mts +30 -0
  302. package/src/agent-texts/projects-agent-texts.mts +17 -0
  303. package/src/agent-texts/raw-agent-texts.mts +18 -0
  304. package/src/agent-texts/text-editor-agent-texts.mts +20 -0
  305. package/src/api/api-constants.mts +8 -0
  306. package/src/api/api-index.mts +110 -0
  307. package/src/api/api-types.mts +36 -0
  308. package/src/api/commands/chat/chat-index.mts +10 -0
  309. package/src/api/commands/chat/get-context-info.mts +196 -0
  310. package/src/api/commands/chat/hello-world.mts +183 -0
  311. package/src/api/commands/chat/tell-user.mts +241 -0
  312. package/src/api/commands/command-constants.mts +17 -0
  313. package/src/api/commands/command-helpers.mts +105 -0
  314. package/src/api/commands/command-service-v1.mts +136 -0
  315. package/src/api/commands/command-service.respec.mts +72 -0
  316. package/src/api/commands/command-types.mts +71 -0
  317. package/src/api/commands/ibgib/get-ibgibs.mts +269 -0
  318. package/src/api/commands/ibgib/ibgib-index.mts +8 -0
  319. package/src/api/commands/ibgib/mut8-ibgib.mts +418 -0
  320. package/src/api/commands/templates/api-function-info.template.mts +212 -0
  321. package/src/api/commands/text/text-edit.mts +217 -0
  322. package/src/api/commands/text/text-index.mts +6 -0
  323. package/src/api/commands/ui/ui-index.mts +6 -0
  324. package/src/api/commands/ui/update-css-variables.mts +187 -0
  325. package/src/api/function-infos.web.mts +66 -0
  326. package/src/assets/fullscreen-dialog.html +18 -0
  327. package/src/assumptions.respec.mts +51 -0
  328. package/src/common/project/project-constants.mts +83 -0
  329. package/src/common/project/project-helper.mts +730 -0
  330. package/src/common/project/project-types.mts +121 -0
  331. package/src/common/prompt-functions.web.mts +447 -0
  332. package/src/common/settings/settings-constants.mts +72 -0
  333. package/src/common/settings/settings-helpers.mts +280 -0
  334. package/src/common/settings/settings-types.mts +137 -0
  335. package/src/constants.mts +39 -0
  336. package/src/foo.mts +13 -0
  337. package/src/helpers.mts +574 -0
  338. package/src/helpers.web.mts +1277 -0
  339. package/src/helpers.web.respec.mts +16 -0
  340. package/src/index.mts +3 -0
  341. package/src/respec-gib.node.mts +199 -0
  342. package/src/spec-helper.node.respec.mts +50 -0
  343. package/src/storage/storage-helpers.web.mts +728 -0
  344. package/src/storage/storage-types.web.mts +29 -0
  345. package/src/types.web.mts +42 -0
  346. package/src/ui/component/component-types.mts +241 -0
  347. package/src/ui/component/ibgib-component-service.mts +201 -0
  348. package/src/ui/component/ibgib-dynamic-component-bases.mts +1369 -0
  349. package/src/ui/ui-constants.mts +101 -0
  350. package/src/ui/ui-helpers.mts +222 -0
  351. package/src/ui/ui-types.mts +11 -0
  352. package/src/witness/agent/agent-constants.mts +122 -0
  353. package/src/witness/agent/agent-helpers.mts +681 -0
  354. package/src/witness/agent/agent-one-file.app.mts +8 -0
  355. package/src/witness/agent/agent-one-file.mts +1665 -0
  356. package/src/witness/agent/agent-types.mts +92 -0
  357. package/src/witness/agent/agents-service-v1.mts +482 -0
  358. package/src/witness/agent/function-info/function-info-one-file.mts +362 -0
  359. package/src/witness/agent/gemini/agent-witness-gemini-v1.mts +910 -0
  360. package/src/witness/agent/gemini/gemini-agent-factory.mts +135 -0
  361. package/src/witness/agent/gemini/gemini-constants.mts +79 -0
  362. package/src/witness/agent/gemini/gemini-helpers.mts +216 -0
  363. package/src/witness/agent/gemini/gemini-types.mts +88 -0
  364. package/src/witness/live-proxy-ibgib/live-proxy-ibgib-one-file.mts +321 -0
  365. package/src/witness/space/metaspace/metaspace-webspace/metaspace-webspace-helper.mts +290 -0
  366. package/src/witness/space/metaspace/metaspace-webspace/metaspace-webspace.mts +407 -0
  367. package/src/witness/space/web-filesystem-space/web-filesystem-space-constants.mts +1 -0
  368. package/src/witness/space/web-filesystem-space/web-filesystem-space-helper.mts +491 -0
  369. package/src/witness/space/web-filesystem-space/web-filesystem-space-types.mts +172 -0
  370. package/src/witness/space/web-filesystem-space/web-filesystem-space-v1.mts +670 -0
  371. package/tsconfig.json +17 -0
  372. package/tsconfig.test.json +10 -0
@@ -0,0 +1,683 @@
1
+ import { extractErrorMsg, getSaferSubstring, getTimestamp, getTimestampInTicks, pretty, unique } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
2
+ import { validateIbGibIntrinsically } from '@ibgib/ts-gib/dist/V1/validate-helper.mjs';
3
+ import { mut8 } from '@ibgib/ts-gib/dist/V1/transforms/mut8.mjs';
4
+ import { fork } from '@ibgib/ts-gib/dist/V1/transforms/fork.mjs';
5
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
6
+ import { createCommentIbGib } from '@ibgib/core-gib/dist/common/comment/comment-helper.mjs';
7
+ import { getLatestAddrs, parseSpaceIb, persistTransformResult } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
8
+ import { getTimestampInfo } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
9
+ import { appendToTimeline, mut8Timeline } from '@ibgib/core-gib/dist/timeline/timeline-api.mjs';
10
+ import { GLOBAL_LOG_A_LOT } from '../../constants.mjs';
11
+ import { PROJECT_ATOM, PROJECT_DESC_REGEXP, PROJECT_NAME_REGEXP, DEFAULT_PROJECT_SAFE_NAME_LENGTH, DEFAULT_PROJECT_ADDL_METADATA_LENGTH, PROJECT_CHILD_DEFAULT_REL8N_NAME, } from './project-constants.mjs'; // Constants file to be created
12
+ import { getAgentsSvc } from '../../witness/agent/agents-service-v1.mjs';
13
+ import { AGENT_SPECIAL_IBGIB_TYPE_PROJECTAGENT } from '../../agent-texts/project-agent-texts.mjs';
14
+ const logalot = GLOBAL_LOG_A_LOT;
15
+ export function getProjectSafeName({ name }) {
16
+ const lc = `[${getProjectSafeName.name}]`;
17
+ try {
18
+ if (logalot) {
19
+ console.log(`${lc} starting... (I: ec0c81cb0e8ec820f882ecafc2fbc825)`);
20
+ }
21
+ const safeName = getSaferSubstring({
22
+ text: name,
23
+ length: DEFAULT_PROJECT_SAFE_NAME_LENGTH,
24
+ });
25
+ if (!safeName) {
26
+ throw new Error(`${lc} Could not generate safeName from name: ${name}. (E: genuuid)`);
27
+ }
28
+ return safeName;
29
+ }
30
+ catch (error) {
31
+ console.error(`${lc} ${extractErrorMsg(error)}`);
32
+ throw error;
33
+ }
34
+ finally {
35
+ if (logalot) {
36
+ console.log(`${lc} complete.`);
37
+ }
38
+ }
39
+ }
40
+ /**
41
+ * Generates the `ib` string for a ProjectIbGib based on its data.
42
+ * The structure is: `${PROJECT_ATOM} ${safeName} ${addlMetadataText}`
43
+ * where addlMetadataText contains underscore-delimited fields like timestampInTicks.
44
+ *
45
+ * ## notes
46
+ *
47
+ * atow (04/2025), we are "descending" (forking) from a source comment ibgib to
48
+ * create the project. As such, we are positioning the project ibgib itself to
49
+ * have a similar structure to a comment ibgib. So the schema for the `ib`
50
+ * purposefully has the safeName in the second position just like a comment
51
+ * ibgib has a saferized version of the comment.data.text in its ib schema.
52
+ *
53
+ * WARNING
54
+ * WARNING
55
+ * ATOW (05/2025) THIS FUNCTION'S DETAILS ARE USED IN MUT8-IBGIB
56
+ * APIFUNCTIONINFO. IF THIS CHANGES, THEN THAT FUNCTION MUST BE CHANGED TOO.
57
+ * WARNING
58
+ * WARNING
59
+ *
60
+ * @see {@link ProjectIbInfo}
61
+ * @see {@link ProjectAddlMetadataInfo}
62
+ *
63
+ */
64
+ export function getProjectIb({ data, }) {
65
+ const lc = `[${getProjectIb.name}]`;
66
+ try {
67
+ const validationErrors = validateProjectData_V1({ data }) ?? [];
68
+ if (validationErrors.length > 0) {
69
+ throw new Error(`invalid Project data. errors: ${validationErrors} (E: d93d821fcc256b4bcb4d785b08c2f425)`);
70
+ }
71
+ // Get saferized name segment
72
+ const safeName = getProjectSafeName({ name: data.name });
73
+ // Prepare additional metadata text (add more fields with underscores here later)
74
+ // timestampInTicks
75
+ const timestampInfo = getTimestampInfo({ timestamp: data.timestamp });
76
+ if (!timestampInfo.valid) {
77
+ throw new Error(`(UNEXPECTED) validated data but invalid data.timestamp? (E: 679cbf1c92e8b9473becf8310e6b8225)`);
78
+ }
79
+ const timestampInTicks = Number.parseInt(timestampInfo.ticks);
80
+ // compose addlMetadataText
81
+ const addlMetadataFields = [
82
+ timestampInTicks.toString(),
83
+ // add more fields here as needed in the future
84
+ ];
85
+ addlMetadataFields.push();
86
+ const addlMetadataText = addlMetadataFields.join('_');
87
+ if (addlMetadataText.length > DEFAULT_PROJECT_ADDL_METADATA_LENGTH) {
88
+ throw new Error(`(UNEXPECTED) addlMetadataText.length > DEFAULT_PROJECT_ADDL_METADATA_LENGTH (${DEFAULT_PROJECT_ADDL_METADATA_LENGTH})? (E: 8fed8709283f6be2d8deda13b67b3925)`);
89
+ }
90
+ // Construct the final ib string
91
+ return `${PROJECT_ATOM} ${safeName} ${addlMetadataText}`;
92
+ }
93
+ catch (error) {
94
+ console.error(`${lc} ${error.message}`);
95
+ throw error;
96
+ }
97
+ }
98
+ export function validateProjectIb({ ib, }) {
99
+ const lc = `[${validateProjectIb.name}]`;
100
+ try {
101
+ if (logalot) {
102
+ console.log(`${lc} starting... (I: 111f6b5630badb921accdc6c224c0425)`);
103
+ }
104
+ // major hack here...I'm tired of doing this plumbing shit.
105
+ try {
106
+ const _info = parseProjectIb({ ib });
107
+ }
108
+ catch (error) {
109
+ return [extractErrorMsg(error)];
110
+ }
111
+ return undefined;
112
+ }
113
+ catch (error) {
114
+ console.error(`${lc} ${extractErrorMsg(error)}`);
115
+ throw error;
116
+ }
117
+ finally {
118
+ if (logalot) {
119
+ console.log(`${lc} complete.`);
120
+ }
121
+ }
122
+ }
123
+ /**
124
+ * Parses a project `ib` string into its components.
125
+ *
126
+ * @see {@link getProjectIb} for expected ib schema
127
+ */
128
+ export function parseProjectIb({ ib, }) {
129
+ const lc = `[${parseProjectIb.name}]`;
130
+ try {
131
+ if (logalot) {
132
+ console.log(`${lc} starting... parsing ib: ${ib}`);
133
+ }
134
+ if (!ib) {
135
+ throw new Error(`${lc} ib required (E: genuuid)`);
136
+ }
137
+ const pieces = ib.split(' ');
138
+ if (pieces.length !== 3) {
139
+ throw new Error(`${lc} Invalid project ib format. Expected 3 space-delimited pieces. Got: ${pieces.length}. ib: ${ib} (E: genuuid)`);
140
+ }
141
+ const [atom, safeName, addlMetadataText] = pieces;
142
+ if (atom !== PROJECT_ATOM) {
143
+ throw new Error(`${lc} Invalid atom. Expected '${PROJECT_ATOM}', got '${atom}'. ib: ${ib} (E: genuuid)`);
144
+ }
145
+ if (!safeName) {
146
+ throw new Error(`${lc} safeName segment is empty. ib: ${ib} (E: genuuid)`);
147
+ }
148
+ if (!addlMetadataText) {
149
+ throw new Error(`${lc} addlMetadataText segment is empty. ib: ${ib} (E: genuuid)`);
150
+ }
151
+ // Parse the underscore-delimited addlMetadataText
152
+ const metadataPieces = addlMetadataText.split('_');
153
+ if (metadataPieces.length !== 1) {
154
+ throw new Error(`${lc} Could not parse addlMetadataText. Expected 1 underscore-delimited piece. Got: ${metadataPieces.length}. addlMetadataText: ${addlMetadataText} (E: genuuid)`);
155
+ }
156
+ const timestampInTicksStr = metadataPieces[0];
157
+ const timestampInTicks = parseInt(timestampInTicksStr, 10);
158
+ if (isNaN(timestampInTicks)) {
159
+ throw new Error(`${lc} Could not parse timestampInTicks from addlMetadataText. isNan. Expected a decimal number. timestampInTicksStr: ${timestampInTicksStr}. addlMetadataText: ${addlMetadataText} (E: genuuid)`);
160
+ }
161
+ const addlMetadata = {
162
+ timestampInTicks,
163
+ // otherField, // if added
164
+ };
165
+ const result = {
166
+ atom: PROJECT_ATOM,
167
+ safeName,
168
+ addlMetadataText,
169
+ addlMetadata,
170
+ };
171
+ if (logalot) {
172
+ console.log(`${lc} parsed info: ${pretty(result)}`);
173
+ }
174
+ return result;
175
+ }
176
+ catch (error) {
177
+ console.error(`${lc} ${error.message}`);
178
+ throw error;
179
+ }
180
+ finally {
181
+ if (logalot) {
182
+ console.log(`${lc} complete.`);
183
+ }
184
+ }
185
+ }
186
+ /**
187
+ * Validates the ProjectData_V1 structure.
188
+ * Returns array of error messages if invalid, otherwise undefined.
189
+ */
190
+ export function validateProjectData_V1({ data, }) {
191
+ const lc = `[${validateProjectData_V1.name}]`;
192
+ const errors = [];
193
+ try {
194
+ if (logalot) {
195
+ console.log(`${lc} starting... (I: ac9c21893f38a2500fcb49ee26f0b325)`);
196
+ }
197
+ if (!data) {
198
+ errors.push("Data is required.");
199
+ return errors; /* <<<< returns early */
200
+ }
201
+ if (data.name) {
202
+ if (typeof data.name === 'string') {
203
+ if (!PROJECT_NAME_REGEXP.test(data.name)) {
204
+ errors.push(`data.name must match regexp: ${PROJECT_NAME_REGEXP.source}`);
205
+ }
206
+ }
207
+ else {
208
+ errors.push("Name must be a string.");
209
+ }
210
+ }
211
+ else {
212
+ errors.push("name required");
213
+ }
214
+ if (data.description) {
215
+ if (typeof data.description === 'string') {
216
+ if (!PROJECT_DESC_REGEXP.test(data.description)) {
217
+ errors.push(`data.description must match regexp: ${PROJECT_DESC_REGEXP.source}`);
218
+ }
219
+ }
220
+ else {
221
+ errors.push("Description must be a string.");
222
+ }
223
+ }
224
+ else {
225
+ // not required
226
+ }
227
+ // export interface CommentData_V1 extends IbGibData_V1 {
228
+ // text: string;
229
+ // textTimestamp?: string;
230
+ // timestamp?: string;
231
+ // }
232
+ if (data.text) {
233
+ if (typeof data.text === 'string') {
234
+ // any more checks on text?
235
+ }
236
+ else {
237
+ errors.push("data.text must be a non-empty string. project's text is meant to be the primary reason/focus for the project.");
238
+ }
239
+ }
240
+ else {
241
+ errors.push(`data.text required`);
242
+ }
243
+ if (data.textTimestamp) {
244
+ if (typeof data.textTimestamp === 'string') {
245
+ const resValid = getTimestampInfo({ timestamp: data.textTimestamp });
246
+ if (!resValid.valid) {
247
+ errors.push(`data.textTimestamp (${data.textTimestamp}) is not a valid timestamp: ${resValid.emsg}`);
248
+ }
249
+ }
250
+ else {
251
+ errors.push("data.textTimestamp must be a string.");
252
+ }
253
+ }
254
+ else {
255
+ // why would this be falsy?
256
+ console.warn(`${lc} data.textTimestamp not provided. (W: genuuid)`);
257
+ }
258
+ if (data.timestamp) {
259
+ if (typeof data.timestamp === 'string') {
260
+ const resValid = getTimestampInfo({ timestamp: data.timestamp });
261
+ if (!resValid.valid) {
262
+ errors.push(`data.timestamp (${data.timestamp}) is not a valid timestamp: ${resValid.emsg}`);
263
+ }
264
+ }
265
+ else {
266
+ errors.push("data.timestamp must be a string.");
267
+ }
268
+ }
269
+ else {
270
+ // why would this be falsy?
271
+ console.warn(`${lc} data.timestamp not provided. (W: genuuid)`);
272
+ }
273
+ return errors.length > 0 ? errors : undefined;
274
+ }
275
+ catch (error) {
276
+ console.error(`${lc} ${extractErrorMsg(error)}`);
277
+ return [`Unexpected error during validation: ${extractErrorMsg(error)} (E: genuuid)`];
278
+ }
279
+ finally {
280
+ if (logalot) {
281
+ console.log(`${lc} complete.`);
282
+ }
283
+ }
284
+ }
285
+ /**
286
+ * Validates a ProjectIbGib_V1 intrinsically, its data, and the consistency
287
+ * between the ib string and the data content.
288
+ * Returns an array of error messages if invalid, otherwise undefined.
289
+ */
290
+ export async function validateProjectIbGib_V1({ ibGib, }) {
291
+ const lc = `[${validateProjectIbGib_V1.name}]`;
292
+ const allErrors = [];
293
+ try {
294
+ if (logalot) {
295
+ console.log(`${lc} starting...`);
296
+ }
297
+ if (!ibGib) {
298
+ allErrors.push('ibGib is required.');
299
+ return allErrors;
300
+ }
301
+ // 1. Basic intrinsic validation (ib, gib, data, rel8ns presence, gib calc)
302
+ const intrinsicErrors = await validateIbGibIntrinsically({ ibGib }) ?? [];
303
+ if (intrinsicErrors.length > 0) {
304
+ return intrinsicErrors; /* <<<< returns early */
305
+ }
306
+ const dataErrors = validateProjectData_V1({ data: ibGib.data }) ?? [];
307
+ dataErrors.forEach(x => allErrors.push(x));
308
+ const ibErrors = validateProjectIb({ ib: ibGib.ib }) ?? [];
309
+ ibErrors.forEach(x => allErrors.push(x));
310
+ // not doing this for now
311
+ const rel8nsErrors = [];
312
+ rel8nsErrors.forEach(x => allErrors.push(x));
313
+ return allErrors.length > 0 ? allErrors : undefined;
314
+ }
315
+ catch (error) {
316
+ console.error(`${lc} ${extractErrorMsg(error)} (E: genuuid)`);
317
+ // Return validation data indicating an unexpected error occurred
318
+ return [`Unexpected error during validation: ${extractErrorMsg(error)} (E: genuuid)`];
319
+ }
320
+ finally {
321
+ if (logalot) {
322
+ console.log(`${lc} complete.`);
323
+ }
324
+ }
325
+ }
326
+ /**
327
+ * Type guard to check if an object conforms to ProjectData_V1 structure.
328
+ */
329
+ export function isProjectData_V1(data) {
330
+ const lc = `[${isProjectData_V1.name}]`;
331
+ try {
332
+ if (logalot) {
333
+ console.log(`${lc} starting... (I: 959a0308e86d328cb1e68aab8385df25)`);
334
+ }
335
+ const errors = validateProjectData_V1({ data }) ?? [];
336
+ return errors.length === 0;
337
+ }
338
+ catch (error) {
339
+ console.error(`${lc} ${extractErrorMsg(error)}`);
340
+ return false;
341
+ }
342
+ finally {
343
+ if (logalot) {
344
+ console.log(`${lc} complete.`);
345
+ }
346
+ }
347
+ }
348
+ /**
349
+ * Type guard to check if an IbGib_V1 is structurally a ProjectIbGib_V1.
350
+ * Verifies the atom in the ib and checks data structure using isProjectData_V1.
351
+ */
352
+ export function isProjectIbGib_V1(ibGib) {
353
+ if (!ibGib || !ibGib.ib || !ibGib.data) {
354
+ return false;
355
+ }
356
+ // Check if atom is 'project'
357
+ if (!ibGib.ib.startsWith(`${PROJECT_ATOM} `)) {
358
+ return false;
359
+ }
360
+ // Check data structure
361
+ return isProjectData_V1(ibGib.data);
362
+ }
363
+ /**
364
+ * Creates a new Project ibGib.
365
+ */
366
+ export async function createProjectIbGib({ name, srcCommentIbGib, description, saveInSpace, space, }) {
367
+ const lc = `[${createProjectIbGib.name}]`;
368
+ if (logalot) {
369
+ console.log(`${lc} starting...`);
370
+ }
371
+ try {
372
+ if (!name) {
373
+ throw new Error(`${lc} required. (E: genuuid)`);
374
+ }
375
+ // start with a comment ibgib as the genesis of the project.
376
+ let resSrcCommentIbGib = undefined;
377
+ if (!srcCommentIbGib) {
378
+ resSrcCommentIbGib = await createCommentIbGib({
379
+ text: [
380
+ `# ${name}`,
381
+ ``,
382
+ description ?? `initial comment`, // a little programming humor
383
+ ].join('\n'),
384
+ saveInSpace,
385
+ space,
386
+ });
387
+ srcCommentIbGib = resSrcCommentIbGib.newIbGib;
388
+ }
389
+ const safeName = getSaferSubstring({
390
+ text: name,
391
+ length: DEFAULT_PROJECT_SAFE_NAME_LENGTH,
392
+ });
393
+ const resNewProjectFork = await fork({
394
+ src: srcCommentIbGib,
395
+ destIb: `${PROJECT_ATOM} ${safeName}`,
396
+ cloneData: true,
397
+ cloneRel8ns: true,
398
+ tjp: { uuid: true, timestamp: true },
399
+ dna: true,
400
+ nCounter: true,
401
+ });
402
+ // we now have an intermediate ibgib that is essentially a clone of the
403
+ // src comment but with new tjp/timestamp metadata. We need to convert
404
+ // this to a project ibgib.
405
+ const now = new Date();
406
+ const timestamp = getTimestamp(now);
407
+ const timestampMs = now.getMilliseconds();
408
+ /**
409
+ * This drives the project.ib, but may not be 100% the final data. But
410
+ * the pieces that drive the ib should be accurate.
411
+ */
412
+ const fullNewDataSortOf = {
413
+ ...resNewProjectFork.newIbGib.data,
414
+ timestamp, timestampMs,
415
+ name,
416
+ description,
417
+ };
418
+ const newIb = getProjectIb({ data: fullNewDataSortOf });
419
+ if (logalot) {
420
+ console.log(`${lc} newIb: ${newIb}. (I: 60804a0c0e575d525855926a9712d825)`);
421
+ }
422
+ const dataToAddOrPatch = {
423
+ ...resNewProjectFork.newIbGib.data,
424
+ timestamp, timestampMs,
425
+ name,
426
+ description,
427
+ };
428
+ if (logalot) {
429
+ console.log(`${lc} dataToAddOrPatch: ${pretty(dataToAddOrPatch)} (I: 70129a2aeaa4e9df5d42137c479f4f25)`);
430
+ }
431
+ /**
432
+ * finalizes the new project (not forever, but in terms of this fn)
433
+ */
434
+ const resNewProjectMut8 = await mut8({
435
+ src: resNewProjectFork.newIbGib,
436
+ mut8Ib: newIb,
437
+ dataToAddOrPatch,
438
+ noTimestamp: true,
439
+ dna: true,
440
+ nCounter: true,
441
+ });
442
+ if (logalot) {
443
+ console.log(`${lc} resNewProjectMut8.newIbGib: ${pretty(resNewProjectMut8.newIbGib)} (I: c0bca72cced2edbe69956774c09ad925)`);
444
+ }
445
+ /**
446
+ * depending on if we created our own new srcCommentIbGib, contains all the
447
+ * newly created ibgibs required for the new project.
448
+ */
449
+ let resNewProject;
450
+ if (resSrcCommentIbGib) {
451
+ // had to do a comment ibgib, so merge the transform results
452
+ resNewProject = {
453
+ newIbGib: resNewProjectMut8.newIbGib,
454
+ intermediateIbGibs: [
455
+ ...resSrcCommentIbGib.intermediateIbGibs ?? [],
456
+ resSrcCommentIbGib.newIbGib,
457
+ ...resNewProjectFork.intermediateIbGibs ?? [],
458
+ resNewProjectFork.newIbGib,
459
+ ...resNewProjectMut8.intermediateIbGibs ?? [],
460
+ ],
461
+ dnas: [
462
+ ...resSrcCommentIbGib.dnas ?? [],
463
+ ...resNewProjectFork.dnas ?? [],
464
+ ...resNewProjectMut8.dnas ?? [],
465
+ ],
466
+ };
467
+ }
468
+ else {
469
+ // had to do a comment ibgib, so merge the transform results
470
+ resNewProject = {
471
+ newIbGib: resNewProjectMut8.newIbGib,
472
+ intermediateIbGibs: [
473
+ ...resNewProjectFork.intermediateIbGibs ?? [],
474
+ resNewProjectFork.newIbGib,
475
+ ...resNewProjectMut8.intermediateIbGibs ?? [],
476
+ ],
477
+ dnas: [
478
+ ...resNewProjectFork.dnas ?? [],
479
+ ...resNewProjectMut8.dnas ?? [],
480
+ ],
481
+ };
482
+ }
483
+ if (saveInSpace) {
484
+ if (!space) {
485
+ throw new Error(`(UNEXPECTED) saveInSpace true but space falsy? (E: 492e86a326fd099f4d28a5286809d625)`);
486
+ }
487
+ await persistTransformResult({ resTransform: resNewProject, space });
488
+ }
489
+ return resNewProject;
490
+ }
491
+ catch (error) {
492
+ console.error(`${lc} ${extractErrorMsg(error)}`);
493
+ throw error;
494
+ }
495
+ finally {
496
+ if (logalot) {
497
+ console.log(`${lc} complete.`);
498
+ }
499
+ }
500
+ }
501
+ export function addChildIbGib(arg) {
502
+ const lc = `[${addChildIbGib.name}]`;
503
+ try {
504
+ if (logalot) {
505
+ console.log(`${lc} starting... (I: 1d5cb8453e5a9e49bffd923da9c90825)`);
506
+ }
507
+ switch (arg.type) {
508
+ case 'text':
509
+ return addChildIbGib_text(arg);
510
+ default:
511
+ throw new Error(`(UNEXPECTED) invalid add child type (${arg.type})? (E: bde41e94cb88a66aee56e2cfd4c88825)`);
512
+ }
513
+ }
514
+ catch (error) {
515
+ console.error(`${lc} ${extractErrorMsg(error)}`);
516
+ throw error;
517
+ }
518
+ finally {
519
+ if (logalot) {
520
+ console.log(`${lc} complete.`);
521
+ }
522
+ }
523
+ }
524
+ async function addChildIbGib_text({ ibGib, rel8nName, details, metaspace, space, }) {
525
+ const lc = `[${addChildIbGib_text.name}]`;
526
+ try {
527
+ if (logalot) {
528
+ console.log(`${lc} starting... (I: genuuid)`);
529
+ }
530
+ let { title, text } = details;
531
+ text ??= '';
532
+ title ||= 'SomeText';
533
+ rel8nName ||= PROJECT_CHILD_DEFAULT_REL8N_NAME;
534
+ // create the comment ibgib
535
+ const resCommentIbGib = await createCommentIbGib({
536
+ text,
537
+ addlMetadataText: `${getTimestampInTicks()}_${getSaferSubstring({ text: title, length: 16 })}`,
538
+ saveInSpace: true,
539
+ space,
540
+ });
541
+ let commentIbGib = resCommentIbGib.newIbGib;
542
+ commentIbGib = await mut8Timeline({
543
+ timeline: commentIbGib,
544
+ mut8Opts: {
545
+ dataToAddOrPatch: { title, description: title, },
546
+ },
547
+ metaspace,
548
+ space,
549
+ });
550
+ if (!ibGib) {
551
+ throw new Error(`(UNEXPECTED) ibGib falsy? should be a project ibgib (E: genuuid)`);
552
+ }
553
+ if (!isProjectIbGib_V1(ibGib)) {
554
+ throw new Error(`(UNEXPECTED) ibGib is not a project ibgib? (E: genuuid)`);
555
+ }
556
+ // append the comment to the project's timeline
557
+ const newTimeline = await appendToTimeline({
558
+ timeline: ibGib,
559
+ rel8nInfos: [{ ibGibs: [commentIbGib], rel8nName }],
560
+ metaspace,
561
+ space,
562
+ });
563
+ return newTimeline;
564
+ }
565
+ catch (error) {
566
+ console.error(`${lc} ${extractErrorMsg(error)}`);
567
+ throw error;
568
+ }
569
+ finally {
570
+ if (logalot) {
571
+ console.log(`${lc} complete.`);
572
+ }
573
+ }
574
+ }
575
+ /**
576
+ * Retrieves all the latest project ibGibs from a given space (or the default
577
+ * local user space).
578
+ */
579
+ export async function getProjects({ metaspace, space, }) {
580
+ const lc = `[${getProjects.name}]`;
581
+ try {
582
+ if (logalot) {
583
+ console.log(`${lc} starting...`);
584
+ }
585
+ // prepare space info
586
+ space ??= await metaspace.getLocalUserSpace({ lock: false });
587
+ if (!space) {
588
+ throw new Error(`(UNEXPECTED) space falsy and couldn't even get default local user space? (E: ca5d383873a8ff9068709c7a39e67625)`);
589
+ }
590
+ const { spaceId } = parseSpaceIb({ spaceIb: space.ib });
591
+ // get all project agents
592
+ const agentsSvc = getAgentsSvc();
593
+ const projectAgents = await agentsSvc.getAgents({
594
+ metaspace,
595
+ type: AGENT_SPECIAL_IBGIB_TYPE_PROJECTAGENT,
596
+ spaceId,
597
+ });
598
+ // build up the list of projectTjpAddrs from the agents
599
+ const projectTjpAddrs = [];
600
+ for (const projectAgent of projectAgents) {
601
+ if (!projectAgent.data) {
602
+ throw new Error(`(UNEXPECTED) projectAgent.data falsy? (E: 53256c9d2168fdf37b0cf5688b11b625)`);
603
+ }
604
+ const projectTjpAddr = projectAgent.data['@currentContextTjpAddr'];
605
+ if (projectTjpAddr) {
606
+ projectTjpAddrs.push(projectTjpAddr);
607
+ }
608
+ else {
609
+ console.warn(`${lc} projectAgent (${getIbGibAddr({ ibGib: projectAgent })}) has no @currentContextTjpAddr (W: 29c4d8d251945597086f4de8001bc825)`);
610
+ }
611
+ }
612
+ const uniqueTjpAddrs = unique(projectTjpAddrs);
613
+ if (uniqueTjpAddrs.length === 0) {
614
+ if (logalot) {
615
+ console.log(`${lc} No project agents found with space (${space.ib}). Returning empty array. (I: cbc626e97598562d12b483d468082825)`);
616
+ }
617
+ return []; /* <<<< returns early */
618
+ }
619
+ // get the latest addrs corresponding to those tjp addrs.
620
+ const resLatestIbGib = await getLatestAddrs({
621
+ addrs: uniqueTjpAddrs,
622
+ space,
623
+ });
624
+ if (!resLatestIbGib.data) {
625
+ throw new Error(`(UNEXPECTED) resLatestIbGib.data falsy? (E: 0dc6f8692c02cef4112642184de79225)`);
626
+ }
627
+ if (resLatestIbGib.data.errors && resLatestIbGib.data.errors.length > 0) {
628
+ console.error(`${lc} Error getting latest tjp addrs for projects: ${resLatestIbGib.data.errors}. addrsErrored: ${resLatestIbGib.data.addrsErrored ?? '[addrsErrored falsy?]'} (E: 9ee4e8a3329b464d280e3fb8318a6825)`);
629
+ if (resLatestIbGib.data.addrsErrored && resLatestIbGib.data.addrsErrored.length === uniqueTjpAddrs.length) {
630
+ // all of them errored, so return an empty array
631
+ throw new Error(`all project addrs errors. (E: 942bc8f6920865be18f09c98e06f9825)`);
632
+ }
633
+ else {
634
+ console.warn(`${lc} not all project addrs errored, so we're returning the ones we *were* able to get. addrsErrored: ${resLatestIbGib.data.addrsErrored ?? '[addrsErrored falsy?]'}(W: 20bc481170085fc3b8011f2ce50f9825)`);
635
+ }
636
+ }
637
+ const latestAddrsMap = resLatestIbGib.data.latestAddrsMap;
638
+ if (!latestAddrsMap) {
639
+ throw new Error(`(UNEXPECTED) resLatestIbGib.data.latestAddrsMap falsy? this should have contained the latest project addrs. returning empty array. (E: d89fe88d7488d1aaf8618b38db1aa825)`);
640
+ }
641
+ const latestAddrs = [];
642
+ for (let [addr, latestAddr] of Object.entries(latestAddrsMap)) {
643
+ latestAddrs.push(latestAddr ?? addr);
644
+ }
645
+ // get the actual ibgibs corresponding to the latest addrs
646
+ const resGet = await metaspace.get({
647
+ addrs: latestAddrs,
648
+ space,
649
+ });
650
+ if (resGet.errorMsg || (resGet.ibGibs ?? []).length !== latestAddrs.length) {
651
+ if ((resGet.ibGibs ?? []).length === 0) {
652
+ throw new Error(`error in getting latest project ibgibs. (E: 3b2878e08db8b296e11463669d523825)`);
653
+ }
654
+ else {
655
+ console.error(`${lc} get project ibgibs had errors, but we did get some of the project ibgibs. resGet.errorMsg: ${resGet.errorMsg ?? '[unknown error (E: 733358e3894819cbd8364db8c5ac2725)]'}. (E: 24fcf830893ffadd78eaabd839103825)`);
656
+ }
657
+ }
658
+ const latestProjectIbGibs = [];
659
+ const ibGibsUnknownType = resGet.ibGibs;
660
+ for (const ibGibUnknownType of ibGibsUnknownType) {
661
+ if (isProjectIbGib_V1(ibGibUnknownType)) {
662
+ latestProjectIbGibs.push(ibGibUnknownType);
663
+ }
664
+ else {
665
+ console.error(`${lc} ibgib gotten (${getIbGibAddr({ ibGib: ibGibUnknownType })}) is NOT a ProjectIbGib_V1. (E: 656f18145928cca6481c4ee8547c0825)`);
666
+ }
667
+ }
668
+ // return them!
669
+ return latestProjectIbGibs;
670
+ }
671
+ catch (error) {
672
+ console.error(`${lc} ${extractErrorMsg(error)}`);
673
+ // We probably don't want to throw here, as it could break a UI component.
674
+ // Returning an empty array is safer for rendering.
675
+ return [];
676
+ }
677
+ finally {
678
+ if (logalot) {
679
+ console.log(`${lc} complete.`);
680
+ }
681
+ }
682
+ }
683
+ //# sourceMappingURL=project-helper.mjs.map